一种快速加权选择端口的方法

文档序号:7648657阅读:223来源:国知局
专利名称:一种快速加权选择端口的方法
技术领域
本发明涉及网络数据流转发过程中进行端口选"t奪的通讯领域,尤其涉 及的是, 一种快速加权选择端口的方法。
背景技术
随着因特网的高速发展,运行在因特网上业务越来越丰富,人们对数 据带宽的要求也越来越高,为了满足日益增加的网络带宽的需求,网络运 营商用尽各种方法,如"负荷分担"、链路捆绑等等,这些方法大都是通过 在网络中增加物理链路来满足用户所需的带宽。
如图1所示,路由器A和路由器B之间有3条链路,运营商可以把这 3条链路捆绑到一个逻辑链路中,而在路由器A、 B之间数据流则会根据用 户配置的策略选择其中的 一条链路作为数据的最终出口 。这种组网图 一般 应用于增加两台设备之间数据转发带宽的情况。
如图2所示,是多端口分流数据的另一种应用方案,当路由器A上收 到的数据需要被转发到路由器E上时,该数据可以通过图中的LINK—AB、 LINK一AC、 LINK一AD这3条链路的任何一条都可以到达路由器E,这种组 网 一般应用于分担路由器A 、 E之间某 一 台设备的载荷的情况。
但是,在使用多条物理链路进行数据流分担的时候,必然存在如何在 多条链路中选择发送链路的问题。
在中国专利号为CN01805838.8的《链路聚合》中提出在带有多个去 向目的地的物理链路的交换机中,通过跨过物理链路分配接收的数据来将 数据转发到目的地。按照包括在接收数据中的目的地址和源地址来为接收 数据的数据流选择流散列。流散列选择去向目的地的物理链路之一 ,而不 是不同数据流的潜在不同物理链路,从而通过跨过物理链路分配接收的数
据来转发接收的凄t据,同时保持数据流中帧的顺序。
、亥专利描述的是在交换机中链路聚合的实现方式,没有描述链路聚合
的时候,存在多个端口时,如何选择发送链路的端口。
因此,现有技术存在缺陷,需要改进。

发明内容
本发明的目的在于提供一种快速加权选择端口的方法,在多链路中进 行快速加权选择端口,提高了裤口选择的效率。 本发明的技术方案如下
一种快速加权选择端口的方法,其包括步骤Al、为每个发送数据的 链路的端口设置权重值;A2、创建端口列表,表头中存放各链路的逐级累 加权重值作为加权值,表条目存放发送数据的链路以及端口信息;A3、从 多条链路发送数据流时,读取所述端口列表,根据各端口的加权值,把所 述数据流分流到各端口对应的链路,进行发送。
所述的方法,其中,步骤A2中,所述加权值按顺序从^^字节到高字节 存放。
所述的方法,其中,步骤A1中,按照链路的物理带宽,设置权重值, 用于对所述数据流进行分流。
'所述的方法,其中,步骤A1中,将各端口的权重值的默认值设置为其 对应链路的物理带宽值。
所述的方法,其中,步骤A1中,将各端口的权重值的默认值设置为其 对应各链路物理带宽值的比值。
所述的方法,其中,步骤A1中,将物理带宽值最小的链路的权重值设 置为1,其他链路的权重取值为该带宽的倍数。
所述的方法,其中,步骤A1中,将物理带宽值最小的链路的权重值设 置为一个整数,并且是其余链路物理带宽值的最小公约数,其他链路的权
重取值为该带宽的倍数。
所述的方法,其中,步骤A2中,所述端口列表的表头中还设置策略值; 并且,步骤A3中,根据配置的策略值来选择端口。
所述的方法,其中,所述策略值是随机选择策略值或数据流模式策略值。
所述的方法,其中,步骤A3具体包括,从多条链路发送数据流时,读 取所述端口列表,判断所述策略值是随机选择策略值,根据各端口的加权 值,把所述数据流按照各链路物理带宽值的比值分流到各端口对应的链路, 进行发送;判断所述策略值是数据流模式策略值,根据所述数据流模式指 定链路对应各端口的加权值,把所述数据流按照各指定链路物理带宽值的 比值分流到各端口对应的指定链路,进行发送。
采用上述方案,本发明解决了存在多个端口时,如何快速选择发送链 路的端口、通过各链路高效发送数据的问题;能够在多链路中进行快速加 权选择端口,提高了端口选择的效率。在整个端口链路选择过程中,没有 统计的概念,也无需保存中间计算结果,每个报文的处理都是对立的,所 以相对处理简单,省却了统计和保存中间结果的开销,即减少了代码的指 令数和复杂度,并且具有控制信息少的优点;还适用于动态用户的上/下线 比例的方案。


