2. Difusão Seletiva IP

Pelo fato da estratégia MBone estar vinculada a difusão de seus pacotes na Internet, é natural a sua integração imediata com a suíte de protocolos utilizada nesta rede, no caso, os protocolos da arquitetura Internet TCP/IP [COM 91].

Esta arquitetura provê basicamente dois conjuntos de serviços: no nível inferior, um serviço de rede não-orientado à conexão, fornecido pelo Internet Protocol (IP); no nível superior, um serviço de transporte orientado à conexão, fornecido pelo Transmission Control Protocol (TCP), ou um serviço sem conexão que utiliza o protocolo IP para transportar as mensagens, fornecido pelo User Datagram Protocol (UDP).

Aplicações

Transmission Control Protocol

User Datagram Protocol

Internet Protocol

Redes Locais

Figura 2.1. - Camadas de protocolos da arquitetura Internet TCP/IP

A distribuição dos pacotes da estratégia MBone, como será visto, tem por pressuposto a utilização das facilidades de multicast (difusão seletiva) definidas para o protocolo IP. Assim sendo, julgamos essencial fornecer uma visão deste protocolo de camada de rede, mesmo que superficialmente. Uma vez compreendido o protocolo IP, detalharemos o funcionamento das facilidades de difusão seletiva propostas para este protocolo, e as vantagens obtidas com a utilização destas facilidades.

2.1 Protocolo IP

Uma rede TCP/IP é constituída por sub-redes conectadas através de elementos denominados gateways. Os gateways, através do protocolo IP, são responsáveis pelo encaminhamento dos blocos de dados, denominado datagramas, do host de origem ao host de destino, que são identificados por endereços IP. O protocolo também fornece o serviço de fragmentação e remontagem de datagramas longos que precisam ser separados em pacotes de tamanho menor pela limitação do tamanho do pacote imposta por algumas redes por onde o datagrama passa até chegar ao destino. Nesta camada é realizado também o mapeamento de endereços IP em endereços físicos, e vice-versa [COM 91].

O serviço oferecido pelo IP é sem conexão. A comunicação é não confiável, sem controle de fluxo e sem nenhum controle de erros nos dados transmitidos. É efetuado um controle de erros apenas nos dados contidos no cabeçalho, o que é realizado através de um campo do datagrama denominado header checksum

2.1.1 Formato dos Datagramas

A figura abaixo mostra o formato de um datagrama IP [COM 91]. Na parte superior da figura estão representadas as posições dos bits em cada palavra de 32 bits.

Figura 2.2. - Formato de um datagrama IP

O campo vers identifica a versão do protocolo IP sendo usada, que determinará o formato do cabeçalho. O campo seguinte, hlen (Internet Header Length), indica o comprimento do cabeçalho em número de palavras de  trinta e dois bits, servindo para indicar o início do campo de dados. Ao lado do hlen, o campo service type armazena os parâmetros que determinam a qualidade do serviço desejada. Estes parâmetros são usados como orientação na seleção de serviços de transmissão de dados das sub-redes. O campo total length fornece o tamanho total do datagrama em octetos, incluindo o cabeçalho e a parte de dados. O comprimento máximo de um datagrama é de 65.535 octetos. Porém, este tamanho é impraticável na maioria dos computadores. Na verdade, em uma rede TCP/IP, os computadores devem estar preparados para aceitar datagramas de 576 octetos. Podem, porém, ser enviados datagramas superiores a este tamanho, desde que o emissor tenha conhecimento de que o destinatário está apto para aceitá-los.

Os campos identification, flags e fragment offset são usados no procedimento de fragmentação e remontagem de datagramas. O campo flags serve ao controle da fragmentação, indicando se um datagrama pode ou não ser fragmentado, e se houve fragmentação, enquanto que o campo fragment offset indica o posicionamento do fragmento, em unidades de octetos, dentro do datagrama original. Quando o datagrama não for fragmentado, ou representar o primeiro fragmento, este campo vale zero.

O campo time to live (TTL) é utilizado para limitar o tempo de transmissão dos datagramas. Este campo recebe um valor inicial quando o datagrama é criado, e é decrementado em uma unidade toda vez que é retransmitido por um gateway. Quando o conteúdo atinge o valor zero, o datagrama é descartado. Este campo é utilizado para detectar que o datagrama estava em um laço sem fim ou o que havia um grande congestionamento. É utilizado também, na estratégia MBone, para limitar o escopo de distribuição de pacotes com difusão seletiva, como será visto ao longo deste trabalho.

O campo protocol identifica o protocolo de transporte usuário do IP, cujos dados são transportados na parte de dados do datagrama. A seguir, o campo header checksum serve para identificar erros no datagrama, que podem ter ocorridos durante a transmissão ou na atualização do cabeçalho nos nodos intermediários. Desta forma, este campo é recalculado e verificado a cada ponto onde o cabeçalho é processado. Os campos source IP e destination IP address indicam, respectivamente, os endereços dos hosts origem e destino.

