CN100358288C - 在网络设备中处理五元流组的方法 - Google Patents

在网络设备中处理五元流组的方法 Download PDF

Info

Publication number
CN100358288C
CN100358288C CNB031473741A CN03147374A CN100358288C CN 100358288 C CN100358288 C CN 100358288C CN B031473741 A CNB031473741 A CN B031473741A CN 03147374 A CN03147374 A CN 03147374A CN 100358288 C CN100358288 C CN 100358288C
Authority
CN
China
Prior art keywords
address
section
source
switch
hash
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.)
Expired - Fee Related
Application number
CNB031473741A
Other languages
English (en)
Other versions
CN1571352A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB031473741A priority Critical patent/CN100358288C/zh
Publication of CN1571352A publication Critical patent/CN1571352A/zh
Application granted granted Critical
Publication of CN100358288C publication Critical patent/CN100358288C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种在网络设备中处理五元流组的方法,该方法为:网络设备从五元组中提取出其源IP地址、目的IP地址、协议号、源端口号和目的端口号;对源IP地址、目的IP地址、协议号、源端口号和目的端口号进行散列并得到等长散列值;将所述五元组中各个变化较大的域提取出进行散列并得到冗余散列值;将所述冗余散列值组合到所述等长散列值中形成实际散列值;以及网络设备用所述的实际散列值维护等长的散列表。本发明能有效地降低流状态表中的冲突,从而提高内存利用率,并大大提高表项的查找速度。

Description

