产品
产品中心
< 返回主菜单
产品

交换机

交换机所有产品
< 返回产品
交换机
查看交换机首页 >

无线

无线所有产品
< 返回产品
无线
查看无线首页 >

云桌面

云桌面产品方案中心
< 返回产品
云桌面
查看云桌面首页 >

安全

安全所有产品
< 返回产品
安全
查看安全首页 >
产品中心首页 >
行业
行业中心
< 返回主菜单
行业
行业中心首页 >

CPP技术白皮书V1.0

为数据交换机提供一种保护机制,对发往交换机CPU的数据流,进行流分类和优先级分级处理,以及CPU的带宽限速,以确保在任何情况下CPU都不会出现负载过高的状况,从而能为用户提供一个稳定的网络环境,这种保护机制就是CPU Protect Policy,简称CPP。

  • 发布时间:2009-09-25

  • 点击量:

  • 点赞:

分享至

我想评论

1 概述:CPP的提出

 

    随着交换机应用的逐渐普及,以及网络攻击的不断增多,越来越需要为数据交换机提供一种保护机制,对发往交换机CPU的数据流,进行流分类和优先级分级处理,以及CPU的带宽限速,以确保在任何情况下CPU都不会出现负载过高的状况,从而能为用户提供一个稳定的网络环境,这种保护机制就是CPU Protect Policy,简称CPP。

 

    目前由于协议或者某些应用的需要,要求将报文trap到CPU进行处理,但是当同时有大量报文送到CPU(这种情况往往是恶意的),超过CPU负载时,引起CPU利用率高,这样就可能使一些正常需要执行的任务被长时间挂起,造成交换机瘫痪并导致网络中断。目前CPU保护问题主要包括以下几点:

 

1.1 网络交换机的设计特点

 

    从交换机的体系结构来看,交换机有两部分组成:ASIC芯片用于高速的转发数据包,而CPU主要是来处理一些更为复杂的事务,对网络管理方面任务和请求进行处理;处理各种协议报文,包括L2管理报文如BPDU、GVRP、ARP;L3管理报文如RIP、PIM、OSPF、VRRP、IGMP、ICMP;数据报文,包括未知单播IP数据包,未知组播的数据报文,RPF失败报文,各种错误报文。

 

    常见的DoS攻击实际上就是让主机没有资源去应付这些正常的请求,把大量的资源都用在处理那些攻击性质的请求和事务上,从而导致系统的不可用。

 

    当前网络中经常受到各种类型病毒的攻击,例如蠕虫病毒、尼姆达杀手、Slammer等蠕虫病毒。而它们对交换机的冲击,经常是利用了流转发技术的三层交换机的工作原理,第一个数据包进来的时候,三层交换机要像路由器那样通过查找路由表,确定如何转发,并形成一个用ASIC完成转发查找的硬件流转发表。感染Slammer等蠕虫病毒的计算机会在很大的一段地址空间中,逐个发送指向不同IP地址的数据包。这种行为是恶意的。这样的操作会导致交换机的硬件流转发表溢出,导致CPU资源的大量浪费,甚至使交换机的CPU资源完全耗尽。类似的情况还有ARP请求,一个交换机收到了Slammer病毒产生的很多数据包,其目的网段就指向交换机连接的一个端口,交换机并不知道这些目的IP地址并不存在,会发很多ARP请求,期待对方给予回应。这些ARP请求也会占用CPU资源。类似的情况还有很多,比如发送大量的错误包,对交换机的Web管理界面、Telnet管理进行DoS攻击,对交换机的网管系统进行ICMP的DoS攻击和SNMP的DoS攻击。

 

1.2 协议的工作特点或缺陷

 

    最初的网络设计者在设计时更多地考虑如何保证网络的联通性,而很少考虑网络的安全性。同样,很多专家开发了能够自动发现拓扑结构、自动维系网络设备关系的协议,如路由协议,这些协议能够减少网管员的工作量,提高网络的可用性,但是很多协议存在潜在漏洞,使网络面临被攻击的风险。

 

