Wprowadzenie do BGP

Featured Video Play Icon

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. 

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.

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 o 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 kazdy 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ępujacy 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.

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łasnie 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łaczenia 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. Dzieki 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łaczonych 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łaczają 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łasnie przez lokalnego dostawcę usług internetowych, czyli ISP poziomu trzeciego.

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.

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 na stronie nastykusieci.pl/cef

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 OSPD 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 podobnie jak RIP 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 cector oraz link-state no i na koniec BGP który jest swego rodzaju odmianą rodzaju distance vector i nazywamy ten typ path vektor. Wiele z tych terminów wyjaśni się w następnej części materiału.

To by było na tyle tytułem wprowadzenia do BGP. Do zobaczenia w kolejnym materiale, który ukaże się już wkrótce.

O czym byś chciał/a usłyszeć w kolejnym materiale o BGP?


🗳 Jak przydatna była ta publikacja?

Średnia ocena / 5. Ilość głosów:

Dziękuję za ocenę! Zapraszam Cię do obserwowania NSS w mediach społecznościowych!

Przykro mi, że ta publikacja okazała się być dla Ciebie nieprzydatna!

Uwaga: Twój głos będzie liczony tylko jeśli udzielisz feedbacku używając formularza poniżej.

author avatar
Damian Michalak

Network Consultant, Twórca Na Styku Sieci

Twój adres email nie zostanie opublikowany. Wszystkie pola są wymagane

Subscribe
Powiadom o
guest
11 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Łukasz M

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

Grzegorz

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 ?

Damian Michalak

Mniejszy ISP będzie raczej pojedynczym ASem. Większy ISP pokroju Vodafone będzie już posiadał więcej ASów, a każdy z ASów własną pulę publicznych bloków IP – wpływ na to ma zarówno wspomniana przez Ciebie duża ilość klientów jak i również struktura organizacyjna ISP. Taki Vodafone posiada np wiele spółek córek odpowiadających za poszczególne państwa/regiony i każda taka spółka będzie zazwyczaj osobnym ASem. Mniejsi klienci podłaczający się do ISP nie będą w większości przypadków odpalać BGP po swojej stronie więc ich sieć będzie niejako częścią ASa provider’a. Z kolei większe firmy bardzo często będą mieć przydzielone własne numery AS i będą posiadać własne bloki publicznych adresów IP. W takiej sytuacji tacy klienci będą również używać BGP w swojej sieci i pozwoli im to na wiele połączeń na zewnątrz – zarówno poprzez pojedynczego ISP jak i wiele. W takim scenariuszu ASy należące do ISP, do których się podłączy wspomniana firma będą po prostu ASami tranzytowanymi.

Co do drugiego pytania to ta trzypoziomowość providerów nie jest wcale taka arbitralna. Taki był początkowy model połączeń między ISP – dzisiaj sprawa jest o wiele bardziej skomplikowana ponieważ z każdym rokiem mamy coraz więcej IXP (węzłów, w których następuje peering między ISP). Powoduje to, że nawet mali lokalni providerzy są w stanie podłączać się do ISP poziomu pierwszego i uzyskiwać bardzo dobre połączenie do backbone’u internetu. Dobrze to obrazuje prezentacja podrzucona przez Kacpra (@kpc21:disqus) w komentarzu powyżej.

Mam nadzieję, że pomogłem 🙂

Grzegorz

Pomogles 🙂 dzieki

kpc21

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.

Podrzucam ciekawą prezentację na temat tego, jak to też wygląda tak trochę od strony biznesowej – prezentacja stworzona przez bodaj największy IX w Europie i na świecie: https://www.easypaste.org/file/Yha0rKl9/tm-gastvortrag-decix.pdf?lang=pl

Damian Michalak

Fantastyczna prezentacja ❤️ Dzięki 🙂 Niektóre slajdy rewelacyjnie obrazują tematykę… dla mnie ciekawe było też wykorzystanie sprzętu od ALU 🙂

loockas

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.

Kiki

Można prosić o reupload?

Damian

Podaję link dalej w imieniu Kpc21 🙂
https://gofile.io/?c=GB5Xi8

Janek

Spoko 🙂 Czekam na wiecej technicznego materialu dot. bgp 🙂

Damian Michalak

Będzie!

Top