在网络设备中处理五元流组的方法
技术领域
本发明涉及一种在网络设备中处理五元流组的方法。
背景技术
散列方法,也叫哈希方法或杂凑方法,是一种基本的数据索引方法。在散列方法中使用的转换函数就叫做散列函数。散列函数建立了从表项关键码(Key)集合到散列表地址集合的一个映射。有了散列函数,就可以根据关键码确定表项在散列表中的唯一存放地址。一般而言,散列函数是一个压缩映射函数,即通常Key值空间比散列表地址集合大得多,因此就会产生冲突。
散列函数的生成和冲突解决方案是散列表技术的两个主要方面。散列函数的种类很多,没有统一的模式,都需要根据具体的情况具体分析后确定。
最常见的一种散列表方法如图1和图2所示:图1中给出了其Key值的组织方法和哈希方法,哈希方法就是简单地将五元组的各个域分段成16位后进行异或,从而得到哈希后的Key值。
建表时,使用哈希值在散列表中找到对应的地址,将所要存放的用户数据(即叶子)以指针形式挂接在该表项上;如果该地址已有其它叶子或叶子链占用,则先找到该最末端的叶子,并将在该叶子中填入当前叶子的指针。一个哈希表项上的叶子采用双向链表结构,以便于插入和删除等操作。
查找叶子时,首先对五元组作哈希运算,得到哈希表的地址,找到对应的叶子,之后要将该叶子中的Key与当前查找的Key作一次精确比较,以确定找到的叶子是否正确;如果该地址上有多片叶子,还需要遍历叶子链表并逐一比较Key值。插入和删除叶子的过程与此类似。
虽然采用线性链表的冲突解决方法好处是结构简单,维护也简单;但查找、增加、删除的速度较慢,尤其是在哈希表接近满载时。
另一种散列表的结构如图3和图4所示:这一方法采用的是等长哈希函数,是从Key值空间到另一个同样大小的空间的一一映射;即,如果是104位的Key作哈希,那么结果也必然是一个104位的空间;而且,不同的Key值必然哈希成不同的结果。
等长哈希方法的好处,是查找到叶子后,不必再与原始Key进行比较,仅根据哈希值就可以确认查找是否成功。
从图3中可以看出,进行哈希后,越靠左边的位,越集中地反映了所有Key值的变化情况。最左边的若干位将直接用于查哈希表,这样冲突得最小。
该散列表采用二叉树结构,避免了线性链表方案的不足,查找速度也有大幅度的提高,但插入删除操作比线性链表要复杂一些。
由于哈希表大小有限,即使采用等长哈希,哈希表的冲突仍不可避免;而且,哈希函数的选择受到更大的限制,因为必须满足哈希值域空间一一映射的特性。所以,一般来说,在哈希表内的冲突比前一种方法更大。
每一类不同的Key值输入时,变化较大的域也各自不同,所以一个哈希函数不可能适应所有的情况。一种通用的散列方式,其实对各种情况都不可能最优,有时反而使得冲突更大。在报文流五元组状态表的实际应用中,就暴露出这一弱点。
发明内容
本发明的目的在于提供一种在网络设备中处理五元流组的方法,以减少哈希表的冲突。
本发明的方法包括步骤:
网络设备从五元组中提取出其源IP地址、目的IP地址、协议号、源端口号和目的端口号;
对源IP地址、目的IP地址、协议号、源端口号和目的端口号进行散列并得到等长散列值;
将所述五元组中各个变化较大的域提取出进行散列并得到冗余散列值;
将所述冗余散列值组合到所述等长散列值中形成实际散列值;以及
网络设备用所述的实际散列值维护等长的散列表。
其中:所述的冗余散列值为复数位。冗余散列值的散列方式根据设备所处的位置进行调整。
将目的IP地址、源IP地址由低位到高位各分成第一段、第二段、第三段、第四段,每段八位,当设备位于INTERNET边缘时,获取目的IP地址的全部四段和源IP地址的第一段,将目的IP地址的第二段和第四段循环移动4位,将源IP地址第一段的第一位与第八位交换位置、第二位与第七位交换位置、第三位与第六位交换位置、第四位与第五位交换位置;将所述五段一起进行异或运算得到冗余散列值。
当设备位于INTERNET骨干网时,获取目的IP地址的全部四段和源IP地址的全部四段,分别将目的IP地址和源IP地址的第二段和第四段循环移动4位,将源IP地址各段的第一位与第八位交换位置、第二位与第七位交换位置、第三位与第六位交换位置、第四位与第五位交换位置;将所述八段一起进行异或运算得到冗余散列值。
当设备位于数据中心、网络内容提供商的服务器前端时,获取源IP地址的全部四段和目的IP地址的第一段,将源IP地址的第二段和第四段循环移动4位,将目的IP地址第一段的第一位与第八位交换位置、第二位与第七位交换位置、第三位与第六位交换位置、第四位与第五位交换位置;将所述五段一起进行异或运算得到冗余散列值。
本发明有效地降低了流状态表中的冲突,提高了内存利用率和表项的查找速度。
附图说明
图1A、图1B为现有技术一的散列表方法示意图;
图2为现有技术一的散列表结构示意图;
图3为现有技术二的等长散列表方法示意图;
图4为等长散列表结构示意图;
图5为边缘接入层的组网示意图;
图6为数据中心和ICP的组网示意图;
图7为Intertnet骨干网示意图;
图8为本发明散列表方法示意图;
图9为本发明的散列值结构示意图;
图10为实现哈希方法的装置结构图。
具体实施方式
等长哈希一一映射的方式极大地限制了哈希函数的灵活性,导致哈希后的索引部分不能很好地反映Key中的变化域,从而不能将Key均匀地散列开来。为此,本发明在五元组104位的基础上增加8位的冗余位,这8个冗余位和原有的等长哈希值一起组成实际的哈希值。如下所示:
|冗余哈希值|等长哈希值|
这样,得到的哈希值仍满足一一映射的要求,又兼有任选8位的压缩哈希函数的灵活性。
哈希函数的主要功能,就是要把原有大Key值空间中的有限个实际可能出现的值,尽可能均匀地散列在哈希表的空间内。具体到报文流的五元组,就是要把五元组中各个变化较大的域,提取出来并组合到哈希值的最左边的N个位中来(哈希表的大小为EXP(2,N))。
当前网络中的报文流,流量绝大部分是TCP流量;而这其中,Web流量又占据了主要部分。因此,对于五元组的哈希函数,要针对这些特点进行考虑:
A、用户侧TCP端口号16位是较好的哈希值,它在五元组中,变化最大、分布最为随机,应该尽量调整到哈希值的前N位中去。
B、源目的IP地址的32位中,变化的部分视设备在网络中位置不同而不同
(1)设备位于Internet边缘,这时源IP地址的32位中变化域的分布较为集中,比如说可能集中在低8位,而目的IP地址的变化域分布较为分散。
参阅图5,边缘路由器用于会聚用户的流量。流量主要从路由器内侧的用户发起,其特点是:源IP地址范围较为集中,而目的IP地址较为分散。。
(2)设备位于数据中心(IDC)、网络内容提供商(ICP)的服务器群前端,这时流量的目的IP地址的32位中变化域的分布较为集中,比如说可能集中在低8位,而源IP地址的变化域分布较为分散。
参阅图6,Internet上的用户从远端发起对数据中心的服务器的访问,即流量主要从路由器外侧的Internet发起,其特点是:目的IP地址范围较为集中,而源IP地址较为分散。
(3)设备位于Internet骨干网,这时源目的IP地址各自的32位中,变化的域均较为分散。
参阅图7,Internet上各种用户发起的访问不同目的的流量均要穿越骨干网路由器,这些流量的特点是:源IP地址和目的IP地址均很分散。
C、目的TCP端口一般而言,分布较为集中,网络中访问最多的端口就是Web、文件传输协议(FTP)等应用的TCP端口。
D、IP协议号的变化也很小,一般主要是传输控制协议号(TCP)或者用户数据报协议(UDP)号。
根据上述特点,构造出新的哈希方法:
参阅图8A,当设备位于INTERNET边缘时,将目的IP地址由低位到高位分成四段,其中两段循环移动4位;将源IP地址低八位的高、低位交换位置,再将各段进行异或运算得到冗余散列值。
参阅图8B,当设备位于INTERNET骨干网时,将目的IP地址和源IP地址由低位到高位各分成四段,每段八位,其中各有两段循环移动4位,再把源IP地址各段的高、低位交换位置,即最高位变成最低位,次高位变成次低位,依次类推;最后将各段进行异或运算得到冗余散列值。
参阅图8C,当设备位于数据中心、网络内容提供商的服务器前端时,将源IP地址由低位到高位分成四段,其中两段循环移动4位;再把目的IP地址的低八位的高低位交换位置,最后将各段进行异或运算得到冗余散列值。
从图中可以看到,不同网络位置的哈希方法目的都是将五元组中变化最大的位域集中反映到哈希值中。其中,Swap的意思是将该域的位高低位交换位置,也即最高位变成最低位,次高位变成次低位,依次类推。
最终哈希值的结构参阅图9所示。
参见图4,网络设备中处理五元组流的步骤如下:
(1)、创建空白的哈希表、空闲的中间节点链表、空闲的叶子链表
(2)、收到一个报文的首包,即TCP的同步标志(SYN)请求包或者用户数据报协议(UDP)首包时,提取出其源IP地址、目的IP地址、协议号、源端口号、目的端口号,按前述的哈希方法进行哈希运算,然后根据哈希得到的Key值,索引到哈希表的一个表项,同时从空闲的叶子链中分配一片叶子,最后修改哈希表项的内容指向该叶子的地址,并把哈希值和该报文流的状态和路由等信息存放到叶子当中。
(3)、如果之后收到和首包相同五元组的后续包,则使用和首包同样的哈希方法,就可以从哈希表中查找到对应的叶子,从而得到该数据流的状态和路由等信息,从而进行快速转发;并且可能修改叶子中的状态信息。
(4)、之后如果收到其它报文流的首包,并且在向哈希表中插入叶子时,发现哈希表项下边已保存了其它的叶子,就称为发生了表项冲突。此时就要从空闲的中间节点链中分配一个节点。一个中间节点有两个表项,从而可以将冲突的两片叶子分别挂在这两个表项上,再将中间节点挂接到哈希表项上。
(5)、如果收到了数据流中的结束标志的报文,比如TCP RST报文,则可以将该数据流对应的叶子中的流状态标记为结束,再延迟一段时间后,即可以将该叶子删除。删除叶子时,如果该叶子是直接挂接在一个哈希表项上,则要将哈希表项中指向叶子的指针清除;如果该叶子是挂接在中间节点上,则要将该中间节点回收到空闲节点链上,并把该节点上挂接的另一片叶子重新挂接到上一个中间节点或哈希表项上;最后将叶子回收到空闲叶子链上。
(6)、对于UDP数据流,没有报文主动标识流的结束,因此需要通过一个定时器来定时老化掉哪些长时间没有报文使用的叶子,也即把这些叶子删除并回收到空闲链表中。
(7)、通过上述(2)-(6)的步骤,就可以对转发报文不断进行报文五元组流的插入、刷新和删除,同时利用所维护的这个五元组流状态表完成报文的快速转发和监控。
参阅图10,用简单的硬件逻辑实现上述的各种环境下的冗余哈希值的计算。其中:
计数器用于指示输入Key的当前位地址
内存中存储有哈希方案的数据,数据Data1指定需要进行哈希的数据段位地址,可以有多段;数据Data2控制作哈希的各数据段是否要循环移位或翻转(SWAP),分别用第8位和第9位通过开关1和开关2实现。
改变内存中数据的内容,就可以控制实现不同网络位置的哈希。比如,对于图8A的情况下,内存的内容为:
地址8:  0b0000 1000
         0b0000 0000    /*不移位也不翻转*/
