BGP – podstawy
by admin · Grudzień 5, 2017
WSTĘP
BGP (Border Gateway Protocol) to zewnętrzny protokół routingu, na którym opiera się działanie współczesnego internetu. W BGP informacje na temat routingu są przesyłane pomiędzy dostawcami internetu (ISP) tworzących przy jego pomocy publiczny internet. BGP jest protokołem wektora ścieżki (Path Vector). BGP utrzymuje oddzielne tablice routingu bazując na najkrótszej długości ścieżki (AS Path) i innych licznych atrybutach w przeciwieństwie do innych protokołów routingu, które bazują na metryce: dystans (w RIP) lub koszt w (OSPF). Obecnie wykorzystywany jest BGP w wersji 4.
Podstawą funkcjonowania BGP są tzw. systemy autonomiczne (Autonomous System), które są połączone ze sobą i tworzą internet jaki znamy. Każdy AS ma przypisany numer (Autonomous System Number), którego przydzielaniem zajmuje się organizacja IANA. IANA przydziela numery ASN dla tzw. RIR (Regional Internet Registry), a następnie RIR przydziela numery ASN dla operatorów internetowych. Obecnie mamy następujących RIRów:
AFRINIC | Africa Region |
APNIC | Asia/Pacific Region |
ARIN | Canada, USA, and some Caribbean Islands |
LACNIC | Latin America and some Caribbean Islands |
RIPE NCC | Europe, the Middle East, and Central Asia |
Numer ASN można uzyskać kontaktując się z jednym z RIR odpowiednim dla danej lokalizacji. Nie będę opisywał jak to zrobić, zainteresowanych odsyłam do strony w języku angielskim ripe.net lub do wpisów na stronie w języku polskim lipowski.org. Bardzo dobrze jest tam wszystko opisane, autor ponadto oferuje pomoc przy wdrożeniu BGP więc jak najbardziej zachęcam do odwiedzenia jego strony.
Są dwa rodzaje numerów ASN (16-bitowe i 32-bitowe). 32 bitowe numery ASN zostały wprowadzone przez IANA jako odpowiedź na wyczerpujące się 16 bitowy numery ASN. Nowe numery 32 bitowe są kompatybilne wstecznie. 16-bitowe ASN przyjmują wartość od 1 do 65535. Numery ASN od 64512 do 65535 są numerami prywatnymi, zarezerwowanymi dla użytku wewnętrzengo na potrzeby iBGP (internal BGP).
Jak działa BGP ?
BGP działa na protokole transportowym TCP na porcie 179 zestawiając ze sąsiadami sesje BGP.
Są dwa typy relacji sąsiedztwa między routerami BGP:
- iBGP – między sąsiadami w tym samym AS
- eBGP – między sąsiadami w różnych AS
BGP wykorzystuje 4 rodzaje wiadomości:
- Open Message
Wiadomość OPEN jest wysyłana po nawiązaniu połączenia TCP i służy otwarciu sesji sąsiedztwa pomiędzy routerami.
- Update Message
Wiadomość UPDATE jest wykorzystywana do wysyłania aktualizacji o trasach do sąsiadów.
- Keepalive Message
Wiadomość KEEPALIVE jest przesyłana w celu podtrzymania sesji. Jak router nie otrzyma wiadomości keepalive od sąsiada w czasie (HOLD TIME – domyślnie 180 sekund) uznaje go za niedostępnego , zamykana jest sesja BGP i usuwane są wszystkie trasy otrzymane od niego z tablicy routingu.
- Notification Message
Wiadomość NOTIFICATION jest wysyłana w sytuacji jeśli połączenie napotka jakieś błędy. Kiedy wykryty jest błąd sesje BGP jest zamykana.
Zestawienie sesji BGP
Routery biorące udział w BGP mogą być w następujących stanach:
1. IDLE
2. CONNECT
BGP czeka na ukończenia połączenia TCP (three-way handshake). Kiedy się powiedzie router przechodzi w stan OpenState, jeśli się nie powiedzie router przechodzi w stan Active.
3. ACTIVE
W tym trybie BGP próbuje ponownie dokończyć TCP three-way handshake. Jeśli się powiedzie to router przechodzi w stan OpenState, jeśli się nie powiedzie to router wraca do stanu Connect. Router ponadto nasłuchuje cały czas na przychodzące połączenia na wypadek, gdyby zdalny sąsiad BGP próbował ustanowić połączenie.
4. OPENSENT
BGP nawiązał połączenie TCP i wysłał wiadomość Open Message W tym stanie router nasłuchuje na wiadomość Open Message od zdalnego sąsiada BGP. Otrzymana wiadomość Open Message jest sprawdzana pod kątem błędów (niepoprawna wersja, błędny numer AS itp.) w przypadku błędu router wyśle wiadomość Notification do sąsiada BGP i wróci do stanu Idle. Jeśli wszystko jest w porzadku, BGP rozpoczyna wysyłanie wiadomości keepalive. Jeśli z jakiegoś powodu sesja TCP zostanie zerwana BGP wróci do stanu Active. Kiedy wystąpi błąd, BGP wyśle kod błędu i wróci do stanu Idle, tak samo się stanie w przypadku zresetowania procesu BGP.
5. OPENCONFIRM
BGP czeka na wiadomości keepalive od zdalnego sąsiada BGP, Router kiedy otrzyma wiadomość keepalive przechodzi w stan Established i relacja sąsiedztwa zostaje nawiązana. Jeśli zostanie otrzymana wiadomość notification od sąsiada, to router wraca do stanu Idle.
6. ESTABLISHED
W tym stanie relacja sąsiedztwa pomiędzy sąsiadami BGP zostaje nawiązana, a routery wysyłają wiadomości Update w celu wymiany informacji o trasach. Jeśli zostanie w tym stanie otrzymana wiadomość Notification, to router wróci do stanu Idle.
Atrybuty ścieżki BGP
- standardowe (well-known) – muszą być rozumiane przez wszystkie implementacje BGP,
- niestandardowe – mogą nie być wspierane przez wszystkie implementacje BGP,
- obowiązkowe – muszą występować w opisie trasy
- opcjonalne – nie muszą występować w opisie trasy, wszystkie atrybuty niestandardowe są opcjonalne
- przenośne (transitive) – są przesyłane do innych AS
- nieprzenośne (non-transitive) – nie są przesyłane do innych AS
Nazwa atrybutu i kod | Kategoria atrybutu | Opis |
---|---|---|
1 Origin | standardowy i obowiązkowy | Atrybut określa źródło ścieżki (pochodzenie). Może przyjmować następujące wartości: IGP – trasa pochodząca z wewnętrz danego systemu autonomicznego EGP – trasa otrzymana z EGP (External Gateway Protocol) incomplete – trasa redystrybuowana |
2 AS Path | standardowy i obowiązkowy | Atrybut opisujący sytemy autonomiczne, które są ścieżką do docelowej sieci. |
3 Next Hop | standardowy i obowiązkowy | Atrybut wskazuje na adres IP następnego skoku (IP next hop) do docelowej sieci. Jest to adres IP sąsiada zdalnego BGP, przez którego dana trasa jest osiągalna. |
4 Multiple Exit Discriminator (MED) | niestandardowy i nieprzenośny | Atrybut wskazujący metrykę dla zdalnych sąsiadów. Metryka wskazuje jaką ścieżkę dany sąsiad ma użyć dla dotarcia do lokalnego AS. Przy wyborze preferowana jest niższa metryka (domyślnie MED ma wartość 0) |
5 Local Preference | standardowy i opcjonalny | Atrybut wskazujący metrykę dla ruchu wychodzącego z lokalnego routera do sąsiadów zdalnych do zewnętrznych sieci (domyślnie Local Preference ma wartość 100). Wyższa wartość Local Preference jest preferowana przy wyborze trasy. |
6 Atomic Aggregate | standardowy i opcjonalny | Atrybut informujący o tym, że dokonana została agregacja tras. Zawiera ASy, które zostały porzucone w ramach agregacji. |
7 Aggregator | niestandardowy i przenośny | Atrybut zawierający identyfikator routera odpowiedzialnego za agregację. |
8 Community | niestandardowy i przenośny | Atrybut pozwalający na znakowanie tras i użycie grup tras o takich samych cechach charakterystycznych. |
9 Originator ID | opcjonalny i nieprzenośny | Atrybut identyfikujący router, od którego pochodzi dana trasa. Atrybut jest ustawiany przez router reflector i eliminuje szansę pojawienia się pętli. |
10 Cluster List | opcjonalny i nieprzenośny | Lista używana w środowisku route reflectorów. Używana do zapobiegania pętli. |
— Weight | własność CISCO | Atrybut podobny do Local Preference, dostarcza wagę do wyznaczenia najlepszej trasy dla ruchu wychodzącego na urządzeniach CISCO |
Wybór najlepszej ścieżki w BGP
W internecie istnieje wiele redundantnych połączeń do sieci docelowej. Gdy BGP ma do wyboru kilka ścieżek do trasy docelowej musi wybrać najlepszą ścieżkę. Najlepsza ścieżka w BGP jest wybierana na podstawie atrybutów. Atrybuty są sprawdzane zgodnie z poniżej podaną kolejnością w przypadku gdy atrybuty są takie same dla redundantnych ścieżek porównywany jest kolejny atrybut z listy, aż do znalezienia różnicy w atrybutach.
Atrybuty są porównywane w następującej kolejności:
Atrybut | Opis |
---|---|
1 Weight | Preferuj najwyższą wagę (dla routerów CISCO) |
2 Local Preference | Preferuj najwyższy Local Preference |
3 Self-originated | Preferuj trasy ogłoszone lokalnie przez komendę network lub redistribute |
4 AS Path | Preferuj ścieżkę z krótszym AS_PATH (mniejsza ilość AS) |
5 Origin | Preferuj trasy pochodzące z IGP nad trasami EGP, a EGP nad trasami unknown |
6 MED | Preferuj niższą wartość MED |
7 External | Preferuj trasy z eBGP nad trasami z iBGP |
8 IGP Cost | Preferuj ścieżkę, gdzie koszt IGP do next-hopa BGP jest niższy |
9 EBGP Peering | Preferuj starszą ścieżkę |
10 Router ID | Preferuj ścieżkę, która ma niższy router-id |
PODSUMOWANIE
BGP w wersji 4 jest podstawą funkcjonowania obecnego internetu. BGP jest opisane w RFC 4271. Dystans administracyjny w eBGP wynosi 20, w iBGP 200. BGP do komunikacji wykorzystuje transmisję IP na porcie TCP/179. Wybór najlepszej trasy w protokole BGP odbywa się na podstawie porównywania atrybutów. BGP jest protokołem o długim czasie zbieżności (pobranie pełnej tabicy routingu Internetu może potrwać wiele godzin, tak samo jak propagacja nowego wpisu w całej sieci.
Cześć
Po więcej przydatnych informacji dotyczących BGP zapraszam na WEBinaria
https://webinaria.proidea.pl/webinaria/bgp/