Atrybuty Ścieżki BGP
AS_PATH, NEXT_HOP, LOCAL_PREF i inne atrybuty decyzyjne BGP.
Wprowadzenie: Poza Prostą Metryką - Dyplomacja BGP
W świecie wewnętrznych protokołów routingu, takich jak OSPF, życie routera jest stosunkowo proste. Poznaje on różne ścieżki, oblicza dla każdej z nich pojedynczą wartość numeryczną – metrykę lub koszt – i wybiera ścieżkę o najniższej wartości. Wygrywa najszybsza trasa. Jest to idealne rozwiązanie dla sieci pod jedną kontrolą administracyjną, gdzie szybkość i wydajność są priorytetami.
Jednak globalny Internet to federacja tysięcy niezależnych sieci, czyli . Tutaj "najlepsza" ścieżka rzadko kiedy jest najszybsza. Decyzje routingowe opierają się nie na jednej liczbie, ale na złożonej sieci relacji biznesowych, umów finansowych i polityk technicznych. Border Gateway Protocol (BGP) to protokół, który zarządza tymi relacjami. Aby podejmować tak złożone decyzje, BGP potrzebuje czegoś więcej niż tylko jednej metryki. Potrzebuje bogatego zestawu informacji o każdej trasie.
W tym miejscu do gry wchodzą atrybuty BGP. Atrybuty to fragmenty informacji, czyli właściwości, dołączone do ogłoszenia trasy BGP, które opisują jej charakterystykę. Są one językiem BGP, pozwalającym administratorom sieci na wdrażanie polityk i wpływanie na przepływ ruchu do i z ich sieci. Zrozumienie tych atrybutów jest kluczem do zrozumienia samego BGP.
Cztery Kategorie Atrybutów BGP
Atrybuty BGP nie są sobie równe. Są klasyfikowane do czterech kategorii w oparciu o to, jak są rozpoznawane i czy muszą być przekazywane między routerami.
Dobrze znane, obowiązkowe (Well-known, Mandatory)
Te atrybuty muszą być rozpoznawane przez każdy router BGP i muszą być obecne w każdym komunikacie UPDATE. Są to fundamentalne, niepodważalne właściwości trasy.
Analogia: Adres docelowy na liście. Bez niego list jest bezużyteczny.
Przykłady: AS_PATH, ORIGIN, NEXT_HOP.
Dobrze znane, uznaniowe (Well-known, Discretionary)
Te atrybuty są również rozumiane przez wszystkie routery BGP, ale nie muszą być dołączane do każdej aktualizacji. Są opcjonalne, ale powszechnie rozpoznawane.
Analogia: Naklejka "Ostrożnie, szkło" na paczce. Poczta to rozumie, ale nie każda paczka jej potrzebuje.
Przykład: LOCAL_PREFERENCE.
Opcjonalne, przechodnie (Optional, Transitive)
Te atrybuty mogą nie być rozumiane przez każdy router. Jeśli router nie rozumie atrybutu przechodniego, jego obowiązkiem jest go zaakceptować, oznaczyć jako częściowy i przekazać bez zmian do swoich partnerów BGP.
Analogia: Specjalny kod śledzenia firmowy na paczce międzynarodowej. Poczta zagraniczna go nie rozumie, ale przekazuje dalej razem z paczką.
Przykłady: AGGREGATOR, COMMUNITY.
Opcjonalne, nieprzechodnie (Optional, Non-transitive)
Te atrybuty mogą nie być rozumiane przez każdy router. Jeśli router nie rozpozna atrybutu nieprzechodniego, powinien go po prostu zignorować i nie przekazywać go dalej do swoich partnerów.
Analogia: Ręczna notatka od jednego listonosza do drugiego. Jeśli następny listonosz jej nie odczyta, po prostu ją wyrzuca.
Przykład: MED (Multi-Exit Discriminator).
AS_PATH - Obowiązkowy Plan Podróży
AS_PATH jest najważniejszym z wszystkich atrybutów BGP. Jest to atrybut dobrze znany, obowiązkowy, który pełni dwie kluczowe funkcje: zapobieganie pętlom i podstawowy wybór ścieżki.
Funkcja 1: Zapobieganie Pętlom
AS_PATH to lista wszystkich Numerów Systemów Autonomicznych (ASN), przez które przeszło ogłoszenie trasy. Gdy router przekazuje aktualizację do partnera w innym AS, dołącza na początek listy swój własny numer ASN.
Tworzy to prosty, ale niezawodny mechanizm zapobiegania pętlom routingu na skalę globalną. Fundamentalna zasada BGP brzmi: router musi odrzucić każdą aktualizację BGP, którą otrzyma, jeśli jego własny numer ASN jest już obecny na liście AS_PATH. Gwarantuje to, że ogłoszenie trasy nigdy nie wróci w pętli do AS, który już opuściło.
Funkcja 2: Wybór Ścieżki
W przypadku braku innych konfiguracji polityki, długość AS_PATH służy jako podstawowa metryka dla BGP. Gdy router ma wiele ważnych ścieżek do tego samego celu, preferuje tę z najkrótszym AS_PATH.
Przykład: Najkrótsza Ścieżka Wygrywa
Router D musi wybrać ścieżkę do Sieci X.
- Otrzymuje trasę od sąsiada B z AS_PATH: (65002, 65001). Długość wynosi 2.
- Otrzymuje trasę od sąsiada C z AS_PATH: (65003, 65005, 65004, 65001). Długość wynosi 4.
Ponieważ ścieżka przez B ma krótszy AS_PATH (2 przeskoki w porównaniu do 4), Router D wybierze ją jako najlepszą ścieżkę i zainstaluje w swojej tablicy routingu.
NEXT_HOP - Bezpośredni Kierunek
NEXT_HOP jest kolejnym atrybutem dobrze znanym, obowiązkowym. Jego funkcja wydaje się prosta: jest to adres IP następnego routera, który powinien być użyty do przekazania pakietów dla ogłoszonego celu. Jednak jego zachowanie jest subtelnie różne w eBGP i iBGP, co jest kluczowym pojęciem do zrozumienia.
NEXT_HOP w eBGP (Zewnętrzny BGP)
Gdy router ogłasza trasę do partnera w innym AS (sąsiada eBGP), zasada jest prosta: router ogłaszający ustawia atrybut NEXT_HOP na swój własny adres IP na interfejsie łączącym obu partnerów. W zasadzie mówi: "Aby dotrzeć do tej sieci, wyślij swoje pakiety do mnie, pod ten konkretny adres".
NEXT_HOP w iBGP (Wewnętrzny BGP)
Tu sprawy się komplikują. Gdy trasa poznana od sąsiada eBGP jest następnie ogłaszana do partnera iBGP (routera w tym samym AS), atrybut NEXT_HOP domyślnie pozostaje niezmieniony.
Przykład: Problem Nieosiągalnego Następnego Przeskoku
- Router ISP (pod adresem IP ) wysyła aktualizację eBGP do routera brzegowego Twojej firmy, Edge_Router (pod adresem IP ), dla sieci . Atrybut NEXT_HOP w tej aktualizacji to .
- Edge_Router ma teraz ważną trasę. Przekazuje te informacje do swojego partnera iBGP, Internal_Router.
- Domyślnie, Edge_Router nie zmienia NEXT_HOP. Więc Internal_Router otrzymuje aktualizację dla z atrybutem NEXT_HOP wciąż ustawionym na .
- Problem: Internal_Router jest wewnątrz sieci firmowej. Nie ma bezpośredniego połączenia z ISP i prawdopodobnie nie ma w swojej tablicy routingu IGP (np. OSPF) trasy, która mówi mu, jak dotrzeć do adresu . NEXT_HOP jest nieosiągalny, a zatem cała trasa jest bezużyteczna.
Rozwiązanie: Next-Hop-Self
Standardowym rozwiązaniem tego problemu jest skonfigurowanie Edge_Routera tak, aby zmieniał atrybut NEXT_HOP dla tras ogłaszanych do partnerów iBGP. Polecenie, znane jako next-hop-self, mówi routerowi: "Kiedy ogłaszasz tę trasę do wewnętrznego partnera, ustaw adres NEXT_HOP na swój własny, wewnętrzny adres IP." W ten sposób routery wewnętrzne otrzymują NEXT_HOP, do którego wiedzą, jak dotrzeć przez sieć wewnętrzną.
Inne Kluczowe Atrybuty w Wyborze Ścieżki
Oprócz AS_PATH i NEXT_HOP, kilka innych atrybutów odgrywa kluczową rolę w zaawansowanym procesie wyboru ścieżki BGP. Są to podstawowe narzędzia używane przez administratorów sieci do wdrażania polityk routingu.
ORIGIN (Dobrze znany, obowiązkowy)
Atrybut ORIGIN to prosta, ale ważna informacja wskazująca, jak trasa została pierwotnie wprowadzona do BGP. Służy jako wczesny rozstrzygacz w wyborze ścieżki. Istnieją trzy kody pochodzenia, wymienione w kolejności preferencji (najniższy jest najlepszy):
- IGP (Kod 0): Trasa powstała z polecenia `network` w konfiguracji BGP na routerze w ASie źródłowym. Jest to uważane za najbardziej wiarygodne pochodzenie.
- EGP (Kod 1): Trasa została poznana przez historyczny protokół Exterior Gateway Protocol, poprzednika BGP. Dziś praktycznie niespotykany.
- INCOMPLETE (Kod 2): Trasa została wprowadzona do BGP przez . Jest to uważane za najmniej wiarygodne pochodzenie, ponieważ BGP nie ma informacji o historii trasy przed jej redystrybucją.
Router zawsze będzie preferował ścieżkę z niższym kodem ORIGIN.
LOCAL_PREF (Dobrze znany, uznaniowy)
LOCAL_PREFERENCE to podstawowe narzędzie do wpływania na przepływ ruchu wychodzącego w ramach jednego AS. Jest to wartość numeryczna, która jest wymieniana tylko między partnerami iBGP; nigdy nie jest wysyłana do zewnętrznych sąsiadów.
Zasada jest prosta: wyższa wartość LOCAL_PREF jest bardziej preferowana. Wartość domyślna to 100. Ustawiając wyższą preferencję lokalną dla tras poznanych od preferowanego ISP, administrator może zapewnić, że wszystkie routery w jego AS wybiorą tego ISP jako główny punkt wyjścia.
MED (Opcjonalny, nieprzechodni)
Atrybut Multi-Exit Discriminator (MED) to podstawowe narzędzie do wpływania na ruch przychodzący z sąsiedniego AS. Działa jak sugestia dla sąsiedniego AS, który z punktów wejściowych do Twojej sieci powinien on preferować.
Zasada jest odwrotna do LOCAL_PREF: niższa wartość MED jest bardziej preferowana. Jeśli AS ma dwa łącza do tego samego dostawcy, może ogłaszać swoje trasy z niższym MED na łączu głównym i wyższym MED na łączu zapasowym. Informuje to dostawcę: "Proszę, wysyłaj do mnie ruch tą tańszą ścieżką". Jednakże, jako atrybut opcjonalny, odbierający AS nie ma obowiązku honorowania MED.