一种负载分担方法、装置及芯片与流程

文档序号:31305764发布日期:2022-08-30 21:11阅读:28来源:国知局
一种负载分担方法、装置及芯片与流程

1.本技术实施例涉及网络互联技术领域,尤其涉及一种负载分担方法、装置及芯片。


背景技术:

2.随着网络的扩张和应用场景的多样化,传输网络的组网方式多种多样。从一个网络设备发送流量,通过传输网络到达另一个网络设备,通常有多条可达路径。传输网络中需要在多条路径中进行流量的分担,来提高其转发性能,增强网络的可靠性,从而更好的为用户服务。
3.现有的负载分担方法主要是采用逐流负载分担方法,即设备可以通过数据包的特征字段,比如源互联网协议(internet protocol,ip)地址、目的ip地址、源媒体接入控制(media access control,mac)地址、目的mac地址、端口号将原始报文分成不同的流,根据捆绑的方式确定发送接口和路径,同一条流的报文将在同一个接口和路由上发送。或者采用基于流表的流簇(flowlet)负载分担方法,通过流表中指定的发送接口来发送flowlet。又或者采用逐包负载分担方法,即设备基于数据包选择当前负载分担链路中负载较轻的成员链路进行转发,或者基于可达路径轮流发送。
4.但是,上述逐流负载分担的方法,在面对大带宽的大象流和小带宽的老鼠流共存的情况时,容易造成流量负载不均、网络利用率低的问题;其中,大象流是指在网络链路上建立的大容量(指总比特数)的持久的数据流,大象流例如可以由数据备份、或虚拟机迁移等原因而产生。老鼠流是指在网络链路上建立的小容量(指总比特数)的数据流;老鼠流例如可以是事务性流量、全球广域网(web world wide web,www)浏览而产生的数据流、搜索查询而产生的数据流。而基于流表的flowlet负载分担方法,设备中需要存储大量的流表,转发时延较大;上述逐包负载分担方法需要接收端支持报文乱序组包的功能。以上针对传输网络采用何种负载分担方式是基于传输网络全局采用固定配置的方式,并不适用复杂组网和混合流量的场景。


技术实现要素:

