이 문서에서는 ip igmp join-group 및 ip igmp static-group 명령이 Cisco IOS® 내에서 작동하는 방법에 대해 설명합니다.
라우터에 인터페이스에 ip igmp join-group 명령이 있는 경우 라우터 자체가 멀티캐스트 스트림의 수신기가 됩니다.이 명령은 멀티캐스트 흐름에 대한 PIM Join 요청을 전송하는 PIM(Protocol Independent Multicast) 인접 다운스트림 없이 또는 실제 직접 연결된 수신기 없이 이 라우터로 멀티캐스트 트래픽을 이동하는 데 사용됩니다.그러나 이 라우터는 멀티캐스트 스트림에 참여하므로 모든 멀티캐스트 패킷이 CPU에 펀딩됩니다.이로 인해 CPU가 높거나, 속도 리미터(있는 경우) 또는 CoPP(Control Plane Protection)가 적중될 수 있습니다.
이 라우터에 대한 멀티캐스트 스트림을 유치하기 위해 사용할 수 있는 더 나은 방법은 ip igmp static-group interface 명령을 구성하는 것입니다.이 명령을 사용하면 라우터가 멀티캐스트 스트림을 유인하여 인터페이스에서 전달할 수 있지만 라우터 자체는 스트림의 수신기가 되지 않습니다.
ip igmp join-group interface 명령과 ip igmp static-group 명령 모두 PIM이 소스 또는 RP(Rendezvous Point)로 업스트림에서 조인 요청을 전송하도록 하지만 이 명령을 사용하는 라우터가 해당 인터페이스의 PIM DR(Designated Router)인 경우에만 발생합니다.명령이 적용되고 멀티캐스트 트래픽을 끌어들이도록 하려면 해당 네트워크의 DR인 라우터에서 명령을 사용합니다.또는 명령을 사용하는 라우터에 PIM DR을 지정할 수 있습니다.이렇게 하려면 인터페이스에서 ip pim dr-priority 명령을 구성하고 해당 네트워크에 있는 PIM 라우터의 PIM DR 우선순위 값이 가장 높은지 확인합니다.
예를 들면 다음과 같습니다.
이 예에서는 IP 주소가 10.1.3.3인 소스와 그룹 232.1.1.1의 수신기가 있습니다.
라우터 R1의 멀티캐스트 전달 항목은 다음과 같습니다.
R1#show ip mroute 232.1.1.1 10.1.3.3
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(10.1.3.3, 232.1.1.1), 01:54:48/00:02:54, flags: sT
Incoming interface: Ethernet1/0, RPF nbr 10.1.2.2
Outgoing interface list:
Ethernet0/0, Forward/Sparse-Dense, 01:54:48/00:02:54
출력에 표시된 대로 인터페이스 Ethernet0/0은 OIL(Outgoing Interface List)에 있으며 (10.1.3.3, 232.1.1.1) 멀티캐스트 트래픽은 인터페이스 Ethernet0/0으로 전달됩니다.
이는 MFIB(Multicast Forwarding Information Base) 항목에서도 확인할 수 있습니다.
R1#show ip mfib 232.1.1.1 10.1.3.3
Entry Flags: C - Directly Connected, S - Signal, IA - Inherit A flag,
ET - Data Rate Exceeds Threshold, K - Keepalive
DDE - Data Driven Event, HW - Hardware Installed
I/O Item Flags: IC - Internal Copy, NP - Not platform switched,
NS - Negate Signalling, SP - Signal Present,
A - Accept, F - Forward, RA - MRIB Accept, RF - MRIB Forward,
MA - MFIB Accept
Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kbits per second
Other counts: Total/RPF failed/Other drops
I/O Item Counts: FS Pkt Count/PS Pkt Count
Default
(10.1.3.3,232.1.1.1) Flags:
SW Forwarding: 0/0/0/0, Other: 0/0/0
Ethernet1/0 Flags: A
Ethernet0/0 Flags: F NS
Pkts: 0/0
라우터 R1이 라우터 R4에서 멀티캐스트 스트림에 대한 PIM Join 요청을 받지 않은 경우(어떤 이유로든) 멀티캐스트 스트림이 흐르지 않습니다.한 가지 가능한 이유는 라우터가 다른 관리 도메인에 속하기 때문에 PIM이 라우터 R1과 R4 간에 인접 디바이스를 형성할 수 없기 때문입니다.해결책은 라우터 R1에서 라우터 R4로 트래픽을 정적 방식으로 전달하는 것입니다.
ip igmp join-group 명령은 라우터 R1의 인터페이스 Ethernet0/0에서 사용됩니다. 이렇게 하면 라우터 R1이 PIM Join 요청 업스트림(소스 또는 RP에)을 보내고 멀티캐스트 스트림(10.1.3.3, 232.1.1.1)을 유인할 수 있습니다. 이 트래픽은 OIL에 있으므로 인터페이스 Ethernet0/0으로 전달됩니다.그러나 트래픽도 CPU에 펀딩됩니다.
R1#show running-config interface Ethernet 0/0
!
interface Ethernet0/0
ip address 10.1.1.1 255.255.255.0
ip pim sparse-dense-mode
ip igmp join-group 232.1.1.1 source 10.1.3.3
end
R1#show ip mroute 232.1.1.1 10.1.3.3
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(10.1.3.3, 232.1.1.1), 00:09:30/00:02:19, flags: sLTI
Incoming interface: Ethernet1/0, RPF nbr 10.1.2.2
Outgoing interface list:
Ethernet0/0, Forward/Sparse-Dense, 00:00:40/00:02:19
L 플래그는 멀티캐스트 트래픽이 펀딩됨을 의미합니다.인터페이스 Ethernet0/0이 OIL에 있으므로 트래픽이 CPU에 펀딩되어 인터페이스 Ethernet0/0으로 전달됩니다.
MFIB 항목은 내부 복사(IC) 플래그를 표시합니다.즉, 이 흐름에 대한 패킷이 CPU에 펀딩됩니다.
R1#show ip mfib 232.1.1.1 10.1.3.3
Entry Flags: C - Directly Connected, S - Signal, IA - Inherit A flag,
ET - Data Rate Exceeds Threshold, K - Keepalive
DDE - Data Driven Event, HW - Hardware Installed
I/O Item Flags: IC - Internal Copy, NP - Not platform switched,
NS - Negate Signalling, SP - Signal Present,
A - Accept, F - Forward, RA - MRIB Accept, RF - MRIB Forward,
MA - MFIB Accept
Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kbits per second
Other counts: Total/RPF failed/Other drops
I/O Item Counts: FS Pkt Count/PS Pkt Count
Default
(10.1.3.3,232.1.1.1) Flags:
SW Forwarding: 0/0/0/0, Other: 0/0/0
Ethernet1/0 Flags: A
Ethernet0/0 Flags: F IC NS
Pkts: 0/0
이 멀티캐스트 스트림의 모든 트래픽이 펀딩되므로 앞서 설명한 대로 원치 않는 부작용이 발생할 수 있습니다.
ip igmp static-group 명령은 라우터 R1에서 라우터 R4로 트래픽을 정적 방식으로 전달하기 위한 솔루션으로 사용됩니다.이 시나리오에서는 라우터 R1이 PIM Join 요청 업스트림(소스 또는 RP에)을 전송하고 멀티캐스트 스트림(10.1.3.3, 232.1.1.1)을 유치합니다. 이 트래픽은 OIL에 있으므로 인터페이스 Ethernet0/0으로 전달되지만 트래픽은 CPU에 펀딩되지 않습니다.
R1#show running-config interface Ethernet 0/0
!
interface Ethernet0/0
ip address 10.1.1.1 255.255.255.0
ip pim sparse-dense-mode
ip igmp static-group 232.1.1.1 source 10.1.3.3
end
R1#show ip mroute 232.1.1.1 10.1.3.3
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(10.1.3.3, 232.1.1.1), 00:07:41/stopped, flags: sTI
Incoming interface: Ethernet1/0, RPF nbr 10.1.2.2
Outgoing interface list:
Ethernet0/0, Forward/Sparse-Dense, 00:05:06/00:00:53
L 플래그가 더 이상 표시되지 않습니다.트래픽은 이 라우터에서 펀딩되지 않지만 OIL의 인터페이스로 전달됩니다.
마찬가지로 MFB 항목에도 IC 플래그가 표시되지 않습니다.
R1#show ip mfib 232.1.1.1 10.1.3.3
Entry Flags: C - Directly Connected, S - Signal, IA - Inherit A flag,
ET - Data Rate Exceeds Threshold, K - Keepalive
DDE - Data Driven Event, HW - Hardware Installed
I/O Item Flags: IC - Internal Copy, NP - Not platform switched,
NS - Negate Signalling, SP - Signal Present,
A - Accept, F - Forward, RA - MRIB Accept, RF - MRIB Forward,
MA - MFIB Accept
Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kbits per second
Other counts: Total/RPF failed/Other drops
I/O Item Counts: FS Pkt Count/PS Pkt Count
Default
(10.1.3.3,232.1.1.1) Flags:
SW Forwarding: 0/0/0/0, Other: 0/0/0
Ethernet1/0 Flags: A
Ethernet0/0 Flags: F NS
Pkts: 0/0
라우터 R1이 인터페이스 Etheirent0/0의 PIM DR이 아닌 경우 ip igmp static-group 명령과 ip igmp join-group 명령이 적용되지 않습니다.
예를 들면 다음과 같습니다.
R1#show running-config interface Ethernet 0/0
!
interface Ethernet0/0
ip address 10.1.1.1 255.255.255.0
ip pim sparse-dense-mode
ip igmp static-group 232.1.1.1 source 10.1.3.3
end
R1#show ip mroute 232.1.1.1 10.1.3.3
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(10.1.3.3, 232.1.1.1), 00:00:30/00:02:29, flags: sPT
Incoming interface: Ethernet1/0, RPF nbr 10.1.2.2
Outgoing interface list: Null
인터페이스 Ethernet0/0이 OIL에 없습니다.이는 라우터 R1이 ip igmp static-group 명령을 사용하는 링크의 PIM DR이 아니기 때문입니다.
R1#show ip pim interface ethernet 0/0
Address Interface Ver/ Nbr Query DR DR
Mode Count Intvl Prior
10.1.1.1 Ethernet0/0 v2/SD 1 30 1 10.1.1.4
라우터 R1도 PIM Join 요청을 업스트림으로 보내지 않습니다.멀티캐스트 항목이 누락되어 라우터 R2에서 이 점이 분명합니다.
R2#show ip mroute 232.1.1.1 10.1.3.3
Group 232.1.1.1 not found
다음은 라우터 R1이 인터페이스 Ethernet0/0의 PIM DR이 되는 즉시 관측할 수 있는 출력입니다.
R1#show ip pim interface ethernet 0/0
Address Interface Ver/ Nbr Query DR DR
Mode Count Intvl Prior
10.1.1.1 Ethernet0/0 v2/SD 1 30 1 10.1.1.1
R1#show ip mroute 232.1.1.1 10.1.3.3
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(10.1.3.3, 232.1.1.1), 00:02:39/00:02:55, flags: sTI
Incoming interface: Ethernet1/0, RPF nbr 10.1.2.2
Outgoing interface list:
Ethernet0/0, Forward/Sparse-Dense, 00:00:04/00:02:55
문제를 해결하기 위해 Lab 외부에서 멀티캐스트를 사용하여 테스트를 수행하려고 할 수 있습니다.이 경우 ip igmp join-group 명령을 안전한 방식으로 사용해야 합니다.멀티캐스트 패킷이 펀딩되기 때문에 ip igmp static-group 명령을 통해 ip igmp join-group 명령을 사용해야 합니다.따라서 멀티캐스트 목적지로 ping을 수행할 경우, 명령을 사용하는 라우터는 멀티캐스트 플로우의 수신기이며 ping에 응답할 수 있습니다.
예를 들면 다음과 같습니다.
소스 10.1.3.3은 라우터 R3의 IP 주소입니다. 라우터 R1의 Ethernet0/0 인터페이스에 명령을 배치하고 라우터 R3에서 ping을 수행하면 라우터 R1이 ping에 응답할 수 있습니다.따라서 라우터 R1에 직접 연결된 수신기가 있는 것처럼 테스트를 수행할 수 있습니다. ip igmp join-group 명령은 라우터 R1의 Ethernet0/0 인터페이스에 배치되고 소스가 지정되므로 라우터 R1이 해당 소스의 트래픽만 포팅하고 응답하도록 합니다.
R1#show running-config interface Ethernet 0/0
!
interface Ethernet0/0
ip address 10.1.1.1 255.255.255.0
ip pim sparse-dense-mode
ip igmp join-group 232.1.1.1 source 10.1.3.3
end
R3#ping 232.1.1.1 source 10.1.3.3
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 232.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.1.3.3
Reply to request 0 from 10.1.1.1, 2 ms
R3#
라우터 R1의 debug ip icmp 명령은 ping이 도착했으며 라우터 R1이 응답을 전송했음을 나타냅니다.
R1#debug ip icmp
ICMP packet debugging is on
R1#
*Oct 30 11:35:41.133: ICMP: echo reply sent, src 10.1.1.1, dst 10.1.3.3,
topology BASE, dscp 0 topoid 0
모범 사례는 ip igmp join-group 명령을 랩에서 테스트용이거나 라이브 네트워크에서 임시 테스트용인 경우가 아니면 사용하지 않는 것입니다.모든 테스트가 완료된 후 명령을 제거합니다.멀티캐스트 트래픽을 정적으로 전달해야 하는 경우 ip igmp static-group 명령을 대신 사용합니다.