地址16: 0b0001 0000
         0b0000 0001    /*移位,不翻转*/
地址 24:0b0001 1000
         0b0000 0000    /*不移位也不翻转*/
地址32: 0b0010 0000
         0b0000 0001    /*移位,不翻转*/
地址40: 0b0010 1000
         0b0000 0010    /*翻转,不移位*/
其它地址数据均为0,表示该备份部分数据不参与冗余哈希。
可见,只要修改内存的内容,就可以实现不同网络情况下的哈希方案,非常灵活。
本发明中,冗余哈希值的散列方式不是唯一的,在其它的网络位置或场合,还可以作一些调整,以适应不同的情况。冗余位也不限于8位,可以根据情况选择增加更多或更少的位。

Claims (8)

1、一种在网络设备中处理五元组流的方法,其特征在于:包括步骤:
网络设备从五元组中提取出其源IP地址、目的IP地址、协议号、源端口号和目的端口号;
对源IP地址、目的IP地址、协议号、源端口号和目的端口号进行散列并得到等长散列值;
将所述五元组中各个变化较大的域提取出进行散列并得到冗余散列值;
将所述冗余散列值组合到所述等长散列值中形成实际散列值;以及
网络设备用所述的实际散列值维护等长的散列表。
2、如权利要求1所述的方法,其特征在于:所述的五元组为传输控制协议TCP的同步标志SYN请求包或者用户数据报协议UDP的首包。
3、如权利要求1或2所述的方法,其特征在于:冗余散列值的散列方式根据设备所处的位置进行调整。
4、如权利要求3所述的方法,其特征在于:将目的IP地址、源IP地址由低位到高位各分成第一段、第二段、第三段、第四段,每段八位,当设备位于INTERNET边缘时,获取目的IP地址的全部四段和源IP地址的第一段,将目的IP地址的第二段和第四段循环移动4位,将源IP地址第一段的第一位与第八位交换位置、第二位与第七位交换位置、第三位与第六位交换位置、第四位与第五位交换位置;将所述五段一起进行异或运算得到冗余散列值。
5、如权利要求3所述的方法,其特征在于:将目的IP地址、源IP地址由低位到高位各分成第一段、第二段、第三段、第四段,每段八位,当设备位于INTERNET骨干网时,获取目的IP地址的全部四段和源IP地址的全部四段,分别将目的IP地址和源IP地址的第二段和第四段循环移动4位,将源IP地址各段的第一位与第八位交换位置、第二位与第七位交换位置、第三位与第六位交换位置、第四位与第五位交换位置;将所述八段一起进行异或运算得到冗余散列值。
6、如权利要求3所述的方法,其特征在于:将目的IP地址、源IP地址由低位到高位各分成第一段、第二段、第三段、第四段,每段八位,当设备位于数据中心、网络内容提供商的服务器前端时,获取源IP地址的全部四段和目的IP地址的第一段,将源IP地址的第二段和第四段循环移动4位,将目的IP地址第一段的第一位与第八位交换位置、第二位与第七位交换位置、第三位与第六位交换位置、第四位与第五位交换位置;将所述五段一起进行异或运算得到冗余散列值。
7、如权利要求1所述的方法,其特征在于:所述的维护包括查找、增加、修改和删除散列表中相关项逻辑关系的操作。
8、如权利要求1所述的方法,其特征在于:所述的冗余散列值为多位。
CNB031473741A 2003-07-12 2003-07-12 在网络设备中处理五元流组的方法 Expired - Fee Related CN100358288C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031473741A CN100358288C (zh) 2003-07-12 2003-07-12 在网络设备中处理五元流组的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031473741A CN100358288C (zh) 2003-07-12 2003-07-12 在网络设备中处理五元流组的方法