图1为现有技术的一种组网示意图; 图2为现有技术的另一种组网示意图3是本发明的一种实施方式的核心数据结构示意图; 图4是本发明的另一种实施方式的核心数据结构示意图; 图5是本发明方法的数据处理方法流程图。
具体实施例方式
以下对本发明的專交佳实施例加以详细说明。
如图5所示,本发明提供了一种快速加权选择端口的方法,其包括以 下步骤。
Al、为每个发送数据的链路的端口设置权重值。
其中,可以按照链路的物理带宽,来设置权重值,用于对所述数据流 进行分流。
或者,可以将各端口的权重值的默认值设置为其对应链路的物理带宽值。
或者,可以将各端口的权重值的默认值设置为其对应各链路物理带宽 值的比值。例如,可以将物理带宽值最小的链路的权重值设置为1,其他链 路的权重取值为该带宽的倍数;或者,可以将物理带宽值最小的链路的权 重值设置为一个整数,并且是其余链路物理带宽值的最小公约数,其他链 路的权重取值为该带宽的倍数。
以上是设置各端口的权重值的各种方法,采用本发明的思路还可以有 很多种实现权重值的方法,这些应该都纳入本发明所要求保护的范围,本 发明对各种实现方法并无限制。
A2、创建端口列表,如图3和图4所示,表头中存放各链路的逐级累 加权重值作为加权值,表条目存放发送数据的链路以及端口信息。其中, 所述加权值可以按顺序从低字节到高字节存放;例如,按照从小到大或者 从大到小的顺序存放在表头中。
例如,将逐级累加权值按从大到小的顺序从低字节到高字节放在内存 中。若累加权值个数不足8个,则高字节填0。在扩冲后的表头中增加权重 累加值,然后将数据填入后如图4所示。若累加权值数超过8个,则需要 扩充表头,例如,把表头扩充成16字节,32字节等等,本发明对此不作额 外限制。A3、从多条链路发送数据流时,读取所述端口列表,根据各端口的加
权值,把所述数据流分流到各端口对应的链路,进行发送。
如图3和图4所示,在步骤A2中,所述端口列表的表头中还可以设置 策略值;所述策略值是随机选择策略值或数据流模式策略值。并且,如图5 所示,步骤A3中,根据配置的策略值来选择端口;具体包括从多条链路 发送数据流时,读取所述端口列表,然后执行如下判断操作
判断所述策略值是随机选择策略值,根据各端口的加权值,把所述数 据流按照各链路物理带宽值的比值分流到各端口对应的链路,进行发送;
判断所述策略值是数据流模式策略值,根据所述数据流模式指定链路 对应各端口的加权值,把所述数据流按照各指定链路物理带宽值的比值分 流到各端口对应的指定链^各,进行发送。
当策略值仅存在两种情况时,可以只判断所述策略值是随机选择策略 值或数据流模式策略值,仅执行一次上述判断操作,然后进行后续处理, 具体如上所述。
以下是本发明方法的 一个实施例 .
步骤1.数据转发流从多条链路(2条以上)发送出去;
步骤2.创建出接口列表(即端口列表),并为每个出接口分配权重, 或者给出默认权重;
步骤3.各条链路可以具有相同或不同的物理属性和带宽,在链路选择 的时候,不区分链路的物理属性,只根据链路所配置的权值把数据流分散 到各条链路上;默认情况可以按照链路的物理带宽来分担数据流量。此时, 可以根据用户配置的策略来选择端口,或使用默认策略选择端口;其中配 置的策略可以是随机选择模式,也可以是基于流模式。
如图3所示,这是本发明的一种实施方式的核心数据结构示意图,这 里以8条链路为例,来说明该结构的含义。这个数据结构一般情况是先根 据用户配置,在控制层做预处理操作,把预处理后的数据按照图3的格式 组织好,形成一个完整表格,以供高速转发软件在进行快速转发的时候进
行查找。其中,高速转发软件如微码(microcode)等,工作在石更件芯片中, 快速进行数据处理。
该表格也可由控制层软件动态配置,如根据不同链路上的实时带宽数 据进行实时调整参数;默认情况,链路的权重取其物理带宽值。对于本发 明中的权重的取值也可以是这样设计考虑到加权的概念,所以在本发明 的实现过程中,不用关心各个链路具体带宽值,只需要关心各个链路之间 带宽的比值即可。所以,在权重取值的时候,默认情况带宽最小的链路的 权重取l,其他链路的取值是该带宽的倍数;当某链路的带宽值不是最小值 的整数倍时,则调整最小链路的初始值。比如有两条链路, 一条100M,另 外一条150M;由于150/100=1.5,不是整数,而且小数在高速处理软件中 实现比较复杂,所以,采用本发明方法可以调整最小带宽链路的初始值为2, 即100M与150M这两条《连路对应权重分别取2和3。以上〗又仅为本发明 方法应用的一个实例,需说明的是,本发明对此并无任何限制。
图3中的表格分为两个部分表头和表条目,其中表头中存放了链路 的逐级累加权值qadd[i]=Sq[i], i=l,8,和策略值policy,表条目存放数据 包可能的出接口链路以及链路信息;其中GP7是权值最大,即链路带宽最 大的链路所对应的端口号,GP6是权值第二大,即链路带宽第二大的对应 的端口号,依此类推。
如图4所示,在Qw0中存放不同链路对应的权重累加值,举例说明 当有4条链路,其带宽分别是100M、 300M、 500M、 900M,则在每条链路 自己对应的权重累加值为1: 4: 9: 18。图4中列出的只是示例,对于采 用此方法可以无限扩展支持的端口数目。其中,逐级累加权值是将权值按 从小到大排序后的逐级累加和,具体地说,例如有4条路由 1: GP1, ql=3 2: GP2, q2=5
3: GP3, q3=l 4: GP4, q4=9
排序后的权值q分别为l、 3、 5、 9,逐级累加权值分别为qadd为1、 4(1+3)、 9(5+3+1)、 18(9+5+3+1)。
如图5所示,当数据包进入端口选择阶段,首先把权重表头内容读出, 然后根据表头中的策略进行不同的操作,图5是以两种策略为例给出的流 程处理图, 一个策略是数据流与所走链路不相关的加权选择方法,即可以 走表中的任何链路,但是要求数据流量按照带宽比例分布到相应的链路上, 比如流量Tl为500M,按照图4的链路比例,我们需要在链路1上走3/18 x 500M的流量,在链路2上走5/18 x 500M的流量,在链路3上走1/18 x 500M的流量,在4连路4上走9/18 x 500M的流量;另外一个策略是要求数 据流与链路相关,即数据流需要指定链路,但是所有流的总的数据流量能 够保证按比例分布。
在第一种策略中,实现如下取一个符合平均分布的随机值,然后使 用该值与表头中最大的权重累加值做"mod"操作,即两个数相除并且返回 余数,用mod的结果从表头中的低字节开始遍历,直到找到第一个权重累 加值比自己大为止,取出其所在位置的索引,利用表格基地址和该索引进 行偏移就可以获取该报文的出口。取平均分布的随机值,实现端口的快速 选择,是该发明的关键点之一。
如图4所示,假如mod的结果为6,则在表头中找到第一个比自己大 的权重累加值是9,权重累加值9的索引是3,则,最终该报文的出口就是 GP2。
对于第2种策略,比如我们要求属于同一个特征,例如具有相同的流 模式,如id、 ip或mac等,需要走同一条链路,这时候的操作就是不使用 平均分布的随机数,直接从报文种取出该id,使用该id与表头中最大的权 重累加值做"mod"操作,用mod的结果从表头中的低字节开始遍历,直
到找到第一个权重累加值比自己大为止,取出其所在位置的索引,利用表 格基地址和该索引进行偏移就可以获取该报文的出口 。
在传统的加权选择算法上,如果需要按照比例选择端口 ,必须对所有 流量报文进行统计,并保存该统计值,留给后面的^R文使用,然后根据该 统计值,以及当前报文所在的序列位置来决定该报文应该选择哪一条链路。 采用本发明方法,在整个端口链路选择过程中,没有统计的概念,也无需 保存中间计算结果,每个报文的处理都是对立的,所以相对处理简单,省 了统计和保存中间结果的开销,即减少了代码的指令数和复杂度。
本发明引入了动态加权的概念,并且本发明的加权实现方法使得转发 软件可以更加快速的动态选择链路和按权值分配带宽,与传统的链路选择
相比具有以下优点
1. 引入了加权的概念
2. 提高了端口选择的效率;
3. 代码实现更加简单,指令条数少,控制信息少
本发明改进了以往进行多端口选择的算法,增加了对端口选择的动态 加权概念,按照配置比例进行加权,从而提高端口选择执行速度。另外, 该设计思路不单单解决多端口选择的问题,对于动态用户的上/下线比例也 仍然适用。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以 改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护 范围。
权利要求
1、一种快速加权选择端口的方法,其包括步骤A1、为每个发送数据的链路的端口设置权重值;A2、创建端口列表,表头中存放各链路的逐级累加权重值作为加权值,表条目存放发送数据的链路以及端口信息;A3、从多条链路发送数据流时,读取所述端口列表,根据各端口的加权值,把所述数据流分流到各端口对应的链路,进行发送。
2、 根据权利要求1所述的方法,其特征在于,步骤A2中,所述加 权值按顺序从低字节到高字节存放。
3、 根据权利要求2所述的方法,其特征在于,步骤A1中,按照链 路的物理带宽,设置权重值,用于对所述数据流进行分流。
4、 根据权利要求3所迷的方法,其特征在于,步骤A1中,将各端 口的权重值的默认值设置为其对应链路的物理带宽值。
5、 根据权利要求3所述的方法,其特征在于,步骤A1中,将各端 口的权重值的默认值设置为其对应各链路物理带宽值的比值。
6、 根据权利要求5所述的方法,其特征在于,步骤A1中,将物理 带宽值最小的链路的权重值设置为1,其他链路的权重取值为该带宽的倍数。
7、 根据权利要求6所述的方法,其特征在于,步骤A1中,将物理 带宽值最小的链路的权重值设置为一个整数,并且是其余链路物理带宽值 的最小公约数,其他链路的权重取值为该带宽的倍数。
8、 根据权利要求1至7任一所述的方法,其特征在于,步骤A2中, 所述端口列表的表头中还设置策略值;并且,步骤A3中,根据配置的策略 值来选择端口 。
9、 根据权利要求8所述的方法,其特征在于,所述策略值是随机选 择策略值或数据流模式策略值。
10、 根据权利要求8所述的方法,其特征在于,步骤A3具体包括, 从多条链路发送数据流时,读取所述端口列表,判断所述策略值是随机选择策略值,根据各端口的加权值,把所述 数据流按照各链路物理带宽值的比值分流到各端口对应的链路,进行发送;判断所述策略值是数据流模式策略值,根据所述数据流模式指定链 路对应各端口的加权值,把所述数据流按照各指定链路物理带宽值的比 值分流到各端口对应的指定链路,进行发送。
全文摘要
本发明公开了一种快速加权选择端口的方法,其包括步骤A1.为每个发送数据的链路的端口设置权重值;A2.创建端口列表,表头中存放各链路的逐级累加权重值作为加权值,表条目存放发送数据的链路以及端口信息;A3.从多条链路发送数据流时,读取所述端口列表,根据各端口的加权值,把所述数据流分流到各端口对应的链路,进行发送。从而解决了存在多个端口时,如何快速选择发送链路的端口、通过各链路高效发送数据的问题;能够在多链路中进行快速加权选择端口,提高了端口选择的效率。同时省却了统计和保存中间结果的开销,既减少了代码的指令数和复杂度,并且具有控制信息少的优点;还适用于动态用户的上/下线比例的方案。
文档编号H04L12/56GK101110763SQ20071007518
公开日2008年1月23日 申请日期2007年6月22日 优先权日2007年6月22日
发明者鹏 崔, 李新双, 王建国, 龚志波 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1