Zum Hauptinhalt springen

20. Relay-Agent-Verhalten (Relay Agent Behavior)

  1. 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 umfassen KANN. Wenn der Relay-Agent nicht ausdrücklich konfiguriert wurde, MUSS er als Standard 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 Hop-Limit-Feld 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-Agenten weiter. Wenn ein Relay-Agent eine gültige weiterzuleitende Nachricht empfängt, erzeugt er eine neue Relay-forward-Nachricht. Der Relay-Agent kopiert die Quelladresse aus dem Header des IP-Datagrams, in dem die Nachricht empfangen wurde, in das peer-address-Feld 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 weiteren Optionen hinzu, die er beauftragt ist einzuschließen.

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-lokale Adresse mit einem Präfix, das dem Link zugewiesen ist, auf dem dem Client eine Adresse zugewiesen werden soll, in das link-address-Feld. Diese Adresse wird vom Server verwendet, um das Link zu bestimmen, von dem aus 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 link-address-Feld 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 link-address-Feld wie im vorhergehenden Absatz beschrieben aus, unabhängig davon, ob der Relay-Agent eine Interface-id-Option in die Relay-forward-Nachricht aufnimmt.

20.1.2. Weiterleiten einer Nachricht von einem Relay-Agenten

Wenn die vom Relay-Agenten 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 peer-address-Feld in der Relay-forward-Nachricht und setzt das hop-count-Feld auf den Wert des hop-count-Felds in der empfangenen Nachricht, inkrementiert 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 ausgeführt wird, nur zu einer Site gehört), setzt der Relay-Agent das link-address-Feld auf 0; andernfalls setzt der Relay-Agent das link-address-Feld auf eine globale oder site-lokale Adresse, die der Schnittstelle zugewiesen ist, auf der die Nachricht empfangen wurde, oder nimmt eine Interface-ID-Option auf, um die Schnittstelle zu identifizieren, auf der die Nachricht empfangen wurde.

20.2. Weiterleiten einer Relay-reply-Nachricht

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

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

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

20.3. Erzeugung von Relay-reply-Nachrichten

Ein Server verwendet eine Relay-reply-Nachricht, um eine Antwort an einen Client zurückzusenden, 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 besitzt, mit der er die Nachricht direkt an den Client senden kann.

Eine Antwort an den Client MUSS über dieselben Relay-Agenten weitergeleitet werden wie die ursprüngliche Client-Nachricht. Der Server bewirkt dies, indem er eine Relay-reply-Nachricht erzeugt, die eine Relay Message-Option enthält, welche die Nachricht für den nächsten Relay-Agenten auf dem Rückweg zum Client enthält. Die enthaltene Relay-reply-Nachricht enthält eine weitere Relay Message-Option, die an den nächsten Relay-Agenten gesendet werden soll, und so weiter. Der Server muss die Inhalte der peer-address-Felder in der empfangenen Nachricht aufzeichnen, damit er die geeignete Relay-reply-Nachricht erzeugen kann, die die Antwort vom Server trägt.

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, containing: msg-type: RELAY-REPLY hop-count: 0 link-address: address from link to which C is attached peer-address: C Relay Message option:

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