Wprowadzenie do BGP

BGP to protokołów sieciowy, który z całą pewnością można powiedzieć, że napędza sieć z której korzystasz właśnie w tej chwili – czyli Internet. Gdyby jednak poprzestać na tym stwierdzeniu to byłoby to zdecydowanie zbyt duże uogólnienie. Przyjrzyjmy się BGP bliżej. 

IGP i EGP

Uwaga odnośnie 15:05 w materiale: RIP jest transportowany wewnątrz UDP,  a nie w TCP. Przepraszam za błąd.

Naturalnym sposobem rozpoczęcia naszych rozważań na temat BGP jest zestawienie tego protokołu z innymi być może już Ci znanymi protokołami. Mowa tu rzecz jasna o protokołach routingu i właśnie przedstawicielem tej grupy jest BGP.

BGP to skrót od Border Gateway Protocol i na chwilę obecną jest to jedyny protokół routingu należący do grupy protokołów EGP. W tym momencie nadmienię, że historycznie mamy do czynienia z dwoma dużymi grupami protokołów routingu: IGP czyli Interior Gateway Protocol oraz EGP czyli Exterior Gateway Protocol. 

Protokoły IGP są wykorzystywane głównie do routingu w ramach pojedynczego systemu autonomicznego, czyli innymi słowy w ramach pojedynczej jednostki organizacyjnej takiej jak np. firma czy też ISP (Internet Service Provider). Sieci tego typu wymagają protokołów routingu o konkretnych charakterystykach z czego najważniejszą z nich jest szybki czas konwergencji (konwergencja to takie ładne słowo, które po prostu oznacza dochodzenie sieci do stabilnego stanu czy też stanu zbieżności np. po awarii).

Protokoły te nie zostały natomiast zaprojektowane z myślą o routowaniu dużych ilości podsieci i np. OSPF oraz EIGRP zaczynają już mieć problemy przy ilości około 4000 tras w tablicy routingu.

Rodzina protokołów EGP jest z kolei zaprojektowana z myślą o routingu nie wewnątrz systemu autonomicznego, a między systemami autonomicznymi. 
Pierwszym protokołem tego typu był nieużywany już protokół EGP. EGP? Jak to EGP? Czy nie powiedziałem dopiero co, że EGP jest rodziną protokołów? No i tutaj niespodzianka bo i tak, i nie. Ktoś ewidentnie nie wykazał się kreatywnością nadając protokołowi routingu EGP taką samą nazwę jak rodzina protokołów, do której należy… 

Ale nie ma się co tym faktem już przejmować, albowiem EGP już od dawna nie jest stosowany. Mamy natomiast innego przedstawiciela i jest nim BGP. W chwili tworzenia tego nagrania, czyli na początku marca 2019 roku BGP jest nadal jedynym używanem protokołem typu EGP. 

Powiedzieliśmy już sobie, że BGP jest używany do routingu między systemami autonomicznymi. Ale nie tylko – zdarzają się również firmy, które urosły do tego stopnia, że BGP jest dla nich jedynym rozwiązaniem w kwestii wyboru protokołu routingu. Co jednak z tymi systemami autonomicznymi?

Każdy system autonomiczny posiada już sam w sobie duże ilości podsieci, a BGP jako protokół musi wymieniać informacje o wszystkich podsieciach znajdujących się we wszystkich systemach autonomicznych. Mówimy więc tu o naprawdę ogromnych liczbach. Na chwilę obecną – czyli 4 marca 2019 – tablica routingu protokołu BGP zawiera ponad 768385 tras. Dzięki sumaryzacji routery stanowiące kręgosłup Internetu muszą natomiast przetwarzać “zaledwie” 420493 prefiksy. Możesz to sprawdzić TUTAJ.

Jak działa BGP

Zanim zagłębimy się w mechanikę BGP odpowiedzmy sobie na znacznie prostsze pytanie – jak to w zasadzie działa? Weźmy na przykład dwóch dostawców usług internetowych – czyli ISP. 

Każdy ISP ma potencjalnie tysiące klientów, którymi mogą być zarówno małe firmy jak i ogromne korporacje. Najwięksi dostawcy będą najpewniej mieli wykupione spore bloki publicznych adresów IP.

