Routing BGP (Border Gateway Protocol) to protokół routingu dynamicznego, który służy do wymiany informacji o trasach pomiędzy różnymi systemami autonomicznymi (AS – Autonomous System).
Jest to podstawowy protokół routingu w Internecie – to dzięki niemu różne sieci należące do operatorów ISP, dużych firm czy instytucji wiedzą, jak się ze sobą komunikować.
BGP cechuje się:
- Exterior Gateway Protocol (EGP) – działa pomiędzy systemami autonomicznymi, w odróżnieniu np. od OSPF czy EIGRP, które są protokołami wewnętrznymi (IGP).
- Opiera się na TCP (port 179) – komunikacja jest stabilna i niezawodna.
- Path vector protocol – wybiera ścieżki nie tylko na podstawie metryk, ale także atrybutów (np. długości ścieżki AS_PATH, preferencji lokalnych, polityk routingu).
Atrybuty BGP to cechy (parametry) przypisane do prefiksów wymienianych przez BGP. To właśnie na ich podstawie BGP wybiera najlepszą ścieżkę. Dzielą się one na well-known (znane i wspierane przez wszystkich vendorów) i optional (dodatkowe, nie zawsze wspierane). Atrybuty BGP to:
- AS_PATH => lista numerów AS, przez które przechodzi trasa. => Im krótsza lista -> tym preferowana ścieżka.
- NEXT_HOP => wskazuje adres IP routera, do którego należy kierować ruch.
- LOCAL_PREF (Local Preference) => mówi, która trasa jest preferowana w ramach jednego AS => Wyższa wartość = bardziej preferowana
- ORIGIN => informuje, skąd pochodzi trasa
- MED (Multi-Exit Discriminator) => sugeruje sąsiadom eBGP, który exit z danego AS jest lepszy
- COMMUNITY => etykiety przypisywane trasom (np. 65000:100)
- ATOMIC_AGGREGATE => informacja, że trasa została zagregowana i może nie zawierać pełnych danych
Kryteria wyboru najlepszej ścieżki w BGP:
- Najwyższy Weight (vendor-specific, np. Cisco)
- Najwyższy Local Preference.
- Najkrótszy AS_PATH.
- Najniższy ORIGIN.
- Najniższy MED.
- eBGP preferowany przed iBGP.
- Najniższy IGP metric do NEXT_HOP.
- Najstarsza ścieżka (stabilna).
- Najniższy Router-ID.
Częste pytanie, które pojawia się na rozmowach kwalifikacyjnych to „jak posiadając dwa wyjścia do Internetu z uruchomionym protokołem wysterować ruch, aby wyszedł i wrócił tą samom ścieżką?”.
Można dokonać tego używając dwóch podstawowych atrybutów local-pref oraz as-path. Local-pref wskazuje, które wyjście z sieci lokalnej jest bardziej preferowane, dodając na wyjściu dodatkowe wpisy as-path czyli tak zwany as-prepend, obniżamy wartość jednej ze ścieżek sugerując, że ruch powinien wrócić ścieżką z krótszym as-path.