Em seguida, o campo IP options é usado para fornecer informações de segurança, roteamento na origem, relatórios de erro, depuração, etc. Este campo possui tamanho variável, podendo conter nenhuma ou várias opções. É dividido em duas partes, uma indicando a classe da opção e, a outra, o número da opção. O campo padding, de tamanho variável, é usado para garantir que o comprimento do cabeçalho do datagrama seja sempre um múltiplo inteiro de trinta e dois bits. Por fim, o campo data carrega os dados do datagrama IP.

2.1.2 Endereçamento

Nas redes TCP/IP, cada host é identificado por um endereço inteiro denominado endereço internet, ou endereço IP, que é concebido de forma a tornar o roteamento eficiente [BRI 94]. Este endereço engloba a identificação da rede a que o host pertence e a identificação única da máquina na rede. Assim, os bits do endereço IP dos hosts de uma dada rede compartilham o mesmo prefixo comum, que identifica a rede, conforme será visto a seguir. Cada host em uma rede TCP/IP é identificado unicamente por um endereço internet de trinta e dois bits que é usado para a comunicação com o host.

Cada endereço IP é formado por um par de campos: o identificador da sub-rede e o identificar do host. A capacidade de representação de endereços de sub-redes e estações é limitada pelo número de bits destinados a cada campo, que é definido de acordo com uma das cinco classes de endereços IP: A, B, C, D e E. A forma como os trinta e dois bits que formam o endereço é disposto para a representação de cada campo varia de acordo com a classe da rede utilizada. A identificação da classe de um dado endereço é feita através dos bits iniciais do endereço. A figura abaixo apresenta as cinco classes de endereçamento IP.



Figura 2.3. - Classes de endereçamento IP

A classe A é usada para as redes que possuem mais de 216 (isto é, 65.536) estações. Nesta classe estão disponíveis 7 bits para a identificação da sub-rede e 24 bits para a identificação das estações. A classe B é usada para redes de tamanho intermediário que possuem entre 28 (256) e 216 estações. Nos endereços desta classe são destinados 14 bits para o identificador da rede e 16 bits para o host. A classe C atende tipicamente a faixa das redes locais, que possuem menos de 28 máquinas. Nesta classe são reservados 24 bits para a identificação das sub-redes e apenas oito bits para a identificação das estações. A classe D é utilizada para identificar endereços de difusão seletiva. Esta classe é a utilizada pelos datagramas de dados do MBone, e será vista em maiores detalhes no item 2.3.1. Por fim, a classe E é reservada para uso futuro.

Existem algumas funcionalidades adicionais providas pela camada IP que fazem uso de valores preestabelecidos nos identificadores de sub-redes e de estações no endereço IP. A função direct broadcast é uma delas [COM 91]. Através desta função é possibilitado o envio de uma mensagem a uma sub-rede destino, de forma que seja feita a sua difusão a todas as estações dessa rede. Para isto, o campo identificador da estação é preenchido com valores "1"  para os bits e o identificador da rede contém o identificador da sub-rede destino. Outra função existente é a denominada limited broadcast, que possibilita o envio de uma mensagem para todas as estações locais, preenchendo ambos os campos do endereço com valores "1" .

Os endereços IP são demasiado grandes para a notação decimal (como já foi dito, possuem 32 bits). Assim, é utilizado a notação decimal pontuada, onde os 32 bits são divididos em quatro grupos de 8 bits cada. Por exemplo, dado um endereço IP 00000111 00000011 00001111 00000001, a sua representação seria 7.3.15.1.

Para estender a capacidade de endereçamento IP é utilizado um mecanismo de subendereçamento [BRI 94]. Este mecanismo consiste da utilização da parte do identificador da estação na identificação de sub-redes, mapeamento só reconhecido no âmbito da rede que adotou este subendereçamento. A interpretação dos subendereços em uma determinada rede é realizada utilizando uma máscara de subendereçamento. Tal máscara é uma seqüência de bits onde é utilizado o valor "1"  para os bits do endereço correspondentes ao identificador da sub-rede e o valor "0"  para indicar os bits usados como identificador da estação.

2.2 Difusão Seletiva em Hardware

Muitas tecnologias de hardware de rede local contém mecanismos para enviar pacotes para múltiplos destinos na rede simultaneamente [COM 91]. A forma mais comum de transmissão para múltiplos pontos é denominada broadcast (difusão). Em transmissões por difusão, a rede entrega uma cópia do pacote para todos os seus nodos. Em tecnologias de barra, como Ethernet, a transmissão pode ser implementada através de uma transmissão de um simples pacote. Já em rede compostas de comutadores com conexões ponto-a-ponto, softwares devem implementar difusão para enviar cópias do pacote ao longo de conexões individuais até que todos os nodos tenham recebido uma cópia.

