6.8.4. Calcul du temps de détection
Le temps de détection (la période de temps sans recevoir de paquets BFD après laquelle la session est déterminée comme ayant échoué) n'est pas transporté explicitement dans le protocole. Au lieu de cela, il est calculé indépendamment dans chaque direction par le système récepteur en fonction de l'intervalle de transmission négocié et du multiplicateur de détection. Notez qu'il peut y avoir des temps de détection différents dans chaque direction.
Le calcul du temps de détection est légèrement différent en mode Demand par rapport au mode Asynchrone.
En mode Asynchrone, le temps de détection calculé dans le système local est égal à la valeur de Detect Mult reçue du système distant, multipliée par l'intervalle de transmission convenu du système distant (le plus grand de bfd.RequiredMinRxInterval et du dernier Desired Min TX Interval reçu). La valeur Detect Mult est (grosso modo, en raison de la gigue) le nombre de paquets qui doivent être manqués d'affilée pour déclarer la session comme étant down.
Si le mode Demand n'est pas actif, et qu'une période de temps égale au temps de détection s'écoule sans recevoir de paquet de contrôle BFD du système distant, et que bfd.SessionState est Init ou Up, la session est tombée -- le système local DOIT définir bfd.SessionState à Down et bfd.LocalDiag à 1 (Control Detection Time Expired).
En mode Demand, le temps de détection calculé dans le système local est égal à bfd.DetectMult, multiplié par l'intervalle de transmission convenu du système local (le plus grand de bfd.DesiredMinTxInterval et bfd.RemoteMinRxInterval). bfd.DetectMult est (grosso modo, en raison de la gigue) le nombre de paquets qui doivent être manqués d'affilée pour déclarer la session comme étant down.
Si le mode Demand est actif, et qu'une période de temps égale au temps de détection s'écoule après l'initiation d'une séquence de sondage (la transmission du premier paquet de contrôle BFD avec le bit Poll positionné), la session est tombée -- le système local DOIT définir bfd.SessionState à Down, et bfd.LocalDiag à 1 (Control Detection Time Expired).
(Notez qu'un paquet est considéré comme ayant été reçu, aux fins de l'expiration du temps de détection, seulement s'il n'a pas été "rejeté" selon les règles de la section 6.8.6).