首页> 中国专利> 一种基于SDN的数据中心网络流量测量方法

一种基于SDN的数据中心网络流量测量方法

摘要

本发明公开了一种基于SDN的数据中心网络流量测量方法,先对每台交换机设置编码流集合,然后对每个数据平面的交换机在一个周期内对流进行编码,得到每台交换机的Flow Filter、Counting Table和Flow Vector,然后将一个周期内已编码的所有交换机的Flow Filter、Counting Table和Flow Vector发送到控制平面解码主机进行解码,从而测量出一个周期内经过数据中心网络中每台交换机的每条流量的大小。

著录项

  • 公开/公告号CN108282481A

    专利类型发明专利

  • 公开/公告日2018-07-13

    原文格式PDF

  • 申请/专利权人 电子科技大学;

    申请/专利号CN201810087181.4

  • 发明设计人 王雄;刘瀚彧;陈少博;张俊;

    申请日2018-01-30

  • 分类号

  • 代理机构成都行之专利代理事务所(普通合伙);

  • 代理人温利平

  • 地址 611731 四川省成都市高新区(西区)西源大道2006号

  • 入库时间 2023-06-19 05:56:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-17

    授权

    授权

  • 2018-08-07

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20180130

    实质审查的生效

  • 2018-07-13

    公开

    公开

说明书

技术领域

本发明属于网络测量技术领域,更为具体地讲,涉及一种基于SDN的数据中心网络流量测量方法。

背景技术

NetFlow是一种广泛使用的流量监测工具。NetFlow在工作时,维持一个活动流的集合(active flow set),并支持流的插入,哈希冲突解决,流的删除等功能。但是数据中心的商用芯片上较难支持NetFlow的全部功能,因为NetFlow的完全功能会降低包的处理速度,其使用采样的简化版本无法监测到所有数据流的包。

FlowRadar,是一种带宽与存储开销较小,易扩展的流量监测方法。其核心思想是,在数据平面,交换机利用较少的存储空间与固定数量的简单操作编码流的信息,控制平面的主机收集各交换机编码信息,并解码出流的信息。FlowRadar可以以较小的存储开销和计算开销来准确的得到全网的流量信息。但是,FlowRadar在计数器资源不够的情况下,可能无法解码,从而导致完全得到不到流的信息。此外,FlowRadar在全网解码的情况下,其求解问题的负载度很高,很难保证结果的及时性。

软件定义网络(Software Defined Network,SDN)是一种新型的网络架构,通过将网络转发设备的控制平面与数据平面分离,实现网络流量的灵活控制。与传统IP网络不同,SDN网络的控制器可以获取SDN节点的流表统计数据、网络拓扑等信息,并且可以为SDN节点设计转发逻辑,具有高度的自主权。这样的特性使SDN的测量方法比传统网络的测量方法更加灵活多样,为实时监测、减少网络资源消耗等问题的解决提供新的思路。SDN交换机的流表项可以通过修改转发端口来控制数据包的转发方向,也可以通过添加行动修改数据包的头部信息。这些特点能够克服传统IP网络中链路性能参数测量的诸多困难,为网络的测量创造有利条件。

发明内容

本发明的目的在于克服现有技术的不足,提供一种基于SDN的数据中心网络流量测量方法,将流分组测量,将大规模的测量问题分解为若干小规模的测量问题,有效地减少了问题求解的复杂度。

为实现上述发明目的,本发明一种基于SDN的数据中心网络流量测量方法,其特征在于,具体包括以下步骤:

(1)、对于每个交换机设置编码流集合

编码流集合包括Flow Filter、Counting Table和Flow Vector三部分,其中,FlowFilter为一个布隆过滤器,用于检测一个数据包对应的流是否为新流,初始时刻布隆过滤器中所有表项值均为0;Counting Table为交换机计数器,共g个组,每组m个表项,每个表项均包含PacketCount与FlowCount两个值,用于存储流信息,其中,PacketCount用于存储哈希到本表项的所有流的数据包的数目之和,FlowCount用于存哈希到本表项的流的数目;Flow Vector为一个存储表,用于记录流的五元组;

