Rafał Rudewicz

9 października 2017

Inna Sieć Newsletter


BGP – Border gateway protocol po raz pierwszy w CCNA

Routing & Switching | 0 komentarzy

BGP - Jeden protokół, by internetem rządzić, Jeden, by wszystkie trasy odnaleźć, Jeden, by wszystkie je zgromadzić i w tablicy umieścić, czyli wprowadzenie do BGP w CCNA.

i 3 Spis treści

Po raz pierwszy w historii Cisco postanowiło umieścić podstawy Border Gateway Protocols w CCNA R&S. Oczywiście wcześniej external BGP był wspominany jako jeden ze współczesnych protokołów routingu wykorzystywany do wymiany informacji o trasach pomiędzy AS (autonomous system), jednak dopiero zdając CCNA 3.0, będziesz umiał skonfigurować oraz przeprowadzić troubleshooting tego protokołu. CCNA R&S skupia się wyłącznie eBGP single-homed (połączenie do ISP jednym łączem) wersji dla ipv4. W rzeczystych środowiskach produkcyjnych firmy posiadające wyłącznie jedno podłączenie do ISP nie zaprzątają sobie głowy BGP.
 
BGP jest obecnie jedynym współcześnie używanym protokołem exterior gateway protocol (EGP). Należy do protokołów path vector, posiada wiele opcji konfiguracyjnych (Ich ilość wystarcza na pokrycie materiałów CCNA poprzez CCNP aż do CCIE i nadal uczysz się czegoś nowego) oraz pozwala na ogromną skalowalność i robi to świetnie. Tak na marginesie obecna pełna tablica „routingu Internetu” zawiera ponad 700 tysięcy wpisów! 
 Zdjęcie pochodzi ze strony http://bgp.potaroo.net/

Do głównych zalet należy zaliczyć:

  • Protokół routingu typu path vector
  • Obsługuje VLSM, CIDR oraz summaryzację
  • Pełna informacja o trasach rozsyłana na starcie, potem tylko aktualizacje
  • Połączeniowy tryb komunikacji z użyciem portu 179
  • Złożona metryka, na podstawie której wyznaczane są trasy
  • Dobra skalowalność, rozrastanie sieci nie stanowi problemu
  • Możliwe jest kierowanie ruchem poprzez odpowiednią konfigurację atrybutów metryki

Rozgłaszanie tras

BGP rozgłasza prefixy, wykorzystując podobny mechanizm wymiany informacji co protokoły IGP. Aby wysłać informację (BGP update), jeden z routerów musi posiadać informację o routowalnym w internecie prefiksie. Routery, które posiadają relację sąsiedztwa, nazywane są peer’ami.  

W odróżnieniu od protokołów IGP, które rozgłaszają adresy nazywane podsieciami, adresy rozgłaszane przez BGP nazywane są prefiksami, blokami adresów oraz prawidłowo w odniesieniu do BGP Network Layer Reachability Information (NLRI).

W powyższym przypadku korporacja posiada relację sąsiedztwa (peering relationship)  ze swoim lokalnym ISP 1, do którego przesyła informację o posiadanym bloku adresów 192.10.10.0/24. Następnie ISP 1 przesyła NLRI dalej do ISP2 który przesyła update do ISP 3 i tak dalej, aż wszystkie routery w Internecie będą znały trasę do sieci 192.10.10.0/24. Bardzo ważną rolę w BGP odgrywa  Autonomous system number (ASN). Identycznie jak ma to miejsce w EIGRP, termin autonomous system odnosi się do autonomicznej sieci. BGP wykorzystuje ASN – numer identyfikujący AS – w wielu aspektach konfiguracji między innymi w mechanizmach zapobiegania pętlą routingu czy wyborze najlepszej ścieżki jednak jest to poza zakresem CCNA R&S.

Rozgłaszanie publicznego prefixu do internetu

Rozważmy teraz typową sytuację, w której mamy dwa eBGP peeery. Z jednej strony korporację posiadająca blok adresów klasy C 192.10.10.0/24, który został podzielony na podsieci 192.10.10.0/29 oraz 192.10.10.128/26, oraz prywatny blok adresów klasy A 10.0.0.0/8. Które podsieci zostały rozgłoszone do routera ISP poprzez eBGP? Oczywiście tylko cała klasa C 192.10.0.0/24.  Stanie się tak, ponieważ z punktu widzenia ISP interesujący jest jedynie fakt, posiadania przez peera całej klasy C. Ruch do poszczególnych podsieci będzie i tak przechodził przez ten styk. Obecnie tablice BGP posiadają ponad 700 tysięcy wpisów, wyobraź sobie jak bardzo by urosły gdyby zawierały informację o wszystkich podsieciach na świecie? Prywatne klasy adresów nie powinny być rozgłaszane do internetu, nawet jeśli tak się stanie, ISP natychmiast odfiltruje takich ruch.

W drugą stronę ISP rozgłasza default-route do korporacji. Dlaczego tak? Załóżmy, że ISP 1 rozgłosi wszystkie prefiksy i router brzegowy korpo umieści wszystkie trasy w swojej tablicy routingu. Jaki adres następnego skoku będą posiadać wszystkie trasy? Oczywiście routera brzegowego ISP 1.

Wybór najlepszej trasy z BGP

Podobnie jak protokoły IGP BGP również posiada coś na wzór metryki, dzięki której wybierana jest najlepsza trasa. Jednakże BGP wykorzystuje nieco inne podejście do tego procesu. Po pierwsze BGP nie ma jednej definicji metryki. W rzeczywistości wykorzystuje atrybuty ścieżki (path attributes). BGP rozgłasza prefiksy wraz z listą atrybutów (sprzęt Cisco rozpoznaje 11 atrybutów). Ze względu, że wybór najlepszej trasy jest podejmowany na podstawie zestawu atrybutów wybranych przez administratora, możliwa jest bardzo precyzyjna konfiguracja, jak chcemy zarządzać przesyłanymi danymi.   BGP wykorzystuje proces nazywany selekcją najlepszej trasy. Kiedy router otrzymuje pakiet BGP update zawierający prefix, który już jest w tabeli routingu, musi podjąć decyzję czy nowa trasa jest lepsza od dotychczasowej. Aby to ustalić, przeprowadzana jest seria porównań (zwykle około 10) na podstawie parametrów trasy. Takie porównywanie wymaga znacznie mniej pracy niż przykładowo uruchomienie procesu SPF dla protokołu OSPF.   Jednym z atrybutów biorących udział w porównaniu jest AS_Path (PA) który zawiera listę wszystkich ASN, które znajdują się na ścieżce do danego bloku adresów. Przypomina to metrykę liczby przeskoków w RIP’ie, jednakże każdy skok to cały AS zamiast pojedyńczego routera.

Styk internetu

Termin styk internetu odnosi się zarówno połączenia pomiędzy użytkownikiem końcowym/korporacją a ISP, jak również do połączeń ISP do ISP. Na potrzeby CCNA R&S musisz znać tylko jeden model takiego styku zwany single-homed. Pamiętaj jednak, że to nie jedyny możliwy sposób połączenia. Takie rozwiązanie ma oczywiście swoje plusy i minusy. Jeśli łącze ulegnie uszkodzeniu, tracimy dostęp do internetu do czasu naprawienia awarii. Analogiczna sytuacja występuje w przypadku awarii routerów brzegowych. Z drugiej strony takie połączenie jest zdecydowanie tańsze od rozwiązań bazujących na redundancji, czy to poprzez dołożenie dodatkowych łączy do jednego ISP, czy poprzez podłączenie do kolejnych ISP.

Termin Dual odnosi się do sytuacji gdy posiadamy dwa lub więcej łączy do jednego ISP. Każdy z tych wzorców może być zastosowany do dowolnego łącza WAN, bez różnicy czy będzie to DSL, światłowód itd.

Konfiguracja BGP

W odróżnieniu od  protokołów IGP takich jak OSPF czy EIGRP w BGP nie ma dynamicznego odkrywania sąsiadów. Wszystkie peery muszą zostać wprowadzane przez administratora. Do komunikacji wykorzystywany jest port TCP 179. Po nawiązaniu sesji TCP dwa peery sprawdzają wzajemnie, czy powinno ustanowić relację sąsiedztwa. Jeśli weryfikacja zakończy się pomyślnie, rozpoczyna się przesyłanie pakietów BGP update z NLRI.   Konfiguracja BGP rozpoczynamy od polecenia router BGP asn (numer AS, do którego należy router). Router przenosi nas wtedy do konfiguracji BGP. Następnie w celu nawiązania relacji sąsiedztwa musimy wprowadzić polecenie neighbor ip_adres remote-as asn.

ISP1#show running-config
router bgp 1
neighbor 192.168.100.1 remote-as 1001
R1#show running-config
router bgp 1001
neighbor 192.168.100.2 remote-as 1

