DE112020004639T5 - MANAGEMENT OF DISTRIBUTED ENDPOINTS - Google Patents

MANAGEMENT OF DISTRIBUTED ENDPOINTS Download PDF

Info

Publication number
DE112020004639T5
DE112020004639T5 DE112020004639.7T DE112020004639T DE112020004639T5 DE 112020004639 T5 DE112020004639 T5 DE 112020004639T5 DE 112020004639 T DE112020004639 T DE 112020004639T DE 112020004639 T5 DE112020004639 T5 DE 112020004639T5
Authority
DE
Germany
Prior art keywords
network
access point
data
endpoint
endpoints
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.)
Pending
Application number
DE112020004639.7T
Other languages
German (de)
Inventor
Nalin Goel
Harvo Reyzell Jones
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
Priority claimed from US16/586,510 external-priority patent/US11552898B2/en
Priority claimed from US16/586,641 external-priority patent/US10972554B1/en
Priority claimed from US16/586,485 external-priority patent/US11425042B2/en
Priority claimed from US16/586,446 external-priority patent/US11451477B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of DE112020004639T5 publication Critical patent/DE112020004639T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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/72Routing based on the source address
    • 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/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • 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
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5069Address allocation for group communication, multicast communication or broadcast communication
    • 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
    • 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/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Abstract

Es werden ein System und ein Verfahren zur Verwaltung von Kommunikationen für Komponenten in einem globalen Beschleunigersystem bereitgestellt.Das globale Beschleunigersystem beinhaltet Client-Vorrichtungen, die mit einem globalen Zugriffspunkt über ein öffentliches Netzwerk kommunizieren, um auf verschiedene Endpunkte zuzugreifen, die Dienste hosten können.Ein globaler Zugriffspunkt wiederum kommuniziert über ein privates Netzwerk mit verschiedenen Endpunkten, die in unterschiedliche Rechenzentren eingeordnet sind.Um den Austausch im Auftrag der unterschiedlichen Client-Vorrichtungen zu erleichtern, können die globalen Zugriffspunkte Gruppierungen von Endpunkten in Teilgruppen oder Geflechte charakterisieren.Einzelne Geflechtkommunikationen können gekapselt werden und werden im Rechenzentrum durch eine Netzwerkausrüstung unter Verwendung von 5-Tupel-Informationen in Paketen geroutet.Die Komponenten innerhalb einzelner Geflechte können Statusinformationen über Managementnachrichten mittels Broadcast oder Multicast übertragen, um einen Ausfallschutz sicherzustellen oder doppelte Verarbeitung einzudämmen.A system and method for managing communications for components in a global accelerator system is provided. The global accelerator system includes client devices that communicate with a global access point over a public network to access various endpoints that can host services global access point, in turn, communicates over a private network with various endpoints that are organized in different data centers. To facilitate exchanges on behalf of the different client devices, the global access points can characterize groupings of endpoints into subgroups or meshes. Individual mesh communications can be encapsulated and are routed in packets in the data center by network equipment using 5-tuple information. The components within individual meshes can carry status information via management messages broadcast or multicast to ensure failover or mitigate double processing.

Description

ALLGEMEINER STAND DER TECHNIKBACKGROUND ART

Allgemein beschrieben nutzen Rechenvorrichtungen ein Kommunikationsnetzwerk oder eine Reihe von Kommunikationsnetzwerken, um Daten auszutauschen. Unternehmen und Organisationen betreiben Computernetzwerke, die eine Reihe von Rechenvorrichtungen miteinander verbinden, um Vorgänge zu unterstützen oder Dienste für Dritte bereitzustellen. Die Rechensysteme können sich an einem einzigen geografischen Standort befinden oder sich an mehreren unterschiedlichen geografischen Standorten befinden (z. B. über private oder öffentliche Kommunikationsnetze miteinander verbunden). Insbesondere können Rechenzentren oder Datenverarbeitungszentren, die in dieser Schrift allgemein als „Rechenzentren“ bezeichnet werden, eine Reihe von miteinander verbundenen Rechensystemen beinhalten, um Benutzern des Rechenzentrums Rechenressourcen bereitzustellen. Bei den Rechenzentren kann es sich um private Rechenzentren handeln, die im Auftrag einer Organisation betrieben werden, oder um öffentliche Rechenzentren, die im Auftrag oder zum Nutzen der Allgemeinheit betrieben werden.Generally described, computing devices utilize a communications network or series of communications networks to exchange data. Businesses and organizations operate computer networks that connect a variety of computing devices to support operations or provide services to others. The computing systems may be located in a single geographic location or located in multiple different geographic locations (e.g., interconnected via private or public communications networks). In particular, a data center or data processing center, collectively referred to herein as a "data center," may include a number of interconnected computing systems to provide computing resources to users of the data center. The data centers can be private data centers operated on behalf of an organization or public data centers operated on behalf of or for the benefit of the general public.

Da die Ressourcen jeder einzelnen Rechenvorrichtung begrenzt sind, sind vielfältige Techniken bekannt, um zu versuchen, die Ressourcennutzung zwischen den Vorrichtungen auszugleichen. Zum Beispiel kann eine „Lastausgleicher“-Vorrichtung zwischen Client-Vorrichtungen, die die Nutzung von Rechenressourcen anfordern, und Servern, die solche Ressourcen bereitstellen, platziert werden. Der Lastausgleicher kann versuchen, die Anfragen auf die Server zu verteilen, wodurch es den Servern ermöglicht wird, zusammenzuarbeiten, um solche Ressourcen bereitzustellen. Ein wesentlicher Nachteil der Verwendung eines solchen Lastausgleichers besteht darin, dass er einen einzelnen Fehlerpunkt erzeugen kann, sodass, wenn der Lastausgleicher ausfällt, Anfragen an die Server fehlschlagen und Ressourcen nicht verfügbar gemacht werden.Because the resources of each individual computing device are limited, a variety of techniques are known to attempt to balance resource usage between devices. For example, a "load balancer" device may be placed between client devices requesting use of computing resources and servers providing such resources. The load balancer can attempt to distribute the requests across the servers, allowing the servers to work together to provide such resources. A major disadvantage of using such a load balancer is that it can create a single point of failure such that if the load balancer fails, requests to the servers will fail and resources will not be made available.

Eine andere im Fach bekannte Art von Lastausgleich ist der Domänennamensystem(DNS)-Lastausgleich. DNS bezieht sich im Allgemeinen auf ein Netzwerk von Vorrichtungen, die betrieben werden, um für Menschen erkennbare Domänennamen in Netzwerkadressen in einem Netzwerk wie dem Internet zu übersetzen. Um den Lastausgleich mithilfe von DNS zu ermöglichen, wird ein DNS-Server mit Netzwerkadressen mehrerer Rechenvorrichtungen gefüllt, die eine bestimmte Ressource anbieten. Wenn er auf Anfragen zum Auflösen eines dieser Ressource zugeordneten Domänennamens antwortet, wechselt der DNS-Server ab, welche Adressen bereitgestellt werden, und bewirkt so, dass Anfragen nach den Ressourcen unter den bereitgestellten Adressen aufgeteilt werden. Da der DNS-Server nicht als Kanal für den Datenverkehr zu den Ressourcen fungiert und DNS im Allgemeinen einen hochredundanten Betrieb bietet, vermeidet der DNS-Lastausgleich im Allgemeinen einen einzelnen Fehlerpunkt. Ein wesentlicher Nachteil des DNS-Lastausgleichs ist jedoch die Verzögerung, die erforderlich ist, um ein Lastausgleichsschema zu ändern. DNS-Anfragen fließen im Allgemeinen durch eine Reihe von DNS-Resolvern, von denen jeder frühere DNS-Ergebnisse für einen Zeitraum zwischenspeichern kann. Daher kann die Verbreitung von Änderungen, die an einem DNS-Server vorgenommen werden, um zu ändern, wie die Last zwischen den Servern verteilt wird, viel Zeit in Anspruch nehmen. Insbesondere in Fällen, in denen ein Server ausgefallen ist, können diese Verzögerungen zu erheblichen Fehlern bei der Netzwerkkommunikation führen. Darüber hinaus kann es schwierig sein, DNS-Einträge auf einem aktuellen Stand zu halten, da diese im Allgemeinen modifiziert werden müssen, wenn neue Vorrichtungen zu einem Lastausgleichsschema hinzugefügt oder daraus entfernt werden.Another type of load balancing known in the art is Domain Name System (DNS) load balancing. DNS generally refers to a network of devices that operate to translate human-recognizable domain names into network addresses on a network such as the Internet. To enable load balancing using DNS, a DNS server is populated with network addresses of multiple computing devices offering a particular resource. When responding to requests to resolve a domain name associated with that resource, the DNS server alternates which addresses are served, causing requests for the resources to be split among the addresses served. Because the DNS server does not act as a conduit for traffic to the resources, and DNS generally provides highly redundant operation, DNS load balancing generally avoids a single point of failure. However, a major disadvantage of DNS load balancing is the delay required to change a load balancing scheme. DNS queries generally flow through a series of DNS resolvers, each of which can cache previous DNS results for a period of time. Therefore, changes made to a DNS server to change how the load is distributed between servers can take a long time to propagate. Especially in cases where a server is down, these delays can cause significant errors in network communications. In addition, DNS records can be difficult to keep up-to-date as they generally need to be modified as new devices are added or removed from a load balancing scheme.

Noch eine andere im Fach bekannte Art von Lastausgleich ist die Verwendung von „Anycast“-Netzwerkadressen. In einem Netzwerk, wie etwa dem Internet, stellen verschiedene autonome Systeme („AS“) Vorrichtungen mit unterschiedlichen Netzwerkadressen bereit. Jedes AS benachrichtigt seine benachbarten AS über die in seinem Netzwerk verfügbaren Adressen, indem es die Adressen „anbietet“. Am typischsten ist jede Adresse einem einzelnen Standort zugeordnet (z. B. einer einzelnen Vorrichtung oder einer Gruppe von Vorrichtungen). In einer Anycast-Konfiguration bieten mehrere Vorrichtungen, oft in mehreren AS, dieselbe Netzwerkadresse an. Abhängig von der Konfiguration benachbarter AS können Client-Anfragen zum Zugriff auf die Adresse dann an jede der mehreren Vorrichtungen geleitet werden, wodurch die Last zwischen den Vorrichtungen verteilt wird. Ein wesentlicher Nachteil der Verwendung von Anycast beim Versuch eines Lastausgleichs besteht darin, dass das Routen zu der Anycast-Adresse im Allgemeinen durch benachbarte Netzwerke kontrolliert wird. Diese Netzwerke werden oft von anderen Entitäten kontrolliert. Somit ist es schwierig oder unmöglich, vollständig zu kontrollieren, wie Anfragen zwischen Vorrichtungen mit einer Anycast-Netzwerkadresse verteilt werden. Wenn sich die Konfiguration benachbarter Netzwerke ändert, kann sich darüber hinaus auch die Verteilung der Anfragen ändern, was zu Volatilität im Lastausgleichsschema führt.Yet another type of load balancing known in the art is the use of "anycast" network addresses. In a network such as the Internet, different Autonomous Systems ("AS") provide devices with different network addresses. Each AS notifies its neighboring AS of the addresses available in its network by "offering" the addresses. Most typically, each address is associated with a single location (e.g., a single device or a group of devices). In an anycast configuration, multiple devices, often in multiple ASs, advertise the same network address. Depending on the configuration of neighboring ASs, client requests to access the address can then be directed to any of the multiple devices, thereby sharing the load between the devices. A major disadvantage of using anycast when attempting load balancing is that routing to the anycast address is generally controlled by neighboring networks. These networks are often controlled by other entities. Thus, it is difficult or impossible to fully control how requests are distributed between devices with an anycast network address. In addition, when the configuration of neighboring networks changes, the distribution of requests can also change, leading to volatility in the load-balancing scheme.

Figurenlistecharacter list

  • 1 ist ein Blockdiagramm, das ein veranschaulichendes logisches Netzwerk darstellt, das mehrere Client-Vorrichtungen und Rechenzentren beinhaltet, sowie einen Satz globaler Zugriffspunkte, die einen lastausgleichenden Zugriff auf die Rechenzentren von einem Satz globaler Netzwerkadressen bereitstellen. 1 12 is a block diagram depicting an illustrative logical network that includes multiple client devices and data centers, and a set of global access points that provide load-balanced access to the data centers from a set of global network addresses.
  • 2 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines Rechenzentrums der 1 darstellt. 2 FIG. 14 is a block diagram showing an illustrative configuration of a data center 1 represents.
  • 3 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines globalen Zugriffspunkts der 1 darstellt. 3 Fig. 12 is a block diagram showing an illustrative configuration of a global access point 1 represents.
  • 4 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines Datenflussmanager-Servers darstellt, der einen oder mehrere Datenflussmanager in einem globalen Zugriffspunkt der 1 implementiert. 4 Figure 12 is a block diagram depicting an illustrative configuration of a data flow manager server that hosts one or more data flow managers in a global access point 1 implemented.
  • 5 stellt veranschaulichende Interaktionen zum Routen einer Anfrage von einer Client-Vorrichtung, die an eine globale Netzwerkadresse adressiert ist, zu einem globalen Zugriffspunkt der 1 dar. 5 provides illustrative interactions for routing a request from a client device addressed to a global network address to a global access point 1 represent.
  • 6 stellt veranschaulichende Interaktionen zum Routen einer Anfrage von einem globalen Zugriffspunkt zu einem Rechenzentrum der 1 dar, zumindest teilweise auf Grundlage lastausgleichender Anfragen zwischen den Rechenzentren. 6 provides illustrative interactions for routing a request from a global access point to a data center 1 based, at least in part, on load-balancing requests between data centers.
  • 7 stellt veranschaulichende Interaktionen zum Verbreiten von Endpunktinformationen von einem Rechenzentrum zu globalen Zugriffspunkten der 1 dar, sodass die Zugriffspunkte den Datenverkehr von Client-Vorrichtungen, der an globale Netzwerkadressen adressiert ist, korrekt routen können. 7 provides illustrative interactions for propagating endpoint information from a data center to global access points 1 so that the access points can correctly route client device traffic addressed to global network addresses.
  • 8 stellt eine veranschaulichende Routine zum Erhöhen der Resilienz globaler Netzwerkadressen durch Auswählen unterschiedlicher benachbarter Vorrichtungen dar, denen unterschiedliche globale Netzwerkadressen von den Zugriffspunkten der 1 angeboten werden sollen. 8th Figure 12 provides an illustrative routine for increasing resiliency of global network addresses by selecting different neighboring devices that have different global network addresses from the access points of the 1 are to be offered.
  • 9 stellt eine beispielhafte Routine zum Routen von Datenverkehr, der an eine globale Netzwerkadresse adressiert ist, die einem Dienst zugeordnet ist, der durch Endpunkte innerhalb von Rechenzentren bereitgestellt wird, unter Verwendung der Zugriffspunkte der 1 dar. 9 provides an example routine for routing traffic addressed to a global network address associated with a service provided by endpoints within data centers using the access points of FIG 1 represent.
  • 10 stellt eine veranschaulichende Routine zum Aktualisieren von Informationen an den globalen Zugriffspunkten der 1 in Bezug auf Endpunkte eines Rechenzentrums dar, die einen über das Netzwerk zugänglichen Dienst bereitstellen. 10 provides an illustrative routine for updating information at the global access points of the 1 in relation to data center endpoints that provide a network accessible service.
  • 11 stellt veranschaulichende Interaktionen zum Aufbauen einer Übertragungssteuerprotokoll(Transmission Control Protocol - TCP)-Sitzung an einem globalen Zugriffspunkt der 1 und Übergeben der TCP-Sitzung an einen Endpunkt dar, um eine Kommunikation einer Client-Vorrichtung und des Endpunkts über die TCP-Sitzung zu ermöglichen. 11 Figure 12 illustrates illustrative interactions for establishing a Transmission Control Protocol (TCP) session at a global access point 1 and handing off the TCP session to an endpoint to allow a client device and the endpoint to communicate over the TCP session.
  • 12 stellt eine veranschaulichende Routine zum Aufbauen einer Übertragungssteuerprotokoll(TCP)-Sitzung an einem globalen Zugriffspunkt der 1 und Übergeben der TCP-Sitzung an einen Endpunkt dar, um eine Kommunikation einer Client-Vorrichtung und des Endpunkts über die TCP-Sitzung zu ermöglichen. 12 Figure 12 provides an illustrative routine for establishing a Transmission Control Protocol (TCP) session at a global access point 1 and handing off the TCP session to an endpoint to allow a client device and the endpoint to communicate over the TCP session.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Allgemein beschrieben betreffen Aspekte der vorliegenden Offenbarung das Bereitstellen eines lastausgeglichenen Zugriffs auf einen Pool von Rechenvorrichtungen, die über mehrere geografische Standorte verteilt sind, unter Verwendung einer oder mehrerer globaler Netzwerkadressen. Insbesondere betreffen Aspekte der vorliegenden Offenbarung das Bereitstellen eines verteilten Satzes von Zugriffspunkten, die über globale Netzwerkadressen erreichbar sind, wobei die Zugriffspunkte Anfragen auswählen und zu Endpunktvorrichtungen innerhalb des Pools routen, zumindest teilweise auf Grundlage eines Lastausgleichs der Anfragen. In einer Ausführungsform verwenden die Zugriffspunkte Anycast-Routing-Techniken, um die Verfügbarkeit von globalen Netzwerkadressen anzubieten, die dem Pool von Rechenvorrichtungen zugeordnet sind, wodurch Datenverkehr angezogen wird, der an diese Adressen adressiert ist. Beim Empfangen einer Anfrage zum Zugriff auf den Pool kann ein Zugriffspunkt einen geeigneten Endpunkt innerhalb des Pools auf Grundlage eines Verteilungsalgorithmus auswählen, der eine Verteilung von Datenpaketen an unterschiedliche Gruppierungen von Endpunkten ermöglicht, die im Allgemeinen als Endpunktgruppe bezeichnet werden. Der Zugriffspunkt kann dann als Proxy fungieren, der die Anfrage an den Endpunkt routet und weitere Kommunikationen zwischen dem Endpunkt und einer anfragenden Vorrichtung ermöglicht. Der Zugriffspunkt kann, wie in dieser Schrift offenbart, eine Vielzahl von Techniken implementieren, um einen resilienten, effizienten Zugriff auf den Pool von Endpunktvorrichtungen bereitzustellen. Wie in dieser Schrift offenbart, können die Zugriffspunkte über einen weiten geografischen Bereich verteilt sein, wodurch einzelne Fehlerpunkte innerhalb des Systems eliminiert werden. Darüber hinaus können die Zugriffspunkte durch Verwenden von Anycast-Angeboten Anfragen unter dem Pool verteilen, selbst wenn die Anfragen an eine einzelne Netzwerkadresse adressiert sind, wodurch Komplikationen und Verzögerungen vermieden werden, die mit anderen Techniken, wie etwa DNS-basiertem Lastausgleich, verknüpft sind. Indem sie als Proxy zwischen Clients und dem Vorrichtungspool fungieren, anstatt Ressourcen direkt bereitzustellen, können die Zugriffspunkte die Verteilung von Anfragen an den Pool unabhängig davon steuern, wie externe Vorrichtungen die Anfragen an die Anycast-Adresse routen, wodurch Nachteile vermieden werden, die mit herkömmlichen Anycast-Netzwerken verknüpft sind. Somit verbessern in dieser Schrift offenbarte Ausführungsformen bekannte Lastausgleichstechniken erheblich.Broadly described, aspects of the present disclosure relate to providing load-balanced access to a pool of computing devices distributed across multiple geographic locations using one or more global network addresses. More particularly, aspects of the present disclosure relate to providing a distributed set of access points reachable via global network addresses, where the access points select and route requests to endpoint devices within the pool based at least in part on load balancing the requests. In one embodiment, the access points use anycast routing techniques to advertise the availability of global network addresses associated with the pool of computing devices, thereby attracting traffic addressed to those addresses. Upon receiving a request to access the pool, an access point can select an appropriate endpoint within the pool based on a distribution algorithm that allows data packets to be distributed to different groupings of endpoints, commonly referred to as an endpoint group. The access point can then act as a proxy, routing the request to the endpoint and enabling further communications between the endpoint and a requesting device. The access point as disclosed in this document, can implement a variety of techniques to provide resilient, efficient access to the pool of endpoint devices. As disclosed in this document, the access points can be distributed over a wide geographic area, thereby eliminating single points of failure within the system. Additionally, by using anycast offerings, the access points can distribute requests among the pool even if the requests are addressed to a single network address, avoiding complications and delays associated with other techniques such as DNS-based load balancing. By acting as a proxy between clients and the device pool, rather than providing resources directly, the access points can control the distribution of requests to the pool regardless of how external devices route the requests to the anycast address, avoiding disadvantages associated with traditional Anycast networks are linked. Thus, embodiments disclosed herein greatly improve upon known load balancing techniques.

Ausführungsformen der vorliegenden Offenbarung können veranschaulichend in einem weiten geografischen Gebiet implementiert werden. In einer Ausführungsform wird die vorliegende Offenbarung im weltweiten Internet implementiert und stellt globale Internetprotokoll(IP)-Adressen bereit, wie etwa IP-Version-4(IPv4)- oder IP-Version-6(IPv6)-Adressen. An unterschiedlichen geografischen Standorten können unterschiedliche Rechenzentren vorhanden sein, und jedes Rechenzentrum kann ein oder mehrere Endpunktvorrichtungen beinhalten, die Zugang zu einem netzwerkbasierten Dienst bereitstellen. Beispiele für solche Dienste beinhalten unter anderem Webhosting, Datenspeicherung, On-Demand-Computing-Dienste und dergleichen. Die Ressourcen in jedem Rechenzentrum können begrenzt sein, und daher möchte ein Betreiber des netzwerkbasierten Dienstes möglicherweise die Last auf solche Dienste verteilen. Um den Betrieb des netzwerkbasierten Dienstes zu vereinfachen (z. B. um die Komplikationen im Zusammenhang mit dem DNS-basierten Lastausgleich zu vermeiden), kann es wünschenswert sein, dem Betreiber einen einzelnen Satz relativ statischer Netzwerkadressen für den Dienst bereitzustellen, deren Netzwerkadressen unabhängig von den einzelnen Endpunkten, die den Zugriff auf den Dienst bereitstellen, verwaltet werden können. Solche Netzwerkadressen werden in dieser Schrift allgemein als „globale“ Netzwerkadressen bezeichnet. Illustratively, embodiments of the present disclosure may be implemented in a wide geographic area. In one embodiment, the present disclosure is implemented on the global Internet and provides global Internet Protocol (IP) addresses, such as IP version 4 (IPv4) or IP version 6 (IPv6) addresses. Different data centers may exist in different geographic locations, and each data center may include one or more endpoint devices that provide access to a network-based service. Examples of such services include, but are not limited to, web hosting, data storage, on-demand computing services, and the like. The resources in each data center may be limited, and therefore an operator of the network-based service may wish to load-balance such services. To simplify the operation of the network-based service (e.g. to avoid the complications associated with DNS-based load balancing), it may be desirable to provide the operator with a single set of relatively static network addresses for the service, whose network addresses are independent of the individual endpoints that provide access to the service. Such network addresses are generally referred to in this document as "global" network addresses.

Im in dieser Schrift verwendeten Sinne soll sich der Begriff „global“ auf den Umfang der Netzwerkadresse in Bezug auf den Dienst beziehen (z. B. dass die Netzwerkadresse für den gesamten Dienst und nicht für einzelne Vorrichtungen gilt) und besagt nicht unbedingt, dass eine solche Netzwerkadresse weltweit zugänglich ist. Nichtsdestotrotz können Ausführungsformen der vorliegenden Offenbarung implementiert werden, um globale Netzwerkadressen bereitzustellen, auf die im Allgemeinen von einem weltweiten Netzwerk, wie etwa dem Internet, aus zugegriffen werden kann.As used herein, the term "global" is intended to refer to the scope of the network address related to the Service (e.g., that the network address applies to the entire Service and not to individual devices) and does not necessarily imply that a such network address is accessible worldwide. Nonetheless, embodiments of the present disclosure can be implemented to provide global network addresses that are generally accessible from a worldwide network, such as the Internet.

Um globale Netzwerkadressen für einen Dienst bereitzustellen, wird ein System offenbart, das einen Satz geografisch verteilter globaler Zugriffspunkte bereitstellt. Wie vorstehend erwähnt, bezieht sich der Begriff „globaler“ Zugriffspunkt in diesem Zusammenhang im Allgemeinen auf den Zugriffspunkt, der den Zugriff auf den Dienst im Allgemeinen bereitstellt, im Gegensatz zu einzelnen Endpunkten, und besagt nicht unbedingt, dass solche Zugriffspunkte weltweit vorhanden sind (obwohl eine solche Konfiguration möglich ist). Im Allgemeinen sind die Zugriffspunkte jedoch geografisch verteilt. In einer Ausführungsform befinden sich die globalen Zugriffspunkte an anderen und zahlreicheren geografischen Standorten als denen der Rechenzentren, die Endpunkte für den Dienst bereitstellen, was die durchschnittliche Netzwerkentfernung zwischen den globalen Zugriffspunkten und Client-Vorrichtungen, die versuchen, auf den Dienst zuzugreifen, verringert.In order to provide global network addresses for a service, a system is disclosed that provides a set of geographically distributed global access points. As noted above, in this context, the term "global" access point generally refers to the access point that provides access to the Service generally, as opposed to individual endpoints, and does not necessarily imply that such access points exist worldwide (although such a configuration is possible). In general, however, the access points are geographically distributed. In one embodiment, the global access points are in different and more numerous geographic locations than the data centers that provide endpoints for the service, which reduces the average network distance between the global access points and client devices attempting to access the service.

Jeder globale Zugriffspunkt kann Anycast-Techniken nutzen, um die Verfügbarkeit des Dienstes über die eine oder mehreren dem Dienst zugeordneten globalen Netzwerkadressen anzubieten. Als Veranschaulichung kann jeder Zugriffspunkt das Border-Gateway-Protokoll („BGP“) verwenden, um die globalen Netzwerkadressen anzubieten, indem er einen BGP-„Sprecher“ einbezieht, um benachbarten Netzwerken die Verfügbarkeit der globalen Netzwerkadresse anzukündigen. Der globale Zugriffspunkt kann somit Datenverkehr, der an die globalen Netzwerkadressen adressiert ist, anziehen. Wie nachstehend ausführlicher offenbart wird, können die globalen Zugriffspunkte in einigen Fällen BGP-Ankündigungen „formen“, um die Resilienz eines netzwerkbasierten Dienstes gegen Netzwerkunterbrechungen zu erhöhen. Beispielsweise können die globalen Zugriffspunkte ihre angekündigten globalen Netzwerkadressen in zwei Gruppen aufteilen und einem Dienst mindestens eine Netzwerkadresse aus jeder Gruppe zuweisen. Die globalen Zugriffspunkte können dann jede Gruppe von Adressen einem anderen benachbarten Netzwerk ankündigen. Auf diese Weise kann jeder Zugriffspunkt effektiv zwei Pfade schaffen, um den Punkt zu erreichen: durch einen ersten Nachbarn, der eine Adresse der ersten Gruppe verwendet, oder durch einen zweiten Nachbarn, der eine Adresse einer zweiten Gruppe verwendet. Wenn also ein benachbartes Netzwerk in irgendeiner Weise ausfällt, ist ein alternativer Pfad vorhanden, um den Zugriffspunkt zu erreichen. Da außerdem jeder Zugriffspunkt auf diese Weise arbeiten kann, kann der Datenverkehr, wenn ein Zugriffspunkt vollständig ausfällt, automatisch über herkömmliche Anycast-Routing-Mechanismen zu einem anderen Zugriffspunkt geroutet werden. Während in dieser Schrift Beispiele bereitgestellt werden, die sich auf zwei Gruppen beziehen, kann eine beliebige Anzahl von Gruppen bereitgestellt werden.Each global access point can use anycast techniques to advertise the availability of the service via the one or more global network addresses associated with the service. As an illustration, each access point can use the Border Gateway Protocol ("BGP") to advertise the global network addresses by including a BGP "speaker" to announce the availability of the global network address to neighboring networks. The global access point can thus attract traffic addressed to the global network addresses. As will be disclosed in more detail below, in some cases the global access points may "shape" BGP advertisements to increase the resiliency of a network-based service against network disruptions. For example, the global access points can divide their advertised global network addresses into two groups and allocate at least one network address from each group to a service. The global access points can then advertise each group of addresses to another neighboring network. In this way, each access point can effectively provide two paths to reach the point: through a first neighbor using an address from the first group, or through a second neighbor using an address from a second group. So if a neighboring network fails in any way, an old one is native path exists to reach the access point. In addition, since any access point can operate in this way, if one access point fails completely, traffic can be automatically routed to another access point using traditional anycast routing mechanisms. While examples are provided in this document that relate to two groups, any number of groups may be provided.

Um noch mehr Resilienz bereitzustellen, kann jeder Zugriffspunkt in einigen Fällen Datenverkehr gemäß einer spezifischen Teilmenge der angebotenen globalen Netzwerkadressen trennen und verschiedene Vorrichtungen oder Programm-Threads nutzen, um an jede Teilmenge adressierten Datenverkehr zu verarbeiten. Wenn auf diese Weise der Datenverkehr einer Teilmenge für den Betrieb des Zugriffspunkts problematisch ist (z. B. aufgrund einer Fehlkonfiguration in Bezug auf eine globale Netzwerkadresse der Teilmenge), ist es unwahrscheinlich, dass der Betrieb einer Vorrichtung oder Thread-Handling-Datenverkehr einer anderen Teilmenge beeinflusst wird. In einer Ausführungsform verwendet der Zugriffspunkt eine Kombination unterschiedlicher Netzwerkadressgruppen und eine getrennte Verarbeitung von Teilmengen jeder Netzwerkgruppe. Darüber hinaus können Dienste zwischen den Teilmengen jeder Gruppe „umgeordnet“ werden, sodass, wenn zwei Diensten Netzwerkadressen innerhalb einer gemeinsamen Teilmenge einer Gruppe zugewiesen werden, den beiden Diensten wahrscheinlich Netzwerkadressen innerhalb unterschiedlicher Teilmengen einer zweiten Gruppe zugewiesen werden. Wenn bei dieser Konfiguration die Konfiguration eines bestimmten Dienstes Probleme beim Betrieb eines Zugriffspunkts in Bezug auf eine Teilmenge einer Gruppe verursacht, wären andere Dienste wahrscheinlich immer noch über eine alternative Gruppe erreichbar (wobei sich ihre Adressen wahrscheinlich nicht in derselben Teilmenge befinden wie der problematische Dienst). Durch Erhöhen der Anzahl von Adressgruppen und Teilmengen kann die Gesamtanzahl von Diensten, die durch einen problematischen Dienst beeinflusst werden, nach und nach verringert werden.In some cases, to provide even more resiliency, each access point may segregate traffic according to a specific subset of the offered global network addresses and use different devices or program threads to process traffic addressed to each subset. In this way, if the traffic of one subset is problematic for the operation of the access point (e.g. due to a misconfiguration with respect to a global network address of the subset), the operation of one device or thread handling traffic of another is unlikely Subset is affected. In one embodiment, the access point uses a combination of different network address groups and separate processing of subsets of each network group. In addition, services can be "reordered" between the subsets of each group, such that if two services are assigned network addresses within a common subset of one group, the two services are likely to be assigned network addresses within different subsets of a second group. With this configuration, if the configuration of a particular service causes problems in the operation of an access point with respect to a subset of a group, other services would probably still be reachable through an alternative group (where their addresses are probably not in the same subset as the problematic service) . Increasing the number of address groups and subsets can gradually reduce the total number of services affected by a problematic service.

Nach Empfangen einer Anfrage zum Zugriff auf einen Dienst kann ein globaler Zugriffspunkt konfiguriert werden, um den Datenverkehr an einen geeigneten Endpunkt innerhalb eines Rechenzentrums, das den Dienst bereitstellt, zu routen. Dazu muss der globale Zugriffspunkt möglicherweise eine Netzwerkadresse des Endpunkts kennen. In einer Ausführungsform ist jedes Rechenzentrum mit einer Ressourcenmanagervorrichtung konfiguriert, die eine Liste von Endpunkten verwaltet, die Zugriff auf einen Dienst bereitstellen. Der Ressourcenmanager kann die Zugriffspunkte der Endpunkte informieren, einschließlich Netzwerkadressinformationen für die Endpunkte. Somit kann jeder Zugriffspunkt beim Empfangen einer Anfrage für einen Zugriff auf einen Dienst konfiguriert sein, um einen verfügbaren Endpunkt für den Dienst auszuwählen und die Anfrage an diesen Endpunkt zu routen. Wie nachstehend erörtert, kann der Endpunkt auf Grundlage eines Verteilungsalgorithmus ausgewählt werden, der einen Satz von Endpunkten auf Grundlage eines Produkts aus geografischen Kriterien und Verteilungskriterien auswählt. Der globale Zugriffspunkt kann beispielsweise eine prozentuale Verteilung mit einem Münzwurf-Algorithmus auf verschiedene geografische Teilgruppen eines Rechenzentrums anwenden. Außerdem kann der globale Zugriffspunkt dann einen Auswahlalgorithmus anwenden, um einzelne Endpunkte auf Grundlage von Verarbeitungsattributen der Anfrage (z. B. 5-Tupel-Informationen) auszuwählen, um sicherzustellen, dass ein ausgewählter Endpunkt konsistent ausgewählt wird. Beispielsweise kann der globale Zugriffspunkt einen Bewertungsalgorithmus implementieren, der eine konsistente Auswahl eines Endpunkts auf Grundlage einer höchsten Bewertung ermöglicht.Upon receiving a request to access a service, a global access point can be configured to route traffic to an appropriate endpoint within a data center providing the service. To do this, the global access point may need to know a network address of the endpoint. In one embodiment, each data center is configured with a resource manager device that maintains a list of endpoints that provide access to a service. The resource manager can inform the endpoints' access points, including network address information for the endpoints. Thus, upon receiving a request for access to a service, each access point may be configured to select an available endpoint for the service and route the request to that endpoint. As discussed below, the endpoint may be selected based on a distribution algorithm that selects a set of endpoints based on a product of geographic criteria and distribution criteria. For example, the global access point can apply a percentage distribution using a coin toss algorithm to different geographic subsets of a data center. Additionally, the global access point can then apply a selection algorithm to select individual endpoints based on processing attributes of the request (e.g., 5-tuple information) to ensure that a selected endpoint is consistently selected. For example, the global access point may implement a scoring algorithm that enables consistent selection of an endpoint based on a highest score.

Um Datenverkehr zu einem Endpunkt zu routen, ist in einer Ausführungsform jeder Zugriffspunkt so konfiguriert, dass er eine Netzwerkadressübersetzung (network address translation - „NAT“) nutzt. NAT-Techniken sind im Fach bekannt und werden daher in dieser Schrift nicht im Detail beschrieben. Im Allgemeinen ermöglichen NAT-Techniken jedoch einer Vorrichtung, als Mittelsmann zwischen zwei Vorrichtungen zu fungieren, während Aspekte jedes Datenpakets, wie etwa eine Quell- und Zielnetzwerkadresse, neu geschrieben werden, um die Kommunikation zwischen den Vorrichtungen zu erleichtern. Gemäß Ausführungsformen der vorliegenden Offenbarung kann jeder Zugriffspunkt betrieben werden, um eine Quellnetzwerkadresse einer anfragenden Vorrichtung durch seine eigene Netzwerkadresse zu ersetzen (z. B. eine Unicast-Netzwerkadresse, die den globalen Zugriffspunkt eindeutig identifiziert) und die Zielnetzwerkadresse (z. B. die globale Netzwerkadresse eines Dienstes) durch eine Netzwerkadresse eines Endpunkts, der diesen Dienst bereitstellt, zu ersetzen. Der Zugriffspunkt kann dann das Datenpaket zu dem Endpunkt routen, eine Antwort von dem Endpunkt (falls vorhanden) empfangen, eine Rückwärtsübersetzung von Quelle und Ziel durchführen (z. B. die Quelle der Antwort durch die globale Netzwerkadresse und das Ziel der Antwort durch die Netzwerkadresse der anfragenden Vorrichtung ersetzen) und das Datenpaket an die anfragende Vorrichtung zurückgeben. In einer Ausführungsform kann der Zugriffspunkt eine Portübersetzung (im Fach bekannt) verwenden, um die Unterscheidung von Datenverkehrsflüssen (Reihe von zusammenhängenden Paketen) zu erleichtern, wenn NAT genutzt wird, um eine korrekte Übersetzung von Adressen sicherzustellen, wenn Datenverkehr von mehreren anfragenden Vorrichtungen verarbeitet wird.In one embodiment, to route traffic to an endpoint, each access point is configured to utilize network address translation ("NAT"). NAT techniques are known in the art and are therefore not described in detail in this document. In general, however, NAT techniques allow a device to act as a middleman between two devices while aspects of each data packet, such as a source and destination network address, are rewritten to facilitate communication between the devices. According to embodiments of the present disclosure, each access point is operable to replace a requesting device's source network address with its own network address (e.g., a unicast network address that uniquely identifies the global access point) and the destination network address (e.g., the global network address of a service) with a network address of an endpoint that provides this service. The access point can then route the data packet to the endpoint, receive a response from the endpoint (if any), perform a reverse translation of the source and destination (e.g. the source of the response by the global network address and the destination of the response by the network address replace the requesting device) and return the data packet to the requesting device. In one embodiment, the access point may use port translation (known in the art) to help distinguish traffic flows (series of contiguous packets) when using NAT to ensure correct translation of addresses when processing traffic from multiple requesting devices .

Vorteilhafterweise ermöglicht die Verwendung von NAT dem Zugriffspunkt, den von einer Client-Vorrichtung empfangenen Datenverkehr an einen Endpunkt mit minimaler Störung einer Verbindung zwischen der Client-Vorrichtung und dem Endpunkt zu routen. Durch die Nutzung von NAT ist es beispielsweise nicht erforderlich, dass ein Zugriffspunkt als „Endpunkt“ für bestimmte Netzwerkprotokolle, wie etwa das Übertragungssteuerprotokoll (TCP), fungiert. Alternative Routing-Techniken können beispielsweise bewirken, dass ein Zugriffspunkt eine TCP-Verbindung von einer Client-Vorrichtung akzeptiert und eine zweite TCP-Verbindung zu einem Endpunkt initialisiert. Das Aufrechterhalten mehrerer solcher Verbindungen (und Entsprechungen zwischen ihnen) kann die Ressourcennutzung eines Zugriffspunkts erheblich erhöhen, wodurch dessen Kapazität zum Routen von Datenverkehr, der an globale Netzwerkadressen adressiert ist, verringert wird. Somit kann die Verwendung von NAT Vorteile gegenüber solchen Techniken bieten.Advantageously, the use of NAT allows the access point to route traffic received from a client device to an endpoint with minimal disruption to a connection between the client device and the endpoint. For example, using NAT eliminates the need for an access point to act as an "endpoint" for certain network protocols, such as Transmission Control Protocol (TCP). For example, alternative routing techniques may cause an access point to accept a TCP connection from a client device and initiate a second TCP connection to an endpoint. Maintaining multiple such connections (and equivalents between them) can significantly increase an access point's resource utilization, reducing its capacity to route traffic addressed to global network addresses. Thus, the use of NAT can offer advantages over such techniques.

Darüber hinaus ermöglicht die Verwendung von NAT an einem Zugriffspunkt, dass Datenverkehr an eine globale Netzwerkadresse geleitet wird, die sich von einer beliebigen durch einen Endpunkt genutzten Adresse unterscheidet, wodurch die Offenlegung der tatsächlich durch den Endpunkt genutzten Adresse verhindert wird. Somit kann der Endpunkt davor geschützt sein, Datenverkehr direkt zu empfangen. Dies wiederum kann die Anfälligkeit des Endpunkts für Netzwerkangriffe, wie etwa Dienstverweigerungsangriffe (Denial-of-Service - DoS), verringern oder beseitigen. Auf diese Weise können die globalen Zugriffspunkte Vorteile bieten, die denen ähnlich sind, die von herkömmlichen Content-Delivery-Netzwerken (CDN) bereitgestellt werden. Im Gegensatz zu CDN müssen die Zugriffspunkte jedoch die Funktionalität des Dienstes nicht replizieren (z. B. durch Implementieren eines Webservers an jedem Einwählknoten innerhalb des CDN). Vielmehr können die Zugriffspunkte der vorliegenden Offenbarung ermöglichen, dass Datenverkehr durch den Zugriffspunkt fließt, wodurch es Datenpaketen einer anfragenden Vorrichtung ermöglicht wird, einen Endpunkt, der den Dienst bereitstellt, zu erreichen. Unter anderem aus diesem Grund können die in dieser Schrift offenbarten globalen Zugriffspunkte einen größeren Funktionsumfang als CDN bereitstellen, was einen Lastausgleich und eine Verteilung auf eine beliebige Anzahl verschiedener netzwerkbasierter Dienste ermöglicht.In addition, the use of NAT at an access point allows traffic to be directed to a global network address that is different from any address used by an endpoint, thereby preventing disclosure of the actual address used by the endpoint. Thus, the endpoint can be protected from receiving traffic directly. This, in turn, can reduce or eliminate the endpoint's vulnerability to network attacks, such as denial-of-service (DoS) attacks. In this way, the global access points can provide benefits similar to those provided by traditional content delivery networks (CDN). However, unlike CDN, the access points do not have to replicate the functionality of the service (e.g. by implementing a web server at each dial-up node within the CDN). Rather, the access points of the present disclosure may allow traffic to flow through the access point, thereby allowing data packets from a requesting device to reach an endpoint providing the service. For this reason, among others, the global access points disclosed in this document can provide a greater range of functions than CDN, which enables load balancing and distribution to any number of different network-based services.

In einer weiteren Ausführungsform ist jeder Zugriffspunkt so konfiguriert, dass er eine Kapselung nutzt, um Datenverkehr zu einem Endpunkt zu routen. Die Kapselung ist eine bekannte Netzwerktechnik und wird daher in dieser Schrift nicht im Detail beschrieben. Im Allgemeinen kann die Kapselung jedoch genutzt werden, um einem Datenpaket zusätzliche Informationen (häufig in Form eines Headers, manchmal auch in Form eines Trailers) hinzuzufügen und so das Datenpaket „einzuwickeln“ oder zu kapseln, um ein gekapseltes Datenpaket zu erhalten. Im Kontext der vorliegenden Offenbarung kann die Kapselung genutzt werden, um einen „Netzwerktunnel“ zwischen jedem Zugriffspunkt und jedem Endpunkt bereitzustellen. In einem spezifischen Beispiel kann der globale Zugriffspunkt einen Satz virtueller LAN(„VLAN“)-Kanäle zwischen Teilmengen von Endpunkten aufbauen, um eine sicherere Kommunikation über gekapselte Tunnel zu ermöglichen. Allgemein beschrieben entspricht VLAN einer Broadcast-Domäne, die in einem Computernetzwerk in der Sicherungsschicht partitioniert und isoliert ist. Der globale Zugriffspunkt kann verschiedene VLAN für die Kommunikation mit einzelnen Endpunkten oder Teilmengen von Endpunkten implementieren, indem Tags auf Netzwerkframes anwendet und diese Tags in Netzwerksystemen bearbeitet werden, z. B. Paketverarbeitung durch Netzwerkkomponenten. Die globalen Zugriffspunkte können daher unterschiedliche VLAN implementieren, um die Netzwerkkommunikation über Client-Vorrichtungen und Endpunkte, die Anwendungen implementieren, getrennt zu halten, obwohl sie mit demselben physischen Netzwerk verbunden sind. Dementsprechend kann, wenn ein Datenpaket an einem Zugriffspunkt von einer Client-Vorrichtung empfangen und an eine Netzwerkadresse eines durch einen Endpunkt bereitgestellten Dienstes adressiert wird, der Zugriffspunkt das Datenpaket mit zusätzlichen Informationen kapseln, die es ermöglichen, dass das Datenpaket zu einem ausgewählten Endpunkt geroutet wird, wie etwa einer Netzwerkadresse des Endpunkts. Das gekapselte Datenpaket kann dann über ein physisches Netzwerk über eine Netzwerkkomponente, wie etwa einen Top-of-Rack-Switch („TOR“), der 5-Tupel-Informationen nutzen kann, um eingehende Datenpakete an unterschiedliche zugewiesene VLAN zu verteilen, zum Endpunkt geroutet werden. Der Endpunkt kann das gekapselte Datenpaket „entkapseln“, um die zusätzlichen Informationen zu entfernen, und das entkapselte Datenpaket verarbeiten, als ob es direkt von der Client-Vorrichtung empfangen worden wäre. In noch weiteren Aspekten der vorliegenden Anmeldung können den Endpunktvorrichtungen unterschiedliche Teilmengen von Paketverarbeitungszuständigkeiten zugeteilt werden, die im Allgemeinen als Geflechte bezeichnet werden, die auf unterschiedlichen VLAN implementiert sind und die Resilienz beim Wiederherstellen eines Status erleichtern. Genauer gesagt können einzelne Endpunkte, die einem bestimmten VLAN zugeordnet sind, Benachrichtigungsinformationen austauschen, wie etwa Nachrichten zur MTU-Pfaderkennung (Path MTU discovery - „PMTUD“), um sicherzustellen, dass Kommunikationen zu Endpunkten nicht redundant verarbeitet werden, oder um Statusinformationen für eine Ausfallsicherung auszutauschen. Die ausgetauschten Benachrichtigungsinformationen können innerhalb eines bestimmten Geflechts per Multicast übertragen oder über mehrere Geflechte per Broadcast übertragen werden. Beispielsweise können andere Endpunkte so konfiguriert werden, dass sie Broadcast-Kommunikationen ignorieren oder filtern, die keinem zugewiesenen Geflecht zugeordnet sind.In another embodiment, each access point is configured to use encapsulation to route traffic to an endpoint. Encapsulation is a well-known network technology and is therefore not described in detail in this document. In general, however, encapsulation can be used to add additional information (often in the form of a header, sometimes in the form of a trailer) to a data packet, thereby "wrapping" or encapsulating the data packet to obtain an encapsulated data packet. In the context of the present disclosure, encapsulation can be used to provide a "network tunnel" between each access point and each endpoint. In a specific example, the global access point may establish a set of virtual LAN ("VLAN") channels between subsets of endpoints to enable more secure communication over encapsulated tunnels. Broadly described, VLAN corresponds to a broadcast domain that is partitioned and isolated at the data link layer in a computer network. The global access point can implement different VLANs to communicate with individual endpoints or subsets of endpoints by applying tags to network frames and manipulating these tags in network systems, e.g. B. Packet processing by network components. The global access points can therefore implement different VLANs to keep network communication separate across client devices and endpoints that implement applications, even though they are connected to the same physical network. Accordingly, when a data packet is received at an access point from a client device and addressed to a network address of a service provided by an endpoint, the access point can encapsulate the data packet with additional information that allows the data packet to be routed to a selected endpoint , such as a network address of the endpoint. The encapsulated data packet can then travel over a physical network to the endpoint via a network component such as a top-of-rack ("TOR") switch that can use 5-tuple information to distribute incoming data packets to different assigned VLANs be routed. The endpoint can "decapsulate" the encapsulated data packet to remove the additional information and process the deencapsulated data packet as if it were received directly from the client device. In still other aspects of the present application, the endpoint devices may be assigned different subsets of packet processing responsibilities, commonly referred to as fabrics, implemented on different VLANs, facilitating resiliency in state recovery. More specifically, individual endpoints associated with a particular VLAN can exchange notification information, such as Path MTU discovery (“PMTUD”) messages, to ensure communications to endpoints are not processed redundantly, or to provide status information for a replace failsafe. The exchanged notification information may be multicast within a particular fabric or broadcast across multiple fabrics. For example, other endpoints be configured to ignore or filter broadcast communications not associated with an assigned fabric.

In einer Ausführungsform kann der Endpunkt der Client-Vorrichtung direkt über ein physisches Netzwerk, das den Endpunkt mit der Client-Vorrichtung verbindet, antworten. In einer weiteren Ausführungsform kann der Endpunkt der Client-Vorrichtung antworten, indem er ein Antwortpaket kapselt und das gekapselte Antwortpaket zurück an den Zugriffspunkt überträgt. Der Zugriffspunkt kann wiederum das Antwortpaket entkapseln und das Antwortpaket an den Client zurückgeben. Die direkte Rückgabe von Antworten von einem Endpunkt an eine Client-Vorrichtung kann die Arbeitslast eines Zugriffspunkts vorteilhaft reduzieren und kann auch den Datenverkehr in einem physischen Netzwerk, das den Zugriffspunkt mit dem Endpunkt verbindet, reduzieren. Jedoch kann eine direkte Rückgabe von Antworten erforderlich sein, um ein physisches Netzwerk, das den Endpunkt mit der Client-Vorrichtung verbindet, zu nutzen, das möglicherweise nicht so robust ist wie das physische Netzwerk, das den Zugriffspunkt mit dem Endpunkt verbindet. Wenn beispielsweise der Endpunkt und der Zugriffspunkt über ein privates Netzwerk verbunden sind, während der Zugriffspunkt, der Endpunkt und die Client-Vorrichtung über ein öffentliches Netzwerk (wie etwa das Internet) verbunden sind, kann die Rückgabe von Antworten über den Zugriffspunkt (anstatt einer direkten Rückgabe) bevorzugt sein, da es bevorzugt sein kann, die im öffentlichen Netzwerk zurückgelegte Gesamtentfernung zu minimieren (z. B. wenn sich der Zugriffspunkt näher an der Client-Vorrichtung befindet als der Endpunkt).In one embodiment, the endpoint may respond to the client device directly over a physical network connecting the endpoint to the client device. In another embodiment, the endpoint may respond to the client device by encapsulating a response packet and transmitting the encapsulated response packet back to the access point. In turn, the access point can decapsulate the response packet and return the response packet to the client. Returning responses directly from an endpoint to a client device may advantageously reduce the workload of an access point and may also reduce traffic on a physical network connecting the access point to the endpoint. However, direct return of responses may be required to utilize a physical network connecting the endpoint to the client device, which may not be as robust as the physical network connecting the access point to the endpoint. For example, if the endpoint and access point are connected through a private network, while the access point, endpoint, and client device are connected through a public network (such as the Internet), returning responses through the access point (rather than a direct return) may be preferred as it may be preferred to minimize the total distance traveled in the public network (e.g. when the access point is closer to the client device than the endpoint).

Im Allgemeinen kann die Kapselung von Paketen zwischen Zugriffspunkten und Endpunkten die Rechenressourcennutzung von Zugriffspunkten und Endpunkten im Vergleich zur Verwendung von NAT zum Routen von Paketen von Zugriffspunkten zu Endpunkten erhöhen. Die Kapselung kann jedoch auch Vorteile gegenüber einer NAT-Implementierung bereitstellen. Zum Beispiel kann die Kapselung die Resilienz einer TCP-Sitzung für den Fall bereitstellen, dass Datenpakete einer Client-Vorrichtung während der TCP-Sitzung zu unterschiedlichen globalen Zugriffspunkten geroutet werden. Ein solches Routen kann beispielsweise auf Grundlage des Betriebs von Netzwerken zwischen der Client-Vorrichtung und den unterschiedlichen Zugriffspunkten aufgrund potenzieller Änderungen in der Art und Weise erfolgen, wie die Netzwerke Anycast-Angebote der unterschiedlichen Zugriffspunkte verarbeiten. Wenn ein Zugriffspunkt NAT nutzt, um Datenpakete zu einem Endpunkt zu routen, kann jeder Zugriffspunkt NAT-Informationen unabhängig verwalten. Wenn Datenpakete der Client-Vorrichtung zu einem anderen Zugriffspunkt geroutet werden, verfügt dieser zweite Zugriffspunkt möglicherweise nicht über ausreichende Informationen, um die Kommunikation des Clients ordnungsgemäß zu übernehmen (z. B. sind die transformierten Datenpakete des zweiten Zugriffspunkts möglicherweise nicht identisch zu dem, was am ursprünglichen Zugriffspunkt generiert wurde). Dies kann dazu führen, dass die TCP-Sitzung der Client-Vorrichtung und des Endpunkts unterbrochen wird, sodass die Client-Vorrichtung die TCP-Verbindung wiederherstellen muss.In general, encapsulating packets between access points and endpoints can increase the computational resource utilization of access points and endpoints compared to using NAT to route packets from access points to endpoints. However, encapsulation can also provide advantages over a NAT implementation. For example, encapsulation can provide resiliency of a TCP session in case data packets of a client device are routed to different global access points during the TCP session. Such routing may be done, for example, based on the operation of networks between the client device and the different access points due to potential changes in how the networks process anycast offers from the different access points. When an access point uses NAT to route data packets to an endpoint, each access point can independently manage NAT information. If client device data packets are routed to a different access point, that second access point may not have sufficient information to properly handle the client's communication (e.g., the second access point's transformed data packets may not be identical to what generated at the original access point). This can cause the client device and endpoint TCP session to be broken, requiring the client device to reestablish the TCP connection.

Im Gegensatz dazu kann die Kapselung eine ordnungsgemäße Handhabung der Umleitung von Client-Anfragen zwischen Zugriffspunkten ermöglichen. Bei entweder NAT- oder Kapselungsimplementierungen kann jeder Zugriffspunkt so konfiguriert sein, dass er einen Endpunkt auf konsistente Weise auswählt. Wie vorstehend beschrieben, können die Zugriffspunkte einen Auswahlalgorithmus anwenden, der eine Bewertung generiert, die ein gewünschtes Rechenzentrum angibt. Solche Auswahlalgorithmen können unter anderem gewichtete Rendezvous-Hashing- oder gewichtete konsistente Hashing-Algorithmen beinhalten. Somit wäre zu erwarten, dass Client-Vorrichtungspakete zu demselben Endpunkt geroutet werden, unabhängig von dem Zugriffspunkt, an den sie ursprünglich gesendet wurden. Darüber hinaus müssen durch die Nutzung der Kapselung keine Daten der anfänglichen Datenpakete der Client-Vorrichtung geändert werden, wenn die Datenpakete zu dem Endpunkt geroutet werden. Vielmehr können diese Daten gekapselt sein (z. B. mit zusätzlichen Informationen, die das Routen zu dem Endpunkt ermöglichen) und nach der Entkapselung am Endpunkt wiedergewonnen werden. Aus diesem Grund können die endgültigen Daten, die dem Endpunkt nach der Entkapselung zur Verfügung stehen, auch dann dieselben sein, wenn Client-Datenpakete an unterschiedliche Zugriffspunkte geroutet werden, sodass der Endpunkt eine TCP-Sitzung mit der Client-Vorrichtung aufrechterhalten kann, selbst wenn Daten über unterschiedliche Zugriffspunkte fließen.In contrast, encapsulation can allow for proper handling of the redirection of client requests between access points. With either NAT or encapsulation implementations, each access point can be configured to choose an endpoint in a consistent manner. As described above, the access points may apply a selection algorithm that generates a score that indicates a desired data center. Such selection algorithms may include, but are not limited to, weighted rendezvous hashing or weighted consistent hashing algorithms. Thus, client device packets would be expected to be routed to the same endpoint regardless of the access point to which they were originally sent. Furthermore, by using encapsulation, no data of the client device's initial data packets need to be modified when the data packets are routed to the endpoint. Rather, this data may be encapsulated (e.g., with additional information enabling routing to the endpoint) and retrieved at the endpoint after de-encapsulation. Because of this, the final data available to the endpoint after decapsulation can be the same even if client data packets are routed to different access points, allowing the endpoint to maintain a TCP session with the client device even if Data flows through different access points.

Um die Leistung in Implementierungen, die Kapselung nutzen, weiter zu verbessern, kann in einigen Ausführungsformen jeder Zugriffspunkt so konfiguriert sein, dass er Endpunkte beim Aufbauen von verbindungsorientierten Kommunikationssitzungen, wie etwa TCP-Sitzungen, mit Client-Vorrichtungen unterstützt. Verbindungsorientierte Kommunikationssitzungen erfordern im Allgemeinen eine Sitzungsinitialisierungsphase, in der die beiden Teilnehmer der Sitzung kommunizieren, um ein gegenseitiges Verständnis des Kommunikationsstatus herzustellen. TCP-Sitzungen nutzen beispielsweise einen „Drei-Wege-Handshake“. Der TCP-Dreiwege-Handshake ist im Fach bekannt und wird daher in dieser Schrift nicht im Detail beschrieben. Kurz gesagt wird dabei jedoch eine TCP-Sitzung aufgebaut, wenn ein erster Teilnehmer ein Synchronisationspaket („SYN“) an einen zweiten Teilnehmer sendet (einschließlich einer während der Sitzung zu verwendenden Sequenznummer des ersten Teilnehmers), der zweite Teilnehmer mit einem Synchronisations- Bestätigungspaket („SYN-ACK“) (das die Sequenznummer des ersten Teilnehmers bestätigt und eine Sequenznummer des zweiten Teilnehmers beinhaltet) antwortet und der erste Teilnehmer auf das SYN-ACK-Datenpaket mit einem Bestätigungspaket („ACK“) (das die Sequenznummer des zweiten Teilnehmers bestätigt) antwortet. Da der Drei-Wege-Handshake drei separate Kommunikationen zwischen den Teilnehmern erfordert, wird eine Zunahme der Latenz zwischen den Teilnehmern während des Handshakes um das Dreifache vergrößert, was im Allgemeinen als „Latenz des ersten Bytes“ bezeichnet wird. Im Kontext der vorliegenden Offenbarung kann beispielsweise, wenn bei Kommunikationen zwischen einer Client-Vorrichtung und einem Endpunkt eine Latenz von 100 Millisekunden (ms) entsteht, erwartet werden, dass der Drei-Wege-Handshake mindestens 300 Millisekunden dauert. Da ein derartiger Handshake vor der Übertragung von Daten über eine TCP-Sitzung erforderlich ist, ist es vorteilhaft, die zum Initialisieren der TCP-Sitzung erforderliche Zeit zu reduzieren, z. B. die Latenz des ersten Bytes zu reduzieren. Wie nachstehend beschrieben wird, kann die TCP-Sitzung zwischen dem globalen Zugriffspunkt in weiteren Ausführungsformen ferner die TCP-Sitzung zwischen dem globalen Zugriffspunkt und einer Zwischenvorrichtung, die auf den ausgewählten Endpunkt lokalisiert ist, und eine dritte TCP-Sitzung (neu) zwischen der lokalisierten Zwischenvorrichtung und dem ausgewählten Endpunkt beinhalten. Dementsprechend kann die Latenz des ersten Bytes weiter verringert werden, indem die Latenz zwischen dem Endpunkt und der lokalisierten Zwischenvorrichtung weiter begrenzt wird.To further improve performance in implementations that use encapsulation, in some embodiments each access point may be configured to assist endpoints in establishing connection-oriented communication sessions, such as TCP sessions, with client devices. Connection-oriented communication sessions generally require a session initialization phase in which the two participants in the session communicate to establish a mutual understanding of the communication status. For example, TCP sessions use a "three-way handshake." The TCP three-way handshake is well known in the art and is therefore not described in detail in this document. In short, however, a TCP session is established when a first participant initiates a synchronisa communication packet ("SYN") to a second party (including a first party's sequence number to be used during the session), the second party with a synchronization acknowledgment ("SYN-ACK") packet (confirming the first party's sequence number and a second party's sequence number) and the first party responds to the SYN-ACK data packet with an acknowledgment ("ACK") packet (acknowledging the second party's sequence number). Since the three-way handshake requires three separate communications between the participants, an increase in latency between the participants during the handshake is magnified by a factor of three, commonly referred to as "first byte latency". For example, in the context of the present disclosure, if communications between a client device and an endpoint incur a 100 millisecond (ms) latency, the three-way handshake can be expected to last at least 300 milliseconds. Since such a handshake is required prior to the transmission of data over a TCP session, it is advantageous to reduce the time required to initialize the TCP session, e.g. B. to reduce the latency of the first byte. As described below, in other embodiments, the TCP session between the global access point may further include the TCP session between the global access point and an intermediate device located on the selected endpoint, and a third TCP session (new) between the located one include intermediate device and the selected endpoint. Accordingly, the first byte latency may be further reduced by further limiting the latency between the endpoint and the located intermediate device.

Dementsprechend kann in Ausführungsformen der vorliegenden Offenbarung jeder globale Zugriffspunkt dazu konfiguriert sein, einen TCP-Drei-Wege-Handshake mit einer Client-Vorrichtung durchzuführen und dann die TCP-Verbindung an einen Endpunkt „abzugeben“. Insbesondere kann jeder Zugriffspunkt dazu konfiguriert sein, auf eingehende SYN-Datenpakete von Client-Vorrichtungen „zu lauschen“ und auf solche Datenpakete zu antworten, indem er den TCP-Drei-Wege-Handshake durchführt. Nachdem der Handshake abgeschlossen ist, kann der Zugriffspunkt TCP-Sitzungsinformationen (z. B. die Sequenznummern des ersten und zweiten Teilnehmers der TCP-Sitzung) an einen Endpunkt übertragen, der ausgewählt ist, um der Client-Vorrichtung einen angeforderten Dienst bereitzustellen. Beim Empfangen der TCP-Sitzungsinformationen kann der Endpunkt die TCP-Sitzung „annehmen“ und Datenpakete der Client-Vorrichtung verarbeiten, als ob die TCP-Sitzung zwischen der Client-Vorrichtung und dem Endpunkt aufgebaut worden wäre. Da davon ausgegangen werden kann, dass sich der Zugriffspunkt in Bezug auf die Latenz „näher“ an der Client-Vorrichtung befindet, wird die Zeit zum Aufbau der TCP-Sitzung reduziert, ohne die Fähigkeit der Client-Vorrichtung und des Endpunkts zu beeinträchtigen, über eine gemeinsames TCP-Sitzung zu kommunizieren. Während in dieser Schrift Beispiele in Bezug auf TCP-Handshakes bereitgestellt werden, erfordern statusbehaftete Kommunikationssitzungen im Allgemeinen jeweils eine Initialisierungsphase. In dieser Schrift beschriebene Ausführungsformen können genutzt werden, um eine solche Initialisierungsphase an einem Zugriffspunkt durchzuführen, während Kontext für die verbindungsorientierte Kommunikationssitzung an einen Endpunkt übergeben wird, um es einer Client-Vorrichtung und dem Endpunkt zu ermöglichen, über die verbindungsorientierte Kommunikationssitzung zu kommunizieren.Accordingly, in embodiments of the present disclosure, each global access point may be configured to perform a TCP three-way handshake with a client device and then "drop off" the TCP connection to an endpoint. In particular, each access point may be configured to "listen" for incoming SYN data packets from client devices and respond to such data packets by performing the TCP three-way handshake. After the handshake is complete, the access point may transmit TCP session information (e.g., the sequence numbers of the first and second participants in the TCP session) to an endpoint selected to provide a requested service to the client device. Upon receiving the TCP session information, the endpoint can "accept" the TCP session and process data packets from the client device as if the TCP session had been established between the client device and the endpoint. Because the access point can be considered to be "closer" to the client device in terms of latency, the time to establish the TCP session is reduced without impacting the ability of the client device and endpoint to get over a common TCP session to communicate. While examples are provided in this document in relation to TCP handshakes, stateful communication sessions generally each require an initialization phase. Embodiments described herein may be used to perform such an initialization phase at an access point while passing context for the connection-oriented communication session to an endpoint to allow a client device and the endpoint to communicate over the connection-oriented communication session.

Darüber hinaus können die globalen Zugriffspunkte konfiguriert werden, um unterschiedliche TCP-basierte Konfigurationen zu modifizieren oder auszuwählen, um Verbindungen mit höherer Bandbreite zwischen den Zugriffspunkten und den Rechenzentren einzusetzen. Genauer beinhalten gemäß Aspekten der vorliegenden Anmeldung TCP-basierte Kommunikationen typischerweise verschiedene Einstellungen oder Parameter, die das Maß der übertragenen Daten steuern können. Solche Parameter können einer übertragenen Datenmenge zugeordnet sein, die allgemein als Fensterungsparameter bezeichnet wird. Die Parameter können auch einen Überlastungskontrollparameter beinhalten, wie etwa eine langsame Startstrategie, die durch das TCP in Verbindung mit anderen Algorithmen verwendet wird, um zu vermeiden, dass mehr Daten gesendet werden, als das Netzwerk weiterleiten kann, d. h. um eine Netzwerküberlastung zu vermeiden. Für herkömmliche TCP-Kommunikationen, einschließlich öffentlicher Netzwerkverbindungen, werden die Parameter für die Datenfensterung und die Überlastungssteuerung normalerweise auf niedrigeren Ebenen eingestellt, falls mehrere TCP-Verbindungen eine gemeinsame Netzwerkverbindung verwenden, und können erhöht werden, wenn der Datendurchsatz gemessen und bestimmt wird, dass größere Mengen von Datendurchsatz unterstützt werden. Dies hat den Effekt, dass die Latenz der Kommunikation erhöht wird, was allgemein als Latenz des letzten Bytes bezeichnet wird. Gemäß Aspekten der vorliegenden Anmeldung weisen die Client-Rechenvorrichtung und der globale Zugriffspunkt eine erste TCP-Verbindung auf, die mit herkömmlichen Ansätzen für Überlastungskontrollparameter und Fensterungsparameter (z. B. anfängliche niedrigere Werte, die auf Grundlage gemessenen Attributen der Verbindung erhöht werden können) konfiguriert sind. Der globale Zugriffspunkt und der Endpunkt weisen eine zweite TCP-Verbindung auf, die nicht mit dem herkömmlichen Ansatz konfiguriert ist, da der globale Zugriffspunkt und der Endpunkt über eine zweite Netzwerkverbindung kommunizieren, wie etwa ein privates Netzwerk, das so konfiguriert sein kann, dass es einen höheren Datendurchsatz mit geringerer Wahrscheinlichkeit einer Überlastung oder geringerer effektiver Bandbreite unterstützt. Dementsprechend kann der globale Zugriffspunkt die Überlastungskontrollparameter und Fensterungsparameter auf einen höchsten oder höheren Anfangswert setzen, was direkt zu einem größeren Datendurchsatz führt. Somit kann der Gesamtdatendurchsatz (z. B. kann die Latenz des letzten Bytes erhöht werden).In addition, the global access points can be configured to modify or select different TCP-based configurations to deploy higher-bandwidth connections between the access points and the data centers. More specifically, according to aspects of the present application, TCP-based communications typically include various settings or parameters that can control the level of data transferred. Such parameters may be associated with a transmitted data set, commonly referred to as a windowing parameter. The parameters may also include a congestion control parameter, such as a slow start strategy used by TCP in conjunction with other algorithms to avoid sending more data than the network can carry, ie to avoid network congestion. For traditional TCP communications, including public network connections, data windowing and congestion control parameters are typically set at lower levels in the event multiple TCP connections share a common network connection, and may be increased when data throughput is measured and determined that larger amounts of data throughput are supported. This has the effect of increasing the latency of the communication, commonly referred to as last byte latency. According to aspects of the present application, the client computing device and the global access point have a first TCP connection configured with conventional approaches for congestion control parameters and windowing parameters (e.g., initial lower values that can be increased based on measured attributes of the connection). are. The global access point and endpoint have a second TCP connection that is not configured with the traditional approach because the global access point and endpoint use a second network communicate over a factory connection, such as a private network, which may be configured to support higher data throughput with less likelihood of congestion or less effective bandwidth. Accordingly, the global access point can set the congestion control parameters and windowing parameters to a maximum or higher initial value, which directly leads to greater data throughput. Thus, overall data throughput (e.g., last byte latency can be increased).

Wie für den Fachmann angesichts der vorliegenden Offenbarung ersichtlich ist, verbessern die in dieser Schrift offenbarten Ausführungsformen die Fähigkeit von Rechensystemen, über das Netzwerk zugängliche Dienste bereitzustellen. Insbesondere verbessern Ausführungsformen der vorliegenden Offenbarung frühere Lastausgleichstechniken, indem sie einen skalierbaren, resilienten und reaktionsfähigen Lastausgleich über eine gemeinsame Netzwerkadresse hinweg bereitstellen, wodurch bekannte Lastausgleichstechniken verbessert werden. Darüber hinaus befassen sich die gegenwärtig offenbarten Ausführungsformen mit technischen Problemen, die Rechensystemen inhärent sind, insbesondere der begrenzten Natur der Rechenressourcen, mit denen über das Netzwerk zugängliche Dienste bereitgestellt werden können, und den Schwierigkeiten, Anfragen an solche Dienste auf skalierbare, resiliente und reaktionsfähige Weise zum Lastausgleich zu verteilen. Diese technischen Probleme werden durch die verschiedenen in dieser Schrift beschriebenen technischen Lösungen angegangen, einschließlich der Verwendung eines verteilten Satzes von Zugriffspunkten, die einer gemeinsamen Netzwerkadresse zugeordnet sind, wobei jeder konfiguriert ist, um Anfragen für einen Dienst zu empfangen und die Anfragen zu Endpunkten des Dienstes zumindest teilweise auf Grundlage eines Lastausgleichs der Anfragen zwischen den Endpunkten zu routen. Somit stellt die vorliegende Offenbarung eine Verbesserung bestehender Netzwerk-Lastausgleichssysteme und Rechensysteme im Allgemeinen dar.As will be apparent to those skilled in the art in light of the present disclosure, the embodiments disclosed herein improve the ability of computing systems to provide network accessible services. In particular, embodiments of the present disclosure improve on previous load balancing techniques by providing scalable, resilient, and responsive load balancing across a common network address, thereby improving on known load balancing techniques. In addition, the presently disclosed embodiments address technical issues inherent in computing systems, particularly the limited nature of the computing resources that can be used to provide network-accessible services and the difficulties in handling requests for such services in a scalable, resilient, and responsive manner for load balancing. These technical problems are addressed through the various technical solutions described in this paper, including the use of a distributed set of access points mapped to a common network address, each configured to receive requests for a service and the requests to endpoints of the service route based at least in part on load balancing the requests between the endpoints. Thus, the present disclosure represents an improvement on existing network load balancing systems and computing systems in general.

Die vorstehenden Aspekte und viele der damit verbundenen Vorteile dieser Offenbarung sind leichter ersichtlich, wenn unter Bezugnahme auf die folgende Beschreibung in Verbindung mit den begleitenden Zeichnungen ein besseres Verständnis dafür entwickelt wird.The foregoing aspects and many of the attendant advantages of this disclosure will become more apparent as a better understanding thereof is developed by reference to the following description in connection with the accompanying drawings.

1 ist ein Blockdiagramm, das eine beispielhafte logische Umgebung 100 darstellt, die mehrere Client-Vorrichtungen 102 in Kommunikation mit einem Satz globaler Zugriffspunkte 106A-N über ein erstes Netzwerk 104 beinhaltet, wobei die globalen Zugriffspunkte 106A-N mit einem Satz von Rechenzentren 110A-N über ein zweites Netzwerk 108 kommunizieren. Während sich die Client-Vorrichtungen 102, die globalen Zugriffspunkte 106 und die Rechenzentren 110 in 1 in Gruppen befinden, können die Client-Vorrichtungen 102, die globalen Zugriffspunkte 106 und die Rechenzentren 110 geografisch entfernt sein und unabhängig besessen oder betrieben werden. Zum Beispiel könnten die Client-Vorrichtungen 102 eine Vielzahl von Benutzern an verschiedenen globalen, kontinentalen oder regionalen Standorten darstellen, die auf über das Netzwerk zugängliche Dienste zugreifen, die durch die Rechenzentren 110 bereitgestellt werden, wobei die Rechenzentren ferner auf verschiedene globale, kontinentale oder regionale Standorte verteilt sein können. Die globalen Zugriffspunkte 106 können ähnlich verteilt sein. In einer Ausführungsform stellen die Rechenzentren 110 Vorrichtungen an Standorten dar, die von einer einzelnen Entität kontrolliert werden, wie etwa einem „Cloud-Computing“-Anbieter, während die globalen Zugriffspunkte 106 Vorrichtungen an gemeinsam genutzten Standorten darstellen, wie etwa Netzwerk-„Einwählknoten“ oder Internetknotenpunkte (Internet Exchange Points - IXP). Die globalen Zugriffspunkte 106 können im Allgemeinen zahlreicher als die Rechenzentren 110 sein und sich an unterschiedlichen physischen Standorten befinden. In anderen Ausführungsformen können sich jedoch einer oder mehrere der Zugriffspunkte 106 in einem oder mehreren Rechenzentren 110 befinden. Dementsprechend sollen die Gruppierungen von Client-Vorrichtungen 102, Zugriffspunkten 106 und Rechenzentren 110 in 1 eher eine logische als eine physische Gruppierung darstellen. 1 10 is a block diagram depicting an example logical environment 100 that includes multiple client devices 102 in communication with a set of global access points 106A-N over a first network 104, where the global access points 106A-N are connected to a set of data centers 110A-N communicate via a second network 108 . As client devices 102, global access points 106, and data centers 110 reside in 1 located in clusters, client devices 102, global access points 106, and data centers 110 may be geographically distant and independently owned or operated. For example, client devices 102 could represent a variety of users in different global, continental, or regional locations accessing network-accessible services provided by data centers 110, which data centers may also be in different global, continental, or regional locations Locations can be distributed. The global access points 106 may be similarly distributed. In one embodiment, data centers 110 represent devices in locations controlled by a single entity, such as a "cloud computing" provider, while global access points 106 represent devices in shared locations, such as network "point-of-sale" nodes. or Internet Exchange Points (IXP). Global access points 106 may generally outnumber data centers 110 and be in different physical locations. However, in other embodiments, one or more of the access points 106 may be located in one or more data centers 110 . Accordingly, the groupings of client devices 102, access points 106, and data centers 110 in 1 represent a logical rather than a physical grouping.

Die Netzwerke 104 und 108 können beliebige drahtgebundene Netzwerke, drahtlose Netzwerke oder eine Kombination davon sein. Außerdem können die Netzwerke 104 und 108 ein persönliches Netzwerk, lokales Netzwerk, Weitverkehrsnetz, Kabelnetz, Satellitennetz, Mobiltelefonnetz oder eine Kombination davon sein. In der beispielhaften Umgebung der 1 ist das Netzwerk 104 ein globales Netzwerk (Global Area Network - GAN), wie etwa das Internet, während das Netzwerk 108 ein privates Netzwerk ist, das dem Datenverkehr gewidmet ist, der einer Entität zugeordnet ist, die die Rechenzentren 110 und Zugriffspunkte 106 bereitstellt. Protokolle und Komponenten zum Kommunizieren über die anderen zuvor erwähnten Arten von Kommunikationsnetzwerken sind dem Fachmann auf dem Gebiet der Computerkommunikation gut bekannt und müssen daher in dieser Schrift nicht ausführlicher beschrieben werden.The networks 104 and 108 can be any wired network, wireless network, or a combination thereof. Additionally, networks 104 and 108 may be a personal network, local area network, wide area network, cable network, satellite network, cellular network, or a combination thereof. In the exemplary environment of 1 For example, network 104 is a global network (Global Area Network - GAN), such as the Internet, while network 108 is a private network dedicated to traffic associated with an entity that provides data centers 110 and access points 106 . Protocols and components for communicating over the other aforementioned types of communication networks are well known to those skilled in the computer communications arts and therefore need not be described in further detail herein.

Während jede der Client-Vorrichtungen 102 und jeder der Zugriffspunkte 106 mit einer einzelnen Verbindung zum Netzwerk 104 dargestellt ist, können einzelne Komponenten der Client-Vorrichtungen 102 und Zugriffspunkte 106 an verschiedenen Punkten (z. B. über unterschiedliche benachbarte Netzwerke innerhalb des Netzwerks 104) mit dem Netzwerk 104 verbunden sein. In einigen Ausführungsformen können die Rechenzentren 110 zusätzlich oder alternativ mit dem Netzwerk 104 verbunden sein. Während jeder der Zugriffspunkte 106 und jedes der Rechenzentren 110 mit einer einzelnen Verbindung zum Netzwerk 108 dargestellt ist, können in ähnlicher Weise einzelne Komponenten der Zugriffspunkte 106 und Rechenzentren 110 an verschiedenen Punkten mit dem Netzwerk 108 verbunden sein. Dementsprechend können Kommunikationszeiten und -fähigkeiten zwischen den Komponenten der 1 variieren. Die Netzwerkkonfiguration der 1 soll einen Kommunikationspfad in Ausführungsformen der vorliegenden Offenbarung veranschaulichen und nicht unbedingt alle möglichen Kommunikationspfade darstellen.While each of the client devices 102 and each of the access points 106 is shown as having a single connection to the network 104, individual components of the client devices 102 and Access points 106 may be connected to network 104 at various points (e.g., via different neighboring networks within network 104). In some embodiments, data centers 110 may additionally or alternatively be connected to network 104 . Similarly, while each of the access points 106 and each of the data centers 110 are shown as having a single connection to the network 108, individual components of the access points 106 and data centers 110 may be connected to the network 108 at various points. Accordingly, communication times and capabilities between the components of the 1 vary. The network configuration of the 1 FIG. 1 is intended to illustrate a communication path in embodiments of the present disclosure and is not intended to represent all possible communication paths.

Die Client-Vorrichtungen 102 können eine beliebige Anzahl unterschiedlicher Rechenvorrichtungen beinhalten, die in der Lage sind, mit den globalen Zugriffspunkten 106 zu kommunizieren. Zum Beispiel können einzelne Client-Vorrichtungen 102 einem Laptop oder Tablet-Computer, einem Personal Computer, einem tragbaren Computer, einem Server, einem persönlichen digitalen Assistenten (PDA), einem Hybrid aus PDA und Mobiltelefon, einem Mobiltelefon, einem Lesegerät für elektronische Bücher, einer Set-Top-Box, einer Kamera, einem digitalen Mediaplayer und dergleichen entsprechen. In einigen Fällen werden die Client-Vorrichtungen 102 von Endbenutzern betrieben. In anderen Fällen stellen die Client-Vorrichtungen 102 selbst über das Netzwerk zugängliche Dienste bereit, die mit den globalen Zugriffspunkten 106 interagieren, um auf andere über das Netzwerk zugängliche Dienste zuzugreifen.Client devices 102 may include any number of different computing devices capable of communicating with global access points 106 . For example, individual client devices 102 may be a laptop or tablet computer, a personal computer, a portable computer, a server, a personal digital assistant (PDA), a hybrid PDA-cellular phone, a cellular phone, an e-book reader, a set-top box, a camera, a digital media player, and the like. In some cases, client devices 102 are operated by end users. In other cases, the client devices 102 themselves provide network-accessible services that interact with the global access points 106 to access other network-accessible services.

Die Rechenzentren 110 der 1 beinhalten veranschaulichend Endpunkt-Rechenvorrichtungen, die einen oder mehrere über das Netzwerk zugängliche Dienste im Auftrag eines oder mehrerer Dienstanbieter bereitstellen. Veranschaulichend können die Rechenzentren 110 durch einen „Cloud-Computing“-Anbieter betrieben werden, der Host-Rechenvorrichtungen innerhalb des Rechenzentrums Dienstanbietern zum Bereitstellen ihrer Dienste zur Verfügung stellt. Die Cloud-Computing-Bereitstellung kann im Allgemeinen den Betrieb des Rechenzentrums verwalten, während sie verschiedene Mechanismen für die Serveranbieter bereitstellt, um ihre jeweiligen Endpunkte zu konfigurieren. Eine veranschaulichende Konfiguration eines Rechenzentrums 110 ist nachstehend mit Bezug auf 2 bereitgestellt.The data centers 110 of the 1 10 illustratively include endpoint computing devices that provide one or more network accessible services on behalf of one or more service providers. Illustratively, the data centers 110 may be operated by a “cloud computing” provider that makes host computing devices within the data center available to service providers to provide their services. The cloud computing deployment in general can manage the operations of the data center while providing various mechanisms for the server providers to configure their respective endpoints. An illustrative configuration of a data center 110 is provided below with reference to FIG 2 provided.

Gemäß Ausführungsformen der vorliegenden Offenbarung kann der Cloud-Computing-Anbieter Dienstanbietern ermöglichen, ihre Endpunkte mit einer oder mehreren globalen Netzwerkadressen zu verknüpfen, die im Netzwerk 104 adressierbar sind, um mit den Rechenzentren 110 in lastausgeglichener Weise zu interagieren. Der Cloud-Computing-Anbieter kann es den Dienstanbietern ferner ermöglichen, festzulegen, wie ein solcher Lastausgleich erfolgen soll, etwa durch Festlegen eines Prozentsatzes von Anfragen, die an jedes Rechenzentrum 110 geroutet werden sollen. Der Cloud-Computing-Anbieter kann es den Dienstanbietern ferner ermöglichen, die Konfiguration von Endpunkten unabhängig von den globalen Netzwerkadressen zu ändern, sodass ein Ändern der spezifischen Endpunkte, die einen Dienst bereitstellen, keine Neukonfiguration der Netzwerkadressen erfordert. Die Verwendung globaler Netzwerkadressen kann den Betrieb von Netzwerkdiensten erheblich vereinfachen, da jede Client-Vorrichtung 102, die sich mit dem Dienst verbinden möchte, einfach eine Anfrage an eine globale Netzwerkadresse des Dienstes übertragen kann. Änderungen an den den Dienst bereitstellenden Endpunkten können dann vorgenommen werden, ohne dass beispielsweise DNS-Einträge für den Dienst geändert werden müssen. Wie nachstehend beschrieben wird, können diese Änderungen in einigen Fällen automatisch vorgenommen werden, sodass keine Benutzeraktion erforderlich ist, selbst wenn sich Endpunkte innerhalb der Rechenzentren 110 ändern.According to embodiments of the present disclosure, the cloud computing provider may allow service providers to associate their endpoints with one or more global network addresses addressable in the network 104 to interact with the data centers 110 in a load-balanced manner. The cloud computing provider may also allow service providers to specify how such load balancing should be accomplished, such as by specifying a percentage of requests to be routed to each data center 110 . The cloud computing provider may also allow service providers to change the configuration of endpoints independently of global network addresses, such that changing the specific endpoints providing a service does not require reconfiguration of network addresses. The use of global network addresses can greatly simplify the operation of network services since any client device 102 wishing to connect to the service can simply transmit a request to a global network address of the service. Changes to the endpoints providing the service can then be made without, for example, having to change DNS entries for the service. As will be described below, in some cases these changes can be made automatically such that no user action is required even if endpoints within the data centers 110 change.

Um globale Netzwerkadressen zu ermöglichen, wird ein Satz von globalen Zugriffspunkten 106A-N bereitgestellt. Jeder Zugriffspunkt kann im Allgemeinen eine oder mehrere Rechenvorrichtungen beinhalten, die konfiguriert sind, um Anfragen von Client-Vorrichtungen 102 zu erhalten, um mit Diensten zu interagieren, und um solche Anfragen zu einem Endpunkt innerhalb eines Rechenzentrums 110 zu routen, der zumindest teilweise auf Grundlage von Lastausgleichsanfragen über die Rechenzentren 110 hinweg ausgewählt ist. Die Zugriffspunkte 106 können ferner als eine Art Proxy für die Endpunkte fungieren, wodurch der Datenverkehr zwischen den Client-Vorrichtungen 102 und den Rechenzentren 110 über die Zugriffspunkte 106 fließen kann. Der Betrieb der Zugriffspunkte 106 wird nachstehend ausführlicher erörtert. Kurz gesagt können sie jedoch Anycast-Techniken nutzen, um die Verfügbarkeit globaler Netzwerkadressen an benachbarte Netzwerkvorrichtungen innerhalb des Netzwerks 104 auszusenden, das in einer Ausführungsform Vorrichtungen beinhaltet, die nicht unter der Kontrolle einer gemeinsamen Entität stehen, welche die Zugriffspunkte 106A bereitstellt. Die Zugriffspunkte 106 können somit an die globalen Netzwerkadressen adressierten Datenverkehr anziehen. Die Zugriffspunkte 106 können danach einen Endpunkt auswählen, an den der Datenverkehr geleitet werden soll, auf Grundlage von Faktoren wie etwa der Verfügbarkeit von Endpunkten, Lastausgleich zwischen den Rechenzentren 110 und Leistungskriterien zwischen dem Zugriffspunkt 106 und den verschiedenen Rechenzentren 110.To enable global network addresses, a set of global access points 106A-N is provided. Each access point may generally include one or more computing devices configured to receive requests from client devices 102 to interact with services and to route such requests to an endpoint within a data center 110 based at least in part of load balancing requests across data centers 110 is selected. The access points 106 may also act as a sort of proxy for the endpoints, allowing traffic to flow between the client devices 102 and the data centers 110 through the access points 106 . The operation of access points 106 is discussed in more detail below. Briefly, however, they may use anycast techniques to broadcast global network address availability to neighboring network devices within network 104, which in one embodiment includes devices that are not under the control of a common entity that provides access points 106A. The access points 106 can thus attract traffic addressed to the global network addresses. The access points 106 can then select an endpoint to direct traffic to based on factors such as endpoint availability, load balancing between the data centers 110 and performance criteria between the access point 106 and the different data centers 110.

Nach Auswählen eines Rechenzentrums 110 kann ein Zugriffspunkt 106 die Anfrage zu dem Endpunkt routen. In einer Ausführungsform verwendet der Zugriffspunkt 106 eine NAT-Übersetzung oder -Kapselung (z. B. virtuelle private Netzwerke), um die Anfrage über das Netzwerk 108 an den Endpunkt umzuleiten, wodurch eine Offenlegung einer Netzwerkadresse des Endpunkts an die Client-Vorrichtungen 102 verhindert wird. Wenn zwischen Client-Vorrichtungen 102 und einem Endpunkt verbindungsorientierte Kommunikationssitzungen genutzt werden, kann der Zugriffspunkt 106 gemäß den vorliegenden Ausführungsformen betrieben werden, um eine Initialisierungsphase der Kommunikationssitzung im Auftrag des Endpunkts durchzuführen. In Fällen, in denen das Netzwerk 108 ein privates Netzwerk ist, können die globalen Zugriffspunkte 106 ferner als „Auslagerungspunkt“ für Datenverkehr zu den Endpunkten fungieren, indem dieser Datenverkehr von einem öffentlichen Netzwerk (z. B. Netzwerk 104) zum privaten Netzwerk 108 verschoben wird. Im Allgemeinen wäre von einem solchen privaten Netzwerk zu erwarten, dass es eine höhere Leistung als ein öffentliches Netzwerk aufweist, und daher kann eine solche Auslagerung die Kommunikationsgeschwindigkeit zwischen Client-Vorrichtungen 102 und Endpunkten weiter erhöhen. Wie vorstehend beschrieben, kann der globale Zugriffspunkt 106 in einigen Ausführungsformen unterschiedliche Überlastungskontrollparameter und Fensterungsparameter für die TCP-Kommunikation zwischen dem Zugriffspunkt 106 und dem Endpunkt auswählen, um den Datendurchsatz zu erhöhen, indem eine höhere Leistung des privaten Netzwerks 108 im Vergleich zu den herkömmlichen oder kleineren Werte für die Überlastungskontrollparameter und Fensterungsparameter für die TCP-Kommunikation zwischen den Client-Rechenvorrichtungen 102 und dem Zugriffspunkt eingesetzt werden.After selecting a data center 110, an access point 106 can route the request to the endpoint. In one embodiment, access point 106 uses NAT translation or encapsulation (e.g., virtual private networks) to redirect the request over network 108 to the endpoint, thereby preventing disclosure of an endpoint's network address to client devices 102 becomes. When connection-oriented communication sessions are employed between client devices 102 and an endpoint, the access point 106 according to the present embodiments is operable to perform an initialization phase of the communication session on behalf of the endpoint. In cases where the network 108 is a private network, the global access points 106 can also act as an "offload point" for traffic to the endpoints by moving that traffic from a public network (e.g., network 104) to the private network 108 becomes. In general, such a private network would be expected to have higher performance than a public network, and therefore such offloading can further increase the communication speed between client devices 102 and endpoints. As described above, in some embodiments, the global access point 106 may select different congestion control parameters and windowing parameters for TCP communications between the access point 106 and the endpoint to increase data throughput by enabling higher performance of the private network 108 compared to traditional or smaller values for the congestion control parameters and windowing parameters for the TCP communication between the client computing devices 102 and the access point.

Wie vorstehend angemerkt, können die Zugriffspunkte 106 eine Vielzahl von Techniken implementieren, um die Resilienz eines Netzwerkdienstes unter Verwendung einer globalen Netzwerkadresse sicherzustellen. Veranschaulichend kann die Verwendung von Anycast zum Anbieten von Zugriffspunkten 106 Resilienz zwischen den Zugriffspunkten 106 bereitstellen, da allgemein erwartet werden kann, dass die Fehlfunktion eines einzelnen Zugriffspunkts 106 Vorrichtungen des Netzwerks 104 veranlasst, Anfragen zu einem anderen Zugriffspunkt 106 zu routen. Um potenzielle Fehlfunktionen des Netzwerks 104 zu beheben, kann jeder Zugriffspunkt 106 außerdem dazu konfiguriert sein, seine Ankündigung globaler Netzwerkadressen im Netzwerk 104 zu steuern, wodurch mehrere Routing-Pfade für jeden Dienst zu dem Zugriffspunkt 106 bereitgestellt werden. Weitere Einzelheiten bezüglich einer solchen Steuerung von Ankündigungen, um Routing-Pfade bereitzustellen, sind nachstehend bereitgestellt. Um potenzielle Fehlfunktionen innerhalb eines Zugriffspunkts 106 anzugehen, kann ferner jeder Zugriffspunkt 106 so konfiguriert sein, dass er mehrere Datenflussmanager beinhaltet, die unterschiedliche Verkehrsflüsse handhaben, die an globale Netzwerkadressen adressiert sind. Die Datenflussmanager können logisch, wie etwa über Programm-Threads, und/oder physisch, wie etwa über Prozessoren oder Rechenvorrichtungen hinweg, verteilt sein. Somit kann die Fehlfunktion eines Datenflussmanagers geringe oder keine Auswirkungen auf andere Datenflussmanager innerhalb eines Zugriffspunkts 106 haben, was die Auswirkung von teilweisen Fehlfunktionen innerhalb eines Zugriffspunkts 106 begrenzt. Eine veranschaulichende Konfiguration eines Zugriffspunkts 106 wird nachstehend mit Bezug auf 4 erörtert.As noted above, access points 106 may implement a variety of techniques to ensure resiliency of a network service using a global network address. Illustratively, the use of anycast to advertise access points 106 may provide resiliency between the access points 106 since, in general, failure of a single access point 106 may be expected to cause network 104 devices to route requests to another access point 106 . In addition, to address potential network 104 malfunctions, each access point 106 may be configured to control its advertisement of global network addresses in the network 104, thereby providing multiple routing paths to the access point 106 for each service. Further details regarding such control of advertisements to provide routing paths are provided below. Furthermore, to address potential malfunctions within an access point 106, each access point 106 may be configured to include multiple data flow managers that handle different traffic flows addressed to global network addresses. The data flow managers may be distributed logically, such as across program threads, and/or physically, such as across processors or computing devices. Thus, the failure of one data flow manager may have little or no impact on other data flow managers within an access point 106, limiting the impact of partial failures within an access point 106. An illustrative configuration of an access point 106 is described below with reference to FIG 4 discussed.

2 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines Rechenzentrums 110 der 1 darstellt. Wie in 2 gezeigt, beinhaltet das Rechenzentrum 110 einen Endpunktpool 201, der einen Satz von Endpunkten 202A-N enthält. Jeder Endpunkt 202 stellt veranschaulichend eine Rechenvorrichtung dar, die konfiguriert ist, um Zugriff auf einen über das Netzwerk zugänglichen Dienst bereitzustellen. In einer Ausführungsform sind die Endpunkte 202 einzelne physische Rechenvorrichtungen. In einer weiteren Ausführungsform sind die Endpunkte 202 virtualisierte Rechenvorrichtungen, die auf physischen Rechenvorrichtungen ausgeführt werden. In noch einer weiteren Ausführungsform sind Endpunkte 202 Sammlungen von Rechenvorrichtungen (physisch oder virtualisiert), die zusammen konfiguriert sind, um Zugriff auf einen über das Netzwerk zugänglichen Dienst bereitzustellen. Zum Beispiel kann jeder Endpunkt 202 eine Sammlung von Vorrichtungen sein, die eine Lastausgleichsvorrichtung ist, die konfiguriert ist, um Lastausgleichsanfragen an den Endpunkt 202 auf die Sammlung von Vorrichtungen zu verteilen. Jeder Endpunkt 202 kommuniziert mit dem Netzwerk 108 und ist somit im Netzwerk 108 adressierbar. Die Anzahl der Endpunkte 202 kann beispielsweise in Abhängigkeit von den Kapazitätsanforderungen des über das Netzwerk zugänglichen Dienstes variieren. Veranschaulichend kann ein Dienstanbieter für einen solchen Dienst mit einem Betreiber des Rechenzentrums 110 (z. B. einem Cloud-Computing-Anbieter) einen Vertrag schließen, um die Endpunkte 202 zu generieren und bereitzustellen. 2 11 is a block diagram showing an illustrative configuration of a data center 110 of FIG 1 represents. As in 2 As shown, the data center 110 includes an endpoint pool 201 containing a set of endpoints 202A-N. Each endpoint 202 illustratively represents a computing device configured to provide access to a network accessible service. In one embodiment, endpoints 202 are individual physical computing devices. In another embodiment, endpoints 202 are virtualized computing devices running on physical computing devices. In yet another embodiment, endpoints 202 are collections of computing devices (physical or virtualized) configured together to provide access to a network accessible service. For example, each endpoint 202 may be a collection of devices that is a load balancer configured to distribute load balancing requests to the endpoint 202 among the collection of devices. Each endpoint 202 communicates with network 108 and is thus network 108 addressable. The number of endpoints 202 may vary depending on the capacity requirements of the network accessible service, for example. Illustratively, a service provider for such a service may contract with an operator of the data center 110 (e.g., a cloud computing provider) to generate and provision the endpoints 202 .

In einer Ausführungsform kann die Anzahl von Endpunkten 202 gemäß einer gegenwärtigen oder früheren Nachfrage nach dem über das Netzwerk zugänglichen Dienst variieren. Um eine variierende Anzahl von Endpunkten 202 zu ermöglichen, kann das Rechenzentrum einen Ressourcenmanager 206 (z. B. direkt auf einer physischen Rechenvorrichtung oder als virtualisierte Vorrichtung auf einem physischen Host-Rechenvorrichtung implementiert) beinhalten, der die Last der Endpunkte 202 überwacht (z. B. in Bezug auf Anfragen pro Sekunde, Rechenressourcennutzung, Antwortzeit usw.) und die Anzahl der Endpunkte 202 dynamisch anpasst, um die Last innerhalb der Schwellenwerte zu halten. Wenn beispielsweise die Endpunkte 202 als virtualisierte Vorrichtungen implementiert sind, kann der Ressourcenmanager 206 neue virtualisierte Vorrichtungen generieren und bereitstellen, wenn ein aktueller Satz von Endpunkten 202 Nutzungsmetriken aufweist, die gewünschte obere Nutzungsparameter überschreiten, und „herunterfahren“ und virtualisierte Vorrichtungen entfernen, wenn die Metriken unter niedrigere Nutzungsparameter fallen. Der Ressourcenmanager 206 kann ferner beim Modifizieren einer Anzahl von Endpunkten 202 innerhalb des Pools 201 konfiguriert sein, um die globalen Zugriffspunkte 106 über Netzwerkadressinformationen für Endpunkte 202 innerhalb des Pools 201 zu benachrichtigen, sodass die Zugriffspunkte 106 Datenverkehr an die Endpunkte 202 adressieren können.In one embodiment, the number of endpoints 202 may vary according to current or past demand for the network accessible service. To accommodate a varying number of endpoints 202, the data center may include a resource manager 206 (e.g., implemented directly on a physical computing device or as a virtualized device on a host physical computing device) that monitors the load of the endpoints 202 (e.g., in terms of requests per second, computing resource usage, response time, etc.) and dynamically adjusts the number of endpoints 202 to keep the load within the thresholds. For example, if the endpoints 202 are implemented as virtualized devices, the resource manager 206 can generate and provision new virtualized devices when a current set of endpoints 202 has usage metrics that exceed desired upper usage parameters, and "shut down" and remove virtualized devices when the metrics fall under lower usage parameters. The resource manager 206 may be further configured upon modifying a number of endpoints 202 within the pool 201 to notify the global access points 106 of network address information for endpoints 202 within the pool 201 so that the access points 106 can address traffic to the endpoints 202.

Außerdem beinhaltet das Rechenzentrum 110 der 2 eine Zustandsprüfungsvorrichtung 204, die dazu konfiguriert ist, den Zustand von Endpunkten 202 innerhalb des Pools 201 zu überwachen. Zur Veranschaulichung kann die Zustandsprüfungsvorrichtung 204 periodisch (z. B. alle n Sekunden) eine Anfrage an die Endpunkte 202 übertragen und überwachen, ob eine geeignete Antwort empfangen wird. Wenn dies der Fall ist, kann die Zustandsprüfungsvorrichtung 204 den Endpunkt 202 als fehlerfrei betrachten. Wenn dies nicht der Fall ist, kann die Zustandsprüfungsvorrichtung 204 den Endpunkt 202 als fehlerhaft betrachten. Die Zustandsprüfungsvorrichtung 204 kann die globalen Zugriffspunkte 106 veranschaulichend über fehlerhafte Endpunkte 202 benachrichtigen, um die Zugriffspunkte 106 zu veranlassen, das Routen von Datenverkehr zu dem Endpunkt 202 zu reduzieren oder zu eliminieren, solange der Endpunkt 202 fehlerhaft ist. In einigen Fällen kann die Zustandsprüfungsvorrichtung 204 ferner konfiguriert sein, um den Zustand der globalen Zugriffspunkte 106, den Zustand von Endpunkten 202 in anderen Rechenzentren 110 oder den Zustand eines Netzwerkpfads zwischen der Zustandsprüfungsvorrichtung 204 und den Zugriffspunkten 106 zu prüfen. Zum Beispiel kann die Zustandsprüfungsvorrichtung 204 periodisch Informationen an den Zugriffspunkt 106 übertragen und eine Antwort vom Zugriffspunkt 106, Netzwerkmetriken bezüglich der Antwort (z. B. Latenz) oder dergleichen überwachen. Die Zustandsprüfungsvorrichtung 204 kann diese Informationen an die Zugriffspunkte 106 berichten, um das Routen von Datenverkehr zu den Endpunkten 202A innerhalb des Rechenzentrums 110 zu erleichtern. Veranschaulichend kann die Zustandsprüfungsvorrichtung 204 Zustandsinformationen für Endpunkte 202 an den Konfigurationsdatenspeicher 210 (z. B. eine Datenbank im Datenspeicher 210) berichten, die durch den Betrieb des Konfigurationsmanagers 208 an die Zugriffspunkte 106 auf die nachstehend beschriebene Weise (z. B. als Teil eines Konfigurationspakets oder einer Konfigurationssendung) verbreitet werden können.In addition, the data center includes 110 of the 2 a health checker 204 configured to monitor the health of endpoints 202 within pool 201 . To illustrate, the health checker 204 may periodically (e.g., every n seconds) transmit a query to the endpoints 202 and monitor whether an appropriate response is received. If so, health checker 204 may consider endpoint 202 healthy. If not, health checker 204 may consider endpoint 202 to be unhealthy. Illustratively, the health checker 204 may notify the global access points 106 of unhealthy endpoints 202 to cause the access points 106 to reduce or eliminate routing of traffic to the endpoint 202 as long as the endpoint 202 is unhealthy. In some cases, the health checker 204 may be further configured to check the health of the global access points 106, the health of endpoints 202 in other data centers 110, or the health of a network path between the health checker 204 and the access points 106. For example, health check device 204 may periodically transmit information to access point 106 and monitor a response from access point 106, network metrics related to the response (e.g., latency), or the like. Health check device 204 may report this information to access points 106 to facilitate routing of traffic to endpoints 202A within data center 110 . Illustratively, health checker 204 may report health information for endpoints 202 to configuration data store 210 (e.g., a database in data store 210), which may be provided by operation of configuration manager 208 to access points 106 in the manner described below (e.g., as part of a configuration package or a configuration broadcast) can be distributed.

Das Rechenzentrum 110 der 2 beinhaltet ferner einen Konfigurationsmanager 208, der dazu konfiguriert ist, Dienstanbietern zu ermöglichen, den Betrieb der Rechenzentren 110 und der globalen Zugriffspunkte 106 zu konfigurieren. Veranschaulichend kann der Konfigurationsmanager 208 eine Schnittstelle bereitstellen, über die Benutzer die Endpunkte 202 festlegen können, die einen über das Netzwerk zugänglichen Dienst bereitstellen, diese Endpunkte 202 konfigurieren und den Ressourcenmanager 206 konfigurieren können, um Endpunkte hoch- oder herunterzuskalieren. Der Konfigurationsmanager 208 kann es Dienstanbietern ferner ermöglichen, diesen Endpunkten globale Netzwerkadressen zuzuweisen und Lastausgleichsparameter zum Routen von Datenverkehr, der an die globale Netzwerkadresse adressiert ist, an verschiedene Rechenzentren 110 festzulegen. Die von Dienstanbietern erstellten Konfigurationen können in einem Konfigurationsdatenspeicher 210 gespeichert werden, der einer beliebigen dauerhaften oder im Wesentlichen dauerhaften Speichervorrichtung entsprechen kann (z. B. Festplattenlaufwerke, Solid-State-Laufwerke, an das Netzwerk angeschlossene Speichervorrichtungen usw.). In einigen Fällen kann der Konfigurationsdatenspeicher 210 mehrere Darstellungen einer Konfiguration eines Dienstanbieters beinhalten. Um beispielsweise eine schnelle Neukonfiguration der globalen Zugriffspunkte 106 zu erleichtern, kann der Konfigurationsdatenspeicher 210 eine Datenbank (wie etwa eine relationale Datenbank) beinhalten, die jedes Mal modifiziert wird, wenn ein Dienstanbieter eine Änderung an seiner Konfiguration bestätigt. Der Konfigurationsmanager 208 kann periodisch (z. B. alle 100 Millisekunden, 1 Sekunde, 2 Sekunden, 5 Sekunden, 30 Sekunden usw.) bestimmen, ob Änderungen an der Datenbank vorgenommen wurden, und wenn ja, ein neues Konfigurationspaket für die globalen Zugriffspunkte 106 generieren, wobei das Konfigurationspaket die Änderungen an der Datenbank (und somit der Konfiguration des Dienstanbieters) relativ zu einem früheren Konfigurationspaket umfasst. Der Konfigurationsmanager 208 kann dann das Konfigurationspaket in den Konfigurationsdatenspeicher 210 zum Abrufen durch die globalen Zugriffspunkte 106 speichern. In einer Ausführungsform ist jeder globale Zugriffspunkt 106 konfiguriert, um periodisch (z. B. alle 100 Millisekunden, 1 Sekunde, 2 Sekunden, 5 Sekunden, 30 Sekunden usw.) den Konfigurationsdatenspeicher 210 abzufragen, um zu bestimmen, ob ein neues Konfigurationspaket vorhanden ist, und wenn ja, das Datenpaket abzurufen und zu implementieren. In einigen Fällen kann ein Konfigurationspaket in „Paketsendungen“ unterteilt sein, die einen Teil der Konfiguration darstellen. Die globalen Zugriffspunkte 106 können konfiguriert sein, um nur jene Sendungen abzurufen, die in Bezug auf eine vorhandene Sendung modifiziert wurden. Änderungen können beispielsweise auf Grundlage der Versionen von Sendungen oder einem Datenpaket verfolgt werden. Darüber hinaus können in einigen Ausführungsformen Datenpakete oder Sendungen in dem Datenspeicher 210 als Unterschiede oder „Deltas“ von einer früheren Version gespeichert werden, sodass ein Zugriffspunkt 106 nur Änderungen seit einer früheren Version der Sendung abrufen kann, wodurch der Datentransfer, der zum Aktualisieren des Datenpakets oder der Sendung erforderlich ist, reduziert wird. In einer Ausführungsform kann der Konfigurationsmanager 208 periodisch (z. B. alle 100 Millisekunden, 500 Millisekunden usw.) Datenpakete oder Sendungen „checken“, indem alle Änderungen seit einer vorherigen Überprüfung gesammelt und das Datenpaket oder die Sendung als eigenständige Version gespeichert werden. Eine solche Überprüfung kann eine schnelle Neukonfiguration in dem Fall erleichtern, dass ein globaler Zugriffspunkt 106 keinen Referenzframe eines früheren Datenpakets oder einer früheren Sendung aufweist.The data center 110 of 2 further includes a configuration manager 208 configured to allow service providers to configure operation of data centers 110 and global access points 106. Illustratively, the configuration manager 208 can provide an interface through which users can specify the endpoints 202 that provide a network accessible service, configure those endpoints 202, and configure the resource manager 206 to scale up or down endpoints. The configuration manager 208 may also allow service providers to assign global network addresses to these endpoints and set load balancing parameters for routing traffic addressed to the global network address to different data centers 110 . The configurations created by service providers may be stored in a configuration data store 210, which may correspond to any persistent or substantially persistent storage device (e.g., hard drives, solid state drives, network attached storage devices, etc.). In some cases, configuration data store 210 may include multiple representations of a service provider's configuration. For example, to facilitate rapid reconfiguration of global access points 106, configuration data store 210 may include a database (such as a relational database) that is modified each time a service provider confirms a change to its configuration. The configuration manager 208 may periodically (e.g., every 100 milliseconds, 1 second, 2 seconds, 5 seconds, 30 seconds, etc.) determine whether changes have been made to the database, and if so, a new configuration package for the global access points 106 generate, where the configuration package includes the changes to the database (and thus the configuration of the service provider) relative to a previous configuration package. The configuration manager 208 can then store the configuration package in the configuration data store 210 for retrieval by the global access points 106 . In an out 1, each global access point 106 is configured to periodically (e.g., every 100 milliseconds, 1 second, 2 seconds, 5 seconds, 30 seconds, etc.) poll the configuration data store 210 to determine if a new configuration package is present, and if so, retrieve and implement the data packet. In some cases, a configuration package may be broken down into "shipments" that are part of the configuration. The global access points 106 may be configured to retrieve only those shows that have been modified relative to an existing show. Changes can be tracked based on the versions of programs or a data package, for example. Additionally, in some embodiments, data packets or broadcasts may be stored in the data store 210 as differences or "deltas" from a previous version, such that an access point 106 can only retrieve changes since a previous version of the broadcast, thereby eliminating the data transfer necessary to update the data packet or the shipment is required is reduced. In one embodiment, the configuration manager 208 may periodically (e.g., every 100 milliseconds, 500 milliseconds, etc.) "check" data packets or broadcasts by collecting any changes since a previous check and saving the data packet or broadcast as a standalone version. Such verification may facilitate rapid reconfiguration in the event that a global access point 106 does not have a reference frame from a previous data packet or transmission.

In einer Ausführungsform beinhaltet nur ein Rechenzentrum 110 der Rechenzentren 110A-N der 1 den Konfigurationsmanager 208, wobei der Manager 208 die Konfiguration jedes Dienstanbieters an die anderen Rechenzentren 110 und Zugriffspunkte 106 verbreitet. In einer weiteren Ausführungsform beinhaltet jedes Rechenzentrum 110 einen Konfigurationsmanager 208, und die Manager 208 jedes Rechenzentrums 110 können kommunizieren, um Konfigurationen zwischen den Rechenzentren 110 und mit den Zugriffspunkten 106 zu synchronisieren. Darüber hinaus können die Rechenzentren 110A-N ferner verschiedene Netzwerk-Routing-Komponenten 214 beinhalten, wie etwa Top-of-Rack(„TOR“)-Switches, die konfiguriert sein können, um Datenpakete zu unterschiedlichen Endpunkten 202 zu routen. Genauer gesagt können die TOR-Switches in einer Ausführungsform in den Datenpaketen beinhaltete nutzen, um Datenpakete zu den Endpunkten 202 zu routen. Zum Beispiel kann ein TOR 5-Tupel-Informationen nutzen, nämlich eine IP-Adresse der Quelle, eine Port-Adresse der Quelle, eine IP-Adresse des Ziels, eine Port-Adresse des Ziels und ein Routing-Protokoll, um Datenpakete automatisch zu einem zugewiesenen Endpunkt 202 zu routen. Dies erleichtert die Nutzung in einem Satz von mehreren VLAN oder Geflechten, die Übertragungen an unterschiedliche Endpunkte 202 sichern. Darüber hinaus können die Endpunkte 202 in anderen Aspekten der vorliegenden Anmeldung Nachrichten zur MTU-Pfaderkennung nutzen, um Informationen auszutauschen. Gemäß Aspekten der vorliegenden Anmeldung können zur Erhöhung der Resilienz im Falle einer Änderung der Datenpakete Statusinformationen ausgetauscht werden, um die weitere Verarbeitung von Diensten/Anfragen durch das Rechenzentrum 110 zu ermöglichen. Genauer gesagt können die Endpunkte die Multicast-Nachrichtenübertragung an einen Satz von Endpunkten 202 nutzen, die einem konkreten VLAN oder Geflecht zugeordnet sind, das es nur diesen Endpunkten erlaubt, die Multicast-Nachricht zu empfangen, wie etwa um Statusinformationen in dem Fall weiterzugeben, wenn ein Endpunkt ausgefallen ist und versucht, die Dienstkontinuität aufrechtzuerhalten, indem er Statusinformationen an einen anderen Endpunkt bereitstellt. In anderen Ausführungsformen können die Endpunkte Broadcast-Nachrichten nutzen, die an alle Endpunkte im Rechenzentrum 210 übertragen werden. Da die Broadcast-Nachricht an allen Endpunkten (oder einem größeren Teil davon) empfangen wird, können einzelne Endpunkte 202 in einem Rechenzentrum die nicht zutreffenden Nachrichten filtern oder ausschließen.In one embodiment, only one data center 110 of data centers 110A-N includes the 1 the configuration manager 208, the manager 208 propagating each service provider's configuration to the other data centers 110 and access points 106. In another embodiment, each data center 110 includes a configuration manager 208, and the managers 208 of each data center 110 can communicate to synchronize configurations between the data centers 110 and with the access points 106. In addition, the data centers 110A-N may further include various network routing components 214, such as top-of-rack ("TOR") switches, which may be configured to route data packets to different endpoints 202. More specifically, in one embodiment, TOR switches may use data packets included to route data packets to endpoints 202 . For example, a TOR can use 5-tuple information, namely a source IP address, a source port address, a destination IP address, a destination port address, and a routing protocol, to automatically route data packets an assigned endpoint 202 to route. This facilitates use in a set of multiple VLANs or fabrics securing transmissions to different endpoints 202. Additionally, in other aspects of the present application, endpoints 202 may utilize MTU path discovery messages to exchange information. According to aspects of the present application, status information can be exchanged to increase resilience in the event of a change in the data packets, in order to enable the further processing of services/requests by the computer center 110 . More specifically, the endpoints can use multicast messaging to a set of endpoints 202 that are associated with a specific VLAN or fabric that allows only those endpoints to receive the multicast message, such as to relay status information in the event that an endpoint has failed and is attempting to maintain service continuity by providing status information to another endpoint. In other embodiments, endpoints may use broadcast messages that are broadcast to all endpoints in data center 210 . Because the broadcast message is received at all endpoints (or a larger portion of them), individual endpoints 202 in a data center can filter or exclude the messages that do not apply.

Während nur einige Komponenten des Rechenzentrums 110 als mit dem Netzwerk 108 kommunizierend gezeigt sind, können andere Komponenten zusätzlich mit dem Netzwerk 108 und/oder dem Netzwerk 104 kommunizieren. Die Linien in 2 sollen nicht alle tatsächlichen oder potentiellen Netzwerkverbindungen darstellen, sondern vielmehr einen möglichen Datenfluss von dienstbezogenem Datenverkehr zu den Endpunkten 202 veranschaulichen.While only some components of data center 110 are shown communicating with network 108 , other components may additionally communicate with network 108 and/or network 104 . The lines in 2 are not intended to represent all actual or potential network connections, but rather to illustrate a possible flow of service-related traffic to the endpoints 202.

Weiterhin können die globalen Zugriffspunkte 106, auch wenn sie in einer Ausführungsform innerhalb eines Rechenzentrums 110 gezeigt sind, zudem einen Konfigurationsmanager 208 beinhalten, der eine direkte Konfiguration des Zugriffspunkts 106 ermöglicht. In einer weiteren Ausführungsform schließen die globalen Zugriffspunkte 106 jeglichen Konfigurationsmanager 208 und Datenspeicher 210 aus. Wenn zum Beispiel die Zugriffspunkte 106 in gemeinsam genutzten Umgebungen implementiert sind (z. B. nicht durch andere als einem Betreiber der Zugriffspunkte 106 betrieben werden oder für diese zugänglich sind), können die Zugriffspunkte 106 konfiguriert sein, um jeglichen dauerhaften Speicher auszuschließen und stattdessen Konfigurationsinformationen von einem Rechenzentrum 110 bei Initialisierung des Zugriffspunkts 106 abzurufen. Auf diese Weise kann die Sicherheit der Zugriffspunkte 106 erhöht werden, da zu erwarten wäre, dass das Abschalten des Zugriffspunkts 106 zum Verlust jeglicher sensiblen Daten führt, die sich auf dem Zugriffspunkt 106 befinden können.Furthermore, while shown within a data center 110 in one embodiment, global access points 106 may also include a configuration manager 208 that allows for direct configuration of access point 106 . In another embodiment, the global access points 106 exclude any configuration manager 208 and data store 210 . For example, if the access points 106 are implemented in shared environments (e.g., not operated by or accessible to anyone other than an operator of the access points 106), the access points 106 may be configured to exclude any persistent storage and instead configure information from a data center 110 upon initialization of the access point 106. In this way, the security of the access points 106 can be increased since it would be expected that shutting down the access point 106 will result in the loss of any sensitive data that may be on the access point 106.

Während das Rechenzentrum 110 so gezeigt ist, dass es einen Endpunktpool 201 beinhaltet, der einem über das Netzwerk zugänglichen Dienst entspricht, kann das Rechenzentrum 110 zahlreiche Pools 201 hosten, von denen jeder einem anderen Dienst entspricht. Somit können mehrere Dienstanbieter ein Rechenzentrum 110 nutzen. Darüber hinaus kann, wie vorstehend erwähnt, jeder über das Netzwerk zugängliche Dienst durch Endpunkte 202 über mehrere Rechenzentren 110 hinweg bereitgestellt werden. Dementsprechend können die globalen Zugriffspunkte der 1 Datenverkehr an einen solchen Dienst über die Rechenzentren 110 hinweg verteilen.While data center 110 is shown as including an endpoint pool 201 corresponding to a network accessible service, data center 110 may host numerous pools 201, each corresponding to a different service. Thus, multiple service providers can use a data center 110. Additionally, as noted above, any network accessible service may be provided by endpoints 202 across multiple data centers 110 . Accordingly, the global access points of the 1 Distribute traffic to such a service across data centers 110.

Gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet das Rechenzentrum 110 ferner einen Sitzungsübergabemanager 212, der dazu konfiguriert ist, die Annahme von verbindungsorientierten Kommunikationssitzungen mit Clients 102 zu erleichtern, die an einem globalen Zugriffspunkt 106 initialisiert sind. Wie vorstehend erörtert, können globale Zugriffspunkte 106 in einigen Fällen konfiguriert sein, um eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung, wie etwa den TCP-Dreiwege-Handshake, abzuschließen und die Kommunikationssitzung danach an einen Endpunkt 202 zu übergeben. In einigen Fällen kann ein Endpunkt 202 so konfiguriert sein, dass er eine solche Übergabe akzeptiert, indem er Kontext der verbindungsorientierten Kommunikationssitzung (z. B. Sequenznummern beider Enden der Verbindung) empfängt und lokale Statusinformationen erzeugt, die diesen Kontext beinhalten. Der Endpunkt 202 kann beispielsweise durch Modifikation von Netzwerkprotokoll-Handlern innerhalb eines Betriebssystems eines Endpunkts 202 so konfiguriert sein (z. B. durch Modifikation eines Kernels, um TCP-Kontextinformationen von einem globalen Zugriffspunkt 106 zu akzeptieren und anzunehmen). Es kann jedoch bevorzugt sein, dass die Endpunkte 202 nicht so konfiguriert sein müssen, damit viele verschiedene Endpunkte 202 globale Zugriffspunkte 106 nutzen können. Um dies zu ermöglichen, kann das Rechenzentrum 110 auch einen Sitzungsübergabemanager 212 beinhalten, der konfiguriert ist, um eine verbindungsorientierte Kommunikationssitzung von einem globalen Zugriffspunkt 106 zu akzeptieren und anzunehmen. Der Sitzungsübergabemanager 212 kann dann eine separate verbindungsorientierte Kommunikationssitzung mit dem Endpunkt 202 aufbauen, der durch den Zugriffspunkt 106 ausgewählt wurde, um einer Client-Vorrichtung 102 einen Dienst bereitzustellen, und als „Mittelsmann“ zwischen den beiden Sitzungen fungieren. Da der Sitzungsübergabemanager 212 und der Endpunkt 202 im Allgemeinen gemeinsam innerhalb des Rechenzentrums 110 untergebracht sein können, kann erwartet werden, dass die Erstellung einer zweiten verbindungsorientierten Kommunikationssitzung eine minimale Verzögerung in die Kommunikation zwischen der Client-Vorrichtung 102 und dem Endpunkt 202 einbringt.In accordance with embodiments of the present disclosure, the data center 110 further includes a session handover manager 212 configured to facilitate acceptance of connection-oriented communication sessions with clients 102 initialized at a global access point 106 . As discussed above, global access points 106 may in some cases be configured to complete an initialization phase of a connection-oriented communication session, such as the TCP three-way handshake, and then hand off the communication session to an endpoint 202 . In some cases, an endpoint 202 may be configured to accept such a handoff by receiving context of the connection-oriented communication session (e.g., sequence numbers of both ends of the connection) and generating local status information that includes that context. The endpoint 202 may be configured, for example, by modifying network protocol handlers within an operating system of an endpoint 202 (e.g., by modifying a kernel to accept and accept TCP context information from a global access point 106). However, it may be preferred that endpoints 202 do not have to be configured to allow many different endpoints 202 to use global access points 106 . To enable this, the data center 110 may also include a session handoff manager 212 configured to accept and accept a connection-oriented communication session from a global access point 106 . The session handoff manager 212 can then establish a separate connection-oriented communication session with the endpoint 202 selected by the access point 106 to provide service to a client device 102 and act as a "middleman" between the two sessions. Since the session handover manager 212 and the endpoint 202 can generally be co-located within the data center 110, the creation of a second connection-oriented communication session can be expected to introduce a minimal delay in the communication between the client device 102 and the endpoint 202.

3 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines globalen Zugriffspunkts der 1 darstellt. Wie in 3 gezeigt, steht jeder globale Zugriffspunkt 106 über einen Router 302 mit dem Netzwerk 104 in Verbindung. Während in 2 nur ein einzelner Router 302 gezeigt ist, können die Zugriffspunkte 106 mehrere Router 302 beinhalten. Darüber hinaus kann, auch wenn eine einzelne Verbindung zum Netzwerk 104 gezeigt ist, jeder Router 302 mehrere Verbindungen zum Netzwerk 104 beinhalten, möglicherweise zu mehreren unterschiedlichen benachbarten Vorrichtungen innerhalb des Netzwerks 104, von denen jede unterschiedlichen Teilnetzwerken entsprechen kann (z. B. autonomen Systemen (AS) innerhalb des Netzwerks 104). 3 Fig. 12 is a block diagram showing an illustrative configuration of a global access point 1 represents. As in 3 As shown, each global access point 106 communicates with the network 104 via a router 302 . while in 2 only a single router 302 is shown, access points 106 may include multiple routers 302 . Additionally, although a single connection to network 104 is shown, each router 302 may include multiple connections to network 104, possibly to multiple different neighboring devices within network 104, each of which may correspond to different sub-networks (e.g., autonomous systems (AS) within the network 104).

Wie vorstehend erwähnt, können globale Zugriffspunkte 106 dazu konfiguriert sein, Anycast-Techniken zu nutzen, um Datenverkehr zu globalen Netzwerkadressen zu ziehen, die über das Netzwerk zugänglichen Diensten zugeordnet sind. Somit ist der Router 302 veranschaulichend konfiguriert, um die globalen Netzwerkadressen benachbarten Vorrichtungen im Netzwerk 104 anzubieten. In einer Ausführungsform sind solche Angebote BGP-Angebote. Solche Angebote können bewirken, dass der Router 302 Datenverkehr anzieht, der an die globalen Netzwerkadressen adressiert ist, da die Angebote Vorrichtungen im Netzwerk 104 veranlassen können, Datenverkehr, der an die Adressen adressiert ist, gemäß dem Betrieb von Anycast-Techniken an den Router 302 zu routen.As mentioned above, global access points 106 may be configured to use anycast techniques to pull traffic to global network addresses associated with network accessible services. Thus, router 302 is illustratively configured to advertise the global network addresses to neighboring devices on network 104 . In one embodiment, such offers are BGP offers. Such offers may cause the router 302 to attract traffic addressed to the global network addresses, since the offers may cause devices on the network 104 to send traffic addressed to the addresses according to the operation of anycast techniques to the router 302 to route.

Wie vorstehend erörtert, kann der globale Zugriffspunkt 106 eine Vielzahl von Techniken implementieren, um die Resilienz des Zugriffspunkts 106 zu erhöhen. In einer Ausführungsform sind die durch den Zugriffspunkt 106 angeboten globalen Netzwerkadressen in mehrere Adressgruppen unterteilt. Um die potentiellen Auswirkungen von Fehlfunktionen auf das Netzwerk 104 zu verringern, kann der Router 302 (oder mehrere Router 302) konfiguriert sein, um BGP-Ankündigungen für jede Adressgruppe an unterschiedliche benachbarte Vorrichtungen im Netzwerk 104 (z. B. unterschiedliche AS) zu übertragen. Ein über das Netzwerk zugänglicher Dienst kann Adressen aus mehreren Adressgruppen zugeordnet sein, von denen jede den Client-Vorrichtungen 102 als Adresse bereitgestellt werden kann, unter der auf den Dienst zugegriffen werden kann. Da Adressen aus unterschiedlichen Gruppen im Netzwerk 104 unterschiedlich angeboten werden, können unterschiedliche Routing-Pfade im Netzwerk 104 für Adressen jeder Gruppe erwartet werden. Beispielsweise können an Adressen innerhalb einer ersten Gruppe adressierte Datenpakete den Router 302 über ein erstes AS des Netzwerks 104 erreichen, während an Adressen innerhalb einer zweiten Gruppe adressierte Datenpakete den Router 302 über ein zweites AS erreichen können. Wenn also innerhalb des ersten AS (oder eines mit dem ersten AS verbundenen nachgeordneten AS) eine Fehlfunktion auftritt, kann erwartet werden, dass Datenpakete, die an Adressen innerhalb der zweiten Gruppe adressiert sind, immer noch den Router 302 erreichen und umgekehrt. Somit kann das Aufteilen globaler Netzwerkadressen in mehrere Gruppen die Resilienz der Zugriffspunkte 106 gegenüber Fehlfunktionen innerhalb des Netzwerks 104 erhöhen.As discussed above, global access point 106 may implement a variety of techniques to increase access point 106 resilience. In one embodiment, the global network addresses offered by access point 106 are divided into multiple address groups. To reduce the potential impact of malfunctions on the network 104, the router 302 (or multiple routers 302) may be configured to transmit BGP advertisements to different neighboring devices in the network 104 (e.g., different AS) for each address group . A network-accessible service can be associated with addresses from multiple address groups, each of which may be provided to client devices 102 as an address at which the service may be accessed. Since addresses from different groups are advertised differently in network 104, different routing paths in network 104 can be expected for addresses of each group. For example, data packets addressed to addresses within a first group can reach router 302 via a first AS of network 104, while data packets addressed to addresses within a second group can reach router 302 via a second AS. Thus, if a malfunction occurs within the first AS (or a downstream AS connected to the first AS), data packets addressed to addresses within the second group can still be expected to reach the router 302 and vice versa. Thus, dividing global network addresses into multiple groups may increase the resilience of access points 106 to failures within network 104 .

Beim Empfangen eines Datenpakets, das an eine globale Netzwerkadresse adressiert ist, kann der Router 302 das Datenpaket zu einem Datenflussmanager 304 oder eine andere ähnlich funktionierende Komponente aus einem Satz von Flussmanagern 304A-N routen. Während ein Zugriffspunkt 106 einen einzelnen Datenflussmanager 304 implementieren kann, kann es für einen Zugriffspunkt von Vorteil sein, mehrere Datenflussmanager 304 zu implementieren, um einen redundanten Betrieb solcher Datenflussmanager 304 bereitzustellen. Der Router 302 kann eine beliebige Anzahl bekannter Lastausgleichstechniken verwenden, um Datenpakete an die Datenflussmanager 304 zu verteilen, wie etwa eine Round-Robin-Auswahl. In einer Ausführungsform nutzt der Router 302 konsistentes Hashing, um Datenpakete zu verteilen. Konsistentes Hashing ist im Fach bekannt und wird daher in dieser Schrift nicht im Detail beschrieben. Konsistentes Hashing kann beispielsweise vorteilhaft sein, um die Chancen zu erhöhen, dass mehrere Datenpakete mit denselben Eigenschaften (z. B. Quellnetzwerkadresse, Quellnetzwerkport, Zielnetzwerkadresse, Zielnetzwerkport, Protokoll) zu demselben Datenflussmanager 304 geroutet werden. Dies kann es den Datenflussmanagern 304 vorteilhafterweise ermöglichen, Statusinformationen in Bezug auf Datenpaketflüsse zwischen einer Client-Vorrichtung 102 und einem Zielendpunkt 202 aufrechtzuerhalten. In einigen Fällen können solche Statusinformationen beispielsweise erforderlich sein, um NAT-Techniken zu implementieren oder eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung durchzuführen. In einer weiteren Ausführungsform wird ein Lastausgleich mit gleichen Kosten auf mehreren Pfaden (equal-cost multi-path - ECMP) verwendet, um Datenverkehr zu den Datenflussmanagern 304A-N zu routen. Der ECMP-Lastausgleich ist im Fach bekannt und wird daher in dieser Schrift nicht im Detail beschrieben.Upon receiving a data packet addressed to a global network address, router 302 may route the data packet to a data flow manager 304 or other similarly functioning component of a set of flow managers 304A-N. While an access point 106 may implement a single data flow manager 304, it may be advantageous for an access point to implement multiple data flow managers 304 to provide redundant operation of such data flow managers 304. Router 302 may use any number of known load-balancing techniques to distribute data packets to data flow managers 304, such as round-robin election. In one embodiment, router 302 uses consistent hashing to distribute data packets. Consistent hashing is well known in the art and is therefore not described in detail in this document. For example, consistent hashing may be beneficial to increase the chances that multiple data packets with the same properties (e.g., source network address, source network port, destination network address, destination network port, protocol) are routed to the same data flow manager 304 . Advantageously, this may allow data flow managers 304 to maintain status information related to data packet flows between a client device 102 and a destination endpoint 202 . In some cases, such status information may be required, for example, to implement NAT techniques or to perform an initialization phase of a connection-oriented communication session. In another embodiment, equal-cost multi-path (ECMP) load balancing is used to route traffic to data flow managers 304A-N. ECMP load balancing is well known in the art and is therefore not described in detail in this document.

In einer Ausführungsform wird der ECMP-Lastausgleich angewendet, um Datenpakete auf Grundlage einer globalen Netzwerkadresse, an die das Datenpaket adressiert ist, zu den Datenflussmanagern 304A zu routen. Zur Veranschaulichung kann jeder Datenflussmanager Datenpakete handhaben, die an eine Teilmenge von Adressen innerhalb einer Gruppe von globalen Netzwerkadressen adressiert sind. Zum Beispiel kann ein erster Datenflussmanager 304 vorzugsweise ein erstes Quartil von Adressen innerhalb einer Gruppe handhaben, kann ein zweiter Manager 304 vorzugsweise ein zweites Quartil handhaben usw. Durch Aufteilen von Netzwerkadressen innerhalb einer Gruppe auf unterschiedliche Datenflussmanager 304 kann der Zugriffspunkt 106 beispielsweise den Anteil von Diensten verringern, die durch einen unsachgemäßen Betrieb eines Datenflussmanagers 304 beeinträchtigt werden, wie etwa aufgrund einer Fehlkonfiguration eines Dienstes, der einer durch diesen Datenflussmanager 304 gehandhabten Adresse zugeordnet ist. Wenn mehrere Gruppen von globalen Netzwerkadressen verwendet werden, können Dienste zwischen verschiedenen Gruppen „umgeordnet“ werden, sodass es unwahrscheinlich ist, dass zwei Dienste mit Adressen, die sich eine Teilmenge unter einer Adressgruppe teilen, Adressen aufweisen, die sich eine Teilmenge unter einer anderen Adressgruppe teilen. Eine solche Umordnung kann den Gesamtprozentsatz von Diensten reduzieren, die von einem Zugriffspunkt 106 aufgrund einer Fehlfunktion eines einzelnen Datenflussmanagers 304A komplett indisponibel gemacht wurden.In one embodiment, ECMP load balancing is applied to route data packets to data flow managers 304A based on a global network address to which the data packet is addressed. To illustrate, each data flow manager can handle data packets addressed to a subset of addresses within a set of global network addresses. For example, a first flow manager 304 may preferentially handle a first quartile of addresses within a group, a second manager 304 may preferentially handle a second quartile, and so on that are affected by improper operation of a data flow manager 304, such as due to a misconfiguration of a service associated with an address managed by that data flow manager 304. When multiple sets of global network addresses are used, services can be "shuffled" between different sets, making it unlikely that two services with addresses that share a subset under one address set will have addresses that share a subset under a different address set share. Such rearrangement can reduce the overall percentage of services rendered completely unavailable by an access point 106 due to a malfunction of a single data flow manager 304A.

Um die Verwendung von Statusinformationen auf den Datenflussmanagern 304 weiter zu erleichtern, implementiert der Router 302 in einer Ausführungsform einen Datenfluss-Hash-Routing-Algorithmus oder einen ähnlichen Algorithmus, um verwandte Datenpakete zu identifizieren, die einen „Datenverkehrsfluss“ zwischen einem Client 102 und einem Endpunkt 202 bilden. Viele verschiedene Datenflussidentifizierungsalgorithmen sind im Fach bekannt und werden daher in dieser Schrift nicht im Detail beschrieben. Veranschaulichend kann der Router 302 einen Datenflussidentifizierungsalgorithmus implementieren, um Datenflüsse von Datenpaketen zu erkennen und Datenpakete desselben Flusses konsistent zu demselben Datenflussmanager 304 zu routen. In einer Ausführungsform wendet der Router 302 datenflussbasiertes Routen auf ein Datenpaket an, bevor er Datenpakete anderweitig an die Datenflussmanager 304 verteilt, sodass, wenn das Datenpaket als Teil eines Datenflusses erkannt wird, es an denselben Datenflussmanager 304 verteilt wird, der zuvor Datenpakete dieses Datenflusses gehandhabt hat. Wenn das Datenpaket in einer solchen Ausführungsform nicht als Teil des Datenflusses erkannt wird, werden zusätzliche Lastausgleichsalgorithmen (z. B. konsistentes Hashing) auf das Datenpaket angewendet, um einen Datenflussmanager 304 zu bestimmen, an den das Datenpaket geroutet werden soll.To further facilitate the use of status information on the flow managers 304, in one embodiment, the router 302 implements a flow hash routing algorithm or a similar algorithm to identify related data packets that constitute a "traffic flow" between a client 102 and a Form endpoint 202. Many different data flow identification algorithms are known in the art and are therefore not described in detail in this document. Illustratively, the router 302 may implement a flow identification algorithm to identify flows of data packets and route data packets of the same flow to the same data flow manager 304 consistently. In one embodiment, router 302 applies flow-based routing to a data packet before otherwise distributing data packets to data flow managers 304 such that when the data packet is recognized as part of a data flow, it is distributed to the same data flow manager 304 that previously handled data packets of that data flow Has. If the data package in such a version If the data packet is not recognized as part of the data flow, additional load balancing algorithms (e.g., consistent hashing) are applied to the data packet to determine a data flow manager 304 to which the data packet should be routed.

Beim Empfangen eines Datenpakets kann ein Datenflussmanager 304 ein Rechenzentrum 110, an das das Datenpaket geroutet werden soll, sowie einen Endpunkt 202 innerhalb des Rechenzentrums 110 bestimmen. In einer Ausführungsform kann der Datenflussmanager 304 eine Kombination von Kriterien anwenden, um ein Rechenzentrum 110 auszuwählen, zu dem ein Datenpaket geroutet werden soll, einschließlich Netzwerkleistungskriterien und Lastausgleichskriterien. In einem ersten Aspekt kann ein Datenflussmanager 304 für ein gegebenes Datenpaket anfänglich ein Rechenzentrum 110 auf Grundlage von Netzwerk- oder geografischen Kriterien zwischen dem globalen Zugriffspunkt 106 und den verschiedenen verfügbaren Rechenzentren 110 oder Gruppen von Endpunkten 202 auswählen. Das Netzwerk oder die geografischen Kriterien können einem Maß der Netzwerkentfernung (z. B. über das Netzwerk 108 hinweg) von einem identifizierten Zugriffspunkt 106 entsprechen. Die Netzwerk- oder geografischen Kriterien können ferner zumindest teilweise Leistungskriterien, wie Latenz, Anzahl von Hops, Bandbreite oder eine Kombination davon, beinhalten oder einbeziehen. Im Allgemeinen kann das Routen eines Datenpakets zu einem Rechenzentrum 110 mit einem maximalen Netzwerkleistungskriterium die Kommunikationsgeschwindigkeit zwischen einer Client-Vorrichtung 102 und dem Rechenzentrum 110 vorteilhaft erhöhen. Da es unwahrscheinlich ist, dass sich Netzwerkleistungskriterien zwischen einem Zugriffspunkt 106 und einem Rechenzentrum 110 schnell verschieben, ist es möglich, dass das einfache Routen jedes Datenpakets zu einem Rechenzentrum 110 mit einem maximal erwarteten Leistungskriterium den durch einen Dienstanbieter angeforderten Lastausgleich nicht erzielt.Upon receiving a data packet, a data flow manager 304 can determine a data center 110 to which the data packet is to be routed and an end point 202 within the data center 110 . In one embodiment, data flow manager 304 may apply a combination of criteria to select a data center 110 to route a data packet to, including network performance criteria and load balancing criteria. In a first aspect, for a given data packet, a data flow manager 304 may initially select a data center 110 based on network or geographic criteria between the global access point 106 and the various available data centers 110 or groups of endpoints 202. The network or geographic criteria may correspond to a measure of network distance (e.g., across network 108) from an identified access point 106. The network or geographic criteria may further include or include, at least in part, performance criteria such as latency, number of hops, bandwidth, or a combination thereof. In general, routing a data packet to a data center 110 with a maximum network performance criterion may advantageously increase the communication speed between a client device 102 and the data center 110 . Because network performance criteria are unlikely to shift rapidly between an access point 106 and a data center 110, simply routing each data packet to a data center 110 with a maximum expected performance criteria may not achieve the load balancing requested by a service provider.

Zusätzlich zu gemessenen oder bestimmten Netzwerk- oder geografischen Kriterien kann jeder Datenflussmanager 304 ferner Verteilungskriterien modifizieren oder einbeziehen, wenn dies erforderlich ist, um den gewünschten Lastausgleich eines Dienstanbieters zu erzielen. Genauer gesagt kann in einigen Ausführungsformen jede Gruppierung von Endpunkten 202 (z. B. Rechenzentren 110) in unterschiedliche Regionen unterteilt sein. Einzelne Rechenzentren 110 können Teilmengen von Endpunkten 202 unterschiedlichen Teilregionen oder anderen Gruppierungen einer Region zuordnen. Dementsprechend kann ein Kunde Verteilungskriterien festlegen, die eine gemessene Verteilung oder ein Verfahren zum Berechnen einer gemessenen Verteilung von Datenpaketen, die einem Rechenzentrum 110 bereitgestellt werden, identifizieren. Veranschaulichend kann die Verteilung als Prozentsatz des Datenverkehrs, Gesamtzahl von Datenpaketen (z. B. Gesamtdatenmenge, Kosten, die einzelnen Endpunkten zugeteilt oder in Rechnung gestellt werden, und dergleichen) festgelegt sein. Ein Systemadministrator kann veranschaulichend ein Softwaretool oder eine Schnittstelle (z. B. eine API) nutzen, um Zuteilungen bereitzustellen, wie in dieser Schrift in verschiedenen Beispielen beschrieben wird. Der Datenflussmanager 304 kann wiederum einen Algorithmus implementieren, wie etwa einen Münzwurf-Algorithmus, um die prozentualen Auswahlen zu implementieren. Der Algorithmus kann auch zusätzliche Faktoren wie geografische oder Netzwerkkriterien berücksichtigen.In addition to measured or determined network or geographic criteria, each data flow manager 304 may also modify or incorporate distribution criteria as necessary to achieve a service provider's desired load balancing. More specifically, in some embodiments, each grouping of endpoints 202 (e.g., data centers 110) may be divided into different regions. Individual data centers 110 may associate subsets of endpoints 202 with different sub-regions or other groupings of a region. Accordingly, a customer may specify distribution criteria that identify a measured distribution or method of calculating a measured distribution of data packets provided to a data center 110 . Illustratively, the distribution may be specified as a percentage of traffic, total number of data packets (e.g., total amount of data, cost allocated or billed to individual endpoints, and the like). A system administrator may illustratively use a software tool or interface (e.g., an API) to provide allocations, as described in various examples herein. In turn, the data flow manager 304 may implement an algorithm, such as a coin toss algorithm, to implement the percentage selections. The algorithm can also take into account additional factors such as geographic or network criteria.

In einem Satz veranschaulichender Beispiele sei angenommen, dass ein einer Region zugeordnetes Rechenzentrum 110 ferner drei unterschiedlichen Teilregionen („Teil 1“, „Teil 2“ und „Teil 3“) zugeteilt werden kann. Mit einem Tool kann ein Systemadministrator die Zuweisung auf Prozentbasis festlegen. Im Hinblick auf die Verteilung von veranschaulichenden 100 Paketen werden nun verschiedene Iterationen beschrieben: Teilregion Zuteilung Anzahl der Datenpakete Teil 1 10% 10 Datenpakete Teil 2 20% 18 (20% von 90 verbleibenden) Teil 3 100% 72 (100% von 72 verbleibenden) In a set of illustrative examples, assume that a data center 110 assigned to a region may be further assigned to three different sub-regions ("Part 1", "Part 2", and "Part 3"). A tool allows a system administrator to set allocation on a percentage basis. With regard to the distribution of illustrative 100 packages, various iterations will now be described: subregion allocation Number of data packets Part 1 10% 10 data packages Part 2 20% 18 (20% of 90 remaining) part 3 100% 72 (100% of 72 remaining)

Im vorstehenden Beispiel kann der Datenflussmanager 304 die Verteilung unter Verwendung des Münzwurf-Algorithmus so anwenden, dass die Datenpakete einer der Teilregionen zugeteilt werden. Im folgenden Beispiel verfügt ein Systemadministrator möglicherweise über keine vollständige Zuteilung, wie folgt: Teilregion Zuteilung Anzahl der Datenpakete Teil 1 10% 10 Datenpakete Teil 2 20% 18 (20 % von 90 verbleibend) Teil 3 10% 7 (10% von 72 verbleibenden) In the above example, the data flow manager 304 can apply the distribution using the coin toss algorithm so that the data packets are allocated to one of the sub-regions. In the following example, a system administrator may not have full allocation, as follows: subregion allocation Number of data packets Part 1 10% 10 data packages Part 2 20% 18 (20% of 90 remaining) part 3 10% 7 (10% of 72 remaining)

Im vorstehenden Beispiel berücksichtigen die veranschaulichenden Zuteilungen nicht den vollständigen Satz von Datenpaketen. Dementsprechend kann der Datenflussmanager 304 in einer Ausführungsform zufällig auf den Satz von Teilregionen verteilen. In anderen Ausführungsformen kann der Datenflussmanager 304 auf Grundlage von Standardverteilungsalgorithmen zuteilen, wie etwa einer nächstgelegenen geografischen Teilregion oder einer manuell ausgewählten Verteilung. In noch einer weiteren Ausführungsform kann der Datenflussmanager 304 ferner einen automatisch linearen Anstieg berücksichtigen, um zusätzlichen Datenverkehr wie folgt zuzuteilen: Teilregion Zuteilung Anzahl der Datenpakete Teil 1 10% 10 Datenpakete Teil 2 20% 18 (20% von 90 verbleibenden) Teil 3 10% 7 (10% von 72 verbleibenden) In the example above, the illustrative allocations do not consider the full set of data packets. Accordingly, in one embodiment, data flow manager 304 may randomize among the set of sub-regions. In other embodiments, data flow manager 304 may allocate based on standard distribution algorithms, such as a closest geographic sub-region or a manually selected distribution. In yet another embodiment, the data flow manager 304 may further consider an auto linear ramp to allocate additional traffic as follows: subregion allocation Number of data packets Part 1 10% 10 data packages Part 2 20% 18 (20% of 90 remaining) part 3 10% 7 (10% of 72 remaining)

Autolineare Anpassung für nicht zugeteilte 65: Teilregion Zuteilung Anzahl der Datenpakete Teil 1 90% 58 Datenpakete Teil 2 100% 17 (20% von 17 verbleibenden) Teil 3 90% 0 (10 % von 0 verbleibenden) Autolinear fit for unallocated 65: subregion allocation Number of data packets Part 1 90% 58 data packets Part 2 100% 17 (20% of 17 remaining) part 3 90% 0 (10% of 0 remaining)

In einer weiteren Ausführungsform können globale Zugriffspunkte 106 konfiguriert sein, um anfänglich ein Rechenzentrum 110 auf Grundlage von Leistungskriterien zwischen der Client-Vorrichtung 102, von der Datenverkehr empfangen wurde, und dem ursprünglich ausgewählten Rechenzentrum 110 auszuwählen, anstatt anfänglich ein Rechenzentrum 110 auf Grundlage von geografischen oder Netzwerkkriterien zwischen dem Zugriffspunkt 106 und dem Rechenzentrum 110 auszuwählen. Vorteilhafterweise kann die Verwendung von Netzwerkleistungskriterien zwischen Client-Vorrichtungen 102 und Rechenzentren 110 zu einer konsistenten Auswahl eines Rechenzentrums 110 für eine gegebene Client-Vorrichtung 102 führen, ungeachtet des Zugriffspunkts 106, zu dem der Datenverkehr der Client-Vorrichtung geroutet wird. Nach der Auswahl eines anfänglichen Rechenzentrums 110 (z. B. in Bezug auf die Entfernung oder minimierte Latenz am nächsten zu einer Client-Vorrichtung 102) kann der Zugriffspunkt 106 diese Auswahl nach Bedarf modifizieren, um einen durch einen Dienstanbieter festgelegten Lastausgleich zu erzielen. Wenn zum Beispiel der Dienstanbieter wünscht, dass nicht mehr als 70 % des Datenverkehrs an das anfänglich ausgewählte Rechenzentrum 110 geroutet werden und der Anteil des Datenverkehrs über einen vergangenen Zeitraum diesen Prozentsatz überschreitet, kann der Zugriffspunkt 106 ein anderes Rechenzentrum auswählen (z. B. ein Rechenzentrum 110 mit der nächsten Leistungsfähigkeit in Bezug auf die Client-Vorrichtung 102). Der Zugriffspunkt 106 kann dann auf Grundlage eines Anteils des früheren Datenverkehrs, der zu diesem anderen Rechenzentrum 110 geroutet wurde, bestimmen, ob die Anfrage zu diesem anderen Rechenzentrum 110 geroutet werden könnte. Dieser Prozess kann fortgesetzt werden, bis der Zugriffspunkt 106 ein Rechenzentrum 110 lokalisiert, das auf Grundlage der Lastausgleichsspezifikationen des Dienstanbieters akzeptabel ist.In another embodiment, global access points 106 may be configured to initially select a data center 110 based on performance criteria between the client device 102 from which traffic was received and the originally selected data center 110, rather than initially selecting a data center 110 based on geography or select network criteria between the access point 106 and the data center 110. Advantageously, the use of network performance criteria between client devices 102 and data centers 110 can result in a consistent selection of a data center 110 for a given client device 102, regardless of the access point 106 to which the client device's traffic is routed. After selecting an initial data center 110 (e.g., closest to a client device 102 in terms of distance or minimized latency), the access point 106 may modify that selection as needed to achieve load balancing specified by a service provider. For example, if the service provider desires no more than 70% of traffic to be routed to the initially selected data center 110, and the percentage of traffic over a past period of time exceeds that percentage, the access point 106 may select a different data center (e.g., a Data center 110 with the next performance in relation to the client device 102). The access point 106 can then determine whether the request could be routed to that other data center 110 based on a fraction of previous traffic that was routed to that other data center 110 . This process may continue until the access point 106 locates a data center 110 that is acceptable based on the service provider's load balancing specifications.

In einigen Ausführungsformen wird der Lastausgleich lokal an jedem Datenflussmanager 304 implementiert. In anderen Ausführungsformen wird der Lastausgleich über alle Datenflussmanager 304 eines Zugriffspunkts 106 hinweg implementiert. In noch anderen Ausführungsformen wird der Lastausgleich über Datenflussmanager 304 mehrerer Zugriffspunkte 106 hinweg implementiert. Im Allgemeinen wird erwartet, dass ein lokalisierter Lastausgleich weniger ressourcenintensiv ist, da weniger Kommunikation zwischen verteilten Komponenten erforderlich ist. Ein weniger lokalisierter Lastausgleich kann jedoch zu Lastausgleichskriterien führen, die den von einem Dienstanbieter gewünschten ähnlicher sind.In some embodiments, load balancing is implemented locally at each data flow manager 304 . In other embodiments, load balancing is implemented across all data flow managers 304 of an access point 106 . In still other embodiments, load balancing is implemented across data flow managers 304 of multiple access points 106 . In general, a localized load balancer is expected to be less resource intensive because less communication is required between distributed components. However, less localized load balancing can result in load balancing criteria more similar to those desired by a service provider.

In einigen Fällen können die Datenflussmanager 304 eine Mischung aus lokalisiertem und nicht lokalisiertem Lastausgleich implementieren. Zum Beispiel kann jeder Datenflussmanager 304 einen lokalisierten Lastausgleich implementieren (z. B. lokalisiert auf jeden Manager 304 oder jeden Zugriffspunkt 106) und regelmäßig mit anderen Zugriffspunkten 106 verhandeln, um die beim Auswählen eines Rechenzentrums 110 angewendeten Gewichtungen anzupassen. Wenn beispielsweise ein Dienstanbieter anfordert, dass der Datenverkehr gleichmäßig zwischen den Rechenzentren 110 aufgeteilt wird, kann ein lokalisierter Lastausgleich bewirken, dass jeder der zwei Zugriffspunkte 106 den Datenverkehr gleichmäßig zwischen den Rechenzentren 110 aufteilt. Dies kann zu einem nicht optimalen Routen führen, da die Hälfte des Datenverkehrs an jedem Zugriffspunkt 106 zu einem nicht nächstgelegenen Rechenzentrum 110 geroutet werden kann. Dementsprechend können die Zugriffspunkte 106 in diesem Szenario bezüglich des Routens ihres Datenverkehrs kommunizieren, und hypothetisch angenommen, dass das Datenverkehrsvolumen an jedem Punkt 106 gleich ist (und dass nur zwei Zugriffspunkte 106 berücksichtigt werden), kann jeder Zugriffspunkt 106 beginnen, alle seine Datenpakete zu einem nächstgelegenen Rechenzentrum 110 zu routen. Eine solche Aufteilung würde immer noch zu einer gleichmäßigen Aufteilung des Datenverkehrs zwischen den Rechenzentren 110 führen und darüber hinaus die durchschnittliche Netzleistungsmetrik für jeden Datenpaketfluss vorteilhaft erhöhen.In some cases, data flow managers 304 may implement a mix of localized and non-localized load balancing. For example, each data flow manager 304 may implement localized load balancing (e.g., localized to each manager 304 or each access point 106) and periodically negotiate with other access points 106 to adjust the weights applied when selecting a data center 110. For example, if a service provider requests that traffic be split evenly between data centers 110, a localized load can occur equal cause each of the two access points 106 to share traffic evenly between the data centers 110. This can result in sub-optimal routing, since half of the traffic at each access point 106 may be routed to a non-nearest data center 110. Accordingly, in this scenario, the access points 106 can communicate regarding the routing of their traffic, and hypothetically assuming that the volume of traffic at each point 106 is the same (and that only two access points 106 are considered), each access point 106 can begin to forward all of its data packets into one to route the nearest data center 110. Such a split would still result in an even split of traffic between the data centers 110 and, moreover, would beneficially increase the average network performance metric for each data packet flow.

In einer Ausführungsform kann ein gewünschter Anteil oder ein gewünschtes Volumen des Datenverkehrs, der bzw. das zu einem gegebenen Rechenzentrum 110 geroutet wird, durch einen Dienstanbieter statisch ausgewählt werden. Beispielsweise kann ein Dienstanbieter anfordern, dass nicht mehr als 70 % der Anfragen an einem Zugriffspunkt 106 zu einem gegebenen Rechenzentrum 110 geroutet werden. In einer weiteren Ausführungsform kann der gewünschte Anteil oder das gewünschte Volumen dynamisch sein. Zum Beispiel kann ein Dienstanbieter festlegen, dass ein gewünschter Anteil oder ein gewünschtes Volumen des Datenverkehrs, der bzw. das zu einem gegebenen Rechenzentrum 110 geroutet wird, von einem ersten Zeitpunkt zu einem zweiten Zeitpunkt entsprechend einer gegebenen Änderungsrate (z. B. linear, exponentiell, logarithmisch usw.) zunimmt oder abnimmt.In one embodiment, a desired fraction or volume of traffic routed to a given data center 110 may be statically selected by a service provider. For example, a service provider may require that no more than 70% of requests at an access point 106 be routed to a given data center 110. In another embodiment, the desired proportion or volume may be dynamic. For example, a service provider may specify that a desired fraction or volume of traffic routed to a given data center 110 should increase from a first time to a second time according to a given rate of change (e.g., linear, exponential , logarithmic, etc.) increases or decreases.

Nach dem Auswählen eines Rechenzentrums 110, zu dem der Datenverkehr geroutet werden soll, kann ein Datenflussmanager 304 einen Endpunkt 202 innerhalb des Rechenzentrums 110 auswählen, zu dem der Datenverkehr geroutet werden soll. Der Endpunkt 202 kann gemäß einem beliebigen Lastausgleichsalgorithmus ausgewählt werden. In einer Ausführungsform kann der Datenflussmanager 304 konsistentes Hashing nutzen, um einen Endpunkt 202 auszuwählen.After selecting a data center 110 to route traffic to, a data flow manager 304 may select an endpoint 202 within data center 110 to route traffic to. The endpoint 202 can be selected according to any load balancing algorithm. In one embodiment, data flow manager 304 may use consistent hashing to select endpoint 202 .

Wie vorstehend in Bezug auf die Datenflussmanager 304 erörtert, kann es wünschenswert sein, dass Datenverkehr eines gegebenen Datenflusses konsistent zu demselben Endpunkt 202 geroutet wird, sodass der Endpunkt 202 Statusinformationen bezüglich dieses Datenflusses aufrechterhalten kann. Somit kann jeder Datenflussmanager 304 einen Datenflussauswahlalgorithmus nutzen, um nachfolgende Datenpakete innerhalb eines Datenflusses zu erkennen, der zuvor durch den Datenflussmanager 302A zu einem Endpunkt 202 geroutet wurde, und um solche Datenpakete zu demselben Endpunkt 202 zu routen. In einer Ausführungsform, in der ein Datenpaket durch die Datenflussmanager 304 als Teil eines bereits gerouteten Datenflusses identifiziert wird, kann der Datenflussmanager 304 die Auswahl eines Rechenzentrums 110 und eines Endpunkts 202 für das Datenpaket weglassen, zugunsten eines Routens des Datenpakets zu dem Endpunkt 202, der zuvor für frühere Datenpakete des Datenflusses verwendet wurde. Insbesondere kann der Datenflussmanager 304 einen Auswahlalgorithmus implementieren, der versucht, konsistent einen Endpunkt 202 zu identifizieren. Zur Veranschaulichung kann der Auswahlalgorithmus eine Bewertung generieren, die verschiedenen Endpunkten 202 zugeordnet ist, die auf Attribute der einzelnen Endpunkte oder Kommunikationen angewendet wird. Zum Beispiel kann der Auswahlalgorithmus bezüglich der 5 Tupel berechnet werden (z. B. nämlich eine IP-Adresse der Quelle, eine Port-Adresse der Quelle, eine IP-Adresse des Ziels, eine Port-Adresse des Ziels und ein Routing-Protokoll, um Datenpakete automatisch zu einem zugewiesenen Endpunkt 202 zu routen). Der Auswahlalgorithmus kann dann die generierten Bewertungen für eine gegebene Kommunikationsanfrage (z. B. eine Verbindung zu einem Dienst) verarbeiten, indem er einen Endpunkt mit einer „höchsten“ Bewertung auswählt. Nachfolgende Kommunikationen können unter der Annahme, dass der Auswahlalgorithmus konsistent dieselbe „hohe“ Bewertung generiert, zu dem ausgewählten Endpunkt geroutet werden. Der Auswahlalgorithmus kann in einer Ausführungsform einem gewichteten Rendezvous-Hashing-Algorithmus entsprechen. In einer weiteren Ausführungsform kann der Auswahlalgorithmus ein gewichteter konsistenter Hashing-Algorithmus sein.As discussed above with respect to data flow managers 304, it may be desirable for traffic of a given data flow to be consistently routed to the same endpoint 202 so that endpoint 202 can maintain status information regarding that data flow. Thus, each data flow manager 304 may use a data flow selection algorithm to identify subsequent data packets within a data flow previously routed to an endpoint 202 by data flow manager 302A and to route such data packets to the same endpoint 202. In an embodiment in which a data packet is identified by the data flow manager 304 as part of an already routed data flow, the data flow manager 304 may omit the selection of a data center 110 and an endpoint 202 for the data packet in favor of routing the data packet to the endpoint 202 that previously used for previous data packets of the data flow. In particular, the data flow manager 304 may implement a selection algorithm that attempts to identify an endpoint 202 consistently. To illustrate, the selection algorithm may generate a score associated with various endpoints 202 that is applied to attributes of each endpoint or communication. For example, the selection algorithm can be computed in terms of the 5 tuples (e.g., namely, a source IP address, a source port address, a destination IP address, a destination port address, and a routing protocol, to automatically route data packets to an assigned endpoint 202). The selection algorithm can then process the generated scores for a given communication request (e.g., a connection to a service) by selecting an endpoint with a "highest" score. Subsequent communications may be routed to the selected endpoint, assuming that the selection algorithm consistently generates the same "high" score. In one embodiment, the selection algorithm may correspond to a weighted rendezvous hashing algorithm. In another embodiment, the selection algorithm may be a weighted consistent hashing algorithm.

In noch weiteren Ausführungsformen kann der Datenflussmanager 304 die Generierung von Bewertungen weiter optimieren, indem er die Berechnung von Bewertungen in Hierarchien ordnet. In einer Ausführungsform werden die Endpunkte 202 zu Paaren gruppiert, die die Berechnung einer Bewertung auf Grundlage von kumulativen Attributen ermöglichen. Die Paare werden in aufeinanderfolgenden Kombinationen weiter kombiniert, bis nur noch zwei Kombinationen übrigbleiben, wodurch eine Hierarchie entsteht, die einer Pyramide ähnelt. Anstatt eine Berechnung und Vergleichsbewertungen für jeden Endpunkt 202 in einer Gruppe zu erfordern, ermöglicht die resultierende Pyramide eine binäre Aufteilung der Bewertung und des Vergleichs, wodurch die Auswahl des Endpunkts 202 noch effizienter wird.In still other embodiments, the data flow manager 304 may further optimize the generation of scores by organizing the calculation of scores into hierarchies. In one embodiment, the endpoints 202 are grouped into pairs that enable a score to be calculated based on cumulative attributes. The pairs are further combined in successive combinations until only two combinations remain, creating a hierarchy akin to a pyramid. Rather than requiring computation and comparison scores for each endpoint 202 in a group, the resulting pyramid allows for a binary split of the score and comparison, making endpoint 202 selection even more efficient.

Nach dem Auswählen eines Endpunkts 202, zu dem ein Datenpaket geroutet werden soll, kann ein Datenflussmanager 304 das Datenpaket modifizieren, um das Routen zu dem Endpunkt 202 zu erleichtern. Zum Beispiel kann eine Zielnetzwerkadresse des Datenpakets, wenn es am Router 302 empfangen wird, eine globale Netzwerkadresse sein. Der Datenflussmanager 304 kann daher das Datenpaket modifizieren, um die Zielnetzwerkadresse durch eine Netzwerkadresse des Endpunkts 202 zu ersetzen. In einer Ausführungsform implementiert jeder Datenflussmanager 304 NAT-Techniken, um Datenpakete zu modifizieren, die an globale Netzwerkadressen adressiert sind. Zum Beispiel kann jeder Datenflussmanager 304 für Datenpakete, die für Endpunkte 202 bestimmt sind, eine globale Netzwerkadresse durch eine Netzwerkadresse eines Endpunkts 202 als die Zielnetzwerkadresse des Datenpakets ersetzen und eine Netzwerkadresse der Client-Vorrichtung 102 durch eine Adresse des Zugriffspunkts 106 als Quelladresse ersetzen. Eine ähnliche Übersetzung kann für Datenpakete von Endpunkten 202 erfolgen, die gemäß NAT-Techniken zu Client-Vorrichtungen 102 geroutet werden sollen. Die Datenflussmanager 304 können veranschaulichend eine Portübersetzung (eine bekannte NAT-Technik) verwenden, um zwischen übersetzten Datenflüssen zu unterscheiden. Nach der Übersetzung kann der Datenflussmanager 304 das Datenpaket an den Router 302 zur Übertragung an den ausgewählten Endpunkt 202 über das Netzwerk 108 zurückgeben.After selecting an endpoint 202 to route a data packet to, a data flow manager 304 may modify the data packet to facilitate routing to the endpoint 202. For example, a destination network address of the data packet when received at router 302 may be a global network address. The data flow manager 304 may therefore modify the data packet to replace the destination network address with an endpoint 202 network address. In one embodiment, each data flow manager 304 implements NAT techniques to modify data packets addressed to global network addresses. For example, each data flow manager 304 for data packets destined for endpoints 202 can replace a global network address with a network address of an endpoint 202 as the destination network address of the data packet and a network address of the client device 102 with an address of the access point 106 as the source address. A similar translation can be done for data packets from endpoints 202 to be routed to client devices 102 according to NAT techniques. Flow managers 304 may illustratively use port translation (a known NAT technique) to distinguish between translated flows. After translation, data flow manager 304 may return the data packet to router 302 for transmission to selected endpoint 202 over network 108 .

In einer weiteren Ausführungsform kann ein Datenflussmanager 304 Kapselung verwenden, um ein Datenpaket zu einem Endpunkt 202 zu routen. Veranschaulichend kann jeder Datenflussmanager 304 einen IP-„Tunnel“ zu einer Vorrichtung innerhalb eines Rechenzentrums 110 generieren, wie etwa dem Sitzungsübergabemanager 212 oder einem Router innerhalb des Rechenzentrums 110. Um Datenpakete zu einem Endpunkt 202 zu routen, kann ein Datenflussmanager 304 das Datenpaket kapseln und das Datenpaket über den Tunnel an die empfangende Vorrichtung übertragen. Die empfangende Vorrichtung kann dann das Datenpaket entkapseln und das Datenpaket an den Endpunkt 202 übertragen. In einer Ausführungsform ersetzt der Datenflussmanager 304 eine Zieladresse des Datenpakets (z. B. eine globale Netzwerkadresse des Dienstes) durch eine Zieladresse des ausgewählten Endpunkts 202, um die Übertragung des Datenpakets 202 an den Endpunkt zu erleichtern. Die Kapselung von Paketen über einen Tunnel kann Vorteile bieten, wie etwa die Beibehaltung der Netzwerkadresse einer Client-Vorrichtung 102, die das Datenpaket übertragen hat. Wie zuvor beschrieben, kann der Datenflussmanager 304 in einem spezifischen Beispiel einen Satz von VLAN einrichten, die gekapselte Kommunikationen an unterschiedliche Teilgruppen von Endpunkten nutzen. Somit kann die Kapselung es beispielsweise einer Client-Vorrichtung 102 und einem Endpunkt 202 ermöglichen, verbindungsorientierte Kommunikationssitzungen aufrechtzuerhalten, selbst wenn Datenpakete einer Client-Vorrichtung 102 durch verschiedene Zugriffspunkte 106 geroutet werden. In einigen Fällen können die Datenflussmanager 304 und die Endpunkte 202 (oder die Sitzungsübergabemanager 212) dazu konfiguriert sein, Kommunikationen untereinander zu authentifizieren, um die Authentizität von Paketen sicherzustellen, die zwischen den Vorrichtungen übertragen werden. Zum Beispiel kann jeder der Datenflussmanager 304 und der Endpunkte 202 (oder die Sitzungsübergabemanager 212) konfiguriert sein, um eine digitale Signatur zu generieren, die die jeweiligen Vorrichtungen authentifiziert, und eine solche digitale Signatur in einen Header von gekapselten Paketen aufzunehmen, die zwischen den Vorrichtungen fließen, sodass jede Vorrichtung die digitale Signatur authentifizieren kann, um zu verifizieren, dass die Datenpakete an einer bekannten Vorrichtung generiert wurden. Als weiteres Beispiel können die Flow-Manager 304 und die Endpunkte 202 (oder die Sitzungsübergabemanager 212) konfiguriert sein, um über bekannte sichere Protokolle zu kommunizieren, wie etwa die Protokolle für Transportschichtsicherheit (Transport Layer Security - TLS).In another embodiment, a data flow manager 304 may use encapsulation to route a data packet to an endpoint 202. Illustratively, each data flow manager 304 can generate an IP "tunnel" to a device within a data center 110, such as the session handoff manager 212 or a router within the data center 110. To route data packets to an endpoint 202, a data flow manager 304 can encapsulate the data packet and transmit the data packet over the tunnel to the receiving device. The receiving device can then decapsulate the data packet and transmit the data packet to endpoint 202 . In one embodiment, the data flow manager 304 replaces a destination address of the data packet (e.g., a global network address of the service) with a destination address of the selected endpoint 202 to facilitate transmission of the data packet 202 to the endpoint. Encapsulating packets over a tunnel can provide benefits such as preserving the network address of a client device 102 that transmitted the data packet. As previously described, in one specific example, data flow manager 304 may establish a set of VLANs that utilize encapsulated communications to different subsets of endpoints. Thus, for example, encapsulation may allow a client device 102 and an endpoint 202 to maintain connection-oriented communication sessions even when data packets of a client device 102 are routed through different access points 106 . In some cases, data flow managers 304 and endpoints 202 (or session handover managers 212) may be configured to authenticate communications between themselves to ensure the authenticity of packets transmitted between the devices. For example, each of data flow manager 304 and endpoint 202 (or session handover manager 212) may be configured to generate a digital signature that authenticates the respective devices, and to include such digital signature in a header of encapsulated packets sent between the devices flow so that each device can authenticate the digital signature to verify that the data packets were generated at a known device. As another example, flow managers 304 and endpoints 202 (or session handoff managers 212) may be configured to communicate via known secure protocols, such as Transport Layer Security (TLS) protocols.

Wie vorstehend erwähnt, können die Zugriffspunkte 106 in einigen Fällen dazu konfiguriert sein, eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung durchzuführen, um die Zeit zu reduzieren, die zum Durchführen einer solchen Phase benötigt wird (z. B. aufgrund der relativen Nähe des Zugriffspunkts 106 zu der Client-Vorrichtung 102 relativ zum Rechenzentrum 110). Um eine solche Funktionalität zu ermöglichen, kann jeder Datenflussmanager 304 die Initialisierungsphase bei einem Client implementieren und Informationen in Bezug auf eine initialisierte Sitzung an eine Vorrichtung innerhalb des Rechenzentrums 110 bereitstellen, wie etwa einen Endpunkt 202 oder einen Sitzungsübergabemanager 212. Die Informationen können beispielsweise über den Tunnel bereitgestellt werden. Veranschaulichend kann ein Datenflussmanager 304 einen Tunnel zu dem Sitzungsübergabemanager 212 generieren und innerhalb des Tunnels einen „TCP-Übergabe“-Befehl weitergeben, der TCP-Sitzungsstatusinformationen beinhaltet. Die Statusinformationen können beispielsweise ein TCP-„Fünf-Tupel“ (fünf Werte, die häufig eine TCP-Verbindung definieren: Quelladresse, Quellport, Zieladresse, Zielport und das verwendete Protokoll) oder einen Teil davon und/oder Sequenznummern der TCP-Verbindung beinhalten. Beim Empfangen des TCP-Übergabebefehls kann der Sitzungsübergabemanager 212 einen entsprechenden Eintrag in seiner eigenen statusbehafteten Sitzungstabelle (z. B. TCP-Tabelle) generieren und somit die verbindungsorientierte Kommunikationssitzung „annehmen“. Der Datenflussmanager 304 kann dann Datenpakete von der Client-Vorrichtung 102 über den Tunnel übertragen, die entkapselt und am Sitzungsübergabemanager 212 als Teil der angenommenen Sitzung verarbeitet werden können. In Ausführungsformen, in denen ein Sitzungsübergabemanager 212 verwendet wird, um eine Übergabe von statusbehafteten Sitzungen zu erreichen, müssen die Datenflussmanager 304 möglicherweise keinen Endpunkt 202 auswählen, an den ein Datenpaket gesendet werden soll. Stattdessen können die Datenflussmanager 304 konfiguriert sein, um konsistent einen geeigneten Sitzungsübergabemanager 212 innerhalb eines ausgewählten Rechenzentrums 110 als Ziel für die Datenpakete der Client-Vorrichtung 102 auszuwählen. Der Sitzungsübergabemanager 212 kann wiederum einen Endpunkt 202 innerhalb des Rechenzentrums 110 auswählen. Somit kann die Verwendung eines Sitzungsübergabemanagers 212 die Verantwortung für das Auswählen eines Endpunkts 202 vom Datenflussmanager 304 auf den Sitzungsübergabemanager 212 verlagern. Die Auswahl eines Endpunkts 202 an einem Sitzungsübergabemanager 212 kann ähnlich wie eine solche Auswahl durch einen Datenflussmanager 304 erfolgen.As noted above, in some cases, access points 106 may be configured to perform an initialization phase of a connection-oriented communication session to reduce the time required to perform such phase (e.g., due to access point 106's relative proximity to the client device 102 relative to data center 110). To enable such functionality, each data flow manager 304 may implement the initialization phase at a client and provide information related to an initialized session to a device within the data center 110, such as an endpoint 202 or a session handoff manager 212. The information may, for example, via the tunnels are provided. Illustratively, a data flow manager 304 may generate a tunnel to the session handover manager 212 and pass within the tunnel a "TCP handover" command that includes TCP session state information. For example, the status information can include a TCP "five-tuple" (five values that often define a TCP connection: source address, source port, destination address, destination port, and the protocol used) or part of it and/or sequence numbers of the TCP connection. Upon receiving the TCP handoff command, the session handoff manager 212 may generate a corresponding entry in its own stateful session table (e.g., TCP table) and thus "accept" the connection-oriented communication session. The data flow manager 304 can then receive data packets from the client front direction 102 are transmitted over the tunnel, which may be decapsulated and processed at session handoff manager 212 as part of the accepted session. In embodiments where a session handover manager 212 is used to achieve stateful session handover, the data flow managers 304 may not need to select an endpoint 202 to send a data packet to. Instead, data flow managers 304 may be configured to consistently select an appropriate session handover manager 212 within a selected data center 110 as the destination for client device 102 data packets. In turn, the session handoff manager 212 may select an endpoint 202 within the data center 110 . Thus, using a session handoff manager 212 may offload the responsibility for selecting an endpoint 202 from the data flow manager 304 to the session handoff manager 212 . The selection of an endpoint 202 at a session handoff manager 212 may be similar to such a selection at a data flow manager 304 .

Zusätzlich zu einem oder mehreren Routern 302 und Datenflussmanagern 304 beinhaltet der globale Zugriffspunkt 106 der 2 eine Zustandsprüfungsvorrichtung 306. Die Zustandsprüfungsvorrichtung 306 kann veranschaulichend Zustandsprüfungen an Datenflussmanager 304 übertragen, um festzustellen, ob solche Datenflussmanager 304 eine Fehlfunktion aufweisen. Die Übertragung von Zustandsprüfungsdaten kann ähnlich wie die Übertragung von Zustandsprüfungsdaten durch eine Zustandsprüfungsvorrichtung 204 innerhalb eines Rechenzentrums 110 erfolgen, wie vorstehend erörtert. Zusätzlich oder alternativ kann die Zustandsprüfungsvorrichtung 306 Zustandsprüfungsdaten an Endpunkte 202 und/oder Client-Vorrichtungen 102 übertragen. In Bezug auf die Endpunkte 202 empfangene Zustandsprüfungsdaten können Routing-Entscheidungen an den Endpunkt 202 erleichtern. Wenn zum Beispiel die Zustandsprüfungsvorrichtung 306 nicht in der Lage ist, mit einem Endpunkt 202 zu kommunizieren, kann ein Datenflussmanager 304 die Auswahl des Endpunkts 202 als Ziel für den Datenverkehr stoppen, unabhängig davon, ob eine Zustandsprüfungsvorrichtung 204 lokal zu dem Endpunkt 202 den Endpunkt 202 als fehlerfrei meldet. In Bezug auf die Client-Vorrichtungen 102 gesammelte Zustandsprüfungsdaten können veranschaulichend verwendet werden, um Verfügbarkeitsankündigungen (z. B. BGP-Ankündigungen) an Vorrichtungen des Netzwerks 104 zu modifizieren. Zum Beispiel kann ein Betreiber der globalen Zugriffspunkte 106 auf die Client-Vorrichtung 102 bezogene Zustandsprüfungsdaten überprüfen, um Ankündigungen anzupassen, um zu versuchen, den Datenverkehr von einigen Vorrichtungen 102 zu einem anderen (z. B. näheren) Zugriffspunkt 106 als der, zu dem er aktuell in dem Netzwerk 104 geroutet wird, umzuleiten.In addition to one or more routers 302 and flow managers 304, the global access point 106 includes the 2 a health check device 306. Health check device 306 may illustratively transmit health checks to data flow managers 304 to determine whether such data flow managers 304 are malfunctioning. The transmission of health check data may be similar to the transmission of health check data by a health check device 204 within a data center 110, as discussed above. Additionally or alternatively, health check device 306 may transmit health check data to endpoints 202 and/or client devices 102 . Health check data received with respect to endpoints 202 may facilitate routing decisions to endpoint 202 . For example, if the health checker 306 is unable to communicate with an endpoint 202, a data flow manager 304 may stop selecting the endpoint 202 as a destination for traffic, regardless of whether a health checker 204 local to the endpoint 202 communicates with the endpoint 202 reported as error-free. Illustratively, health check data collected with respect to client devices 102 may be used to modify availability advertisements (e.g., BGP advertisements) to network 104 devices. For example, an operator of global access points 106 may review client device 102-related health check data to adjust advertisements to attempt to direct traffic from some devices 102 to a different (e.g., closer) access point 106 than the one to which currently being routed in the network 104.

Der globale Zugriffspunkt 106 der 3 beinhaltet ferner einen Konfigurationsmanager 308, der konfiguriert ist, um Konfigurationsinformationen in Bezug auf Dienste zu empfangen, die globalen Netzwerkadressen zugeordnet sind, und um den Betrieb des globalen Zugriffspunkts 106 zu konfigurieren, um eine solche Konfiguration zu implementieren. Zum Beispiel kann der Konfigurationsmanager 308 Informationen darüber empfangen, wie der Router 302 globale Netzwerkadressen dem Netzwerk 104 anbieten soll, Informationen, die Dienste, die an den Rechenzentren 110 zur Verfügung gestellt werden, globalen Netzwerkadressen zuordnen, die durch die Zugriffspunkte 106 geroutet werden, Informationen, die Rechenzentren 110 und Endpunkte 202 solcher Dienste identifizieren, Informationen, die einen gewünschten Lastausgleich zwischen solchen Rechenzentren 110 festlegen und dergleichen. In einer Ausführungsform ruft der Konfigurationsmanager 308 Konfigurationsinformationen aus einem Konfigurationsdatenspeicher 210 in einem Rechenzentrum 110 ab. Zum Beispiel kann der Konfigurationsmanager 308 den Datenspeicher 210 periodisch nach neuen Konfigurationsinformationen abfragen. Als weiteres Beispiel kann ein Rechenzentrum 110 Konfigurationsänderungen an den Konfigurationsmanager 308 „pushen“, indem es eine Vielzahl bekannter Push-Benachrichtigungstechniken verwendet. Beispielsweise kann ein Rechenzentrum 110 ein Benachrichtigungssystem für Veröffentlichen/Abonnieren (publish-subscribe - „pub/sub“) implementieren, und ein Konfigurationsmanager 208 kann Änderungen an der Konfiguration eines Dienstanbieters für das System veröffentlichen. Das System kann dann die Konfigurationsmanager 308 der Zugriffspunkte 106 bezüglich solcher Änderungen benachrichtigen. Wenn Dienstanbieter die Konfiguration ihrer Dienste und globale Netzwerkadressen in einem Rechenzentrum 110 modifizieren, können daher solche Modifikationen an die Zugriffspunkte 106 verbreitet werden. In einer Ausführungsform speichern die Zugriffspunkte 106 keine Konfigurationsinformationen im dauerhaften Speicher (und weisen möglicherweise gar keinen solchen dauerhaften Speicher auf), um die Wahrscheinlichkeit zu verringern, dass solche Informationen von den Zugriffspunkten 106 erhalten werden könnten.The global access point 106 of the 3 further includes a configuration manager 308 configured to receive configuration information related to services associated with global network addresses and to configure operation of global access point 106 to implement such configuration. For example, configuration manager 308 may receive information about how router 302 should offer global network addresses to network 104, information that maps services provided at data centers 110 to global network addresses that are routed through access points 106, information , identifying data centers 110 and endpoints 202 of such services, information specifying a desired load balance between such data centers 110, and the like. In one embodiment, the configuration manager 308 retrieves configuration information from a configuration data store 210 in a data center 110 . For example, the configuration manager 308 may periodically query the data store 210 for new configuration information. As another example, a data center 110 may "push" configuration changes to the configuration manager 308 using a variety of known push notification techniques. For example, a data center 110 may implement a publish-subscribe ("pub/sub") notification system, and a configuration manager 208 may publish changes to a service provider's configuration to the system. The system can then notify the configuration managers 308 of the access points 106 of such changes. Therefore, when service providers modify the configuration of their services and global network addresses in a data center 110, such modifications can be propagated to the access points 106. In one embodiment, access points 106 do not store configuration information in persistent storage (and may not have such persistent storage) to reduce the likelihood that such information could be obtained from access points 106 .

Während vorstehend Beispiele in Bezug auf einen über das Netzwerk zugänglichen Dienst erörtert wurden, kann jeder Zugriffspunktserver 402 mehreren Diensten zugeordnet sein. Wenn beispielsweise jeder Datenflussmanager 304 damit beauftragt ist, Datenpakete zu handhaben, die an eine Teilmenge von globalen Netzwerkadressen innerhalb einer Gruppe solcher Adressen adressiert sind, kann jeder Datenflussmanager 304 folglich Datenverkehr handhaben, der an einen beliebigen Dienst adressiert ist, der einer globalen Netzwerkadresse innerhalb dieser Teilmenge zugeordnet ist.While examples were discussed above in relation to one network accessible service, each access point server 402 may be associated with multiple services. For example, if each data flow manager 304 is tasked with handling data packets addressed to a subset of global network addresses within a group of such addresses, each data flow mana ger 304 will therefore handle traffic addressed to any service associated with a global network address within that subset.

Während nur einige Komponenten der Zugriffspunkte 106 als mit den Netzwerken 104 und 108 kommunizierend gezeigt sind, können andere Komponenten zusätzlich mit dem Netzwerk 108 und/oder dem Netzwerk 104 kommunizieren. Die Linien in 3 sollen nicht alle tatsächlichen oder potentiellen Netzwerkverbindungen darstellen, sondern vielmehr einen möglichen Datenfluss von dienstbezogenem Datenverkehr zu den Zugriffspunkten 106 veranschaulichen.While only some components of access points 106 are shown communicating with networks 104 and 108, other components may additionally communicate with network 108 and/or network 104. The lines in 3 are not intended to represent all actual or potential network connections, but rather to illustrate a possible flow of service-related traffic to the access points 106.

Das Rechenzentrum 110 der 2 und der globale Zugriffspunkt 106 der 3 werden in einer verteilten Rechenumgebung betrieben, die ein oder mehrere Computersysteme beinhaltet, die unter Verwendung eines oder mehrerer Computernetzwerke miteinander verbunden sind (nicht in den jeweiligen Figuren). Das Rechenzentrum 110 der 2 und der globale Zugriffspunkt 106 der 3 könnten auch innerhalb einer Rechenumgebung mit einer geringeren oder größeren Anzahl von Vorrichtungen betrieben werden, als in den jeweiligen Figuren veranschaulicht sind. Somit sollten die Darstellungen des Rechenzentrums 110 der 2 und des globalen Zugriffspunkts 106 der 3 als veranschaulichend und nicht auf die vorliegende Offenbarung beschränkt verstanden werden. Das Rechenzentrum 110 der 2, der globale Zugriffspunkt 106 der 3 oder verschiedene Bestandteile davon könnten verschiedene Webdienstkomponenten, gehostete oder „Cloud“-Computing-Umgebungen und/oder Peer-to-Peer-Netzwerkkonfigurationen implementieren, um mindestens einen Teil der in dieser Schrift beschriebenen Prozesse zu implementieren.The data center 110 of 2 and the global access point 106 of the 3 operate in a distributed computing environment that includes one or more computer systems that are interconnected using one or more computer networks (not in the respective figures). The data center 110 of 2 and the global access point 106 of the 3 could also be operated within a computing environment with fewer or more devices than illustrated in the respective figures. Thus, the depictions of the data center 110 of the 2 and the global access point 106 of the 3 are to be understood as illustrative and not limited to the present disclosure. The data center 110 of 2 , the global access point 106 of 3 or various portions thereof could implement various web service components, hosted or "cloud" computing environments, and/or peer-to-peer network configurations to implement at least some of the processes described in this specification.

4 stellt eine allgemeine Architektur eines beispielhaften Rechensystems (als Zugriffspunktserver 402 bezeichnet) dar, das betrieben wird, um die Datenflussmanager 304 eines Zugriffspunkts 106 zu implementieren. Die allgemeine Architektur des in 4 dargestellten Zugriffspunktservers 402 beinhaltet eine Anordnung von Computerhardware- und - softwaremodulen, die verwendet werden können, um Aspekte der vorliegenden Offenbarung zu implementieren. Die Hardwaremodule können mit physischen elektronischen Vorrichtungen implementiert werden, wie nachstehend ausführlicher erörtert. Der Zugriffspunktserver 402 kann viel mehr (oder weniger) Elemente beinhalten als die in 4 gezeigten. Es ist jedoch nicht erforderlich, dass alle diese allgemein üblichen Elemente gezeigt werden, um eine ermöglichende Offenbarung bereitzustellen. Zusätzlich kann die in 4 veranschaulichte allgemeine Architektur verwendet werden, um eine oder mehrere der anderen Komponenten zu implementieren, die in den 2 und 3 veranschaulicht sind. Wie dargestellt, beinhaltet der Zugriffspunktserver 402 eine oder mehrere Verarbeitungseinheiten 490, eine oder mehrere Netzwerkschnittstellen 492 und ein oder mehrere computerlesbare Medienlaufwerke 494, die alle über einen Kommunikationsbus miteinander kommunizieren können. Die Netzwerkschnittstellen 492 können Konnektivität zu einem oder mehreren Netzwerken oder Rechensystemen bereitstellen, wie etwa dem Router 302 (der beispielsweise einer im Handel erhältlichen Router-Vorrichtung entsprechen kann). Die Verarbeitungseinheiten 490 können somit Informationen und Anweisungen von anderen Rechensystemen oder Diensten über Netzwerke, wie etwa das Netzwerk 104 oder 108, empfangen. Die Verarbeitungseinheit 490 kann auch zum und vom Speicher 480 kommunizieren. 4 10 depicts a general architecture of an example computing system (referred to as access point server 402) that operates to implement the data flow managers 304 of an access point 106. FIG. The general architecture of the in 4 The illustrated access point server 402 includes an arrangement of computer hardware and software modules that can be used to implement aspects of the present disclosure. The hardware modules can be implemented with physical electronic devices, as discussed in more detail below. Access point server 402 may include many more (or fewer) elements than those in 4 shown. However, it is not necessary that all of these commonly used elements be shown to provide an enabling disclosure. In addition, the in 4 illustrated general architecture can be used to implement one or more of the other components described in the 2 and 3 are illustrated. As illustrated, access point server 402 includes one or more processing units 490, one or more network interfaces 492, and one or more computer-readable media drives 494, all of which can communicate with one another via a communications bus. Network interfaces 492 may provide connectivity to one or more networks or computing systems, such as router 302 (which may correspond, for example, to a commercially available router device). Processing units 490 may thus receive information and instructions from other computing systems or services over networks, such as network 104 or 108. Processing unit 490 can also communicate to and from memory 480 .

Der Speicher 480 kann Computerprogrammanweisungen (in einigen Ausführungsformen als Module gruppiert) enthalten, die die Verarbeitungseinheit 490 ausführt, um einen oder mehrere Aspekte der vorliegenden Offenbarung zu implementieren. Der Speicher 480 beinhaltet im Allgemeinen einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM) und/oder andere persistente, zusätzliche oder nichttransitorische computerlesbare Medien. Der Speicher 480 kann ein Betriebssystem 482 speichern, das Computerprogrammanweisungen zur Verwendung durch die Verarbeitungseinheit 490 bei der allgemeinen Verwaltung und dem Betrieb des Zugriffspunktservers 402 bereitstellt. Der Speicher 480 kann ferner Computerprogrammanweisungen und andere Informationen zum Implementieren von Aspekten der vorliegenden Offenbarung beinhalten. Beispielsweise beinhaltet der Speicher 480 in einer Ausführungsform eine oder mehrere Datenflussmanagereinheiten 483, von denen jede Code darstellt, der ausgeführt wird, um einen Datenflussmanager 304 der 3 zu implementieren. Jede Datenflussmanagereinheit 483 kann veranschaulichend von anderen Einheiten 483 auf dem Server 402 isoliert sein. Beispielsweise kann jede Einheit eine separate virtuelle Maschine oder einen isolierten Softwarecontainer darstellen. In einigen Fällen kann jede Einheit 483 separaten Verarbeitungseinheiten 490, Schnittstellen 492 oder Laufwerken 494 zugeordnet sein, wodurch die Möglichkeit, dass der Betrieb einer Einheit 483 den Betrieb einer anderen Einheit 483 beeinträchtigt, minimiert wird. Jede Einheit 483 beinhaltet veranschaulichend eine Endpunktauswahleinheit 484, die Code darstellt, der ausführbar ist, um einen Endpunkt 202 auszuwählen, zu dem ein an eine globale Netzwerkadresse adressiertes Datenpaket geroutet werden soll, eine Flusstabelle 486, die eine Tabelle von Informationen darstellt, um Datenflüsse von Paketen zu Endpunkten 202 zuzuordnen, eine NAT-Einheit 488, die Code darstellt, der ausführbar ist, um NAT an Paketen, die an globale Netzwerkadressen adressiert sind, oder Antworten auf solche Datenpakete von Endpunkten 202 durchzuführen, und eine Sitzungsübergabeeinheit 489, die Code darstellt, der ausführbar ist, um eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung durchzuführen und diese Sitzung an eine empfangende Vorrichtung zu übergeben. Auch wenn dies in 4 nicht gezeigt ist, beinhaltet der Speicher 480 veranschaulichend zudem eine Kapselungseinheit, die Code darstellt, der ausführbar ist, um eine Tunnelverbindung zu einer anderen Vorrichtung zu generieren, die die Übertragung gekapselter Datenpakete ermöglicht, und um Kapselung/Entkapselung durchzuführen, um eine solche Übertragung zu erleichtern.Memory 480 may contain computer program instructions (grouped as modules in some embodiments) that processing unit 490 executes to implement one or more aspects of the present disclosure. Memory 480 generally includes random access memory (RAM), read only memory (ROM), and/or other persistent, supplemental, or non-transitory computer-readable media. The memory 480 may store an operating system 482 that provides computer program instructions for use by the processing unit 490 in the general administration and operation of the access point server 402. Memory 480 may also include computer program instructions and other information for implementing aspects of the present disclosure. For example, in one embodiment, memory 480 includes one or more data flow manager units 483, each representing code that is executed to provide a data flow manager 304 of the 3 to implement. Each data flow manager entity 483 may illustratively be isolated from other entities 483 on server 402 . For example, each entity can represent a separate virtual machine or an isolated software container. In some cases, each unit 483 may be associated with separate processing units 490, interfaces 492, or drives 494, thereby minimizing the possibility of the operation of one unit 483 affecting the operation of another unit 483. Each unit 483 illustratively includes an endpoint selection unit 484 representing code executable to select an endpoint 202 to which a data packet addressed to a global network address is to be routed, a flow table 486 representing a table of information to select data flows from to map packets to endpoints 202, a NAT unit 488 representing code executable to NAT packets addressed to global network addresses, or to perform replies to such data packets from endpoints 202, and a session handoff unit 489 representing code executable to perform an initialization phase of a connection-oriented communication session and handoff that session to a receiving device. Even if this in 4 not shown, the memory 480 illustratively further includes an encapsulation unit that is code executable to generate a tunnel connection to another device that enables the transmission of encapsulated data packets and to perform encapsulation/de-encapsulation to facilitate such transmission facilitate.

Der Speicher 480 kann ferner eine Zustandsprüfungseinheit 496 beinhalten, die Anweisungen entspricht, die ausführbar sind, um die Zustandsprüfungsvorrichtung 306 zu implementieren, und eine Konfigurationsmanagereinheit 498, die Anweisungen entspricht, die ausführbar sind, um den Konfigurationsmanager 308 zu implementieren. In einigen Ausführungsformen können die Zustandsprüfungsvorrichtung 306 und der Konfigurationsmanager 308 als eigenständige Vorrichtungen statt als Teil des Zugriffspunktservers 402 implementiert sein. Darüber hinaus kann der Router 302, obwohl er als vom Zugriffspunktserver 402 getrennt gezeigt ist, in einigen Fällen in den Server 402 integriert sein (z. B. indem in den Speicher 480 Software aufgenommen wird, die ausführbar ist, um die Routingfunktionalität zu implementieren).The memory 480 may further include a state check unit 496 corresponding to instructions executable to implement the state check device 306 and a configuration manager unit 498 corresponding to instructions executable to implement the configuration manager 308 . In some embodiments, health checker 306 and configuration manager 308 may be implemented as standalone devices rather than as part of access point server 402 . Additionally, while router 302 is shown as separate from access point server 402, in some cases it may be integrated with server 402 (e.g., by including in memory 480 software executable to implement routing functionality). .

In einer Ausführungsform fehlt dem Zugriffspunktserver 402 jeglicher nichtflüchtige Speicher und er ist konfiguriert, um ausschließlich in Bezug auf flüchtigen Speicher, wie etwa RAM, zu arbeiten. Veranschaulichend kann der Zugriffspunktserver 402 konfiguriert sein, um eine Vor-Boot-Ausführungsumgebung (pre-boot execution - PXE) zu verwenden, sodass der Zugriffspunktserver 402 bei der Initialisierung von einem über das Netzwerk zugänglichen Speicherort (z. B. dem Konfigurationsdatenspeicher 210) zumindest einen Teil des Inhalts des Speichers 480 abruft, wie etwa das Betriebssystem 482, die Zustandsprüfungseinheit 496 und die Konfigurationsmanagereinheit 498. Die Konfigurationsmanagereinheit 498 kann danach zusätzliche Konfigurationsinformationen von einem über das Netzwerk zugänglichen Speicherort abrufen, wie etwa die Konfiguration für einzelne Dienste und zugehörige globale Netzwerkadressen, und diese zusätzlichen Informationen nutzen, um die Datenflussmanagereinheiten 483 zu generieren. Um eine unbefugte Offenlegung des Inhalts des Speichers 480 zu verhindern, kann die Authentifizierung des Servers 402 am Speicherort zumindest teilweise mit einem Netzwerkstandort des Servers 402 (z. B. an einem Zugriffspunkt 106) verknüpft sein, sodass Versuche, den Server 402 physisch zu verlagern, zu einem Fehler beim Abrufen des Inhalts des Speichers 408 führen.In one embodiment, access point server 402 lacks any non-volatile memory and is configured to operate solely on volatile memory, such as RAM. Illustratively, the access point server 402 may be configured to use a pre-boot execution environment (PXE) such that the access point server 402 upon initialization from a network-accessible location (e.g., the configuration data store 210) at least retrieves some of the contents of memory 480, such as the operating system 482, the health check unit 496, and the configuration manager unit 498. The configuration manager unit 498 can then retrieve additional configuration information from a network-accessible storage location, such as the configuration for individual services and associated global network addresses , and use this additional information to generate the data flow manager entities 483 . To prevent unauthorized disclosure of the contents of storage 480, authentication of server 402 at the storage location may be linked, at least in part, to a network location of server 402 (e.g., at an access point 106) such that attempts to physically relocate server 402 are prevented , result in an error retrieving the contents of memory 408.

Während 4 einen einzelnen Server 402 und einen einzelnen Router 302 darstellt, kann in einigen Fällen ein globaler Zugriffspunkt 106 durch mehrere Server 402 und/oder Router 302 implementiert sein. In einigen Fällen können solche Server 402 oder Router 302 physisch oder logisch isoliert sein, um die Ausbreitung von Fehlern zwischen solchen Servern 402 oder Routern 302 zu vermeiden. Veranschaulichend kann, wenn ein Zugriffspunkt 106 mehrere Pools von Netzwerkadressen handhabt, jeder Pool durch einen eigenständigen Server 402 und Router 302 gehandhabt werden. Sollte also ein Router 302 und/oder Server 402 ausfallen, wäre zu erwarten, dass nur Dienste, die dem Pool zugeordnet sind, der durch diesen Router 302 und/oder der Server 402 gehandhabt werden, betroffen sind.While 4 Illustrating a single server 402 and a single router 302, a global access point 106 may be implemented by multiple servers 402 and/or routers 302 in some cases. In some cases, such servers 402 or routers 302 may be physically or logically isolated to avoid propagation of errors between such servers 402 or routers 302. Illustratively, if an access point 106 handles multiple pools of network addresses, each pool can be handled by a standalone server 402 and router 302 . Thus, should a router 302 and/or server 402 fail, it would be expected that only services associated with the pool handled by that router 302 and/or server 402 would be affected.

Unter Bezugnahme auf 5 werden veranschaulichende Interaktionen beschrieben, die darstellen, wie ein einzelner globaler Zugriffspunkt 106A resilient betrieben werden kann, indem mehrere Routen bereitgestellt werden, um einen über das Netz zugänglichen Dienst unter Verwendung globaler Netzadressen zu erreichen. 5 stellt eine Umgebung 500 dar, die wiederum eine Ausführungsform eines Teils der Umgebung 100 der 1 darstellen kann. Insbesondere ist in der Umgebung 500 das Netzwerk 104 in Netzwerke 104A-E unterteilt, von denen jedes beispielsweise ein autonomes System darstellen kann. Die Netzwerke 104A-C sind so veranschaulicht, dass sie mit Client-Vorrichtungen 102 kommunizieren. Diese Netzwerke 104A-C können beispielsweise Internetdienstanbieter (Internet service provider - ISP) von Client-Vorrichtungen 102 darstellen. Die Netzwerke 104D und E stellen andere AS dar, zu denen der globale Zugriffspunkt 106A eine Netzwerkverbindung aufweist. Während die Netzwerke 104D und E in 5 als mit Client-Vorrichtungen 102 verbunden gezeigt sind, können solche Netzwerke auch als ISP für Client-Vorrichtungen 102 fungieren. Jedes der Netzwerke 104A-E ist in 5 als mit anderen Netzwerken 104A-E verbunden gezeigt. Diese Konfiguration ist veranschaulichend und kann je nach Implementierung variieren.With reference to 5 describes illustrative interactions that show how a single global access point 106A can operate resiliently by providing multiple routes to reach a network accessible service using global network addresses. 5 10 illustrates an environment 500, which in turn is an embodiment of a portion of the environment 100 of FIG 1 can represent. In particular, in environment 500, network 104 is divided into networks 104A-E, each of which may represent, for example, an autonomous system. Networks 104A-C are illustrated as communicating with client devices 102. These networks 104A-C may represent Internet service providers (ISP) of client devices 102, for example. Networks 104D and E represent other ASs to which global access point 106A has a network connection. While networks 104D and E in 5 are shown connected to client devices 102, such networks may also act as an ISP for client devices 102. Each of the networks 104A-E is in 5 shown connected to other networks 104A-E. This configuration is illustrative and may vary by implementation.

In der Veranschaulichung der 5 weisen die Client-Vorrichtungen 102 im Allgemeinen zwei Routen auf, über die der globale Zugriffspunkt 106A zu erreichen ist: über das Netzwerk 104D und 104E. Um die Resilienz des Zugriffs auf den globalen Zugriffspunkt 106A zu erhöhen, kann der Zugriffspunkt 106A selektiv Verfügbarkeitsankündigungen an die Netzwerke 104D und 104E übertragen. Insbesondere kann, wie in 5 gezeigt, ein globaler Zugriffspunkt 106A bei (1) mindestens zwei Gruppen von globalen Netzwerkadressen identifizieren, wie etwa zwei zusammenhängende Bereiche von Netzwerkadressen. Danach überträgt der globale Zugriffspunkt 106A bei (2) eine Ankündigung (z. B. eine BGP-Ankündigung) für die erste Netzwerkgruppe an das Netzwerk 104D, anstatt alle globalen Netzwerkadressen sowohl dem Netzwerk 104D als auch E anzubieten. In ähnlicher Weise überträgt der globale Zugriffspunkt 106A bei (3) eine Ankündigung (z. B. eine BGP-Ankündigung) für die zweite Netzwerkgruppe an das Netzwerk 104E. Auf diese Weise ist es wahrscheinlich, dass an Adressen innerhalb der ersten Netzwerkgruppe adressierter Datenverkehr über das Netzwerk 104D am Zugriffspunkt 106A ankommt und an Adressen innerhalb der zweiten Netzwerkgruppe adressierter Datenverkehr über das Netzwerk 104E am Zugriffspunkt 106A ankommt. Jeder Dienst kann globalen Netzwerkadressen von mindestens zwei Gruppen zugeordnet sein. Wenn also Fehler oder Probleme in einem der Netzwerke 104D oder E auftreten, kann eine Client-Vorrichtung 102 eine alternative globale Netzwerkadresse eines Dienstes nutzen, um über das verbleibende Netzwerk auf den globalen Zugriffspunkt 106A zuzugreifen.In the illustration of 5 For example, client devices 102 generally have two routes to reach global access point 106A: network 104D and 104E. To increase resiliency of access to global access point 106A, access point 106A may selectively transmit availability advertisements to networks 104D and 104E. In particular, as in 5 shown, a global access point 106A at (1) at least two sets of global network ads identifiers, such as two contiguous ranges of network addresses. Thereafter, at (2), global access point 106A transmits an advertisement (e.g., a BGP advertisement) for the first network group to network 104D, rather than offering all global network addresses to both networks 104D and E . Similarly, at (3), global access point 106A transmits an advertisement (e.g., a BGP advertisement) for the second network group to network 104E. In this manner, traffic addressed to addresses within the first network group is likely to arrive at access point 106A via network 104D and traffic addressed to addresses within the second network group is likely to arrive at access point 106A via network 104E. Each service can be associated with global network addresses from at least two groups. Thus, if failures or problems occur in either network 104D or E, a client device 102 can use an alternative global network address of a service to access global access point 106A over the remaining network.

Unter Bezugnahme auf 6 werden veranschaulichende Interaktionen für den Betrieb eines globalen Zugriffspunkts 106 beschrieben, um die Kommunikation zwischen einer Client-Vorrichtung 102 und einem Rechenzentrum 110 zu erleichtern, das Endpunkte 202 für einen über das Netzwerk zugänglichen Dienst bereitstellt. Die Interaktionen in 6 beginnen bei (1), wo eine Client-Vorrichtung 102 ein Datenpaket an den globalen Zugriffspunkt 106A überträgt, das an eine globale Netzwerkadresse adressiert ist, die dem globalen Zugriffspunkt 106A zugeordnet ist. Das Datenpaket kann beispielsweise gemäß dem Transmission Control Protocol (TCP), dem User Datagram Protocol (UDP) oder dem Internet Control Message Protocol (ICMP) formatiert sein. Das Datenpaket kann über das Netzwerk 104 übertragen und über den Betrieb des Netzwerks 104 zu dem globalen Zugriffspunkt 106A geroutet werden, auf Grundlage von Angeboten des globalen Zugriffspunkts 106A, die angeben, dass die globale Netzwerkadresse, an die das Datenpaket adressiert ist, über den globalen Zugriffspunkt 106A verfügbar ist. Zum Beispiel kann der globale Zugriffspunkt 106A ein (z. B. im Hinblick auf die Netzwerkentfernung) nächster globaler Zugriffspunkt 106 der Client-Vorrichtung 102 sein.With reference to 6 describes illustrative interactions for operating a global access point 106 to facilitate communication between a client device 102 and a data center 110 that provides endpoints 202 for a network accessible service. The interactions in 6 begin at (1) where a client device 102 transmits to global access point 106A a data packet addressed to a global network address associated with global access point 106A. The data packet can be formatted according to the Transmission Control Protocol (TCP), the User Datagram Protocol (UDP) or the Internet Control Message Protocol (ICMP), for example. The data packet may be transmitted over the network 104 and routed to the global access point 106A via the operation of the network 104 based on offers from the global access point 106A indicating that the global network address to which the data packet is addressed is via the global access point 106A is available. For example, global access point 106A may be a closest (e.g., in terms of network distance) global access point 106 to client device 102 .

Beim Empfangen des Datenpakets weist ein Router 302 innerhalb des globalen Zugriffspunkts 106A das Datenpaket einem Datenflussmanager 304 innerhalb des Zugriffspunkts 106 zu. Wenn das Datenpaket keinem bestehenden Datenfluss zugeordnet ist, kann der Router 302 ECMP-Lastausgleich nutzen, um das Datenpaket auf Grundlage der Netzwerkadresse, an die das Datenpaket adressiert ist, einem Datenflussmanager 304 zuzuweisen. Wenn das Datenpaket einem bestehenden Datenfluss zugeordnet ist, kann der Router 302 das Datenpaket zu denselben Datenflussmanager 304 routen, zu dem frühere Datenpakete innerhalb des Datenflusses geroutet wurden.Upon receiving the data packet, a router 302 within the global access point 106A assigns the data packet to a data flow manager 304 within the access point 106. If the data packet is not associated with an existing data flow, the router 302 can use ECMP load balancing to assign the data packet to a data flow manager 304 based on the network address to which the data packet is addressed. If the data packet is associated with an existing data flow, the router 302 can route the data packet to the same data flow manager 304 to which previous data packets within the data flow were routed.

Bei (2) weist der Datenflussmanager 304 innerhalb des Zugriffspunkts 106A das Datenpaket einem Rechenzentrum 110 zu. Wenn das Datenpaket keinem vorhandenen Datenfluss zugeordnet ist, kann der Datenflussmanager 304 einen Lastausgleichsalgorithmus auf das Datenpaket anwenden, um ein Rechenzentrum 110 aus dem Satz verfügbarer Rechenzentren 110 auszuwählen. Wie vorstehend beschrieben, kann der Auswahlalgorithmus beispielsweise das anfängliche Auswählen eines Rechenzentrums 110 beinhalten, das eine Kombination aus Netzwerk- und geografischen Kriterien und einem ausgewählten Verteilungsalgorithmus enthält. Wie vorstehend erläutert, kann der Verteilungsalgorithmus einer Verteilung auf Grundlage von Verteilungskriterien, wie etwa einer prozentualen Zuteilung, entsprechen. Selbst wenn Datenpakete einer Client-Vorrichtung 102 zu einem anderen Zugriffspunkt 106 geroutet werden, können sie auf diese Weise zu demselben Rechenzentrum 110 geroutet werden. Wenn das Datenpaket einem bestehenden Datenfluss zugeordnet ist, kann der Datenflussmanager 304 das Datenpaket zu demselben Rechenzentrum 110 routen, zu dem frühere Datenpakete innerhalb des Datenflusses geroutet wurden.At (2), the data flow manager 304 within the access point 106A allocates the data packet to a data center 110 . If the data packet is not associated with an existing data flow, the data flow manager 304 may apply a load balancing algorithm to the data packet to select a data center 110 from the set of available data centers 110 . For example, as described above, the selection algorithm may include initially selecting a data center 110 that includes a combination of network and geographic criteria and a selected distribution algorithm. As discussed above, the distribution algorithm may correspond to distribution based on distribution criteria, such as percentage allocation. In this way, even if data packets of a client device 102 are routed to a different access point 106, they can be routed to the same data center 110. If the data packet is associated with an existing data flow, the data flow manager 304 can route the data packet to the same data center 110 to which previous data packets within the data flow were routed.

Nach dem Auswählen eines Rechenzentrums 110 kann der Datenflussmanager 304 einen Endpunkt 202 innerhalb des ausgewählten Rechenzentrums 120 auswählen. Der Datenflussmanager 304 kann veranschaulichend für ein gegebenes Rechenzentrum 110 einen Satz von Endpunkten 202 verwalten, die einen über das Netzwerk zugänglichen Dienst bereitstellen, der der globalen Netzadresse zugeordnet ist, an die das Datenpaket adressiert wurde. In einer Ausführungsform kann dieser Satz von Endpunkten 202 auf Grundlage von Informationen identifiziert werden, die von einem Ressourcenmanager 206 innerhalb des Rechenzentrums 110 empfangen werden. Der Datenflussmanager 304 kann ferner Informationen bezüglich des scheinbaren Zustands der Endpunkte 202 verwalten, wie er von einer Zustandsprüfungsvorrichtung 204 innerhalb des Rechenzentrums 110, einer Zustandsprüfungsvorrichtung 306 innerhalb des Zugriffspunkts 106A oder beiden erhalten wird. Der Datenflussmanager 304 kann somit aus einem Satz von Endpunkten 202 einen fehlerfreien Endpunkt für den Dienst auswählen, der der Netzwerkadresse zugeordnet ist, an die ein Datenpaket adressiert wurde. Der Datenflussmanager 304 kann einen beliebigen einer Reihe bekannter Lastausgleichsalgorithmen nutzen, wie etwa konsistentes Hashing, um Datenpakete zwischen Endpunkten 202 zu verteilen. Genauer gesagt kann, wie vorstehend beschrieben, der Datenflussmanager 304 in einer Ausführungsform einen gewichteten Rendezvous-Hashing- oder gewichteten konsistenten Hashing-Algorithmus auf Grundlage der 5-Tupel-Informationen des Datenpakets implementieren. Der Datenflussmanager 304 kann dann Endpunkte 202 auf Grundlage eines Endpunkts mit der „höchsten“ Bewertung auswählen, um eine konsistente Auswahl für den vollständigen Datenfluss zu ermöglichen. Wenn ein Datenpaket einem bestehenden Datenpaketfluss zugeordnet ist, kann der Datenflussmanager 304 denselben Endpunkt 202 auswählen, zu dem frühere Datenpakete in dem Datenfluss geroutet wurden.After selecting a data center 110 , the data flow manager 304 may select an endpoint 202 within the selected data center 120 . Illustratively for a given data center 110, data flow manager 304 may manage a set of endpoints 202 that provide a network accessible service associated with the global network address to which the data packet was addressed. In one embodiment, this set of endpoints 202 may be identified based on information received from a resource manager 206 within data center 110 . Data flow manager 304 may also maintain information regarding the apparent state of endpoints 202 as obtained from a health checker 204 within data center 110, a health checker 306 within access point 106A, or both. The data flow manager 304 can thus select from a set of endpoints 202 an error-free endpoint for the service that is associated with the network address to which a data packet was addressed. The data flow manager 304 can be any of a number of known ones Use load balancing algorithms, such as consistent hashing, to distribute data packets between endpoints 202. More specifically, as described above, in one embodiment, the data flow manager 304 may implement a weighted rendezvous hashing or weighted consistent hashing algorithm based on the 5-tuple information of the data packet. The data flow manager 304 can then select endpoints 202 based on an endpoint with the "highest" rating to enable consistent selection for the entire data flow. When a data packet is associated with an existing data packet flow, the data flow manager 304 may select the same endpoint 202 to which previous data packets in the data flow were routed.

Nach dem Auswählen eines Endpunkts modifiziert der Datenflussmanager 304 innerhalb des Zugriffspunkts 106A das Datenpaket nach Bedarf, um das Datenpaket zu dem ausgewählten Endpunkt 202 zu routen. Insbesondere wendet der Datenflussmanager 304 in der Ausführungsform der 6 bei (5) NAT-Techniken auf das Datenpaket an, beispielsweise durch Ersetzen von Quell- und Zielnetzadressen des Datenpakets. Danach überträgt der Datenflussmanager 304 bei (6) das Datenpaket an den ausgewählten Endpunkt 202 innerhalb des ausgewählten Rechenzentrums 110.After selecting an endpoint, data flow manager 304 within access point 106A modifies the data packet as necessary to route the data packet to the selected endpoint 202. In particular, in the embodiment of FIG 6 in (5) NAT techniques to the data packet, for example by replacing source and destination network addresses of the data packet. Thereafter, at (6), the data flow manager 304 transmits the data packet to the selected endpoint 202 within the selected data center 110.

Bei (7) verarbeitet der Endpunkt 202 das Datenpaket gemäß dem über das Netzwerk zugänglichen Dienst. Wie beschrieben, können die Rechenzentren 110 Netzwerkausrüstung implementieren, wie etwa Top-of-Rack, die Datenpaketverkehr Endpunkten auf Grundlage von zugeteilten Teilabschnitten oder Geflechten zuteilen kann. Genauer gesagt kann der TOR in einem Aspekt 5-Tupel-Informationen nutzen, die in der Kommunikation beinhaltet sind, um Datenpakete auf Grundlage von Zuteilungsteilabschnitten zu routen. Darüber hinaus können die Kommunikationen gekapselt werden, beispielsweise in VLAN, um weitere Sicherheit bereitzustellen. Im Falle einer Fehlfunktion können die einer Gruppierung zugeordneten Netzwerkendpunkte 202 Nachrichten einer MTU-Pfaderkennung („PMTUD“) an andere Endpunkte innerhalb einer zugeteilten Teilgruppe oder eines zugeteilten Teilabschnitts aussenden, um Statusinformationen zu erhalten oder zu bestimmen, welche Teilabschnitte Dienstanfragen verarbeiten werden, um doppelte Verarbeitung/Zuweisung zu vermeiden. Dadurch können Endpunkte schnell Informationen empfangen und doppelte Verarbeitung vermeiden. Der Endpunkt 202 gibt dann ein Antwortpaket an den globalen Zugriffspunkt 106A zurück. Da das Antwortpaket einem bestehenden Datenfluss zugeordnet ist, leitet der Router 302 innerhalb des Zugriffspunkts 106A das Antwortpaket zu demselben Datenflussmanager 304, wie vorstehend erörtert. Der Datenflussmanager 304 kehrt die vorherige NAT-Transformation um, um das Datenpaket an die Client-Vorrichtung 102 zu adressieren. Der Datenflussmanager 304 gibt dann das Datenpaket an den Client 102 zurück. Über die Interaktionen der 6 kann eine Client-Vorrichtung 102 ein Datenpaket an eine globale Netzwerkadresse adressieren und (über einen globalen Zugriffspunkt 106) zu einem Endpunkt geroutet werden, der einen über das Netzwerk zugänglichen Dienst in Bezug auf die Netzwerkadresse bereitstellt. Der Zugriffspunkt 106 kann einen Lastausgleich auf Datenpakete anwenden, sodass die Last des Dienstes gemäß einer gewünschten Konfiguration eines Dienstanbieters auf die Rechenzentren 110 verteilt wird.At (7), the endpoint 202 processes the data packet according to the network accessible service. As described, data centers 110 may implement network equipment, such as top-of-rack, that may allocate data packet traffic to endpoints based on allocated hops or braids. More specifically, in one aspect, the TOR may use 5-tuple information included in the communication to route data packets based on arbitration slices. In addition, the communications can be encapsulated, for example in VLAN, to provide further security. In the event of a malfunction, the network endpoints 202 associated with a cluster may send MTU Path Identifier (“PMTUD”) messages to other endpoints within an allocated subset or subsection to obtain status information or to determine which subsections will process service requests to duplicate to avoid processing/assignment. This allows endpoints to quickly receive information and avoid double processing. Endpoint 202 then returns a response packet to global access point 106A. Because the response packet is associated with an existing data flow, router 302 within access point 106A routes the response packet to the same data flow manager 304 as discussed above. The data flow manager 304 reverses the previous NAT transformation to address the data packet to the client device 102 . The data flow manager 304 then returns the data packet to the client 102. About the interactions of 6 For example, a client device 102 may address a data packet to a global network address and be routed (via a global access point 106) to an endpoint that provides a network accessible service related to the network address. The access point 106 may apply load balancing to data packets so that the load of the service is distributed among the data centers 110 according to a desired configuration of a service provider.

Unter Bezugnahme auf 7 wird eine beispielhafte Routine 700 zum Erhöhen der Resilienz globaler Netzwerkadressen durch Auswählen von Angeboten von Adressen an unterschiedliche benachbarte Vorrichtungen beschrieben. Die Routine 700 kann veranschaulichend durch einen globalen Zugriffspunkt 106 implementiert werden (z. B. während der Initialisierung des Zugriffspunkts 106). In einer Ausführungsform wird eine Instanz der Routine 700 durch jeden Zugriffspunkt 106 implementiert.With reference to 7 An example routine 700 for increasing resiliency of global network addresses by selecting offers of addresses to different neighboring devices is described. Routine 700 may illustratively be implemented by a global access point 106 (e.g., during access point 106 initialization). In one embodiment, an instance of routine 700 is implemented by each access point 106 .

Die Routine 700 beginnt bei Block 704, wo über den Zugriffspunkt 106 zu bedienende globale Netzwerkadressen erhalten werden. Diese Informationen können veranschaulichend als Teil einer Konfiguration des Zugriffspunkts 106 erhalten werden, wie etwa innerhalb einer Konfigurationsdatei, die in einem Konfigurationsdatenspeicher 210 gespeichert ist und während der Initialisierung des Zugriffspunkts 106 erhalten wird. Die globalen Netzwerkadressen können veranschaulichend in der Konfiguration in unterschiedliche Adressierungspools unterteilt sein. Jeder Pool kann beispielsweise einen anderen „Block“ von Netzwerkadressen beinhalten, wie etwa einen zusammenhängenden Adressbereich. Die Bereiche können beispielsweise „Teilnetze“ darstellen. In einer Ausführungsform werden Bereiche durch ein „Präfix“ dargestellt, das die ersten n Bits von Netzwerkadressen in dem Bereich bezeichnet. Zum Beispiel kann das Präfix 192.0.2.0/24 (ausgedrückt in Classless Inter-Domain Routing oder CIDR) die ersten 24 Bit einer IPv4-Adresse darstellen, die Adressen im Bereich von 192.0.2.0 bis 192.0.2.255 entspricht.Routine 700 begins at block 704 where global network addresses to be serviced via access point 106 are obtained. This information may illustratively be obtained as part of an access point 106 configuration, such as within a configuration file stored in a configuration data store 210 and obtained during access point 106 initialization. The global network addresses can illustratively be divided into different addressing pools in the configuration. For example, each pool may contain a different "block" of network addresses, such as a contiguous range of addresses. For example, the areas can represent “subnets”. In one embodiment, ranges are represented by a "prefix" denoting the first n bits of network addresses in the range. For example, the prefix 192.0.2.0/24 (expressed in Classless Inter-Domain Routing or CIDR) can represent the first 24 bits of an IPv4 address, which corresponds to addresses in the range 192.0.2.0 to 192.0.2.255.

Bei Block 708 wählt der Zugriffspunkt 106 benachbarte Vorrichtungen aus, denen jeder Pool von Netzwerkadressen angeboten werden soll. Im Allgemeinen können die verfügbaren Pools auf verfügbare benachbarte Vorrichtungen aufgeteilt sein, um unterschiedliche Netzwerkpfade bereitzustellen, von denen aus der Zugriffspunkt erreicht wird. In einer Ausführungsform basiert eine solche Auswahl auf einer Spezifikation innerhalb der Konfiguration des Zugriffspunkts 106. In einer weiteren Ausführungsform wird eine solche Auswahl durch den Zugriffspunkt 106 bestimmt. Zur Veranschaulichung kann der Zugriffspunkt 106 die Pools gleichmäßig auf verfügbare benachbarte Vorrichtungen aufteilen (die z. B. durch typische Routing-Protokolle gefunden werden können). In einigen Fällen können benachbarte Vorrichtungen zusätzlich auf Grundlage eines bevorzugten Routens des Datenverkehrs bestimmt werden. Zum Beispiel kann ein Zugriffspunkt 106 dazu konfiguriert sein, einen gegebenen Netzwerkadresspool auf einer gegebenen benachbarten Vorrichtung nicht anzubieten, um diese benachbarte Vorrichtung zu veranlassen, Anfragen nach Adressen innerhalb des Pools zu einem alternativen Zugriffspunkt 106 zu routen.At block 708, access point 106 selects neighboring devices to be offered each pool of network addresses. In general, the available pools can be divided among available neighboring devices to provide different network paths from which to reach the access point. In one embodiment, such a selection is based on a specific tion within the configuration of the access point 106. In another embodiment, such a selection is determined by the access point 106. To illustrate, the access point 106 can divide the pools evenly among available neighboring devices (e.g., which can be found through typical routing protocols). In some cases, neighboring devices may additionally be determined based on a preferred routing of the traffic. For example, an access point 106 may be configured not to advertise a given pool of network addresses on a given neighboring device to cause that neighboring device to route requests for addresses within the pool to an alternative access point 106 .

Danach überträgt der globale Zugriffspunkt 106 bei Block 710 Verfügbarkeitsankündigungen für die jeweiligen Pools von Netzwerkadressen an die relevanten benachbarten Vorrichtungen. Die Ankündigungen können beispielsweise BGP-Protokollankündigungen sein. Die Übertragung von BGP-Protokollankündigungen ist im Fach allgemein bekannt und wird daher in dieser Schrift nicht im Detail beschrieben.Thereafter, at block 710, the global access point 106 transmits availability advertisements for the respective pools of network addresses to the relevant neighboring devices. The advertisements may be BGP protocol advertisements, for example. The transmission of BGP protocol advertisements is well known in the art and is therefore not described in detail in this document.

Wie vorstehend beschrieben, kann die Aufteilung der globalen Netzwerkadresse in Pools und die Ankündigung solcher Pools an unterschiedliche benachbarte Vorrichtungen die Resilienz der Zugriffspunkte 106 vorteilhaft erhöhen, insbesondere gegenüber Ausfällen oder Fehlern in benachbarten Netzwerken. Insbesondere da jeder über das Netzwerk zugängliche Dienst globalen Netzwerkadressen unterschiedlicher Pools zugeordnet sein kann (z. B. eine für jeden Pool), können Client-Vorrichtungen 102 eines Dienstes (z. B. über DNS) auf mehrere Routen zum Erreichen des Dienstes aufmerksam gemacht werden. Diese Technik kann die Resilienz der Zugriffspunkte 106 gegenüber begrenzten Ausfällen an den Zugriffspunkten 106 weiter erhöhen, wie etwa Ausfälle einer Netzwerkschnittstelle oder eines Routers, der mit einem benachbarten Netzwerk verbunden ist. Wie vorstehend angemerkt, wird in einer Ausführungsform die Resilienz jedes Dienstes weiter erhöht, indem jeder Pool in Teilmengen von Netzwerkadressen unterteilt wird, die wiederum auf die Datenflussmanager 304 eines Zugriffspunkts 106 verteilt werden können. Die Zuordnungen zwischen Diensten und jeder Teilmenge können zwischen Pools „umgeordnet“ werden. Zum Beispiel kann die globale Netzwerkadresse für einen Dienst in einem gegebenen Pool zufällig ausgewählt werden oder kann über einen variierten Auswahlmechanismus für jeden Pool ausgewählt werden. Dies kann dazu führen, dass die Gruppierungen von Diensten innerhalb von Teilmengen zwischen den Pools „ungeordnet“ werden. Wenn auf diese Weise die Konfiguration eines einzelnen Dienstes für andere Dienste innerhalb der Teilmenge problematisch ist, ist es wahrscheinlich, dass die anderen Dienste, die von dieser Fehlkonfiguration betroffen sind, zwischen den Pools variieren. Da erwartet werden kann, dass auf jeden Dienst über Adressen in mehreren Pools zugegriffen werden kann, können sich Client-Vorrichtungen 102 mit jedem anderen Dienst über eine alternative Adresse eines alternativen Pools verbinden, wodurch die problematische Teilmenge und der problematische Pool umgangen werden. Dieser Umordnungsmechanismus kann daher die Resilienz von Diensten unter Verwendung globaler Netzwerkadressen stark erhöhen.As described above, dividing the global network address into pools and advertising such pools to different neighboring devices may advantageously increase the resilience of the access points 106, particularly to failures or failures in neighboring networks. In particular, since each network-accessible service may be associated with different pools of global network addresses (e.g., one for each pool), client devices 102 of a service may be made aware (e.g., via DNS) of multiple routes to reach the service will. This technique may further increase the resilience of the access points 106 to limited failures at the access points 106, such as failures of a network interface or a router connected to a neighboring network. As noted above, in one embodiment, the resilience of each service is further increased by dividing each pool into subsets of network addresses, which in turn may be distributed among data flow managers 304 of an access point 106 . The associations between services and each subset can be "reordered" between pools. For example, the global network address for a service in a given pool can be chosen at random or can be chosen via a varied selection mechanism for each pool. This can result in the groupings of services becoming "disorganized" within subsets between the pools. In this way, if a single service's configuration is problematic for other services within the subset, it is likely that the other services affected by that misconfiguration will vary between pools. Because each service can be expected to be accessible through addresses in multiple pools, client devices 102 can connect to any other service through an alternate address of an alternate pool, thereby bypassing the problematic subset and pool. This reordering mechanism can therefore greatly increase the resilience of services using global network addresses.

Unter Bezugnahme auf 8 wird eine veranschaulichende Routine 800 zum Routen von Datenverkehr beschrieben, der an eine globale Netzwerkadresse adressiert ist, die einem Dienst zugeordnet ist, der durch die Endpunkte 202 innerhalb der Rechenzentren 110 bereitgestellt wird. Die Routine 800 kann veranschaulichend durch einen Datenflussmanager 304 in einem Zugriffspunkt 106 implementiert werden. In einer Ausführungsform wird eine Instanz der Routine 800 durch jeden Datenflussmanager 304 jedes Zugriffspunkts 106 implementiert.With reference to 8th An illustrative routine 800 for routing traffic addressed to a global network address associated with a service provided by endpoints 202 within data centers 110 is described. The routine 800 may illustratively be implemented by a data flow manager 304 in an access point 106 . In one embodiment, an instance of routine 800 is implemented by each data flow manager 304 of each access point 106 .

Die Routine 800 beginnt bei Block 802, wobei der Datenflussmanager 304 ein Datenpaket empfängt, das an globale Netzwerkadressen adressiert ist, die als am Zugriffspunkt 106 zugänglich angeboten werden. Das Datenpaket kann beispielsweise eine Anfrage zum Zugriff auf einen über die Netzwerkadresse bereitgestellten über das Netzwerk zugänglichen Dienst darstellen. In einem Beispiel ist das Datenpaket als TCP- oder UDP-Datenpaket formatiert.Routine 800 begins at block 802 with data flow manager 304 receiving a data packet addressed to global network addresses advertised as accessible at access point 106 . The data packet can, for example, represent a request for access to a service that is provided via the network address and is accessible via the network. In an example, the data packet is formatted as a TCP or UDP data packet.

Bei Block 803 variiert die Routine 800 je nachdem, ob das Datenpaket einem bestehenden Datenpaketfluss zugeordnet ist, wie bei Block 803 bestimmt. Veranschaulichend kann der Zugriffspunkt 106 Attribute des Datenpakets mit Attributen früherer Datenpakete vergleichen, um zu bestimmen, ob sich das neue Datenpaket innerhalb desselben Kommunikationsflusses wie ein früheres Datenpaket befindet. Eine beliebige Anzahl von Datenflussidentifizierungstechniken, von denen eine Vielzahl im Fach bekannt ist, kann verwendet werden, um zu bestimmen, ob sich ein Datenpaket in einem bestehenden Datenfluss befindet.At block 803, the routine 800 varies depending on whether the data packet is associated with an existing data packet flow, as determined at block 803. Illustratively, the access point 106 can compare attributes of the data packet to attributes of previous data packets to determine whether the new data packet is within the same communication flow as a previous data packet. Any number of data flow identification techniques, a variety of which are known in the art, can be used to determine whether a data packet is in an existing data flow.

Wenn das Datenpaket Teil eines bestehenden Datenflusses ist, fährt die Routine 800 mit Block 813 fort, wo der Datenflussmanager 304 als Endpunkt 202 für das Datenpaket denselben Endpunkt 202 auswählt, der für vorherige Datenpakete innerhalb des Datenflusses ausgewählt wurde. In einer Ausführungsform kann jeder Datenflussmanager 304 einen Cache im Speicher verwalten, der Datenflüsse den Endpunkten 202 zuordnet, was diese Auswahl erleichtert.If the data packet is part of an existing data flow, the routine 800 proceeds to block 813 where the data flow manager 304 selects as the endpoint 202 for the data packet the same endpoint 202 selected for previous data packets within the data flow. In one embodiment, can each data flow manager 304 maintains a cache in memory that maps data flows to endpoints 202, facilitating this selection.

Wenn das Datenpaket nicht Teil eines bestehenden Datenflusses ist, fährt die Routine 800 mit Block 804 fort, wo der Datenflussmanager 304 den über das Netzwerk zugänglichen Dienst identifiziert, der der Netzwerkadresse zugeordnet ist, an die das Datenpaket adressiert ist. Der Datenflussmanager 304 kann veranschaulichend auf Informationen zugreifen, die Netzwerkadressen zugeordneten Diensten zuordnen (z. B. wie im Speicher des Zugriffspunkts 106 verwaltet), um den der Adresse zugeordneten Dienst zu identifizieren.If the data packet is not part of an existing data flow, the routine 800 proceeds to block 804 where the data flow manager 304 identifies the network accessible service associated with the network address to which the data packet is addressed. Illustratively, data flow manager 304 may access information associating network addresses with associated services (e.g., as maintained in access point 106 memory) to identify the service associated with the address.

Danach wählt der Zugriffspunkt 106 bei Block 806 ein Rechenzentrum 110 aus, das den über das Netzwerk zugänglichen Dienst bereitstellt. In einer Ausführungsform wird das Rechenzentrum 110 zumindest teilweise auf Grundlage von geografischen und Netzwerkleistungskriterien zwischen dem Zugriffspunkt 106 und dem Rechenzentrum 110 sowie einem Lastverteilungsalgorithmus für den über das Netzwerk zugänglichen Dienst ausgewählt. Darüber hinaus kann in einer Ausführungsform das Schwellenwunschmaximum beispielsweise durch einen Dienstanbieter festgelegt werden, wie etwa über einen gewünschten Prozentsatz des Datenverkehrs, der zu jedem Rechenzentrum 110 geroutet werden soll. In einer weiteren Ausführungsform kann das Schwellenwunschmaximum gemeinsam durch mehrere Zugriffspunkte 106 bestimmt werden, sodass die kombinierten Schwellenwerte jedes Zugriffspunkts 106 die gewünschte Aufteilung eines Dienstanbieters zwischen den Rechenzentren 110 erzielen. Zum Beispiel können die Zugriffspunkte 106 einen Auswahlalgorithmus implementieren, der Datenverkehrsvolumen zu einem Dienst über die Zugriffspunkte 106 hinweg aggregiert und ein optimales Routing für jedes Datenpaket auf Grundlage des Zugriffspunkts 106, an den das Datenpaket adressiert wurde (und entsprechender Netzwerkleistungskriterien für jedes Rechenzentrum 110), bestimmt. Der Algorithmus kann dann das optimale Routing für jeden Zugriffspunkt 106 nach Bedarf modifizieren, um ein global optimiertes Routing zu implementieren, was zu einem individualisierten gewünschten Verhältnis zwischen den Rechenzentren 110 für jeden Zugriffspunkt 106 führt. Wenn dies der Fall ist, kann der Zugriffspunkt die anfängliche Auswahl auf ein alternatives Rechenzentrum, wie etwa ein nächstgelegenes Rechenzentrum, ändern. In einer Ausführungsform wiederholt sich die Implementierung von Block 806 für jedes ausgewählte Rechenzentrum 110, um sicherzustellen, dass kein Rechenzentrum mehr als einen gewünschten maximalen Anteil oder ein gewünschtes maximales Volumen an Datenpaketen empfängt.Thereafter, at block 806, the access point 106 selects a data center 110 that will provide the network accessible service. In one embodiment, data center 110 is selected based at least in part on geographic and network performance criteria between access point 106 and data center 110, and a load balancing algorithm for the network accessible service. Additionally, in one embodiment, the maximum desired threshold may be specified by a service provider, such as a desired percentage of traffic to be routed to each data center 110 . In another embodiment, the maximum desired threshold may be determined collectively by multiple access points 106 such that the combined thresholds of each access point 106 achieve the desired allocation of a service provider between data centers 110 . For example, access points 106 may implement a selection algorithm that aggregates traffic volumes into a service across access points 106 and optimally routes each data packet based on the access point 106 to which the data packet was addressed (and corresponding network performance criteria for each data center 110), definitely. The algorithm can then modify the optimal routing for each access point 106 as needed to implement a globally optimized routing, resulting in an individualized desired ratio between the data centers 110 for each access point 106. If so, the access point can change the initial selection to an alternative data center, such as a closest data center. In one embodiment, the implementation of block 806 repeats for each selected data center 110 to ensure that no data center receives more than a desired maximum fraction or volume of data packets.

Nach dem Auswählen eines Rechenzentrums 110 wählt der Datenflussmanager 304 einen Endpunkt 202 innerhalb des Rechenzentrums 110 aus, zu dem das Datenpaket zu routen ist. In einer Ausführungsform kann der Datenflussmanager 304 konsistentes Hashing nutzen, um einen Endpunkt 202 auf Grundlage eines Attributs des Datenpakets (z. B. Quell-IP-Adresse) auszuwählen. Wie vorstehend beschrieben, kann der Datenflussmanager 304 in einer Ausführungsform einen gewichteten Rendezvous-Hashing- oder gewichteten konsistenten Hashing-Algorithmus auf Grundlage der 5-Tupel-Informationen des Datenpakets implementieren. Der Datenflussmanager 304 kann dann Endpunkte 202 auf Grundlage eines Endpunkts mit der „höchsten“ Bewertung auswählen, um eine konsistente Auswahl für den vollständigen Datenfluss zu ermöglichen.After selecting a data center 110, the data flow manager 304 selects an endpoint 202 within the data center 110 to which the data packet is to be routed. In one embodiment, data flow manager 304 may use consistent hashing to select an endpoint 202 based on an attribute of the data packet (e.g., source IP address). As described above, in one embodiment, the data flow manager 304 may implement a weighted rendezvous hashing or weighted consistent hashing algorithm based on the 5-tuple information of the data packet. The data flow manager 304 can then select endpoints 202 based on an endpoint with the "highest" rating to enable consistent selection for the entire data flow.

Danach wendet der Datenflussmanager 304 bei Block 810 NAT auf das Datenpaket an. Veranschaulichend kann der Datenflussmanager 304 eine Quelladresse des Datenpakets durch eine Adresse des globalen Zugriffspunkts 106 (z. B. eine Unicast-Adresse im Gegensatz zu einer globalen Netzwerkadresse) ersetzen und eine Zieladresse durch eine Adresse des Endpunkt 202 (die ebenfalls eine Unicast-Adresse des Endpunkts 202 sein kann) ersetzen. Der Datenflussmanager 304 kann beispielsweise auch eine Portnummer des Datenpakets modifizieren, um eine spätere Anwendung von NAT-Techniken auf Datenpakete innerhalb des Datenflusses zu erleichtern. Der Datenflussmanager 304 kann dann das Datenpaket an den ausgewählten Endpunkt 202 übertragen. Die Routine 800 kann dann bei Block 814 enden.Thereafter, at block 810, the data flow manager 304 applies NAT to the data packet. Illustratively, data flow manager 304 may replace a source address of the data packet with a global access point 106 address (e.g., a unicast address as opposed to a global network address) and a destination address with an endpoint 202 address (which is also a unicast address of the may be endpoint 202). The data flow manager 304 can also, for example, modify a port number of the data packet to facilitate later application of NAT techniques to data packets within the data flow. The data flow manager 304 can then transmit the data packet to the selected endpoint 202. The routine 800 may then end at block 814.

In dieser Schrift werden verschiedene Modifikationen der Routine 800 in Betracht gezogen. Während die Routine 800 beispielsweise drei Blöcke beinhaltet, die sich auf die Auswahl eines Endpunkts 202 für Datenpakete beziehen, die keinem bestehenden Datenfluss zugeordnet sind (Blöcke 804, 806 oder 808), können einige Implementierungen der Routine 800 einen oder mehrere dieser Blöcke ausschließen. Anstatt einen Dienst und Rechenzentren, die sich auf diesen Dienst beziehen, separat zu identifizieren, kann ein Datenflussmanager 304 veranschaulichend eine Datenzuordnung einer Netzwerkadresse zu den Rechenzentren 110 und den Endpunkten 202, die der Adresse zugeordnet sind, verwalten. Der Datenflussmanager 304 kann dann ein Rechenzentrum 110 auf Grundlage der vorstehend beschriebenen Kriterien auswählen, ohne dass der der Adresse zugeordnete Dienst direkt identifiziert werden muss. In anderen Ausführungsformen kann der Datenflussmanager 304 nur Daten verwalten, die Netzwerkadressen entsprechenden Endpunkten 202 zuordnen, und kann einen Endpunkt 202 für ein Datenpaket direkt auswählen, ohne zuerst den der Adresse zugeordneten Dienst oder ein den Dienst bereitstellendes Rechenzentrum 110 zu identifizieren. Zum Beispiel kann jeder Endpunkt 202 auf ähnliche Weise wie die vorstehend beschriebenen Rechenzentren 110 ausgewählt werden, indem ein Endpunkt 202 mit einem besten Leistungskriteriumswert ausgewählt wird und diese Auswahl modifiziert wird, wenn der Endpunkt 202 mehr als einen gewünschten Anteil des Datenvolumens empfängt. Außerdem kann, während die Routine 800 in 8 als bei Block 814 endend gezeigt ist, ein Datenflussmanager 304 im Anschluss an die Routine 800 weitere Aktionen durchführen, wie etwa als NAT-Vorrichtung für die Kommunikation zwischen Client-Vorrichtungen 102 und Endpunkten 202 fungieren. Somit ist die Darstellung der Routine 800 in 8 eine Ausführungsform der in dieser Schrift offenbarten Konzepte.Various modifications of routine 800 are contemplated throughout this document. For example, while routine 800 includes three blocks related to selecting an endpoint 202 for data packets not associated with an existing data flow (blocks 804, 806, or 808), some implementations of routine 800 may exclude one or more of these blocks. Illustratively, rather than separately identifying a service and data centers related to that service, a data flow manager 304 may maintain a data association of a network address with the data centers 110 and endpoints 202 associated with the address. The data flow manager 304 can then select a data center 110 based on the criteria described above without having to directly identify the service associated with the address. In other embodiments, data flow manager 304 may only manage data corresponding to end network addresses points 202, and can directly select an endpoint 202 for a data packet without first identifying the service associated with the address or a data center 110 providing the service. For example, each endpoint 202 may be selected in a manner similar to the data centers 110 described above by selecting an endpoint 202 with a best performance criteria value and modifying that selection if the endpoint 202 receives more than a desired fraction of the data volume. Also, while the routine is 800 in 8th as shown ending at block 814 , a data flow manager 304 may perform other actions subsequent to routine 800 , such as acting as a NAT device for communication between client devices 102 and endpoints 202 . Thus, the representation of routine 800 is in 8th an embodiment of the concepts disclosed herein.

Unter Bezugnahme auf 9 wird eine beispielhafte Routine 900 zum Auswählen eines Rechenzentrums 110 an den globalen Zugriffspunkten 106 beschrieben, die einen über das Netzwerk zugänglichen Dienst bereitstellen. Die Routine 900 kann zur Veranschaulichung durch einen Datenflussmanager 304 in einem globalen Zugriffspunkt implementiert sein. In einer Ausführungsform ist eine Instanz der Routine 900 durch jeden Ressourcenmanager 206 jedes Rechenzentrums implementiert.With reference to 9 an example routine 900 for selecting a data center 110 at the global access points 106 that provide a network accessible service is described. The routine 900 may be implemented by a data flow manager 304 in a global access point, for illustration. In one embodiment, an instance of routine 900 is implemented by each resource manager 206 of each data center.

Die Routine 900 beginnt bei Block 902, wo der Datenflussmanager 304 eines Rechenzentrums 110A Routing-Konfigurationsinformationen erhält. Veranschaulichend können die Routing-Konfigurationsinformationen die Zuteilung oder Verteilung von Regionen/Teilregionen beinhalten. Bei Block 904 bestimmt der Datenflussmanager die geografische Nähe oder andere Leistungskriterien. Veranschaulichend kann die Verteilung als Prozentsatz des Datenverkehrs, Gesamtzahl von Datenpaketen (z. B. Gesamtdatenmenge, Kosten, die einzelnen Endpunkten zugeteilt oder in Rechnung gestellt werden, und dergleichen) festgelegt sein. Ein Systemadministrator kann veranschaulichend ein Softwaretool oder eine Schnittstelle (z. B. eine API) nutzen, um Zuteilungen bereitzustellen, wie in dieser Schrift in verschiedenen Beispielen beschrieben wird.The routine 900 begins at block 902 where the data flow manager 304 of a data center 110A obtains routing configuration information. Illustratively, the routing configuration information may include allocation or distribution of regions/sub-regions. At block 904, the data flow manager determines geographic proximity or other performance criteria. Illustratively, the distribution may be specified as a percentage of traffic, total number of data packets (e.g., total amount of data, cost allocated or billed to individual endpoints, and the like). A system administrator may illustratively use a software tool or interface (e.g., an API) to provide allocations, as described in various examples herein.

Bei Block 906 bildet der Datenflussmanager den Berücksichtigungssatz auf Grundlage eines Produkts aus geografischer Nähe und Konfiguration. Wie vorstehend beschrieben kann der Datenflussmanager 304 einen Algorithmus implementieren, wie etwa einen Münzwurf-Algorithmus, um die prozentualen Auswahlen zu implementieren. Der Algorithmus kann auch zusätzliche Faktoren wie geografische oder Netzwerkkriterien berücksichtigen. Bei Entscheidungsblock 908 wird ein Test durchgeführt, um zu bestimmen, ob eine vollständige Zuteilung vorliegt. Wenn dies der Fall ist, setzt die Routine die Konfiguration bei Block 912 und die Routine endet bei Block 914. Alternativ kann der Datenflussmanager 304 unter Verwendung von Standardprozessen oder einer autolinearen Verarbeitung verarbeiten.At block 906, the data flow manager forms the consideration set based on a product of geographic proximity and configuration. As described above, the data flow manager 304 may implement an algorithm, such as a coin toss algorithm, to implement the percentage selections. The algorithm can also take into account additional factors such as geographic or network criteria. At decision block 908, a test is performed to determine if there is a full allocation. If so, the routine sets the configuration at block 912 and the routine ends at block 914. Alternatively, data flow manager 304 may process using standard processes or autolinear processing.

Unter Bezugnahme auf 10 werden veranschaulichende Interaktionen zum Durchführen einer Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung an einem globalen Zugriffspunkt 106A und zum Übergeben der Sitzung an eine Vorrichtung innerhalb eines Rechenzentrums 110 beschrieben, wodurch die zum Aufbau einer solchen Sitzung erforderliche Zeit reduziert wird. Die Interaktionen in 10 können beispielsweise durch einen Datenflussmanager 304 eines Zugriffspunkts 106 implementiert sein. Die Interaktionen in 10 werden in Bezug auf einen einzelnen Zugriffspunkt 106A und ein Rechenzentrum 110A beschrieben. Jedoch können ähnliche Interaktionen in Bezug auf andere Zugriffspunkte 106 und Rechenzentren 110 möglicherweise gleichzeitig auftreten. Darüber hinaus werden die Interaktionen in 10 in Bezug auf einen bestimmten Typ einer verbindungsorientierten Kommunikationssitzung beschrieben: eine TCP-Sitzung. Ähnliche Interaktionen können in Bezug auf andere verbindungsorientierte Kommunikationssitzungen auftreten. 11 flankiert 10, um den Handshake-Aspekt zu veranschaulichen.With reference to 10 Illustrative interactions for performing an initialization phase of a connection-oriented communication session at a global access point 106A and handing off the session to a device within a data center 110 are described, thereby reducing the time required to establish such a session. The interactions in 10 may be implemented by a data flow manager 304 of an access point 106, for example. The interactions in 10 are described in relation to a single access point 106A and data center 110A. However, similar interactions with respect to other access points 106 and data centers 110 may occur simultaneously. In addition, the interactions in 10 described in relation to a particular type of connection-oriented communication session: a TCP session. Similar interactions can occur with respect to other connection-oriented communication sessions. 11 flanked 10 to illustrate the handshake aspect.

Zusätzlich kann der TCP-Übertragungsdurchsatz durch zwei Überlegungen begrenzt sein, nämlich Beschränkungen auf Grundlage von Überlastung und Beschränkungen auf Grundlage von Datenverarbeitung. Die Überlastungsbeschränkungen in TCP versuchen, die Übertragung so zu verwalten, dass die Kapazität des Netzwerks nicht überschritten wird (Überlastungskontrolle). Die Datenverarbeitungsbeschränkungen in TCP versuchen, die Kapazität des Empfängers zur Verarbeitung von Daten zu verwalten (Datenflusskontrolle). Zur Veranschaulichung enthalten einzelne TCP-Segmente Werte für verschiedene TCP-Einstellungen, die die Konfiguration und Implementierung von Überlastungsbeschränkungen oder Datenverarbeitungsbeschränkungen ermöglichen.In addition, TCP transmission throughput may be limited by two considerations, congestion-based limitations and data-processing-based limitations. The congestion limitations in TCP try to manage the transmission so that it does not exceed the capacity of the network (congestion control). The data processing limitations in TCP attempt to manage the receiver's capacity to process data (data flow control). For illustration, individual TCP segments contain values for various TCP settings that allow congestion limits or data processing limits to be configured and implemented.

Die Interaktionen in 11 beginnen bei (1), wo eine Client-Vorrichtung 102 versucht, eine verbindungsorientierte Kommunikationssitzung mit einem Netzwerkdienst einzuleiten, indem ein TCP-SYN-Datenpaket übertragen wird, das an eine globale Netzwerkadresse des Dienstes adressiert ist. Gemäß den vorstehend beschriebenen Funktionalitäten wird das TCP-SYN-Datenpaket an den globalen Zugriffspunkt 106A übertragen, wie in 11 gezeigt. Das TCP-SYN-Datenpaket beinhaltet veranschaulichend eine Sequenznummer für die Client-Vorrichtung 102. Außerdem implementiert das TCP-Protokoll in einigen Ausführungsformen einen Überlastungsvermeidungsalgorithmus, der eine Konfiguration der Anzahl von Datenpaketen, die weitergeleitet werden, stetig erhöht und die Anzahl von Paketen auf Grundlage des Datendurchsatzes linear erhöht. In TCP können solche Werte die maximale Segmentgröße (maximum segment size - „MMS“) aufweisen. In dieser Ausführungsform kann der globale Zugriffspunkt den zusätzlichen Durchsatz zwischen dem globalen Zugriffspunkt 206 und dem Endpunkt 202 nutzen, indem er den Anfangswert höher setzt. Dies erlaubt eine sofortige Ausnutzung der größeren verfügbaren Bandbreite.The interactions in 11 begin at (1) where a client device 102 attempts to initiate a connection-oriented communication session with a network service by transmitting a TCP SYN data packet addressed to a global network address of the service. In accordance with the functionalities described above, the TCP SYN data packet is sent to the global access point 106A transferred as in 11 shown. The TCP SYN data packet illustratively includes a sequence number for the client device 102. Also, in some embodiments, the TCP protocol implements a congestion avoidance algorithm that steadily increases a configuration of the number of data packets that are forwarded and the number of packets based on of data throughput increased linearly. In TCP, such values can have the maximum segment size (MMS). In this embodiment, the global access point can take advantage of the additional throughput between the global access point 206 and the endpoint 202 by increasing the initial value. This allows immediate use of the greater available bandwidth.

Auf ähnliche Weise kann der globale Zugriffspunkt 206 ferner Datenverarbeitungsbeschränkungen, nämlich maximale Fenstergröße, auf einen größeren Wert oder größten Wert setzen, da der globale Zugriffspunkt 206 eine größere Fähigkeit zur Datenverarbeitung aufweist.Similarly, global access point 206 may also set data processing limitations, namely maximum window size, to a larger value or largest value as global access point 206 has greater data processing capability.

Bei (2) setzt ein Datenflussmanager 304 des globalen Zugriffspunkts 106A den TCP-Dreiwege-Handshake fort, indem er ein TCP-SYN-ACK-Datenpaket an die Client-Vorrichtung 102 zurückgibt, das veranschaulichend eine Sequenznummer für den Zugriffspunkt 106A (sowie das Bestätigen der Sequenznummer 102 der Client-Vorrichtung) beinhaltet. Bei (3) setzt die Client-Vorrichtung 102 den TCP-Dreiwege-Handshake fort, indem sie ein TCP-ACK-Datenpaket an den Zugriffspunkt 106A zurückgibt, wodurch die Sequenznummer des Zugriffspunkts 106A bestätigt wird. Beim Empfang des TCP-ACK-Datenpakets wird eine TCP-Sitzung zwischen der Client-Vorrichtung 102 und dem globalen Zugriffspunkt 106A eingeleitet. Da zu erwarten ist, dass sich der Zugriffspunkt 106A in der Nähe der Client-Vorrichtung 102 befindet (z. B. im Hinblick auf die Latenz), wird erwartet, dass die Interaktionen (1)-(3) relativ zur Durchführung der Initialisierungsphase zwischen der Client-Vorrichtung 102 und einem Endpunkt 202 schnell abgeschlossen sind.At (2), a data flow manager 304 of global access point 106A continues the TCP three-way handshake by returning a TCP SYN-ACK data packet to client device 102, illustratively containing a sequence number for access point 106A (as well as confirming the sequence number 102 of the client device). At (3), the client device 102 continues the TCP three-way handshake by returning a TCP ACK data packet to the access point 106A, thereby confirming the sequence number of the access point 106A. Upon receipt of the TCP ACK data packet, a TCP session is initiated between client device 102 and global access point 106A. Since the access point 106A is expected to be close to the client device 102 (e.g., in terms of latency), it is expected that the interactions (1)-(3) relative to performing the initialization phase between of the client device 102 and an endpoint 202 are completed quickly.

Bei (4) überträgt die Client-Vorrichtung 102 (die versteht, dass die TCP-Sitzung mit dem Dienst initialisiert wurde) ein Datenpaket innerhalb der TCP-Sitzung, das an die globale Netzwerkadresse des Dienstes adressiert ist. Das Datenpaket wird zu dem globalen Zugriffspunkt 106A geroutet, der bei (5) ein Rechenzentrum 110 auswählt, zu dem das Datenpaket geroutet werden soll. Die Auswahl eines Rechenzentrums kann auf die gleiche Weise wie vorstehend beschrieben erfolgen (z. B. als Interaktion (3) in 6). Der Zugriffspunkt 106 kapselt ferner bei (6) das Datenpaket zur Übertragung an das ausgewählte Rechenzentrum 110 (in diesem Fall das Rechenzentrum 110A) über einen Tunnel. In den Interaktionen in 11 wird angenommen, dass der Zugriffspunkt 106A zuvor einen Tunnel zu dem Rechenzentrum 110A (z. B. zu einem Sitzungsübergabemanager 212 des Rechenzentrums 110A) aufgebaut hat. Zum Beispiel kann der Zugriffspunkt 106A einen oder mehrere ungenutzte TCP-Tunnel zu dem Rechenzentrum 110A zur Verwendung beim Übertragen von Datenpaketen an das Rechenzentrum 110 verwalten. Es kann jedoch eine zusätzliche Interaktion beinhaltet sein, bei der der globale Zugriffspunkt 106A einen Tunnel zu dem Rechenzentrum 110A aufbaut (z. B. einen UDP- oder TCP-Tunnel). Um die Übergabe der aufgebauten TCP-Sitzung zu erleichtern, beinhaltet das gekapselte Datenpaket veranschaulichend zudem TCP-Sitzungsstatusinformationen, wie etwa das Fünf-Tupel für die TCP-Sitzung und Sequenznummern der Sitzung. In der beispielhaft in 11 veranschaulichten Ausführungsform sind die Sitzungsstatusinformationen als Header-Informationen für das gekapselte Datenpaket beinhaltet. Bei (7) überträgt der globale Zugriffspunkt 106A das gekapselte Datenpaket an das Rechenzentrum 110A (z. B. an einen Sitzungsübergabemanager 212 innerhalb des Rechenzentrums 110A).At (4), the client device 102 (understanding that the TCP session has been initialized with the service) transmits a data packet within the TCP session addressed to the global network address of the service. The data packet is routed to the global access point 106A, which at (5) selects a data center 110 to which the data packet is to be routed. The selection of a data center can be done in the same way as described above (e.g. as interaction (3) in 6 ). The access point 106 also at (6) encapsulates the data packet for transmission to the selected data center 110 (in this case data center 110A) via a tunnel. In the interactions in 11 For example, assume that access point 106A has previously established a tunnel to data center 110A (e.g., to a session handover manager 212 of data center 110A). For example, access point 106A may maintain one or more idle TCP tunnels to data center 110A for use in transmitting data packets to data center 110. However, an additional interaction may be included where the global access point 106A establishes a tunnel to the data center 110A (e.g., a UDP or TCP tunnel). Illustratively, to facilitate handoff of the established TCP session, the encapsulated data packet also includes TCP session state information, such as the five-tuple for the TCP session and sequence numbers of the session. In the exemplary in 11 In the illustrated embodiment, the session state information is included as header information for the encapsulated data packet. At (7), the global access point 106A transmits the encapsulated data packet to the data center 110A (e.g., to a session delivery manager 212 within the data center 110A).

Bei (8) nimmt die Vorrichtung innerhalb des Rechenzentrums 110A (z. B. der Sitzungsübergabemanager 212 oder in einigen Fällen ein Endpunkt 202) beim Empfangen des gekapselten Datenpakets die TCP-Sitzung an, indem Informationen, die in dem gekapselten Datenpaket angegeben sind (z. B. innerhalb eines Headers) in deren eigene TCP-Sitzungsstatustabelle hinzugefügt werden. Die Vorrichtung entkapselt dann bei (9) das Datenpaket der Client-Vorrichtung 102 und verarbeitet es bei (10), als ob es direkt an der Vorrichtung empfangen worden wäre. Wenn die Vorrichtung beispielsweise ein Endpunkt 202 ist, kann der Endpunkt 202 die Daten des Datenpakets gemäß dem durch die Client-Vorrichtung 102 angeforderten Dienst verarbeiten. Wenn die Vorrichtung ein Sitzungsübergabemanager 212 ist, kann der Manager 212 das Datenpaket verarbeiten, indem er einen Endpunkt 202 identifiziert, um das Datenpaket zu bedienen (z. B. in einer Weise ähnlich der Interaktion (4) in 6), und den Endpunkt 202 nutzen, um das Datenpaket bedienen. Da der Sitzungsübergabemanager 212 (und in diesem Fall nicht der Endpunkt 202) an der TCP-Verbindung mit der Client-Vorrichtung 102 beteiligt ist, kann der Manager 212 beispielsweise eine zweite TCP-Verbindung mit dem Endpunkt 202 einleiten und die Daten innerhalb des Datenpakets der Client-Vorrichtungen 102 über die zweite TCP-Sitzung an den Endpunkt 202 weiterleiten. Der Manager 212 kann für zukünftige Kommunikationen weiterhin als Proxy zwischen der Client-Vorrichtung 102 und dem Endpunkt 202 betrieben werden. Zum Beispiel kann der Manager 212 eine Antwort von dem Endpunkt 202 erhalten und die Übertragung der Antwort an die Client-Vorrichtung 102 über die TCP-Sitzung mit der Client-Vorrichtung 102 ermöglichen.At (8), upon receiving the encapsulated data packet, the device within data center 110A (e.g., session handoff manager 212, or in some cases an endpoint 202) accepts the TCP session by using information specified in the encapsulated data packet (e.g., e.g. within a header) into their own TCP session state table. The device then decapsulates at (9) the data packet from the client device 102 and processes it at (10) as if it had been received directly at the device. For example, if the device is an endpoint 202, the endpoint 202 may process the data of the data packet according to the service requested by the client device 102. If the device is a session handoff manager 212, the manager 212 may process the data packet by identifying an endpoint 202 to service the data packet (e.g., in a manner similar to interaction (4) in 6 ), and use endpoint 202 to service the data packet. For example, since the session handover manager 212 (and in this case not the endpoint 202) is involved in the TCP connection with the client device 102, the manager 212 can initiate a second TCP connection with the endpoint 202 and the data within the data packet of the Client devices 102 forward to endpoint 202 over the second TCP session. Manager 212 may continue to operate as a proxy between client device 102 and endpoint 202 for future communications. For example, manager 212 may receive a response from endpoint 202 and enable transmission of the response to client device 102 over the TCP session with client device 102 .

Bei (11) überträgt die Vorrichtung innerhalb des Rechenzentrums 110A ein Antwortpaket an den globalen Zugriffspunkt 106A, wie etwa über den Tunnel. Die Interaktion (11) kann beispielsweise das Kapseln des Antwortpakets zur Übertragung über den Tunnel beinhalten. Der globale Zugriffspunkt 106A leitet dann bei (12) das Antwortpaket an die Client-Vorrichtung 102 weiter. Die Interaktion (12) kann zum Beispiel das Entkapseln des Antwortpakets zur Übertragung an die Client-Vorrichtung 102 beinhalten. Weitere Kommunikationen zwischen der Client-Vorrichtung 102 und einem Endpunkt 202 innerhalb des Rechenzentrums 110A können auf ähnliche Weise wie bei den vorstehenden Interaktionen (4) bis (7) und (9) bis (12) erfolgen. Somit kann die Client-Vorrichtung 102 mit dem Rechenzentrum 110A über eine TCP-Sitzung kommunizieren, ohne dass es tatsächlich erforderlich ist, eine Initialisierungsphase der Sitzung mit einer Vorrichtung des Rechenzentrums 110A abzuschließen. 11 stellt die vorstehend beschriebene Interaktion dar, die die Zuteilung an zwei unterschiedliche TCP-Handshaking-Algorithmen veranschaulicht.At (11), the device within the data center 110A transmits a response packet to the global access point 106A, such as over the tunnel. Interaction (11) may involve, for example, encapsulating the response packet for transmission over the tunnel. The global access point 106A then forwards the response packet to the client device 102 at (12). Interaction (12) may include decapsulating the response packet for transmission to client device 102, for example. Other communications between client device 102 and an endpoint 202 within data center 110A may occur in a manner similar to interactions (4)-(7) and (9)-(12) above. Thus, the client device 102 can communicate with the data center 110A via a TCP session without actually having to complete an initialization phase of the session with a data center device 110A. 11 Figure 12 illustrates the interaction described above, illustrating the arbitration of two different TCP handshaking algorithms.

Während 10 veranschaulichende Interaktionen darstellt, können diese Interaktionen je nach Ausführungsform variieren. Während beispielsweise in 10 ein Antwortpaket als durch den globalen Zugriffspunkt 106A verlaufend dargestellt ist, kann ein Endpunkt 202 in einigen Fällen konfiguriert sein, um einer Client-Vorrichtung 102 direkt zu antworten, ohne dass die Antwort den Zugriffspunkt 106A durchläuft. Anstatt beispielsweise ein Antwortpaket zu kapseln und an den Zugriffspunkt 106A zu übertragen, kann ein Endpunkt 202 (oder der Manager 212) das Antwortpaket direkt an die Client-Vorrichtung 102 (z. B. über das Netzwerk 104) übertragen, wodurch die Notwendigkeit einer Kapselung vermieden wird. Als weitere Variante können, während Sitzungsinformationen in 11 als in einem gekapselten Datenpaket beinhaltet beschrieben sind, in anderen Ausführungsformen Sitzungsstatusinformationen in einem separaten Datenpaket beinhaltet sein. Zum Beispiel kann ein globaler Zugriffspunkt 106A konfiguriert sein, um Sitzungsstatusinformationen separat an ein Rechenzentrum 110A zu übertragen, nachdem eine Initialisierungsphase einer Kommunikationssitzung durchgeführt wurde, wie etwa in einem Befehl „Sitzungsannahme“ an das Rechenzentrum 110A. Als noch eine weitere Variante kann, während der Manager 212 vorstehend als einen Endpunkt 202 innerhalb des Rechenzentrums 110A auswählend erörtert wurde, um eine Client-Vorrichtung 102 zu bedienen, ein Zugriffspunkt 106 in einigen Fällen einen solchen Endpunkt 202 auswählen, selbst wenn ein Manager 212 verwendet wird. Zum Beispiel kann ein Zugriffspunkt 106 einen Endpunkt 202 auswählen und den Manager 212 darüber informieren, welcher Endpunkt ausgewählt wurde (z. B. in Headern eines gekapselten Datenpakets). In Fällen, in denen der globale Zugriffspunkt 106 einen Endpunkt 202 auswählt, zu dem ein Datenpaket geroutet werden soll, kann der Zugriffspunkt 106 das Datenpaket modifizieren, um das Routen zu dem Endpunkt 202 zu erleichtern. Zum Beispiel kann der Zugriffspunkt 106 innerhalb eines Zieladressenfelds des Datenpakets eine globale Netzwerkadresse für den Dienst durch eine Netzwerkadresse des Endpunkts 202 (z. B. eine „Unicast“-Adresse) ersetzen. Somit sollen die Interaktionen in 10 veranschaulichender Natur sein.While 10 Figure 12 depicts illustrative interactions, such interactions may vary by embodiment. For example, while in 10 For example, while a response packet is illustrated as passing through global access point 106A, in some cases an endpoint 202 may be configured to respond directly to a client device 102 without the response passing through access point 106A. For example, instead of encapsulating a response packet and transmitting it to access point 106A, an endpoint 202 (or manager 212) may transmit the response packet directly to client device 102 (e.g., over network 104), eliminating the need for encapsulation is avoided. As another variant, while session information is in 11 described as being included in an encapsulated data packet, in other embodiments session state information may be included in a separate data packet. For example, a global access point 106A may be configured to separately transmit session state information to a data center 110A after an initialization phase of a communication session has been performed, such as in a "session accept" command to the data center 110A. As yet another variation, while manager 212 was discussed above as selecting an endpoint 202 within data center 110A to serve client device 102, in some cases an access point 106 may select such endpoint 202 even if a manager 212 is used. For example, an access point 106 can select an endpoint 202 and inform the manager 212 which endpoint has been selected (e.g., in headers of an encapsulated data packet). In cases where the global access point 106 selects an endpoint 202 to route a data packet to, the access point 106 may modify the data packet to facilitate routing to the endpoint 202. For example, within a destination address field of the data packet, the access point 106 may substitute a network address of the endpoint 202 (e.g., a "unicast" address) for a global network address for the service. Thus, the interactions in 10 be illustrative in nature.

Während die Interaktionen in 10 Interaktionen einer Client-Vorrichtung 102 mit einem einzelnen globalen Zugriffspunkt 106A darstellen, kann in einigen Fällen eine Client-Vorrichtung 102 mit mehreren globalen Zugriffspunkten 106 interagieren. Wie vorstehend angemerkt, kann jeder globale Zugriffspunkt 106 konfiguriert sein, um globale Netzwerkadressen einem öffentlichen Netzwerk (z. B. Netzwerk 104) anzubieten, die nicht unter der Kontrolle der globalen Zugriffspunkte 106 stehen. Somit können Vorrichtungen in einem solchen Netzwerk im Allgemeinen den Zugriffspunkt 106 bestimmen, zu dem Datenpakete einer Client-Vorrichtung 102, die an eine globale Netzwerkadresse adressiert sind, geroutet werden. In einigen Konfigurationen kann das Umleiten von Paketen innerhalb eines gegebenen Datenpaketflusses zu einem anderen globalen Zugriffspunkt 106 die Kommunikationen der Client-Vorrichtung 102 nachteilig beeinflussen. Wenn beispielsweise eine Client-Vorrichtung 102 eine TCP-Verbindung aufbaut, die erfordert, dass Statusinformationen an einem einzelnen Zugriffspunkt 106 verwaltet werden (z. B. eine TCP-Verbindung mit dem Zugriffspunkt 106 oder mittels NAT über den Zugriffspunkt 106), kann ein Umleiten der Kommunikation der Client-Vorrichtung 102 mit einem anderen Zugriffspunkt 106 diese Verbindung in unerwünschter Weise unterbrechen.While the interactions in 10 Illustrating interactions of a client device 102 with a single global access point 106A, a client device 102 may interact with multiple global access points 106 in some cases. As noted above, each global access point 106 may be configured to advertise global network addresses to a public network (e.g., network 104) that are not under the global access points 106 control. Thus, devices in such a network can generally determine the access point 106 to which data packets of a client device 102 addressed to a global network address are routed. In some configurations, redirecting packets within a given data packet flow to a different global access point 106 may adversely affect client device 102 communications. For example, when a client device 102 establishes a TCP connection that requires status information to be maintained at a single access point 106 (e.g., a TCP connection to the access point 106 or via NAT through the access point 106), a redirect may be used of client device 102 communicating with another access point 106 undesirably break that connection.

Die Interaktionen in 10 befassen sich mit diesem Szenario, indem ermöglicht wird, dass TCP-Verbindungen zwischen einer Client-Vorrichtung 102 und dem Endpunkt 202 (oder dem Sitzungsübergabemanager 212) aufrechterhalten werden, selbst wenn eine Umleitung von Paketen der Client-Vorrichtung 102 zu einem anderen Zugriffspunkt 106 auftritt. Insbesondere kann jeder Zugriffspunkt 106 so konfiguriert sein, dass er die gleichen Lastausgleichskriterien anwendet, wenn ein Rechenzentrum 110 oder ein Endpunkt 202 ausgewählt wird, zu dem das Datenpaket einer Client-Vorrichtung 102 geroutet werden soll. The interactions in 10 address this scenario by allowing TCP connections to be maintained between a client device 102 and the endpoint 202 (or session handoff manager 212) even when redirection of client device 102 packets to another access point 106 occurs . In particular, each access point 106 may be configured to apply the same load balancing criteria when selecting a data center 110 or endpoint 202 to which a client device 102 data packet is to be routed.

Solche Lastausgleichskriterien können vom Zugriffspunkt 106 unabhängig sein (z. B. unveränderlich unabhängig vom Zugriffspunkt 106, an dem sie angewendet werden). Zum Beispiel können die Lastausgleichskriterien die Latenz zwischen einer Client-Vorrichtung 102 und dem Rechenzentrum 110 sowie den Zustand des Rechenzentrums 110 (oder der Endpunkte 202 darin) unabhängig von der Latenz zu oder von dem Zugriffspunkt 106 widerspiegeln. Daher ist zu erwarten, dass jeder Zugriffspunkt 106 die Datenpakete einer gegebenen Client-Vorrichtung 102 zu demselben Rechenzentrum 110 routet. Wenn die Client-Vorrichtung 102 beispielsweise ein zusätzliches Datenpaket an einen zweiten Zugriffspunkt 106 übertragen würde, würde der zweite Zugriffspunkt 106 dieselben Lastausgleichskriterien anwenden, um das Rechenzentrum 110A als Ziel für das Datenpaket auszuwählen. Der zweite Zugriffspunkt 106 würde dann das Datenpaket zu dem Endpunkt 202 (oder den Sitzungsübergabemanager 212) routen, der das Datenpaket auf dieselbe Weise verarbeiten würde, als ob es über den Zugriffspunkt 106A geroutet worden wäre. Da die Interaktionen in 10 nicht erfordern, dass Statusinformationen am Zugriffspunkt 106A verwaltet werden, und da der Kapselungsmechanismus der 10 eine Quellnetzwerkadresse der Client-Vorrichtung 102 innerhalb gekapselter Datenpakete beibehält, würde keine Unterbrechung einer verbindungsorientierten Kommunikationssitzung (z. B. einer TCP-Sitzung) auftreten. Somit behandeln die Interaktionen in 10 Umleitungsprobleme, die bei der Nutzung von Anycast-Technologien, um das Routing von verbindungsorientierten Kommunikationssitzungen zu gestalten, auftreten würden.Such load balancing criteria may be independent of the access point 106 (e.g., immutably independent of the access point 106 on which they are applied). For example, the load balancing criteria may reflect the latency between a client device 102 and the data center 110, as well as the state of the data center 110 (or the endpoints 202 therein) independent of the latency to or from the access point 106. Therefore, each access point 106 is expected to route the data packets of a given client device 102 to the same data center 110 . For example, if the client device 102 were to transmit an additional data packet to a second access point 106, the second access point 106 would apply the same load balancing criteria to select the data center 110A as the destination for the data packet. The second access point 106 would then route the data packet to endpoint 202 (or session handoff manager 212), which would process the data packet in the same manner as if it had been routed through access point 106A. Since the interactions in 10 do not require status information to be maintained at access point 106A, and since the encapsulation mechanism of the 10 maintains a source network address of client device 102 within encapsulated data packets, no interruption of a connection-oriented communication session (e.g., a TCP session) would occur. Thus, the interactions in 10 Rerouting problems that would arise when using anycast technologies to design the routing of connection-oriented communication sessions.

Unter Bezugnahme auf 12 wird eine veranschaulichende Routine 1200 zur Initialisierung einer verbindungsorientierten Kommunikationssitzung an einem globalen Zugriffspunkt 106A und Übergabe der Sitzung an einen Manager 212 innerhalb eines Rechenzentrums 110 beschrieben. Die Routine 1200 wird veranschaulichend gemeinsam zwischen dem globalen Zugriffspunkt 106A und der Sitzung zu einem Manager 212 implementiert, und somit werden die Felder der Routine 1200 auf solche Vorrichtungen aufgeteilt. Während Abschnitte der Routine 1200 als durch einen Manager 212 implementiert dargestellt sind, können diese Abschnitte in einigen Fällen alternativ direkt in einem Endpunkt 202 implementiert sein.With reference to 12 An illustrative routine 1200 for initiating a connection-oriented communication session at a global access point 106A and handing off the session to a manager 212 within a data center 110 is described. The routine 1200 is illustratively implemented jointly between the global access point 106A and the session to a manager 212, and thus the fields of the routine 1200 are partitioned among such devices. While portions of routine 1200 are shown as being implemented by a manager 212, in some cases these portions may alternatively be implemented directly in an endpoint 202.

Die Routine 1200 beginnt bei Block 1202, wo der Zugriffspunkt 106 (z. B. ein Datenflussmanager 304) eine an eine globale Netzwerkadresse eines Dienstes gerichtete Anfrage erhält, um eine verbindungsorientierte Kommunikationssitzung mit dem Dienst einzuleiten. Die Anfrage kann beispielsweise ein TCP-SYN-Datenpaket sein.The routine 1200 begins at block 1202 where the access point 106 (e.g., a data flow manager 304) receives a request directed to a global network address of a service to initiate a connection-oriented communication session with the service. The request can be a TCP SYN data packet, for example.

Bei Block 1204 schließt der Zugriffspunkt 106 eine Initialisierungsphase der Sitzung gemäß dem konkreten Protokoll ab, das für die Sitzung verwendet wird. Wenn das Protokoll beispielsweise TCP ist, kann die Initialisierungsphase das Durchführen eines DreiWege-Handshakes mit der Client-Vorrichtung 102 beinhalten.At block 1204, access point 106 completes an initialization phase of the session according to the particular protocol being used for the session. For example, if the protocol is TCP, the initialization phase may involve performing a three-way handshake with client device 102 .

Bei Block 1206 empfängt der Zugriffspunkt 106 ein Datenpaket von der Client-Vorrichtung 102 innerhalb der Sitzung. Das Datenpaket kann beispielsweise ein Nutzdatenpaket innerhalb einer TCP-Sitzung sein.At block 1206, access point 106 receives a data packet from client device 102 within the session. The data packet can be a user data packet within a TCP session, for example.

Bei Block 1208 kapselt der Zugriffspunkt 106 das Datenpaket zur Übertragung an den Manager 212 über einen Netzwerktunnel. Der Zugriffspunkt 106 beinhaltet ferner in dem gekapselten Datenpaket (z. B. als Header-Information für das gekapselte Datenpaket) einen Sitzungskontext für die Kommunikationssitzung, wie etwa ein TCP-Fünf-Tupel und Sequenznummern. Der Zugriffspunkt 106 sendet dann bei Block 1210 das Datenpaket an den Übergabemanager 212 als eine Übergabeanfrage für die Kommunikationssitzung.At block 1208, access point 106 encapsulates the data packet for transmission to manager 212 over a network tunnel. The access point 106 also includes in the encapsulated data packet (e.g., as header information for the encapsulated data packet) session context for the communication session, such as a TCP five-tuple and sequence numbers. The access point 106 then, at block 1210, sends the data packet to the handoff manager 212 as a handoff request for the communication session.

Bei Block 1212 empfängt der Übergabemanager 212 das gekapselte Datenpaket und baut bei Block 1214 innerhalb seiner lokalen Daten eine Kommunikationssitzung auf Grundlage der Kontextinformationen von dem Zugriffspunkt 106 auf. Der Manager 212 nimmt somit die Sitzung an, wodurch nachfolgende Kommunikationen innerhalb der Sitzung zwischen der Client-Vorrichtung 102 und dem Manager 212 ermöglicht werden. Bei Block 1216 entkapselt der Übergabemanager 212 das Datenpaket der Client-Vorrichtung 102 und verarbeitet das Datenpaket innerhalb der Sitzung. Zum Beispiel kann der Manager 212 einen Endpunkt 202 auswählen, um die Anfrage zu bearbeiten, und den Inhalt des Datenpakets über eine andere Kommunikationssitzung an den Endpunkt 202 übertragen. Die Routine 1200 endet dann bei Block 1218. Somit können die Client-Vorrichtung 102 und der Manager 212 über die statusbehaftete Sitzung kommunizieren, wobei es erforderlich ist, dass die Client-Vorrichtung 102 und der Manager 212 kommunizieren, um die Sitzung aufzubauen.At block 1212, the handover manager 212 receives the encapsulated data packet and at block 1214 establishes a communication session within its local data based on the context information from the access point 106 . The manager 212 thus accepts the session, allowing subsequent intra-session communications between the client device 102 and the manager 212 . At block 1216, the handover manager 212 decapsulates the data packet from the client device 102 and processes the data packet within the session. For example, the manager 212 may select an endpoint 202 to process the request and transmit the contents of the data packet to the endpoint 202 over another communication session. The routine 1200 then ends at block 1218. Thus, the client device 102 and the manager 212 can communicate over the stateful session, requiring the client device 102 and the manager 212 to communicate in order to establish the session.

Die Routine 1200 kann zusätzliche oder alternative Blöcke zu den vorstehend beschriebenen beinhalten. Zum Beispiel kann der Zugriffspunkt 106 vor dem Senden eines gekapselten Datenpakets als Übergabeanfrage bei Block 1210 ein Rechenzentrum zum Empfangen der Übergabeanfrage auswählen, ähnlich wie bei der Auswahl eines Rechenzentrums, die in 9 erörtert wurde. Während die Routine 1200 als nach Block 1216 endend dargestellt ist, können der Zugriffspunkt 106 und der Manager 212 außerdem weiter betrieben werden, um Kommunikationen von oder zu einer Client-Vorrichtung 120 innerhalb der Sitzung zu ermöglichen, wie vorstehend erörtert. Somit sind die Anzahl und Anordnung der Blöcke in 12 veranschaulichender Natur.Routine 1200 may include additional or alternative blocks to those described above. For example, prior to sending an encapsulated data packet as a handoff request, the access point 106 may select a data center to receive the handoff request at block 1210, similarly as in choosing a data center that is in 9 was discussed. Additionally, while routine 1200 is shown as ending after block 1216, access point 106 and manager 212 may continue to operate to facilitate communications from or to a client device 120 within the session, as discussed above. Thus, the number and arrangement of the blocks are in 12 illustrative in nature.

Alle vorstehend beschriebenen Verfahren und Prozesse können in Softwarecodemodulen, die durch einen oder mehrere Allzweckcomputern oder Prozessoren ausgeführt werden, realisiert und über diese vollständig automatisiert werden. Die Codemodule können in einem beliebigen Typ eines nichttransitorischen computerlesbaren Mediums oder einer anderen Computerspeichervorrichtung gespeichert sein. Einige oder alle der Verfahren können alternativ in spezialisierter Computerhardware ausgeführt werden.All of the methods and processes described above can be embodied in, and fully automated through, software code modules executed by one or more general purpose computers or processors. The code modules may be stored on any type of non-transitory computer-readable medium or other computer storage device. Alternatively, some or all of the methods may be performed in specialized computer hardware.

Konditionalsprache, wie etwa unter anderem „kann“, „könnte“, „würde“ oder „möchte“, soll, sofern nicht spezifisch anders angegeben, ist ansonsten innerhalb des Kontexts so zu verstehen, wie sie allgemein verwendet wird, um zu vermitteln, dass gewisse Ausführungsformen gewisse Merkmale, Elemente und/oder Schritte beinhalten könnten, während andere Ausführungsformen diese nicht beinhalten. Somit soll derartige Konditionalsprache nicht allgemein implizieren, dass Merkmale, Elemente und/oder Schritte in irgendeiner Weise für eine oder mehrere Ausführungsformen erforderlich sind oder dass eine oder mehrere Ausführungsformen notwendigerweise Logik zum Entscheiden, mit oder ohne Benutzereingabe oder Eingabeaufforderung, beinhalten, ob diese Merkmale, Elemente und/oder Schritte in einer konkreten Ausführungsform beinhaltet sind oder durchgeführt werden sollen.Conditional language such as “may”, “could”, “would” or “would” among others, shall, unless specifically stated otherwise, is otherwise to be construed within the context as commonly used to convey that certain embodiments may include certain features, elements, and/or steps while other embodiments do not. Thus, such conditional language is not intended to generally imply that features, elements, and/or steps are in any way required for one or more embodiments, or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether those features, Elements and/or steps are included or intended to be performed in a specific embodiment.

Disjunktive Sprache wie der Ausdruck „mindestens eines von X, Y oder Z“, sofern nicht ausdrücklich anders angegeben, ist ansonsten mit dem Kontext zu verstehen, wie er im Allgemeinen verwendet wird, um zu vermitteln, dass ein Element, Begriff usw. entweder X, Y oder Z oder eine beliebige Kombination davon sein kann (z. B. X, Y und/oder Z). Somit ist eine derartige disjunktive Sprache im Allgemeinen nicht dazu gedacht und soll nicht implizieren, dass gewisse Ausführungen erfordern, dass mindestens eines von X, mindestens eines von Y und mindestens eines von Z vorhanden ist.Disjunctive language such as the phrase "at least one of X, Y, or Z," unless expressly stated otherwise, is otherwise to be understood with the context as it is commonly used to convey that an element, term, etc. is either X , Y or Z or any combination thereof (e.g. X, Y and/or Z). Thus, such disjunctive language is not generally intended and is not intended to imply that certain implementations require that at least one of X, at least one of Y, and at least one of Z be present.

Sofern nicht ausdrücklich anders angegeben, sollten Artikel wie „ein“ oder „eine“ im Allgemeinen so interpretiert werden, dass ein oder mehrere beschriebene Gegenstände beinhaltet sind. Dementsprechend sollen Ausdrücke wie „eine Vorrichtung, die dazu konfiguriert ist“ ein oder mehrere genannte Vorrichtungen beinhalten. Eine solche oder mehrere genannte Vorrichtungen können auch zusammen konfiguriert sein, um die genannten Aussagen auszuführen. Zum Beispiel kann „ein Prozessor, der dazu konfiguriert ist, die Aussagen A, B und C auszuführen“, einen ersten Prozessor beinhalten, der dazu konfiguriert ist, die Aussage A auszuführen, der in Verbindung mit einem zweiten Prozessor arbeitet, der dazu konfiguriert ist, die Aussagen B und C auszuführen.Unless expressly stated otherwise, articles such as "a" or "an" should generally be interpreted as including one or more items being described. Accordingly, phrases such as "a device configured to be" are intended to include one or more named devices. One or more devices mentioned can also be configured together to carry out the statements mentioned. For example, "a processor configured to execute statements A, B, and C" may include a first processor configured to execute statement A operating in conjunction with a second processor configured to do so to carry out statements B and C.

Alle Routinenbeschreibungen, Elemente oder Blöcke in den in dieser Schrift beschriebenen und/oder in den beigefügten Figuren dargestellten Flussdiagrammen sind so zu verstehen, dass sie potenziell Module, Segmente oder Codeabschnitte darstellen, die eine oder mehrere ausführbare Anweisungen zum Implementieren spezifischer logischer Funktionen oder Elemente in der Routine beinhalten. Im Umfang der in dieser Schrift beschriebenen Ausführungsformen sind alle alternativen Implementierungen beinhaltet, wobei Elemente oder Funktionen gelöscht oder außerhalb der gezeigten oder erörterten Reihenfolge ausgeführt werden können, einschließlich im Wesentlichen gleichzeitig oder in umgekehrter Reihenfolge, in Abhängigkeit von der beteiligten Funktionalität, wie es dem Fachmann bekannt ist.All routine descriptions, elements or blocks in the flowcharts described in this specification and/or shown in the accompanying figures are to be understood as potentially representing modules, segments or sections of code that contain one or more executable instructions for implementing specific logical functions or elements in included in the routine. All alternative implementations are included within the scope of the embodiments described herein, wherein elements or functions may be deleted or performed out of the order shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as will occur to those skilled in the art is known.

Es ist zu betonen, dass viele Variationen und Modifikationen an den vorstehend beschriebenen Ausführungsformen vorgenommen werden können, deren Elemente als Teil anderer akzeptabler Beispielen zu verstehen sind. Sämtliche derartige Modifikationen und Variationen sollen im Umfang dieser Offenbarung in dieser Schrift eingeschlossen und durch die folgenden Ansprüche geschützt sein.It is to be emphasized that many variations and modifications can be made to the embodiments described above, the elements of which are to be understood as part of other acceptable examples. All such modifications and variations within the scope of this disclosure are intended to be included in this specification and protected by the following claims.

Beispiele von Ausführungsformen der vorliegenden Offenbarung können im Hinblick auf die folgenden Absätze beschrieben werden.Examples of embodiments of the present disclosure may be described in terms of the following paragraphs.

Absatz 1. System, das Folgendes umfasst: eine Vielzahl von Endpunkten, wobei sich jeder Endpunkt an einem anderen geografischen Standort befindet und mindestens eine Server-Rechenvorrichtung enthält, die konfiguriert ist, um einen über ein Netzwerk zugänglichen Dienst bereitzustellen, der einer Netzwerkadresse zugeordnet ist; eine Vielzahl von globalen Zugriffspunkten, die dem über das Netzwerk zugänglichen Dienst zugeordnet sind, wobei einzelne globale Zugriffspunkte der Vielzahl von globalen Zugriffspunkten einen Prozessor beinhalten, unterschiedlichen geografischen Standorten zugeordnet und zu Folgendem konfiguriert sind: Nutzen von Anycast-Methodik, um ein Netzwerkpräfix einer Netzwerkadresse als über den Zugriffspunkt erreichbar anzubieten; Empfangen eines an die Netzwerkadresse adressierten Netzwerkpakets von einer Client-Vorrichtung; Auswählen eines Rechenzentrums mit einer Vielzahl von Endpunkten auf Grundlage einer Implementierung eines Verteilungsalgorithmus, der einem Produkt aus Netzwerk- und geografischen Kriterien und Verteilungskriterien entspricht; Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, die in dem ausgewählten Rechenzentrum beinhaltet ist, zu dem das Netzwerkpaket geroutet werden soll, auf Grundlage der Implementierung eines Auswahlalgorithmus entsprechend einem konsistenten Hashing-Algorithmus; und Routen des transformierten Datenpakets zu dem ausgewählten Endpunkt.Paragraph 1. A system comprising: a plurality of endpoints, each endpoint being at a different geographic location and including at least one server computing device configured to provide a network accessible service associated with a network address ; a plurality of global access points associated with the network accessible service, wherein individual global access points of the plurality of global access points include a processor, associated with different geographic locations, and configured to: use anycast methodology to advertise a network prefix of a network address as reachable via the access point; receiving a network packet addressed to the network address from a client device; selecting a data center having a plurality of endpoints based on an implementation of a distribution algorithm that corresponds to a product of network and geographic criteria and distribution criteria; selecting an endpoint from the plurality of endpoints included in the selected data center to which the network packet is to be routed based on the implementation of a selection algorithm according to a consistent hashing algorithm; and routing the transformed data packet to the selected endpoint.

Absatz 2. System nach Absatz 1, wobei das Rechenzentrum einer Region entspricht und wobei die Vielzahl von Endpunkten zwei oder mehr Teilregionen entspricht.Paragraph 2. The system of paragraph 1, wherein the data center corresponds to a region and wherein the plurality of endpoints correspond to two or more sub-regions.

Absatz 3. System nach Absatz 2, wobei die Verteilungskriterien des Verteilungsalgorithmus einer Spezifikation für die zwei oder mehr Teilregionen entsprechen.Paragraph 3. The system of paragraph 2, wherein the distribution criteria of the distribution algorithm conform to a specification for the two or more subregions.

Absatz 4. System nach Absatz 1, wobei die Verteilungskriterien einer vollständigen Zuteilung eines Prozentsatzes des Netzwerkverkehrs zu einer Region entsprechen.Paragraph 4. The system of paragraph 1, wherein the distribution criteria correspond to a full allocation of a percentage of network traffic to a region.

Absatz 5. System nach Absatz 1, wobei der konsistente Hashing-Algorithmus einem von einem gewichteten Rendezvous-Hashing-Algorithmus oder einem gewichteten konsistenten Hashing-Algorithmus entspricht.Paragraph 5. The system of paragraph 1, wherein the consistent hashing algorithm is one of a weighted rendezvous hashing algorithm or a weighted consistent hashing algorithm.

Absatz 6. Verfahren, das an einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst implementiert ist, der über einen geografischen Bereich verteilt ist, wobei das Verfahren Folgendes umfasst: Empfangen eines Netzwerkpakets von einer Client-Vorrichtung an einem globalen Zugriffspunkt, wobei das Netzwerkpaket an die Netzwerkadresse adressiert ist; Auswählen eines Rechenzentrums, das eine Vielzahl von Endpunkten beinhaltet, durch den globalen Zugriffspunkt auf Grundlage einer Implementierung eines Verteilungsalgorithmus, der einem Produkt aus Netzwerk- und geografischen Kriterien und Verteilungskriterien entspricht; Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, die in dem ausgewählten Rechenzentrum beinhaltet ist, zu dem das Netzwerkpaket zu routen ist, durch den globalen Zugriffspunkt auf Grundlage der Implementierung eines entsprechenden Auswahlalgorithmus, der eine Bewertung für das Netzwerkpaket bestimmt; und Routen des transformierten Datenpakets zu dem ausgewählten Endpunkt.Paragraph 6. A method implemented at a plurality of access points to a network accessible service distributed across a geographic area, the method comprising: receiving a network packet from a client device at a global access point, wherein the network packet is addressed to the network address; selecting, by the global access point, a data center containing a plurality of endpoints based on an implementation of a distribution algorithm that corresponds to a product of network and geographic criteria and distribution criteria; selecting, by the global access point, an endpoint from the plurality of endpoints included in the selected data center to which the network packet is to be routed based on implementation of a corresponding selection algorithm that determines a rating for the network packet; and routing the transformed data packet to the selected endpoint.

Absatz 7. Verfahren nach Absatz 6, ferner umfassend Anbieten einer Netzwerkadresse des über das Netzwerk zugänglichen Dienstes als über jeden Zugriffspunkt erreichbar.Paragraph 7. The method of paragraph 6, further comprising offering a network address of the network accessible service as reachable via each access point.

Absatz 8. Verfahren nach Absatz 6, wobei das Rechenzentrum einer Region entspricht und wobei die Vielzahl von Endpunkten zwei oder mehr Teilregionen entspricht.Paragraph 8. The method of paragraph 6, wherein the data center corresponds to a region and wherein the plurality of endpoints correspond to two or more sub-regions.

Absatz 9. Verfahren nach Absatz 8, wobei die Verteilungskriterien des Verteilungsalgorithmus einer Spezifikation für die zwei oder mehr Teilregionen entsprechen.Paragraph 9. The method of paragraph 8, wherein the distribution criteria of the distribution algorithm conform to a specification for the two or more sub-regions.

Absatz 10. Verfahren nach Absatz 8, wobei die Verteilungskriterien einer vollständigen Zuteilung eines Prozentsatzes des Netzwerkverkehrs zu einer Region entsprechen.Paragraph 10. The method of paragraph 8, wherein the distribution criteria correspond to a full allocation of a percentage of network traffic to a region.

Absatz 11. Verfahren nach Absatz 8, wobei die Verteilungskriterien einer teilweisen Zuteilung eines Prozentsatzes des Netzwerkverkehrs zu einer Region entsprechen.Paragraph 11. The method of paragraph 8, wherein the distribution criteria correspond to a partial allocation of a percentage of network traffic to a region.

Absatz 12. Verfahren nach Absatz 11, wobei die Verteilungskriterien eine Standardzuteilung für verbleibende Abschnitte einer Teilregion beinhalten.Paragraph 12. The method of paragraph 11, wherein the allocation criteria include a default allocation for remaining portions of a sub-region.

Absatz 13. Verfahren nach Absatz 12, wobei die Standardzuteilung für verbleibende Abschnitte der Teilregion geografische Nähe beinhaltet.Paragraph 13. Procedures in accordance with Paragraph 12, where the default allocation for remaining portions of the sub-region includes geographic proximity.

Absatz 14. Verfahren nach Absatz 6, wobei die Bewertung des Netzwerkpakets einer Bewertung auf Grundlage mindestens einer Quell-IP-Adresse, einer Quell-Port-Adresse, einer Ziel-IP-Adresse, einer Ziel-Port-Adresse und eines Protokolls entspricht.Paragraph 14. The method of paragraph 6, wherein the rating of the network packet corresponds to a rating based on at least one of a source IP address, a source port address, a destination IP address, a destination port address, and a protocol.

Absatz 15. Verfahren nach Absatz 14, wobei das Auswählen eines Endpunkts aus der Vielzahl von Endpunkten einem Auswählen des Endpunkts mit der höchsten Bewertung entspricht.Paragraph 15. The method of paragraph 14, wherein selecting an endpoint from the plurality of endpoints corresponds to selecting the endpoint with the highest score.

Absatz 16. Nichttransitorisches computerlesbares Medium, umfassend computerausführbare Anweisungen, die bei Ausführung durch jeden Zugriffspunkt einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst, der über ein geografisches Gebiet verteilt ist, jeden Zugriffspunkt zu Folgendem konfigurieren: Empfangen eines Netzwerkpakets von einer Client-Vorrichtung, das an eine Netzwerkadresse des über das Netzwerk zugänglichen Dienstes adressiert ist; Auswählen eines Rechenzentrums aus einer Vielzahl von verfügbaren Rechenzentren und eines zugehörigen Endpunkts aus einer Vielzahl von Endpunkten, die einzelnen Rechenzentren zugeordnet ist, an die das Netzwerkpaket zu routen ist, auf Grundlage einer Implementierung einer Kombination von basierend auf einer Implementierung eines Verteilungsalgorithmus entsprechend einem Produkt aus Netzwerk- und geografischen Kriterien und Verteilungskriterien und einem Auswahlalgorithmus, der einem konsistenten Hashing-Algorithmus entspricht, der eine Bewertung für das Netzwerkpaket bestimmt; und Routen des transformierten Datenpakets an den ausgewählten Endpunkt.Section 16. A non-transitory computer-readable medium comprising computer-executable instructions that, when executed by each of a plurality of access points to a network-accessible service distributed across a geographic area, configure each access point to: receive a network packet from a client device addressed to a network address of the network accessible service; Selecting a data center from a plurality of available data centers and an associated endpoint from a plurality of endpoints associated with individual data centers to which the network packet is to be routed based on an implementation of a combination of based on an implementation of a distribution algorithm according to a product network and geographic criteria and distribution criteria and a selection algorithm corresponding to a consistent hashing algorithm that determines a score for the network packet; and routing the transformed data packet to the selected endpoint.

Absatz 17. Nichttransitorisches computerlesbares Medium nach Absatz 16, wobei das Rechenzentrum einer Region entspricht und wobei die Vielzahl von Endpunkten zwei oder mehr Teilregionen entspricht.Paragraph 17. The non-transitory computer-readable medium of paragraph 16, wherein the data center corresponds to a region and wherein the plurality of endpoints correspond to two or more sub-regions.

Absatz 18. Nichttransitorisches computerlesbares Medium nach Absatz 16, wobei die Verteilungskriterien einer skalierbaren Zuteilung entsprechen.Paragraph 18. The non-transitory computer-readable medium of paragraph 16, wherein the distribution criteria conform to a scalable allocation.

Absatz 19. Nichttransitorisches computerlesbares Medium nach Absatz 16, wobei die Bewertung des Netzwerkpakets einer Bewertung auf Grundlage mindestens einer Quell-IP-Adresse, einer Quell-Port-Adresse, einer Ziel-IP-Adresse, einer Ziel-Port-Adresse und eines Protokolls entspricht.Paragraph 19. The non-transitory computer-readable medium of paragraph 16, wherein the rating of the network packet is a rating based on at least one of a source IP address, a source port address, a destination IP address, a destination port address, and a protocol is equivalent to.

Absatz 20. Nichttransitorisches computerlesbares Medium nach Absatz 16, wobei die Verteilungskriterien Leistungskriterien entsprechen und der Endpunkt zumindest teilweise auf einem ersichtlichen Zustand des Endpunkts zu dem Zugriffspunkt basiert.Paragraph 20. The non-transitory computer-readable medium of paragraph 16, wherein the distribution criteria correspond to performance criteria and the endpoint is based at least in part on an apparent state of the endpoint to the access point.

Absatz 21. System, das Folgendes umfasst: eine Vielzahl von Endpunkten, wobei sich jeder Endpunkt an einem anderen geografischen Standort befindet und mindestens eine Server-Rechenvorrichtung enthält, die konfiguriert ist, um einen über ein Netzwerk zugänglichen Dienst bereitzustellen, der einer Netzwerkadresse zugeordnet ist; mindestens einen globalen Zugriffspunkt des über das Netzwerk zugänglichen Dienstes, wobei der mindestens eine globale Zugriffspunkt einen Prozessor beinhaltet und zu Folgendem konfiguriert ist: Empfangen eines an die Netzwerkadresse adressierten Netzwerkpakets von einer Client-Vorrichtung; Auswählen eines Rechenzentrums, das eine Vielzahl von Endpunkten beinhaltet, auf Grundlage einer Implementierung eines Verteilungsalgorithmus; Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, zu dem das Netzwerkpaket zu routen ist, auf Grundlage der Implementierung eines Auswahlalgorithmus; und Routen des empfangenen Datenpakets zu dem ausgewählten Endpunkt über gekapselte Kommunikationen; wobei die Vielzahl von Endpunkten Teilgruppen zugeteilt ist, die sich einen gemeinsamen gekapselten Tunnel teilen, und wobei jeder der Endpunkte in der Teilgruppe konfiguriert ist, um Kommunikationsnachrichten an andere Teilgruppen zu übertragen, um Client-Datenpakete weiterzuleiten und/oder Fragmentierungsinformationen bereitzustellen.Paragraph 21. A system comprising: a plurality of endpoints, each endpoint being at a different geographic location and including at least one server computing device configured to provide a network accessible service associated with a network address ; at least one global access point of the network accessible service, the at least one global access point including a processor and configured to: receive a network packet addressed to the network address from a client device; selecting a data center containing a plurality of endpoints based on an implementation of a distribution algorithm; selecting an endpoint from the plurality of endpoints to which the network packet is to be routed based on the implementation of a selection algorithm; and routing the received data packet to the selected endpoint via encapsulated communications; wherein the plurality of endpoints are assigned to subgroups that share a common encapsulated tunnel, and wherein each of the endpoints in the subgroup is configured to transmit communication messages to other subgroups to forward client data packets and/or to provide fragmentation information.

Absatz 22. System nach Absatz 21, wobei der Kapselungstunnel einem virtuellen lokalen Netzwerk entspricht.Paragraph 22. The system of paragraph 21, wherein the encapsulation tunnel corresponds to a virtual local area network.

Absatz 23. System nach Absatz 21, wobei die Vielzahl von Endpunkten Netzwerkkomponenten zum Verarbeiten der Teilgruppennachrichten unter Verwendung einer Fünf-Tupel-Kommunikation beinhaltet.Paragraph 23. The system of paragraph 21, wherein the plurality of endpoints include network components for processing the subgroup messages using five-tuple communication.

Absatz 24. System nach Absatz 21, wobei die Kommunikationsinformationsnachrichten Einheitserkennungspakete der Pfadmaximumübertragungsgröße beinhalten.Paragraph 24. The system of paragraph 21, wherein the communication information messages include path maximum transmission size unit identification packets.

Absatz 25. System nach Absatz 21, wobei jeder der Endpunkte die Kommunikationsnachrichten über eine Multicast-Nachricht überträgt.Paragraph 25. The system of paragraph 21, wherein each of the endpoints transmits the communication messages via a multicast message.

Absatz 26. System nach Absatz 21, wobei jeder der Endpunkte die Kommunikationsnachrichten über eine Broadcast-Nachricht überträgt.Paragraph 26. The system of paragraph 21, wherein each of the endpoints transmits the communication messages via a broadcast message.

Absatz 27. Verfahren, das an einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst implementiert ist, der über einen geografischen Bereich verteilt ist, wobei das Verfahren Folgendes umfasst: Empfangen eines Netzwerkpakets von einer Client-Vorrichtung an einem Zugriffspunkt, wobei das Netzwerkpaket an eine Netzwerkadresse adressiert ist, die einem Dienst zugeordnet ist; Auswählen eines Rechenzentrums, das eine Vielzahl von Endpunkten beinhaltet, durch den Zugriffspunkt auf Grundlage einer Implementierung eines Verteilungsalgorithmus; Auswählen eines Endpunkts aus der Vielzahl von Endpunkten durch den Zugriffspunkt, zu dem das Netzwerkpaket zu routen ist, auf Grundlage der Implementierung eines Auswahlalgorithmus; und Routen des empfangenen Datenpakets durch den Zugriffspunkt zu dem ausgewählten Endpunkt über einen gekapselten Tunnel, wobei die Vielzahl von Endpunkten Teilgruppen zugeteilt ist, die sich einen gemeinsamen gekapselten Tunnel teilen, und wobei jeder der Endpunkte in der Teilgruppe konfiguriert ist, um Verwaltungsnachrichten an andere Endpunkte in der Teilgruppe zu übertragen, um Client-Datenpakete weiterzuleiten und/oder Fragmentierungsinformationen bereitzustellen.Paragraph 27. A method implemented at a plurality of access points to a network accessible service distributed across a geographic area, the method comprising: receiving a network packet from a client device at an access point, the network packet is addressed to a network address associated with a service; selecting, by the access point, a data center containing a plurality of endpoints based on an implementation of a distribution algorithm; selecting, by the access point, an endpoint from the plurality of endpoints to which the network packet is to be routed based on the implementation of a selection algorithm; and routing the received data packet through the access point to the selected endpoint via an encapsulated tunnel, wherein the plurality of endpoints are assigned to subgroups that share a common encapsulated tunnel, and wherein each of the endpoints in the subgroup is configured to transmit management messages to other endpoints in the subgroup to forward client data packets and/or to provide fragmentation information.

Absatz 28. Verfahren nach Absatz 27, wobei der Kapselungstunnel einem virtuellen lokalen Netzwerk entspricht.Paragraph 28. The method of paragraph 27, wherein the encapsulation tunnel corresponds to a virtual local area network.

Absatz 29. Verfahren nach Absatz 27, wobei die Vielzahl von Endpunkten Netzwerkkomponenten zum Routen empfangener Datenpakete unter Verwendung einer Fünf-Tupel-Kommunikation beinhaltet.Paragraph 29. The method of paragraph 27, wherein the plurality of endpoints include network components for routing received data packets using five-tuple communication.

Absatz 30. Verfahren nach Absatz 27, wobei die Fünf-Tupel-Kommunikation eine Quell-IP-Adresse, eine Quell-Port-Adresse, eine Ziel-IP-Adresse, eine Ziel-Port-Adresse und ein Protokoll beinhaltet.Paragraph 30. The method of paragraph 27, wherein the five-tuple communication includes a source IP address, a source port address, a destination IP address, a destination port address, and a protocol.

Absatz 31. Verfahren nach Absatz 27, wobei die Verwaltungsnachrichten Einheitserkennungspakete der Pfadmaximumübertragungsgröße beinhalten.Paragraph 31. The method of paragraph 27, wherein the management messages include path maximum transfer size unit identification packets.

Absatz 32. Verfahren nach Absatz 27, wobei jeder der Endpunkte die Verwaltungsnachrichten über eine Multicast-Kommunikation überträgt.Paragraph 32. The method of paragraph 27, wherein each of the endpoints transmits the management messages via a multicast communication.

Absatz 33. Verfahren nach Absatz 32, wobei einzelne Endpunkte auf Grundlage einer zugeordneten Teilgruppe bei einem einzelnen Multicast-Kommunikationskanal registriert sind.Paragraph 33. The method of paragraph 32, wherein individual endpoints are registered with a single multicast communication channel based on an associated subset.

Absatz 34. Verfahren nach Absatz 27, wobei jeder der Endpunkte die Verwaltungsnachrichten über eine Broadcast-Kommunikation überträgt.Paragraph 34. The method of paragraph 27, wherein each of the endpoints transmits the management messages via a broadcast communication.

Absatz 35. Verfahren nach Absatz 34, wobei alle einzelnen Endpunkte registriert sind, um Kommunikationskanäle auszusenden und Informationspakete zu filtern, die keiner zugewiesenen Teilgruppe zugeordnet sind.Paragraph 35. The method of paragraph 34, wherein each individual endpoint is registered to broadcast communication channels and to filter information packets that are not associated with an assigned subgroup.

Absatz 36. Nichttransitorisches computerlesbares Medium, umfassend computerausführbare Anweisungen, die bei Ausführung durch jeden Zugriffspunkt einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst, der über ein geografisches Gebiet verteilt ist, jeden Zugriffspunkt zu Folgendem konfigurieren: Empfangen eines Netzwerkpakets von einer Client-Vorrichtung, das an eine Netzwerkadresse des über das Netzwerk zugänglichen Dienstes adressiert ist; Auswählen eines Rechenzentrums und eines zugehörigen Endpunkts aus der Vielzahl von Endpunkten, der dem ausgewählten Rechenzentrum zugeordnet ist, auf Grundlage einer Kombination aus einem Verteilungsalgorithmus entsprechend einem Produkt aus Netzwerk- und geografischen Kriterien und Verteilungskriterien und einem Auswahlalgorithmus auf Grundlage von Nachrichtenattributen; und Routen der transformierten Datenpakete zu dem Endpunkt über einen gekapselten Tunnel, der einer zugewiesenen Teilgruppe zugeordnet ist, wobei die Vielzahl von Endpunkten Teilgruppen zugeteilt ist, die sich einen gemeinsamen gekapselten Tunnel teilen, und wobei jeder der Endpunkte in der Teilgruppe konfiguriert ist, um Nachrichten an andere Teilgruppen zu übertragen, um Client-Datenpakete weiterzuleiten und/oder Fragmentierungsinformationen bereitzustellen.Section 36. A non-transitory computer-readable medium comprising computer-executable instructions that, when executed by each of a plurality of access points to a network-accessible service distributed across a geographic area, configure each access point to: receive a network packet from a client device addressed to a network address of the network accessible service; selecting a data center and an associated endpoint from the plurality of endpoints associated with the selected data center based on a combination of a distribution algorithm based on a product of network and geographic criteria and distribution criteria and a selection algorithm based on message attributes; and routing the transformed data packets to the endpoint via an encapsulated tunnel associated with an assigned subgroup, wherein the plurality of endpoints are assigned to subgroups that share a common encapsulated tunnel, and wherein each of the endpoints in the subgroup is configured to transmit messages to other subgroups to forward client data packets and/or provide fragmentation information.

Absatz 37. Nichttransitorisches computerlesbares Medium nach Absatz 36, wobei die Vielzahl von Endpunkten Netzwerkkomponenten zum Routen von Netzwerkpaketen unter Verwendung einer Fünf-Tupel-Kommunikation beinhaltet.Paragraph 37. The non-transitory computer-readable medium of paragraph 36, wherein the plurality of endpoints includes network components for routing network packets using five-tuple communication.

Absatz 38. Nichttransitorisches computerlesbares Medium nach Absatz 36, wobei die Nachrichten, die von Endpunkten in einer Teilgruppe ausgetauscht werden, Einheitserkennungspakete der Maximumübertragungsgröße beinhalten.Paragraph 38. The non-transitory computer-readable medium of paragraph 36, wherein the messages exchanged by endpoints in a subset include unit identifier packets of the maximum transmission size.

Absatz 39. Nichttransitorisches computerlesbares Medium nach Absatz 36, wobei einzelne Endpunkte Nachrichten über eine Multicast-Übertragung übertragen.Section 39. The non-transitory computer-readable medium of Section 36, wherein individual endpoints transmit messages via a multicast transmission.

Absatz 40. Nichttransitorisches computerlesbares Medium nach Absatz 39, wobei einzelne Endpunkte auf Grundlage einer zugeordneten Teilgruppe bei Multicast-Kommunikationskanälen registriert sind.Paragraph 40. The non-transitory computer-readable medium of paragraph 39, wherein individual endpoints are registered with multicast communication channels based on an associated subset.

Absatz 41. Nichttransitorisches computerlesbares Medium nach Absatz 36, wobei einzelne Endpunkte Nachrichten über eine Broadcast-Übertragung übertragen.Section 41. The non-transitory computer-readable medium of Section 36, wherein individual endpoints transmit messages via a broadcast transmission.

Absatz 42. Nichttransitorisches computerlesbares Medium nach Absatz 41, wobei alle einzelnen Endpunkte registriert sind, um Kommunikationskanäle auszusenden und Nachrichten zu filtern, die keiner zugewiesenen Teilgruppe zugeordnet sind.Paragraph 42. The non-transitory computer-readable medium of paragraph 41, wherein each individual endpoint is registered to broadcast communication channels and filter messages not associated with an assigned subgroup.

Absatz 43. System, das Folgendes umfasst: eine Vielzahl von Endpunktsystemen, wobei sich jedes Endpunktsystem an einem anderen geografischen Standort befindet und mindestens eine Endpunktrechenvorrichtung enthält, die konfiguriert ist, um einen über ein Netzwerk zugänglichen Dienst bereitzustellen, der einer Netzwerkadresse zugeordnet ist; mindestens einen Zugriffspunkt, der dem über das Netzwerk zugänglichen Dienst zugeordnet ist, wobei der mindestens eine Zugriffspunkt einen Prozessor umfasst und zu Folgendem konfiguriert ist: Empfangen einer Anfrage von einer Client-Vorrichtung zum Einleiten einer ersten Sitzung mit Übertragungssteuerprotokoll (TCP) mit dem über das Netzwerk zugänglichen Dienst; Durchführen einer ersten Initialisierungsphase der ersten TCP-Sitzung, um Kontextinformationen für die TCP-Sitzung zu erstellen, einschließlich mindestens einer Sequenznummer; Empfangen eines Datenpakets von der Client-Vorrichtung als Teil der ersten TCP-Sitzung; Auswählen eines Endpunktsystems aus der Vielzahl von Endpunktsystemen, zu dem das Netzwerkpaket zu routen ist; Durchführen einer zweiten Initialisierungsphase einer zweiten TCP-Sitzung, um eine TCP-Sitzung mit dem ausgewählten Endpunktsystem aufzubauen, wobei die zweite TCP-Sitzung von der ersten TCP-Sitzung unabhängig ist; und Übertragen des empfangenen Datenpakets als Teil der zweiten TCP-Sitzung.Paragraph 43. A system comprising: a plurality of endpoint systems, each endpoint system located in a different geographic location and including at least one endpoint computing device configured to provide a network accessible service associated with a network address; at least one access point associated with the network accessible service, the at least one access point comprising a processor and configured to: receive a request from a client device to initiate a first Transmission Control Protocol (TCP) session with the network accessible service; performing a first initialization phase of the first TCP session to create context information for the TCP session including at least one sequence number; receiving a data packet from the client device as part of the first TCP session; selecting an endpoint system from the plurality of endpoint systems to which the network packet is to be routed; performing a second phase of initialization of a second TCP session to establish a TCP session with the selected endpoint system, the second TCP session being independent of the first TCP session; and transmitting the received data packet as part of the second TCP session.

Absatz 44. System nach Absatz 43, wobei die erste TCP-Sitzung einer ersten Sequenznummer und einer zweiten Sequenznummer zugeordnet ist, die durch den Zugriffspunkt zugewiesen sind.Paragraph 44. The system of paragraph 43, wherein the first TCP session is associated with a first sequence number and a second sequence number assigned by the access point.

Absatz 45. System nach Absatz 44, wobei die zweite TCP-Sitzung der ersten Sequenznummer und einer dritten Sequenznummer zugeordnet ist, die durch den ausgewählten Endpunkt zugewiesen sind.Paragraph 45. The system of paragraph 44, wherein the second TCP session is associated with the first sequence number and a third sequence number assigned by the selected endpoint.

Absatz 46. System nach Absatz 45, wobei der Zugriffspunkt konfiguriert ist, um die dritte Sequenznummer und die zweite Sequenznummer zu übersetzen.Paragraph 46. The system of paragraph 45, wherein the access point is configured to translate the third sequence number and the second sequence number.

Absatz 47. System nach Absatz 43, wobei der Zugriffspunkt konfiguriert ist, um die zweite Initialisierungsphase der zweiten TCP-Sitzung mit einem regionalen Zugriffspunkt durchzuführen.Paragraph 47. The system of paragraph 43, wherein the access point is configured to perform the second initialization phase of the second TCP session with a regional access point.

Absatz 48. Verfahren, das an jedem Zugriffspunkt einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst implementiert ist, der über ein geografisches Gebiet verteilt ist, wobei das Verfahren Folgendes umfasst: an einem ersten Zugriffspunkt der Vielzahl von Zugriffspunkten: Empfangen einer Anfrage von einer Client-Vorrichtung zum Einleiten einer verbindungsorientierten Kommunikationssitzung mit dem über das Netzwerk zugänglichen Dienst; Durchführen einer ersten Initialisierungsphase der verbindungsorientierten Kommunikationssitzung, um Kontextinformationen für die verbindungsorientierte Kommunikationssitzung zu erstellen; Anwenden von Auswahlkriterien, um ein Endpunktsystem aus einer Vielzahl von Endpunktsystemen für den über das Netzwerk zugänglichen Dienst auszuwählen, zu dem das Netzwerkpaket zu routen ist; Durchführen einer zweiten Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung, um Kontextinformationen für eine verbindungsorientierte Kommunikationssitzung mit dem ausgewählten Endpunktsystem zu erstellen; und Übertragen des Datenpakets und der Kontextinformationen für die verbindungsorientierte Kommunikationssitzung an das Endpunktsystem.Paragraph 48. A method implemented at each of a plurality of access points to a network accessible service distributed across a geographic area, the method comprising: at a first access point of the plurality of access points: receiving a request from a client device for initiating a connection-oriented communication session with the network accessible service; performing a first initialization phase of the connection-oriented communication session to create context information for the connection-oriented communication session; applying selection criteria to select an endpoint system from a plurality of endpoint systems for the network accessible service to which the network packet is to be routed; performing a second connection-oriented communication session initialization phase to establish context information for a connection-oriented communication session with the selected endpoint system; and transmitting the data packet and the context information for the connection-oriented communication session to the endpoint system.

Absatz 49. Verfahren nach Absatz 48, wobei die verbindungsorientierten Kommunikationssitzungen jeweils einer Sitzung mit Übertragungssteuerprotokoll (TCP) entsprechen.Paragraph 49. The method of paragraph 48, wherein the connection-oriented communication sessions each correspond to a Transmission Control Protocol (TCP) session.

Absatz 50. Verfahren nach Absatz 49, wobei die erste TCP-Sitzung einer ersten Sequenznummer und einer zweiten Sequenznummer zugeordnet ist, die durch den Zugriffspunkt zugewiesen sind.Paragraph 50. The method of paragraph 49, wherein the first TCP session is associated with a first sequence number and a second sequence number assigned by the access point.

Absatz 51. Verfahren nach Absatz 50, wobei die zweite TCP-Sitzung der ersten Sequenznummer und einer dritten Sequenznummer zugeordnet ist, die durch den ausgewählten Endpunkt zugewiesen sind.Paragraph 51. The method of paragraph 50, wherein the second TCP session is associated with the first sequence number and a third sequence number assigned by the selected endpoint.

Absatz 52. Verfahren nach Absatz 51, ferner umfassend Übersetzen der dritten Sequenznummer und der zweiten Sequenznummer.Paragraph 52. The method of paragraph 51, further comprising translating the third sequence number and the second sequence number.

Absatz 53. Verfahren nach Absatz 48, wobei das Durchführen einer zweiten Initialisierungsphase verbindungsorientiert Durchführen der zweiten Initialisierungsphase direkt mit dem ausgewählten Endpunkt beinhaltet.Paragraph 53. The method of paragraph 48, wherein performing a second initialization phase in a connection-oriented manner includes performing the second initialization phase directly with the selected endpoint.

Absatz 54. Verfahren nach Absatz 48, wobei das Durchführen einer zweiten Initialisierungsphase verbindungsorientiert Durchführen der zweiten Initialisierungsphase direkt mit einem regionalen Zugriffspunkt beinhaltet.Paragraph 54. The method of paragraph 48, wherein performing a second initialization phase in a connection-oriented manner includes performing the second initialization phase directly with a regional access point.

Absatz 55. Verfahren nach Absatz 48, wobei der regionale Zugriffspunkt Durchführen einer dritten Initialisierungsphase der verbindungsorientierten Kommunikationssitzung durchführt, um Kontextinformationen für die verbindungsorientierte Kommunikationssitzung mit dem ausgewählten Endpunkt zu erstellen.Paragraph 55. The method of paragraph 48, wherein the regional access point performs a third initialization phase of the connection-oriented communication session to establish context information for the connection-oriented communication session with the selected endpoint.

Absatz 56. Nichttransitorisches computerlesbares Medium, umfassend computerausführbare Anweisungen, die bei Ausführung durch jeden Zugriffspunkt einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst, der über einen geografischen Bereich verteilt ist, jeden Zugriffspunkt zu Folgendem konfigurieren: Empfangen einer Anfrage von einer Client-Vorrichtung zum Einleiten einer ersten verbindungsorientierten Kommunikationssitzung mit dem über das Netzwerk zugänglichen Dienst; Durchführen einer ersten Initialisierungsphase einer TCP-Kommunikationssitzung, um Kontextinformationen für die erste verbindungsorientierte Kommunikationssitzung zu erstellen; Anwenden von Auswahlkriterien, um ein Endpunktsystem aus einer Vielzahl von Endpunktsystemen für den über das Netzwerk zugänglichen Dienst auszuwählen, zu dem das Netzwerkpaket zu routen ist; und Durchführen einer zweiten Initialisierungsphase einer unabhängigen TCP-Kommunikationssitzung, um Kontextinformationen für eine zweite verbindungsorientierte Kommunikationssitzung mit dem ausgewählten Endpunktsystem zu erstellen.Section 56. A non-transitory computer-readable medium comprising computer-executable instructions that, when executed by each of a plurality of access points to a network-accessible service distributed across a geographic area, configure each access point to: receive a request from a client apparatus for initiating a first connection-oriented communication session with the network accessible service; performing a first initialization phase of a TCP communication session to create context information for the first connection-oriented communication session; applying selection criteria to select an endpoint system from a plurality of endpoint systems for the network accessible service to which the network packet is to be routed; and performing a second phase of initialization of an independent TCP communication session to establish context information for a second connection-oriented communication session with the selected endpoint system.

Absatz 57. Nichttransitorisches computerlesbares Medium nach Absatz 56, wobei die erste TCP-Sitzung einer ersten Sequenznummer und einer zweiten Sequenznummer zugeordnet ist, die durch den Zugriffspunkt zugewiesen sind.Paragraph 57. The non-transitory computer-readable medium of paragraph 56, wherein the first TCP session is associated with a first sequence number and a second sequence number assigned by the access point.

Absatz 58. Nichttransitorisches computerlesbares Medium nach Absatz 56, wobei die zweite TCP-Sitzung einer ersten Sequenznummer und einer dritten Sequenznummer zugeordnet ist, die durch den ausgewählten Endpunkt zugewiesen sind.Paragraph 58. The non-transitory computer-readable medium of paragraph 56, wherein the second TCP session is associated with a first sequence number and a third sequence number assigned by the selected endpoint.

Absatz 59. Nichttransitorisches computerlesbares Medium nach Absatz 56, wobei die Anweisungen ferner funktionsfähig sind, um eine Übersetzung von Sequenznummern zwischen der ersten und der zweiten Kommunikationssitzung zu bewirken.Paragraph 59. The non-transitory computer-readable medium of paragraph 56, wherein the instructions are further operable to effect translation of sequence numbers between the first and second communication sessions.

Absatz 60. Nichttransitorisches computerlesbares Medium nach Absatz 56, wobei das Durchführen einer zweiten Initialisierungsphase verbindungsorientiert Durchführen der zweiten Initialisierungsphase direkt mit dem ausgewählten Endpunkt beinhaltet.Paragraph 60. The non-transitory computer-readable medium of paragraph 56, wherein performing a second phase of initialization in a connection-oriented manner includes performing the second phase of initialization directly with the selected endpoint.

Absatz 61. Nichttransitorisches computerlesbares Medium nach Absatz 56, wobei das Durchführen der zweiten Initialisierungsphase einer unabhängigen TCP-Kommunikation Durchführen der zweiten Initialisierungsphase direkt mit einem regionalen Zugriffspunkt beinhaltet.Paragraph 61. The non-transitory computer-readable medium of paragraph 56, wherein performing the second phase initialization of an independent TCP communication includes performing the second phase initialization directly with a regional access point.

Absatz 62. Nichttransitorisches computerlesbares Medium nach Absatz 56, wobei die Anweisungen ferner funktionsfähig sind, um die Übertragung des empfangenen Datenpakets gemäß der zweiten verbindungsorientierten Kommunikationssitzung zu bewirken.Paragraph 62. The non-transitory computer-readable medium of paragraph 56, wherein the instructions are further operable to cause transmission of the received data packet in accordance with the second connection-oriented communication session.

Absatz 63. System, das Folgendes umfasst: eine Vielzahl von Endpunktsystemen, wobei sich jedes Endpunktsystem an einem anderen geografischen Standort befindet und mindestens eine Endpunktrechenvorrichtung enthält, die konfiguriert ist, um einen über ein Netzwerk zugänglichen Dienst bereitzustellen, der einer Netzwerkadresse zugeordnet ist; mindestens einen Zugriffspunkt, der dem über das Netzwerk zugänglichen Dienst zugeordnet ist, wobei jeder des mindestens einen Zugriffspunkts einen Prozessor umfasst und zu Folgendem konfiguriert ist: Aufbauen einer ersten TCP-Sitzung, um Kontextinformationen für eine erste TCP-Sitzung zwischen dem mindestens einen Zugriffspunkt und einer Client-Vorrichtung zu erstellen, wobei die erste TCP-Sitzung eine Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters beinhaltet; Auswählen eines Endpunktsystems aus der Vielzahl von Endpunktsystemen, zu dem das Netzwerkpaket zu routen ist; und Aufbauen einer zweiten TCP-Sitzung, um eine TCP-Sitzung mit dem ausgewählten Endpunktsystem aufzubauen, wobei die zweite TCP-Sitzung von der ersten TCP-Sitzung unabhängig ist und wobei die zweite TCP-Sitzung eine Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters beinhaltet.Paragraph 63. A system comprising: a plurality of endpoint systems, each endpoint system located in a different geographic location and including at least one endpoint computing device configured to provide a network accessible service associated with a network address; at least one access point associated with the network accessible service, each of the at least one access point comprising a processor and configured to: establish a first TCP session to receive context information for a first establish a TCP session between the at least one access point and a client device, the first TCP session including a specification of a congestion control parameter and a data validation parameter; selecting an endpoint system from the plurality of endpoint systems to which the network packet is to be routed; and establishing a second TCP session to establish a TCP session with the selected endpoint system, the second TCP session being independent of the first TCP session and the second TCP session including a specification of a congestion control parameter and a data validation parameter.

Absatz 64. System nach Absatz 63, wobei die erste TCP-Sitzung und die zweite TCP-Sitzung einem anderen Überlastungsparameter zugeordnet sind.Paragraph 64. The system of paragraph 63, wherein the first TCP session and the second TCP session are associated with a different congestion parameter.

Absatz 65. System nach Absatz 64, wobei der Überlastungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die erste TCP-Sitzung einem niedrigeren Wert in dem Satz von Werten entspricht.Paragraph 65. The system of paragraph 64, wherein the congestion parameter corresponds to a selection from a set of values, and wherein the first TCP session corresponds to a lower value in the set of values.

Absatz 66. System nach Absatz 63, wobei die erste TCP-Sitzung und die zweite TCP-Sitzung einem anderen Datenüberprüfungsparameter zugeordnet sind.Paragraph 66. The system of paragraph 63, wherein the first TCP session and the second TCP session are associated with a different data validation parameter.

Absatz 67. System nach Absatz 66, wobei der Datenüberprüfungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die zweite TCP-Sitzung einem maximalen Wert in dem Satz von Werten entspricht.Paragraph 67. The system of paragraph 66, wherein the data validation parameter corresponds to a selection from a set of values, and wherein the second TCP session corresponds to a maximum value in the set of values.

Absatz 68. Verfahren, das an jedem Zugriffspunkt einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst implementiert ist, der über ein geografisches Gebiet verteilt ist, wobei das Verfahren Folgendes umfasst: Empfangen einer Anfrage von einer Client-Vorrichtung zum Einleiten einer ersten Sitzung mit Übertragungssteuerprotokoll (TCP) mit dem über das Netzwerk zugänglichen Dienst; Aufbauen einer ersten TCP-Sitzung, um Kontextinformationen für die erste TCP-Sitzung zu erstellen, einschließlich einer Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters; Auswählen eines Endpunktsystems aus der Vielzahl von Endpunktsystemen, zu dem das Netzwerkpaket zu routen ist; und Aufbauen einer zweiten TCP-Sitzung, um eine zweite TCP-Sitzung mit dem ausgewählten Endpunktsystem aufzubauen, wobei die zweite TCP-Sitzung von der ersten TCP-Sitzung unabhängig ist und wobei die zweite TCP-Sitzung eine Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters beinhaltet.Paragraph 68. A method implemented at each of a plurality of access points to a network accessible service distributed across a geographic area, the method comprising: receiving a request from a client device to initiate a first session with transmission control protocol (TCP) with the service accessible over the network; establishing a first TCP session to establish context information for the first TCP session including a specification of a congestion control parameter and a data validation parameter; selecting an endpoint system from the plurality of endpoint systems to which the network packet is to be routed; and establishing a second TCP session to establish a second TCP session with the selected endpoint system, the second TCP session being independent of the first TCP session and the second TCP session including a specification of a congestion control parameter and a data validation parameter.

Absatz 69. Verfahren nach Absatz 68, wobei die erste TCP-Sitzung und die zweite TCP-Sitzung einem anderen Überlastungsparameter zugeordnet sind.Paragraph 69. The method of paragraph 68, wherein the first TCP session and the second TCP session are associated with a different congestion parameter.

Absatz 70. Verfahren nach Absatz 69, wobei der Überlastungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die erste TCP-Sitzung einem niedrigeren Wert in dem Satz von Werten entspricht.Paragraph 70. The method of paragraph 69, wherein the congestion parameter corresponds to a selection from a set of values, and wherein the first TCP session corresponds to a lower value in the set of values.

Absatz 71. Verfahren nach Absatz 69, wobei der Überlastungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die zweite TCP-Sitzung einem höchsten Wert in dem Satz von Werten entspricht.Paragraph 71. The method of paragraph 69, wherein the congestion parameter corresponds to a selection from a set of values, and wherein the second TCP session corresponds to a highest value in the set of values.

Absatz 72. Verfahren nach Absatz 68, wobei die erste TCP-Sitzung und die zweite TCP-Sitzung einem anderen Datenüberprüfungsparameter zugeordnet sind.Paragraph 72. The method of paragraph 68, wherein the first TCP session and the second TCP session are associated with a different data validation parameter.

Absatz 73. Verfahren nach Absatz 72, wobei der Datenüberprüfungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die zweite TCP-Sitzung einem maximalen Wert in dem Satz von Werten entspricht.Paragraph 73. The method of paragraph 72, wherein the data validation parameter corresponds to a selection from a set of values, and wherein the second TCP session corresponds to a maximum value in the set of values.

Absatz 74. Verfahren nach Absatz 72, wobei der Datenüberprüfungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die erste TCP-Sitzung einem minimalen Wert in dem Satz von Werten entspricht.Paragraph 74. The method of paragraph 72, wherein the data validation parameter corresponds to a selection from a set of values, and wherein the first TCP session corresponds to a minimum value in the set of values.

Absatz 75. Verfahren nach Absatz 68, wobei der Überlastungsparameter einer Spezifikation einer maximalen Segmentgröße entspricht.Paragraph 75. The method of paragraph 68, wherein the congestion parameter corresponds to a maximum segment size specification.

Absatz 76. Verfahren nach Absatz 68, wobei der Datenüberprüfungsparameter einer Spezifikation eines Fensterskalierungswerts entspricht.Paragraph 76. The method of paragraph 68, wherein the data validation parameter corresponds to a specification of a window scaling value.

Absatz 77. Nichttransitorisches computerlesbares Medium, umfassend computerausführbare Anweisungen, die bei Ausführung durch jeden Zugriffspunkt einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst, der über einen geografischen Bereich verteilt ist, jeden Zugriffspunkt zu Folgendem konfigurieren: Empfangen einer Anfrage von einer Client-Vorrichtung zum Einleiten einer ersten Sitzung mit Übertragungssteuerprotokoll (TCP) mit dem über das Netzwerk zugänglichen Dienst; Aufbauen einer ersten TCP-Sitzung, um Kontextinformationen für die TCP-Sitzung zu erstellen, einschließlich einer Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters; Auswählen eines Endpunktsystems aus der Vielzahl von Endpunktsystemen, zu dem das Netzwerkpaket zu routen ist; und Aufbauen einer zweiten TCP-Sitzung, um eine zweite TCP-Sitzung mit dem ausgewählten Endpunktsystem aufzubauen, wobei die zweite TCP-Sitzung von der ersten TCP-Sitzung unabhängig ist und wobei die zweite TCP-Sitzung eine Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters beinhaltet.Section 77. A non-transitory computer-readable medium comprising computer-executable instructions that, when executed by each of a plurality of access points to a network-accessible service that is distributed over a geographic area, configure each access point to: receive a request from a client apparatus for initiating a first Transmission Control Protocol (TCP) session with the network accessible service; establishing a first TCP session to establish context information for the TCP session including a specification of a congestion control parameter and a data validation parameter; selecting an endpoint system from the plurality of endpoint systems to which the network packet is to be routed; and establishing a second TCP session to establish a second TCP session with the selected endpoint system, the second TCP session being independent of the first TCP session and the second TCP session including a specification of a congestion control parameter and a data validation parameter.

Absatz 78. Nichttransitorisches computerlesbares Medium nach Absatz 77, wobei die erste TCP-Sitzung und die zweite TCP-Sitzung einem anderen Überlastungsparameter zugeordnet sind.Paragraph 78. The non-transitory computer-readable medium of paragraph 77, wherein the first TCP session and the second TCP session are associated with a different congestion parameter.

Absatz 79. Nichttransitorisches computerlesbares Medium nach Absatz 77, wobei der Überlastungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die erste TCP-Sitzung einem niedrigsten Wert in dem Satz von Werten entspricht.Paragraph 79. The non-transitory computer-readable medium of paragraph 77, wherein the congestion parameter corresponds to a selection from a set of values, and wherein the first TCP session corresponds to a lowest value in the set of values.

Absatz 80. Nichttransitorisches computerlesbares Medium nach Absatz 77, wobei die erste TCP-Sitzung und die zweite TCP-Sitzung einem anderen Datenüberprüfungsparameter zugeordnet sind.Paragraph 80. The non-transitory computer-readable medium of paragraph 77, wherein the first TCP session and the second TCP session are associated with a different data validation parameter.

Absatz 81. Nichttransitorisches computerlesbares Medium nach Absatz 77, wobei der Datenüberprüfungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die zweite TCP-Sitzung einem maximalen Wert in dem Satz von Werten entspricht.Paragraph 81. The non-transitory computer-readable medium of paragraph 77, wherein the data validation parameter corresponds to a selection from a set of values, and wherein the second TCP session corresponds to a maximum value in the set of values.

Absatz 82. Nichttransitorisches computerlesbares Medium nach Absatz 77, wobei der Datenüberprüfungsparameter einer Auswahl aus einem Satz von Werten entspricht und wobei die erste TCP-Sitzung einem minimalen Wert in dem Satz von Werten entspricht.Paragraph 82. The non-transitory computer-readable medium of paragraph 77, wherein the data validation parameter corresponds to a selection from a set of values, and wherein the first TCP session corresponds to a minimum value in the set of values.

Claims (15)

System, das Folgendes umfasst: eine Vielzahl von Endpunkten, wobei sich jeder Endpunkt an einem anderen geografischen Standort befindet und mindestens eine Server-Rechenvorrichtung enthält, die konfiguriert ist, um einen über ein Netzwerk zugänglichen Dienst bereitzustellen, der einer Netzwerkadresse zugeordnet ist; eine Vielzahl von globalen Zugriffspunkten, die dem über das Netzwerk zugänglichen Dienst zugeordnet ist, wobei einzelne globale Zugriffspunkte der Vielzahl von globalen Zugriffspunkten einen Prozessor beinhalten, unterschiedlichen geografischen Standorten zugeordnet und zu Folgendem konfiguriert sind: Empfangen eines an die Netzwerkadresse adressierten Netzwerkpakets von einer Client-Vorrichtung; Auswählen eines Rechenzentrums, das eine Vielzahl von Endpunkten beinhaltet, auf Grundlage einer Implementierung eines Verteilungsalgorithmus; Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, zu dem das Netzwerkpaket zu routen ist, auf Grundlage der Implementierung eines Auswahlalgorithmus; und Routen des empfangenen Datenpakets zu dem ausgewählten Endpunkt über gekapselte Kommunikationen.System that includes: a plurality of endpoints, each endpoint being in a different geographic location and including at least one server computing device configured to provide a network accessible service associated with a network address; a plurality of global access points associated with the network accessible service, wherein individual global access points of the plurality of global access points include a processor, are associated with different geographic locations, and are configured to: receiving a network packet addressed to the network address from a client device; selecting a data center containing a plurality of endpoints based on an implementation of a distribution algorithm; selecting an endpoint from the plurality of endpoints to which the network packet is to be routed based on the implementation of a selection algorithm; and Route the received data packet to the selected endpoint via encapsulated communications. System nach Anspruch 1, wobei die einzelnen globalen Zugriffspunkte dazu konfiguriert sind, Anycast-Methodik zu nutzen, um ein Netzwerkpräfix der Netzwerkadresse als über den Zugriffspunkt erreichbar anzubieten.system after claim 1 , where each global access point is configured to use anycast methodology to advertise a network prefix of the network address as reachable through the access point. System nach Anspruch 1, wobei die einzelnen globalen Zugriffspunkte konfiguriert sind, um ein Rechenzentrum, das eine Vielzahl von Endpunkten beinhaltet, auf Grundlage der Implementierung eines Verteilungsalgorithmus auszuwählen, der einem Produkt aus Netzwerk- und geografischen Kriterien und Verteilungskriterien entspricht.system after claim 1 , wherein each global access point is configured to select a data center containing a plurality of endpoints based on the implementation of a distribution algorithm that is a product of network and geographic criteria and distribution criteria. System nach Anspruch 1, wobei die Vielzahl von Endpunkten Teilgruppen zugeteilt ist, die sich einen gemeinsamen gekapselten Tunnel teilen, und wobei jeder der Endpunkte in der Teilgruppe dazu konfiguriert ist, Kommunikationsnachrichten an andere Teilgruppen zu übertragen, um Client-Datenpakete weiterzuleiten und/oder Fragmentierungsinformationen bereitzustellen.system after claim 1 wherein the plurality of endpoints are assigned to subgroups that share a common encapsulated tunnel, and wherein each of the endpoints in the subgroup is configured to transmit communication messages to other subgroups to forward client data packets and/or to provide fragmentation information. System nach Anspruch 1, wobei die einzelnen globalen Zugriffspunkte konfiguriert sind, um einen Endpunkt aus der Vielzahl von Endpunkten, die in dem ausgewählten Rechenzentrum beinhaltet ist, zu dem das Netzwerkpaket zu routen ist, auf Grundlage der Implementierung eines Auswahlalgorithmus, der einem konsistenten Hashing-Algorithmus entspricht, auszuwählen.system after claim 1 , wherein each global access point is configured to select an endpoint from the plurality of endpoints included in the selected data center to which the network packet is to be routed based on implementation of a selection algorithm that corresponds to a consistent hashing algorithm . System nach Anspruch 1, wobei die Verteilungskriterien einer vollständigen Zuteilung eines Prozentsatzes des Netzwerkverkehrs zu einer Region entsprechen.system after claim 1 , where the distribution criteria correspond to a full allocation of a percentage of network traffic to a region. System nach Anspruch 1, wobei der konsistente Hashing-Algorithmus einem von einem gewichteten Rendezvous-Hashing-Algorithmus oder einem gewichteten konsistenten Hashing-Algorithmus entspricht.system after claim 1 , where the consistent hashing algorithm is one of a weighted rendezvous hashing algorithm or a weighted consistent hashing algorithm. System nach Anspruch 1, wobei der Kapselungstunnel einem virtuellen lokalen Netzwerk entspricht.system after claim 1 , where the encapsulation tunnel corresponds to a virtual local area network. System nach Anspruch 1, wobei die Vielzahl von Endpunkten Netzwerkkomponenten zum Verarbeiten der Teilgruppennachrichten unter Verwendung einer Fünf-Tupel-Kommunikation beinhaltet.system after claim 1 wherein the plurality of endpoints includes network components for processing the subgroup messages using five-tuple communication. System nach Anspruch 1, wobei die Kommunikationsinformationsnachrichten Einheitserkennungspakete der Pfadmaximumübertragungsgröße beinhalten.system after claim 1 wherein the communication information messages include path maximum transmission size unit identification packets. System nach Anspruch 1, wobei die einzelnen globalen Zugriffspunkte zu Folgendem konfiguriert sind: Aufbauen einer ersten TCP-Sitzung, um Kontextinformationen für eine erste TCP-Sitzung zwischen dem mindestens einen Zugriffspunkt und einer Client-Vorrichtung zu erstellen, wobei die erste TCP-Sitzung eine Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters beinhaltet; Auswählen eines Endpunktsystems aus der Vielzahl von Endpunktsystemen, zu dem das Netzwerkpaket zu routen ist; und Aufbauen einer zweiten TCP-Sitzung, um eine TCP-Sitzung mit dem ausgewählten Endpunktsystem aufzubauen, wobei die zweite TCP-Sitzung von der ersten TCP-Sitzung unabhängig ist und wobei die zweite TCP-Sitzung eine Spezifikation eines Überlastungskontrollparameters und eines Datenüberprüfungsparameters beinhaltet.system after claim 1 , wherein each global access point is configured to: establish a first TCP session to establish context information for a first TCP session between the at least one access point and a client device, the first TCP session including a specification of a congestion control parameter and a data validation parameter; selecting an endpoint system from the plurality of endpoint systems to which the network packet is to be routed; and establishing a second TCP session to establish a TCP session with the selected endpoint system, the second TCP session being independent of the first TCP session and the second TCP session including a specification of a congestion control parameter and a data validation parameter. System nach Anspruch 1, wobei die einzelnen globalen Zugriffspunkte zu Folgendem konfiguriert sind: Empfangen einer Anfrage von einer Client-Vorrichtung zum Einleiten einer ersten Sitzung mit Übertragungssteuerprotokoll (TCP) mit dem über das Netzwerk zugänglichen Dienst; Durchführen einer ersten Initialisierungsphase der ersten TCP-Sitzung, um Kontextinformationen für die TCP-Sitzung zu erstellen, einschließlich mindestens einer Sequenznummer; Empfangen eines Datenpakets von der Client-Vorrichtung als Teil der ersten TCP-Sitzung; Auswählen eines Endpunktsystems aus der Vielzahl von Endpunktsystemen, zu dem das Netzwerkpaket zu routen ist; Durchführen einer zweiten Initialisierungsphase einer zweiten TCP-Sitzung, um eine TCP-Sitzung mit dem ausgewählten Endpunktsystem aufzubauen, wobei die zweite TCP-Sitzung von der ersten TCP-Sitzung unabhängig ist; und Übertragen des empfangenen Datenpakets als Teil der zweiten TCP-Sitzung.system after claim 1 wherein each global access point is configured to: receive a request from a client device to initiate a first Transmission Control Protocol (TCP) session with the network accessible service; performing a first initialization phase of the first TCP session to create context information for the TCP session including at least one sequence number; receiving a data packet from the client device as part of the first TCP session; selecting an endpoint system from the plurality of endpoint systems to which the network packet is to be routed; performing a second phase of initialization of a second TCP session to establish a TCP session with the selected endpoint system, the second TCP session being independent of the first TCP session; and transmitting the received data packet as part of the second TCP session. Verfahren, das an einer Vielzahl von Zugriffspunkten zu einem über ein Netzwerk zugänglichen Dienst, der über einen geografischen Bereich verteilt ist, implementiert ist, wobei das Verfahren Folgendes umfasst: Empfangen eines Netzwerkpakets von einer Client-Vorrichtung an einem Zugriffspunkt, wobei das Netzwerkpaket an eine einem Dienst zugeordnete Netzwerkadresse adressiert ist, Auswählen eines Rechenzentrums, das eine Vielzahl von Endpunkten beinhaltet, durch den Zugriffspunkt auf Grundlage einer Implementierung eines Verteilungsalgorithmus; Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, zu dem das Netzwerkpaket zu routen ist, auf Grundlage der Implementierung eines Auswahlalgorithmus durch den Zugriffspunkt; und Routen des empfangenen Datenpakets durch den Zugriffspunkt zu dem ausgewählten Endpunkt über einen gekapselten Tunnel.A method implemented at a plurality of access points to a network accessible service distributed over a geographic area, the method comprising: receiving a network packet from a client device at an access point, the network packet being sent to a a network address associated with a service is addressed, the access point selecting a data center containing a plurality of endpoints based on an implementation of a distribution algorithm; selecting an endpoint from the plurality of endpoints to which the network packet is to be routed based on the access point's implementation of a selection algorithm; and Routing the received data packet through the access point to the selected endpoint via an encapsulated tunnel. Verfahren nach Anspruch 13, wobei die Vielzahl von Endpunkten Teilgruppen zugeteilt ist, die sich einen gemeinsamen gekapselten Tunnel teilen, und wobei jeder der Endpunkte in der Teilgruppe dazu konfiguriert ist, Verwaltungsnachrichten an andere Endpunkte in den Teilgruppen zu übertragen, um Client-Datenpakete weiterzuleiten und/oder Fragmentierungsinformationen bereitzustellen.procedure after Claim 13 wherein the plurality of endpoints are assigned to subgroups that share a common encapsulated tunnel, and wherein each of the endpoints in the subgroup is configured to transmit management messages to other endpoints in the subgroups to forward client data packets and/or to provide fragmentation information . Verfahren nach Anspruch 13, wobei das Routen des empfangenen Datenpakets ein Routen des empfangenen Datenpakets durch den Zugriffspunkt zu dem ausgewählten Endpunkt über einen gekapselten Tunnel beinhaltet, wobei die Vielzahl von Endpunkten Teilgruppen zugeteilt ist, die sich einen gemeinsamen gekapselten Tunnel teilen, und wobei jeder der Endpunkte in der Teilgruppe dazu konfiguriert ist, Verwaltungsnachrichten an andere Endpunkte in der Teilgruppe zu übertragen, um Client-Datenpakete weiterzuleiten und/oder Fragmentierungsinformationen bereitzustellen.procedure after Claim 13 , wherein routing the received data packet includes routing the received data packet through the access point to the selected endpoint via an encapsulated tunnel, wherein the plurality of endpoints are assigned to subgroups that share a common encapsulated tunnel, and wherein each of the endpoints is in the subgroup configured to transmit management messages to other endpoints in the subgroup to forward client data packets and/or provide fragmentation information.
DE112020004639.7T 2019-09-27 2020-09-25 MANAGEMENT OF DISTRIBUTED ENDPOINTS Pending DE112020004639T5 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US16/586,485 2019-09-27
US16/586,510 US11552898B2 (en) 2019-09-27 2019-09-27 Managing data throughput in a distributed endpoint network
US16/586,641 2019-09-27
US16/586,641 US10972554B1 (en) 2019-09-27 2019-09-27 Management of distributed endpoints
US16/586,446 2019-09-27
US16/586,485 US11425042B2 (en) 2019-09-27 2019-09-27 Managing data throughput in a distributed endpoint network
US16/586,446 US11451477B2 (en) 2019-09-27 2019-09-27 Load balanced access to distributed endpoints
US16/586,510 2019-09-27
PCT/US2020/052667 WO2021062116A1 (en) 2019-09-27 2020-09-25 Management of distributed endpoints

Publications (1)

Publication Number Publication Date
DE112020004639T5 true DE112020004639T5 (en) 2022-06-30

Family

ID=72802176

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020004639.7T Pending DE112020004639T5 (en) 2019-09-27 2020-09-25 MANAGEMENT OF DISTRIBUTED ENDPOINTS

Country Status (3)

Country Link
CN (2) CN114503531B (en)
DE (1) DE112020004639T5 (en)
WO (1) WO2021062116A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11394636B1 (en) 2020-12-10 2022-07-19 Amazon Technologies, Inc. Network connection path obfuscation using global access points
CN116437409B (en) * 2023-06-13 2023-08-22 微网优联科技(成都)有限公司 Channel switching method and device for wireless router

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004112302A2 (en) * 2003-06-12 2004-12-23 Camiant, Inc. Dynamic service delivery with topology discovery for communication networks
US20060064478A1 (en) * 2004-05-03 2006-03-23 Level 3 Communications, Inc. Geo-locating load balancing
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
US8606922B1 (en) * 2010-09-27 2013-12-10 Amazon Technologies, Inc. Dynamic resource zone mapping
US9742636B2 (en) * 2013-09-11 2017-08-22 Microsoft Technology Licensing, Llc Reliable address discovery cache
WO2016053372A1 (en) * 2014-09-30 2016-04-07 Nicira, Inc. Virtual distributed bridging module
CN113098752B (en) * 2015-12-02 2022-07-22 Nicira股份有限公司 Method, apparatus, system, and medium for implementing load balancing across multiple tunnel endpoints
US10320681B2 (en) * 2016-04-12 2019-06-11 Nicira, Inc. Virtual tunnel endpoints for congestion-aware load balancing

Also Published As

Publication number Publication date
CN116489157B (en) 2024-03-15
CN114503531A (en) 2022-05-13
CN114503531B (en) 2023-05-09
CN116489157A (en) 2023-07-25
WO2021062116A1 (en) 2021-04-01

Similar Documents

Publication Publication Date Title
DE112020001459T5 (en) Consistent route announcements between redundant controllers in the global network access point
DE112019005826T5 (en) Load-balanced access to distributed endpoints using global network addresses
DE60103088T2 (en) Procedure for making forwarding lists for network group
CA2716818C (en) Load-balancing cluster
EP2616952B1 (en) Load-balancing cluster
DE60026231T2 (en) Method and apparatus for performing a quick service lookup in a network group
DE60025129T2 (en) Method and apparatus for providing scalable services using a packet distribution table
DE60132718T2 (en) SYSTEM AND METHOD FOR THE FINDING OF INFORMATION OBJECTS AND INFORMATION OBJECTS IN COMPUTER NETWORKS
EP2798513B1 (en) Load-balancing cluster
DE602005005724T2 (en) Endpoint address change in a packet network
DE602005004477T2 (en) soft router
DE112011103082B4 (en) Multiple virtual machines sharing a single IP address
DE69837691T2 (en) Load balancing between servers in a TCP / IP network
US10972554B1 (en) Management of distributed endpoints
DE602005001601T2 (en) Protocol failover in a softrouter
DE60221228T2 (en) METHOD AND SYSTEM FOR ANYCAST GUIDING BETWEEN SEVERAL WIRES
DE60214605T2 (en) HOME AGENT OPTIMIZATION FOR THE TREATMENT OF MOBILE IP AND STATIC MPLS (MULTIPROTOCOL LABEL SWITCHING)
US10686874B2 (en) Load balancing method, apparatus and system
DE112016005600T5 (en) Cross-connection of switches based on hierarchical overlay tunneling
US11451477B2 (en) Load balanced access to distributed endpoints
DE112016004286T5 (en) Systems and methods for distributing load in a distributed packet core system of a software defined network
DE112008003966T5 (en) Selective re-mapping of a network topology
US11425042B2 (en) Managing data throughput in a distributed endpoint network
DE102009023082A1 (en) Virtualization of devices
DE112020004639T5 (en) MANAGEMENT OF DISTRIBUTED ENDPOINTS

Legal Events

Date Code Title Description
R012 Request for examination validly filed