First, a little background: My understanding is that the purpose of IGMP (and its IPv6 cousin, MLD) is to avoid wasted bandwidth by ensuring that multicast packets only get transmitted to destinations that are actually interested in those packets. This logic is a refinement of an older/simpler switch behavior, which was to broadcast incoming multicast packets to all other ports no matter what, and leave it up to the connected devices to drop multicast packets that they weren't interested in.
Não. A finalidade do IGMP / MLD é que os roteadores saibam qual grupo de multicast foi associado a qualquer host conectado localmente (eles nem se importam com qual deles, porque, naquela época, a mídia compartilhada era esperada). Em seguida, o roteador envia essas informações para um algoritmo de roteamento multicast que trocará essas informações pelos roteadores para criar tabelas de roteamento multicast. Desta forma, uma máquina X conectada a um roteador A pode enviar tráfego multicast para o grupo G, e uma máquina Y conectada a outro roteador B irá recebê-lo se tiver se juntado a G.
O IGMP foi inventado antes da existência dos switches e esperava-se que a mídia entre hosts e roteadores fosse compartilhada. O IGMP foi otimizado para mídia compartilhada, pois forneceu otimizações caso muitos hosts estivessem interessados no mesmo grupo, permitindo que apenas um host enviasse o relatório de associação apenas uma vez (porque todos os hosts receberiam tráfego desse grupo de multicast).
This seems very counterintuitive to me -- why would an algorithm whose entire purpose is to avoid multicast flooding deliberately flood to all ports in the a scenario where nobody is interested in receiving the multicast data?
Os roteadores IGMP / MLD estão sempre interessados em qualquer dado multicast. É seu papel para encaminhá-los depois de tudo. Se um host envia dados multicast ao grupo X, o roteador deve encaminhar o pacote para todos os outros roteadores em que pelo menos um host ingressou no grupo X. O switch não tem conhecimento dessa situação, portanto, se não encaminhará tráfego desconhecido do host para o roteador, seria apenas quebrar roteamento multicast.
Quanto ao motivo pelo qual o encaminhamento de pacotes não registrados para todas as portas deve ser ativado, pode haver razões técnicas para isso, mas, pessoalmente, considero os switches como uma otimização em comparação com os hubs. Eu quero que eles, em sua configuração padrão, otimizem as coisas sem quebrá-las. Se o switch receber o que seriam pacotes ilegítimos ou inesperados, eu gostaria que ele fosse encaminhado de qualquer maneira, porque esse pacote provavelmente foi enviado por um motivo. A última coisa que quero é que meu switch deixe cair pacotes.