Polecenie show tcp brief pokazuje wszystkie połączenia TCP, terminowane na routerze nie ograniczając się wyłącznie do BGP, jednak może być z powodzeniem wykorzystywane do sprawdzania poprawności relacji sąsiedztwa.

ISP1#show tcp brief
TCB Local Address Foreign Address (state)
1590F400 192.168.100.2.179 192.168.100.1.1025 ESTABLISHED
R1#show tcp brief
TCB Local Address Foreign Address (state)
1590F400 192.168.100.1.1025 192.168.100.2.179 ESTABLISHED

Weryfikacja

Polecenie show ip bgp summary pokazuje informacje na temat działającego protokołu na routerze oraz listę peerów.
W celu sprawdzenia, czy dany peer należy do eBGP, czy do iBGP należy porównać numery AS (nie ma bezpośredniej informacji). Ostatnia kolumna State/PfxRcd informuje, w jakim stanie jest relacja sąsiedztwa z danym peerem. Jeśli relacja jest poprawnie nawiązana, taki status nazywa się Established. W takim wypadku zamiast nazwy stanu wyświetlana jest liczba prefixów pobranych od sąsiada.

IdleSąsiad został administracyjnie wyłączony (neighbor shutdown) lub router oczekuje na ponowne nawiązanie relacji.
ConnectZostała podjęta próba zestawienia sesji TCP jednak nie została prawidłowo zakończona.
ActivePołączenie TCP zostało poprawnie zestawione, jednak żadna wiadomość BGP nie została jeszcze wysłana.
OpensentPołączenie TCP zostało poprawnie zestawione, router wysłał pierwszą wiadomość w celu nawiązania relacji sąsiedztwa (BGP Open message)
OpenconfirmPołączenie TCP zostało poprawnie zestawione, router otrzymał wiadomość BGP Open message. Relacja sąsiedztwa nadal nie ustanowiona.
EstablishedRoutery są obecnie peer’ami BGP i mogą wymieniać informacje
ISP1 #show ip bgp summary
BGP router identifier 192.168.100.2, local AS number 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.100.1 4 1001 39 25 5 0 0 00:23:46 4
R1#show ip bgp summary
BGP router identifier 192.168.100.1, local AS number 1001
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.100.2 4 1 39 25 5 0 0 00:23:46 4

W celu rozgłoszenia tabeli BGP należy umieścić dany prefix w tablicy routingu. Do tego celu można wykorzystać polecenie network ip_adres mask maska. Polecenie network jednak ma nieco inne zastosowanie niż w protokołach IGP.

Sprowadza się to do:

  • Rozgłaszania tras dla całych klasowych sieci lub publicznych bloków adresów
    Rozgłaszania tras dla podsieci publicznych bloków adresów
    Rozgłaszania tras dla całych bloków adresów nawet jeżeli w tabeli routingu znajduje się wyłącznie podsieci danego bloku

Rozgłaszanie klasowego prefixu z Static Discard Route

Routery ISP nie potrzebują osobnych tras do korporacyjnych podsieci. Zamiast tego zdecydowanie lepszą opcją jest rozgłaszanie poprzez korporację całych bloków adresowych. Jednakże jeśli router korpo nie posiada trasy dla całego bloku adresowego (w naszym przypadku korpo router posiada wyłącznie podsieci 192.10.10.0/29 i 192.10.10.128/26 zamiast 192.10.10.0/24) niemożliwe jest dodanie tego bloku poleceniem network do tablicy BGP.   Rozwiązaniem tego problemu jest stworzenie trasy nazywanej discard route. Polega to na stworzeniu trasy do całego bloku adresowego kierującej na interfejs null0 poprzez polecenie ip route ip_adress maska null0. Od tej pory możemy dodać blok do tablicy BGP i wszystkie pakiety pasujące do danej maski zostaną odrzucone, jednakże pakiety adresowane do naszych podsieci nadal zostaną dostarczone, ponieważ routery przeszukując tablice routingu, poszukują najdłuższego dopasowania.

ISP1#show ip route bgp 
B    192.10.10.0/24 [20/0] via 192.168.100.1, 00:11:39
R1#show ip route

S    192.10.10.0/24 is directly connected, Null0
Rafał Rudewicz

Rafał Rudewicz

Specjalizuję się w rozwiązaniach Enterprise oraz Service Provider. Projektuję, wdrażam oraz naprawiam sieci dla największych firm na świecie.

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *