CN113196725B - 对使用全局网络地址的分布式端点进行负载平衡式访问的系统和方法 - Google Patents

对使用全局网络地址的分布式端点进行负载平衡式访问的系统和方法 Download PDF

Info

Publication number
CN113196725B
CN113196725B CN201980074714.8A CN201980074714A CN113196725B CN 113196725 B CN113196725 B CN 113196725B CN 201980074714 A CN201980074714 A CN 201980074714A CN 113196725 B CN113196725 B CN 113196725B
Authority
CN
China
Prior art keywords
network
access point
endpoint
data packet
network address
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.)
Active
Application number
CN201980074714.8A
Other languages
English (en)
Other versions
CN113196725A (zh
Inventor
安东·S·雷德林
哈尔沃·雷伊泽尔·琼斯
哈迪普·辛格·尤博尔
丹尼斯·马里纳斯
迪拉杰·古普塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN113196725A publication Critical patent/CN113196725A/zh
Application granted granted Critical
Publication of CN113196725B publication Critical patent/CN113196725B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1038Load balancing arrangements to avoid a single path through a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0273Traffic management, e.g. flow control or congestion control adapting protocols for flow control or congestion control to wireless environment, e.g. adapting transmission control protocol [TCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/08Load balancing or load distribution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W36/00Hand-off or reselection arrangements
    • H04W36/0005Control or signalling for completing the hand-off
    • H04W36/0011Control or signalling for completing the hand-off for data sessions of end-to-end connection
    • H04W36/0033Control or signalling for completing the hand-off for data sessions of end-to-end connection with transfer of context information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W36/00Hand-off or reselection arrangements
    • H04W36/08Reselecting an access point
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

描述了用于实现全局化网络地址的负载平衡式使用的系统和方法,该全局化网络地址可在整个网络中寻址以访问网络可访问服务。提供了广告所述全局化网络地址的可用性的全局访问点的集合。在接收到访问网络可访问服务的请求时,全局访问点能够基于数据中心之间的流量的期望分布从多个数据中心中选择服务的端点。然后,所述访问点将所述流量转发到选定的端点。在一个实施方案中,所述访问点应用网络地址转换以使得所述流量能够被路由到所述端点而无需在所述端点处终止连接。所述访问点可以使用各种技术来确保网络的弹性和可用端点的知识。

Description

对使用全局网络地址的分布式端点进行负载平衡式访问的系 统和方法
背景技术
一般而言,计算设备利用通信网络或一系列通信网络来交换数据。公司和组织运营的计算机网络将许多计算设备互连,以支持操作或向第三方提供服务。计算系统可以位于单个地理位置或位于多个不同的地理位置(例如,经由私人或公共通信网络互连)。具体地说,数据中心或数据处理中心(本文通常称为“数据中心”)可以包括许多互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私人数据中心,或可以是代表公众或为公众利益运营的公共数据中心。
因为任何个别的计算设备的资源都是有限的,所以已知各种技术试图平衡设备之间的资源使用。例如,“负载平衡器”设备可以放置在请求使用计算资源的客户端设备与提供这种资源的服务器之间。负载平衡器可能会尝试在服务器之间分布请求,从而允许服务器协同工作以提供这种资源。使用这种负载平衡器的一个重大缺点是,它可能会导致单点故障,从而如果负载平衡器发生故障,则对服务器的请求将失败,并且资源将变得不可用。
本领域中已知的另一种类型的负载平衡是域名系统(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会话进行通信。
具体实施方式
一般而言,本公开的各方面涉及使用一个或多个全局网络地址来提供对散布在多个地理位置的计算设备池的负载平衡式访问。更具体地,本公开的各方面涉及提供经由全局网络地址能到达的分布式访问点集合,所述访问点至少部分地基于对请求进行负载平衡来选择请求并将请求路由到池内的端点设备。在一个实施方案中,访问点利用任意播路由技术来广告与计算设备池相关联的全局网络地址的可用性,从而吸引寻址到那些地址的流量。在接收到访问池的请求时,访问点可以基于诸如到端点的网络性能标准和端点上的负载之类的因素来选择池内的适当端点。然后,访问点可以充当代理,将请求路由到端点,并促进端点与请求设备之间的进一步通信。访问点可以实现本文公开的多种技术,以提供对端点设备池的有弹性的高效的访问。如本文所公开的,访问点可以分布在广阔的地理区域中,从而消除了系统内的单点故障。此外,通过利用任意播广告,即使请求被寻址到单个网络地址,访问点也可以在池中分布请求,从而避免了与其他技术(诸如基于DNS的负载平衡)相关联的复杂性和延迟。通过充当客户端与设备池之间的代理,而不是直接服务资源,访问点可以独立于外部设备选择将请求路由到任意播的地址的方式来控制对池的请求的分布,从而避免了与传统的任意播联网相关联的损害。因此,本文公开的实施方案显著改进了先前的负载平衡技术。
本公开的实施方案可以说明性地在广阔的地理区域中实现。在一个实施方案中,本公开在全球因特网上实现,并提供全局因特网协议(IP)地址,诸如IP版本4(IPv4)或IP版本6(IPv6)地址。不同的数据中心可以存在于不同的地理位置,并且每个数据中心可以包括提供对基于网络的服务的访问的一个或多个端点设备。这种服务的示例包括但不限于web托管、数据存储、按需计算服务等。每个数据中心处的资源可能是有限的,因此基于网络的服务的运营商可能希望在这些服务之间分布负载。为了简化基于网络的服务的操作(例如,从而避免与基于DNS的负载平衡有关的复杂性),可能期望为运营商提供该服务的相对静态网络地址的单个集合,这些网络地址可独立于提供服务访问的各个端点进行管理。这种网络地址在本文中被概括地称为“全局”网络地址。如本文所使用的,术语“全局”旨在指代与服务有关的网络地址的范围(例如,该网络地址适用于整个服务,而不是个别的设备),并且不一定暗示这种网络地址可在全球访问。然而,本公开的实施方案可以被实现为提供通常可从诸如因特网之类的全球网络访问的全局网络地址。
为了提供用于服务的全局网络地址,公开了一种提供在地理上进行分布的全局访问点的集合的系统。与上述类似,在本上下文中,术语“全局”访问点通常旨在指代与个别的端点相反的通常提供服务访问的访问点,并不一定暗示着这种访问点在全球存在(尽管这种配置是可能的)。但是,通常,访问点是在地理上进行分布的。在一个实施方案中,全局访问点位于与提供服务的端点的数据中心的地理位置不同且更多的地理位置,从而减小了全局访问点与尝试访问服务的客户端设备之间的平均网络距离。
每个全局访问点可以利用任意播技术经由与服务相关联的一个或多个全局网络地址来广告服务的可用性。说明性地,每个访问点可以通过将边界网关协议(“BGP”)“发言人”包括在内以向邻近网络通告全局网络地址的可用性来利用BGP广告全局网络地址。全局访问点因此可以将流量地址吸引到全局网络地址。如以下更详细公开的,全局访问点在某些情况下可以“塑造”BGP通告,以提高基于网络的服务对网络中断的弹性。例如,全局访问点可以将其通告的全局网络地址划分为两组,并为服务指派来自每个组的至少一个网络地址。全局访问点然后可以向不同的邻近网络通告每组地址。以这种方式,每个访问点可以有效地创建到达该点的两条路径:使用第一组的地址通过第一邻居,或者使用第二组的地址通过第二邻居。因此,如果一个邻近网络以某种方式发生故障,则存在到达访问点的替代路径。此外,因为每个访问点都可以这种方式进行操作,所以,如果一个访问点完全失效,则可以自动地经由传统的任意播路由机制将流量路由到另一访问点。尽管本文提供的示例涉及两个组,但是可以提供任何数量的组。
为了提供更进一步的弹性,在某些情况下,每个访问点可以根据所广告的全局网络地址的特定子集来分离流量,并利用不同的设备或程序线程来处理寻址到每个子集的流量。以此方式,如果一个子集的流量对于访问点的操作是有问题的(例如,由于与该子集的全局网络地址有关的错配置),则不太可能影响设备或线程处理另一子集的流量的操作。在一个实施方案中,访问点使用不同的网络地址组的组合以及每个网络组的子集的分离处理。此外,服务可以在每个组的子集之间混洗,使得如果为两个服务指派了在一个组的公共子集内的网络地址,则可能为所述两个服务指派在第二组的不同子集内的网络地址。在该配置下,如果特定服务的配置引起访问点相对于一个组的子集的操作出现问题,则将可能仍可经由替代组到达其他服务(其中它们的地址不太可能与有问题的服务位于同一子集上)。通过增加地址组和子集的数量,可以逐步减少有问题的服务影响的服务总数。
在接收到访问服务的请求之后,可以将全局访问点配置成将流量路由到提供服务的数据中心内的适当端点。为此,可能要求访问点知道端点的网络地址。在一个实施方案中,每个数据中心配置有资源管理器设备,该资源管理器设备维持提供服务访问的端点的列表。资源管理器可以将端点告知访问点,包括端点的网络地址信息。因此,在接收到访问服务的请求时,每个访问点可以被配置成选择该服务的可用端点并将该请求路由到该端点。如以下将要讨论的,可以基于标准的组合来选择端点,所述标准包括但不限于到端点的网络性能标准(例如,就等待时间而言)和端点上的所需负载平衡。
在一个实施方案中,为了将流量路由到端点,每个访问点被配置成利用网络地址转换(“NAT”)。NAT技术在本领域中是已知的,因此本文将不再详细描述。但是,通常,NAT技术使设备能够充当两个设备之间的中间人,同时重写每个数据包的各个方面(诸如源和目的地网络地址),以促进设备之间的通信。根据本公开的实施方案,每个访问点可以操作以用其自己的网络地址(例如,唯一地标识全局访问点的单播网络地址)替换请求设备的源网络地址,以及用提供该服务的端点的网络地址替换目的地网络地址(例如,服务的全局网络地址)。然后,访问点可以将数据包路由到端点,从端点接收响应(如有),执行源和目的地的反向转换(例如,用全局网络地址替换响应的源,以及用请求设备的网络地址替换响应的目的地),以及将数据包返回给请求设备。在一个实施方案中,访问点可以在利用NAT时利用端口转换(本领域中已知)来促进流量流(相互关连数据包的序列)的区分,以在处理来自多个请求设备的流量时确保地址的正确转换。
有利地,使用NAT使得访问点能够将从客户端设备接收到的流量转发到端点,而对客户端设备与端点之间的连接的干扰最小。例如,通过利用NAT,不需要访问点充当某些网络协议(诸如传输控制协议(TCP))的“终止”点。替代路由技术可以例如使访问点接受来自客户端设备的TCP连接,并且初始化到端点的第二TCP连接。维持多个这种连接(以及它们之间的对应关系)可以显著增加访问点的资源使用,从而降低其路由寻址到全局网络地址的流量的能力。因此,使用NAT可以提供优于这种技术的益处。
此外,在访问点处使用NAT使得能够将流量导向到与端点所利用的任何地址都不同的全局网络地址,从而防止泄露端点实际利用的地址。这样,可以保护端点免于直接接收流量。这又可以减少或消除端点对网络攻击(诸如拒绝服务(DoS)攻击)的脆弱性。以这种方式,全局访问点可以提供类似于传统内容交付网络(CDN)所提供的益处。但是,与CDN不同,访问点无需复制服务功能(例如,通过在CDN内存在的每个点处实现web服务器)。而是,本公开的访问点可以使流量能够流过访问点,从而使得请求设备的数据包能够到达提供服务的端点。由于这个原因,本文所公开的全局访问点可以提供比CDN大的功能范围,从而实现在任意数量的不同的基于网络的服务之间进行负载平衡和分布。
在另一个实施方案中,为了将流量路由到端点,每个访问点被配置成利用封装。封装是已知的联网技术,因此本文将不进行详细描述。但是,通常可以利用封装将附加信息(通常为标头的形式,且有时也为标尾的形式)添加到数据包,从而“包装”或封装数据包以产生封装的数据包。在本公开的上下文中,可以利用封装来在每个访问点和端点之间提供“网络隧道”。具体地,当在访问点处从客户端设备接收到数据包并将其寻址到由端点提供的服务的网络地址时,访问点可以用附加信息封装数据包,使得数据包能够被路由到选定的端点,诸如端点的网络地址。然后可以将封装的数据包通过物理网络路由到端点。端点可以“解封装”封装的数据包以移除附加信息,并处理解封装的数据包,就像它是直接从客户端设备接收到的那样。
在一个实施方案中,端点可以经由将端点连接到客户端设备的物理网络来直接响应客户端设备。在另一个实施方案中,端点可以通过封装响应数据包并将封装的响应数据包传输回访问点来响应客户端设备。访问点继而可以解封装响应数据包并将响应数据包返回给客户端。将响应从端点直接返回给客户端设备可以有益地减少访问点的工作负荷,并且还可以减少将访问点连接到端点的物理网络上的流量。但是,可能需要直接返回响应,以利用将端点连接到客户端设备的物理网络,它可能不如将访问点连接到端点的物理网络那么鲁棒。例如,在端点和访问点经由私人网络连接而访问点、端点和客户端设备经由公共网络(诸如因特网)连接的情况下,通过访问点返回响应(而不是直接返回)可能是优选的,因为最小化在公共网络上行进的总距离可能是优选的(例如,在访问点比端点更靠近客户端设备的情况下)。
通常,与使用NAT将数据包从访问点路由到端点相比,在访问点与端点之间封装数据包可以增加访问点和端点的计算资源使用率。但是,封装也可以提供优于NAT实现方式的益处。例如,在客户端设备的数据包在TCP会话期间被路由到不同的全局访问点的情况下,封装可以提供TCP会话的弹性。由于网络处理不同访问点的任意播广告的方式的潜在变化,这种路由可以例如基于客户端设备与不同访问点之间的网络的操作而发生。在访问点利用NAT将数据包路由到端点的情况下,每个访问点可以独立地维持NAT信息。因此,如果客户端设备数据包被路由到不同的访问点,则该第二访问点可能没有足够的信息来良好地接管客户端的通信(例如,第二访问点的变换后的数据包可能与在初始访问点处本该生成的内容不同)。这可能导致客户端设备和端点的TCP会话断开,从而要求客户端设备重新建立TCP连接。
相比之下,封装可以实现在访问点之间良好地处理客户端请求的重新路由。在NAT或封装实现方式下,每个访问点可以被配置成以一致的方式选择端点(例如,应用相同的选择算法)。因此,将期望客户端设备数据包被路由到同一端点,而不管它们最初发送到的访问点如何。此外,通过使用封装,在将数据包路由到端点时,无需改变初始客户端设备数据包的数据。而是,该数据可以被封装(例如,具有使得能够路由到端点的附加信息),并且在解封装之后在端点处重新获得该数据。因此,即使将客户端数据包路由到不同的访问点,解封装后端点可用的最终数据也可以是相同的,使得即使数据流经不同的访问点,端点也能够维持与客户端设备的TCP会话。
在一些实施方案中,为了进一步提高利用封装的实现方式中的性能,每个访问点可以被配置成协助端点建立与客户端设备的面向连接的通信会话,诸如TCP会话。面向连接的通信会话通常需要会话初始化阶段,在该阶段会话的两方进行通信以建立对通信状态的相互理解。例如,TCP会话利用“三次握手”。TCP三次握手在本领域中是已知的,因此本文将不做详细描述。但是,简而言之,当第一方向第二方发送同步(“SYN”)数据包(包括在会话期间要使用的第一方序列号),第二方以同步-确认(“SYN-ACK”)数据包(确认第一方序列号并包括第二方序列号)做出响应,并且第一方使用确认(“ACK”)数据包(确认第二方序列号)对SYN-ACK数据包做出响应,就建立了TCP会话。因为三次握手需要各方之间进行三个单独的通信,所以握手期间各方之间的等待时间的增加放大三倍。在本公开的上下文中,例如,如果客户端设备与端点之间的通信引致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被实现为虚拟化设备的情况下,当端点202的当前集合具有超过期望的上限使用参数的使用度量时,资源管理器206可以生成和提供新的虚拟化设备,并且当度量下降到低于下限使用参数时,该资源管理器可以使虚拟化设备“自旋减慢”以及移除虚拟化设备。资源管理器206可以进一步被配置成在修改池201内的端点202的数量时将池201内的端点202的网络地址信息通知给全局访问点106,使得访问点106可以将流量寻址到端点202。
另外,图2的数据中心110包括健康检查设备204,该健康检查设备被配置成监视池201内的端点202的健康。说明性地,健康检查设备204可以周期性地(例如,每n秒)将请求传输到端点202,并且监视是否接收到适当的响应。如果是,则健康检查设备204可以认为端点202是健康的。如果不是,则健康检查设备204可以认为端点202是不健康的。在端点202不健康时,健康检查设备204可以说明性地将不健康端点202通知给全局访问点106,以使访问点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。此外,如上所述,端点202可以在多个数据中心110上提供每个网络可访问的服务。因此,图1的全局访问点可以在数据中心110上将流量分布给这种服务。
根据本公开的实施方案,数据中心110进一步包括会话移交管理器212,该会话移交管理器被配置成促进采用在全局访问点106处初始化的与客户端102的面向连接的通信会话。如上所述,在某些情况下,全局访问点106可以被配置成完成面向连接的通信会话(诸如TCP三次握手)的初始化阶段,然后将通信会话移交给端点202。在某些情况下,端点202可以被配置成通过接收面向连接的通信会话的上下文(例如,连接的两端的序列号)并生成并入有该上下文的本地状态信息来接受这种移交。可以例如通过修改端点202的操作系统内的联网协议处理程序(例如,通过修改内核以接受和采用来自全局访问点106的TCP上下文信息)来如此配置端点202。然而,可能优选的是,不需要如此配置端点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。在一个实施方案中,在以其他方式将数据包分布到流管理器304之前,路由器302将基于流的路由应用于数据包,使得如果该数据包被识别为流的一部分,则将其分布到与该流的先前处理过的数据包相同的流管理器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与数据中心110之间的性能标准选择数据中心110,全局访问点106可以被配置成最初基于从其接收流量的客户端设备102与最初选择的数据中心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的网络地址作为数据包的目的地网络地址,并且将客户端设备102的网络地址替换为访问点106的地址作为源地址。根据NAT技术,对于来自端点202的要被路由到客户端设备102的数据包,可以发生类似的转换。流管理器304可以说明性地使用端口转换(已知的NAT技术)以在转换的流之间进行区分。在转换之后,流管理器304可以将数据包返回到路由器302,以通过网络108传输到所选择的端点202。
在另一个实施方案中,流管理器304可以利用封装将数据包路由到端点202。说明性地,每个流管理器304可以生成到数据中心110内的设备(诸如数据中心110内的会话移交管理器212或路由器)的IP“隧道”。为了将数据包路由到端点202,流管理器304可以封装数据包,并且经由隧道将数据包传输到接收设备。接收设备然后可以解封装数据包并将数据包传输到端点202。在一个实施方案中,流管理器304将数据包的目的地地址(例如,服务的全局网络地址)替换为所选端点202的目的地地址,以促进数据包202到端点的传输。在隧道上封装数据包可以提供益处,诸如保留传输过数据包的客户端设备102的网络地址。这样,即使客户端设备102的数据包通过不同的访问点106路由,封装也可以使得例如客户端设备102和端点202保留面向连接的通信会话。在某些情况下,流管理器304和端点202(或会话移交管理器212)可以被配置成认证彼此之间的通信,以确保在设备之间传输的数据包的真实性。例如,流管理器304和端点202(或会话移交管理器212)中的每个可以被配置成生成认证相应设备的数字签名,并且将这种数字签名包括在流动于设备之间的封装数据包的标头中,使得每个设备都可以认证数字签名,以验证数据包是在已知设备上生成的。作为另一个示例,流管理器304和端点202(或会话移交管理器212)可以被配置成经由已知的安全协议(诸如传输层安全性(TLS)协议)进行通信。
如上所述,在某些情况下,访问点106可以被配置成进行面向连接的通信会话的初始化阶段,以减少进行该阶段所需的时间(例如,由于访问点106相对于数据中心110相对靠近客户端设备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有关的健康检查数据,从而调整通告以尝试在网络104上将流量从某些设备102再导向到与其当前路由到的访问点不同的(例如,更靠近的)访问点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或其各种组成部分可以实现各种Web服务部件、托管或“云”计算环境和/或点对点网络配置,以实现本文所述的过程的至少一部分。
图4描绘了示例计算系统(称为访问点服务器402)的总体架构,该示例计算系统用于实现访问点106的流管理器304。图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,代表可执行以对寻址到全局网络地址的数据包或者对来自端点202的这种数据包的响应执行NAT的代码;以及会话移交单元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和E代表全局访问点106A与之建立网络连接的其他AS。尽管在图5中未将网络104D和E示出为连接到客户端设备102,但这种网络也可以充当客户端设备102的ISP。网络104A-E中的每个在图5中被示出为与其他网络104A-E互连。该配置是说明性的,并且在不同的实现方式中可能有所不同。
在图5的说明中,客户端设备102总体上具有两条路线:经由网络104D和104E通过这两条路线到达全局访问点106A。为了提高对全局访问点106A的访问的弹性,访问点106A可以选择性地向网络104D和104E传输可用性通告。具体地,如图5所示,在(1)处,全局访问点106A可以标识至少两组全局网络地址,诸如两个连续范围的网络地址。此后,并非将所有全局网络地址都广告给网络104D和E两者,而是在(2)处全局访问点106A将用于第一网络组的广告(例如,BGP通告)传输给网络104D。类似地,在(3)处,全局访问点106A将用于第二网络组的广告(例如,BGP通告)传输给网络104E。以此方式,寻址到第一网络组内的地址的流量很可能通过网络104D到达访问点106A,并且寻址到第二网络组内的地址的流量很可能通过网络104E到达访问点106A。每个服务可以与至少两个组的全局网络地址相关联。因此,如果在网络104D或E中的任何一个上出现错误或问题,则客户端设备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(例如,次高性能)。在一个实施方案中,每个访问点106A基于与客户端设备102和数据中心110之间的性能标准有关的当前信息,在选择数据中心110时实现同一算法。此外,可以使性能标准的公共集合可用于每个访问点106(例如,从配置数据存储区210中)。因此,在不改变性能标准或数据中心110的负载的情况下,客户端设备102将数据包路由到数据中心110在访问点106之间可以是一致的。以这种方式,即使当客户端设备102的数据包被再路由到不同的访问点106时,所述数据包也可以被路由到同一数据中心110。在数据包与现有数据流相关联的情况下,流管理器304可以将数据包路由到流中的先前数据包被路由到的同一数据中心110。
在选择数据中心110之后,流管理器304可以在所选数据中心120内选择端点202。对于给定的数据中心110,流管理器304可以说明性地维护端点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内的端点缩放事件。端点缩放事件说明性地对应于“放大”或“缩小”事件,其指示从池201中添加或移除端点202。在某些情况下,缩放事件还可以包括替换池201中的端点202。缩放事件可以说明性地由于池201上的负载落在期望的阈值之外或由于池201内的端点202的故障而发生。在(2)处,资源管理器206根据缩放事件向池201传输指令以更改池配置。例如,资源管理器206可以指示池201添加新的端点202、移除现有的端点202、或其组合。说明性地,缩放池201可以包括向主机设备传输指令以添加或移除执行与端点202相对应的软件的虚拟机实例(例如,使与池201有关的网络可访问服务可用)。
在(3)处,池201向资源管理器206通知对池201的修改,包括例如添加到池201的任何端点202的网络地址。在(4)处,资源管理器206将对池201的任何网络地址修改通知给配置管理器208。根据本公开,可以利用各种技术来促进资源管理器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的配置的一部分来获得,诸如在访问点106的初始化期间获得的存储在配置数据存储区210中的配置文件内。可以说明性地按配置将全局网络地址划分到不同的寻址池中。例如,每个池可以包括不同的网络地址的“块”,诸如地址的连续范围。例如,范围可以代表“子网”。在一个实施方案中,范围由“前缀”代表,表示范围中网络地址的前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,将描述说明性例程900,该例程用于路由寻址到与由数据中心110内的端点202提供的服务相关联的全局网络地址的流量。例程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可以最初选择最佳性能的数据中心110(就相对于客户端设备102或访问点106的给定网络性能标准而言)。然后,流管理器304可以基于用于服务的数据中心110上的期望负载平衡来确定在过去一段时间内(例如,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。例如,可以以与上述数据中心110类似的方式来选择每个端点202,方法是通过选择具有最佳性能标准值的端点202,并且如果端点202接收到大于期望比例的数据量,则修改该选择。此外,尽管在图9中将例程900示出为终止于框914,但是流管理器304可以在例程900之后继续采取其他动作,诸如充当NAT设备用于客户端设备102与端点202之间的通信。因此,图9中对例程900的描绘是本文公开的概念的一个实施方案。
参考图10,将描述说明性例程1000,该例程用于在全局访问点106处更新与提供网络可访问服务的数据中心110的端点202有关的信息。例程1000可以说明性地由数据中心110内的资源管理器206实现。在一个实施方案中,例程900的实例由每个数据中心的每个资源管理器206实现。
例程1000从框1002开始,其中数据中心110A的资源管理器206检测到端点池201内的端点缩放事件。端点缩放事件说明性地对应于“放大”或“缩小”事件,其指示从池201中添加或移除端点202。在某些情况下,缩放事件还可以包括替换池201中的端点202。缩放事件可以说明性地由于池201上的负载落在期望的阈值之外或由于池201内的端点202的故障而发生。
在框1004处,资源管理器206基于检测到的缩放事件来更改池配置。说明性地,资源管理器206可以根据缩放事件将指令传输到池201以更改池配置。例如,资源管理器206可以指示池201添加新的端点202、移除现有的端点202、或其组合。说明性地,缩放池201可以包括向主机设备传输指令以添加或移除执行与端点202相对应的软件的虚拟机实例(例如,使与池201有关的网络可访问服务可用)。
在框1006处,资源管理器206从池301获得添加到池201或从该池移除的任何端点202的网络地址。此外,在框1008处,资源管理器206将对池201的任何网络地址修改通知给全局访问点106。如上所述,在某些情况下,通知可以经由更改传输到访问点106的配置数据包(或包裹)。因此,全局访问点106可以为与池201有关的网络可访问服务更新其端点可用性,使得可以将未来的访问网络可访问服务的请求路由到池201中的可用端点202。例程1000然后可以在框1010处结束。
参考图11,将描述说明性交互,其用于在全局访问点106A处进行面向连接的通信会话的初始化阶段,并将该会话移交给数据中心110内的设备,从而减少建立这种会话所需的时间。图11的交互可以例如通过访问点106的流管理器304来实现。将相对于单个访问点106A和数据中心110A描述图11的交互。然而,相对于其他访问点106和数据中心110,可能潜在地同时发生类似的交互。此外,将相对于特定类型的面向连接的通信会话:TCP会话来描述图11的交互。相对于其他面向连接的通信会话可以发生类似的交互。
图11的交互开始于(1),其中客户端设备102通过传输寻址到网络服务的全局网络地址的TCP SYN数据包来尝试与服务发起面向连接的通信会话。根据上述功能,如图11所示,TCP SYN数据包被传输到全局访问点106A。TCP SYN数据包说明性地包括客户端设备102的序列号。
在(2)处,全局访问点106A的流管理器304通过向客户端设备102返回TCP SYN-ACK数据包来继续TCP三次握手,该数据包说明性地包括用于访问点106A的序列号(以及确认客户端设备102的序列号)。在(3)处,客户端设备102通过将TCP ACK数据包返回到访问点106A从而确认访问点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传递。例如,不是封装响应数据包并将其传输到访问点106A,而是端点202(或管理器212)可以将响应数据包直接传输到客户端设备102(例如,通过网络104),从而避免了封装的需要。作为另一变型,尽管在图11中将会话信息描述为被包括在封装的数据包内,但在其他实施方案中,会话状态信息可以被包括在单独的数据包中。例如,全局访问点106A可以被配置成在进行通信会话的初始化阶段之后,诸如在对数据中心110A的“会话采用”命令中,将会话状态信息单独地传输到数据中心110A。作为又一变型,尽管以上将管理器212论述为选择数据中心110A内的端点202以服务客户端设备102,但是在某些情况下,即使在使用管理器212的情况下,访问点106也可以选择这种端点202。例如,访问点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,将描述说明性例程1200,该例程用于在全局访问点106A处初始化面向连接的通信会话,并将该会话移交给数据中心110内的管理器212。说明性地,例程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的框的数量和布置在本质上是说明性的。
可鉴于以下条款对本公开的各个实施方案进行描述:
条款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所述的非暂时性计算机可读介质,其中为了将所述数据包和所述上下文信息传输到所述端点系统,所述指令配置每个访问点以将所述数据包和所述上下文信息传输到所述端点系统内的会话移交设备,所述会话移交设备被配置成基于所述上下文信息采用所述面向连接的通信会话。
在上文中所描述的所有方法和过程可以在由一个或多个通用计算机或处理器执行的软件代码模块中具体化并且经由所述软件代码模块来完全自动化。所述代码模块可以存储在任何类型的非暂时性计算机可读介质或其它计算机存储设备中。所述方法中的一些或所有可以替代性地在专用计算机硬件中具体化。
除非另外特别说明,否则诸如“能够”、“可以”、“可能”或“可”之类的条件语言在上下文中应理解为通常使用的情况以表示:尽管其它实施方案不包括,但某些实施方案包括某些特征、元件和/或步骤。因此,这种条件语言通常并非旨在暗示无论如何所述特征、元件和/或步骤都是一个或多个实施方案必需的,或者并非暗示一个或多个实施方案必须包括用于在借助和不借助用户输入或提示下决定是否包括这些特征、元件和/或步骤或者是否在任何特定实施方案中实施这些特征、元件和/或步骤的逻辑。
除非另有特别说明,否则分离性语言诸如短语“X、Y或Z中的至少一个”在上下文中应理解为通常使用的情况以表示项目、项等可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)。因此,这种分离性语言通常不旨在且不应暗示某些实施方案要求X中的至少一个、Y中的至少一个以及Z中的至少一个至每一个都存在。
除非另有明确说明,否则通常应将诸如‘一(a)’或‘一(an)’的冠词解释为包括一个或多个描述的项目。因此,诸如“被配置成...的设备”之类的短语旨在包括一个或多个所叙述的设备。这样的一个或多个所叙述的设备也可以被共同地配置成执行所陈述的叙述。例如,“被配置成执行叙述A、B和C的处理器”可以包括被配置成执行叙述A的第一处理器与被配置成执行叙述B和C的第二处理器协同工作。
在本文中描述的和/或在附图中描绘的流程图中的任何例程描述、元件或框应当被理解为潜在地表示代码的模块、段或部分,所述代码包括用于实现例程中的特定逻辑功能或元件的一个或多个可执行指令。替代性实施方案被包括在本文中所述实施方案的范围内,其中如本领域中的技术人员所理解的那样,根据所涉及的功能,元件或功能可删除、或不按照所示出或论述的顺序执行,包括基本上同时执行或逆序执行。
应该强调的是,可以对上述实施方案进行许多变化和修改,这些实施方案的元件应被理解为是在其他可接受的示例之中。所有这些修改和变型旨在被包括在本公开的范围内,并由所附权利要求书保护。

Claims (15)

1.一种系统,其包括:
多个端点,每个端点位于不同的地理位置并且包含至少一个服务器计算设备,所述服务器计算设备被配置成提供与网络地址相关联的网络可访问服务;
到所述网络可访问服务的至少两个访问点,所述至少两个访问点位于与所述多个端点的地理位置不同的地理位置,所述至少两个访问点中的每个包括处理器、位于不同的地理位置并且被配置成:
利用任意播方法来广告经由所述访问点能到达的所述网络地址的网络前缀;
从客户端设备接收寻址到所述网络地址的网络数据包;
至少部分地基于所述客户端设备与端点之间的网络性能度量从所述多个端点中选择所述网络数据包要路由到的所述端点;
根据网络地址转换NAT变换所述网络数据包,得到变换后的数据包,其中所述根据网络地址转换NAT变换所述网络数据包的步骤包括将所述数据包的目的地地址替换为所述端点的网络地址,并且将所述数据包的源地址替换为所述访问点的网络地址;以及
将所述变换后的数据包路由到所述端点。
2.如权利要求1所述的系统,其中所述网络数据包是传输控制协议TCP数据包,并且其中每个访问点被配置成维持与在相应的客户端设备和端点之间建立的传输控制协议TCP会话有关的状态信息。
3.如权利要求1所述的系统,其中每个端点被配置成:
从所述端点接收对所述变换后的数据包的响应;以及
根据网络地址转换NAT变换所述响应,得到变换后的响应;以及
将所述变换后的响应路由到所述客户端设备。
4.如权利要求1所述的系统,其中所述至少两个访问点和所述多个端点经由私人网络进行通信,并且其中经由公共网络从所述客户端设备接收所述网络数据包。
5.一种在到分布于地理区域中的网络可访问服务的多个访问点中的每个访问点处实现的方法,所述方法包括:
广告所述网络可访问服务的网络地址为经由每个访问点能到达;
在所述多个访问点中的第一访问点处:
从客户端设备接收寻址到所述网络地址的网络数据包;
至少部分地基于所述客户端设备与端点之间的网络性能度量从所述网络可访问服务的多个端点中选择所述网络数据包要路由到的所述端点,所述网络可访问服务的多个端点位于与所述多个访问点的地理位置不同的地理位置;
根据网络地址转换NAT变换所述网络数据包,得到变换后的数据包,其中所述根据网络地址转换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.如权利要求5所述的方法,其中选择用于所述第二网络可访问服务的所述第二网络数据包要路由到的所述端点进一步至少部分地基于所述端点到所述访问点的表观健康。
CN201980074714.8A 2018-11-21 2019-11-19 对使用全局网络地址的分布式端点进行负载平衡式访问的系统和方法 Active CN113196725B (zh)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201862770646P 2018-11-21 2018-11-21
US62/770,646 2018-11-21
US16/219,797 2018-12-13
US16/219,770 US10924411B2 (en) 2018-11-21 2018-12-13 Load balanced access to distributed endpoints using anycasted global network addresses and network address translation
US16/219,811 US10826832B2 (en) 2018-11-21 2018-12-13 Load balanced access to distributed scaling endpoints using global network addresses
US16/219,807 US10880218B2 (en) 2018-11-21 2018-12-13 Load balanced access to distributed endpoints using resiliently advertised global network addresses
US16/219,811 2018-12-13
US16/219,770 2018-12-13
US16/219,797 US10848427B2 (en) 2018-11-21 2018-12-13 Load balanced access to distributed endpoints using global network addresses and connection-oriented communication session handoff
US16/219,807 2018-12-13
PCT/US2019/062277 WO2020106763A1 (en) 2018-11-21 2019-11-19 Load balanced access to distributed endpoints using global network addresses

Publications (2)

Publication Number Publication Date
CN113196725A CN113196725A (zh) 2021-07-30
CN113196725B true CN113196725B (zh) 2023-09-12

Family

ID=70726923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980074714.8A Active CN113196725B (zh) 2018-11-21 2019-11-19 对使用全局网络地址的分布式端点进行负载平衡式访问的系统和方法

Country Status (4)

Country Link
US (4) US10826832B2 (zh)
CN (1) CN113196725B (zh)
DE (1) DE112019005826T5 (zh)
WO (1) WO2020106763A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10826832B2 (en) 2018-11-21 2020-11-03 Amazon Technologies, Inc. Load balanced access to distributed scaling endpoints using global network addresses
US11546213B2 (en) * 2018-12-31 2023-01-03 Alkira, Inc. Cloud node routing
US10855580B2 (en) 2019-03-27 2020-12-01 Amazon Technologies, Inc. Consistent route announcements among redundant controllers in global network access point
US11552898B2 (en) * 2019-09-27 2023-01-10 Amazon Technologies, Inc. Managing data throughput in a distributed endpoint network
US11394636B1 (en) 2020-12-10 2022-07-19 Amazon Technologies, Inc. Network connection path obfuscation using global access points
US11729091B2 (en) * 2020-12-10 2023-08-15 Amazon Technologies, Inc. Highly available data-processing network functions for radio-based networks
US20220200957A1 (en) * 2020-12-18 2022-06-23 Prosimo Inc Managing Application Access Controls And Routing In Cloud Computing Platforms
US20220201673A1 (en) * 2020-12-18 2022-06-23 Prosimo Inc Dynamic Expansion And Contraction Of Edge Clusters For Managing Access To Cloud-Based Applications
WO2022263869A1 (en) * 2021-06-15 2022-12-22 Citrix Systems, Inc. Systems and methods for routing remote application data
US20230164594A1 (en) * 2021-11-23 2023-05-25 Hewlett Packard Enterprise Development Lp Mitigation of radio frequency (rf) outages on a wireless network
US12096252B2 (en) 2021-11-23 2024-09-17 Hewlett Packard Enterprise Development Lp Mitigation of radio frequency (RF) outages on a wireless network
US12095845B1 (en) * 2023-02-24 2024-09-17 The Toronto-Dominion Bank Method and system for performing an operation in response to a session handoff

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103202002A (zh) * 2010-09-08 2013-07-10 思杰系统有限公司 用于自负载平衡访问网关的系统和方法
CN105264865A (zh) * 2013-04-16 2016-01-20 亚马逊科技公司 分布负载平衡器中的多路径路由
US9407539B1 (en) * 2011-06-24 2016-08-02 Amazon Technologies, Inc. Techniques for utilizing network destination identifiers simultaneously announced from multiple locations

Family Cites Families (33)

* Cited by examiner, † Cited by third party
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
US7260645B2 (en) * 2002-04-26 2007-08-21 Proficient Networks, Inc. Methods, apparatuses and systems facilitating determination of network path metrics
US20040181522A1 (en) 2003-01-16 2004-09-16 Jardin Cary A. Shared memory router system and method for node communication in a distributed system
DE60311015T2 (de) 2003-05-09 2007-08-02 Telefonaktiebolaget Lm Ericsson (Publ) System und verfahren zur datenzwischenspeicherung und wiederverteilung in einem drahtlosen kommunikationsnetzwerk
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
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US9160650B2 (en) 2013-06-17 2015-10-13 Futurewei Technologies, Inc. Enhanced flow entry table cache replacement in a software-defined networking switch
US9407692B2 (en) 2013-11-27 2016-08-02 Avi Networks Method and system for distributed load balancing
CN105814925B (zh) 2013-12-04 2020-03-06 诺基亚技术有限公司 用于无线接入的接入点信息
US9276841B2 (en) * 2014-01-31 2016-03-01 Edgecast Networks, Inc. Adapting network control messaging for anycast reliant platforms
US9559964B2 (en) 2014-01-31 2017-01-31 Verizon Digital Media Services Inc. Control message routing within 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
US10034201B2 (en) 2015-07-09 2018-07-24 Cisco Technology, Inc. Stateless load-balancing across multiple tunnels
US10419310B1 (en) 2015-12-17 2019-09-17 8×8, Inc. Monitor device for use with endpoint devices
EP3403954A4 (en) 2016-01-15 2019-08-14 Nano-Tem Co., Ltd. CONTACTLESS CARRIER DEVICE AND CONTACTLESS CARRIER SYSTEM
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)
US10567333B2 (en) 2017-11-01 2020-02-18 Verizon Digital Media Services Inc. Deterministic traffic management in an anycast network
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
US10826832B2 (en) 2018-11-21 2020-11-03 Amazon Technologies, Inc. Load balanced access to distributed scaling endpoints using global network addresses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103202002A (zh) * 2010-09-08 2013-07-10 思杰系统有限公司 用于自负载平衡访问网关的系统和方法
US9407539B1 (en) * 2011-06-24 2016-08-02 Amazon Technologies, Inc. Techniques for utilizing network destination identifiers simultaneously announced from multiple locations
CN105264865A (zh) * 2013-04-16 2016-01-20 亚马逊科技公司 分布负载平衡器中的多路径路由

Also Published As

Publication number Publication date
US10924411B2 (en) 2021-02-16
US10826832B2 (en) 2020-11-03
US10880218B2 (en) 2020-12-29
WO2020106763A1 (en) 2020-05-28
US20200162386A1 (en) 2020-05-21
CN113196725A (zh) 2021-07-30
DE112019005826T5 (de) 2021-08-19
US20200162387A1 (en) 2020-05-21
US20200162959A1 (en) 2020-05-21
US10848427B2 (en) 2020-11-24
US20200162322A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
CN113196725B (zh) 对使用全局网络地址的分布式端点进行负载平衡式访问的系统和方法
CN113826363B (zh) 全局网络接入点中冗余控制器之间的一致路由公告
US10972554B1 (en) Management of distributed endpoints
US9736278B1 (en) Method and apparatus for connecting a gateway router to a set of scalable virtual IP network appliances in overlay networks
US11063819B2 (en) Managing use of alternative intermediate destination computing nodes for provided computer networks
US11451477B2 (en) Load balanced access to distributed endpoints
US9762494B1 (en) Flow distribution table for packet flow load balancing
US11528213B2 (en) Sharing routes using an in-memory data store in a distributed network system
CN114503531B (zh) 分布式端点的管理
WO2017209932A1 (en) Link status monitoring based on packet loss detection
US11425042B2 (en) Managing data throughput in a distributed endpoint network
WO2017209923A1 (en) Detecting source network address translation in a communication system
Paul et al. Application delivery in multi-cloud environments using software defined networking
EP3465995A1 (en) Flow modification including shared context
Fu et al. Taming the wild: A scalable anycast-based CDN architecture (T-SAC)
US11552898B2 (en) Managing data throughput in a distributed endpoint network
WO2000052906A1 (en) System, method and apparatus for network service load and reliability management
Lai et al. Man-in-the-middle anycast (mima): Cdn user-server assignment becomes flexible
US11431577B1 (en) Systems and methods for avoiding duplicate endpoint distribution
US11616716B1 (en) Connection ownership gossip for network packet re-routing

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