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

技术编号:18449255 阅读:17 留言:0更新日期:2018-07-14 12:08
本发明专利技术公开了一种基于SDN的数据中心网络流量测量方法,先对每台交换机设置编码流集合,然后对每个数据平面的交换机在一个周期内对流进行编码,得到每台交换机的Flow Filter、Counting Table和Flow Vector,然后将一个周期内已编码的所有交换机的Flow Filter、Counting Table和Flow Vector发送到控制平面解码主机进行解码,从而测量出一个周期内经过数据中心网络中每台交换机的每条流量的大小。

【技术实现步骤摘要】
一种基于SDN的数据中心网络流量测量方法
本专利技术属于网络测量
,更为具体地讲,涉及一种基于SDN的数据中心网络流量测量方法。
技术介绍
NetFlow是一种广泛使用的流量监测工具。NetFlow在工作时,维持一个活动流的集合(activeflowset),并支持流的插入,哈希冲突解决,流的删除等功能。但是数据中心的商用芯片上较难支持NetFlow的全部功能,因为NetFlow的完全功能会降低包的处理速度,其使用采样的简化版本无法监测到所有数据流的包。FlowRadar,是一种带宽与存储开销较小,易扩展的流量监测方法。其核心思想是,在数据平面,交换机利用较少的存储空间与固定数量的简单操作编码流的信息,控制平面的主机收集各交换机编码信息,并解码出流的信息。FlowRadar可以以较小的存储开销和计算开销来准确的得到全网的流量信息。但是,FlowRadar在计数器资源不够的情况下,可能无法解码,从而导致完全得到不到流的信息。此外,FlowRadar在全网解码的情况下,其求解问题的负载度很高,很难保证结果的及时性。软件定义网络(SoftwareDefinedNetwork,SDN)是一种新型的网络架构,通过将网络转发设备的控制平面与数据平面分离,实现网络流量的灵活控制。与传统IP网络不同,SDN网络的控制器可以获取SDN节点的流表统计数据、网络拓扑等信息,并且可以为SDN节点设计转发逻辑,具有高度的自主权。这样的特性使SDN的测量方法比传统网络的测量方法更加灵活多样,为实时监测、减少网络资源消耗等问题的解决提供新的思路。SDN交换机的流表项可以通过修改转发端口来控制数据包的转发方向,也可以通过添加行动修改数据包的头部信息。这些特点能够克服传统IP网络中链路性能参数测量的诸多困难,为网络的测量创造有利条件。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种基于SDN的数据中心网络流量测量方法,将流分组测量,将大规模的测量问题分解为若干小规模的测量问题,有效地减少了问题求解的复杂度。为实现上述专利技术目的,本专利技术一种基于SDN的数据中心网络流量测量方法,其特征在于,具体包括以下步骤:(1)、对于每个交换机设置编码流集合编码流集合包括FlowFilter、CountingTable和FlowVector三部分,其中,FlowFilter为一个布隆过滤器,用于检测一个数据包对应的流是否为新流,初始时刻布隆过滤器中所有表项值均为0;CountingTable为交换机计数器,共g个组,每组m个表项,每个表项均包含PacketCount与FlowCount两个值,用于存储流信息,其中,PacketCount用于存储哈希到本表项的所有流的数据包的数目之和,FlowCount用于存哈希到本表项的流的数目;FlowVector为一个存储表,用于记录流的五元组;(2)、每个数据平面交换机在一个周期内对流进行编码(2.1)、对数据包对应流的五元组进行映射并检测数据包对应的流是否为新流在一个周期内,当某一个数据包到达时,先提取该数据包对应流的五元组,将提取到的五元组输入到一个哈希函数中,得到一个哈希值,将该哈希值对g取模,得到j,再将该五元组输入到kc个相互独立的哈希函数,得到kc个哈希值;同时将提取的五元组输入到kf个相互独立的哈希函数,得到kf个哈希值,再用这kf个哈希值与FlowFilter中对应的表项中的值比较,如果对应的表项中的值都是1,则表明该数据包对应的流是旧流,直接跳转到(2.2),如果对应的表项中的值不都是1,则表明该数据包对应的流是新流,直接跳转到(2.3);(2.2)更新CountingTable信息将步骤(2.1)中提取到的j和kc个哈希值对应到CountingTable的第j组中的kc个表项,并将这kc个表项的PacketCount值和FlowCount值都加1;(2.3)、记录新流并更新CountingTable信息将步骤(2.1)中提取到的kf个哈希值对应到FlowFilter上的kf个表项,设置这些表项中的值为1,并将该数据包对应流的五元组加入FlowVector中;然后将步骤(2.1)中提取到的j和kc个哈希值对应到CountingTable的第j组中的kc个表项,并将这kc个表项的PacketCount值加1,FlowCount值不变;(2.4)、当该数据包对应流进行编码完成后,返回步骤(2.1),进行下一个包的处理,直到该周期结束;(2)、将一个周期内已编码的所有交换机的FlowFilter、CountingTable和FlowVector发送到控制平面解码主机;(3)、控制平面的解码主机收到一个周期内的所有交换机发送的FlowFilter、CountingTable和FlowVector后进行解码(3.1)、解码出所有交换机的FlowVector中所有五元组对应的流在CountingTable中的组号和表项序号对每个交换机执行以下步骤:将FlowVector中存放的五元组按照表项顺序依次取出,将每个五元组作为输入,通过一个哈希函数得到一个哈希值,将该哈希值对g取模得到j,由此在CountingTable中找到对应第j组;再将该五元组作为输入,通过kc个相互独立的哈希函数,得到kc个哈希值,即得到所有在步骤(2.2)、(2.3)存放该五元组对应的流的信息的组号和表项序号;(3.2)根据CountingTable中的组号和表项序号得到系数矩阵对于CountingTable中的每个组j都设置一个系数矩阵Aj,Aj初始化为m×n的空矩阵;其中,m为CountingTable第j组的表项个数,n为CountingTable中第j组所有m个表项中的FlowCount值的和;利用步骤(3.1)得到的FlowVector中所有流的五元组对应的流存放在CountingTable中的组号和表项序号设置系数矩阵Aj中的值;设置方法为:如果CountingTable中第j组的第i个位置上存储了第k条流xk的信息,则将Ai,k设置为1;如果第i个位置上没有存储第k条流xk的信息,则将Ai,k设置为0,其中1<i≤m,1<k≤n;(3.3)、对每个交换机的所有组建立统计数据包个数的方程,用Cplex进行求解minimize||Xj||1s.t.AjXj=YjXj≥0其中,Xj表示正在解码的交换机的CountingTable中第j组的所有流的数据包个数构成的列向量,是需要求解的向量,大小为n×1;Aj表示正在解码的交换机的CountingTable中第j组的系数矩阵;Yj表示正在解码的交换机的CountingTable中第j组的所有表项中的PacketCount的值构成的列向量,大小为m×1;(3.4)、使用全局解码,在步骤(3.3)建立的方程组中添加约束条件,重新构建方程,计算出所有交换机机中经过的所有流的数据包的个数;(4)、测量出本周期内经过数据中心网络每个交换机每条流量的大小,待下一个周期到来时,跳转到步骤(1)进行下一轮继续流量测量。本专利技术的专利技术目的是这样实现的:本专利技术一种基于SDN的数据中心网络流量测量方法,先对每台交换机设置编码流集合,然后对每个数据平面的交换机在一个周期内对流进行编码,得本文档来自技高网
...