Publications (2)

Publication Number Publication Date
CN1571352A CN1571352A (zh) 2005-01-26
CN100358288C true CN100358288C (zh) 2007-12-26

Family

ID=34471924

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031473741A Expired - Fee Related CN100358288C (zh) 2003-07-12 2003-07-12 在网络设备中处理五元流组的方法

Country Status (1)

Country Link
CN (1) CN100358288C (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577151B2 (en) * 2005-04-01 2009-08-18 International Business Machines Corporation Method and apparatus for providing a network connection table
CN100448225C (zh) * 2005-09-28 2008-12-31 北京大学 一种无需ip分片重组实现动态流分类的装置和方法
CN100471171C (zh) * 2006-03-10 2009-03-18 四川南山之桥微电子有限公司 硬件建立tcp数据流连接的方法
CN102469006B (zh) * 2010-11-01 2015-03-18 杭州华三通信技术有限公司 数据报文快速转发方法及装置
CN102694798A (zh) * 2012-05-15 2012-09-26 浪潮电子信息产业股份有限公司 一种基于Hash映射表的高速串行互联的方法
CN102769869B (zh) * 2012-08-09 2015-07-15 北京傲天动联技术股份有限公司 无线接入点的控制和配置报文快速转发系统
CN103078869B (zh) * 2013-01-16 2016-05-25 华为技术有限公司 一种加速会话转发的系统及其方法
CN105187436B (zh) * 2015-09-25 2019-03-08 中国航天科工集团第二研究院七〇六所 一种基于散列表的包过滤主机网络控制方法
CN105357128A (zh) * 2015-10-30 2016-02-24 迈普通信技术股份有限公司 流表创建及查询方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002027641A2 (en) * 2000-09-28 2002-04-04 Neocore, Inc. Method for forming a hashing code
WO2002051098A1 (en) * 2000-12-20 2002-06-27 Telefonaktiebolaget Lm Ericsson (Publ) Efficient mapping of signal elements to a limited range of identifiers
US20030018688A1 (en) * 2001-07-23 2003-01-23 Sternin Jeffrey Y. Method and apparatus to facilitate accessing data in network management protocol tables

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002027641A2 (en) * 2000-09-28 2002-04-04 Neocore, Inc. Method for forming a hashing code
WO2002051098A1 (en) * 2000-12-20 2002-06-27 Telefonaktiebolaget Lm Ericsson (Publ) Efficient mapping of signal elements to a limited range of identifiers
US20030018688A1 (en) * 2001-07-23 2003-01-23 Sternin Jeffrey Y. Method and apparatus to facilitate accessing data in network management protocol tables

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高速地址Cache散列表的应用 陈文革,程向前.计算机工程,第28卷第8期 2002 *

Also Published As

Publication number Publication date
CN1571352A (zh) 2005-01-26

Similar Documents

Publication Publication Date Title
Shah et al. Fast incremental updates on Ternary-CAMs for routing lookups and packet classification
Singla et al. Scalable routing on flat names
Xu et al. A new and effective hierarchical overlay structure for peer-to-peer networks
JP2006313949A (ja) パケット転送装置
KR100512949B1 (ko) 필드레벨 트리를 이용한 패킷분류장치 및 방법
CN100358288C (zh) 在网络设备中处理五元流组的方法
Saxena et al. Radient: Scalable, memory efficient name lookup algorithm for named data networking
CN112399485A (zh) 一种6g中基于ccn的新节点价值和内容流行度缓存方法
CN102104526A (zh) 一种内容发布与获取的方法、装置和系统
Bauer et al. Bringing efficient advanced queries to distributed hash tables
CN114884877A (zh) 一种哈希表和HOT相结合的IPv6路由查找方法
CN103457855B (zh) 无类域间路由表建立、以及报文转发的方法和装置
CN101902388A (zh) 可扩充的多级排序资源快速发现技术
CN100352233C (zh) 路由表的组织与查找方法
CN1204505C (zh) 具有多个动态路由控制单元的数据传输系统
CN100425039C (zh) 标志集合式两维报文分类及查找方法和设备
Erdem Pipelined hierarchical architecture for high performance packet classification
CN102739550A (zh) 基于随机副本分配的多存储器流水路由体系结构
Hidalgo et al. Dring: A layered scheme for range queries over dhts
Hanna et al. Advanced hashing schemes for packet forwarding using set associative memory architectures
Ding et al. Analysis and improvement on Chord protocol for structured P2P
Vishnevsky et al. Scalable blind search and broadcasting in peer-to-peer networks
Park et al. An efficient IP address lookup algorithm based on a small balanced tree using entry reduction
Luo et al. Multi-dimensional hashing for fast network information processing in SDN
Hidalgo et al. A tabu based cache to improve latency and load balancing on prefix trees

Legal Events

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

Granted publication date: 20071226

Termination date: 20150712

EXPY Termination of patent right or utility model