fbpx
Zaznacz stronę

Protokół BGP – stany i wiadomości

utworzone przez Sty 10, 2019BGP, teoria

W poprzednim artykule przedstawiłem czym jest BGP. Dzisiaj wejdziemy trochę głębiej. W stany i wiadomości.

 

Wpisy z serii o BGP, możesz znaleźć na:

Podstawy BGP – co to jest BGP i do czego służy

Atrybuty BGP – co to jest Local preference, po co jest community?

Protokół BGP – Co to jest sesja BGP?

Aby routery w ramach BGP mogły wymienić informację o znanych im prefiksach muszą być w określonej relacji. Taką relację nazywamy sesją BGP lub sąsiedztwem BGP (BGP Neighbor Adjacency).

Co jest potrzebne aby ustanowić sesje BGP?

Border Gateway Protocol działa inaczej niż znane Ci protokoły takie jak OSPF lub ISIS. Nie wykorzystuje adresacji broadcast lub multicast aby “odkryć” sąsiadów w sieci. Parametry sesji BGP trzeba skonfigurować ręcznie na routerze.

Aby to zrobić musimy znać adres IP routera, z którym będziemy zestawiać sesje i numer AS w ramach, którego działa nasz sąsiad.

Co to jest AS i podstawy BGP znajdziesz w pierwszym artykule.

BGP wykorzystuje TCP do połączeń i nasłuchuje na 179 porcie.

Kiedy konfiguracja BGP została zaimplementowana na routerze, wtedy sesja przyjmuje określony stany (BGP states).

Protokół BGP -stan sesji (BGP States)

Sesja BGP może być w kilku stanach i przechodzić pomiędzy nimi.

IDLE

Jest to pierwszy stan. W stanie Idle BGP odrzuca wszystkie przychodzące połączenia BGP. Oczekuje na “Start Event”. Start Event to np.: reset ustanowionej sesji lub dodanie nowej sesji. Kiedy nastąpi “Start Event” następuje przydzielenie zasobów dla sesji, resetuje się licznik ConnectRetry i jest inicjowane połączenie TCP z sąsiadem BGP. W stanie IDLE router nasłuchuje połączeń od routera sąsiedniego, który może próbować ustanowić sesję BGP. Gdy połączenie TCP zostanie ustanowione, wtedy BGP przechodzi do następnego stanu. W przypadku braku połączenia TCP, sesja pozostaje w stanie IDLE.

CONNECT

W stanie CONNECT BGP czeka na zakończenie TCP three-way handshake. Kiedy TCP 3-way handshake zakończy się sukcesem, BGP przechodzi do stanu OpenSent. Gdy nie można zakończyć 3-way handshake, wtedy sesja przechodzi do stanu Active. Jeśli licznik ConnectRetry upłynie, sesja pozostanie w stanie CONNECT. Następnie licznik ConnectRetry jest resetowany i następuje kolejna próba zestawiania TCP 3-way handshake.

Active

W stanie Active BGP próbuje ustanowi TCP 3-way handshake. Jeśli uda się, wtedy BGP przechodzi do stanu OpenSent. Jeśli nie można zakończyć TCP 3-way handshake sesja pozostaje w stanie Active. Jeśli licznik ConnectRetry upłynie, sesja wraca do stanu CONNECT. BGP nasłuchuje połączeń od routera sąsiedniego, który może próbować ustanowić sesję BGP.

 

OpenSent

W stanie OpenSent BGP wysłało wiadomość Open, ale jeszcze nie ma informacji od sąsiada. Gdy wiadomość Open dojdzie, jest weryfikowana pod kątem poprawności. Gdy pojawią się błędy, jest wysyłania wiadomość Notification i sesja wraca do stanu IDLE. W stanie OpenSent jest negocjowany HOLD TIME. Wybierana jest niższa wartość.

OpenConfirm

W stanie OpenConfirm BGP oczekuje na wiadomości Keepalive. Gdy wiadomość Keepalive dojdzie, wtedy sesja przechodzi do ostatniego stanu Established. Resetuje się licznik HOLD TIME.

Established

Stan Established jest ostanin stanem i docelowym sesji BGP. W tym stanie routery wymieniają się prefiksami Za każdym razem gdy router BGP otrzyma wiadomość Keepalive lub Update, licznik HOLD TIME jest resetowany. Jeśli router BGP dostanie wiadomość Notification, przejdzie do stanu IDLE.

Cały proces zestawiania sesji BGP można przedstawić na maszynie stanów protokołu BGP.

Protokół BGP – Wiadomości (BGP messages)

W akapitach o stanach sesji BGP używałem określeń wiadomości, messages. BGP używa do komunikacji wiadomości.

BGP ma 4 rodzaje wiadomości, które są wykorzystywane do komunikacji pomiędzy sąsiadami BGP (BGP neighbors):

Open message

Gdy zostanie nawiązane połączenie TCP natychmiast jest obie strony przyszłej sesji BGP wysyłają Open message. Wiadomość Open zawiera informacje na temat konfiguracji i możliwości routera wysyłającego wiadomość Open.

W wiadomości Open znajdziemy:

Version – wersja protokołu BGP, obecnie jest to wersja nr 4.

My AS – Numer AS routera wysyłającego wiadomość Open

Hold time – maksymalna liczba sekund kiedy sesja może być w stanie Idle zanim zostanie zerwana z powodu timeout. Wybierany jest najmniejszy czas. Minimalna wartość Hold time to 3 sekundy. Wartość 0 oznacza, że sesja nigdy się nie zakończy.

Identifier –  identyfikator routera nadającego wiadomość Open. Jest to adres IP. Identyfikator jest taki sam dla wszystkich sesji BGP na routerze.

Par len – a właściwie parameter length. Jest to pole opcjonalne. Wykorzystywane jest do negocjacji autentykacji i innych możliwości związanych z multiprotocol.

Gdy router BGP wynegocjuje parametry sesji, wysyła w odpowiedzi wiadomość keepalive i zaczyna wysyłać kopie tablicy BGP.

Update message

Wiadomość Update router wysyła gdy nastąpi zmiana w tablicy BGP.

Update message zawiera:

UR length – unfeasile length, określa wielkość pola withdrawn routes.

Withdrawn routes – pole zawiera wszystkie prefiksy, które już nie są osiągalne, a zostały wcześniej ogłoszone.

Path attributes – pole zawiera atrybuty prefiksu tj.: Origin, AS path, Next hop, MED, Local preference i inne.

NLRI – Network Layer Reachability Information – jest to lista prefiksów.

Notification message

Wiadomość Notification jest wysyłana gdy powstanie błąd lub nieprawidłowe działanie. Po wysłaniu wiadomości Notification, połączenie TCP jest zrywane.

Keepalive message

Wiadomość Keepalive jest wysyłana w innym stanie sesji niż Idle w celu podtrzymania licznika hold time.

 Artykuł przygotowany na podstawie RFC 1771

 Jeśli chcesz być powiadamiany o nowych artykułach, dopisz się do newslettera. Formularz poniżej.

 

Tomasz Mikołajek

Tomasz Mikołajek

Założyciel Showroute.pl

Inżynier sieciowy lubiący dzielić się wiedzą i pomagać innym zrozumieć zawiłości działania sieci i Internetu.

Share This