Aller au contenu principal

20. Relay Agent Behavior (Comportement de l'agent relais)

20. Relay Agent Behavior (Comportement de l'agent relais)

Un agent relais peut être configuré pour utiliser une liste d'adresses de destination qui peut inclure des adresses unicast, l'adresse multicast All_DHCP_Servers ou d'autres adresses choisies par l'administrateur réseau. Si l'agent relais n'est pas explicitement configuré, il doit utiliser l'adresse multicast All_DHCP_Servers comme valeur par défaut.

Si l'agent relais relaie un message à l'adresse multicast All_DHCP_Servers ou à une autre adresse multicast, il définit le champ de limite de sauts à 32.

20.1. Relaying a Client Message or a Relay-forward Message (Relais d'un message client ou d'un message Relay-forward)

L'agent relais relaie les messages des clients et les messages Relay-forward d'autres agents relais. Lorsqu'un agent relais reçoit un message valide à relayer, il construit un nouveau message Relay-forward. L'agent relais copie l'adresse source dans l'en-tête du datagramme IP qui a reçu le message dans le champ peer-address du message Relay-forward. L'agent relais copie le message DHCP reçu (sans aucun en-tête IP ou UDP) dans l'option Relay Message du nouveau message. L'agent relais ajoute toute autre option qu'il est configuré pour inclure au message Relay-forward.

20.1.1. Relaying a Message from a Client (Relais d'un message d'un client)

Si l'agent relais reçoit un message d'un client à relayer, l'agent relais place une adresse globale ou de portée de site avec un préfixe assigné au lien sur lequel se trouve le client auquel des adresses doivent être assignées dans le champ link-address. Cette adresse sera utilisée par le serveur pour déterminer le lien sur lequel se trouve le client auquel des adresses et d'autres informations de configuration doivent être assignées. Le nombre de sauts dans le message Relay-forward est défini à 0.

Si l'agent relais ne peut pas utiliser l'adresse dans le champ link-address pour identifier l'interface via laquelle il relaiera une réponse au client, l'agent relais doit inclure une option Interface-Id (voir section 22.18) dans le message Relay-forward. Le serveur inclura l'option Interface-Id dans son message Relay-reply. Que l'agent relais inclue ou non l'option Interface-Id dans le message Relay-forward, l'agent relais remplit le champ link-address comme décrit dans le paragraphe précédent.

20.1.2. Relaying a Message from a Relay Agent (Relais d'un message d'un agent relais)

Si le message reçu par l'agent relais est un message Relay-forward et que le nombre de sauts dans le message est supérieur ou égal à HOP_COUNT_LIMIT, l'agent relais rejette le message reçu.

L'agent relais copie l'adresse source dans le datagramme IP qui a reçu le message du client dans le champ peer-address du message Relay-forward et définit le champ hop-count à la valeur du champ hop-count dans le message reçu plus 1.

Si l'adresse source dans l'en-tête du datagramme IP du message reçu est une adresse globale ou locale de site (et le dispositif sur lequel l'agent relais s'exécute appartient à un seul site), l'agent relais définit le champ link-address à 0; sinon, l'agent relais définit le champ link-address à l'adresse globale ou locale de site assignée à l'interface qui a reçu le message, ou inclut une option Interface-Id pour identifier l'interface qui a reçu le message.

20.2. Relaying a Relay-reply Message (Relais d'un message Relay-reply)

L'agent relais traite toute option contenue dans le message Relay-reply autre que l'option Relay Message, puis rejette ces options.

L'agent relais extrait le message de l'option Relay Message et le relaie à l'adresse contenue dans le champ peer-address du message Relay-reply.

Si le message Relay-reply contient une option Interface-Id, l'agent relais relaie le message du serveur au client sur le lien identifié par l'option Interface-Id. Sinon, si le champ link-address n'est pas défini à zéro, l'agent relais relaie le message sur le lien identifié par le champ link-address.

20.3. Construction of Relay-reply Messages (Construction de messages Relay-reply)

Si le message original du client a été relayé au serveur dans un message Relay-forward, le serveur utilise un message Relay-reply pour retourner une réponse au client, ou pour envoyer un message Reconfigure au client si le serveur n'a pas d'adresse qui peut être utilisée pour envoyer directement un message au client.

La réponse au client doit être relayée via les mêmes agents relais que le message client original. Le serveur accomplit cela en créant un message Relay-reply contenant une option Relay Message qui contient le message pour le prochain agent relais dans le chemin de retour. Le message Relay-reply encapsulé contient une autre option Relay Message à envoyer au prochain agent relais, et ainsi de suite. Le serveur doit enregistrer le contenu du champ peer-address dans le message reçu afin qu'il puisse construire un message Relay-reply approprié transportant la réponse du serveur.

Par exemple, si un message envoyé par le client C est relayé par l'agent relais A à l'agent relais B, puis au serveur, le serveur envoie le message Relay-reply suivant à l'agent relais 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>

Lors de l'envoi d'un message Reconfigure au client via un agent relais, le serveur crée un message Relay-reply contenant une option Relay Message qui contient le message Reconfigure pour le prochain agent relais dans le chemin de retour. Le serveur définit le champ peer-address dans l'en-tête du message Relay-reply à l'adresse du client et définit le champ link-address selon les besoins de l'agent relais pour relayer le message Reconfigure au client. Le serveur obtient les adresses du client et de l'agent relais via des interactions précédentes avec le client ou via un mécanisme externe.