Em muitas tecnologias, a especificação de transmissões de difusão é feita através da utilização de um endereço especial como destino, denominado endereço de difusão. As redes Ethernet, por exemplo, que tem endereços físicos constituídos de quarenta e oito bits, marcam todos os seus bits com o valor "1"  para indicar difusão. O hardware de cada máquina reconhece o endereço de difusão e interpreta os pacotes como endereçados para seus próprios endereços, de modo que apenas uma cópia precisa ser enviada, e todos os nodos da rede recebem o quadro.

Existe também, como já foi dito anteriormente, difusão a nível da camada IP, que utiliza valores preestabelecidos nos identificadores das sub-redes e das estações [COM 91].

O endereçamento com difusão possui, porém, a grande desvantagem de que consume recursos de todas as máquinas, quando, muitas vezes, várias destas máquinas destino irão descartar seus datagramas logo após os receberem, por não possuírem interesse naquela informação.

Existe também uma outra forma de transmissão para muitos pontos suportada por algumas tecnologias de hardware, a difusão seletiva[COM 91]. Diferente do uso da difusão, com difusão seletiva se permite que cada máquina escolha se deseja participar de uma transmissão. Tipicamente, estão reservados dentro de cada tecnologia de hardware um grande conjunto de endereços para uso com difusão seletiva. Quando um grupo de máquinas deseja se comunicar, elas escolhem um particular endereço de difusão seletiva para utilizarem para a sua comunicação. As interfaces de rede são configuradas para reconhecer o endereço selecionado, e todas as máquinas pertencentes ao grupo passam a receber uma cópia de cada pacote enviado para o endereço de difusão seletiva.

O endereçamento com difusão seletiva pode ser visto como uma generalização de todas as outras formas de endereçamento. Pode-se pensar, por exemplo, que a forma de endereçamento convencional unicast é um endereçamento com difusão seletiva onde apenas uma máquina participa de um grupo, e, de forma similar, que o endereçamento de difusão é uma forma de endereçamento com difusão seletiva onde todas as máquinas são membros do grupo de difusão seletiva.

Na Ethernet, é utilizado o bit de mais baixa ordem do octeto de mais alta ordem para distinguir entre endereços unicast tradicionais (valor "0" para o bit) e endereços de difusão seletiva (valor "1"). Utilizando a notação hexadecimal pontuada, o bit de difusão seletiva é dado por:

        01.00.00.00.00.0016


Inicialmente, a interface de rede é configurada para aceitar pacotes destinados para o endereço de difusão Ethernet e o endereço físico da máquina. Entretanto, a interface pode ser reconfigurada facilmente para reconhecer um pequeno conjunto de endereços de difusão seletiva [COM 91].

2.3. Difusão Seletiva IP

A forma de endereçamento difusão seletiva IP é uma abstração da difusão seletiva em hardware. Ela permite que um datagrama IP seja transmitido para um conjunto de máquinas que formam um grupo de difusão seletiva identificado por um endereço IP único. Os grupos de difusão seletiva são formados por um conjunto de zero ou mais máquinas, que podem estar espalhadas ao longo de redes físicas separadas. A entrega de um datagrama de difusão seletiva é realizada com as mesmas características de confiabilidade que os datagramas unicast regulares IP, o que significa que não há garantia contra perda, retardo, duplicação ou entrega fora de ordem para nenhum dos membros do grupo [COM 91].

Os membros de um grupo são dinâmicos: estações podem entram ou deixar grupos a qualquer momento [DEE 89]. Não há restrições para o número de membros de um grupo, e uma estação pode participar de mais de um grupo simultaneamente. Pertencer a um grupo determina se o host receberá os datagramas enviados para o grupo com difusão seletiva, sendo permitido que uma estação envie datagramas para um grupo mesmo sem pertencer a ele.

Um grupo pode ser permanente ou transiente. Grupos permanentes são aqueles que possuem um endereço conhecido, fixo. Apenas o endereço é permanente. Os membros deste grupo não são permanentes, e num dado momento um grupo permanente pode ter qualquer número de membros, inclusive zero. Os endereços com difusão seletiva IP que não são reservado para nenhum grupo permanente estão disponíveis para atribuição dinâmica de grupos temporários que existem somente enquanto possuem membros. Estes grupos são criados quando necessário, e descartados quando o número de membros atinge zero ou seu tempo de vida termina.

Tabela 2.1. - Endereços de alguns grupos de difusão seletiva IP permanentes

Endereço

Utilização

224.0.0.1

Todos os hosts em uma LAN

224.0.0.2

Todos roteadores em uma LAN

224.0.0.5

Todos roteadores OSPF em uma LAN

224.0.0.6

