BFD - Bidirectional Forwarding Detection
Het Bidirectional Forwarding Detection (BFD) protocol wordt gebruikt om fouten tussen twee routers die met elkaar in verbinding staan te detecteren. BFD biedt foutdetectie met een lage overhead op verbindingen- en hardware, die niet over een eigen detecteringsmechanisme voor communicatiefouten beschikken. Met BFD kan netwerkapparatuur sneller alternatieve paden vaststellen.
Razendsnelle foutdetectie
Ieder routeringsprotocol beschikt over een eigen keep-alive mechanisme om communicatiefouten op de verbinding te detecteren. Deze mechanismen bestaan voor vrijwel ieder routeringsprotocol uit "Hello"-datapakketjes die tussen routers worden uitgewisseld. Deze mechanismen zijn voor moderne netwerken vrij langzaam.
De tijd die het bestaande routeringsprotocollen kost om een communicatiefout te detecteren bedraagt gemiddeld één seconde. Met name voor real-time toepassingen is dit te langzaam. Daarnaast is een dergelijk mechanisme niet actief als het bijbehorende routeringsprotocol niet op de router geconfigureerd is.
BFD is een onafhankelijk protocol en kan communicatiefouten op een verbinding binnen milliseconden of zelfs microseconden detecteren. De communicatiefout wordt door het BFD-protocol doorgegeven aan het routeringsprotocol, waarna het routeringsprotocol sneller een alternatieve route kan vaststellen. Hierdoor gaat er veel minder verkeer verloren.
Goede aanvulling op bestaande routeringsprotocollen
BFD is ontworpen voor foutdetectie tussen twee routers die direct met elkaar in verbinding staan. BFD is een onafhankelijk protocol, waardoor het uitermate geschikt is als aanvulling op bestaande keep-alive mechanismen van routeringsprotocollen. BFD werkt op iedere netwerklaag tussen twee routers. BFD wordt altijd uitgevoerd in een unicast of point-to-point stand.
BFD past foutdetectie toe op iedere verbinding tussen twee routers. Hieronder vallen fysieke verbindingen, virtuele circuits, tunnels, MPLS Label Switched Paths, multihop routed paths en ongerichte verbindingen.
BFD maakt gebruik van een three-way-handshake (TCP) om ervoor te zorgen dat beide routers weten van wijzigingen in de beschikbaarheid van de verbinding. Daarnaast is BFD in staat zich aan te passen aan onverwachte situaties. Hierdoor kan BFD ook gebruikt worden op langzame(re) verbindingen of verbindingen met verschillende snelheden.
Hoe werkt BFD?
BFD verschilt niet veel van de standaard keep-alive mechanismen, die door routeringsprotocollen gebruikt worden. BFD is geen dynamisch protocol en moet dus expliciet voor iedere verbinding op beide routers geconfigureerd worden. Zodra BFD is geconfigureerd, wordt er door de routers eerst "onderhandeld" over hoe snel controlepakketjes verzonden kunnen worden om te bepalen hoe snel de foutdetectie zal plaatsvinden. Hiervoor wordt een BFD-sessie opgebouwd.
Tussen de twee routers worden vervolgens periodiek BFD controle pakketen uitgewisseld. Wanneer een router lang genoeg geen controlepakketen meer ontvangt, dan wordt er vanuit gegaan dat er een fout op de verbinding is opgetreden. Deze fout wordt vervolgens door BFD aan het bovenliggende routeringsprotocol gerapporteerd. Het routeringsprotocol zal de verbinding verbreken en een andere route selecteren om het verkeer over te transporteren.
Twee mogelijkheden
BFD kan op twee manieren uitgevoerd worden, asynchrone modus of vraagmodus. Daarnaast is een aanvullende echomodus beschikbaar die in combinatie met asynchrone of vraagmodus gebruikt kan worden.
Asynchrone modus
Asynchrone modus is de standaardmodus waarin BFD wordt uitgevoerd. In deze modus worden periodiek BFD-pakketjes tussen routers uitgewisseld. Zodra een aantal van deze pakketjes niet meer door een van de routers ontvangen wordt, dan wordt de verbinding als "verbroken" beschouwd.
Vraagmodus
Wanneer BFD in vraagmodus wordt uitgevoerd, dan wordt er vanuit gegaan dat de router op een onafhankelijke manier kan bevestigen dat er een verbinding is. Als er een BFD sessie is opgebouwd, dan vindt er geen continue uitwisseling van datapakketjes plaats.
BFD controlepakketjes worden alleen uitgewisseld wanneer een van de routers expliciet wil weten of er nog steeds sprake van een verbinding is. Vraagmodus kan bi-directioneel door de routers gebruikt worden.
Echomodus
De echomodus is een aanvulling op asynchrone modus en vraagmodus. In de echomodus wordt een stroom aan BFD controlepakketjes naar de router verstuurt. De ontvangende router verwerkt deze pakketjes niet, maar stuurt deze weer direct terug naar de verzendende router.
Wanneer een aantal BFD controlepakketjes niet meer door de verzendende router worden ontvangen, dan wordt de verbinding als 'verbroken' beschouwd. De echomodus is hierbij dus verantwoordelijk voor foutdetectie op de verbinding. Hierdoor hoeven in asynchrone modus minder vaak BFD controlepakketjes te worden verstuurd en kan de vraagmodus zelfs geheel worden gedeactiveerd.