Ale jak to w zasadzie działa? Załóżmy, że mamy dwóch dostawców usług internetowych. Pierwszym z nich niech będzie Vodafone, drugim natomiast Telefonica. Każdy z takich dostawców będzie posiadał swój własny numer systemu autonomicznego.

Możemy to zresztą sprawdzić w internecie, przykładowo TUTAJ i TUTAJ. W naszym przykładzie Vodafone ma zatem przypisany AS 25135, a Telefonica AS 29180. Poza numerem systemu autonomicznego na tej stronie widzimy również, że każdy z dostawców jest w posiadaniu kilku bloków publicznych adresów IP. Bloki te każdy z nich musiał wykupić z rejestru adresów IP. W przypadku Europy zajmuje się tym organizacja RIPE NCC. Wróćmy do naszego przykładu, niech Vodafone będzie w nim w posiadaniu jednego bloku publicznych adresów IPv4: 148.252.128.0/23. Mamy tu więc do dyspozycji 512 adresów IP. Telefonica z kolei jest w posiadaniu bloku 82.132.128.0/22, ma zatem do dyspozycji 1024 adresy IP.

Następnie każdy z dostawców internetowych będzie dzielił swoje bloki IP na podsieci, które następnie zostaną wydzierżawione bądź sprzedane klientom tych ISP. Załóżmy zatem, że obaj ISP mają głównie klientów, którzy potrzebują tylko pojedynczego adresu publicznego, a sieci klientów będą w tej sytuacji komunikować się ze światem zewnętrznym wykorzystując NAT. Vodafone może zatem pociąć swój blok adresowy w następujący sposób: klient 1 otrzyma blok 148.252.128.0/30, klient 2 otrzyma 148.252.128.4/30, klient 3 148.252.128.8/30 itd.

Mamy więc tu do czynienia z adresacją typową dla łącz WANowych typu point-to point, gdzie każda z tych podsieci ma dwa użyteczne adresy IP – czyli w sam raz na zaadresowanie obu końcówek takiego łącza WAN.

BPG w praktyce

Przyjrzyjmy się teraz bliżej temu w jaki sposób może wyglądać proste połączenie danej firmy, nazwijmy ją Acme, z ISP. 
W tym przykładzie provider, niech będzie to Vodafone wystawia na brzegu swojej sieci router, który nazywamy provider edge. Router ten z kolei łączy się pojedynczym linkiem z routerem po stronie klienta, który nazywamy customer edge. Vodafone mógł w tej sytuacji wydzierżawić firmie Acme blok adresów IP 148.252.128.8/30. Mamy więc tu dwa użyteczne adresy IP i klient może zaadresować interfejs po swojej stronie jako .9 a dostawca po swojej stronie jako .10. Acme w swojej sieci będzie używać do routingu najpewniej jednego z protokołów IGP, np. OSPF, a routing będzie miał zaprojektowany tak, aby wszystko co musi wychodzić na zewnątrz do Internetu było kierowane do routera customer edge. Router ten z kolei będzie miał trasę domyślną wskazującą na gateway po stronie ISP z adresem .10. 

Co jednak z ruchem powrotnym? Cały Internet będzie musiał wiedzieć jak wrócić do adresu publicznego firmy Acme. I tu właśnie wchodzi w grę BGP.
Provider, do którego jest podłączone Acme będzie wiedział jak się do niego dostać, klient jest wszakże podłączony bezpośrednio do ISP. W tym scenariuszu Vodafone będzie musiał jednak poinformować innych providerów, z którymi ma połączenia o posiadanych przez siebie blokach adresowych po to, aby pozostali dostawcy wiedzieli, że adres publiczny firmy Acme znajduje się w sieci Vodafone. Dowiadujemy się zatem, że sieci ISP się ze sobą łączą. Punkty tego typu połączeń nazywamy IXP, czyli Internet Exchange Point. Dzięki temu, najwięksi dostawcy, nazwijmy ich ISP poziomu pierwszego, będą znali nawzajem swoje bloki adresowe.