(2)、每个数据平面交换机在一个周期内对流进行编码

(2.1)、对数据包对应流的五元组进行映射并检测数据包对应的流是否为新流

在一个周期内,当某一个数据包到达时,先提取该数据包对应流的五元组,将提取到的五元组输入到一个哈希函数中,得到一个哈希值,将该哈希值对g取模,得到j,再将该五元组输入到kc个相互独立的哈希函数,得到kc个哈希值;同时将提取的五元组输入到kf个相互独立的哈希函数,得到kf个哈希值,再用这kf个哈希值与Flow>

(2.2)更新Counting Table信息

将步骤(2.1)中提取到的j和kc个哈希值对应到Counting>c个表项,并将这kc个表项的PacketCount值和FlowCount值都加1;

(2.3)、记录新流并更新Counting Table信息

将步骤(2.1)中提取到的kf个哈希值对应到Flow>f个表项,设置这些表项中的值为1,并将该数据包对应流的五元组加入Flow>c个哈希值对应到Counting>c个表项,并将这kc个表项的PacketCount值加1,FlowCount值不变;

(2.4)、当该数据包对应流进行编码完成后,返回步骤(2.1),进行下一个包的处理,直到该周期结束;

(2)、将一个周期内已编码的所有交换机的Flow Filter、Counting Table和FlowVector发送到控制平面解码主机;

(3)、控制平面的解码主机收到一个周期内的所有交换机发送的Flow Filter、Counting Table和Flow Vector后进行解码

(3.1)、解码出所有交换机的Flow Vector中所有五元组对应的流在CountingTable中的组号和表项序号

对每个交换机执行以下步骤:将Flow Vector中存放的五元组按照表项顺序依次取出,将每个五元组作为输入,通过一个哈希函数得到一个哈希值,将该哈希值对g取模得到j,由此在Counting Table中找到对应第j组;再将该五元组作为输入,通过kc个相互独立的哈希函数,得到kc个哈希值,即得到所有在步骤(2.2)、(2.3)存放该五元组对应的流的信息的组号和表项序号;

(3.2)根据Counting Table中的组号和表项序号得到系数矩阵

对于Counting Table中的每个组j都设置一个系数矩阵Aj,Aj初始化为m×n的空矩阵;其中,m为Counting>

利用步骤(3.1)得到的Flow Vector中所有流的五元组对应的流存放在CountingTable中的组号和表项序号设置系数矩阵Aj中的值;设置方法为:如果Counting>k的信息,则将Ai,k设置为1;如果第i个位置上没有存储第k条流xk的信息,则将Ai,k设置为0,其中1<i≤m,1<k≤n;

(3.3)、对每个交换机的所有组建立统计数据包个数的方程,用Cplex进行求解

minimize||Xj||1

s.t.AjXj=Yj

Xj≥0

其中,Xj表示正在解码的交换机的Counting>j表示正在解码的交换机的CountingTable中第j组的系数矩阵;Yj表示正在解码的交换机的Counting>

(3.4)、使用全局解码,在步骤(3.3)建立的方程组中添加约束条件,重新构建方程,计算出所有交换机机中经过的所有流的数据包的个数;

(4)、测量出本周期内经过数据中心网络每个交换机每条流量的大小,待下一个周期到来时,跳转到步骤(1)进行下一轮继续流量测量。

本发明的发明目的是这样实现的:

本发明一种基于SDN的数据中心网络流量测量方法,先对每台交换机设置编码流集合,然后对每个数据平面的交换机在一个周期内对流进行编码,得到每台交换机的FlowFilter、Counting Table和Flow Vector,然后将一个周期内已编码的所有交换机的FlowFilter、Counting Table和Flow Vector发送到控制平面解码主机进行解码,从而测量出一个周期内经过数据中心网络中每台交换机的每条流量的大小。

