|
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 |
|