Todos roteadores OSPF designados em uma LAN

A difusão seletiva IP pode ser utilizado em um rede física simples ou através de uma internet. Neste último caso, os datagramas são transmitidos por gateways com capacidade de difusão seletiva denominados roteadores de difusão seletiva, que podem ser os mesmos ou diferentes dos gateways internet [DEE 89]. Uma estação transmite um datagrama de difusão seletiva como uma difusão seletiva de rede local, que atingirá todos os membros do grupo de difusão seletiva pertencentes a rede local. Se o datagrama possuir um IP time-to-live maior que um, o roteador de difusão seletiva ligado a rede transmite o pacote para todas as outras redes que possuem membros do grupo. Se estes membros forem atingíveis dentro do IP time-to-live, o roteador de difusão seletiva pertencente a rede completa a entrega transmitindo o datagrama como difusão seletiva local.

Figura 2.4. - Difusão seletiva: transmitindo um pacote para um grupo

O conceito de endereçamento com difusão seletiva foi criado por Steve Deering, e mais tarde desenvolvido na Xerox PARC. A difusão seletiva IP está descrita em [DEE 89].

2.3.1 Endereçamento da Difusão Seletiva IP

Como na difusão seletiva de hardware, a difusão seletiva IP usa o endereço destino do datagrama para indicar entrega com difusão seletiva. A difusão seletiva IP utiliza a classe D de endereçamento IP, conforme apresentado na figura abaixo [COM 91].

Figura 2.5. - Formato do endereço IP classe D

Os primeiros quatros bits contém o valor "1110" e identificam o endereço como difusão seletiva. Os vinte e oito bits seguintes indicam um grupo de difusão seletiva específico. O campo identificação do grupo não indica a origem do grupo, nem contém um endereço de rede como os endereços classes A, B e C. Expressados na notação decimal pontual, os endereços de difusão seletiva variam entre 224.0.0.0 e 239.255.255.255. O endereço 224.0.0.0 é reservado, não podendo ser atribuído para nenhum grupo. Além disso, o endereço 224.0.0.1 é permanentemente atribuído para o grupo all hosts, que inclui todos as estações e gateways da rede local participantes de difusão seletiva IP. O grupo all hosts é utilizado para atingir máquinas que participam de difusão seletiva IP em uma rede local. Não existe nenhum endereço de difusão seletiva IP que englobe todos os hosts na internet.

2.3.2. Mapeamento entre Endereços de Difusão Seletiva IP e Endereços de Difusão Seletiva em Redes Locais

O mapeamento entre o endereço do grupo IP e o endereço físico da rede local é realizado de forma diferente, dependendo da rede local utilizada. Para redes Ethernet, o mapeamento entre o endereço do grupo IP e o endereço de difusão seletiva Ethernet é realizado colocando os vinte e três bits de mais baixa ordem do endereço IP nos vinte e três bits do endereço especial de difusão seletiva Ethernet 01.00.5E.00.00.0016 [DEE 89]. Por exemplo, um endereço de difusão seletiva IP 224.0.0.1 torna-se o endereço de difusão seletiva Ethernet 01.00.5E.00.00.0116.

Como um endereço de difusão seletiva IP possui vinte e oito bits significantes que identificam o grupo, mais de um grupo pode ser mapeado para o mesmo endereço de difusão seletiva Ethernet. Porém, o conjunto de endereços suportados pelo IP é suficientemente grande para que a chance de dois grupos possuírem endereços com todos os vinte e três bits de baixa ordem idênticos seja muito pequena. Além disso, o uso de uma parte fixa do endereço Ethernet para o mapeamento de difusão seletiva IP torna a depuração mais fácil de eliminar a interferência entre o IP e os outros protocolos que compartilham o Ethernet. Porém, existe a possibilidade de que alguns datagramas de difusão seletiva sejam recebidos por máquinas mesmo sem serem destinados para elas, de forma que o software IP deve checar cuidadosamente o endereço do todos os datagramas recebidos e descartar os datagramas não desejados.

Quando forem utilizadas outras redes locais que suportam também endereçamento com difusão seletiva, como as redes em anéis ou barras que seguem o padrão IEEE 802.2, deve ser utilizado o mesmo modo que o da rede Ethernet para o propósito de enviar datagramas de difusão seletiva IP. Porém, em redes que suportam difusão mas não difusão seletiva, todos os grupos IP devem ser mapeados para um endereço local, tendo como custo um aumento do overhead em todos os host locais, mesmo que alguns destes não participem do grupo [DEE 89].

2.3.3. Níveis de Conformidade

Uma estação participa de difusão seletiva IP em conformidade com um dos três níveis existentes [DEE 89], conforme a tabela abaixo:

Tabela 2.2. - Níveis de conformidade na participação de difusão seletiva IP

Nível

Significado

0

