Sieć Lan przy wykorzystaniu BGP

Termin BGP

Border Gateway Protocol określa się jako ustandaryzowany protokół bramy mający za zadanie wymianę informację o routingu w Internecie pomiędzy systemami autonomicznymi AS(większość routerów znajdujących się pod kontrolą pojedynczej organizacji). Definicja BGP znajduję się w RFC 1654.

Sposób działania BGP

Wysyłając paczkę, list, przesyłkę gdzieś za granicę np. do Niemiec należy zdecydować się na wybór firmy kurierskiej albo poczty celem dostarczenia. Sprawa jaka nas nie będzie interesować dotyczy sposobu drogi jej dostarczenia. Od momentu przekazania paczki firma kurierska ma za zadanie podjąć najlepszą drogę celem dostarczenia twojego nadania. Właśnie protokół BGP ma odpowiedzialność odnaleźć najlepszą drogę dla danych między systemami autonomicznymi AS. Organizacja IANA pełni pieczę nad zarządzaniem i przypisywaniem publicznych numerów systemów autonomicznych.

Numerowanie systemów autonomicznych kiedyś i obecnie

Początkowa implementacja BGP miała jedynie 16 bitów – możliwość zaadresowania 65,535 ASów. Rozdzielenie systemów autonomicznych jako prywatne jako zakres 64512 – 65535. Z praktycznego punktu widzenie celem działania BGP jest możliwość użycia prywatnego ASN – połączenie między własną siecią a providera ISP. Globalnie – zewnętrzna sieć na całym świecie dana jednostka(firma) będzie pojawiać się jako autonomiczny system naszego providera.

Lata pokazały iż liczba numerów systemów autonomicznych jest za mało. Rok 2007 zdefiniował RFC 4893 celem rozbudowy posiadanych numerów AS do 32bitów. Możliwość zaadresowania Asów zwiększyła się z poprzedniej puli ASN 65535 do 4294967295. Biorąc pod uwagę adresy prywatne – dalej takie były, ale powstał kolejny zakres ASNów private jako 4200000000 – 4294967294.

Działanie prefiksów – atrybutów ścieżki

W sieci posiada się adres IP jaki przypisuje się do każdego hosta w sieci – ta cała sprawa ma zależność między BGP a systemem autonomicznym. Biorąc pod uwagę użytkowanie BGP należy wspomnieć o prefiksie – jest to adres IP jaki grupuje się w podsieci. Właśnie w BGP następuję rozgłoszenie prefiksów z atrybutami przez urządzenia(routery) jakie przynależą do AS. Parametr jakim jest atrybut przynależy do prefiksu i umożliwia podejmować odpowiedzialność celem wyboru korzystnej ścieżki. Najczęściej system autonomiczny z reguły zna drogę dotarcia do każdego prefiksu jaki istnieje w Internecie. Ścieżka jest znana przez wypełnioną po brzegi tablicę BGP.

BGP Neighbor Adjency – ustanowienie sesji

Celem routera w ramach BGP jest potrzeba na wymianę informacji o poznanych prefiksach – wystąpić powinna odpowiednia relacja, która nosi nazwę sesji BGP lub sąsiedztwo(BGP Neighbor Adjecency). Border Gateway Protocol nie korzysta z brodcast ani multicast celem wyszukania sąsiada. W sesji BGP należy parametry ustawić manualnie na routerze. Do wykonania tego zadania jest konieczność poznania dwóch rzeczy – adres IP routera(do jakiego będzie trzeba zestawić sesję), numer autonomiczny AS jaki odpowiada działaniu naszego sąsiada. BGP korzysta z TCP do połączeń – nasłuchiwanie odbywa się na porcie 179. Zakończona implementacja BGP na routerze opiera się na przyjęciu wybranego stanu BGP States.

Stan sesji BGP(BGP States)

Stanów sesji BGP jest kilka i jest możliwość przechodzenia pomiędzy nimi, do BGP States należy zaliczać:

IDLE – Od niego się rozpoczyna gdyż jest pierwszym stanem. Kiedy jest w tym stanie następuje odrzucenie połączenia BGP. Następuje oczekiwanie na Start Event(ponownie uruchomienie sesji bądź wprowadzenie nowej). Kiedy się zacznie Start Event licznik ConnectRetry się restartuje, a dla sesji zostaje przydzielony zasób po czym nastąpi zapoczątkowanie łącza TCP z BGP. Urządzenie jakim jest router w stanie IDLE będzie na nasłuchu połączenia od sąsiada, a router sąsiadujący może tą sesję inicjować. Moment rozpoczęcia połączenia TCP oznacza przejście BGP do kolejnego stanu – kiedy ono nie następuje w dalszym ciągu sesja pozostaje w state IDLE.

CONNECT – ten stan czeka na koniec połączenia TCP three-way handshake – pomyślne zakończenie TCP 3-way handshake BGPwchodzi w state OpenSent, a brak sukcesu oznacza wejście do stanu Active. W przypadku upłynięcia licznika ConnectRetry sesja będzie w state CONNECT. Po czym nastąpi reset i kolejne próba ustanowienia TCP three-way handshake.

