一种SDN交换机流表控制方法及装置转让专利

申请号 : CN202210188953.X

文献号 : CN114257461B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 雷雪萍曾麟钧黄亮黄薪楠赵雨欣

申请人 : 四川省商投信息技术有限责任公司

摘要 :

本发明提供一种SDN交换机流表控制方法及装置,包括至少一个控制器,至少两个交换机,其中包括第一交换机使用第一类存储器存储第一流表,所述第一流表最大表项数量为N;第二交换机使用第二类存储器存储第二流表,所述第二流表表项数量无限制;所述第一流表和第二流表都包括存活时间和数据流量字段;通过存活时间和数据流量调整两个流表之间的项目,以达到抵御饱和攻击的目的。

权利要求 :

1.一种SDN交换机流表控制方法,其特征在于所述方法应用于SDN网络,所述SDN网络包括:至少一个控制器,至少两个交换机,其中包括第一交换机使用第一类存储器存储第一流表,所述第一流表最大表项数量为N,所述第一类存储器为三态内容寻址存储器;第二交换机使用第二类存储器存储第二流表,所述第二流表表项数量无限制,所述第二类存储器为普通存储器;所述第一流表和第二流表都包括存活时间和数据流量字段;所述方法包括如下步骤:

步骤S100,所述控制器获取第一交换机的第一流表,并获取所述第一流表的当前流表项数量,如果当前流表项数量大于N*a%,则进行下一步,否则间隔时间T后继续运行步骤S100,其中a%为预设百分比;

步骤S102,所述控制器对所述第一流表按存活时间由大至小排序,取排名前a1项的集合记为A1;对所述第一流表按数据流量由小至大排序,取排名前b1项的集合记为B1;对A1和B1取交集,记交集为S1;

步骤S103,所述控制器获取第二交换机的第二流表,并对所述第二流表按存活时间由小至大排序,取排名前a2项的集合记为A2;对所述第二流表按数据流量由大至小排序,取排名前b2项的集合记为B2;对A2和B2取交集,记交集为S2;

步骤S104,将所述集合S1调整至第二流表,将所述S2中至多为S1项数一半数量的项调整至第一流表;返回步骤S100。

2.如权利要求1所述的SDN交换机流表控制方法,其特征在于:对间隔时间T进行动态调整,取最近Nt次的流表项数量,如果最近Nt次的流表项数量依次升高,则设T=T‑t,其中t为调整时间。

3.如权利要求1所述的SDN交换机流表控制方法,其特征在于:当S1为空时,调整a1=a1+k1,调整b1=b1+p1,其中k1、p1为预设步长,然后重复步骤S102,直至S1中数据量大于一预设值。

4.如权利要求1所述的SDN交换机流表控制方法,其特征在于:当S2为空时,调整a2=a2+k2,调整b2=b2+p2,其中k2、p2为预设步长,然后重复步骤S102,直至S2中数据量大于一预设值。

5.如权利要求1所述的SDN交换机流表控制方法,其特征在于:如果S2中的项目数少于或等于S1的一半,则将S2中的全部项调整至第一流表。

6.一种SDN交换机流表控制装置,其特征在于所述装置应用于SDN网络,所述SDN网络包括:至少一个控制器,至少两个交换机,其中包括第一交换机使用第一类存储器存储第一流表,所述第一流表最大表项数量为N,所述第一类存储器为三态内容寻址存储器;第二交换机使用第二类存储器存储第二流表,所述第二流表表项数量无限制,所述第二类存储器为普通存储器;所述第一流表和第二流表都包括存活时间和数据流量字段;所述装置包括:重复检测模块,用于控制所述控制器获取第一交换机的第一流表,并获取所述第一流表的当前流表项数量,如果当前流表项数量大于N*a%,则依次运行后续模块,否则间隔时间T后继续运行本模块,其中a%为预设百分比;

第一集合获取模块,用于控制所述控制器对所述第一流表按存活时间由大至小排序,取排名前a1项的集合记为A1;对所述第一流表按数据流量由小至大排序,取排名前b1项的集合记为B1;对A1和B1取交集,记交集为S1;

第二集合获取模块,用于控制所述控制器获取第二交换机的第二流表,并对所述第二流表按存活时间由小至大排序,取排名前a2项的集合记为A2;对所述第二流表按数据流量由大至小排序,取排名前b2项的集合记为B2;对A2和B2取交集,记交集为S2;