Host não envia nem recebe difusão seletiva IP

1

Host pode enviar mas não receber difusão seletiva IP

2

Host pode enviar e receber difusão seletiva IP

Atualmente, não há exigências que todas as implementações IP suportem difusão seletiva. Os hosts pertencentes ao nível 0 são aqueles que, de modo geral, não são afetados pela atividade de difusão seletiva. A exceção acontece em alguns tipos de redes locais, onde a presença de máquinas de nível 1 ou 2 causem a entrega errônea de datagramas de difusão seletiva para máquinas de nível 0. Estes datagramas podem ser facilmente identificados pela presença do endereço IP classe D em seu campo destination address, e devem ser descartados pelas máquinas de nível 0.

No nível 1, as máquinas tem a possibilidade de participar de alguns serviços baseados em difusão seletiva, como a localização de um recurso ou a informação de um estado de alguma variável, mas não possuem as condições para participar de nenhum grupo. É possível transformar uma implementação nível 0 para nível 1 facilmente, necessitando apenas de uma pequena quantidade de modificações no código fonte. O item 2.3.4.1 apresenta as extensões necessárias de serem incluídas em uma implementação de um host para que ele pertença a este nível.

Por fim, no nível 2, um host pode entrar e sair de um grupo de difusão seletiva, assim como pode enviar datagramas para grupos. Este nível requer a implementação do Internet Group Management Protocol (IGMP) [DEE 89] e a extensão do módulo IP e de interfaces de serviço da rede local dentro da máquina. Nos itens adiante serão explicados em mais detalhes estas extensões.

2.3.4. Modificações Necessárias para uma Implementação de Difusão Seletiva IP

Para indicar as extensões necessárias para permitir difusão seletiva em uma implementação de um host será utilizado o modelo de implementação [DEE 89] apresentado na figura 2.6. Este modelo tem propósito somente de exposição, e não deve estar necessariamente construído desta forma na implementação real. Neste modelo, o ICMP (Internet Control Message Protocol) e o IGMP (em máquinas de nível 2) estão considerados como implementados dentro da camada IP, e o mapeamento do endereçamento IP para o endereçamento da rede local é considerado responsabilidade da camada de rede local.

Figura 2.6 - Modelo de uma implementação IP de uma estação

A seguir, serão descritos separadamente os dois serviços que podem ser fornecidos pelas implementações de difusão seletiva IP: envio de datagramas de difusão seletiva IP e recebimento de datagramas de difusão seletiva IP.

2.3.4.1. Extensões necessárias para envio de datagramas de difusão seletiva IP

Os datagramas de difusão seletiva IP são enviados usando a mesma operação Send IP usada para enviar datagramas unicast IP, porém desta vez o nível superior especifica o endereço do grupo IP ao invés de um endereço individual IP. Entretanto, é desejável ou mesmo necessário algumas extensões na interface de serviço IP para possibilitar o envio de datagramas de difusão seletiva [DEE 89].

O software IP deve permitir que a aplicação especifique um IP time-to-live dos datagramas a serem transmitidos. Se a aplicação optar por não escolher um time-to-live específico, é utilizado o valor 1 para todos os datagramas de difusão seletiva, de modo que estes ficarão no domínio da rede local. Deve também ser permitido ao protocolo de nível superior que, se o host estiver ligado a mais de uma rede, possa ser escolhida por qual interface de rede será realizada a transmissão com difusão seletiva. É utilizada somente uma interface para a transmissão inicial, e cabe aos roteadores de difusão seletiva a tarefa de transmitir para outras redes. Quando não for escolhida a interface a ser usada para a transmissão, é utilizada a interface padrão de transmissão.

Quando o host pertencer ao nível 2, é necessário também que, no caso do host pertencer ele próprio ao grupo para o qual o datagrama será enviado, o protocolo de nível superior possa optar por que a entrega local do datagrama seja inibida, já que, na forma padrão, uma cópia do datagrama é enviada para o endereço de loopback.

Quanto ao módulo IP, também uma extensão deve ser realizada para permitir o envio de datagramas de difusão seletiva IP: o reconhecimento de endereços classe D quando forem roteados datagramas que estão sendo enviados [DEE 89]. Muitas implementações de hosts unicast utilizam a lógica de que se o host destino está na mesma rede local o datagrama deve ser enviado localmente para o próprio destino; caso contrário, o datagrama deve ser enviado localmente para o gateway, para ser enviado ao seu destino. Para permitir transmissões com difusão seletiva, é proposta então a modificação de que o datagrama deve ser enviado localmente para o seu destino se o campo destination address indicar um host que estiver na mesma sub-rede ou de o destination address for um endereço de difusão seletiva.

Na interface de serviço da rede local não são necessárias modificações para suportar o envio de datagramas de difusão seletiva. O módulo IP meramente especifica o grupo IP destino, ao invés de um destino IP individual, quando invoca a operação Send Local.

