CN105429879A - 流表项查询方法、设备及系统 - Google Patents

流表项查询方法、设备及系统 Download PDF

Info

Publication number
CN105429879A
CN105429879A CN201410425018.6A CN201410425018A CN105429879A CN 105429879 A CN105429879 A CN 105429879A CN 201410425018 A CN201410425018 A CN 201410425018A CN 105429879 A CN105429879 A CN 105429879A
Authority
CN
China
Prior art keywords
list item
class
stream
type
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410425018.6A
Other languages
English (en)
Other versions
CN105429879B (zh
Inventor
文白林
曾毓珑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Huawei Digital Technologies Co Ltd
Original Assignee
Hangzhou Huawei Digital Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Huawei Digital Technologies Co Ltd filed Critical Hangzhou Huawei Digital Technologies Co Ltd
Priority to CN201410425018.6A priority Critical patent/CN105429879B/zh
Publication of CN105429879A publication Critical patent/CN105429879A/zh
Application granted granted Critical
Publication of CN105429879B publication Critical patent/CN105429879B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种流表项查询方法、设备及系统,属于网络通信领域。包括:接收控制器发送的第一流模型消息,第一流模型消息指示对精确流表的流表项进行批量查询;在精确流表中确定第一流模型消息中的匹配域对应的第一索引表;确定第一索引表的类型,类型为第一类型或第二类型,第二类型为包括第二字段的类型,第一类型为不包括第二字段的类型,第二字段的有效值种类的数量级大于百级;当第一索引表的类型为第一类型,根据匹配域的值和第一索引表,采用二分法查询得到流表项;当第一索引表的类型为第二类型,通过哈希算法查询得到流表项。本发明能够解决批量查询精确流表项时的查询速度较慢的问题。本发明用于流表项查询。

Description

流表项查询方法、设备及系统
技术领域
本发明涉及网络通信领域,特别涉及一种流表项查询方法、设备及系统。
背景技术
软件定义网络是一种将控制平面与转发平面相分离的网络,能使网络管理员集中和自动化管理网络设备,大大降低了网络复杂度。实现软件定义网络的方法有多种,其中Openflow(开放流)是最受关注的方法之一。Openflow是一种进行转发策略控制的核心数据结构,支持Openflow的网络中,交换机能够实现数据层和控制层的分离,每个交换机都配置有流表,用来进行数据包的查找和转发。
现有技术中,基于现场可编程门阵列(英文:Field-ProgrammableGateArray;简称:FPGA)方案实现的交换机,包括三态内容寻址存储器(英文:TernaryContentAddressableMemory;简称:TCAM)和静态随机存储器(英文:StaticRandomAccessMemory;简称:SRAM)两部分流表资源,通过TCAM流表资源和SRAM流表资源设计的9级流表来查找和转发数据包。其中,通配流表存储在TCAM流表资源中,精确流表存储在SRAM流表资源中。每个流表包含多个流表项,为了获取数据包转发的目的端口,采用哈希算法对精确流表项进行查询,采用逐条查找方法对精确流表项进行批量查询。
数据包采用哈希算法查询精确流表项是比较快的,但是当控制器批量查询精确流表项时,由于使用的是逐条查找方法,速度比较慢,特别是当精确流表项记录达到上万条时,遍历整个精确流表的速度是非常慢的,因此精确流表项的查询速度较慢。
发明内容
为了解决批量查询精确流表项时的查询速度较慢的问题,本发明实施例提供了一种流表项查询方法、设备及系统。所述技术方案如下:
第一方面,提供一种流表项查询方法,所述方法包括:
接收控制器发送的第一流模型消息,所述第一流模型消息指示对精确流表的流表项进行批量查询;
在所述精确流表中确定所述第一流模型消息中的匹配域对应的第一索引表;
确定所述第一索引表的类型,所述类型为第一类型或第二类型,所述第二类型为包括第二字段的类型,所述第一类型为不包括所述第二字段的类型,所述第二字段的有效值种类的数量级大于百级;
当所述第一索引表的类型为所述第一类型,根据所述匹配域的值和所述第一索引表,采用二分法查询得到流表项;
当所述第一索引表的类型为所述第二类型,通过哈希算法查询得到流表项。
结合第一方面,在第一种可实现方式中,
所述根据所述匹配域的值和所述第一索引表,采用二分法查询得到流表项,包括:
根据所述匹配域的值,采用二分法对所述第一索引表进行查询;
在所述第一索引表中确定与所述匹配域的值相等的索引值所对应的位置;
获取所述位置记录的流表项作为查询得到的流表项。
结合第一方面,在第二种可实现方式中,
所述在所述精确流表中确定所述第一流模型消息中的匹配域对应的第一索引表,包括:
获取所述第一流模型消息中的匹配域的匹配字段组合;
根据所述匹配字段组合依次查找所述精确流表中建立的各个索引表;
如果某个索引表的匹配域与所述匹配字段组合相同,确定所述索引表为第一索引表。
结合第一方面,在第三种可实现方式中,
在所述接收控制器发送的第一流模型消息之前,所述方法还包括:
接收所述控制器发送的用于指示增加流表项的第二流模型消息,所述第二流模型消息包括第一流表项;
确定所述第一流表项的类型;
当所述第一流表项的类型为通配流表项,将所述第一流表项保存在通配流表中;
当所述第一流表项的类型为精确流表项,将所述第一流表项保存在精确流表中。
结合第三种可实现方式,在第四种可实现方式中,
所述确定所述第一流表项的类型包括:
检测所述第一流表项的匹配域中是否存在掩码;
当所述第一流表项的匹配域中不存在掩码,确定所述第一流表项为精确流表项;
当所述第一流表项的匹配域中存在掩码,确定所述第一流表项为通配流表项。
结合第三种可实现方式或第四种可实现方式,在第五种可实现方式中,
在所述将所述第一流表项保存在精确流表中之后,所述方法还包括:
当所述第一流表项的匹配域字段包括所述第二字段,为所述第一流表项建立第二类型的索引表;
当所述第一流表项的匹配域字段不包括所述第二字段,为所述第一流表项建立第一类型的索引表。
结合第五种可实现方式,在第六种可实现方式中,
在所述为所述第一流表项建立第一类型的索引表之后,所述方法还包括:
采用动态数组方式存储所述第一类型的索引表中的字段值,并将所述字段值作为所述第一类型的索引表的索引值。
结合第一方面,在第七种可实现方式中,
在所述接收控制器发送的第一流模型消息之前,所述方法还包括:
在与所述控制器握手成功之后,向所述控制器上报九级流表;
其中,每级所述流表支持开放流协议定义的所有匹配域,支持所述开放流协议定义的所有动作,每个所述匹配域都支持通配。
第二方面,提供一种流表项查询设备,所述流表项查询设备包括:
第一接收单元,用于接收控制器发送的第一流模型消息,所述第一流模型消息指示对精确流表的流表项进行批量查询;
第一确定单元,用于在所述精确流表中确定所述第一流模型消息中的匹配域对应的第一索引表;
第二确定单元,用于确定所述第一索引表的类型,所述类型为第一类型或第二类型,所述第二类型为包括第二字段的类型,所述第一类型为不包括所述第二字段的类型,所述第二字段的有效值种类的数量级大于百级;
第一获取单元,用于在所述第一索引表的类型为所述第一类型时,根据所述匹配域的值和所述第一索引表,采用二分法查询得到流表项;
第二获取单元,用于在所述第一索引表的类型为所述第二类型时,通过哈希算法查询得到流表项。
结合第二方面,在第一种可实现方式中,
所述第一获取单元,包括:
查询模块,用于根据所述匹配域的值,采用二分法对所述第一索引表进行查询;
第一确定模块,用于在所述第一索引表中确定与所述匹配域的值相等的索引值所对应的位置;
第一获取模块,用于获取所述位置记录的流表项作为查询得到的流表项。
结合第二方面,在第二种可实现方式中,
所述第一确定单元,包括:
第二获取模块,用于获取所述第一流模型消息中的匹配域的匹配字段组合;
查找模块,用于根据所述匹配字段组合依次查找所述精确流表中建立的各个索引表;
第二确定模块,用于在某个索引表的匹配域与所述匹配字段组合相同时,确定所述索引表为第一索引表。
结合第二方面,在第三种可实现方式中,所述流表项查询设备还包括:
第二接收单元,用于接收所述控制器发送的用于指示增加流表项的第二流模型消息,所述第二流模型消息包括第一流表项;
第三确定单元,用于确定所述第一流表项的类型;
第一保存单元,用于在所述第一流表项的类型为通配流表项时,将所述第一流表项保存在通配流表中;
第二保存单元,用于在所述第一流表项的类型为精确流表项时,将所述第一流表项保存在精确流表中。
结合第三种可实现方式,在第四种可实现方式中,
所述第三确定单元,包括:
检测模块,用于检测所述第一流表项的匹配域中是否存在掩码;
第三确定模块,用于在所述第一流表项的匹配域中不存在掩码时,确定所述第一流表项为精确流表项;
第四确定模块,用于在所述第一流表项的匹配域中存在掩码时,确定所述第一流表项为通配流表项。
结合第三种可实现方式或第四种可实现方式,在第五种可实现方式中,
所述流表项查询设备还包括:
第一建立单元,用于在所述第一流表项的匹配域字段包括所述第二字段时,为所述第一流表项建立第二类型的索引表;
第二建立单元,用于在所述第一流表项的匹配域字段不包括所述第二字段时,为所述第一流表项建立第一类型的索引表。
结合第五种可实现方式,在第六种可实现方式中,
所述流表项查询设备还包括:
存储单元,用于采用动态数组方式存储所述第一类型的索引表中的字段值,并将所述字段值作为所述第一类型的索引表的索引值。
结合第二方面,在第七种可实现方式中,
所述流表项查询设备还包括:
上报单元,用于在与所述控制器握手成功之后,向所述控制器上报九级流表;
其中,每级所述流表支持开放流协议定义的所有匹配域,支持所述开放流协议定义的所有动作,每个所述匹配域都支持通配。
第三方面,提供一种流表项查询系统,包括:
第二方面任一所述的流表项查询设备;
以及控制器和终端。
本发明提供了一种流表项查询方法、设备及系统,由于能够在精确流表中确定流模型消息中的匹配域对应的索引表,并根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种流表项查询方法所涉及的流表项查询系统的结构示意图;
图2是本发明实施例提供的一种流表项查询方法的流程图;
图3是本发明实施例提供的另一种流表项查询方法的流程图;
图4是本发明实施例提供的九级流表的划分图;
图5是本发明实施例提供的一种流表项查询方法所涉及的确定第一流表项的类型,并建立相应的索引表方法的流程图;
图6是本发明实施例提供的第一类型的索引表存储图;
图7是本发明实施例提供的一种流表项查询方法所涉及的根据第一流模型消息中的匹配域字段查询相应的第一索引表方法的流程图;
图8是本发明实施例提供的一种流表项查询方法所涉及的根据匹配域的值和第一索引表,采用二分法查询得到流表项方法的流程图;
图9是本发明实施例提供的二分法查询示意图;
图10是本发明实施例提供的一种流表项查询设备的结构示意图;
图11是本发明实施例提供的另一种流表项查询设备的结构示意图;
图12是本发明实施例提供的一种流表项查询设备的第一获取单元的结构示意图;
图13是本发明实施例提供的一种流表项查询设备的第一确定单元的结构示意图;
图14是本发明实施例提供的一种流表项查询设备的第三确定单元的结构示意图;
图15是本发明实施例提供的又一种流表项查询设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1示出了一种流表项查询方法所涉及的流表项查询系统00的结构示意图,该流表项查询系统00为支持Openflow的系统,包括:交换机001,控制器002,终端003。交换机001是Openflow网络的核心部件之一,主要管理数据层的转发。交换机001配置有流表,用来进行终端003的数据包的查找和转发。交换机001接收到终端003的数据包之后,首先查询本地的流表来处理数据包,如果没有与数据包匹配的流表,则把数据包转发给控制器002,由控制层决定如何处理。每个流表包含多个流表项,通过查询流表中的流表项进行数据包的查找与转发。
本发明实施例提供一种流表项查询方法,如图2所示,应用于如图1所示的流表项查询系统00,该方法包括:
步骤201、接收控制器发送的第一流模型消息,第一流模型消息指示对精确流表的流表项进行批量查询。
步骤202、在精确流表中确定第一流模型消息中的匹配域对应的第一索引表。
步骤203、确定第一索引表的类型,该类型为第一类型或第二类型,第二类型为包括第二字段的类型,第一类型为不包括第二字段的类型,第二字段的有效值种类的数量级大于百级。
步骤204、当第一索引表的类型为第一类型,根据匹配域的值和第一索引表,采用二分法查询得到流表项。
步骤205、当第一索引表的类型为第二类型,通过哈希算法查询得到流表项。
综上所述,本发明实施例提供的流表项查询方法,由于能够在精确流表中确定流模型消息中的匹配域对应的索引表,并根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
进一步的,在步骤201之前,该方法还可以包括:
接收控制器发送的用于指示增加流表项的第二流模型消息,第二流模型消息包括第一流表项;确定第一流表项的类型;当第一流表项的类型为通配流表项,将第一流表项保存在通配流表中;当第一流表项的类型为精确流表项,将第一流表项保存在精确流表中。
其中,确定第一流表项的类型可以包括:
检测第一流表项的匹配域中是否存在掩码;当第一流表项的匹配域中不存在掩码,确定第一流表项为精确流表项;当第一流表项的匹配域中存在掩码,确定第一流表项为通配流表项。
将第一流表项保存在通配流表中之后,该方法还可以包括:
当第一流表项的匹配域字段包括第二字段,为第一流表项建立第二类型的索引表;当第一流表项的匹配域字段不包括第二字段,为第一流表项建立第一类型的索引表。
为第一流表项建立第一类型的索引表之后,该方法还可以包括:
采用动态数组方式存储所述第一类型的索引表中的字段值,并将所述字段值作为所述第一类型的索引表的索引值。
在步骤201之前,该方法还可以包括:
在与控制器握手成功之后,向控制器上报九级流表;其中,每级流表支持开放流协议定义的所有匹配域,支持开放流协议定义的所有动作,每个匹配域都支持通配。
需要说明的是,步骤202具体可以包括:
获取第一流模型消息中的匹配域的匹配字段组合;根据匹配字段组合依次查找精确流表中建立的各个索引表;如果某个索引表的匹配域与匹配字段组合相同,确定索引表为第一索引表。
步骤204具体可以包括:
根据匹配域的值,采用二分法对第一索引表进行查询;在第一索引表中确定与匹配域的值相等的索引值所对应的位置;获取位置记录的流表项作为查询得到的流表项。
综上所述,本发明实施例提供的流表项查询方法,由于能够在精确流表中确定流模型消息中的匹配域对应的索引表,并根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
本发明实施例提供一种流表项查询方法,可以应用于图1所示的流表项查询系统,本发明实施例假设第二字段为B类字段,该B类字段指的是流表项匹配域中有效值种类的数量级大于百级的字段,有效值指的是常使用的值。如图3所示,该方法包括:
步骤301、交换机在与控制器握手成功之后,向控制器上报九级流表。
其中,每级流表支持开放流协议定义的所有匹配域,支持开放流协议定义的所有动作,每个匹配域都支持通配。交换机与控制器握手即建立连接的过程,具体可以包括:控制器与交换机互相发送版本协商消息,该消息中携带发送方支持的最高协议版本号,接收方将采用双方都支持的最低协议版本进行通信,如果发现双方拥有共同支持的协议版本,则建立连接,表示交换机与控制器握手成功。
需要说明的是,每个交换机设置有一张流表,该流表用于进行数据包的查找和转发。交换机可以通过Openflow协议经过一个安全通道连接到控制器上,对流表进行查询和管理。其中,安全通道是连接交换机到控制器的接口,控制器通过这个接口控制和管理交换机。Openflow协议是用来描述控制器和交换机之间交互信息的标准,以及控制器和交换机的接口标准。流表是交换机进行转发策略控制的核心数据结构,交换芯片通过查询流表项来决策对进入交换机的网络流量采取合适的行为。而为了降低交换机的成本,并扩展其所支持的流条目的数量,在Openflow中提出了九级流表的概念,该九级流表是结合TCAM资源和SRAM资源的特性设计的,因为TCAM资源支持流表的通配查找,支持流表的匹配域有限,容量也有限,而SRAM资源支持精确查找。其中,通配流表存储在TCAM中,支持约1000条流表项,精确流表存储在SRAM中,支持约3万条流表项,该九级流表中每个流表都有编号,其中表0,表1,表6和表8为通配流表项,表2,表3,表4,表5和表7为精确流表项,并且每个流表支持的匹配域都不相同,九级流表划分如图4所示。
步骤302、控制器向交换机发送用于指示增加流表项的第二流模型消息,第二流模型消息包括第一流表项。
当交换机收到一个数据包后,会查询流表,判断是否存在与数据包相匹配的流表项,如果流表中有与数据包相匹配的流表项,则交换机按照流表项所指示的行动列表来处理数据包;如果流表中没有与数据包相匹配的流表项,则交换机会将数据包封装在数据包上报消息中,然后发送给控制器来处理,此时,数据包会被缓存在交换机中等待处理。当控制器收到数据包上报消息后,可以发送流模型消息向交换机添加一个与该数据包相关的流表项,并且指定该数据包按照添加的流表项的行动列表来处理。
控制器收到交换机发送的数据包上报消息后,还可以判断数据包的目的媒体访问控制(英文:MediaAccessControl;简称:MAC)地址是否为网关MAC地址,根据判断结果来产生不同类型的流表项。如果数据包的目的MAC地址不是网关的MAC地址,则产生二层转发的流表项,流表项的动作只有转发,没有数据包修改;如果数据包的目的MAC地址是网关MAC地址,则产生三层路由的流表项,流表项的动作除了转发,还有修改数据包的源MAC地址和目的MAC地址等动作。
Openflow协议中定义交换机支持的流表项的结构包括:匹配域,优先级,计数器,指令,超时,和流表项标识符。其中,匹配域包含对数据包进行匹配的字段,优先级表示流表项的匹配次序,计数器用于更新匹配数据包的计数,指令用来修改动作集合和流水线的处理过程,超时用于表示流表老化的时间,流表项标识符用于标识流表项的唯一性。示例的,上述控制器产生二层转发的流表项匹配域可以包括入端口,帧类型,源MAC地址,目的MAC地址和虚拟局域网标识(英文:VirtualLocalAreaNetworkIDentity;简称:VLANID);产生三层路由的流表项匹配域可以包括源网协(英文:InternetProtocol;简称:IP)地址,目的IP地址,IP差分服务代码点(英文:DifferentiatedServicesCodePoint;简称:DSCP)和IP显示拥塞通告(英文:ExplicitCongestionNotification;简称:ECN)等。
步骤303、交换机确定第一流表项的类型,并建立相应的索引表。
交换机收到第二流模型消息后,因为第二流模型消息包括第一流表项,如图5所示,则步骤303具体可以包括:
步骤3031、交换机获取第一流表项。
第一流表项结构包括:匹配域,优先级,计数器,指令,超时等。其中,匹配域包含对数据包进行匹配的字段。示例的,匹配域的字段可以是in_port(输入端口),src_mac(源MAC地址),eth_type(以太网类型),ip_proto(IP协议)等。
步骤3032、交换机检测第一流表项的匹配域中是否存在掩码。当第一流表项的匹配域中存在掩码,执行步骤3033,当第一流表项的匹配域中不存在掩码,执行步骤3035。
当交换机收到第二流模型消息后,判断第二流模型消息中的第一流表项的匹配域是否有某个匹配域存在掩码。第二流模型消息用来添加、删除、修改Openflow交换机的流表信息,示例的,可以用来添加一条新的流表项,可以用来删除所有符合一定条件的流表项,可以用来删除某一条指定的流表项,可以用来删除所有符合一定条件的流表项,也可以用来修改某一条指定的流表项。具有多功能的第二流模型消息也是按照一定的格式来增加或删除流表项的,例如第二流模型消息中包含有流表的匹配域,控制器定义的流表项标识符,流表项的空闲超时时间,流表项的最大生存时间,流表项的优先级,动作列表处理等。因此可以通过判断流表项中的匹配域是否存在掩码确定流表项的类型。
步骤3033、交换机确定第一流表项为通配流表项。执行步骤3034。
当第一流表项的匹配域中存在掩码,则可以确定第一流表项为通配流表项。
步骤3034、交换机将第一流表项保存在通配流表中。
通过判断第一流表项的类型,将确定之后的通配流表项保存在通配流表中。通配流表支持的查询方式是通配法查询,通配法查询针对于流表中的匹配域来说是非常灵活的,因此控制器可以对通配表下发任意几个匹配域。
步骤3035、交换机确定第一流表项为精确流表项。执行步骤3036。
当第一流表项的匹配域中不存在掩码,则可以确定第一流表项为精确流表项。
示例的,假设第一流表项的匹配域为:in_port,src_mac,eth_type,ip_proto。如果所有的匹配域都不存在掩码,那么该第一流表项为精确流表项;如果所有的匹配域中有一个存在掩码,那么该第一流表项为通配流表项。
步骤3036、交换机将第一流表项保存在精确流表中。执行步骤3037。
通过判断第一流表项的类型,将确定之后的精确流表项保存在精确流表中。精确流表支持的查询方式是精确法查询。精确法查询针对于流表中的匹配域来说是固定不变的,控制器下发流表项时必须严格按照精确流表的匹配域下发流表项,不能多一个匹配域,也不能少一个匹配域。示例的,如果该第一流表项是精确流表项,保存在精确流表中,并且该精确流表支持的匹配域是源IP地址和目的IP地址,那么控制器对该精确流表下发流表项时,流表项修改消息的匹配域必须是源IP地址和目的IP地址。
步骤3037、交换机判断第一流表项的匹配域字段是否包括B类字段。当第一流表项的匹配域字段包括B类字段,执行步骤3038,当第一流表项的匹配域字段不包括B类字段,执行步骤3039。
本发明实施例中可以假设第一流表项匹配域中有效值种类的数量级大于百级的字段为B类字段。该有效值指的是常使用的值。示例的,如源IP地址经常使用的数量远远超过百级数量,因此可以将源IP地址作为B类字段,同样,目的IP地址也可以作为B类字段。
步骤3038、交换机为第一流表项建立第二类型的索引表。执行步骤304。
当第一流表项的匹配域字段包括B类字段,为第一流表项建立第二类型的索引表。示例的,如果该匹配域字段为eth_type+dst_mac(目的MAC地址),因为目前使用的eth_type的有效值是几十种,而dst_mac的有效值大于百级数量,可以作为B类字段,所以为该匹配域字段对应的第一流表项建立第二类型的索引表。
步骤3039、交换机为第一流表项建立第一类型的索引表。执行步骤3040。
当第一流表项的匹配域字段不包括B类字段,为第一流表项建立第一类型的索引表。示例的,如果该匹配域字段为eth_type+in_port,因为eth_type的有效值是几十种,不属于B类字段,而一个交换机上的in_port的有效值是一百多个,也不属于B类字段,所以该第一流表项的匹配域字段不包括B类字段,因此为包含字段为eth_type+in_port的第一流表项建立第一类型的索引表。
步骤3040、交换机采用动态数组方式存储第一类型的索引表中的字段值,并将字段值作为第一类型的索引表的索引值。执行步骤304。
当第一流表项的匹配域字段不包括B类字段,为第一流表项建立第一类型的索引表时可以采用动态数组方式存储第一类型的索引表中的字段值。动态数组指的是长度可以自由变化的数组,当索引表中字段值的具体数量不确定时,就可以采用动态数组来存储字段值。示例的,对于第一流表项的匹配域字段eth_type来说,因为该匹配域字段不包括B类字段,所以为第一流表项建立第一类型的索引表。假设字段eth_type对应的值分别是0x800,0x806,0x8100,0x8299,0x8337,0x8827等,那么为第一流表项建立第一类型的索引表,该索引表对应的数组的0号位置存储0x800,1号位置存储0x806,2号位置存储0x8100,3号位置存储0x8299,4号位置存储0x8337,5号位置存储0x8827,后面的数组元素依次类推。每个位置对应一个记录链表,该记录链表是与该位置的字段值相关的所有精确流表项,第一类型的索引表存储图如图6所示。
需要说明的是,如果交换机确定的第一流表项为精确流表项,并且该精确流表项的匹配域有n个匹配字段,那么给该精确流表项创建的索引表数量可以通过排列组合公式得到,该排列组合公式为:
N = C n 1 + C n 2 + . . . + C n n - 1 - - - ( 1 )
其中,N表示为精确流表项创建的索引表数量。
示例的,交换机确定的精确流表项有3个匹配字段,分别是in_port,eth_type和dst_mac,那么为该精确流表项创建的索引表数量创建的索引表及索引表所对应的类型如表1所示:
表1
索引表的表号 索引表的字段 索引表的类型
1 in_port 第一类型
2 eth_type 第一类型
3 dst_mac 第二类型
4 in_port+eth_type 第一类型
5 in_port+dst_mac 第二类型
6 eth_type+dst_mac 第二类型
如表1所示,4号索引表的字段是in_port+eth_type,两个字段都不是B类字段,因此4号索引表是第一类型的索引表,且采用动态数组方式存储in_port字段和eth_type字段的值,并将字段值作为第一类型的索引表的索引值;5号索引表的字段是in_port+dst_mac,其中,dst_mac字段是B类字段,因此5号索引表是第二类型的索引表。
还需要说明的是,存储第一类型的索引表和存储第二类型的索引表的结构体中的match字段都是采用位图方式来表示是否支持某个字段。一个bit位表示一个字段。bit位为1表示支持此匹配字段。bit位为0表示不支持此匹配字段。存储第一类型的索引表和存储第二类型的索引表的结构体如下所示。需要说明的是,A表示第一类型的索引表,B表示第二类型的索引表。
步骤304、交换机接收控制器发送的第一流模型消息,该第一流模型消息指示对精确流表的流表项进行批量查询。
控制器对交换机下发流表项的模式分为主动模式和被动模式,在主动模式下,控制器将自己收集的流表项信息主动下发给交换机,随后交换机可以直接根据流表项进行查询;被动模式是指交换机流表中没有与数据包相匹配的流表项时,交换机与控制器进行通信,并由控制器决定如何处理数据包,并下发相应的流表项。其中,被动模式好处是交换机不需用维护全部的流表项,只有产生实际的流量时,才向控制器获取流表项并进行存储,当流表项中的老化定时器超时后,就可以删除相应的流表项,以便节省TCAM空间。因此,在对交换机中的流表项进行修改或删除时,首先需要批量查询相应的流表项,而修改或删除流表项的消息是由控制器通过第一流模型消息与交换机进行通信的。
步骤305、交换机在精确流表中确定第一流模型消息中的匹配域对应的第一索引表。
当交换机收到控制器发送的第一流模型消息后,根据第一流模型消息中的匹配域字段查询相应的第一索引表。如图7所示,步骤305具体可以包括:
步骤3051、交换机获取第一流模型消息中的匹配域的匹配字段组合。
第一流模型消息中的匹配域的匹配字段组合指的是匹配域中的所有匹配字段。示例的,如果匹配域中的匹配字段是in_port,那么匹配域的匹配字段组合是in_port;如果匹配域中的匹配字段是in_port和dst_mac,那么匹配域的匹配字段组合是in_port+dst_mac。
步骤3052、交换机根据匹配字段组合依次查找精确流表中建立的各个索引表。
精确流表中建立的各个索引表分为第一类型索引表和第二类型索引表,根据第一流模型消息中的匹配域的匹配字段组合顺序查找精确流表中建立的各个索引表。
步骤3053、如果某个索引表的匹配域与匹配字段组合相同,交换机确定索引表为第一索引表。
示例的,假设第一流模型消息中的匹配域字段组合是eth_type。精确流表中建立的各个索引表如表1所示,由表1可知,2号索引表的的字段是eth_type,且与第一流模型消息中的匹配域字段组合是相同的,因此可以确定2号索引表为第一索引表。
步骤306、交换机判断第一索引表的类型是否为第一类型,当第一索引表的类型为第一类型,执行执行步骤307,当第一索引表的类型不为第一类型,即第一索引表的类型为第二类型,执行步骤308。
需要说明的是,第二类型为包括B类字段的类型,第一类型为不包括B类字段的类型,B类字段的有效值种类的数量级大于百级。示例的,假设第一流模型消息中的匹配域字段组合是eth_type,由表1可知2号索引表为第一索引表,且第一索引表的类型为第一类型。
步骤307、交换机根据匹配域的值和第一索引表,采用二分法查询得到流表项。
交换机判断第一索引表的类型为第一类型后,根据第一流模型消息中的匹配域字段的值和第一索引表,采用二分法查询得到精确流表项。
因为第一索引表中的值是使用动态数组方式存储的,数组中每个元素表示匹配域的字段值。而二分法查询就是对存储在该数组的字段值进行查询,需要说明的是,使用二分法对数组进行查询,数组中的字段值是需要事先排好序的,具体查询方式为:确定该数组的中间位置;将查询的字段值与数组中间位置对应的字段值进行比较,若相等,则查询成功,返回该位置,获取该位置对应的值;否则确定新的查询区域,继续二分法查询。确定新的查询区域的方法可以包括:当查询的字段值大于数组中间位置对应的字段值,则可以确定新的查询区域为数组中间位置到最后一个位置;当查询的字段值小于数组中间位置对应的字段值,则可以确定新的查询区域为数组的第一个位置到中间位置。因此,二分法查询时,每次将查询字段值与中间位置的字段值进行比较,可以确定是否查询成功,如果不成功,则将当前查询区域缩小一半,递归查询即可。
如图8所示,步骤307具体可以包括:
步骤3071、交换机根据匹配域的值,采用二分法对第一索引表进行查询。
步骤3072、交换机在第一索引表中确定与匹配域的值相等的索引值所对应的位置。
步骤3073、交换机获取位置记录的流表项作为查询得到的流表项。
示例的,假设第一流模型消息中的匹配域字段组合是eth_type,且字段值为0x806,由表1可知2号索引表为第一索引表,且第一索引表的类型为第一类型。根据匹配域的值eth_type和2号索引表,假设2号索引表对应的数组的0号位置存储0x800,1号位置存储0x806,2号位置存储0x8100,3号位置存储0x8299,4号位置存储0x8337。采用二分法查询得到流表项的过程可以包括:首先确定2号索引表对应的数组的中间位置是2号位置,则将第一流模型消息中的匹配域字段值0x806与2号位置上的字段值0x8100相比较,因为0x806小于0x8100,所以确定新的查询区域,且新的查询区域为数组的0号位置到2号位置;然后确定新的查询区域的中间位置为1号位置,则将第一流模型消息中的匹配域字段值0x806与1号位置上的字段值0x806相比较,因为两个字段值相等,所以查询成功,返回1号位置,获取1号位置对应的字段数值;最后获取1号位置对应一个记录链表,该记录链表是与1号位置的字段值0x806相关的所有精确流表项。二分法查询示意图如图9所示。
步骤308、交换机通过哈希算法查询得到流表项。
交换机判断第一索引表的类型为第二类型后,把第一流模型消息的匹配域字段的值进行哈希计算,获得哈希桶的索引,再在索引冲突链表中依次比较匹配域的具体内容,其内容完全相同的记录保存到结果中。
需要说明的是,哈希算法是需要首先定义一个大的有序结构数组,然后利用哈希函数将需要存储的内容的关键值转换为这个有序结构数组中的某个值,在被存储内容和有序数组之间建立了映射关系,因此对这个值进行查询时,只要使用同一个哈希函数对关键字进行转换,就可以找到这个数组值。
示例的,对于准备存放匹配域字段的有序结构数组,先编写一个哈希函数,该哈希函数可以是直接寻址法,数字分析法,平方取中法,折叠法,随机数法,除留余数法中的任意一个。该哈希函数可以将这些做为关键值的字段值转换为有序结构数组中的某个下标值,即有序结构数组的位置,通过字段值与有序结构数组之间的映射关系,将所有字段值存储在有序结构数组中。查询时使用哈希函数得到有序结构数组的位置,获取对应的字段值。假如dst_ip(目的IP地址)字段值经过哈希函数得到的结果为5,那么dst_ip字段值存储在有序结构数组中的第5号位置,查询时,再次将dst_ip字段值经过哈希函数得到5,获取哈希桶的索引,因此就可以查询到dst_ip字段值的所有相关信息。如果dst_ip字段值和scr_ip(源IP地址)字段值经过哈希函数得到的结果都是5,则将dst_ip字段值和scr_ip字段值存储在索引冲突链表中,然后再在索引冲突链表中依次比较匹配域的字段值,将索引冲突链表中与dst_ip字段值完全相同的记录保存到结果中。
综上所述,本发明实施例提供的流表项查询方法,由于能够在精确流表中确定流模型消息中的匹配域对应的索引表,并根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
本发明实施例提供一种流表项查询设备70,该流表项查询设备70用于交换机,如图10所示,该流表项查询设备70包括:
第一接收单元701,第一确定单元702,第二确定单元703,第一获取单元704和第二获取单元705。
第一接收单元701,用于接收控制器发送的第一流模型消息,第一流模型消息指示对精确流表的流表项进行批量查询。
第一确定单元702,用于在精确流表中确定第一流模型消息中的匹配域对应的第一索引表。
第二确定单元703,用于确定第一索引表的类型,类型为第一类型或第二类型,第二类型为包括第二字段的类型,第一类型为不包括第二字段的类型,第二字段的有效值种类的数量级大于百级。
第一获取单元704,用于在第一索引表的类型为第一类型时,根据匹配域的值和第一索引表,采用二分法查询得到流表项。
第二获取单元705,用于在第一索引表的类型为第二类型时,通过哈希算法查询得到流表项。
综上所述,本发明实施例提供的流表项查询设备,由于第一确定单元能够在精确流表中确定流模型消息中的匹配域对应的索引表,第一获取单元和第二获取单元根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
本发明实施例提供另一种流表项查询设备70,该流表项查询设备70用于交换机,如图11所示,该流表项查询设备70包括:
第一接收单元701,第一确定单元702,第二确定单元703,第一获取单元704,第二获取单元705,第二接收单元706,第三确定单元707,第一保存单元708,第二保存单元709,第一建立单元710,第二建立单元711,存储单元712和上报单元713。
第一接收单元701,用于接收控制器发送的第一流模型消息,第一流模型消息指示对精确流表的流表项进行批量查询。
第一确定单元702,用于在精确流表中确定第一流模型消息中的匹配域对应的第一索引表。
第二确定单元703,用于确定第一索引表的类型,类型为第一类型或第二类型,第二类型为包括第二字段的类型,第一类型为不包括第二字段的类型,第二字段的有效值种类的数量级大于百级。
第一获取单元704,用于在第一索引表的类型为第一类型时,根据匹配域的值和第一索引表,采用二分法查询得到流表项。
第二获取单元705,用于在第一索引表的类型为第二类型时,通过哈希算法查询得到流表项。
第二接收单元706,用于接收控制器发送的用于指示增加流表项的第二流模型消息,第二流模型消息包括第一流表项。
第三确定单元707,用于确定第一流表项的类型。
第一保存单元708,用于在第一流表项的类型为通配流表项时,将第一流表项保存在通配流表中。
第二保存单元709,用于在第一流表项的类型为精确流表项时,将第一流表项保存在精确流表中。
第一建立单元710,用于在第一流表项的匹配域字段包括第二字段时,为第一流表项建立第二类型的索引表;
第二建立单元711,用于在第一流表项的匹配域字段不包括第二字段时,为第一流表项建立第一类型的索引表。
存储单元712,用于采用动态数组方式存储第一类型的索引表中的字段值,并将字段值作为第一类型的索引表的索引值。
上报单元713,用于在与控制器握手成功之后,向控制器上报九级流表。其中,每级流表支持开放流协议定义的所有匹配域,支持开放流协议定义的所有动作,每个匹配域都支持通配。
如图12所示,第一获取单元704,包括:
查询模块7041,第一确定模块7042和第一获取模块7043。
查询模块7041,用于根据匹配域的值,采用二分法对第一索引表进行查询。
第一确定模块7042,用于在第一索引表中确定与匹配域的值相等的索引值所对应的位置。
第一获取模块7043,用于获取位置记录的流表项作为查询得到的流表项。
如图13所示,第一确定单元702,包括:
第二获取模块7021,查找模块7022和第二确定模块7023。
第二获取模块7021,用于获取第一流模型消息中的匹配域的匹配字段组合。
查找模块7022,用于根据匹配字段组合依次查找精确流表中建立的各个索引表。
第二确定模块7023,用于在某个索引表的匹配域与匹配字段组合相同时,确定索引表为第一索引表。
如图14所示,第三确定单元707,包括:
检测模块7071,第三确定模块7072和第四确定模块7073。
检测模块7071,用于检测第一流表项的匹配域中是否存在掩码。
第三确定模块7072,用于在第一流表项的匹配域中不存在掩码时,确定第一流表项为精确流表项。
第四确定模块7073,用于在第一流表项的匹配域中存在掩码时,确定第一流表项为通配流表项。
综上所述,本发明实施例提供的流表项查询设备,由于第一确定单元能够在精确流表中确定流模型消息中的匹配域对应的索引表,第一获取单元和第二获取单元根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
本发明实施例提供一种流表项查询系统,包括:如图10或图11所示的流表项查询设备;以及控制器和终端。
本发明实施例提供一种流表项查询设备80,如图15所示,该流表项查询设备80包括:
接收机801,用于接收控制器发送的第一流模型消息,第一流模型消息指示对精确流表的流表项进行批量查询。
处理器802,用于在精确流表中确定第一流模型消息中的匹配域对应的第一索引表。
处理器802还用于确定第一索引表的类型,类型为第一类型或第二类型,第二类型为包括第二字段的类型,第一类型为不包括第二字段的类型,第二字段的有效值种类的数量级大于百级。
处理器802还用于在第一索引表的类型为第一类型时,根据匹配域的值和第一索引表,采用二分法查询得到流表项。
处理器802还用于在第一索引表的类型为第二类型时,通过哈希算法查询得到流表项。
综上所述,本发明实施例提供的流表项查询设备,由于处理器能够在精确流表中确定流模型消息中的匹配域对应的索引表,并根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
处理器802具体用于:根据匹配域的值,采用二分法对第一索引表进行查询;在第一索引表中确定与匹配域的值相等的索引值所对应的位置;获取位置记录的流表项作为查询得到的流表项。
处理器802具体用于:获取第一流模型消息中的匹配域的匹配字段组合;根据匹配字段组合依次查找精确流表中建立的各个索引表;如果某个索引表的匹配域与匹配字段组合相同,确定索引表为第一索引表。
处理器802具体用于:接收控制器发送的用于指示增加流表项的第二流模型消息,第二流模型消息包括第一流表项;确定第一流表项的类型;当第一流表项的类型为通配流表项,将第一流表项保存在通配流表中;当第一流表项的类型为精确流表项,将第一流表项保存在精确流表中。
处理器802具体用于:检测第一流表项的匹配域中是否存在掩码;当第一流表项的匹配域中不存在掩码,确定第一流表项为精确流表项;当第一流表项的匹配域中存在掩码,确定第一流表项为通配流表项。
处理器802具体用于:当第一流表项的匹配域字段包括第二字段,为第一流表项建立第二类型的索引表;当第一流表项的匹配域字段不包括第二字段,为第一流表项建立第一类型的索引表。
处理器802具体用于:采用动态数组方式存储第一类型的索引表中的字段值,并将字段值作为第一类型的索引表的索引值。
处理器802具体用于:在与控制器握手成功之后,向控制器上报九级流表;其中,每级流表支持开放流协议定义的所有匹配域,支持开放流协议定义的所有动作,每个匹配域都支持通配。
综上所述,本发明实施例提供的流表项查询设备,由于处理器能够在精确流表中确定流模型消息中的匹配域对应的索引表,并根据索引表的类型,采用二分法查询或哈希算法批量查询流表项,相较于现有的批量查询流表项时采用的逐条查询,该查询方法的速度更快。因此,在流表项批量查询过程中,提高了精确流表项的查询速度。
本发明实施例提供一种流表项查询系统,包括:如图15所示的流表项查询设备;以及控制器和终端。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (17)

1.一种流表项查询方法,其特征在于,所述方法包括:
接收控制器发送的第一流模型消息,所述第一流模型消息指示对精确流表的流表项进行批量查询;
在所述精确流表中确定所述第一流模型消息中的匹配域对应的第一索引表;
确定所述第一索引表的类型,所述类型为第一类型或第二类型,所述第二类型为包括第二字段的类型,所述第一类型为不包括所述第二字段的类型,所述第二字段的有效值种类的数量级大于百级;
当所述第一索引表的类型为所述第一类型,根据所述匹配域的值和所述第一索引表,采用二分法查询得到流表项;
当所述第一索引表的类型为所述第二类型,通过哈希算法查询得到流表项。
2.根据权利要求1所述的方法,其特征在于,
所述根据所述匹配域的值和所述第一索引表,采用二分法查询得到流表项,包括:
根据所述匹配域的值,采用二分法对所述第一索引表进行查询;
在所述第一索引表中确定与所述匹配域的值相等的索引值所对应的位置;
获取所述位置记录的流表项作为查询得到的流表项。
3.根据权利要求1所述的方法,其特征在于,
所述在所述精确流表中确定所述第一流模型消息中的匹配域对应的第一索引表,包括:
获取所述第一流模型消息中的匹配域的匹配字段组合;
根据所述匹配字段组合依次查找所述精确流表中建立的各个索引表;
如果某个索引表的匹配域与所述匹配字段组合相同,确定所述索引表为第一索引表。
4.根据权利要求1所述的方法,其特征在于,在所述接收控制器发送的第一流模型消息之前,所述方法还包括:
接收所述控制器发送的用于指示增加流表项的第二流模型消息,所述第二流模型消息包括第一流表项;
确定所述第一流表项的类型;
当所述第一流表项的类型为通配流表项,将所述第一流表项保存在通配流表中;
当所述第一流表项的类型为精确流表项,将所述第一流表项保存在精确流表中。
5.根据权利要求4所述的方法,其特征在于,所述确定所述第一流表项的类型包括:
检测所述第一流表项的匹配域中是否存在掩码;
当所述第一流表项的匹配域中不存在掩码,确定所述第一流表项为精确流表项;
当所述第一流表项的匹配域中存在掩码,确定所述第一流表项为通配流表项。
6.根据权利要求4或5所述的方法,其特征在于,在所述将所述第一流表项保存在精确流表中之后,所述方法还包括:
当所述第一流表项的匹配域字段包括所述第二字段,为所述第一流表项建立第二类型的索引表;
当所述第一流表项的匹配域字段不包括所述第二字段,为所述第一流表项建立第一类型的索引表。
7.根据权利要求6所述的方法,其特征在于,在所述为所述第一流表项建立第一类型的索引表之后,所述方法还包括:
采用动态数组方式存储所述第一类型的索引表中的字段值,并将所述字段值作为所述第一类型的索引表的索引值。
8.根据权利要求1所述的方法,其特征在于,在所述接收控制器发送的第一流模型消息之前,所述方法还包括:
在与所述控制器握手成功之后,向所述控制器上报九级流表;
其中,每级所述流表支持开放流协议定义的所有匹配域,支持所述开放流协议定义的所有动作,每个所述匹配域都支持通配。
9.一种流表项查询设备,其特征在于,所述流表项查询设备包括:
第一接收单元,用于接收控制器发送的第一流模型消息,所述第一流模型消息指示对精确流表的流表项进行批量查询;
第一确定单元,用于在所述精确流表中确定所述第一流模型消息中的匹配域对应的第一索引表;
第二确定单元,用于确定所述第一索引表的类型,所述类型为第一类型或第二类型,所述第二类型为包括第二字段的类型,所述第一类型为不包括所述第二字段的类型,所述第二字段的有效值种类的数量级大于百级;
第一获取单元,用于在所述第一索引表的类型为所述第一类型时,根据所述匹配域的值和所述第一索引表,采用二分法查询得到流表项;
第二获取单元,用于在所述第一索引表的类型为所述第二类型时,通过哈希算法查询得到流表项。
10.根据权利要求9所述的设备,其特征在于,
所述第一获取单元,包括:
查询模块,用于根据所述匹配域的值,采用二分法对所述第一索引表进行查询;
第一确定模块,用于在所述第一索引表中确定与所述匹配域的值相等的索引值所对应的位置;
第一获取模块,用于获取所述位置记录的流表项作为查询得到的流表项。
11.根据权利要求9所述的设备,其特征在于,
所述第一确定单元,包括:
第二获取模块,用于获取所述第一流模型消息中的匹配域的匹配字段组合;
查找模块,用于根据所述匹配字段组合依次查找所述精确流表中建立的各个索引表;
第二确定模块,用于在某个索引表的匹配域与所述匹配字段组合相同时,确定所述索引表为第一索引表。
12.根据权利要求9所述的设备,其特征在于,所述流表项查询设备还包括:
第二接收单元,用于接收所述控制器发送的用于指示增加流表项的第二流模型消息,所述第二流模型消息包括第一流表项;
第三确定单元,用于确定所述第一流表项的类型;
第一保存单元,用于在所述第一流表项的类型为通配流表项时,将所述第一流表项保存在通配流表中;
第二保存单元,用于在所述第一流表项的类型为精确流表项时,将所述第一流表项保存在精确流表中。
13.根据权利要求12所述的设备,其特征在于,所述第三确定单元,包括:
检测模块,用于检测所述第一流表项的匹配域中是否存在掩码;
第三确定模块,用于在所述第一流表项的匹配域中不存在掩码时,确定所述第一流表项为精确流表项;
第四确定模块,用于在所述第一流表项的匹配域中存在掩码时,确定所述第一流表项为通配流表项。
14.根据权利要求12或13所述的设备,其特征在于,所述流表项查询设备还包括:
第一建立单元,用于在所述第一流表项的匹配域字段包括所述第二字段时,为所述第一流表项建立第二类型的索引表;
第二建立单元,用于在所述第一流表项的匹配域字段不包括所述第二字段时,为所述第一流表项建立第一类型的索引表。
15.根据权利要求14所述的设备,其特征在于,所述流表项查询设备还包括:
存储单元,用于采用动态数组方式存储所述第一类型的索引表中的字段值,并将所述字段值作为所述第一类型的索引表的索引值。
16.根据权利要求9所述的设备,其特征在于,所述流表项查询设备还包括:
上报单元,用于在与所述控制器握手成功之后,向所述控制器上报九级流表;
其中,每级所述流表支持开放流协议定义的所有匹配域,支持所述开放流协议定义的所有动作,每个所述匹配域都支持通配。
17.一种流表项查询系统,其特征在于,包括:
权利要求9至16任意一项权利要求所述的流表项查询设备;
以及控制器和终端。
CN201410425018.6A 2014-08-26 2014-08-26 流表项查询方法、设备及系统 Expired - Fee Related CN105429879B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410425018.6A CN105429879B (zh) 2014-08-26 2014-08-26 流表项查询方法、设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410425018.6A CN105429879B (zh) 2014-08-26 2014-08-26 流表项查询方法、设备及系统

Publications (2)

Publication Number Publication Date
CN105429879A true CN105429879A (zh) 2016-03-23
CN105429879B CN105429879B (zh) 2018-11-30

Family

ID=55507824

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410425018.6A Expired - Fee Related CN105429879B (zh) 2014-08-26 2014-08-26 流表项查询方法、设备及系统

Country Status (1)

Country Link
CN (1) CN105429879B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017219904A1 (zh) * 2016-06-19 2017-12-28 华为技术有限公司 一种数据处理方法和装置
CN107818151A (zh) * 2017-10-24 2018-03-20 湖南恒茂高科股份有限公司 数据查找方法、装置、计算机设备和存储介质
CN108282481A (zh) * 2018-01-30 2018-07-13 电子科技大学 一种基于sdn的数据中心网络流量测量方法
CN110209884A (zh) * 2018-01-10 2019-09-06 杭州海康威视数字技术股份有限公司 一种索引校对方法和装置
CN111865963A (zh) * 2020-07-16 2020-10-30 郑州信大捷安信息技术股份有限公司 一种基于ip选项的ip数据包处理方法与系统
CN112486914A (zh) * 2020-11-27 2021-03-12 神州灵云(北京)科技有限公司 一种数据包存储与快查方法与系统
CN114221849A (zh) * 2020-09-18 2022-03-22 芯启源(南京)半导体科技有限公司 一种fpga结合tcam实现智能网卡的方法
CN114637759A (zh) * 2020-12-16 2022-06-17 金篆信科有限责任公司 数据查询方法、电子设备、存储介质
CN117278660A (zh) * 2023-11-21 2023-12-22 华信咨询设计研究院有限公司 一种基于dpdk技术的流量过滤的协议解析方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8300532B1 (en) * 2008-09-23 2012-10-30 Juniper Networks, Inc. Forwarding plane configuration for separation of services and forwarding in an integrated services router
CN102882746A (zh) * 2012-10-11 2013-01-16 盛科网络(苏州)有限公司 Openflow交换机系统中流表添加速率的测试方法及系统
US8432807B2 (en) * 2007-10-24 2013-04-30 Juniper Networks, Inc. Network traffic analysis using a flow table
CN103905311A (zh) * 2012-12-28 2014-07-02 华为技术有限公司 流表匹配方法和装置以及交换机

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8432807B2 (en) * 2007-10-24 2013-04-30 Juniper Networks, Inc. Network traffic analysis using a flow table
US8300532B1 (en) * 2008-09-23 2012-10-30 Juniper Networks, Inc. Forwarding plane configuration for separation of services and forwarding in an integrated services router
CN102882746A (zh) * 2012-10-11 2013-01-16 盛科网络(苏州)有限公司 Openflow交换机系统中流表添加速率的测试方法及系统
CN103905311A (zh) * 2012-12-28 2014-07-02 华为技术有限公司 流表匹配方法和装置以及交换机

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017219904A1 (zh) * 2016-06-19 2017-12-28 华为技术有限公司 一种数据处理方法和装置
US11012542B2 (en) 2016-06-19 2021-05-18 Huawei Technologies Co., Ltd. Data processing method and apparatus
CN107818151A (zh) * 2017-10-24 2018-03-20 湖南恒茂高科股份有限公司 数据查找方法、装置、计算机设备和存储介质
CN110209884A (zh) * 2018-01-10 2019-09-06 杭州海康威视数字技术股份有限公司 一种索引校对方法和装置
CN108282481A (zh) * 2018-01-30 2018-07-13 电子科技大学 一种基于sdn的数据中心网络流量测量方法
CN108282481B (zh) * 2018-01-30 2020-07-17 电子科技大学 一种基于sdn的数据中心网络流量测量方法
CN111865963A (zh) * 2020-07-16 2020-10-30 郑州信大捷安信息技术股份有限公司 一种基于ip选项的ip数据包处理方法与系统
CN114221849B (zh) * 2020-09-18 2024-03-19 芯启源(南京)半导体科技有限公司 一种fpga结合tcam实现智能网卡的方法
CN114221849A (zh) * 2020-09-18 2022-03-22 芯启源(南京)半导体科技有限公司 一种fpga结合tcam实现智能网卡的方法
CN112486914A (zh) * 2020-11-27 2021-03-12 神州灵云(北京)科技有限公司 一种数据包存储与快查方法与系统
CN112486914B (zh) * 2020-11-27 2024-04-12 神州灵云(北京)科技有限公司 一种数据包存储与快查方法与系统
CN114637759A (zh) * 2020-12-16 2022-06-17 金篆信科有限责任公司 数据查询方法、电子设备、存储介质
CN117278660A (zh) * 2023-11-21 2023-12-22 华信咨询设计研究院有限公司 一种基于dpdk技术的流量过滤的协议解析方法
CN117278660B (zh) * 2023-11-21 2024-03-29 华信咨询设计研究院有限公司 一种基于dpdk技术的流量过滤的协议解析方法

Also Published As

Publication number Publication date
CN105429879B (zh) 2018-11-30

Similar Documents

Publication Publication Date Title
CN105429879A (zh) 流表项查询方法、设备及系统
US20210152444A1 (en) Aggregation of select network traffic statistics
US9203743B2 (en) Packet forwarding system, control device, forwarding device and method and program for preparing processing rules
CN104823416B (zh) 实现OpenFlow的软件定义网络中的报文排序的装置和方法
CN104580027B (zh) 一种OpenFlow报文转发方法及设备
EP1515501B1 (en) Data structure for range-specified algorithms
CN102945249B (zh) 一种策略规则匹配查询树生成方法、匹配方法及装置
US11687594B2 (en) Algorithmic TCAM based ternary lookup
US20170302578A1 (en) System and method for bgp sflow export
US20150131666A1 (en) Apparatus and method for transmitting packet
CN102857491A (zh) 集管理方案
CN103795644B (zh) 策略表表项配置方法、装置及系统
US20170359254A1 (en) Flow classification for information centric network protocols
CN100385880C (zh) 分组分类装置和使用字段级特里结构的方法
CN102035735A (zh) 用于提供转发信息和服务质量信息的设备和方法
CN102970150A (zh) 用于数据中心的可扩展组播转发方法和设备
US20230042388A1 (en) Graph database query pagination
Leng et al. A mechanism for reducing flow tables in software defined network
CN103329493A (zh) 芯片上分组穿过
WO2021017907A1 (zh) 一种优化的微服务间通信的方法及装置
CN109600326A (zh) 数据或报文转发的方法、节点和系统
CN105812257A (zh) 业务链路由管理系统及其使用方法
CN100397816C (zh) 在网络设备中对接收数据包进行分类的方法
Lim et al. Two-dimensional packet classification algorithm using a quad-tree
US11627081B2 (en) Method and system segregating application traffic in a wide area network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181130

Termination date: 20190826