Jak działa BGP - wybór ścieżki w Internecie?
Co to jest BGP?
Protokół BGP (Border Gateway Protocol) to usługa pocztowa Internetu. Gdy ktoś wrzuca list do skrzynki pocztowej, poczta przetwarza tę przesyłkę i wybiera szybką, wydajną trasę, aby dostarczyć list do odbiorcy. Podobnie, gdy ktoś przesyła dane przez Internet, BGP jest odpowiedzialny za sprawdzenie wszystkich dostępnych ścieżek, którymi dane mogą się przemieszczać, i wybranie najlepszej trasy, co zwykle oznacza przeskakiwanie między systemami autonomicznymi.
BGP jest protokołem, który umożliwia funkcjonowanie Internetu poprzez umożliwienie routingu danych. Gdy użytkownik w Singapurze ładuje stronę internetową, której serwer źródłowy znajduje się w Argentynie, BGP jest protokołem, który umożliwia szybką i sprawną komunikację.
Co to jest system autonomiczny?
Internet jest siecią sieci. Jest on podzielony na setki tysięcy mniejszych sieci, zwanych systemami autonomicznymi (AS). Każda z tych sieci jest w istocie dużą pulą routerów zarządzanych przez jedną organizację.
Topografia Internetu
Jeśli nadal będziemy myśleć o BGP jak o poczcie w Internecie, to AS-y są jak poszczególne oddziały poczty. Miasto może mieć setki skrzynek pocztowych, ale poczta w tych skrzynkach musi przejść przez lokalny oddział poczty, zanim zostanie skierowana do innego miejsca przeznaczenia. Routery wewnętrzne w ramach sieci AS są jak skrzynki pocztowe. Przekazują one swoje transmisje wychodzące do systemu zewnętrznego, który następnie używa routingu BGP, aby dostarczyć te transmisje do miejsc przeznaczenia.
BGP w uproszczeniu
Powyższy diagram ilustruje uproszczoną wersję BGP. W tej wersji w Internecie jest tylko sześć AS-ów. Jeśli AS1 chce skierować pakiet do AS3, ma dwie różne możliwości:
Skok do AS2, a następnie do AS3:
AS2 → AS3
Lub przeskok do AS6, następnie do AS5, AS4, a na końcu do AS3:
AS6 → AS5 → AS4 → AS3
W tym uproszczonym modelu decyzja wydaje się oczywista. Trasa AS2 wymaga mniejszej liczby węzłów niż trasa AS6, a zatem jest najszybszą i najbardziej wydajną trasą. Wyobraźmy sobie, że istnieją setki tysięcy AS-ów, a liczba hopów jest tylko jednym z elementów złożonego algorytmu wyboru trasy. Taka jest rzeczywistość routingu BGP w Internecie.
Struktura Internetu ciągle się zmienia, pojawiają się nowe systemy, a istniejące stają się niedostępne. Z tego powodu każdy system operacyjny musi być na bieżąco informowany o nowych trasach oraz o trasach przestarzałych. Odbywa się to za pomocą sesji peeringowych, w ramach których każdy system AS łączy się z sąsiednimi systemami AS za pomocą połączenia TCP/IP w celu wymiany informacji o routingu. Korzystając z tych informacji, każdy system operacyjny jest w stanie prawidłowo kierować wychodzące transmisje danych pochodzące z wewnątrz.
W tym miejscu część naszej analogii się rozpada. W przeciwieństwie do oddziałów poczty, systemy autonomiczne nie należą do tej samej organizacji. W rzeczywistości często należą one do konkurujących ze sobą firm. Z tego powodu trasy BGP czasami uwzględniają względy biznesowe. Systemy autonomiczne często pobierają od siebie opłaty za przesyłanie ruchu przez swoje sieci, a cena dostępu może mieć wpływ na to, która trasa zostanie ostatecznie wybrana.
Kto zarządza systemami autonomicznymi BGP?
Systemy AS należą zazwyczaj do dostawców usług internetowych (ISP) lub innych dużych organizacji, takich jak firmy technologiczne, uniwersytety, agencje rządowe i instytucje naukowe. Każdy system autonomiczny, który chce wymieniać informacje o routingu, musi mieć zarejestrowany numer systemu autonomicznego (ASN). Organizacja Internet Assigned Numbers Authority (IANA) przydziela numery ASN regionalnym rejestrom internetowym (RIR), które następnie przydzielają je dostawcom usług internetowych i sieciom. ASN to 16-bitowe liczby z zakresu od jednego do 65534 oraz 32-bitowe liczby z zakresu od 131072 do 4294967294. W 2018 roku na całym świecie używanych jest około 64 000 numerów ASN. Te numery ASN są wymagane tylko w przypadku zewnętrznego BGP.
Jaka jest różnica między zewnętrznym BGP a wewnętrznym BGP?
Trasy są wymieniane, a ruch jest przesyłany przez Internet przy użyciu zewnętrznego BGP (eBGP). Systemy autonomiczne mogą również używać wewnętrznej wersji BGP do wyznaczania tras w swoich sieciach wewnętrznych, zwanej wewnętrznym BGP (iBGP). Należy zaznaczyć, że korzystanie z wewnętrznego BGP NIE jest warunkiem korzystania z zewnętrznego BGP. Systemy autonomiczne mogą wybrać jeden z wielu protokołów wewnętrznych, aby połączyć routery w swojej sieci wewnętrznej.
Zewnętrzne BGP jest jak międzynarodowa żegluga. Istnieją pewne standardy i wytyczne, których należy przestrzegać, wysyłając przesyłkę pocztową na skalę międzynarodową. Gdy taka przesyłka dotrze do kraju docelowego, musi przejść przez lokalne służby pocztowe tego kraju, aby dotrzeć do miejsca docelowego. Każdy kraj ma swoją własną wewnętrzną służbę pocztową, która niekoniecznie musi stosować się do tych samych wytycznych, co służby w innych krajach. Podobnie każdy system autonomiczny może mieć swój własny wewnętrzny protokół routingu służący do routingu danych w obrębie własnej sieci.
Błędy BGP i sposoby ich usuwania
W 2004 r. turecki dostawca usług internetowych o nazwie TTNet przypadkowo rozesłał do swoich sąsiadów nieprawidłowe trasy BGP. Trasy te twierdziły, że TTNet jest najlepszym miejscem docelowym dla całego ruchu w Internecie. Ponieważ trasy te rozprzestrzeniały się coraz dalej i dalej do kolejnych systemów autonomicznych, doszło do ogromnych zakłóceń, które doprowadziły do jednodniowego kryzysu, w którym wiele osób na całym świecie nie miało dostępu do części lub całości Internetu.
Podobnie w 2008 r. pakistański dostawca usług internetowych próbował wykorzystać trasę BGP do zablokowania pakistańskim użytkownikom dostępu do serwisu YouTube. Następnie dostawca ten przypadkowo rozgłosił tę trasę w sąsiednich AS-ach i trasa ta szybko rozprzestrzeniła się w sieci BGP Internetu. Trasa ta spowodowała, że użytkownicy próbujący uzyskać dostęp do serwisu YouTube znaleźli się w ślepym zaułku, co spowodowało, że serwis YouTube był niedostępny przez kilka godzin.
Są to przykłady praktyki zwanej BGP hijacking, która nie zawsze zdarza się przypadkowo. W kwietniu 2018 r. atakujący celowo utworzyli złe trasy BGP, aby przekierować ruch, który był przeznaczony dla usługi DNS firmy Amazon. Napastnicy byli w stanie ukraść kryptowalutę o wartości ponad 100 000 dolarów, przekierowując ruch do siebie.
Incydenty takie jak ten mogą się zdarzyć, ponieważ funkcja dzielenia się trasami w BGP opiera się na zaufaniu, a systemy autonomiczne domyślnie ufają trasom, które są im udostępniane. Gdy współdziałający użytkownicy podają nieprawidłowe informacje o trasach (celowo lub nie), ruch trafia tam, gdzie nie powinien, co może mieć szkodliwe skutki.
Na szczęście poczyniono już pewne postępy w zabezpieczaniu BGP. Przede wszystkim w 2008 r. wprowadzono ramy bezpieczeństwa dla routingu o nazwie Infrastruktura klucza publicznego zasobów (RPKI). RPKI wykorzystuje kryptograficznie podpisane rekordy zwane Route Origin Authorization (ROAs) do sprawdzania, który operator sieci ma prawo ogłaszać adresy IP organizacji za pomocą BGP. Zapewnia to, że tylko autoryzowane strony rozgłaszają prefiksy danej organizacji.
Jednak samo istnienie RPKI nie jest wystarczające. Jeśli duże sieci nie wdrożą RPKI, mogą rozprzestrzeniać ataki typu hijacking na dużą skalę. Obecnie ponad 50% największych dostawców Internetu w pewnym stopniu wspiera RPKI, ale do pełnego zabezpieczenia BGP potrzebna jest większa większość. Operatorzy sieci mogą chronić swoje sieci, wdrażając RPKI i korzystając z technologii ostrzegania sieciowego, takiej jak Cloudflare Route Leak Detection. Funkcja ta pomaga zapobiegać atakom typu hijacking BGP, informując klientów, gdy nieautoryzowane strony reklamują swoje prefiksy.