#작성중 ## 개요 Control Plane Policing은 라우터의 Control Plane으로 들어오는 트래픽을 **정책 기반**으로 필터링해서 보호하는 기능이다 > [!Note] **Control Plane이란?** > * 라우팅 결정, 트래픽을 처리하는 라우터 내부의 CPU **논리 영역**으로서, OSPF, BGP, EIGRP, ICMP 등 제어 패킷이 이 경로를 거친다. > * 일반적으로 외부에서 수신되는 패킷 중 목적지가 라우터 자신인 경우 (예: ping, SSH 등)가 Control Plane으로 전달된다. > * [[Router#^c38fc1|자세한 설명]] 라우터 Control Plane이 공격 받을 수 있는 대표적 유형은 다음과 같다. * ICMP Flood * Routing Protocol Storm * Management Dos --- ## 동작 구조 > [!note] 📌 > Control Plane은 라우터가 자신을 목적지로 하는 트래픽을 처리할 때 사용하는 논리적 처리 경로이며, Cisco IOS에서는 이를 control-plane이라는 가상 인터페이스로 다룬다. 이는 실제 물리적 인터페이스가 아닌 CPU로 전달되는 제어 트래픽을 대상으로 한다. > [!note] 📌 > CoPP는 여기에 QoS 정책을 적용하여 특정 조건의 트래픽만 허용하거나, 속도를 제한하거나, 나머지를 폐기함 --- ## CoPP 적용 흐름 ACL → class-map → policy-map → control-plane | 구성요소 | 역할 | | --------------- | ------------------- | | `access-list` | 어떤 트래픽을 골라낼지 정함 | | `class-map` | 필터된 트래픽을 그룹으로 정의 | | `policy-map` | 그룹별로 허용/제한/폐기 정책 부여 | | `control-plane` | 위 정책을 라우터 제어 평면에 적용 | 아래 순서로 순서가 흘러감 ACL → class-map → policy-map → control-plane #### ▷ class-map 💡class-map은 ACL로 정의된 트래픽을 논리적 그룹으로 묶는 구조 * **형식** ``` class-map [match-all|match-any] <CLASS_NAME> match access-group name <ACL_NAME> ``` * **예시** ``` class-map match-all CLASS_ICMP match access-group name ICMP_ONLY ``` | 구문 | 의미 | 사용 시기 | | ----------- | ------------------------------------- | --------------------- | | `match-all` | 클래스 내부의 모든 조건을 동시에 만족해야 매칭됨 (AND 조건) | 조건이 명확하고 엄격해야 할 때 | | `match-any` | 클래스 내부 조건 중 **하나라도** 만족하면 매칭됨 (OR 조건) | 여러 조건을 유연하게 처리하고 싶을 때 | #### ▷ policy-map `police <CIR> <BC> conform-action <permit|transmit> exceed-action <drop|set-priority>` - CIR (Committed Information Rate): 초당 허용 속도 (bit/sec 단위) - BC (Burst Committed): 버스트 가능량 (byte 단위 or 전송 간격 기준) - conform-action: 허용 - exceed-action: 초과 시 처리 방식 #### ▷ control-plane - control-plane은 라우터 CPU로 들어오는 트래픽의 논리 인터페이스 - 여기서 정의된 정책은 Control Plane 트래픽에만 적용됨 - 실제로는 물리적 인터페이스가 아니라 Cisco IOS 내부 가상 처리 경로 ``` control-plane service-policy input <POLICY_NAME> ``` ``` control-plane service-policy input POLICY_COPP ``` --- ## 실제 패킷 처리 흐름 1. 외부 장비에서 라우터 인터페이스로 트래픽 수신 2. Input ACL 검사 (만일 Input ACL이 설정 되어 있는 경우) 3. 라우팅 테이블 확인 1. 목적지가 라우터 자신일 때, Control Plane으로 리디렉션 2. 아닐 경우 다음 라우터로 전달 4. Control Plane 진입 시 CoPP 정책을 적용 5. QoS 처리 6. Routing Engine CPU에서 해당 프로토콜을 처리 --- ## 예시 >[!tip] 조건 >`192.168.1.10` 에서 Router (Gig0/0: 192.168.1.1)로 ping 요청 1. Gig0/0 수신 2. ACL 검사 3. 목적지 = 192.168.1.1 이였으므로, Routing table에서 "자기 자신"으로 판단 4. control-plane 인터페이스로 진입 5. CoPP 정책 평가 - ICMP 허용되어 있으면 통과 - 속도 초과 시 드롭 6. 통과한 경우 CPU의 ICMP 데몬에서 응답 처리 --- ## CoPP vs 일반 QoS > [!check] 📎참고 > [[QoS (Quality of Service)]] | 항목 | CoPP | 일반 QoS | | ----- | ------------------------------ | --------------------- | | 적용 대상 | Control Plane (라우터 내부) | Data Plane (인터페이스 흐름) | | 목적 | 라우터 자체 보호 | 서비스 품질 보장 (VoIP, 웹 등) | | 적용 위치 | `control-plane` 가상 인터페이스 | 실제 물리 인터페이스 | | 패킷 대상 | EIGRP, ICMP, BGP, SSH 등 제어 트래픽 | 일반 데이터 트래픽 | --- ## ⚙️실습 ### ▷ 디버깅 ``` - `show policy-map control-plane` - `show access-lists` - `show run | section control-plane` - `debug icmp` (주의: 고부하) ``` ### ▷ 예제 > [!question] 요구사항: > - 192.168.24.0/24 에서 들어오는 ICMP 트래픽만 허용 > - 속도는 8,000bps로 제한 > - 나머지는 모두 폐기 ``` ! 1. ACL 정의 – 허용할 트래픽 정의 ip access-list extended ICMP_ONLY permit icmp 192.168.24.0 0.0.0.255 any ! 2. Class-map 정의 – 필터링 대상 지정 class-map match-all CLASS_ICMP match access-group name ICMP_ONLY ! 3. Policy-map 정의 – 처리 방법 지정 policy-map POLICY_COPP class CLASS_ICMP police 8000 1000 conform-action transmit exceed-action drop class class-default drop ! 4. Control-plane에 QoS 적용 control-plane service-policy input POLICY_COPP ```