Passa al contenuto principale

14. Affidabilità degli Scambi di Messaggi Avviati dal Client

14. Affidabilità degli Scambi di Messaggi Avviati dal Client (Reliability of Client Initiated Message Exchanges)

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 riesce a ricevere una risposta attesa da un server, il client deve ritrasmettere il suo messaggio. Questa sezione descrive la strategia di ritrasmissione da utilizzare dai client negli scambi di messaggi avviati dal client.

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

Il client inizia 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 uno o più 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: Conteggio massimo di ritrasmissioni
  • MRT: Tempo massimo di ritrasmissione
  • MRD: Durata massima di ritrasmissione
  • RAND: Fattore di randomizzazione

Con ogni trasmissione o ritrasmissione di messaggio, il client imposta RT secondo le regole fornite 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 una distribuzione uniforme tra -0,1 e +0,1. Il fattore di randomizzazione è incluso per ridurre al minimo la sincronizzazione dei messaggi trasmessi dai client DHCP.

L'algoritmo per la scelta di un numero casuale non deve essere crittograficamente sicuro. L'algoritmo DOVREBBE (SHOULD) produrre una sequenza diversa di numeri casuali da ogni invocazione del client DHCP.

RT per la prima trasmissione di messaggio si basa su IRT:

RT = IRT + RAND*IRT

RT per ogni trasmissione di messaggio successiva si basa sul valore precedente di RT:

RT = 2*RTprev + RAND*RTprev

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

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

MRC specifica un limite superiore sul numero di volte che 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 sulla durata di tempo in cui un client può ritrasmettere un messaggio. A meno che MRD non sia zero, lo scambio di messaggi fallisce una volta che sono trascorsi MRD secondi da quando il client ha trasmesso per la prima volta il messaggio.

Se sia MRC che MRD sono diversi da zero, lo scambio di messaggi fallisce ogni volta che una delle condizioni specificate nei due paragrafi precedenti è soddisfatta.

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