生成树攻击

 

    假如在网络中用一台PC机模拟生成树协议,不断发布BPDU包,就会导致一定范围内的生成树拓扑结构定期地发生变化。虽然没有流量,但是由于生成树不稳定,仍会导致整个网络不断发生动荡,使网络不可用,使网络设备的CPU压力剧增。

 

路由协议攻击

 

    另一个类似的攻击就是使用路由协议发起的攻击,这一点更容易实现,虽然一些路由协议使用了加密和认证算法,来传递路由的更新信息,但是目前网络很少真正启用这些功能。假如网络设计不合理,路由器配置不妥当,很容易让用户在一个原本应该是STUB的网段里,向整个网络发送路由信息,对整个网络的动态路由造成影响,导致路由震荡,有可能把一些通往重要方向的数据包指向错误的方向。而且即使网络启用了路由加密和认证,大量的攻击包虽然不影响网络的路由震荡,但依然让CPU无法承受。

 

    实际还有很多利用协议缺陷和交换机的设计点的攻击方式,这里只是做一个简单介绍。通过以上分析,可以明确,CPP模块对于交换机和稳定工作是必不可少的。

 

2 技术介绍

 

2.1 原理

 

    从第一章的分析可以了解到,目前的网络协议对于安全的考虑性不足,以及交换机本身设计的特点,对CPP功能的需求就显得越来越强。CPP功能早期只是作为某些单一功能出现的,如ARP check,IP sysguard,这一种CPP主要是反攻击的。随着市场应用的逐渐增多,对于CPU保护提出了更高的要求,第二种cpp应用需要对trap到CPU的管理报文进行分类处理,第一类是作为维护基础协议的BPDU、GVRP和VRRP,第二类是作为维护路由协议的PIM,OSPF,IGMP,RIP报文,第三类是作为需要CPU处理的IP数据报文,第四类是堆叠中的管理报文,通过对这些报文的分级处理,确定优先关系,确保在CPU高负载的情况下仍能保证基本的网络拓扑稳定。CPP的第三种应用是对各种报文的带宽限制,这种方式主要根据具体的网络应用环境确定各类报文的带宽限制,以及CPU可以处理的最高总带宽限制。

 

    CPP作为一个功能模块,无论是硬件实现或者软件实现,都基本上按照以下四个阶段进行:Classifying、Queuing、Scheduling和Shaping。
 

 

 

                 图2-1 根据ACL将输入流归类分流

 

    Classifying:对每个需要送到CPU的报文进行分类,分类是根据报文的L2、L3以及L4信息。

 

    Queueing:该动作负责将各种不同类型的报文,根据不同的优先级送到指定的映射队列,在不同队列的报文具有不同的传输优先级。

 

    Scheduling:当多个队列有报文需要传输时,Scheduling负责从中选择一个队列并传输这个队列的报文。调度算法有SP,SP+WRR,WRR,DRR,SP+DRR,以下分别介绍以上各种调度算法的原理

 

    绝对优先级(SP):高优先级队列具有最高的传输数据包的优先级。低优先级的队列要等到优先级高的队列传完才开始传输。在strict priority 调度中,加权设置总是为零

 

    weighted round-robin (加权轮转)调度(WRR) : WRR调度要求您定义一个数值用于规定当前队列与其他优先级队列的相对重要性(weight)。WRR调度防止低优先级的队列在高优先级队列传输时被完全忽略。WRR调度对各个队列实行轮流发送机制。报文的权重与队列的重要性相对应。举例说明,如果队列1的weight为1,队列2的weight 为2,那么队列1在队列2每次发送完2个报文后发送1个报文。通过调度功能,即使高优先级的队列为非空,低优先级的队列也能获得机会发送报文,这样带宽资源可以得到充分的利用。

 

    Deficit Round Robin (DRR):WRR存在的一个很大的缺点是它是以报文个数做为权重的,这样对于报文平均长度明确的网络更加合适,但是网络中往往报文的长度是不可预知的,必然使WRR的应用受到局限,基于此,提出了以字节数为权重的进行加权轮转调度的算法Deficit Round Robin (DRR),当为某个队列分配的权重低于零时,这时该队列的权重值变为赤字,同时影响到下一次调度该队列的赋予的权重,即该队列的新的权重会减去前一次而产生的赤字,这样就可以避免由于报文长度不等长而产生的非预期的调度。

 

    SP+WRR,SP+DRR,是指在队列调度中选择SP与WRR或者SP和DRR算法共同参与运算的方法,既保证最高优先级的队列能得到优先调度,又避免了其他低优先级队列由于长时间未被调度而饿死的问题。具体来说,就是高优先级的队列在所有报文被调度完成后,才根据选择的WRR或者DRR算法对其他队列进行调度。
 

 


 

                   图2-2 Queueing与Scheduling过程

 

    Shaping:控制每个传输队列的最大和最小带宽,超过最大速率的报文将被丢弃。

 

