Como o multicast UDP se comporta no Unix?

0

Um especialista em Unix me disse que o ip-multicast usa multicast Ethernet (depende do endereço MAC para se espalhar) em vez do multicast IPv4.

Isso é verdade? Depende do kernel ou da versão?

    
por Mohamad-Jaafar 01.05.2015 / 18:25

1 resposta

4

Eu acredito que há uma confusão de termos no trabalho aqui. Na verdade, tanto a camada IP quanto a camada de link trabalham juntas para fazer o trabalho de multicast.

Para IPv4 e IPv6, os endereços IP multicast são mapeados para endereços MAC multicast de camada de link. Existem endereços MAC dedicados somente para multicast. Para o IPv4, o endereço MAC tem o formato 01:00:5e:xx:yy:zz e para o IPv6 o endereço MAC tem o formato 33:33:ww:xx:yy:zz .

Os quadros endereçados a esses endereços MAC são, por padrão, inundados em todas as portas na vlan por switches ethernet, mas como switches de otimização podem implementar snooping IGMP para limitar quais portas recebem os quadros com base em quais portas realmente se inscreveram grupo multicast.

Quando um host começa a escutar em um grupo multicast, sua camada MAC ethernet é programada para permitir que os quadros sejam endereçados ao endereço MAC apropriado. Caso contrário, o hardware ethernet eliminará esses quadros, a menos que esteja no modo promíscuo.

Quando o host recebe um quadro multicast porque o switch ethernet o encaminhou e porque a camada MAC o deixou entrar, a camada IP examina o endereço IP e direciona o pacote para o soquete apropriado.

Detalhes sobre os endereços MAC multicast dedicados

O uso de endereços MAC diferentes para diferentes endereços multicast permite que um host receba facilmente apenas os quadros Ethernet associados aos grupos multicast nos quais o host está inscrito (o que significa que há pelo menos um soquete ativo no host inscrito nesse grupo). Os outros serão descartados com eficiência no hardware, seja pelo próprio chip ethernet do host ou por um comutador ethernet na rede.

Existem mais grupos multicast do que endereços MAC dedicados, portanto, muitos endereços IP multicast são mapeados para o mesmo endereço MAC. Isso significa que a filtragem acima mencionada não é perfeita: quando o hardware é configurado para permitir um endereço MAC, isso realmente permite que os pacotes endereçados a um grupo de endereços IP multicast. Mesmo assim, o hardware faz a maior parte do trabalho de filtragem, por isso é eficiente o suficiente.

Para o IPv4, existem 268435456 endereços multicast IP e apenas 8388608 endereços MAC, portanto, o mapeamento é de 32 para 1 (1 endereço MAC por 32 endereços IP). Veja a seção 6.4 da RFC 1112 .

Para o IPv6, existem um zilhão de endereços multicast IP e apenas 4294967296 endereços MAC, portanto, o mapeamento é muito para 1. Veja a seção 7 da RFC 2464 . Seria bom fazer esse mapeamento pelo menos um pouco mais próximo de 1 para 1, mas o tamanho do espaço de endereços IPv6 torna isso impossível. Eu ouvi verbalmente uma história há muitos anos atrás, que até mesmo reservando 32 bits de endereços MAC já estava pressionando. A história diz que, em termos do esquema de alocação de endereço MAC do IEEE (IEEE é responsável pela atribuição de endereços MAC), esse número de endereços MAC corresponde a 256 atribuições OUI e o IEEE teria exigido 256 vezes a taxa monetária para alocar um OUI. ; estava fora de questão para o IETF pagar tal quantia de dinheiro ao IEEE, de modo que o IETF em vez disso selecionou um bloco aparentemente não utilizado do tamanho e alinhamento corretos e o agachou.

    
por 01.05.2015 / 19:22