Informacja ta rozchodzi się niejako kaskadowo, ponieważ duży ISP poziomu pierwszego, będzie miał do siebie podłączonych wielu mniejszych ISP poziomu drugiego. Ci z kolei będą mieli wykupione mniejsze bloki adresowe od ISP poziomu pierwszego. Hierarchia rozchodzi się następnie jeszcze głębiej, gdzie lokalni ISP poziomu trzeciego podłączają się do większych ISP poziomu drugiego i wykupują od nich bloki adresowe. Gdy w końcu przeciętny Kowalski chce podłączyć swoje gospodarstwo domowe do Internetu, to połączenie te najpewniej zostanie zrealizowane właśnie przez lokalnego dostawcę usług internetowych, czyli ISP poziomu trzeciego.

Kiedy stosować BGP

Widzimy zatem, że mamy tu do czynienia ze swego rodzaju hierarhiczną budową sieci. Sytuacja w sam raz na sumaryzację. Wiemy już zatem, że BGP z pewnością będzie używany przez ISP, ponieważ muszą oni znać pełną tablicę routingu dla Internetu. Natomiast czy BGP jest potrzebny np. w sieci takiej firmy jak Acme? Cóż, to zależy.

Jeżeli nasza firma ma takie połączenie jak w przedstawionym wcześniej przykładzie czyli pojedynczy link do swojego dostawcy usług internetowych to odpalenie BGP na routerze po stronie klienta nie ma sensu. Wystarczy w tym przypadku jedynie trasa domyślna do providera.

 

Drugą opcją którą mamy jest pojedynczy router po stronie klienta oraz dwa linki do dostawcy usług internetowych. Mamy wtedy do czynienia z dwoma routerami provider edge. Daje nam to redundancję w przypadku awarii jednego z linków. W tej sytuacji również nie ma większego sensu używanie BGP. Ze spokojem wystarczy trasa statyczna wskazująca na główny router po stronie ISP oraz pływająca trasa statyczna wskazująca na router backupowy w przypadku gdyby router primary provider Edge padł. 

Trzecią opcją którą mamy jest pojedynczy router po stronie klienta i 2 linki do tym razem dwóch różnych dostawców usług internetowych. Takie rozwiązanie daje nam nie tylko redundancję na poziomie łączą WANowego ale również na poziomie ISP i w tej sytuacji BGP może nam się już przydać ponieważ dzięki temu protokołowi będziemy wiedzieć który z dostawców usług internetowych w danej chwili przykładowo oferuje lepszą łączność do sieci docelowych z którymi chcemy się komunikować. BGP ma jeszcze kilka innych zalet w takim scenariuszu o czym porozmawiamy za chwilę. Dokończmy natomiast nasze rozważania odnośnie sposobu w jaki możemy podłączyć sieć firmową ze światem zewnętrznym. 

Czwartą opcją którą mamy jest posiadanie dwóch routerów po stronie klienta oraz dwóch routerów po stronie dostawcy usług internetowych. Mamy tu do czynienia z pojedynczym ISP. Daje nam to więc redundancję lokalną na poziomie urządzenia bo są dwa routery. Mamy także redundancję łącz WANowych i mamy redundancję po stronie ISP w postaci również dwóch routerów. Brakuje tutaj natomiast redundancji na poziomie samego ISP. Oznacza to że jeśli dostawca będzie miał jakieś problemy bądź awarię wewnątrz swojej sieci to będzie to również miało wpływ na łączność naszej firmy. 

Ostatnią, piątą opcją jest posiadanie dwóch routerów po stronie klienta połączonych dwoma niezależnymi linkami do dwóch różnych ISP. Takie rozwiązanie daje nam pełną redundancję zarówno lokalną po stronie klienta jak i redundancję na poziomie łącz WANowych. No i to co najważniejsze – mamy również redundancję po stronie dostawców usług internetowych. W przypadku problemów występujących u jednego ISP mamy możliwość przełączenia ruchu tak aby szedł przez sieć drugiego ISP. Generalnie rzecz biorąc zasada jest taka, że gdy sieć firmowa łączy się do więcej niż jednego ISP to użycie BGP do routingu na styku sieci jest jak najbardziej uzasadnione. W przypadku połączenia do pojedynczego dostawcy BGP może być również stosowany natomiast nie ma to rozwiązanie już tak wielu zalet.

BGP vs inne protokoły