5.本技术实施例提供一种负载分担方法、装置及芯片,适用复杂组合和混合流程的场景。
6.第一方面,本技术实施例提供一种负载分担方法,应用于发送端,所述方法包括:向转发设备发送第一数据报文,所述第一数据报文属于第一数据流,所述第一数据报文包括的第一字段的取值为第一值,所述第一值用于指示所述转发设备采用第一负载分担规则转发所述第一数据报文;向所述转发设备发送第二数据报文,所述第二数据报文属于第二数据流,所述第二数据报文包括的第一字段的取值为第二值,所述第二值用于指示所述转发设备采用第二负载分担规则转发所述第二数据报文;其中,所述第一数据流的流类型与所述第二数据流的流类型不同。本技术实施例中,发送端在发送数据报文时,针对不同的数据流的流类型指示转发设备采用不同的负载分担规则,在复杂组网中存在混合流量时,针
对不同流类型的流量采用不同的负载分担规则,相比配置转发设备针对所有流量均采用固定的负载分担规则来说,能够达到更好的负载分担效果。
7.在一种可能的设计中,所述第一数据流的流类型为老鼠流,所述第二数据流的流类型为大象流。
8.在一种可能的设计中,所述方法还包括:向转发设备发送第一数据报文之前,根据所述第一数据流的业务类型或者数据量大小确定所述第一数据流的流类型为老鼠流;向所述转发设备发送第二数据报文之前,根据所述第二数据流的业务类型或者数据量大小确定所述第二数据流的流类型为大象流。通过上述设计,端侧根据流量特征指示转发设备所采用的负载分担规则,即端侧根据自身的流量特征或者诉求来指示交换机采用何种负载分担规则,从而交换机根据端侧指示的负载分担规则来转发流量。针对复杂组网中存在混合流量,不同类型的流量可以采用不同的负载分担规则,达到更好的负载分担效果。
9.在一种可能的设计中,所述第一数据流为发往第一接收端的数据流;所述方法还可以包括:根据所述第一接收端的重组乱序报文的能力以及所述第一数据流的流类型确定所述转发设备使用第一负载分担规则转发所述第一数据流。通过上述设计,端侧根据流量特征和接收端的重组乱序报文的能力来指示转发设备所采用的负载分担规则,即端侧根据自身的流量特征和接收端的重组乱序报文的能力来指示交换机采用何种负载分担规则,从而交换机根据端侧指示的负载分担规则来转发流量,相比采用固定的负载分担规则来说,能够达到更好的负载分担效果。
10.在一种可能的设计中,所述方法还包括:接收来自第一接收端的能力信息,所述能力信息用于指示所述第一接收端是否具备重组乱序报文的能力。
11.在一种可能的设计中,所述第二数据流为发往第二接收端的数据流;所述方法还包括:根据所述第二接收端的重组乱序报文的能力以及所述第二数据流的流类型确定所述转发设备使用第二负载分担规则转发所述第二数据流。通过上述设计,端侧根据流量特征和接收端的重组乱序报文的能力来指示转发设备所采用的负载分担规则,即端侧根据自身的流量特征和接收端的重组乱序报文的能力来指示交换机采用何种负载分担规则,从而交换机根据端侧指示的负载分担规则来转发流量,相比采用固定的负载分担规则来说,能够达到更好的负载分担效果。
12.在一种可能的设计中,比如第一数据流为老鼠流,所述第一接收端具备重组乱序报文的能力;所述第一负载分担规则为:根据到达所述第一接收端的不同传输路径的远近程度以及拥塞程度在所述不同传输路径中选择用于转发所述第一数据报文的传输路径;或者,将到达所述第一接收端的最短路径作为转发所述第一数据报文的所述转发路径。通过上述设计,针对老鼠流,并且老鼠流的接收端具备重组乱序报文的能力,从而可以交换机根据第一负载分担规则,能够根据传输路径远近程度和拥塞程度选择传输路径,比如选择最近且不拥塞的传输路径来转发,能够保障老鼠流对时延的要求。
13.在一种可能的设计中,所述第一接收端不具备重组乱序报文的能力;所述第一数据报文还包括第二字段,所述第一数据报文包括的第二字段的取值用于指示所述第一数据报文的负载分担因子;所述第一负载分担规则为:基于所述负载分担因子将到达所述第一接收端的最短路径作为转发所述第一数据报文的转发路径。通过上述设计,针对老鼠流,并且老鼠流的接收端不具备重组乱序报文的能力,从而可以交换机根据第一负载分担规则,
基于负载分担因子来转发属于第一数据流的数据报文。
14.在一种可能的设计中,还包括:向转发设备发送第三数据报文,所述第三数据报文属于所述第一数据流,所述第三数据报文包括的第一字段的取值为所述第一值,所述第三数据报文的目的地址指示所述第二接收端;所述第三数据报文还包括第二字段,所述第三数据报文包括的第二字段的取值用于指示所述第三数据报文的负载分担因子;其中,所述第三数据报文的第二字段的取值与所述第一数据报文的第二字段的取值相同;或者,当所述第三数据报文与所述第一数据报文的发送时间间隔大于第一时长时,所述第三数据报文的第二字段的取值与所述第一数据报文的第二字段的取值不同;当所述第三数据报文与所述第一数据报文的发送时间间隔小于或者等于第一时长时,所述第三数据报文的第二字段的取值与所述第一数据报文的第二字段的取值不同。
15.上述设计中,针对属于同一数据流的数据报文采用的负载分担因子相同或者两个数据报文之间间隔较短采用同一负载分担因子,使得属于同一数据流的老鼠流,能够按照顺序到达接收端,使得接收端能够按照顺序接收属于同一数据流的数据报文。
16.在一种可能的设计中,所述第二数据报文还包括第二字段,所述第二数据报文包括的第二字段的取值用于指示所述第二数据报文的负载分担因子;其中,所述第二数据报文的第二字段的取值与所述第三数据报文的第二字段的取值不同。上述设计中,不同的流类型的数据流的负载分担因子不同。
17.在一种可能的设计中,比如第二数据流属于大象流,所述第二数据报文还包括第二字段,所述第二数据报文包括的第二字段的取值用于指示所述第二数据报文的负载分担因子;所述第二负载分担规则为:基于所述负载分担因子在到达所述第二接收端的至少一条传输路径中选择用于转发所述第二数据报文的转发路径。上述设计中,端侧指示转发设备针对大象流的各个数据报文基于负载分担因子来选路。尽可能的使得大象流可以分担到多个传输路径传输。
18.在一种可能的设计中,所述第二接收端不具备重组乱序报文的能力,所述方法还包括:向转发设备发送第四数据报文,所述第四数据报文属于所述第二数据流,所述第四数据报文包括的第一字段的取值为所述第二值,所述第四数据报文还包括第二字段,所述第四数据报文包括的第二字段的取值用于指示所述第四数据报文的负载分担因子;
19.其中,所述第四数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同;或者,
20.当所述第四数据报文与所述第二数据报文相邻且所述第四数据报文与所述第二数据报文的发送时间间隔大于第二时长时,所述第四数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同;当所述第四数据报文与所述第二数据报文相邻且所述第四数据报文与所述第二数据报文的发送时间间隔小于或者等于第二时长时,所述第四数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同。
21.上述设计中,在接收端不具备重组乱序报文的能力的情况下,针对属于同一数据流的数据报文采用的负载分担因子相同或者两个数据报文之间间隔较短时采用同一负载分担因子,使得属于同一数据流的大象流,能够按照顺序到达接收端,使得接收端能够按照顺序接收属于同一数据流的数据报文。
22.在一种可能的设计中,所述第二接收端具备重组乱序报文的能力;所述方法还包
括:向所述转发设备发送第五数据报文,所述第五数据报文属于所述第二数据流,所述第五数据报文包括的第一字段的取值为所述第二值,所述第五数据报文还包括第二字段,所述第五数据报文包括的第二字段的取值用于指示所述第五数据报文的负载分担因子;其中,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同;或者,
23.当所述第五数据报文与所述第二数据报文的发送时间间隔大于第二时长时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同,当所述第五数据报文与所述第二数据报文的发送时间间隔小于或者等于第二时长时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同;或者,当所述第五数据报文与所述第二数据报文间隔的报文数大于第二数量时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同,当所述第五数据报文与所述第二数据报文的间隔的报文数小于或者等于第二数量时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同。
24.上述设计中,在接收端具备重组乱序报文的能力的情况下,针对属于同一数据流的数据报文采用的负载分担因子相同或者两个数据报文之间间隔较短时采用同一负载分担因子,使得属于同一数据流的大象流,能够按照顺序到达接收端,使得接收端能够按照顺序接收属于同一数据流的数据报文。
25.第二方面,本技术还提供一种负载分担方法,所述方法应用于转发设备,包括:接收第一数据报文,所述第一数据报文属于第一数据流,所述第一数据报文包括的第一字段的取值为第一值,根据所述第一值指示的第一负载分担规则转发所述第一数据报文;接收第二数据报文,所述第二数据报文属于第二数据流,所述第二数据报文包括的第一字段的取值为第二值,根据所述第二值指示的第二负载分担规则转发所述第二数据报文;所述第一数据流的流类型与所述第二数据流的流类型不同。本技术实施例中,发送端在发送数据报文时,针对不同的数据流的流类型指示转发设备采用不同的负载分担规则,在复杂组网中存在混合流量时,针对不同流类型的流量采用不同的负载分担规则,相比配置转发设备针对所有流量均采用固定的负载分担规则来说,能够达到更好的负载分担效果。
26.在一种可能的设计中,所述第一数据流的流类型为老鼠流,所述第二数据流的流类型为大象流。
27.在一种可能的设计中,所述第一数据流为发往第一接收端的数据流,根据所述第一值指示的第一负载分担规则转发所述第一数据报文,包括:根据到达所述第一接收端的传输路径的远近程度以及拥塞程度在所述传输路径中选择用于转发所述第一数据报文的第一转发路径;其中,所述第一转发路径为拥塞程度小于第一门限值的传输路径中距离最短的传输路径。
28.在一种可能的设计中,所述第一数据流为发往第一接收端的数据流,所述第一数据报文还包括第二字段,所述第二字段用于指示负载分担因子;根据所述第一值指示的第一负载分担规则转发所述第一数据报文,包括:基于所述负载分担因子在到达所述第一接收端的至少一条最短路径中选择用于转发所述第一数据报文的转发路径。
29.在一种可能的设计中,所述第一数据报文包括第一目的地址,所述第一目的地址指示所述第一接收端,基于所述负载分担因子在到达所述第二接收端的至少一条最短路径中选择用于转发所述第一数据报文的转发路径,包括:根据路由表确定所述第一目的地址
对应的代价值从小到达的至少一个出端口;路由表中包括第一目的地址对应的多个出端口以及每个出端口对应的代价值,所述代价值指示从所述代价值对应的出端口到达所述第一接收端的传输路径的远近程度;从所述至少一个出端口中选择第一出端口,所述第一出端口的拥塞程度小于第一门限值且所述第一出端口为所述至少一个出端口中负载最低的出端口。
30.在一种可能的设计中,所述第一数据报文包括第一目的地址,所述第一目的地址指示所述第一接收端,基于所述负载分担因子在到达所述第二接收端的至少一条最短路径中选择用于转发所述第一数据报文的转发路径,包括:根据路由表确定所述第一目的地址对应的代价值从小到达的至少一个出端口;路由表中包括第一目的地址对应的多个出端口以及每个出端口对应的代价值,所述代价值指示从所述代价值对应的出端口到达所述第一接收端的传输路径的远近程度;从所述至少一个出端口中选择第一出端口,所述第一出端口为拥塞程度小于第一门限值的至少一个出端口中代价值最小且负载最低的出端口。
31.在一种可能的设计中,所述第二数据流为发往第二接收端的数据流,根据所述第二值指示的第二负载分担规则转发所述第二数据报文,包括:在所述第一字段的取值为第二值时,基于所述负载分担因子在到达所述第二接收端的至少一条传输路径中选择用于转发所述第二数据报文的转发路径。
32.第三方面,本技术实施例提供一种负载分担装置,所述方法应用于发送端,可以由发送端中的处理器来实现,或者由发送端中的网卡来实现。负载分担装置包括发送模块。
33.发送模块,用于向转发设备发送第一数据报文,所述第一数据报文属于第一数据流,所述第一数据报文包括的第一字段的取值为第一值,所述第一值用于指示所述转发设备采用第一负载分担规则转发所述第一数据报文;发送模块,还用于向所述转发设备发送第二数据报文,所述第二数据报文属于第二数据流,所述第二数据报文包括的第一字段的取值为第二值,所述第二值用于指示所述转发设备采用第二负载分担规则转发所述第二数据报文;其中,所述第一数据流的流类型与所述第二数据流的流类型不同。
34.另外,该第三方面中,负载分担装置其他可选的实施方式可参见上述第一方面的相关内容,此处不再详述。
35.第四方面,本技术还提供一种负载分担装置,所述装置应用于转发设备,可以由转发设备中的处理器或者控制器或者芯片来实现。负载分担装置包括接收模块和发送模块。接收模块,用于接收第一数据报文,所述第一数据报文属于第一数据流,所述第一数据报文包括的第一字段的取值为第一值;发送模块,用于根据所述第一值指示的第一负载分担规则转发所述第一数据报文;接收模块,还用于接收第二数据报文,所述第二数据报文属于第二数据流,所述第二数据报文包括的第一字段的取值为第二值;发送模块还用于根据所述第二值指示的第二负载分担规则转发所述第二数据报文;所述第一数据流的流类型与所述第二数据流的流类型不同。
36.另外,该第四方面中,负载分担装置其他可选的实施方式可参见上述第二方面的相关内容,此处不再详述。
37.第五方面,提供了一种负载分担装置,该负载分担装置包括处理器和智能网卡(可以简称为网卡)。处理器用于接收网卡发送的数据流,或向网卡发送数据流,且智能网卡用于实现上述第一方面-第二方面的任意一种实施方式的方法。
38.第六方面,提供了一种芯片,该芯片包括控制器和接口。控制器和接口相互配合,使得芯片执行上述第一方面-第二方面的任意一种设计中的方法。
39.第七方面,本技术提供一种芯片,包括存储器和控制器;所述存储器用于存储计算机程序;所述控制器用于执行所述存储器中存储的计算程序,实现上述第一方面-第二方面的任一可能的设计中的方法。
40.第八方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面-第二方面的任意一种设计中的方法。
41.第九方面,提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面-第二方面的任意一种设计中的方法。
42.上述第三方面-第九方面的有益效果可以参见第一方面-第二方面中的相关说明,此处不再赘述。
附图说明
43.图1为本技术实施例中一种可能的逐流负载分担方式示意图;
44.图2为本技术实施例中一种可能的基于流的flowlet负载分担方式示意图;
45.图3为本技术实施例中一种可能的逐包负载分担方式示意图;
46.图4为本技术实施例中一种可能的网络系统架构示意图;
47.图5为本技术实施例中一种可能的主机服务器结构示意图;
48.图6a为本技术实施例中示例1的负载分担方式示意图;
49.图6b为本技术实施例中示例2的负载分担方法示意图;
50.图6c为本技术实施例中示例3的负载分担方法示意图;
51.图7a为本技术实施例中示例4的负载分担方式示意图;
52.图7b为本技术实施例中示例5的负载分担方法示意图;
53.图7c为本技术实施例中示例6的负载分担方法示意图;
54.图8为本技术实施例中示例7的负载分担方法示意图;
55.图9为本技术实施例中示例8的负载分担方法示意图;
56.图10为本技术实施例中一种可能的负载分担方法流程示意图;
57.图11为本技术实施例中一种可能网络场景示意图;
58.图12为本技术实施例中另一种可能网络场景示意图;
59.图13为本技术实施例中负载分担装置1300结构示意图;
60.图14为本技术实施例中芯片结构示意图。
具体实施方式
61.在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c
可以是单个,也可以是多个。
62.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
63.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
64.应注意到本技术实施例中,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
65.在本技术的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本技术中的具体含义。
66.本技术实施例可以应用于以太网(ethernet,eth)/网络互联协议(internet protocol,ip)/无限带宽(infiniband,ib)网等通信网络。
67.在eth/ip网络中可以采用的负载分担方式可以包括1)逐流负载分担、2)基于流表的flowlet负载分担、3)逐包负载分担。下面针对以上三种负载分担方式进行描述。
68.1)逐流负载分担。举例来说,传统链路聚合或者等价多路径路由(ecmp)系统一般采用逐流负载分担方式。逐流负载分担方式一般将数据包的特征字段作为哈希(hash)因子,比如数据包的源mac地址、目的mac地址、源ip地址、目的ip地址、tcp/udp端口号等域段。针对哈希因子采用哈希算法进行哈希计算得到计算结果值。然后根据哈希计算结果值在负载分担链路中选择一条成员链路对数据包进行转发。逐流负载分担方式能够实现不同数据流(flow)在不同成员链路上转发,也能够保证同一数据流中各数据包到达接收端的时序性。
69.例如,参见图1所示,为一种可能的逐流负载分担方式示意图。交换机a与交换机b之间至少包括两条成员链路,分别为成员链路1和成员链路2。图1中,数据流(flow)1通过成员链路1传输,即属于数据流(flow)1的数据包1、2、3、6、7通过成员链路1传输。数据流2通过成员链路2传输,即属于flow2的数据包4、5通过成员链路2传输。
70.2)基于流表的flowlet负载分担。flowlet是指按照一定的时间间隔将数据流分割成的若干个子流。不同的flowlet之间独立选路,可能分担到不同的成员链路,也可能分担到同一条成员链路。不同的flowlet对应不同的flowlet流表表项。所述flowlet流表表项用于指示每个flowlet中包括的数据包的转发路径。交换机在转发数据包时会判断待转发的数据包与其所属的数据流中上一个数据包之间的时间间隔,若大于负载分担链路中各成员链路的最大链路传输时延,则认为待转发的数据包是一个新flowlet的首包;若小于负载分担链路中各成员链路的最大链路传输时延,则与上一个数据包属于同一个flowlet。交换机基于flowlet选取当前负载分担链路中负载较轻的成员链路进行转发,同一flowlet中的数
据包选取相同的链路进行转发。
71.例如,参见图2所示,交换机a与交换机b之间至少包括两条成员链路,分别为成员链路1和成员链路2。数据流1被划分为flowlet1-1和flowlet1-2。数据流2仅包括flowlet2-1。图2中,数据流1的flowlet1-1通过成员链路1传输,数据流1的flowlet1-2通过成员链路2传输,即属于数据流1的数据包1、2、3通过成员链路1传输,属于数据流1的数据包6、7通过成员链路2传输。数据流2的flowlet2-1通过成员链路2传输,即属于数据流2的数据包4、5通过成员链路2传输。
72.3)逐包负载分担。一种方式中,交换机基于数据包选择当前负载分担链路中负载较轻的成员链路转发,另一种方式中,基于可达路径轮流发送,即根据数据包到达的时间轮流分担到各个可达路径上进行转发。采用逐包负载分担时,针对相邻两个属于同一数据流的数据包,交换机为该两个相邻的数据包选择的成员链路可能相同,也可能不同。
73.例如,参见图3所示,交换机a与交换机b之间至少包括两条成员链路,分别为成员链路1和成员链路2。图3中,按照时间先后顺序达到交换机a的数据包依次为:属于数据流1的数据包1、数据包2、数据包3和数据包4,以及属于数据流2的数据包5。图2中,数据包1和数据包3通过成员链路1传输,数据包2、数据包4和数据包5通过成员链路2传输。
74.在ib网络中可以采用的负载分担方式可以包括4)逐流负载分担或者2)自适应路由负载分担。下面针对以上两种负载分担方式进行描述。
75.4)ib网的逐流负载分担。与应用于eth的逐流负载分担方式类似。ib网络中的交换机使用数据包的特征信息,比如目的本地指示符(local identifier,lid),来查询转发表,根据查询转发表的查询结果进行转发。lid是ib网中用于控制交换机的控制器为主机中的网卡分配的用于转发数据包的编号。一般情况下,控制器为每个网卡会分配多个lid,从而发送端的网卡针对不同的数据流封装不同的目的lid,从而交换机配置的路由中,使用不同lid的数据流通过不同的成员链路转发。可以理解的是,发送端的网卡来为每个数据流选择一个lid,不同的目的lid表示在交换机网络中走不同的路径。
76.5)ib网的自适应路由(adaptive routing)负载分担方案。自适应路由分担方案支持两种自适应路由模式(adaptive routing mode),分别为无界(free)模式和有界(bounded)模式。
77.free模式下采用的负载分担方式,类似于应用于eth/ip网的逐包负载分担方式。针对每个数据包,根据交换机的出端口的拥塞程度来选择负载最轻的成员链路进行数据包的发送。bounded模式下采用的负载分担方式,类似于应用于eth/ip网的基于流表的flowlet的负载分担方式。
78.从上可以看出,当前网络中的负载分担方法,基本包括以下三种方式:(1)逐流负载分担技术,根据数据包的特征字段(比如五元组或者lid)进行负载分担的方式,也可以称为静态负载分担。它的缺点是没有考虑负载分担链路中各成员链路的利用率,从而会出现成员链路之间的负载分担不均衡,尤其当大数据流出现时会加剧所选中成员链路的拥塞甚至引起丢包。(2)基于流表的flowlet负载分担方式(或者bounded模式下的负载分担技术),相比逐流负载分担效果较好,但是交换机识别flowlet较为复杂,同时需要存储大量流表,影响转发时延,交换机采用固定的flowlet时间间隔配置,时间间隔配置太小可能会导致乱序,配置太大导致负载部分效果不好。(3)逐包或自适应路由中free模式下的负载分担技
术,负载分担效果相比前两种较好,该方式下需要确保流量接收端支持报文乱序组包的功能。
79.网络系统中,目前一般基于交换机全局进行固定配置以上三种负载分担方法中的一种,在复杂组网和存在混合流量的场景下,负载分担效果无法保障。
80.基于此,本技术实施例提供一种负载分担方法及装置,基于端侧的流量特征或者端侧的诉求,由端侧指示交换机采用的负载分担规则,可以适应复杂组网和存在混合流量的场景。现有基于交换机全局进行固定配置的方式,并没有考虑端侧流量的特征或端侧的诉求,比如带宽优先还是时延优先,带宽优先需要尽量分担到多条路径,时延优先需要走最短路径。不管交换机采用哪种固定的负载分担规则,面对复杂组网和混合流量,可能平衡各种流量的不同需求。因此,本技术实施例中,端侧根据流量特征确定负载分担规则,并指示交换机所采用的负载分担规则,即端侧根据自身的流量特征或者诉求来指示交换机采用何种负载分担规则,从而交换机根据端侧指示的负载分担规则来转发流量。针对复杂组网中存在混合流量,不同类型的流量可以采用不同的负载分担规则,达到更好的负载分担效果。
81.下面结合具体实施例对本技术提供的方案进行详细说明。
82.本技术实施例中可以应用于包括发送端和接收端的网络系统中,发送端和接收端之间通过多个转发设备相连。发送端和接收端可以是用于生成或者接收数据报文的主机服务器、个人计算机等。转发设备也可以是负责转发数据报文的转发设备,比如路由器、交换机、转发器等。
83.作为一种示例,参见图4所示,为一种可能的网络系统架构示意图。网络系统中包括至少两台主机服务器。主机服务器之间建立通信连接。作为一种举例,主机服务器之间可以通过交换机网络和/或路由器网络互联。图4中以两台主机服务器为例,两台主机服务器之间通过交换器a-交换机d进行通信,应理解的是,图4仅是一种示例,并不对网络系统包括的主机服务器的数量以及交换机的数量进行限定。后续描述时,将主机服务器可以简称为主机为例。
84.作为一种示例,参见图5所示,主机服务器可以包括网卡和一个或者多个处理器。处理器可以采用通用的中央处理器(centralprocessing unit,cpu),微处理器,应用专用集成电路(application specificintegrated circuit,asic),或者一个或多个集成电路,或者图像处理器(graphics processing unit,gpu)用于执行相关程序,以实现本技术实施例所提供的技术方案。该网卡可以称为该处理单元的网卡。该网卡也可以称为网络接口卡(network interface card)、网络适配器(network adapter)、物理网络接口(physical network interface)等。
85.为适应复杂组网和混合流量的场景,本技术实施例中在数据报文中增加第一字段,第一字段的不同取值用于指示不同的负载分担规则。不同流类型的数据流可以采用不同的负载分担规则,发送端可以在第一字段中添加不同的取值,从而交换机可以根据第一字段的取值指示的负载分担规则来转发报文。作为一种示例,第一字段可以称为路由模式(routing mode,rm),第一字段还可以采用其它的名称,本技术对此不作具体限定。后续描述时,以称为rm为例。
86.如下示例性的描述几种可能的负载分担规则。
87.(1)负载分担规则1,基于流的选路模式,并且在全部可达路径中选择。
88.第一种可能示例中,针对一条数据流包括的多个数据报文,在全部可达路径选择一条传输路径。端侧的不同的数据流选择不同的传输路径,同一数据流的不同的数据报文选择相同的传输路径。
89.第二种可能的示例中,针对同一数据流包括的每个数据报文,在全部可达路径选择传输路径。比如,在全部可达路径包括多条时,相邻的两个数据报文选择不同的传输路径。
90.第三种可能的示例中,在全部可达路径包括多条时,可以连续的n个数据报文选择同一传输路径。可以理解为:同一数据流包括的数据报文进行分组,连续的n个数据报文为一组选择同一传输路径。相邻的两个数据报文组选择不同的传输路径。
91.第四种可能的示例中,在全部可达路径包括多条时,可以在同一时间周期内的数据报文选择同一传输路径。可以理解为:连续一个时间周期的n个数据报文为一组,针对同一组的数据报文选择同一传输路径。相邻时间周期的数据报文组选择不同的传输路径。
92.第五种可能的示例中,在全部可达路径包括多条时,可以根据流量burst从多条可达路径中选择传输路径。比如相邻的两个数据报文的时间间隔小于第一时长,则采用同一传输路径发送。可以理解为,后发送的数据报文与前一个发送的数据报文的发送时间间隔小于第一时长,则后发送的数据报文与前一个发送的数据报文属于同一组(也可以称为流簇),相邻两个数据报文的时间间隔大于第一时长,则采用不同的传输路径发送。
93.(2)负载分担规则2,基于流的选路模式,并且在最短可达路径中选择。
94.第六种可能的示例中,针对一条数据流包括的多个数据报文,在最短可达路径选择一条传输路径。当最短可达路径包括多条时,针对端侧的不同的数据流选择不同的传输路径,同一数据流的不同的数据报文选择相同的传输路径。
95.第七种可能的示例中,针对同一数据流包括的每个数据报文,在最短可达路径选择传输路径。比如,在最短可达路径包括多条时,相邻的两个数据报文可以选择不同的传输路径。
96.第八种可能的示例中,在最短可达路径包括多条时,可以连续的n个数据报文选择同一传输路径。可以理解为:针对同一数据流包括的数据报文进行分组,连续的n个数据报文为一组选择同一传输路径。相邻的两个数据报文组选择不同的传输路径。
97.第九种可能的示例中,在最短可达路径包括多条时,可以在同一时间周期内的数据报文选择同一传输路径。可以理解为:连续一个时间周期的n个数据报文为一组,针对同一组的数据报文选择同一传输路径。相邻时间周期的数据报文组选择不同的传输路径。
98.第十种可能的示例中,在最短可达路径包括多条时,可以根据流量burst从多条最短可达路径中选择传输路径。比如相邻的两个数据报文的时间间隔小于第一时长,则采用同一传输路径发送。相邻两个数据报文的时间间隔大于第一时长,则采用不同的传输路径发送。
99.(3)负载分担规则3,自适应路由的选路模式,并且在全部可达路径中选择。
100.第十一种可能的示例中,基于全部可达路径的远近程度和拥塞程度选择传输路径。
101.(4)负载分担规则4,自适应路由的选路模式,并且在最短可达路径中选择。
102.第十二种可能的示例中,基于最短可达路径的负载在一个或者多个最短可达路径
中选择传输路径。示例性地,当最短可达路径包括多条时,选择负载最小的最短可达路径。
103.在一种可能的实施方式中,在实现负载分担规则1和负载分担规则2时,在确定采用基于流的选择模式时,具体交换机如何在最短可达路径或者全部可达路径中选择,可以由端侧来指示。一种可能的示例中,在数据报文中增加第二字段,第二字段用于指示负载分担因子。进而交换机可以根据负载分担因子来选择传输路径。第二字段可以称为负载平衡(load balance,lb),第二字段也可以采用其它的名称,本技术对此不作具体限定。后续描述时,以称为lb为例。
104.发送端针对待发送的数据流封装数据报文时,在数据报文中封装rm和lb,rm用于指示转发设备采用的负载分担规则,lb指示负载分担因子,负载分担因子用于选择传输路径。交换机接收到数据报文后,可以根据rm确定采用的负载分担规则,然后结合lb的指示来选择传输路径。作为一种示例,交换机可以针对lb的取值进行哈希运算得到哈希值,根据得到的哈希值对可选择的路径数量进行取余运算,将取余运算结果对应的路径作为选择的转发路径。作为另一种示例,交换机可以针对lb的取值,以及数据报文中的五元组包括的一项或者多项进行哈希运算得到哈希值,然后根据得到的哈希值对可选择的路径数量进行取余运算,将取余运算结果对应的路径作为选择的转发路径。五元组可以包括源ip地址、目的ip地址、源端口号、目的端口号、协议号。
105.本技术实施例中rm的不同取值可以指示不同的负载分担规则。rm的不同取值与负载分担规则的映射关系,可以由网络管理器配置给各个网络设备和交换机,也可以是协议规定的。lb的不同取值用于选择传输路径。lb的取值范围可以由网络管理器分别配置给各个网络设备,也可以是协议规定的。
106.作为一种举例,以上述负载分担规则1-负载分担规则4为例。rm可以占用2比特(bit)。rm的不同取值用于指示不同的负载分担规则1-负载分担规则4。一种可能的取值配置方式是,其中1bit用于指示基于流的选路模式或者自适应路由的选路模式,另外1bit用于指示选路时在全部可达路径中选择或者在最短可达路径中选择。比如,高比特位指示选路模式,低比特位指示可选择的传输路径范围。又比如,低比特位指示选路模式,高比特位指示可选择的传输路径范围。例如参见表1所示。表1中以lb占用8比特为例,表1仅是一种示例,并不对rm和lb占用的比特数进行具体限制。
107.表1
[0108][0109]
下面结合附图对上述第一种可能的示例-第十二种可能的示例中进行详细说明。
[0110]
示例1,针对第一种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则1,并且针对属于同一数据流的数据报文进行封装时在lb采用相同的取值。
[0111]
例如,参见图6a所示,以表1为例。rm取值为0b00,表示采用负载分担规则1,即基于
流的选路模式,在全部可达路径中选路。以数据流1(flow1)为例,从主机1到达主机2。属于该数据流1的数据报文的rm取值均为0b00,lb字段取值均为lb1。从而交换机1接收到该属于数据流1的数据报文时,确定从交换机1到达主机2的可达路径包括4条,可以通过lb字段取值从4条可达路径选择一条传输路径传输。发送端可以针对不同的数据流中的数据报文的lb字段配置不同的取值。可以理解的是,不同的数据流可以在设定时长内发送的数据流。
[0112]
示例2,针对第二种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则1,并且针对属于同一数据流的相邻两个数据报文进行封装时在第二字段采用不同的取值。一条数据流中数据报文的lb取值逐包变化。逐个数据报文在多路径中进行负载分担,负载分担效果较好,但乱序程度严重,需要接收端具备重组乱序报文的能力。
[0113]
例如,参见图6b所示,以表1为例。rm取值为0b00,表示采用负载分担规则1,即基于流的选路模式,在全部可达路径中选路。以数据流1(flow1)为例,从主机1到达主机2。属于该数据流1的数据报文的rm取值均为0b00。参见6b所示,属于数据流的4个数据报文的lb字段取值分别为lb1、lb2、lb3和lb4。从而交换机1接收到该属于数据流1的数据报文时,确定从交换机1到达主机2的可达路径包括4条,可以通过lb字段取值(或者lb字段取值和五元组)进行哈希运算从4条可达路径选择一条传输路径传输。由于同一数据流的4个数据报文的lb值不同,因此通过哈希运算后分担到4条传输路径上传输。
[0114]
示例3,针对第二种-第五种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则1,并且针对属于同一数据流的数据报文进行分组,属于同一组(同一流簇)的数据报文的第二字段的取值相同。一条数据流中数据报文的lb取值逐组变化。
[0115]
例如,参见图6c所示,以表1为例。rm取值为0b00,表示采用负载分担规则1,即基于流的选路模式,在全部可达路径中选路。以数据流1(flow1)为例,从主机1到达主机2。属于该数据流1的数据报文的rm取值均为0b00。参见6c所示,属于数据流的4个数据报文的lb字段取值分别为lb1、lb1、lb2和lb2。从而交换机1接收到该属于数据流1的数据报文时,确定从交换机1到达主机2的可达路径包括4条,可以通过lb字段取值(或者lb字段取值和五元组)进行哈希运算从4条可达路径选择一条传输路径传输。lb取值相同的数据报文通过同一传输路径转发,lb取值不同的数据报文通过不同的传输路径转发。
[0116]
示例4,针对第六种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则2(在最短可达路径中选路),并且针对属于同一数据流的数据报文进行封装时在第二字段采用相同的取值。
[0117]
作为一种举例,本技术实施例中,交换机配置的路由表可以包括用于指示各个传输路径远近程度的代价值(cost)。cost值越小可以标识传输路径越短。例如,参见表2所示的路由表。表2中,不同的出端口对应不同的传输路径。
[0118]
表2
[0119]
[0120][0121]
从而交换机可以根据路由表确定一条或者多条可达路径,根据代价值可以从一条或者多条可达路径中确定出最短路径。应理解的是,如果仅存在一条可达路径,则该条可达路径为最短可达路径。
[0122]
例如,参见图7a所示,以表1为例。rm取值为0b10,表示采用负载分担规则2,即基于流的选路模式,在最短可达路径中选路。以数据流1(flow1)为例,从主机1到达主机2。属于该数据流1的数据报文的rm取值均为0b00,lb字段取值均为lb1。从而交换机1接收到该属于数据流1的数据报文时,确定从交换机1到达主机2的最短可达路径,可以通过路由表从全部可达路径中确定出最短可达路径。参见图7a所示,最短可达路径包括2条。可以进一步通过lb字段取值从2条可达路径选择一条传输路径传输数据流1。发送端可以针对不同的数据流中的数据报文的lb字段配置不同的取值。
[0123]
示例5,针对第七种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则2,并且针对属于同一数据流的相邻两个数据报文进行封装时在第二字段采用不同的取值。一条数据流中数据报文的lb取值逐包变化。逐个数据报文在多条最短路径中进行负载分担,负载分担效果较好,但乱序程度严重,需要接收端具备重组乱序报文的能力。
[0124]
例如,参见图7b所示,以表1为例。rm取值为0b10,表示采用负载分担规则2,即基于流的选路模式,在全部可达路径中选路。以数据流1(flow1)为例,从主机1发往主机2。属于该数据流1的数据报文的rm取值均为0b10。参见7b所示,属于数据流1的4个数据报文的lb字段取值分别为lb1、lb2、lb3和lb4。从而交换机1接收到该属于数据流1的数据报文时,确定从交换机1到达主机2的最短可达路径包括2条,可以通过lb字段取值(或者lb字段取值和五元组)进行哈希运算从2条可达路径选择传输路径传输。因此,数据流1的4个数据报文分担到2条最短可达路径上传输。
[0125]
示例6,针对第八种-第十种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则2,并且针对属于同一数据流的数据报文进行分组,属于同一组(同一流簇)的数据报文的第二字段的取值相同。一条数据流中数据报文的lb取值逐组变化。
[0126]
例如,参见图7c所示,以表1为例。rm取值为0b10,表示采用负载分担规则1,即基于流的选路模式,在全部可达路径中选路。以数据流1(flow1)为例,从主机1到达主机2。属于该数据流1的数据报文的rm取值均为0b10。参见7c所示,属于数据流的4个数据报文的lb字段取值分别为lb1、lb1、lb2和lb2。从而交换机1接收到该属于数据流1的数据报文时,确定从交换机1到达主机2的最短可达路径包括2条,可以通过lb字段取值(或者lb字段取值和五元组)进行哈希运算从2条最短可达路径选择传输路径传输。lb取值相同的数据报文通过同一最短可达路径转发,lb取值不同的数据报文通过不同的最短可达路径转发。
[0127]
示例7,针对第十一种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则3。一种方式中,在采用负载分担规则3时,可以将lb的取值配置为缺省值。另一种方式中,在采用负载分担规则3中,数据报文可以不包括lb。
[0128]
例如,参见图8所示,以表1为例。rm取值为0b01,表示采用负载分担规则3,即基于自适应路由的选路模式,在全部可达路径中选路。以数据流1(flow1)为例,从主机1到达主机2。属于该数据流1的数据报文的rm取值均为0b01。交换机在接收到rm取值为0b01的数据报文时,在路由表配置的全部可达路径中根据每个出端口的cost以及出端口队列的拥塞程度决策选路。比如,选择拥塞程度小于第一门限值的传输路径中距离最短的传输路径。作为一种举例,交换机可以基于路由表确定最小cost的出端口,即选择最短可达路径,如果有多条最短可达路径,选择负载最小的最短可达路径,即负载最小的出端口。如果最短可达路径的出端口拥塞程度超过第一门限值,则选择cost次高的不拥塞的出端口,以此类推。如图8所示,传输路径:交换机1

