O IGMP um mecanismo para troca de informaes entre um dispositivo e o roteador multicast mais prximo, permitindo determinar se um pacote multicast deve ser enviado a uma rede especfica, sendo utilizado para entrar e sair de grupos multicast. considerado uma extenso do ICMP, suas mensagens so encapsuladas nos datagramas IP e sua verso 2 est descrita integralmente na RFC 2236. Neste estudo trataremos de suas principais caractersticas. Atualmente o IGMPse encontra na verso 2 e j existem implementaes da verso 3 beta. Abordaremos as trs verses, enfatizando a verso 2 que a utilizada no projeto.
IGMP V1 Todas as especificaes desta verso esto descritas na RFC 1112 que parte integrante do Anexo 3. Abordaremos seu funcionamento bem como o formato das suas mensagens. As mensagens podem ser de dois tipos: pergunta por participao Membership query ou relatrio de participao Membership report. Quando alguma aplicao inicia um socket multicast a pilha de protocolos TCP/IP do dispositivo envia, automaticamente, uma mensagem do tipo relatrio de participao. Como esta mensagem enviada referente a um determinado grupo multicast, indicando que deseja participar deste grupo, o dispositivo tambm determina o endereo MAC deste grupo. O roteador transmite, a cada 60 segundos e a todos os dispositivos da rede, mensagens do tipo relatrio de participao a fim de verificar se existe pelo menos um participante dentro da sub-rede, interessado em receber trfego do grupo. Uma vez que o roteador no receba resposta ele envia 3 mensagens do tipo pergunta por participao, em espaos de 60 segundos. Quando no recebe resposta essas 3 mensagens o 2 roteador determina o fim do trfego daquele grupo, para aquela sub-rede. As mensagens do tipo relatrio de participao, quando originadas no roteador, so destinadas a todos os dispositivos da rede, atravs do IP 224.0.0.1 e possuem valor de TTL igual a 1. O pacote IGMPv1 possui 64 bits, com os campos de verso, tipo, checksum e endereo do grupo multicast. Como pode ser visto na prxima Figura 13.
Figura 1: Formato da mensagem do IGMPv1, possui 8 bytes e os campos de verso, tipo, verificao de erro e endereo do grupo multicast.
IGMP V2 O IGMPv2 veio substituir a sua verso anterior e, atualmente, a verso padro. As mensagens podem ser de quatro tipos: pergunta por participao Membership query, relatrio de participao para a verso 1 Membership report, relatrio de participao para a verso 2 Membership report e sair do grupo Leave group. Seu funcionamento , basicamente, o mesmo da verso anterior. A principal diferena existncia de um novo tipo de mensagem, o sair do grupo. Atravs desta mensagem o dispositivo pode comunicar ao roteador multicast local que possui a inteno de sair do grupo, que envia uma mensagem do tipo relatrio de participao para aquele determinado grupo a fim de determinar se existe mais algum outro dispositivo interessado em continuar recebendo o trfego daquele grupo. Se no existir resposta em aproximadamente trs segundos o roteador para de encaminhar o trfego para aquela interface. A adio da mensagem do tipo sair do grupo reduziu, quando comparada com a verso anterior, a latncia de sada de um grupo. Fazendo com que o trfego desnecessrio e sem utilidade seja cessado muito antes. Com o intuito de evitar trfego desnecessrio de mensagens do tipo relatrio de participao duas tcnicas so utilizadas: 3 Quando um dispositivo recebe uma mensagem do tipo pergunta por participao, antes de enviar um relatrio de participao inicializado um contador para cada participao em grupo. Cada contador configurado com uma escolha randmica de zero a D segundos. Quando este tempo expira enviada a mensagem de relatrio de participao para aquele grupo. Logo, as mensagens de relatrio de participao so propagadas dentro de um intervalo de D segundos. Quando uma mensagem de relatrio de participao enviada ela possui como endereo de destino o IP do grupo a qual ela se refere e o campo TTL tem valor igual a 1, com isso os outros participantes que estejam na mesma rede verificam que j foi enviado o relatrio. Se um dispositivo percebe que j foi enviada uma mensagem de relatrio para o grupo ao qual ele pertence o seu contador automaticamente paralisado no gerando a sua mensagem de relatrio. Usualmente enviada como resposta apenas uma mensagem de relatrio para cada grupo dentro de uma sub-rede. A Figura 11 a seguir mostra o diagrama de tempo da operao do IGMP v2.
Figura 2: Diagrama de tempo na operao do IGMPv2. 4
O pacote IGMPv2 possui 64 bits, com os campos de tipo, tempo mximo de espera para uma resposta, checksum e endereo do grupo multicast. Como pode ser visto na prxima Figura 15.
Figura 3: Formato da mensagem IGMPv2, possui 8 bytes com os campos de tipo, tempo mximo de espera para uma resposta, verificao de erro e endereo do grupo multicast.
Os campos do pacote IGMPv2 possuem as seguintes informaes: Tipo: especifica o tipo de mensagem, podendo assumir como valores: 0x11: especifica uma mensagem de pergunta por participao. enviada pelo roteador multicast. Existem dois subtipos Pergunta por Participao Comum: utilizada para reconhecer quais grupos possuem membros em uma determinada interface. Pergunta por Participao a um Grupo Especfico: utilizada para determinar se um grupo especfico possui membros em uma dada interface. 0x16: Especifica uma mensagem de relatrio de participao. enviada por um dispositivo com a finalidade de sinalizar sua participao em um grupo especfico. 0x17: Especifica uma mensagem de sair do grupo. enviada por um dispositivo multicast. Tempo Mximo de Resposta: este campo utilizado em mensagens de pergunta por participao. Especifica o tempo mximo que um dispositivo espera at o envio do relatrio correspondente. A variao deste valor permite ao roteador multicast acertar a latncia de sada. Usa como base o tempo entre o ltimo dispositivo deixando um grupo 5 e o tempo que o protocolo de roteamento notificado que no existem mais membros. Checksum: Contem o checksum com 16 bits. utilizado em todos os tipos de mensagens. Endereo de Grupo: Especifica um endereo vlido de um grupo multicast. utilizado em mensagens do relatrio.
IGMP V3 Esta verso atualmente est em desenvolvimento, ser o prximo passo na evoluo do IGMP. A partir desta verso os receptores de trfego multicast indicaro ao roteador de qual grupo desejam receber trfego assim como de qual fonte desejam receber este trfego multicast. J possui implementaes nas verses mais atualizadas dos sistemas operacionais do Windows, Macintosh e Unix. As especificaes atuais podem ser encontradas sob forma de um esboo draft-ietf-idmr-igmp-v3-X no IETF.
OPERAES NOS ROTEADORES MULTICAST Quando um dispositivo tenta participar de um grupo multicast, os roteadores multicast recebem mensagens do tipo relatrio de participao e criam entradas na sua base de dados para grupos locais. Esta base de dados armazena a participao em grupos de suas redes diretamente conectadas. Cada entrada tem o formato [grupo, rede diretamente conectada], indicando que aquela rede tem ao menos um participante do grupo. A informao contida na sua base de dados para grupos locais utilizada para encaminhar os pacotes multicast. Quando o roteador recebe um pacote multicast, este encaminhado as interfaces que contenham dispositivos pertencentes quele grupo.