ACTIVE- ten stan opiera się na próbie wykonania TCP three-way handshake – pomyślne ustanowie TCP 3-way wówczas następuje przejście do state OpenSent. Sesja zostanie w stanie Active kiedy niemożliwe jest zakończenie TCP three-way handshake. Licznik ConnectRetry mija, a sesja powróci do stanu CONNECT. Następuje nasłuch połączenia BGP od sąsiada(routera) jaki może podjąc próby ustanowienia sesji BGP.

OPEN SENT – nastąpiło wysłanie wiadomości Open w tym stanie – brak jeszcze informacji od sąsiada. W momencie dojścia komunikatu(wiadomości OPEN) następuje weryfikacja czy jest prawidłowa – wykazanie błędów zakończy się przesłaniem wiadomości Notification po czym nastąpi przejście w stan IDLE. Stan OpenState opiera się na negocjacji HOLD TIME – ma za zadanie wybrać najmniejszą wartość.

OPEN CONFIRM – ten stan czeka na wiadomość Keepalive – w przypadku jej przyjścia sesja przechodzi do końcowego stanu Established, a licznik HOLD TIME następuje reset.

ESTABLISHED – ten stan jest ostatni i stanowi cel sesji BGP. Urządzenia jakim są routery wykorzystują prefiksy celem ich wymiany. Każdorazowo gdy router BGP otrzyma wiadomość Update bądź KeepAlive następuje reset licznika HOLD Time. Moment otrzymania wiadomości Notification przez router oznacza przejście do stanu IDLE.

Działanie STANÓW BGP – rysunek maszyny stanowej

Cztery rodzaje wiadomości do komunikacji pomiędzy sąsiadami BGP

1 Open message – moment nawiązania połączenia TCP od razu dwie strony zbliżającej się sesji BGP przesyłają Open message – jej zawartość dotyczy konfiguracji oraz rokowania routera przesyłającego wiadomość Open.

2 Update message – wysłanie wiadomości Update następuje w momencie zmiany w tablicy BGP.

3 Notification message – ma się z tą wiadomości do czynienia w momencie wystąpienia błędu bądź niepoprawnego działania. Wysłanie wiadomości oznaczanie zerwanie TCP

4 Keepalive message – wysyłka opiera się o inny stan jak IDLE celem utrzymania licznika hold time

Przykładowy scenariusz topologii celem konfiguracji protokołu BGP

Opis topologii

Topologia opiera się na dwóch routerach oraz stacjach roboczych. Zarówno stacje robocze jak i routery są podłączane do switchy. Obszar R1 jest oznaczony jako area 10, natomiast obszar R2 jako area 15

Cel do wykonania

Konfiguracja protokołu BGP na R1 oraz R2. Możliwość komunikacji stacji roboczej H1 i H2 pomiędzy sobą – jak i z routerami

Konfiguracje urządzeń

H2:

H1:

Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#int F
Router(config)#int FastEthernet 0/0
Router(config-if)#ip ad
Router(config-if)#ip address 192.168.1.1
% Incomplete command.
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#exit
Router(config)#int S
Router(config)#int Serial 2/0
Router(config-if)#ip ad
Router(config-if)#ip address 192.168.3.1 255.255.255.0
Router(config-if)#
!nastąpiło przypisanie adresów IP do interfejsów!
Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#router bg
Router(config)#router bgp 10
!uruchomienie protokołu BGP z obszarem 10!
Router(config-router)#network 192.168.1.0
Router(config-router)#network 192.168.3.0
Router(config-router)#network 192.168.2.0
!wprowadzenie trzech adresów sieci!
Router(config-router)#nei
Router(config-router)#neighbor 192.168.3.2 rem
Router(config-router)#neighbor 192.168.3.2 remote-as 15
Router(config-router)#nei
Router(config-router)#neighbor 192.168.2.2 re
Router(config-router)#neighbor 192.168.2.2 remote-as 15
!wprowadzenie sasiądów na routerze!

R2:

Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#int F
Router(config)#int FastEthernet 0/0
Router(config-if)#ip ad
Router(config-if)#ip address 192.168.2.1 255.255.255.0
Router(config-if)#exit
Router(config)#int S
Router(config)#int Serial 2/0
Router(config-if)#ip ad
Router(config-if)#ip address 192.168.3.2 255.255.255.0
Router(config-if)#
!przypisanie adresów do interfejsów!
Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#router
Router(config)#router bgp
Router(config)#router bgp 15
!wprowadzenie protokołu BGP z obszarem 15!
Router(config-router)#network 192.168.2.0
Router(config-router)#network 192.168.1.0
Router(config-router)#network 192.168.3.0
!wpisanie trzech sieci!
Router(config-router)#nei
Router(config-router)#neighbor 192.168.3.1 remo
Router(config-router)#neighbor 192.168.3.1 remote-as 10
Router(config-router)#%BGP-5-ADJCHANGE: neighbor 192.168.3.1 Up
Router(config-router)#ne
Router(config-router)#neigh
Router(config-router)#neighbor 192.168.1.2 re
Router(config-router)#neighbor 192.168.1.2 remote-as 10
Router(config-router)#
!wprowadzenie adresu sąsiadów!

Prawidłowa komunikacja między urządzeniami