Aller au contenu principal

7.1 Extensions to the IP Service Interface (Extensions à l'interface de service IP)

7.1. Extensions to the IP Service Interface (Extensions à l'interface de service IP)

Les datagrammes IP multicast entrants sont reçus par les modules de protocole de couche supérieure en utilisant la même opération "Receive IP" que les datagrammes normaux unicast. La sélection d'un protocole de couche supérieure de destination est basée sur le champ protocole dans l'en-tête IP, indépendamment de l'adresse IP de destination. Cependant, avant que des datagrammes destinés à un groupe particulier puissent être reçus, un protocole de couche supérieure doit demander au module IP de rejoindre ce groupe. Ainsi, l'interface de service IP doit être étendue pour fournir deux nouvelles opérations:

JoinHostGroup  ( group-address, interface )

LeaveHostGroup ( group-address, interface )

L'opération JoinHostGroup demande que cet hôte devienne membre du groupe d'hôtes identifié par group-address sur l'interface réseau donnée. L'opération LeaveHostGroup demande que cet hôte abandonne son appartenance au groupe d'hôtes identifié par group-address sur l'interface réseau donnée. L'argument interface peut être omis sur les hôtes qui ne prennent en charge qu'une seule interface. Pour les hôtes qui peuvent être attachés à plus d'un réseau, le protocole de couche supérieure peut choisir de ne pas spécifier l'interface, auquel cas la requête s'appliquera à l'interface par défaut pour l'envoi de datagrammes multicast (voir section 6.1).

Il est permis de rejoindre le même groupe sur plus d'une interface, auquel cas des datagrammes multicast en double peuvent être reçus. Il est également permis à plusieurs protocoles de couche supérieure de demander l'appartenance au même groupe.

Les deux opérations devraient retourner immédiatement (c'est-à-dire qu'elles sont des opérations non bloquantes), indiquant le succès ou l'échec. L'une ou l'autre opération peut échouer en raison d'une adresse de groupe ou d'un identificateur d'interface invalide. JoinHostGroup peut échouer en raison d'un manque de ressources locales. LeaveHostGroup peut échouer parce que l'hôte n'appartient pas au groupe donné sur l'interface donnée. LeaveHostGroup peut réussir, mais l'appartenance persiste, si plusieurs protocoles de couche supérieure ont demandé l'appartenance au même groupe.