一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种负载均衡方法、装置和系统与流程

2022-02-22 17:00:52 来源:中国专利 TAG:


1.本发明涉及网络通信技术领域,尤其涉及一种负载均衡方法、装置和系统。


背景技术:

2.随着业务需求的增长,数据中心网络(data center network,dcn)中交换节点的数量在急剧增加。为了充分利用交换节点的转发能力,dcn通过为上层应用提供多条路径来实现负载均衡。当前采用的负载均衡算法主要为等价多路径(equal-cost multi-path,ecmp)技术。
3.如图1所示,为采用现有负载均衡技术转发数据流的过程示意图,应用于数据中心网络100。该数据中心网络100包括由接入节点组成的接入层,由汇聚节点组成的汇聚层,以及由骨干节点组成的核心层。服务器连接对应的接入节点。数据中心网络100中以(point of delivery,pod)作为基本设计单元。数据中心网络包括多个pod(例如,pod1-pod32),不同pod之间通过骨干集(spine set)通信,每个骨干集包括多个骨干节点(spine)。每个pod包括多个接入节点(例如,接入节点t1-t32),多个汇聚节点(例如汇聚节点l1-l4),以及连接接入节点的服务器。pod1中的服务器1包括p1、p2两个出端口,pod1的服务器1和pod32的服务器2之间存在4条静态转发路径f1-f4,f1-f3对应出端口p1,f4对应出端口p2,当p1、p2各剩下1g的带宽时,2条数据流,速率分别为600mbps、1.2gbps,需要转发到pod32中的server2上。pod1的服务器1通过ecmp算法,如哈希、轮询等,选择了f3、f4两条转发路径,此时f3由于转发的是600mbps的数据流,p1出端口带宽还有剩余,而f4转发的是1.2gbps的数据流,所以p2出端口被拥塞。
4.可见,由于ecmp技术是基于逐跳(hop-by-hop)进行流量均衡的,仅考虑了局部均衡,当数据中心网络内的服务器通过对应的接入节点发送数据流时,不同服务器的数据流可能都转发到同一个汇聚节点,如l2,当多条数据流都经该汇聚节点时,超过了该汇聚节点的转发能力,形成网络单节点拥塞。


技术实现要素:

5.本技术提供一种负载均衡方法、装置和系统,用于dcn中。本技术通过由服务器准确计算端到端的负载均衡路径,能够提升整个数据中心网络负载均衡的效率。本技术由权利要求定义。
6.第一方面,本技术公开了一种负载均衡方法,应用于数据中心网络内的服务器。该服务器获取该数据中心网络的拓扑信息;该拓扑信息包括该数据中心网络中网络节点的标识以及该网络节点与该数据中心网络中的邻接节点的连接关系。该服务器获取数据流,并从多条负载均衡路径中选择该数据流对应的转发路径。
7.本技术由服务器根据数据中心网络的拓扑信息来确定负载均衡路径,考虑到了整个数据中心网络的所有网络节点的运行状况,降低了负载均衡路径冲突的可能,提升了整个数据中心网络负载均衡的效率。
8.在一种可选的实现方式中,该多条负载均衡路径是服务器在获取该数据流之前,或在获取该数据流之后,根据该拓扑信息确定的。
9.在获取到数据流之后,服务器对该数据流分片,得到多个流片段,并从该多条负载均衡路径中为该多个流片段中的每个流片段分别选择对应的转发路径。通过该方法,同一条数据流的不同流片段可以同时在多个负载均衡路径被转发,提升了数据流的转发效率。
10.在一种可选的实现方式中,在确定该多条负载均衡路径之前,该服务器还根据该拓扑信息,确定该服务器与目的服务器之间的第一权重。例如,该服务器采用反向传播算法,计算该服务器到该目的服务器之间的中间节点与该目的服务器之间的第二权重,并根据该中间节点的第二权重,确定该服务器与该目的服务器之间的第一权重。通过第一权重,服务器可以得到与目的服务器之间的所有有效的转发路径,便于服务器从所有有效的转发路径中选取该多条负载均衡路径。
11.进一步地,在一种可选的实现方式中,该中间节点包括连接该服务器的多个第一跳节点以及多个第二跳节点,当确定该多条负载均衡路径时,该服务器根据该多个第一跳节点中至少一个第一跳节点的第二权重从该多个第一跳节点中选取一个第一跳节点作为第一负载均衡路径的第一跳;该第一负载均衡路径为该多条负载均衡路径中的任意一条;根据该多个第二跳节点中的至少一个第二跳节点的第二权重,选取一个第二跳节点作为该第一负载均衡路径的第二跳;或,采用随机或轮询或步长方式,从该多个第二跳节点中选取一个第二跳节点作为该第一负载均衡路径的第二跳。服务器通过该方式确定负载均衡路径,可以减少该负载均衡路径与其他服务器确定的负载均衡路径重叠的可能性,降低数据流转发冲突的概率。
12.在一种可选的实现方式中,该第一权重包括该服务器与该目的服务器之间的路径历史信息、网络状态信息、连通的有效路径数中的一个或多个,该网络状态信息包括网络拥塞、丢包、端口带宽、重路由、故障信息中的一种或多种;该第二权重包括与该第一权重对应的信息,例如,该第二权重包括该中间节点与该目的服务器之间的路径历史信息、网络状态信息、连通的有效路径数中的一个或多个,该网络状态信息包括网络拥塞、丢包、端口带宽、重路由、故障信息中的一种或多种。通过第一权重和第二权重来确定负载均衡路径,充分考虑了整个数据中心网络的运行状况,提升了负载均衡的效率。
13.在一种可选的实现方式中,该数据中心网络中故障网络节点的数目达到或超过阈值后,检测到一个该故障网络节点恢复正常时,该服务器根据更新的数据中心网络的拓扑信息,重新生成负载均衡路径。进一步地,在一种可选的实现方式中,该更新的数据中心网络的拓扑信息包括节点状态变更信息,该节点状态变更信息包括该数据中心网络的网络节点发生故障的信息或该数据中心网络的故障网络节点恢复正常的信息。通过该方式,服务器不会在数据中心网络的拓扑信息一发生变化就重新确定负载均衡路径,减少了服务器的计算工作量。
14.在一种可选的实现方式中,当检测到突发流时,该服务器根据该拓扑信息,生成增量负载均衡路径,根据该增量负载均衡路径发送该突发流。进一步地,在一种可选的实现方式中,当该突发流转发完成后,该服务器删除该增量负载均衡路径。通过该方式转发突发流,不会对原有的数据流所承载的业务产生冲击,避免降低这些业务的服务质量(quality of service,qos)。另一方面,突发流发送完后就删除增量负载均衡路径,降低数据中心网
络的转发节点的工作负载。
15.在一种可选的实现方式中,服务器接收该数据中心网络中的控制器发送的该拓扑信息,该拓扑信息是该控制器根据拓扑模型参数以及该数据中心网络的网络节点的信息生成的。通过该方法,数据中心网络中的服务器不需要自己生成整个数据中心网络的拓扑信息,并且,服务器根据该拓扑信息,生成负载均衡路径,可以提高负载均衡的效率。
16.在一种可选的实现方式中,该拓扑模型参数包括数据中心网络的组网方式和\或网络节点的双归属性。通过该方式,控制器可以灵活地根据数据中心网络的物理拓扑生成数据中心的拓扑信息。
17.在一种可选的实现方式中,该网络节点的信息包括该服务器的信息,该服务器的信息是通过与该服务器连接的第一跳节点向该控制器发送的。数量远超第一跳节点的服务器的信息通过第一跳节点向控制器发送,减少了服务器与控制器之间的数据交互次数,提升了控制器的工作效率。
18.第二方面,本技术公开了一种服务器,该服务器包括用于实现第一方面或第一方面的任意可能设计提供的负载均衡方法的功能模块;本技术对该功能模块的划分不做限定,可以按照第一方面的负载均衡方法的流程步骤对应划分功能模块,也可以按照具体实现需要划分功能模块。
19.第三方面,本技术公开了另一种服务器,应用于数据中心网络中。该服务器包括至少一个通信接口,存储器和处理器。通信接口用于与外部设备通信。例如,一个通信接口用于向控制器发送该服务器的信息,以及从该控制器接收该数据中心网络的拓扑信息。再例如,另一个通信接口用于向该数据中心网络中的转发节点发送数据流。该存储器用于存储程序代码,该处理器用于执行该程序代码以使该服务器能够实现第一方面的第一方面的任意可能设计提供的负载均衡方法。
20.第四方面,本技术公开了一种负载均衡系统,应用于数据中心网络,包括服务器和控制器,该服务器为第二或第三方面公开的服务器,该控制器收集该数据中心网络中的网络节点的信息,并根据拓扑模型参数以及该网络节点的信息生成该数据中心网络的拓扑信息,然后,将该拓扑信息发送至该服务器,以便该服务器执行第一方面及其各实现方式提供的方法。
21.第五方面,本技术公开了一种计算机程序代码,该计算机程序代码包括的指令被计算机执行时,能够使得该计算机实现上述第一方面或第一方面任意一种可能实现的方式中的该负载均衡的方法。
22.第六方面,本技术公开了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序指令,当该计算机程序指令在计算机上运行时,使得该计算机执行上述第一方面或第一方面任意一种可能的实现方式中的该负载均衡方法。
23.本技术第二至第六方面有益效果可以参考第一方面及其实施方式。
附图说明
24.图1为采用现有负载均衡技术转发数据流的过程示意图;
25.图2a为本技术实施例提供的一种负载均衡系统结构示意图;
26.图2b为本技术实施例提供的另一种基于clos组网的负载均衡系统结构示意图;
27.图3a为本技术实施例提供的一种三层clos组网结构示意图;
28.图3b为本技术实施例提供的一种二层组网结构示意图;
29.图3c为本技术实施例提供的一种四层组网结构示意图;
30.图4为本技术实施例提供的一种负载均衡方法的流程示意图;
31.图5为本技术实施例提供的一种服务器的结构示意图;
32.图6为本技术实施例提供的一种智能网卡结构示意图;
33.图7为本技术实施例提供的各转发节点的权重的示意图;
34.图8为本技术实施例提供的一种负载均衡路径列表;
35.图9为本技术实施例提供的一种第二路径计算法方法的示意图;
36.图10a为本技术实施例提供的一种拓扑信息收集方法的示意图;
37.图10b为本技术实施例提供的另一种拓扑信息收集方法的示意图;
38.图11为本技术实施例提供的一种数据流发送方法的示意图;
39.图12为本技术实施例提供的一种控制器的结构示意图。
具体实施方式
40.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚的描述。显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。
41.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。在本技术实施例中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个节点是指两个或两个以上的节点。“至少一个”是指任意的数量,例如,一个,两个或两个以上。“a和/或b”可以是只有a,只有b,或包括a和b。“a、b和c中的至少一个”,可以是只有a,只有b,只有c,或包括a和b,包括b和c,包括a和c,或者包括a,b和c。本技术中的“第一”、“第二”等用语仅用于区分不同的对象,而不用于对象的指示优先级或重要性。
42.为了降低转发路径之间的冲突,提升数据中心网络负载均衡的效率,在一个实施方式中,如图2a所示,提供了一种负载均衡系统200,该负载均衡系统200包括控制器210、服务器250和k层转发节点,如第一层转发节点201、第二层转发节点202、第三层转发节点203和第四层转发节点204。转发节点层级根据数据中心网络组网方式的不同而不同。当数据中心网络为图3a所示组网时,负载均衡系统200包括3层(k=3)转发节点,如第一层转发节点201、第二层转发节点202和第三层转发节点203。数据中心网络组网方式为如图3b所示的二层组网时,此时负载均衡系统200包括2层(k=2)转发节点,如第一层转发节点201和第二层转发节点202,此时,第一层转发节点201可以是叶子交换机,第二层转发节点202可以是骨干交换机。当数据中心网络为图3c所示组网时,负载均衡系统200包括4层(k=4)转发节点,如第一层转发节点201、第二层转发节点202、第三层转发节点203和第四层转发节点204,其中,第一层转发节点201可以是叶子交换机、第二层转发节点202可以是骨干交换机、第三层转发节点203可以是核心交换机、第四层转发节点204可以是光纤适配器(fabric adapter,
fa)。在图3c所示的场景下,每个物理数据中心(又称region),如,数据中心1或数据中心n,均可以包括第一层转发节点201、第二层转发节点202和第三层转发节点203。第四层转发节点204是跨多个物理数据中心与第三层转发节点203进行通信的。所以本技术中的数据中心网络只是一个逻辑概念,该数据中心网络可以在一个物理数据中心中部署,也可跨多个物理数据中心进行部署,本技术并不做限定。另外,本技术并不限定转发节点的层级数,基于数据中心网络的规模,数据中心网络的层级可以5层、6层甚至更多层。为了描述方便,本技术后续以三层组网方式为例,来介绍负载均衡系统200及对应的方法和装置。因此,负载均衡系统200可以如图2b所示,当数据中心网络采用3层组网时,第一层转发节点201通常为接入节点,如,架顶(top of rack,tor)交换机,第二层转发节点202通常为汇聚节点,如叶子(leaf)交换机,第三层转发节点203通常为核心节点,如骨干(spine)交换机或骨干交换机组成的骨干集(spine set)。本技术图2b以架顶(tor)节点220、叶子(leaf)节点230和骨干(spine)节点240分别作为第一层转发按节点201、第二层转发节点202、第三层转发节点203的具体实现方式。在实际部署时,转发节点可以为物理交换机或虚拟交换机,此外,在本技术中,节点又可称为网络设备。
43.控制器210与dcn中spine节点240、leaf节点230、tor节点220和服务器250相连接。根据组网方式的不同,spine节点240、leaf节点230、tor节点220和服务器250之间的连接方式各有不同。如,图3a所示为三层clos组网方式结构示意图,多个pod300,如pod1和pod2,通过第三层骨干集340中的骨干(spine)节点互连,多个骨干节点(例如为32个)组成一个骨干集,每个pod中,包含多个服务器310(例如为128个)、多个第一层架顶节点320(例如为32个)和多个第二层叶子节点330(例如为8个)。pod300与骨干集相连,即pod 300的一个leaf节点仅与一组骨干集340的中的骨干节点相连。服务器310同时与2个tor节点320的下联口(即面向服务器的接口)相连,组成一个双归tor。双归tor是一种网络拓扑,即服务器有两个独立的出接口,通过这两个出接口与两个独立的tor节点连接,服务器在数据转发时,可以采取主备(active-standby)方式,设置一个出接口为主连接,另一个设置为备用连接,采用该方式,正常情况下,只有active状态的出接口可以转发数据流,当active状态的出接口发生故障后,自动切换至standby出接口转发数据流。还可以设置为双活(active-active)方式,通过该方式,在同一时刻,两个出接口都可以转发数据流。在本技术中,数据流是由具有相同目的地址的连续报文所组成的,这些报文的格式可以相同或不同。通过双归tor,可以增强服务器与tor节点连接的可靠性。tor节点320的上联口(即面向网络侧的接口)与leaf节点330全连接,即一个tor节点同时与该pod内的所有leaf节点相连。leaf节点330的下联口与tor节点全连接,即一个leaf节点与该pod内的所有tor节点相连。leaf节点的上联口与spine骨干集340中的spine节点进行组相连,即一个pod内的一个leaf节点仅与一组骨干集的spine节点相连,并且该leaf节点的不同上联口连接该骨干集的不同的spine节点。
44.在图2b所示的负载均衡系统200中,可以执行如图4所示的负载均衡方法。
45.在步骤s401中,控制器收集数据中心网络网络节点的信息,网络节点包括服务器250和多层转发节点,如,架顶节点220、叶子节点230和骨干节点240,当数据中心网络为4层组网时,网络节点还包括第四层节点204。
46.本技术中,控制器210可以通过链路层发现协议(link layer discovery protocol,lldp)与dcn的转发节点之间的交互来收集节点的信息,如tor节点220、leaf节点
230、spine节点240可以将自身以及邻接节点的节点信息和链路信息组成类型/长度/值(type/length/value,tlv),封装在lldp报文的lldpdu中,定期或根据需要发送给控制器210。节点信息包括节点标识、配置、性能参数等,链路信息可以是接口标识、配置的ip地址、剩余带宽、与其相连的上下游节点信息等。由于服务器250的数量远远超过转发节点的数量,为了减轻控制器210的负载,服务器250的信息,包括节点信息和\或链路信息等,不会由服务器250直接发送至控制器210,而是先发送至与服务器250直连的tor节点220中,该tor节点220接收到后,可以先将该信息保存在管理信息库(management information base,mib)中,然后将服务器250的信息和tor节点220的信息统一封装在lldp报文中,由tor节点220发送至控制器210。
47.在另一个实施方式中,控制器210还可以通过lldp与其他协议如openflow协议结合来收集节点拓扑信息。如图10a所示,控制器210可以是软件定义网络(software-defined networking,sdn)控制器,openflow节点1或openflow节点2就是图2b中的spine节点240、leaf节点230、tor节点220中的一种。在sdn网络中,tor节点220、leaf节点230、spine节点240还可以通过(openflow datapath id,dpid)来标识。控制器210与openflow节点之间通过openflow协议通信,并通过如下步骤进行网络节点信息的收集:
48.在步骤s1010中,控制器210通过packet_out消息向openflow节点1下发lldp报文,该lldp报文中包括了该lldp报文转发的出端口id。
49.在步骤s1011中,openflow节点1收到该lldp报文后,将需要上报的信息(包括自身、与之相连的服务器和邻接节点的信息,该信息包括节点信息和\或链路信息等)添加在该lldp报文中,并通过指定的出端口id发送给与openflow节点1相连的openflow节点2。
50.在步骤s1012中,openflow节点2收到该lldp报文后,也会将需要上报的信息(包括自身、与之相连的服务器和邻接节点的信息,该信息包括节点信息和\或链路信息等)添加在该lldp报文中,然后将该lldp包通过packet_in消息发送给控制器210。通过该方式,控制器210完成了dcn中所有网络节点信息的收集。
51.在另一个实施方式中,控制器210还可以结合其他协议,如广播域发现协议(broadcast domain discovery protocol,bbdp)实现拓扑信息的收集。如图10b所示,当在dcn中,除了openflow节点外,还存在着非openflow节点时,还可以采用如下方式进行节点拓扑信息的收集:
52.在步骤s1020中,控制器210通过packet_out消息向openflow节点1下发lldp报文。由于在规定的时间内没有与该lldp对应的packet_in消息返回,控制器210可以确认dcn中含有非openflow节点存在。
53.于是在步骤s1021中,控制器210通过packet_out消息向openflow节点1发送bddp报文,该bbdp包中包含了lldp报文。
54.在步骤s1022中,openflow节点1接收该bddp包后,将需要上报的信息(包括自身、与之相连的服务器和邻接节点信息,该信息包括节点信息和链路信息等)添加到该bddp报文的lldp报文中。并通过指定的出端口广播给非openflow节点,最终到达与非openflow节点相连的openflow节点2。
55.在步骤s1023中,openflow节点2将需要上报的信息(包括自身、与之相连的服务器和邻接节点信息,该信息包括节点信息和链路信息等)添加在该bddp报文的lldp报文中,并
通过packet_in消息发送给控制器210。通过该方式,控制器210完成了dcn中所有网络节点的信息的收集。
56.本技术如上实施方式中描述了控制器210单独通过lldp协议或结合bddp、openflow协议的方式收集dcn中所有网络节点的信息,控制器210还可以通过其他协议完成网络节点信息的收集,本技术并不做限定。
57.在步骤s402中,控制器根据接收到的数据中心网络节点的信息,生成数据中心网络的拓扑信息。
58.本技术中,控制器210在收集完数据中心网络中网络节点的信息后,根据该信息,生成数据中心网络的拓扑信息。在一个实施方式中,控制器根据配置的拓扑模型参数,生成数据中心网络的拓扑信息,拓扑模型参数可以是组网方式、双归tor属性等一种或多种组合。其中,双归属性指示双归tor的工作方式,例如active-active方式或active-standby方式。由于规模的不同,数据中心网络可以采用二层、三层、四层甚至更多层级的组网方式。另外,即使是同一层级的组网方式,根据层级之间连接方式的不同,其组网方式也不同,如在三层组网方式中,根据二层转发节点与三层转发节点连接方式的不同,可以分为clos组网和mesh组网。mesh组网与clos组网之间的区别在于,在clos组网中,leaf节点230与spine节点220是组连接的,而在mesh组网方式中,leaf节点230与spine节点220是全连接的。由于组网方式(包括转发节点的层级、层级节点之间的连接方式等)是在物理部署数据中心(data center,dc)时就已经确定了,因此在部署负载均衡系统时,还需设置该负载均衡系统对应的组网方式,控制器210根据其设置的组网方式,生成数据中心网络的拓扑信息。在生成数据中心网络的拓扑信息后,控制器210将数据中心网络的拓扑信息分发至服务器250。生成的拓扑信息包括数据中心网络中网络节点(包括服务器)的标识以及所述网络节点与该数据中心网络中邻接节点的连接关系等,该拓扑信息还可以包括数据中心网络中各层级转发节点的数量、连接方式、网络节点的能力等一项或多项。
59.上述步骤s401和s402以控制器收集数据中心网络的拓扑信息为例,在实际的部署中,也可以由服务器或者网络管理系统收集数据中心的拓扑信息。
60.在步骤s403中,服务器250根据所述数据中心网络的拓扑信息,生成多条负载均衡路径。
61.在本技术中,一条转发路径包括多个中间节点。如图1所示的路径f1指示了源端pod1内的服务器1到目的端pod32内的服务器2的转发路径,f1包括多个中间节点,如pod1内的tor节点(又称上行tor节点)t1、pod1内的leaf节点(又称上行leaf节点)l1、骨干集1中的spine节点s1、pod32内的leaf节点(又称下行leaf节点)l1、pod32内的tor节点(又称下行tor节点)t2,最终到达目的服务器2。该中间节点的顺序可以通过第一跳、第二跳、第三跳

