Routing

Atrybuty Ścieżki BGP

AS_PATH, NEXT_HOP, LOCAL_PREF i inne atrybuty decyzyjne BGP.

Wprowadzenie: atrybuty BGP w wyborze trasy

W protokołach wewnętrznych, takich jak OSPF, router porównuje ścieżki za pomocą metryki lub kosztu i wybiera trasę zgodnie z zasadami danego protokołu. W sieci pod jedną kontrolą administracyjną wspólna topologia i kryteria wyboru pozwalają stosować te zasady.

Jednak globalny Internet to federacja tysięcy niezależnych sieci, czyli . W tym środowisku preferowana ścieżka nie musi być najszybsza. Decyzje routingowe uwzględniają relacje między operatorami, umowy oraz polityki techniczne. Border Gateway Protocol (BGP) opisuje te decyzje za pomocą atrybutów dołączonych do każdej trasy.

Atrybuty BGP to fragmenty informacji, czyli właściwości, dołączone do ogłoszenia trasy BGP, które opisują jej charakterystykę. Umożliwiają administratorom wdrażanie polityk i wpływanie na przepływ ruchu do i z ich sieci. Znajomość tych atrybutów jest potrzebna do interpretacji decyzji podejmowanych przez 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 zawierającym NLRI. Opisują wymagane elementy informacji o trasie.

W tej kategorii znajdują się AS_PATH, ORIGIN i NEXT_HOP, których odbiorca potrzebuje do interpretacji ogłoszenia.

Przykłady: AS_PATH, ORIGIN, NEXT_HOP.

Dobrze znane, uznaniowe (Well-known, Discretionary)

Te atrybuty są rozumiane przez wszystkie routery BGP, lecz ich przekazywanie wynika z rodzaju sesji i funkcji atrybutu. LOCAL_PREF jest dołączany do każdego UPDATE wysyłanego do partnera iBGP, a w komunikatach do partnerów eBGP pojawia się tylko w konfederacjach.

BGP używa LOCAL_PREF do przekazywania stopnia preferencji dla trasy w obrębie AS.

Przykład: LOCAL_PREF.

Opcjonalne, przechodnie (Optional, Transitive)

Te atrybuty mogą nie być rozumiane przez każdy router. Jeśli router nie rozumie atrybutu przechodniego, powinien go zaakceptować, ustawić flagę Partial i przekazać atrybut dalej razem z trasą.

Nieznany atrybut przechodni zachowuje się w kolejnych UPDATE, a flaga Partial informuje o braku pełnego rozpoznania.

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.

Nieznany atrybut nieprzechodni jest pomijany i nie trafia do kolejnych UPDATE.

Przykład: MED (Multi-Exit Discriminator).

AS_PATH: zapobieganie pętlom i wybór ścieżki

AS_PATH jest atrybutem dobrze znanym i obowiązkowym. Identyfikuje systemy autonomiczne, przez które przeszła informacja, ogranicza pętle na poziomie AS i uczestniczy w wyborze ś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.

Umożliwia to wykrywanie pętli na poziomie systemów autonomicznych. Router wyłącza trasę z procesu wyboru, jeśli jego własny ASN występuje już w AS_PATH. Ogłoszenie nie może wtedy zostać wybrane przez ten AS.

Funkcja 2: Wybór Ścieżki

Po zastosowaniu lokalnej polityki i przy porównywalnym stopniu preferencji długość AS_PATH jest jednym z kryteriów wyboru. Gdy router ma wiele rozwiązywalnych ścieżek do tego samego celu, preferuje tę z najkrótszym AS_PATH.

To porównanie dotyczy tras, których NEXT_HOP można rozwiązać w tablicy routingu. Jeżeli adres następnego skoku jest nieosiągalny, trasa odpada przed dalszym porównaniem. Długość ścieżki zależy także od segmentów: AS_SET liczy się jako jeden element, a AS_SEQUENCE uwzględnia zawarte w nim numery AS. Ostateczny wybór wynika z pełnego procesu decyzyjnego i konfiguracji lokalnej.

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 numery AS w porównaniu do 4), Router D wybierze ją jako najlepszą ścieżkę i zainstaluje w swojej tablicy routingu.

NEXT_HOP: adres następnego skoku

NEXT_HOP jest atrybutem dobrze znanym i obowiązkowym. Zawiera adres IP routera używanego jako następny skok dla prefiksów z UPDATE. Sposób ustawienia tego pola zależy od sesji eBGP lub iBGP.

NEXT_HOP w eBGP (Zewnętrzny BGP)

