软件定义网络中基于属性相似性的流表设计方法与流程

文档序号:15402172发布日期:2018-09-11 17:48阅读:407来源:国知局
本发明是一种软件定义网络中基于属性相似性的流表设计方法,属于软件定义网络领域。
背景技术
:随着网络的快速发展,传统互联网出现了如网络配置复杂度高等诸多问题,这些问题说明网络架构需要革新,可编程网络的相关研究为软件定义网络(softwaredefinenetwork,简称sdn)的产生提供了可参考的理论依据。网络允许数据包携带用户程序,并能够由网络设备自动执行。用户可以通过编程方式动态地配置网络,达到了方便管理网络的目的。然而由于需求低、协议兼容性差等问题,并未在工业界实现实际应用。最近有研究提出将可编程的决策平面(即控制层)从数据平面分离,使控制平面逻辑中心化与自动化,该设计思想产生了sdn控制器的雏形。借鉴计算机系统的抽象结构,未来的网络结构将存在转发抽象、分布状态抽象和配置抽象这3类虚拟化概念。转发抽象剥离了传统交换机的控制功能,将控制功能交由控制层来完成,并在数据层和控制层之间提供了标准接口,确保交换机完成识别转发数据的任务。控制层需要将设备的分布状态抽象成为一个全网视图,以便众多应用能够通过全网信息进行网络的统一配置。配置抽象进一步简化了网络模型,用户仅需通过控制层提供的应用接口对网络进行简单配置,就可自动完成沿路径转发设备的统一部署。如图4所示,sdn主要以控制器为逻辑中心,南向接口主要负责控制层与数据层之间的通信,而北向接口负责应用层与控制层之间的通信。由于北向接口过于复杂,南向接口又是数据与控制分离的核心体现,所以研究南向接口成为了sdn的主要研究热点。openflow是sdn中第一个广泛使用的数据控制层接口协议,得到学术界普遍关注,openflow是基于流来进行转发数据的,在交换机中设置了流表,当数据包传入交换机时,让数据包与交换机流表中的各项进行匹配,若匹配成功,则按照匹配流项的相应动作对数据包进行相关处理,若匹配不成功,则需通知控制器对流表进行更新,之后若再次收到相同数据包将依据新插入的流项进行匹配。针对交换机和控制器的资源分配问题,较多的方法是直接从硬件上入手,提高控制器和交换机的处理能力,并且引入多个控制器进行协调运作,多个控制器共享全局网络信息,此类方法增加了硬件的设计难度。有研究改进了流项的空闲重置机制,该方法将前一轮计数时间内的流项保存到当前轮次的计数时间,虽然提高数据包的匹配率,但是需要交换机留出更多的内存空间以存储前一轮次的流项。维持流表的动态平衡是一种比较合理的设计方法,不直接删除流表的流项,建立缓冲区暂时保存部分不活跃的流项,该方法仍然对内存空间有严格的要求,而且增加了缓冲区与内存之间的交互,带来了新的问题。本发明提出一种基于sdn中属性相似性的流表设计方法,提高了流表的匹配成功率以及降低了交换机与控制器之间的资源开销。数据包发生不匹配时,先分析交换机各流项的计数器,对流项的计数器作相对比较,尽量删除计数器值较小并且差别较大的流项,再利用属性的相关性进行计算,删除在流表中相关性最大的流项,最后在交换机流表中插入新流项以完成流表的更新。通过分析各流项之间的相关性,合理设计流表,使得流表中的各流项相关性达到最低,降低了交换机中的流表更新频率。技术实现要素:针对软件定义网络中流表匹配率低以及流表更新带来的节点失效等问题,本发明将属性的相关性加入流表项,提出基于属性相似性的流表设计方法。通过计算使得各流项间属性相关性较小,使得交换机中的流表更加稳定。同时交换机在匹配数据包时,尽量与属性相关性最大的流项进行匹配。若数据包匹配不成功,控制器先重新进行决策,作出决策信息发送至交换机,交换机再按照决策信息更新流表,主要有以下步骤:1)定义流表的结构,在包含包头域、计数器、动作、优先级的基础上,添加属性项并将属性映射成一个列向量,清空流表中所有的流项;2)流表的初始化:当交换机接收到数据包之后,若数据包匹配流项失败,并且当前流表流项数cn小于流表最大流项数n,则发送数据包至控制器,交换机等待并接收控制器作出的决策信息,根据该决策完成流项的插入,继续处理下一个数据包,直至cn=n,完成初始化;3)交换机处理后续接收的数据包:交换机收到数据包时,对接收到的数据包按优先级依次匹配本地流项,若匹配不成功,则发送请求数据包至控制器,执行步骤4),否则交换机按照匹配的流项对数据包执行相应的操作,结束;4)控制器进行决策:控制器以各流项的计数器为依据作相对比较,先判断是否能直接删除流项,若能则按计数规则删除流项,否则计算该数据包的属性与当前流表中各流项的属性之间的相关性,依据计算得到可删除流项,并将该决策信息发送至交换机;5)更新流表:交换机收到控制器发送的决策信息之后,按照决策信息更新流表,结束。本发明优势:1)依据属性的相关性设计流表,设计的流表中各流项相关性相对较低,减少了流表存储空间,从而节约了交换机的硬件资源;2)数据包进行匹配时选择与之最相关的流项进行匹配,降低了流表的更新频率,减小控制器的负载,提高了数据包匹配的成功率和交换机的数据转发能力。附图说明图1是本发明流表设计的流程图;图2是本发明中6种属性的完全图;图3是本发明中数据包不匹配后构造的完全图;图4是本发明关于sdn的三层结构图。具体实施方式1)修改控制器中的流表结构,在包含的包头域、计数器、动作、优先级的基础上,添加属性项,清空流表中所有的流项,将属性映射成一个列向量,流表的结构如下:headerfieldcounteractionpriority…property其中:headerfield用于匹配数据包的包头域,counter用于统计流项的匹配信息,action用于处理匹配数据包,property用于表示数据包的属性;2)初始化流表,填充整个流表空间:当交换机接收到数据包之后,若在流表中找到相匹配的流项,则直接根据该流项的动作进行相应的操作(包括转发、丢弃等);若数据包匹配流项失败,并且当前流表流项数cn小于流表最大流项数n,则发送数据包至控制器,交换机等待并接收控制器作出的决策信息,根据该决策完成流项的插入,继续处理下一个数据包,直至cn=n,完成初始化;假设当前完成初始化后流表中存在6种属性,以这6种属性为顶点,构造一个完全图,两个顶点的边权值表示两个属性的关联性,如图2所示,为了图例更加清晰,只描绘出部分边的权值,将图2的完全图用邻接矩阵a表示,结果如下:(1)将该矩阵的对角线元素删除,组成一个新的矩阵,取出各行,每一行的元素组成一个列向量,该列向量表示第一种属性的列向量,如用f1=表示第一种属性,结果如下:(2)结合图2,将属性矩阵进行实例化,各流项计数器的值依次为{84,56,26,48,17,26},得到的结果如下:(3)3)匹配后续数据包:完成流表的初始化后,当交换机收到数据包时,数据包与流表中各流项进行匹配,若匹配成功则不需要更新流表,按照流项的动作进行相应的操作;若匹配失败则需要更新流表,更新流表的操作主要包括以下两步:第一步:根据各流项计数器的相对比较结果删除流项,假设需新增加的流项数目为2(新添流项小于总流项的一半)条,流表可存储的总流项数目为6,则控制器需从6项中删除2条流表,之后将新增加的2条插入到流表,控制器收到交换机请求数据包后,取出该交换机流表中各流项计数器的值,按由大到小的规则进行排序,记作:(4)先取出计数器值最小的4个流项,即,计算样本的方差,结果记作:(5)其中:样本均值为2个流项组成的样本,样本大小k为2。依次将加入样本,每次加入时利用上式(5)计算得到新方差,判断是否成立,若成立,则记第i条流项为可删除流项;假设,则控制器保存3)中得到的所有可删除流项集合={f5},作为之后的决策依据,可删除流项数目记作sf=1,显然sf不等于2,即按照计数器的删除规则不能完全删除流项,需要用到第二步;第二步:利用属性的相关性计算删除流项,在流表中删除第5个流项,将剩余的5项流项的属性列向量组成一个属性向量矩阵:(6)将属性向量矩阵x进行归一化,可以得到归一化矩阵:(7)再利用计算列相关性矩阵,结果如下:(8)在g矩阵中选取最大的元素,在这里有g11=g33=1.0,但由于第一个属性的计数器值大于第三个属性的计数器值,所以应当选取g33,记录可删除流项集合={f3},删除集合和集合中所标记的流项,并将不匹配的2种属性与剩余的4种属性构造完全图,如图3所示,最后控制器发送决策信息,通知交换机更新流表;4)更新流表:交换机收到控制器发送的决策信息之后,按照决策信息更新流表,结束。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1