CN100450037C - 一种ip报文负载分担实现方法及装置 - Google Patents
一种ip报文负载分担实现方法及装置 Download PDFInfo
- Publication number
- CN100450037C CN100450037C CNB2006101119935A CN200610111993A CN100450037C CN 100450037 C CN100450037 C CN 100450037C CN B2006101119935 A CNB2006101119935 A CN B2006101119935A CN 200610111993 A CN200610111993 A CN 200610111993A CN 100450037 C CN100450037 C CN 100450037C
- Authority
- CN
- China
- Prior art keywords
- message
- load balancing
- hash
- address
- load
- 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
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及通信技术领域中一种IP报文负载分担实现方法及装置,所述方法包括:利用报文源IP地址、目的IP地址及唯一标识一份报文的标识字段作为基于数据流的负载分担hash算法中的key,获得与负载分担路径数量相关位数的结果;将所述结果作为索引,查找对应的负载分担路径;利用所述查找到的路径转发IP报文。本发明实现了综合基于数据流负载分担算法和基于报文的负载分担算法的优点,对于多条数据流和单条数据流的情况都可以使报文能够均衡的分担到全部分担链路上。且算法实现简单,也不会占用和访问大量存储空间,不会影响转发性能。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种IP报文负载分担实现方法及装置。
背景技术
随着网络应用的日益普及和网络规模日益庞大,Internet上需要传送的信息量大大增加。对于路由器来说,他们需要为大量报文提供寻径、转发功能,此时路由器的负载能力和性能就成为必须面对的一个实际问题:在网络流量增大的情况下,甚至接口故障的情况下,如何能够使路由器仍然提供可靠的高质量的服务?其中一种可行的方法就是负载分担。所谓的负载分担就是到达一个给定的目的地址允许使用多条路径的技术。这些路径可能来源于静态路由或者动态路由协议,一种负载分担组网如图1所示。
如图1,用户需要访问远端服务器,数据流在路由器A查询路由表后,找到两条路径:A-B-D和A-C-D。这时通过负载分担处理将数据流量平均分担到两条路径上,因此对于单一路径上的流量针对于不负载分担的情况都减少到一半,这就大大缓解了路由器B和C的承受能力。
此外,负载分担也被使用在trunk上。trunk是将多个物理端口聚合在一起形成一个汇聚组,实现出、入负荷在各成员端口中的分担,同时提供更高的连接可靠性的技术。每个trunk端口可以配置同一IP地址,即逻辑上可以被看作一个实际端口来使用,数据流通过负载分担被平均分担到trunk组内的不同物理端口上,达到减少端口负荷能力的目的。典型的组网如图2所示。
不难发现,无论对于多条路由的负载分担,还是trunk的负载分担,要想最大可能的提高分担链路的负荷能力和性能,充分利用网络资源,就要尽可能的将数据流量平均的分担到每条链路上,因此好的负载分担算法的选择则成为关键。
负载分担的基本算法通常有两种:基于数据流的负载分担和基于报文的负载分担。基于数据流的负载分担,是利用数据流包含的特定信息来分发报文,最常见的是路由器针对源地址 & 目的地址对来分发报文:假设到达同一个主机有N条路径,在目的地址相同的情况下,源地址是访问者1地址的所有报文走第一条路,源地址是访问者2地址的所有报文走第二条路……,依此类推,源地址是访问者N地址的所有报文走第N条路。
对于IP报文来说,使用报文源IP地址 & 目的IP地址作为key进行hash处理,最简单的hash算法是使用源IP与目的IP进行异或操作,之后将32bit长度的结果再进行多次折半异或操作,每次折半异或操作后结果长度减半,折半异或次数与最后需要获得的hash结果位长有关,例如需要获得4bit的hash结果,那么需要折半异或3次。最后将hash结果作为分担链路标识选择对应的负载分担链路转发报文。
上述分担算法简单描述如下:
key1=源IP地址,
key2=目的IP地址,
key1 XOR key2=key’,
key’_H16 XOR key’_L16=key”,
key”_H8 XOR key”_L8=key”’,
key”’_H4 XOR key”’_L4=key””,
key””低4bit作为hash的最后结果
上述操作详细流程如图3所示,对于给定的源地址和目的地址对即使有多条可用路径也只能选择同一条路径。若只有一条流则只会走一条分担链路,根本无法进行负载分担。在实际环境中,到达各个目的地址的流量可能相差很多,到达某个目的地址的报文又总是选择同一条路径,这种工作方式可能会导致负载分担不均衡。
基于报文的负载分担就是说路由器将目的地址是A的一个报文从第一条路径发送,目的地址是A(目的地址相同)的第二个报文从第二条路径发送。
基于报文的负载分担算法实现思想是为每条需要进行负载分担的路由或trunk接口分配一个计数器,每收到一个报文,将对应的计数器加1,根据计数器值轮询各条对应的分担路径,按顺序从相应分担路径转发报文,以达到负载分担效果。
此种方法的缺点是:需要为每条需要进行负载分担的路由或trunk接口都分配一个计数器,路由器上往往会存在大量路由,这样会导致要分配管理大量计数器,造成存储资源的严重浪费。此外,对计数器的频繁操作也会大量占用存储器访问带宽,影响转发性能。
发明内容
本发明的目的在于提供一种IP报文负载分担实现方法及装置,解决了基于数据流的负载分担算法的分担不均衡问题及基于报文的负载分担算法的存储资源的严重浪费和影响转发性能问题。
本发明的目的是通过以下技术方案实现的:
一种IP报文负载分担实现方法,包括:
利用报文源IP地址、目的IP地址及唯一标识一份报文的标识字段作为基于数据流的负载分担hash计算中的key,进行hash计算操作,获得与负载分担路径数量相关位数的结果;
将所述结果作为索引,在该条路由对应的分担链路表中查找对应的负载分担路径;
利用查找到的负载分担路径转发IP报文。
所述标识字段仅与相同位数的hash计算结果进行相应的hash操作。
所述标识字段在每发送一份报文时,其值加1。
所述标识字段为报文头部中的标识信息。
一种IP报文负载分担实现装置,包括:
标识字段获取模块,用于获取报文中唯一标识一份报文的标识字段;
负载分担计算模块,用于将报文源IP地址、目的IP地址及标识字段作为hash计算中的key进行hash计算操作,获得负载分担路径;其进一步包括:负载分担hash计算子模块,用于将报文源IP地址、目的IP地址及标识字段作为key进行hash计算操作,得到与负载分担路径数量相关位数的结果;负载分担路径查找子模块,用于将所述hash算法操作获得的结果作为索引在该条路由对应的分担链路表中查找对应的负载分担路径;
报文转发模块,用于根据负载分担计算模块获得的负载分担路径转发IP报文。
所述装置设置于路由器中。
由上述本发明提供的技术方案可以看出,本发明由于在基于数据流的分担hash算法中引入了IP报文的唯一标识,相当于引入了基于报文的负载分担算法的特点,即当同一条数据流,报文源地址和目的地址均不变的情况下,hash结果也会根据报文携带的16位标识不同而不断变化,使相同数据流的报文也能够均衡的分担到全部分担链路上。同时,由于使用报文自己携带的标识,而不用再为每条需要进行负载分担的路由或trunk接口都分配计数器,大大减少了存储资源的浪费,也不会因为频繁访问存储器影响转发性能。
因此本发明实现了综合基于数据流负载分担算法和基于报文的负载分担算法的优点,对于多条数据流和单条数据流的情况都可以使报文能够均衡的分担到全部分担链路上。且算法实现简单,也不会占用和访问大量存储空间,对转发性能没有影响。
附图说明
图1为现有技术负载分担组网示意图;
图2为现有技术trunk组网示意图;
图3为现有技术逐流hash算法实现流程图;
图4为IP数据报格式及首部中的各字段;
图5为本发明所述方法一种实施例操作流程图;
图6为本发明所述装置一种实施例模块示意图。
具体实施方式
本发明的核心思想是提供一种IP报文负载分担实现方法及装置,综合基于数据流和基于报文的负载分担算法,在进行hash计算时引入IP报文头部中唯一标识一份数据报的16位标识信息,对于多条数据流或单条数据流的情况都可以使报文均衡的分担到全部分担链路上。
所述IP数据报格式及首部中的各字段如图4所示,各字段说明如下:
版本:表示IP协议的版本,通常有4和6两种,图4是IPV4报文格式。
首部长度:表示IP首部占32bit字的数目,包括可能的选项部分。
服务类型:包括一个3bit的优先级子字段,4bit的TOS(服务类型)子字段和1bit未用位,但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。
总长度:指整个IP数据报的长度,以字节为单位。
标识字段:唯一地标识主机发送的每一份数据报,也就是下文中用到的16位标识字段。
片偏移:当报文需要分片时,标识该片偏移原始数据报开始处的位置。
生存时间:设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。
协议:标识以此IP报文承载的高层协议类型。
首部检验和:是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。
源IP地址和目的IP地址:标识报文发出的起始地址和最终到达的目的地址。
任选项:是数据报中的一个可变长的可选信息,这些选项很少被使用,并非所有的主机和路由器都支持这些选项。
16位标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文此标识字段的值就会加1。此标识最初是用于在IP报文分片时,在目的地通过相同标识来确定相同报文进行分片重组使用的。
此处利用该标识唯一标识每一个报文的特点,代替基于报文的负载分担的分配计数器使用,将该标识与报文源IP地址和目的IP地址共同作为hash算法的key,重新改进hash算法,最简单的方法可以仍然为异或操作,例如:
key1=源IP地址,
key2=目的IP地址,
key3=16位标识,
key1 XOR key2=key’,
key’_H16 XOR key’_L16 XOR key3=key”,
key”_H8 XOR key”_L8=key’”,
key’”_H4 XOR key’”_L4=key””,
key””低4bit作为hash的最后结果。最后将hash结果作为分担链路标识,选择对应的负载分担链路转发报文。
本发明所述方法一种实施例操作流程如图5所示,假设负载分担路径共16条,则在得到4位长度结果时,即为最终的结果。具体操作步骤如下:
步骤1:取报文源IP地址作为HASH_key1,取报文目的地址作为HASH_key2,取报文16位标识作为HASH_key3;
路由器接收到报文后,在分配路由前,为了实现负载分担,需要进行负载分担计算,首先获取报文文源IP地址及目的地址。取报文源IP地址作为HASH_key1,取报文目的地址作为HASH_key2,同时取报文头部唯一标识所述报文的16位标识作为HASH_key3;
步骤2:将HASH_key1与HASH_key2进行异或操作,得到32位长度的结果作为HASH_key’;
一般报文的源IP地址及目的IP地址均为32位,在进行hash算法时,由于HASH_key3为16位的字段,所以第一次执行的异或操作为HASH_key1与HASH_key2进行异或操作,得到一个32位长度的结果,记作HASH_key’;
步骤3:取HASH_key’的高16位数据与低16位数据进行异或操作,得到16位长度结果,再次与HASH_key3进行异或操作,得到16位长度结果作为HASH_key”;
将上述HASH_key1与HASH_key2进行异或操作得到的32位长度结果HASH_key’的高16位数据与低16位数据进行异或操作,得到16位长度结果,由于HASH_key3为16位的字段,因此将所述得到的16位长度结果再次与HASH_key3进行异或操作,得到另一个16位长度结果,记作HASH_key”;
步骤4:取HASH_key”的高8位数据与低8位数据进行异或操作,得到8位长度结果作为HASH_key’”;
步骤5:取HASH_key’”的高4位数据与低4位数据进行异或操作,得到4位长度结果作为HASH_key””,这是hash的最终结果;
由于负载分担路径一共16条,因此得到的4位长度的结果即为最终结果;
步骤6:将所述HASH_key””的值作为索引,在该条路由对应的分担链路表中查找对应的负载分担路径,利用查找到的路径进行报文的转发。
本发明提供一种IP报文负载分担实现装置,所述装置设置于路由器中,其一种实施例模块示意图如图6所示,包括:标识字段获取模块、负载分担计算模块及报文转发模块。
所述标识字段获取模块,用于获取报文中唯一标识一份报文的标识字段。
所述负载分担计算模块,用于将报文源IP地址、目的IP地址及标识字段作为key获得负载分担路径。该模块进一步包括:
负载分担hash计算子模块,用于将报文源IP地址、目的IP地址及标识字段作为key进行hash计算操作,得到与负载分担路径数量相关位数的结果。
负载分担路径查找子模块,用于将所述hasn算法操作获得的结果作为索引查找对应的负载分担路径。
所述报文转发模块,用于根据所述获得的负载分担路径转发报文。
综上所述,本发明所述方法由于在基于数据流的分担hash算法中引入了IP报文的唯一标识,相当于引入了基于报文的负载分担算法的特点,即当同一条数据流,报文源地址和目的地址均不变的情况下,hash结果也会根据报文携带的16位标识不同而不断变化,使相同数据流的报文也能够均衡的分担到全部分担链路上。同时,由于使用报文自己携带的标识,而不用再为每条需要进行负载分担的路由或trunk接口都分配计数器,大大减少了存储资源的浪费,也不会因为频繁访问存储器影响转发性能。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (6)
1、一种IP报文负载分担实现方法,其特征在于,包括:
利用报文源IP地址、目的IP地址及唯一标识一份报文的标识字段作为基于数据流的负载分担hash计算中的key,进行hash计算操作,获得与负载分担路径数量相关位数的结果;
将所述结果作为索引,在该条路由对应的分担链路表中查找对应的负载分担路径;
利用查找到的负载分担路径转发IP报文。
2、如权利要求1所述的一种IP报文负载分担实现方法,其特征在于,所述标识字段仅与相同位数的hash计算结果进行相应的hash操作。
3、如权利要求1所述的一种IP报文负载分担实现方法,其特征在于,所述标识字段在每发送一份报文时,其值加1。
4、如权利要求1至3中任一项所述的一种IP报文负载分担实现方法,其特征在于,所述标识字段为报文头部中的标识信息。
5、一种IP报文负载分担实现装置,其特征在于,包括:
标识字段获取模块,用于获取报文中唯一标识一份报文的标识字段;
负载分担计算模块,用于将报文源IP地址、目的IP地址及标识字段作为hash计算中的key进行hash计算操作,获得负载分担路径;其进一步包括:负载分担hash计算子模块,用于将报文源IP地址、目的IP地址及标识字段作为key进行hash计算操作,得到与负载分担路径数量相关位数的结果;负载分担路径查找子模块,用于将所述hash算法操作获得的结果作为索引在该条路由对应的分担链路表中查找对应的负载分担路径;
报文转发模块,用于根据负载分担计算模块获得的负载分担路径转发IP报文。
6、如权利要求5所述的一种IP报文负载分担实现装置,其特征在于,所述装置设置于路由器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101119935A CN100450037C (zh) | 2006-08-30 | 2006-08-30 | 一种ip报文负载分担实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101119935A CN100450037C (zh) | 2006-08-30 | 2006-08-30 | 一种ip报文负载分担实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1913454A CN1913454A (zh) | 2007-02-14 |
CN100450037C true CN100450037C (zh) | 2009-01-07 |
Family
ID=37722233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101119935A Expired - Fee Related CN100450037C (zh) | 2006-08-30 | 2006-08-30 | 一种ip报文负载分担实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100450037C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209019A (zh) * | 2010-03-30 | 2011-10-05 | 杭州华三通信技术有限公司 | 一种基于报文净荷的负载均衡方法和负载均衡设备 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399746B (zh) * | 2007-09-26 | 2011-03-16 | 华为技术有限公司 | 报文路由方法、***、设备和选择备份资源的方法、*** |
CN102098224B (zh) * | 2011-02-16 | 2015-06-03 | 中兴通讯股份有限公司 | 数据流负荷分担方法及装置 |
CN102447619B (zh) * | 2011-11-10 | 2014-09-17 | 华为技术有限公司 | 选择负载分担方式的方法、装置和*** |
WO2014023023A1 (zh) * | 2012-08-10 | 2014-02-13 | 华为技术有限公司 | 多cpu的报文处理方法及***、交换单元、单板 |
CN102868631B (zh) | 2012-09-28 | 2016-09-21 | 华为技术有限公司 | 负载分担方法和装置 |
CN104734984B (zh) * | 2013-12-24 | 2017-11-21 | ***通信集团公司 | 一种报文转发方法及装置 |
CN106656842A (zh) * | 2015-10-29 | 2017-05-10 | 华为数字技术(苏州)有限公司 | 一种负载均衡方法和流量转发设备 |
CN111147390B (zh) * | 2019-11-22 | 2023-06-30 | 国家计算机网络与信息安全管理中心 | 负载分担求余的方法及装置 |
CN113206793B (zh) * | 2021-03-15 | 2022-05-27 | 新华三信息安全技术有限公司 | 一种数据流转发方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003041355A1 (en) * | 2001-11-05 | 2003-05-15 | Nokia Corporation | A method and a system for stateless load sharing for a server cluster in an ip-based telecommunications network |
US20040258073A1 (en) * | 2001-08-14 | 2004-12-23 | Cedell Alexander | Load-sharing technique for distributing multi-protocol label switching protocol encapsulated flows across multiple physical links |
CN1719805A (zh) * | 2005-07-15 | 2006-01-11 | 中国人民解放军国防科学技术大学 | 3D Torus交换网络中报文保序的多路径路由方法 |
-
2006
- 2006-08-30 CN CNB2006101119935A patent/CN100450037C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040258073A1 (en) * | 2001-08-14 | 2004-12-23 | Cedell Alexander | Load-sharing technique for distributing multi-protocol label switching protocol encapsulated flows across multiple physical links |
WO2003041355A1 (en) * | 2001-11-05 | 2003-05-15 | Nokia Corporation | A method and a system for stateless load sharing for a server cluster in an ip-based telecommunications network |
CN1719805A (zh) * | 2005-07-15 | 2006-01-11 | 中国人民解放军国防科学技术大学 | 3D Torus交换网络中报文保序的多路径路由方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209019A (zh) * | 2010-03-30 | 2011-10-05 | 杭州华三通信技术有限公司 | 一种基于报文净荷的负载均衡方法和负载均衡设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1913454A (zh) | 2007-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100450037C (zh) | 一种ip报文负载分担实现方法及装置 | |
CN101729402B (zh) | 流相容的动态负荷平衡 | |
US8559434B2 (en) | Packet forwarding in a network | |
US9825860B2 (en) | Flow-driven forwarding architecture for information centric networks | |
US8792497B2 (en) | Method and apparatus for performing link aggregation | |
US7206861B1 (en) | Network traffic distribution across parallel paths | |
US8976697B2 (en) | Network status mapping | |
US10277481B2 (en) | Stateless forwarding in information centric networks with bloom filters | |
CN101340374B (zh) | 控制传输优先级的方法、***、装置和用户网络边缘设备 | |
US20130114414A1 (en) | Hardware-Based Dynamic Load Balancing That Avoids Flow Packet Reordering Statistically | |
CN1744563B (zh) | 在以太网交换机上实现策略路由的方法 | |
CN102891800B (zh) | 由多个节点中的一节点执行的方法、节点以及获知溢出信息的*** | |
CN102035735A (zh) | 用于提供转发信息和服务质量信息的设备和方法 | |
CN100563215C (zh) | 一种报文路由交换装置及其方法 | |
Batalla et al. | ID-based service-oriented communications for unified access to IoT | |
CN113923161B (zh) | 一种报文转发方法及装置 | |
US8929366B2 (en) | Method and apparatus for transporting packets with specific traffic flows having strict packet ordering requirements over a network using multipath techniques | |
CN102136986B (zh) | 一种负载分担方法和交换设备 | |
Luo et al. | Flexible IP: An adaptable IP address structure and its efficient addressing scheme | |
Liu et al. | Implementation and Improvement of DSR in Ipv6 | |
Ibanez et al. | Path-moose: a scalable all-path bridging protocol | |
EP2319215B1 (en) | Packet forwarding in a network | |
Geng et al. | A new hierarchical network address structure based on geographical regionalism | |
Gashi | Path protection switching in information centric networking | |
WO2022221788A1 (en) | Bier-te encapsulation with multiple sets |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090107 Termination date: 20160830 |