Border Gateway Protocol (BGP) ir galvenais maršrutēšanas protokols internetā. BGP ir līdzīgs distance vector maršrutēšanas protokoliem, jo maršrutētājs uztur tiklu (prefiksu) tabulu un veic maršrutēšanas aprēķinus, pamatojoties uz informāciju, kas saņemta no citiem maršrutētājiem, un nosūta to tālāk. Taču pretēji citiem distance vector protokoliem, kas par distances mēru izmanto vienu skaitli, BGP izmanto visu autonomo sistēmu sarakstu AS_PATH, caur kurām paketei jātiek maršrutētai lai sasniegtu adresātu. Tā kā šis saraksts satur informāciju par paketes ceļu BGP pieņemts saukt par path vector maršrutēšanas protokolu.

Kopš 1994 gada internetā tiek lietota tikai BGP versija 4 (BGP-4). Galveinais jauninājums BGP-4 ir bezklases starpdomēnu maršrutēšanas (CIDR) atbalsts un maršrutu apkopošana (route aggregation) maršrutēšanas tabulu samazināšanai. Kopš 2006. gada janvāra BGP-4 aprakstīts RFC 4271, kas aizstāja sākotnējo RFC 1771.

BGP var tikt izmantots ne tikai internetā, bet arī lielos IP tīklos, lai veiktu maršrutēsanu starp tīkla daļām vai pieslēgumiem pie dažādiem interneta pakalpojumu sniedzējiem.

Komunikācijai starp maršrutētājiem BGP izmanto TCP protokolu. BGP izmanto TCP porta numuru 179.

BGP neighbors

labot šo sadaļu

Atšķirībā no daudziem citiem maršrutēšanas protokoliem, kas citus maršrutētājus atrod automātiski ar apraides (broadcast) vai multiraides (multicast), BGP protokolā citi maršrutētāji ir jāapraksta konfigurācijā. Tā kā BGP izmanto TCP protokolu maršrutētājiem nav jāatrodas vienā tīkla segmentā. Divus maršrutētājus, kas izveidojuši BGP TCP savienojumu un apmainās ar maršrutēšanas informāciju sauc par BGP neighbors vai peers. Pēc TCP savienojuma izveidošanas maršrutētāji apmainās ar dažādu BGP informāciju (AS numuri, protokola versija, maršrutētāja ID, taimeru lielumi u.c.). Kad šī informācija ir saskaņota un pieņemta maršrutētāji var apmainīties ar maršrutēšanas informāciju. BGP maršrutēšanas informācijas datus sauc par Network Layer Reachability Information (NLRI).

Ja BGP darbojas starp maršrutētājiem vienā autonomajā sistēmā to sauc par Interior Border Gateway Protocol (IBGP), ja dažādās — par Exterior Border Gateway Protocol (EBGP).

IBGP darbojas starp maršrutētājiem vienā autonomajā sistēmā. IBGP maršrutētājiem nav jābūt savstarpēji savienotiem, bet ir jābūt sasniedzamiem (jāvar izveidot TCP savienojums).

IBGP ļauj nodot BGP maršrutēšanas informāciju AS robežās bez nepieciešamības to redistribūtēt to uz IGP un atpakaļ.

IBGP nenodod maršrutēšanas informāciju, kas saņemta no IBGP maršrutētāja citiem IBGP maršrutētājiem. Dažreiz to sauc par BGP split horizon. Tāpēc IBGP maršrutētājiem jāveido savienojumi katram ar katru (full mesh).

EBGP darbojas starp maršrutētājiem dažādās autonomajās sistēmās. Starp dažādām AS parasti nelieto IGP, kas norādītu, kā sasniedzama otra maršrutētāja adrese, tāpēc EBGP maršrutētājiem jābūt tieši savienotiem vai arī jālieto statiskie maršruti (static route).

NLRI un atribūti

labot šo sadaļu

NLRI satur informāciju par maršrutu CIDR prefiksu un ceļa atribūtus (path attributes). Atribūti satur dažādu informāciju par konkrēto maršrutu. Daži atribūti ir mandatory — tiem jābūt visos BGP NLRI.

