Aller au contenu principal

7.2. Extensions to the IP Module (Extensions au module IP)

7.2. Extensions to the IP Module (Extensions au module IP)

Pour prendre en charge la réception de datagrammes IP multicast, le module IP doit être étendu de deux manières: maintenir une liste des appartenances aux groupes d'hôtes associées à chaque interface réseau, et filtrer les datagrammes IP entrants pour les datagrammes adressés aux groupes d'hôtes auxquels l'hôte appartient.

La liste des appartenances aux groupes d'hôtes est mise à jour en réponse aux actions JoinHostGroup et LeaveHostGroup. Chaque entrée de membre doit contenir un comptage du nombre de demandes JoinHostGroup pour un groupe particulier sur une interface particulière qui n'ont pas encore été annulées par des demandes LeaveHostGroup, afin que le même groupe puisse être rejoint plus d'une fois sur la même interface. Lorsque le premier join est effectué, et qu'il n'y a pas encore d'entrée de membre pour ce groupe, une nouvelle entrée de membre est créée. Lorsque le dernier leave restant est effectué pour un groupe sur une interface, l'entrée de membre pour ce groupe sur cette interface est supprimée.

Chaque fois qu'un datagramme IP est reçu, le module IP vérifie si l'adresse de destination correspond à une adresse de groupe d'hôtes dans l'une des entrées de membre, et si c'est le cas, passe une copie du datagramme à chaque protocole de niveau supérieur spécifié dans l'ensemble de protocoles du membre. Pour tous les protocoles de niveau supérieur membres qui spécifient le même protocole de niveau supérieur, une seule copie du datagramme correspondant est transmise. Un datagramme entrant n'est pas jeté simplement parce qu'il est adressé à un groupe d'hôtes auquel l'hôte ne semble pas appartenir. Il peut s'agir d'un datagramme multicast entrant dont l'heure de vie a expiré, auquel cas il sera transmis au protocole ICMP.

Un compteur d'erreur appelé "erroneous multicast IP datagrams received" (datagrammes IP multicast erronés reçus) doit être maintenu, et incrémenté chaque fois qu'un datagramme IP multicast ne parvient pas au seuil time-to-live requis, ou a une adresse source IP non valide, ou est reçu sur une interface réseau qui ne prend pas en charge la multidiffusion IP, mais sinon semble être un datagramme IP valide. (Cette extension est une généralisation de la vérification des erreurs d'adresse effectuée par un module IP IP non multicast.)