6.8.1. Variables d'état
Une quantité minimale d'informations sur une session doit être suivie afin d'atteindre les éléments de procédure décrits ici. Ce qui suit est un ensemble de variables d'état qui sont utiles pour décrire les mécanismes de BFD. Tout moyen de suivre cet état peut être utilisé tant que le protocole se comporte comme décrit.
Lorsque le texte fait référence à l'initialisation d'une variable d'état, cela n'a lieu qu'au moment où la session (et les variables d'état correspondantes) est créée. Les variables d'état sont ensuite manipulées par la machine à états et ne sont jamais réinitialisées, même si la session échoue et est rétablie.
Une fois que l'état de session est créé, et qu'au moins un paquet de contrôle BFD est reçu de l'extrémité distante, il DOIT être préservé pendant au moins un temps de détection (voir section 6.8.4) après la réception du dernier paquet de contrôle BFD, quel que soit l'état de la session. Cela préserve les paramètres de temporisation au cas où la session bascule. Un système PEUT préserver l'état de session plus longtemps que cela. La préservation ou la destruction de l'état de session lorsqu'aucun paquet de contrôle BFD pour cette session n'a été reçu du système distant est en dehors du champ d'application de cette spécification.
Toutes les variables d'état dans cette spécification sont de la forme bfd.Xx et ne doivent pas être confondues avec les champs transportés dans les paquets de protocole, qui sont toujours épelés pour correspondre aux noms de la section 4.
Définitions des variables d'état
bfd.SessionState
L'état perçu de la session (Init, Up, Down ou AdminDown). L'action exacte prise lorsque l'état de la session change est en dehors du champ d'application de cette spécification, bien qu'il soit attendu que ce changement d'état (en particulier, vers et depuis l'état Up) soit signalé aux autres composants du système. Cette variable DOIT être initialisée à Down.
bfd.RemoteSessionState
L'état de session signalé en dernier par le système distant dans le champ State (Sta) du paquet de contrôle BFD. Cette variable DOIT être initialisée à Down.
bfd.LocalDiscr
Le discriminateur local pour cette session BFD, utilisé pour l'identifier de manière unique. Il DOIT être unique parmi toutes les sessions BFD sur ce système, et non nul. Il DEVRAIT être défini à une valeur aléatoire (mais toujours unique) pour améliorer la sécurité. La valeur est autrement en dehors du champ d'application de cette spécification.
bfd.RemoteDiscr
Le discriminateur distant pour cette session BFD. C'est le discriminateur choisi par le système distant, et est totalement opaque pour le système local. Cela DOIT être initialisé à zéro. Si une période d'un temps de détection s'écoule sans la réception d'un paquet BFD valide et authentifié du système distant, cette variable DOIT être mise à zéro.
bfd.LocalDiag
Le code de diagnostic spécifiant la raison du changement le plus récent dans l'état de session local. Cela DOIT être initialisé à zéro (No Diagnostic).
bfd.DesiredMinTxInterval
L'intervalle minimum, en microsecondes, entre les paquets de contrôle BFD transmis que ce système aimerait utiliser à l'instant présent, moins toute gigue appliquée (voir section 6.8.2). L'intervalle réel est négocié entre les deux systèmes. Cela DOIT être initialisé à une valeur d'au moins une seconde (1,000,000 microsecondes) selon les règles décrites dans la section 6.8.3. Le réglage de cette variable est autrement en dehors du champ d'application de cette spécification.
bfd.RequiredMinRxInterval
L'intervalle minimum, en microsecondes, entre les paquets de contrôle BFD reçus que ce système requiert, moins toute gigue appliquée par l'émetteur (voir section 6.8.2). Le réglage de cette variable est en dehors du champ d'application de cette spécification. Une valeur de zéro signifie que ce système ne souhaite recevoir aucun paquet de contrôle BFD périodique. Voir la section 6.8.18 pour plus de détails.
bfd.RemoteMinRxInterval
La dernière valeur de Required Min RX Interval reçue du système distant dans un paquet de contrôle BFD. Cette variable DOIT être initialisée à 1.
bfd.DemandMode
Défini à 1 si le système local souhaite utiliser le mode Demand, ou 0 sinon.
bfd.RemoteDemandMode
Défini à 1 si le système distant souhaite utiliser le mode Demand, ou 0 sinon. C'est la valeur du bit Demand (D) dans le dernier paquet de contrôle BFD reçu. Cette variable DOIT être initialisée à zéro.
bfd.DetectMult
Le multiplicateur de temps de détection souhaité pour les paquets de contrôle BFD sur le système local. L'intervalle de transmission de paquet de contrôle négocié, multiplié par cette variable, sera le temps de détection pour cette session (tel que vu par le système distant). Cette variable DOIT être un entier non nul, et est autrement en dehors du champ d'application de cette spécification. Voir la section 6.8.4 pour plus d'informations.
bfd.AuthType
Le type d'authentification en cours d'utilisation pour cette session, tel que défini dans la section 4.1, ou zéro si aucune authentification n'est utilisée.
bfd.RcvAuthSeq
Un entier non signé de 32 bits contenant le dernier numéro de séquence pour l'authentification Keyed MD5 ou SHA1 qui a été reçu. La valeur initiale est sans importance.
bfd.XmitAuthSeq
Un entier non signé de 32 bits contenant le prochain numéro de séquence pour l'authentification Keyed MD5 ou SHA1 à transmettre. Cette variable DOIT être initialisée à une valeur aléatoire de 32 bits.
bfd.AuthSeqKnown
Défini à 1 si le prochain numéro de séquence pour l'authentification Keyed MD5 ou SHA1 attendu à recevoir est connu, ou 0 s'il n'est pas connu. Cette variable DOIT être initialisée à zéro.
Cette variable DOIT être mise à zéro après qu'aucun paquet n'ait été reçu sur cette session pendant au moins deux fois le temps de détection. Cela garantit que le numéro de séquence peut être resynchronisé si le système distant redémarre.