2.2 实现方案

 

    从交换芯片的实现角度分析CPP的硬件实现,ASIC芯片将CMIC(CPU管理接口控制器)作为一个普通的物理转发口看待,即满足物理转发口的所有特性,具体到四个阶段分别描述如下:

 

    Classifying:根据入口逻辑决定报文trap到CMIC的内部优先级,这里可能改变该优先级的因素包括报文携带的pri,端口的缺省优先级,改变报文优先级的若干表项等。

 

    Queueing:可以设置CMIC口的入队方式,即报文内部优先级与CMIC队列的映射关系。
 

 

    Scheduling:CMIC接口对于不同队列中报文采用调度算法,支持SP,SP+WRR,WRR,DRR,SP+DRR。

 

    Shaping:ASIC芯片支持对于CMIC口的流量整形,可以设置整个CMIC流量的最小带宽和最大带宽 ,以及每一个COS队列的最小带宽和最大带宽,队列的缓存空间,以及带宽的颗粒等。

 

    以上四个阶段可以作为CPP基于芯片的设计部分,只是由于不同的芯片类型决定了这几个阶段中哪些部分可以实现,哪些部分无法实现。

 

    也可以用软件方式实现CPP,软件实现主要有两个方面,一个是减少报文在CPU的处理时间,这样可以尽量提高cpu的报文处理性能和降低CPU的工作负荷;另一个是确定不同类型报文在CPU的处理优先级,但是也要综合考虑软件处理这些逻辑的开销,具体也是按照以上四个阶段进行分析。

 

3 锐捷S86系列CPP技术特点

 

