Introdução
Este documento descreve como o recurso Internet Group Management Protocol (IGMP) nos switches da série Catalyst 9K funciona com depurações.
Pré-requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Entendimento básico dos protocolos L2 e Switching
- Noções básicas de PIM e IGMP Multicast
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Catalyst 9300 versão 17.9.4a
- Catalyst 9500x Versão 17.13.1
- PC Windows 10 com VLC player
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
Sem os recursos de IGMP, um switch de camada 2 encaminha um quadro multicast para todas as portas (exceto a porta de entrada), o que é um desperdício de recursos do switch.
O rastreamento de IGMP permite que o switch envie quadros de dados de multicast somente para os receptores que se unem a um grupo específico, ouvindo relatórios/deixando mensagens dos hosts. Por padrão, esse recurso é ativado em um switch de camada 2 da Cisco. Se quiser habilitar somente para uma VLAN específica, você poderá desabilitá-la globalmente e configurá ip igmp snooping vlan vlan-id-la com a VLAN-id necessária.
Quando o cliente conectado ao switch L2 solicita tráfego multicast, o switch rastreia essas informações e cria a tabela multicast para que o switch possa encaminhar o tráfego para as portas de destinatário pretendidas, em vez de inundar todas as portas do switch.
Topologia
Topologia Multicast
Explicação
Para obter uma compreensão abrangente da sinalização de IGMP e do fluxo de tráfego na comunicação multicast, é crucial examiná-la da perspectiva do receptor e da origem.
Encaminhamento do lado do receptor
Para entender o processo IGMP, você precisa entender o conceito de porta do roteador mrouter e consultante IGMP.
Geralmente, quando o PIM é ativado em uma interface de roteador ou no SVI do switch, ele começa a enviar consultas IGMP periodicamente no respectivo domínio de broadcast da VLAN. A interface do roteador que envia as consultas não é nada além do consultante IGMP e a interface do Switch que recebe as consultas é a porta mrouter do switch para essa VLAN.
Qualquer dispositivo em um domínio de broadcast específico tem apenas uma porta mrouter. O switch começa a criar a tabela de grupos de rastreamento IGMP na respectiva porta mrouter.
Note: Em caso de várias consultas no mesmo domínio de broadcast, o processo de eleição ocorre.
SW1 e SW2 são switches de Camada 2 puros sem roteamento.
As depurações nos permitem compreender o processo de espionagem de IGMP.
#debug ip igmp snooping
PC21 conectado à Gi 1/0/17 de SW2, precisa de fluxo multicast 239.1.2.3. Então o PC21 enviou o relatório de união ao switch.
SW2 recebeu o relatório conjunto sobre Gi em 1/0/17.
*Apr 2 15:49:54.353: IGMPSN: Received IGMPv2 Report for group 239.1.2.3 received on Vlan 2717, port Gi1/0/17
*Apr 2 15:49:54.353: IGMPSN: NEW report: Call process_report port:Gi1/0/17 Querier is IGMPv1, Vlan 2717, quer_ver numeric 0.
*Apr 2 15:49:54.353: IGMPSN: Group: Received IGMPv2 report for mcast group 239.1.2.3 from Client 172.16.1.1. Received on Vlan 2717, port Gi1/0/17.
*Apr 2 15:49:54.353: IGMPSN: group: Adding client ip 172.16.1.1, port_id Gi1/0/17, on vlan 2717
Nesse caso, como não há nenhum consultante no domínio de broadcast, não há nenhuma porta mrouter no switch para a VLAN.
Portanto, o switch não tem escolha a não ser descartar o relatório IGMP que chega da Gi 1/0/17.
*Apr 2 15:49:54.353: IGMPSN: No mroute detected: Drop IGMPv2 report for group 239.1.2.3 from client 172.16.1.1 received on Vlan 2717, port Gi1/0/17
Se um cliente IGMP V2 desejar cancelar a assinatura de um fluxo de multicast, ele poderá fazer isso enviando ao switch uma mensagem IGMP-leave.
O exemplo de relatório IGMP-Leave é mencionado aqui.
Em geral, quando o switch recebe a saída IGMP, ele remove a entrada da tabela de grupos de rastreamento IGMP.
*Apr 2 15:52:11.237: IGMPSN: Received IGMP Leave for group 239.1.2.3 received on Vlan 2717, port Gi1/0/17
*Apr 2 15:52:11.238: IGMPSN: group: Leave for group 239.1.2.3 from Client 172.16.1.1 received on Vlan 2717, port Gi1/0/17, mvr group (No)
*Apr 2 15:52:11.238: IGMPSN: group: Skip client info adding - src_addr 172.16.1.1, client_addr 172.16.1.1, port_id Gi1/0/17, on vlan 2717
*Apr 2 15:52:11.238: IGMPSN: MCAST IP address 239.1.2.3, MAC address 0100.5e01.0203
Como o switch não tem a porta mrouter, ele não pode criar a tabela de grupos de rastreamento IGMP. Portanto, ele não tem a entrada de IGMP para a porta Gi 1/0/17. Portanto, ele não pode localizar o mesmo.
*Apr 2 15:52:11.238: IGMPSN: Can not Locate gce 0100.5e01.0203, on Vlan 2717
*Apr 2 15:52:11.238: IGMPSN: group: Group does not exist - Leave for group 239.1.2.3 from Client 172.16.1.1 received on Vlan 2717, port Gi1/0/17 send to router port
*Apr 2 15:52:11.238: IGMPSN: Call platform_l2mc_snoop_send_mrouter
A criação da porta do roteador Mé é a primeira etapa vital para que o switch inicie o rastreamento IGMP com êxito.
Como mencionado anteriormente, as consultas gerais de IGMP dependem do PIM, portanto, o modo denso de PIM foi ativado em R2 G1/0/45. (Comando ip pim dense-mode do Modo de Configuração de Interface ).
*Apr 2 15:53:30.730: IGMPSN: router: Received non igmp pak on Vlan 2717, port Gi1/0/1
*Apr 2 15:53:30.730: IGMPSN: router: PIMV2 Hello packet received in 2717
*Apr 2 15:53:30.730: IGMPSN: l2mc_mrd_learn_router_port_internal Gi1/0/1 on Vlan 2717
*Apr 2 15:53:30.730: IGMPSN: router: Is not a router port on Vlan 2717, port Gi1/0/1
*Apr 2 15:53:30.730: IGMPSN: router: Is not a router port on Vlan 2717, port Gi1/0/1
*Apr 2 15:53:30.730: IGMPSN: router: Created router port on Vlan 2717, port Gi1/0/1
*Apr 2 15:53:30.730: IGMPSN: mgt: Reverting flood mode to only multicast router ports for Vlan 2717.
*Apr 2 15:53:30.730: IGMPSN: Adding router port Gi1/0/1 to all GCEs in Vlan 2717
*Apr 2 15:53:30.730: IGMPSN: added rport Gi1/0/1 on Vlan 2717
*Apr 2 15:53:30.734: IGMPSN: Notify others Gi1/0/1 on Vlan 2717
*Apr 2 15:53:30.734: IGMPSN: After l2mcm_rport_add-1 Gi1/0/1 on Vlan 2717
*Apr 2 15:53:30.734: IGMPSN: router: Calling HA mrouter sync Iport:Gi1/0/1 p_type:1 mrt_enable:0
*Apr 2 15:53:30.734: IGMPSN: igmpsn_ha_sync_mrouter_port_info enter Port Gi1/0/1 in vlan 2717
*Apr 2 15:53:30.734: IGMPSN: router: Learning port: Gi1/0/1 as rport on Vlan 2717
*Apr 2 15:53:30.734: IGMPSN: router: Received IGMP pak on Vlan 2717, port Gi1/0/1
*Apr 2 15:53:30.734: IGMPSN: l2mc_mrd_learn_router_port_internal Gi1/0/1 on Vlan 2717
*Apr 2 15:53:30.734: IGMPSN: router: Is a router port on Vlan 2717, port Gi1/0/1
*Apr 2 15:53:30.734: IGMPSN: router: Learning port: Gi1/0/1 as rport on Vlan 2717
*Apr 2 15:53:30.734: IGMPSN: Received IGMP Query for group 0.0.0.0 received on Vlan 2717, port Gi1/0/1 *****
*Apr 2 15:53:30.734: IGMPSN: IGMPv2 General Query received on Vlan 2717, port Gi1/0/1 Resp time 2500 (25 100) msecs, LLQ interval 2000 (2, 1000)
*Apr 2 15:53:30.734: IGMPSN: IGMP general queries received on Vlan 2717 updates all groups
*Apr 2 15:53:30.734: IGMPSN: timer: start report_timer 2500 msecs of vlan 2717
O switch cria a porta mrouter para a respectiva VLAN na qual recebe a consulta geral do consultado.
SW2#show ip igmp snooping vlan 2717
Vlan 2717:
--------
IGMP snooping : Enabled
Pim Snooping : Disabled
IGMPv2 immediate leave : Enabled
Explicit host tracking : Enabled
Multicast router learning mode : pim-dvmrp
CGMP interoperability mode : IGMP_ONLY
Robustness variable : 2
Last member query count : 2
Last member query interval : 1000
SW2#show ip igmp snooping querier
Vlan IP Address IGMP Version Port
-------------------------------------------------------------
2717 172.17.1.254 v2 Gi1/0/1
SW2#show ip igmp snooping mrouter
Vlan ports
---- -----
2717 Gi1/0/1(dynamic)
O consultante envia a consulta geral de IGMP a cada 60 segundos.
~
*Apr 6 10:37:02.793: IGMPSN: Received IGMP Query for group 0.0.0.0 received on Vlan 2717, port Gi1/0/1
*Apr 6 10:37:02.793: IGMPSN: IGMPv2 General Query received on Vlan 2717, port Gi1/0/1 Resp time 10000 (100 100) msecs, LLQ interval 2000 (2, 1000)
*Apr 6 10:37:02.793: IGMPSN: IGMP general queries received on Vlan 2717 updates all groups
~
~
*Apr 6 10:38:02.793: IGMPSN: Received IGMP Query for group 0.0.0.0 received on Vlan 2717, port Gi1/0/1
*Apr 6 10:38:02.793: IGMPSN: IGMPv2 General Query received on Vlan 2717, port Gi1/0/1 Resp time 10000 (100 100) msecs, LLQ interval 2000 (2, 1000)
*Apr 6 10:38:02.793: IGMPSN: IGMP general queries received on Vlan 2717 updates all groups
~
O host conectado à porta Gi 1/0/17 (PC21) precisa do fluxo multicast destinado a 239.1.2.3, portanto, o PC21 envia o relatório destinado a 239.1.2.3 destinado ao consultante 172.17.1.254.
O switch rastreia o mesmo pacote e cria uma entrada na tabela de rastreamento IGMP.
*Apr 6 10:38:03.714: IGMPSN: Received IGMPv2 Report for group 239.1.2.3 received on Vlan 2717, port Gi1/0/17
*Apr 6 10:38:03.714: IGMPSN: NEW report: Call process_report port:Gi1/0/17 Querier is IGMPv1, Vlan 2717, quer_ver numeric 2.
*Apr 6 10:38:03.714: IGMPSN: Group: Received IGMPv2 report for mcast group 239.1.2.3 from Client 172.17.1.1. Received on Vlan 2717, port Gi1/0/17.
*Apr 6 10:38:03.714: IGMPSN: group: Adding client ip 172.17.1.1, port_id Gi1/0/17, on vlan 2717
*Apr 6 10:38:03.714: IGMPSN: MCAST IP address 239.1.2.3, MAC address 0100.5e01.0203
*Apr 6 10:38:03.714: IGMPSN: Locate gce 0100.5e01.0203, on Vlan 2717
*Apr 6 10:38:03.714: IGMPSN: locate group 239.1.2.3, on Vlan 2717
*Apr 6 10:38:03.714: IGMPSN: Add v2 group 239.1.2.3 member port Gi1/0/17, on Vlan 2717
*Apr 6 10:38:03.714: IGMPSN: group: Added port Gi1/0/17 to group 239.1.2.3
*Apr 6 10:38:03.714: TIMER_START for group239.1.2.3 for time 10000 * 100
*Apr 6 10:38:03.714: IGMPSN: group: Forwarding 239.1.2.3 report to router ports
*Apr 6 10:38:03.714: IGMPSN: Call platform_l2mc_snoop_send_mrouter
SW2#show ip igmp snooping group
Vlan Group Type Version Port List
-----------------------------------------------------------------------
2717 239.1.2.3 igmp v2 Gi1/0/17
Se o switch receber tráfego de dados destinado ao grupo multicast 239.1.2.3 do uplink Gi1/0/1 ou de qualquer outra porta na VLAN 2717, o switch apenas o encaminhará para a interface Gi 1/0/17 e não o encaminhará para qualquer outra porta na VLAN 2717.
Além disso, o relatório IGMP alcança o consultante (R2) da porta mrouter do SW2 e o consultante cria a respectiva entrada de grupo IGMP para o mesmo. Se R2 receber tráfego de dados multicast destinado a 239.1.2.3, ele será encaminhado para SW2.
Encaminhamento do lado do remetente/origem
PC11, 172.16.1.1 está conectado à Gi 1/0/3 do SW1, enviando tráfego multicast destinado à porta UDP 1234 239.1.2.3.
SW1#show int gigabitEthernet 1/0/3
GigabitEthernet1/0/3 is up, line protocol is up (connected)
Hardware is Gigabit Ethernet, address is 2416.9d7a.1083 (bia 2416.9d7a.1083)
~
~
5 minute input rate 1857000 bits/sec, 170 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
9410 packets input, 12890025 bytes, 0 no buffer
Received 9394 broadcasts (9394 multicasts)
0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 watchdog, 9394 multicast, 0 pause input
0 input packets with dribble condition detected
~
~
SW1#show int gigabitEthernet 1/0/3 counters
Port InOctets InUcastPkts InMcastPkts InBcastPkts
Gi1/0/3 12890593 17 9396 0
!
SW1#show int te 1/1/1 counters
Port InOctets InUcastPkts InMcastPkts InBcastPkts
Te1/1/1 1166336 3940 1251 14
Port OutOctets OutUcastPkts OutMcastPkts OutBcastPkts
Te1/1/1 3229106605 2731 2358824 6
!
SW1#show ip igmp snooping querier
Vlan IP Address IGMP Version Port
-------------------------------------------------------------
2716 172.16.1.254 v2 Te1/1/1
!
SW1#show ip igmp snooping mrouter
Vlan ports
---- -----
2716 Te1/1/1(dynamic)
No SW1, o snooping IGMP está habilitado e o switch já tem a porta mrouter, o switch encaminha por padrão o tráfego de dados multicast recebido na porta mrouter para o consultante.
EPC na interface Gi 1/0/3 de origem.
SW1#show monitor capture file flash:mycap1.pcap
Starting the packet display ........ Press Ctrl + Shift + 6 to exit
1 0.000000 172.16.1.1 -> 239.1.2.3 RTCP 102 Sender Report Source description
2 0.000100 172.16.1.1 -> 239.1.2.3 UDP 1370 59218 -> 1234 Len=1328
3 0.000140 172.16.1.1 -> 239.1.2.3 UDP 1370 59218 -> 1234 Len=1328
4 0.000178 172.16.1.1 -> 239.1.2.3 UDP 1370 59218 -> 1234 Len=1328
5 0.000234 172.16.1.1 -> 239.1.2.3 UDP 1370 59218 -> 1234 Len=1328
Transmissão de dados multicast entrando no switch SW1 e saindo de Te 1/1/1 em direção ao roteador PIM ou Querier 172.16.1.254.
O roteamento multicast e o PIM estão habilitados para 10.0.10.0/24, 10.0.20.0/24,172.16.1.0/24 e 172.17.1.0/24 no Core, R1 e R2. O roteamento multicast garante o encaminhamento do fluxo multicast na rede L3 e, finalmente, o fluxo alcança R2. Como R2 tem a entrada da tabela de grupos IGMP aprendida anteriormente através do processo de relatório IGMP, R2 encaminha o fluxo para SW2.
SW2#show int gigabitEthernet 1/0/17 counters
Port InOctets InUcastPkts InMcastPkts InBcastPkts
Gi1/0/17 200 1709 103 0
Port OutOctets OutUcastPkts OutMcastPkts OutBcastPkts
Gi1/0/17 3661503 3 2667 0
Finalmente, PC21 recebe o fluxo multicast. OutMcastPkts em Gi incrementando 1/0/17.
EPC na interface Gi 1/0/17 do SW2.
SW2#show monitor capture file flash:mycap1.pcap
Starting the packet display ........ Press Ctrl + Shift + 6 to exit
~
~
14 18.002140 172.16.1.1 -> 239.1.2.3 UDP 1370 59218 -> 1234 Len=1328
15 18.002178 172.16.1.1 -> 239.1.2.3 UDP 1370 59218 -> 1234 Len=1328
16 18.002234 172.16.1.1 -> 239.1.2.3 UDP 1370 59218 -> 1234 Len=1328
~
~
Transmissão de dados multicast entrando no switch SW2 a partir da Gi 1/0/1 e saindo da Gi 1/0/17 em direção ao host que solicita a transmissão multicast.