3. 控制平面保护

控制平面是 Nexus 交换机的“大脑”,负责运行 OSPF、BGP、EIGRP、STP、ARP、ICMP 等协议并维护转发表项。数据平面转发流量时,控制平面必须持续接收协议报文、ARP 请求、BPDU、ICMP 等上送 CPU 的流量。一旦攻击者或异常主机向交换机大量发送需要 CPU 处理的报文,CPU 占用率会迅速升高,导致协议邻居震荡、路由收敛变慢甚至管理面失联。控制平面保护的目标,就是让“合法协议报文优先通过、异常上送流量被限速或丢弃”,从而保证 CPU 始终有足够资源处理关键协议。

CoPP 的工作原理与策略结构

CoPP(Control Plane Policing,控制平面策略)是 Nexus 上保护 CPU 的核心机制。它通过模块化 QoS 策略,把上送 CPU 的流量按协议分类,再对每一类施加独立的监管(policing)参数。CoPP 策略由三部分组成:类映射(class-map)定义“匹配什么流量”,策略映射(policy-map)定义“对每类流量做什么”,服务策略(service-policy)把策略挂到控制平面接口上生效。

Nexus 中控制平面流量通过 control-plane 接口进入,因此 CoPP 的挂载点是 system qos 下的 service-policy type control。类映射通常使用 ACL 匹配协议特征,例如匹配 OSPF 的 IP 协议号 89、BGP 的 TCP 179、ICMP、ARP、STP BPDU 等。策略映射中每个类使用 police 语句定义承诺速率(CIR)、突发值(bc)和超速动作(通常为 drop)。

class-map type control-plane match-any CM-OSPF
  match access-group name ACL-OSPF
class-map type control-plane match-any CM-BGP
  match access-group name ACL-BGP
class-map type control-plane match-any CM-ICMP
  match access-group name ACL-ICMP

policy-map type control-plane PM-COPP
  class CM-OSPF
    police cir 8000 kbps bc 32000 bytes conform transmit exceed drop
  class CM-BGP
    police cir 12000 kbps bc 48000 bytes conform transmit exceed drop
  class CM-ICMP
    police cir 2000 kbps bc 8000 bytes conform transmit exceed drop
  class class-default
    police cir 4000 kbps bc 16000 bytes conform transmit exceed drop

system qos
  service-policy type control PM-COPP

上述参数为教学示例,实际部署需结合设备型号、协议规模与基线流量调整。CIR 单位是 kbps,bc 是单次突发可容纳的字节数。conform transmit 表示未超速报文正常上送,exceed drop 表示超速报文被丢弃。class-default 用于兜底,防止未分类流量无限制占用 CPU。

控制平面限速与参数关系

CoPP 的限速效果取决于 CIR 与 bc 的配合。CIR 决定长期平均速率,bc 决定允许的瞬时突发量。若 bc 过小,正常协议突发(如 OSPF 邻居批量建立、BGP 路由更新)会被误丢;若 bc 过大,攻击流量可在短时间内大量涌入。一般建议 bc 至少能容纳 2~4 个最大协议报文,并留出协议收敛余量。

验证 CoPP 是否生效,可查看策略统计:

show policy-map interface control-plane
show policy-map type control-plane name PM-COPP
show system resources | include CPU

输出中会显示每个类的匹配报文数、conform 与 exceed 计数。若某类 exceed 计数持续增长,说明该类流量超过限速,需要判断是正常协议突发还是异常攻击。同时观察 CPU 利用率,若 CPU 从 90% 以上回落到 30% 以下,说明限速起到了保护作用。

CoPP 控制平面保护数据流与限速判定 上送 CPU 流量 OSPF/BGP/ICMP/ARP class-map 分类 ACL 匹配协议特征 CM-OSPF / CM-BGP / CM-ICMP policy-map 限速 police cir / bc conform transmit exceed drop control-plane service-policy type control 限速判定逻辑(以 CM-OSPF 为例) 报文到达速率 ≤ CIR + bc conform 正常上送 CPU 协议不受影响 报文到达速率 > CIR + bc exceed 丢弃超速报文 保护 CPU 资源 验证命令与观察指标 show policy-map interface control-plane show system resources | include CPU show ip ospf neighbor / show bgp summary ✔ conform 计数增长 → 正常 ✘ exceed 持续增长 → 需排查 CPU 利用率回落 → 限速生效

路由协议认证:防止伪造邻居与路由注入

CoPP 解决的是“CPU 被过量报文淹没”的问题,而路由协议认证解决的是“谁有资格和我建立邻居、交换路由”的问题。若 OSPF 或 BGP 未启用认证,攻击者可以伪造 Hello 报文建立邻居,或注入虚假路由导致流量劫持。Nexus 上 OSPF 支持明文认证和 MD5 认证,BGP 支持 TCP MD5 认证。

OSPF 区域认证配置示例:

interface Ethernet1/1
  ip router ospf 1 area 0.0.0.0
  ip ospf authentication message-digest
  ip ospf message-digest-key 1 md5 Nexus@2024

router ospf 1
  area 0.0.0.0 authentication message-digest

BGP 邻居认证配置示例:

router bgp 65001
  neighbor 10.1.1.2 remote-as 65002
  neighbor 10.1.1.2 password Nexus@2024

认证配置必须两端一致,否则邻居无法建立。MD5 认证不会在链路上明文传输密钥,但密钥本身需通过带外方式安全分发。建议为不同邻居使用不同密钥,并定期轮换。

验证方法与排障思路

控制平面保护配置完成后,必须通过“看邻居、看统计、看 CPU”三步验证。首先确认协议邻居状态正常:show ip ospf neighbor 应显示 FULL,show bgp summary 应显示 Established。其次查看 CoPP 统计,确认关键协议类 conform 计数在增长、exceed 计数未异常飙升。最后观察 CPU 利用率,正常空闲时应低于 20%,协议收敛期间短时升高属正常,但持续高于 70% 需排查。

若邻居无法建立,先检查认证密钥是否两端一致、CoPP 是否误丢了协议报文。可临时查看 show policy-map interface control-plane 中对应类的 exceed 计数,若在邻居建立瞬间 exceed 激增,说明 CIR 或 bc 设置过小,应适当调大。若 CPU 仍然很高,需用 show processes cpu sort 定位占用最高的进程,判断是协议震荡还是异常流量。

建议在变更前先采集基线:记录正常业务下各协议类的 conform 速率和 CPU 均值,再据此设定 CIR。CoPP 参数不是越大越好,过大的 CIR 等于没有保护,过小则会误伤正常协议。
修改 CoPP 策略时,若新策略尚未挂载或类映射不完整,可能导致协议报文被 class-default 限速甚至丢弃,引发邻居中断。建议在维护窗口操作,并保留回退配置。

综合来看,CoPP 负责“限速保 CPU”,路由协议认证负责“验身份防伪造”,两者配合才能形成完整的控制平面保护。实际部署中应先做流量基线,再定制分类与限速参数,最后通过邻居状态、策略统计和 CPU 利用率三项指标闭环验证,确保安全加固不影响正常协议收敛。