的方式来描述。在三层clos组网方式下,中间节点包括上行tor节点、上行leaf节点、spine节点、下行leaf节点、下行tor节点,分别与转发路径的第一跳、第二跳、第三跳、第四跳、第五跳对应。
62.服务器首先确定该服务器与某一目的服务器之间的第一权重,以及该服务器与该目的服务器之间的中间节点与该目的服务器之间的第二权重(上述确定第一权重和第二权重的过程可以称为第一路径计算)。然后,服务器根据该第二权重,或根据该第一权重和该第二权重,生成多条负载均衡路径(以下称为第二路径计算)。如图8所示,为服务器250生成
的负载均衡路径列表800,该负载均衡路径列表800可以存储为表或数据库。该负载均衡路径列表800中的每一条负载均衡路径包括路径标识810、目的服务器标识820和多跳地址830。路径标识810可以是数值、字符串或其他类型的字段。目的服务器标识820可以是目的服务器标识、目的服务器的ip地址、目的服务器的mac地址或根据目的服务器的信息通过哈希计算得到的哈希值等可以唯一识别该目的服务器的信息。
63.本技术将源服务器与目的服务器之间的权重称为第一权重,将源服务器和目的服务器之间的转发节点与目的服务器之间的权重,称为第二权重,即第一权重与第二权重的主要区别在于计算起点不同。本技术可分别计算源服务器到目的服务器之间的每个中间节点与该目的服务器的第二权重,并根据所述每个中间节点的第二权重,确定所述服务器与所述目的服务器之间的第一权重。
64.下面以计算图7所示clos组网方式下pod1中的源服务器(例如,pod1中的服务器1)到pod2中的目的服务器(例如pod2中的服务器2)之间的第一权重为例(如f11所示),说明第一路径计算的过程。
65.第一步,源服务器采用反向传播(back propagation,bp)算法,从目的服务器开始,计算目的服务器直连的tor节点(也称下行tor节点,如pod2中的tor1和torn)到目的服务器的第二权重,该第二权重可以是该下行tor节点与目的服务器连接的有效路径数,例如,下行tor节点仅通过一个下联口连接该目的服务器,所以该下行tor节点到该目的服务器的有效路径数为1。
66.第二步,源服务器根据拓扑信息计算pod2内的leaf节点(也称下行leaf节点)到该目的服务器的第二权重,由于图7中目的服务器双归到两个tor,可以得到下行leaf节点到该目的服务器的有效路径数为2。
67.第三步,与第二步类似,源服务器根据拓扑信息依次计算spine节点、上行leaf节点、上行tor节点到该目的服务器的第二权重,由于一个骨干集内spine节点数为32个,一个pod内leaf节点个数为8个,tor节点数为32个,可以得到spine节点、上行leaf节点、上行tor节点到该目的服务器对应的有效路径数分别为2条、64条和512条。相应地,在mesh组网中,由于spine节点与leaf节点之间是全连接的,如果使用的转发节点的数量和类型不变,spine节点、上行leaf节点、上行tor节点到目的服务器对应的有效路径数分别为16条、128条、1024条。
68.由于源服务器与上行tor节点是一对一或一对二连接的,根据上行tor节点到目的服务器的有效路径数即可得到源服务器到目的服务器的有效路径数为512条(源服务器与上行tor节点一对一连接或源服务器连接双归tor节点,且双归tor节点工作在active-standby方式)或1024条(源服务器连接双归tor节点,且双归tor节点工作在active-active方式),即得到第一权重。通过如上步骤,最终得到了源服务器到目的服务器的第一权重。并且,源服务器的第一权重与上行tor的第二权重可能相同,也可能不同。
69.图7中的f11所示的第一路径计算是跨pod进行计算的,类似的,源服务器(pod1的服务器1)还可以完成与同一个pod内的其他目的服务器(如pod1的服务器32)的第一路径计算,由于两个服务器属于同一个pod,因此流量不需要经过骨干集的spine节点,在第一路径计算时,不需要计算spine节点到服务器32之间的有效路径数。因此,若服务器1跟服务器32连接不同tor节点,如f13所示,服务器1连接了上行tor2、服务器32连接了上行tor32,服务
器1只需要计算下行tor节点、下行leaf节点(上行leaf节点和下行leaf节点属于同一个leaf节点)和上行tor节点到服务器32的有效路径数,即可以得到服务器1到服务器32的权重;若服务器1相连的tor节点跟服务器32相连的tor节点属于同一个节点时,如服务器1和服务器32同时连接上行tor节点2时,如f12所示,此时,则直接得到服务器1到服务器32的有效路径数为1。
70.通过如上所述的第一路径计算,源服务器可以得到该服务器与数据中心网络所有其他服务器之间的第一权重。
71.上述以有效路径数作为源服务器或中间节点与目的服务器之间的权重。可选地,第一权重还可以是部署的转发路径历史、网络状态信息等。所述的网络状态信息包括网络拥塞、丢包、端口带宽、重路由、故障信息中的一个或多个。如,根据前一次生成的多条负载均衡路径(转发路径历史),来确认本次第一路径计算中,该转发节点可以生成的负载均衡路径。所述第二权重包括与所述第一权重对应的信息。如图7所示,基于转发节点所部署的网络位置(相对于源服务器来说,不同于实际的物理部署位置),源服务器和目的服务器之间可能存在上行tor节点,上行leaf节点,spine节点,下行leaf节点和下行tor节点。本技术中,部署在不同网络位置的转发节点属于不同的层级,例如,对于源服务器,上行tor节点为第一跳节点,上行leaf节点为第二跳节点,spine节点为第三跳节点,下行leaf节点为第四跳节点,下行tor节点为第五跳节点。再例如,源服务器和目的服务器在同一个pod中时,那么,源服务器和目的服务器之间的上行tor节点为第一跳节点,leaf节点为第二跳节点,下行tor节点为第三跳节点。
72.源服务器在得到与目的服务器之间的第一权重,以及得到每个中间节点与所述目的服务器之间的第二权重后,根据所述第一权重确定源服务器与目的服务器之间是否存在多条负载均衡路径;当存在多条负载均衡路径时,根据多个第一跳节点中至少一个第一跳节点的第二权重从该多个第一跳节点中选取一个第一跳节点作为第一负载均衡路径的第一跳;该第一负载均衡路径为该多条负载均衡路径中的任意一条;根据该多个第二跳节点中的至少一个第二跳节点的第二权重,选取一个第二跳节点作为该第一负载均衡路径的第二跳;或,采用随机或轮询或步长方式,从所述多个第二跳节点中选取一个第二跳节点作为所述第一负载均衡路径的第二跳。第三跳到最后一跳的选择方式与第二跳相同。经过上述过程,源服务器可以生成到达目的服务器的多条负载均衡路径。在一个实施方式中,上述过程的具体步骤如下:
73.第一步,源服务器根据第一权重确定源服务器和目的服务器之间是否存在所需要的多条负载均衡路径。
74.假设需要在源服务器和目的服务器之间选择16条负载均衡路径,当第一权重为路径数且大于16时,可以执行第二步及后续操作。当第一权重小于等于16时,则源服务器和目的服务器之间的所有路径均作为负载均衡路径。
75.第二步,由于源服务器对应两个上行tor节点,源服务器计算这两个上行tor节点之间的权重比α,根据该权重比α,为每个上行tor节点分配相应的负载均衡路径数β权重比α可以根据如下公式(1)得到:
76.(1)α=x/(x y)或α=y/(x y)
77.其中,x为源服务器的第一个上行tor的第二权重、y为源服务器的第二个上行tor
的第二权重。
78.每个上行tor分配的负载均衡路径数β可以根据如下公式(2)得到:
79.(2)β=α
×n80.其中,n为需要生成的负载均衡路径总数。
81.如图7所示,pod1中服务器1通过端口p11和p12分别连接tor1和torn,tor1和torn组成服务器1的双归tor,且tor1和torn到目的服务器的权重,如,有效路径数都为512。假设pod1中的服务器1需要生成的负载均衡路径总数n为16,即为了负载均衡,需要生成16条均衡路径供数据流使用。在网络正常情况下,根据公式(1)计算得到:
82.α
tor1
=512/(512 512)=0.5
83.α
torn
=512/(512 512)=0.5
84.根据公式(2)计算得到
85.β
tor1
=16
×
α
tor1
=8
86.β
torn
=16
×
α
torn
=8
87.即tor1和torn分别作为8条负载均衡路径的第一跳。
88.在数据中心网络转发节点发生故障的情况下,假设上行torn有一半的上联口发生故障,即上行torn与目的服务器间的有效路径数由512变为256。根据公式(1),
89.上行tor1的权重比α
tor1
=512/(512 256)=2/3,
90.上行torn的权重比α
torn
=256/(512 256)=1/3;
91.根据公式(2),
92.包括上行tor1的负载均衡路径路径数β
tor1
=16
×
α
tor1
≈11,
93.包括上行torn的负载均衡路径数β
torn
=16
×
α
tor3
≈5;
94.也就说,这16条负载均衡路径中,有11条负载均衡路径的第一跳为上行tor1,5条负载均衡路径的第一跳为上行torn。根据计算得到的上行tor1、torn的负载均衡路径数,可以将该tor1、torn节点标识填入对应的负载均衡路径的第一跳地址上,节点标识可以是该节点的id、节点ip地址、节点mac地址、或与该节点相连的端口标识,如与该节点相连的服务器的出接口等,如图8所述,可以将服务器的出接口标识p11填入负载均衡路径1的多跳地址830的第一跳地址中,将出接口标识p12填入负载均衡路径15的第一跳地址中。需要说明的是,图8中负载均衡路径1、2、14的多跳地址830的第一跳地址分别采用端口标识、ip地址、mac地址进行描述,在此仅为示例描述,在实现过程中通常采用同一种标识进行描述,本技术不做限定。
95.第三步,为第一负载均衡路径确定第二跳。可以采用多种方式为第一负载均衡路径确定第二跳,例如,可以根据多个第二跳节点中的至少一个第二跳节点的第二权重,选取一个第二跳节点作为所述第一负载均衡路径的第二跳;或,采用随机或轮询或步长方式,从所述多个第二跳节点中选取一个第二跳节点作为所述第一负载均衡路径的第二跳。在一个实施方式中,如图9所示,服务器1随机从可部署转发节点集中选取一个节点作为起始点(start),该节点标识作为第一负载均衡路径的第二跳地址。可部署转发节点集是tor节点或leaf节点或spine节点的有效节点列表。以图7的上行leaf为例,当生成第一负载均衡路径时,服务器1从8台上行叶子节点中随机选取一个叶子节点作为该第一负载均衡路径的第二跳,假设为叶子节点5。当生成第二条负载均衡路径(又称第二负载均衡路径)时,源服务
器根据步长(step,假设step=2)作为offset,选取叶子节点7为该第二负载均衡路径的第二跳。
96.第四步,跟第二步类似,采用随机或步长的方式,选取一个骨干节点作为第一负载均衡路径的第三跳,如骨干节点2,根据step=2,选取骨干节点4作为第二负载均衡路径的第三跳。
97.第五步,根据组网方式的不同,mesh组网由于上行叶子节点与骨干节点之间是全相连的,所以同样可以根据随机或步长方式选取一个下行叶子节点作为第一负载均衡路径、第二负载均衡路径的第四跳;而对于clos组网来说,由于叶子节点与骨干节点之间是组相连的,其第一负载均衡路径的第三跳已经确定了该第一负载均衡路径第四跳下行叶子节点的标识。如,假设第一负载均衡路径的第三跳为骨干集2中的骨干节点2,与该骨干节点2相连的为下行叶子节点2,根据该拓扑信息,可以确定该第一负载均衡路径的第四跳为下行叶子节点2。根据同样的方法,可以确定第二负载均衡路径的第四跳地址。
98.第六步,跟第二、第三步一样,采用随机或步长的方式,选取一个下行tor节点作为第一负载均衡路径、第二负载均衡路径的第五跳。
99.根据如上过程,服务器1确定了第一负载均衡路径的中间节点,生成了第一负载均衡路径。
100.重复上述过程,可以完成剩余15条负载均衡路径的计算,最终,服务器1生成了图8所示的,与目的服务器间的多条负载均衡路径。
101.采用类似的方式,服务器1可以生成与其他目的服务器之间的多条负载均衡路径。
102.在一个实现方式中,根据数据中心网络规模的大小,一个服务器可以选择在不同的时刻,生成该服务器与其他服务器之间的多条负载均衡路径。如,当数据中心网络规模小的时候,服务器可以在接收到数据流之前,接收到控制器发送的数据中心网络的拓扑信息后,统一生成该服务器与所有其他服务器之间的多条负载均衡路径。当数据中心网络规模较大时,服务器可以在接收到数据流时,根据该数据流中的目的地址,生成与该目的地址对应的服务器之间的多条负载均衡路径。
103.在一个实现方式中,在步骤s404中,服务器获取到数据流,从如图8所示的负载均衡路径列表中选择该数据流对应的转发路径,并转发该数据流。假设该数据流的目的服务器标识为1,则可以根据该服务器标识,在图8所示的负载均衡路径列表中找到路径标识为1、2的负载均衡路径,对获取到的数据流进行分片,得到多个流片段,通过轮询(round-robin,rr)、随机等方式将流片段发送至路径标识为1、2的负载均衡路径中。在一个实现方式中,服务器可以将流片段发送至从负载均衡列表中存储的该数据流对应的所有负载均衡路径中,还可以从该数据流对应的所有负载均衡路径中选择几条负载均衡路径发送。在一个实现方式中,服务器可以通过flowlet方式对数据流进行切分,得到多个流片段。服务器通过识别数据流的连续报文之间的时间差对数据流进行切分,如,服务器250可以设置一个参数π,当数据流的两个连续报文到达的时间差达到π值时,如50微秒(us),就可以认为前后两个报文分属于两个流片段,通过不同的转发路径转发该两个流片段不会引起分组乱序。
104.在一个实施方式中,如图11所示,当服务器(假设该服务器ip地址为ip0)可以采用srv6-te技术通过选择的负载均衡路径1110发送流片段至目的服务器(假设该服务器ip地址为ip6)。段路由(segment routing,sr)是一种源路由机制,通过为ip网络或mpls网络引
入可控的标签分配,为网络提供流量引导能力。sr有两种方法,一种是基于mpls的segment routing(sr-mpls),另一种是基于ipv6的segment routing(srv6)。srv6采用ipv6标准中定义的路由扩展报头(routing extension header)承载新定义的段路由报头(segment routing header,srh),srh指定一个ipv6的显式路径,携带的是ipv6的段列表(segment list,sl)。srh用于支持sr节点读取报头,更新指针、交换目标地址并转发。假设负载均衡路径1110所对应的中间节点为sr节点,并且已经通过流量工程(traffic engineering,te)部署好相关的隧道。服务器会对该流片段(假设该流片段为ipv6报文)进行封装,在该ipv6报文头后添加srh,并将负载均衡路径1110的中间节点地址压入srh的segment list字段中,同时根据负载均衡路径1110的中间节点数量将sl值设为5,如图11中的报文1120所示。报文1120在负载均衡路径1110所对应的转发节点上进行转发时,并且每经过一个转发节点,其报文的sl值减1,并最终到达目的服务器。
105.在一个实施方式中,在数据流转发过程中,当一个转发节点发送故障时,如spine\leaf\tor节点发生故障时,原先通过该故障转发节点的数据流会被切换至其他转发节点,以保证数据流能正常转发。在一种实施方式中,服务器在节点发生故障时,不需要重新生成负载均衡路径,而只会在原有生成的负载均衡路径中,将故障节点所属的跳地址修改为其他正常节点的地址。如图11所示的负载均衡路径1110中的第二跳所属节点(假设为l5节点)发生故障时,即当服务器接收到l5节点故障的通知后,服务器可以根据该故障节点所在层级,如,l5为leaf节点,可以根据第二路径计算中的步长方式(假设step=2)选取leaf节点l7,作为负载均衡路径1110的第二跳地址,及修改其他所有与l5节点相关的负载均衡路径。
106.当服务器的故障节点数量达到或超过m个后,当这m个故障节点中有一个节点恢复正常时,服务会根据新的数据中心网络的拓扑信息,重新生成新的多条负载均衡路径。在负载均衡系统200中,数据中心网络的拓扑信息包括节点的状态变更信息,如节点发生故障或故障节点恢复正常的事件,这些事件可以单独发送,也可以跟dcn的其他拓扑信息一起发送。控制器会持续收集数据中心网络的拓扑信息,并在该拓扑信息更新时,或者在设定的条件满足时,向服务器发生该更新的拓扑信息。
107.上述计算生成的负载均衡路径主要用于数据中心网络中,正常业务的数据流转发,这些正常业务数据流由于其业务的负载,可能会将原有负载均衡路径所经过的转发节点的相关能力,如带宽等占满。这时,如果负载均衡系统200突然接收到一个突发(burst)流,如,部署在服务器250上的虚拟机需要迁移至其他服务器等,此时,如果还是继续使用原有的负载均衡路径进行数据转发,就会对原有正常的业务造成拥塞冲击,因此在一个实施方式中,当服务器250识别出一条数据流为突发流,如通过flowlet机制,识别到连续相邻的几个流片段都同属于一条流时,可以认为该流为突发流。服务器250会根据数据中心网络的拓扑信息,通过前述第一路径计算和第二路径计算,再生成s(s≥1)条增量均衡路径,并通过该s条增量负载均衡路径,转发接收到的突发流。如,当s大于1时,服务器250对突发流进行分片,得到多个流片段,通过轮询、随机等方式将流片段发送至该s条增量均衡路径中。当服务器250确认该突发流转发完成后,可以删除该s条负载均衡路径。通过增量负载均衡路径转发突发流,一方面保证了当突发流到来时,不会对原有多条负载均衡路径上承载的正常业务造成冲击;另一方面,使用完后就删除该增量均衡路径,节省了数据中心网络的资源。
108.上面对本技术实施例提供的负载均衡方法进行了介绍。可以理解的是,本技术实施例中的服务器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,本技术中所公开的实施例描述的各示例的功能和步骤,能够以硬件或硬件和计算机软件的结合等形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
109.以下从不同的角度对本技术的服务器250的结构予以说明,本技术中,服务器250的一种实施方式(称为服务器500)结构示意图如图5所示,服务器500包括处理器510、通信接口520、编程接口540和存储器550。处理器510、通信接口520、编程接口540和存储器550之间通过总线530进行通信。总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线或高速串行计算机扩展总线(peripheral component interconnect express,pcie)等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口520用于服务器与其他设备,如tor节点220、控制器210之间的通信。存储器550可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm)。存储器550用于存储程序代码,程序代码包括可以实现第一获取单元551、发送单元552、处理单元553和第二获取单元555的功能的指令。存储器550还可以存储接收到的数据中心网络的拓扑信息。存储器550还可以包含操作系统554,处理器510可以直接或通过操作系统554调用存储器550中的代码,使得服务器500可以实现第一获取单元551、发送单元552、处理单元553和第二获取单元555的功能。第一获取单元551用于获取数据中心网络的拓扑信息,该拓扑信息可以由控制器发送,也可以由其他网络节点发送,也可以由服务器550生成。第二获取单元555用于获取数据流,数据流可以是服务器500自己生成的数据流,也可以是外部节点经通信接口520发送过来的数据流。处理单元553用于根据接收到的数据中心网络的拓扑信息,通过第一路径计算和第二路径计算等步骤生成多条负载均衡路径,处理单元553还可以用于识别突发流,生成增量负载均衡路径以转发该突发流,并且在突发流发送完后,删除该增量负载均衡路径。发送单元552用于转发数据流,如,可以对数据流进行分片,得到多个流片段,并通过轮询、随机等方式将流片段发送至负载均衡路径。编程接口540,用于向存储器550写入该程序代码。本技术实施例提供的服务器500的各个组成部分仅仅是示例性的,本领域技术人员可以根据需要增加或减少组件,也可以把一个组件的功能分割由多个组件来实现。
110.在另一个实施方式中,如图6所示,本技术中的服务器250包含智能网卡620,智能网卡620包括fpga660、存储器630,存储器630用于存储程序代码,程序代码包括可以实现第一获取单元631、发送单元633、处理单元632和第二获取单元634的功能的指令。第一获取单元631用于获取数据中心网络的拓扑信息,该拓扑信息可以由控制器发送,也可以由其他网络节点发送,或者服务器250自己生成。第一获取单元631获取的数据中心网络的拓扑信息可以存储在智能网卡620的存储器630中,也可以存储在服务器250的其他存储器中。在一个实施方式中,第二获取单元634用于获取服务器250生成的数据流,该数据流通过pcie接口640传输至智能网卡620,然后由发送单元633经通信接口650发送至外部节点。在另一个实
施方式中,第二获取单元634还可以获取外部节点发送的数据流,外部发送的数据流通过通信接口650传输至智能网卡620,经过服务器250的处理器610或fpga660处理后,由发送单元633再次经通信接口650转发至外部节点。处理单元632用于根据接收到的数据中心网络的拓扑信息,通过第一路径计算和第二路径计算等步骤生成多条负载均衡路径,处理单元632还可以用于识别突发流,并生成至少一条增量负载均衡路径,并且在突发流发送完后,删除该增量负载均衡路径。发送单元633用于将切分后的数据流通过通信接口发送至负载均衡路径。fpga660通过调用存储器630的代码,以实现第一获取单元631、发送单元633、处理单元632和第二获取单元634的功能。服务器250的处理器610通过pcie接口640与智能网卡620相连。当数据中心网络的拓扑信息存储于智能网卡620外的存储器时,fpga660可以通过pcie接口640,经处理器610查询数据中心网络的拓扑信息,并通过处理单元632生成负载均衡路径。服务器250通过编程接口540,写入程序代码,并通过处理器610经pcie接口640,写入存储器630。本技术实施例提供的智能网卡620的各个组成部分仅仅是示例性的,本领域技术人员可以根据需要增加或减少组件,也可以把一个组件的功能分割由多个组件来实现。
111.以下对本技术的控制器的结构进行说明,本技术中,控制器的结构示意图如图12所示,控制器1200包括处理器1210、通信接口1220、编程接口1240和存储器1250。处理器1210、通信接口1220、编程接口1240和存储器1250之间通过总线1230进行通信。总线可以是外设部件互连标准pci总线或eisa总线或pcie总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口1240用于同控制器1200与其他网络设备,如层级转发节点或服务器之间的通信。存储器1250可以是ram、nvm等,存储器1250用于存储控制器的程序代码,程序代码包括可以实现收集单元1251、发送单元1252和处理单元1253的功能的指令。存储器1250还可以包括操作系统1254,处理器1210可以直接或通过操作系统1254调用存储器1250中的代码,以实现收集单元1251、发送单元1252和处理单元1253的功能。收集单元1251用于收集数据中心网络中的网络节点的信息,该网络节点包括服务器;处理单元1253用于根据收集到的信息,生成dcn的拓扑信息。发送单元1252用于向服务器250发送处理单元1253生成的dcn的拓扑信息。编程接口1240,用于向存储器1250写入该程序代码。本技术实施例提供的控制器1200的各个组成部分仅仅是示例性的,本领域技术人员可以根据需要增加或减少组件,也可以把一个组件的功能分割由多个组件来实现。
112.本技术实施例还提供了计算机可读存储介质,用于存储实现上述负载均衡方法的程序代码,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。前述的存储介质包括:u盘、移动硬盘、磁碟、光盘、随机存储器(random access memory,ram)、固态硬盘(solid state disk,ssd)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
113.需要说明的是,本技术所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚的了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本技术实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本技术实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献