Partager via


Portage d’applications de diffusion vers IPv6

Cette section décrit les meilleures pratiques pour le portage d’une application de diffusion IPv6 vers les fonctionnalités de multidiffusion disponibles avec les sockets Windows.

Comparaison d’IPv4 à IPv6

La considération la plus notable lors de la préparation du portage d’une application de diffusion IPv4 vers IPv6 est la suivante : IPv6 n’a pas de concept de diffusion implémenté. Au lieu de cela, IPv6 utilise la multidiffusion.

La multidiffusion pour IPv6 peut émuler les fonctionnalités de diffusion traditionnelles trouvées dans IPv4. La définition de l’option de socket IPV6_ADD_MEMBERSHIP avec l’adresse IPv6 définie sur l’adresse de tous les nœuds d’étendue locale de lien (FF02::1) équivaut à diffuser sur des adresses de diffusion IPv4 à l’aide de l’option de socket SO_BROADCAST . Cette adresse est parfois appelée groupe de multidiffusion à tous les nœuds. Pour les applications qui souhaitent simplement l’émulation de diffusion pour IPv6, cette approche est opérationnellement équivalente. Une différence notable avec IPv6, cependant, est que les multidiffusions sur l’adresse de groupe de multidiffusion tous les nœuds ne sont pas reçues par défaut (les diffusions IPv4 sont reçues par défaut). Les programmeurs d’applications doivent utiliser l’option de socket IPV6_ADD_MEMBERSHIP pour activer la réception de multidiffusion à partir de n’importe quelle source, y compris l’adresse du groupe de multidiffusion à tous les nœuds.

Notes

Dans IPv6, la sélection de l’interface est spécifiée dans la structure d’argument passée à l’option de socket de multidiffusion ou IOCTL.

 

Toutefois, pour des transmissions plus riches, plus robustes, plus sélectives et plus faciles à gérer vers plusieurs hôtes, les développeurs d’applications doivent envisager de passer à un modèle de multidiffusion.

Passage à la multidiffusion

Avec la multidiffusion, les programmeurs d’applications peuvent choisir de manière sélective une paire source/groupe particulière, ce qui permet un modèle de réception sélectif. La découverte de l’écouteur multidiffusion (MLD) sur IPv6 et la version 3 du protocole IGMPv3 (Internet Group Management Protocol) sur IPv4 prennent en charge la programmation de multidiffusion. En outre, la multidiffusion permet aux applications de bloquer (ou débloquer) spécifiquement les expéditeurs au sein d’un groupe, ce qui protège davantage les applications contre les radiodiffuseurs non autorisés. Cette fonctionnalité est disponible pour IPv4 (nécessite IGMPv3) et IPv6 (nécessite MLDv2).

Il existe deux scénarios principaux pour les programmeurs d’applications utilisant la multidiffusion : ceux qui effectuent le portage d’applications de diffusion (ou de multidiffusion) IPv4 vers IPv6 et ceux qui créent de nouvelles applications de multidiffusion IPv6.

Pour le portage d’applications existantes, il existe deux options pour passer à la multidiffusion IPv6 : utiliser des options de socket et utiliser des IOCTL.

  • L’utilisation des options de socket est une approche basée sur les changements, qui permet aux développeurs de modifier les propriétés de socket en fonction des besoins (par exemple, bloquer ou débloquer un expéditeur, ajouter une nouvelle source, etc.). Cette approche est plus intuitive et l’approche recommandée. Pour plus d’informations sur l’approche basée sur les changements de programmation de multidiffusion, consultez MLD et IGMP à l’aide de sockets Windows.
  • L’utilisation d’IOCTLs est une approche basée sur l’état final, car elle permet aux développeurs de fournir un état de socket entièrement configuré, y compris des listes d’inclusion et d’exclusion, avec un seul appel. Pour plus d’informations sur l’approche basée sur l’état final, consultez Programmation multidiffusion basée sur l’état final.

Pour ceux qui créent de nouvelles applications de multidiffusion IPv6, il est recommandé d’utiliser des options de socket, plutôt que d’utiliser des IOCTL.

Il existe une autre approche pour créer des applications de multidiffusion avec IPv6, qui implique l’utilisation de la fonction WSAJoinLeaf . Bien que l’utilisation de la fonction WSAJoinLeaf ne soit pas la pratique recommandée, il existe des situations qui peuvent dicter son utilisation. Par exemple, l’un des inconvénients de l’utilisation des options de socket sur Windows Server 2003 et versions antérieures est qu’elles sont spécifiques à la version IP. Sur ces anciennes versions de Windows, différentes options de sockets doivent être pour IPv6 et IPv4. Sur Windows Vista et versions ultérieures, les nouvelles options de socket qui peuvent être utilisées avec IPv4 et IPv6 sont prises en charge. La fonction WSAJoinLeaf , en revanche, est indépendante de la version IP et du protocole, et elle peut donc être une approche utile pour créer une application qui doit fonctionner avec plusieurs versions IP sur Windows Server 2003 et versions antérieures. L’utilisation de la fonction WSAJoinLeaf peut être plus appropriée dans certaines situations où l’agnosticisme de protocole et de version IP est nécessaire.