Aller au contenu principal

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

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

L'agent de 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 sélectionnées par l'administrateur réseau. Si l'agent de relais n'est pas explicitement configuré, il DOIT utiliser l'adresse multicast All_DHCP_Servers par défaut.

Si l'agent de relais relaie des messages à l'adresse multicast All_DHCP_Servers ou à d'autres adresses multicast, il définit le champ Hop Limit à 32.

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

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

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

Si l'agent de relais a reçu le message à relayer d'un client, l'agent de relais insère dans le champ link-address une adresse globale ou à portée de site avec un préfixe attribué au lien sur lequel le client devrait être attribué à une adresse. Cette adresse sera utilisée par le serveur pour déterminer le lien à partir duquel le client doit se voir attribuer une adresse et d'autres informations de configuration. Le champ hop-count dans le message Relay-forward est défini à 0.

Si l'agent de relais ne peut pas utiliser l'adresse dans le champ link-address pour identifier l'interface via laquelle la réponse au client sera relayée, l'agent de 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. L'agent de relais remplit le champ link-address comme décrit dans le paragraphe précédent indépendamment du fait que l'agent de relais inclue ou non une option Interface-id dans le message Relay-forward.

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

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

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

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

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

L'agent de relais traite toute option incluse dans le message Relay-reply en plus de l'option Relay Message, puis ignore ces options.

L'agent de 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 inclut une option Interface-id, l'agent de 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 de 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)​

Un serveur utilise un message Relay-reply pour renvoyer une réponse à un client si le message original du client a été relayé au serveur dans un message Relay-forward, ou pour envoyer un message Reconfigure à un client si le serveur ne dispose pas d'une adresse qu'il peut utiliser pour envoyer le message directement au client.

Une réponse au client DOIT être relayée via les mêmes agents de relais que le message original du client. Le serveur y parvient en créant un message Relay-reply qui inclut une option Relay Message contenant le message pour l'agent de relais suivant dans le chemin de retour vers le client. Le message Relay-reply contenu inclut une autre option Relay Message à envoyer à l'agent de relais suivant, et ainsi de suite. Le serveur doit enregistrer le contenu des champs peer-address dans les messages reçus afin de pouvoir construire le message Relay-reply approprié transportant la réponse du serveur.

Par exemple, si le client C a envoyé un message qui a été relayé par l'agent de relais A à l'agent de relais B puis au serveur, le serveur enverrait le message Relay-Reply suivant à l'agent de relais B :

msg-type:       RELAY-REPLY
hop-count: 1
link-address: 0
peer-address: A
Relay Message option, contenant :
msg-type: RELAY-REPLY
hop-count: 0
link-address: adresse du lien auquel C est connecté
peer-address: C
Relay Message option: <réponse du serveur>

Lorsqu'il envoie un message Reconfigure à un client via un agent de relais, le serveur crée un message Relay-reply qui inclut une option Relay Message contenant le message Reconfigure pour l'agent de relais suivant dans le chemin de retour vers le client. 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 comme requis par l'agent de relais pour relayer le message Reconfigure au client. Le serveur obtient les adresses du client et de l'agent de relais via l'interaction précédente avec le client ou via un mécanisme externe.