6.8.6. Reception of BFD Control Packets (Ricezione dei pacchetti di controllo BFD)
6.8.6. Reception of BFD Control Packets (Ricezione dei pacchetti di controllo BFD)
Quando viene ricevuto un pacchetto di controllo BFD, vengono eseguite le seguenti procedure. Se il pacchetto viene scartato in base a queste procedure, NON DEVE essere elaborato ulteriormente.
Le seguenti verifiche DEVONO essere eseguite su tutti i pacchetti di controllo BFD ricevuti, prima di ulteriori elaborazioni. Se una qualsiasi di queste verifiche fallisce, il pacchetto ricevuto DEVE essere scartato:
-
Se il campo
Versionnon è uguale a 1, il pacchetto DEVE essere scartato. -
Se il campo
Lengthè minore della lunghezza minima richiesta per il tipo di pacchetto (24 byte per i pacchetti senza autenticazione, più la lunghezza della sezione di autenticazione se presente), il pacchetto DEVE essere scartato. -
Se il campo
Detect Multè zero, il pacchetto DEVE essere scartato. -
Se il bit Multipoint (M) è impostato a 1, il pacchetto DEVE essere scartato.
-
Se il campo
My Discriminatorè zero, il pacchetto DEVE essere scartato. -
Se il campo
Your Discriminatorè zero e lo stato non è Down o AdminDown, il pacchetto DEVE essere scartato. -
Se il campo
Your Discriminatorè diverso da zero, deve corrispondere al valorebfd.LocalDiscro il pacchetto DEVE essere scartato.
Se il bit Authentication Present (A) è impostato:
-
Se non è stato configurato alcun tipo di autenticazione per questa sessione, il pacchetto DEVE essere scartato.
-
Se il campo
Auth Typenon corrisponde al tipo di autenticazione configurato per questa sessione, il pacchetto DEVE essere scartato. -
Se il pacchetto fallisce la validazione dell'autenticazione in base al tipo di autenticazione specificato, il pacchetto DEVE essere scartato. Vedi le sezioni 6.7.2, 6.7.3 e 6.7.4 per i dettagli della validazione dell'autenticazione.
Se il bit Authentication Present (A) non è impostato:
- Se l'autenticazione è configurata per la sessione, il pacchetto DEVE essere scartato.
Una volta che il pacchetto ha superato le verifiche sopra, le seguenti azioni vengono eseguite:
-
Se
bfd.RemoteDiscrè zero e il campoYour Discriminatornon è zero, impostarebfd.RemoteDiscral valore del campoYour Discriminator. -
Se
bfd.RemoteDiscrè diverso da zero e il campoMy Discriminatornon è uguale abfd.RemoteDiscr, il pacchetto DEVE essere scartato. -
Se è ricevuto lo stato AdminDown,
bfd.SessionStateDEVE essere impostato a Down, ebfd.LocalDiagDEVE essere impostato a 3 (Neighbor Signaled Session Down). Il Detection Timer DEVE essere cancellato. -
Se è ricevuto lo stato Down,
bfd.SessionStateDEVE essere impostato a Down, ebfd.LocalDiagDEVE essere impostato a 3 (Neighbor Signaled Session Down). Il Detection Timer DEVE essere cancellato. -
Se lo stato ricevuto è Init e
bfd.SessionStateè Down o AdminDown, la sessione DEVE avanzare allo stato Init, e il Detection Timer DEVE essere avviato con il valore calcolato dibfd.DetectTime. -
Se lo stato ricevuto è Init o Up, e
bfd.SessionStateè Init, la sessione DEVE avanzare allo stato Up. -
Se lo stato ricevuto è Up,
bfd.SessionStateè Up, e il Detection Timer non è in esecuzione, avviare il Detection Timer con il valore calcolato dibfd.DetectTime. -
Se lo stato ricevuto è diverso da AdminDown, il Detection Timer DEVE essere reimpostato al valore calcolato di
bfd.DetectTime. -
Aggiornare
bfd.RemoteSessionStatecon il valore del campoStatericevuto. -
Aggiornare
bfd.RemoteDemandModecon il valore del bit Demand (D) ricevuto. -
Aggiornare
bfd.RemoteMinRxIntervalcon il valore del campoRequired Min RX Intervalricevuto. -
Aggiornare
bfd.RemoteMinEchoRxIntervalcon il valore del campoRequired Min Echo RX Intervalricevuto. -
Ricalcolare il tempo di trasmissione in base ai nuovi valori ricevuti (vedi sezione 6.8.2).
Queste procedure garantiscono che i pacchetti vengano validati correttamente e che lo stato della sessione venga aggiornato in modo appropriato in risposta ai pacchetti ricevuti.