负载分担的方法和装置的制造方法
【技术领域】
[0001] 本发明实施例涉及网络通信领域,尤其涉及一种负载分担的方法和装置。
【背景技术】
[0002] 随着高速网络技术的发展,对网络设备和服务器的网络数据处理能力提出了越来 越高的需求。负载分担技术能够增加吞吐量,加强网络的数据处理能力。负载分担技术分 为逐包负载分担技术和逐流负载分担技术。
[0003] 在现有的逐流负载分担技术中,可采用不同的哈希算法实现。例如,循环兀余校验 (切CliCRe化ndan巧化eck,简称CRC)、折半异或或者素数运算。然而,现有的负载分担技 术中,多个端口中不同端口承载的流的数量的差距较大。
【发明内容】
[0004] 本发明实施例提供一种负载分担的方法和装置,有助于缩小多个端口中不同端口 承载的流的数量的差距,提高负载分担的均匀度。
[0005] 第一方面,本发明实施例提供一种负载分担方法,包括:
[0006] 负载分担装置确定多个目的端口的数量n,所述多个目的端口是所述负载分担装 置的物理端口;
[0007] 所述负载分担装置确定S大于第一预设阔值,其中,
i表示根据第一负载分担算法n个端口中第i个端口需要 承载的多个流中的流的数量,X表示所述多个流的数量与n的商;
[0008] 所述负载分担装置确定m,S'小于第二预设阔值,所述第二预设阔值小于所述第 一预设阔值,其中,
'表示根据第二负载分担算法m个 端口中第j个端口需要承载的所述多个流中的流的数量,玄'表示所述多个流的数量与m的 商,m大于n;
[0009] 所述负载分担装置根据m确定承载所述多个流中的每个流的端口,其中,所述多 个流中每个流将被所述多个目的端口中的一个端口承载;
[0010] 所述负载分担装置通过承载所述多个流中的每个流的端口发送对应的流。
[0011] 上述技术方案中,S可W用于标识根据第一负载分担算法n个端口承载多个流中 的流的数量的均匀度。S'可W用于标识根据第二负载分担算法m个端口承载多个流中的 流的数量的均匀度。S'小于S则表明根据第二负载分担算法m个端口承载的流的数量的 均匀度优于根据第一负载分担算法n个端口承载的流的数量的均匀度。因此,根据m确定 承载所述多个流中的每个流的端口有助于提高承载多个流中的流的数量的均匀度。
[0012] 结合第一方面,在第一方面的第一种可能的实施方式中,所述负载分担装置确定S 大于第一预设阔值具体包括:
[0013] 所述负载分担装置通过Wn为查找关键字在表中查找与n匹配的表项获得S, 所述与n匹配的表项中包含S,S是所述负载分担装置根据所述第一负载分担算法W及
I确定的,其中,所述第一负载分担算法被所述负载分担装置用 于确定所述n个端口中承载所述多个流中的每个流的一个端口,其中,所述多个流中第t个 流将被所述n个端口中端口号码为P的端口承载,P= {f化t)}%n,ht等于所述第t个流 的特征信息,f化t)是ht的哈希函数;
[0014] 所述负载分担装置确定m具体包括:
[0015] 所述负载分担装置通过WS'为查找关键字在所述表中查找与S'匹配的表项获 得m,所述与S'匹配的表项中包含m,S'是所述负载分担装置根据所述第二负载分担算法 W及
确定的,其中,所述第二负载分担算法被所述负载分担 装置用于确定所述m个端口中承载所述多个流中的每个流的一个端口,其中,所述多个流 中所述第t个流将被所述m个端口中端口号码为Q的端口承载,Q= {f化ht等于 所述第t个流的特征信息,fOO是ht的哈希函数。
[0016] 结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述负载分 担装置根据m确定承载所述多个流中的每个流的端口具体包括:
[0017] 所述负载分担装置根据第H负载分担算法确定承载所述多个流中的每个流的 端口,其中,所述多个流中每个流将被所述多个目的端口中端口号码为R的端口承载,在 {f化t)} %m小于n的场景中,R等于{f化t)} %m,在{f化t)} %m大于或者等于n的场景中, R等于{f化t)} %n。
[0018] 结合第一方面或第一方面的第一种实施方式或第一方面的第二种实施方式,在 第一方面的第H种实施方式中,S'包括k个数值,分别为S/至Sk' ,Si'至Sk'根据
分别对应叫至nik,所述负载分担装置确认m具体包括:
[0019] m等于叫至Hik中最小的值。
[0020] 结合第一方面的第一种实施方式或第一方面的第二种实施方式,在第一方面的第 四种实施方式中,所述第t个流的特征信息包括所述第t个流的源网际协议IP地址和目的 IP地址。
[0021] 第二方面,本发明实施例提供一种负载分担的装置,包括:
[0022] 第一确定单元,用于确定多个目的端口的数量n,所述多个目的端口是所述负载分 担装置的物理端口;
[0023] 第二确定单元,用于确定S大于第一预设阔值,其中,
Xi表示根据第一负载分担算法n个端口中第i个端口需要 承载的多个流中的流的数量,玄表示所述多个流的数量与n的商;
[0024] 第H确定单元,用于确定m,S'小于第二预设阔值,所述第二预设阔值小于所述第 一预设阔值,其中,
X,'表示根据第二负载分担算法m个 端口中第j个端口需要承载的所述多个流中的流的数量,宠'表示所述多个流的数量与m的 商,m大于n;
[0025] 第四确定单元,用于根据m确定承载所述多个流中的每个流的端口,其中,所述多 个流中每个流将被所述多个目的端口中的一个端口承载;
[0026] 发送单元,用于通过所述第四确定单元确定的承载所述多个流中的每个流的端口 发送对应的流。
[0027] 结合第二方面,在第二方面的第一种可能实施方式中,所述第二确定单元具体用 于;通过Wn为查找关键字在表中查找与n匹配的表项获得S,所述与n匹配的表项中包含 S,S是所述负载分担装置根据所述第一负载分担算法W及
I确 定的,其中,所述第一负载分担算法被所述负载分担装置用于确定所述n个端口中承载所 述多个流中的每个流的一个端口,其中,所述多个流中第t个流将被所述n个端口中端口号 码为P的端口承载,P= {f化t)} %n,ht等于所述第t个流的特征信息,f化t)是ht的哈希 函数;
[0028] 所述第H确定单元具体用于;通过WS'为查找关键字在所述表中查找与S'匹 配的表项获得m,所述与S'匹配的表项中包含m,S'是所述负载分担装置根据所述第二负 载分担算法W及:
确定的,其中,所述第二负载分担算法被所 述负载分担装置用于确定所述m个端口中承载所述多个流中的每个流的一个端口,其中, 所述多个流中所述第t个流将被所述m个端口中端口号码为Q的端口承载,Q= {f化t)} % m,ht等于所述第t个流的特征信息,f化t)是ht的哈希函数。
[0029] 结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述第四确 定单元具体用于:
[0030] 根据第H负载分担算法确定承载所述多个流中的每个流的端口,其中,所述多个 流中每个流将被所述多个目的端口中端口号码为R的端口承载,在{f化t)} %m小于n的场 景中,R等于{f化t)} %m,在{f化t)} %m大于或者等于n的场景中,R等于{f化t)} %n。
[0031] 结合第二方面或第二方面的第一种实施方式或第二方面的第二种实施方式,在 第二方面的第H种实施方式中,S'包括k个数