同时,本发明一种基于SDN的数据中心网络流量测量方法还具有以下有益效果:

(1)、在数据平面中提出了一种新颖的架构来存储流的五元组并编码流计数器。为了实现对流计数器的100%解码,使用了布隆过滤器和单独的Flow Vector表来存储在计数器中计数的流的五元组。为了实现可扩展的流计数器解码,使用两级流映射方案将流映射到一个Counting Table组,其中每个Counting Table组可以在远程控制器处被独立并行解码,具有高的可扩展性。

(2)、使用线性规划(LP)来计算在不同情况下交换机的Flow Vector表中记录的流的大小,可以实现高精度的流计数器解码。

(3)、提出了一种全局解码策略,将其他交换机可以直接获取的流量大小添加到交换机的解码问题中,提高了流计数器解码的准确性。

附图说明

图1是本发明基于SDN的数据中心网络流量测量方法流程图;

图2是本发明基于SDN的数据中心网络流量测量方法架构图;

图3是本发明基于SDN的数据中心网络流量测量方法仿真测量误差图;

图4是本发明基于SDN的数据中心网络流量测量方法仿真测量时间图。

具体实施方式

下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。

实施例

为了方便描述,先对具体实施方式中出现的相关专业术语进行说明:

SDN(Software Defined Networking):软件定义网络;

图1是本发明基于SDN的数据中心网络流量测量方法流程图。

在本实施例中,如图2所示,在拓扑为20个交换机的胖树结构网络中进行测试,并设定Flow Filter中的哈希函数个数kf为5,Counting>c为4。设置网络中链路带宽为10Gps,解码周期为100ms,并以二八原则与带宽为标准,随机生成网络中的流。按照图2所示架构进行测量,下面对测量的具体过程进行描述。

如图1所示,本发明一种基于SDN的数据中心网络流量测量方法,具体包括以下步骤:

S1、对每台交换机设置编码流集合编码流集合包括Flow Filter、Counting Table和Flow Vector三部分,其中,Flow Filter为一个布隆过滤器表,用于检测一个数据包对应的流是否为新流,初始时刻布隆过滤器表中所有表项值均为0;Counting Table为交换机计数器,共g=10个组,每组m=1000个表项,每个表项均包含PacketCount与FlowCount两个值,用于存储流信息,其中,PacketCount用于存储哈希到本表项的所有流的数据包的数目之和,FlowCount用于存哈希到本表项的流的数目;Flow Vector为一个存储表,用于记录流的五元组;

S2、每个数据平面的交换机在一个周期内对流进行编码

S2.1、对数据包对应流的五元组进行映射并检测数据包对应的流是否为新流

在一个周期内,当某一个数据包到达时,先提取该数据包对应流的五元组,将提取到的五元组输入到一个哈希函数中,得到一个哈希值,将该哈希值对10取模,得到j,再将该五元组输入到5个相互独立的哈希函数,得到5个哈希值;同时将提取的五元组输入到4个相互独立的哈希函数,得到4个哈希值,再用这4个哈希值与Flow Filter中对应的表项中的值比较,如果对应的表项中的值都是1,则表明该数据包对应的流是旧流,直接跳转到S2.2,如果对应的表项中的值不都是1,则表明该数据包对应的流是新流,直接跳转到S2.3;

S2.2、更新Counting Table信息

将步骤S2.1中提取到的j和4个哈希值对应到Counting Table的第j组中的4个表项,并将这4个表项的PacketCount值和FlowCount值都加1;

S2.3、记录新流并更新Counting Table信息将步骤S2.1中提取到的5个哈希值对应到Flow Filter上的5个表项,设置这些表项中的值为1,并将该数据包对应流的五元组加入Flow Vector中;然后将步骤S2.1中提取到的j和4个哈希值对应到Counting Table的第j组中的4个表项,并将这4个表项的PacketCount值加1,FlowCount值不变;

S2.4、当该数据包对应流进行编码完成后,返回步骤S2.1,进行下一个包的处理,直到该周期结束;