【技术保护点】
1.一种基于SDN的数据中心网络流量测量方法,其特征在于,具体包括以下步骤:(1)、对于每个交换机设置编码流集合编码流集合包括Flow Filter、Counting Table和Flow Vector三部分,其中,Flow Filter为一个布隆过滤器,用于检测一个数据包对应的流是否为新流,初始时刻布隆过滤器中所有表项值均为0;Counting Table为交换机计数器,共g个组,每组m个表项,每个表项均包含PacketCount与FlowCount两个值,用于存储流信息,其中,PacketCount用于存储哈希到本表项的所有流的数据包的数目之和,FlowCount用于存哈哈希希到本表项的流的数目;Flow Vector为一个存储表,用于记录流的五元组;(2)、每个数据平面交换机在一个周期内对流进行编码(2.1)、对数据包对应流的五元组进行映射并检测数据包对应的流是否为新流在一个周期内,当某一个数据包到达时,先提取该数据包对应流的五元组,将提取到的五元组输入到一个哈希函数中,得到一个哈希值,将该哈希值对g取模,得到j,再将该五元组输入到kc个相互独立的哈希函数,得到kc个哈希值;同时将提取的五元组输入到kf个相互独立的哈希函数,得到kf个哈希值,再用这kf个哈希值与Flow Filter中对应的表项中的值比较,如果对应的表项中的值都是1,则表明该数据包对应的流是旧流,直接跳转到(2.2),如果对应的表项中的值不都是1,则表明该数据包对应的流是新流,直接跳转到(2.3);(2.2)更新Counting Table信息将步骤(2.1)中提取到的j和kc个哈希值对应到Counting Table的第j组中的kc个表项,并将这kc个表项的PacketCount值和FlowCount值都加1;(2.3)、记录新流并更新Counting Table信息将步骤(2.1)中提取到的kf个哈希值对应到Flow Filter上的kf个表项,设置这些表项中的值为1,并将该数据包对应流的五组加入Flow Vector中;然后将步骤(2.1)中提取到的j和kc个哈希值对应到Counting Table的第j组中的kc个表项,并将这kc个表项的PacketCount值加1,FlowCount值不变;(2.4)、当该数据包对应流进行编码完成后,返回步骤(2.1),进行下一个包的处理,直到该周期结束;(2)、将一个周期内已编码的所有交换机的Flow Filter、Counting Table和Flow Vector发送到控制平面解码主机;(3)、控制平面的解码主机收到一个周期内的所有交换机发送的Flow Filter、Counting Table和Flow Vector后进行解码(3.1)、解码出所有交换机的Flow Vector中所有五元组对应的流在Counting Table中的组号和表项序号对每个交换机执行以下步骤:将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 Table第j组的表项个数,n为Counting Table中第j组所有m个表项中的FlowCount值的和;利用步骤(3.1)得到的Flow Vector中所有流的五元组对应的流存放在Counting Table中的组号和表项序号设置系数矩阵Aj中的值;设置方法为:如果Counting Table中第j组的第i个位置上存储了第k条流xk的信息,则将Ai,k设置为1;如果第i个位置上没有存储第k条流xk的信息,则将Ai,k设置为0,其中1<i≤m,1<k≤n;(3.3)、对每个交换机的所有组建立统计数据包个数的方程并用Cplex工具进行求解min imize||Xj||1s.t.AjXj=YjXj≥0其中,Xj表示正在解码的交换机的Counting Table中第j组的所有流的数据包个数构成的列向量,是需要求解的向量,大小为n×1;Aj表示正在解码的交换机的Counting Table中第j组的系数矩阵;Yj表示正在解码的交换机的Counting Table中第j组的所有表项中的PacketCount的值构成的列向量,大小为m×1;(3.4)、使用全局解码,在步骤(3.3)建立的方程组中添...

