Aller au contenu principal

14. Reliability of Client Initiated Message Exchanges (Fiabilité des échanges de messages initiés par le client)

14. Reliability of Client Initiated Message Exchanges (Fiabilité des échanges de messages initiés par le client)

Le client DHCP est responsable de la livraison fiable des messages dans les échanges de messages initiés par le client décrits dans les sections 17 et 18. Si le client DHCP ne parvient pas à recevoir une réponse attendue du serveur, le client doit retransmettre son message. Cette section décrit la stratégie de retransmission utilisée par le client dans les échanges de messages initiés par le client.

Notez que le processus décrit dans cette section est légèrement modifié lorsqu'il est utilisé avec le message Solicit. Le processus modifié est décrit dans la section 17.1.2.

Le client commence un échange de messages en envoyant un message au serveur. L'échange de messages se termine lorsque le client reçoit avec succès une réponse ou des réponses appropriées du serveur, ou lorsque l'échange de messages est considéré comme ayant échoué selon le mécanisme de retransmission décrit ci-dessous.

Le comportement de retransmission du client est contrôlé et décrit par les variables suivantes:

RT
Délai d'attente de retransmission

IRT
Temps de retransmission initial

MRC
Nombre maximum de retransmissions

MRT
Temps de retransmission maximum

MRD
Durée de retransmission maximum

RAND
Facteur de randomisation

Pour chaque transmission ou retransmission de message, le client définit RT selon les règles données ci-dessous. Si RT expire avant que l'échange de messages ne se termine, le client recalcule RT et retransmet le message.

Chaque calcul d'un nouveau RT inclut un facteur de randomisation (RAND), qui est un nombre aléatoire uniformément distribué entre -0.1 et +0.1. Le facteur de randomisation est inclus pour minimiser la synchronisation des messages envoyés par les clients DHCP.

L'algorithme de sélection du nombre aléatoire n'a pas besoin d'être cryptographiquement sûr. L'algorithme devrait produire une séquence différente de nombres aléatoires à partir de chaque invocation du client DHCP.

Le RT pour la première transmission de message est basé sur IRT:

RT = IRT + RAND*IRT

Le RT pour chaque transmission de message suivante est basé sur la valeur précédente de RT:

RT = 2*RTprev + RAND*RTprev

MRT spécifie une limite supérieure sur la valeur de RT (ignorant la randomisation ajoutée en utilisant RAND). Si la valeur de MRT est 0, il n'y a pas de limite supérieure sur la valeur de RT. Sinon:

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

MRC spécifie une limite supérieure sur le nombre de fois que le client peut retransmettre un message. Sauf si MRC est zéro, une fois que le client a transmis le message MRC fois, l'échange de messages échoue.

MRD spécifie une limite supérieure sur la durée pendant laquelle le client peut retransmettre un message. Sauf si MRD est zéro, une fois que MRD secondes se sont écoulées depuis que le client a transmis le message pour la première fois, l'échange de messages échoue.

Si MRC et MRD ne sont pas tous les deux zéro, l'échange de messages échoue dès que l'une des conditions spécifiées dans les deux paragraphes précédents est satisfaite.

Si MRC et MRD sont tous les deux zéro, le client continuera à transmettre des messages jusqu'à ce qu'il reçoive une réponse.