Muitas vezes necessitamos que uma aplicação específica envie uma informação para diversos hosts. Para realizarmos essa tarefa, temos a disposição três estrátégias:
- Unicast - Nessa estratégia, enviamos a informação separadamente para cada host de destino. É gerado um pacote de dados idêntico para cada receptor, o que, obviamente, gera um grande desperdício de largura de banda.
- Broadcast - Ao contrário da anterior, nessa estratégia é gerado apenas um pacote de dados que é distribuído para TODAS as estações da rede. O problema com essa estratégia é que não temos controle sobre os dados, nem como definir quem deve ou não receber as informações. Além disso, por questòes de segurança, os roteadores na internet normalmente bloqueiam os pacotes broadcast, ficando estes limitados a um segmento de rede.
- Multicast - Este é considerada o caminho intermediário entre as estratégias. Nele, apenas um pacote da dados é enviado, mas só receberão ele os hosts que estiverem no "grupo de multicast". Para que isso aconteça, os roteadores devem saber onde estão os membros de um grupo, e traçar a menor rota para o pacote. É essa estratégia que vamos abodar nesse trabalho.
Abaixo, uma figura que ilustra as três estratégias expostas:
Podemos resumir o modelo de serviço no multicast IP assim:
- Transmissores enviam para um endereço multicast
- Receptores indicam que estão interessados em um endereço de multicast
- Roteadores fornecem a estrutura para ligar ambos
Tecnicamente, enviar um pacote multicast é o mesmo que enviar um pacote unicast, a não ser pelo endereço, que tem algumas características especiais. O endereço de destino será o endereço de um grupo multicast, definido como um endereço classe D no IP V4. Para lembrar:
O host deve solicitar ao roteador a inscrição no grupo, para que roteador encaminhem os pacotes do grupo para ele. Para fazer isso, o host utiliza o protocolo IGMP (Internet Group Management Protocol), que define como deve ser feito o pedido de associção aos grupos, bem como define o tempo em que cada roteador vai pedir a renovação da associação.
Resumidamente, o protocolo IGMP funciona da seguinte maneira:
- Quando o primeiro host entra num grupo, ele programa sua interface para receber as mensagens destinadas ao grupo e envia uma mensagem IGMP na rede, informando a associação no grupo. Essa mensagem irá informar os roteadores da rede que há um receptor para aquele grupo na sub-rede.
- Os roteadores armazenam essa informação, e solicitam que o tráfego destinado aquele grupo seja entregue naquela sub-rede.
- Periodicamente, os roteadores enviam uma mensagem IGMP perguntando se ainda existem membros do grupo na rede. Quando o host que é membro de um grupo recebe essa mensagem, ele responde afirmativamente para o roteador, a menos que algum outro host já tenha respondido.
- Quando um host não quer mais receber tráfego destinado a um grupo, ele programa sua interface para rejeitar os pacotes do grupo, na próxima verificação do roteador este host não responderá.
Na segunda versão do protocolo IGMP, existe um comando LEAVE que reduz o tempo que um host leva para sair de um grupo.