3.1 配置灵活方便

 

    CPP的用户界面CLI命令设计简单方便,这样使用户无需对相关专业知识有很深认识的情况下,也能完成配置,此外用户也可以灵活配置各种协议报文的优先级和限制速率,前者可以保证需要的报文能优先得到处理,后者可以降低CPU的负载,有效地防止网络中对交换机的攻击,保护交换机的安全和网络的运行稳定。

 

    设置每种类型报文的速率限制,pps可以在0-4096间随意设置。

 

    cpu-protec type {arp|bpdu|dhcp|ipv6mc|igmp|rip|ospf|vrrp|pim|ttl1|unknown-ipmc|dvmrp pps pps_vaule

 

    设置每种类型报文映射的队列,pri可以在0-7之间设置,7所对应的优先级最高,0所对应的优先级最低。

 

    cpu-protec type { arp|bpdu|dhcp|ipv6mc|igmp|rip|ospf|vrrp|pim|-ttl1|unknown-ipmc} pri pri_vaule

 

3.2 实时显示

 

    实时显示当前CPU处理各类报文统计值,包括交换机收到的各类报文的累加值和速率,以及被丢弃的报文数,通过这些数据,可以使用户及时了解网络中当前的或者一段时间内的各类报文的流量情况,并可以以此为依据,实施CPP设置。而且对于S86设备,除了支持基于报文类型的流量统计外,还支持基于管理板和所有线卡的流量的分别显示,使报文数据能细化到每一块线卡。
 

 

                       图3-1 cpp的显示界面

 

3.3 配置实例

 

    1. 通过察看CPP的实时显示,可以明确当前交换机是否受到某种报文的攻击,如图4,显然,ARP报文的流量存在异常,这时可以通过配置CPP的流量限制达到保护交换机CPU的目的。

 

cpu-protec type arp pps 400

 

    2. 当某个端口上的输入流量达到限速或者进入了HOL状态时,或者该端口上存在多种需要由交换机CPU处理报文时,就需要界定这些报文的优先级关系,这些优先级关系可以根据的网络环境设置实施。
 

 

 

3.4 分布式CPP

 

    S86的管理板与线卡的架构使S86的CPP具有了分布式的特点,它的优点是在硬件实现的CPP的基础上,由各个线卡进行一级过滤,而管理板进行二级过滤,通过这种二级过滤的机制,使管理板大大降低了被攻击的可能性,使管理板的各种协议能平稳地运行,最大程度的保护了管理板的CPU资源,保证了网络的安全和稳定。

 

    S86的分布式CPP方案在S86产品的所有类型线卡上都可以支持,而且该方案也保证了以后S86以后新增的线卡也能提供同样的支持,这一点是其他产品所不具备的。

 

    分布式的二级过滤的设计符合S86的管理板和多块线卡的架构,这样每一块线卡上的CPP保证了每一块线卡能够对送CPU的报文实施分类限速,但是由于多块线卡的缘故,这样管理板收到的每一类报文仍有可能大于限速时,这时管理板的CPP又再一次保证了管理板的CP避免收到大量保文的攻击。

 

4 CPP技术性能测试

 

    以RG-S8600在集美大学的应用拓扑为例,分析CPP在稳定网络拓扑的作用。集美大学的拓扑框架如下,核心设备为CISCO的S6509,同下联的汇聚设备S8606运行OSPF协议;

 

    S8606通过万兆线路同S6509相连接;S8606和S6509相连接的端口为TRUNK口,该端口是所有的VLAN成员口(每个端口配置100个vlan);S8606下联二层设备,同二层设备的连接端口也是采用TRUNK口,并且没有进行VLAN配置。



 

                                      图4-1

 

    这里主要测试CPP抗攻击的能力。测试数据流用SMB产生,选取得观察点为图中最右边的RG-S8606,每台RG-S8606的配置为:
 

    M8606- CM I
 

    M8600- 24SFP/12GT
 

    M8600- 02XENPAK

 

攻击类型:
 

  ARP报文攻击
 

  BPDU报文攻击
 

  GVRP报文攻击
 

  TTL=1的IP报文攻击
 

  打开OSPF协议下的攻击测试
 

  打开RIP协议下的攻击测试
 

  报文PIM报文攻击

 

数据记录内容及分析结果

 

1. 预防ARP攻击报文

 

Arp部分攻击测试
 

 

 

结论:从以上数据来看,当采用CPP保护机制后,可以有效防。

 

2. 预防L2协议报文攻击

 

BPDU攻击测试
 

 

 

? Gvrp攻击测试

 

 

    结论:从以上数据来看,当采用CPP保护机制后,可以有效防止交换机资源被抢占,基本协议状态不会产生振荡和跃变。

 

3. 预防L3协议报文的攻击

 

PIM-DM部分攻击测试
 

 

?

Ospf部分攻击测试

 

 

RIP部分攻击测试

 

 

    结论:从以上数据来看,当采用CPP保护机制后,可以有效防止交换机资源被抢占,基本协议状态不会产生振荡和跃变。
 

 

TTL=1部分攻击测试
 

 

 

    结论:从以上数据来看,当采用CPP保护机制后,可以有效防止交换机资源被抢占,基本协议状态不会产生振荡和跃变。

 

5 结束语

 

    CPP功能对于提高交换机抗攻击的能力,保持网络拓扑和路由协议的稳定性,保证交换机的处理能力得到完全的发挥,提供一个有效的工具。通过CPP保护策略,使网络设备的安全能力得到了更大的提升。
 

点赞

更多技术博文

任何需要,请联系我们

返回顶部

请选择服务项目
关闭咨询页
售前咨询 售前咨询
售前咨询
售后服务 售后服务
售后服务
意见反馈 意见反馈
意见反馈
更多联系方式