S2、将一个周期内已编码的20台交换机的Flow Filter、Counting Table和FlowVector发送到控制平面解码主机;

S3、控制平面的解码主机收到一个周期内的20台交换机发送的Flow Filter、Counting Table和Flow Vector后进行解码

S3.1、解码出所有交换机的Flow Vector中所有五元组对应的流在CountingTable中的组号和表项序号

对每个交换机执行以下步骤:将Flow Vector中存放的五元组按照表项顺序依次取出,将每个五元组作为输入,通过一个哈希函数得到一个哈希值,将该哈希值对10取模得到j,由此在Counting Table中找到对应第j组;再将该五元组作为输入,通过4个相互独立的哈希函数,得到4个哈希值,即得到所有在步骤S2.2、S2.3存放该五元组对应的流的信息的组号和表项序号;

S3.2、根据Counting Table中的组号和表项序号得到系数矩阵

对于Counting Table中的每个组j都设置一个系数矩阵Aj,Aj初始化为1000×n的空矩阵;其中,1000为Counting>

利用步骤S3.1得到的Flow Vector中所有流的五元组对应的流存放在CountingTable中的组号和表项序号设置系数矩阵Aj中的值;设置方法为:如果Counting>k的信息,则将Ai,k设置为1;如果第i个位置上没有存储第k条流xk的信息,则将Ai,k设置为0,其中1<i≤m,1<k≤n;

S3.3、单独解码:单独对每个交换机的所有组建立统计数据包个数的方程,Cplex进行求解出每个交换机中所有流量大小

minimize||Xj||1

s.t.AjXj=Yj

Xj≥0

其中,Xj表示正在解码的交换机的Counting>j表示正在解码的交换机的CountingTable中第j组的系数矩阵;Yj表示正在解码的交换机的Counting>

具体操作步骤为:

1)、为每台交换机设置存储表Pure Cell,Pure Cell共10个组;遍历所有交换机的Counting Table中所有组的所有表项,如果第p台交换机的第j组中的某个表项中的FlowCount大小为1,表示此表项只存储了一条流的信息,则此表项的PacketCount即为该流的数据包的大小,然后将该表项对应的五元组和PacketCount加入到Pure Cell中;

2)、对于第p台交换机的每个组,遍历该交换机相应的Counting Table中每个组的每条流,xk表示第k条流,通过Flow>k经过的交换机,以当前解码的交换机p作为本地交换机,在邻居交换机的Pure>k,如果存在,则可得到流xk在邻居交换机中的包的个数;如果不存在,则继续寻找邻居的邻居交换机,直到遍历完整条路径,得到流xk在邻居交换机中的包的个数fk,如果遍历完所有路径都不存在,则fk设置为0;

3)、统计数据包个数的方程组中添加约束条件,重新构建出如下方程,并用Cplex计算出每一个交换机中经过的所有流的数据包的个数;

minimize(Xj||1+||Δj||1

s.t.AjXj=Yj

Xjj≤Fj

Xj≥0

其中,Δj表示Counting>j表示正在解码的交换机的Counting>j表示正在解码的交换机的Counting>j表示正在解码的交换机的Counting>j表示正在解码的交换机的Counting>k构成的列向量,大小为1000×1。

S4、测量出本周期内经过数据中心网络每个交换机每条流量的大小,待下一个周期到来时,跳转到步骤S1进行下一轮继续流量测量。

本实施例中,测试一个周期内的解码效果,设置平均流过交换机流数约从7500条每次增加约700条直到约15400条,重复步骤S1至S4,采用相对误差计算法得到解码误差如图3所示,解码时间如图4所示。从图3中可以看出,当交换机平均流数为9200左右时,单独解码可以达到0%的误差,而交换机平均流数为11000左右时,网际解码可以达到0%的误差;从图4可以看出,当交换机平均流数为9200左右时,解码时间能控制在100ms即一个周期之内。除此之外,还可以通过增加组数g对所有组进行并行解码减小解码时间,具有高的可扩展性;

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号