比对流量表的方法及交换器与流程

文档序号:17757542发布日期:2019-05-24 21:25阅读:226来源:国知局
本发明是有关于一种比对流量表的方法,更具体地说,是一种应用于软件定义网络中,能够加快比对速度的比对流量表的方法及交换器。
背景技术
::在传统网络的架构中,个别交换器的规则设定是由专属的路由算法所控制,因此当某个路由规则需要改变设定,必须透过人工来处理并设定路径上相关交换器的规则。软件定义网络(softwaredefinednetworks,sdn)则提供了更好的解决办法。软件定义网络将交换器的控制层和数据层分离,并将控制层移到集中式的架构中,也就是说,软件定义网络可利用同一个控制管理的逻辑掌握并操作各个交换器的流量表(flowtable)设定,而交换器则是被动地配合来自控制层的规则变动,并专注于流量传输。软件定义网络将控制层及数据层分离的架构使得网络拓朴能够具有的可扩展性、可管理性及可程序化等特性。控制器和交换器是软件定义网络的两个基本组件,控制器负责网络的基本控管功能,例如设定交换器的流量表规则,并随时掌握网络的状态信息。交换器则基于控制器所设定的流量表中的流量规则来进行封包传送,并被动响应来自控制器的指令。控制器与交换器之间会使用特定的协议,例如开放流(openflow)协议来沟通,控制器可以透过增加、删除或修改交换器上的流量规则来控制网络上的流量分布。在软件定义网络的应用中,由于三态内容寻址内存(ternarycontentaddressablememory,tcam)具有在线性时间内高速比对的优点,因此常被用来储存交换器中的流量表,然而相较于一般的内容寻址内存,三态内容寻址内存所需的面积较大,同时也需要较高的功率消耗和较高的成本,因此在实作上无法设置大容量的三态内容寻址内存,而导致流量表的容量较小,容易造成流量表满溢(overflow)的问题,甚至导致封包遗失,导致传输效率较低。此外,虽然以硬件为基础的三态内容寻址内存拥有很高的比对效能,然而一旦硬件电路制造完成后,就难以更动比对的方式与可比对的字段,因此不具有弹性,难以随着openflow的版本演而升级,使得可程序化的能力有所减弱。然而,以软件为基础的交换器则无此缺点,而能够更改比对机制模块以及储存流量条目(flowentry)的数据结构以支持最新版本的openflow,且可透过是统中庞大的内存来储存大量的流量条目。然而相较于三态内容寻址内存,以软件为基础的交换器在比对速度上则远远不如,甚至会落后106的等级。因此如何改善以软件为基础的交换器在处理封包上的效能就成为重要的议题。技术实现要素:本发明的一实施例提供一种比对流量表(flowtable)的方法,应用于软件定义网络(softwaredefinednetworking,sdn)中,比对流量表的方法包含当软件定义网络中的交换器接收到封包时,交换器解析封包的头文件以取得封包所涉及的至少一相关规则字段,根据至少一相关规则字段及交换器的复数个流量表的复数个兴趣规则字段,自复数个流量表中选择相关流量表,及将封包所涉及的至少一相关规则字段的内容与相关流量表的至少一流量条目(flowentry)所对应的规则内容相比对。相关流量表的至少一流量条目具有相同的至少一兴趣规则字段,且封包所涉及的至少一相关规则字段包含相关流量表的至少一兴趣规则字段。本发明的另一实施例提供一种应用于软件定义网络中的交换器,交换器包含复数个流量表及控制单元。当接收到封包时,控制单元解析封包的头文件以取得封包所涉及的至少一相关规则字段,根据至少一相关规则字段及复数个流量表的复数个兴趣规则字段,自复数个流量表中选择相关流量表,并将封包所涉及的至少一相关规则字段的内容与相关流量表的至少一流量条目所对应的规则内容相比对。相关流量表的至少一流量条目具有相同的至少一兴趣规则字段,且封包所涉及的至少一相关规则字段包含相关流量表的至少一兴趣规则字段。附图说明图1为本发明一实施例的交换器的示意图。图2为本发明一实施例的比对流量表的方法流程图。图3为图2的步骤的子步骤流程图。符号说明:具体实施方式图1为本发明一实施例的交换器100的示意图,交换器100包含复数个流量表ft0至ft2及控制单元110。在本发明的部分实施例中,交换器100可为应用于软件定义网络(softwaredefinednetworking,sdn)中的软件交换器,也就是说,交换器100可利用软件更改内部流量表的比对机制并修改储存流量条目(flowentry)的数据结构。在本发明的部分实施例中,为了提升交换器100在处理封包上的效能,交换器100可以透过分类并切割流量表的方式,减少需比对的流量条目数量。由于一般而言,包头档(header)中的信息与流量条目之间会有特定的对应关系,因此倘若能够依照特定的分类方式将交换器100中的流量表加以分类并切割,就可以在接收到封包时,根据包头档中的内容,选择相对应的流量表来进行比对,而无须比对不相对应的流量表。举例来说,表1为本发明一实施例的流量表中全部需比对的规则字段,其中包含例如互因特网协议版本4(internetprotocolversion4,ipv4)的来源地(ipv4_src)及目的地(ipv4_dst)、传输控制协议(transmissioncontrolprotocol,tcp)的来源地(tcp_src)及目的地(tcp_dst)…等等。表1然而一般而言,这些规则字段彼此之间可能有互斥的关系,举例来说,使用因特网协议版本4的封包即不会同时使用因特网协议版本6(internetprotocolversion6,ipv6),或者使用传输控制协议(tcp)的封包即不会同时使用用户封包协议(userdatagramprotocol,udp)。也就是说,对于每个流量条目而言,其实只有部分的规则字段需要比对(在本说明书中将以兴趣规则字段称之),且在流量表中,每一个流量条目所需比对的规则字段可能也会有所差异。在本发明的部分实施例中,交换器100可将流量表中具有相同兴趣规则字段的流量条目移出流量表,并建立包含这些具有相同兴趣规则字段的新流量表。举例来说,在图1中,流量表ft1及ft2中的流量条目可能原先是储存于流量表ft0中,而随着流量条目增加,交换器100便可将兴趣规则字段皆为eth_dst、ipv4_src、ipv4_dst及tcp_dst的流量条目fe6至fe8分别自流量表ft0中移出,并建立流量表ft1以储存流量条目fe6至fe8。同理,交换器100可将兴趣规则字段皆为eth_dst、ipv6_src、ipv6_dst及udp_dst的流量条目fe9及fe10分别储存于流量表ft2。如此一来,当交换器100当接收到封包pck1时,控制单元110便可解析封包pck1的头文件以取得封包pck1所涉及的至少一相关规则字段,并根据封包pck1的相关规则字段以及流量表ft0至ft2的兴趣规则字段选择相关的流量表来进行比对。表2为本发明一实施例的封包pck1的头文件内容。表2由于封包pck1所涉及的相关规则字段为in_port、eth_dst、eth_src、eth_type、ip_proto、ipv4_src、ipv4_dst、tcp_src及tcp_dst,且封包pck1所涉及的相关规则字段包含了流量表ft1的所有兴趣规则字段,而未包含流量表ft2的所有兴趣规则字段,表示封包pck1可能会与流量表ft1中的流量条目相符,但一定不会和流量表ft2中的流量条目相符,此时交换器100便可选择流量表ft1为相关流量表。接着,交换器100的控制单元110便可将封包pck1所涉及的相关规则字段的内容与相关流量表ft1的流量条目所对应的规则内容相比对,而无须比对流量表ft2中的内容。换言之,交换器100只需要比对相关流量表中的流量条目内容,而无须比对所有流量表中的流量条目内容,因此能够有效提升交换器100的比对效率。此外,为了能够迅速地选择出相关流量表,在本发明的部分实施例中,还可利用向量比对的方式来进行选择。举例来说,控制单元110可根据封包pck1的相关规则字段建立封包pck1的目标字段向量,并根据流量表ft0至ft2的兴趣规则字段建立流量表ft0至ft2的兴趣字段向量。表3、表4及表5分别为本发明一实施例的封包pck1的目标字段向量、流量表ft1的兴趣字段向量及流量表ft2的兴趣字段向量。表3表4表5换言之,交换器100可将流量表中全部需比对的规则字段作为向量的各个维度,并将有对应内容的规则字段设定为1,无对应内容的规则字段设定为0。如此一来,封包pck1的目标字段向量即可设定为(1,1,1,1,1,1,1,0,0,1,1,0,0),流量表ft1的兴趣字段向量可设定为(0,1,0,0,0,1,1,0,0,0,1,0,0),而流量表ft2的兴趣字段向量则可设定为(0,1,0,0,0,0,0,1,1,0,0,0,1)。当交换器100在比较目标字段向量及兴趣字段向量时,仅须透过逻辑运算,便可得知封包pck1的目标字段向量是否与流量表的兴趣字段向量相匹配。举例来说,若在流量表的兴趣字段向量中值为1的维度在封包pck1的目标字段向量的对应值也皆为1,即表示两者所关注的字段相匹配,反之,若在流量表的兴趣字段向量中值为1的维度在封包pck1的目标字段向量的对应值不为1,即表示两者所关注的字段不匹配。而当判断出流量表ft1的兴趣字段向量与封包pck1的目标字段向量相匹配时,便可选择流量表ft1作为相关流量表。再者,为了进一步加快比对的速度,当交换器100选择出相关流量表之后,还可进一步以哈希(hash)函数的方式来快速比对封包内容及相关流量表内的流量条目内容。举例来说,控制单元110可先根据相关流量表中,每一个流量条目所对应的规则内容以一预定的哈希函数计算其流量条目的参考索引值,并在接收到封包pck1之后,根据封包pck1所涉及的相关规则字段的内容(例如为表2中对应到相关流量表ft1的兴趣规则字段里的内容)以相同的哈希函数计算封包pck1所对应的目标索引值,如此一来就能够以比对复杂度o(1)的方式,迅速地根据参考索引值及目标索引值来进行比对。再者,在本发明的部分实施例中,流量表ft0可为通配流量表,亦即在流量表ft0中的流量条目,除了需要比对兴趣规则字段的内容之外,其他规则字段则无须比对皆为符合。举例来说,在图1中,位于流量表ft0的流量条目fe1仅需要分别比对规则字段eth_dst的内容即可,而无须理会规则字段ipv4_dst、ipv6_dst、tcp_dst及udp_dst中的内容,同理,流量条目fe2至fe5则仅分别需要比对规则字段ipv4_dst、ipv6_dst、tcp_dst及udp_dst的内容。在此情况下,由于每一个流量条目的兴趣规则字段并不相同,而不易以哈希的方式来进行比对,因此在本发明的部分实施例中,控制单元110可将封包pck1所涉及的相关规则字段的内容与通配流量表ft0的流量条目所对应的规则内容以线性(linear)的方式进行比对。换言之,本发明的交换器100可以混合的方式来进行比对,在具有特定兴趣规则字段的流量表,如流量表ft1及ft2中,可利用哈希的方式进行快速比对,而在通配流量表,如流量表ft0中,则可利用线性的方式进行比对。如此一来,就能够有效进行流量表比对的过程中,减少流量表的比对次数,进而提升比对效率。图2为本发明一实施例的比对流量表的方法200的流程图,方法200可应用于软件定义网络中的交换器100。方法200可包含步骤s210至s230,但不限定于图2所示的顺序。s210:当软件定义网络中的交换器100接收到封包pck1时,交换器100解析封包pck1的头文件以取得封包pck1所涉及的至少一相关规则字段;s220:根据封包pck1所涉及的至少一相关规则字段及交换器100的流量表ft0至ft2的复数个兴趣规则字段,自流量表ft0至ft2中选择一相关流量表;s230:将封包pck1所涉及的至少一相关规则字段的内容与相关流量表ft1的至少一流量条目所对应的规则内容相比对。在步骤s210中,交换器100可取得封包pck1所涉及的相关规则字段,例如表2所列的规则字段内容,在此情况下,交换器100可在步骤s220中根据封包pck1所涉及的相关规则字段选择其兴趣规则字段与之相符的流量表ft0作为相关流量表,并可于步骤s230中将封包pck1所涉及的相关规则字段的内容与相关流量表ft1的流量条目所对应的规则内容相比对。换言之,在方法200中,交换器100仅需比较兴趣规则字段与相关规则字段相符的相关流量表,亦即封包pck1所涉及的相关规则字段可包含其所有兴趣规则字段的流量表ft1,因此可以减少所需比对的流量条目的数量,进而提升比对效率。此外,在本发明的部分实施例中,在步骤s220中,为了能够迅速选择出相关流量表,步骤s220还可包含步骤s222及步骤s226。图3为本发明一实施例的步骤s220的子步骤s222至s226的流程图。s222:根据封包pck1的相关规则字段建立封包pck1的目标字段向量;s224:根据流量表ft0至ft2的兴趣规则字段建立流量表ft0至ft2的复数个兴趣字段向量;s226:当ft0至ft2流量表中流量表的兴趣字段向量与目标字段向量相匹配时,选择该流量表作为相关流量表。以表3至表5为例,在步骤s222及步骤s224中,交换器100可分别建立封包pck1的目标字段向量以及流量表ft0至ft2的兴趣字段向量,并透过逻辑运算,于步骤s226中迅速地选择出兴趣字段向量与目标字段向量相符的流量表ft1作为相关流量表。此外,为了能够迅速比对相关流量表中的流量条目,在本发明的部分实施例中,步骤s230还可利用哈希来进行比对,亦即交换器100可先根据相关流量表中,每一个流量条目所对应的规则内容以默认的哈希函数计算每一条流量条目的参考索引值,接着再根据封包pck1所涉及的相关规则字段的内容以相同的哈希函数计算封包pck1所对应的目标索引值,如此一来,就能够迅速地取得比对结果。然而在比较通配流量表,例如流量表ft0的流量条目时,由于通配流量表中的流量条目可能会有不同的兴趣规则字段,因此在比对时,可将封包pck1所涉及的相关规则字段的内容与通配流量表ft0的流量条目所对应的规则内容以线性(linear)的方式相比对。也就是说,方法200可以透过混合的方式来进行比对,在具有特定兴趣规则字段的流量表,如流量表ft1及ft2中,可利用哈希的方式进行快速比对,而在通配流量表,如流量表ft0中,则可利用线性的方式进行比对。如此一来,就能够有效进行流量表比对的过程中,减少流量表的比对次数,进而提升比对效率。此外,在本发明的部分实施例中,为了使流量表能够依照其兴趣规则字段分类切割,交换器100可在其复数个流量表中,自预设储存所有流量条目的预设流量表中,将具有特定的至少一兴趣规则字段的至少一待移出流量条目自预设流量表中移除,并建立包含至少一待移出流量条目的新流量表。举例来说,若交换器100是预设将所有流量条目先储存在流量表ft0中,则交换器100可将流量表ft0中具有特定的兴趣规则字段的待移出流量条目fe6至fe8自流量表ft0中移除,并另外建立包含待移出流量条目fe6至fe8的流量表ft1。也就是说,流量表ft1中的所有流量条目都会具有相同的兴趣规则字段。如此一来,方法200就能够依照兴趣规则字段将流量表加以分类切割,以减少需要比对的流量条目。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的权利要求书的涵盖范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1