【技术特征摘要】
1.一种基于SDN的数据中心网络流量测量方法,其特征在于,具体包括以下步骤:(1)、对于每个交换机设置编码流集合编码流集合包括FlowFilter、CountingTable和FlowVector三部分,其中,FlowFilter为一个布隆过滤器,用于检测一个数据包对应的流是否为新流,初始时刻布隆过滤器中所有表项值均为0;CountingTable为交换机计数器,共g个组,每组m个表项,每个表项均包含PacketCount与FlowCount两个值,用于存储流信息,其中,PacketCount用于存储哈希到本表项的所有流的数据包的数目之和,FlowCount用于存哈哈希希到本表项的流的数目;FlowVector为一个存储表,用于记录流的五元组;(2)、每个数据平面交换机在一个周期内对流进行编码(2.1)、对数据包对应流的五元组进行映射并检测数据包对应的流是否为新流在一个周期内,当某一个数据包到达时,先提取该数据包对应流的五元组,将提取到的五元组输入到一个哈希函数中,得到一个哈希值,将该哈希值对g取模,得到j,再将该五元组输入到kc个相互独立的哈希函数,得到kc个哈希值;同时将提取的五元组输入到kf个相互独立的哈希函数,得到kf个哈希值,再用这kf个哈希值与FlowFilter中对应的表项中的值比较,如果对应的表项中的值都是1,则表明该数据包对应的流是旧流,直接跳转到(2.2),如果对应的表项中的值不都是1,则表明该数据包对应的流是新流,直接跳转到(2.3);(2.2)更新CountingTable信息将步骤(2.1)中提取到的j和kc个哈希值对应到CountingTable的第j组中的kc个表项,并将这kc个表项的PacketCount值和FlowCount值都加1;(2.3)、记录新流并更新CountingTable信息将步骤(2.1)中提取到的kf个哈希值对应到FlowFilter上的kf个表项,设置这些表项中的值为1,并将该数据包对应流的五组加入FlowVector中;然后将步骤(2.1)中提取到的j和kc个哈希值对应到CountingTable的第j组中的kc个表项,并将这kc个表项的PacketCount值加1,FlowCount值不变;(2.4)、当该数据包对应流进行编码完成后,返回步骤(2.1),进行下一个包的处理,直到该周期结束;(2)、将一个周期内已编码的所有交换机的FlowFilter、CountingTable和FlowVector发送到控制平面解码主机;(3)、控制平面的解码主机收到一个周期内的所有交换机发送的FlowFilter、CountingTable和FlowVector后进行解码(3.1)、解码出所有交换机的FlowVector中所有五元组对应的流在CountingTable中的组号和表项序号对每个交换机执行以下步骤:将FlowVector中存放的五元组按照表项顺序依次取出,将每个五元组作为输入,通过一个哈希函数得到一个哈希值,将该哈希值对g取模得到j,由此在CountingTable中找到对应第j组;再将该五元组作为输入,通过kc个相互独立的哈希函数,得到kc个哈希值,即得到所有在步骤(2.2)、(2.3)存放该五元组对应的流的信息的组号和表项序号;(3.2)根据CountingTable中的组号和表项序号得到系数矩阵对于CountingTable中的每个组都设置一个系数矩阵,第j组设置为系数矩阵Aj,Aj初始化为m×n的空矩阵;其...

【专利技术属性】
技术研发人员:王雄刘瀚彧陈少博张俊
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1