Migración de aplicaciones de difusión a IPv6
En esta sección se describen los procedimientos recomendados para migrar una aplicación de difusión IPv6 a las funcionalidades de multidifusión disponibles con Windows Sockets.
Comparación de IPv4 con IPv6
La consideración más importante al preparar la preparación para migrar una aplicación de difusión IPv4 a IPv6 es la siguiente: IPv6 no tiene ningún concepto implementado de difusión. En su lugar, IPv6 usa multidifusión.
La multidifusión para IPv6 puede emular las funcionalidades de difusión tradicionales que se encuentran en IPv4. Establecer la opción de socket IPV6_ADD_MEMBERSHIP con la dirección IPv6 establecida en el ámbito local de vínculo todas las direcciones de nodos (FF02::1) equivale a la difusión en direcciones de difusión IPv4 mediante la opción de socket SO_BROADCAST . Esta dirección se denomina a veces el grupo de multidifusión de todos los nodos. En el caso de las aplicaciones que simplemente quieren emulación de difusión para IPv6, ese enfoque es operativomente equivalente. Sin embargo, una diferencia notable con IPv6 es que las multidifusión en la dirección del grupo de multidifusión de todos los nodos no se reciben de forma predeterminada (las difusiones IPv4 se reciben de forma predeterminada). Los programadores de aplicaciones deben usar la opción de socket IPV6_ADD_MEMBERSHIP para habilitar la recepción de multidifusión desde cualquier origen, incluida la dirección del grupo de multidifusión de todos los nodos.
Nota:
En IPv6, la selección de interfaz se especifica en la estructura de argumentos que se pasa a la opción de socket de multidifusión o IOCTL.
Pero para transmisiones más completas, más sólidas, más selectivas y más manejables a varios hosts, los desarrolladores de aplicaciones deben considerar la posibilidad de pasar a un modelo de multidifusión.
Mover a Multidifusión
Con la multidifusión, los programadores de aplicaciones pueden elegir de forma selectiva un par de origen o grupo determinado, lo que permite un modelo de recepción selectiva. La detección del agente de escucha de multidifusión (MLD) en IPv6 y la versión 3 del Protocolo de administración de grupos de Internet (IGMPv3) en IPv4 admiten la programación de multidifusión. Además, la multidifusión permite a las aplicaciones bloquear (o desbloquear) remitentes específicamente dentro de un grupo, protegiendo aún más las aplicaciones de los organismos de radiodifusión no autorizados. Esta funcionalidad está disponible para IPv4 (requiere IGMPv3), así como IPv6 (requiere MLDv2).
Hay dos escenarios principales para los programadores de aplicaciones que usan multidifusión: los que se trasladan de aplicaciones de difusión IPv4 (o multidifusión) a IPv6 y los que crean nuevas aplicaciones de multidifusión IPv6.
Para migrar aplicaciones existentes, hay dos opciones para pasar a multidifusión IPv6: usar opciones de socket y usar IOCTLs.
- El uso de opciones de socket es un enfoque basado en cambios, que permite a los desarrolladores cambiar las propiedades del socket según sea necesario (por ejemplo, bloquear o desbloquear un remitente, agregar un nuevo origen, etc.). Este enfoque es más intuitivo y el enfoque recomendado. Para obtener más información sobre el enfoque basado en cambios para la programación de multidifusión, consulte MLD e IGMP con Windows Sockets.
- El uso de IOCTLs es un enfoque basado en estado final, ya que permite a los desarrolladores proporcionar un estado de socket totalmente configurado, incluidas las listas de inclusión y exclusión, con una llamada. Para obtener más información sobre el enfoque basado en estado final, vea Programación de multidifusión basada en estado final.
Para aquellos que crean nuevas aplicaciones de multidifusión IPv6, el procedimiento recomendado es usar opciones de socket, en lugar de usar IOCTLs.
Hay otro enfoque para crear aplicaciones de multidifusión con IPv6, lo que implica el uso de la función WSAJoinLeaf . Aunque el uso de la función WSAJoinLeaf no es la práctica recomendada, hay situaciones que pueden dictar su uso. Por ejemplo, una desventaja de usar las opciones de socket en Windows Server 2003 y versiones anteriores es que son específicas de la versión ip. En estas versiones anteriores de Windows, las distintas opciones de sockets deben ser para IPv6 e IPv4. En Windows Vista y versiones posteriores, se admiten nuevas opciones de socket que se pueden usar con IPv4 e IPv6. La función WSAJoinLeaf , en cambio, es independiente de la versión de IP y del protocolo y, por tanto, puede ser un enfoque útil para compilar una aplicación que debe funcionar con varias versiones de IP en Windows Server 2003 y versiones anteriores. El uso de la función WSAJoinLeaf puede ser más adecuado en determinadas situaciones en las que se requiere el protocolo y el independiente de la versión de IP.