Passa al contenuto principale

14. Affidabilità degli scambi di messaggi avviati dal client

14. Affidabilità degli scambi di messaggi avviati dal client

I client DHCP sono responsabili della consegna affidabile dei messaggi negli scambi di messaggi avviati dal client descritti nelle sezioni 17 e 18. Se un client DHCP non riceve una risposta attesa da un server, il client deve ritrasmettere il proprio messaggio. Questa sezione descrive la strategia di ritrasmissione da usare dai client negli scambi di messaggi avviati dal client.

Si noti che la procedura descritta in questa sezione è leggermente modificata quando usata con il messaggio Solicit. La procedura modificata è descritta nella sezione 17.1.2.

Il client avvia lo scambio di messaggi trasmettendo un messaggio al server. Lo scambio di messaggi termina quando il client riceve con successo la risposta o le risposte appropriate da un server o da server, o quando lo scambio di messaggi è considerato fallito secondo il meccanismo di ritrasmissione descritto di seguito.

Il comportamento di ritrasmissione del client è controllato e descritto dalle seguenti variabili:

  • RT — Timeout di ritrasmissione
  • IRT — Tempo di ritrasmissione iniziale
  • MRC — Numero massimo di ritrasmissioni
  • MRT — Tempo massimo di ritrasmissione
  • MRD — Durata massima di ritrasmissione
  • RAND — Fattore di randomizzazione

Ad ogni trasmissione o ritrasmissione di un messaggio, il client imposta RT secondo le regole date di seguito. Se RT scade prima che lo scambio di messaggi termini, il client ricalcola RT e ritrasmette il messaggio.

Ciascuno dei calcoli di un nuovo RT include un fattore di randomizzazione (RAND), che è un numero casuale scelto con distribuzione uniforme tra -0.1 e +0.1. Il fattore di randomizzazione è incluso per minimizzare la sincronizzazione dei messaggi trasmessi dai client DHCP.

L'algoritmo per scegliere un numero casuale non deve essere necessariamente crittograficamente sicuro. L'algoritmo DOVREBBE produrre una sequenza diversa di numeri casuali a ogni invocazione del client DHCP.

RT per la prima trasmissione del messaggio è basato su IRT:

RT = IRT + RAND*IRT

RT per ciascuna trasmissione successiva del messaggio è basato sul valore precedente di RT:

RT = 2*RTprev + RAND*RTprev

MRT specifica un limite superiore al valore di RT (tralasciando la randomizzazione aggiunta dall'uso di RAND). Se MRT ha valore 0, non c'è alcun limite superiore al valore di RT. Altrimenti:

if (RT > MRT)
RT = MRT + RAND*MRT

MRC specifica un limite superiore al numero di volte in cui un client può ritrasmettere un messaggio. A meno che MRC non sia zero, lo scambio di messaggi fallisce una volta che il client ha trasmesso il messaggio MRC volte.

MRD specifica un limite superiore alla lunghezza del tempo in cui un client può ritrasmettere un messaggio. A meno che MRD non sia zero, lo scambio di messaggi fallisce una volta trascorsi MRD secondi dalla prima trasmissione del messaggio da parte del client.

Se sia MRC che MRD sono non zero, lo scambio di messaggi fallisce quando una qualsiasi delle condizioni specificate nei due paragrafi precedenti è soddisfatta.

Se sia MRC che MRD sono zero, il client continua a trasmettere il messaggio finché non riceve una risposta.