CN1302645C - 网络处理器系统端口捆绑中实现流量均担的方法 - Google Patents
网络处理器系统端口捆绑中实现流量均担的方法 Download PDFInfo
- Publication number
- CN1302645C CN1302645C CNB031383882A CN03138388A CN1302645C CN 1302645 C CN1302645 C CN 1302645C CN B031383882 A CNB031383882 A CN B031383882A CN 03138388 A CN03138388 A CN 03138388A CN 1302645 C CN1302645 C CN 1302645C
- Authority
- CN
- China
- Prior art keywords
- port
- data message
- current data
- cryptographic hash
- binding group
- 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
Links
Images
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种网络处理器系统端口捆绑中实现流量均担的方法,该方法在当活动的成员端口数目为2的非整数次幂时进行步骤:获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;在由当前活动成员端口数基本等分数据报文的哈希值的分散区间后所形成的多个取值区间中,查找当前数据报文的哈希值所属的取值区间;根据查找到的取值区间得到该区间对应的成员端口索引;以及将当前数据报文发送到所述成员端口索引对应的成员端口。本发明在活动的成员端口数目为2的非整数次幂时能够更均匀、动态地将数据流分布到各个成员端口上,从而能真正保证捆绑组中各个成员端口流量的均衡。
Description
技术领域
本发明涉及网络通信技术,特别涉及一种网络处理器系统端口捆绑中实现流量均担的方法。
背景技术
端口捆绑功能提供将多个以太链路聚合成一个逻辑链路,提高链路带宽的方法,是交换机、路由器的一个重要功能。捆绑组中的所有端口的速率应该相同。端口捆绑应当实现数据流量在捆绑组内的均匀分布,当捆绑组中的某个端口失效时,流量应自动均匀切换到捆绑组的其他端口上。
当报文经过捆绑端口发出时,系统需要从捆绑组内选择一个出端口。选择的结果应该满足以下的两点要求:
(1)同一个流(特定源和特定目的间的特定应用数据报文)应该从同一个端口发出。这样可以保证同一个流数据帧的次序,这在二层交换机的局域网情况下是必须的,因为局域网通信程序一般是不考虑数据帧乱序的。可以通过将标识数据帧的特征值映射到一个端口序号上实现。
(2)应该保证各个端口流量的均衡。根据当前的端口数,将数据流均匀的分布到各个端口上。
目前系统多采用硬件实现端口捆绑(多采用ASIC实现),其流量均担的方法为:
(1)根据报文的特征(源MAC地址、目的MAC地址;源IP地址、目的IP地址;或者源和目的的组合),生成一个特征值X。
(2)根据当前捆绑组中可用的端口数n,对特征值X进行取模操作,得到端口序号i=X%n。
(3)根据端口序号选取相应的端口发出。
由于现有的流量均担算法受到硬件限制,分担的效果只在2的整数次幂端口数时,即端口数为:2、4、8时效果较好,此时可以实现各个端口流量的均匀分布。但是当捆绑组中的某个端口失效,使得可用端口数不再是2的整数次幂时,流量就不能保持均匀。这是由于数字系统使用2进制,且只能进行整数运算的结果。例如当以源MAC地址后2bits作为hashed值时,100个流在3个端口分得的流数为:25/50/25,合理的分布应该是34/33/33,可见此时流量分担的效果很差。捆绑端口流量分担不好,会造成带宽的浪费:一方面某些端口超过物理带宽造成丢包,而另一些端口流量很小。
发明内容
本发明的目的在于提供一种网络处理器系统端口捆绑中实现流量均担的方法,通过根据当前可用端口数采用不同的端口选择方法,以得到最佳的流量分担效果。
本发明的技术方案一:
一种网络处理器系统端口捆绑中实现流量均担的方法,所述端口捆绑是由物理特性相同的多个成员端口聚合成一个捆绑组,当所述捆绑组中当前活动的成员端口数目为2的非整数次幂时按以下步骤分配数据报文:
A、获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
B、在由当前活动成员端口数基本等分数据报文的哈希值的分散区间后所形成的多个取值区间中,查找当前数据报文的哈希值所属的取值区间;
C、根据查找到的取值区间得到该区间对应的成员端口索引;以及
D、将当前数据报文发送到所述成员端口索引所对应的成员端口。
根据上述技术方案:
所述捆绑组中当前活动的成员端口数目为2的整数次幂时按以下步骤分配数据报文:
获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
将捆绑组中活动端口数减1并与当前数据报文的哈希值进行二进制的按位与操作,得到被选成员端口索引;以及
将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
所述捆绑组中当前活动的成员端口数目为2的整数次幂时还可按以下步骤分配数据流:
所述捆绑组中活动的成员端口数目为2的整数次幂时按以下步骤分配数报文:
获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
用活动的成员端口数对当前数据报文的哈希值进行取模操作,得到被选成员端口索引;以及
将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
从多个取值区间中查数据流特征值所属区间时采用二分法进行查找。
数据报文的特征值为源MAC地址、目的MAC地址、源IP地址、目的IP地址、IP端口号和MPLS标签之一或多项的组合。
本发明的技术方案二:
一种网络处理器系统端口捆绑中实现流量均担的方法,所述端口捆绑是由物理特性相同的多个成员端口聚合成一个捆绑组,当所述捆绑组中当前活动的成员端口数目为2的整数次幂时按以下步骤分配数据报文:
获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
将捆绑组中活动端口数减1并与当前数据报文的哈希值进行二进制的按位与操作,得到被选成员端口索引;以及
将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
本发明在捆绑组中成员端口数目为2的非整数幂时,将数据报文在其哈希值的取值范围内均匀地分散,并根据当前活动的成员端口数对取值范围基本等分来分配流量,因而能够更均匀、动态地将数据流分布到各个成员端口上,从而能真正保证捆绑组中各个成员端口流量的均衡。
附图说明
图1为现有技术中端口捆绑流量分担示意图;
图2为本发明数据报文发向捆绑端口的示意图;
图3、图5和图6为本发明的流量均担的流程图;
图4为本发明通过二分法查找端口索引示意图。
具体实施方式
端口捆绑是由物理特性相同的多个成员端口聚合成一个捆绑组,成员端口为物理端口,其索引从0开始。参阅图2所示,在交换机,以二层报文为例,当报文从某个端口进入后,在源接口板SB通过目的MAC地址查找MAC表得到出端口的目标板TB和目标端口TP,通过处理后,报文经过网板被发送到目标板TB。目标板TB根据目标端口TP的属性表得知该目标端口TP是捆绑端口。网络处理器根据捆绑端口中当前活动的成员端口数目是2的整数次幂还是非整数次对数据报文的流量进行均分。
数据报文的流量均担是通过哈希(hash)算法把所有的流压缩为一定数目的流,该数目由数据流的哈希值的总比特位数决定,如哈希值取9个比特位,则将所有流压缩为512个流(2的9次幂),然后把512个流均匀分担就实现了所有流的均匀分担。
参阅图3,当捆绑端口中当前活动的成员端口数目为2的非整数次幂(即3,5,6,或7等)时进行下述步骤。其中活动端口数为1时,被选端口索引=0。
步骤10:获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值。
数据报文的特征值为源MAC地址、目的MAC地址、源IP地址、目的IP地址、IP端口号和MPLS标签(多协议标签交换报文的标签)之一或多项的组合。
在本实施例中,对于二层报文,使用数据流的源MAC地址和目的MAC地址生成标识数据流的哈希值;对于三层报文,使用数据流的源IP地址和目的IP地址生成标识数据流的哈希值。
步骤20:在由当前活动成员端口数基本等分数据流哈希值的分散区间后所形成的多个取值区间中,查找当前数据报文的哈希值所属的取值区间。
数据流的特征值(哈希值)的总比特数不同,其特征值的分散区间也不同。由捆绑组中当前活动的端口数将分散区间基本等分,形成多个取值区间,其中每一取值区间对应一个活动的成员端口索引。所有这些不同的分散区间被基本等分后,取值区间与成员端口索引的对应关系可预先生成并保存于交换机或路由器中供转发数据报文时查询,查询时可通过活动成员端口数等进行索引。
查找取值区间采用二分法进行,也可采用其它查找方法。
步骤30:根据查找到的取值区间得到该区间对应的成员端口索引。
步骤40:将当前数据报文发送到所述成员端口索引对应的成员端口。
以哈希值(hashed)取9个比特位为例进行说明。数据流的特征值经hash后分散到[0--511](29)之间。设捆绑组中当前活动端口数为7,并采用二分法查找,参阅图4。
哈希(hashed)值最大为511,基本分成7等分,则分界点分别为0、73、146、219、292、365、438,511(9比特的最大值)。这样就形成了7个取值区间:[0,73],(73,146],(146,219],(219,292],(292,365],(365,438],(438,511],其中“()”表示不包含边界值,“[]”表示包含边界值。每个区间的大小为:74,73,73,73,73,73,73。
这样,就将总流量分成了基本均匀的7等分,每个区间唯一对应捆绑组的一个成员端口索引,将hashed值落在相应区间的报文发送到对应的端口,从而实现流量的均衡分担。(当哈希值能被活动成员端口数整除时,则属于等分。)
二分法查找流程如下:
得到数据报文的哈希值值后,首先比较hashed值和中间值219。如果大于,就在右半区继续比较;如果小于,则在左半区继续比较。使用同样的方式,直到hashed值落入它所在的区间,得到该区间对应的成员端口索引,进而得到该数据报文的出端口。
从上可看出,7个端口时各个端口上分担的流数比为74/73/73/73/73/73/73,可见分担效果已经很好。
当捆绑端口中当前活动的成员端口数目为2的整数次幂(即2,4,或8等)时可通过下述两种方法进行流量均担。
参阅图5,其过程如下:
步骤100:获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值。
步骤110:将捆绑组中活动端口数减1并与当前数据报文的哈希值进行二进制的按位与操作,得到被选成员端口索引。
步骤120:将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
参阅图6,其过程如下:
步骤200:获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值。
步骤210:用活动的成员端口数对当前数据报文的哈希值进行取模操作,得到被选成员端口索引。
步骤220:将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
在本发明中,捆绑组中的成员端口数据为可2~8。数据流的哈希值X取值范围为:0<=X<2^16。
Claims (10)
1、一种网络处理器系统端口捆绑中实现流量均担的方法,所述端口捆绑是由物理特性相同的多个成员端口聚合成一个捆绑组,其特征在于所述捆绑组中当前活动的成员端口数目为2的非整数次幂时按以下步骤分配数据报文:
A、获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
B、在由当前活动成员端口数基本等分数据报文的哈希值的分散区间后所形成的多个取值区间中,查找当前数据报文的哈希值所属的取值区间;
C、根据查找到的取值区间得到该区间对应的成员端口索引;以及
D、将当前数据报文发送到所述成员端口索引所对应的成员端口。
2、如权利要求1所述的方法,其特征在于所述捆绑组中当前活动的成员端口数目为2的整数次幂时按以下步骤分配数据报文:
获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
将捆绑组中活动端口数减1并与当前数据报文的哈希值进行二进制的按位与操作,得到被选成员端口索引;以及
将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
3、如权利要求1所述的方法,其特征在于所述捆绑组中当前活动的成员端口数目为2的整数次幂时按以下步骤分配数报文:
获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
用活动的成员端口数对当前数据报文的哈希值进行取模操作,得到被选成员端口索引;以及
将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
4、如权利要求1所述的方法,其特征在于步骤B中采用二分法进行查找。
5、如权利要求1至4任一所述的方法,其特征在于,成员端口索引从0开始,当所述捆绑组中活动的成员端口数目为1时被选成员端口索引值取0。
6、如权利要求1至4任一所述的方法,其特征在于,数据报文的特征值为源MAC地址、目的MAC地址、源IP地址、目的IP地址、IP端口号和MPLS标签之一或多项的组合。
7、如权利要求1所述的方法,其特征在于,所述的捆绑组中的成员端口数据为2~8。
8、如权利要求1所述的方法,其特征在于,所述数据流的哈希值的取值范围为大于等于0并小于2^16。
9、如权利要求1、7或8所述的方法,其特征在于,每一分散区间在不同的活动成员端口数下所形成的多种对应关系预先保存。
10、一种网络处理器系统端口捆绑中实现流量均担的方法,所述端口捆绑是由物理特性相同的多个成员端口聚合成一个捆绑组,其特征在于所述捆绑组中当前活动的成员端口数目为2的整数次幂时按以下步骤分配数据报文:
获取当前数据报文的特征值,经过哈希操作得到能够标识该报文特征的哈希值;
将捆绑组中活动端口数减1并与当前数据报文的哈希值进行二进制的按位与操作,得到被选成员端口索引;以及
将当前数据报文发送到所述被选成员端口索引所对应的成员端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031383882A CN1302645C (zh) | 2003-05-26 | 2003-05-26 | 网络处理器系统端口捆绑中实现流量均担的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031383882A CN1302645C (zh) | 2003-05-26 | 2003-05-26 | 网络处理器系统端口捆绑中实现流量均担的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1553654A CN1553654A (zh) | 2004-12-08 |
CN1302645C true CN1302645C (zh) | 2007-02-28 |
Family
ID=34323719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031383882A Expired - Fee Related CN1302645C (zh) | 2003-05-26 | 2003-05-26 | 网络处理器系统端口捆绑中实现流量均担的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1302645C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724106A (zh) * | 2011-03-30 | 2012-10-10 | 华为技术有限公司 | 媒体接入控制地址的学习方法、网络侧设备和系统 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7675918B2 (en) * | 2006-11-13 | 2010-03-09 | Cisco Technology, Inc | Hash-based preemption |
CN101014005B (zh) * | 2007-01-22 | 2010-09-22 | 华为技术有限公司 | 一种减少链路聚合组中业务损伤的方法和装置 |
CN101296185B (zh) * | 2008-06-05 | 2011-12-14 | 杭州华三通信技术有限公司 | 一种均衡组的流量控制方法及装置 |
CN101355483B (zh) * | 2008-08-27 | 2012-02-22 | 成都市华为赛门铁克科技有限公司 | 一种多网口发送数据包的方法和设备 |
CN101616083B (zh) * | 2009-08-06 | 2012-01-04 | 杭州华三通信技术有限公司 | 一种报文转发方法和装置 |
CN102143041B (zh) * | 2010-07-02 | 2014-03-26 | 华为技术有限公司 | 一种网络流量分担的方法、装置及系统 |
CN102577280B (zh) * | 2011-11-28 | 2014-05-21 | 华为技术有限公司 | 发送报文的方法、装置和系统 |
CN102404156B (zh) * | 2011-12-12 | 2015-07-08 | 杭州华三通信技术有限公司 | 一种基于聚合链路的数据传输方法和设备 |
CN102821049A (zh) * | 2012-08-15 | 2012-12-12 | 华为技术有限公司 | 转发报文的方法和装置 |
CN105743816B (zh) * | 2014-12-10 | 2019-01-25 | 华为技术有限公司 | 一种链路聚合方法及装置 |
CN112671641B (zh) * | 2016-08-24 | 2022-10-18 | 华为技术有限公司 | 报文转发方法及装置 |
CN109218179A (zh) * | 2017-07-07 | 2019-01-15 | 中兴通讯股份有限公司 | 负载分担方法及装置、交换机及计算机可读存储介质 |
CN108134744B (zh) * | 2017-12-06 | 2021-11-23 | 新华三技术有限公司 | 一种irf堆叠中的负载分担方法和单板 |
CN112751791B (zh) * | 2020-12-30 | 2022-05-17 | 迈普通信技术股份有限公司 | 报文转发及信息处理方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6111877A (en) * | 1997-12-31 | 2000-08-29 | Cisco Technology, Inc. | Load sharing across flows |
US20020027908A1 (en) * | 2000-06-19 | 2002-03-07 | Broadcom Corporation | Switch fabric with path redundancy |
US20020097736A1 (en) * | 1998-04-01 | 2002-07-25 | Earl Cohen | Route/service processor scalability via flow-based distribution of traffic |
JP2002217967A (ja) * | 2001-01-17 | 2002-08-02 | Nec Corp | フロー検出装置及びそれに用いるフロー検出方法 |
CN1369991A (zh) * | 2002-04-01 | 2002-09-18 | 北京港湾网络有限公司 | 交换机捆绑端口分流方法及交换机芯片 |
CN1414737A (zh) * | 2002-05-23 | 2003-04-30 | 华为技术有限公司 | 一种流量负载分担的方法 |
-
2003
- 2003-05-26 CN CNB031383882A patent/CN1302645C/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6111877A (en) * | 1997-12-31 | 2000-08-29 | Cisco Technology, Inc. | Load sharing across flows |
US20020097736A1 (en) * | 1998-04-01 | 2002-07-25 | Earl Cohen | Route/service processor scalability via flow-based distribution of traffic |
US20020027908A1 (en) * | 2000-06-19 | 2002-03-07 | Broadcom Corporation | Switch fabric with path redundancy |
JP2002217967A (ja) * | 2001-01-17 | 2002-08-02 | Nec Corp | フロー検出装置及びそれに用いるフロー検出方法 |
CN1369991A (zh) * | 2002-04-01 | 2002-09-18 | 北京港湾网络有限公司 | 交换机捆绑端口分流方法及交换机芯片 |
CN1414737A (zh) * | 2002-05-23 | 2003-04-30 | 华为技术有限公司 | 一种流量负载分担的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724106A (zh) * | 2011-03-30 | 2012-10-10 | 华为技术有限公司 | 媒体接入控制地址的学习方法、网络侧设备和系统 |
CN102724106B (zh) * | 2011-03-30 | 2015-03-11 | 华为技术有限公司 | 媒体接入控制地址的学习方法、网络侧设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1553654A (zh) | 2004-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1302645C (zh) | 网络处理器系统端口捆绑中实现流量均担的方法 | |
CN1254059C (zh) | 一种多协议标签交换虚拟专用网的实现方法 | |
EP2127219B1 (en) | Forwarding multicast traffic over link aggregation ports | |
US20110164503A1 (en) | System and Method to Support Enhanced Equal Cost Multi-Path and Link Aggregation Group | |
US20070280258A1 (en) | Method and apparatus for performing link aggregation | |
US20070110062A1 (en) | Scalable IP-services enabled multicast forwarding with efficient resource utilization | |
CN1809022A (zh) | 以太网设备堆叠方法及其系统 | |
CN101170512B (zh) | 报文业务处理方法 | |
US10292069B2 (en) | System and method for multi-channel packet transmission | |
CN1777143A (zh) | 使用分布式网络处理的数据交换机中的内部负载平衡 | |
CN100338923C (zh) | 基于网络处理器实现ip报文分片重组的方法 | |
CN1875585A (zh) | 利用mac限制来控制动态未知l2泛滥 | |
CN1472938A (zh) | 实现rpr网和mpls网之间端对端连接的方法和设备 | |
CN1812367A (zh) | 一种多协议标签交换网络的数据传输方法及系统 | |
CN101056257A (zh) | 实现链路聚合和保护倒换的方法及系统 | |
CN101056246A (zh) | 一种实现负载分担的方法和装置 | |
CN1878130A (zh) | 一种数据转发方法 | |
CN106470157B (zh) | 隧道的优先级设置方法及装置 | |
CN1787489A (zh) | 将接口流量在多个网络处理器引擎中均担的方法 | |
CN1913454A (zh) | 一种ip报文负载分担实现方法及装置 | |
CN1859417A (zh) | 一种多台网络设备链路聚集的实现方法 | |
CN1798098A (zh) | 区分多业务的抗ip组播数据流冲击通信系统的方法 | |
WO2010072122A1 (zh) | 一种传输报文的方法、端口和系统 | |
CN1845531A (zh) | 一种数据转发控制方法和装置 | |
CN1809070A (zh) | 一种l2vpn实现每vc在接入层资源控制的方法 |
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: 20070228 Termination date: 20190526 |
|
CF01 | Termination of patent right due to non-payment of annual fee |