CN113826363A - 全局网络接入点中冗余控制器之间的一致路由公告 - Google Patents
全局网络接入点中冗余控制器之间的一致路由公告 Download PDFInfo
- Publication number
- CN113826363A CN113826363A CN202080028434.6A CN202080028434A CN113826363A CN 113826363 A CN113826363 A CN 113826363A CN 202080028434 A CN202080028434 A CN 202080028434A CN 113826363 A CN113826363 A CN 113826363A
- Authority
- CN
- China
- Prior art keywords
- routing
- access point
- controller
- network
- endpoint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/42—Centralised routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/033—Topology update or discovery by updating distance vector protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/22—Alternate routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述实现在包括多个分组处理器的接入点中管理冗余路由公告的系统和方法。描述路由控制器,路由控制器可以生成路由信息,路由信息在分组处理器之间将传入的分组分布到所述接入点。路由控制器可以冗余地操作,使得单个控制器的故障不会导致所述接入点的完全故障。为了避免不同路由控制器发出不同的公告(特别是在部分故障情况下),路由控制器利用强一致数据存储装置来存储路由信息。只要所述数据存储装置内的记录包含有效信息,它就被认为是权威的并且所有路由控制器都会公告来自所述记录的路由信息。如果所述信息无效,则所述路由控制器尝试用新的、更高优先级的路由信息覆写所述信息。单次写入成功,从而产生新的权威路由信息。
Description
背景技术
一般而言,计算装置利用通信网络或一系列通信网络来交换数据。公司和组织操作计算机网络,所述计算机网络互连多个计算装置以支持操作或向第三方提供服务。计算系统可位于单个地理位置或位于多个不同的地理位置(例如,经由专用通信网络或公共通信网络进行互连)。具体地说,数据中心或数据处理中心(本文通常称为“数据中心”)可以包括许多互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的专用数据中心,或可以是代表公众或为公众利益运营的公共数据中心。
因为任何个别计算装置的资源都是有限的,所以已知多种技术尝试平衡装置之间的资源使用。例如,可以在请求使用计算资源的客户端装置与提供此类资源的服务器之间放置“负载平衡器”装置。负载平衡器可以尝试在服务器之间分布请求,从而允许服务器协同工作以提供此类资源。使用此种负载平衡器的明显缺点是它可能会产生单点故障,使得如果负载平衡器出现故障,则对服务器的请求就会失败并且资源将变得不可用。
本领域中已知的另一种类型的负载平衡是域名系统(DNS)负载平衡。DNS通常是指用于将人类可识别的域名转换为例如互联网的网络上的网络地址的装置网络。为了使用DNS进行负载平衡,DNS服务器用提供给定资源的多个计算装置的网络地址进行填充。当对解析与所述资源相关联的域名的请求作出响应时,DNS服务器对提供哪些地址进行交替,从而使得在提供的地址之间分配对资源的请求。因为DNS服务器不充当资源流量的管道,并且因为DNS通常提供高度冗余的操作,所以DNS负载平衡通常会避免出现单点故障。然而,DNS负载平衡的一个显著缺点是更改负载平衡方案所需的延迟。DNS请求通常流过一系列DNS解析器,每个DNS解析器可能会高速缓存之前的DNS结果一段时间。因此,在DNS服务器处进行改变以尝试更改服务器之间平衡负载的方式可能需要大量时间来传播。特别是在服务器出现故障的情况下,这些延迟会导致网络通信出现严重错误。此外,维护最新的DNS记录可能很困难,因为当将新装置添加到负载平衡方案中或从负载平衡方案中移除时,通常必须对所述DNS记录进行修改。
本领域中已知的另一种类型的负载平衡是使用“任播”网络地址。在例如互联网的网络中,不同的自主系统(“AS”)为装置提供不同的网络地址。每个AS通过“广告”地址而将其网络内可用的地址通知给其相邻AS。最典型地,每个地址与单个位置(例如,单个装置或一组装置)相关联。在任播配置中,通常在多个AS中的多个装置广告相同的网络地址。然后,取决于相邻AS的配置,可以将访问地址的客户端请求路由到多个装置中的任一个,从而在装置之间分布负载。使用任播来尝试负载平衡的一个明显缺点是到任播地址的路由通常由相邻网络控制。这些网络通常受其它实体的控制。因此,很难或不可能完全控制如何在具有任播网络地址的装置之间分布请求。此外,当相邻网络的配置发生变化时,请求的分布也可能发生变化,从而导致负载平衡方案的波动。
附图说明
图1是描绘说明性逻辑网络的框图,所述逻辑网络包括多个客户端装置和数据中心,以及从一组全局网络地址提供对数据中心的负载平衡访问的一组全局接入点。
图2是描绘图1的数据中心的说明性配置的框图。
图3是描绘图1的全局接入点的说明性配置的框图。
图4是描绘在图1的全局接入点内实施一个或多个流管理器的流管理器服务器的说明性配置的框图。
图5描绘用于将对寻址到全局网络地址的客户端装置的请求路由到图1的全局接入点的说明性交互。
图6描绘用于至少部分地基于数据中心之间的负载平衡请求将来自全局接入点的请求路由到图1的数据中心的说明性交互。
图7描绘用于将端点信息从数据中心传播到图1的全局接入点,使得接入点可以正确地路由来自寻址到全局网络地址的客户端装置的流量的说明性交互。
图8描绘用于通过选择不同相邻装置向其广告来自图1的接入点的不同全局网络地址来增加全局网络地址的弹性的说明性例程。
图9描绘用于通过使用图1的接入点路由寻址到与数据中心内的端点提供的服务相关联的全局网络地址的流量的说明性例程。
图10描绘用于在图1的全局接入点处更新关于提供网络可访问服务的数据中心端点的信息的说明性例程。
图11描绘用于在图1的全局接入点处建立传输控制协议(TCP)会话并将TCP会话切换到端点以启用客户端装置和端点经由TCP会话的通信的说明性交互。
图12描绘用于在图1的全局接入点处建立传输控制协议(TCP)会话并将TCP会话切换到端点以启用客户端装置和端点经由TCP会话的通信的说明性例程。
图13描绘图1的全局接入点利用冗余路由控制器将流管理器分配给全局网络地址并根据这些分配控制数据分组到流管理器的路由的实施方案。
图14描绘用于利用一致数据存储来实施图13的全局接入点内的指定路由以避免在所述接入点的流管理器之间实施不一致路由的说明性交互。
图15描绘用于处理图13的全局接入点内指定路由控制器的故障的说明性交互。
图16描绘图13的全局接入点内的主导路由控制器的操作的说明性例程。
图17描绘图13的全局接入点内的跟随器路由控制器的操作的说明性例程。
具体实施方式
一般而言,本公开的方面涉及使用一个或多个全局网络地址提供对分布在多个地理位置的计算装置池的负载平衡访问。更具体地,本公开的方面涉及提供可经由全局网络地址到达的一组分布式接入点,所述接入点至少部分地基于对请求的负载平衡来选择请求并将请求路由到池内的端点装置。在一个实施方案中,接入点利用任播路由技术来广告与计算装置池相关联的全局网络地址的可用性,从而吸引寻址到这些地址的流量。在接收到访问池的请求时,接入点可以基于例如端点的网络性能标准和端点上的负载的因素在池内选择适当的端点。然后,接入点可以充当代理,从而将请求路由到端点并促进端点与请求装置之间的进一步通信。接入点可以实施如本文公开的各种技术以提供对端点装置池的弹性、有效访问。如本文所公开,接入点可以分布在广泛的地理区域中,从而消除系统内的单点故障。此外,通过利用任播广告,即使当请求被寻址到单个网络地址时,接入点也可以在池中分布请求,从而避免与例如基于DNS的负载平衡的其它技术相关联的复杂性和延迟。通过充当客户端与装置池之间的代理而不是直接服务于资源,接入点可以独立于外部装置如何选择将请求路由到任播地址来控制请求到池的分布,从而避免与传统任播联网相关联的损害。因此,本文公开的实施方案显著改进了现有负载平衡技术。
本公开的实施方案可以说明性地在广泛的地理区域中实施。在一个实施方案中,本公开在全球互联网上实施,并提供全局互联网协议(IP)地址,例如IP版本4(IPv4)或IP版本6(IPv6)地址。不同数据中心可存在于不同地理位置,并且每个数据中心可包括一个或多个端点装置,从而提供对基于网络的服务的访问。此类服务的示例包括但不限于网络托管、数据存储、按需计算服务等。每个数据中心的资源可能是有限的,且因此基于网络的服务的运营商可能希望在这些服务之间分布负载。为了简化基于网络的服务的操作(例如,避免与基于DNS的负载平衡相关的复杂性),可能需要为运营商提供服务的单个相对静态的网络地址集,所述网络地址是可独立于提供对服务的访问的单独端点管理的。此类网络地址在本文中通常被称为“全局”网络地址。如本文所用,术语“全局”旨在指代与服务相关的网络地址的范围(例如,网络地址适用于整个服务而不是个别装置),且并不一定意味着此种网络地址是可全球访问的。然而,可以实施本公开的实施方案以提供通常可从例如互联网的全球网络访问的全局网络地址。
为了为服务提供全局网络地址,公开了一种提供一组地理分布的全局接入点的系统。与上文所述类似,此上下文中的术语“全局”接入点通常旨在指代通常提供对服务的访问的接入点,而不是个别端点,且并不一定意味着此类接入点遍布全球各地(尽管此种配置是可能的)。然而,通常接入点是在地理上分布的。在一个实施方案中,全局接入点位于与为服务提供端点的数据中心不同且数量更多的地理位置中,从而减少了全局接入点与尝试访问服务的客户端装置之间的平均网络距离。
每个全局接入点可以利用任播技术经由与服务相关联的一个或多个全局网络地址来广告服务的可用性。说明性地,通过包括边界网关协议(“BGP”)“扬声器”来向相邻网络通知全局网络地址的可用性,每个接入点可以利用BGP来广告全局网络地址。因此,全局接入点可以将流量地址吸引到全局网络地址。如下文更详细地公开,在一些情况下,全局接入点可以“塑造”BGP公告以增加基于网络的服务对网络中断的弹性。例如,全局接入点可以将其公告的全局网络地址分成两组,并为服务分配来自每一组的至少一个网络地址。然后,全局接入点可以向不同相邻网络公告每组地址。以这种方式,每个接入点可以有效地创建到达所述点的两条路径:通过使用第一组地址的第一相邻者,或通过使用第二组地址的第二相邻者。因此,如果一个相邻网络以某种方式出现故障,则存在到达接入点的替代路径。此外,因为每个接入点都可以这种方式操作,所以如果一个接入点完全出现故障,则流量可以经由传统的任播路由机制自动路由到另一个接入点。虽然本文提供与两个组相关的示例,但可以提供任意数量的组。
为了提供更进一步的弹性,在一些情况下,每个接入点可以根据所广告的全局网络地址的特定子集来隔离流量,并利用不同装置或程序线程来处理寻址到每个子集的流量。以这种方式,如果一个子集的流量对接入点的操作有问题(例如,由于与所述子集的全局网络地址相关的错误配置),则不太可能影响处理另一子集流量的装置或线程的操作。在一个实施方案中,接入点使用不同网络地址组的组合,并分离处理每个网络组的子集。此外,服务可以在每个组的子集之间“改组”,使得如果两个服务被分配一个组的公共子集内的网络地址,则这两个服务很可能被分配第二组的不同子集内的网络地址。在此配置下,如果特定服务的配置导致与一个组的子集相关的接入点操作问题,则仍可能经由替代组访问其它服务(其中它们的地址不太可能位于与有问题的服务相同的子集)。通过增加地址组和子集的数量,可以逐渐减少受有问题的服务影响的服务总数。
在接收到访问服务的请求后,全局接入点可以被配置为将流量路由到提供服务的数据中心内的适当端点。为此,可能需要接入点知道端点的网络地址。在一个实施方案中,每个数据中心配置有资源管理器装置,所述资源管理器装置维护提供对服务的访问的端点列表。资源管理器可以为端点的接入点提供信息,包括端点的网络地址信息。因此,在接收到访问服务的请求时,每个接入点可以被配置为选择所述服务的可用端点并将请求路由到所述端点。如下文将讨论,可以基于标准的组合来选择端点,所述标准包括但不限于端点的网络性能标准(例如,在时延方面)和期望的跨端点的负载平衡。
在一个实施方案中,为了将流量路由到端点,每个接入点被配置为利用网络地址转换(“NAT”)。NAT技术在本领域内是已知的,因此在此将不再详细描述。然而,一般而言,NAT技术使装置能够充当两个装置之间的中间装置,同时重写每个数据分组的各个方面,例如源网络地址和目的地网络地址,以促进所述装置之间的通信。根据本公开的实施方案,每个接入点可以用于以其自身的网络地址(例如,唯一地标识全局接入点的单播网络地址)替换请求装置的源网络地址,并以提供所述服务的端点的网络地址替换目的地网络地址(例如,服务的全局网络地址)。然后,接入点可以将分组路由到端点,从端点接收响应(如果有的话),执行源和目的地的反向转换(例如,用全局网络地址替换响应的源,且用请求装置的网络地址替换响应的目的地),并将分组返回到请求装置。在一个实施方案中,接入点可以在利用NAT时利用端口转换(本领域已知的)来促进流量流(一系列相关分组)的区分,以确保在处理来自多个请求装置的流量时正确地转换地址。
有利地,NAT的使用使接入点能够将从客户端装置接收的流量转发到端点,而对客户端装置与端点之间的连接的干扰最小。例如,通过利用NAT,接入点不需要充当例如传输控制协议(TCP)的某些网络协议的“终止”点。例如,替代路由技术可以使接入点接受来自客户端装置的TCP连接,并初始化到端点的第二TCP连接。维护多个此类连接(以及它们之间的对应关系)可能会显著增加接入点的资源使用,从而降低其路由寻址到全局网络地址的流量的能力。因此,使用NAT可以提供优于此类技术的益处。
此外,在接入点使用NAT使流量能够被引导到与端点使用的任何地址不同的全局网络地址,从而防止泄露端点实际使用的地址。因此,可以保护端点免于直接接收流量。这反过来可以减少或消除端点对例如拒绝服务(DoS)攻击的网络攻击的脆弱性。以这种方式,全局接入点可以提供类似于传统内容交付网络(CDN)所提供的益处。然而,与CDN不同,接入点不需要复制服务的功能(例如,通过在CDN内的每个存在点处实施网络服务器)。相反,本公开的接入点可以使流量能够流过接入点,从而使请求装置的分组能够到达提供服务的端点。由于这个原因,本文公开的全局接入点可以提供比CDN更大范围的功能,从而能够在任何数量的不同的基于网络的服务之间实现负载平衡和分布。
在另一个实施方案中,为了将流量路由到端点,每个接入点被配置为利用封装。封装是一种已知的联网技术,因此在此将不再详细描述。然而,通常可以利用封装来向数据分组添加附加信息(通常以报头的形式,有时也以报尾的形式),从而“打包”或封装数据分组以产生封装的数据分组。在本公开的上下文中,可以利用封装来提供每个接入点与端点之间的“网络隧道”。具体地,当在接入点从客户端装置接收到分组并将所述分组寻址到由端点提供的服务的网络地址时,接入点可以用附加信息封装所述分组,使得所述分组能够被路由到所选端点,例如端点的网络地址。然后可以通过物理网络将封装的分组路由到端点。端点可以将封装的分组“解封装”以去除附加信息,并处理解封装的分组,就好像它是直接从客户端装置接收到一样。
在一个实施方案中,端点可以经由将端点连接到客户端装置的物理网络直接对客户端装置作出响应。在另一个实施方案中,端点可以通过封装响应分组并将封装的响应分组传输回接入点来对客户端装置作出响应。接入点可以依次解封装响应分组并将响应分组返回给客户端。从端点向客户端装置直接返回响应可以有益地减少接入点的工作量,并且还可以减少将接入点连接到端点的物理网络上的流量。然而,可能需要直接返回响应以利用将端点连接到客户端装置的物理网络,所述物理网络可能不如将接入点连接到端点的物理网络稳健。例如,如果端点和接入点经由专用网络连接,而接入点、端点和客户端装置经由公共网络(例如互联网)连接,则通过接入点返回响应(而不是直接返回)可能是优选的,因为最好最小化在公共网络上行进的总距离(例如,在接入点比端点更靠近客户端装置的情况下)。
通常,与使用NAT将分组从接入点路由到端点相比,接入点与端点之间的分组封装可能会增加接入点和端点的计算资源使用。然而,封装也可以提供优于NAT实施方式的益处。例如,在客户端装置的分组在TCP会话期间被路由到不同全局接入点的情况下,封装可以提供TCP会话的弹性。由于网络处理不同接入点的任播广告的方式可能会变化,因此这种路由可以例如基于客户端装置与不同接入点之间的网络的操作而发生。在接入点利用NAT将分组路由到端点的情况下,每个接入点可以独立地维护NAT信息。因此,如果客户端装置分组被路由到不同接入点,那么第二接入点可能没有足够的信息来优雅地接管客户端的通信(例如,第二接入点的转变后的分组可能与本来应该在初始接入点生成的分组不同)。这可能会导致客户端装置和端点的TCP会话被破坏,从而需要客户端装置重新建立TCP连接。
相比之下,封装可以实现优雅地处理接入点之间客户端请求的重新路由。在NAT或封装实施下,每个接入点可以被配置为以一致方式选择端点(例如,应用相同选择算法)。因此,无论最初将客户端装置分组发送到哪个接入点,所述客户端装置分组都期望被路由到相同端点。此外,通过利用封装,当将分组路由到端点时,不需要改变初始客户端装置的分组的数据。相反,可以封装(例如,使用能够实现路由到端点的附加信息)所述数据,并且在解封装之后在端点处重新获得所述数据。出于这个原因,即使客户端分组被路由到不同接入点,解封装之后的端点可用的最终数据也可能是相同的,从而即使当数据流过不同接入点时,端点也能保持与客户端装置的TCP会话。
在一些实施方案中,为了进一步提高利用封装的实施方式的性能,每个接入点可以被配置为帮助端点与客户端装置建立面向连接的通信会话,例如TCP会话。面向连接的通信会话通常需要会话初始化阶段,会话双方在此阶段进行通信以建立对通信状态的相互理解。例如,TCP会话使用“三向握手”。TCP三向握手是本领域已知的,因此在此将不再详细描述。然而,简而言之,当第一方向第二方发送同步(“SYN”)分组(包括将在会话期间使用的第一方序列号)时,建立TCP会话,第二方以同步—确认(“SYN-ACK”)分组(确认第一方序列号并包括第二方序列号)作出响应,并且第一方以确认(“ACK”)分组(确认第二方序列号)对SYN-ACK分组作出响应。因为三向握手需要各方之间进行三个单独的通信,所以握手期间各方之间的时延增加被放大了三倍。在本公开的上下文中,例如,如果客户端装置与端点之间的通信引起100毫秒(ms)时延,则三向握手可以预期花费至少300毫秒。由于在通过TCP会话传输数据之前需要此类握手,因此减少初始化TCP会话所需的时间是有益的。
因此,在本公开的实施方案中,每个全局接入点可以被配置为与客户端装置进行TCP三向握手,然后将TCP连接“切换”到端点。具体而言,每个接入点可以被配置为“监听”来自客户端装置的传入SYN分组,并通过进行TCP三向握手来对此类分组作出响应。在完成握手之后,接入点可以将TCP会话信息(例如,TCP会话的第一方和第二方序列号)传送到选择为向客户端装置提供所请求服务的端点。在接收到TCP会话信息时,端点可以“采用”TCP会话,并处理客户端装置数据分组,就好像客户端装置与端点之间已经建立了TCP会话一样。由于可以假设接入点在时延方面“更接近”客户端装置,因此减少了建立TCP会话所需的时间,而不会干扰客户端装置和端点经由公共TCP会话进行通信的能力。虽然本文提供了关于TCP握手的示例,但每个有状态通信会话通常都需要初始化阶段。本文描述的实施方案可用于在接入点进行此类初始化阶段,同时将面向连接的通信会话的上下文切换到端点以使得客户端装置和端点能够经由面向连接的通信会话进行通信。
如下文更详细讨论,全局接入点可以由多个冗余计算装置实施,使得单个(或潜在地多个)装置的故障不会导致全局接入点的操作故障。此外,全局接入点可以实施一致性协议以确保接入点内的故障不会不必要地更改接入点的操作,使得网络流量流被“中断”或重新路由。
如本领域技术人员鉴于本公开将了解,本文所公开的实施方案提高了计算系统提供网络可访问服务的能力。具体地,本公开的实施方案通过跨公共网络地址提供可扩展的、有弹性的和响应性的负载平衡来改进现有的负载平衡技术,从而改进已知的负载平衡技术。此外,当前公开的实施方案解决了计算系统内固有的技术问题;具体而言,提供网络可访问服务的计算资源的有限性质以及以可扩展的、弹性的和响应性的方式对此类服务的请求进行负载平衡的困难。这些技术问题通过本文描述的各种技术解决方案解决,包括使用与公共网络地址相关联的一组分布式接入点,每个接入点被配置为接收对服务的请求,并至少部分地基于对端点之间的请求的负载平衡而将请求路由到服务的端点。因此,本公开总体上表示对现有网络负载平衡系统和计算系统的改进。
结合附图参考以下详细描述,本公开的前述方面和许多附带优点将变得更容易领会并且变得更好理解。为了便于描述,将首先讨论全局接入点的一般配置、操作和管理,然后详细描述本公开关于管理全局接入点内关于建立接入点的网络路由的冗余的特定优点。
全局接入点的配置、操作和管理
图1是描绘说明性逻辑环境100的框图,所述逻辑环境包括经由第一网络104与一组全局接入点106A-N通信的多个客户端装置102,所述全局接入点106A-N经由第二网络108与一组数据中心110A-N通信。虽然客户端装置102、全局接入点106和数据中心110在图1内分组,但是客户端装置102、全局接入点106和数据中心110可以在地理上远离并且独立拥有或操作。例如,客户端装置102可以表示访问由数据中心110提供的网络可访问服务的各个全球、大陆或区域位置中的多个用户,所述数据中心还可以分布在各个全球、大陆或区域位置之间。全局接入点106可以类似地分布。在一个实施方案中,数据中心110表示在单个实体(例如“云计算”提供商)控制下的位置中的装置,而全局接入点106表示例如网络“存在点”或互联网交换点(IXP)的共同租用位置中的装置。全局接入点106通常可以比数据中心110更多并且位于不同的物理位置。然而,在其它实施方案中,一个或多个接入点106可以位于一个或多个数据中心110内。因此,图1内的客户端装置102、接入点106和数据中心110的分组旨在表示逻辑分组而不是物理分组。
网络104和108可以是任何有线网络、无线网络或其组合。另外,网络104和108可以是个域网、局域网、广域网、电缆网络、卫星网络、蜂窝电话网络或其组合。在图1的示例环境中,网络104是例如互联网的全局网(GAN),而网络108是专用于与提供数据中心110和接入点106的实体相关联的流量的专用网络。经由其它前述类型的通信网络进行通信的协议和组件是计算机通信领域的技术人员已知的,且因此无需在本文进行更详细的描述。
虽然客户端装置102和接入点106中的每一个被描述为具有到网络104的单个连接,但客户端装置102和接入点106的单独组件可在不同点(例如,通过网络104内的不同相邻网络)连接到网络104。在一些实施方案中,数据中心110可以附加地或替代地连接到网络104。类似地,虽然接入点106和数据中心110中的每一个被描绘为具有到网络108的单个连接,但是接入点106和数据中心110的单独组件可以在不同的点处连接到网络108。因此,通信时间和能力在图1的组件之间可能不同。图1的网络配置旨在说明本公开实施方案中的通信路径,而并不一定描绘所有可能的通信路径。
客户端装置102可以包括能够与全局接入点106通信的任意数量的不同计算装置。例如,个别客户端装置102可以对应于笔记本计算机或平板计算机、个人计算机、可穿戴计算机、服务器、个人数字助理(PDA)、混合PDA/移动电话、移动电话、电子书阅读器、机顶盒、相机、数字媒体播放器等。在一些情况下,客户端装置102由最终用户操作。在另一情况下,客户端装置102本身提供网络可访问服务,其与全局接入点106交互以访问其它网络可访问服务。
图1的数据中心110说明性地包括代表一个或多个服务提供商提供一种或多种网络可访问服务的端点计算装置。说明性地,数据中心110可以由“云计算”提供商操作,这使得数据中心内的主机计算装置可用于服务提供商以提供他们的服务。云计算提供通常可以管理数据中心的操作,同时为服务器提供商提供各种机制来配置其相应端点。下面关于图2提供数据中心110的一种说明性配置。
根据本公开的实施方案,云计算提供商可以使服务提供商能够将他们的端点与一个或多个全局网络地址相关联,这些全局网络地址可在网络104上寻址从而以负载平衡的方式与数据中心110交互。云计算提供商还可以例如通过指定要路由到每个数据中心110的请求的百分比来使服务提供商能够指定此类负载平衡应该如何发生。云计算提供商还可以使服务提供商能够独立于全局网络地址更改端点的配置,使得更改提供服务的特定端点不需要重新配置网络地址。全局网络地址的使用可以显著简化网络服务的操作,因为希望连接到服务的任何客户端装置102可以简单地向服务的全局网络地址传输请求。例如,然后可以在不需要更改服务的DNS记录的情况下更改提供服务的端点。如下文将描述,在一些情况下,这些更改可以自动进行,使得即使当服务的端点在数据中心110内改变也不需要用户动作。
为了便于全局网络地址,提供了一组全局接入点106A-N。每个接入点通常可以包括一个或多个计算装置,所述计算装置被配置为从客户端装置102获取与服务交互的请求,并将此类请求路由到数据中心110内的至少部分地基于跨数据中心110的负载平衡请求而选择的端点。接入点106还可以充当端点的一种代理,从而使客户端装置102与数据中心110之间的流量能够流经接入点106。下面更详细地讨论接入点106的操作。然而,简而言之,可以利用任播技术向网络104内的相邻网络装置广播全局网络地址的可用性,在一个实施方案中,所述相邻网络装置包括不受如提供接入点106A的公共实体控制的装置。因此,接入点106可以吸引寻址到全局网络地址的流量。此后,接入点106可以基于例如端点的可用性、跨数据中心110的负载平衡以及接入点106与各种数据中心110之间的性能标准的因素来选择将流量引导至的端点。
在选择数据中心110之后,接入点106可以将请求路由到端点。在一个实施方案中,接入点106使用NAT转换或封装来通过网络108将请求重新引导到端点,从而防止端点的网络地址泄露给客户端装置102。根据本发明的实施方案,在客户端装置102与端点之间使用面向连接的通信会话的情况下,接入点106可以用于代表端点进行通信会话的初始化阶段。在网络108是专用网络的情况下,全局接入点106还可以用作到端点的流量的“卸载”点,从而将所述流量从公共网络(例如,网络104)移动到专用网络108。通常,预期此类专用网络将具有比公共网络更高的性能,且因此,此类卸载还可以提高客户端装置102与端点之间的通信速度。
如上所述,接入点106可以实施多种技术以确保使用全局网络地址的网络服务的弹性。说明性地,使用任播来广告接入点106可以提供接入点106之间的弹性,因为通常可以预期个别接入点106的故障会导致网络104的装置将请求路由到另一个接入点106。此外,为了解决网络104的潜在故障,每个接入点106可以被配置为控制其在网络104上的全局网络地址的公告,从而为每个服务提供到接入点106的多条路由路径。下文提供有关提供路由路径的公告的此种控制的附加细节。更进一步地,为了解决接入点106内的潜在故障,每个接入点106可以被配置为包括多个流管理器,从而处理寻址到全局网络地址的不同流量流。流管理器可以例如跨程序线程逻辑地分布,和/或例如跨处理器或计算装置物理地分布。因此,一个流管理器的故障可能对接入点106内的其它流管理器影响很小或没有影响,从而限制接入点106内部分故障的影响。下文参考图4讨论接入点106的一种说明性配置。
图2是描绘图1的数据中心110的说明性配置的框图。如图2所示,数据中心110包括含有一组端点202A-N的端点池201。每个端点202说明性地表示被配置为提供对网络可访问服务的访问的计算装置。在一个实施方案中,端点202是个别物理计算装置。在另一个实施方案中,端点202是在物理计算装置上执行的虚拟化计算装置。在又一个实施方案中,端点202是被共同配置为提供对网络可访问服务的访问的计算装置(物理或虚拟化)的集合。例如,每个端点202可以是作为负载平衡器装置的装置集合,所述装置被配置为在装置集合之间负载平衡对端点202的请求。每个端点202与网络108通信,且因此可在网络108上寻址。例如,取决于网络可访问服务的容量要求,端点202的数量可以变化。说明性地,此类服务的服务提供商可以与数据中心110的运营商(例如,云计算提供商)签约以生成和供应端点202。
在一个实施方案中,端点202的数量可以根据对网络可访问服务的当前或历史需求而变化。为了促进不同数量的端点202,数据中心可以包括资源管理器206(例如,直接在物理计算装置上实施或作为主机物理计算装置上的虚拟化装置实施),所述资源管理器监测端点202的负载(例如,关于每秒请求、计算资源使用、响应时间等),并动态调整端点202的数量以将负载维持在阈值内。例如,在端点202被实施为虚拟化装置的情况下,资源管理器206可以在当前的一组端点202具有超过期望的上限使用参数的使用度量时生成和供应新的虚拟化装置,并且在度量下降到低于较低的使用参数时“降速”并移除虚拟化装置。资源管理器206还可以被配置为在修改池201内的多个端点202时,将池201内的端点202的网络地址信息通知给全局接入点106,使得接入点106可以将流量寻址到端点202。
另外,图2的数据中心110包括健康状况检查装置204,所述健康状况检查装置被配置为监测池201内的端点202的健康状况。说明性地,健康状况检查装置204可以周期性地(例如,每n秒)向端点202传输请求,并且监测是否接收到适当的响应。如果是,则健康状况检查装置204可以认为端点202是健康的。如果否,则健康状况检查装置204可以认为端点202是不健康的。健康状况检查装置204可以说明性地将不健康端点202通知给全局接入点106,以在端点202不健康的同时使接入点106减少或消除将流量路由到端点202。在一些情况下,健康状况检查装置204还可以被配置为检查全局接入点106的健康状况、其它数据中心110中的端点202的健康状况、或者健康状况检查装置204与接入点106之间的网络路径的健康状况。例如,健康状况检查装置204可以周期性地向接入点106传输信息,并且监测来自接入点106的响应、关于响应的网络度量(例如,时延)等。健康状况检查装置204可以向接入点106报告此信息以促进将流量路由到数据中心110内的端点202A。说明性地,健康状况检查装置204可以将端点202的健康状况信息报告给配置数据存储装置210(例如,数据存储装置210上的数据库),所述健康状况信息可以通过配置管理器208的操作以下文描述的方式(例如,作为配置分组或包的一部分)传播到接入点106。
图2的数据中心110还包括配置管理器208,所述配置管理器被配置为使服务提供商能够配置数据中心110和全局接入点106的操作。说明性地,配置管理器208可以提供接口,通过所述接口,用户可以指定提供网络可访问服务的端点202、配置那些端点202并且配置资源管理器206以按比例放大或缩小端点。配置管理器208还可以使服务提供商能够将全局网络地址分配给那些端点,并指定负载平衡参数以将寻址到全局网络地址的流量路由到各个数据中心110。由服务提供商创建的配置可以存储在配置数据存储装置210内,所述配置数据存储装置可以对应于任何持久的或基本上持久的存储装置(例如,硬盘驱动器、固态驱动器、网络附加存储装置等)。在一些情况下,配置数据存储装置210可以包括服务提供商的配置的多个表示。例如,为了促进全局接入点106的快速重新配置,配置数据存储装置210可以包括每次服务提供商提交对其配置的改变时修改的数据库(例如关系数据库)。配置管理器208可以周期性地(例如,每100毫秒、1秒、2秒、5秒、30秒等)确定是否对数据库进行了改变,并且如果是,则为全局接入点106生成新的配置分组,所述配置分组涵盖相对于先前配置分组对数据库的改变(以及因此,服务提供商的配置)。然后,配置管理器208可以将配置分组存储到配置数据存储装置210中以供全局接入点106检索。在一个实施方案中,每个全局接入点106被配置为周期性地(例如,每100毫秒、1秒、2秒、5秒、30秒等)轮询配置数据存储装置210以确定是否存在新的配置分组,并且如果是,则检索和实施分组。在一些情况下,配置分组可以被分成表示配置的一部分的分组“包”。全局接入点106可以被配置为仅检索相对于现有包修改的那些包。例如,可以基于包或分组的版本控制来跟踪修改。更进一步地,在一些实施方案中,分组或包可以作为与先前版本的差异或“增量”存储在数据存储装置210中,使得接入点106可以仅检索自包的先前版本以来的变化,从而减少更新分组或包所需的数据传送。在一个实施方案中,配置管理器208可以周期性地(例如,每100毫秒、500毫秒等)通过收集自先前检查点以来的所有改变并将分组或包存储为独立版本来设置分组或包“检查点”。在全局接入点106没有先前分组或包的参考帧的情况下,此类检查点可以促进快速重新配置。
在一个实施方案中,图1的数据中心110A-N中的仅一个数据中心110包括配置管理器208,所述管理器208将每个服务提供商的配置传播到其它数据中心110和接入点106。在另一个实施方案中,每个数据中心110包括配置管理器208,并且每个数据中心110的管理器208可以通信以同步数据中心110之间的配置以及与接入点106同步。
虽然数据中心110的仅一些组件被示为与网络108通信,但其它组件可以另外与网络108和/或网络104通信。图2的线并非旨在表示所有实际或潜在的网络连接,而是说明服务相关流量到端点202的可能流。
此外,虽然在数据中心110内示出,但在一个实施方案中,全局接入点106还可以包括配置管理器208,使得能够直接配置接入点106。在另一个实施方案中,全局接入点106不包括任何配置管理器208和数据存储装置210。例如,在接入点106是在共同租用的环境中实施的情况下(例如,接入点106的运营商之外的各方不操作或不可访问),接入点106可以被配置为排除任何持久性存储,并且替代地在接入点106初始化时从数据中心110检索配置信息。以这种方式,可以提高接入点106的安全性,因为使接入点106断电预期会导致可能驻留在接入点106上的任何敏感数据的丢失。
虽然数据中心110被示为包括对应于一个网络可访问服务的一个端点池201,但是数据中心110可以托管各自对应于不同服务的多个池201。因此,多个服务提供商可以利用数据中心110。此外,如上所述,每个网络可访问服务可由跨多个数据中心110的端点202提供。因此,图1的全局接入点可以跨数据中心110向此种服务分布流量。
根据本公开的实施方案,数据中心110还包括会话切换管理器212,所述会话切换管理器被配置为促进采用与在全局接入点106处初始化的客户端102的面向连接的通信会话。如上所述,在一些情况下,全局接入点106可以被配置为完成面向连接的通信会话的初始化阶段,例如TCP三向握手,此后将通信会话切换到端点202。在一些情况下,端点202可以被配置为通过接收面向连接的通信会话的上下文(例如,连接两端的序列号)并生成结合所述上下文的本地状态信息来接受此种切换。端点202可以例如通过修改端点202的操作系统内的联网协议处理程序(例如,通过修改内核以接受和采用来自全局接入点106的TCP上下文信息)来如此配置。然而,可能优选的是端点202不需要如此配置,以便使多种端点202能够利用全局接入点106。为了实现这一点,数据中心110还可以包括会话切换管理器212,所述会话切换管理器被配置为接受和采用来自全局接入点106的面向连接的通信会话。然后,会话切换管理器212可以与由接入点106选择的端点202建立单独的面向连接的通信会话以向客户端装置102提供服务,并且作为两个会话之间的“中间装置”进行操作。因为会话切换管理器212和端点202通常可以共同容纳在数据中心110内,所以可以预期创建第二面向连接的通信会话将使客户端装置102与端点202之间的通信的延迟最小化。
图3是描绘图1的全局接入点的说明性配置的框图。如图3所示,每个全局接入点106经由路由器302与网络104通信。虽然图2中仅示出了单个路由器302,但接入点106可以包括多个路由器302。此外,虽然示出了到网络104的单个连接,但是每个路由器302可以包括到网络104的多个连接,潜在地到网络104内的多个不同相邻装置的多个连接,每个连接可以对应于不同子网络(例如,网络104内的自主系统(AS))。
如上所述,全局接入点106可以被配置为利用任播技术来将流量吸引到与网络可访问服务相关联的全局网络地址。因此,路由器302说明性地被配置为向网络104上的相邻装置广告全局网络地址。在一个实施方案中,此类广告是BGP广告。根据任播技术的操作,此类广告可以使路由器302吸引寻址到全局网络地址的流量,因为广告可以使网络104上的装置将寻址到所述地址的流量路由到路由器302。
如上所述,全局接入点106可以实施多种技术来增加接入点106的弹性。在一个实施方案中,由接入点106广告的全局网络地址被分成多个地址组。为了减少故障对网络104的潜在影响,路由器302(或多个路由器302)可以被配置为将每个地址组的BGP公告传输到网络104上的不同相邻装置(例如,不同的AS)。网络可访问服务可以与来自多个地址组的地址相关联,每个地址组可以作为访问服务的地址提供给客户端装置102。因为来自不同组的地址在网络104上以不同方式广告,所以对于每个组的地址可以预期在网络104上有不同的路由路径。例如,寻址到第一组内的地址的分组可以通过网络104的第一AS到达路由器302,而寻址到第二组内的地址的分组可以通过第二AS到达路由器302。因此,如果在第一AS(或连接到第一AS的下游AS)内发生故障,则可以预期寻址到第二组内的地址的分组仍会到达路由器302,且反之亦然。因此,将全局网络地址分成多个组可以增加接入点106对网络104内的故障的弹性。
在接收到寻址到全局网络地址的分组时,路由器302可以将分组从一组流管理器304A-N路由到流管理器304。虽然接入点106可以实施单个流管理器304,但接入点实施多个流管理器304以提供此类流管理器304的冗余操作可能是有益的。路由器302可以使用任何数量的已知负载平衡技术来将分组分布到流管理器304,例如循环选择。在一个实施方案中,路由器302利用一致散列来分布分组。一致散列在本领域中是已知的,因此在此将不再详细地描述。一致散列可能是有益的,例如,增加具有相同特征(例如,源网络地址、源网络端口、目的地网络地址、目的地网络端口、协议)的多个分组被路由到相同流管理器304的变化。这可以有益地使流管理器304能够维护关于客户端装置102与目的地端点202之间的分组流的状态信息。在一些情况下,可能需要此类状态信息,例如,以实施NAT技术或进行面向连接的通信会话的初始化阶段。在另一个实施方案中,使用等价多路径(ECMP)负载平衡将流量路由到流管理器304A-N。ECMP负载平衡在本领域中是已知的,因此在此将不再详细地描述。
在一个实施方案中,应用ECMP负载平衡以基于分组被寻址到的全局网络地址将分组路由到流管理器304A。说明性地,每个流管理器可以处理寻址到一组全局网络地址内的地址子集的分组。例如,第一流管理器304可以优选地处理组内的第一四分之一地址,第二管理器304可以优选地处理第二四分之一地址等。通过在不同流管理器304之间划分组内的网络地址,接入点106可以例如减少例如由于与流管理器304处理的地址相关联的服务错误配置而受到所述流管理器304的不当操作的不利影响的服务部分。在使用多组全局网络地址的情况下,服务可以在不同组之间“改组”,使得具有共享根据一个地址组的子集的地址的两个服务不太可能具有共享根据另一地址组的子集的地址。这种改组可以减小由于个别流管理器304A的故障而从接入点106完全不可用的服务的总百分比。
为了进一步促进在流管理器304上使用状态信息,在一个实施方案中,路由器302实施流散列路由算法或类似算法以识别构成客户端102与端点202之间的流量“流”的相关分组。多种流识别算法是本领域中已知的,因此在此将不再详细地描述。说明性地,路由器302可以实施流识别算法来辨识数据分组的流,并且一致地将同一流的分组路由到同一流管理器304。在一个实施方案中,路由器302在以其它方式将分组分布到流管理器304之前将基于流的路由应用于数据分组,使得如果分组被辨识为流的一部分,则将其分布到以前处理所述流的分组的同一流管理器304。在此种实施方案中,如果分组未被辨识为流的一部分,则将附加负载平衡算法(例如,一致散列)应用于分组以确定将分组路由到的流管理器304。
在接收到数据分组时,流管理器304可以确定将分组路由到的数据中心110,以及数据中心110内的端点202。在一个实施方案中,流管理器304可以应用包括网络性能标准和负载平衡标准的标准组合来选择将分组路由到的数据中心110。例如,对于给定的分组,流管理器304可以最初选择距接入点106(例如,跨网络108)最小网络距离的数据中心110。网络性能标准可以包括例如时延、跳数、带宽或其组合。一般而言,以最大网络性能标准将分组路由到数据中心110可以有益地提高客户端装置102与数据中心110之间的通信速度。然而,因为网络性能标准不太可能在接入点106与数据中心110之间快速转变,所以简单地将每个分组以最大预期性能标准路由到数据中心110可能无法实现服务提供商所请求的负载平衡。因此,每个流管理器304还可以根据需要修改最初选择的数据中心110,以实现服务提供商的期望负载平衡。例如,在服务提供商希望将最多70%的流量路由到就最小时延或网络距离(例如,跳数)而言最靠近接入点106的数据中心110的情况下,流管理器304可以被配置为在给定的时间段内(例如,每秒)将前7个分组路由到数据中心110,并且将接下来的3个分组路由到替代数据中心110(例如,就网络距离、时延等而言第二最靠近的数据中心110)。虽然此处将百分比作为示例负载平衡标准进行讨论,但是可以使用附加的或替代的标准。例如,服务提供商可以指定要路由到数据中心110的分组总数的上限。
在另一个实施方案中,全局接入点106可以被配置为基于自其接收流量的客户端装置102与初始选择的数据中心110之间的性能标准来初始地选择数据中心110,而不是基于接入点106与数据中心110之间的性能标准来初始地选择数据中心110。有利地,在客户端装置102与数据中心110之间使用网络性能标准可以使得为给定客户端装置102一致地选择数据中心110,而不管客户端装置的流量被路由到的接入点106。在选择初始数据中心110(例如,就距离或最小时延而言最靠近客户端装置102)之后,接入点106可以根据需要修改所述选择以实现由服务提供商指定的负载平衡。例如,如果服务提供商希望不超过70%的流量被路由到初始地选择的数据中心110,并且过去一段时间内的流量比例超过所述百分比,则接入点106可以选择不同数据中心(例如,相对于客户端装置102的次高性能数据中心110)。然后,接入点106可以基于路由到所述不同数据中心110的历史流量的比例来确定请求是否可以被路由到所述不同数据中心110。此过程可以继续,直到接入点106基于服务提供商的负载平衡规范定位可接受的数据中心110。
在一些实施方案中,负载平衡在每个流管理器304处本地实施。在其它实施方案中,跨接入点106的所有流管理器304实施负载平衡。在又其它实施方案中,跨多个接入点106的流管理器304实施负载平衡。一般来说,预期本地化负载平衡的资源密集度较低,因为它需要分布式组件之间的通信较少。然而,较少本地化负载平衡可能导致负载平衡标准更接近服务提供商所期望的标准。
在一些情况下,流管理器304可以实施本地化和非本地化负载平衡的混合。例如,每个流管理器304可以实施本地化负载平衡(例如,本地化到每个管理器304或每个接入点106),并且周期性地与其它接入点106协商以调整在选择数据中心110时应用的权重。例如,在服务提供商请求在数据中心110之间均匀地划分流量的情况下,本地化负载平衡可以使两个接入点106中的每一个在数据中心110之间均匀地划分流量。这可能导致不太理想的路由,因为每个接入点106处的一半流量可能被路由到非最靠近的数据中心110。因此,在这种场景下,接入点106可以关于它们的流量路由进行通信,并且假设每个点106处的量是相等的(并且只考虑两个接入点106),每个接入点106可以开始将它们所有的分组路由到最近的数据中心110。此种划分仍将导致数据中心110之间的流量均匀划分,而且此外有益地增加每个分组流的平均网络性能度量。
在一个实施方案中,服务提供商可以静态地选择路由到给定数据中心110的流量的期望比例或量。例如,服务提供商可以请求将接入点106处不超过70%的请求路由到给定数据中心110。在另一个实施方案中,所需的比例或量可以是动态的。例如,服务提供商可以根据给定的改变率(例如,线性地、指数地、对数地等),指定路由到给定数据中心110的期望比例或量的流量从第一时间点到第二时间点增加或减少。
在选择将流量路由到的数据中心110之后,流管理器304可以选择将流量路由到的数据中心110内的端点202。可以根据任何负载平衡算法来选择端点202。在一个实施方案中,流管理器304可以利用一致散列来选择端点202。
与上文关于流管理器304所讨论的类似,可能希望将给定流的流量一致地路由到同一端点202,使得端点202可以维护关于所述流的状态信息。因此,每个流管理器304可利用流检测算法(类似于上文关于路由器302所讨论的)来检测先前由流管理器302A路由到端点202的流内的后续分组,并且将这些分组路由到同一端点202。在一个实施方案中,在流管理器304将分组识别为已路由流的一部分的情况下,流管理器304可以省略针对分组选择数据中心110和端点202,以支持将分组路由到先前用于流的先前分组的端点202。
在选择将分组路由到的端点202之后,流管理器304可以修改分组以促进到端点202的路由。例如,当在路由器302处接收时,分组的目的地网络地址可以是全局网络地址。因此,流管理器304可以修改分组以用端点202的网络地址替换目的地网络地址。在一个实施方案中,每个流管理器304实施NAT技术以修改寻址到全局网络地址的分组。例如,对于去往端点202的分组,每个流管理器304可以用端点202的网络地址替换全局网络地址作为分组的目的地网络地址,并且用接入点106的地址替换客户端装置102的网络地址作为源地址。根据NAT技术,可以针对来自端点202的要被路由到客户端装置102的分组进行类似的转换。流管理器304可以说明性地使用端口转换(已知的NAT技术)来区分转换的流。在转换之后,流管理器304可以将分组返回到路由器302以通过网络108传输到所选端点202。
在另一个实施方案中,流管理器304可以利用封装来将分组路由到端点202。说明性地,每个流管理器304可以生成到数据中心110内的装置(例如会话切换管理器212或数据中心110内的路由器)的IP“隧道”。为了将分组路由到端点202,流管理器304可以封装分组,并且经由隧道将分组传输到接收装置。然后,接收装置可以解封装分组并将分组传输到端点202。在一个实施方案中,流管理器304用所选端点202的目的地地址替换分组的目的地地址(例如,服务的全局网络地址)以促进向端点传输分组。通过隧道封装分组可以提供益处,例如保存传输分组的客户端装置102的网络地址。因此,即使当客户端装置102的分组通过不同接入点106进行路由时,封装也可以使例如客户端装置102和端点202能够保留面向连接的通信会话。在一些情况下,流管理器304和端点202(或会话切换管理器212)可以被配置为认证彼此之间的通信,以确保在装置之间传输的分组的真实性。例如,流管理器304和端点202(或会话切换管理器212)中的每一个可以被配置为生成认证相应装置的数字签名,并且将此数字签名包括在装置之间流动的封装分组的报头中,使得每个装置可以认证数字签名,以验证分组是在已知装置处生成的。作为另一个示例,流管理器304和端点202(或会话切换管理器212)可以被配置为经由例如传输层安全(TLS)协议的已知安全协议进行通信。
如上所述,接入点106在一些情况下可以被配置为进行面向连接的通信会话的初始化阶段,以减少进行此阶段所需的时间(例如,由于相对于数据中心110,接入点106相对接近客户端装置102)。为了促进此类功能,每个流管理器304可以与客户端一起实施初始化阶段,并将与初始化会话相关的信息提供给数据中心110内的装置,例如端点202或会话切换管理器212。例如,可以经由隧道提供信息。说明性地,流管理器304可以生成到会话切换管理器212的隧道,并且在隧道内传递包括TCP会话状态信息的“TCP切换”命令。状态信息可以包括例如TCP“五元组”(通常定义TCP连接的五个值:源地址、源端口、目的地地址、目的地端口和使用的协议)或其一部分,和/或TCP连接的序列号。在接收到TCP切换命令时,会话切换管理器212可以在其自身的有状态会话表(例如,TCP表)中生成对应条目,从而“采用”面向连接的通信会话。然后,流管理器304可以经由隧道从客户端装置102传输分组,所述分组可以在会话切换管理器212处被解封装并作为所采用的会话的一部分进行处理。在会话切换管理器212用于完成有状态会话的切换的实施方案中,流管理器304可能不需要选择将分组传输到的端点202。相反,流管理器304可以被配置为在所选数据中心110内一致地选择适当的会话切换管理器212作为客户端装置102分组的目的地。会话切换管理器212进而可以选择数据中心110内的端点202。因此,会话切换管理器212的使用可以将选择端点202的责任从流管理器304转移到会话切换管理器212。会话切换管理器212处的端点202的选择可以类似于流管理器304进行的此类选择发生。
除了一个或多个路由器302和流管理器304之外,图2的全局接入点106包括健康状况检查单元306。健康状况检查单元306可以说明性地将健康状况检查传输到流管理器304以便确定此类流管理器304是否出现故障。传输健康状况检查数据可以类似于由数据中心110内的健康状况检查装置204传输健康状况检查数据发生,如上所述。附加地或替代地,健康状况检查单元306可以将健康状况检查数据传输到端点202和/或客户端装置102。接收到的关于端点202的健康状况检查数据可以促进到端点202的路由决定。例如,如果健康状况检查单元306不能与端点202通信,则流管理器304可以停止选择端点202作为流量的目的地,而不管端点202本地的健康状况检查装置204是否将端点202报告为健康的。关于客户端装置102收集的健康状况检查数据可以说明性地用于修改对网络104的装置的可用性公告(例如,BGP公告)。例如,全局接入点106的运营商可以查看客户端装置102相关的健康状况检查数据以调整公告,从而尝试将来自一些装置102的流量重新引导到网络104上与其当前路由到的接入点不同的(例如,更靠近的)接入点106。
图3的全局接入点106还包括配置管理器308,所述配置管理器被配置为接收与和全局网络地址相关联的服务相关的配置信息,并配置全局接入点106的操作以实施此配置。例如,配置管理器308可以接收关于路由器302应该如何向网络104广告全局网络地址的信息、将在数据中心110处可用的服务映射到由接入点106路由的全局网络地址的信息、识别此类服务的数据中心110和端点202的信息、指定此类数据中心110之间的所需负载平衡的信息等。在一个实施方案中,配置管理器308从数据中心110内的配置数据存储装置210中检索配置信息。例如,配置管理器308可以周期性地轮询数据存储装置210以获得新的配置信息。作为另一个示例,数据中心110可以利用各种已知的推送通知技术将配置的改变“推送”到配置管理器308。例如,数据中心110可以实施发布-订阅(“pub/sub”)消息系统,并且配置管理器208可以向系统发布对服务提供商的配置的改变。然后,系统可以将这些改变通知给接入点106的配置管理器308。因此,当服务提供商在数据中心110处修改他们的服务和全局网络地址的配置时,可以将此类修改传播到接入点106。在一个实施方案中,接入点106不将配置信息存储在持久存储装置中(并且可能缺少任何此种持久存储装置),以便降低可能从接入点106获得此类信息的可能性。
虽然上文关于网络可访问服务讨论了示例,但是每个接入点服务器402可以与多个服务相关联。例如,在每个流管理器304的任务是处理寻址到一组此类地址中的全局网络地址子集的分组时,每个流管理器304可以因此处理寻址到与所述子集内的全局网络地址相关联的任何服务的流量。
虽然接入点106的仅一些组件被示为与网络104和108通信,但其它组件可以另外与网络108和/或网络104通信。图3的线并非旨在表示所有实际或潜在的网络连接,而是说明通过接入点106的服务相关流量的可能流。
图2的数据中心110和图3的全局接入点106是在包括一个或多个计算机系统的分布式计算环境中操作的,这些计算机系统使用一个或多个计算机网络(各图中未示出)互连。图2的数据中心110和图3的全局接入点106还可以在具有比相应图中所示的更少或更多数量的装置的计算环境中操作。因此,图2的数据中心110和图3的全局接入点106的描述应被视为说明性的而不是对本公开的限制。例如,图2的数据中心110、图3的全局接入点106或其各种组成部分可以实施各种网络服务组件、托管的或“云”计算环境和/或对等网络配置,以实施本文描述的过程的至少一部分。
图4描绘了用于实施接入点106的流管理器304的示例计算系统(称为接入点服务器402)的一般架构。图4中描绘的接入点服务器402的一般架构包括可以用于实施本公开的各方面的计算机硬件和软件模块的布置。硬件模块可以用物理电子装置来实施,下文将更详细地讨论。接入点服务器402可以包括比图4所示的更多(或更少)的元件。然而,不必示出所有这些通常常规的元件以提供可行的公开。另外,图4中所说明的一般架构可用于实施图2和图3中所说明的其它组件中的一者或多者。如图所示,接入点服务器402包括一个或多个处理单元490、一个或多个网络接口492和一个或多个计算机可读介质驱动器494,所有这些都可以通过通信总线相互通信。网络接口492可以提供到一个或多个网络或计算系统(例如路由器302)(其可以对应于例如市售的路由器装置)的连接性。因此,处理单元490可以经由例如网络104或108的网络从其它计算系统或服务接收信息和指令。处理单元490还可以与存储器480进行通信。
存储器480可以包含处理单元490执行以便实现本公开的一个或多个方面的计算机程序指令(在一些实施方案中分组为模块)。存储器480通常包括随机存取存储器(RAM)、只读存储器(ROM)和/或其它持久性、辅助性或非暂时性计算机可读介质。存储器480可以存储操作系统482,所述操作系统提供由处理单元490在接入点服务器402的一般管理和操作中使用的计算机程序指令。存储器480还可以包括用于实现本公开的各方面的计算机程序指令和其它信息。例如,在一个实施方案中,存储器480包括一个或多个流管理器单元483,每个流管理器单元表示执行以实施图3的流管理器304的代码。每个流管理器单元483可以说明性地与服务器402上的其它单元483隔离。例如,每个单元可能表示单独的虚拟机或隔离的软件容器。在一些情况下,每个单元483可以与单独的处理单元490、接口492或驱动器494相关联,从而将一个单元483的操作影响另一单元483的操作的可能性降至最低。每个单元483说明性地包括端点选择器单元484,表示可执行以选择将寻址到全局网络地址的分组路由到的端点202的代码;流表486,表示将分组的流映射到端点202的信息表;NAT单元488,表示可执行以对寻址到全局网络地址的分组执行NAT或对来自端点202的此类分组作出响应的代码;以及会话切换单元489,表示可执行以进行面向连接的通信会话的初始化阶段并且将所述会话切换到接收装置的代码。虽然图4未示出,但存储器480还说明性地包括封装单元,表示可执行以生成到另一装置的隧道连接从而能够传输封装的分组,并进行封装/解封装以促进此传输的代码。
存储器480还可以包括健康状况检查单元496,其对应于可执行以实施健康状况检查装置306的指令;以及配置管理器单元498,其对应于可执行以实施配置管理器308的指令。在一些实施方案中,健康状况检查装置306和配置管理器308可以实施为独立装置,而不是实施为接入点服务器402的一部分。此外,虽然被示为与接入点服务器402不同,但路由器302在一些情况下可以被并入服务器402中(例如,通过在存储器480中包括可执行以实施路由功能的软件)。
在一个实施方案中,接入点服务器402没有任何非易失性存储器,并且被配置为仅相对于易失性存储器(例如RAM)进行操作。说明性地,接入点服务器402可以被配置为使用预引导执行环境(PXE),使得在初始化时,接入点服务器402从网络可访问的存储位置(例如,配置数据存储装置210)检索存储器480的至少一部分内容,例如操作系统482、健康状况检查单元496和配置管理器单元498。此后,配置管理器单元498可以从网络可访问的存储位置检索附加配置信息,例如个别服务的配置和相关联的全局网络地址,并且利用此类附加信息来生成流管理器单元483。为了防止存储器480的内容的未授权公开,在存储位置处服务器402的认证可以至少部分地链接到服务器402的网络位置(例如,在接入点106处),使得尝试物理重新定位服务器402将导致无法检索存储器408的内容。
虽然图4描绘了单个服务器402和路由器302,但在一些情况下,全局接入点106可以由多个服务器402和/或路由器302实施。在一些情况下,此类服务器402或路由器302可以在物理上或逻辑上隔离,以避免在此类服务器402或路由器302之间传播错误。说明性地,在接入点106处理多个网络地址池的情况下,每个池可以由不同的服务器402和路由器302处理。因此,如果一个路由器302和/或服务器402发生故障,则预期仅与由所述路由器302和/或服务器402处理的池相关联的服务会受到影响。
参考图5,将描述说明性交互,其描绘了单独额全局接入点106A如何可以通过提供使用全局网络地址到达网络可访问服务的多条路由而有弹性地操作。图5描绘了环境500,所述环境又可以表示图1的环境100的一部分的实施方案。具体地,在环境500中,网络104被划分为网络104A-E,每个网络可以表示例如自主系统。网络104A-C被示为与客户端装置102通信。这些网络104A-C可以表示例如客户端装置102的互联网服务提供商(ISP)。网络104D和104E表示全局接入点106A与其进行网络连接的其它AS。虽然网络104D和104E在图5中未示出为连接到客户端装置102,但此类网络也可以充当客户端装置102的ISP。网络104A-E中的每一个在图5中示出为与其它网络104A-E互连。此配置是说明性的并且可能因实施方式而异。
在图5的说明中,客户端装置102通常具有通过其到达全局接入点106A的两条路由:经由网络104D和104E。为了增加对全局接入点106A的接入的弹性,接入点106A可以选择性地向网络104D和104E传输可用性公告。具体来说,如图5所示,在(1)处,全局接入点106A可以识别至少两组全局网络地址,例如两个连续范围的网络地址。此后,全局接入点106A在(2)处向网络104D传输针对第一网络组的广告(例如,BGP公告),而不是向网络104D和104E两者广告所有全局网络地址。类似地,在(3)处,全局接入点106A向网络104E传输针对第二网络组的广告(例如,BGP公告)。以此方式,寻址到第一网络组内的地址的流量很可能通过网络104D到达接入点106A,而寻址到第二网络组内的地址的流量很可能通过网络104E到达接入点106A。每个服务可以与至少两个组的全局网络地址相关联。因此,如果在网络104D或104E中的任一个上发生错误或问题,则客户端装置102可以利用服务的替代全局网络地址以便通过剩余网络访问全局接入点106A。
参考图6,将描述针对全局接入点106的操作以促进客户端装置102与为网络可访问服务提供端点202的数据中心110之间的通信的说明性交互。图6的交互开始于(1)处,其中客户端装置102向全局接入点106A传输数据分组,所述数据分组寻址到与全局接入点106A相关联的全局网络地址。数据分组可以例如根据传输控制协议(TCP)、用户数据报协议(UDP)或互联网控制消息协议(ICMP)进行格式化。基于全局接入点106A的指示分组寻址到的全局网络地址可经由全局接入点106A到达的广告,数据分组可以经由网络104传输,并且经由网络104的操作路由到全局接入点106A。例如,全局接入点106A可以是距客户端装置102最近的(例如,在网络距离方面)全局接入点106。
在接收到数据分组时,全局接入点106A内的路由器302将分组分配给接入点106内的流管理器304。在数据分组不与现有数据流相关联的情况下,路由器302可以利用ECMP负载平衡来基于分组寻址到的网络地址将数据分组分配给流管理器304。在数据分组与现有数据流相关联的情况下,路由器302可以将分组路由到流内的先前分组被路由到的同一流管理器304。
在(2)处,接入点106A内的流管理器304将数据分组分配给数据中心110。在数据分组不与现有数据流相关联的情况下,流管理器304可以对数据分组应用负载平衡算法,以从可用数据中心110的集合中选择数据中心110。算法可以包括例如初始地选择在网络性能标准方面相对于客户端装置102(或替代地,全局接入点106A)性能最高的数据中心110,并在最近的数据中心110在过去的时间段内接收到大于阈值的量(例如,绝对量或百分比)或数据分组的情况下选择替代数据中心110(例如,下一个性能最高)。在一个实施方案中,基于与客户端装置102和数据中心110之间的性能标准相关的当前信息,每个接入点106A在选择数据中心110时实施相同的算法。此外,可以使一组公共性能标准可用于每个接入点106(例如,从配置数据存储装置210内)。因此,如果数据中心110的性能标准或负载没有变化,则将客户端装置102数据分组路由到数据中心110在接入点106之间可以是一致的。以这种方式,即使当客户端装置102的数据分组被重新路由到不同接入点106时,它们也可以被路由到相同的数据中心110。在数据分组与现有数据流相关联的情况下,流管理器304可以将分组路由到流内的先前分组被路由到的同一数据中心110。
在选择数据中心110之后,流管理器304可以选择所选数据中心120内的端点202。流管理器304可以说明性地为给定数据中心110维护一组端点202,这些端点提供与数据分组寻址到的全局网络地址相关联的网络可访问服务。在一个实施方案中,可以基于从数据中心110内的资源管理器206接收的信息来识别这组端点202。流管理器304还可以维护关于端点202的明显健康状况的信息,如从数据中心110内的健康状况检查装置204、接入点106A内的健康状况检查单元306或两者获得的。因此,流管理器304可以从一组端点202中为与分组被寻址到的网络地址相关联的服务选择健康端点。流管理器304可以利用许多已知的负载平衡算法中的任何一种(例如一致散列)来在端点202之间分布分组。在分组与现有分组流相关联的情况下,流管理器304可以选择流中的先前分组已经被路由到的相同端点202。
在选择端点之后,接入点106A内的流管理器304根据需要修改分组以将分组路由到所选端点202。具体地,在图6的实施方案中,流管理器304在(5)处例如通过替换分组的源网络地址和目的地网络地址而对分组应用NAT技术。此后,在(6)处,流管理器304将分组传输到所选数据中心110内的所选端点202。
在(7)处,端点202根据网络可访问服务处理分组。然后,端点202向全局接入点106A返回响应分组。当响应分组与现有数据流相关联时,接入点106A内的路由器302将响应分组引导至上文描述的相同的流管理器304。流管理器304反转先前的NAT转变,以便将分组寻址到客户端装置102。然后,流管理器304将数据分组返回给客户端102。因此,经由图6的交互,客户端装置102可以将数据分组寻址到全局网络地址,并且被路由(经由全局接入点106)到提供与网络地址相关的网络可访问服务的端点。根据服务提供商的期望配置,接入点106可以对分组应用负载平衡,使得服务上的负载分布在数据中心110之间。
参考图7,将描述用于将端点信息从数据中心110A传播到全局接入点106,使得接入点106可以正确地路由来自客户端装置102的寻址到全局网络地址的流量的说明性交互。将关于单个数据中心110A描述图7的交互。然而,相对于其它数据中心110,可能同时发生类似的交互。
图7的交互开始于(1)处,其中数据中心110A的资源管理器206检测端点池201内的端点缩放事件。端点缩放事件说明性地对应于“放大”或“缩小”事件,从而指示添加端点202或从池201中移除所述端点。在一些情况下,缩放事件还可以包括替换池201中的端点202。缩放事件可以说明性地由于池201上的负载落在期望阈值之外或者由于池201内的端点202的故障而发生。在(2)处,资源管理器206根据缩放事件向池201传输指令以更改池配置。例如,资源管理器206可以指示池201添加新的端点202、移除现有端点202或其组合。说明性地,缩放池201可以包括向主机装置传输指令以添加或移除执行对应于端点202的软件的虚拟机实例(例如,使与池201相关的网络可访问服务可用)。
在(3)处,池201通知资源管理器206对池201的修改,包括例如添加到池201的任何端点202的网络地址。在(4)处,资源管理器206向配置管理器208通知对池201的任何网络地址修改。可以根据本公开利用多种技术来促进资源管理器206与配置管理器208之间的信息传输。优选地,这种通信将快速发生(例如,在几毫秒或几秒内),使得访问网络可访问服务的未来请求被路由到可用端点202,而不是故障或不可用端点202。在一个实施方案中,通过发布/订阅消息系统、流数据处理系统或它们的组合来促进这种快速通信。说明性地,资源管理器206可以在与池201提供的网络可访问服务相关联的消息流内发布对池201的端点202的修改。配置管理器208可以被配置为通过周期性地轮询这些消息(例如,以每1秒、2秒、3秒等的频率)或者通过由消息处理系统接收此类消息的“推送”通知来检索流的新消息。使用发布/订阅消息系统或流数据处理系统可以有益地在资源管理器206与配置管理器208之间提供高弹性、快速的消息传递。虽然参考对网络地址的改变进行描述,但发布/订阅消息系统或流数据处理系统可用于促进关于对全局接入点106的配置的其它改变的通信。
在检测到池201的网络地址的改变时,配置管理器208可以修改全局接入点106的配置以反映这些变化,如下详述。虽然下文的交互是参考池201内的网络地址的更改来描述的,但是可以利用相同或相似的交互来将其它配置改变传播到接入点106。
具体地,在(5)处,在确定池201内的端点202的网络地址的改变之后,配置管理器208为全局接入点106构建修改的配置分组(或分组内的包)。修改的配置分组(或包)可以说明性地反映对池201的网络地址的改变,以及自从配置分组(或包)的最后构建以来对全局接入点106的配置的任何其它改变。在一个实施方案中,配置分组(或包)仅反映自分组(或包)的上一版本以来的变化。在另一个实施方案中,分组(或包)反映分组(或包)中的所有相关配置信息。在(6)处,配置管理器208将修改的配置分组(或包)存储在数据存储装置210中以供全局接入点106检索。
如上所述,在一个实施方案中,每个全局接入点106被配置为针对其配置分组(或其包)的改变周期性地轮询配置数据存储装置210。因此,在(7)处,每个全局接入点106可以确定修改的分组(或包)存在于数据存储装置210中,并且检索所述分组(或包)。然后,每个接入点106可以在(8)处更新其配置(例如,随着池201内的网络地址的改变),使得未来的请求被路由到池201内的正确端点202。因此,图7的说明性交互可以促进例如响应于端点池201的修改而对全局接入点106的配置的快速修改。
参考图8,将描述说明性例程800,以通过选择对不同相邻装置的地址广告来增加全局网络地址的弹性。例程800可以说明性地由全局接入点106实施(例如,在接入点106的初始化期间)。在一个实施方案中,例程800的实例由每个接入点106实施。
例程800开始于块804,其中获得要经由接入点106服务的全局网络地址。此信息可以说明性地作为接入点106的配置的一部分获得,例如在存储于配置数据存储装置210中的配置文件内,在接入点106的初始化期间获得。全局网络地址可以在配置中说明性地划分为不同的寻址池。例如,每个池可以包括不同的网络地址“块”,例如连续的地址范围。例如,范围可以表示“子网”。在一个实施方案中,范围由“前缀”表示,表示所述范围中网络地址的前n位。例如,前缀192.0.2.0/24(以无类域间路由或CIDR表示)可以表示IPv4地址的前24位,对应于192.0.2.0到192.0.2.255范围内的地址。
在块808,接入点106选择要向其广告每个网络地址池的相邻装置。通常,可用池可以在可用的相邻装置之间划分,以便提供从其到达接入点的不同网络路径。在一个实施方案中,这种选择基于接入点106的配置内的规范。在另一个实施方案中,这种选择由接入点106确定。说明性地,接入点106可以在可用的相邻装置(其可以例如通过典型的路由协议被发现)之间均匀地划分池。在一些情况下,可以另外地基于流量的优选路由来确定相邻装置。例如,接入点106可以被配置为不在给定的相邻装置上广告给定的网络地址池,以便使所述相邻装置将对池内的地址的请求路由到替代接入点106。
此后,在块810,全局接入点106向相关相邻装置传输针对相应网络地址池的可用性公告。例如,公告可以是BGP协议公告。BGP协议公告的传输通常是本领域已知的,因此在此将不再详细描述。
如上所述,将全局网络地址划分为池并将这些池广告给不同的相邻装置可以有益地提高接入点106的弹性,特别是对于相邻网络上的中断或错误的弹性。具体地,因为每个网络可访问服务可以与不同池的全局网络地址相关联(例如,每个池一个),所以可以使服务的客户端装置102知道(例如,经由DNS)用于到达服务的多个路由。此技术还可以提高接入点106的弹性以限制接入点106处的中断,例如连接到相邻网络的网络接口或路由器的中断。如上所述,在一个实施方案中,通过将每个池划分成网络地址子集来进一步提高每个服务的弹性,网络地址子集又可以分布在接入点106的流管理器304之间。服务和每个子集之间的关联可以在池之间“改组”。例如,可以随机选择给定池中服务的全局网络地址,或者可以经由针对每个池的不同选择机制来选择所述全局网络地址。这可使得子集中的服务分组在池之间“改组”。以这种方式,如果单独服务的配置对子集中的其它服务而言有问题,则受所述错误配置影响的其它服务可能会因池而异。因为预期每个服务可经由多个池中的地址访问,所以客户端装置102可以经由替代池的替代地址连接到每个其它服务,从而绕过有问题的子集和池。因此,这种改组机制可以极大地提高使用全局网络地址的服务的弹性。
参考图9,将描述用于路由寻址到与由数据中心110内的端点202提供的服务相关联的全局网络地址的流量的说明性例程900。例程900可以说明性地由接入点106内的流管理器304实施。在一个实施方案中,例程900的实例由每个接入点106的每个流管理区304实施。
例程900开始于块902,其中流管理器304接收寻址到被广告为在接入点106可访问的全局网络地址的数据分组。例如,数据分组可以表示对访问经由网络地址可访问的网络可访问服务的请求。在一个示例中,数据分组被格式化为TCP或UDP数据分组。
在块903,例程900根据数据分组是否与现有分组流相关联而变化,如在块903处确定。说明性地,接入点106可以将数据分组的属性与先前分组的属性进行比较,以确定新数据分组是否与先前分组在相同的通信流内。可以使用任意数量的流识别技术(其中多种在本领域中是已知的)确定数据分组是否在现有流内。
如果分组是现有流的一部分,则例程900进行到块913,其中流管理器304选择为流内的先前分组选择的相同端点202作为所述分组的端点202。在一个实施方案中,每个流管理器304可以在存储器中维护将流关联到端点202的高速缓存,以促进此选择。
如果分组不是现有流的一部分,则例程900前进到块904,其中流管理器304识别与分组被寻址到的网络地址相关联的网络可访问服务。流管理器304可以说明性地访问将网络地址映射到相关服务(例如,如在接入点106的存储器中所维护)的信息以识别与所述地址相关联的服务。
此后,在块906,接入点106选择提供网络可访问服务的数据中心110。在一个实施方案中,至少部分地基于接入点106与数据中心110之间的网络性能标准以及网络可访问服务的负载平衡配置来选择数据中心110。说明性地,流管理器304初始地可以选择性能最高的(就相对于客户端装置102或接入点106的给定网络性能标准而言)数据中心110。然后,基于服务的跨数据中心110的期望负载平衡,流管理器304可以确定在过去的时间段内(例如,1分钟、5分钟、30分钟等)路由到数据中心110的分组的比例是否超过数据中心110的阈值期望最大值。在一个实施方案中,阈值期望最大值可以例如由服务提供商例如经由要路由到每个数据中心110的流量的期望百分比来指定。在另一个实施方案中,阈值期望最大值可以由多个接入点106协作确定,使得每个接入点106的组合阈值实现数据中心110之间的服务提供商的期望划分。例如,接入点106可以实施对等算法,所述算法将流量量聚合到跨接入点106的服务,并确定寻址基于到每个数据分组的接入点106的针对所述分组的最佳路由(以及针对每个数据中心110的对应网络性能标准)。然后,所述算法可以根据需要修改每个接入点106的最佳路由以实施全局优化路由,从而为每个接入点106在数据中心110之间产生个性化的期望比例。因此,每个接入点106可以实施这种个性化的期望比例以确定在过去的时间段(例如,1分钟、5分钟、30分钟等)内路由到初始选择的数据中心110的分组的比例是否超过数据中心110的阈值期望最大值。如果是,则接入点可以将初始选择修改为替代数据中心,例如下一个最近的数据中心。在一个实施方案中,针对每个选择的数据中心110重复块906的实施,以确保没有数据中心接收到大于数据分组的期望最大比例或量。
在选择数据中心110之后,流管理器304选择数据中心110内的将数据分组路由到的端点202。在一个实施方案中,流管理器304可以基于分组的属性(例如,源IP地址)利用一致散列来选择端点202。
此后,在块910,流管理器304对数据分组应用NAT。说明性地,流管理器304可以用全局接入点106的地址(例如,单播地址,而不是全局网络地址)替换数据分组的源地址,并且用端点202的地址(也可以是端点202的单播地址)替换目的地地址。流管理器304还可以例如修改分组的端口号,以促进NAT技术随后应用于流内的分组。然后,流管理器304可以将分组传输到所选端点202。然后,例程900可以在块914处结束。
本文考虑了对例程900的各种修改。例如,虽然例程900包括与为与现有流不相关联的分组选择端点202相关的三个块(块904、906或908),但是例程900的一些实施方式可以排除这些块中的一个或多个。说明性地,流管理器304可以维护将网络地址映射到数据中心110和与所述地址相关联的端点202的数据,而不是分别识别服务和与所述服务相关的数据中心。然后,流管理器304可以基于上述标准选择数据中心110,而无需直接识别与地址相关联的服务。在其它实施方案中,流管理器304可以仅维护将网络地址关联到对应端点202的数据,并且可以直接为分组选择端点202,而无需首先识别与地址关联的服务或提供服务的数据中心110。例如,通过选择具有最佳性能标准值的端点202,并且在端点202正在接收超过期望比例的数据量的情况下修改所述选择,可以以类似于上述数据中心110的方式选择每个端点202。此外,虽然例程900在图9中示为在块914处结束,但流管理器304可以在例程900之后继续进行其它动作,例如充当用于客户端装置102与端点202之间的通信的NAT装置。因此,图9中例程900的描述是本文公开的概念的一个实施方案。
参考图10,将描述用于在全局接入点106处更新关于提供网络可访问服务的数据中心110的端点202的信息的说明性例程1000。例程1000可以说明性地由数据中心110内的资源管理器206实施。在一个实施方案中,例程900的实例由每个数据中心的每个资源管理器206实施。
例程1000开始于块1002,其中数据中心110A的资源管理器206检测端点池201内的端点缩放事件。端点缩放事件说明性地对应于“放大”或“缩小”事件,从而指示添加端点202或从池201中移除所述端点。在一些情况下,缩放事件还可以包括替换池201中的端点202。缩放事件可以说明性地由于池201上的负载落在期望阈值之外或者由于池201内的端点202的故障而发生。
在块1004,资源管理器206基于检测到的缩放事件更改池配置。说明性地,资源管理器206可以根据缩放事件向池201传输指令以更改池配置。例如,资源管理器206可以指示池201添加新的端点202、移除现有端点202或其组合。说明性地,缩放池201可以包括向主机装置传输指令以添加或移除执行对应于端点202的软件的虚拟机实例(例如,使与池201相关的网络可访问服务可用)。
在块1006,资源管理器206从池301获得添加到池201或从所述池移除的任何端点202的网络地址。此外,在块1008,资源管理器206向全局接入点106通知对池201的任何网络地址修改。如上所述,在一些情况下,可以经由对接入点106的配置分组(或包)的更改来传输通知。因此,全局接入点106可以更新它们对于与池201相关的网络可访问服务的端点可用性,使得访问网络可访问服务的未来请求可以被路由到池201中的可用端点202。然后,例程1000可以在块1010处结束。
参考图11,将描述用于在全局接入点106A处进行面向连接的通信会话的初始化阶段并将会话切换到数据中心110内的装置从而减少建立此会话所需的时间的说明性交互。例如,可以通过接入点106的流管理器304实施图11的交互。将关于单个接入点106A和数据中心110A描述图11的交互。然而,对于其它接入点106和数据中心110,可能同时发生类似的交互。此外,将关于特定类型的面向连接的通信会话:TCP会话描述图11的交互。对于其它面向连接的通信会话,可能会发生类似的交互。
图11的交互从(1)开始,其中客户端装置102尝试通过传输寻址到服务的全局网络地址的TCP SYN分组来发起与网络服务的面向连接的通信会话。根据上述功能,将TCP SYN分组传输到全局接入点106A,如图11所示。TCP SYN分组说明性地包括客户端装置102的序列号。
在(2)处,全局接入点106A的流管理器304通过向客户端装置102返回说明性地包括接入点106A的序列号的TCP SYN-ACK分组(以及确认客户端装置102的序列号)来继续TCP三向握手。在(3)处,客户端装置102通过向接入点106A返回TCP ACK分组、确认接入点106A的序列号来继续TCP三向握手。在接收到TCP ACK分组时,在客户端装置102与全局接入点106A之间发起TCP会话。因为预期接入点106A在客户端装置102附近(例如,在时延方面),所以预期相对于在客户端装置102与端点202之间进行初始化阶段,交互(1)至(3)快速完成。
在(4)处,客户端装置102(应理解,TCP会话已经用服务初始化)在TCP会话内传输寻址到服务的全局网络地址的数据分组。将数据分组路由到全局接入点106A,所述全局接入点在(5)处选择将分组路由到的数据中心110。数据中心的选择可以以与上述相同的方式发生(例如,作为图6的交互(3))。接入点106还在(6)处封装数据分组以经由隧道传输到所选数据中心110(在此实例中,数据中心110A)。在图11的交互中,假设接入点106A先前已经建立了到数据中心110A(例如,到数据中心110A的会话切换管理器212)的隧道。例如,接入点106A可以维持到数据中心110A的一个或多个空闲TCP隧道,以用于向数据中心110传输的分组。然而,可以包括附加交互,其中全局接入点106A建立到数据中心110A的隧道(例如,UDP或TCP隧道)。为了便于建立的TCP会话的切换,封装的数据分组还说明性地包括TCP会话状态信息,例如TCP会话的五元组和会话的序列号。在图11中说明性描绘的实施方案中,包括会话状态信息包括为封装的数据分组的报头信息。在(7)处,全局接入点106A将封装的分组传输到数据中心110A(例如,到数据中心110A内的会话切换管理器212)。
在(8)处,在接收到封装的分组时,数据中心110A内的装置(例如,会话切换管理器212,或在一些情况下,端点202)通过将封装的分组内(例如,在报头内)指示的信息添加到其自身的TCP会话状态表来采用TCP会话。然后,在(9)处,装置对客户端装置102的分组进行解封装,并且在(10)处对其进行处理,就好像它在装置处直接接收到一样。例如,在装置是端点202的情况下,端点202可以根据客户端装置102请求的服务来处理分组的数据。在装置是会话切换管理器212的情况下,管理器212可以通过识别端点202以服务分组(例如,以类似于图6的交互(4)的方式)来处理分组,并利用端点202服务分组。说明性地,因为会话切换管理器212(并且在这种情况下不是端点202)是与客户端装置102的TCP连接的一方,所以管理器212可以发起与端点202的第二TCP连接,并且经由第二TCP会话将客户端装置102的分组内的数据传递到端点202。管理器212可以继续作为客户端装置102与端点202之间的代理来操作以用于未来通信。例如,管理器212可以从端点202获得响应并且促进经由与客户端装置102的TCP会话将响应传输到客户端装置102。
在(11)处,数据中心110A内的装置例如经由隧道向全局接入点106A传输响应分组。交互(11)可以包括例如封装响应分组以用于经由隧道传输。然后,全局接入点106A在(12)处将响应分组转发到客户端装置102。交互(12)可以包括例如对响应分组解封装以传输到客户端装置102。客户端装置102与数据中心110A内的端点202之间的进一步通信可以以与上述交互(4)到(7)和(9)到(12)类似的方式发生。因此,客户端装置102可以经由TCP会话与数据中心110A通信,而不需要实际上完成与数据中心110A的装置的会话的初始化阶段。
虽然图11描绘了说明性交互,但是这些交互可以在实施方案之间变化。例如,虽然在图11中将响应分组描绘为通过全局接入点106A,但在一些情况下,端点202可以被配置为直接响应客户端装置102,而响应不通过接入点106A。例如,端点202(或管理器212)可以将响应分组直接传输到客户端装置102(例如,通过网络104),而不是封装响应分组并将其传输到接入点106A,从而避免对封装的需要。作为另一种变体,虽然会话信息在图11中被描述为包括在封装的数据分组中,但在其它实施方案中,会话状态信息可包括在单独的分组中。例如,全局接入点106A可以被配置为在进行通信会话的初始化阶段之后,例如在对数据中心110A的“会话采用”命令中单独地向数据中心110A传输会话状态信息。作为又一变型,虽然上文将管理器212讨论为选择数据中心110A内的端点202来服务客户端装置102,但在一些情况下,接入点106可以选择此端点202,即使在使用管理器212的情况下。例如,接入点106可以选择端点202,并且通知管理器212已经选择了哪个端点(例如,封装的分组的报头中)。在全局接入点106选择要将分组路由到的端点202的情况下,接入点106可以修改分组以促进到端点202的路由。例如,接入点106可以在分组的目的地地址字段内用端点202的网络地址(例如,“单播”地址)替换服务的全局网络地址。因此,图11的交互旨在本质为说明性的。
虽然图11的交互描绘了客户端装置102与单个全局接入点106A的交互,但在一些情况下,客户端装置102可以与多个全局接入点106交互。如上所述,每个全局接入点106可以被配置为在不受全局接入点106的控制的情况下向公共网络(例如,网络104)广告全局网络地址。因此,此网络上的装置通常可以确定寻址到全局网络地址的客户端装置102的分组被路由到的接入点106。在一些配置中,将给定分组流内的分组重新路由到不同全局接入点106会不利地影响客户端装置102的通信。例如,在客户端装置102建立需要在个别接入点106处维护状态信息的TCP连接(例如,与接入点106的TCP连接或通过接入点106进行的NAT)的情况下,客户端装置102与不同接入点106的通信的重新路由可能会不希望地中断所述连接。
图11的交互通过使客户端装置102与端点202(或会话切换管理器212)之间的TCP连接即使在发生客户端装置102分组到不同接入点106的重新路由时也能够被维持而解决了这种情况。具体地,每个接入点106可以被配置为在选择将客户端装置102的分组路由到的数据中心110或端点202时应用相同的负载平衡标准。此类负载平衡标准可以是接入点106不可知的(例如,无论应用它的接入点106如何都是不变的)。例如,负载平衡标准可以反映客户端装置102与数据中心110之间的时延,以及数据中心110(或其中的端点202)的健康状况,而与去往或来自接入点106的时延无关。因此,可以预期每个接入点106将给定的客户端装置102的分组路由到相同的数据中心110。因此,例如,如果客户端装置102向第二接入点106传输附加分组,则第二接入点106将应用相同的负载平衡标准以将数据中心110A选择为所述分组的目的地。然后,第二接入点106将分组路由到端点202(或会话切换管理器212),所述端点将以与已经通过接入点106A路由的相同方式处理所述分组。因为图11的交互不需要在接入点106A处维护状态信息,并且因为图11的封装机制在封装的分组内维护客户端装置102的源网络地址,所以不会发生面向连接的通信会话(例如,TCP会话)的中断。因此,图11的交互解决了在利用任播技术塑造面向连接的通信会话的路由时会出现的重新路由问题。
参考图12,将描述用于在全局接入点106A处初始化面向连接的通信会话以及将会话切换到数据中心110内的管理器212的说明性例程1200。例程1200在全局接入点106A与到管理器212的会话之间说明性地协作实施,且因此例程1200的框在这些装置之间划分。虽然例程1200的部分被描绘为由管理器212实施,但在一些情况下,这些部分可以替代地直接在端点202内实施。
例程1200开始于块1202,其中接入点106(例如,流管理器304)获得寻址到服务的全局网络地址的请求以发起与服务的面向连接的通信会话。例如,请求可以是TCP SYN分组。
在块1204,接入点106根据用于会话的特定协议完成会话的初始化阶段。例如,在协议是TCP的情况下,初始化阶段可以包括与客户端装置102进行三向握手。
在块1206,接入点106在会话内从客户端装置102接收数据分组。例如,分组可以是TCP会话内的有效负载分组。
在块1208,接入点106封装数据分组,用于经由网络隧道传输到管理器212。接入点106还包括在封装的分组(例如,作为封装的分组的报头信息)中的用于通信会话的会话上下文,例如TCP五元组和序列号。然后,在块1210,接入点106将分组发送到切换管理器212作为通信会话的切换请求。
在块1212,切换管理器212接收封装的分组,并且在块1214,基于来自接入点106的上下文信息,在其本地数据内构建通信会话。管理器212因此采用会话,从而实现客户端装置102与管理器212之间的会话内的后续通信。在块1216,切换管理器212对客户端装置102的数据分组解封装,并在会话内处理所述分组。例如,管理器212可以选择端点202来处理请求,并将数据分组的内容经由另一通信会话传输到端点202。然后,例程1200在块1218处结束。因此,客户端装置102和管理器212可以经由有状态会话进行通信,而需要客户端装置102和管理器21进行通信以建立会话。
例程1200可以包括除上述那些块之外的附加或替代块。例如,在块1210发送封装的分组作为切换请求之前,接入点106可以以类似于图9中讨论的选择数据中心的方式选择数据中心来接收切换请求。此外,虽然例程1200被描绘为在块1216之后结束,但是接入点106和管理器212可以继续操作以促进会话内的客户端装置120的通信或到所述客户端装置的通信,如上所述。因此,图12中的块的数量和布置本质上是说明性的。
在全局接入点内提供冗余路由控制
如上所述,全局接入点106可以结合冗余元件以增加接入点106对故障的弹性。例如,接入点106可以跨多个主机计算装置实施。然而,在一些情况下,简单的冗余可能导致接入点106的不希望的操作。例如,如上所述,通常希望将给定流内的所有数据分组路由到相同的流管理器304(例如,以实现一致的NAT转换)。用于确保一致路由的一种机制是提供确定哪个流管理器304应该接收给定流量流的单个路由控制器。然而,所述路由控制器的故障随后将导致接入点106的故障。为了解决这个问题,接入点106可以包括多个路由控制器,每个路由控制器被配置为确定分组到流管理器304的路由。然而,在路由控制器不具有流管理器304状态的一致意见的情况下(这在故障场景中尤其可能),多个路由控制器可以向给定的网络地址范围分配不同的流管理器304,从而产生寻址到所述范围的潜在“扰乱”流。
为了解决这个问题,本公开的实施方案可以包括多个路由控制器,同时实施一致性技术以确保在接入点106处实施由单个控制器(通常称为“主导”控制器)进行的路由决策。因为在给定时间仅实施一组路由,因此可以避免由于不一致的路由决策而导致的流扰乱。此外,如下文将详细描述,由路由控制器实施的一致性技术可以提供路由之间的简化优先级确定,使得在全局接入点106内采用指定的主导控制器的路由,即使另一个(例如,发生故障的)路由控制器尝试实施不一致的路由。因此,本文描述的实施方案可以实现全局接入点106内路由控制器的高效和无冲突实施。
图13描绘了全局接入点106利用冗余路由控制器1302将流管理器304分配给全局网络地址并根据这些分配控制数据分组到流管理器304的路由的实施方案。更具体地,在图13中,全局接入点106的功能分布在多个主机装置1306A-N之间,每个主机装置与路由器302通信(例如,经由直接电缆连接、内部网络等)。每个主机装置1306可以对应于例如图4的接入点服务器402,所述接入点服务器被配置为实施一个或多个流管理器304、健康状况检查单元306和配置管理器308,以上更详细地描述了其中的每一个。另外,每个主机装置1306实施路由控制器1302(例如,作为服务器402的存储器480内的单元)。一般而言,每个路由控制器1302可以负责确定特定网络地址到流管理器304的分配。例如,如上所述,由接入点106服务的全局网络地址可以被划分为池(例如,给定地址范围),并且池还可以被划分为子集。因此,可以将每个池的每个子集分配给一个或多个流管理器304,使得流管理器304处理寻址分组的处理器,所述分组寻址到它们被分配到的子集。在一个实施方案中,每个路由控制器1302利用负载平衡来将子集网络地址分配给流管理器304。例如,负载平衡可以尝试基于每个流管理器304处理的网络地址的数量、寻址到此类地址的分组的量、在所述分组的量内的数据量(例如,聚合由分组携带的数据)等将网络地址分布到流管理器304。
在一个实施方案中,每个流管理器304与接入点106的特定网络地址(例如,内部网络地址)相关联。因此,向流管理器304分配全局网络地址可以采用全局网络地址与流管理器304的网络地址之间的映射的形式。例如,在地址范围192.0.2.0/24被分配给地址10.0.0.1到10.0.0.4的四个流管理器304的情况下,路由控制器1302可以生成映射,所述映射指示寻址到范围192.0.2.0/24中的地址的分组的“下一跳”可以寻址到地址10.0.0.1-4中的一个。此映射可以由路由控制器1302提供给路由器302,从而使路由器302能够使用ECMP路由技术将分组路由到四个分配的流管理器304中的一个。为了提供操作冗余,每个路由控制器1302可以跨所有流管理器304操作,包括在其它主机装置1306上的那些。因此,即使n-1个路由控制器1302发生故障,也可以预期接入点106的操作。
在另一个实施方案中,每组网络地址(例如,每个池的每个子集)可以被预先配置为与特定组的流管理器304相关联。与每组相关联的流管理器304可以分布在主机装置1306上,以在主机装置1306发生故障的情况下提供接入点106的操作弹性。在此实施方案中,路由器控制器1302可以用于负责将寻址到一组地址内的网络地址的分组路由到与所述组相关联的流管理器304。例如,在分配八个流管理器304负责192.0.2.0/24范围内的网络地址的情况下,路由控制器1302可以将192.0.2.1地址分配给第一流管理器304,将192.0.2.2地址分配给第二流管理器304等。路由控制器1302可以利用流管理器304的健康状况检查数据来协助分配(例如,为了避免分配给不起作用的管理器304,减少重负载管理器304上的负载等)。可以使用任何数量的负载平衡技术(其中多种在本领域中是已知的)将网络地址分配给流管理器304。
因为接入点106可以被配置为弹性地操作,所以可以预期在接入点106的操作期间一个或多个流管理器304可能发生故障。因此,为了保持适当的负载平衡,可能需要改变对流管理器304的全局网络地址的分配。如果路由控制器1302被配置为冗余地且独立地操作,则不同的路由控制器1302可能以不同方式改变那些分配。每个路由控制器可以将它们各自的分配传输到路由器302,导致在路由器302处的信息冲突,从路由器302的角度来看,每组信息似乎同样有效(假设接入点106内的路由控制器1302具有相同的性质)。尽管处理这种冲突信息的机制可能会有所不同,但路由器302通常不希望接收此类冲突信息。例如,在路由器302被配置为合并冲突信息的情况下(例如,通过联合操作,这在处理BGP通信中很常见,所述路由器302和路由控制器1302可以用于通信),流管理器304之间的负载平衡可能受影响,因为从路由器302的角度来看,将向给定范围的网络地址分配多于预期数量的流管理器304。
解决这个问题的一种尝试可以是确保每个路由控制器1302同步操作。然而,在分布式系统中,同步操作在实践中是困难的。例如,即使在每个路由控制器1302实施相同的确定性负载平衡算法的情况下,也几乎不能保证路由控制器1302将始终如一地保持对接入点106的相同观点。例如,第一路由控制器1302与给定流管理器304之间的网络故障可能导致第一路由控制器1302认为所述流管理器304已经发生故障。然而,流管理器304与第二路由控制器1302之间没有这种故障可能会使得第二控制器1302认为管理器304是可操作的。接入点106的这些不同观点将导致管理器304之间不同的负载平衡,即使两个控制器1302都实施了一致的算法。虽然路由控制器1302之间的显式通信也可以解决这个问题,但是这种通信通常会在接入点106内增加大量开销,从而需要大量时间来达到普遍同意的“世界状态”,这将导致非发散映射。
用于处理冲突信息的另一种机制可以是为在路由控制器1302处生成的映射分配优先级,使得当在路由器302处接收到不一致信息时,路由器302选择具有最高优先级的映射。然而,如果最高优先级控制器1302发生故障,则在路由控制器1302之间一致地分配优先级可能导致故障。允许路由控制器1302独立地分配优先级可能导致“竞争”状况,由此两个或更多路由控制器1302尝试获得优先级,从而导致路由器302处路由的不合需要的高变化率。
本公开的实施方案克服了上述问题,包括使用首项选择协议来分配单个路由控制器1302作为主导控制器1302,使得将由主导控制器1302确定的路由分配从所有路由控制器1302传播到路由器302,使得一个路由控制器1302在给定时间被指定为主导控制器1302,并且使得指定主导控制器1302的路由优先于其它控制器1302(包括先前的主导控制器1302)的路由。
如下文将更详细地讨论,本公开的实施方案可以利用强一致数据存储装置1304来促进主导控制器1302的指定。强一致性是分布式数据存储装置中的一个已知概念,它通常指示对数据对象的所有读取都提供所述数据对象的最新版本,即使读取发生在分布式系统内的不同节点上时。因此,在成功将数据对象写入强一致数据存储装置后,保证读取数据对象以返回写入的数据对象,而不是旧版本的数据对象。强一致性与最终一致性形成对比,在最终一致性中对数据对象的写入可能需要时间通过分布式系统传播。强一致数据存储装置的各种示例在本领域中是已知的,因此这里将不讨论这种存储装置的操作细节。一致数据存储装置1304的一个示例是AMAZON的DynamoDB数据库服务。在图13中,为简单起见,一致数据存储装置1304与主机装置1306A-N分开示出。然而,一致数据存储装置1304可以在主机装置1306之间以分布式方式实施。因此,图13中的数据存储装置1304的描绘旨在反映逻辑位置而不是物理位置。附加地或替代地,一致数据存储装置1304可以在数据中心110处或跨多个数据中心110实施,并且主机装置1306可以经由网络(例如,网络108)与数据存储装置1304通信。虽然在一致数据存储装置1304是分布式数据存储装置的假设下描述了本公开的实施方案,但是在一些实施方案中一致数据存储装置1304可以是单个或集中式数据存储装置,例如网络访问存储(NAS)系统。集中式数据存储装置通常提供强一致性,但也可能与分布式系统相比具有更高的潜在故障率。
根据本公开的实施方案,每个路由控制器1302可以用于基于一致数据存储装置1304中的路由数据记录来确定主导控制器1302。具体地,每个控制器1302可以被配置为确定存储装置1304中的路由数据记录是否有效(例如,基于记录的到期时间),并且如果是,则“采用”路由数据记录中识别的路由并将这些路由报告给路由器302。然而,如果存储装置1304中的路由数据记录无效,则路由控制器1302可以被配置为尝试将新的数据记录写入存储装置1304,包含由所述路由控制器1302确定的路由并且将路由控制器1302识别为新的主导控制器。因为每个路由控制器1302可以以这种方式配置,所以多个路由控制器1302可能因此同时尝试成为主导控制器。为了解决这些问题,控制器1302对存储装置1304的写入可以是有条件的,使得仅在检测到自无效记录以来数据记录没有改变时才发生写入。结合使用强一致数据存储装置1304和条件写入来更新路由数据记录可以确保仅单个路由控制器1302成为主导控制器1302。此外,因为每个控制器1302仅向路由器302报告主导控制器1302的路由,所以向路由器302提供一致的信息。
此外,为了确保路由器302通过主导控制器1302将优先级提供给最近的一组路由,控制器可以被配置为利用路由数据记录的顺序优先级值,使得每次路由控制器1302之间的主导地位改变时优先级值递增(或递减)。路由器302可以被配置为接受优先级值,使得路由器302采用优先级较高的路由,而丢弃优先级较低的路由。如上所述,在一些情况下,路由控制器1302和路由器302经由BGP协议进行通信。因此,可以基于用于公告路由的BGP消息的不同属性(例如BGP消息的“多出口鉴别器”或“MED”值)来分配优先级。BGP消息的MED值在本领域中是已知的,并且通常指示使路由器能够区分两条其它相似路由的相对优先级的优先级值。优先考虑较低的MED值,这样当两条路由在其它方面相等时,路由器会选择具有较低MED值的路由。因此,在本公开的实施方案中,主导控制器1302中的每次改变可以使得新的主导控制器1302递减路由数据记录内的路由的MED值,从而确保在路由器302处优于先前路由执行那些路由。为简单起见,本描述将讨论“较高”优先级路由的优先级高于“较低”优先级路由。然而,在例如MED值(其中较低的值是优选的)的情况下,应理解,较低MED值可以表示“较高”优先级值。
图14描绘了用于利用一致数据存储装置1304在全局接入点106内的多个路由控制器1302之间实施指定路由的说明性交互。图14的交互参考个别主机装置1306来描述,所述主机装置可以通过每个主机装置1306上的路由控制器1302的操作以及所述装置1306的其它元件(例如,健康状况检查单元306)来实现其中描述的功能。为了便于描述,图14的交互假设单个主机装置1306A包括先前已被指定为主导控制器的路由控制器1302。下面将参考图15描述用于分配所述主导控制器的说明性交互。
图14的交互从(1)开始,其中包括主导控制器1302的主机装置1306A跨主机装置1306A-N(例如,到每个主机装置1306的流管理器304)进行健康状况检查。健康状况检查数据的传输可以与上述类似地发生,例如,参考图2的健康状况检查单元306。说明性地,健康状况检查可以通知主机装置1306A哪些流管理器304在接入点106内正确地操作。
在(2)处,主机装置1306A生成指定路由,从而将全局网络地址分配给主机装置1306之间的个别流管理器304。如上所述,可以使用任意数量的负载平衡标准来在流管理器304之间划分全局网络地址的分配,例如负载平衡地址总数、负载平衡分组数量、分组数据量等。在一个实施方案中,主机装置1306A在给定池内在地址的子集级别分配全局网络地址。因此,可以将每个地址池的每个地址子集分配给一个或多个流管理器304,分配方式为在管理器304之间将流量分布到全局网络地址。如上所述,由主机装置1306A生成的指定路由被表示为全局网络地址到分配给那些全局网络地址的流管理器304的网络地址的映射。
如上所述,生成的路由可以与优先级值相关联,指示它们相对于过去的路由具有更高的优先级。因此,在交互(2)处,主机装置1306A还可以向生成的路由分配优先级值。在一个实施方案中,在主机装置的路由控制器1302承担主导时确定优先级值,所述值对所述主导的期限有效。下文在图15中更详细地讨论用于分配优先级值的主导和机制的假设。
在(3)处,主机装置1306A将指定路由有条件地写入一致数据存储装置1304作为路由数据记录。一般而言,术语“有条件写入”是指当(且仅当)满足先决条件时发生的写入操作。有条件写入通常被视为“原子性”,因此在有条件写入期间不可能改变先决条件的值。根据本公开的实施方案,主机装置1306A的有条件写入请求可以以路由数据记录内的主导控制器1302的标识符与主机装置1306A内的控制器1302的标识符匹配为条件。因此,仅当主机装置1306A的控制器1302被识别为路由数据记录内的主导控制器时,主机装置1306A生成的路由才会被写入一致数据存储装置1304。在此种有条件写入失败的情况下,主机装置1306A将不包括主导控制器1302,且因此将包括跟随器控制器1302。可以使用任意数量的标识符来将控制器1302标识为路由数据记录内的主导。例如,在主机装置1306的每个路由控制器1302与IPv4网络地址相关联的情况下,所述地址的最后一个八位字节可以用作控制器1302的标识符。因此,写入路由数据记录的数据可以包括由主机装置1306生成的路由(包括此类路由的优先级值)和主机装置1306或所述装置1306内的控制器1302的标识符。写入的数据还可以包括时间戳或其它“陈旧”值,从而使其它控制器1302能够确定记录的有效性。
在一些情况下,路由数据记录中可以包括附加的路由信息。例如,如上所述,在一些情况下,路由器302可以被配置为向不同的边界网络公告不同组的网络地址,从而“引导”流量到接入点106。在一些情况下,路由器302作出的特定公告也可以由路由控制器1302确定,并且这些公告可以在路由数据记录内指示。
为了本公开的目的,假设交互(3)的写入成功。在验证所述成功之后(例如通过从数据存储装置1304接收成功的指示或读取路由数据记录并验证它与写入的内容匹配),主机装置1306A向路由器302公告指定的路由。因此,向路由器302提供指定的路由并且所述路由器可以实施指定的路由。
如上所述,路由器302从多个路由控制器1302接收路由可能是有利的,前提是这些路由是一致的。例如,在一些情况下,路由器302可以认为来自给定路由控制器1302的路由仅在路由器302与所述路由控制器1302之间的通信会话(例如,BGP会话)的持续时间内有效。因此,如果主机装置1306A的路由控制器1302发生故障,则在交互(4)处公告的路由可能会被路由器302丢弃,尽管这些路由仍然可能有效(因为路由可能指向流管理器304,而不是发生故障的控制器1302)。如此,除了主导控制器1302公告路由之外,其它主机装置1306B-N的控制器1302也可以被配置为向路由器302公告指定的路由。
因此,在(5)处,主机装置1306B-N的每个跟随器路由控制器1302从一致数据存储装置1304读取路由数据记录。为了防止无效数据的公告,主机装置1306B-N的每个跟随器路由控制器1302还在(6)处验证路由数据记录。例如,验证可以包括通过验证在过去的阈值时间量(例如,1秒、5秒、30秒、1分钟等)内记录已被写入存储装置1304中或被确认在所述存储装置中有效来验证记录不“过时”。如果记录无效,则每个主机装置1306B-N的每个控制器1302可以尝试成为主导控制器1302,如下文在图15中所描述。然而,出于图14的目的,假设路由有效,且因此在(7)处每个主机装置1306B-N向路由器302公告路由数据记录的指定路由。因此,通过实施图14的交互,路由器302获得在主机装置1306A处生成的指定路由的多个冗余且一致的公告。
在一些情况下,路由器302可能不希望从多个主机装置1306接收具有共同优先级值的重复路由。为了解决这个问题,在一些实施方案中,跟随器主机装置1306的路由控制器1302可以在公告路由之前(例如,在上面的交互(7)中)修改指定路由的优先级值(例如,如从有效路由数据记录中读取)。在一个实施方案中,每个跟随器主机装置1306将指定路由的优先级值设置为跟随器主机装置1306唯一的预定值,并且被选择为具有比主导路由控制器1302在主导主机装置1306中使用的优先级值范围更低的优先级。例如,数据存储装置1304中的路由数据记录的初始优先级值(例如,如在接入点106的初始化时建立)可以被设置为n,并且新的主导路由控制器1302的每个指定可以增加优先级值(例如,增加一)。在此配置中,每个跟随器主机装置1306可以修改指定路由以具有优先级值n-m,其中m是主机装置1306唯一的固定值。在一个实施方案中,基于装置1306的网络地址来设置m,例如通过被设置为等于网络地址的最后位数(例如,IPv4地址的最后八位字节)。因此,跟随器主机装置1306所公告的路由可以被自动认为比主导主机装置1306所公告的任何路由具有更低的优先级。在针对优先级使用MED值的情况下,应注意上述变化的方向将相反,因为较低的MED值通常被认为比较高的MED值具有更高的优先级。因此,主导装置1306可以从某个初始数n递减MED值,并且每个跟随器装置1306可以公告具有n+m的MED值的指定路由。
图15描绘用于处理根据图13的实施方案配置的全局接入点106内的指定路由控制器1302的故障的说明性交互。路由控制器1302的故障可能由于多种原因而发生,例如主机装置1306的机械或软件故障。为了确保全局接入点106的持续操作,通常希望路由控制器1302或主机装置1306,或甚至多个控制器1302或主机装置1306的故障不会暂停或显著影响接入点106的操作。
如上所述,全局接入点106可以包括多个路由控制器1302,其中一个在任何给定时间被指定为主导。因为主导控制器1302路由是传播到路由器302的路由,所以跟随器控制器1302的故障不太可能显著影响接入点106的操作。相反,一旦检测到跟随器控制器1302的故障(例如,通过例如健康状况检查单元306的主机装置1306上的监测过程),跟随器控制器1302可以被修复(例如,通过暂停和重新启动所述过程)并继续恢复其跟随器状态。即使无法修复跟随器控制器1302,主导控制器和其它跟随器控制器1302也可以继续操作,从而允许接入点106继续运行。
然而,在主导控制器1302发生故障的情况下,另一个控制器1302(例如,之前的跟随器)可以被配置为主导控制器1302,从而使得接入点106的操作能够继续。因此,图15的交互假设在主机装置1306A的控制器1302(其先前已被指定为主导控制器1302)处发生故障。由于所述故障,主机装置1306A的控制器1302,所述控制器1302未能写入一致数据存储装置1304的路由数据记录(例如,由于未能写入生成的路由、未能更新指示先前路由为最新的时间戳等)。因此,当其它主机装置1306B-N的控制器1302在(3)读取路由数据记录时,这些控制器1302检测到路由数据记录无效,如交互(4)所示。说明性地,可以基于落在当前时间之前的阈值之外的记录的时间戳值(例如,时间戳是“过时的”)来确定无效性。
在检测到无效路由数据记录时,图15中的每个主机装置1306B-N的每个控制器1302被配置为尝试成为主导控制器1302。因此,在(5)处,这些控制器1302中的每一个都尝试将新的路由数据记录写入到一致数据存储装置1304。新的路由数据记录可以由这些控制器1302中的每一个以类似于主导控制器1302将如何生成记录的方式生成,如上文关于图14所讨论。然而,在非主导控制器1302尝试写入到一致数据存储装置1304的情况下,所述非主导控制器1302可以被配置为增加路由数据记录内的路由的优先级值,使得路由当被公告时覆盖先前主导控制器1302的路由。例如,主机装置1306B-N的每个路由控制器1302可以将无效路由数据记录内的路由的MED值以一递减,并且将所得MED值包括在新的数据记录的路由内。因此,如果向路由器302公告新的数据记录的路由,则可以预期所述路由覆盖旧数据记录的路由。
因为每个主机装置1306B-N的每个控制器1302都可能尝试写入新的路由数据记录,并且因为可能希望将一个且仅一个控制器1302指定为主导。因此,图15中的每个控制器1302的写入是有条件的,使得在数据存储装置1304上的一次且仅一次写入成功。在一个实施方案中,如无效路由数据记录内所指示,写入以过去主导控制器1302的标识符为条件。具体地,每个控制器1302可以指示数据存储装置1304更新路由数据记录,但仅当在所述写入时数据存储装置1304中的路由数据记录包含过去主导控制器1302的标识符时。因此,如果已经指定了新的控制器1302,则条件写入可能失败。虽然过去主导控制器1302的标识符在此用作说明性写入条件,但其它写入条件也是可能的。通常,可以从无效数据记录的任何字段创建路由条件,以确保仅当无效数据记录尚未在数据存储装置1304中更新时才写入新数据记录。因此,例如,存储装置1304中的数据记录的优先级值字段可以用作写入条件,使得仅当自从无效数据记录由尝试写入到存储装置1304中的数据记录的控制器1302读取以来优先级值字段没有改变时,记录才被写入数据存储装置1304中。类似地,数据记录的时间戳字段可以用作写入条件。在一些情况下,路由控制器1302可以与指示控制器1302的配置的配置标识符相关联(例如,基于用于配置控制器1302的配置分组的标识符)。作为又一个可能的写入条件,数据记录可以在生成记录时指示控制器1302的配置标识符,并且路由控制器1302可以基于路由控制器1302的配置标识符等于或超出数据记录中的配置标识符而调节对数据记录的写入。
因为主机装置1306B-N的控制器1302的每次写入都以路由数据记录尚未更新,使得另一控制器1302已经成为主导为条件,所以可以预期对路由数据记录的一次且仅一次更新会成功。因此,主机装置1306B-N的路由控制器1302中的一个且仅一个预期成为指定的主导。为了确定指定的主导,每个路由控制器1302(包括例如主机装置1306A的控制器1302,如果现在可操作)因此从数据存储装置1304读取路由数据记录,并检查路由数据记录内的标识符字段以确定主导控制器1302的标识。因此,指定主机装置A-N中的单个控制器1302,并且接入点106的操作可以基于由主导控制器1302确定的路由的公告而继续。
虽然相对于计划外故障说明性地描绘图15的交互,但是类似的交互可以用于路由控制器1302的计划中断,例如在主机装置1306的硬件或软件升级期间。此外,图15的交互可用于例如在接入点106的初始启动期间“引导”接入点106的操作。具体地,通过将无效路由数据记录写入到一致数据存储装置1304(例如,具有已知的无效字段),可以发起图15的交互,从而确保指定初始主导控制器1302。
图16描绘用于主导路由控制器的操作的说明性例程1600。当控制器1302相信自己是主导控制器1302时(例如,基于控制器1302的标识符存在于一致数据存储装置内的路由数据记录的最后已知副本中),例程1600可以例如由根据图13的实施方案配置的全局接入点106内的控制器1302实施。
例程1600开始于块1602,其中控制器1302获得接入点106内的流管理器304的健康状况检查数据。健康状况检查数据可以例如从包括控制器1302的主机装置1306内的健康状况检查单元306获得。例如,健康状况检查数据可以反映每个流管理器304的健康状况状态。
在块1604,控制器1302确定接入点106内的路由,且具体而言,确定哪些流管理器304将处理寻址到与接入点106相关联的哪些全局网络地址的网络流量。如上所述,可以使用任意数量的负载平衡标准来在流管理器304之间划分全局网络地址的分配,例如负载平衡地址总数、负载平衡分组数量、分组数据量等。在一个实施方案中,路由控制器1302在给定池内在地址的子集级别分配全局网络地址。因此,可以将每个地址池的每个地址子集分配给一个或多个流管理器304,分配方式为在管理器304之间将流量分布到全局网络地址。如上所述,由路由控制器1302生成的指定路由被表示为全局网络地址到分配给那些全局网络地址的流管理器304的网络地址的映射。每个路由可由主导控制器1302分配优先级值,在控制器1302变为主导时(例如,具有比先前路由数据记录内的路由的优先级更高的优先级)建立。
在块1606,控制器1302将所确定的路由有条件地写入到一致数据存储装置中的路由数据记录。在一个实施方案中,有条件的写入请求以路由数据记录内的主导控制器1302的标识符与实施例程1600的控制器1302的标识符匹配为条件。因此,只有当控制器1302被识别为路由数据记录内的主导控制器时,写入才会成功。除了所确定的路由之外,写入到记录的数据可以包括控制器1302(或包括控制器1302的主机装置1306)的标识符,以及时间戳或其它“陈旧”值,从而使其它控制器1302能够确定记录的有效性。
虽然本文将时间戳作为示例陈旧值进行讨论,但其它值也是可能的。例如,鉴于在分布式系统中很难同步时间值,在针对陈旧需要高度准确或短时间段的情况下,时间戳可能不合适。作为替代方案,控制器1302可以例如使用“心跳”值,例如主导控制器1302被配置为随着对数据存储装置1304的每次写入而递增的值。主导控制器1302和跟随器控制器1302写入到数据存储装置1304的周期性可以被设置为使得在同一跟随器控制器1302的两次读取之间,预期发生主导控制器1302对记录的至少n次写入。因此,当跟随器控制器1302没有检测到心跳值在两次连续读取之间递增了至少n时,跟随器控制器1302可以确定记录无效。在一些实施方案中,一致数据存储装置1304可以提供否定时间戳要求的功能。例如,一致数据存储装置1304可以提供写入“会话”,使得存储装置1304维护控制器1302是否成功地与存储装置1304通信的记录。在此种实施方案中,当主导控制器1302与存储装置1304的会话结束或已经结束阈值时间段时,其它控制器1302可以确定记录无效。因此,记录可能不需要明确包括时间戳或其它陈旧值。
在块1607,主导控制器1302通过读取记录从数据存储装置1304中获得路由数据记录。由于记录先前由主导控制器1302写入,并且由于指定为跟随器的控制器1302不期望写入到记录,所以可以预期在块1607获得的记录与在块1606写入的记录相匹配。然而,如果已在主导控制器1302处发生故障,则情况可能并非如此,因为另一个控制器1302可能通过写入到数据存储装置而变成主导控制器1302。因此,基于读取的路由数据记录是否将实施例程1600的控制器1302识别为主导控制器1302(例如,基于路由数据记录中存在控制器1302的标识符),例程1600的实施在块1608改变。如果路由数据记录没有将实施例程1600的控制器1302识别为主导控制器1302,则例程1600前进到块1700,这表示图17的跟随器控制器例程1700,如下文详细讨论。
如果路由数据记录确实将实施例程1600的控制器1302识别为主导控制器1302,则例程1600前进到块1612,其中控制器1302向接入点106内的路由器302公告所确定的路由。因此导致到全局网络地址的流量被路由到流管理器304,如所确定的路由内所指示。然后,例程1600返回到上面的块1602。例程1600可以说明性地实施为“无限循环”,只要控制器1302相信它自己是主导控制器1302。
虽然例程1600包括验证控制器1302是主导控制器1302的单个块1608,但是可以包括多个此类验证。例如,可以在块1602之前包括验证,并且块1612可以循环到所述验证。
如果任何此类验证失败,则控制器1302将转移到如图17中描绘的例程1700。具体地,说明性例程1700描绘根据图13的实施方案配置的全局接入点106内的跟随器路由控制器1302的操作。例程1700可以在控制器1302不相信自己是主导控制器1302的任何时候实施。因此,例程1700可以在控制器1302初始化时实施,或者在先前的主导控制器1302确定(例如,经由例程1600)它不再被指定为主导控制器1302之后实施。
例程1700开始于块1702,其中跟随器路由控制器1302从一致数据存储装置1304获得路由数据记录。此后,例程1700基于路由数据记录是否将控制器1302识别为主导控制器1302而变化(预期不会在例程1700的第一次迭代中发生的情况,但是如果控制器1302尝试成为主导控制器1302,则可能发生这种情况,如上所述)。为了描述的目的,将假设块1704至少最初评估为假。因此,例程1700前进到块1706,其中控制器1302确定所获得的路由数据记录是否有效。如上所述,有效性可以例如基于记录内的例如时间戳、心跳值等陈旧值来确定。如果路由数据记录有效,则例程1700前进到块1714,其中跟随器控制器1302向接入点106的路由器302公告路由数据记录内的路由。然后,例程1700返回到块1702,并且如上所述前进。因此,只要一致数据存储装置1304包含由主导控制器1302写入的有效记录,每个跟随器控制器1302就可以向路由器302公告主导控制器1302的路由。
然而,在块1706确定路由数据记录无效的情况下,例程1700前进到块1708-1712,其中跟随器控制器1302尝试成为主导控制器1302。块1708到1712在实施上与上文参考图16讨论的块1602到1606大体类似,且因此将不再详细地重新描述。然而,与块1602到1606相反,尝试成为主导控制器1302的跟随器控制器1302可以修改路由数据记录内的值以实现主导。例如,跟随器控制器1302可以将自己的标识符写入到数据记录中,并写入具有优先级高于包括在无效数据记录中的值的优先级值的路由。说明性地,跟随器控制器1302可以针对它尝试写入的路由数据记录内的每个确定的路由递减MED值。此外,跟随器控制器1302可以基于在一致数据存储装置1304中仍被识别为主导控制器1302的先前主导控制器1302(如在无效数据记录中识别)来调节路由数据记录的写入。因此,如果例程1700的多个实施方式尝试在给定时间将新的路由数据记录写入到存储装置1304,则期望例程1700的仅单次实施在所述写入中成功。因此,预期仅单个控制器1302成功地获得主导状态。
在块1712之后,例程1700然后返回到块1702,其中控制器1302再次从数据存储装置中获得路由数据记录。如果控制器1302成功写入路由数据记录,则块1704评估为真,并且控制器1302作为主导控制器1302继续实施图16的例程1600。(在一些实施方案中,控制器1302可以在不同于块1602的块处进入例程1600。例如,已经成为主导控制器1302的控制器1302可以在块1612处进入例程1600。)如果控制器1302没有成功写入到路由数据记录,则控制器1302保持跟随器控制器1302,并且例程1700前进到块1706,如上所述。控制器1302可以在其作为跟随器控制器1302的操作期间继续实施例程1700。
虽然关于生成路由信息来描述例程1600和1700,所述路由信息指定如何将寻址到全局网络地址的分组路由到接入点106内的流管理器304,但是这些例程可以通过利用分布式路由控制器的各种上下文来实施,以控制路由信息来将传入的分组路由到一组分布式分组处理器。因此,例程中提供的示例本质上是说明性的。
可以鉴于以下条款描述本公开的各个实施方案:
条款1.一种系统,其包括:
多个端点,每个端点位于不同地理位置并且包含至少一个服务器计算装置,所述服务器计算装置被配置为提供与网络地址相关联的网络可访问服务;
针对所述网络可访问服务的至少两个接入点,所述至少两个接入点中的每一个包括处理器,所述接入点位于不同地理位置并且被配置为:
利用任播方法将所述网络地址的网络前缀广告为可经由所述接入点到达;
从客户端装置接收寻址到所述网络地址的网络分组;
从多个端点中选择一个端点,至少部分地基于所述客户端装置与所述端点之间的网络性能度量将所述网络分组路由到所述端点;
根据网络地址转换(NAT)转变所述网络分组以产生转变后的分组;以及
将所述转变后的分组路由到所述端点。
条款2.如条款1所述的系统,其中所述网络分组是传输控制协议(TCP)分组,并且其中每个接入点被配置为维护关于在相应客户端装置与端点之间建立的TCP会话的状态信息。
条款3.如条款1所述的系统,其中每个端点被配置为:
从所述端点接收对所述转变后的分组的响应;以及
根据网络地址转换(NAT)转变所述响应以产生转变后的响应;以及
将所述转变后的响应路由到所述客户端装置。
条款4.如条款1所述的系统,其中所述至少两个接入点和所述多个端点经由专用网络通信,并且其中经由公共网络从所述客户端装置接收所述网络分组。
条款5.一种在针对分布在地理区域上的网络可访问服务的多个接入点中的每个接入点处实施的方法,所述方法包括:
将所述网络可访问服务的网络地址广告为可经由每个接入点到达;
在所述多个接入点中的第一接入点处:
从客户端装置接收寻址到所述网络地址的网络分组;
从所述网络可访问服务的多个端点中选择一个端点,至少部分地基于所述客户端装置与所述端点之间的网络性能度量将所述网络分组路由到所述端点;
根据网络地址转换(NAT)转变所述网络分组以产生转变后的分组;以及
将所述转变后的分组路由到所述端点。
条款6.如条款5所述的方法,其中所述网络分组是用户数据报协议(UDP)分组或互联网控制消息协议(ICMP)分组中的至少一个。
条款7.如条款5所述的方法,其中所述网络地址转换(NAT)包括端口转换。
条款8.如条款5所述的方法,其中将所述网络可访问服务的所述网络地址广告为可经由每个接入点到达包括从每个接入点传输边界网关协议(BGP)分组。
条款9.如条款5所述的方法,其中至少部分地基于所述端点对所述第一接入点的明显健康状况来进一步选择所述端点。
条款10.如条款9所述的方法,其中所述端点对所述第一接入点的所述明显健康状况反映所述第一接入点与所述端点之间的网络状况或对由健康状况检查装置传输到所述端点的健康状况检查数据的响应中的至少一个。
条款11.如条款5所述的方法,还包括:
将第二网络可访问服务的第二网络地址广告为可经由所述第一接入点到达,其中所述第二网络地址也被广告为可经由与所述第一接入点不同的地理位置中的第二接入点到达;
从第二客户端装置接收寻址到所述第二网络地址的网络分组;
从所述第二网络可访问服务的多个端点中选择所述第二网络可访问服务的一个端点,至少部分地基于所述第二客户端装置与所述第二网络可访问服务的所述端点之间的网络距离将所述第二网络分组路由到所述第二网络可访问服务的所述端点;
根据NAT转变所述第二网络分组以产生第二转变后的分组;以及
将所述第二转变后的分组路由到所述第二网络可访问服务的所述端点。
条款12.如条款11所述的方法,其中将路由寻址到所述第一网络地址的分组的责任分配给所述第一接入点内的第一流管理器,其中将路由寻址到所述第二网络地址的分组的责任分配给所述第一接入点内的第二流管理器,并且其中所述方法还包括:
至少部分地基于寻址到所述第一网络地址的所述第一网络分组将所述第一网络分组路由到所述第一流管理器;以及
至少部分地基于寻址到所述第二网络地址的所述第二网络分组将所述第二网络分组路由到所述第二流管理器。
条款13.如条款5所述的方法,其中所述网络地址是与所述网络可访问服务相关联的第一网络地址,其中所述网络可访问服务还与第二网络地址相关联,并且所述方法还包括:
向所述第一接入点的第一相邻网络的相邻装置广告所述第一网络地址可经由所述第一接入点到达,而不向所述第一相邻网络的所述相邻装置广告所述第二网络地址可经由所述第一接入点到达;以及
向所述第一接入点的第二相邻网络的相邻装置广告所述第二网络地址可经由所述第一接入点到达,而不向所述第二相邻网络的所述相邻装置广告所述第一网络地址可经由所述第一接入点到达。
条款14.如条款5所述的方法,其中所述网络分组是第一网络分组,并且其中所述方法还包括:
在流缓存中存储将所述端点识别为与包含所述第一网络分组的数据流相关联的信息;
从所述客户端装置接收寻址到所述网络地址的第二网络分组;
将所述第二网络分组识别为所述数据流的一部分;
从所述流缓存中的所述信息中识别所述端点;以及
将所述第二网络分组路由到所述端点。
条款15.一种包括计算机可执行指令的非暂时性计算机可读介质,所述计算机可执行指令当由针对分布在地理区域上的网络可访问服务的多个接入点中的每个接入点执行时,将每个接入点配置为:
从客户端装置接收寻址到所述网络可访问服务的网络地址的网络分组,所述接入点已将所述网络地址广告为可经由所述接入点到达,其中所述网络地址也被广告为可经由所述多个接入点中的其它接入点到达;
从所述网络可访问服务的多个端点中选择将所述网络分组路由到的一个端点;
根据网络地址转换(NAT)转变所述网络分组以产生转变后的分组;以及
将所述转变后的分组路由到所述端点。
条款16.如条款14所述的非暂时性计算机可读介质,所述指令还将每个接入点配置为:
从所述端点接收对所述转变后的分组的响应;以及
根据网络地址转换(NAT)转变所述响应以产生转变后的响应;以及
将所述转变后的响应路由到所述客户端装置。
条款17.如条款14所述的非暂时性计算机可读介质,其中所述计算机可执行指令当由每个接入点执行时实施第一流管理器,并且其中所述非暂时性计算机可读介质还包括第二指令,所述第二指令当由每个接入点执行时实施第二流管理器,所述第二流管理器被配置为:
从第二客户端装置接收寻址到第二网络可访问服务的网络地址的第二网络分组,所述第一接入点已将所述网络地址广告为可经由所述第一接入点到达,其中所述第二网络可访问服务的所述网络地址也被广告为可经由所述第二接入到达;
从所述第二网络可访问服务的多个端点中选择将所述第二网络分组路由到的一个端点;
根据网络地址转换(NAT)转变所述第二网络分组以产生第二转变后的分组;以及
将所述第二转变后的分组路由到从所述第二网络可访问服务的所述多个端点中选择的所述端点。
条款18.如条款14所述的非暂时性计算机可读介质,其中所述网络分组是第一网络分组,并且其中所述计算机可执行指令在由每个接入点执行时还将每个接入点配置为:
在流缓存中存储将所述端点识别为与包含所述第一网络分组的数据流相关联的信息;
从所述客户端装置接收寻址到所述网络地址的第二网络分组;
将所述第二网络分组识别为所述数据流的一部分;
从所述流缓存中的所述信息中识别所述端点;以及
将所述第二网络分组路由到所述端点。
条款19.如条款14所述的非暂时性计算机可读介质,其中所述计算机可执行指令当由每个接入点执行时还将所述接入点配置为至少部分地基于所述端点对所述接入点的明显健康状况而选择所述端点。
条款20.如条款14所述的非暂时性计算机可读介质,其中为了从所述网络可访问服务的所述多个端点中选择所述端点,所述指令使每个接入点至少部分地基于所述客户端与所述端点之间的网络距离来选择所述端点。
条款21.如条款14所述的非暂时性计算机可读介质,其中所述计算机可执行指令当由所述每个接入点执行时还将每个接入点配置为实施同一选择算法,以选择将每个网络分组路由到的端点。
条款22.如条款14所述的非暂时性计算机可读介质,其中所述计算机可执行指令当由所述每个接入点执行时还将每个接入点配置为至少部分地通过广告所述网络地址的网络前缀来广告所述网络地址为可经由所述接入点到达。
可以鉴于以下条款描述本公开的附加实施方案:
条款1.一种系统,其包括:
多个端点,每个端点位于不同地理位置并且包含至少一个服务器计算装置,所述服务器计算装置被配置为提供与第一网络地址和第二网络地址两者相关联的网络可访问服务;
针对所述网络可访问服务的至少两个接入点,所述至少两个接入点中的每一个包括处理器,所述接入点位于不同地理位置并且被配置为:
利用任播技术向所述接入点的第一相邻网络的相邻装置广告所述第一网络地址可经由所述接入点到达,而不向所述第一相邻网络的所述相邻装置广告所述第二网络地址可经由所述接入点到达;
利用任播技术向所述接入点的第二相邻网络的相邻装置广告所述第二网络地址可经由所述接入点到达,而不向所述第二相邻网络的所述相邻装置广告所述第一网络地址可经由所述接入点到达;
从客户端装置接收寻址到所述第一或第二网络地址中的至少一个的网络分组;
从所述多个端点中选择将所述网络分组路由到的一个端点;以及
将所述分组路由到所述端点。
条款2.如条款1所述的系统,其中所述第一网络地址和第二网络地址由所述至少两个接入点中的每一个广告。
条款3.如条款1所述的系统,其中所述第一网络地址形成向所述第一相邻网络的所述相邻装置广告的第一网络地址池的一部分,并且所述第二网络地址形成向所述第二相邻网络的所述相邻装置广告的第二网络地址池的一部分,所述相应第一和第二池内的每个网络地址与由所述多个端点提供的多个网络可访问服务中的至少一个网络可访问服务相关联。
条款4.如条款3所述的系统,其中所述第一和第二池中的每一个被划分为子集,并且其中所述相应池的所述子集内的网络可访问服务的分组在所述池之间变化。
条款5.如条款4所述的系统,其中所述第一和第二网络地址从所述第一和第二池中随机选择以与所述网络可访问服务相关联。
条款6.如条款4所述的系统,其中所述至少两个接入点中的每一个包括至少两个物理隔离的计算装置,其中第一物理隔离的计算装置被配置为将所述第一网络地址广告为可经由所述接入点到达,并且其中第二物理隔离的计算装置被配置为将所述第二网络地址广告为可经由所述接入点到达。
条款7.一种在针对与第一网络地址和第二网络地址两者相关联的网络可访问服务的接入点处实施的方法,所述方法包括:
向所述接入点的第一相邻网络的相邻装置广告所述第一网络地址可经由所述接入点到达,而不向所述第一相邻网络的所述相邻装置广告所述第二网络地址可经由所述接入点到达;
向所述接入点的第二相邻网络的相邻装置广告所述第二网络地址可经由所述接入点到达,而不向所述第二相邻网络的所述相邻装置广告所述第一网络地址可经由所述接入点到达;
从客户端装置接收寻址到所述第一或第二网络地址中的至少一个的网络分组;
从所述多个端点中选择将所述网络分组路由到的端点;以及
将所述分组路由到所述端点。
条款8.如条款6所述的方法,其中所述第一网络地址形成向所述第一相邻网络的所述相邻装置广告的第一网络地址池的一部分,并且所述第二网络地址形成向所述第二相邻网络的所述相邻装置广告的第二网络地址池的一部分,所述相应第一和第二池内的每个网络地址与由所述多个端点提供的多个网络可访问服务中的至少一个网络可访问服务相关联,并且其中所述第一和第二池中的每一个被划分为网络地址的子集。
条款9.如条款7所述的方法,其中所述相应池的所述子集内的网络可访问服务的分组在所述池之间变化。
条款10.如条款7所述的方法,其中在由所述接入点实施的流管理器之间划分路由寻址到网络地址的个别子集内的网络装置的分组的责任,分配每个流管理器以路由寻址到至少一个个别子集的分组。
条款11.如条款9所述的方法,其中所述流管理器至少部分地基于作为不同线程执行或在不同执行环境中执行而彼此隔离。
条款12.如条款6所述的方法,其中将所述第一网络地址广告为可经由所述接入点到达包括传输边界网关协议(BGP)分组。
条款13.如条款6所述的方法,其中将所述分组路由到所述端点包括:
对所述分组应用网络地址转换(NAT)以产生转变后的分组;以及
将所述转变后的分组路由到所述端点。
条款14.如条款6所述的方法,其中所述分组是传输控制协议(TCP)分组,并且其中将所述分组路由到所述端点包括将所述分组内的TCP会话信息转发到所述端点。
条款15.一种包括计算机可执行指令的非暂时性计算机可读介质,所述计算机可执行指令当由针对与第一网络地址和第二网络地址两者相关联的网络可访问服务的第一接入点执行时使所述第一接入点:
向所述接入点的第一相邻网络的相邻装置广告所述第一网络地址可经由所述接入点到达,而不向所述第一相邻网络的所述相邻装置广告所述第二网络地址可经由所述接入点到达;
向所述接入点的第二相邻网络的相邻装置广告所述第二网络地址可经由所述接入点到达,而不向所述第二相邻网络的所述相邻装置广告所述第一网络地址可经由所述接入点到达;
从客户端装置接收寻址到所述第一或第二网络地址中的至少一个的网络分组;
从所述多个端点中选择将所述网络分组路由到的端点;以及
将所述分组路由到所述端点。
条款16.如条款14所述的非暂时性计算机可读介质,其中所述第一网络地址形成向所述第一相邻网络的所述相邻装置广告的第一网络地址池的一部分,并且所述第二网络地址形成向所述第二相邻网络的所述相邻装置广告的第二网络地址池的一部分,所述相应第一和第二池内的每个网络地址与由所述多个端点提供的多个网络可访问服务中的至少一个网络可访问服务相关联,并且其中所述第一和第二池中的每一个被划分为网络地址的子集。
条款17.如条款15所述的非暂时性计算机可读介质,其中所述相应池的所述子集内的网络可访问服务的分组在所述池之间变化。
条款18.如条款15所述的非暂时性计算机可读介质,其中在由所述接入点实施的流管理器之间划分路由寻址到网络地址的个别子集内的网络地址的分组的责任,分配每个流管理器以路由寻址到至少一个个别子集的分组。
条款19.如条款17所述的非暂时性计算机可读介质,其中所述流管理器至少部分地基于作为不同线程执行或在不同执行环境中执行而彼此隔离。
条款20.如条款17所述的非暂时性计算机可读介质,还包括可由所述接入点执行以至少部分地基于将所述数据分组寻址到的网络地址和关于所述流管理器之间的责任划分的信息在所述流管理器之间路由传入数据分组的指令。
条款21.如条款14所述的非暂时性计算机可读介质,还包括可由所述接入点执行以进行以下操作的指令:
检索将所述网络可访问服务与所述第一和第二网络地址以及所述多个端点相关联的配置信息;
在远程数据源中检测修改所述多个端点的信息;以及
更新所述配置信息以反映修改所述多个端点的所述信息。
可以鉴于以下条款描述本公开的附加实施方案:
条款1.一种系统,其包括:
多个端点池,每个端点池位于不同地理位置并且包含一个或多个端点计算装置,所述端点计算装置被配置为提供与网络地址相关联的网络可访问服务;
针对所述网络可访问服务的至少两个接入点,每个接入点包括处理器并配置有计算机可执行指令以:
从所述至少两个接入点可访问的网络存储位置周期性地检索所述至少两个接入点的配置信息,所述配置信息至少包括所述多个端点池中的每个端点池的寻址信息,每个端点池的所述寻址信息包括所述端点池内的个别端点计算装置的地址;
接收寻址到所述网络地址的第一网络分组;
从所述多个端点池中选择将所述第一网络分组路由到的第一端点池;
至少部分地基于所述第一端点池的所述寻址信息,将所述第一网络分组路由到所述第一端点池内的个别端点计算装置;
接收用于所述接入点的修改的配置信息,所述修改的配置信息反映所述第一端点池的修改的寻址信息,作为所述第一端点池内包括的所述一个或多个端点计算装置的改变的结果;
接收寻址到所述网络地址的第二网络分组;
从所述多个端点池中选择所述第一端点池作为所述第二网络分组的目的地;以及
至少部分地基于所述第一端点池的所述修改的寻址信息,将所述第二网络分组路由到所述第一端点池内的个别端点计算装置。
条款2.如条款1所述的系统,其中每个接入点提供对多个网络可访问服务的访问,并且其中所述配置信息包括每个网络可访问服务的映射和用于所述网络可访问服务的多个端点池中的每个端点池的寻址信息。
条款3.如条款1所述的系统,还包括配置管理器,所述配置管理器被配置为:
接收指示所述第一端点池内包括的所述一个或多个端点计算装置的所述改变的信息;以及
生成所述修改的配置信息,其中所述修改的配置信息反映所述配置信息与之前版本的所述配置信息相比的相对差异。
条款4.如条款3所述的系统,其中指示所述第一端点池内包括的所述一个或多个端点计算装置的所述改变的所述信息对应于将从所述第一端点池中移除不健康的端点计算装置的通知。
条款5.如条款1所述的系统,其中每个接入点缺少用于存储所述计算机可执行指令的非易失性存储器,并且其中每个接入点在初始化时还被配置为从网络可访问存储位置中检索所述计算机可执行指令并将所述计算机可执行指令存储在所述接入点的易失性存储器中。
条款6.一种在针对与网络地址相关联的网络可访问服务的多个地理上分布的接入点处实施的方法,所述方法包括在每个接入点处:
从所述多个接入点可访问的网络存储位置周期性地检索配置信息,所述配置信息对所有接入点通用并且至少包括多个端点池中的每个端点池的寻址信息,每个端点池的所述寻址信息包括所述端点池内被配置为提供所述网络可访问服务的个别端点计算装置的地址;
接收寻址到所述网络地址的第一网络分组;
从所述多个端点池中选择将所述第一网络分组路由到的第一端点池;
至少部分地基于所述第一端点池的所述寻址信息,将所述第一网络分组路由到所述第一端点池内的个别端点计算装置;
接收用于所述接入点的修改的配置信息,所述修改的配置信息反映所述第一端点池的修改的寻址信息,作为所述第一端点池内包括的所述一个或多个端点计算装置的改变的结果;
接收寻址到所述网络地址的第二网络分组;
从所述多个端点池中选择所述第一端点池作为所述第二网络分组的目的地;以及
至少部分地基于所述第一端点池的所述修改的寻址信息,将所述第二网络分组路由到所述第一端点池内的个别端点计算装置。
条款7.如条款6所述的方法,周期性地检索所述配置信息包括从远离每个接入点的网络可访问存储位置周期性地检索所述配置。
条款8.如条款6所述的方法,其中所述方法基于对存储在易失性存储器中的每个接入点执行计算机可执行指令来实施,而不参考每个接入点的任何非易失性存储器中的信息。
条款9.如条款6所述的方法,其中所述多个接入点提供对与至少第一和第二网络地址池内的网络地址相关联的多个网络可访问服务的访问,并且其中所述方法还包括在每个接入点处:
向所述接入点的第一相邻网络的相邻装置广告所述第一网络地址池可经由所述接入点到达,而不向所述第一相邻网络的所述相邻装置广告所述第二网络地址池可经由所述接入点到达;
向所述接入点的第二相邻网络的相邻装置广告所述第二网络地址池可经由所述接入点到达,而不向所述第二相邻网络的所述相邻装置广告所述第一网络地址池可经由所述接入点到达;
条款10.如条款6所述的方法,其中将所述第一网络分组路由到所述第一端点池内的所述个别端点计算装置包括将网络地址转换(NAT)应用到所述第一网络分组。
条款11.如条款10所述的方法,其中将网络地址转换(NAT)应用于所述第一网络分组不修改所述第一网络分组内的传输控制协议(TCP)序列号。
条款12.如条款6所述的方法,其中所述修改的配置信息还反映所述网络可访问服务与附加网络地址的关联性,其中所述方法还包括:
接收寻址到所述附加网络地址的第三网络分组;
从所述多个端点池中选择所述第一端点池作为所述第三网络分组的目的地;以及
至少部分地基于所述第一端点池的所述修改的寻址信息,将所述第三网络分组路由到所述第一端点池内的个别端点计算装置。
条款13.一种非暂时性计算机可读介质,其包括计算机可执行指令,所述计算机可执行指令当在针对与网络地址相关联的网络可访问服务的多个接入点中的每个接入点上执行时,将每个接入点配置为:
周期性地检索在所述至少两个接入点之间共享的配置信息,所述配置信息至少包括多个端点池中的每个端点池的寻址信息,每个端点池的所述寻址信息包括所述端点池内被配置为提供所述网络可访问服务的个别端点计算装置的地址;
接收寻址到所述网络地址的第一网络分组;
从所述多个端点池中选择将所述第一网络分组路由到的第一端点池;
至少部分地基于所述第一端点池的所述寻址信息,将所述第一网络分组路由到所述第一端点池内的个别端点计算装置;
接收用于所述接入点的修改的配置信息,所述修改的配置信息反映所述第一端点池的修改的寻址信息,作为所述第一端点池内包括的所述一个或多个端点计算装置的改变的结果;
接收寻址到所述网络地址的第二网络分组;
从所述多个端点池中选择所述第一端点池作为所述第二网络分组的目的地;以及
至少部分地基于所述第一端点池的所述修改的寻址信息,将所述第二网络分组路由到所述第一端点池内的个别端点计算装置。
条款14.如条款13所述的非暂时性计算机可读介质,其中所述计算机可执行指令可在每个接入点上执行而无需所述接入点包括非易失性存储器。
条款15.如条款14所述的非暂时性计算机可读介质,其中所述计算机可执行指令是第一计算机可执行指令,并且其中所述介质还包括第二计算机可执行指令,所述第二计算机可执行指令当由每个接入点执行时将每个接入点配置为:
从远离所述接入点的网络可访问存储位置中检索所述第一计算机可执行指令;
将所述第一计算机可执行指令放入所述接入点的易失性存储器中;以及
从所述易失性存储器执行所述第一计算机可执行指令。
条款16.如条款14所述的非暂时性计算机可读介质,其中所述配置信息包括关于可经由每个接入点访问的网络地址的多个子集的信息,并且其中所述计算机可执行指令还可由每个接入点执行以实施多个隔离的流管理器,不同的流管理器被配置为路由与来自所述多个子集的不同网络地址子集相关联的分组。
条款17.如条款14所述的非暂时性计算机可读介质,其中所述多个接入点提供对与至少第一和第二网络地址池内的网络地址相关联的多个网络可访问服务的访问,并且其中所述计算机可执行指令还可由每个接入点执行以:
向所述接入点的第一相邻网络的相邻装置广告所述第一网络地址池可经由所述接入点到达,而不向所述第一相邻网络的所述相邻装置广告所述第二网络地址池可经由所述接入点到达;
向所述接入点的第二相邻网络的相邻装置广告所述第二网络地址池可经由所述接入点到达,而不向所述第二相邻网络的所述相邻装置广告所述第一网络地址池可经由所述接入点到达;
条款18.如条款14所述的非暂时性计算机可读介质,其中将所述第一网络分组路由到所述第一端点池内的所述个别端点计算装置,并且其中所述计算机可执行指令还配置每个接入点以对所述第一网络分组应用网络地址转换(NAT)。
条款19.如条款18所述的非暂时性计算机可读介质,其中将网络地址转换(NAT)应用于所述第一网络分组不修改所述第一网络分组内的传输控制协议(TCP)序列号。
条款20.如条款14所述的非暂时性计算机可读介质,其中所述修改的配置信息还反映所述网络可访问服务与附加网络地址的关联性,并且其中所述计算机可执行指令还将每个接入点配置为:
接收寻址到所述附加网络地址的第三网络分组;
从所述多个端点池中选择所述第一端点池作为所述第三网络分组的目的地;以及
至少部分地基于所述第一端点池的所述修改的寻址信息,将所述第三网络分组路由到所述第一端点池内的个别端点计算装置。
可以鉴于以下条款描述本公开的附加实施方案:
条款1.一种系统,其包括:
多个端点系统,每个端点系统位于不同地理位置并且包含至少一个端点计算装置,所述端点计算装置被配置为提供与网络地址相关联的网络可访问服务;
针对所述网络可访问服务的至少两个接入点,所述至少两个接入点中的每一个包括处理器,所述接入点位于不同地理位置并且被配置为:
利用任播方法将所述网络地址的网络前缀广告为可经由所述接入点到达;
从客户端装置接收发起与所述网络可访问服务的传输控制协议(TCP)会话的请求;
进行所述TCP会话的初始化阶段,从而为所述TCP会话建立包括至少一个序列号的上下文信息;
从所述客户端装置接收数据分组作为所述TCP会话的一部分;
从所述多个端点系统中选择将所述网络分组路由到的一个端点系统;以及
将所述数据分组和所述TCP会话的所述上下文信息传输到所述端点系统;
其中每个端点系统被配置为基于从个别接入点接收的上下文信息采用来自所述个别接入点的TCP会话,并在所述采用的TCP会话内处理来自客户端装置的数据分组以提供所述网络可访问服务。
条款2.如条款1所述的系统,其中每个端点系统内的所述至少一个端点计算装置被配置为采用来自所述个别接入点的所述TCP会话。
条款3.如条款1所述的系统,其中每个端点系统还包括会话切换装置,所述会话切换装置被配置为基于从个别接入点接收的所述上下文信息而从所述个别接入点采用所述TCP会话,并且对于给定的所采用TCP会话还配置为:
建立与所述端点系统的至少一个端点计算装置的不同TCP会话;以及
对于经由所述给定的所采用TCP会话接收的个别数据分组,生成对应的个别数据分组,并经由所述不同的TCP会话将所述对应的个别数据分组传输到所述端点系统的所述至少一个端点计算装置。
条款4.如条款3所述的系统,其中对于所述给定的所采用TCP会话,每个端点系统的所述会话切换装置还被配置为选择所述端点系统的所述至少一个端点计算装置来提供所述网络可访问服务。
条款5.如条款1所述的系统,其中每个端点系统内的所述至少一个端点计算装置被配置为独立于所述至少两个接入点直接对与采用的TCP会话相关联的客户端装置作出响应。
条款6.一种在针对分布在地理区域上的网络可访问服务的多个接入点中的每个接入点处实施的方法,所述方法包括:
将所述网络可访问服务的网络地址广告为可经由每个接入点到达;
在所述多个接入点中的第一接入点处:
从客户端装置接收发起与所述网络可访问服务的面向连接的通信会话的请求;
进行所述面向连接的面向连接的通信会话的初始化阶段,从而为所述面向连接的面向连接的通信会话建立上下文信息;
作为所述面向连接的面向连接的通信会话的一部分,从所述客户端装置接收数据分组;
应用选择标准以从用于所述网络可访问服务的多个端点系统中选择将所述网络分组路由到的端点系统;以及
将所述数据分组和所述面向连接的面向连接的通信会话的所述上下文信息传输到所述端点系统;
其中所述端点系统被配置为利用所述上下文信息来采用所述面向连接的面向连接的通信会话,并在所述采用的面向连接的面向连接的通信会话内处理所述数据分组以提供所述网络可访问服务。
条款7.如条款6所述的方法,其中所述面向连接的面向连接的通信会话是传输控制协议(TCP)会话。
条款8.如条款6所述的方法,其中将所述数据分组传输到所述端点系统包括封装所述数据分组以产生封装的数据分组并通过网络隧道传输封装的数据分组。
条款9.如条款8所述的方法,其中将所述上下文信息传输到所述端点系统包括将所述上下文信息添加到所述封装的数据分组的报头。
条款10.如条款6所述的方法,其中将所述数据分组传输到所述端点系统包括用所述端点系统的网络地址替换所述网络可访问服务的所述网络地址作为所述数据分组的目的地网络地址。
条款11.如条款6所述的方法,其中向所述端点系统传输所述数据分组和所述面向连接的通信会话的所述上下文信息包括:向所述端点系统内的被配置为基于所述上下文信息采用所述面向连接的通信会话的会话切换装置传输所述数据分组和所述上下文信息。
条款12.如条款6所述的方法,还包括:
作为所述面向连接的通信会话的一部分,接收对所述数据分组的响应;以及
将所述响应返回给所述客户端装置。
条款13.如条款6所述的方法,还包括在所述多个接入点中的第二接入点处:
作为所述面向连接的面向连接的通信会话的一部分,从所述客户端装置接收第二数据分组;
应用所述第一接入点先前应用的所述选择标准来选择所述端点系统作为将所述网络分组路由到的目的地;以及
作为所述面向连接的面向连接的通信会话的一部分,将所述第二数据分组传输到所述端点系统。
条款14.一种包括计算机可执行指令的非暂时性计算机可读介质,所述计算机可执行指令当由针对分布在地理区域上的网络可访问服务的多个接入点中的每个接入点执行时,将每个接入点配置为:
将所述网络可访问服务的网络地址广告为可经由每个接入点到达;
从客户端装置接收发起与所述网络可访问服务的面向连接的面向连接的通信会话的请求;
进行所述面向连接的面向连接的通信会话的初始化阶段,从而为所述面向连接的面向连接的通信会话建立上下文信息;
作为所述面向连接的面向连接的通信会话的一部分,从所述客户端装置接收数据分组;
从所述网络可访问服务的多个端点系统中选择将所述网络分组路由到的一个端点系统;以及
将所述数据分组和所述面向连接的面向连接的通信会话的所述上下文信息传输到所述端点;
其中所述端点系统被配置为利用所述上下文信息来采用所述面向连接的面向连接的通信会话,并在所述采用的面向连接的面向连接的通信会话内处理所述数据分组以提供所述网络可访问服务。
条款15.如条款14所述的非暂时性计算机可读介质,其中为了向所述端点系统传输所述数据分组和所述上下文信息,所述指令将每个接入点配置为建立到所述端点的网络隧道并经由所述隧道传输所述数据分组和所述上下文信息。
条款16.如条款15所述的非暂时性计算机可读介质,其中所述数据分组和所述上下文信息在所述隧道内独立地传输。
条款17.如条款15所述的非暂时性计算机可读介质,其中为了选择所述端点系统,所述指令将每个接入点配置为独立于在其上应用统一选择标准的所述个别接入点应用所述统一选择标准。
条款18.如条款17所述的非暂时性计算机可读介质,其中所述指令还将每个接入点配置为:
作为第二面向连接的面向连接的通信会话的一部分,从第二客户端装置接收第二数据分组,所述第二面向连接的面向连接的通信会话在所述第二客户端装置与所述端点之间并且至少部分地基于所述第二客户端装置与不同接入点之间的交互而建立;
应用统一选择标准,选择所述端点系统作为所述第二数据分组的目的地;以及
作为所述第二面向连接的面向连接的通信会话的一部分,将所述第二数据分组传输到所述端点系统。
条款19.如条款14所述的非暂时性计算机可读介质,其中所述指令还将每个接入点配置为选择所述端点系统内的将所述网络分组路由到的端点计算装置。
条款20.如条款14所述的非暂时性计算机可读介质,其中为了将所述数据分组和所述上下文信息传输到所述端点系统,所述指令将每个接入点配置为将所述数据分组和所述上下文信息传输到所述端点系统内的会话切换装置,所述会话切换装置被配置为基于所述上下文信息采用所述面向连接的通信会话。
可以鉴于以下条款描述本公开的附加实施方案:
条款1.一种接入点系统,其包括:
路由器装置,其被配置为接收路由信息,所述路由信息指示所述路由器装置如何将在网络上获得的数据分组路由到所述接入点系统内的多个流管理器;以及
一个或多个处理器,其被配置为实施所述多个流管理器;
其中所述一个或多个处理器还被配置为实施将所述路由信息冗余地传输到所述路由器装置的多个路由控制器,其中个别路由控制器被配置为:
从强一致数据存储装置中读取路由数据记录,所述路由数据记录对应于指定用于存储所述路由信息和用于指定所述接入点内的主导路由控制器的记录;以及
从所述路由数据记录中确定所述个别路由控制器是否被指定为所述主导路由控制器;
其中当所述个别路由控制器被指定为所述接入点内的所述主导路由控制器时,所述个别路由控制器被配置为:
至少部分地基于关于所述多个流管理器的健康状况的健康状况检查数据生成所述路由信息;
仅当所述路由数据记录在写入之前将所述个别路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述路由信息并将所述个别路由控制器指定为所述主导路由控制器;以及
将所述路由信息传输到所述路由器装置;并且
其中当另一路由控制器被指定为所述接入点内的所述主导路由控制器时,所述个别路由控制器被配置为:
如果所述路由数据记录有效,则将所述路由信息传输到所述路由器装置;以及
如果所述路由数据记录无效,则:
至少部分地基于关于所述多个流管理器的所述健康状况的健康状况检查数据生成新的路由信息,所述新的路由信息具有比所述路由数据记录内的过去路由信息更高的优先级,以及
仅当所述路由数据记录在所述写入之前将所述另一路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述新的路由信息并将所述个别路由控制器指定为所述主导路由控制器。
条款2.如条款1所述的接入点系统,其中在边界网关协议(BGP)会话内将所述路由信息传输到所述路由器装置。
条款3.如前述条款中任一项所述的接入点系统,其中所述路由信息表示BGP信息,并且其中所述优先级由所述BGP信息内的多出口鉴别器(MED)值指示。
条款4.根据前述条款中任一项所述的接入点系统,其中所述路由信息还指示所述路由器装置如何公告所述接入点系统的可用性以路由寻址到网络地址的数据分组。
条款5.根据前述条款中任一项所述的接入点系统,其中所述路由数据记录的有效性至少部分地基于所述路由数据记录内的指示最近写入到所述路由数据记录的字段来确定。
条款6.一种用于公告控制接入点内的数据分组的路由的路由信息的方法,所述方法包括在所述接入点内的多个路由控制器中的第一路由控制器处:
进行从强一致数据存储装置中读取路由数据记录,所述路由数据记录对应于指定用于存储所述路由信息和用于指定所述接入点内的主导路由控制器的记录;
确定所述路由数据记录无效,且不将所述第一路由控制器指定为所述主导路由控制器;
至少部分地基于关于所述接入点内的多个分组处理器的健康状况的健康状况检查数据生成新的路由信息,所述新的路由信息具有比所述路由数据记录内的过去路由信息更高的优先级;
仅当所述路由数据记录将所述另一路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述新的路由信息并将所述第一路由控制器指定为所述主导路由控制器;
进行从所述强一致数据存储装置中额外读取所述路由数据记录;
确定响应于所述额外读取获得的所述路由数据记录包括所述新的路由信息并将所述第一路由控制器指定为所述主导路由控制器;以及
将所述新的路由信息传输到所述接入点的路由器装置。
条款7.如条款6所述的方法,其中所述强一致数据存储装置是被配置为保证所述路由数据记录的读取的一致性的分布式数据存储系统。
条款8.如条款6和7中任一项所述的方法,还包括周期性地更新所述强一致数据存储装置中的所述路由数据记录以指示所述路由数据记录保持有效。
条款9.如条款8所述的方法,其中周期性地更新所述强一致数据存储装置中的所述路由数据记录以指示所述路由数据记录保持有效包括将心跳值写入到所述路由数据记录。
条款10.如条款9所述的方法,其中周期性地更新所述强一致数据存储装置中的所述路由数据记录以指示所述路由数据记录保持有效包括:仅当所述路由数据记录在个别写入之前将所述路由控制器指定为所述引导路由控制器时才周期性地请求对所述路由数据记录的有条件写入。
条款11.如条款6至10中任一项所述的方法,还包括在所述多个路由控制器中的第二路由控制器处:
从所述强一致数据存储装置中读取包括所述新的路由信息的所述路由数据记录;
确定所述路由数据记录有效,且将所述第一路由控制器指定为所述主导路由控制器;以及
将所述新的路由信息传输到所述接入点的所述路由器装置。
条款12.如条款6至11中任一项所述的方法,还包括在所述多个路由控制器中的第二路由控制器处:
从所述强一致数据存储装置中读取包括所述新的路由信息的所述路由数据记录;
确定所述路由数据记录无效;
至少部分地基于关于所述接入点内的所述多个分组处理器的健康状况的健康状况检查数据生成所述第二路由控制器的路由信息,所述第二路由控制器的所述路由信息具有比所述路由数据记录内的过去路由信息更高的优先级;
仅当所述路由数据记录将所述第一路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述新的路由信息并将所述个别路由控制器指定为所述主导路由控制器;
进行从所述强一致数据存储装置中额外读取所述路由数据记录;
确定响应于所述额外读取获得的所述路由数据记录包括所述第二路由控制器的所述路由信息并将所述第二路由控制器指定为所述主导路由控制器;以及
将所述第二路由控制器的所述路由信息传输到所述路由器装置。
条款13.一种非暂时性计算机可读介质,其包括:
第一指令,其可由实施接入点系统中的多个路由控制器中的个别路由控制器的计算系统执行,其中所述第一指令的执行使所述个别路由控制器:
至少部分地基于关于所述接入点内的多个分组处理器的健康状况的健康状况检查数据生成路由信息,所述路由信息指定如何将在网络上获得的数据分组路由到所述多个分组处理器且具有指定优先级值;以及
仅当所述路由数据记录将特定路由控制器指定为所述主导路由控制器时,才通过所述路由信息、所述个别路由控制器作为主导路由控制器的指示有条件地更新强一致数据存储装置中的路由数据记录;以及
第二指令,其可由实施所述个别路由控制器的所述计算系统执行,其中所述第二指令的执行使所述个别路由控制器:
从所述强一致数据存储装置上的所述路由数据记录中读取信息;
如果所述读取信息将所述个别路由控制器识别为所述主导路由控制器,则:
将从所述路由数据记录中读取的路由信息传输到所述接入点系统上的路由器装置;以及
通过所述个别路由控制器执行所述第一指令,所述个别路由控制器作为所述特定路由控制器且具有从所述读取信息中获得的优先级值作为指定优先级值;以及
如果所述读取信息将另一路由控制器识别为所述主导路由控制器,则:
如果所述读取信息有效,则将从所述路由数据记录中读取的路由信息传输到所述接入点系统上的路由器装置;以及
如果所述读取信息无效,则通过所述另一路由控制器执行所述第一指令,所述另一路由控制器作为所述特定路由控制器并且具有新的优先级值作为所述指定优先级值,所述新的优先级值指示比从所述读取信息中获得的所述优先级值更高的优先级。
条款14.如条款13所述的非暂时性计算机可读介质,其中如果所述读取信息将另一路由控制器识别为所述主导路由控制器并且所述读取信息有效,则所述第二指令的执行还使所述个别路由控制器在将从所述路由数据记录中读取的所述路由信息传输到所述路由器装置之前修改从所述路由数据记录中读取的所述路由信息的优先级值。
条款15.如条款13所述的非暂时性计算机可读介质,还包括第三指令,所述第三指令可由所述计算系统执行以至少部分地通过为每个路由控制器执行所述第二指令来初始化所述多个路由控制器中的每个路由控制器。
条款16.如条款13至15中任一项所述的非暂时性计算机可读介质,其中所述第一指令的执行使所述个别路由控制器通过以下内容有条件地更新所述强一致数据存储装置中的所述路由数据记录:
所述路由信息;
所述个别路由控制器作为所述主导路由控制器的指示;以及
指示所述路由数据记录的有效性的心跳值。
条款17.如条款13至16中任一项所述的非暂时性计算机可读介质,其中所述第二指令的执行使所述个别路由控制器确定从所述路由数据记录中读取的所述信息的有效性包括指示所述路由数据记录已在阈值过去时间段内由所述另一路由控制器写入的值。
条款18.如条款13至17中任一项所述的非暂时性计算机可读介质,还包括第三指令,所述第三指令可由所述计算系统执行以相对于所述多个路由控制器中的每个路由控制器重复执行所述第二指令。
条款19.如条款13至18中任一项所述的非暂时性计算机可读介质,其中所述个别路由控制器作为所述主导路由控制器的所述指示包括所述个别路由控制器的标识符,所述标识符由所述个别路由控制器至少部分地基于所述个别路由控制器的网络地址来确定。
条款20.如条款13至19中任一项所述的非暂时性计算机可读介质,其中所述路由信息还指示所述路由器装置如何公告所述接入点系统的可用性以路由寻址到网络地址的数据分组。
上文描述的所有方法和过程可以在由一个或多个通用计算机或处理器执行的软件代码模块中具体化并且经由所述软件代码模块来完全自动化。所述代码模块可存储在任何类型的非暂时性计算机可读介质或其它计算机存储装置中。所述方法中的一些或所有可以可替代地在专用计算机硬件中具体化。
除非另外特别说明,否则例如“能够”、“可以”、“可能”或“也许”等的条件语言在上下文中通常应理解为用于表示:尽管其它实施方案不包括,但某些实施方案包括某些特征、元件和/或步骤。因此,此类条件语言一般无意暗示一个或多个实施方案无论如何需要特征、元件和/或步骤,或者一个或多个实施方案一定包括用于在具有或不具有用户输入或提示的情况下决定是否在任何特定实施方案中包括或将执行这些特征、元件和/或步骤的逻辑。
除非另外特别说明,否则例如短语“X、Y或Z中的至少一个”的析取语言在上下文中应理解为通常使用的情况以表示项目、项等可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)。因此,这种析取语言一般不意图且不应暗示某些实施方案要求分别存在X中的至少一个、Y中的至少一个或Z中的至少一个。
除非另外明确说明,否则例如“一(a)”或“一(an)”的冠词一般应理解为包括一个或多个所描述的项目。因此,例如“被配置为……的装置”的短语意在包括一个或多个所述装置。此类一个或多个所述装置还可以共同地被配置为执行所陈述的叙述。例如,“被配置为执行叙述A、B和C的处理器”可以包括与被配置为执行叙述B和C的第二处理器结合工作的被配置为执行叙述A的第一处理器。
在本文中描述的和/或在附图中示出的流程图中的任何例程描述、元件或块应当被理解为潜在地表示代码的模块、段或部分,所述代码包括用于实现例程中的特定逻辑功能或元件的一个或多个可执行指令。替代实现方式包括在本文中所述实施方案的范围内,其中如本领域中的技术人员所理解的那样,根据所涉及的功能,元素或功能可删除、或不按照所示出或讨论的顺序执行,包括基本上同步执行或逆序执行。
应强调,可以对上述实施方案做出许多变化和修改,这些变化和修改的元件应当被理解为是在其它可接受的示例之中。在本文中,所有这样的修改和变化意在包括在本公开的范围内,并且受以下权利要求书保护。
Claims (15)
1.一种用于公告控制接入点内的数据分组的路由的路由信息的方法,所述方法包括在所述接入点内的多个路由控制器中的第一路由控制器处:
进行从强一致数据存储装置中读取路由数据记录,所述路由数据记录对应于指定用于存储所述路由信息和用于指定所述接入点内的主导路由控制器的记录;
确定所述路由数据记录无效,且不将所述第一路由控制器指定为所述主导路由控制器;
至少部分地基于关于所述接入点内的多个分组处理器的健康状况的健康状况检查数据生成新的路由信息,所述新的路由信息具有比所述路由数据记录内的过去路由信息更高的优先级;
仅当所述路由数据记录将所述另一路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述新的路由信息并将所述第一路由控制器指定为所述主导路由控制器;
进行从所述强一致数据存储装置中额外读取所述路由数据记录;
确定响应于所述额外读取获得的所述路由数据记录包括所述新的路由信息并将所述第一路由控制器指定为所述主导路由控制器;以及
将所述新的路由信息传输到所述接入点的路由器装置。
2.如权利要求1所述的方法,其中所述强一致数据存储装置是被配置为保证所述路由数据记录的读取的一致性的分布式数据存储系统。
3.如权利要求1所述的方法,还包括周期性地更新所述强一致数据存储装置中的所述路由数据记录以指示所述路由数据记录保持有效。
4.如权利要求3所述的方法,其中周期性地更新所述强一致数据存储装置中的所述路由数据记录以指示所述路由数据记录保持有效包括将心跳值写入到所述路由数据记录。
5.如权利要求4所述的方法,其中周期性地更新所述强一致数据存储装置中的所述路由数据记录以指示所述路由数据记录保持有效包括:仅当所述路由数据记录在个别写入之前将所述路由控制器指定为所述主导路由控制器时才周期性地请求对所述路由数据记录的有条件写入。
6.如权利要求1所述的方法,还包括在所述多个路由控制器中的第二路由控制器处:
从所述强一致数据存储装置中读取包括所述新的路由信息的所述路由数据记录;
确定所述路由数据记录有效,且将所述第一路由控制器指定为所述主导路由控制器;以及
将所述新的路由信息传输到所述接入点的所述路由器装置。
7.如权利要求1所述的方法,还包括在所述多个路由控制器中的第二路由控制器处:
从所述强一致数据存储装置中读取包括所述新的路由信息的所述路由数据记录;
确定所述路由数据记录无效;
至少部分地基于关于所述接入点内的所述多个分组处理器的健康状况的健康状况检查数据生成所述第二路由控制器的路由信息,所述第二路由控制器的所述路由信息具有比所述路由数据记录内的过去路由信息更高的优先级;
仅当所述路由数据记录将所述第一路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述新的路由信息并将所述个别路由控制器指定为所述主导路由控制器;
进行从所述强一致数据存储装置中额外读取所述路由数据记录;
确定响应于所述额外读取获得的所述路由数据记录包括所述第二路由控制器的所述路由信息并将所述第二路由控制器指定为所述主导路由控制器;以及
将所述第二路由控制器的所述路由信息传输到所述路由器装置。
8.一种接入点,其包括:
路由器装置,其被配置为接收路由信息,所述路由信息指示所述路由器装置如何将在网络上获得的数据分组路由到所述接入点内的多个流管理器;以及
一个或多个处理器,其被配置为实施所述多个流管理器;
其中所述一个或多个处理器还被配置为实施将所述路由信息冗余地传输到所述路由器装置的多个路由控制器,其中个别路由控制器被配置为:
从强一致数据存储装置中读取路由数据记录,所述路由数据记录对应于指定用于存储所述路由信息和用于指定所述接入点内的主导路由控制器的记录;以及
从所述路由数据记录中确定所述个别路由控制器是否被指定为所述主导路由控制器;
其中当所述个别路由控制器被指定为所述接入点内的所述主导路由控制器时,所述个别路由控制器被配置为:
至少部分地基于关于所述多个流管理器的健康状况的健康状况检查数据生成所述路由信息;
仅当所述路由数据记录在写入之前将所述个别路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述路由信息并将所述个别路由控制器指定为所述主导路由控制器;以及
将所述路由信息传输到所述路由器装置;并且
其中当另一路由控制器被指定为所述接入点内的所述主导路由控制器时,所述个别路由控制器被配置为:
如果所述路由数据记录有效,则将所述路由信息传输到所述路由器装置;以及
如果所述路由数据记录无效,则:
至少部分地基于关于所述多个流管理器的所述健康状况的健康状况检查数据生成新的路由信息,所述新的路由信息具有比所述路由数据记录内的过去路由信息更高的优先级,以及
仅当所述路由数据记录在所述写入之前将所述另一路由控制器指定为所述主导路由控制器时,才有条件地更新所述强一致数据存储装置中的所述路由数据记录,其中所述更新包括所述新的路由信息并将所述个别路由控制器指定为所述主导路由控制器。
9.如权利要求8所述的接入点,其中当另一路由控制器被指定为所述接入点内的所述主导路由控制器并且所述读取信息有效时,所述个别路由控制器还被配置为在将从所述路由数据记录中读取的所述路由信息传输到所述路由器装置之前修改从所述路由数据记录中读取的所述路由信息的优先级值。
10.如权利要求8和9中任一项所述的接入点,其中为了有条件地更新所述强一致数据存储装置中的所述路由数据记录,所述个别路由控制器被配置为通过以下内容有条件地更新所述强一致数据存储装置中的所述路由数据记录:
所述路由信息;
所述个别路由控制器作为所述主导路由控制器的指示;以及
指示所述路由数据记录的有效性的心跳值。
11.如权利要求8至10中任一项所述的接入点,其中当另一路由控制器被指定为所述接入点内的所述主导路由控制器时,所述个别路由控制器被配置为至少部分地基于数据路由数据记录是否包括指示所述路由数据记录已在阈值过去时间段内由所述另一路由控制器写入的值来确定所述路由数据记录的有效性。
12.如权利要求8至11中任一项所述的接入点,其中使用所述主导路由控制器的标识符指定所述路由数据记录内的所述主导路由控制器,所述标识符至少部分地基于所述主导路由控制器的网络地址。
13.如权利要求8至12中任一项所述的接入点,其中所述路由信息还指示所述路由器装置如何公告所述接入点系统的可用性以路由寻址到网络地址的数据分组。
14.如权利要求8至13中任一项所述的接入点,其中在边界网关协议(BGP)会话内将所述路由信息传输到所述路由器装置。
15.如权利要求8至14中任一项所述的接入点,其中所述路由信息表示BGP信息,并且其中所述优先级由所述BGP信息内的多出口鉴别器(MED)值指示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/366,709 US10855580B2 (en) | 2019-03-27 | 2019-03-27 | Consistent route announcements among redundant controllers in global network access point |
US16/366,709 | 2019-03-27 | ||
PCT/US2020/024445 WO2020198218A1 (en) | 2019-03-27 | 2020-03-24 | Consistent route announcements among redundant controllers in global network access point |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113826363A true CN113826363A (zh) | 2021-12-21 |
CN113826363B CN113826363B (zh) | 2023-08-22 |
Family
ID=70296080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080028434.6A Active CN113826363B (zh) | 2019-03-27 | 2020-03-24 | 全局网络接入点中冗余控制器之间的一致路由公告 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10855580B2 (zh) |
CN (1) | CN113826363B (zh) |
DE (1) | DE112020001459T5 (zh) |
WO (1) | WO2020198218A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629845A (zh) * | 2022-03-16 | 2022-06-14 | 新浪网技术(中国)有限公司 | 一种基于容器的路由型数据中心网络管理方法及系统 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10972740B2 (en) | 2018-03-06 | 2021-04-06 | Forcepoint, LLC | Method for bandwidth reduction when streaming large format multi-frame image data |
US11134087B2 (en) | 2018-08-31 | 2021-09-28 | Forcepoint, LLC | System identifying ingress of protected data to mitigate security breaches |
US11140190B2 (en) | 2018-10-23 | 2021-10-05 | Forcepoint, LLC | Automated user module assessment |
US11048611B2 (en) | 2018-11-29 | 2021-06-29 | Forcepoint, LLC | Web extension JavaScript execution control by service/daemon |
WO2020151814A1 (de) * | 2019-01-23 | 2020-07-30 | Siemens Aktiengesellschaft | Verfahren zur ausfallsicheren datenübertragung, netzwerk-knoten, computerprogramm und computerlesbares medium |
US11132973B2 (en) | 2019-02-01 | 2021-09-28 | Forcepoint, LLC | System for capturing images from applications rendering video to a native platform with a graphics rendering library |
US10917382B2 (en) * | 2019-04-03 | 2021-02-09 | Forcepoint, LLC | Virtual point of presence in a country to allow for local web content |
KR20200138565A (ko) * | 2019-05-31 | 2020-12-10 | 삼성전자주식회사 | 통신 네트워크에서 복수의 원격 무선 헤드들을 관리하기 위한 방법 및 장치 |
US11494229B2 (en) * | 2019-11-25 | 2022-11-08 | Google Llc | Rule violation detection |
US11431743B2 (en) | 2020-02-03 | 2022-08-30 | Forcepoint, LLC | Cross domain dynamic data protection intermediary message transform platform |
US10817329B1 (en) * | 2020-02-07 | 2020-10-27 | Coupang Corp. | Systems and methods for centralization and diagnostics for live virtual server performance data |
US11394636B1 (en) | 2020-12-10 | 2022-07-19 | Amazon Technologies, Inc. | Network connection path obfuscation using global access points |
US11310309B1 (en) | 2020-12-11 | 2022-04-19 | Amazon Technologies, Inc. | Arc jump: per-key selection of an alternative server when implemented bounded loads |
US11140220B1 (en) * | 2020-12-11 | 2021-10-05 | Amazon Technologies, Inc. | Consistent hashing using the power of k choices in server placement |
US11575572B2 (en) * | 2021-04-13 | 2023-02-07 | Juniper Networks, Inc. | Network controller horizontal scaling for network device configuration sessions management |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6628649B1 (en) * | 1999-10-29 | 2003-09-30 | Cisco Technology, Inc. | Apparatus and methods providing redundant routing in a switched network device |
US6954436B1 (en) * | 2001-02-28 | 2005-10-11 | Extreme Networks, Inc. | Method and apparatus for selecting redundant routers using tracking |
US20070133545A1 (en) * | 2005-12-12 | 2007-06-14 | Kabushiki Kaisha Toshiba | Bridging device and method and computer readable medium for controlling the same |
US20100106866A1 (en) * | 2008-10-24 | 2010-04-29 | Juniper Networks, Inc. | Flow consistent dynamic load balancing |
WO2011116731A2 (zh) * | 2011-04-29 | 2011-09-29 | 华为技术有限公司 | 一种路由更新方法及路由器 |
US20110314119A1 (en) * | 2010-06-18 | 2011-12-22 | Deepak Kakadia | Massively scalable multilayered load balancing based on integrated control and data plane |
CN102571527A (zh) * | 2010-12-09 | 2012-07-11 | 上海杉达学院 | 基于虚拟路由冗余的备份及负载均衡系统 |
US20120287791A1 (en) * | 2011-05-13 | 2012-11-15 | Kang Xi | Balancing load in a network, such as a data center network, using flow based routing |
US20130138893A1 (en) * | 2011-11-30 | 2013-05-30 | Fujitsu Limited | Storage device, computer-readable recording medium, and storage control method |
US20140310418A1 (en) * | 2013-04-16 | 2014-10-16 | Amazon Technologies, Inc. | Distributed load balancer |
US20140310391A1 (en) * | 2013-04-16 | 2014-10-16 | Amazon Technologies, Inc. | Multipath routing in a distributed load balancer |
US20150149635A1 (en) * | 2013-11-27 | 2015-05-28 | Avi Networks | Method and system for distributed load balancing |
US9407539B1 (en) * | 2011-06-24 | 2016-08-02 | Amazon Technologies, Inc. | Techniques for utilizing network destination identifiers simultaneously announced from multiple locations |
US20170013508A1 (en) * | 2015-07-09 | 2017-01-12 | Cisco Technology, Inc. | Stateless load-balancing across multiple tunnels |
US20170180567A1 (en) * | 2014-11-01 | 2017-06-22 | Somos, Inc. | Toll-free telecommunications and data management platform |
US9871712B1 (en) * | 2013-04-16 | 2018-01-16 | Amazon Technologies, Inc. | Health checking in a distributed load balancer |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427174B1 (en) | 1998-11-12 | 2002-07-30 | Cisco Technology, Inc. | Dynamic IP addressing and quality of service assurance |
US7272653B2 (en) | 2000-09-28 | 2007-09-18 | International Business Machines Corporation | System and method for implementing a clustered load balancer |
US20030182410A1 (en) | 2002-03-20 | 2003-09-25 | Sapna Balan | Method and apparatus for determination of optimum path routing |
US20040181522A1 (en) * | 2003-01-16 | 2004-09-16 | Jardin Cary A. | Shared memory router system and method for node communication in a distributed system |
WO2004100493A1 (en) | 2003-05-09 | 2004-11-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Distributed caching and redistribution system and method in a wireless data network |
US20060064478A1 (en) * | 2004-05-03 | 2006-03-23 | Level 3 Communications, Inc. | Geo-locating load balancing |
US7797426B1 (en) | 2008-06-27 | 2010-09-14 | BitGravity, Inc. | Managing TCP anycast requests |
US8175006B2 (en) | 2009-12-08 | 2012-05-08 | At&T Intellectual Property I, L.P. | Multi-path load balancing using route controller |
US8607014B2 (en) | 2009-12-22 | 2013-12-10 | At&T Intellectual Property I, L.P. | Multi-autonomous system anycast content delivery network |
US8826413B2 (en) | 2009-12-30 | 2014-09-02 | Motorla Solutions, Inc. | Wireless local area network infrastructure devices having improved firewall features |
US8520615B2 (en) | 2010-03-26 | 2013-08-27 | Juniper Networks, Inc. | Breakout gateway for mobile data traffic |
US8498295B1 (en) | 2010-11-23 | 2013-07-30 | Juniper Networks, Inc. | Modular lightweight tunneling mechanisms for transitioning between network layer protocols |
US8774213B2 (en) | 2011-03-30 | 2014-07-08 | Amazon Technologies, Inc. | Frameworks and interfaces for offload device-based packet processing |
US9160650B2 (en) | 2013-06-17 | 2015-10-13 | Futurewei Technologies, Inc. | Enhanced flow entry table cache replacement in a software-defined networking switch |
US10212598B2 (en) * | 2013-12-04 | 2019-02-19 | Nokia Technologies Oy | Access point information for wireless access |
US9559964B2 (en) | 2014-01-31 | 2017-01-31 | Verizon Digital Media Services Inc. | Control message routing within anycast reliant platforms |
US9276841B2 (en) | 2014-01-31 | 2016-03-01 | Edgecast Networks, Inc. | Adapting network control messaging for anycast reliant platforms |
US10356689B2 (en) | 2015-03-06 | 2019-07-16 | Futurewei Technologies, Inc. | Method and system with separation of session anchor and forwarding anchor |
US10623486B2 (en) * | 2015-06-15 | 2020-04-14 | Redis Labs Ltd. | Methods, systems, and media for providing distributed database access during a network split |
US9935857B1 (en) | 2015-12-17 | 2018-04-03 | 8X8, Inc. | Analysis of system conditions from endpoint status information |
WO2017122763A1 (ja) | 2016-01-15 | 2017-07-20 | 株式会社ナノテム | 非接触搬送装置および非接触搬送システム |
US10462054B2 (en) * | 2016-02-04 | 2019-10-29 | Trinity Mobile Networks, Inc. | Overloading address space for improved routing, diagnostics, and content-relay network |
US10341236B2 (en) | 2016-09-30 | 2019-07-02 | Nicira, Inc. | Anycast edge service gateways |
US10547499B2 (en) * | 2017-09-04 | 2020-01-28 | International Business Machines Corporation | Software defined failure detection of many nodes |
US10749945B2 (en) | 2017-10-09 | 2020-08-18 | Level 3 Communications, Llc | Cross-cluster direct server return with anycast rendezvous in a content delivery network (CDN) |
US10574627B2 (en) | 2018-03-07 | 2020-02-25 | Cisco Technology, Inc. | Dynamic orthogonal local DHCP IP pools for wireless access points |
US10721124B2 (en) | 2018-04-06 | 2020-07-21 | Cisco Technology, Inc. | Cloud management connectivity assurance |
US10880218B2 (en) | 2018-11-21 | 2020-12-29 | Amazon Technologies, Inc. | Load balanced access to distributed endpoints using resiliently advertised global network addresses |
-
2019
- 2019-03-27 US US16/366,709 patent/US10855580B2/en active Active
-
2020
- 2020-03-24 CN CN202080028434.6A patent/CN113826363B/zh active Active
- 2020-03-24 WO PCT/US2020/024445 patent/WO2020198218A1/en active Application Filing
- 2020-03-24 DE DE112020001459.2T patent/DE112020001459T5/de active Pending
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6628649B1 (en) * | 1999-10-29 | 2003-09-30 | Cisco Technology, Inc. | Apparatus and methods providing redundant routing in a switched network device |
US6954436B1 (en) * | 2001-02-28 | 2005-10-11 | Extreme Networks, Inc. | Method and apparatus for selecting redundant routers using tracking |
US20070133545A1 (en) * | 2005-12-12 | 2007-06-14 | Kabushiki Kaisha Toshiba | Bridging device and method and computer readable medium for controlling the same |
US20100106866A1 (en) * | 2008-10-24 | 2010-04-29 | Juniper Networks, Inc. | Flow consistent dynamic load balancing |
US20110314119A1 (en) * | 2010-06-18 | 2011-12-22 | Deepak Kakadia | Massively scalable multilayered load balancing based on integrated control and data plane |
CN102571527A (zh) * | 2010-12-09 | 2012-07-11 | 上海杉达学院 | 基于虚拟路由冗余的备份及负载均衡系统 |
WO2011116731A2 (zh) * | 2011-04-29 | 2011-09-29 | 华为技术有限公司 | 一种路由更新方法及路由器 |
US20120287791A1 (en) * | 2011-05-13 | 2012-11-15 | Kang Xi | Balancing load in a network, such as a data center network, using flow based routing |
US9407539B1 (en) * | 2011-06-24 | 2016-08-02 | Amazon Technologies, Inc. | Techniques for utilizing network destination identifiers simultaneously announced from multiple locations |
US20130138893A1 (en) * | 2011-11-30 | 2013-05-30 | Fujitsu Limited | Storage device, computer-readable recording medium, and storage control method |
US20140310418A1 (en) * | 2013-04-16 | 2014-10-16 | Amazon Technologies, Inc. | Distributed load balancer |
US20140310391A1 (en) * | 2013-04-16 | 2014-10-16 | Amazon Technologies, Inc. | Multipath routing in a distributed load balancer |
US9871712B1 (en) * | 2013-04-16 | 2018-01-16 | Amazon Technologies, Inc. | Health checking in a distributed load balancer |
US20150149635A1 (en) * | 2013-11-27 | 2015-05-28 | Avi Networks | Method and system for distributed load balancing |
US20170180567A1 (en) * | 2014-11-01 | 2017-06-22 | Somos, Inc. | Toll-free telecommunications and data management platform |
US20170013508A1 (en) * | 2015-07-09 | 2017-01-12 | Cisco Technology, Inc. | Stateless load-balancing across multiple tunnels |
Non-Patent Citations (5)
Title |
---|
HITESH BALLANI, PAUL FRANCIS: "《Towards a global IP anycast service》", 《ACM SIGCOMM COMPUTER COMMUNICATION REVIEW》 * |
HITESH BALLANI, PAUL FRANCIS: "《Towards a global IP anycast service》", 《ACM SIGCOMM COMPUTER COMMUNICATION REVIEW》, 22 August 2005 (2005-08-22) * |
张微;吴建平;徐恪;付立政;: "边界网关协议BGP4路由收敛问题研究进展", 小型微型计算机系统, no. 05 * |
杜小杰,蔡照鹏: "《WIA-PA多路径路由设计与研究》", 《电脑知识与技术》 * |
杜小杰,蔡照鹏: "《WIA-PA多路径路由设计与研究》", 《电脑知识与技术》, 30 November 2012 (2012-11-30) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629845A (zh) * | 2022-03-16 | 2022-06-14 | 新浪网技术(中国)有限公司 | 一种基于容器的路由型数据中心网络管理方法及系统 |
CN114629845B (zh) * | 2022-03-16 | 2024-02-02 | 新浪技术(中国)有限公司 | 一种基于容器的路由型数据中心网络管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
DE112020001459T5 (de) | 2021-12-09 |
CN113826363B (zh) | 2023-08-22 |
WO2020198218A1 (en) | 2020-10-01 |
US20200314004A1 (en) | 2020-10-01 |
US10855580B2 (en) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113826363B (zh) | 全局网络接入点中冗余控制器之间的一致路由公告 | |
US11843657B2 (en) | Distributed load balancer | |
US10826832B2 (en) | Load balanced access to distributed scaling endpoints using global network addresses | |
CN109937401B (zh) | 经由业务旁路进行的负载均衡虚拟机的实时迁移 | |
US20180359177A1 (en) | Health checking in a distributed load balancer | |
US9553809B2 (en) | Asymmetric packet flow in a distributed load balancer | |
US10135914B2 (en) | Connection publishing in a distributed load balancer | |
US9432245B1 (en) | Distributed load balancer node architecture | |
US20170302576A1 (en) | MAPPING BETWEEN CLASSICAL URLs AND ICN NETWORKS | |
US9559961B1 (en) | Message bus for testing distributed load balancers | |
US10972554B1 (en) | Management of distributed endpoints | |
US9871712B1 (en) | Health checking in a distributed load balancer | |
US11451477B2 (en) | Load balanced access to distributed endpoints | |
US20200374341A1 (en) | Cross-cluster direct server return with anycast rendezvous in a content delivery network (cdn) | |
US9942153B2 (en) | Multiple persistant load balancer system | |
US11425042B2 (en) | Managing data throughput in a distributed endpoint network | |
CN114503531B (zh) | 分布式端点的管理 | |
US11552898B2 (en) | Managing data throughput in a distributed endpoint network | |
US11431577B1 (en) | Systems and methods for avoiding duplicate endpoint distribution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |