CN105357128A - 流表创建及查询方法 - Google Patents
流表创建及查询方法 Download PDFInfo
- Publication number
- CN105357128A CN105357128A CN201510731215.5A CN201510731215A CN105357128A CN 105357128 A CN105357128 A CN 105357128A CN 201510731215 A CN201510731215 A CN 201510731215A CN 105357128 A CN105357128 A CN 105357128A
- Authority
- CN
- China
- Prior art keywords
- stream
- list item
- hash
- stream table
- key value
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/741—Routing in networks with a plurality of addressing schemes, e.g. with both IPv4 and IPv6
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据通信领域中的数据报文转发控制技术,其公开了一种流表创建及查询方法,提高流表查询速度实现报文快速转发。本发明采用HASH表组织流表并创建流表项,HASH值的范围为0到2N,所述流表项中包括以报文六元组或者九元组构成的KEY值及利用所述KEY值计算出来的32位HASH值;以32位HASH值的低N位作为HASH表的HASH值,将所述流表项添加到低N位HASH值对应的冲突链上。本发明适用于各种类型报文的转发控制。
Description
技术领域
本发明涉及数据通信领域中的数据报文转发控制技术,具体涉及流表创建及查询方法。
背景技术
在数据通信设备如路由器中,转发面需要处理一些控制业务如ACL(AccessControlList,访问控制列表)、QOS(QualityOfService,服务质量)等,这些业务的处理一般需要查询比较大的表,查表比较耗时,一般不能满足数据报文转发性能要求。
ACL、QOS等控制业务需要使用报文中的五元组(源地址、源端口、目的地址、目的端口和层四协议号)或者七元组(源地址、源端口、目的地址、目的端口、层四协议号、服务类型(Tos,TypeOfService)和层4标志)对报文进行控制。
为此,以报文的六元组(源地址、源端口、目的地址、目的端口、层四协议号和接口索引)或者九元组(源地址、源端口、目的地址、目的端口、层四协议号、分片标志、服务类型、层4标志和接口索引)可以唯一定义一条流,使用六元组或者九元组作为KEY值构建流表项,流表项中包括KEY值和其它字段。接口接收到报文后,先在流表中查找流表项,把查找的流表项保存在特定的位置(如报文描述符中,报文描述符是存储报文信息的控制块)。ACL、QOS等控制业务直接在特定位置获取流表项,ACL、QOS等控制业务可以一次查找结果,将结果记录在流表项中,后续直接使用流表项中记录的结果。
目前,流表已经成为加速控制业务的一种重要手段,那么如何快速查找流表则对于提高流表查询速度实现报文快速转发具有实际意义。
发明内容
本发明所要解决的技术问题是:提出一种流表创建及查询方法,提高流表查询速度实现报文快速转发。
本发明解决上述技术问题所采用的方案是:流表创建方法,包括:
采用HASH表组织流表并创建流表项,HASH值的范围为0到2N,所述流表项中包括以报文六元组或者九元组构成的KEY值及利用所述KEY值计算出来的32位HASH值;以32位HASH值的低N位作为HASH表的HASH值,将所述流表项添加到低N位HASH值对应的冲突链上。
进一步的,在创建流表项时,将所述KEY值及利用所述KEY值计算出来的32位HASH值作为流表项中开始部分的字段。
进一步的,所述六元组包括:源地址、源端口、目的地址、目的端口、层四协议号和接口索引;所述九元组包括源地址、源端口、目的地址、目的端口、层四协议号、服务类型、层四标志和接口索引。
此外,本发明还提出了一种流表查询方法,包括:
当设备从接口接收到报文后,采用报文的六元组或九元组作为KEY值,并对所述KEY值进行HASH计算,获得32位HASH值,以所述32位HASH值的低N位作为HASH表的HASH值,在所述HASH值对应的冲突链上查找流表。
进一步的,该流表查询方法还包括:
若查找到流表则对流表项进行相应操作,若未查找到流表,则创建流表项。
具体的,若未查找到流表,则创建流表项包括:创建的流表项中包括六元组或者九元组或转发信息,将创建的流表项保存在其KEY值在HASH表中对应的冲突链的末尾。
进一步的,所述对流表项进行相应操作包括:
对流表项进行刷新操作,并且将流表项记录保存到特定位置。
进一步的,所述特定位置为报文描述符。
进一步的,所述对流表项进行相应操作还包括:根据流表信息转发报文。
进一步的,该流表查询方法还包括:
若某个流表项在一定时间内未被报文刷新,则将该流表项进行老化处理。
进一步的,在所述HASH值对应的冲突链上查找流表的方法为:
使用32位HASH值和KEY值依次与冲突链上各个流表项的32位HASH值和KEY值进行比较运算,若二者都相等,则所对应的流表项就是需要查找的流表项。
本发明的有益效果是:使用报文中的六元组或者九元组构造流表KEY值,通过所述KEY值计算出32位HASH值,流表中包括32位HASH值字段和KEY值字段,取出32位HASH值中的低16位作为HASH表的HASH值。报文在HASH表的冲突链中通过32位HASH值和KEY值创建流表和查找流表,这样提高了KEY值中前面大部分字段相同的流表的查找速度。
附图说明
图1为采用HASH表组织流表的结构示意图;
图2为流表项构成示意图;
图3为进行优化后的流表结构示意图;
图4为设备使用流表转发报文流程图。
具体实施方式
本发明旨在提出一种流表查询方法,提高流表查询速度实现报文快速转发。在本发明中,使用HASH表组织流表,HASH值的范围为0到2N(N是一个经验值,与***中流表的规模相关)。
在进行流表创建时需要为流表项分配存储空间,其中定义流表中的流表项的方法为:使用报文的六元组(源地址、源端口、目的地址、目的端口、层四协议号和接口索引)或者九元组(源地址、源端口、目的地址、目的端口、层四协议号、服务类型、分片标志、层四标志和接口索引)作为KEY值。对所述KEY进行HASH计算,计算出32位的HASH值。使用所述32位HASH值和所述KEY值作为流表项中开始部分的字段,然后以32位HASH值的低N位作为HASH表的HASH值,将所述流表项添加到低N位HASH值对应的冲突链上。
本发明中的流表查询方法为:接口接收到报文后,以六元组或者九元组为KEY值,并计算出所述KEY值的32位HASH值,以所述32位HASH值的低N位作为HASH表的HASH值,在所述HASH值对应的冲突链上查找流表。查找流表时,使用32位HASH值和KEY值依次与冲突链上各个流表项的32位HASH值和KEY值进行比较运算,若二者都相等,则所对应的流表项就是需要查找的流表项,流表项查找到以后需要对流表进行刷新操作,并且把流表项记录到特定位置(如报文描述中)。在进行流表查询时,若未查找到流表,则需要进行流表的创建。
实施例:
如图1所示,在进行流表创建时,使用HASH表组织流表,HASH值的范围为0~216;
流表项中包括所述32位HASH值字段,其值为H32,流表项中包括所述KEY值字段,其值为K,流表项中还包括其它信息字段,
使用报文六元组或者九元组作为KEY值。对所述KEY进行HASH计算,计算出32位的HASH值。如图2所示,使用所述32位HASH值和所述KEY值作为流表项中开始部分的字段,流表项中还包括其它信息字段,最后将流表项添加到低16位HASH值对应的冲突链上,这样优化后的流表组织结构如图3所示。
如图4所示,设备从接口接收到IPv4报文后,获取报文的六元组或者九元组作为KEY值。通过KEY计算出32位HASH值,使用所述32位HASH值的低16位作为HASH值在HASH表中查找流表项,如果查找到相应流表项则可以根据流表信息转发报文,如查找不成功则创建流表项。
流表查找的过程为:使用所述六元组或者九元组作为KEY值K,通过所述KEY值计算出32位HASH值H32,所述32位HASH值中的低16位作为H16值,根据H16值定位到查找的HASH表的冲突链的位置,然后在冲突链上依次比较流表项中的32位HASH值与H32是是否相等,且流表项中的KEY值与K相等,如果冲突链上某个流表项的32位HASH值与H32相等,且KEY值与K相等,则该流表项就是所查找的流表项。如果查找不到流表项,则进行流表项创建。
通过不同的六元组或者8元组计算的32位HASH值H32,H32中的低16值H16,在H16相等而H32也相等的几率很小,几乎为0。因此,一个冲突链上的流表项中的32位HASH值几乎互不相等。
在查询流表时,先比较所述32位Hash值是否相等,如果不等,则比较下一个流表的32位Hash值是否相等。这样,16位Hash值H16对应8个流表项,即使是查询第八个流表项,也只需要做8次32位数的比较后,然后再比较KEY值即可。
某些情况下,KEY值的九元组中前面的大部分元组相同,最后少部分不同,本发明将比较多个个元素简化为比较一个元素,提高了流表的查询速度。
报文查询到流表项后需要对流表项进行刷新,如果某个流表项一段时间没有被报文刷新,则老化所述流表项,释放其所占用的存储空间。
本发明方案不仅适用于IPv4报文,还适用于IPv6和其它类型的报文。
Claims (10)
1.流表创建方法,其特征在于,包括:
采用HASH表组织流表并创建流表项,HASH值的范围为0到2N,所述流表项中包括以报文六元组或者九元组构成的KEY值及利用所述KEY值计算出来的32位HASH值;以32位HASH值的低N位作为HASH表的HASH值,将所述流表项添加到低N位HASH值对应的冲突链上。
2.如权利要求1所述的流表创建方法,其特征在于,在创建流表项时,将所述KEY值及利用所述KEY值计算出来的32位HASH值作为流表项中开始部分的字段。
3.如权利要求1所述的流表创建方法,其特征在于,所述六元组包括:源地址、源端口、目的地址、目的端口、层四协议号和接口索引;所述九元组包括源地址、源端口、目的地址、目的端口、层四协议号、服务类型、分片标志、层四标志和接口索引。
4.流表查询方法,其特征在于,包括:
当设备从接口接收到报文后,采用报文的六元组或九元组作为KEY值,并对所述KEY值进行HASH计算,获得32位HASH值,以所述32位HASH值的低N位作为HASH表的HASH值,在所述HASH值对应的冲突链上查找流表。
5.如权利要求4所述的流表查询方法,其特征在于,在所述HASH值对应的冲突链上查找流表的方法为:
使用32位HASH值和KEY值依次与冲突链上各个流表项的32位HASH值和KEY值进行比较运算,若二者都相等,则所对应的流表项就是需要查找的流表项。
6.如权利要求5所述的流表查询方法,其特征在于,还包括:若查找到流表则对流表项进行相应操作,若未查找到流表,则创建流表项。
7.如权利要求6所述的流表查询方法,其特征在于,所述若未查找到流表,则创建流表项包括:创建的流表项中包括六元组或者九元组或者转发信息,将创建的流表项保存在其KEY值在HASH表中对应的冲突链的末尾。
8.如权利要求7所述的流表查询方法,其特征在于,该流表查询方法还包括:若某个流表项在一定时间内未被报文刷新,则将该流表项进行老化处理。
9.如权利要求7所述的流表查询方法,其特征在于,所述特定位置为报文描述符。
10.如权利要求6-9任意一项所述的流表查询方法,其特征在于,所述对流表项进行相应操作还包括:
根据流表信息转发报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510731215.5A CN105357128A (zh) | 2015-10-30 | 2015-10-30 | 流表创建及查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510731215.5A CN105357128A (zh) | 2015-10-30 | 2015-10-30 | 流表创建及查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105357128A true CN105357128A (zh) | 2016-02-24 |
Family
ID=55333001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510731215.5A Pending CN105357128A (zh) | 2015-10-30 | 2015-10-30 | 流表创建及查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105357128A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721627A (zh) * | 2016-02-25 | 2016-06-29 | 中国科学院信息工程研究所 | 一种ip网络流数据在线匿名化方法 |
CN106302179A (zh) * | 2016-07-29 | 2017-01-04 | 杭州迪普科技有限公司 | 一种管理索引表的方法及装置 |
CN106789733A (zh) * | 2016-12-01 | 2017-05-31 | 北京锐安科技有限公司 | 一种提高大规模网络流表查找效率的装置及方法 |
CN108777662A (zh) * | 2018-06-20 | 2018-11-09 | 迈普通信技术股份有限公司 | 表项管理方法及装置 |
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN111935021A (zh) * | 2020-09-27 | 2020-11-13 | 翱捷智能科技(上海)有限公司 | 一种快速匹配网络数据包的方法及*** |
WO2024124597A1 (zh) * | 2022-12-13 | 2024-06-20 | 中国科学院声学研究所 | 一种匹配表*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571352A (zh) * | 2003-07-12 | 2005-01-26 | 华为技术有限公司 | 在网络设备中处理五元流组的方法 |
CN101098305A (zh) * | 2007-03-28 | 2008-01-02 | 秦勇 | 一种宽带网络接入及流量管理调度*** |
CN101119313A (zh) * | 2007-09-14 | 2008-02-06 | 杭州华三通信技术有限公司 | 一种负载分担方法和设备 |
US20090274154A1 (en) * | 2006-04-26 | 2009-11-05 | Marvell Semiconductor Israel Ltd. | Double-hash lookup mechanism for searching addresses in a network device |
CN102025643A (zh) * | 2010-12-30 | 2011-04-20 | 华为技术有限公司 | 一种流表查找方法和装置 |
CN102957603A (zh) * | 2012-11-09 | 2013-03-06 | 盛科网络(苏州)有限公司 | 基于多级流表的Openflow报文转发方法及*** |
-
2015
- 2015-10-30 CN CN201510731215.5A patent/CN105357128A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571352A (zh) * | 2003-07-12 | 2005-01-26 | 华为技术有限公司 | 在网络设备中处理五元流组的方法 |
US20090274154A1 (en) * | 2006-04-26 | 2009-11-05 | Marvell Semiconductor Israel Ltd. | Double-hash lookup mechanism for searching addresses in a network device |
CN101098305A (zh) * | 2007-03-28 | 2008-01-02 | 秦勇 | 一种宽带网络接入及流量管理调度*** |
CN101119313A (zh) * | 2007-09-14 | 2008-02-06 | 杭州华三通信技术有限公司 | 一种负载分担方法和设备 |
CN102025643A (zh) * | 2010-12-30 | 2011-04-20 | 华为技术有限公司 | 一种流表查找方法和装置 |
CN102957603A (zh) * | 2012-11-09 | 2013-03-06 | 盛科网络(苏州)有限公司 | 基于多级流表的Openflow报文转发方法及*** |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721627A (zh) * | 2016-02-25 | 2016-06-29 | 中国科学院信息工程研究所 | 一种ip网络流数据在线匿名化方法 |
CN105721627B (zh) * | 2016-02-25 | 2018-12-11 | 中国科学院信息工程研究所 | 一种ip网络流数据在线匿名化方法 |
CN106302179A (zh) * | 2016-07-29 | 2017-01-04 | 杭州迪普科技有限公司 | 一种管理索引表的方法及装置 |
CN106302179B (zh) * | 2016-07-29 | 2020-02-11 | 杭州迪普科技股份有限公司 | 一种管理索引表的方法及装置 |
CN106789733A (zh) * | 2016-12-01 | 2017-05-31 | 北京锐安科技有限公司 | 一种提高大规模网络流表查找效率的装置及方法 |
CN106789733B (zh) * | 2016-12-01 | 2019-12-20 | 北京锐安科技有限公司 | 一种提高大规模网络流表查找效率的装置及方法 |
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN108777662A (zh) * | 2018-06-20 | 2018-11-09 | 迈普通信技术股份有限公司 | 表项管理方法及装置 |
CN108777662B (zh) * | 2018-06-20 | 2021-05-18 | 迈普通信技术股份有限公司 | 表项管理方法及装置 |
CN111935021A (zh) * | 2020-09-27 | 2020-11-13 | 翱捷智能科技(上海)有限公司 | 一种快速匹配网络数据包的方法及*** |
CN111935021B (zh) * | 2020-09-27 | 2020-12-25 | 翱捷智能科技(上海)有限公司 | 一种快速匹配网络数据包的方法及*** |
WO2024124597A1 (zh) * | 2022-12-13 | 2024-06-20 | 中国科学院声学研究所 | 一种匹配表*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105357128A (zh) | 流表创建及查询方法 | |
Zhu et al. | SDN-based routing for efficient message propagation in VANET | |
Quan et al. | Scalable name lookup with adaptive prefix bloom filter for named data networking | |
US20160050150A1 (en) | Method and system for tracking and managing network flows | |
CN104468381A (zh) | 一种多域流规则匹配的实现方法 | |
CN107547391B (zh) | 一种报文传输方法和装置 | |
US7835304B2 (en) | Method and apparatus for assigning IP addresses | |
CN108259346B (zh) | 一种等价路由表项建立方法和装置 | |
WO2016107594A1 (en) | Accessing external network from virtual network | |
CN102025643A (zh) | 一种流表查找方法和装置 | |
WO2021017578A1 (zh) | 报文发送方法、装置及存储介质 | |
US20200328914A1 (en) | Packet transmission | |
CN107547346B (zh) | 一种报文传输方法和装置 | |
WO2017054202A1 (zh) | 一种数据路由的方法及装置 | |
CN104038425A (zh) | 转发以太网报文的方法和装置 | |
CN107276916B (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN109450793A (zh) | 一种业务流量调度的方法和装置 | |
CN106411553B (zh) | 一种业务链路径的优化方法及装置 | |
CN102136986B (zh) | 一种负载分担方法和交换设备 | |
CN101902391A (zh) | 基于智能的静态路由进行报文转发的方法和设备 | |
CN102184234A (zh) | 用于查询、增加、更新或删除信息处理规则的方法和设备 | |
CN104205745A (zh) | 报文处理的方法与设备 | |
CN108900406B (zh) | 一种流量转发方法及装置 | |
US20200328975A1 (en) | Method and system segregating application traffic in a wide area network | |
CN108632125B (zh) | 一种组播表项管理方法、装置、设备及机器可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160224 |
|
RJ01 | Rejection of invention patent application after publication |