Zum Hauptinhalt springen

20. Relay-Agent-Verhalten

Der Relay-Agent KANN so konfiguriert werden, dass er eine Liste von Zieladressen verwendet, die Unicast-Adressen, die All_DHCP_Servers-Multicast-Adresse oder andere vom Netzwerkadministrator ausgewählte Adressen enthalten KANN. Wenn der Relay-Agent nicht explizit konfiguriert wurde, MUSS er standardmäßig die All_DHCP_Servers-Multicast-Adresse verwenden.

Wenn der Relay-Agent Nachrichten an die All_DHCP_Servers-Multicast-Adresse oder andere Multicast-Adressen weiterleitet, setzt er das Feld Hop Limit auf 32.

20.1. Weiterleiten einer Client-Nachricht oder einer Relay-forward-Nachricht

Ein Relay-Agent leitet sowohl Nachrichten von Clients als auch Relay-forward-Nachrichten von anderen Relay-Agents weiter. Wenn ein Relay-Agent eine gültige weiterzuleitende Nachricht empfängt, konstruiert er eine neue Relay-forward-Nachricht. Der Relay-Agent kopiert die Quelladresse aus dem Header des IP-Datagramms, in dem die Nachricht empfangen wurde, in das Feld peer-address der Relay-forward-Nachricht. Der Relay-Agent kopiert die empfangene DHCP-Nachricht (ohne IP- oder UDP-Header) in eine Relay Message-Option in der neuen Nachricht. Der Relay-Agent fügt der Relay-forward-Nachricht alle anderen Optionen hinzu, die er zum Einschließen konfiguriert hat.

20.1.1. Weiterleiten einer Nachricht von einem Client

Wenn der Relay-Agent die weiterzuleitende Nachricht von einem Client empfangen hat, platziert der Relay-Agent eine globale oder Site-Scope-Adresse mit einem Präfix, das dem Link zugewiesen ist, auf dem dem Client eine Adresse zugewiesen werden soll, in das Feld link-address. Diese Adresse wird vom Server verwendet, um den Link zu bestimmen, von dem dem Client eine Adresse und andere Konfigurationsinformationen zugewiesen werden sollen. Der hop-count in der Relay-forward-Nachricht wird auf 0 gesetzt.

Wenn der Relay-Agent die Adresse im Feld link-address nicht verwenden kann, um die Schnittstelle zu identifizieren, über die die Antwort an den Client weitergeleitet wird, MUSS der Relay-Agent eine Interface-id-Option (siehe Abschnitt 22.18) in die Relay-forward-Nachricht aufnehmen. Der Server wird die Interface-id-Option in seine Relay-reply-Nachricht aufnehmen. Der Relay-Agent füllt das Feld link-address wie im vorherigen Absatz beschrieben aus, unabhängig davon, ob der Relay-Agent eine Interface-id-Option in die Relay-forward-Nachricht aufnimmt oder nicht.

20.1.2. Weiterleiten einer Nachricht von einem Relay-Agent

Wenn die vom Relay-Agent empfangene Nachricht eine Relay-forward-Nachricht ist und der hop-count in der Nachricht größer oder gleich HOP_COUNT_LIMIT ist, verwirft der Relay-Agent die empfangene Nachricht.

Der Relay-Agent kopiert die Quelladresse aus dem IP-Datagramm, in dem die Nachricht vom Client empfangen wurde, in das Feld peer-address in der Relay-forward-Nachricht und setzt das Feld hop-count auf den Wert des Feldes hop-count in der empfangenen Nachricht erhöht um 1.

Wenn die Quelladresse aus dem IP-Datagramm-Header der empfangenen Nachricht eine globale oder Site-lokale Adresse ist (und das Gerät, auf dem der Relay-Agent läuft, nur zu einem Site gehört), setzt der Relay-Agent das Feld link-address auf 0; andernfalls setzt der Relay-Agent das Feld link-address auf eine globale oder Site-lokale Adresse, die der Schnittstelle zugewiesen ist, auf der die Nachricht empfangen wurde, oder fügt eine Interface-ID-Option hinzu, um die Schnittstelle zu identifizieren, auf der die Nachricht empfangen wurde.

20.2. Weiterleiten einer Relay-reply-Nachricht

Der Relay-Agent verarbeitet alle in der Relay-reply-Nachricht enthaltenen Optionen zusätzlich zur Relay Message-Option und verwirft dann diese Optionen.

Der Relay-Agent extrahiert die Nachricht aus der Relay Message-Option und leitet sie an die im Feld peer-address der Relay-reply-Nachricht enthaltene Adresse weiter.

Wenn die Relay-reply-Nachricht eine Interface-id-Option enthält, leitet der Relay-Agent die Nachricht vom Server zum Client auf dem durch die Interface-id-Option identifizierten Link weiter. Andernfalls, wenn das Feld link-address nicht auf Null gesetzt ist, leitet der Relay-Agent die Nachricht auf dem durch das Feld link-address identifizierten Link weiter.

20.3. Konstruktion von Relay-reply-Nachrichten

Ein Server verwendet eine Relay-reply-Nachricht, um eine Antwort an einen Client zurückzugeben, wenn die ursprüngliche Nachricht vom Client in einer Relay-forward-Nachricht an den Server weitergeleitet wurde, oder um eine Reconfigure-Nachricht an einen Client zu senden, wenn der Server keine Adresse hat, die er verwenden kann, um die Nachricht direkt an den Client zu senden.

Eine Antwort an den Client MUSS über dieselben Relay-Agents weitergeleitet werden wie die ursprüngliche Client-Nachricht. Der Server bewirkt dies, indem er eine Relay-reply-Nachricht erstellt, die eine Relay Message-Option enthält, die die Nachricht für den nächsten Relay-Agent im Rückgabepfad zum Client enthält. Die enthaltene Relay-reply-Nachricht enthält eine weitere Relay Message-Option, die an den nächsten Relay-Agent gesendet werden soll, und so weiter. Der Server muss den Inhalt der peer-address-Felder in der empfangenen Nachricht aufzeichnen, damit er die entsprechende Relay-reply-Nachricht mit der Antwort vom Server konstruieren kann.

Wenn beispielsweise Client C eine Nachricht gesendet hat, die von Relay-Agent A an Relay-Agent B und dann an den Server weitergeleitet wurde, würde der Server die folgende Relay-Reply-Nachricht an Relay-Agent B senden:

msg-type:       RELAY-REPLY
hop-count: 1
link-address: 0
peer-address: A
Relay Message option, enthaltend:
msg-type: RELAY-REPLY
hop-count: 0
link-address: Adresse vom Link, mit dem C verbunden ist
peer-address: C
Relay Message option: <Antwort vom Server>

Beim Senden einer Reconfigure-Nachricht an einen Client über einen Relay-Agent erstellt der Server eine Relay-reply-Nachricht, die eine Relay Message-Option enthält, die die Reconfigure-Nachricht für den nächsten Relay-Agent im Rückgabepfad zum Client enthält. Der Server setzt das Feld peer-address im Header der Relay-reply-Nachricht auf die Adresse des Clients und setzt das Feld link-address wie vom Relay-Agent erforderlich, um die Reconfigure-Nachricht an den Client weiterzuleiten. Der Server erhält die Adressen des Clients und des Relay-Agents durch vorherige Interaktion mit dem Client oder durch einen externen Mechanismus.