本发明涉及软件定义网络技术领域,特别涉及一种流表聚合方法、控制器、网元和系统。
背景技术:
SDN(Software Defined Network,软件定义网络)是一种新型网络创新架构,通过解耦网元控制面与数据面,从而实现由外部的控制器集中计算路径控制SDN网元,达到灵活控制网络流量的目的。
由于控制面从网元中剥离到外部的控制器,默认情况下网元需要将每个未知流的首个入向报文信息发送给外部的控制器,由控制器进行决策后生成一条转发流表上传到网元,从而网元可对后继报文进行转发。这种方式也造成流表条目随着运行时间的膨胀,目前默认流表生成机制会在网元上逐渐累积大量流表项,并带来以下问题:
1、网元转发流表的存储空间有限,流表条目的持续增长容易导致存储空间的溢出,难以进一步处理新的流。
2、网元上大量的细流表项降低匹配效率,降低网元的转发速度。
3、随着用户流的改变,控制器会对网元中大量的流表项进行频繁的增加、删除操作,增加控制器、网元的物理开销。
目前的流表优化方式主要是静态预设含通配符的流表条目,条目所含的域值边界固定,这种聚合方式不够灵活,无法放映各个网元当前实际的流量情况,聚合效果不佳。
技术实现要素:
本发明实施例所要解决的一个技术问题是:提出一种动态流表聚合方案,能够有效减少流表数量,从而提高网元对流表的处理效率,减少 开销。
根据本发明实施例的一个方面,提供的一种流表聚合方法,包括:控制器接收网元发送的流表聚合申请,流表聚合申请中携带聚合辅助信息;控制器响应于流表聚合申请,根据聚合辅助信息对网元相同操作的流表项进行聚合得到聚合流表;控制器向网元下发聚合流表,并指示网元删除被聚合流表覆盖的流表项。
根据本发明实施例的第二个方面,提供的一种流表聚合方法,包括:网元向控制器发送流表聚合申请,流表聚合申请中携带聚合辅助信息,以便控制器根据聚合辅助信息对网元相同操作的流表项进行聚合;网元接收控制器下发的聚合流表,删除被聚合流表覆盖的流表项。
根据本发明实施例的第三个方面,提供的一种流表聚合的控制器,包括:聚合申请接收单元,用于接收网元发送的流表聚合申请,流表聚合申请中携带聚合辅助信息;流表聚合单元,用于响应于流表聚合申请,根据聚合辅助信息对网元相同操作的流表项进行聚合得到聚合流表;聚合流表下发单元,用于向网元下发聚合流表,并指示网元删除被聚合流表覆盖的流表项。
根据本发明实施例的第四个方面,提供的一种网元,包括:聚合申请发送单元,用于向控制器发送流表聚合申请,流表聚合申请中携带聚合辅助信息,以便控制器根据聚合辅助信息对网元相同操作的流表项进行聚合;聚合流表接收单元,用于接收控制器下发的聚合流表,删除被聚合流表覆盖的流表项。
根据本发明实施例的第五个方面,提供的一种流表聚合的系统,包括:前述实施例的流表聚合的控制器和前述实施例的网元。
本发明中控制器可以根据网元侧发送的聚合辅助信息,采用合适的流表聚合策略进行动态选择与聚合后下发给网元,以优化网元本地流表空间,有效减少网元的流表条目和内存开销,从而加快网元转发速度,降低网元流表条目的变化频率和新建流表项的需求。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开的一种示例性实施例的流表聚合方法的流程示意图。
图2示出本公开的一种示例性实施例的流表聚合的控制器的结构示意图。
图3示出本公开的一种示例性实施例的网元的结构示意图。
图4示出本公开的一种示例性实施例的流表聚合的系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对SDN网络中默认流表生成机制会造成网元上积累大量流表,从而给网络带来多种问题的情况,提出本方案。
下面结合图1对本发明流表聚合方法的一个实施例进行描述。
图1为本发明流表聚合方法一个实施例的流程图。如图1所示,该实施例的方法包括:
步骤S102,网元向控制器发送流表聚合申请,相应的,控制器接收网元发送的流表聚合申请,流表聚合申请中携带聚合辅助信息。
一种示例性实施方法,网元检测本地流表的饱和度,当饱和度达 到预警阈值时再向控制器发送流表聚合申请。由网元感知本地流表的饱和度进而发出聚合申请,可以屏蔽网元形态的差异,控制器无需知道网元的厂商、种类、内存空间使用技术等信息,更加容易实现。
其中,聚合辅助信息由网元根据本地流表的实时状态发出,以便控制器根据聚合辅助信息优化网元本地流表空间。聚合辅助信息例如可以是能够反映网元流表饱和度的预警阈值、或者流特征信息,如时长特征、流量统计特征等。
步骤S104,控制器响应于流表聚合申请,根据聚合辅助信息对网元相同操作的流表项进行聚合得到聚合流表。
其中,聚合手段例如可以采用掩码匹配覆盖的方式实现聚合。
步骤S106,控制器向网元下发聚合流表,相应的,网元接收控制器下发的聚合流表。
步骤S108,控制器指示网元删除被聚合流表覆盖的流表项,相应的,网元删除被聚合流表覆盖的流表项。
一种示例性的实施方式,控制器根据聚合辅助信息指示网元调整聚合流表的优先级后再删除被聚合流表覆盖的流表项。聚合流表应当给予较低的优先级,至少要排在被聚合流表的优先级之后,如果聚合流表优先级较高被优先匹配可能会调用不同的操作如丢弃,或者转发到非预期的端口。因此将聚合流表的优先级调低后,再删除被聚合的冗余的细流表项是稳妥的行为。还可以根据其他规则调整流表优先级,例如,非精确聚合的聚合流表优先级设为最低,存在周期长的流比经常变化的流优先匹配,因此调高存在周期长的流的优先级,但不限于所举示例。
上述方法中控制器可以根据网元侧发送的聚合辅助信息,采用合适的流表聚合策略进行动态选择与聚合后下发给网元,以优化网元本地流表空间,有效减少网元的流表条目和内存开销,从而加快网元转发速度,降低网元流表条目的变化频率和新建流表项的需求。
为进一步说明控制器如何根据聚合辅助信息进行流表聚合的操作,本发明提供如下几种示例性的实施方式。
实施方式一:聚合辅助信息例如包括能够反映网元流表饱和度的预警阈值,控制器根据预警阈值选择精确聚合策略或非精确聚合策略,若选择精确聚合策略,则对网元相同操作的流表项进行精确聚合得到聚合流表,若选择非精确聚合策略,则对网元相同操作的流表项进行非精确聚合得到聚合流表。
例如,流表饱和度的预警阈值分为高预警阈值、低预警阈值,当流表的饱和度达到低预警阈值时,网元申请流表聚合,则控制器根据低预警阈值对网元相同操作的流表项进行精确聚合得到聚合流表;当流表的饱和度达到高预警阈值时,网元申请流表聚合,则控制器根据高预警阈值对对网元相同操作的流表项进行非精确聚合得到聚合流表,加大聚合的力度,尽可能多的释放网元的本地流表空间。
精确聚合与非精确聚合的具体区别如下:
例如,以下四条流1011101000000、1011100000000、1011110000000、1011111000000,可以对第6bit和第7bit通过精确聚合为10111**000000。
若是只对其中任意三条流(例如,1011101000000、1011100000000、1011110000000)或者更少的流的第6bit和第7bit进行聚合也得到10111**000000,则为非精确聚合。
非精确聚合使用的范围较为粗放,不够精确,但是更容易生成聚合流表,更有效减少条目数,因此可以适用于高预警阈值情况。而精确聚合流表形成的要求更高,可以适用于低预警阈值的情况。
实施方式二:聚合辅助信息例如包括流特征信息,如时长特征、流量统计特征等,控制器根据流特征信息圈选对应的流表区间,对网元的不同流表区间中的流表项分别进行聚合得到聚合流表。
例如:控制器根据时长特征圈选存在周期长的流表区间和存在周期短的流表区间,对网元的存在周期长的流表区间和存在周期短的流表区间中的流表项分别进行聚合得到聚合流表。通常情况下,可以根据业务需求对存在周期不同的流表区间可以采用不同的聚合方法,当然,也可以采用相同的聚合方法。
以下面六条流为例:
流1:1011101000000存在时间5分钟以内
流2:1011100000000存在时间5分钟以内
流3:1011110000000存在时间5分钟以内
流4:1011111000000存在时间5分钟以内
流5:1011110000111存在时间15分钟以上
流6:1011111000011存在时间15分钟以上
其中流1-4对第6bit和第7bit进行聚合结果为10111**0000000,流5-6对第11bit聚合结果为1011110000*11。流1-4及流5-6的聚合方式不限于上述示例,可以对不同的比特位进行聚合,也可以采用不同的精确或非精确聚合方式,匹配字段也可以不同。
将周期较长的流与周期较短的流区分开来,分别进行聚合,周期较长的流聚合后的流表不会在短时间内变化,因此具备一定稳定性,进而避免了被聚合流表变化造成的聚合流表变动和修改。
又例如,控制器根据流量统计特征圈选大流量流表区间和小流量流表区间,对网元的大流量流表区间和小流量流表区间中的流表项分别进行聚合得到聚合流表。通常情况下,可以根据业务需求对流量大小不同的流表区间可以采用不同的聚合方法,当然,也可以采用相同的聚合方法。
以下面六条流为例:
流1:1011101000000流速在4Mbps-10Mbps区间
流2:1011100000000流速在4Mbps-10Mbps区间
流3:1011110000000流速在4Mbps-10Mbps区间
流4:1011111000000流速在4Mbps-10Mbps区间
流5:1011111000000流速在20Mbps-40Mbps区间
流6:1011111000011流速在20Mbps-40Mbps区间
流1-4对第6bit和第7bit进行精确聚合结果为10111**000000,流5-6对第10bit和第11bit采用非精确聚合,结果为1011111000**0。
控制器通过OpenFlow协议读取和采集特定流的计数或速度,可以 根据预设的阈值划分落在不同流速区间的流表,分别进行聚合。聚合方式不限于上述示例,可以对不同的比特位进行聚合,也可以采用不同的精确或非精确聚合方式,匹配字段也可以不同。
实施方式三:控制器采用非连续比特匹配聚合方式对网元相同操作的流表项进行聚合得到聚合流表。
以下面八条流为例解释非连续比特匹配聚合:
流1:1011011000000
流2:1011111000001
流3:1010111000000
流4:1010011000001
流5:1011011000000
流6:1011111000001
流7:1010111000000
流8:1010011000001
根据第4bit、5bit、13bit这3个比特位进行非连续比特匹配聚合,以上8条流进行精确聚合结果为101**1100000*。
如果以上8(2的3次方条)条流只存在一部分,根据第4bit、5bit、13bit这3个比特位也可以进行非精确聚合结果为101**1100000*。还可以进一步控制非精确聚合的误差范围,例如根据第4bit、5bit、13bit这3个比特位进行聚合时,可以要求匹配这3个比特位的流条目满足一定数量(例如一半,即2的3次方/2=4条时)才允许非精确匹配。
现有的操作必须针对一系列固定区间的比特,例如对32bit的目的IP地址或32bit的源IP地址分别操作。而本发明采用非连续比特匹配聚合方式可以对源目的地址的最后5-32bit加上目的地址的16-18比特同时进行聚合操作。采用非连续比特匹配聚合方式可以进一步降低流表的数量。
上述三种实施方式可以任意进行组合实现流表的聚合操作。此外,控制器对网元相同操作的流表项才会进行聚合操作。例如,如果被聚合的流表本身采用了不同的操作方式,如流1,2,3,4中的流1,2, 3匹配源VLAN(Virtual Local Area Network,虚拟局域网)地址的第一个比特为1就转发,流4匹配源VLAN地址的第一个比特为0后丢弃,如果将流1,2,3,4进行聚合则操作会产生冲突。
根据本发明实施例的另一个方面,提供的一种流表聚合的控制器,下面结合图2进行描述。
图2为本发明流表聚合的控制器一个实施例的结构图。如图2所示,该控制器200包括:
聚合申请接收单元202,用于接收网元发送的流表聚合申请,流表聚合申请中携带聚合辅助信息。
流表聚合单元204,用于响应于流表聚合申请,根据聚合辅助信息对网元相同操作的流表项进行聚合得到聚合流表。
聚合流表下发单元206,用于向网元下发聚合流表,并指示网元删除被聚合流表覆盖的流表项。
其中,聚合流表下发单元206,用于根据聚合辅助信息指示网元调整聚合流表的优先级后再删除被聚合流表覆盖的流表项。
为进一步说明流表聚合单元204如何根据聚合辅助信息进行流表聚合的操作,本发明提供如下几种示例性的实施方式:
实施方式一:聚合辅助信息包括能够反映网元流表饱和度的预警阈值。
流表聚合单元204,用于根据预警阈值选择精确聚合策略或非精确聚合策略,若选择精确聚合策略,则对网元相同操作的流表项进行精确聚合得到聚合流表,若选择非精确聚合策略,则对网元相同操作的流表项进行非精确聚合得到聚合流表。
实施方式二:聚合辅助信息包括流特征信息。
流表聚合单元204,用于根据流特征信息圈选对应的流表区间,对网元的不同流表区间中的流表项分别进行聚合得到聚合流表。
例如,流表聚合单元204,用于根据时长特征圈选存在周期长的流表区间和存在周期短的流表区间,对网元的存在周期长的流表区间和存在周期短的流表区间中的流表项分别进行聚合得到聚合流表;
或者,用于根据流量统计特征圈选大流量流表区间和小流量流表区间,对网元的大流量流表区间和小流量流表区间中的流表项分别进行聚合得到聚合流表。
实施方式三:流表聚合单元204,用于采用非连续比特匹配聚合方式对网元相同操作的流表项进行聚合得到聚合流表。
根据本发明实施例的又一个方面,提供的一种网元,下面结合图3进行描述。
图3为本发明网元一个实施例的结构图。如图3所示,该网元300包括:
聚合申请发送单元302,用于向控制器发送流表聚合申请,流表聚合申请中携带聚合辅助信息,以便控制器根据聚合辅助信息对网元相同操作的流表项进行聚合。
本发明为聚合申请发送单元302携带的聚合辅助信息提供以下两种示例性实施方式:
聚合申请发送单元302,用于检测本地流表的饱和度,当饱和度达到预警阈值时向控制器发送流表聚合申请,流表聚合申请中携带能够反映网元流表饱和度的预警阈值,以便控制器根据预警阈值对网元中相同操作的流表项进行精确聚合或非精确聚合。
或者,聚合申请发送单元302,用于向控制器发送流表聚合申请,流表聚合申请中携带流特征信息,以便控制器根据流特征信息对不同的流表区间中的流表项分别进行聚合;其中,流特征信息包括时长特征、流量统计特征。
聚合流表接收单元304,用于接收控制器下发的聚合流表,删除被聚合流表覆盖的流表项。
其中,聚合流表接收单元304,用于接收控制器下发的聚合流表,根据控制器的指示调整聚合流表的优先级后再删除被聚合流表覆盖的流表项。
根据本发明实施例的又一个方面,提供的一种流表聚合的系统,下面结合图4进行描述。
图4为本发明流表聚合的系一个实施例的结构图。如图4所示,该系统400包括:前述任一实施例的流表聚合的控制器200和前述任一实施例的网元300。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。