Biežāk lietojamie atribūti ir:

  • ORIGIN (mandatory) — maršruta izcelsme (EGP, IGP vai nezināma)
  • AS_PATH (mandatory) — AS saraksts
  • NEXT_HOP' (mandatory) — nākamā lēkuma adrese, caur kuru sasniegt norādīto tīklu.
  • MULTI_EXIT_DISC — MED ir līdzīga funkcija kā IGP metrikai.
  • LOCAL_PREF — maršruta prioritāte (AS robežās)
  • COMMUNITY — administratīvi maināms parametrs (atzīme), kas atvieglo maršrutu grupēšanu un apstrādi, piemēram, filtrēšanu. Tā vērtības un vērtību nozīmi nosaka ar konfigurāciju. Tomēr ir dažas rezervētas COMMUNITY vērtības ko automātiski apstrādā visi BGP maršrutētāji:
    • INTERNET — šī COMMUNITY ir visiem maršrutiem
    • NO_EXPORT — maršruti ar šo COMMUNITY netiek ziņoti ārpus AS. Izņēmums ir AS konfederācijas (confederation) robežās
    • NO_ADVERTISE — maršruti ar šo COMMUNITY netiek ziņoti nevienam citam BGP maršrutētājam
    • LOCAL_AS — līdzīgi kā NO_EXPORT, bet neziņo arī citām AS konfederācijas robežās

Maršrutu izvēle

labot šo sadaļu

Maršrutētāji var saņemt NLRI par vienu CIDR prefiksu no dažādiem citiem maršrutētājiem. No tiem tiek izvēlēts viens, labākais maršruts. Labāko maršrutu izvēli BGP veic pēc dažādiem kritērijiem noteiktā secībā. Ja svarīgākais kritērijs sakrīt vairākiem pieejamajiem maršrutiem, tiek salīdzināts nākamais. Kritēriju secība BGP ir sekojoša:

  1. Izvēlas tikai maršrutus, kuru nākamā lēkuma adreses ir sasniedzamas;
  2. Izvēlas maršrutu ar lielāko LOCAL_PREF vērtību (Cisco lieto papildus kritēriju WEIGHT, kas nav BGP atribūts, bet tiek noteikts administratīvi. Tas tiek salīdzināts pirms LOCAL_PREF. Priekšroka ir maršrutiem ar lielāko WEIGHT vērtību.);
  3. Izvēlas maršrutu, ko noteicis šis maršrutētājs;
  4. Izvēlas maršrutu, ar īsāko AS_PATH.
  5. Izvēlas maršrutu ar mazāko ORIGIN vērtību (IGP < EGP < nezināms);
  6. Izvēlas maršrutu ar mazāko MED vērtību (Ja MED nav norādīts tas tiek uzskatīts par 0);
  7. Izvēlas EBGP maršrutu attiecība pret IBGP;
  8. Izvēlas maršrutu caur tuvāko IGP maršrutētāju;
  9. Izvēlas vecāko EBGP maršrutu;
  10. Izvēlas maršrutu caur maršrutētāju ar mazāko maršrutētāja ID;

IBGP mērogojamība

labot šo sadaļu

Noteikums, ka IPGP savienojumi ir jāveido full mesh, ievērojami ierobežo IBGP mērogojamību. Katram maršrutētājam ir jākonfigurē n — 1 BGP savienojums un kopējais savienojumu skaita ir n * (n — 1) / 2, kur n ir maršrutētāju skaits autonomajā sistēmā. Piemēram 10 maršrutētāju gadījumā kopējais savienojumu skaits ir 45. Liels savienojumu skaits patērē ievērojamus maršrutētāja resursus un apgrūtina administrēšanu. Lai uzlabotu IBGP mērogojamību lieto divas tehnoloģijas — route reflectors un konfederācijas.

Route reflectors

labot šo sadaļu

Route reflector izmantošana atslēdz BGP split horizon funkcionalitāti. Maršrutētājs, kas nokonfigurēta kā route reflector izplata IBGP maršrutētājiem, maršrutēšanas informāciju, kas saņemta no cita IBGP. Rezultātā katram IBGP maršrutētājam jākonfigurē savienojumi tikai ar route reflector maršrutētājiem.

Konfederācijas

labot šo sadaļu

Konfederācijas tiek izmantotas lielos tīklos. Lietojot konfederācijas, AS tiek sadalīta vairākas mazākās AS, visbiežāk ar privātiem AS numuriem. Katrā no šīm AS tiek konfigurēts IBGP. EBGP savienojumos ārpus konfederācijas visas konfederācijas autonomās sistēmas tik prezentētas kā viena reālā AS.

Ārējās saites

labot šo sadaļu