IP Multicast

O multicast de IP se enquadra na categoria de plano de dados não derootado e plano de controle não derootado. Todos os aplicativos desempenham uma função folha. Atualmente, a maioria das implementações multicast de IP usa um conjunto de opções de soquete propostas por Steve Deering para a IETF (Internet Engineering Task Force). Portanto, cinco operações são disponibilizadas:

  • IP_MULTICAST_TTL— Define o escopo de controles de tempo de vida de uma sessão multicast.
  • IP_MULTICAST_IF— Determina a interface a ser usada para multicasting.
  • IP_ADD_MEMBERSHI — ingressa em uma sessão multicast especificada.
  • IP_DROP_MEMBERSHIP– Sai de uma sessão multicast.
  • IP_MULTICAST_LOOP— Controla o loopback do tráfego multicast.

Definir o tempo de vida útil para um soquete ip-multicast é mapeado diretamente para usar o código de comando SIO_MULTICAST_SCOPE para WSAIoctl.

O método para determinar a interface IP a ser usada para multicasting é por meio de uma opção de soquete específica de TCP/IP, conforme descrito no anexo do Windows Sockets 2 Protocol-Specific. As três operações restantes são bem cobertas com a semântica Windows Sockets 2 descrita aqui.

O aplicativo abriria soquetes com sinalizadores c_leaf/d_leaf no WSASocket. Ele usaria o WSAJoinLeaf para se adicionar a um grupo multicast na interface padrão designada para operações multicast. Se o sinalizador no WSAJoinLeaf indicar que esse soquete é apenas um remetente, a operação de junção é essencialmente uma operação sem operação e nenhuma mensagem IGMP precisa ser enviada. Caso contrário, um pacote IGMP é enviado para o roteador para indicar interesses no recebimento de pacotes enviados para o endereço multicast especificado. Como o aplicativo criou soquetes c_leaf/d_leaf especiais usados apenas para executar multicast, a função closesocket padrão seria usada para sair da sessão multicast. O código de comando SIO_MULTIPOINT_LOOPBACK para WSAIoctl fornece um mecanismo de controle genérico para determinar se os dados enviados em um soquete d_leaf em um esquema de vários pontos não definidos também podem ser recebidos no mesmo soquete.

Observação

A versão winsock da opção IP_MULTICAST_LOOP é semanticamente diferente da versão UNIX da opção IP_MULTICAST_LOOP:

 

  • No Winsock, a opção IP_MULTICAST_LOOP se aplica somente ao caminho de recebimento.
  • Na versão UNIX, a opção IP_MULTICAST_LOOP se aplica ao caminho de envio.

Por exemplo, aplicativos ON e OFF (que são mais fáceis de rastrear do que X e Y) ingressam no mesmo grupo na mesma interface; application ON define a opção IP_MULTICAST_LOOP ativada, o aplicativo OFF define a opção IP_MULTICAST_LOOP desativada. Se ON e OFF forem aplicativos Winsock, OFF poderá enviar para ON, mas ON não poderá ser enviado para OFF. Por outro lado, se ON e OFF forem UNIX aplicativos, ON poderá enviar para OFF, mas OFF não poderá enviar para ON.