Przyjrzyjmy się na koniec nieco bliżej charakterystyce BGP i porównajmy ten protokół do innych protokołów routingu z grupy IGP. 

Podstawową różnicą jest metryka. W przypadku protokołów takich jak RIP, EIGRP czy OSPF router zasadniczo rzecz biorąc podejmuje decyzję o routingu na podstawie dwóch parametrów – dystansu administracyjnego a następnie metryki będącej pojedynczą liczbą. Metryka jest obliczana różnymi metodami w zależności od protokołu – od prostego wyliczenia hop countu w przypadku RIP, aż do złożonej metryki protokołu OSPF obliczanej za pomocą algorytmu SPF. W przypadku BGP mamy do czynienia z bardzo złożoną metryką, składającą się nawet z 14 atrybutów. Każdy atrybut opisuje inny aspekt prefiksu którego dotyczy, a BGP aby wybrać najlepszą trasę przegląda całą listę atrybutów zaczynających od tych najwazniejszych znajdujących się na górze listy i idąc w dół.

Konstrukcja atrybutów jest taka, że przy domyślnych ustawieniach BGP niemal niemożliwe jest wybranie dwóch identycznie dobrych tras i zainstalowanie ich obu w tablicy routingu. Powoduje to, że w BGP zasadniczo rzecz biorąc nie mamy do czynienia z ECMP czyli Equal Cost Multi Path. W przypadku OSPF czy EIGRP nie jest to wcale aż tak rzadko spotykana sytuacja że dany prefiks ma do dyspozycji dwie równorzędne trasy. 

Wtedy do gry wkracza CEF, który odpowiednio load-balansuje pakiety, rzucając je między obiema trasami. Więcej o CEF przeczytasz w naszym artykule tutaj.

Co jednak z innymi różnicami oraz podobieństwami? W BGP nadal formujemy relacje sąsiedztwa. Protokoły lGP mogą robić to dynamicznie ale również i statycznie. W większości przypadków będziemy mieli oczywiście do czynienia z dynamicznym formowaniem się sąsiedztwa w protokołach takich jak OSPF czy EIGRP. BGP musi być natomiast zawsze skonfigurowane statycznie. Ponadto sąsiedztwo w protokołach IGP w większości przypadków musi być zestawione na tej samej podsieci. Wyjątek stanowią tutaj virtual linki w OSPF. W przypadku BGP natomiast nie musimy mieć wspólnego subnetu między sąsiadami i jest to wręcz bardzo rzadko spotykane. Sąsiedztwo zazwyczaj zestawiamy na interfejsach loopback.

Kolejnym podobieństwem jest fakt że nadal wymieniamy informacje o subnetach czy też prefiksach, wysyłamy maski podsieci i wskazujemy next-hop IP address. BGP nazywa to technicznie NLRI czyli Network layer reachability information i może przesyłać informacje o routingu dla różnych protokołów takich jak IPv4, ipv6 oraz również informacje o routingu multicastów. Na zakończenie wspomnijmy o kilku różnicach. RIP jest transportowany wewnątrz protokołu UDP podczas gdy OSPF i EIGRP są osobnymi protokołami enkapsulowanymi bezpośrednio wewnątrz pakietu IP. BGP natomiast opiera swoje działanie na TCP, a komunikacja odbywa się za pośrednictwem portu 179. 

Tak jak wcześniej również wspomniałem BGP używa bardzo złożonej metryki, nie przysyła zatem po prostu metryki czy też kosztu tak jak w przypadku IGP gdzie jest to pojedyncza liczba, a zamiast tego wysyła wszystkie tak zwane atrybuty ścieżki, z angielskiego path attributes. 
Sąsiedzi następnie używają te atrybuty do wykonania własnych obliczeń i wybrania własnych tras. Kolejna różnica została już wcześniej wspomniana – protokoły rodziny IGP zostały stworzone z myślą o szybkiej konwergencji, a BGP z myślą o skalowalności.

Ostatnim rozróżnikiem jest podział ze względu na rodzaj protokołu routingu. Tradycyjnie mamy więc do czynienia z protokołami rodzaju distance vector – przykładem jest tu RIP, protokołami z rodziny link-state takimi jak OSPF i IS-IS, protokołem hybrydowym EIGRP który łączy w sobie pewne charakterystyki protokołów distance-vector oraz link-state no i na koniec BGP który jest swego rodzaju odmianą rodzaju distance vector i nazywamy ten typ path-vector.

