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. 

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łącz