Algorytm wyboru trasy w BGP – RFC4271
Pamiętacie może ze szkoły zdanie, które prawie każdy nauczyciel wygłaszał:
< wstaw_cokolwiek> musisz znać, nawet jak Cię obudzą w środku nocy?
To dzisiaj wpis na bardzo ważny temat: Algorytm wyboru trasy w BGP.
Poprzednie wpisy z serii o BGP, możesz znaleźć na:
Podstawy BGP – co to jest BGP i do czego służy
Stany i wiadomości BGP – jakie wygląda sesja, jakie ma stany i jak jest zestawiana.
RFC 4271 – Algorytm wyboru trasy w BGP
Opis algorytmu powstał na podstawie RFC4271. Jest niezależny od implementacji algorytmu BGP przez producentów sprzętu sieciowego i oprogramowania.
Wybór trasy w protokole BGP
Algorytm wyboru trasy w BGP wybiera pożądaną ścieżkę do określonego prefiksu. Wybór dokonywany jest z minimum dwóch ścieżek. Jeśli jest jedna ścieżka, wtedy staje się najlepsza (best).
Next hop
Algorytm sprawdza, czy w tablicy routingu są informację o next hop dla danego prefiksu. Czy ma wiedzę, przez jakie „drzwi ma wypchnąć” ruch do tego prefiksu. Jeśli nie ma informacji o next hop, wtedy taki prefiks jest porzucany i nie bierze udziału w dalszej części algorytmu.
Local Preference
Jeśli router ma w tablicy routingu next hop, wtedy porównywany jest atrybut Local Preference. Dla przypomnienia, Local preference to wartość liczbowa z zakresu od 0 do 4294967295. Jest przekazywana wewnątrz AS pomiędzy routerami.
Prefiks z wyższym Local preference „wygrywa”.
A co jeśli Local Preference jest równy?
AS-PATH
Wtedy porównywane są AS-PATH. Krótszy AS-PATH wygrywa. AS-PATH to atrybut składający się z numerów AS (systemów autonomicznych), przez które trzeba „przejść”, aby dostać się do danego prefiksu. Jeśli trasa zawiera w AS-PATH numer AS, którego częścią jest router, wtedy trasa jest porzucana. Jest to mechanizm zabezpieczający przed powstaniem pętli w routingu BGP.
A gdy AS-PATH są sobie równe?
Origin
Porównywany jest atrybut Origin, czyli pochodzenie prefiksu. Origin może mieć trzy stany: IGP, EGP i incomplete.
Algorytm BGP preferuje IGP bardziej niż EGP. Najmniej preferowaną trasą jest ta, która ma ustawiony stan na incomplete.
A co jeśli w tym kroku nie udało się wybrać ścieżki?
MED
Porównywane są wartości MED. Trasa z niższą wartością MED jest preferowana. Wartość MED jest porównywana, wtedy gdy router nauczył się tras z tego samego, sąsiedniego AS. To zachowanie można zmienić. Można skonfigurować router, aby porównywał MED dla tras pochodzących z różnych systemów autonomicznych. W większości przypadków jest to ostatni krok w algorytmie wyboru trasy.
Jeśli MED są równe to co wtedy?
eBGP vs. iBGP
Kiedy atrybut MED jest równy, wybierana jest trasa, którą router „nauczył się” z eBGP. Ma tu zastosowanie zasada „hot potato routing” – czyli wysłanie ruchu do najbliższego wyjścia z sieci. Preferując eBGP nad iBGP zmniejsza się obciążenie połączeń wewnątrz sieci. Przeciwieństwem do hot potato routing jest cold potato routing, gdzie preferujemy połączenia wewnętrzne.
Metryka IGP do next hop
Jeśli router nauczył się tras z iBGP, to preferowana jest ścieżka z niższą metryką IGP do next hop (do drzwi, przez które ma wypchnąć ruch) ; -)
A jeśli obu tras router nauczył się z eBGP?
Wiek trasy (Age of route) – zachowanie zależne od implementacji
Wtedy porównywany jest wiek trasy. Starsza trasa wygrywa. Jest to podyktowane większą stabilnością sieci.
Możemy mieć w swojej sieci cztery trasy do tego samego prefiksu. Trzy trasy nam znikają. Zostaje tylko jedna. Po jakimś czasie trasy zaczynają być aktywne. Bez sprawdzenia wieku trasy, router mógłby zacząć przełączać się na nowsze trasy. Skutkowałoby to dużą niestabilnością działania całej sieci.
Router ID
Preferowane są trasy, których router nauczyć się od sąsiada z niższym router ID.
RT1 router-ID: 10.10.10.1
RT2 router-ID: 192.168.10.1
Trasy z RT1 są wybierane.
IP address
Jeśli parametr router ID jest taki sam, to porównywane są adresy IP routerów. Wybierane są trasy pochodzące z routera o niższym adresie IP.
Podsumowanie
Cały algorytm wyboru trasy w BGP można streścić do paru punktów:
- Weryfikacja czy router ma next-hop
- Wyższa wartość Local preference
- Krótszy AS-PATH
- Niższa wartość MED
- Wiek trasy – starsza trasa jest preferowana (uzależnione od implementacji)
Musisz pamiętać, że to jest opis ogólny. Każdy z producentów ma swoją implementację. Niektóre elementy algorytmu i ich zachowanie mogą się różnić. Za każdym razem, gdy debuggujesz działanie BGP sprawdź, proszę dokumentację producenta.
Linki do dokumentacji producentów (07.03.2019):
Poniżej algorytm wyboru trasy w BGP w formie tabeli.
Czy next hop jest osiągalny | Jeśli tak, to idziemy dalej |
Local preference | Preferowany wyższy |
AS path | Preferowany krótszy |
Origin | IGP > EGP > incomplete |
eBGP vs iBGP | eBGP |
Metryka IGP do next hop | Preferowana jest niższa metryka IGP do NH |
Wiek trasy | Preferowana jest starsza |
Router ID | Preferowany jest niższy |
Adres IP sąsiada | Preferowany jest niższy |
Tomasz Mikołajek
Założyciel Showroute.pl
Inżynier sieciowy lubiący dzielić się wiedzą i pomagać innym zrozumieć zawiłości działania sieci i Internetu.