调整模块,用于将所述集合S1调整至第二流表,将所述S2中至多为S1项数一半数量的项调整至第一流表;返回重复检测模块继续运行。

7.如权利要求6所述的SDN交换机流表控制装置,其特征在于:还包括时间调整模块,用于对间隔时间T进行动态调整,取最近Nt次的流表项数量,如果最近Nt次的流表项数量依次升高,则设T=T‑t,其中t为调整时间。

8.如权利要求6所述的SDN交换机流表控制装置,其特征在于:还包括第了步长调整模块,用于当S1为空时,调整a1=a1+k1,调整b1=b1+p1,其中k1、p1为预设步长,然后重复步运行本模块,直至S1中数据量大于一预设值。

9.如权利要求6所述的SDN交换机流表控制装置,其特征在于:还包括第二步长调整模块,用于当S2为空时,调整a2=a2+k2,调整b2=b2+p2,其中k2、p2为预设步长,然后重复步运行本模块,直至S2中数据量大于一预设值。

10.如权利要求6所述的SDN交换机流表控制装置,其特征在于:还包括第二流表调整模块,用于如果S2中的项目数少于或等于S1的一半,则将S2中的全部项调整至第一流表。

说明书 :

一种SDN交换机流表控制方法及装置

技术领域

[0001] 本发明属于网络技术领域,具体地涉及一种SDN交换机流表控制方法及装置。

背景技术

[0002] 如图1所示,SDN(Software‑defined networking,软件定义网络)是一种控制逻辑和数据转发分离的创新网络架构,由软件驱动的控制器(Controller)自动化控制转发面设
备,它以开放软件的模式替代传统基于嵌入式且不够灵活的控制平面。
[0003] OpenFlow是实现SDN的一项重要技术。网络主要由控制器(Controller)和交换机组成:控制器对网络进行集中控制,实现控制层的功能;交换机进行数据层的转发。控制器
通过OpenFlow协议来管理交换机,交换机拥有若干个流表(FlowTable),它只按照流表进行
转发,流表的生成、维护和下发由外置的控制器来实现。
[0004] 在SDN网络中,为了保证转发效率,网络中的交换机通常使用非常昂贵的三态内容寻址存储器(TCAM)进行寻址,而且三态内容寻址存储器的容易通常比较小,一个10M的三态
内容寻址存储器通常只能存储数千条的流表项。
[0005] 由于SDN交换机中,三态内容寻址存储器存储空间有限,其容易成为黑客的攻击对象;攻击流表的一种方法为,攻击者可能通过技术手段获取表项老化时间,在流表项老化前
发送数据,使得攻击者的垃圾流表项长期存活,从而占用流表项;如SDN交换机中的流表老
化时间设置为60S,即当某一表项60S不活动的话则将其删除,从而释放表空间,但黑客控制
a.b.c.d的主机,每59s就发送一次数据,那么这个表项则一直不会被清除,攻击者可以通过
网络中的肉鸡(被黑客控制的主机)发起攻击,使用足够多的机主采用类似的方法进行攻击
时,流表就会被攻击者长期占据,从而造成流表饱和,网络无法正常运行。此类攻击非常难
防范,目前通常采用定时强制清理表项的策略,但很显然清理后攻击者很容易卷土重来,并
且此处理方法容易造成误杀,如网络中可能会有很多设备或服务采用心跳包保持连接,如
某物联网设备每30S向服务器发送一次心跳数据,也会造成类似的现象,如果使用强制清理
表现的策略则容易对此类服务造成破坏。

发明内容

