Co to jest BFD?
BFD (RFC 5880) to lekki protokół wykrywający awarię ścieżki w milisekundach, niezależnie od BGP czy OSPF, dzięki czemu sieć szybko przełącza ruch.
Ostatnia aktualizacja:
BFD (Bidirectional Forwarding Detection) to lekki protokół zdefiniowany w RFC 5880, który wykrywa awarię ścieżki przekazywania między dwoma routerami w czasie liczonym w milisekundach. Działa niezależnie od protokołów routingu, takich jak BGP czy OSPF, i jest wspólnym, szybkim mechanizmem sygnalizacji awarii. Routery wymieniają między sobą bardzo częste, krótkie pakiety kontrolne. Gdy strumień ustaje, BFD natychmiast informuje powiązany protokół, że sąsiad jest nieosiągalny, a ruch przełącza się na trasę zapasową w czasie poniżej sekundy.
Po co stosuje się BFD
Same protokoły routingu wykrywają awarię sąsiada powoli, ponieważ opierają się na własnych licznikach hold-time. Domyślnie BGP czeka 180 sekund, a OSPF 40 sekund, zanim uzna sąsiada za martwego. Gdy awaria nie powoduje fizycznego zaniku sygnału (np. przerwa za przełącznikiem, uszkodzony tor optyczny w jedną stronę, problem na ścieżce MPLS), router nie dostaje sygnału warstwy łącza i przez kilkadziesiąt sekund kieruje ruch w czarną dziurę. BFD usuwa to opóźnienie, dostarczając jednolity, szybki sygnał awarii niezależnie od medium i protokołu.
Jak działa BFD
Dwa routery nawiązują sesję BFD i wymieniają pakiety kontrolne ze stałą, ustaloną częstotliwością. Każda strona deklaruje swój nadawczy interwał, a awarię stwierdza się, gdy przez ustaloną wielokrotność tego interwału (detect multiplier, zwykle 3) nie dotrze żaden pakiet. Najważniejsze cechy działania to:
- Niezależność od protokołu: jedna sesja BFD może obsługiwać równocześnie BGP, OSPF, IS-IS czy trasy statyczne (RFC 5882).
- Bardzo niskie interwały: typowo 50 do 300 ms, co przy mnożniku 3 daje wykrycie awarii poniżej sekundy.
- Tryby pracy: asynchroniczny (ciągła wymiana pakietów) oraz Echo, w którym pakiet jest odbijany przez sąsiada.
- Lekkość: małe pakiety UDP i prosta maszyna stanów obciążają łącze i procesor minimalnie.
- Single-hop (RFC 5881) dla łączy bezpośrednich oraz multihop (RFC 5883) dla sesji przez wiele przeskoków.
BFD w parze z BGP i OSPF
BFD nie zastępuje protokołu routingu, lecz przyspiesza jego reakcję. Po włączeniu na sesji BGP lub w sąsiedztwie OSPF protokół rejestruje się jako klient BFD i przestaje czekać na własny hold-time. Gdy BFD wykryje zerwanie ścieżki, natychmiast zgłasza zdarzenie, a protokół wycofuje trasy i przełącza ruch na alternatywę. Dzięki temu czas przełączenia spada z dziesiątek sekund do ułamka sekundy. Interwały trzeba jednak dobierać rozważnie, bo zbyt agresywne wartości mogą powodować fałszywe alarmy przy chwilowym obciążeniu procesora lub krótkich mikroprzerwach, dlatego w praktyce zwykle włącza się tłumienie oscylacji (dampening).
BFD a AS202520 SkyPass
Na sesjach BGP z AS202520 SkyPass możemy uzgodnić BFD, aby skrócić czas wykrycia awarii łącza z minut do ułamka sekundy. Jest to istotne zwłaszcza dla operatorów w konfiguracji multihoming. Włączamy je na łączach tranzytu IP oraz, tam gdzie pozwala na to topologia, na sesjach peeringowych w naszych PoP-ach w Warszawie i Wrocławiu oraz na zdalnym dostępie do polskich IXP (THINX, TPIX, WRIX, POZIX, 1-IX). Parametry sesji dobieramy wspólnie, balansując między szybkością przełączenia a stabilnością.
Najczęstsze pytania
Czy BFD zastępuje BGP lub OSPF?
Nie. BFD tylko szybko wykrywa awarię ścieżki i zgłasza ją protokołowi routingu. Decyzje o trasach nadal podejmuje BGP czy OSPF, ale reaguje on znacznie szybciej.
Jak szybko BFD wykrywa awarię?
Zwykle poniżej sekundy. Przy interwale od 50 do 300 ms i mnożniku 3 awaria jest wykrywana w 150 do 900 ms, zamiast 40 s (OSPF) czy 180 s (BGP) wynikających z domyślnych liczników hold.
Czym jest mnożnik detekcji (detect multiplier)?
To liczba kolejnych utraconych pakietów kontrolnych, po której sesja zostaje uznana za zerwaną. Domyślnie wynosi 3, więc czas detekcji to mniej więcej interwał nadawczy pomnożony przez 3.
Czy BFD działa przez wiele przeskoków?
Tak. RFC 5881 opisuje wariant single-hop dla łączy bezpośrednich, a RFC 5883 wariant multihop, który pozwala uruchomić sesję między routerami oddalonymi o wiele przeskoków, np. dla BGP multihop.
