Schemat zmiany stanów połączenia BGP
BGP (ang. Border Gateway Protocol) zewnętrzny protokół trasowania (routingu). BGP w wersji czwartej jest podstawą działania współczesnego internetu. Istnieje wiele rozszerzeń BGP stosowanych przy implementacji MPLS VPN, IPv6 czy Multicast VPN.
Jest protokołem wektora ścieżki umożliwiającym wykonywanie niezapętlonych ścieżek pomiędzy różnymi systemami autonomicznymi. Obecny otwarty standard protokołu BGP jest opisany w dokumentach RFC 4271 oraz 1771. Protokół ten nie używa tradycyjnych metryk - analogiczną funkcję (determinanty wyboru trasy) pełnią atrybuty oraz algorytm wyboru. BGP dopuszcza na pełną redundancję w połączeniu z Internetem, jest także używany do połączenia dwóch systemów autonomicznych, do wymiany ruchu pomiędzy tymi systemami.
Protokół BGP funkcjonuje w oparciu o protokół warstwy 4 (port TCP o numerze 179). Zapewnia to, że aktualizacje są wysyłane w sposób niezawodny, dzięki czemu w BGP niepotrzebne są mechanizmy retransmisji, segmentacji, itp. Rutery zestawiają pomiędzy sobą sesje BGP, dzięki którym potrafią wymieniać się informacjami o dostępnych trasach (prefiksach) oraz wyznaczać najlepszą niezapętloną ścieżkę do sieci docelowych.
Podstawą funkcjonowania BGP jest system autonomiczny, (ang. Autonomous System, AS), czyli sieć albo grupa sieci pod wspólną administracją oraz ze wspólną polityką trasowania. Systemy autonomiczne identyfikowane są za pomocą numerów, zwanych numerami AS, które przyznawane są przez organizację RIR (w Europie oraz części Azji jest to RIPE NCC). Protokół BGP w wersji oryginalnej zakładał dwubajtowe numery AS (16 bit), co ze względu na ich ograniczoną liczbę (65536) stanowiło poważniejsze ograniczenie rozwoju Internetu niż niedobór numerów IP. W 2007 roku wprowadzono numery AS o długości 4 bajtów (32 bit) przez co powiększono wydatnie przestrzeń dostępnej numeracji. Implementacja 32 bitowego ASN jest rozwiązana za pomocą dodatkowych atrybutów, przez co jest kompatybilna ze starszym formatem oraz nie wymagała wymiany oprogramowania na wszystkich routerach.
Możemy rozróżnić EBGP (ang. exterior ), kiedy mamy sesję pomiędzy dwoma różnymi AS oraz IBGP (ang. interior), kiedy sesja BGP nawiązana jest pomiędzy dwoma routerami brzegowymi w obrębie jednego AS. Protokół wymiany informacji przez routery IBGP oraz EBGP jest taki sam, natomiast routery inaczej interpretują trasy otrzymane poprzez protokoł BGP z własnego albo obcego systemu autonomicznego. Trasy otrzymane przy użyciu BGP od routerów znajdujących się w tym samym systemie autonomicznym (IBGP) posiadają zwykle bardzo mały priorytet. Umożliwia to na stosowanie wewnętrznych protokołów routingu (IGP) do optymalizacji tras wewnątrz systemu autonomicznego. W implementacjach stosujących tzw. dystans administracyjny, czyli parametr określający priorytet ważności tras otrzymanych za pośrednictwem danego źródła (protokołu routingu), przejawia się to domyślnym ustawieniem dystansu dla EBGP na 20 (wysoki priorytet), a dla IBGP na 200 (bardzo mały priorytet). Routery także ustawiają w różny sposób atrybuty tras przy wysyłaniu aktualizacji przez IBGP albo EBGP[1].
Sesje bywają zestawione pomiędzy ruterami bezpośrednio połączonymi (standardowo na stykach Internetowych) albo pomiędzy zdalnymi ruterami (BGP multihop). Sesje multihop są naturalne dla IBGP, w połączeniach zewnętrznych (EBGP) są rzadziej używane, albowiem najczęściej do prawidłowego działania wymagają wsparcia innych protokołów trasowania dynamicznego bądź też trasowania statycznego. Wynika to z konieczności uzyskania komunikacji na poziomie protokołu TCP z sąsiednim routerem EBGP, w przypadku braku trasy pochodzącej z innego źródła nie ma możliwości zestawienia sesji BGP.
Każdy system autonomiczny może rozgłaszać pewną liczbę adresów IP zgrupowanych w prefiksy. Np. www.onet.pl ma adres IP 213.180.130.200, Onet.pl rozgłasza prefiks 213.180.128.0/21 (czyli zakres IP 213.180.128.0-213.180.135.255) pod AS o numerze 12990. Liczba prefiksów w Internecie cały czas rośnie wraz z liczbą użytych adresów oraz wyczerpywaniem się adresacji (potrzeba dzielenia bloków adresowych na mniejsze), w kwietniu 2011 prefiksów w tablicy routingu było już 350000.
BGP używa się typowo jako protokołu routingu w sieci posiadającej styki internetowe z 2 (lub więcej) dostawcami Internetu. BGP jest protokołem o długim czasie zbieżności (pobranie pełnej tablicy routingu Internetu może potrwać wiele godzin, jak także rozpowszechnienie nowego wpisu z tablicy routingu w całej sieci).
Cechy charakterystyczne
- Protokół wektora ścieżki;
- Używa TCP jako protokołu warstwy transportowej;
- Pełna tablica trasowania jest wymieniana tylko podczas początkowej sesji BGP;
- Aktualizacje przesyłane sa przez port TCP o numerze 179;
- Sesje BGP są utrzymywane przez wiadomości typu "keepalive";
- Każda przeistoczenie w sieci powoduje wysłanie zawiadomienia o aktualizacji;
- BGP ma swoją własną tablicę BGP. Każda pozycja w sieci musi znaleźć się najpierw w tablicy BGP;
- BGP ma skomplikowaną tabelę atrybutów, np. sąsiedniego skoku oraz pochodzenia;
- Obsługuje VLSM oraz podsumowanie (zwane też bezklasowym trasowaniem międzydomenowym (ang. Classless Inter-Domain Routing (CIDR));
Atrybuty ścieżki BGP
Każdy zestaw ścieżek (tras) przesyłanych przez BGP opisywany jest zestawem atrybutów. Pozwalają one na większą elastyczność oraz podejmowanie złożonych decyzji dotyczących wyboru najlepszej trasy. Atrybuty BGP są przenoszone w komunikatach aktualizacyjnych (UPDATE) protokołu BGP.
BGP definiuje następujące rodzaje atrybutów ścieżki:
- standardowe (ang. well-known) albo niestandardowe. Atrybuty standardowe muszą być rozumiane przez wszystkie implementacje BGP.
- obowiązkowe albo opcjonalne. Pewne ze standardowych atrybutów są obowiązkowe, tzn. muszą być podane w opisie ścieżki. Wszystkie atrybuty niestandardowe są opcjonalne.
- przenośne (ang. transitive) albo nieprzenośne. Atrybut przenośny jest przekazywany dalej do innych routerów BGP. Wszystkie parametry standardowe są przenośne. Atrybuty opcjonalne bywają przenośne (wówczas router jest zobowiązany przekazać atrybut do innych routerów, nawet jeżeli jego implementacja protokołu go nie interpretuje), albo nieprzenośne, wówczas atrybut może zostać zignorowany.
Najważniejsze atrybuty ścieżki przesyłane przez protokół BGP
| Kod atrybutu |
Nazwa atrybutu |
Kategoria atrybutu |
Opis |
Źródło |
| 1 |
ORIGIN (Pochodzenie) |
Standardowy, obowiązkowy |
Atrybut wyznacza źródło ścieżki; może przybrać jedną z trzech następujących wartości:
- IGP – pochodzący z wewnątrz danego systemu autonomicznego.
- EGP – otrzymany z EGP (ang. External Gateway Protocol, protokół bramy zewnętrznej).
- Niepełny (ang. incomplete) – trasa BGP zostaje wykryta przez redystrybucję albo routery statyczne.
|
RFC:1771 |
| 2 |
AS_PATH |
Standardowy, obowiązkowy |
Opisuje ciąg systemów autonomicznych, będących ścieżką do docelowej sieci IP. |
RFC:1771 |
| 3 |
NEXT_HOP (Następny skok) |
Standardowy, obowiązkowy |
Opisuje adres następnego skoku ze zdalnej ścieżki. |
RFC:1771 |
| 4 |
MULTI_EXIT_DISC (Multi Exit Discriminator) |
Niestandardowy, nieprzenośny |
Informuje routery równorzędne BGP w innych systemach autonomicznych o ścieżce, którą trzeba podążać do AS w przypadku istnienia wielu połączonych systemów autonomicznych. Preferowana jest niższa wartość MED. |
RFC:1771 |
| 5 |
LOCAL_PREF (Lokalna preferencja) |
Standardowy, opcjonalny |
Wskazuje preferowaną ścieżkę wyjścia z danego AS. Wyższa lokalna preferencja jest stale lepsza. |
RFC:1771 |
| 6 |
ATOMIC_AGGREGATE (Agregacja jednostkowa) |
Standardowy, opcjonalny |
Informuje routery BGP, że dokonana była agregacja tras. Nie używany przy wyborze routera. |
RFC:1771 |
| 7 |
AGGREGATOR (Agregator) |
Niestandardowy, przenośny |
Identyfikator routera odpowiedzialnego za agregację; nie używany przy wyborze routera. |
RFC:1771 |
| 8 |
COMMUNITY |
Niestandardowy, przenośny |
Umożliwia na znakowanie tras oraz użycie grup tras o takich samych cechach charakterystycznych.
ISP zwykle znakuje ruch od klientów oraz pewne grupy prefiksów.
|
RFC:1997 |
| 9 |
ORIGINATOR_ID |
Opcjonalny, nieprzenośny |
Identifikator pochodzenia, służy zapobieganiu powstawaniu pętli. |
RFC:1966 |
| 10 |
Cluster list (Lista klastrów) |
opcjonalny, nieprzenośny |
Lista używana w środowisku route reflectorów. Używana do zapobiegania pętli. |
RFC:1966 |
Algorytm wyboru najlepszej ścieżki
BGP z założenia pracuje w sieciach redundantnych, gdzie istnieje parę możliwości osiągnięcia sieci docelowej. Gdy protokół BGP otrzyma wiele ścieżek do konkretnego celu w zdalnej sieci, musi wybrać najlepszą ścieżkę. Zróżnicowane ścieżki do tych samych prefiksów (a tak naprawdę ich atrybuty) są porównywane zgodnie z poniższym algorytmem. Atrybuty są sprawdzane po kolei, jeżeli dany atrybut ma taką samą wartość we wszystkich ścieżkach (opcjach dojścia do prefiksu) to porównywany jest kolejny atrybut. Atrybuty sprawdzane są z podaną kolejnością, poszukiwane jest pierwsze wystąpienie nierównych parametrów (co dopuszcza wybrać lepszą ścieżkę). BGP nie bierze pod uwagę kwestii związanych z jakością połączenia.
BGP stale propaguje najlepszą ścieżkę do wszystkich routerów równorzędnych.
Algorytm wyboru trasy stosowany przez routery Cisco:[2]
- Preferuj najwyższa waga (ang. WEIGHT, lokalny parametr routingu BGP specyficzny dla Cisco, nie przesyłany do innych routerów)
- Preferuj najwyższy LOCAL_PREF,
- Preferuj trasy ogłoszone lokalnie przez komendę network albo redistribute.
- Preferuj ścieżkę z krótszym AS_PATH (mniejsza ilość asów w ścieżce).
- Preferuj niższy ORIGIN.
- Preferuj niższy MED.
- Preferuj ścieżki z eBGP nad iBGP.
- Preferuj ścieżki, gdzie koszt IGP do BGP next-hopa jest niższy.
- Jeżeli włączony jest BGP multipath to zainstaluj trasę w tablicy routingu.
- Preferuj starszą ścieżkę (otrzymaną wcześniej).
- Preferuj ścieżkę, która ma niższy router-id.
- Preferuj ścieżkę, która przyszła od sąsiada (neighbor) z niższym adresem IP.
Implementacje
Symulatory BGP
Przypisy
Sprawdź też
Linki zewnętrzne
- Istotne RFC BGP
- RFC 4456, BGP Route Reflection – An Alternative to Full Mesh Internal BGP (IBGP) (przestarzały: RFC 2796) (ang.)
- RFC 4278, Standards Maturity Variance Regarding the TCP MD5 Signature Option (RFC 2385) and the BGP-4 Specification (ang.)
- RFC 4277, Experience with the BGP-4 Protocol (ang.)
- RFC 4276, BGP-4 Implementation Report (ang.)
- RFC 4275, BGP-4 MIB Implementation Survey (ang.)
- RFC 4274, BGP-4 Protocol Analysis (ang.)
- RFC 4273, Definitions of Managed Objects for BGP-4 (ang.)
- RFC 4272, BGP Security Vulnerabilities Analysis (ang.)
- RFC 4271, A Border Gateway Protocol 4 (BGP-4) (przestarzały: RFC 1771) (ang.)
- RFC 3392, Capabilities Advertisement with BGP-4 (ang.)
- RFC 3065, Autonomous System Confederations for BGP (ang.)
- RFC 2918, Route Refresh Capability for BGP-4 (ang.)
- RFC 1772, Application of the Border Gateway Protocol in the Internet Protocol (BGP-4) using SMIv2 (ang.)
- Przestarzałe RFC BGP
- RFC 2796, Przestarzały – BGP Route Reflection – An Alternative to Full Mesh IBGP (ang.)
- RFC 1965, Przestarzały – Autonomous System Confederations for BGP (ang.)
- RFC 1771, Przestarzały – A Border Gateway Protocol 4 (BGP-4) (ang.)
- RFC 1657, Przestarzały – Definitions of Managed Objects for the Fourth Version of the Border Gateway (ang.)
- RFC 1655, Przestarzały – Application of the Border Gateway Protocol in the Internet (ang.)
- RFC 1654, Przestarzały – A Border Gateway Protocol 4 (BGP-4) (ang.)
- RFC 1105, Przestarzały – Border Gateway Protocol (BGP) (ang.)