交换机5

交换机6,与传输路径:交换机1

交换机4

交换机6,远近程度相同,均为最短可达路径。交换机1接收到来自主机1的数据报文1后,确定两条最短可达路径,从最短可达路径中选择负载最低的传输路径:交换机1

交换机5

交换机6,将数据报文1转发给交换机5。交换机1接收到数据报文2后,负载最低的传输路径依然为:交换机1

交换机5

交换机6,将数据报文2转发给交换机5。交换机1接收到数据报文3后,负载最低的传输路径为:交换机1

交换机4

交换机6,将数据报文3转发给交换机4。交换机1接收到数据报文4后,负载最低的传输路径为:交换机1

交换机4

交换机6,将数据报文4转发给交换机5。接收到数据报文5时,两条最短可达路径的拥塞程度大于第一门限值,从而选择距离稍远些的传输路径:交换机1

交换机2

交换机3

交换机6。交换机1将数据报文5转发给交换机2。
[0129]
示例8,针对第十二种可能的示例进行说明:发送端侧通过在数据流包括的数据报文中指示交换机采用负载分担规则3。一种方式中,在采用负载分担规则4时,可以将lb的取值配置为缺省值。另一种方式中,在采用负载分担规则4中,数据报文可以不包括lb。
[0130]
例如,参见图9所示,以表1为例。rm取值为0b11,表示采用负载分担规则4,即基于自适应路由的选路模式,在最短可达路径中选路。以数据流1(flow1)为例,从主机1到达主机2。属于该数据流1的数据报文的rm取值均为0b11。交换机在接收到rm取值为0b11的数据报文时,在路由表配置的全部可达路径中根据每个出端口的cost决策选路。比如,选择负载最小的最短可达路径。作为一种举例,交换机可以基于路由表确定最小cost的出端口,即选择最短可达路径,如果有多条最短可达路径,选择负载最小的最短可达路径,即负载最小的出端口。如图9所示,传输路径:交换机1

