본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
Cisco CGMP(Group Management Protocol) 및 IGMP(Internet Group Management Protocol) 스누핑의 목적은 스위치드 네트워크의 멀티캐스트 트래픽을 억제하는 것입니다. 기본적으로 LAN 스위치는 브로드캐스트 도메인 내에서 멀티캐스트 트래픽을 플러딩하며, 많은 멀티캐스트 서버가 세그먼트로 스트림을 전송하는 경우 많은 대역폭을 사용할 수 있습니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
이 문서에 대한 특정 요건이 없습니다.
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
일반적으로 스위치는 수신하는 모든 프레임의 소스 주소 필드를 확인하여 MAC 주소를 학습하기 때문에 멀티캐스트 트래픽이 플러딩됩니다. 멀티캐스트 MAC 주소는 패킷의 소스 주소로 사용되지 않습니다. 이러한 주소는 MAC 주소 테이블에 나타나지 않으며 스위치에는 학습할 방법이 없습니다.
이 문제의 첫 번째 해결 방법은 각 그룹 및 각 클라이언트에 대해 고정 MAC 주소를 구성하는 것입니다. 그러나 이 솔루션은 잘 작동하지만 확장 가능하지도 동적 솔루션도 아닙니다. 다음 명령 중 하나를 실행하여 Catalyst 4000, 5000 또는 6000 스위치에서 이 솔루션을 사용합니다.
set cam static
set cam permanent
이러한 두 명령은 정적 항목이 재부팅 시 사라지며 영구 엔트리는 나타나지 않는다는 점을 제외하면 동일한 효과를 갖습니다.
두 번째 솔루션은 멀티캐스트 라우터와 스위치 사이에서 실행되는 Cisco 전용 프로토콜인 CGMP를 사용하는 것입니다. CGMP를 사용하면 Cisco 멀티캐스트 라우터가 호스트에서 보낸 IGMP 메시지를 이해하고 IGMP 패킷에 포함된 정보에 대해 스위치에 알릴 수 있습니다.
마지막으로 가장 효율적인 솔루션은 IGMP 스누핑을 사용하는 것입니다. IGMP 스누핑을 사용하면 스위치는 호스트 자체에서 IGMP 메시지를 가로채고 그에 따라 MAC 테이블을 업데이트합니다. IGMP 스누핑을 지원하려면 고급 하드웨어가 필요합니다.
이 문서에 명시된 CGMP 구성은 CatOS를 실행하는 Catalyst 4000 및 5000 스위치용(CGMP는 Catalyst 6000 스위치에서 지원되지 않음), IGMP 스누핑 구성은 CatOS를 실행하는 Catalyst 5000 및 600 스위치용 구성입니다.
다음 섹션에서는 멀티캐스트 주소에 대해 간략하게 설명하고, IGMP의 기능에 대해 설명하며, CGMP 및 IGMP 스누핑에 대한 추가 세부 정보를 제공합니다.
멀티캐스트 IP 주소는 클래스 D IP 주소입니다. 따라서 224.0.0.0~239.255.255.255의 모든 IP 주소는 멀티캐스트 IP 주소입니다. GDA(Group Destination Addresses)라고도 합니다.
각 GDA에 대해 연결된 MAC 주소가 있습니다. 이 MAC 주소는 아래와 같이 01-00-5e로 구성되며, 그 뒤에 GDA의 마지막 23비트가 16진수로 변환됩니다.
239.20.20.20은 MAC 01-00-5e-14-14-14에 해당합니다.
239.10.10.10은 MAC 01-00-5e-0a-0a-0a-0a에 해당합니다.
따라서 이는 일대일 매핑이 아니라 일대다 매핑입니다. 이 두 주소에서 첫 번째 8진수(239)가 MAC 주소에서 사용되지 않음을 확인할 수 있습니다. 따라서 마지막 3개의 8진수가 동일하지만 첫 번째 8진수가 서로 다른 멀티캐스트 주소에는 MAC 주소가 중복됩니다.
일부 멀티캐스트 IP 주소는 아래와 같이 특수 용도로 예약되어 있습니다.
224.0.0.1 - 모든 멀티캐스트 지원 호스트.
224.0.0.2 - 모든 멀티캐스트 지원 라우터
224.0.0.5 및 224.0.0.6은 OSPF(Open Shortest Path First)에서 사용됩니다.
일반적으로 224.0.0.1~224.0.0.255의 주소는 다양한 프로토콜(HSRP(Hot Standby Router Protocol)과 같은 표준 또는 독점적 프로토콜)에서 예약되고 사용됩니다. 멀티캐스트 네트워크에서 GDA에 사용하지 않는 것이 좋습니다. CGMP 및 IGMP 스누핑은 이 예약된 주소 범위에서 작동하지 않습니다.
IGMP는 IGMPv1용 RFC1112, IGMPv2용 RFC2236, IGMPv3용 RFC3376에서 정의된 표준입니다. IGMP는 특정 멀티캐스트 트래픽을 수신하기 위해 호스트가 라우터에 등록되는 방법을 지정합니다. 다음 섹션에서는 IGMP에 대한 간략한 개요를 제공합니다.
IGMPv1(IGMP Version 1) 메시지는 IP 데이터그램에서 전송되며 다음 필드를 포함합니다.
버전: 1
유형: IGMP 메시지에는 멤버십 쿼리와 멤버십 리포트의 두 가지 유형이 있습니다.
체크섬
GDA
멤버십 보고서는 특정 GDA(멀티캐스트 그룹)를 수신하려는 호스트에서 발행됩니다. 정기적인 간격으로 라우터에서 멤버십 쿼리를 실행하여 해당 세그먼트의 GDA에 관심이 있는 호스트가 있는지 확인합니다.
호스트 멤버십 보고서는 요청되지 않은(호스트가 먼저 GDA 트래픽을 수신하고자 하는 경우) 또는 멤버십 쿼리에 대한 응답으로 발급됩니다. 다음 필드로 전송됩니다.
소스 MAC: 호스트 MAC 주소
대상 MAC: GDA용 대상 MAC
소스 IP: 호스트의 IP 주소
대상 IP: GDA
IGMP 데이터에는 GDA 및 기타 필드가 포함되어 있습니다.
호스트 구성원 쿼리는 라우터에서 all-multicast 주소로 전송됩니다. 224.0.0.1. 이러한 쿼리는 IGMP GDA 필드0.0.0.0 사용합니다. 각 그룹의 호스트는 해당 쿼리에 응답해야 합니다. 그렇지 않으면 라우터가 해당 GDA에 대한 트래픽을 해당 세그먼트로 전달하는 것을 중지합니다(3회 시도 후). 라우터는 각 소스에 대해 멀티캐스트 라우팅 항목을 유지하고, 이를 발신 인터페이스 목록(IGMP 보고서가 나온 곳에서 인터페이스)에 연결합니다. 응답 없이 3개의 IGMP 쿼리를 시도한 후 이 인터페이스는 해당 GDA에 연결된 모든 항목에 대해 발신 인터페이스 목록에서 지워집니다.
참고: IGMPv1에는 탈퇴 메커니즘이 없습니다. 호스트가 더 이상 트래픽을 수신하지 않으려는 경우 이 호스트는 단순히 종료됩니다. 서브넷의 마지막 호스트인 경우 라우터는 쿼리에 대한 응답을 받지 못하고 해당 서브넷에 대한 GDA를 삭제합니다.
IGMP 버전 2(IGMPv2)에서 버전 필드가 제거되었으며 이제 유형 필드에서 다른 값을 적용할 수 있습니다. 유형은 아래와 같습니다.
구성원 자격 쿼리
IGMPv1 멤버십 보고서
버전 2 멤버십 보고서
그룹 나가기
다음은 IGMPv2에 추가된 가장 중요한 새로운 기능에 대한 설명입니다.
IGMP Leave 메시지: 호스트가 그룹을 탈퇴하려면 IGMPv1에서와 같이 무음으로 남겨두지 않고 목적지 224.0.0.2에 Leave Group IGMP 메시지를 보내야 합니다.
이제 라우터는 그룹 GDA에 멤버십 쿼리를 보내는 대신 그룹 GDA에 보내 그룹별 쿼리를 보낼 수 있습니다0.0.0.0.
IGMP 버전 3(ICMPv3)에는 다음 값을 가질 수 있는 유형 필드가 있습니다.
구성원 자격 쿼리
버전 3 멤버십 보고서
IGMPv3 구현은 이전 버전의 IGMP와의 상호 운용성을 위해 다음 세 가지 메시지 유형도 지원해야 합니다.
버전 1 멤버십 보고서 [RFC1112]
버전 2 멤버십 보고서 [RFC2236]
버전 2 탈퇴 그룹 [RFC2236]
IGMPv3는 소스 필터링에 대한 지원을 추가합니다. 즉, 시스템이 특정 소스 주소에서 또는 특정 멀티캐스트 주소로 전송된 모든 특정 소스 주소에서 패킷을 수신하고자 하는 관심을 보고할 수 있는 기능입니다. 이 기능을 SSM(Source Specific Multicast)이라고도 합니다.
컴퓨터가 SSM을 지원하려면 IGMPv3를 지원해야 합니다. 그러나 상대적으로 적은 수의 OS는 IGMPv3를 지원합니다. Windows XP는 IGMPv3를 지원하며 FreeBSD 및 Linux에 사용할 수 있는 IGMPv3 지원 패치가 있습니다.
관리자는 라우터 레벨에서 IGMPv3 지원과 스위치 레벨에서 IGMPv3 스누핑을 구별해야 합니다. 두 가지 다른 기능입니다.
하이브리드 모드 소프트웨어(Supervisor의 CatOS 및 MSFC의 Cisco IOS® Software)를 실행하는 Catalyst 6000은 버전 7.5(1)부터 시작하는 IGMPv3 스누핑을 공식적으로 지원합니다.
7.5(1) 이전 버전에서 Catalyst 6000 스위치는 IGMPv3에 대한 공식적인 지원을 받지 않았지만 일반적으로 IGMPv3 패킷을 처리할 수 있어야 합니다.
Integrated IOS Software를 실행하는 Catalyst 6000은 버전 12.1(8a)E에서 시작하는 라우터 레벨(L3 인터페이스)에서 IGMPv3를 지원합니다.
Catalyst 4000은 Supervisor III 및 IV의 라우터 레벨에서 IGMPv3만 지원합니다. IGMPv3 스누핑을 지원하지 않습니다.
IGMPv3는 Cisco IOS® 소프트웨어 릴리스 12.1(5)T 이상 릴리스를 실행하는 모든 플랫폼에서 지원됩니다.
스위치에서 IGMP 스누핑을 실행하는 경우 IGMP 패킷을 인터셉트하고 인터셉트된 패킷의 내용을 기반으로 정적 레이어 2(L2) 포워딩 테이블을 채웁니다. 네트워크에 IGMPv1 또는 v2 호스트가 있는 경우 스위치는 IGMP Joins and Leaves를 읽고 어떤 호스트가 어떤 멀티캐스트 스트림을 수신할지 또는 멀티캐스트 스트림 수신을 중지할지를 결정합니다.
IGMPv3는 그룹 주소(멀티캐스트 주소)뿐만 아니라 트래픽이 예상되는 소스도 사용하기 때문에 더욱 복잡합니다. CatOS 7.5 이상 및 Native IOS Version 12.1(8a)E 이상을 실행하는 Catalyst 6000 스위치와 별도로, 현재 이러한 패킷을 효과적으로 스누핑하고 이 정보를 기반으로 포워딩 테이블을 구축할 수 있는 스위치는 없습니다. 따라서 스위치에 IGMPv3 호스트가 있는 경우 IGMP 스누핑을 꺼야 합니다. IGMP 스누핑이 꺼져 있으면 스위치에서 멀티캐스트 스트림에 대한 L2 포워딩 테이블을 동적으로 구축할 수 없습니다. 다시 말해, 스위치는 멀티캐스트 스트림을 플러딩합니다.
IGMP 스누핑이 비활성화된 경우, 멀티캐스트 트래픽으로 서브넷을 플러딩하는 것을 방지하기 위해 멀티캐스트 CAM(Content-Addressable Memory) 항목을 수동으로 구성하는 것이 하나의 솔루션입니다. 그러나 이는 관리상의 부담이며 동적 솔루션이 아닙니다. 클라이언트가 더 이상 트래픽을 수신하지 않으려는 경우 CAM 항목이 스위치에서 제거되지 않으므로(수동 개입이 아닌 경우) 네트워크 트래픽은 여전히 호스트로 전달됩니다.
또한 네트워크에서 IGMPv3를 사용할 때 CGMP를 사용하는 스위치는 CGMP Fastleave가 작동하지 않는다는 사실과 다르게 작동합니다. CGMP Fastleave가 필요한 경우 IGMPv2로 복귀하는 것이 좋습니다.
뛰어난 플랫폼별 주의 사항은 각 스위치의 릴리스 노트에서 확인할 수 있습니다.
IGMPv1 및 IGMPv2에서는 IP 서브넷당 하나의 라우터만 쿼리를 전송합니다. 이 라우터를 쿼리 라우터라고 합니다. IGMPv1에서는 멀티캐스트 라우팅 프로토콜의 도움을 받아 쿼리 라우터가 선택됩니다. IGMPv2에서는 라우터 중에서 가장 낮은 IP 주소로 선택됩니다. 다음은 몇 가지 가능성입니다.
라우터가 IGMPv2 보고서를 인식하지 못하므로 모든 호스트는 IGMPv1 보고서만 사용해야 합니다.
IGMPv1 호스트는 IGMPv2 쿼리 또는 IGMPv2 그룹 멤버십 쿼리를 이해하지 못합니다. 라우터는 IGMPv1만 사용하고 탈퇴 작업을 일시 중단해야 합니다.
IGMPv1 라우터는 IGMPv2 라우터를 탐지할 방법이 없습니다. 따라서 관리자가 IGMPv2 라우터를 IGMPv1 라우터로 구성해야 합니다. 어떤 경우에도 쿼리 라우터에 동의하지 않을 수 있습니다.
모든 버전의 IGMP에서는 IP 서브넷당 하나의 라우터만 쿼리를 전송합니다. 이 라우터를 쿼리 라우터라고 합니다. IGMPv1에서는 멀티캐스트 라우팅 프로토콜의 도움을 받아 쿼리 라우터가 선택됩니다. IGMPv2 및 IGMPv3에서는 라우터 중에서 가장 낮은 IP 주소로 선택됩니다. 다음은 몇 가지 상호 운용성 옵션입니다.
라우터가 IGMPv3 보고서를 인식하지 못하기 때문에 모든 호스트는 IGMPv1/IGMPv2 보고서를 사용합니다.
IGMPv1/IGMPv2 호스트는 IGMPv3 쿼리 또는 IGMPv3 멤버십 쿼리를 인식하지 못합니다. 라우터는 가장 낮은 IGMP 클라이언트 버전에 해당하는 IGMP 버전만 사용해야 합니다. IGMPv3 및 IGMPv2 클라이언트가 있는 경우 라우터는 IGMPv2를 사용합니다. IGMPv1, IGMPv2 및 IGMPv3 클라이언트가 있는 경우 라우터는 IGMPv1을 사용합니다.
동일한 세그먼트에 서로 다른 버전의 라우터가 있는 경우, 하위 버전 라우터는 상위 버전 라우터를 탐지할 방법이 없습니다. 따라서 관리자가 동일한 버전으로 다른 라우터를 구성해야 합니다. 이 버전은 쿼리 라우터의 가장 낮은 버전과 일치해야 합니다.
기본적으로 서브넷의 특정 그룹에 등록된 사용자가 없는 경우 라우터는 해당 그룹의 멀티캐스트 트래픽을 해당 서브넷으로 전달하지 않습니다. 즉, 라우터가 GDA에 대한 IGMP 보고서를 받아 멀티캐스트 라우팅 테이블에 추가하고 해당 그룹에 대한 트래픽 포워딩을 시작해야 합니다.
라우터에서 다음 작업을 수행해야 합니다.
아래에 표시된 대로 전역 모드에서 멀티캐스트 라우팅을 활성화합니다.
ip multicast-routing
아래 그림과 같이 관련 인터페이스에서 멀티캐스트 라우팅 프로토콜을 구성합니다.
ip pim dense-mode
아래와 같이 IGMP를 모니터링합니다.
show ip igmp interface show ip igmp group show ip mroute
아래와 같이 인터페이스에서 IGMP 보고서를 전송하도록 라우터를 구성합니다.
ip igmp join-group [GDA_ip_address]
ip igmp version [1 | 2 | 3]
라우터는 두 하위 인터페이스인 Fast-Ethernet 0.2와 Fast-Ethernet 0.3 간에 라우팅하도록 구성됩니다. 두 인터페이스 모두 IGMP를 실행하도록 구성됩니다. 아래 출력에서는 IGMP 버전, 그룹 가입 등을 볼 수 있습니다.
ip multicast-routing interface FastEthernet0 no ip address no ip directed-broadcast ! interface FastEthernet0.2 encapsulation isl 2 ip address 10.2.2.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode ! interface FastEthernet0.3 encapsulation isl 3 ip address 10.3.3.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode !
show ip igmp interface
Fa0.2 is up, line protocol is up Internet address is 10.2.2.1/24 IGMP is enabled on interface Current IGMP version is 2 CGMP is disabled on interface IGMP query interval is 60 seconds IGMP querier timeout is 120 seconds IGMP max query response time is 10 seconds Inbound IGMP access group is not set IGMP activity: 3 joins, 2 leaves Multicast routing is enabled on interface Multicast TTL threshold is 0 Multicast designated router (DR) is 10.2.2.1 (this system) IGMP querying router is 10.2.2.1 (this system) Multicast groups joined: 224.0.1.40 Fa0.3 is up, line protocol is up Internet address is 10.3.3.1/24 IGMP is enabled on interface Current IGMP version is 2 CGMP is disabled on interface IGMP query interval is 60 seconds IGMP querier timeout is 120 seconds IGMP max query response time is 10 seconds Inbound IGMP access group is not set IGMP activity: 1 joins, 1 leaves Multicast routing is enabled on interface Multicast TTL threshold is 0 Multicast designated router (DR) is 10.3.3.1 (this system) IGMP querying router is 10.3.3.1 (this system) No multicast groups joined
show ip mroute and show ip igmp group
Router_A#show ip mroute IP Multicast Routing Table Flags: D - Dense, S - Sparse, C - Connected, L - Local, P - Pruned R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.10.10.10), 00:01:15/00:02:59, RP 0.0.0.0, flags: DJC Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: FastEthernet0.3, Forward/Dense, 00:01:16/00:00:00 (10.2.2.2, 239.10.10.10), 00:00:39/00:02:20, flags: CT Incoming interface: FastEthernet0.2, RPF nbr 0.0.0.0 Outgoing interface list: FastEthernet0.3, Forward/Dense, 00:00:39/00:00:00 Router_A#show ip igmp groups IGMP Connected Group Membership Group Address Interface Uptime Expires Last Reporter 239.10.10.10 Fa0.3 00:02:48 00:02:04 10.3.3.2 Router_A#
Catalyst 스위치에 대한 CGMP 지원은 Multicast Catalyst 스위치 지원 매트릭스를 참조하십시오.
CGMP는 L2 네트워크의 멀티캐스트 트래픽을 제한하기 위해 Cisco에서 처음으로 구현되었습니다. 스위치는 기본적으로 L3 패킷을 볼 수 없으므로 IGMP 패킷을 구분할 수 없습니다. CGMP에서는 라우터가 호스트 간에 인터페이스를 제공합니다. 라우터는 "통화" IGMP 및 스위치는 "통화" CGMP입니다.
CGMP 프레임은 대상 MAC 주소가 01-00-0c-dd-dd-dd이고 값이 0x2001인 SNAP(Subnetwork Access Protocol) 헤더가 있는 이더넷 프레임입니다. CGMP 프레임에는 다음 필드가 포함됩니다.
버전: 1 또는 2.
메시지 유형: 참가 또는 나가기.
개수: 메시지의 멀티캐스트/유니캐스트 주소 쌍 수입니다.
GDA: 멀티캐스트 그룹의 48비트 MAC 주소입니다.
유니캐스트 소스 주소(미국): GDA에 참여하려는 디바이스의 48비트 MAC 유니캐스트 주소입니다.
참고: count 필드의 값은 마지막 두 필드가 표시되는 횟수를 결정합니다.
기본적으로 스위치(Catalyst의 NMP라고 함)의 프로세서는 show cam system
명령이 실행되었습니다. 스위치에서 CGMP를 활성화하면 주소 01-00-0c-dd-dd-dd가 show cam system
명령 출력.
아래 표에는 가능한 모든 CGMP 메시지가 나열되어 있습니다.
GDA | 미국 | 참가/나가기 | 의미 |
---|---|---|---|
멀티캐스트 MAC | 클라이언트 MAC | 참가 | 그룹에 포트를 추가합니다. |
멀티캐스트 MAC | 클라이언트 MAC | 나가기 | 그룹에서 포트를 삭제합니다. |
00-00-00-00-00-00 | 라우터 MAC | 참가 | 라우터 포트를 할당합니다. |
00-00-00-00-00-00 | 라우터 MAC | 나가기 | 라우터 포트 할당 해제 |
멀티캐스트 MAC | 00-00-00-00-00-00 | 나가기 | 그룹을 삭제합니다. |
00-00-00-00-00-00 | 00-00-00-00-00-00 | 나가기 | 모든 그룹을 삭제합니다. |
스위치는 새로 생성된 멀티캐스트 항목에 자동으로 추가되도록 모든 라우터 포트를 인식해야 합니다. 이 스위치는 라우터 MAC USA가 있는 GDA 00-00-00-00-00-00-00에 대한 CGMP Join을 수신하면 라우터 포트를 학습합니다(표에 세 번째 유형의 메시지). 이러한 메시지는 CGMP를 실행하도록 구성된 모든 인터페이스에서 라우터에서 생성됩니다. 그러나 스위치에서 라우터 포트를 구성하기 위한 고정 방법도 있습니다.
새 클라이언트가 GDA에 대한 트래픽을 수신하도록 요청하므로 클라이언트는 IGMP 멤버십 보고서 메시지를 보냅니다.
라우터는 IGMP 보고서를 수신하여 처리하고 스위치에 CGMP 메시지를 전송합니다. 라우터는 대상 MAC 주소를 CGMP Join의 GDA 필드에 복사하고 소스 MAC 주소를 CGMP 조인의 미국에 복사합니다. 그런 다음 스위치로 다시 전송합니다.
CGMP가 활성화된 스위치는 CGMP 01-00-0c-dd-dd-dd 주소를 수신해야 합니다. 스위치의 프로세서는 미국의 CAM 테이블을 살펴봅니다. CAM 테이블에서 미국을 확인하면 스위치가 미국의 어느 포트를 인식하고 다음 중 하나를 수행합니다.
GDA에 대한 새 고정 엔트리를 만들고 USA 포트를 모든 라우터 포트와 함께 연결합니다.
이 GDA에 대한 포트 목록에 미국 포트를 추가합니다(고정 항목이 이미 있는 경우).
CGMP로 학습된 정적 항목은 영구적입니다. VLAN에서 스패닝 트리 토폴로지가 변경되거나 라우터가 이전 테이블의 마지막 CGMP Leave 메시지 중 하나를 보내지 않는 한는 영구적입니다.
IGMPv1이 호스트인 경우 IGMP Leave 메시지를 보내지 마십시오. 라우터는 세 개의 연속 IGMP 쿼리에 대한 회신을 받지 못한 경우에만 Leave 메시지를 보냅니다. 즉, 사용자가 해당 그룹에 여전히 관심이 있는 경우 그룹에서 어떤 포트도 삭제되지 않습니다.
IGMPv2의 도입과 IGMP Leave가 등장하면서 Cisco는 원래의 CGMP 사양(CGMPv2)에 추가되었습니다. 이 추가를 CGMP Fast-Leave라고 합니다.
CGMP Fast-Leave 프로세싱을 사용하면 스위치에서 수퍼바이저 엔진 모듈 포트의 호스트에서 모든 라우터 멀티캐스트 주소(224.0.0.2)으로 보낸 메시지를 탐지할 수 있습니다. 수퍼바이저 엔진 모듈이 Leave 메시지를 수신하면 쿼리 응답 타이머를 시작하고 해당 포트에서 이 멀티캐스트 그룹을 수신할 호스트가 여전히 있는지 확인하기 위해 해당 leave가 수신된 포트에 메시지를 보냅니다. CGMP Join 메시지를 수신하기 전에 이 타이머가 만료되면 원래 Leave 메시지에 지정된 멀티캐스트 그룹에 대한 멀티캐스트 트리에서 포트가 삭제됩니다. 멀티캐스트 그룹의 마지막 포트인 경우 IGMP Leave 메시지를 모든 라우터 포트에 전달합니다. 그런 다음 라우터는 그룹별 쿼리를 전송하여 일반 삭제 프로세스를 시작합니다. 응답이 수신되지 않으므로 라우터는 해당 인터페이스의 멀티캐스트 라우팅 테이블에서 이 그룹을 제거합니다. 또한 고정 테이블에서 그룹을 삭제하는 스위치로 CGMP Leave 메시지를 보냅니다. Fast-Leave 프로세싱은 여러 멀티캐스트 그룹이 동시에 사용 중인 경우에도 스위치드 네트워크의 모든 호스트에 대해 최적의 대역폭 관리를 보장합니다.
CGMP Leave(CGMP Leave)가 활성화되면 show cam system
명령 출력(아래 참조).
01-00-5e-00-00-01 01-00-5e-00-00-02
IGMP Leave는 224.0.0.2을 사용하고 IGMP 쿼리는 224.0.0.1을 사용합니다.
CGMP 문제를 해결하려면 다음 단계를 수행하십시오.
HSRP와의 충돌로 인해 CGMP Leave 프로세싱은 기본적으로 비활성화되어 있습니다. HSRP는 MAC 주소 01-00-5e-00-00-02를 사용하며, 이는 IGMP 버전 2의 IGMP Leave와 동일합니다. CGMP Fast-Leave를 사용하면 모든 HSRP 패킷이 스위치 CPU로 이동합니다. HSRP 메시지는 IGMP 패킷이 아니므로 스위치는 모든 메시지를 재생성하여 모든 라우터 포트로 전송합니다. hsrp hello를 받는 라우터 또는 hsrp 피어는 연결이 끊어집니다. 따라서 HSRP 문제를 디버깅할 때 CGMP Fast-Leave를 비활성화해 보십시오.
CGMP Leave 처리를 활성화하려면 set cgmp leave enable
명령을 실행합니다.
CGMP Leave 처리가 활성화된 경우 Catalyst 5000 제품군 스위치는 PIM-v1, HSRP 및 CGMP Self-Join 메시지를 통해 라우터 포트를 학습합니다. CGMP Leave 처리가 비활성화되면 Catalyst 5000 제품군 스위치는 CGMP Self-Join 메시지만 통해 라우터 포트를 학습합니다.
CGMP는 MAC 주소 범위 01-00-5E-00-00-00에서 01-00-5E-00-00-FF로 매핑되는 IP 멀티캐스트 주소에 대해 멀티캐스트 트래픽을 정리하지 않습니다. 224.0.0.0~224.0.0.255 범위의 예약된 IP 멀티캐스트 주소는 단일 L3 홉으로 로컬 IP 멀티캐스트 트래픽을 전달하는 데 사용됩니다.
소스 전용 네트워크는 소스 멀티캐스트만 있고 실제 클라이언트가 없는 세그먼트입니다. 따라서 해당 세그먼트에서 IGMP 보고서가 생성되지 않을 가능성이 있습니다. 그러나 CGMP는 여전히 이 소스의 플러딩을 제한해야 합니다(라우터 전용). 라우터가 IGMP 보고서가 없는 한 인터페이스에서 멀티캐스트 트래픽을 탐지하면 멀티캐스트 소스 전용 네트워크로 식별됩니다. 라우터가 자신에 대해 CGMP Join 메시지를 생성하며, 스위치는 단순히 이 그룹(라우터 포트만 포함)을 추가합니다.
아래 명령은 Catalyst 4000 및 5000 Series(더하기 2901, 2902, 2926, 2948G 및 4912)에만 유효합니다.
멀티캐스트 라우터
IP 멀티캐스팅 사용(전역 명령):
ip multicast-routing
다음 명령을 사용하여 CGMP(인터페이스 모드)를 실행하는 각 인터페이스를 활성화합니다.
ip pim
ip igmp
ip cgmp
다음 명령을 사용하여 L2 멀티캐스트 문제를 디버깅합니다.
debug ip igmp
debug ip cgmp
Catalyst 4000 또는 5000 시리즈
다음 명령을 사용하여 CGMP를 활성화/비활성화합니다.
set cgmp
다음 명령을 사용하여 CGMP Fast-Leave를 활성화/비활성화합니다.
set cgmp leave
다음 명령을 사용하여 멀티캐스트 라우터(고정)를 구성합니다.
set multicast router
다음 명령을 사용하여 멀티캐스트 라우터를 지웁니다.
clear multicast router
다음은 CGMP 작업을 확인하는 다양한 명령입니다.
show cam static
show cgmp statistic
show cgmp leave
show multicast router
show multicast group
show multicast group cgmp
show multicast group count
이것은 Cisco 라우터 및 Catalyst 스위치에 대한 실제 컨피그레이션 예입니다.
이 컨피그레이션에서는 호스트가 그룹에 조인하는 작업과 관련된 작업을 표시합니다. 또한 이 컨피그레이션에서는 호스트가 Fast-Leave가 활성화된 그룹을 떠나는 작업을 보여줍니다. 스니퍼 추적, 스위치 및 라우터의 구성도 제공됩니다.
CGMP를 사용하여 그룹을 조인할 때 다음 단계를 참조하십시오.
아래와 같이 스위치에서 CGMP를 활성화합니다.
Switch_B (enable) set cgmp en MCAST-CGMP: Set CGMP Sys Entrie MCAST-CGMP: Set CGMP Sys Entrie MCAST-CGMP: Set CGMP Sys Entrie CGMP support for IP multicast enabled. Switch_B (enable)
아래에서 볼 수 있듯이 항목 01-00-0c-dd-dd-dd는 의 모든 VLAN에 포함됩니다. show cam system
명령 출력. 또한 네트워크에서 CGMP Fast-Leave를 실행하므로 01-00-5e-00-00-01 및 01-00-5e-00-00-02의 항목을 볼 수 있습니다.
Switch_B (enable) show cgmp leave CGMP: enabled CGMP leave: enabled Switch_B (enable) show cam system * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 1 00-10-2f-00-14-00 # 7/1 1 00-e0-fe-4b-f3-ff # 1/9 1 01-00-0c-cc-cc-cc # 1/9 1 01-00-0c-cc-cc-cd # 1/9 1 01-00-0c-dd-dd-dd # 1/9 1 01-00-0c-ee-ee-ee # 1/9 1 01-80-c2-00-00-00 # 1/9 1 01-80-c2-00-00-01 # 1/9 2 00-10-2f-00-14-00 # 7/1 2 01-00-0c-cc-cc-cc # 1/9 2 01-00-0c-cc-cc-cd # 1/9 2 01-00-0c-dd-dd-dd # 1/9 2 01-80-c2-00-00-00 # 1/9 2 01-80-c2-00-00-01 # 1/9 3 01-00-0c-cc-cc-cc # 1/9 3 01-00-0c-cc-cc-cd # 1/9 3 01-00-0c-dd-dd-dd # 1/9 3 01-80-c2-00-00-00 # 1/9 3 01-80-c2-00-00-01 # 1/9 Total Matching CAM Entries Displayed = 19
라우터는 라우터의 미국 MAC과 함께 GDA 00-00-00-00-00-00-00에 CGMP Join 메시지를 보냅니다. 따라서 라우터 포트가 라우터 포트 목록에 추가됩니다(아래의 첫 번째 예 참조).
라우터에서
6d01h: CGMP: Sending self Join on Fa0.3 6d01h: GDA 0000.0000.0000, USA 0060.70cd.83c9
스위치에서
MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 2 MCAST-CGMP-JOIN: join GDA 00-00-00-00-00-00 MCAST-CGMP-JOIN:USA 00-60-70-cd-83-c9 MCAST-ROUTER: Adding QUERIER port 3/1, vlanNo 2 MCAST-ROUTER: Creating RouterPortTimer for port 3/1, vlanNo 2 Switch_B (enable) show multi router CGMP enabled IGMP disabled Port Vlan --------- ---------------- 3/1 2-3 Total Number of Entries = 1 '*' - Configured
3/1의 PC는 GDA가 포함된 보고서를 IGMP에 전송합니다. 239.10.10.10(아래의 프레임 2 참조). 아래는 show ip igmp group
명령 출력은 라우터 Router_A에 있습니다.
그러면 라우터가 224.10.10.10에 대한 트래픽을 fa0.3으로 전달합니다. 이는 클라이언트 PC인 10.3.3.2에서 IGMP 보고서를 수신한 결과입니다.
Router_A#show ip igmp groups IGMP Connected Group Membership Group Address Interface Uptime Expires Last Reporter 239.10.10.10 Fa0.3 00:02:48 00:02:04 10.3.3.2 Router_A#
라우터가 보고서를 수신하고 다음 정보와 함께 CGMP Join 메시지를 전송합니다.
소스 MAC: 라우터의 MAC 주소
대상 MAC: 01-00-cc-dd-dd
목차: 클라이언트 PC의 MAC 주소(미국): 멀티캐스트 그룹의 00-00-0c-07-ac-00 MAC 주소: 01-00-5e-0a-0a-0a-0a(아래 프레임 3 참조)
라우터에서
6d01h: IGMP: Received v2 Report from 10.3.3.2 (Fa0.3) for 239.10.10.10 6d01h: CGMP: Received IGMP Report on Fa0.3 6d01h: from 10.3.3.2 for 239.10.10.10 6d01h: CGMP: Sending Join on Fa0.3
에 01-00-cc-dd-dd-dd가 포함된 스위치 show cam system
명령 출력에 CGMP가 활성화되어 있습니다. 스위치는 패킷을 처리할 수 있습니다.
스위치는 동적 CAM 테이블에서 조회를 수행하여 클라이언트 PC의 MAC 주소가 있는 포트를 확인합니다. 주소는 포트 3/2에 있고, 스위치는 포트 3/2에 대해 CAM 테이블에서 01-00-5e-0a-0a-0a의 정적 항목을 포트 3/2에 바인딩합니다. 또한 이 스위치는 라우터 포트 3/1을 해당 GDA의 정적 항목에 추가합니다.
스위치에서
MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 3 MCAST-CGMP-JOIN: join GDA 01-00-5e-0a-0a-0a MCAST-CGMP-JOIN:USA 00-60-5c-f4-bd-e2 MCAST-CGMP-JOIN: 3/2/3: index 81 MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 2 MCAST-CGMP-JOIN: join GDA 01-00-5e-00-01-28 MCAST-CGMP-JOIN:USA 00-60-70-cd-83-c9 MCAST-CGMP-JOIN: 3/1/2: index 80
멀티캐스트 그룹 239.10.10.10에 대한 모든 후속 트래픽은 이 VLAN의 이 포트에만 전달됩니다. 다음은 Catalyst 스위치의 정적 항목입니다. 여기서 3/1은 라우터 포트이고 3/2는 클라이언트 포트입니다.
Switch_B (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1-2 Total Matching CAM Entries Displayed = 3 Switch_B (enable)
아래 예에서는 클라이언트가 IGMP 버전 2 클라이언트이고 스위치에서 Fast-Leave가 활성화되어 있어야 합니다.
다음 절차에서는 CGMP Fast-Leave를 활성화합니다. Cisco의 show cgmp leave
명령 출력에서 활성화되었는지 확인합니다. 또한 show cam system
스위치가 01-00-5e-00-00-00-01 및 01-00-5e-00-00-02(leave에 사용되는 주소)를 수신하는지 확인하는 명령 출력
Switch_B (enable) show cgmp leave CGMP: enabled CGMP leave: enabled Switch_B (enable) show cam sys * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 1 00-10-2f-00-14-00 # 7/1 1 00-e0-fe-4b-f3-ff # 1/9 1 01-00-0c-cc-cc-cc # 1/9 1 01-00-0c-cc-cc-cd # 1/9 1 01-00-0c-dd-dd-dd # 1/9 1 01-00-0c-ee-ee-ee # 1/9 1 01-80-c2-00-00-00 # 1/9 1 01-80-c2-00-00-01 # 1/9 2 00-10-2f-00-14-00 # 7/1 2 01-00-0c-cc-cc-cc # 1/9 2 01-00-0c-cc-cc-cd # 1/9 2 01-00-0c-dd-dd-dd # 1/9 2 01-00-5e-00-00-01 # 1/9 2 01-00-5e-00-00-02 # 1/9 2 01-80-c2-00-00-00 # 1/9 2 01-80-c2-00-00-01 # 1/9 3 01-00-0c-cc-cc-cc # 1/9 3 01-00-0c-cc-cc-cd # 1/9 3 01-00-0c-dd-dd-dd # 1/9 3 01-00-5e-00-00-01 # 1/9 3 01-00-5e-00-00-02 # 1/9 3 01-80-c2-00-00-00 # 1/9 Do you wish to continue y/n [n]? y Total Matching CAM Entries Displayed = 22
클라이언트가 IMPG Leave 메시지를 224.0.0.2에 보냅니다. 스위치는 인터셉트하고 휴가를 받는 포트에서 IGMP 쿼리를 전송합니다. 다음은 debug
스위치의 출력:
MCAST-IGMP-LEAVE:Recvd leave on port 3/2 vlanNo 3 MCAST-IGMP-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 MCAST-IGMP-LEAVE:deletion_timer = 1 MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 MCAST-SEND: Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3
응답이 수신되지 않았으므로 Catalyst는 아래와 같이 IGMP Leave 메시지를 라우터에 전달합니다.
MCAST-TIMER:IGMPLeaveTimer expired on port 3/2 vlanNo 3 GDA 01-00-5e-0a-0a-0a MCAST-TIMER:IGMPLeaveTimer expiry: Transmit IGMP Leave on port 3/1 vlanNo 3 MCAST-SEND:Transmitting IGMP Leave msg on port 3/1 vlanNo 3 MCAST-SEND: Inband Transmit Succeeded for IGMP Leave Message on port 3/1 vlanNo 3
라우터는 IGMP Leave 메시지를 수신하므로 스위치에 CGMP Leave 메시지를 전송하고 IGMP 그룹 목록에서 그룹을 삭제합니다. 아래는 debug
명령 출력.
라우터에서
IGMP: Received Leave from 10.200.8.108 (Fa0.3) for 239.10.10.10 IGMP: Send v2 Query on Fa0.3 to 239.10.10.10 IGMP: Send v2 Query on Fa0.3 to 239.10.10.10 CGMP: Sending Leave on Fa0.3 GDA 0100.5e0a.0a0a, USA 0000.0000.0000 IGMP: Deleting 239.10.10.10 on Fa0.3
프레임 1
프레임 1은 GDA 00-00-00-00-00-00-00에 대한 CGMP 가입 프레임입니다. 라우터 포트 목록에 라우터 포트를 추가하는 데 사용됩니다.
ISL: ----- ISL Protocol Packet ----- ISL: ISL: Destination Address = 01000C0000 ISL: Type = 0 (Ethernet) ISL: User = 0 (Normal) ISL: Source Address = 8C958B7B1000 ISL: Length = 76 ISL: Constant value = 0xAAAA03 ISL: Vendor ID = 0x8C958B ISL: Virtual LAN ID (VLAN) = 2 ISL: Bridge Protocol Data Unit (BPDU) = 0 ISL: Port Index = 193 ISL: Reserved ISL: ETHER: ----- Ethernet Header ----- ETHER: ETHER: Destination = Multicast 01000CDDDDDD !--- Send to the CGMP !--- macaddress present inshow cam sys
!--- command output. ETHER: Source = Station Cisco11411E1 ETHER: 802.3 length = 24 ETHER: LLC: ----- LLC Header ----- LLC: LLC: DSAP Address = AA, DSAP IG Bit = 00 (Individual Address) LLC: SSAP Address = AA, SSAP CR Bit = 00 (Command) LLC: Unnumbered frame: UI LLC: SNAP: ----- SNAP Header ----- SNAP: SNAP: Vendor ID = Cisco1 SNAP: Type = 2001 (CGMP) SNAP: CGMP: ----- CGMP ----- CGMP: CGMP: Version = 16 CGMP: Type = 0 (Join) CGMP: Reserved CGMP: Count = 1 CGMP: CGMP: Group Destination Address and Unicast Source Address CGMP: CGMP: GDA =0000.0000.0000 CGMP: USA =0000.0C14.11E1 !--- MAC address of the router. CGMP:
프레임 1 결과는 스위치에 있고 3/1은 라우터에 연결된 포트입니다.
프레임 2
프레임 2는 사용자가 그룹 239.10.10.10에 대한 트래픽을 수신하고자 요청하거나 확인하기 위해 호스트가 전송한 IGMP 멤버십 보고서입니다.
ISL: ----- ISL Protocol Packet ----- ISL: ISL: Destination Address = 01000C0000 ISL: Type = 0 (Ethernet) ISL: User = 0 (Normal) ISL: Source Address = 8C958B7B1000 ISL: Length = 76 ISL: Constant value = 0xAAAA03 ISL: Vendor ID = 0x8C958B ISL: Virtual LAN ID (VLAN) = 2 ISL: Bridge Protocol Data Unit (BPDU) = 0 ISL: Port Index = 195 ISL: Reserved ISL: ETHER: ----- Ethernet Header ----- ETHER: ETHER: Destination = Multicast 01005E0A0A0A !--- Destination is the GDA MAC. ETHER: Source = Station Cisco176DCCA !--- Sourced by the PC connected in 3/1. ETHER: Ethertype = 0800 (IP) ETHER: IP: ----- IP Header ----- IP: IP: Version = 4, header length = 20 bytes IP: Type of service = C0 IP: 110. .... = internetwork control IP: ...0 .... = normal delay IP: .... 0... = normal throughput IP: .... .0.. = normal reliability IP: Total length = 28 bytes IP: Identification = 0 IP: Flags = 0X IP: .0.. .... = may fragment IP: ..0. .... = last fragment IP: Fragment offset = 0 bytes IP: Time to live = 1 seconds/hops IP: Protocol = 2 (IGMP) IP: Header checksum = CC09 (correct) IP: Source address = [10.1.1.2] IP: Destination address = [224.10.10.10] IP: No options IP: IGMP: ----- IGMP header ----- IGMP: IGMP: Version = 1 IGMP: Type = 6 (Ver2 Membership Report) IGMP: Unused = 0x00 IGMP: Checksum = FFEA (correct) IGMP: Group Address = [224.10.10.10] IGMP:
프레임 3
프레임 3은 01-00-5e-0a-0a-0a에 대한 고정 엔트리를 스위치에 추가하도록 라우터가 스위치에 보내는 CGMP 프레임입니다.
ISL: ----- ISL Protocol Packet ----- ISL: ISL: Destination Address = 01000C0000 ISL: Type = 0 (Ethernet) ISL: User = 0 (Normal) ISL: Source Address = 8C958B7B1000 ISL: Length = 76 ISL: Constant value = 0xAAAA03 ISL: Vendor ID = 0x8C958B ISL: Virtual LAN ID (VLAN) = 2 ISL: Bridge Protocol Data Unit (BPDU) = 0 ISL: Port Index = 193 ISL: Reserved ISL: ETHER: ----- Ethernet Header ----- ETHER: ETHER: Destination = Multicast 01000CDDDDDD ETHER: Source = Station Cisco11411E1 ETHER: 802.3 length = 24 ETHER: LLC: ----- LLC Header ----- LLC: LLC: DSAP Address = AA, DSAP IG Bit = 00 (Individual Address) LLC: SSAP Address = AA, SSAP CR Bit = 00 (Command) LLC: Unnumbered frame: UI LLC: SNAP: ----- SNAP Header ----- SNAP: SNAP: Vendor ID = Cisco1 SNAP: Type = 2001 (CGMP) SNAP: CGMP: ----- CGMP ----- CGMP: CGMP: Version = 16 CGMP: Type = 0 (Join) CGMP: Reserved CGMP: Count = 1 CGMP: CGMP: Group Destination Address and Unicast Source Address CGMP: CGMP: GDA =0100.5E0A.0A0A !--- GDA MAC added inshow cam static
!--- command output. CGMP: USA =0000.0C76.DCCA !--- MAC of the PC in 3/1. CGMP:
다음은 라우터와 스위치의 구성입니다.
Router_A (router) Configuration: Router_A#write terminal Building configuration... Current configuration: ! version 12.0 service timestamps debug uptime service timestamps log uptime no service password-encryption ! hostname Router_A ! ! ip subnet-zero ip multicast-routing ip dvmrp route-limit 20000 interface FastEthernet0 no ip address no ip directed-broadcast ! interface FastEthernet0.1 encapsulation isl 1 ip address 10.1.1.1 255.255.255.0 no ip redirects no ip directed-broadcast ! interface FastEthernet0.2 encapsulation isl 2 ip address 10.2.2.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode ip cgmp ! interface FastEthernet0.3 encapsulation isl 3 ip address 10.3.3.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode ip cgmp ! Switch_B configuration for CGMP: #cgmp set cgmp enable set cgmp leave enable ! CGMP statistics for VLAN 3: Switch_B (enable) show cgmp sta 3 CGMP enabled CGMP statistics for vlan 3: valid rx pkts received 109 invalid rx pkts received 0 valid cgmp joins received 108 valid cgmp leaves received 1 valid igmp leaves received 1 valid igmp queries received 63 igmp gs queries transmitted 1 igmp leaves transmitted 1 failures to add GDA to EARL 0 topology notifications received 0 Switch_B (enable)
IGMP 스누핑은 IGMP 프레임을 직접 캡처할 수 있는 또 다른 기능입니다. Catalyst 스위치에서 IGMP 스누핑 지원이 필요한 경우 Multicast Catalyst 스위치 지원 매트릭스를 참조하십시오.
IGMP 스누핑은 이름에서 암시하는 것처럼, 호스트와 라우터 간의 IGMP 대화에서 스위치가 "수신"할 수 있도록 하는 기능입니다. 스위치에서 지정된 멀티캐스트 그룹에 대해 호스트에서 IGMP 보고서를 수신하면, 해당 그룹의 GDA 목록에 호스트의 포트 번호가 추가됩니다. 스위치에서 IGMP Leave를 들으면 CAM 테이블 항목에서 호스트의 포트가 제거됩니다.
스위치는 IGMP 스누핑이 있는 라우터 포트를 탐지하기 위해 다음 메시지를 수신합니다.
IGMP 멤버십 쿼리는 01-00-5e-00-00-01로 전송
PIMv1 hello 01-00-5e-00-00-02로 전송
PIMv2 hello 01-00-5e-00-00-0d로 전송
DVMRP 프로브는 01-00-5e-00-04로 전송됩니다.
MOSPF 메시지가 01-00-5e-00-05 또는 06으로 전송
스위치에서 IGMP 스누핑을 활성화하면 위의 모든 MAC 항목이 show cam system
명령 출력입니다. 라우터 포트가 탐지되면 해당 VLAN에 있는 모든 GDA의 포트 목록에 추가됩니다.
다음은 두 가지 조인 시나리오입니다.
시나리오 A: 호스트 A는 세그먼트에서 그룹에 조인하는 첫 번째 호스트입니다.
호스트 A가 요청되지 않은 IGMP 멤버십 보고서를 전송합니다.
스위치는 그룹에 가입하려는 호스트에서 보낸 IGMP 멤버십 보고서를 가로채습니다.
스위치는 해당 그룹에 대한 멀티캐스트 엔트리를 생성하고 보고서를 받은 포트와 모든 라우터 포트에 연결합니다.
스위치는 IGMP 보고서를 모든 라우터 포트에 전달합니다. 따라서 라우터가 IGMP 보고서를 수신하고 그에 따라 멀티캐스트 라우팅 테이블을 업데이트합니다.
시나리오 B: 이제 호스트 B가 동일한 그룹에 조인하는 두 번째 호스트입니다.
호스트 B가 요청되지 않은 IGMP 멤버십 보고서를 전송합니다.
스위치는 그룹에 가입하려는 호스트에서 보낸 IGMP 멤버십 보고서를 가로채습니다.
스위치에서 IGMP 보고서를 모든 라우터 포트로 전달할 필요는 없습니다. 실제로 이 스위치는 프록시 보고를 사용하여 IGMP 보고서를 라우터 포트로 전달하며 10s 내에서 그룹당 하나의 보고서만 전달합니다.
참고: 그룹 멤버십을 유지하기 위해 멀티캐스트 라우터는 60초마다 IGMP 쿼리를 전송합니다. 이 쿼리는 스위치에서 가로채고 스위치의 모든 포트로 전달됩니다. 그룹의 멤버인 모든 호스트가 해당 쿼리에 응답합니다. 그러나 스위치에서 응답 보고서를 가로채는 사실을 고려했을 때 다른 호스트는 다른 보고서를 각각 보지 않으므로 모든 호스트는 보고서를 보냅니다(그룹당 하나 이상). 그러면 스위치에서 프록시 보고도 사용하여 수신된 모든 응답 중 그룹당 하나의 보고서만 전달합니다.
호스트 A가 그룹을 탈퇴하려고 하지만 호스트 B가 여전히 그룹을 수신하려고 한다고 가정합니다.
스위치는 호스트 A에서 IGMP Leave 메시지를 캡처합니다.
이 스위치는 해당 포트의 그룹에 대해 그룹별 IGMP 쿼리를 실행합니다(해당 포트에만 해당).
스위치가 보고서를 받지 못하면 엔트리에서 이 포트가 삭제됩니다. 해당 포트에서 응답을 받으면 아무 작업도 수행하지 않고 leave를 버립니다.
호스트 B는 여전히 해당 스위치의 해당 그룹에 관심이 있습니다. 이는 엔트리의 마지막 비라우터 포트가 아닙니다. 따라서 스위치는 Leave 메시지를 전달하지 않습니다.
이제 Host B가 그룹에서 나가려 하고 Host B가 이 세그먼트의 이 그룹에 관심을 가진 마지막 사용자라고 가정합니다.
스위치는 호스트 A에서 IGMP Leave 메시지를 캡처합니다.
스위치는 해당 포트에서 해당 그룹에 대해 그룹별 IGMP 쿼리를 실행합니다.
스위치가 보고서를 받지 못하면 엔트리에서 이 포트가 삭제됩니다.
이는 해당 GDA에 대한 마지막 비라우터 포트입니다. 스위치는 IGMP Leave 메시지를 모든 라우터 포트에 전달하고 테이블에서 항목을 제거합니다.
일부 네트워크에서는 하드웨어 제한으로 인해 모든 스위치에서 IGMP 스누핑을 실행하지 못할 수도 있습니다. 이 경우 동일한 네트워크의 일부 스위치에서 CGMP를 실행해야 할 수 있습니다.
이는 특수한 경우입니다. IGMP 스누핑을 실행하는 스위치는 CGMP 메시지를 탐지하고 네트워크의 일부 스위치가 CGMP를 실행 중임을 탐지합니다. 따라서 특수 IGMP-CGMP 모드로 이동하고 프록시 보고를 비활성화합니다. 라우터가 CGMP 가입을 생성하기 위해 IGMP 보고서의 소스 MAC 주소를 사용하기 때문에 CGMP를 제대로 작동하려면 반드시 필요합니다. CGMP를 실행하는 라우터는 모든 IGMP 보고서를 표시해야 하므로 프록시 보고를 비활성화해야 합니다. 라우터로 전송되는 모든 보고서는 IGMP 스누핑에 꼭 필요한 보고서여야 합니다.
세그먼트에 하나의 멀티캐스트 서버(멀티캐스트 소스)와 클라이언트가 없는 경우 해당 세그먼트에 IGMP 패킷이 없지만 많은 멀티캐스트 트래픽이 있는 상황이 발생할 수 있습니다. 이 경우 스위치는 해당 그룹의 트래픽을 세그먼트의 모든 사람에게 전달합니다. 다행히 IGMP 스누핑을 실행하는 스위치는 이러한 멀티캐스트 스트림을 탐지하고 라우터 포트만 있는 해당 그룹에 대한 멀티캐스트 항목을 추가할 수 있습니다. 이러한 항목은 내부적으로 mcast_source_only로 플래그로 표시되고 5분마다 또는 라우터 포트가 사라질 때 에이징됩니다. 이 에이징 후에도 트래픽이 계속 진행되면 몇 초 내에 주소가 다시 학습됩니다. 재학습 기간 내에 VLAN에서 일시적인 플러딩이 발생할 수 있습니다. 이를 방지하고 항목을 유지하려면 set igmp flooding enable | disable
명령을 실행합니다. 플러딩이 비활성화된 후에는 스위치에서 소스 전용 항목을 사용하지 않습니다.
CGMP와 마찬가지로 01-00-5e-00-00-xx 범위에 속하는 MAC에 매핑되는 GDA는 IGMP 스누핑으로 정리되지 않습니다.
IGMP 스누핑을 활성화/비활성화하려면 다음 명령을 실행합니다.
set igmp
멀티캐스트 라우터(고정)를 구성하려면 다음 명령을 실행합니다.
set multicast router
clear multicast router
IGMP 통계를 모니터링하고 확인하려면 다음 명령을 실행합니다.
show igmp statistics
show multicast router
이 예제의 설정은 이 문서의 앞부분에서 사용한 CGMP 테스트와 유사합니다. 유일한 차이점은 포트 3/2 및 3/3이 모두 동일한 VLAN에 연결되고 둘 다 그룹 224.10.10.10에 참여하도록 클라이언트가 구성되어 있다는 것입니다.
다음 예에서는 몇 가지 조작에 대해 설명하고, 스위치가 어떤 작업을 수행하는지 확인하고, 그 결과 출력을 검토합니다. 다음 예에서 Switch_B는 IGMP 스누핑을 실행하는 Catalyst 5500이고 Router_A는 포트 3/1에 연결된 멀티캐스트 라우터입니다.
스위치에서 IGMP 스누핑을 활성화하고 다음을 실행하여 결과를 확인합니다. debug
명령을 실행합니다. 각 항목 집합이 show cam sys
명령 출력. PIM, MOSPF 등을 통한 라우터 포트 탐지를 허용합니다.
Switch_B (enable) set igmp en MCAST-IGMP: Set Sys Entries MCAST-SYS-ENTRIES: Add system Entries in vlan 1 MCAST-IGMP: Set Sys Entries MCAST-SYS-ENTRIES: Add system Entries in vlan 2 MCAST-IGMP: Set Sys Entries MCAST-SYS-ENTRIES: Add system Entries in vlan 3 IGMP feature for IP multicast enabled Switch_B (enable) show cam sys * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 1 00-10-2f-00-14-00 # 7/1 1 00-e0-fe-4b-f3-ff # 1/9 1 01-00-0c-cc-cc-cc # 1/9 1 01-00-0c-cc-cc-cd # 1/9 1 01-00-0c-dd-dd-dd # 1/9 1 01-00-0c-ee-ee-ee # 1/9 1 01-00-5e-00-00-01 # 1/9 1 01-00-5e-00-00-04 # 1/9 1 01-00-5e-00-00-05 # 1/9 1 01-00-5e-00-00-06 # 1/9 1 01-00-5e-00-00-0d # 1/9 1 01-80-c2-00-00-00 # 1/9 1 01-80-c2-00-00-01 # 1/9 2 00-10-2f-00-14-00 # 7/1 2 01-00-0c-cc-cc-cc # 1/9 2 01-00-0c-cc-cc-cd # 1/9 2 01-00-0c-dd-dd-dd # 1/9 2 01-00-5e-00-00-01 # 1/9 2 01-00-5e-00-00-04 # 1/9 2 01-00-5e-00-00-05 # 1/9 2 01-00-5e-00-00-06 # 1/9 2 01-00-5e-00-00-0d # 1/9
스위치는 라우터 Router_A에서 PIMv2 패킷을 수신하고 라우터 포트를 추가합니다.
MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 2 MCAST-ROUTER: Adding port 3/1, vlanNo 2 MCAST-ROUTER: Creating RouterPortTimer for port 3/1, vlanNo 2 MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 3 MCAST-ROUTER: Adding port 3/1, vlanNo 3 MCAST-ROUTER: Creating RouterPortTimer for port 3/1, vlanNo 3 Switch_B (enable) show multi router CGMP disabled IGMP enabled Port Vlan --------- ---------------- 3/1 2-3 Total Number of Entries = 1 '*' - Configured Switch_B (enable)
그룹 224.10.10.10(포트 3/2)에서 새 호스트를 연결합니다. 이 호스트는 IGMP 멤버십 보고서를 전송합니다. 보고서가 수신되고, 스위치에 의해 스누핑되고, 항목이 추가되고, IGMP 보고서가 라우터로 전달됩니다.
On Switch_B
MCAST-IGMPQ:recvd an IGMP V2 Report on the port 3/2 vlanNo 3 GDA 224.10.10.10 MCAST-RELAY:Relaying packet on port 3/1 vlanNo 3 MCAST-SEND: Inband Transmit Succeeded for IGMP RELAY msg on port 3/1 vlanNo 3 Switch_B (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1-2
아래 그림과 같이 포트 3/3의 VLAN 3에 사용자를 하나 더 추가합니다.
Switch_B (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1-3
포트 3/2를 제거합니다. 포트 3/2는 IGMP Leave 메시지를 전송합니다. 스위치는 포트 3/2에서 IGMP 그룹별 쿼리를 다시 전송하고 타이머를 시작합니다. 응답을 받지 않고 타이머가 만료되면 그룹에서 포트가 삭제됩니다.
MCAST-IGMPQ:recvd an IGMP Leave on the port 3/2 vlanNo 3 GDA 224.10.10.10 MCAST-IGMPQ-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 MCAST-DEL-TIMER: Deletion Timer Value set to Random Value 1 MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 MCAST-SEND: Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3 MCAST-TIMER:IGMPLeaveTimer expired on port 3/2 vlanNo 3 GDA 01-00-5e-0a-0a-0a MCAST-TIMER:IGMPLeaveTimer:delete leave timer Switch_B (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1,3/3
포트 3/3의 호스트는 그룹을 종료하고 IGMP Leave 메시지를 전송합니다. 이전 시점과의 유일한 차이점은 IGMP Leave 메시지가 마침내 라우터 포트로 전달된다는 것입니다.
MCAST-IGMPQ:recvd an IGMP Leave on the port 3/3 vlanNo 3 GDA 224.10.10.10 MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/3 vlanNo 3 MCAST-SEND: Transmit Succeeded for IGMP Group Specific Query msg on port 3/3 vlanNo 3 MCAST-TIMER:IGMPLeaveTimer expired on port 3/3 vlanNo 3 GDA 01-00-5e-0a-0a-0a MCAST-TIMER:IGMPLeaveTimer expiry: Transmit IGMP Leave on port 3/1 vlanNo 3 MCAST-SEND:Transmitting IGMP Leave msg on port 3/1 vlanNo 3 MCAST-SEND: Inband Transmit Succeeded for IGMP Leave Message on port 3/1 vlanNo 3 MCAST-TIMER:IGMPLeaveTimer:delete leave timer
서브넷 컨피그레이션이 이제 시작 부분에 있고 1단계의 상태가 됩니다. 멀티캐스트 항목이 다음에서 사라졌습니다. show cam static
명령 출력.
마무리를 위해 show igmp static
명령 출력(아래 참조).
Switch_B (enable) show igmp stat 2 IGMP enabled IGMP statistics for vlan 2: Total valid pkts rcvd: 329 Total invalid pkts recvd 0 General Queries recvd 82 Group Specific Queries recvd 0 MAC-Based General Queries recvd 0 Leaves recvd 0 Reports recvd 82 Queries Xmitted 0 GS Queries Xmitted 0 Reports Xmitted 0 Leaves Xmitted 0 Failures to add GDA to EARL 0 Topology Notifications rcvd 0 Switch_B (enable) show igmp stat 3 IGMP enabled IGMP statistics for vlan 3: Total valid pkts rcvd: 360 Total invalid pkts recvd 0 General Queries recvd 93 Group Specific Queries recvd 6 MAC-Based General Queries recvd 0 Leaves recvd 11 Reports recvd 64 Queries Xmitted 0 GS Queries Xmitted 14 Reports Xmitted 0 Leaves Xmitted 10 Failures to add GDA to EARL 0 Topology Notifications rcvd 1 Switch_B (enable)
개정 | 게시 날짜 | 의견 |
---|---|---|
2.0 |
07-Mar-2022 |
끊어진 링크를 업데이트하고 제거했습니다. |
1.0 |
07-Feb-2014 |
최초 릴리스 |