Czym jest ścieżka AS (AS_PATH)?
AS_PATH to atrybut BGP z listą numerów systemów autonomicznych, przez które przeszedł prefiks. Wykrywa pętle, wpływa na wybór trasy i umożliwia prepending.
Ostatnia aktualizacja:
Ścieżka AS (AS_PATH) to obowiązkowy, dobrze znany atrybut BGP. Zawiera uporządkowaną listę numerów systemów autonomicznych, przez które przeszło ogłoszenie danego prefiksu w drodze od źródła do odbiorcy. Za każdym razem, gdy trasa opuszcza jeden AS i wchodzi do następnego przez sesję eBGP, router dopisuje na początku listy własny numer AS. AS_PATH jest więc zapisem przebytej drogi, mechanizmem wykrywania pętli oraz jednym z kryteriów wyboru najlepszej trasy. Atrybut ten zdefiniowano w RFC 4271.
Jak budowana jest ścieżka AS
Gdy AS ogłasza własny prefiks, ścieżka AS jest pusta lub zawiera wyłącznie jego numer. Przy każdym przejściu przez granicę eBGP router dokłada swój numer AS z lewej strony listy, więc najbliższy sąsiad widnieje na początku, a źródło prefiksu na końcu. W sesjach iBGP atrybut nie jest modyfikowany. AS_PATH składa się z segmentów dwóch typów. AS_SEQUENCE to uporządkowana lista odzwierciedlająca realny przebieg trasy, a AS_SET to nieuporządkowany zbiór używany przy agregacji prefiksów. Współczesne sieci posługują się czterobajtowymi numerami AS zgodnie z RFC 6793.
Zapobieganie pętlom
AS_PATH jest podstawowym mechanizmem zapobiegania pętlom w eBGP. Gdy router otrzymuje ogłoszenie, w którym jego własny numer AS znajduje się już w ścieżce, odrzuca taką trasę, ponieważ jej przyjęcie oznaczałoby zapętlenie ruchu. To podejście oparte na wektorze ścieżki działa skuteczniej niż liczniki przeskoków znane z protokołów typu dystans-wektor.
- Router odrzuca trasę, jeśli widzi w AS_PATH swój własny numer AS.
- Mechanizm działa między systemami autonomicznymi (eBGP), a nie wewnątrz jednego AS.
- W iBGP pętlom zapobiega się inaczej: zasadą nieprzekazywania tras nauczonych przez iBGP innym sąsiadom iBGP oraz route reflektorami z atrybutami ORIGINATOR_ID i CLUSTER_LIST.
- Opcja allowas-in celowo wyłącza to zabezpieczenie i należy jej używać z rozwagą, na przykład w sieciach MPLS VPN typu hub-and-spoke.
Długość ścieżki w wyborze najlepszej trasy
Gdy router pozna kilka tras do tego samego prefiksu, BGP wybiera jedną najlepszą według ustalonej kolejności atrybutów. Po lokalnym atrybucie weight i atrybucie LOCAL_PREF kolejnym kryterium jest długość ścieżki AS: krótsza ścieżka, czyli mniejsza liczba przebytych systemów autonomicznych, jest preferowana. Dopiero gdy długości są równe, decyzję rozstrzygają kolejne atrybuty, takie jak typ ORIGIN, MED czy preferencja eBGP nad iBGP. Długość AS_PATH jest heurystyką topologiczną, a nie miarą realnego opóźnienia czy przepustowości.
Prepending ścieżki AS w praktyce
Prepending polega na celowym, kilkukrotnym dopisaniu własnego numeru AS do ścieżki, aby sztucznie ją wydłużyć i zniechęcić sąsiadów do wyboru danej trasy. To najprostsze narzędzie inżynierii ruchu przychodzącego. Ogłaszając ten sam prefiks dwóm dostawcom, można na jednym łączu dodać kilka kopii swojego numeru AS, tak by ruch wchodził głównie tym drugim, krótszym. Prepending działa jednak tylko jako sugestia, ponieważ LOCAL_PREF u odległego operatora ma wyższy priorytet niż długość ścieżki, a nadmierne wydłużanie bywa ignorowane lub filtrowane. Bardziej precyzyjną kontrolę zapewniają społeczności BGP (BGP communities).
AS_PATH w sieci AS202520 SkyPass
W SkyPass (AS202520) AS_PATH jest na co dzień narzędziem sterowania ruchem dla klientów peeringowych i tranzytowych. Trasy ogłaszane przez nas niosą numer AS202520 na początku ścieżki, a klienci multihomed mogą używać prependingu lub naszych społeczności BGP, aby równoważyć ruch między PoP-ami w Warszawie i Wrocławiu oraz peeringiem na polskich punktach wymiany w THINX, w TPIX, we WRIX, w POZIX i w 1-IX. Aktualne ścieżki AS dla dowolnego prefiksu można sprawdzić w naszym narzędziu looking glass, co ułatwia weryfikację polityki routingu i diagnostykę.
Najczęstsze pytania
Czym różni się AS_PATH od długości ścieżki AS?
AS_PATH to cały atrybut z listą numerów AS, przez które przeszedł prefiks. Długość ścieżki AS to po prostu liczba systemów autonomicznych w tej liście, używana jako kryterium wyboru najlepszej trasy po atrybutach weight i LOCAL_PREF.
Czy krótsza ścieżka AS zawsze oznacza szybsze połączenie?
Nie. Długość AS_PATH liczy przeskoki między systemami autonomicznymi, a nie realne opóźnienie czy przepustowość. Krótsza ścieżka topologicznie może mieć większe opóźnienie niż dłuższa, lepiej zwymiarowana trasa.
Ile razy warto powtórzyć prepending?
Zwykle wystarcza od jednego do trzech prependów. Większe wartości rzadko dają dodatkowy efekt, ponieważ LOCAL_PREF u zdalnego operatora ma wyższy priorytet, a niektórzy operatorzy filtrują nadmiernie wydłużone ścieżki.
Jak AS_PATH zapobiega pętlom w BGP?
Router eBGP odrzuca każdą trasę, w której widzi już swój własny numer AS, ponieważ jej przyjęcie zamknęłoby pętlę. To podstawowy mechanizm ochrony przed zapętleniem ruchu między systemami autonomicznymi.