交换机5

交换机6,与传输路径:交换机1

交换机4

交换机6,远近程度相同,均为最短可达路径。交换机1接收到来自主机1的数据报文1后,确定两条最短可达路径,从最短可达路径中选择负载最低的传输路径:交换机1

交换机5

交换机6,将数据报文1转发给交换机5。交换机1接收到数据报文2后,负载最低的传输路径依然为:交换机1

交换机5

交换机6,将数据报文2转发给交换机5。交换机1接收到数据报文3后,负载最低的传输路径为:交换机1

交换机4

交换机6,将数据报文3转发给交换机4。交换机1接收到数据报文4后,负载最低的传输路径为:交换机1

交换机4

交换机6,将数据报文4转发给交换机5。接收到数据报文5时,两条最短可达路径的拥塞程度大于第一门限值,从而选择距离稍远些的传输路径:交换机1

交换机2

交换机3

交换机6。交换机1将数据报文5转发给交换机2。
[0131]
在本技术实施例,发送端可以针对不同的流类型的数据流指示转发设备采用不同的负载分担规则。参见图10所示,为本技术实施例提供的一种可能的负载分担方法流程示
意图。该负载分担方法可以由发送端执行,比如可以由发送端的设备中的网卡执行。
[0132]
1001,发送端向转发设备发送第一数据报文,所述第一数据报文属于第一数据流,所述第一数据报文包括的rm的取值为第一值,所述第一值用于指示所述转发设备采用第一负载分担规则转发所述第一数据报文。转发设备可以是交换机或者路由器等具有转发数据报文功能的设备。
[0133]
1002,传输路径中,任一转发设备根据rm的取值为第一值,采用第一负载分担规则向下一跳转发所述第一数据报文,直到到达第一数据流对应的接收端,图10中,以第一数据流对应的接收端为第一接收端为例。
[0134]
1003,发送端向所述转发设备发送第二数据报文,所述第二数据报文属于第二数据流,所述第二数据报文包括的rm的取值为第二值,所述第二值用于指示所述转发设备采用第二负载分担规则转发所述第二数据报文。
[0135]
1004,传输路径中,任一转发设备根据rm的取值为第二值,采用第二负载分担规则向下一跳转发所述第二数据报文,直到到达第二数据流对应的接收端。图10中,以第二数据流对应的接收端为第二接收端为例。
[0136]
其中,所述第一数据流的流类型可以为老鼠流,所述第二数据流的流类型可以为大象流。
[0137]
本技术实施例并不限定步骤1001和步骤1003之间的先后执行顺序,比如可以先执行1001,后执行1003,又比如可以先执行1003后执行1001。
[0138]
通过本技术实施例提供的方法,发送端针对不同的流类型的数据流指示交换机采用不同的负载分担规则,从而不需要针对交换机进行全局配置负载分担规则。从而交换机可以针对不同的数据流采用不同的负载分担规则,适用复杂组网和混合流量的场景。
[0139]
一种可能的实施方式中,针对老鼠流,可以采用自适应路由的选路模式,比如第一负载分担规则可以是负载分担规则3和负载分担规则4。针对大象流,可以采用基于流的选路模式,比如第二负载分担规则可以是负载分担规则3和负载分担规则4。
[0140]
在一些实施例中,发送端可以根据数据流的业务类型和/或数据量大小来确定数据流的流类型。作为一种举例,比如事务性的数据流、www浏览产生的数据流或者搜索查询产生的数据流等,属于老鼠流。比如由数据备份、或虚拟机迁移等原因而产生的数据流等属于大象流。作为另一种举例,发送端确定待发送的数据流的流量大于流量门限值,则确定该数据流属于大象流,发送端确定待发送的数据流的流量小于或者等于流量门限值,则确定该数据流属于老鼠流。流量门限值可以根据区别大象流和老鼠流的经验值。
[0141]
本技术实施例中封装以及发送数据报文的操作,可以由网卡实现。一种方式中,网卡可以根据数据流的业务类型和/或数据量大小来确定数据流的流类型。另一种方式中,处理器可以将数据流的流量特征发送给网卡,比如处理器可以向网卡指示待发送的数据流的流类型为大象流或者老鼠流。
[0142]
另一种可能的实施方式中,发送端可以根据接收端的重组乱序报文的能力以及待发送数据流的流类型确定指示转发设备采用的负载分担规则。接收端的重组乱序报文能力,可以由控制器或者人工配置发送端,也可以由接收端与发送端之间进行信息交互,将自身的能力信息发送给对端。能力信息用于指示是否具备重组乱序报文的能力。以第一数据流为例,第一数据流为发往第一接收端的数据流。发送端可以从第一接收端获取第一接收
端的能力信息,第一接收端的能力信息用于指示所述第一接收端是否具备重组乱序报文的能力。
[0143]
如下以第一数据流为例,第一数据流为老鼠流,以第一数据流发往第一接收端为例。
[0144]
一种举例中,第一接收端具备重组乱序报文的能力,则针对该老鼠流可以采用自适应路由的选路模式,比如采用负载分担规则3或者负载分担规则4。以表1为例,发送端可以在发送第一数据流时,在第一数据流的数据报文的rm字段封装0b01或者0b11。一种示例中,以封装0b01为例,转发设备在接收到第一数据流时,确定rm字段取值为0b01时,根据到达所述第一接收端的传输路径的远近程度以及拥塞程度在所述传输路径中选择用于转发所述第一数据报文的第一转发路径。比如,所述第一转发路径为拥塞程度小于第一门限值的传输路径中距离最短的传输路径。另一种示例中,以封装0b11为例,转发设备在接收到第一数据报文时,确定rm字段取值为0b11时,选择负载最小的最短可达路径。
[0145]
另一种举例中,第一接收端不具备重组乱序报文的能力,则针对该老鼠流可以采用基于流的选路模式,比如采用负载分担规则2,指示转发设备基于lb来选择传输路径。例如,可以采用第六种可能的示例中的方式。再例如,可以采用第十种可能的示例的方式。以表1为例,发送端可以在发送第一数据流时,在第一数据流的数据报文的rm字段封装0b10。转发设备在接收到第一数据报文时,确定rm字段取值为0b10,根据lb(或者lb和五元组)进行哈希运算,从最短可达路径中选择一个转发路径。
[0146]
比如采用第六种可能的示例中的方式,针对属于第一数据流的第一数据报文和第三数据报文为例,第一数据报文和第三数据报文中包括的rm的取值相同,lb的取值也相同。再比如,采用第十种可能的示例中的方式,第一数据报文和第三数据报文中包括的rm的取值相同,当第三数据报文与第一数据报文的发送时间间隔大于第一时长时,第三数据报文的lb的取值与第一数据报文的lb的取值不同;当第三数据报文与第一数据报文的发送时间间隔小于或者等于第一时长时,第三数据报文的lb的取值与第一数据报文的lb的取值不同。
[0147]
如下以第二数据流为例,第二数据流为大象流,以第二数据流发往第二接收端为例。
[0148]
一种举例中,第二接收端不具备重组乱序报文的能力。采用基于流的选路模式,比如采用负载分担规则1。发送端指示转发设备基于lb在全部可达路径中选择传输路径。例如,可以采用第一种可能的示例中的方式。再例如,可以采用第六种可能的示例的方式。以表1为例,发送端可以在发送第二数据流时,在第二数据流的数据报文的rm字段封装0b00。转发设备在接收到第二数据报文时,确定rm字段取值为0b00,根据lb(或者lb和五元组)进行哈希运算,从全部可达路径中选择一个转发路径。
[0149]
比如,以发送端发送均属于第二数据流的第二数据报文和第四数据报文为例,采用第一种可能的示例中的方式时,第四数据报文的lb的取值与第二数据报文的lb的取值相同。采用第六种可能的示例的方式时,当第四数据报文与第二数据报文相邻且第四数据报文与第二数据报文的发送时间间隔大于第二时长时,第四数据报文的lb的取值与第二数据报文的lb的取值不同;当第四数据报文与第二数据报文相邻且第四数据报文与第二数据报文的发送时间间隔小于或者等于第二时长时,第四数据报文的lb的取值与第二数据报文的
lb的取值相同。
[0150]
另一种举例中,第二接收端具备重组乱序报文的能力。一些实施例中,可以采用基于流的选路模式,比如采用负载分担规则1。发送端指示转发设备基于lb在全部可达路径中选择传输路径。例如,可以采用第二种可能的示例中的方式。再例如,可以采用第三种可能的示例的方式。再例如,可以采用第四种可能的示例的方式。例如,可以采用第五种可能的示例的方式。以表1为例,发送端可以在发送第二数据流时,在第二数据流的数据报文的rm字段封装0b00。转发设备在接收到第二数据报文时,确定rm字段取值为0b00,根据lb(或者lb和五元组)进行哈希运算,从全部可达路径中选择一个转发路径。另一些实施例中,可以采用自适应路由的选路模式,在全部可达路径中选择。比如采用负载分担规则3。
[0151]
比如,以发送端发送均属于第二数据流的第二数据报文和第五数据报文为例,采用第二种可能的示例中的方式时,第五数据报文与第二数据报文相邻时,第五数据报文的lb的取值与第二数据报文的lb的取值不同。采用第三种可能的示例中的方式时,当第五数据报文与第二数据报文间隔的报文数大于第二数量时,第五数据报文的lb的取值与第二数据报文的lb的取值不同,当第五数据报文与第二数据报文的间隔的报文数小于或者等于第二数量时,第五数据报文的lb的取值与第二数据报文的lb的取值相同。采用第四种可能的示例中的方式时,当第五数据报文与第二数据报文不属于同一时间周期时,第五数据报文的lb的取值与第二数据报文的lb的取值不同,当第五数据报文与第二数据报文属于同一时间周期时,第五数据报文的lb的取值与第二数据报文的lb的取值相同。采用第五种可能的示例中的方式时,第五数据报文与第二数据报文间隔的报文数大于第二数量时,第五数据报文的lb的取值与第二数据报文的lb的取值不同,当第五数据报文与第二数据报文的间隔的报文数小于或者等于第二数量时,第五数据报文的lb的取值与第二数据报文的lb的取值相同。
[0152]
作为一种举例,下面结合表1中rm的取值与负载分担规则的对应关系,发送端根据流类型和接收端的重组乱序报文的能力确定封装在数据报文中的rm和lb的取值,可以参见表3所示。应理解的是,表3仅作为一种举例,并不构成具体限定。
[0153]
表3
[0154][0155]
下面结合具体的网络应用场景,示例性地对本技术实施例提供的方案进行详细说明。
[0156]
一种示例性地的应用场景中,在如图11所示的网络场景中,host1发给host2 4条数据流。比如其中2条数据流属于大象流,图11中通过实线表示,另外2条数据流为老鼠流,图11通过虚线表示。host2具备重组乱序报文的能力,因此,host1发送给host2的同一数据
流的不同数据报文可以在不同的路径上传输。以表3为例,host1向host2发送两条大象流时,针对2条大象流包括的多个数据报文中rm取值为0b00,即指示各个交换机采用基于流的选路模式,且在全部可达路径中选路。host1针对每一条大象流,在封装数据报文时,可以逐包切换lb的取值,或者多个数据报文切换一次lb的取值。从而交换机基于rm和lb进行转发,使2条大象流能够较为均匀的分担到4条可达路径上。
[0157]
host1向host2发送两条老鼠流时,针对2条老鼠流包括的多个数据报文中rm取值为0b11,即指示各个交换机采用自适应路由的选路模式,在路由表配置的路径中选择最短可达路径进行选路。参见图11所示,host1与host2之间包括两条最短可达路径,从而交换机基于rm进行转发两条老鼠流中的数据报文时,可以针对每个数据报文实时选择负载最小的最短可达路径。因此,两条老鼠流中的数据报文传输在中间两条最短可达路径中且负载最小的传输路径上。
[0158]
通过上述应用场景可以看出,本技术实施例中,针对带宽优先的大数据流量尽可能的分散到所有可达路径上,充分利用了多路径的大带宽。针对时延优先的小数据流量尽可能的在最短的且负载最轻的路径上发送,充分享受了最短路径的低延时。发送端通过网卡发送的数据报文携带rm和lb字段,差异化的给不同流量提供不同的转发策略,实现差异化的服务。
[0159]
现有网络中端侧和交换机没有更好配合来实现更好的负载分担,交换机无法感知端侧的诉求,一般配置固定的负载分担规则,只能满足大带宽或低延时中的一种诉求,无法同时满足两种流类型的差异诉求。本技术提出由发送端根据流量特征和对端网卡能力,带rm和lb字段穿过网络,告诉沿途的交换机端侧的诉求,沿途的交换机根据网卡带来的rm和lb字段所表达出的诉求实现对应的负载分担技术。本技术实施例根据对端的网卡能力,大带宽的大象流分担到所有路径,低时延的老鼠流走最短路径,同时满足两种流类型的差异诉求。
[0160]
另一种示例性地的应用场景中,在如图12所示的网络场景中,host1发给host2 4条数据流,假设4条数据流均为大象流。图12中通过实线表示。host3发给host4 1条数据流,该数据流为大象流。host2具备重组乱序报文的能力,同一数据流的不同数据报文可以在不同的传输路径上传输。host4不具备重组乱序报文的能力。
[0161]
以表3为例,host1向host2发送4条大象流时,一种示例中,针对4条大象流包括的多个数据报文中rm取值为0b00,即指示各个交换机采用基于流的选路模式,且在全部可达路径中选路。host1针对每一条大象流,在封装数据报文时,可以逐包切换lb的取值,或者多个数据报文切换一次lb的取值。从而交换机基于rm和lb进行转发,使4条大象流能够较为均匀的分担到4条可达路径上。另一种示例中,针对host1向host2发送的4条大象流包括的多个数据报文中rm取值配置为0b01,即指示各个交换机采用自适应路由的选路模式,且在全部可达路径中选路。lb的取值可以采用缺省值。从而交换机基于rm和lb针对每个数据报文进行转发时,根据传输路径的负载选择负载最轻的传输路径,使4条大象流包括的各个数据报文能够实时被分担到负载最轻的传输路径上传输。
[0162]
host3向host4发送1条大象流时,针对4条大象流包括的多个数据报文中rm取值为0b00,即指示各个交换机采用基于流的选路模式,且在全部可达路径中选路。由于host4不具备重组乱序报文的能力,host3针对该条大象流,在封装数据报文时,不切换lb的取值,该
大象流中所有数据报文通过一条可达路径传输。
[0163]
通过上述应用场景可以看出,本技术实施例中,对于接收端不具备重组乱序报文能力的大象流,则基于流来选择路径,并且通过lb取值来使得数据流通过一条路径传输,防止数据流中的数据报文发生乱序。对于接收端具备重组乱序报文能力的大象流,则基于自适应路由的选路模式灵活选择负载最轻的传输路径,或者通过切换lb取值,使得大象流能够均匀的分担到4条可达路径上。本技术实施例中针对不能乱序的数据流占用一条路径,而可以乱序的数据流基于负载进行转发。针对重组乱序报文能力不一的混合组网,可以把所有可达路径的带宽尽量利用起来。而现有网络交换机感知不到端侧的重组乱序报文能力,针对重组乱序报文能力不一的混合组网,只能一刀切的采用基于流的负载分担技术,导致网络中的某些路径的拥塞情况加剧。
[0164]
基于与上述方法同样的技术构思,本技术实施例提供一种负载分担装置1300,参见图13所示。负载分担装置1300可以包括发送模块1301。负载分担装置1300还可以包括处理模块1302。负载分担装置1300还可以包括接收模块1303。
[0165]
在一种可能的应用场景中,所述装置1300可以应用于网络设备,也就是可以应用于发送设备,可以由网络设备中的处理器来实现,或者由网络设备中网卡来实现。负载分担装置1300用于实现上述任一实施例中主机或者处理器或者网卡实现的方法。
[0166]
发送模块1301,用于向转发设备发送第一数据报文,所述第一数据报文属于第一数据流,所述第一数据报文包括的第一字段的取值为第一值,所述第一值用于指示所述转发设备采用第一负载分担规则转发所述第一数据报文;以及向所述转发设备发送第二数据报文,所述第二数据报文属于第二数据流,所述第二数据报文包括的第一字段的取值为第二值,所述第二值用于指示所述转发设备采用第二负载分担规则转发所述第二数据报文;其中,所述第一数据流的流类型与所述第二数据流的流类型不同。在一种可能的实现方式中,所述第一数据流的流类型为老鼠流,所述第二数据流的流类型为大象流。
[0167]
在一种可能的实现方式中,所述处理模块1302,还可以在发送模块1301向转发设备发送第一数据报文之前,根据所述第一数据流的业务类型或者数据量大小确定所述第一数据流的流类型为老鼠流;或者向所述转发设备发送第二数据报文之前,根据所述第二数据流的业务类型或者数据量大小确定所述第二数据流的流类型为大象流。
[0168]
在一种可能的实现方式中,所述第一数据流为发往第一接收端的数据流;所述处理模块1302,还用于根据所述第一接收端的重组乱序报文的能力以及所述第一数据流的流类型确定所述转发设备使用第一负载分担规则转发所述第一数据流。
[0169]
在一种可能的实现方式中,所述接收模块1303还可以接收来自第一接收端的能力信息,所述能力信息用于指示所述第一接收端是否具备重组乱序报文的能力。
[0170]
在一种可能的实现方式中,所述第二数据流为发往第二接收端的数据流;所述处理模块1302,还可以根据所述第二接收端的重组乱序报文的能力以及所述第二数据流的流类型确定所述转发设备使用第二负载分担规则转发所述第二数据流。
[0171]
在一种可能的实现方式中,所述第一接收端具备重组乱序报文的能力;所述第一负载分担规则为:根据到达所述第一接收端的不同传输路径的远近程度以及拥塞程度在所述不同传输路径中选择用于转发所述第一数据报文的传输路径;或者,将到达所述第一接收端的最短路径用于转发所述第一数据报文的所述转发路径。
[0172]
在一种可能的实现方式中,所述第一接收端不具备重组乱序报文的能力;所述第一数据报文还包括第二字段,所述第一数据报文包括的第二字段的取值用于指示所述第一数据报文的负载分担因子;所述第一负载分担规则为:基于所述负载分担因子将到达所述第一接收端的最短路径中用于转发所述第一数据报文的转发路径。
[0173]
在一种可能的实现方式中,所述发送模块1301,还可以向转发设备发送第三数据报文,所述第三数据报文属于所述第一数据流,所述第三数据报文包括的第一字段的取值为所述第一值,所述第三数据报文的目的地址指示所述第二接收端;所述第三数据报文还包括第二字段,所述第三数据报文包括的第二字段的取值用于指示所述第三数据报文的负载分担因子;
[0174]
其中,所述第三数据报文的第二字段的取值与所述第一数据报文的第二字段的取值相同;或者,当所述第三数据报文与所述第一数据报文的发送时间间隔大于第一时长时,所述第三数据报文的第二字段的取值与所述第一数据报文的第二字段的取值不同;当所述第三数据报文与所述第一数据报文的发送时间间隔小于或者等于第一时长时,所述第三数据报文的第二字段的取值与所述第一数据报文的第二字段的取值不同。
[0175]
在一种可能的实现方式中,所述第二数据报文还包括第二字段,所述第二数据报文包括的第二字段的取值用于指示所述第二数据报文的负载分担因子;其中,所述第二数据报文的第二字段的取值与所述第三数据报文的第二字段的取值不同。
[0176]
在一种可能的实现方式中,所述第二数据报文还包括第二字段,所述第二数据报文包括的第二字段的取值用于指示所述第二数据报文的负载分担因子;所述第二负载分担规则为:基于所述负载分担因子在到达所述第二接收端的至少一条传输路径中选择用于转发所述第二数据报文的转发路径。
[0177]
在一种可能的实现方式中,所述第二接收端不具备重组乱序报文的能力,所述发送模块1301,还用于向转发设备发送第四数据报文,所述第四数据报文属于所述第二数据流,所述第四数据报文包括的第一字段的取值为所述第二值,所述第四数据报文还包括第二字段,所述第四数据报文包括的第二字段的取值用于指示所述第四数据报文的负载分担因子;
[0178]
其中,所述第四数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同;或者,当所述第四数据报文与所述第二数据报文相邻且所述第四数据报文与所述第二数据报文的发送时间间隔大于第二时长时,所述第四数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同;当所述第四数据报文与所述第二数据报文相邻且所述第四数据报文与所述第二数据报文的发送时间间隔小于或者等于第二时长时,所述第四数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同。
[0179]
在一种可能的实现方式中,所述第二接收端具备重组乱序报文的能力;所述发送模块1301,还用于向所述转发设备发送第五数据报文,所述第五数据报文属于所述第二数据流,所述第五数据报文包括的第一字段的取值为所述第二值,所述第五数据报文还包括第二字段,所述第五数据报文包括的第二字段的取值用于指示所述第五数据报文的负载分担因子;其中,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同;或者,当所述第五数据报文与所述第二数据报文的发送时间间隔大于第二时长时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同,当所述
第五数据报文与所述第二数据报文的发送时间间隔小于或者等于第二时长时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同;或者,当所述第五数据报文与所述第二数据报文间隔的报文数大于第二数量时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值不同,当所述第五数据报文与所述第二数据报文的间隔的报文数小于或者等于第二数量时,所述第五数据报文的第二字段的取值与所述第二数据报文的第二字段的取值相同。
[0180]
另一种可能的应用场景中,所述装置1300还可以应用于转发设备,可以由转发设备中的处理器来实现,或者由转发设备中网卡来实现。负载分担装置1300用于实现上述任一实施例中转发设备或者交换机或者处理器实现的方法。
[0181]
接收模块1303,用于接收第一数据报文,所述第一数据报文属于第一数据流,所述第一数据报文包括的第一字段的取值为第一值,以及接收第二数据报文,所述第二数据报文属于第二数据流,所述第二数据报文包括的第一字段的取值为第二值;发送模块1301用于根据所述第一值指示的第一负载分担规则转发所述第一数据报文;以及根据所述第二值指示的第二负载分担规则转发所述第二数据报文;所述第一数据流的流类型与所述第二数据流的流类型可以不同。在一种可能的实现方式中,所述第一数据流的流类型可为老鼠流,所述第二数据流的流类型可为大象流。
[0182]
在一种可能的实现方式中,所述第一数据流为发往第一接收端的数据流,所述处理模块1302,具体用于在第一字段的取值为第一值时,根据到达所述第一接收端的传输路径的远近程度以及拥塞程度在所述传输路径中选择用于转发所述第一数据报文的第一转发路径;其中,所述第一转发路径为拥塞程度小于第一门限值的传输路径中到达第一接收端距离最短的传输路径。
[0183]
在一种可能的实现方式中,所述第一数据流为发往第一接收端的数据流,所述第一数据报文还包括第二字段,所述第二字段用于指示负载分担因子;所述处理模块1302,具体用于在第一字段的取值为第一值时,基于所述负载分担因子在到达所述第一接收端的至少一条最短路径中选择用于转发所述第一数据报文的转发路径。
[0184]
在一种可能的实现方式中,所述第一数据报文包括第一目的地址,所述第一目的地址指示所述第一接收端,所述处理模块1302具体用于根据路由表确定所述第一目的地址对应的代价值从小到大的至少一个出端口;路由表中包括第一目的地址对应的多个出端口以及每个出端口对应的代价值,所述代价值指示从所述代价值对应的出端口到达所述第一接收端的传输路径的远近程度;从所述至少一个出端口中选择第一出端口,所述第一出端口的拥塞程度小于第一门限值且所述第一出端口为所述至少一个出端口中负载最低的出端口。
[0185]
在一种可能的实现方式中,所述第二数据流为发往第二接收端的数据流,所述处理模块1302,具体用于在所述第一字段的取值为第二值时,基于所述负载分担因子在到达所述第二接收端的至少一条传输路径中选择用于转发所述第二数据报文的转发路径。
[0186]
参见图14,是本技术另一实施例提供的一种芯片的结构性框图。如图14所示的本实施例中的芯片可以包括控制器1410和接口1420。控制器1410和接口1420相互配合,使得芯片执行上述实施例中网卡所执行的方法或者处理器所执行的方法。其中,控制器1410可以是中央控制器(cpu,central processing unit),通用处理器,协控制器,数字信号控制
器(digital signal processor,dsp),专用集成电路(asic,application-specific integrated circuit),现场可编程门阵列(fpga,field programmable gate array)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。该控制器也可以是实现计算功能的组合,例如包含一个或多个微控制器组合,dsp和微控制器的组合等等。
[0187]
此外,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,上述计算机程序在被计算设备执行时实现前述主机或者交换机或者处理器或者网卡所实现的方法。
[0188]
此外,本技术还提供了一种计算机程序产品,该计算机程序产品包括计算机指令。当该计算机指令被计算设备执行时实现前述主机或者交换机或者处理器或者网卡所实现的方法。
[0189]
基于同一技术构思,本技术实施例中提供的负载分担装置解决问题的原理与本技术方法实施例解决问题的原理相似,因此各设备的实施可以参见装置的实施,为简洁描述,在这里不再赘述。
[0190]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0191]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0192]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0193]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0194]
显然,本领域的技术人员可以对本技术实施例进行各种改动和变型而不脱离本技术实施例的范围。这样,倘若本技术实施例的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1