Em relação ao módulo de redes locais, a adaptação depende da rede local utilizada [DEE 89]. A rede Ethernet suporta diretamente o envio de pacotes locais de difusão seletiva, utilizando o endereço de difusão seletiva no campo destino dos pacotes Ethernet. Neste caso, e nas outras redes que suportam diretamente difusão seletiva, é necessário apenas o procedimento de mapeamento de endereços do grupo IP para endereços de difusão seletiva físicos, apresentado no item 2.3.2. Para redes que não suportam difusão seletiva, porém suportam difusão, é utilizado um mapeamento do endereço do grupo IP para um endereço de difusão local, gerando como custo um aumento de processamento em todos os hosts locais. Para enlaces ponto-a-ponto ligando dois hosts, ou um host e o roteador de difusão seletiva, os datagramas de difusão seletiva devem ser transmitidos como unicast. Para redes store-and-forward, como a ARPANET ou redes públicas X.25, todos os endereços de grupos IP devem ser mapeados para um endereço local de um roteador de difusão seletiva IP, que terá a responsabilidade de completar a entrega da difusão seletiva dentro da rede e entre outras redes.

2.3.4.2. Extensões necessárias para o recebimento de datagramas de difusão seletiva IP

As modificações no software de um host para permitir o recebimento de datagramas de difusão seletiva IP são mais complexas. Em relação a interface de serviços IP, os datagramas IP de difusão seletiva recebidos são recebidos pelos protocolos do módulo superior utilizando a mesma operação Receive IP que os datagramas unicast. A seleção do protocolo do nível superior é baseada no campo protocol do cabeçalho IP, independente do campo destination address. Deve ser possível, porém, que o módulo superior requisite ao módulo IP a participação em um grupo [DEE 89], de modo que a interface de serviço IP deve ser estendida para fornecer duas novas operações:

                JoinHostGroup (group-address, interface)
                LeaveHostGroup (group-address, interface)


A operação JoinHostGroup requisita que este host torne-se membro do grupo identificado pelo group-address na interface de rede especificada. A operação LeaveHostGroup solicita que a estação deixe de pertencer ao grupo identificado pelo group-address na interface de rede indicada. O parâmetro interface pode ser omitido em hosts que possuem apenas uma interface de rede. Em casos onde o protocolo não especificar a interface e a estação estiver ligada a mais de uma rede, será utilizada a interface padrão de envio de datagramas de difusão seletiva.

É permitido participar de um mesmo grupo utilizando mais de uma interface, o que resultará em recebimento de datagramas duplicados. É possível também que mais de uma requisição do módulo superior seja feita para participar de um mesmo grupo.

O módulo IP deve ser estendido para manter uma lista dos membros dos grupos associados a cada interface de rede [DEE 89]. Um datagrama destinado para um destes grupos que é recebido é processado da mesma forma como datagramas enviados para endereços individuais de hosts. Datagramas que chegam destinados para grupos que o host não pertence, que pertencem a uma interface diferente da recebida ou que possuem um endereço de grupo IP no campo IP source address são descartados sem gerar nenhuma notificação de erro. Uma mensagem ICMP (Destination Unreachable, Time Exceeded, Parameter Problem Source Quench ou Redirect) nunca é gerada em resposta a datagramas destinados a um grupo. Um datagrama não é rejeitado por possuir um time-to-live de 1.

A lista de membros de um grupo é atualizada em resposta as requisições JoinHostGroup e LeaveHostGroup do módulo superior. Cada grupo deve possuir um contador ou similar associado para identificar as múltiplas requisições de participar ou abandonar um mesmo grupo.

O módulo IP deve ser estendido também para implementar o protocolo IGMP, que é apresentado no item 2.4. O protocolo IGMP é utilizado para manter os roteadores de difusão seletiva vizinhos informados dos membros dos grupos presente em um dada rede local. Para suportar IGMP, todos os hosts de nível 2 devem participar do grupo all-hosts (endereço 224.0.0.1) em todas as interfaces de rede. Os datagramas endereçados para o grupo all-hosts são reconhecidos como especiais pelos roteadores de difusão seletiva, e não são enviados além da rede local independente do seu time-to-live.

Na interface de serviço de rede local os datagramas são entregues para o módulo IP utilizando a mesma operação ReceiveLocal dos pacotes unicast. O módulo IP deve, porém, informar ao módulo de rede local que pacotes de difusão seletiva aceitar [DEE 89], o que é feito através de duas operações para o qual a interface deve ser estendida:

                JoinLocalGroup (group-address)
                LeaveLocalGroup (group-address)


A operação JoinLocalGroup solicita ao módulo de rede local receber pacotes destinados para o grupo especificado em group-address, enquanto que a operação LeaveLocalGroup solicita a suspensão do recebimento dos pacotes destinados para o grupo.

