CN108881037A - 一种基于udf报文实现哈希运算、负载均衡的方法及装置 - Google Patents
一种基于udf报文实现哈希运算、负载均衡的方法及装置 Download PDFInfo
- Publication number
- CN108881037A CN108881037A CN201811061485.XA CN201811061485A CN108881037A CN 108881037 A CN108881037 A CN 108881037A CN 201811061485 A CN201811061485 A CN 201811061485A CN 108881037 A CN108881037 A CN 108881037A
- Authority
- CN
- China
- Prior art keywords
- message
- udf
- mask
- load balancing
- content
- 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.)
- Withdrawn
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
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明揭示了一种基于UDF报文实现哈希运算、负载均衡的方法及装置,所述哈希运算的方法包括查找CAM表识别UDF报文,并根据查找结果取出报文中的若干位,选择所述若干位中参与哈希计算的报文内容,根据该报文内容计算出哈希值。本发明实现了对于UDF报文可以做链路聚合,增加了带宽,并且增加冗余连接备份,进而提高连接的健壮性。
Description
技术领域
本发明涉及一种负载均衡技术,尤其是涉及一种基于UDF报文实现哈希运算、负载均衡的方法及装置。
背景技术
随着网络规模的不断扩大,数据流量的不断增加,链路聚合的技术就应运而生了。其中,Linkagg(全称为Link Aggregation)就是一种链路聚合技术,其本质是把多个具有相同属性的Link(Port)聚合在一起,形成一个逻辑上的端口(Port),对于上层应用而言,它就是一个port,而根本看不到这个Port是由多个物理port组成的。使用Linkagg的优点有两个,一是增加了带宽(如两台交换机间有4条100M链路,捆绑后认为两台交换机间存在一条单向400M,双向800M带宽的逻辑链路,并且聚合链路在此被认为是一条逻辑链路),二是增加冗余连接备份,从而提高连接的健壮性。
在ASIC(Application Specific Integrated Circuit,专用集成电路)中,报文需要从linkagg组中的某个成员端口转发出去。这时,芯片根据网络报文的内容通过哈希函数计算出哈希值,再根据哈希值以及成员端口的数量选择一个出口,报文不同选择的出口也是不一样的。但是这里的网络报文一般指的是常规的报文,即拘泥于L3/L4已经定义的协议报文,然而通常不包括用户自定义的报文(User Defined Field,UDF)。
因此,需要提出一种基于用户自定义报文实现负载均衡的芯片实现方法。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种基于UDF报文实现哈希运算、负载均衡的方法及装置。
为实现上述目的,本发明提出如下技术方案:一种基于UDF报文实现哈希运算的方法,包括:
S1,根据报文中的关键字段查找CAM表,匹配得到一条CAM条目,并根据查找结果取出UDF报文中的若干位;
S2,将匹配到的所述CAM条目的索引及取出的所述UDF报文的若干位送给掩码寄存器;
S3,所述掩码寄存器根据所述CAM条目的索引匹配得到一个掩码字段,并根据所述掩码字段选择所述若干位中参与哈希计算的报文内容;
S4,根据选择的所述报文内容计算得到一哈希值。
优选地,所述取出UDF报文中的若干个位的过程包括:基于UDF报文不同的基址分别出n个偏移,每个所述偏移对应m个bit,取出UDF报文的n×m位,其中,n,m均为大于等于1的整数。
优选地,S3中,所述掩码字段的位数为取出的UDF报文的若干位数的1/n,将所述掩码字段中的每一位扩展为n位,对应控制选择所述UDF报文的若干位中的n位,n为8的倍数。
优选地,S2中,还将所述报文中的关键字段送给掩码寄存器。
优选地,S4中,根据选择的所述报文内容及所述报文中的关键字段计算得到一哈希值。
优选地,所述掩码寄存器中的掩码字段数与CAM表中的CAM条目数相同。
本发明还揭示了另外一种技术方案:一种基于UDF报文实现哈希运算的装置,所述装置包括:
报文查找模块,用于根据报文中的关键字段查找CAM表,匹配得到一条CAM条目,并根据查找结果取出UDF报文中的若干位;
报文传送模块,用于将匹配到的所述CAM条目的索引及取出的所述UDF报文的若干位送给掩码寄存器;
报文内容选择模块,用于根据所述CAM条目的索引查找掩码寄存器,匹配得到一个掩码字段,并根据所述掩码字段选择所述若干位中参与哈希计算的报文内容;
哈希值计算模块,用于根据选择的所述报文内容计算得到一哈希值。
优选地,所述报文查找模块取出UDF报文中的若干个位的过程包括:基于UDF报文不同的基址分别出n个偏移,每个所述偏移对应m个bit,取出UDF报文的n×m位,其中,n,m均为大于等于1的整数。
优选地,所述报文内容选择模块中,所述掩码字段的位数为取出的UDF报文的若干位数的1/n,将所述掩码字段中的每一位扩展为n位,对应控制选择所述UDF报文的若干位中的n位,其中,n为8的倍数。
本发明还提出了另外一种技术方案:一种基于UDF报文实现负载均衡的方法,包括:
A1,根据UDF报文内容计算出一哈希值;
A2,根据所述哈希值、负载均衡组的base值及负载均衡组的成员数,计算得到一负载均衡成员表的索引值;
A3,根据所述索引值查找负载均衡成员表得到一用于将UDF报文转发出去的成员出口;
其中,所述步骤A1基于上述基于UDF报文实现哈希运算的方法实现。
优选地,A2中计算索引值的公式为:MemberBase+HashValue%Mem berNumber,其中,MemberBase为负载均衡组的base值,HashValue为哈希值,MemberNumber为负载均衡组的成员数。
本发明的有益效果是:提出一种基于用户自定义报文(UDF报文)计算hash值,实现负载均衡的芯片实现方法,实现了对于UDF报文可以做Link agg,因此增加了带宽,并且增加冗余连接备份,进而提高连接的健壮性。
附图说明
图1、2是本发明基于UDF报文实现负载均衡的流程示意图;
图3是本发明基于UDF报文实现哈希运算的流程示意图;
图4是本发明基于UDF报文实现哈希运算的原理示意图;
图5是本发明CAM表和掩码寄存器对应关系的示意图;
图6是本发明基于UDF报文实现哈希运算的装置的模块框图。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
本发明所揭示的一种基于UDF报文实现哈希运算、负载均衡的方法及装置,实现了对UDF报文的负载均衡。
结合图1和图2所示,本发明所揭示的一种基于UDF报文实现负载均衡的方法,包括:
A1,根据UDF报文内容计算出一哈希值。
具体地,如图3所示,A1包括以下步骤:
S1,根据报文中的关键字段查找CAM表,匹配得到一条CAM条目,并根据查找结果取出UDF报文中的若干位。
具体地,结合图4和图5所示,芯片根据报文中的关键字段查找CAM表,匹配得到一条CAM条目,即找到条件匹配的UDF报文,对该UDF报文进行解析。这里的关键字段包括但不限于是报文的目的MAC地址(macda)、源MAC地址(macsa)、目的IP地址(ipda)、源IP地址(ipsa)中的其中一个或多个字段的组合等。
CAM表中有n条CAM条目,如图6所示,如有16条CAM entry(CAM entry[0]~CAMentry[15]),所有的CAM entry定义在报文解析模块(ParserUDFCam)中,ParserUDFCam根据报文的关键字段找到匹配的CAM条目后,得到查找结果(ParserUDFCamResult)。
之后,根据查找结果从UDF报文中取指定位置的报文内容,具体地,基于UDF报文不同的基址分别出n个偏移,每个偏移对应m个bit,这样就一共取出UDF报文的n×m位报文内容,其中,n,m均为大于等于1的整数。如基于UDF报文二层头L2出offset 4,基于三层头L3出offset 8,基于四层头L4出offset 0,基于四层头L4出offset 4,,每个偏移对应32个bit,这样就一共取出UDF报文的4×32=128位报文内容。
S2,将匹配到的CAM条目的索引及取出的UDF报文的若干位送给掩码寄存器。
这里匹配到的CAM条目的索引(udf hit_index)由上述查找结果ParserUDFCamResult中得到,为匹配到的CAM条目的地址值。取出的UDF报文的若干位,如上述128位,即udf[127:0]。
另外,除了将CAM条目的索引及取出的UDF报文内容送给掩码寄存器外,还将报文解析过程中的报文关键字段,即上述报文的目的MAC地址(macda)、源MAC地址(macsa)、目的IP地址(ipda)、源IP地址(i psa)等字段送给掩码寄存器,用于后续哈希运算使用。
S3,掩码寄存器根据CAM条目的索引匹配得到一个掩码字段,并根据掩码字段选择若干位中参与哈希计算的报文内容。
具体地,结合图5所示,掩码寄存器(IpeAclGenHashKeyCtl)中也具有多个掩码字段(gUdfMaskn.udfBitmapEn),其内的掩码字段个数与CAM表中的CAM条目数相同,即如CAM表中具有16条CAM条目,则掩码寄存器中对应有16个掩码字段(gUdfMask0.udfBitmapEn~gUdfMask15.udf BitmapEn)。
根据CAM条目的索引(hit_index)会匹配得到一个掩码字段,根据掩码字段选择若干位中参与哈希计算的报文内容。其中,掩码字段的位数为取出的UDF报文的若干位数的1/n,将掩码字段中的每一位扩展为n位,对应控制选择UDF报文的若干位中的n位,其中,n为8的倍数。以上述取出的UDF报文的若干位为128位为例,如掩码字段的位数为16bit,即掩码字段的每一位需要扩展为8位,对应控制128位报文内容的8位,如掩码字段为0000000000000001,即表示选取的128个bit中最低位的8个bit参与哈希计算;又如掩码字段为1111111111111111,则表示选取的128个bit中所有bit均参与哈希计算。
S4,根据选择的报文内容计算得到一哈希值。
具体地,这里不仅根据选择的报文内容,如选取128位报文内容中最低位的8bit报文内容,还根据上述步骤S2中的报文关键字段进行哈希计算,哈希计算的原理这里不再赘述,可采用现有哈希函数实现。
A2,根据哈希值、负载均衡组的base值及负载均衡组的成员数,计算得到一负载均衡成员表的索引值。
具体的,如图1所示,这里的哈希值即为上述步骤A1中计算得到的哈希值;负载均衡组的base值和负载均衡组的成员数均通过查找得到的负载均衡组确定,该负载均衡组具体是通过查找芯片中的转发表确定负载均衡组的索引值(linkaggGroupIndex),该linkaggGroupIndex即对应一负载均衡组。
本实施例中,计算负载均衡成员表的索引值的公式为:MemberBase+HashValue%MemberNumber,其中,MemberBase为负载均衡组的base值,HashValue为哈希值,MemberNumber为负载均衡组的成员数。
A3,根据计算得到的负载均衡成员表的索引值查找负载均衡成员表得到一用于将UDF报文转发出去的成员出口。
另外,如图6所示,本发明所揭示的一种基于UDF报文实现哈希运算的装置,包括:
报文查找模块,用于根据报文中的关键字段查找CAM表,匹配得到一条CAM条目,并根据查找结果取出UDF报文中的若干位。
报文传送模块,用于将匹配到的CAM条目的索引及取出的UDF报文的若干位送给掩码寄存器。
报文内容选择模块,用于根据CAM条目的索引查找掩码寄存器,匹配得到一个掩码字段,并根据掩码字段选择若干位中参与哈希计算的报文内容。
哈希值计算模块,用于根据选择的报文内容计算得到一哈希值。
这里的报文查找模块、报文传送模块、报文内容选择模块及哈希值计算模块的工作原理可参照上述S1~S4的对应描述,这里不再赘述。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
Claims (10)
1.一种基于UDF报文实现哈希运算的方法,其特征在于,所述方法包括:
S1,根据报文中的关键字段查找CAM表,匹配得到一条CAM条目,并根据查找结果取出UDF报文中的若干位;
S2,将匹配到的所述CAM条目的索引及取出的所述UDF报文的若干位送给掩码寄存器;
S3,所述掩码寄存器根据所述CAM条目的索引匹配得到一条掩码条目,并根据所述掩码条目中的掩码值选择所述若干位中参与哈希计算的报文内容;
S4,根据选择的所述报文内容计算得到一哈希值。
2.根据权利要求1所述的基于UDF报文实现哈希运算的方法,其特征在于,所述取出UDF报文中的若干个位的过程包括:基于UDF报文不同的基址分别出n个偏移,每个所述偏移对应m个bit,取出UDF报文的n×m位,其中,n,m均为大于等于1的整数。
3.根据权利要求1所述的基于UDF报文实现哈希运算的方法,其特征在于,S3中,所述掩码条目中的掩码值的位数为取出的UDF报文的若干位数的1/n,将所述掩码值中的每一位扩展为n位,对应控制选择所述UDF报文的若干位中的n位,n为8的倍数。
4.根据权利要求1所述的基于UDF报文实现哈希运算的方法,其特征在于,S2中,还将所述报文中的关键字段送给掩码寄存器。
5.根据权利要求4所述的基于UDF报文实现哈希运算的方法,其特征在于,S4中,根据选择的所述报文内容及所述报文中的关键字段计算得到一哈希值。
6.一种基于UDF报文实现哈希运算的装置,其特征在于,所述装置包括:
报文查找模块,用于根据报文中的关键字段查找CAM表,匹配得到一条CAM条目,并根据查找结果取出UDF报文中的若干位;
报文传送模块,用于将匹配到的所述CAM条目的索引及取出的所述UDF报文的若干位送给掩码寄存器;
报文内容选择模块,用于根据所述CAM条目的索引查找掩码寄存器,匹配得到一条掩码条目,并根据所述掩码条目中的掩码值选择所述若干位中参与哈希计算的报文内容;
哈希值计算模块,用于根据选择的所述报文内容计算得到一哈希值。
7.根据权利要求6所述的基于UDF报文实现哈希运算的装置,其特征在于,所述报文查找模块取出UDF报文中的若干个位的过程包括:基于UDF报文不同的基址分别出n个偏移,每个所述偏移对应m个bit,取出UDF报文的n×m位,其中,n,m均为大于等于1的整数。
8.根据权利要求6所述的基于UDF报文实现哈希运算的装置,其特征在于,所述报文内容选择模块中,所述掩码条目中的掩码值的位数为取出的UDF报文的若干位数的1/n,将所述掩码值中的每一位扩展为n位,对应控制选择所述UDF报文的若干位中的n位,n为8的倍数。
9.一种基于UDF报文实现负载均衡的方法,其特征在于,所述方法包括:
A1,根据UDF报文内容计算出一哈希值;
A2,根据所述哈希值、负载均衡组的base值及负载均衡组的成员数,计算得到一负载均衡成员表的索引值;
A3,根据所述索引值查找负载均衡成员表得到一用于将UDF报文转发出去的成员出口;
其中,所述步骤A1基于所述权利要求1~5任意一项基于UDF报文实现哈希运算的方法实现。
10.根据权利要求9所述的基于UDF报文实现负载均衡的方法,其特征在于,A2中计算索引值的公式为:MemberBase+HashValue%MemberNumber,其中,MemberBase为负载均衡组的base值,HashValue为哈希值,MemberNumber为负载均衡组的成员数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811061485.XA CN108881037A (zh) | 2018-09-12 | 2018-09-12 | 一种基于udf报文实现哈希运算、负载均衡的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811061485.XA CN108881037A (zh) | 2018-09-12 | 2018-09-12 | 一种基于udf报文实现哈希运算、负载均衡的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108881037A true CN108881037A (zh) | 2018-11-23 |
Family
ID=64324025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811061485.XA Withdrawn CN108881037A (zh) | 2018-09-12 | 2018-09-12 | 一种基于udf报文实现哈希运算、负载均衡的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108881037A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110035074A (zh) * | 2019-04-01 | 2019-07-19 | 盛科网络(苏州)有限公司 | 一种acl匹配udf报文的芯片实现方法及装置 |
CN110708329A (zh) * | 2019-10-16 | 2020-01-17 | 盛科网络(苏州)有限公司 | 一种基于udf识别未知隧道报文的方法 |
WO2022237794A1 (zh) * | 2021-05-13 | 2022-11-17 | 华为技术有限公司 | 一种报文传输方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1809022A (zh) * | 2005-01-17 | 2006-07-26 | 华为技术有限公司 | 以太网设备堆叠方法及其系统 |
US20090204566A1 (en) * | 2008-02-11 | 2009-08-13 | Eric Lawrence Barsness | Processing of Deterministic User-Defined Functions Using Multiple Corresponding Hash Tables |
CN102143074A (zh) * | 2011-03-25 | 2011-08-03 | 中兴通讯股份有限公司 | 网络负荷的分担方法、系统及网络处理器 |
CN102333039A (zh) * | 2011-10-25 | 2012-01-25 | 华为技术有限公司 | 一种转发报文的方法、生成表项的方法及装置 |
CN104009921A (zh) * | 2014-04-28 | 2014-08-27 | 开网科技(北京)有限公司 | 基于任意字段匹配的数据报文转发方法 |
-
2018
- 2018-09-12 CN CN201811061485.XA patent/CN108881037A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1809022A (zh) * | 2005-01-17 | 2006-07-26 | 华为技术有限公司 | 以太网设备堆叠方法及其系统 |
US20090204566A1 (en) * | 2008-02-11 | 2009-08-13 | Eric Lawrence Barsness | Processing of Deterministic User-Defined Functions Using Multiple Corresponding Hash Tables |
CN102143074A (zh) * | 2011-03-25 | 2011-08-03 | 中兴通讯股份有限公司 | 网络负荷的分担方法、系统及网络处理器 |
CN102333039A (zh) * | 2011-10-25 | 2012-01-25 | 华为技术有限公司 | 一种转发报文的方法、生成表项的方法及装置 |
CN104009921A (zh) * | 2014-04-28 | 2014-08-27 | 开网科技(北京)有限公司 | 基于任意字段匹配的数据报文转发方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110035074A (zh) * | 2019-04-01 | 2019-07-19 | 盛科网络(苏州)有限公司 | 一种acl匹配udf报文的芯片实现方法及装置 |
CN110708329A (zh) * | 2019-10-16 | 2020-01-17 | 盛科网络(苏州)有限公司 | 一种基于udf识别未知隧道报文的方法 |
WO2022237794A1 (zh) * | 2021-05-13 | 2022-11-17 | 华为技术有限公司 | 一种报文传输方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11627083B1 (en) | Protocol-independent receive-side scaling | |
CN104904167B (zh) | 通信网络中对于分组处理的高性能基于哈希的查找 | |
US20190058661A1 (en) | Storing keys with variable sizes in a multi-bank database | |
WO2020181740A1 (zh) | 一种高性能的openflow虚拟流表查找方法 | |
CN113519144B (zh) | 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找 | |
CN104468381B (zh) | 一种多域流规则匹配的实现方法 | |
US6973082B2 (en) | Forwarding packets to aggregated links using distributed ingress card processing | |
TWI287723B (en) | Method and data structure for a low memory overhead database | |
JP4482259B2 (ja) | 4ウェイハッシュ表のための方法および装置 | |
JP5921666B2 (ja) | パケットスイッチングのための方法及び装置 | |
US20070280258A1 (en) | Method and apparatus for performing link aggregation | |
CN108881037A (zh) | 一种基于udf报文实现哈希运算、负载均衡的方法及装置 | |
CN100418331C (zh) | 基于网络处理器的路由查找结果缓存方法 | |
CN101594319B (zh) | 表项查找方法和装置 | |
CN103404090B (zh) | 应用于在网络中转发数据时用于载荷散布的表查找方法的可变大小表构造的改进系统和方法 | |
CN104917680B (zh) | 用于执行分组流的并行散列的计算机系统 | |
US20060248095A1 (en) | Efficient RAM lookups by means of compressed keys | |
CN104579974A (zh) | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 | |
WO2012109909A1 (zh) | 数据流负荷分担方法及装置 | |
US9391896B2 (en) | System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network | |
CN104580165A (zh) | 智慧协同网络中的一种协作缓存方法 | |
CN104780101B (zh) | 内容中心网络转发平面fib表结构及其检索方法 | |
US8699485B2 (en) | Multicast over lag and IRB in a routing device | |
US7564841B2 (en) | Apparatus and method for performing forwarding table searches using consecutive symbols tables | |
US8634417B2 (en) | Method and apparatus providing selective flow redistribution across Multi Link Trunk/Link Aggregation Group (MLT/LAG) after port member failure and recovery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20181123 |
|
WW01 | Invention patent application withdrawn after publication |