14. Reliability of Client Initiated Message Exchanges (クライアント開始メッセージ交換の信頼性)
14. Reliability of Client Initiated Message Exchanges (クライアント開始メッセージ交換の信頼性)
DHCPクライアントは、セクション17と18で説明されているクライアント開始メッセージ交換でメッセージを信頼性高く配信する責任があります。DHCPクライアントがサーバーから予期される応答を受信できない場合、クライアントはメッセージを再送信する必要があります。このセクションでは、クライアント開始メッセージ交換でクライアントが使用する再送信戦略について説明します。
このセクションで説明されている手順は、ソリシットメッセージと共に使用する場合、わずかに変更されることに注意してください。変更された手順は、セクション17.1.2で説明されています。
クライアントは、サーバーにメッセージを送信することにより、メッセージ交換を開始します。メッセージ交換は、クライアントがサーバーまたはサーバーから適切な応答または応答を正常に受信したとき、または以下で説明する再送信メカニズムによってメッセージ交換が失敗したと見なされたときに終了します。
クライアントの再送信動作は、以下の変数によって制御および記述されます:
RT
再送信タイムアウト
IRT
初期再送信時間
MRC
最大再送信回数
MRT
最大再送信時間
MRD
最大再送信期間
RAND
ランダム化係数
各メッセージ送信または再送信で、クライアントは以下で与えられるルールに従ってRTを設定します。RTがメッセージ交換が終了する前に期限切れになる場合、クライアントはRTを再計算し、メッセージを再送信します。
新しいRTの各計算には、ランダム化係数 (RAND) が含まれます。これは、-0.1と+0.1の間で均一に分布する乱数です。ランダム化係数は、DHCPクライアントによって送信されるメッセージの同期を最小限に抑えるために含まれています。
乱数を選択するアルゴリズムは、暗号学的に安全である必要はありません。アルゴリズムは、DHCPクライアントの各呼び出しから異なる乱数シーケンスを生成する必要があります。
最初のメッセージ送信のRTは、IRTに基づいています:
RT = IRT + RAND*IRT
各後続のメッセージ送信のRTは、RTの前の値に基づいています:
RT = 2*RTprev + RAND*RTprev
MRTは、RTの値の上限を指定します (RANDの使用によって追加されたランダム化を無視)。MRTの値が0の場合、RTの値に上限はありません。それ以外の場合:
if (RT > MRT)
RT = MRT + RAND*MRT
MRCは、クライアントがメッセージを再送信できる回数の上限を指定します。MRCがゼロでない限り、クライアントがメッセージをMRC回送信すると、メッセージ交換は失敗します。
MRDは、クライアントがメッセージを再送信できる時間の長さの上限を指定します。MRDがゼロでない限り、クライアントが最初にメッセージを送信してからMRD秒が経過すると、メッセージ交換は失敗します。
MRCとMRDの両方がゼロでない場合、前の2つの段落で指定された条件のいずれかが満たされると、メッセージ交換は失敗します。
MRCとMRDの両方がゼロの場合、クライアントは応答を受信するまでメッセージの送信を続けます。