No módulo de rede local, se estiver sendo utilizada a rede Ethernet, o módulo de rede deve ser apto a receber pacotes endereçados para endereços de difusão seletiva físicos que correspondam a endereços de grupos IP. É desejável que a implementação utilize as vantagens oferecidas pela capacidade de filtragem de endereços que, por exemplo, as interfaces de hardware Ethernet possuem, de modo ao host receber somente aqueles pacotes destinados para si.

Em redes que suportam apenas difusão, todos os pacotes de difusão que chegam devem ser aceitados e transferidos ao módulo IP para filtragem. Em redes ponto-a-ponto ou store-and-forward, os datagramas de difusão seletiva IP chegarão como pacotes unicast, logo nenhuma modificação é necessária no módulo de rede local [DEE 89].

2.4. Internet Group Management Protocol (IGMP)

Um host, para participar de difusão seletiva IP em uma rede local, deve possuir um software que permita enviar e receber datagramas de difusão seletiva. Para participar em uma difusão seletiva que atravesse várias redes, o host deve informar o roteador de difusão seletiva local. Os roteadores locais contatam outros roteadores de difusão seletiva, passando a informação de associação a um grupo e estabelecendo rotas. A idéia é similar à propagação de rotas entre gateways internet convencionais.

O Internet Group Management Protocol (IGMP) [DEE 89] é utilizado pelos hosts que suportam difusão seletiva e roteadores de difusão seletiva para comunicarem informações de associação em grupos. O IGMP é análogo ao protocolo ICMP. Como o ICMP, ele usa datagramas IP para transmitir suas mensagens, e fornece um serviço utilizado pelo IP.

2.4.1. Formato da Mensagem IGMP

O IGMP deve ser implementado em todos os hosts que pertençam ao nível 2 da especificação da difusão seletiva IP. A figura abaixo apresenta o formato das mensagens IGMP [DEE 89]:

Figura 2.7. - Formato das mensagens IGMP

O campo vers fornece a versão do protocolo, atualmente com valor 1. A versão 0 está obsoleta. O campo type identifica a mensagem em um dos seus dois tipos: Host Membership Query, consulta feita pelo um roteador de difusão seletiva visando verificar as associações dos hosts a grupos, sendo representado pelo valor 1, ou Host Membership Report, notificação enviada pelo host indicando as associações a qual pertence, representado pelo valor 2.

O campo unused é um campo não utilizado. É enviado com o valor 0, e é ignorado no recebimento. O campo checksum contém o checksum para os oito octetos da mensagem, calculado com o mesmo algoritmo usado para o TCP e IP. Por fim, o campo group address é utilizado pelos hosts para informar a sua associação em um particular grupo de difusão seletiva nas mensagens do tipo Host Membership Report. Em mensagens do tipo Host Membership Query o campo group address contém zero, e é ignorado no recebimento, não possuindo nenhum significado.

2.4.2. Funcionamento do Protocolo

Os roteadores de difusão seletiva enviam mensagens Host Membership Query para detectar que grupos de difusão seletiva possuem membros nas redes locais a que ele pertence. Estas mensagens são destinadas ao grupo all-hosts (endereço 224.0.0.1), e possuem time-to-live de valor 1. Os hosts geram então mensagens do tipo Host Membership Report como resposta, informando cada grupo a que pertencem através da interface de rede pela qual a mensagem foi recebida. A fim de evitar um tempestade de mensagens de notificação concorrentes e reduzir o número total de mensagens transmitidas são utilizadas algumas técnicas, descritas a seguir [DEE 89].

Quando uma estação recebe uma mensagem Host Membership Query, ao invés de enviar mensagens de notificação imediatamente ele inicia um temporizador de atraso do envio da resposta referente a cada grupo que ele participa através da interface de rede utilizada pela mensagem de consulta. Cada temporizador é escolhido entre um valor randômico entre 0 e 10 segundos, de forma a não ocorrer o envio de todas as mensagens de uma vez.

Além da técnica anterior, a mensagem de notificação é enviada com um IP destination address igual ao endereço do grupo sendo notificado, com um time-to-live de valor 1, de modo que os outros membros do mesmo grupo na mesma rede possam perceber a notificação. Quando um host percebe uma notificação para um grupo a que ele pertence, ele suspende seu próprio temporizador para este grupo e não gera a mensagem de notificação para o grupo. Assim, em casos normais, somente uma notificação será gerada para cada grupo presente na rede local, que será enviada pelo host no qual o temporizador de atraso expirar primeiro.

O roteador de difusão seletiva receberá todos os datagramas de difusão seletiva IP, de modo que estes não precisam estar endereçados explicitamente a ele. Além disso, os roteadores não precisam saber quais estações participam de um grupo, somente que no mínimo uma das estações da rede pertence ao grupo.

