소개
이 문서에서는 Nexus 7000/9000 스위치에서 특정 멀티캐스트 트래픽을 차단 또는 필터링할 수 있는 여러 가지 방법을 구성하는 방법에 대해 설명합니다. 멀티캐스트 리소스를 보존하는 데에도 사용할 수 있습니다. 일반적인 예 중 하나는 Microsoft에서 SSDP를 사용하여 서버 간에 통신하는 범용 플러그 앤 플레이 작업을 구현한 것입니다.
사전 요구 사항
요구 사항
PIM Sparse 모드를 사용하는 ASM(Any-Source Multicast)이 Nexus 플랫폼에서 어떻게 작동하는지 알고 있는 것이 좋습니다.
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
- NXOS 7.3(4)D1(1)을 실행하는 F3/M3 LC가 포함된 Nexus 7K
- Nexus N9K-C93180YC-EX/FX with 7.0(3)I7(9) or 9.3(5)
참고: SW/HW가 다를 경우 결과가 달라질 수 있습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
사용된 약어 목록은 다음과 같습니다.
RP - 랑데부 지점
FHR - 첫 번째 홉 라우터
LHR - 마지막 홉 라우터
SRC - 멀티캐스트 소스
REC - 멀티캐스트 수신기
PACL - 포트 액세스 목록
RACL - 라우팅된 액세스 목록
SVI - 스위치드 가상 인터페이스
ACL - 액세스 제어 목록
구성
일반 토폴로지
컨피그레이션 예
다음과 같이 가정합니다.
RP의 IP 주소는 192.168.10.1입니다.
SRC의 IP 주소는 172.16.10.100/32입니다.
SSDP 그룹: 239.255.255.250/239.255.255.253
이제 디바이스의 역할을 기준으로 컨피그레이션에 대해 알아보겠습니다. 예를 들어, FHR, LHR, RP 등이 있습니다.
FHR - 일반적으로 멀티캐스트 SRC가 여기에 직접 연결됨
1. 기존 RP에 대한 필터 등록
ip pim rp-address 192.168.10.1 route-map filter-registration
!
Route-map filter-registration deny 5
match ip multicast source 172.16.10.100/32 group 239.255.255.250/32
// Above line is specific to SRC/GROUP pair
Route-map filter-registration deny 7
match ip multicast group 239.255.255.250/32
// Above line is for any SRC and specific group
!
Route-map filter-registration permit 100
Match ip multicast group 224.0.0.0/4
|
2. SSDP 그룹에 대해 존재하지 않는 위조된 RP(예: 1.1.1.1)를 정의하여 RP에 대한 필터 등록. 이 경우 FHR은 RP의 역할을 맡습니다.
ip route 1.1.1.1/32 Null0
!
ip pim rp-address 1.1.1.1 route-map SSDP_groups
!
Route-map SSDP_groups permit 5
match ip multicast group 239.255.255.250/32
Route-map SSDP_groups permit 10
match ip multicast group 239.255.255.253/32
Route-map SSDP_groups deny 20
match ip multicast group 224.0.0.0/4
!
ip pim rp-address 192.168.10.1 route-map all_other_groups
!
Route-map all_other_groups deny 5
match ip multicast group 239.255.255.250/32
Route-map all_other_groups deny 10
match ip multicast group 239.255.255.253/32
Route-map all_other_groups permit 20
match ip multicast group 224.0.0.0/4
|
확인:
Nexus9K_OR_N7K# show ip pim rp
PIM RP Status Information for VRF "default"
BSR disabled
Auto-RP disabled
BSR RP Candidate policy: None
BSR RP policy: None
Auto-RP Announce policy: None
Auto-RP Discovery policy: None
RP: 192.168.10.1, (0),
uptime: 00:00:27 priority: 0,
RP-source: (local), group-map: Filter-registration,
group rangs:
224.0.0.0/4
239.255.255.253/32 (deny)
239.255.255.250/32 (deny)
Nexus9K_OR_N7K# show ip mroute
IP Multicast Routing Table for VRF "default"
(172.16.10.100/32, 239.255.255.250/32), uptime: 00:04:12, ip pim
Incoming interface: Vlan10, RPF nbr: 172.16.10.100
Outgoing interface list: (count: 0)
Nexus9K_OR_N7K# show system internal mfwd event-history pkt
pkt events for MCASTFWD process
2021 Jan 1 11:11:41.792316 mcastfwd [21914]: [21933]: Create state for (172.16.10.100, 239.255.255.250)
Nexus9K_OR_N7K # show ip pim internal event-history null-register
2021 Jan 01 11:15:19.095711: E_DEBUG pim [21935]: Null Register not sent for (172.16.10.100/32, 239.255.255.250/32) yes
|
이 출력은 FHR이 RP에 스트림을 등록하지 않음을 확인합니다.
LHR - 일반적으로 멀티캐스트 REC가 여기에 직접 연결됨
3. 인그레스 SVI(REC가 있는 경우)에 대한 IGMP 정책 적용 여기서 아이디어는 REC에서 SSDP 그룹에 대한 IGMP 멤버십 보고서를 필터링하는 것입니다.
ip pim rp-address 192.168.10.1 group-list 224.0.0.0/4
!
route-map filter-SSDP-joins deny 5
match ip multicast group 239.255.255.250/32
route-map filter-SSDP-joins deny 6
match ip multicast group 239.255.255.253/32
route-map filter-SSDP-joins permit 100
match ip multicast group 224.0.0.0/4
!
Interface VlanXX
ip igmp report-policy filter-SSDP-joins
|
확인:
Nexus9K_OR_N7K (config)# show ip mroute 239.255.255.250
IP Multicast Routing Table for VRF "default"
Group not found
!
Nexus9K_OR_N7K (config)# show ip igmp snooping groups vlan 44
Type: S - Static, D - Dynamic, R - Router port, F - Fabricpath core port
Vlan Group Address Ver Type Port list
44 */* - R Vlan44
44 239.255.255.250 v2 D Eth1/5
!
Nexus9K_OR_N7K (config)# show ip igmp internal event-history debugs
debugs events for IGMP process
2021 Jan 1 11:52:21.277915 igmp [1125]: : Filtered group 239.255.255.250
2021 Jan 1 11:52:21.277903 igmp [1125]: : Received v2 Report for 239.255.255.250 from 172.16.44.100 (Vlan44)
|
이 출력은 IGMP 멤버십 보고서가 필터링되고 (*,G) 가입이 RP로 전송되지 않음을 확인합니다.
PIM - FHR/LHR 역할을 하는 활성화된 라우터
요구 사항에 따라 옵션 1, 2, 3을 조합하여 사용할 수 있습니다.
예를 들면 다음과 같습니다.
4. 기존 RP(FHR 역할)에 대한 필터 등록
ip pim rp-address 192.168.10.1 route-map filter-registration
!
Route-map filter-registration deny 5
match ip multicast source 172.16.10.100/32 group 239.255.255.250/32
Route-map filter-registration deny 7
match ip multicast group 239.255.255.250/32
!
Route-map filter-registration permit 100
Match ip multicast group 224.0.0.0/4
|
5. IGMP 멤버십 보고서를 REC(LHR 역할)에서 필터링하기 위한 IGMP 정책.
ip pim rp-address 192.168.10.1 group-list 224.0.0.0/4
!
route-map filter-SSDP-joins deny 5
match ip multicast group 239.255.255.250/32
route-map filter-SSDP-joins deny 6
match ip multicast group 239.255.255.253/32
route-map filter-SSDP-joins permit 100
match ip multicast group 224.0.0.0/4
!
Interface VlanXX
ip igmp report-policy filter-igmp-joins
|
확인:
앞서 언급한 C점과 D점에서 수행한 검증과 거의 동일하다.
Show ip mroute
Show ip pim rp
Show ip pim internal event-history join-prune
Show ip igmp internal event-history debugs
|
RP - Rendezvous Point
6. 인사혁신처로부터 SSDP그룹 등록을 차단하기 위한 등록정책
ip pim rp-address 192.168.10.1 group-list 224.0.0.0/4
ip pim register-policy all_groups
!
Route-map all_groups deny 5
match ip multicast group 239.255.255.250/32
Route-map all_groups deny 10
match ip multicast group 239.255.255.253/32
Route-map all_groups permit 20
match ip multicast group 224.0.0.0/4
|
확인:
Nexus9K_OR_N7K (config)# show ip mroute 239.255.255.250
IP Multicast Routing Table for VRF "default"
Group not found
!
Nexus9K_OR_N7K (config)# show ip pim internal event-history data-register-receive
2021 Jan 08 03:33:06.353951: E_DEBUG pim [1359]: Register disallowed by policy
2021 Jan 08 03:33:06.353935: E_DEBUG pim [1359]: Received DATA Register from 172.16.10.1 for (172.16.10.100/32, 239.255.255.250/32) (pktlen 1028)
2021 Jan 08 03:29:42.602744: E_DEBUG pim [1359]: Add new route (172.16.10.100/32, 239.1.1.1/32) to MRIB, multi-route TRUE
F241.01.13-C93180YC-EX-1(config)# show ip pim internal event-history null-register
2021 Jan 08 03:35:40.966617: E_DEBUG pim [1359]: Send Register-Stop to 172.16.10.1 for (172.16.10.100/32, 239.255.255.250/32)
2021 Jan 08 03:35:40.966613: E_DEBUG pim [1359]: Register disallowed by policy
2021 Jan 08 03:35:40.966597: E_DEBUG pim [1359]: Received NULL Register from 172.16.10.1 for (172.16.10.100/32, 239.255.255.250/32) (pktlen 20)
|
이 출력은 RP가 그룹 239.255.255.250의 등록을 차단하고 있음을 확인합니다.
7. RP에서 join-prune 정책 적용 - SSDP 그룹에 대해서만 pim(*,G) 조인 및 (S,G) 조인 모두
ip pim rp-address 192.168.10.1 group-list 224.0.0.0/4
ip pim register-policy all_groups
!
Route-map all_groups deny 5
match ip multicast group 239.255.255.250/32
Route-map all_groups deny 10
match ip multicast group 239.255.255.253/32
Route-map all_groups permit 20
match ip multicast group 224.0.0.0/4
!
Interface Ethernet/Y
ip pim sparse-mode
ip pim jp-policy all_groups
|
확인:
Nexus9K_OR_N7K # show ip mroute 239.255.255.253
IP Multicast Routing Table for VRF "default"
Group not found
!
F241.01.13-C93180YC-EX-1# show ip pim internal event-history join-prune
2021 Jan 08 03:53:41.643419: E_DEBUG pim [1359]: Join disallowed by inbound JP policy
|
이 출력은 PIM 가입이 RP에 의해 차단되었음을 확인합니다.
멀티캐스트에 대한 Reserve HW Entries 구성
섹션 A, B 또는 C에서 설명한 모든 옵션이 있지만, FHR, LHR 또는 FHR/LHR이 RP에서 스트림을 등록하지 못하도록 하거나 RP를 향해 PIM 조인(*,G)을 각각 전송하지 못하도록 합니다. mroute 또는 스누핑 엔트리는 여전히 생성될 수 있으며 멀티캐스트 HW 엔트리를 소비합니다.
참고: VPC가 구성된 경우 인그레스 SVI 또는 Layer2 인터페이스/포트 채널/VPC 포트 채널에서 RACL 또는 PACL을 사용할 수 있습니다. SRC/REC가 다른 VLAN 또는 L2 인터페이스에 분사되는 경우 RACL 또는 PACL을 모두 적용해야 함을 의미합니다. 그러나 HW/SW에 따라(대부분 HW 제한으로 인해) 결과는 달라질 수 있습니다.
PACL
인그레스 레이어 2 포트 또는 포트 채널 또는 VPC 포트 채널에 PACL을 구성하여 SSDP 트래픽을 차단하거나 FHR에서 (S, G) 항목을 생성합니다.
참고: PACL을 적용하려면 사용하는 HW(예: Nexus N9000)에 따라 TCAM을 먼저 조각해야 합니다(다시 로드해야 함).
예를 들면 다음과 같습니다.
ip access-list BlockAllSSDP
Statistics per-entry
10 deny ip any 239.255.255.250/32
20 deny ip any 239.255.255.253/32
30 permit ip any any
!
Interface Ethernet X/Y
Or
Interface port-channel XX
ip port-access group BlockAllSSDP in
|
확인:
F241.01.13-C93180YC-EX-1# sh ip mroute 239.255.255.250
IP Multicast Routing Table for VRF "default"
Group not found
!
show ip access-lists BlockAllSSDP
IP access list BlockAllSSDP
statistics per-entry
10 deny ip any 239.255.255.250/32 [match=3] -> Drop counters
20 deny ip any 239.255.255.253/32 [match=0]
30 permit ip any any [match=0]
|
멀티캐스트 트래픽/IGMP 멤버십 포트 모두 PACL을 통해 차단되므로 스누핑 mroute 항목이 표시되지 않습니다. 기본적으로 PACL은 두 가지를 모두 삭제합니다.
라클
SRC가 존재하지만 사용되는 SW/HW에 따라 인그레스 SVI에서 RACL을 구성할 수 있습니다. (S, G) 항목은 여전히 생성할 수 있거나 트래픽을 다른 로컬 VLAN으로 전달할 수 있습니다.
ip access-list BlockAllSSDP
Statistics per-entry
10 deny ip any 239.255.255.250/32
20 deny ip any 239.255.255.253/32
30 permit ip any any
!
Interface VlanXX
ip port-access group BlockAllSSDP in
|
확인:
PACL과 거의 동일하지만 RACL 옵션은 PACL과 동일한 결과를 제공할 수 없습니다. 대부분의 HW 제한은 앞에서도 언급되었습니다.
COPP
COPP에서 SSDP를 차단할 수도 있습니다. 다음은 컨피그레이션을 보여주는 예입니다:
class-map type control-plane match-any nossdp
match access-group name nossdp
policy-map type control-plane nossdp
class nossdp
police cir 0 bps bc 0 bytes conform transmit violate drop control-plane dynamic
service-policy-dyn input nossdp
!
ip access-list nossdp
statistics per-entry
10 permit ip any 239.255.255.250/32
20 permit igmp any 239.255.255.250/32
30 permit pim any 239.255.255.250/32
|
전역 멀티캐스트 경계
Cisco NX-OS Release 10.2(1)부터 Global Boundary Multicast 컨피그레이션이 지원됩니다.
{ip를 구성해야 합니다. | 전역 멀티캐스트 경계에 대해 허용 또는 거부할 IP 멀티캐스트 그룹 및 채널의 전역 범위를 정의하려면 VRF 컨피그레이션 모드에서 ipv6} multicast group-range prefix-list <prefix-list-name> 명령을 사용합니다. 이 명령은 라우터의 모든 인터페이스에 대해 권한이 없는 그룹 또는 채널에 대한 멀티캐스트 프로토콜 작업 및 트래픽 전달을 비활성화하는 데 사용됩니다. 접두사 목록은 경계를 구성합니다. 샘플 컨피그레이션은 다음과 같습니다.
vrf context enterprise
ip multicast group-range prefix-list test
|
https://www.cisco.com/c/en/us/td/docs/dcn/nx-os/nexus9000/102x/configuration/multicast-routing/cisco-nexus-9000-series-nx-os-multicast-routing-configuration-guide-release-102x/m-overview.html#concept_29A33F30E7F84F7AA20C8D7D1A22ED98