Porównanie protokołów routingu

Różnic między BGP, a pozostałymi protokołami routingu jest sporo. Warto te informacje zebrać w całość i ze sobą porównać. Przeczytasz o tym w naszym darmowym NSSletterze – mailingu dla sieciowców głodnych wiedzy.

Dołączając uzyskasz dostęp również do archiwum – tematykę tego artykułu rozszerzyliśmy w NSSletterze 19. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.


Komentarze: 10
Otrzymuj powiadomienia z tej dyskusji
Powiadom mnie o
guest

10 - Ilość komentarzy
Sortuj wg najlepszych
Sortuj wg najnowszych Sortuj wg najstarszych
Inline Feedbacks
View all comments
Janek
Janek
5 lat temu

Spoko 🙂 Czekam na wiecej technicznego materialu dot. bgp 🙂

kpc21
kpc21
5 lat temu

Coś o tym, jakie mogą być te atrybuty ścieżki, wykorzystywane w roli metryki, i jak to w praktyce wygląda.

Może jeszcze taka kwestia, że IX-y są o tyle fajne, że łączą w jednym miejscu wielu różnych ISP, ale możliwe, i chyba też spotykane, są też bezpośrednie linki pomiędzy różnymi ISP.

Jeśli się mylę, to mnie poprawcie, ale z tego, co kojarzę, do IX-ów wpinają się nie tylko firmy ISP, ale też duzi dostawcy treści, tacy jak np. YouTube czy Facebook.

loockas
loockas
5 lat temu
Odpowiedź do  kpc21

Tak w IXach często spotyka się dawców treści, bo to jest korzyść zarówno dla dawcy jak i biorcy. Dawca wstawia do IX\’a farmę serwerów które pełnią rolę cache. Dzięki temu biorca otrzymuje treści \”lokalnie\” nie płacąc za ten ruch przez globale. Tak działa np Google, Akamai, Facebook i ich nody można znaleźć w polskich IXach np. EPIX.

Co do ISP i łączenia ze sobą, to oczywiście popularna praktyka. Jednak ma ona za zadanie nie tyle wymianę własnych prefixów (bo to się dzieje przez IX), co tranzyt AS w celu zapewnienia sobie backupu.

Grzegorz
Grzegorz
5 lat temu

Mam pytanie odnosnie AS. Czy mamy rozumiec to pojecie jako na przyklad wybrany ISP (vodafone) i wszyscy jego klienci. Jezeli tak, to taki Vodafone musi posiadac wiecej niz 1 AS-ow. Poniewaz jeden AS moze posiadac (tylko) kilka tysiecy publicznych adresow, a przeciez taki provider jak vodafone ma znacznie wiecej klientow.
Drugie pytanie Jezeli ISP jest na przyklad Vodafone, to czy AS-ami na wszystkich trzech poziomach bedzie ten sam provider (vodafone) , czy moze jeszcze inni operatorzy ?

Grzegorz
Grzegorz
5 lat temu
Odpowiedź do  Damian Michalak

Pomogles 🙂 dzieki

Łukasz M
Łukasz M
5 lat temu

Merytorycznie wielkiego znaczenia to niema, ale EIGRP to protokół wektora dystansu a nie hybrydowy: https://en.wikipedia.org/wiki/Enhanced_Interior_Gateway_Routing_Protocol Dokładnie tak samo jest to opisane w Cert Guide do 300-101

BTW Fajny artykuł 🙂

Krzysztof
Krzysztof
3 lat temu

Mam zatem proste pytanie. Czy jeżeli mamy w swojej konfiguracji BGP z dwoma różnymi ISP aby zapewnić sobie redundancje na poziomie dostawców internetu, oraz mamy zewnętrzne urządzenie, które komunikuje się z naszą siecią z zewnątrz na nasz publiczny adres IP (nie nazwę DNS, tylko IP), to czy przy awarii u jednego ISP komunikacja z zewnętrznego urządzenia po publicznym adresie IP, będzie zachowana przez drugiego ISP (skoro posiadają dwie różne pule adresów IP)?