IP Multicast

O multicast de IP se enquadra na categoria de plano de dados não derootado e plano de controle não derooted. Todos os aplicativos desempenham uma função folha. Atualmente, a maioria das implementações de 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 tempo de vida útil, controla o escopo de uma sessão multicast.
  • IP_MULTICAST_IF – determina a interface a ser usada para multicast.
  • 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 a vida útil de um soquete de multicast de IP é 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 Windows Sockets 2 Protocol-Specific Anexo. As três operações restantes são bem cobertas com a semântica do Windows Sockets 2 descrita aqui.

O aplicativo abriria soquetes com sinalizadores c_leaf/d_leaf no WSASocket. Ele usaria WSAJoinLeaf para se adicionar a um grupo multicast na interface padrão designada para operações multicast. Se o sinalizador em WSAJoinLeaf indicar que esse soquete é apenas um remetente, a operação de junção é essencialmente uma operação sem operações 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 derota 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, os aplicativos ON e OFF (que são mais fáceis de rastrear do que X e Y) ingressam no mesmo grupo na mesma interface; O aplicativo 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 aplicativos UNIX, ON poderá enviar para OFF, mas OFF não poderá enviar para ON.