[0006] 本发明的目的在于解决如背景技术中所述的流表饱和攻击问题,提出一种SDN交换机流表控制方法及装置,解决流表饱和攻击问题同时不会造成误杀问题。
[0007] 根据本发明的一个方面,提供一种SDN交换机流表控制方法,其特征在于所述方法应用于SDN网络,所述SDN网络包括:至少一个控制器,至少两个交换机,其中包括第一交换
机使用第一类存储器存储第一流表,所述第一流表最大表项数量为N;第二交换机使用第二
类存储器存储第二流表,所述第二流表表项数量无限制;所述第一流表和第二流表都包括
存活时间和数据流量字段;所述方法包括如下步骤:步骤S100,所述控制器获取第一交换机
的第一流表,并获取所述第一流表的当前流表项数量,如果当前流表项数量大于N*a%,则进
行下一步,否则间隔时间T后继续运行步骤S100,其中a%为预设百分比;步骤S102,所述控制
器对所述第一流表按存活时间由大至小排序,取排名前a1项的集合记为A1;对所述第一流
表按数据流量由小至大排序,取排名前b1项的集合记为B1;对A1和B1取交集,记交集为S1;
步骤S103,所述控制器获取第二交换机的第二流表,并对所述第二流表按存活时间由小至
大排序,取排名前a2项的集合记为A2;对所述第二流表按数据流量由大至小排序,取排名前
b2项的集合记为B2;对A2和B2取交集,记交集为S2;步骤S104,将所述集合S1调整至第二流
表,将所述S2中至多为S1项数一半数量的项调整至第一流表;返回步骤S100。
[0008] 进一步地,本发明还可对间隔时间T进行动态调整,取最近Nt次的流表项数量,如果最近Nt次的流表项数量依次升高,则设T=T‑t,其中t为调整时间。
[0009] 进一步地,当S1为空时,调整a1=a1+k1,调整b1=b1+p1,其中k1、p1为预设步长,然后重复步骤S102,直至S1中数据量大于一预设值。
[0010] 进一步地,当S2为空时,调整a2=a2+k2,调整b2=b2+p2,其中k2、p2为预设步长,然后重复步骤S102,直至S2中数据量大于一预设值。
[0011] 进一步地,如果S2中的项目数少于或等于S1的一半,则将S2中的全部项调整至第一流表。
[0012] 根据本发明的一个方面,提供一种SDN交换机流表控制装置,其特征在于所述装置应用于SDN网络,所述SDN网络包括:至少一个控制器,至少两个交换机,其中包括第一交换
机使用第一类存储器存储第一流表,所述第一流表最大表项数量为N;第二交换机使用第二
类存储器存储第二流表,所述第二流表表项数量无限制;所述第一流表和第二流表都包括
存活时间和数据流量字段;所述装置包括:重复检测模块,用于控制所述控制器获取第一交
换机的第一流表,并获取所述第一流表的当前流表项数量,如果当前流表项数量大于N*a%,
则依次运行后续模块,否则间隔时间T后继续运行本模块,其中a%为预设百分比;第一集合
获取模块,用于控制所述控制器对所述第一流表按存活时间由大至小排序,取排名前a1项
的集合记为A1;对所述第一流表按数据流量由小至大排序,取排名前b1项的集合记为B1;对
A1和B1取交集,记交集为S1;第一集合获取模块,用于控制所述控制器获取第二交换机的第
二流表,并对所述第二流表按存活时间由小至大排序,取排名前a2项的集合记为A2;对所述
第二流表按数据流量由大至小排序,取排名前b2项的集合记为B2;对A2和B2取交集,记交集
为S2;调整模块,用于将所述集合S1调整至第二流表,将所述S2中至多为S1项数一半数量的
项调整至第一流表;返回重复检测模块继续运行。
[0013] 进一步地,还包括时间调整模块,用于对间隔时间T进行动态调整,取最近Nt次的流表项数量,如果最近Nt次的流表项数量依次升高,则设T=T‑t,其中t为调整时间。
[0014] 进一步地,还包括第了步长调整模块,用于当S1为空时,调整a1=a1+k1,调整b1=b1+p1,其中k1、p1为预设步长,然后重复步骤S102,直至S1中数据量大于一预设值。
[0015] 进一步地,还包括第二步长调整模块,用于当S2为空时,调整a2=a2+k2,调整b2=b2+p2,其中k2、p2为预设步长,然后重复步骤S102,直至S2中数据量大于一预设值。
[0016] 进一步地,还包括第二流表调整模块,用于如果S2中的项目数少于或等于S1的一半,则将S2中的全部项调整至第一流表。
[0017] 本发明提供的技术方案中,通过过设置不同存储器类型的交换机,并对两种交换机的流表进行交换,将短时流量大的表项调整至高速交换机保证传输效率,将长期不老化,
且流量低的可疑表项调整至低速交换机,在防止高速交换机流表饱和的同时也为可疑表项
提供服务,防止误杀的情况出现。

附图说明

[0018] 图1为本申请的SDN网络示意图。

具体实施方式

