header image
Home arrow Protokoły TCP/IP arrow Routing arrow BGP - Border Gateway Protocol
BGP - Border Gateway Protocol E-mail
Oceny: / 20
KiepskiBardzo dobry 

Border Gateway Protocol wersja 4 (BGP-4) - RFC 4271 - jest protokołem routingu między systemami autonomicznymi AS (Autonomous System). Główną funkcją routera BGP (Border Gateway Protocol) jest wymiana informacji o osiągalności sieci w Internecie z sąsiednimi routerami BGP w innym AS. BGP-4 wspiera CIDR, inkrementacyjne aktualizacje, lepsze filtrowanie i elastyczniejsze polityki routingu niż poprzednie wersje BGP.

Informacja o dostępności sieci w BGP (Border Gateway Protocol) zawiera listę systemów autonomicznych AS, przez które przechodzi ta informacja. Jest ona wystarczająca by utworzyć graf połączeń AS w BGP, w którym wyeliminowane są pętle routingu i gdzie można uruchomić pewne reguły decyzyjne na poziomie AS.

BGP-4 wprowadza nowy zbiór mechanizmów do obsługi międzydomenowego routingu bezklasowego CIDR (Classless Interdomain Routing). Zawierają one obsługę rozgłaszania prefiksów IP i eliminują koncepcję klas sieci w BGP. Protokół BGP-4 wprowadza również mechanizmy umożliwiające agregację tras, włączając w to agregację ścieżek AS.

BGP (Border Gateway Protocol) działa na niezawodnym protokole transportowym jakim jest TCP, zestawiając połączenia na porcie 179 ze swoimi sąsiednimi routerami BGP. Dwa routery z BGP zestawiają między sobą połączenie TCP. Wymieniają między soba wiadomości dla otwarcia i potwierdzenia parametrów połączenia. Na początku wymieniają między sobą całą tabelę routingu, a aktualizacje incrementacyjne wysyłane są tylko wtedy, gdy zmieni się tabela routingu BGP. BGP nie wymaga okresowych odświeżeń całej tabeli routingu BGP, w związku z tym routery BGP przetrzymuja całą aktualną tabelę routingu wszystkich swoich sąsiadów BGP, z którymi mają zestawione połączenie, na czas trwania tego połączenia. Routery BGP okresowo wysyłają między sobą wiadomości KeepAlive, by upewnić się o żywotności połączenia. Wysyłane są też wiadomości Notification (zawiadomienia) w odpowiedzi na wszelkie błędy i wyjątkowe sytuacje w routerach BGP. Jeśli połączenie napotka jakieś błędy, wysyłana jest wiadomość Notification i połączenie między dwoma peerami BGP jest zamykane.

Jeśli system autonomiczny AS ma wiele routerów BGP i udostępnia usługi tranzytowe dla innych AS, należy wziąć pod uwagę spójny pogląd routingu wewnątrz tego AS i go zapewnić. Spójny wygląd wewnętrznych tras zapewniają protokoły routingu IGP (Interior Gateway Protocol), takie jak RIP, OSPF czy IS-IS. Spójny wygląd tras zewnętrznych do AS może być zapewniony przez utrzymanie bezpośrednich połączeń z wszystkimi routerami BGP wewnątrz AS. Stosując wspólny zbiór reguł, routery BGP dochodzą do porozumienia, które routery brzegowe będą działać jako punkty wyjścia/wejścia dla poszczególnych przeznaczeń na zewnątrz danego systemu AS. Informacje te są przekazywane do wewnętrznych routerów AS, przez protokoły routingu wewnątrzdomenowego IGP. Należy uważać, by wszystkie routery zostały zaktualizowane informacją o tranzycie, zanim routery BGP zaanonsują do innych AS, że umożliwiają tą usługę tranzytową (czyli, że mogą przenieść ruch tranzytowy do jakiegoś przeznaczenia).

Połączenia między routerami BGP z różnych AS są traktowane jako łącza zewnętrzne (E-BGP, External BGP), natomiast połączenia między routerami BGP w tym samym AS są traktowane jako łącza wewnętrzne (I-BGP, Internal BGP). Tak samo traktuje się peerów (sąsiadujące routery równorzędne) jako zewnętrznych peer i wewnętrznych peer.

BGP (Border Gateway Protocol) tworzy graf systemów autonomicznych AS w oparciu o informacje wymieniane między routerami BGP (można nazwać to drzewem AS systemów autonomicznych). BGP traktuje całą sieć Internet jako drzewo ASów, gdzie każdy AS ma swój unikalny numer. Połączenia między AS nazywamy w BGP ścieżkami (AS_path), natomiast trasą nazywamy zbiór informacji o tej ścieżce.

Po zestawieniu sesji i sąsiedztwa między routerami BGP, wymieniane są wszystkie trasy między nimi (tylko te, które  administrator chce wymienić). Kolejne zmiany w tabelach routingu routerów BGP są aktualizacjami inkrementacyjnymi. Tego typu aktualizacje powodują zmniejszenie potrzebnej mocy procesorów i ilości pasma potrzebnego na obsługę okresowych uaktualnień.

Typy wiadomości BGP

W BGP (Border Gateway Protocol) wyróżnia się 5 typów wiadomości:

1 - OPEN - wiadomość rozpoczynająca zestawienie sesji BGP. Zawiera wersję protokołu BGP, nr systemu autonomicznego AS, HOLD TIME (jak długo ma być podtrzymana sesja BGP, jeśli nie nadejdzie wiadomość KEEPALIVE lub UPDATE), identyfikator routera BGP (RouterID) oraz opcjonalne parametry wykorzystywane przy zestawieniu sesji BGP.

2 - UPDATE - wiadomość przenosząca informacje o routingu. Składa się z trzech części: informacji o nieaktualnych trasach, atrybutów ścieżki i NLRI (Network Layer Reachability Information), czyli informacje o dostępnych sieciach.

3 - NOTIFICATION - wiadomość wysyłana za każdym razem, gdy wystąpi jakikolwiek błąd w nagłówku wiadomości, wiadomości OPEN, UPDATE, błąd FSM (Finite State Machine), upłynięciu HOLD TIME, innych nie wymienionych błędów.

4 - KEEPALIVE - wiadomość podtrzymująca połączenie(sesję) BGP, wykorzystuje się ją do zerowania licznika HOLD TIME w przypadku braku wiadomości UPDATE.

5 - ROUTE-REFRESH - wiadomość obsługująca dynamiczne żądania odświeżenia tras.  

Zestawienie sesji BGP

Maszyna stanów FSM (Finite State Machine) w BGP zawiera 6 stanów: IDLE, CONNECT, ACTIVE, OPENSENT, OPENCONFIRM, ESTABLISHED.

IDLE - pierwszy stopień połączenia, w którym oczekuje się na tzw. zdarzenie Start (inicjalizacja połączenia przez zdalny router BGP lub administartora routera BGP, przez np. reset lub stworzenie nowej sesji BGP). Po tym stanie router BGP przechodzi do stanu CONNECT, a jeśli wystąpi błąd to wraca do stanu IDLE.

CONNECT - oczekiwanie na poprawne zestawienie sesji TCP z sąsiadującym routerem i przejście do stanu OPENSENT po wysłaniu wiadomości OPEN. Jeśli nie powiedzie się zestawienie sesji TCP, router przechodzi do stanu ACTIVE, gdzie próbuje zestawić sesję TCP.

ACTIVE - w rym stanie router BGP próbuje zestawić sesję TCP z drugim routerem BGP, jeśli nie zestawi sesji w czasie ConnecRetry przechodzi w stan IDLE. Jeśli zestawi ta sesję to przechodzi do stanu OPENSENT po wysłaniu wiadomości OPEN. W tym stanie również oczekuje się na zainicjowanie ewentualnego połączenia TCP od sąsiadującego routera BGP.

OPENSENT - w tym stanie router BGP oczekuje na wiadomość OPEN od sąsiadującego routera BGP. Po odebraniu wiadomości OPEN analizuje ją i sprawdza jej poprawność. Porównuje otrzymany w wiadomości OPEN nr systemu autonomicznego AS ze swoim, po to by stwierdzić czy sesja jest typu I-BGP czy E-BGP. Router BGP zaczyna wysyłać wiadomości KEEPALIVE do sąsiada. Jeśli wystąpi rozłaczenie sesji TCP, wraca do stanu ACTIVE, natomiast jeśli wystąpią inne błędy lub minie HOLD TIME, wysyłana jest wiadomość NOTIFICATION (informacja o błędzie) i przejście do stany IDLE.

OPENCONFIRM - router BGP czeka na wiadomość KEEPALIVE. Po jej odebraniu przechodzi do stanu ESTABLISHED i zeruje HOLD TIME. Zakończona jest negocjacja sesji BGP między dwoma routerami. Jeśli router BGP odbierze wiadomość NOTIFICATION to przechodzi do stanu IDLE.

ESTABLISHED - w tym stanie router zaczyna wymieniać wiadomości UPDATE z sąsiednim routerem BGP oraz zeruje HOLD TIME po odebraniu KEEPALIVE bądź UPDATE. Jeśli wystąpią jakiekolwiek błedy w wiadomościach UPDATE wysyłana jest wiadomość NOTOFICATION i sesja BGP zostaje rozłączona (otrzymanie zdarzenia Stop) i przejście do stanu IDLE.

Atrybuty ścieżki BGP

Ścieżka BGP może mieć przypisane różne atrybuty:                    

Wartość
 Oznaczenie
 1  ORIGIN
 2  AS_PATH
 3  NEXT_HOP
 4  MULTI_EXIT_DISC
 5  LOCAL_PREF
 6  ATOMIC_AGGREGATE
 7  AGGREGATOR
 8  COMMUNITY
 9  ORIGINATOR_ID
 10  CLUSTER_LIST
 11  DPA
 12  ADVERTISER
 13  RCID_PATH / CLUSTER_ID
 14  MP_REACH_NLRI
 15  MP_UNREACH_NLRI
 16  EXTENDED COMMUNITIES
 17  NEW_AS_PATH
 18  NEW_AGGREGATOR
 19  SAFI Specific Attribute (SSA)
 20  Connector Attribute
 21-254  Nieprzydzielone
 255  Zarezerwowany

 

< Poprzedni   Następny >