Przy typowej, bezpośredniej sesji eBGP router ogłaszający ustawia atrybut NEXT_HOP na własny adres IP interfejsu używanego do połączenia z sąsiadem. W określonych warunkach dopuszczony jest także adres sąsiedniego routera, czyli third-party NEXT_HOP.

NEXT_HOP w iBGP (Wewnętrzny BGP)

Gdy trasa poznana od sąsiada eBGP jest następnie ogłaszana do partnera iBGP w tym samym AS, atrybut NEXT_HOP domyślnie pozostaje niezmieniony. Router może zmienić tę wartość po odpowiedniej konfiguracji.

Przykład: Problem Nieosiągalnego Następnego Przeskoku

  1. Router ISP (pod adresem IP 203.0.113.1203.0.113.1) wysyła aktualizację eBGP do routera brzegowego Twojej firmy, Edge_Router (pod adresem IP 203.0.113.2203.0.113.2), dla sieci 8.8.8.0/248.8.8.0/24. Atrybut NEXT_HOP w tej aktualizacji to 203.0.113.1203.0.113.1.
  2. Edge_Router ma teraz ważną trasę. Przekazuje te informacje do swojego partnera iBGP, Internal_Router.
  3. Domyślnie, Edge_Router nie zmienia NEXT_HOP. Więc Internal_Router otrzymuje aktualizację dla 8.8.8.0/248.8.8.0/24 z atrybutem NEXT_HOP wciąż ustawionym na 203.0.113.1203.0.113.1.
  4. Problem: Internal_Router jest wewnątrz sieci firmowej. Nie ma bezpośredniego połączenia z ISP. Jeżeli jego tablica routingu IGP, na przykład OSPF, nie zawiera trasy do adresu 203.0.113.1203.0.113.1, NEXT_HOP jest nierozwiązywalny i trasa nie może zostać użyta.
Rozwiązanie: Next-Hop-Self

Typowym rozwiązaniem jest skonfigurowanie Edge_Routera tak, aby zmieniał atrybut NEXT_HOP dla tras ogłaszanych do partnerów iBGP. Ustawienie next-hop-self powoduje ogłaszanie własnego, wewnętrznego adresu jako NEXT_HOP. Routery wewnętrzne mogą wtedy rozwiązać ten adres przez IGP.

Pozostałe atrybuty wyboru ścieżki

Oprócz AS_PATH i NEXT_HOP inne atrybuty uczestniczą w procesie wyboru ścieżki BGP. Administratorzy używają ich do określania polityki routingu.

ORIGIN (Dobrze znany, obowiązkowy)

Atrybut ORIGIN wskazuje, w jaki sposób informacja o trasie została wprowadzona do BGP. Jest jednym z kryteriów rozstrzygających po wcześniejszych preferencjach. Istnieją trzy kody pochodzenia, wymienione w kolejności preferencji (najniższy ma pierwszeństwo):

  • IGP (Kod 0): Informacja o prefiksie jest wewnętrzna dla źródłowego AS, na przykład została wskazana poleceniem network w konfiguracji BGP. Ten kod ma pierwszeństwo w porównaniu ORIGIN.
  • 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 . Ten kod ma najniższe pierwszeństwo w porównaniu ORIGIN, ponieważ BGP nie określa sposobu uzyskania trasy przed redystrybucją.

Przy pozostałych porównywanych cechach bez rozstrzygnięcia router preferuje ścieżkę z niższym kodem ORIGIN.

LOCAL_PREF (Dobrze znany, uznaniowy)

LOCAL_PREF wpływa na wybór wyjścia dla ruchu wychodzącego w ramach jednego AS. Jest to wartość numeryczna wysyłana do partnerów iBGP. W komunikatach do zewnętrznych sąsiadów nie jest dołączana poza konfederacjami.

Wyższa wartość LOCAL_PREF ma pierwszeństwo. Wartość domyślna zależy od implementacji, a często wynosi 100. Ustawienie wyższej preferencji dla tras od wybranego ISP kieruje wybór routerów w AS do tego punktu wyjścia.

MED (Opcjonalny, nieprzechodni)

Atrybut Multi-Exit Discriminator (MED) może wpływać na ruch przychodzący z sąsiedniego AS. Służy do porównania kilku punktów wejścia do tego samego sąsiedniego AS, zgodnie z jego polityką.

Przy pozostałych równych warunkach niższa wartość MED ma pierwszeństwo. Jeśli AS ma dwa łącza do tego samego dostawcy, może ogłaszać trasy z niższym MED na łączu głównym i wyższym MED na zapasowym. MED otrzymany od jednego sąsiedniego AS nie powinien być przekazywany innym AS, a jego zastosowanie zależy od polityki odbiorcy.

Powiązane artykuły