14. Zuverlässigkeit von Client-initiierten Nachrichtenaustauschen
14. Zuverlässigkeit von Client-initiierten Nachrichtenaustauschen
DHCP-Clients sind für die zuverlässige Zustellung von Nachrichten in den Client-initiierten Nachrichtenaustauschen verantwortlich, die in den Abschnitten 17 und 18 beschrieben werden. Wenn ein DHCP-Client keine erwartete Antwort von einem Server empfängt, muss der Client seine Nachricht erneut übertragen. Dieser Abschnitt beschreibt die Wiederholungsstrategie, die von Clients in Client-initiierten Nachrichtenaustauschen verwendet werden soll.
Beachten Sie, dass das in diesem Abschnitt beschriebene Verfahren leicht modifiziert wird, wenn es mit der Solicit-Nachricht verwendet wird. Das modifizierte Verfahren wird in Abschnitt 17.1.2 beschrieben.
Der Client beginnt den Nachrichtenaustausch, indem er eine Nachricht an den Server überträgt. Der Nachrichtenaustausch endet, wenn entweder der Client erfolgreich die entsprechende Antwort oder Antworten von einem Server oder Servern empfängt oder wenn der Nachrichtenaustausch gemäß dem unten beschriebenen Wiederholungsmechanismus als fehlgeschlagen betrachtet wird.
Das Client-Wiederholungsverhalten wird durch die folgenden Variablen gesteuert und beschrieben:
RT
Wiederholungs-Timeout
IRT
Initiale Wiederholungszeit
MRC
Maximale Wiederholungsanzahl
MRT
Maximale Wiederholungszeit
MRD
Maximale Wiederholungsdauer
RAND
Randomisierungsfaktor
Bei jeder Nachrichtenübertragung oder -wiederholung setzt der Client RT gemäß den unten angegebenen Regeln. Wenn RT abläuft, bevor der Nachrichtenaustausch endet, berechnet der Client RT neu und überträgt die Nachricht erneut.
Jede Berechnung eines neuen RT enthält einen Randomisierungsfaktor (RAND), der eine Zufallszahl ist, die mit einer gleichmäßigen Verteilung zwischen -0.1 und +0.1 gewählt wird. Der Randomisierungsfaktor wird einbezogen, um die Synchronisierung von Nachrichten zu minimieren, die von DHCP-Clients übertragen werden.
Der Algorithmus zur Auswahl einer Zufallszahl muss nicht kryptografisch sicher sein. Der Algorithmus SOLLTE eine unterschiedliche Sequenz von Zufallszahlen von jedem Aufruf des DHCP-Clients erzeugen.
RT für die erste Nachrichtenübertragung basiert auf IRT:
RT = IRT + RAND*IRT
RT für jede nachfolgende Nachrichtenübertragung basiert auf dem vorherigen Wert von RT:
RT = 2*RTprev + RAND*RTprev
MRT spezifiziert eine obere Grenze für den Wert von RT (unter Vernachlässigung der Randomisierung, die durch die Verwendung von RAND hinzugefügt wird). Wenn MRT einen Wert von 0 hat, gibt es keine obere Grenze für den Wert von RT. Andernfalls:
if (RT > MRT)
RT = MRT + RAND*MRT
MRC spezifiziert eine obere Grenze für die Anzahl der Male, die ein Client eine Nachricht erneut übertragen darf. Wenn MRC nicht null ist, schlägt der Nachrichtenaustausch fehl, sobald der Client die Nachricht MRC-mal übertragen hat.
MRD spezifiziert eine obere Grenze für die Länge der Zeit, die ein Client eine Nachricht erneut übertragen darf. Wenn MRD nicht null ist, schlägt der Nachrichtenaustausch fehl, sobald MRD Sekunden seit der ersten Übertragung der Nachricht durch den Client vergangen sind.
Wenn sowohl MRC als auch MRD nicht null sind, schlägt der Nachrichtenaustausch fehl, sobald eine der in den vorherigen beiden Absätzen angegebenen Bedingungen erfüllt ist.
Wenn sowohl MRC als auch MRD null sind, überträgt der Client die Nachricht weiter, bis er eine Antwort empfängt.