Quando um temporizador já está sendo executado para um grupo e uma nova mensagem de consulta é recebida, o tempo não é reiniciado com um novo valor randômico, continuando com seu valor corrente. Notificações para o grupo all-hosts nunca são enviadas.

Os roteadores de difusão seletiva enviam mensagens de consulta periodicamente para atualizar sua tabela dos grupos presentes na rede. Se nenhuma notificação é recebida para um dado grupo depois de um certo número de mensagens de consulta, o roteador assume que o grupo não possui mais membros locais e não necessita transmitir para a rede datagramas recebidos remotamente destinados a este grupo. As mensagens de consulta são poucas, de modo a manter baixo o overhead IGMP nas estações e na rede. Entretanto, quando um roteador de difusão seletiva é iniciado, devem ser geradas muitas mensagens, em pequenos intervalos de tempo, a fim de construir sua tabela das associações locais a grupos de difusão seletiva.

Quando uma estação se liga a um novo grupo, imediatamente devem ser enviadas mensagens de notificações do grupo, sem esperar a mensagem de consulta, já que a estação pode ser a primeira a ser membro do grupo na rede. É recomendado que seja enviado mais uma ou duas mensagens depois de pequenos espaços de tempo, a fim de se cobrir a possibilidade de que a mensagem de notificação inicial seja perdida ou danificada.

2.4.3. Diagrama de Transição de Estados

Cada host deve manter uma tabela onde são armazenadas as informações de associação a grupos de difusão seletiva [COM 91]. Inicialmente, todas as entradas da tabela estão sem utilização. Quando uma aplicação informa a participação em um grupo, o software IGMP reserva uma entrada na tabela e preenche as informações sobre o grupo. O contador de referências do grupo é inicializado com o valor 1. Se aplicações adicionais comunicarem a participação neste grupo, o contador é incrementado. Da mesma forma, se uma aplicação informa o desligamento do grupo, o contador é decrementado. Quando o contador chega a 0 , o host deixa de ser membro do grupo de difusão seletiva.

O funcionamento do protocolo pode ser descrito através do diagrama de transição de estados, apresentado na figura 2.8. O diagrama possui três estados que representam onde uma entrada na tabela de um host pode se encontrar:

Figura 2.8. - Diagrama de transição de estados do IGMP

Como mostra o diagrama, existem cinco eventos que causam a transição para um novo estado:

Três ações podem ser tomadas em resposta aos eventos, representadas em negrito no diagrama:

2.5. Vantagens Obtidas com Difusão Seletiva IP

Em comunicações tradicionais envolvendo vários sites simultaneamente, para cada pacote do host de origem é feita uma replicação para o número de hosts destinos, e cada pacote é enviado para seu destino separadamente. Este modelo impõe uma limitação no número de máquinas que poderiam estar envolvidas na comunicação, pois o tráfego gerado na rede e as necessidades computacionais do host de origem - que gera cópias de cada pacote - aumentam linearmente com o número de hosts destinos envolvidos.

A figura 2.9 exemplifica uma transmissão tradicional. No exemplo, um pacote deve ser enviado para os hosts destinos A, B e C. Ele é replicado no host de origem e três cópias são enviadas, consumindo maior desempenho no host X e maior largura de banda na rede, mesmo que alguns dos segmentos de rede sejam comuns aos três.

Figura 2.9. - Comunicação tradicional para múltiplos hosts.

Existem, porém, tecnologias que tratam estas limitações, sendo chamadas soluções escalares de rede. O uso do difusão seletiva IP, visto anteriormente, é uma destas soluções. Utilizando difusão seletiva, apenas uma cópia de cada pacote é enviada por enlace, sendo copiada apenas quando houver um braço na árvore lógica dos destinos. A utilização de difusão seletiva fornece um ganho de processamento de CPU e largura de banda quando vários sites estão envolvidos simultaneamente, conforme figura a seguir:

Figura 2.10. - Comunicação entre um grupo de hosts utilizando difusão seletiva.

Na figura, o host X não mais replica os datagramas para cada host destino, participante do grupo Z, no exemplo A, B e C, enviando apenas uma cópia possuindo o endereço classe D do grupo. O tráfego sobre o enlace L1 permanece sempre mesmo, independente do número de participantes do grupo. O datagrama será replicado apenas quando houver destinos com diferentes destinos, sendo replicado no último roteador que suporte difusão seletiva comum aos dois caminhos. Na figura, os roteadores de difusão seletiva que são responsáveis por replicar os datagramas estão representados por R1 e R2.


Capítulo 2 - Difusão Seletiva IP (Parte 3 de 7) de
MELCHIORS, Cristina - Sistemas Interpessoais de
Videoconferência (MBone).
Trabalho Individual n. 596 CPGCC-UFRGS. Jan. 1997