网络感知的负载平衡的制作方法
未命名
09-22
阅读:69
评论:0
网络感知的负载平衡
背景技术:
1.近年来,一些公司已经将用于为企业部署软件定义的(sd)广域网(wan)的解决方案推向市场。一些此类sd-wan解决方案使用外部第三方私有或公共云数据中心(云)来为不同的企业定义不同的虚拟wan。这些解决方案通常在企业的sd-wan站点处具有边缘转发元件(称为边缘设备),这些sd-wan站点与部署在第三方云中的一个或多个网关转发元件(称为网关设备或网关)连接。
2.在这种部署中,边缘设备通过一个或多个安全连接与网关连接,这些连接穿过将边缘设备与外部网络连接的一个或多个网络链路。此类网络链路的示例包括mpls链路、5g lte链路、商业宽带互联网链路(例如,电缆调制解调器链路或光纤链路)等。sd-wan站点包括企业的分支机构办公室(称为分支机构),并且这些办公室常常分布在几个不同的地理位置,具有到各种不同网络连接类型的网关的网络链路。因而,这些部署中的负载平衡常常基于地理邻近度或一组负载平衡的目的地机器上的负载的量度(measure)。但是,网络链路常常表现出可以影响服务质量或体验质量的关于分组丢失、时延、抖动等的不同网络路径特性。sd-wan实现中的这种多站点负载平衡需要是可靠且有弹性的。
技术实现要素:
3.本发明的一些实施例提供了一种用于穿过软件定义的广域网(sd-wan)(例如,虚拟网络)的数据消息的网络感知的负载平衡的方法,sd-wan包括sd-wan的不同元件(例如,边缘节点转发元件、集线器、网关等)之间的多个连接链路(例如,隧道)。该方法在sd-wan的多机器站点中的负载平衡器处接收与包括所述多个连接链路中的连接链路的一组sd-wan数据路径相关的链路状态数据。在一些实施例中,负载平衡器使用接收到的链路状态来为从多机器站点中的源机器发送到通过所述一组sd-wan数据路径连接到负载平衡器的一组目的地机器(例如,web服务器、数据库服务器等)的数据消息提供负载平衡。
4.负载平衡器接收由多机器站点中的源机器发送到所述一组目的地机器中的目的地机器的数据消息。负载平衡器通过基于接收到的链路状态数据执行负载平衡操作来为数据消息选择一组目的地机器中的特定目的地机器(例如,用于一组后端服务器的前端机器)。数据消息然后被转发到所述一组目的地机器中的所选择的特定目的地机器。除了选择特定目的地机器之外,在一些实施例中,基于链路状态数据选择特定数据路径以到达特定目的地机器。
5.在一些实施例中,sd-wan的控制器集群从通过所述多个连接链路连接的sd-wan的一组元件(例如,诸如边缘节点、集线器、网关等转发元件)接收关于链路特性的数据。sd-wan控制器集群基于接收到的关于连接链路特性的数据生成与所述多个连接链路相关的链路状态数据。生成的链路状态数据然后被提供给sd-wan多机器站点的负载平衡器,以供负载平衡器用于做出负载平衡决策。
6.在一些实施例中,控制器集群向sd-wan元件提供链路状态数据,sd-wan元件进而将链路状态数据提供给其相关联的负载平衡器。在一些实施例中,这些sd-wan元件包括与
负载平衡器并置在sd-wan多机器站点处的sd-wan设备。在其它实施例中,控制器集群将链路状态数据直接提供给多机器站点(诸如分支机构站点、数据中心站点等)处的负载平衡器。
7.在一些实施例中,链路状态数据是用来做出负载平衡决策的一组准则(例如,由负载平衡策略指定的一组准则)。在其它实施例中,负载平衡器使用链路状态数据(例如,关于每个链路上的聚合负载的统计)来导出用于做出负载平衡决策的一组准则。在一些实施例中,该组准则是负载平衡过程中使用的一组权重。在其它实施例中,链路状态数据包括连接链路的以下属性:分组丢失、时延、信号抖动、体验质量(qoe)分数等,它们被包括在用于做出负载平衡决策的一组准则中或用于导出一组准则(例如,用于导出用作准则的权重)。
8.在一些实施例中,负载平衡器还使用从目的地机器接收的或在负载平衡器处跟踪的其它负载平衡准则,诸如目的地机器(或一组后端服务器,对于它们来说目的地机器是前端)。在一些实施例中,链路状态数据和其它负载平衡准则用于为每个目的地机器生成单个权重。在其它实施例中,其它负载平衡准则被用于计算每个目的地机器的第一组权重,而链路状态数据被用于计算到一组目的地机器的一组数据路径的第二组权重。
9.在一些实施例中,链路状态数据是针对sd-wan的元件之间的每个连接链路生成的,而在其它实施例中,链路状态数据是针对一组数据路径中的每条数据路径生成的,该组数据路径由用于穿过连接负载平衡器和多机器站点(例如,私有云数据中心、公有云数据中心、软件即服务(saas)公有云、企业数据中心、分支机构等)处的特定目的地机器(例如,sd-wan边缘节点、一组后端节点的前端等)的sd-wan元件的特定的一组连接链路定义。在其它实施例中,链路状态数据是针对连接负载平衡器和一组数据机器中的特定数据机器的一组数据路径生成的。当生成的链路状态数据涉及个体连接链路时,在一些实施例中,负载平衡器基于与个体连接链路相关的链路状态数据导出用于每条数据路径的负载平衡准则。
10.前面的发明内容旨在用作本发明的一些实施例的简要介绍。它并不意味着是本文档中公开的所有发明性主题的介绍或概述。以下的具体实施方式和在具体实施方式中引用的附图将进一步描述在发明内容中描述的实施例以及其它实施例。因而,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式、附图说明和权利要求书的全面回顾。而且,要求保护的主题不受发明内容、具体实施方式和附图说明中的说明性细节的限制。
附图说明
11.在所附权利要求书中阐述了本发明的新颖特征。但是,出于解释的目的,在以下附图中阐述本发明的若干实施例。
12.图1图示了使用部署在公共云提供商的公共云数据中心中的集线器为特定实体创建的虚拟网络的示例。
13.图2图示了托管一组机器的第一多机器站点,该组机器连接到一组多机器sd-wan站点中的一组目的地机器。
14.图3图示了网络,其中负载平衡设备基于从一组sd-wan控制器发送的一组sd-wan属性来从一组服务器(例如,目的地机器)接收负载属性数据并从边缘转发元件sd-wan接收一组sd-wan属性(例如,链路状态数据)。
15.图4概念性地图示了用于生成链路状态数据并将链路状态数据提供给sd-wan中的
负载平衡器的过程。
16.图5概念性地图示了用于基于一组接收到的链路状态数据和目的地机器负载属性来计算一组负载平衡准则的过程。
17.图6概念性地图示了在一些实施例中用于为一组目的地机器提供负载平衡的过程。
18.图7图示了网络,其中负载平衡设备使用与位于多个sd-wan站点处的一组目的地机器(或数据路径)中的每个目的地机器(或数据路径)相关联的单个权重来为每个接收到的数据消息选择目的地机器。
19.图8图示了网络,其中负载平衡设备使用与位于多个sd-wan站点处的一组目的地机器中的每个目的地机器相关联的负载权重和网络权重来为每个接收到的数据消息选择目的地机器。
20.图9图示了网络,其中负载平衡设备使用与到一组sd-wan站点的一组数据路径中的每条数据路径相关联的负载权重和网络权重来为每个接收到的数据消息选择到特定sd-wan站点的特定数据路径。
21.图10图示了由不同质量的连接链路连接的一组sd-wan边缘节点和一组sd-wan集线器之间的全网状网络。
22.图11图示了可以使用网络感知的负载平衡的gslb系统的实施例。
23.图12图示了包括使用网络感知的负载平衡的部署在sd-wan中的网络感知的gslb系统的实施例。
24.图13概念性地图示了利用其实现本发明的一些实施例的计算机系统。
具体实施方式
25.在本发明的以下详细描述中,阐述并描述了本发明的许多细节、示例和实施例。但是,本领域技术人员而言将明白是,本发明不限于所阐述的实施例,并且可以在不讨论其中一些具体细节和示例的情况下实践本发明。
26.本发明的一些实施例提供了一种用于穿过软件定义的广域网(sd-wan)(例如,虚拟网络)的数据消息的网络感知的负载平衡的方法,sd-wan包括sd-wan的不同元件(例如,边缘节点转发元件、集线器、网关等)之间的多个连接链路(例如,隧道、虚拟私有网络(vpn)等)。该方法在sd-wan的多机器站点(例如,分支机构办公室、数据中心等)中的负载平衡器处接收与sd-wan一组数据路径相关的链路状态数据,包括多个连接链路的链路状态数据。在一些实施例中,负载平衡器使用所提供的链路状态来为从多机器站点中的源机器发送到通过sd-wan一组数据路径连接到负载平衡器的一组目的地机器(例如,web服务器、数据库服务器、容器、pod、虚拟机、计算节点等)的数据消息提供负载平衡。
27.如本文中所使用的,数据消息是指跨网络发送的特定格式的位集合。本领域普通技术人员将认识到术语“数据消息”可以在本文中用于指可以跨网络发送的各种格式化的位集合,诸如以太网帧、ip分组、tcp片段、udp数据报等。而且,如本文所使用的,对l2、l3、l4和l7层(或层2、层3、层4、层7)的引用分别是对osi(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层的引用。
28.图1图示了使用部署在分支机构站点、数据中心和公共云处的sd-wan转发元件为
特定实体创建的虚拟网络100的示例。公共云的示例是由亚马逊web服务(aws)、谷歌云平台(gcp)、微软azure等提供的公共云,而实体的示例包括公司(例如,公司、合伙企业等)、组织(例如,学校、非营利组织、政府实体等)等。
29.在图1中,sd-wan转发元件包括云网关105和sd-wan转发元件130、132、134、136。在一些实施例中,云网关(cgw)是在私有或公共数据中心110中的转发元件。在一些实施例中,cgw 105在特定实体的多机器站点(例如,具有多个机器150的sd-wan边缘站点120、122和124)(诸如分支机构办公室、数据中心等)处具有与边缘转发元件(例如,sd-wan边缘转发元件(fe)130、132、134和136)的安全连接链路(例如,隧道)。这些多机器站点常常位于不同的物理位置(例如,不同的建筑物、不同的城市、不同的州等)并且以下称为多机器站点或节点。
30.图1中图示了四个多机器站点120-126,其中三个是分支机构站点120-124,一个是数据中心126。每个分支机构站点被示为包括边缘转发节点130-134,而数据中心站点126被示为包括集线器转发节点136。数据中心sd-wan转发节点136被称为集线器节点,因为在一些实施例中,这个转发节点可以被用于连接到分支机构站点120-124的其它边缘转发节点。在一些实施例中,集线器节点为其从一个站点转发到另一个分支机构站点的分组提供服务(例如,中间盒服务)。如下文进一步描述的,集线器节点还提供对数据中心资源156的访问。
31.每个边缘转发元件(例如,sd-wan边缘fe 130-134)通过一个或多个连接链路115(例如,在边缘转发元件处可用的多个连接链路)与一个或多个云网关105交换数据消息。在一些实施例中,这些连接链路包括安全和不安全的连接链路,而在其它实施例中,它们仅包括安全的连接链路。如边缘节点134和网关105所示,可以在一个边缘节点和网关之间建立多个安全连接链路(例如,在多个物理链路上建立的多个安全隧道)。
32.当在边缘节点和网关之间定义多个这样的链路时,在一些实施例中,每个安全连接链路与边缘节点和外部网络之间的不同物理网络链路相关联。例如,为了访问外部网络,边缘节点在一些实施例中具有用于访问互联网的一个或多个商业宽带互联网链路(例如,电缆调制解调器、光纤链路)、用于访问通过mpls提供商的网络的外部网络的mpls(多协议标签交换)链路、无线蜂窝链路(例如,5g lte网络)。在一些实施例中,边缘节点134和云网关105之间的不同物理链路是相同类型的链路(例如,是不同的mpls链路)。
33.在一些实施例中,一个边缘转发节点130-134还可以具有到另一个边缘转发节点130-134和/或到数据中心集线器节点136的多个直接链路115(例如,通过多个物理链路建立的安全连接链路)。同样,一些实施例中的不同链路可以使用不同类型的物理链路或相同类型的物理链路。而且,在一些实施例中,第一分支机构站点的第一边缘转发节点可以通过以下方式连接到第二分支机构站点的第二边缘转发节点:(1)直接通过一个或多个链路115,或(2)通过第一边缘转发节点通过两个或更多个链路115连接到的云网关或数据中心集线器。因此,在一些实施例中,第一分支机构站点(例如,124)的第一边缘转发节点(例如,134)可以使用多个sd-wan链路115到达第二分支机构站点(例如,120)的第二边缘转发节点(例如,130),或者数据中心站点126的集线器转发节点136。
34.在一些实施例中,云网关105用于通过网关105和两个sd-wan站点(例如,分支站点120-124或数据中心站点126)处的两个转发元件之间的至少两个安全连接链路115连接两个sd-wan转发节点130-136。在一些实施例中,云网关105还提供从一个多机器站点到另一
wan。在一些实施例中,该组sd-wan控制器250从通过连接链路连接的sd-wan的元件(例如,sd-wan边缘设备230-233)接收关于用于实现sd-wan的连接链路(例如,连接链路221-224)的链路特性的数据。该组sd-wan控制器250基于接收到的关于连接链路特性的数据生成关于连接链路的链路状态数据。然后将生成的链路状态数据提供给sd-wan多机器站点205的负载平衡器201,以供负载平衡器在做出负载平衡决策时使用。该组控制器250和负载平衡器201处的具体操作将在下面结合图4-6更详细地解释。
41.图3图示了网络300,其中负载平衡设备301基于从一组sd-wan控制器350发送的一组sd-wan属性311接收(1)与一组服务器341-343(这个示例中是目的地机器)上的负载相关的负载属性数据370(例如,包括负载属性371-373)和(2)来自sd-wan边缘fe 330的一组sd-wan属性312(例如,链路状态数据)。在一些实施例中,sd-wan属性311与312是相同的,而在其它实施例中,sd-wan边缘fe 330修改sd-wan属性311以生成链路状态数据以供本地负载平衡器301消费。
42.在一些实施例中,负载属性371-373被发送到sd-wan控制器350,以便这个控制器聚合并发送到负载平衡设备301。在一些实施例中,sd-wan控制器350根据它接收到的负载属性生成权重和/或其它负载平衡准则。在这些实施例中,控制器350将生成的权重和/或其它负载平衡准则提供给负载平衡器301,便于在执行其负载平衡操作以在sd-wan数据中心站点361-363之间分发数据消息负载时使用。在其它实施例中,负载平衡设备301根据它从数据中心站点361-363处的非控制器模块和/或设备接收的或者从控制器350接收的负载属性370生成权重和/或其它负载平衡准则。
43.网络300包括四个边缘转发元件330-333,它们通过由这些转发元件及其之间的安全连接321-323建立的sd-wan连接四个站点360-363。在所示实施例中,sd-wan边缘设备331和332分别充当后端服务器341和342的前端负载平衡设备,并被识别为目的地机器(例如,通过与其相应的服务器集合相关联的虚拟ip地址)。
44.在一些实施例中,sd-wan边缘转发元件(例如,sd-wan边缘fe 333)向提供负载平衡服务以在服务器集合343之间分发数据消息的本地负载平衡服务引擎(例如,服务引擎344)提供接收到的数据消息,该数据消息以其相关联的本地服务器集合(例如,服务器集合343)为目的地。每个服务器集合341-343与表示每个服务器集合的服务器上的集体负载的一组负载平衡权重lw
341-lw
343
相关联。负载平衡器301使用负载平衡权重来确定如何在不同的服务器集合341-343之间分发来自一组机器306的数据消息负载。
45.此外,在一些实施例中,用于每个服务器集合的负载平衡设备(例如,用于服务器集合341或343的cgw 331或服务引擎344)使用另一组负载平衡权重(例如,表示服务器集合中各个服务器上的负载的权重)来确定如何在集合中的服务器之间分发数据消息负载(例如,在集合中的不同权重与不同服务器相关联的实施例中,对于连续流,通过基于集合中的权重执行集合中的服务器的循环选择)。
46.在不同的实施例中,负载属性371-373被不同地跟踪。例如,在一些实施例中,服务器341-343跟踪并提供负载属性。在其它实施例中,这个数据由在与服务器相同的主计算机上执行或与这些计算机相关联的负载跟踪模块跟踪和提供。在还有其它实施例中,负载属性由接收通过负载平衡器301转发的数据消息并且在其相关联的服务器集合中的服务器之间分发这些数据消息的负载平衡设备和/或模块(例如,cgw 331或服务引擎344)收集。
47.图4概念性地图示了用于生成链路状态数据并将链路状态数据提供给sd-wan中的一个或多个负载平衡器的过程400。在一些实施例中,过程400由sd-wan控制器或一组sd-wan控制器(例如,sd-wan控制器250或350)执行。过程400开始于(在410处)从一个或多个多机器站点处的一组sd-wan元件(例如,sd-wan边缘fe、网关、集线器等)接收连接链路属性数据。在一些实施例中,连接链路属性是基于来自一组sd-wan控制器的请求或为了被通知连接链路属性的改变而与每个sd-wan元件建立的长拉(long-pull)操作接收的。在一些实施例中,连接链路属性包括时延的量度、丢失的量度、抖动的量度和体验质量(qoe)的量度中的至少一个。
48.过程400然后(在420处)生成与每个连接链路相关联的链路状态数据,每个连接链路与接收到的链路状态数据相关联。在一些实施例中,链路状态数据是连接一对sd-wan元件(例如,sd-wan边缘fe、集线器和网关)的一组连接链路的聚合链路状态数据。例如,在一些实施例中,sd-wan边缘fe使用sd-wan可以用来支持源机器和一组目的地机器中的目的地机器之间的特定通信的多个连接链路(例如,公共互联网连接链路、mpls连接链路、无线蜂窝链路等)连接到sd-wan网关(例如,通过使用用于同一通信会话的聚合集合中的多个通信链路来降低沿着任一路径的分组丢失的影响)。因而,在这种实施例中,聚合链路状态数据反映了一组连接链路当被被sd-wan边缘fe用来连接到sd-wan网关时的特性。
49.在一些实施例中,链路状态数据包括当前数据和历史数据(例如,特定连接链路每20分钟摆动一次,特定连接链路时延在一天或一周的特定时段期间增加等)。在一些实施例中,历史数据被结合到qoe量度中,而在其它实施例中,历史数据被用于提供反映连接性数据随时间的模式(例如,在某些小时期间增加的时延或抖动等)的链路状态数据(例如,来自sd-wan边缘fe)。
50.在一些实施例中,链路状态数据是一组准则,包括负载平衡器用来做出负载平衡决策的准则。在一些实施例中,该组准则包括负载平衡器使用的一组权重以及基于负载平衡器在其中进行平衡的一组目的地机器的特性的一组权重。在一些实施例中,作为链路状态数据提供的一组准则是在负载平衡策略中指定的准则。在其它实施例中,负载平衡器使用链路状态数据来生成用于执行负载平衡的准则(例如,权重)。链路状态数据在执行负载平衡操作中的使用联系图5中进行更详细的讨论。
51.然后(在430处)将生成的链路状态数据提供给一个或多个sd-wan站点处的一个或多个负载平衡器(或负载平衡器集合)。在一些实施例中,(在430处)一组sd-wan控制器将生成的链路状态数据提供给sd-wan元件(例如,并置的sd-wan边缘fe),后者进而将链路状态数据提供给负载平衡器。在一些实施例中,提供给特定负载平衡器的生成的链路状态数据仅包括与用于连接到一组目的地机器的一组连接链路(例如,不包括从集线器或网关到不在该组目的地机器中的目的地机器上执行的边缘节点的“死端”连接链路)相关的链路状态数据,负载平衡器在这组目的地机器中分发数据消息。
52.在(在430处)向一个或多个sd-wan站点处的一个或多个负载平衡器提供生成的链路状态数据之后,过程400结束。过程400基于检测到的事件(例如,负载平衡器的添加、sd-wan元件的添加、连接链路故障等)、根据时间表或者当从sd-wan元件接收到的属性数据时重复(即,周期性地或迭代地执行)。
53.图5概念性地图示了用于基于一组接收到的链路状态数据和目的地机器负载属性
来计算一组负载平衡准则的过程500。在一些实施例中,过程500由sd-wan站点处的负载平衡器(例如,负载平衡器301)执行。在其它实施例中,该过程由与这个负载平衡器(例如,负载平衡器301)相关联的服务器或控制器执行。在一些实施例中,这个服务器或控制器与负载平衡器(例如,负载平衡器301)在相同的设备(例如,相同的计算机)上执行,或者与负载平衡器(例如,负载平衡器301)在相同的数据中心中的设备上执行。
54.过程500开始于(在510处)接收关于负载平衡器从中选择用于特定数据消息流的目的地的一组候选目的地机器(例如,与虚拟ip(vip)地址相关联的一组服务器)上的当前负载的负载数据。在一些实施例中,负载数据包括与一组目的地机器中的每个目的地机器的cpu负载、存储器负载、会话负载等相关的信息。
55.在一些实施例中,负载平衡器维护关于分发到一组目的地机器中的不同机器的数据消息流的信息,并且从相同sd-wan站点或在同一组目的地机器之间分发数据消息的不同sd-wan站点处的其它负载平衡器接收附加负载数据。图11和12中提供了分布式负载平衡器的示例(由一组负载平衡服务引擎实现)。结合地或可替代地,在一些实施例中,负载数据(或用于计算负载数据的容量)是从一组目的地机器接收的。
56.过程500还接收(在520处)与将负载平衡器链接到一组目的地机器的连接链路相关的链路状态数据。如上所述,在一些实施例中,链路状态数据是在负载平衡策略中指定的一组准则。例如,在一些实施例中,负载平衡策略可以指定基于一组负载测量和一组连接性测量来计算每个目的地机器的单个权重。在其它实施例中,负载平衡策略可以指定计算基于负载的第一权重和基于连接性的第二权重。在这些实施例的任一个中,该组连接性测量是或基于接收到的链路状态数据。在一些实施例中,权重被用于执行加权循环或其它类似的基于权重的负载平衡操作。本领域普通技术人员将认识到的是,在一些实施例中,接收负载数据和链路状态数据以不同的次序发生,或者各自周期性地发生,或者各自基于不同的触发事件发生(例如,在相关负载平衡器做出一定次数的负载平衡决策之后、在连接链路故障时,等等)。
57.在接收到负载和链路状态数据之后,过程500(在530处)计算用于每个目的地机器的一组权重。在一些实施例中,用于特定目的地机器的一组权重包括基于负载的第一权重和基于连接性的第二权重。下面关于图6讨论使用两个权重的实施例。在一些实施例中,负载数据和链路状态数据被用于生成与每个目的地机器相关联的单个权重。在其它实施例中,负载平衡器使用链路状态数据来识别用于到达特定目的地机器的多个可能路径(例如,数据路径),基于构成路径的连接链路的负载数据和链路状态数据计算与每条数据路径相关联的权重,并将每条路径视为潜在目的地,如下面讨论的图7的表760b中那样。在一些实施例中,负载平衡器然后基于计算出的权重执行循环操作(例如,加权循环)。
58.图6概念性地图示了在一些实施例中用于为一组目的地机器提供负载平衡的过程600。在一些实施例中,过程600由sd-wan站点中的每个负载平衡器执行,该负载平衡器从另一个sd-wan站点处的一组目的地机器中选择特定的目的地机器。在一些实施例中,在特定边缘站点处操作的负载平衡器在向边缘站点处并置的sd-wan边缘fe提供数据消息之前执行负载平衡操作。
59.如图3中所示,一组目的地机器可以分布在几个站点361-363上,并且在过程600选择这些站点之一之后,与这些站点中的每个站点相关联的负载平衡器然后可以选择这些站
点中的每个站点处的一个目的地机器。可替代地,在一些实施例中,过程600在一些站点处选择单独的目的地机器,同时让在另一个站点处的负载平衡器选择在那个站点处的单独的目的地机器。在还有其它实施例中,过程600在每个其它站点处选择单独的目的地机器,而不是让与每个其它站点相关联的另一个负载平衡器选择那些站点处的目的地机器中的任何一个。
60.过程600开始于(在610处)接收去往一组机器的数据消息。在一些实施例中,数据消息被寻址到与一组目的地机器相关联的vip或者是与一组目的地机器相关联的请求(例如,对内容的请求)。该组目的地机器包括逻辑分组的机器的子集(例如,服务器、虚拟机、pod等),这些机器在负载平衡器看来是特定位置(例如,sd-wan站点、数据中心等)处的单个目的地机器。
61.过程600然后(在620处)基于与一组目的地机器相关的负载数据来识别一组候选目的地机器或数据路径。在一些实施例中,识别出的一组候选目的地机器(或数据路径)基于与目的地机器上的负载相关的权重。例如,在使用负载平衡的最少连接方法的实施例中,该组候选目的地机器被识别为具有最少活动连接数的一组“n”个目的地机器。本领域普通技术人员将认识到的是,最少连接方法是基于选择最少负载目的地机器的负载平衡操作的一个示例,并且可以如关于最少连接方法所描述的那样使用其它负载量度。
62.在一些实施例中,“n”的值是小于一组目的地机器中的目的地机器的数量的整数。在一些实施例中,选择“n”的值以接近目的地机器的用户定义或默认的比例(例如,10%、25%、50%等)。代替使用固定数量的候选目的地机器,一些实施例根据基于负载的权重低于或高于阈值来识别一组候选机器,该阈值可以基于当前基于负载的权重被动态调整。例如,如果最小负载目的地被测量为具有权重“w
ll”(例如,表示使用其容量的20%),那么候选目的地机器可以基于在权重的特定固定百分比(p)内(例如,w
ll
《w
cdm
《w
ll
+p)或不超过某个固定因子(a)乘以最小负载目的地机器的权重(例如,w
ll
《w
cdm
《a*w
ll
)来识别,其中a大于1。类似地,如果基于负载的权重测量超过容量,那么可以通过减去p或除以a来计算最小阈值,代替用于计算上限阈值的加法和乘法。
63.在一些实施例中,识别一组候选目的地机器包括识别与一组候选目的地机器相关联的一组候选数据路径。在一些这样的实施例中,为每个候选目的地机器识别到达候选目的地机器的一组数据路径。一些实施例仅识别单个候选目的地机器(例如,识别最少负载的目的地机器)并且该组候选数据路径仅包括到单个候选目的地机器的数据路径。
64.在(在620处)基于负载数据识别一组候选目的地机器或数据路径之后,(在630处)基于链路状态数据选择用于数据消息的目的地机器或数据路径。在一些实施例中,链路状态数据是由sd-wan计算并提供给负载平衡器的基于连接性的权重。在其它实施例中,链路状态数据包括关于负载平衡器用来计算基于连接性的权重的链路特性的数据。在一些实施例中,为数据消息选择目的地机器包括在一组候选目的地机器中选择与最高的(或最低的)基于连接性的权重相关联的目的地机器。在一些实施例中,基于连接性的权重基于时延的量度、丢失的量度或抖动的量度中的至少一个。在一些实施例中,基于连接性的权重基于qoe测量,该qoe测量基于一个或多个连接链路(例如,源边缘节点和目的地机器之间的一组连接链路、构成数据路径的一组连接链路,等等)的连接链路属性数据(例如,如果由一组控制器提供)或链路状态数据的某种组合。
65.(在640处)数据消息然后被转发到所选择的目的地机器,并且在一些实施例中,沿着选择的数据路径。在选择特定数据路径的一些实施例中,并置的sd-wan边缘fe为负载平衡器提供用于区分不同数据路径的信息。在选择目的地机器但不选择数据路径的一些实施例中,sd-wan边缘fe执行连接性优化过程以使用可以用于与目的地机器通信的一个或多个连接链路。
66.图7-12图示了实现如上所述的网络感知的负载平衡的实施例。图7图示了网络700,其中负载平衡器701使用与位于多个sd-wan站点751-753处的一组目的地机器(例如,服务器集群741-743或数据路径)中的每一个相关联的单个权重来选择用于每个接收到的数据消息的sd-wan站点。网络700包括与sd-wan边缘转发节点730-733相关联的四个sd-wan站点750-753。在所示实施例中,sd-wan fe 731-733分别用作后端服务器741-743的前端负载平衡器,并被识别为目的地机器。在其它实施例中,后端服务器由负载平衡器701直接选择。
67.每个服务器集合741-743与一组负载平衡权重相关联,在一些实施例中,前端负载平衡转发节点731-733使用这些负载平衡权重来跨它们相关联的服务器集合741-743的服务器分发数据消息负载。每个服务器集合741-743还与负载平衡器701使用的一组负载平衡权重lw
741-lw
743
相关联以在不同的服务器集合之间分发数据消息负载。在一些实施例中,负载平衡权重是从提供给负载平衡器701或在负载平衡器701处维护的一组负载数据(例如,cpu负载、存储器负载、会话负载等)导出的。而且,在一些实施例中,负载平衡权重lw
741-lw
743
表示每个服务器集合中的服务器之间的集体负载,而转发节点731-733使用的负载平衡权重表示与每个转发节点相关联的每个服务器集合中的各个服务器之间的负载。
68.在一些实施例中,网络700还包括一组sd-wan集线器721-723,其促进sd-wan边缘转发节点730-733之间的连接。在一些实施例中,sd-wan集线器721-723在不同的物理位置(例如,不同的数据中心)执行,而在其它实施例中,sd-wan集线器721-723中的一些或全部在特定物理位置的单个集线器集群中(例如,企业数据中心)。在所示实施例中,sd-wan集线器721-723提供sd-wan站点的sd-wan边缘转发节点730-733之间的连接。在这个示例中,sd-wan转发节点之间的通信必须通过sd-wan集线器,使得数据消息接收在集线器所在的数据中心处提供的服务(例如,防火墙、深度分组检测、其它中间盒服务等)。在其它实施例中(例如,图2、3和10中所示的实施例),边缘转发节点具有直接的节点到节点连接,并且此类节点对之间的通信使用这些连接并且不通过任何中间集线器或cgw。
69.负载平衡器701接收负载平衡数据(即,负载权重lw
741-lw
743
)以及sd-wan元件之间的连接链路的链路状态数据(例如,网络权重(nw))。如上文关于图4和5描述的链路状态数据要么是网络一组权重,要么被用于计算负载平衡器使用的网络一组权重。链路状态数据在不同实施例中以不同方式生成。例如,在一些实施例中,它由与边缘转发节点730-733相关联的链路状态监视器生成(例如,在与转发节点相同的位置或在相同的计算机上执行的监视器),而在其它实施例中,它由sd-wan控制器生成。
70.图7图示了使用负载平衡信息760a和760b的两个不同的负载平衡实施例,负载平衡信息760a和760b分别包括目的地机器的列表761a和761b,以及分别与(1)目的地机器的列表,在这个示例中是服务器集合741-743,和(2)到目的地机器的路径的列表相关联的权重的列表762a和762b。如表762a和762b中的函数符号所指示的,列表762a和762b中的权重
是用于特定目的地机器的负载权重和网络权重的函数。
71.在边缘转发元件730和与所选择的服务器集合相关联的目的地边缘转发元件之间,可以存在通过边缘转发元件730和多个集线器的多个链路的多条路径。例如,在转发元件730和731之间存在通过集线器721-723的三条路径。如果转发元件730通过多个物理链路连接到一个集线器(例如,使用转发元件730的两个物理链路通过两条数据路径连接到集线器721),那么通过转发元件730和集线器721之间的多条数据路径(由转发元件730的多个物理链路促进),转发元件730和731之间将存在多条路径。
72.如上面所提到的,负载平衡器在不同的实施例中使用目的地机器的不同定义。负载平衡信息760a使用边缘节点731-733(表示服务器集合741-743)来定义目的地机器,使得特定边缘节点(例如,边缘节点731)被选择。基于权重选择特定边缘节点,该权重是与边缘节点相关联的负载权重(例如,lw
741
)和与可用于到达边缘节点的一组数据路径相关联的网络权重(例如,nw
0x
)的函数。网络权重(例如,nw
0x
)进而是与可用于到达目的地机器的每个连接链路或每组连接链路相关联的一组网络权重的函数。
73.例如,为了计算网络权重nw
0x
,负载平衡器、sd-wan控制器或sd-wan边缘fe确定到sd-wan节点731的所有可能路径,并基于接收到的关于构成可能路径的连接链路的链路状态数据,计算每条路径的网络权重。因而,nw
0x
被示为基于链路状态数据为每个连接链路计算的网络权重nw
0ax
、nw
0abx
、nw
0bx
、nw
0bax
和nw
0cx
的函数。在一些实施例中,特定连接链路的链路状态数据不仅反映中间网络的特性,而且反映了连接链路的端点的功能性(例如,具有过载队列的端点会增加数据消息丢失、抖动或时延)。在一些实施例中,链路状态数据被直接用于计算网络权重nw
0x
而不是计算中间网络权重。
74.负载平衡信息760b使用到边缘节点731-733(表示服务器集合741-743)的数据路径来定义目的地机器,使得到特定边缘节点的特定数据路径被选择。基于作为与数据路径连接到源边缘节点的特定边缘节点相关联的负载权重(例如,lw
741
)和与特定数据路径相关联的网络权重(例如,nw
0ax
)的函数的权重(例如,目的地权重)来选择特定数据路径。网络权重(例如,nw
0ax
)进而是与定义特定数据路径的每个连接链路相关联的一组网络权重的函数。
75.例如,为了计算网络权重nw
0ax
,负载平衡器、sd-wan控制器或sd-wan边缘fe确定在到sd-wan节点731的数据路径中使用的通信链路,并基于接收到的关于构成数据路径的连接链路的链路状态数据,计算用于每条路径的网络权重(例如,nw
0a
和nw
ax
)。在一些实施例中,链路状态数据被直接用于计算网络权重nw
0ax
而不是计算中间网络权重。在一些实施例中,权重还受到可能路径的数量的影响,使得权重值中反映的目的地机器(例如,服务器集合)的容量也反映同一服务器集合被由数据路径定义的多个目的地机器识别的事实。
76.在任一种方法下,负载平衡器否则无法使用的网络特性(例如,链路状态数据)的使用允许负载平衡器做出比在没有网络信息的情况下做出的决定更好的决定。例如,在没有网络信息的情况下基于最少连接方法(例如,基于其具有最大容量的假设)的负载平衡操作可以识别由不可靠的连接链路(或一组连接链路)连接的或容量低于目的地机器的目的地机器。在这种情况下,可用资源的实际利用率高于由连接数反映的利用率,并且在没有网络信息的情况下,将被识别为具有比当考虑网络信息时具有更大容量的不同目的地机器更高的容量。因而,当做出负载平衡决策时,可以考虑负载平衡器和目的地机器之间的链路的
可靠性、速度和qoe。
77.图8图示了网络800,其中负载平衡设备801使用与位于多个sd-wan站点处的一组目的地机器861(例如,服务器集群841-843)中的每一个相关联的负载权重862和网络权重863来为每个接收到的数据消息选择目的地机器。网络800包括与四个sd-wan站点850-853相关联的四个边缘节点830-833。在所示实施例中,sd-wan转发节点831-833分别充当后端服务器841-843的前端设备,并被识别为目的地机器。每个服务器集合841-843与负载权重lw
841-lw
843
相关联,在一些实施例中,负载权重表示被提供给负载平衡器801或维持在负载平衡器801处的一组负载数据(例如,cpu负载、存储器负载、会话负载等)。
78.在一些实施例中,网络800还包括促进sd-wan边缘设备之间的连接的一组sd-wan集线器821-823。如图7中所示,在一些实施例中,sd-wan集线器821-823在不同的物理位置(例如,不同的数据中心)执行,而在其它实施例中,sd-wan集线器821-823中的两个或更多个在特定的物理位置(例如,企业数据中心)处的单个集线器集群中。在所示实施例中,sd-wan集线器821-823用作sd-wan边缘设备830-833之间连接的互连集线器。
79.负载平衡器801接收负载平衡数据860(即,负载权重lw
841-lw
843
)以及sd-wan元件之间的连接链路的链路状态数据(例如,网络权重(nw))。负载平衡信息860使用边缘节点831-833(表示服务器集合841-843)来定义目的地机器,使得特定的边缘节点(例如,与服务器集合841相关联的边缘节点831)被选择。具体而言,负载平衡器801使用负载平衡数据和链路状态数据两者作为权重值来执行其对不同服务器集合的选择作为用于不同数据消息流的不同目的地。
80.在一些实施例中,负载平衡器801从与服务器集合相关联的网络权重nw和负载权重lw两者产生聚合权重,然后使用聚合权重在服务器集合当中选择服务器集合用于数据消息流。在其它实施例中,它不从网络和负载权重生成聚合权重,而是使用另一种方法(例如,当到服务器集合的sd-wan连接不可靠时,使用网络权重作为约束来消除服务器集合中的一个或多个)。
81.如上文关于图4和5所描述的,链路状态数据要么是一组网络权重,要么被用于计算由负载平衡器使用的一组网络权重。在一些实施例中,负载平衡信息860将目的地机器与针对可用于到达边缘节点的一组数据路径计算的单个网络权重nw相关联。在一些实施例中,用于特定sd-wan转发节点831、832或833的网络权重是与从sd-wan转发节点830到特定sd-wan转发节点831、832或833的每条路径相关联的网络权重的函数,如图8中的公式所示,并且如上文参考图7所述。在一些实施例中,针对在边缘节点或目的地机器而不是数据路径之间进行选择的实施例,如关于图6所描述的,执行针对数据消息的特定边缘节点的选择。
82.图9图示了网络900,其中负载平衡设备901使用与到sd-wan的一组边缘转发节点的一组数据路径963(例如,ax、bx等)中的每条数据路径相关联的负载权重962和网络权重964来为每个接收到的数据消息选择到特定边缘节点的特定数据路径。这个网络900包括与四个sd-wan站点950-953相关联的四个边缘转发节点930-933。在所示实施例中,sd-wan fe 931-933分别用作后端服务器941-943的前端负载平衡设备,并被识别为目的地机器。每个服务器集合931-933都与负载权重lw
941-lw
943
相关联,在一些实施例中,负载权重表示被提供给负载平衡器或维持在负载平衡器处的一组负载数据(例如,cpu负载、存储器负载、会话负载等)。
83.在一些实施例中,网络900还包括促进sd-wan边缘设备之间的连接的一组sd-wan集线器921-923。如图7中所示,在一些实施例中,sd-wan集线器921-923在不同的物理位置(例如,不同的数据中心)执行,而在其它实施例中,sd-wan集线器921-923中的一些或全部在特定的物理位置(例如,企业数据中心)处的单个集线器集群中。在所示实施例中,sd-wan集线器921-923提供sd-wan边缘设备930-933之间的连接。
84.负载平衡器901接收负载平衡数据960(即,负载权重lw
941-lw
943
)以及sd-wan元件之间的连接链路的链路状态数据(例如,网络权重(nw))。如上文关于图4和5所描述的,链路状态数据要么是一组网络权重,要么是用于计算由负载平衡器使用的一组网络权重的一组属性。至于负载平衡信息960,负载平衡信息960具有目的地机器标识符961(其在一些实施例中识别边缘节点931-933之一)以表示服务器集合941-943,并将每个目的地与负载权重962相关联。
85.此外,负载平衡信息960识别到边缘节点的每条数据路径963并且存储每条数据路径963的网络权重964。在一些实施例中,每条数据路径的网络权重作为链路状态数据被接收,而在其它实施例中,链路状态数据是用于计算每条数据路径的网络权重的连接链路属性数据(例如,中间网络权重,或连接链路属性的量度)。
86.基于负载权重962,负载平衡器901最初执行第一负载平衡操作以从一组候选边缘节点中选择(例如,通过基于负载权重的循环选择)特定的候选边缘节点。为此,负载平衡器在一些实施例中执行类似于图6的操作620的操作。基于网络权重,负载平衡操作然后执行第二负载平衡操作(类似于图6的操作630)以从到特定边缘节点的一个或多个候选数据路径中选择(例如,通过基于网络权重的循环选择)到所选择的特定边缘节点的特定数据路径。通过使用这个两步负载平衡操作,负载平衡器901可以识别满足某个准则的候选目的地机器,然后应用中间网络的知识来选择满足考虑网络连接性的质量(例如,满足最低qoe度量)的一组不同准则的到候选目的地机器的特定数据路径。
87.图10图示了由不同质量的连接链路连接的一组sd-wan边缘节点1030-1032和一组sd-wan集线器1021-1023之间的全网状网络。在所示实施例中,每个连接链路被指派网络权重(例如,分数),然后将网络权重与一组两个阈值网络权重“t1”和“t2”进行比较,在一些实施例中,这两个阈值网络权重是用户指定的。在其它实施例中,单个网络权重被针对不同属性的一组网络权重代替,这些网络权重可以被用于对连接链路的不同属性敏感的不同应用(例如,对速度比对抖动或分组丢失施加较重权重的流(低时延))进行负载平衡。两个阈值的选择是为了说明的目的,不应理解为限制。
88.用于每条个体数据路径和用于数据路径集合的示例性网络权重计算使用表1002进行说明,表1002提供了识别每个连接链路的网络权重的图例以及公式1003和1004。公式1003和1004表示简单的最小(min)或最大(max)公式,它将与数据路径中的最弱连接链路相关联的网络权重识别为个体数据路径的网络权重,并且将与一组数据路径中具有最高网络权重的数据路径相关联的网络权重识别为源和目的地之间的一组数据路径的网络权重。
89.对特定数据路径使用最小值反映了如下事实:对于被定义为穿过特定的一组连接链路的特定数据路径,最差的(例如,最慢的、最有损的,等等)连接链路将限制沿着数据路径的连接性。相反,对于一组数据路径,可以选择最佳数据路径,使得最佳数据路径定义源和目的地的连接性。对于特定的特性,诸如丢失率,乘法公式在一些实施例中将更好地反映
丢失率(例如,接收到的数据消息的数量除以发送的数据消息的总数)。本领域普通技术人员将认识到的是,可以基于所考虑的不同特性或属性的数量以及它们如何交互来以多种方式定义函数。
90.等式1003和1004的结果在表1005中说明,表1005识别从sd-wan边缘fe1030到sd-wan fe 1031(例如,网关“x”)的每条个体数据路径。类似的公式可以被用于识别用于从sd-wan边缘fe1030到sd-wan fe 1032(例如,网关“y”)的数据路径(和数据路径集)的网络权重。如上面所讨论的,一些实施例使用个体数据路径的网络权重来做出负载平衡决策,而一些实施例使用连接源和目的地的一组数据路径的网络权重。但是,本领域的普通技术人员将认识到的是,考虑跳数或用于计算每个连接链路的网络权重的个体特性的更复杂的公式被用于计算网络权重或与每条数据路径或目的地相关联的其它值。
91.在图2、3和7-10中所示的示例中,提到每个边缘转发节点执行负载平衡操作以从与边缘转发节点相关联的一组目的地机器中选择一个目的地机器。在一些实施例中,边缘转发节点通过执行负载平衡过程来执行负载平衡操作。在其它实施例中,边缘转发节点指示与边缘转发节点共同位于sd-wan站点处的负载平衡器或一组负载平衡器,以针对边缘转发节点接收到的新数据消息流执行负载平衡操作,然后将该数据消息流转发到由(一个或多个)负载平衡器选择的目的地机器。在其它实施例中,边缘转发节点简单地将数据消息流转发到在同一sd-wan站点中操作的负载平衡器,并且这个负载平衡器为每个数据消息流选择目的地机器并将每个流转发到负载平衡器选择的目的地机器。
92.图11图示了使用一些实施例的网络感知的负载平衡的gslb系统1100。在这个示例中,后端应用服务器1105a-d部署在四个数据中心1102-1108中:其中三个是私有数据中心1102-1106,并且其中一个是公共数据中心1108。这个示例中的数据中心1102-1108位于不同的地理位置(例如,不同的社区、不同的城市、不同的州、不同的国家等)。
93.一个或多个控制器1110的集群被部署在每个数据中心1102-1108中。每个数据中心1102-1108还具有负载平衡器1117的集群1115以跨数据中心中的后端应用服务器1105分发数据消息负载。在这个示例中,三个数据中心1102、1104和1108还具有dns服务引擎1125的集群1120以执行dns操作从而处理(例如,为域名提供网络地址)由数据中心内部或外部的机器1130提交的dns请求。在一些实施例中,dns请求包括对完全限定域名(fqdn)地址解析的请求。
94.图11图示了fqdn的解析,该fqdn引用由域acme.com的服务器执行的特定应用“a”。如图所示,可通过https和url“a.acme.com”访问这个应用。对于这个应用的dns请求分三步进行解析。首先,公共dns解析器1160最初接收dns请求并将这个请求转发给拥有或管理私有数据中心1102-1106的企业的私有dns解析器1165。
95.第二,私有dns解析器1165选择dns集群1120之一。这个选择基于在dns集群1120之间分发dns请求负载的一组负载平衡准则。在图11中所示的示例中,私有dns解析器1165选择数据中心1104的dns集群1120b。
96.第三,所选择的dns集群1120b将域名解析为ip地址。在一些实施例中,每个dns集群1120包括多个dns服务引擎1125,诸如在集群的数据中心中的主机计算机上执行的dns服务虚拟机(svm)。当dns集群1120接收到dns请求时,前端负载平衡器(未示出)在一些实施例中选择集群1120中的dns服务引擎1125来响应dns请求,并将dns请求转发到所选择的dns服
务引擎1125。其它实施例不使用前端负载平衡器,而是让dns服务引擎1125用作前端负载平衡器,该前端负载平衡器选择自身或同一集群1120中的另一个dns服务引擎1125来处理dns请求。
97.处理dns请求的dns服务引擎1125b然后使用一组准则来选择后端服务器集群1105之一来处理来自发送了dns请求的机器1130的数据消息流。在一些实施例中,用于这个选择的一组准则包括以下至少一个:(1)识别每个后端集群1105上的负载的某种量度的负载权重,(2)如上所述的反映连接性的量度的一组网络权重,以及(3)如通过引用并入本文的2020年1月17日提交的美国专利申请16/746,785中进一步描述的一组健康度量。而且,在一些实施例中,一组准则包括dns服务引擎用来将数据消息负载分发到执行应用“a”的后端服务器上的负载平衡准则。
98.在图11中所示的示例中,所选择的后端服务器集群是私有数据中心1106中的服务器集群1105c。在为其接收到的dns请求选择这个后端服务器集群1105c之后,dns集群1120b的dns服务引擎1125b向发出请求的机器返回响应。如图所示,这个响应包括与所选择的后端服务器集群1105c相关联的vip地址。在一些实施例中,这个vip地址与本地负载平衡器集群1115c相关联,本地负载平衡器集群1115c与所选择的后端服务器集群位于同一数据中心1106中。
99.在获得vip地址之后,机器1130将一个或多个数据消息流发送到vip地址,以供后端服务器集群1105处理。在这个示例中,数据消息流由本地负载平衡器集群1115c接收。在一些实施例中,每个负载平衡器集群1115具有在集群的数据中心中的主机计算机上执行的多个负载平衡引擎1117(例如,负载平衡svm)。
100.当负载平衡器集群接收到流的第一个数据消息时,前端负载平衡器(未示出)在一些实施例中选择集群1115中的负载平衡服务引擎1117以选择后端服务器1105来接收数据消息流,并将数据消息转发到所选择的负载平衡服务引擎1117。其它实施例不使用前端负载平衡器,而是改为让集群中的负载平衡服务引擎用作前端负载平衡器,该前端负载平衡器选择自身或同一集群中的另一个负载平衡服务引擎来处理接收到的数据消息流。
101.当所选择的负载平衡服务引擎1117处理流的第一个数据消息时,这个服务引擎1117使用一组负载平衡准则(例如,一组权重值)来从同一数据中心1106中的后端服务器的集群1105c选择一个后端服务器。负载平衡服务引擎1117随后将vip地址替换为所选择的后端服务器1105c的实际目的地ip(dip)地址,并将同一流的数据消息和后续数据消息转发至所选择的后端服务器1105c。所选择的后台服务器1105c然后处理数据消息流,并且在必要时向机器1130发送响应数据消息流。在一些实施例中,响应数据消息流通过负载平衡服务引擎1117,负载平衡服务引擎1117为来自机器1130的初始数据消息流选择了后端服务器1105c。
102.图12图示了包括使用网络感知的负载平衡的部署在sd-wan中的网络感知gslb系统1200的实施例。系统1200包括一组四个数据中心1202-1208,其中三个是私有数据中心1202-1206,并且其中一个是公共数据中心1208,如图11中所示。该组四个数据中心1202-1208是sd-wan的一部分,并且每个数据中心托管促进sd-wan内的通信的一个sd-wan边缘设备1245(例如,多租户sd-wan边缘fe、网关或集线器)。在这个实施例中,四个数据中心1202-1208由数据中心1275a-b(例如,私有或公共数据中心)中的一组集线器1250a-b连接,这些
集线器促进外部或内部机器1230a-b与后端服务器1205之间的通信。如图所示,外部机器1230a通过互联网1270连接到集线器1250a-b,并且集线器1250a-b也可以用作访问外部网络或机器的网关。
103.如图3中所示,sd-wan控制器集群1240将链路状态数据(lsd)发送到sd-wan的其它负载平衡元件。在系统1200中,控制器集群1240生成(1)用于dns服务器之间的负载平衡的链路状态数据(例如,dns-lsd 1241)和(2)用于应用(即,后端服务器1205的集合)之间的负载平衡的链路状态数据(例如,app-lsd 1242)。dns-lsd 1241被提供给私有dns解析器1265,以用于基于负载权重和链路状态数据(或从链路状态数据导出的数据)以及一组负载平衡准则在不同数据服务器中的dns服务器之间执行第一级负载平衡,类似于上面关于图6-10描述的用于选择目的地机器的过程。app-lsd 1242被提供给dns服务引擎1225a-d,以基于负载平衡准则或负载权重和链路状态数据(或从链路状态数据导出的数据)以及一组负载平衡准则在后端服务器集群1205a-d之间执行第二级负载平衡,类似于上面关于图6-10描述的用于选择目的地机器的过程。在所示实施例中,没有为负载平衡器集群1115a-d提供任何链路状态数据,因为数据中心内的连接通常不经历与数据中心之间的连接链路相同的连接变化。
104.许多上述特征和应用被实现为被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集的软件处理。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核心或其它处理单元)执行时,它们使(一个或多个)处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于cd-rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括无线地或通过有线连接传递的载波和电子信号。
105.在本说明书中,术语“软件”意在包括驻留在只读存储器中的固件或存储在磁性存储装置中的应用,它们可以被读入存储器以供处理器处理。而且,在一些实施例中,可以将多个软件发明实现为更大程序的子部分,同时保留不同的软件发明。在一些实施例中,多个软件发明也可以被实现为分开的程序。最后,一起实现这里描述的软件发明的分开的程序的任意组合都在本发明的范围内。在一些实施例中,软件程序在被安装以在一个或多个电子系统上操作时定义执行并执行实施软件程序的操作的一种或多种具体机器实施方式。
106.图13概念性地图示了用于实现本发明的一些实施例的计算机系统1300。计算机系统1300可以被用于实现任何上述主机、控制器、网关和边缘转发元件。照此,它可以被用于执行任何上述处理。这个计算机系统1300包括各种类型的非暂态机器可读介质以及用于各种其它类型的机器可读介质的接口。计算机系统1300包括总线1305、(一个或多个)处理单元1310、系统存储器1325、只读存储器1330、永久存储设备1335、输入设备1340和输出设备1345。
107.总线1305共同表示通信连接计算机系统1300的众多内部设备的所有系统总线、外围和芯片集总线。例如,总线1305将(一个或多个)处理单元1310与只读存储器1330、系统存储器1325和永久存储设备1335通信连接。
108.(一个或多个)处理单元1310从这些各种存储单元中检索要执行的指令和要处理的数据,以便执行本发明的处理。在不同的实施例中,(一个或多个)处理单元可以是单个处理器或多核处理器。只读存储器(rom)1330存储(一个或多个)处理单元1310和计算机系统的其它模块所需的静态数据和指令。另一方面,永久存储设备1335是读写存储器设备。这个
设备是非易失性存储器单元,即使计算机系统1300关闭,它也存储指令和数据。本发明的一些实施例使用大容量存储设备(诸如磁盘或光盘及其对应的磁盘驱动器)作为永久存储设备1335。
109.其它实施例使用可移动存储设备(诸如软盘、闪存驱动器等)作为永久存储设备1335。就像永久存储设备1335,系统存储器1325是读写存储器设备。但是,与存储设备1335不同,系统存储器1325是易失性读写存储器,诸如随机存取存储器。系统存储器1325存储处理器在运行时所需的一些指令和数据。在一些实施例中,本发明的处理被存储在系统存储器1325、永久存储设备1335和/或只读存储器1330中。(一个或多个)处理单元1310从这些各种存储器单元中检索要执行的指令和要处理的数据,以便执行一些实施例的处理。
110.总线1305还连接到输入和输出设备1340和1345。输入设备1340使用户能够向计算机系统1300传达信息并选择命令。输入设备1340包括字母数字键盘和指点设备(也称为“光标控制设备”)。输出设备1345显示由计算机系统1300生成的图像。输出设备1345包括打印机和显示设备,诸如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括诸如触摸屏之类的设备,其既充当输入设备1340又充当输出设备1345。
111.最后,如图13中所示,总线1305还通过网络适配器(未示出)将计算机系统1300耦合到网络1365。以这种方式,计算机1300可以是计算机网络(诸如局域网(lan)、广域网(wan)或内联网、或网络的网络(互联网))的一部分。计算机系统1300的任何或所有部件可以与本发明结合使用。
112.一些实施例包括将计算机程序指令存储在机器可读或计算机可读介质(可替代地称为计算机可读存储介质、机器可读介质、或机器可读存储介质)中的电子部件,诸如微处理器、存储装置和存储器。此类计算机可读介质的一些示例包括ram、rom、只读光盘(cd-rom)、可记录光盘(cd-r)、可重写光盘(cd-rw)、只读数字多功能光盘(例如,dvd-rom、双层dvd-rom)、各种可记录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存(例如,sd卡、mini-sd卡、micro-sd卡等)、磁性和/或固态硬盘驱动器、只读和可记录的盘、超密度光盘、任何其它光学或磁性介质,以及软盘。计算机可读介质可以存储可由至少一个处理单元执行并且包括用于执行各种操作的指令集的计算机程序。计算机程序或计算机代码的示例包括机器代码(例如由编译器产生的),以及文件,包括由计算机、电子部件或微处理器使用解释器执行的高级代码。
113.虽然以上讨论主要是指执行软件的微处理器或多核处理器,但是一些实施例是由一个或多个集成电路(诸如专用集成电路(asic)或现场可编程门阵列(fpga))执行的。在一些实施例中,此类集成电路执行存储在电路本身上的指令。
114.如本说明书中使用的,术语“计算机”、“服务器”、“处理器”和“存储器”均指电子或其它技术设备。这些术语不包括一个人或一群人。为了本说明书的目的,术语“显示”是指在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”、“计算机可读介质”和“机器可读介质”完全限于以计算机可读的形式存储信息的有形物理对象。这些术语不包括任何无线信号、有线下载信号以及任何其它短暂或暂态的信号。
115.虽然已经参考许多具体细节描述了本发明,但是本领域普通技术人员将认识到,在不脱离本发明的精神的情况下,可以以其它具体形式来实施本发明。例如,上述实施例中的几个实施例在公共云数据中心中部署了网关。但是,在其它实施例中,网关部署在第三方
的私有云数据中心(例如,第三方用来为不同实体部署云网关的数据中心,以便为这些实体部署虚拟网络)。因此,本领域普通技术人员将理解,本发明不限于前述说明性细节,而是由所附权利要求书限定。
技术特征:
1.一种为穿过软件定义的广域网(sd-wan)的数据消息提供网络感知的负载平衡的方法,该sd-wan包括sd-wan的不同元件之间的多个连接链路,所述方法包括:在负载平衡器处,接收与包括所述多个连接链路中的一组连接链路的一组sd-wan数据路径相关的链路状态数据,其中负载平衡器为通过所述一组sd-wan数据路径连接到负载平衡器的一组目的地机器提供负载平衡;从连接到sd-wan的设备接收数据消息,该数据消息以所述一组目的地机器中的目的地机器为目的地;通过基于接收到的链路状态数据执行负载平衡操作来为所述数据消息选择所述一组目的地机器中的特定目的地机器;以及将所述数据消息转发到所述一组目的地机器中的所选择的特定目的地机器。2.如权利要求1所述的方法,其中负载平衡器从sd-wan的控制器接收链路状态数据。3.如权利要求1所述的方法,其中负载平衡器从并置的sd-wan设备接收链路状态数据。4.如权利要求1所述的方法,还包括接收关于所述一组目的地机器中的每个目的地机器的负载信息,其中负载平衡操作还基于接收到的负载信息。5.如权利要求4所述的方法,其中负载平衡操作包括基于(i)链路状态数据和(ii)接收到的负载信息来计算与所述一组目的地机器中的每个目的地机器相关联的权重。6.如权利要求4所述的方法,其中负载平衡操作包括:基于接收到的负载信息的第一负载平衡子操作,第一负载平衡子操作在所述一组目的地机器中选择一组候选目的地机器;以及基于链路状态数据的第二负载平衡子操作,第二负载平衡子操作从所述一组候选目的地机器中选择特定目的地机器。7.如权利要求6所述的方法,其中基于链路状态数据的第二负载平衡子操作还选择与候选目的地机器相关联的特定数据路径。8.如权利要求1所述的方法,其中所述一组目的地机器是一组sd-wan边缘设备,每个sd-wan边缘设备提供对与该sd-wan边缘设备相关联的资源的访问。9.如权利要求8所述的方法,其中所述一组sd-wan边缘设备中的每个sd-wan边缘设备与数据中心相关联,与该sd-wan边缘设备相关联的资源在该数据中心中执行。10.如权利要求1所述的方法,其中所述一组目的地机器包括用于一组后端计算节点的一组前端负载平衡器。11.如权利要求1所述的方法,其中所述一组数据路径包括到所述一组目的地机器中的同一目的地机器的多条数据路径的子集,其中所述多条数据路径的子集中的至少两条数据路径穿过不同sd-wan集线器和不同sd-wan网关中的至少一个。12.如权利要求1所述的方法,其中到同一目的地机器的一组多条数据路径包括以不同次序穿过sd-wan的同一组部件的至少两条数据路径。13.如权利要求1所述的方法,其中所述一组sd-wan数据路径中包括的多个连接链路是sd-wan的两个元件之间的隧道,并且链路状态数据基于隧道的特性和终止隧道的sd-wan的元件。14.如权利要求1所述的方法,其中接收到的链路状态数据是用于执行负载平衡操作的
一组权重。15.如权利要求14所述的方法,其中,对于每个目的地机器,所述一组权重包括:(1)指示目的地机器上的cpu负载、存储器负载和会话负载中的至少一个的第一负载权重,以及(2)与将负载平衡器连接到目的地机器的一组数据路径相关联的第二网络权重。16.如权利要求14所述的方法,其中,对于所述一组数据路径中的每条数据路径,所述一组权重包括(1)指示相关联的目的地机器上的cpu负载、存储器负载和会话负载中的至少一个的第一负载权重,以及(2)与基于接收到的连接链路特性数据构成数据路径的特定的一组连接链路相关联的第二网络权重。17.如权利要求1所述的方法,其中链路状态数据包括所述多条数据路径中的每条数据路径的时延的当前量度、所述多条数据路径中的每条数据路径的时延的当前量度、所述多条数据路径中的每条数据路径的抖动的当前量度、以及所述多条数据路径中的每条数据路径的体验质量分数的当前量度中的至少一个。18.如权利要求17所述的方法,其中链路状态数据还包括所述多条数据路径中的每条数据路径的时延的历史量度、所述多条数据路径中的每条数据路径的时延的历史量度、所述多条数据路径中的每条数据路径的抖动的历史量度、以及所述多条数据路径中的每条数据路径的体验质量分数的历史量度中的至少一个。19.如权利要求1所述的方法,其中链路状态数据包括所述一组连接链路中的每个连接链路的时延的当前量度、所述一组连接链路中的每个连接链路的时延的当前量度、所述一组连接链路中的每个连接链路的抖动的当前量度、以及所述一组连接链路中的每个连接链路的体验质量分数的当前量度中的至少一个。20.如权利要求19所述的方法,其中链路状态数据还包括所述一组连接链路中的每个连接链路的时延的历史量度、所述一组连接链路中的每个连接链路的时延的历史量度、所述一组连接链路中的每个连接链路的抖动的历史量度,以及所述一组连接链路中的每个连接链路的体验质量分数的历史量度中的至少一个。21.一种为穿过软件定义的广域网(sd-wan)的数据消息提供网络感知的负载平衡的方法,该sd-wan包括sd-wan的不同元件之间的多个连接链路,所述方法包括:在sd-wan控制器处,从由所述多个连接链路连接的sd-wan的一组元件接收关于连接链路特性的数据;基于接收到的关于连接链路特性的数据生成与所述多个连接链路相关的链路状态数据;以及将生成的链路状态数据提供给sd-wan站点的负载平衡器,其中所述负载平衡器基于链路状态数据为通过所述多个连接链路从sd-wan站点处的设备发送到连接到负载平衡器的一组目的地机器的数据消息提供负载平衡。22.如权利要求21所述的方法,其中将链路状态数据提供给负载平衡器包括将链路状态数据提供给sd-wan站点的sd-wan边缘设备,该sd-wan边缘设备将链路状态数据提供给负载平衡器。23.如权利要求22所述的方法,其中链路状态数据由sd-wan站点的sd-wan边缘设备修改以供负载平衡器消费。24.如权利要求21所述的方法,其中生成与所述多个连接链路相关的链路状态数据包
括:识别将负载平衡器连接到所述一组目的地机器中的每个目的地机器的一组数据路径,每条数据路径包括连接链路的有序集合;以及基于接收到的关于连接链路特性的数据,为每条数据路径生成链路状态数据。25.如权利要求24所述的方法,其中链路状态数据包括所述多条数据路径中的每条数据路径的时延的当前量度。26.如权利要求25所述的方法,其中关于一组网络特性的一组数据还包括所述多条数据路径中的每条数据路径的时延的历史量度。27.如权利要求24所述的方法,其中链路状态数据包括所述一组数据路径中的任何数据路径中包括的每个sd-wan连接链路的时延的量度,并且特定数据路径的时延的量度是基于接收到的构成所述数据路径的每个sd-wan连接链路的时延的量度计算的。28.如权利要求27所述的方法,其中特定数据路径的时延是该数据路径中包括的任何通信链路的最大时延。29.如权利要求24所述的方法,其中关于一组网络特性的一组数据包括所述多条数据路径中的每条数据路径的数据消息丢失的当前量度。30.如权利要求29所述的方法,其中关于一组网络特性的一组数据还包括所述多条数据路径中的每条数据路径的数据消息丢失的历史量度。31.如权利要求29所述的方法,其中数据消息丢失的量度包括被表示为0到1之间的数字的丢失率,该丢失率反映跨到达其目的地的数据路径发送的数据消息的数量,关于连接链路特性的数据包括所述一组数据路径中的任何数据路径中包括的每个sd-wan连接链路的丢失率;以及所述一组数据路径中的数据路径的数据消息丢失的量度基于乘以所述一组数据路径中的数据路径中包括的每个sd-wan连接链路的丢失率。32.如权利要求24所述的方法,其中关于一组网络特性的一组数据包括针对所述多条数据路径中的每条数据路径的抖动的当前量度。33.如权利要求32所述的方法,其中关于一组网络特性的一组数据还包括所述多条数据路径中的每条数据路径的抖动的历史量度。34.如权利要求24所述的方法,其中关于一组网络特性的一组数据包括基于时延的当前量度、数据消息丢失的当前量度和数据路径的抖动的当前量度中的至少一个的所述多条数据路径中的每条数据路径的体验质量分数的当前量度。35.如权利要求34所述的方法,其中关于一组网络特性的一组数据包括基于时延的历史量度、数据消息丢失的历史量度和数据路径的抖动的历史量度中的至少一个的所述多条数据路径中的每条数据路径的体验质量分数的历史量度。36.如权利要求21所述的方法,还包括:接收所述一组目的地机器中的目的地机器的一组负载数据,其中生成链路状态数据还基于接收到的负载数据,并且链路状态数据包括负载平衡器用来提供负载平衡的一组权重。37.如权利要求36所述的方法,其中链路状态数据包括基于负载数据和关于连接链路
特性的数据的用于每个目的地机器的单个权重。38.如权利要求36所述的方法,其中对于每个目的地机器,链路状态数据包括(1)基于接收到的负载数据的指示cpu负载、存储器负载和会话负载中的至少一个的第一负载权重,以及(2)基于接收到的连接链路特性数据的与将负载平衡器连接到目的地机器的一组连接链路相关联的第二网络权重。39.如权利要求24所述的方法,其中将负载平衡器连接到一组目的地机器的多条数据路径被识别,并且对于每条数据路径,链路状态数据包括(1)基于接收到的负载数据的指示相关联的目的地机器上的cpu负载、存储器负载和会话负载中的至少一个的第一负载权重,以及(2)基于接收到的连接链路特性数据的与构成数据路径的一组连接链路相关联的第二网络权重。40.如权利要求21所述的方法,其中所述一组目的地机器包括用于一组后端计算节点的一组前端负载平衡器。41.一种存储程序的机器可读介质,所述程序在由至少一个处理单元实现时实现根据权利要求1-40中的任一项所述的方法。42.一种电子设备,包括:一组处理单元;以及存储程序的机器可读介质,所述程序在由至少一个处理单元实现时实现根据权利要求1-40中的任一项所述的方法。43.一种系统,包括用于实现根据权利要求1-40中的任一项所述的方法的部件。44.一种计算机程序产品,包括在由计算机执行时使计算机执行根据权利要求1-40中的任一项所述的方法的指令。
技术总结
本发明的一些实施例提供了一种用于穿过软件定义的广域网(SD-WAN)(例如,虚拟网络)的数据消息的网络感知的负载平衡的方法,该SD-WAN包括SD-WAN的不同元件之间的多个连接链路。该方法包括在多机器站点中的负载平衡器处接收与包括多个连接链路中的连接链路的一组SD-WAN数据路径相关的链路状态数据。在一些实施例中,负载平衡器为通过一组SD-WAN数据路径从多机器站点中的机器发送到连接到负载平衡器的一组目的地机器(例如,web服务器、数据库服务器等)的数据消息提供负载平衡。负载平衡器通过基于接收到的链路状态数据执行负载平衡操作来为数据消息选择一组目的地机器中的特定目的地机器(例如,用于一组后端服务器的前端机器)。前端机器)。前端机器)。
技术研发人员:N
受保护的技术使用者:VM维尔股份有限公司
技术研发日:2021.11.02
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:石墨烯加工技术 下一篇:色度变换类型确定的制作方法