20. Relay Agent Behavior (リレーエージェント動作)
20. Relay Agent Behavior (リレーエージェント動作)
リレーエージェントは、ユニキャストアドレス、All_DHCP_Serversマルチキャストアドレス、またはネットワーク管理者によって選択された他のアドレスを含む可能性のある宛先アドレスのリストを使用するように構成できます。リレーエージェントが明示的に構成されていない場合、デフォルトとしてAll_DHCP_Serversマルチキャストアドレスを使用する必要があります。
リレーエージェントがメッセージをAll_DHCP_Serversマルチキャストアドレスまたは他のマルチキャストアドレスにリレーする場合、リレーエージェントはホップ制限フィールドを32に設定します。
20.1. Relaying a Client Message or a Relay-forward Message (クライアントメッセージまたはリレーフォワードメッセージのリレー)
リレーエージェントは、クライアントからのメッセージと他のリレーエージェントからのリレーフォワードメッセージの両方をリレーします。リレーエージェントがリレーする有効なメッセージを受信すると、リレーエージェントは新しいリレーフォワードメッセージを構築します。リレーエージェントは、メッセージを受信したIPデータグラムヘッダー内の送信元アドレスをリレーフォワードメッセージのピアアドレスフィールドにコピーします。リレーエージェントは、受信したDHCPメッセージ (IPまたはUDPヘッダーを含まない) を新しいメッセージ内のリレーメッセージオプションにコピーします。リレーエージェントは、リレーエージェントが含めるように構成されている他のオプションをリレーフォワードメッセージに追加します。
20.1.1. Relaying a Message from a Client (クライアントからのメッセージのリレー)
リレーエージェントがクライアントからリレーするメッセージを受信した場合、リレーエージェントは、クライアントにアドレスが割り当てられるべきリンクに割り当てられたプレフィックスを持つグローバルまたはサイトスコープアドレスをリンクアドレスフィールドに配置します。このアドレスは、サーバーがクライアントにアドレスとその他の構成情報を割り当てるべきクライアントが配置されているリンクを識別するために使用されます。リレーフォワードメッセージ内のホップカウントは0に設定されます。
リレーエージェントがリンクアドレスフィールド内のアドレスを使用してクライアントへの応答をリレーするインターフェースを識別できない場合、リレーエージェントはリレーフォワードメッセージにインターフェースIDオプション (セクション22.18を参照) を含める必要があります。サーバーは、そのリレーリプライメッセージにインターフェースIDオプションを含めます。リレーエージェントがリレーフォワードメッセージにインターフェースIDオプションを含めるかどうかに関係なく、リレーエージェントは前の段落で説明されているようにリンクアドレスフィールドを入力します。
20.1.2. Relaying a Message from a Relay Agent (リレーエージェントからのメッセージのリレー)
リレーエージェントが受信したメッセージがリレーフォワードメッセージであり、メッセージ内のホップカウントがHOP_COUNT_LIMIT以上である場合、リレーエージェントは受信したメッセージを破棄します。
リレーエージェントは、クライアントからメッセージを受信したIPデータグラム内の送信元アドレスをリレーフォワードメッセージ内のピアアドレスフィールドにコピーし、ホップカウントフィールドを受信メッセージ内のホップカウントフィールドの値を1増やした値に設定します。
受信メッセージのIPデータグラムヘッダー内の送信元アドレスがグローバルまたはサイトローカルアドレスである場合 (リレーエージェントが実行されているデバイスが1つのサイトのみに属する場合)、リレーエージェントはリンクアドレスフィールドを0に設定します。それ以外の場合、リレーエージェントはリンクアドレスフィールドを、メッセージを受信したインターフェースに割り当てられたグローバルまたはサイトローカルアドレスに設定するか、メッセージを受信したインターフェースを識別するインターフェースIDオプションを含めます。
20.2. Relaying a Relay-reply Message (リレーリプライメッセージのリレー)
リレーエージェントは、リレーリプライメッセージに含まれるリレーメッセージオプションに加えて、任意のオプションを処理し、その後それらのオプションを破棄します。
リレーエージェントは、リレーメッセージオプションからメッセージを抽出し、リレーリプライメッセージのピアアドレスフィールドに含まれるアドレスにリレーします。
リレーリプライメッセージにインターフェースIDオプションが含まれている場合、リレーエージェントは、インターフェースIDオプションによって識別されるリンク上のクライアントにサーバーからメッセージをリレーします。それ以外の場合、リンクアドレスフィールドがゼロに設定されていない場合、リレーエージェントはリンクアドレスフィールドによって識別されるリンク上でメッセージをリレーします。
20.3. Construction of Relay-reply Messages (リレーリプライメッセージの構築)
サーバーは、クライアントからの元のメッセージがリレーフォワードメッセージ内でサーバーにリレーされた場合、クライアントに応答を返すためにリレーリプライメッセージを使用します。または、サーバーがクライアントに直接メッセージを送信するために使用できるアドレスを持っていない場合、クライアントに再構成メッセージを送信します。
クライアントへの応答は、元のクライアントメッセージと同じリレーエージェントを介してリレーする必要があります。サーバーは、クライアントへの戻りパス内の次のリレーエージェントのメッセージを含むリレーメッセージオプションを含むリレーリプライメッセージを作成することにより、これを実現します。含まれるリレーリプライメッセージには、次のリレーエージェントに送信される別のリレーメッセージオプションが含まれ、以下同様です。サーバーは、受信メッセージ内のピアアドレスフィールドの内容を記録する必要があります。これにより、サーバーからの応答を運ぶ適切なリレーリプライメッセージを構築できます。
たとえば、クライアントCが送信したメッセージがリレーエージェントAによってリレーエージェントBにリレーされ、その後サーバーにリレーされた場合、サーバーはリレーエージェントBに以下のリレーリプライメッセージを送信します:
msg-type: RELAY-REPLY
hop-count: 1
link-address: 0
peer-address: A
Relay Message option, containing:
msg-type: RELAY-REPLY
hop-count: 0
link-address: address from link to which C is attached
peer-address: C
Relay Message option: <response from server>
リレーエージェントを介してクライアントに再構成メッセージを送信する場合、サーバーは、クライアントへの戻りパス内の次のリレーエージェントの再構成メッセージを含むリレーメッセージオプションを含むリレーリプライメッセージを作成します。サーバーは、リレーリプライメッセージヘッダー内のピアアドレスフィールドをクライアントのアドレスに設定し、リレーエージェントがクライアントに再構成メッセージをリレーするために必要なようにリンクアドレスフィールドを設定します。サーバーは、クライアントとの以前の対話、または何らかの外部メカニズムを通じて、クライアントとリレーエージェントのアドレスを取得します。