[0019] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用
于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的
前提下所获得的所有其他实施例,都属于本申请保护的范围
[0020] 显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用
于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并
且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭
露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应
当理解为本申请公开的内容不充分。
[0021] 在本申请中提及“ 实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相
同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显
式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相
结合。
[0022] 除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“ 一”、“ 一个”、“ 一种”、“ 
该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“ 包括”、“ 包
含”、“ 具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模
块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包
括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤
或单元。本申请所涉及的“ 连接”、“ 相连”、“ 耦接”等类似的词语并非限定于物理的或者
机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“ 多
个”是指两个或两个以上。“ 和/或”描述关联对象的关联关系,表示可以存在三种关系,例
如,“ A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“ /”一般
表示前后关联对象是一种“ 或”的关系。本申请所涉及的术语“ 第一”、“ 第二”、“ 第三”等
仅仅是区别类似的对象,不代表针对对象的特定排序。
[0023] 实施例一,本实施例提供一种SDN交换机流表控制方法,其特征在于本方法应用于SDN网络,所述SDN网络包括:至少一个控制器,至少两个交换机,其中包括第一交换机使用
第一类存储器存储第一流表,所述第一流表最大表项数量为N;第二交换机使用第二类存储
器存储第二流表,所述第二流表表项无限制;所述第一流表和第二流表都包括存活时间和
数据流量字段。
[0024] SDN网络中可以使用多个控制器,本实施例至少需要使用其中一个控制器,当然为了负载均衡,也可以使用多个控制器,本发明不做限制。
[0025] 所述第一交换机使用第一类存储器存储第一流表,第一交换机为常规的SDN网络交换机;较优地,为了传输效率,第一交换机使用三态内容寻址存储器,由于三态内容寻址
存储器成本高,通常其可用空间较小,因此其流表项有限制;示例性地,第一交换机使用10M
的三态内容寻址存储器,其可容纳的最多流表项为4000条。
[0026] 所述第二交换机使用第二类存储器存储第二流表,第二交换机为特殊交换机,可以使用普通存储器,由于普通内存价格便宜,可以使用尽量大的存储器,如采用32G的普通
存储器可以存储上千万条的流表项,对于目前的所有应用场景都可以视为能存储网络中全
部的流表项,因此第二流表的表项数不做限制。
[0027] 所述方法包括如下步骤:
[0028] 步骤S100,所述控制器获取第一交换机的第一流表,并获取所述第一流表的当前流表项数量,如果当前流表项数量大于N*a%,则进行下一步,否则间隔时间T后继续运行步
骤S100,其中a%为预设百分比;
[0029] 在SDN网络中,控制器通常以OpenFlow协议的标准消息与交换机进行交流,标准消息可以携带交换机的流表项等字段;本发明可采用OpenFlow协议获取流表,当然也可以采
用自定义格式的消息,只要能获取到交换机的流表项即可,本发明不做具体限定。
[0030] 获取第一流表项后就可得出当前流表项数量,如果当前流表项数量大于预设的百分比,则表明该流表即将饱和;具体地百分比a%本发明不做具体限制,很显然,a的值越大,
流表的利用率越高,但流表饱和的风险也越高;根据发明人的实验数据,优选地,a%取值为
90%能够较好地平衡流表的利用率和饱和风险。
[0031] 如果当前流表项数量大于N*a%,则表示当前流表有饱和的风险,需要进行下一步的调整处理。
[0032] 如果当前流表项数量不大于N*a%,则表示当前流表能够处理网络中的流量,则不需要进行调整。则只需要定时地取流表项数量进行实时监控即可。显然,T值越小监测越灵
敏,但也更消耗系统资源,T值越大,越节省资源,但也更可能出现饱和风险。
[0033] 在一种优选的实施方式中,对间隔时间T进行动态调整,取最近Nt次的流表项数量,如果最近Nt次的流表项数量依次升高,则设T=T‑t,其中t为调整时间。示例性地,T取
60s,t取5秒,当最近5次流表项数量依次为2900、3000、3100、3200、3300则表示流表项数量
在升高,则需要密切监控,在此后的周期中将T调整为55秒,以提高监测的灵敏度。
[0034] 步骤S102,所述控制器对所述第一流表按存活时间由大至小排序,取排名前a1项的集合记为A1;对所述第一流表按数据流量由小至大排序,取排名前b1项的集合记为B1;对
A1和B1取交集,记为S1;
[0035] 示例性地,如表1所示,表中包括了10个流表项,为了方便描述,省去了流表项的其它内容,只显示他们的存活时间和数据流量。
[0036] 表1
[0037] 流表项 存活时间(S) 数据流量(kb)aa1 300 10
aa2 50 500
aa3 80 70
aa4 100 600
aa5 200 9000
aa6 700 30
aa7 400 6000
aa8 20 800
aa9 150 20
aa10 90 40
[0038] 对存活时间进行大小到排序后得到如表2的数据列。
[0039] 表2
[0040] 流表项 存活时间(S)aa6 700
aa7 400
aa1 300
aa5 200
aa9 150
aa4 100
aa10 90
aa3 80
aa2 50
aa8 20
[0041] 然后对数据流量进行从小到大的排序,得到表3。
[0042] 表3
[0043] 流表项 数据流量(kb)aa1 10
aa9 20
aa6 30
aa10 40
aa3 70
aa2 500
aa4 600
aa8 800
aa7 6000
aa5 9000
[0044] 示例性地,a1取3,b1取3,则集合A1为{aa6,aa7,aa1},集合B1为{aa1,aa9,aa6},对A1、B1取交集得到S1={aa1,aa6}。
[0045] 进一步地,当S1为空时,调整a1=a1+k1,调整b1=b1+p1,其中k1、p1为预设步长,然后重复步骤S102,直至S1中数据量大于一预设值。
[0046] 步骤S103,所述控制器获取第二交换机的第二流表,并对所述第二流表按存活时间由小至大排序,取排名前a2项的集合记为A2;对所述第二流表按数据流量由大至小排序,
取排名前b2项的集合记为B2;对A2和B2取交集,记为S2;
[0047] 示例性地,如表4所示,表中包括了5个流表项,为了方便描述,省去了流表项的其它内容,只显示他们的存活时间和数据流量。
[0048] 表4
[0049]流表项 存活时间(S) 数据流量(kb)
bb1 300 10
bb2 50 900
bb3 80 800
bb4 100 300
bb5 200 50
[0050] 对存活时间由小到大进行排序,如表5所示:
[0051] 表5
[0052]流表项 存活时间(S)
bb2 50
bb3 80
bb4 100
bb5 200
bb1 300
[0053] 对数据流量从大到小排序,如表6所示:
[0054] 表6
[0055] 流表项 数据流量(kb)bb2 900
bb3 800
bb4 300
bb5 50
bb1 10
[0056] 示例性地,a2取3,b2取3,则集合A2为{bb2,bb3,bb4},集合B2为{bb2,bb3,bb4},对A2、B2取交集得到S2={bb2,bb3,bb4}。
[0057] 进一步地,当S2为空时,调整a2=a2+k2,调整b2=b2+p2,其中k2、p2为预设步长,然后重复步骤S102,直至S2中数据量大于一预设值。
[0058] 步骤S104,将所述集合S1调整至第二流表,将所述S2中至多为S1项数一半数量的项调整至第一流表;返回步骤S100。
[0059] 还是以表1‑6的数据为例,S1={aa1,aa6}、S2={bb2,bb3,bb4},将S1调整至第二流表后第一流表为{aa2,aa3,aa4,aa5,aa7,aa8,aa9,aa10},第二表项为{bb1,bb2,bb3,bb4,
bb5,aa1,aa6}; S1项数为2,则一半的数量为1(如不能整除则去掉小数位),此时还应该将
S2中调整1个至第一流表,即需要将bb2调整至第一流表,调整完后第一流表为{aa2,aa3,
aa4,aa5,aa7,aa8,aa9,aa10,bb2},第二流表为{bb1,bb3,bb4,bb5,aa1,aa6}。
[0060] S1中的项目为第一流表中存活时间非常长,但是流量很小的项目,发明人经研究发现此类数据如果不是攻击数据则通常为对实时性要求不高的辅助数据,如各类服务的心
跳保持数据、网络设备定期上传的数据等,将此类数据调整至速度较慢的第二流表对网络
整体质量影响不大;S2中的项目为短时间突然爆发的数据,此类数据可能是之前误杀的,为
了不影响网络质量及时将该类数据调整至第一流表,以保证传输效率。
[0061] 调整S2中数据时,只将数量为S1项数一半的项调整至第一流表是为了保证至少不增加第一流表的负担,确保第一流表项数是在减少的;很显然的,如果S2中的项目数少于或
等于S1的一半,则可以将S2中的全部项调整至第一流表。
[0062] 实施例二,本实施例提供一种SDN交换机流表控制装置,其特征在于所述装置应用于SDN网络,所述SDN网络包括:至少一个控制器,至少两个交换机,其中包括第一交换机使
用第一类存储器存储第一流表,所述第一流表最大表项数量为N;第二交换机使用第二类存
储器存储第二流表,所述第二流表表项数量无限制;所述第一流表和第二流表都包括存活
时间和数据流量字段。
[0063] SDN网络中可以使用多个控制器,本实施例至少需要使用其中一个控制器,当然为了负载均衡,也可以使用多个控制器,本发明不做限制。
[0064] 所述第一交换机使用第一类存储器存储第一流表,第一交换机为常规的SDN网络交换机;较优地,为了传输效率,第一交换机使用三态内容寻址存储器,由于三态内容寻址
存储器成本高,通常其可用空间较小,因此其流表项有限制;示例性地,第一交换机使用10M
的三态内容寻址存储器,其可容纳的最多流表项为4000条。
[0065] 所述第二交换机使用第二类存储器存储第二流表,第二交换机为特殊交换机,可以使用普通内存,由于普通内存价格便宜,可以使用尽量大的存储器,如采用32G的普通内
存可以存储上千万条的流表项,对于目前的所有应用场景都可以视为能存储网络中全部的
流表项,因此第二流表的表项数不做限制。
[0066] 所述装置包括如下模块:
[0067] 重复检测模块,用于控制所述控制器获取第一交换机的第一流表,并获取所述第一流表的当前流表项数量,如果当前流表项数量大于N*a%,则依次运行后续模块,否则间隔
时间T后继续运行本模块,其中a%为预设百分比。
[0068] 在SDN网络中,控制器通常以OpenFlow协议的标准消息与交换机进行交流,标准消息可以携带交换机的流表项等字段;本发明可采用OpenFlow协议获取流表,当然也可以采
用自定义格式的消息,只要能获取到交换机的流表项即可,本发明不做具体限定。
[0069] 获取第一流表项后就可得出当前流表项数量,如果当前流表项数量大于预设的百分比,则表明该流表即将饱和;具体地百分比a%本发明不做具体限制,很显然,a的值越大,
流表的利用率越高,但流表饱和的风险也越高;根据发明人的实验数据,优选地,a%取值为
90%能够较好地平衡流表的利用率和饱和风险。
[0070] 如果当前流表项数量大于N*a%,则表示当前流表有饱和的风险,需要进行下一步的调整处理。
[0071] 如果当前流表项数量不大于N*a%,则表示当前流表能够处理网络中的流量,则不需要进行调整。则只需要定时地取流表项数量进行实时监控即可。虽然,T值越小监测越灵
敏,但也更消耗系统资源,T值越大,越节省资源,但也更可能出现饱和风险。
[0072] 在一种优选的实施方式中,对间隔时间T进行动态调整,取最近Nt次的流表项数量,如果最近Nt次的流表项数量依次升高,则设T=T‑t,其中t为调整时间。示例性地,T取
60s,t取5秒,当最近5次流表项数量依次为2900、3000、3100、3200、3300则表示流表项数量
在升高,则需要密切监控,在此后的周期中将T调整为55秒,以提高监测的灵敏度。
[0073] 第一集合获取模块,用于控制所述控制器对所述第一流表按存活时间由大至小排序,取排名前a1项的集合记为A1;对所述第一流表按数据流量由小至大排序,取排名前b1项
的集合记为B1;对A1和B1取交集,记交集为S1。
[0074] 示例性地,如表1所示,表中包括了10个流表项,为了方便描述,省去了流表项的其它内容,只显示他们的存活时间和数据流量。
[0075] 表1
[0076] 流表项 存活时间(S) 数据流量(kb)aa1 300 10
aa2 50 500
aa3 80 70
aa4 100 600
aa5 200 9000
aa6 700 30
aa7 400 6000
aa8 20 800
aa9 150 20
aa10 90 40
[0077] 对存活时间进行大小到排序后得到如表2的数据列。
[0078] 表2
[0079] 流表项 存活时间(S)aa6 700
aa7 400
aa1 300
aa5 200
aa9 150
aa4 100
aa10 90
aa3 80
aa2 50
aa8 20
[0080] 然后对数据流量进行从小到大的排序,得到表3。
[0081] 表3
[0082]流表项 数据流量(kb)
aa1 10
aa9 20
aa6 30
aa10 40
aa3 70
aa2 500
aa4 600
aa8 800
aa7 6000
aa5 9000
[0083] 示例性地,a1取3,b1取3,则集合A1为{aa6,aa7,aa1},集合B1为{aa1,aa9,aa6},对A1、B1取交集得到S1={aa1,aa6}。
[0084] 进一步地,当S1为空时,调整a1=a1+k1,调整b1=b1+p1,其中k1、p1为预设步长,然后重复步运行本模块,直至S1中数据量大于一预设值。
[0085] 第二集合获取模块,用于控制所述控制器获取第二交换机的第二流表,并对所述第二流表按存活时间由小至大排序,取排名前a2项的集合记为A2;对所述第二流表按数据
流量由大至小排序,取排名前b2项的集合记为B2;对A2和B2取交集,记交集为S2。
[0086] 示例性地,如表4所示,表中包括了5个流表项,为了方便描述,省去了流表项的其它内容,只显示他们的存活时间和数据流量。
[0087] 表4
[0088] 流表项 存活时间(S) 数据流量(kb)bb1 300 10
bb2 50 900
bb3 80 800
bb4 100 300
bb5 200 50
[0089] 对存活时间由小到大进行排序,如表5所示:
[0090] 表5
[0091] 流表项 存活时间(S)bb2 50
bb3 80
bb4 100
bb5 200
bb1 300
[0092] 对数据流量从大到小排序,如表6所示:
[0093] 表6
[0094]流表项 数据流量(kb)
bb2 900
bb3 800
bb4 300
bb5 50
bb1 10
[0095] 示例性地,a2取3,b2取3,则集合A2为{bb2,bb3,bb4},集合B2为{bb2,bb3,bb4},对A2、B2取交集得到S2={bb2,bb3,bb4}。
[0096] 进一步地,当S2为空时,调整a2=a2+k2,调整b2=b2+p2,其中k2、p2为预设步长,然后重复步运行,直至S2中数据量大于一预设值。
[0097] 调整模块,用于将所述集合S1调整至第二流表,将所述S2中至多为S1项数一半数量的项调整至第一流表;返回重复检测模块继续运行。
[0098] 还是以表1‑6的数据为例,S1={aa1,aa6}、S2={bb2,bb3,bb4},将S1调整至第二流表后第一流表为{aa2,aa3,aa4,aa5,aa7,aa8,aa9,aa10},第二表项为{bb1,bb2,bb3,bb4,
bb5,aa1,aa6}; S1项数为2,则一半的数量为1(如不能整除则去掉小数位),此时还应该将
S2中调整1个至第一流表,即需要将bb2调整至第一流表,调整完后第一流表为{aa2,aa3,
aa4,aa5,aa7,aa8,aa9,aa10,bb2},第二流表为{bb1,bb3,bb4,bb5,aa1,aa6}。
[0099] S1中的项目为第一流表中存活时间非常长,但是流量很小的项目,发明人经研究发现此类数据如果不是攻击数据则通常为对实时性要求不高的辅助数据,如各类服务的心
跳保持数据、网络设备定期上传的数据等,将此类数据调整至速度较慢的第二流表对网络
整体质量影响不大;S2中的项目为短时间突然爆发的数据,此类数据可能是之前误杀的,为
了不影响网络质量及时将该类数据调整至第一流表,以保证传输效率。
[0100] 调整S2中数据时,只将数量为S1项数一半的项调整至第一流表是为了保证至少不增加第一流表的负担,确保第一流表项数是在减少的;很显然的,如果S2中的项目数少于或
等于S1的一半,则可以将S2中的全部项调整至第一流表。
[0101] 在本申请中,术语“ 多个”则指两个或两个以上,除非另有明确的限定。术语“ 安装”、“ 相连”、“ 连接”、“ 固定”等术语均应做广义理解,例如,“ 连接”可以是固定连接,也
可以是可拆卸连接,或一体地连接;“ 相连”可以是直接相连,也可以通过中间媒介间接相
连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体
含义。
[0102] 在本说明书的描述中,术语“ 一个实施例”、“ 一些实施例”、“ 具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本申请的至少一
个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例
或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例
中以合适的方式结合。
[0103] 以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、
等同替换、改进等,均应包含在本申请的保护范围之内。