DE112020004639T5 - MANAGEMENT OF DISTRIBUTED ENDPOINTS - Google Patents
MANAGEMENT OF DISTRIBUTED ENDPOINTS Download PDFInfo
- 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
Links
- 238000004891 communication Methods 0.000 claims abstract description 116
- 238000000034 method Methods 0.000 claims abstract description 95
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000004422 calculation algorithm Methods 0.000 claims description 74
- 230000005540 biological transmission Effects 0.000 claims description 32
- 238000005538 encapsulation Methods 0.000 claims description 22
- 238000013502 data validation Methods 0.000 claims description 17
- 238000013467 fragmentation Methods 0.000 claims description 6
- 238000006062 fragmentation reaction Methods 0.000 claims description 6
- 238000007726 management method Methods 0.000 claims description 6
- 230000036541 health Effects 0.000 description 32
- 230000003993 interaction Effects 0.000 description 32
- 230000004044 response Effects 0.000 description 26
- 230000008569 process Effects 0.000 description 18
- 230000008859 change Effects 0.000 description 10
- 238000013519 translation Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 239000004744 fabric Substances 0.000 description 6
- 230000007257 malfunction Effects 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RJKFOVLPORLFTN-LEKSSAKUSA-N Progesterone Chemical compound C1CC2=CC(=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H](C(=O)C)[C@@]1(C)CC2 RJKFOVLPORLFTN-LEKSSAKUSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000009118 appropriate response Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/22—Alternate routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/72—Routing based on the source address
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5069—Address allocation for group communication, multicast communication or broadcast communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/101—Server selection for load balancing based on network conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1038—Load balancing arrangements to avoid a single path through a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
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 der1 darstellt.2 FIG. 14 is a block diagram showing an illustrative configuration of adata center 1 represents. -
3 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines globalen Zugriffspunkts der1 darstellt.3 Fig. 12 is a block diagram showing an illustrative configuration of aglobal 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 der1 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 aglobal 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 der1 dar.5 provides illustrative interactions for routing a request from a client device addressed to a global network address to aglobal access point 1 represent. -
6 stellt veranschaulichende Interaktionen zum Routen einer Anfrage von einem globalen Zugriffspunkt zu einem Rechenzentrum der1 dar, zumindest teilweise auf Grundlage lastausgleichender Anfragen zwischen den Rechenzentren.6 provides illustrative interactions for routing a request from a global access point to adata 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 der1 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 toglobal 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 der1 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 the1 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 der1 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 FIG1 represent. -
10 stellt eine veranschaulichende Routine zum Aktualisieren von Informationen an den globalen Zugriffspunkten der1 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 the1 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 der1 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 aglobal 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 der1 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 aglobal 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.
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
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
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.
Die Rechenzentren 110 der
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
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
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
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
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
Außerdem beinhaltet das Rechenzentrum 110 der
Das Rechenzentrum 110 der
In einer Ausführungsform beinhaltet nur ein Rechenzentrum 110 der Rechenzentren 110A-N der
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
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
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
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
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,
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,
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,
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
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
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
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.
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:
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:
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:
Autolineare Anpassung für nicht zugeteilte 65:
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,
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
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
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
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
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
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
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
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
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,
Zusätzlich zu einem oder mehreren Routern 302 und Datenflussmanagern 304 beinhaltet der globale Zugriffspunkt 106 der
Der globale Zugriffspunkt 106 der
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
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
Das Rechenzentrum 110 der
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
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
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,
Während
Unter Bezugnahme auf
In der Veranschaulichung der
Unter Bezugnahme auf
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
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
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
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
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
Unter Bezugnahme auf
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.
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
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
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
Unter Bezugnahme auf
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.
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
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
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
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
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
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
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
Unter Bezugnahme auf
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
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
Unter Bezugnahme auf
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
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,
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
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
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
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.
Während
Während die Interaktionen in
Die Interaktionen in
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
Unter Bezugnahme auf
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
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
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
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
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
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
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.
Absatz 2. System nach Absatz 1, wobei das Rechenzentrum einer Region entspricht und wobei die Vielzahl von Endpunkten zwei oder mehr Teilregionen entspricht.
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
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
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
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.
Absatz 7. Verfahren nach Absatz 6, ferner umfassend Anbieten einer Netzwerkadresse des über das Netzwerk zugänglichen Dienstes als über jeden Zugriffspunkt erreichbar.
Absatz 8. Verfahren nach Absatz 6, wobei das Rechenzentrum einer Region entspricht und wobei die Vielzahl von Endpunkten zwei oder mehr Teilregionen entspricht.
Absatz 9. Verfahren nach Absatz 8, wobei die Verteilungskriterien des Verteilungsalgorithmus einer Spezifikation für die zwei oder mehr Teilregionen entsprechen.
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
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
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
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)
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/586,485 US11425042B2 (en) | 2019-09-27 | 2019-09-27 | Managing data throughput in a distributed endpoint network |
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,446 US11451477B2 (en) | 2019-09-27 | 2019-09-27 | Load balanced access to distributed endpoints |
US16/586,641 US10972554B1 (en) | 2019-09-27 | 2019-09-27 | Management of distributed endpoints |
US16/586,446 | 2019-09-27 | ||
US16/586,641 | 2019-09-27 | ||
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 (4)
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 |
US12074768B1 (en) | 2021-09-09 | 2024-08-27 | T-Mobile Usa, Inc. | Dynamic configuration of consensus-based network |
CN116074227B (en) * | 2022-11-09 | 2024-05-14 | 国网重庆市电力公司电力科学研究院 | Multi-power system testing method based on virtualization platform |
CN116437409B (en) * | 2023-06-13 | 2023-08-22 | 微网优联科技(成都)有限公司 | Channel switching method and device for wireless router |
Family Cites Families (8)
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 |
CN108432189B (en) * | 2015-12-02 | 2021-04-20 | Nicira股份有限公司 | Load balancing across multiple tunnel endpoints |
US10320681B2 (en) * | 2016-04-12 | 2019-06-11 | Nicira, Inc. | Virtual tunnel endpoints for congestion-aware load balancing |
-
2020
- 2020-09-25 WO PCT/US2020/052667 patent/WO2021062116A1/en active Application Filing
- 2020-09-25 DE DE112020004639.7T patent/DE112020004639T5/en active Pending
- 2020-09-25 CN CN202080066288.6A patent/CN114503531B/en active Active
- 2020-09-25 CN CN202310454209.4A patent/CN116489157B/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN116489157A (en) | 2023-07-25 |
WO2021062116A1 (en) | 2021-04-01 |
CN116489157B (en) | 2024-03-15 |
CN114503531B (en) | 2023-05-09 |
CN114503531A (en) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112020001459T5 (en) | Consistent route announcements between redundant controllers in the global network access point | |
DE112020004639T5 (en) | MANAGEMENT OF DISTRIBUTED ENDPOINTS | |
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 | |
DE112016007055B4 (en) | Cross-connection of switches based on hierarchical overlay tunneling | |
DE60025129T2 (en) | Method and apparatus for providing scalable services using a packet distribution table | |
US10972554B1 (en) | Management of distributed endpoints | |
DE60132718T2 (en) | SYSTEM AND METHOD FOR THE FINDING OF INFORMATION OBJECTS AND INFORMATION OBJECTS IN COMPUTER NETWORKS | |
EP2798513B1 (en) | Load-balancing cluster | |
DE69328666T2 (en) | Method and device for making a number of computers appear as a single host on the network | |
DE112011103082B4 (en) | Multiple virtual machines sharing a single IP address | |
DE69837691T2 (en) | Load balancing between servers in a TCP / IP network | |
DE60036021T2 (en) | System for distributing data within an internetwork with a two-way content agreement | |
US11451477B2 (en) | Load balanced access to distributed endpoints | |
DE60214605T2 (en) | HOME AGENT OPTIMIZATION FOR THE TREATMENT OF MOBILE IP AND STATIC MPLS (MULTIPROTOCOL LABEL SWITCHING) | |
DE112016004286T5 (en) | Systems and methods for distributing load in a distributed packet core system of a software defined network | |
DE202015009244U1 (en) | Routing of traffic within and between autonomous systems | |
DE112008003966T5 (en) | Selective re-mapping of a network topology | |
DE102021109547B4 (en) | SDWAN OVERLAY ROUTING SERVICE | |
US11425042B2 (en) | Managing data throughput in a distributed endpoint network | |
DE112013006420T5 (en) | Extended connection summary (LAG) for use in several Switsches | |
DE102009023082A1 (en) | Virtualization of devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed |