DE112019005826T5 - Lastverteilter Zugang zu verteilten Endpunkten unter Verwendung globaler Netzwerkadressen - Google Patents

Lastverteilter Zugang zu verteilten Endpunkten unter Verwendung globaler Netzwerkadressen Download PDF

Info

Publication number
DE112019005826T5
DE112019005826T5 DE112019005826.6T DE112019005826T DE112019005826T5 DE 112019005826 T5 DE112019005826 T5 DE 112019005826T5 DE 112019005826 T DE112019005826 T DE 112019005826T DE 112019005826 T5 DE112019005826 T5 DE 112019005826T5
Authority
DE
Germany
Prior art keywords
network
access point
endpoint
packet
network address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019005826.6T
Other languages
English (en)
Inventor
Anton S. Radlein
Harvo Reyzell Jones
Hardeep Singh Uppal
Dennis Marinus
Dhiraj Gupta
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of DE112019005826T5 publication Critical patent/DE112019005826T5/de
Pending legal-status Critical Current

Links

Images

Classifications

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

Landscapes

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

Abstract

Systeme und Verfahren werden beschrieben, welche die lastverteilte Verwendung von globalisierten Netzwerkadressen ermöglichen, die über ein Netzwerk hinweg adressierbar sind, um auf einen netzwerkzugänglichen Dienst zuzugreifen. Ein Satz von globalen Zugangspunkten wird bereitgestellt, der eine Verfügbarkeit der globalisierten Netzwerkadressen bekanntmacht. Beim Empfang einer Anforderung zum Zugang zu einem netzwerkzugänglichen Dienst kann ein globaler Zugangspunkt einen Endpunkt für den Dienst aus einer Reihe von Rechenzentren basierend auf einer gewünschten Verteilung des Verkehrs unter den Rechenzentren auswählen. Der Zugangspunkt leitet den Verkehr dann an den ausgewählten Endpunkt weiter. In einer Ausführungsform wendet der Zugangspunkt Netzwerkadressübersetzung an, um zu ermöglichen, dass der Verkehr zu dem Endpunkt geroutet wird, ohne eine Verbindung am Endpunkt abzubrechen. Der Zugangspunkt kann eine Vielfalt von Techniken verwenden, um die Ausfallsicherheit des Netzwerks und die Kenntnis der verfügbaren Endpunkte zu gewährleisten.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Allgemein beschrieben, nutzen Rechenvorrichtungen ein Kommunikationsnetzwerk oder eine Reihe von Kommunikationsnetzwerken, um Daten auszutauschen. Unternehmen und Organisationen betreiben Computernetzwerke, die eine Anzahl von Rechenvorrichtungen miteinander verbinden, um Vorgänge zu unterstützen zu unterstützen oder Dienste für Dritte bereitzustellen. Die Rechensysteme können sich an einem einzelnen geografischen Ort befinden oder an mehreren, voneinander getrennten geografischen Orten befinden (z. B. miteinander verbunden über private oder öffentliche Kommunikationsnetzwerke). Insbesondere können Rechenzentren oder Datenverarbeitungszentren, hierin allgemein als „Rechenzentren“ bezeichnet, eine Anzahl miteinander verbundener Rechensysteme beinhalten, um den Benutzern des Rechenzentrums Rechenressourcen bereitzustellen. Bei den Rechenzentren kann es sich um private Rechenzentren, die im Auftrag einer Organisation betrieben werden, oder um öffentliche Rechenzentren handeln die im Auftrag oder zum Nutzen der Allgemeinheit betrieben werden.
  • Da die Ressourcen einer beliebigen individuellen Rechenvorrichtung begrenzt sind, ist eine Vielfalt von Techniken bekannt, die versucht, die Ressourcenverwendung zwischen den Vorrichtungen auszugleichen. So kann z. B. eine „Lastverteiler“-Vorrichtung zwischen Client-Vorrichtungen, welche die Verwendung von Rechenressourcen anfordern, und Servern, die solche Ressourcen bereitstellen, platziert werden. Der Lastverteiler kann versuchen, die Anforderungen auf die Server zu verteilen, wodurch es ermöglicht wird, dass die Server zusammenarbeiten, um solche Ressourcen bereitzustellen. Ein wesentlicher Nachteil der Verwendung eines solchen Lastverteilers ist, dass er einen einzelnen Ausfallpunkt erzeugen kann, sodass bei einem Ausfall des Lastverteilers die Anforderungen an die Server fehlschlagen und die Ressourcen nicht mehr verfügbar sind.
  • Eine andere auf dem Fachgebiet bekannte Art der Lastverteilung ist Domain-Name-System(DNS)-Lastverteilung. DNS bezieht sich im Allgemeinen auf ein Netzwerk von Vorrichtungen, das betrieben wird, um vom Menschen erkennbare Domänennamen in Netzwerkadressen in einem Netzwerk, z. B. dem Internet, zu übersetzen. Für die Lastverteilung unter Verwendung von DNS wird ein DNS-Server mit den Netzwerkadressen mehrerer Rechenvorrichtungen befüllt, die eine gegebene Ressource anbieten. Bei der Beantwortung von Anforderung zur Auflösung eines Domänennamens, der mit dieser Ressource assoziiert ist, wechselt der DNS-Server die bereitgestellten Adressen, sodass die Anforderungen für die Ressourcen auf die bereitgestellten Adressen verteilt werden. Da der DNS-Server nicht als Leitung für den Verkehr zu den Ressourcen fungiert und da DNS im Allgemeinen einen hochredundanten Vorgang bereitstellt, verhindert DNS-Lastverteilung im Allgemeinen das Aufweisen eines einzelnen Ausfallpunkts. Ein wesentlicher Nachteil der DNS-Lastverteilung ist jedoch die Verzögerung, die erforderlich ist, um ein Lastverteilungsschema zu ändern. DNS-Anfbrderungen durchlaufen im Allgemeinen eine Reihe von DNS-Resolvern, von denen jeder frühere DNS-Ergebnisse für einen Zeitraum Zwischenspeichern kann. Daher können Änderungen, die an einem DNS-Server in einem Versuch vorgenommen werden, um die Lastverteilung zwischen den Servern zu ändern, erhebliche Zeit in Anspruch nehmen, um sich auszubreiten. Besonders in Fällen, in denen ein Server ausgefallen ist, können diese Verzögerungen erhebliche Fehler in der Netzwerkkommunikation verursachen. Außerdem kann es schwierig sein, DNS-Einträge auf dem neuesten Stand zu halten, da sie im Allgemeinen modifiziert werden müssen, wenn neue Vorrichtungen zu einem Lastverteilungsschema hinzugefügt oder daraus entfernt werden.
  • Eine andere auf dem Fachgebiet bekannte Art der Lastverteilung ist die Verwendung von „Anycast“-Netzwerkadressen. In einem Netzwerk, wie z. B. dem Internet, stellen verschiedene autonome Systeme („AS“) Vorrichtungen unterschiedliche Netzwerkadressen bereit. Jedes AS benachrichtigt sein Nachbar-AS über verfügbare Adressen innerhalb seines Netzwerks, indem sie die Adressen „bekanntgemacht“ werden. Am typischsten ist jede Adresse mit einem einzelnen Standort (z. B. einer einzelnen Vorrichtung oder Gruppe von Vorrichtungen) assoziiert. In einer Anycast-Konfiguration machen mehrere Vorrichtungen, häufig in mehreren AS, dieselbe Netzwerkadresse bekannt. In Abhängigkeit von der Konfiguration des Nachbar-AS können Client-Anforderungen zum Zugreigen auf die Adresse dann an eine beliebige der mehreren Vorrichtungen geroutet werden, wodurch die Last auf die Vorrichtungen verteilt wird. Ein wesentlicher Nachteil der Verwendung von Anycast in einem Versuch der Lastverteilung besteht darin, dass das Routen zur Anycast-Adresse im Allgemeinen durch Nachbarnetzwerke gesteuert wird. Diese Netzwerke stehen häufig unter der Kontrolle von anderen Entitäten. Daher ist es schwierig oder unmöglich, vollständig zu steuern, wie Anforderungen unter Vorrichtungen mit einer Anycast-Netzwerkadresse verteilt werden. Wenn sich außerdem die Konfiguration der Nachbarnetzwerke ändert, kann sich auch die Verteilung der Anforderungen ändern, was zu einer Unbeständigkeit des Lastverteilungsschemas führt.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das ein veranschaulichendes logisches Netzwerk darstellt, das mehrere Client-Vorrichtungen und Rechenzentren sowie einen Satz von globalen Zugangspunkten beinhaltet, der einen lastverteilten Zugang zu den Rechenzentren von einem Satz von globalen Netzwerkadressen bereitstellt.
    • 2 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines Rechenzentrums aus 1 darstellt.
    • 3 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines globalen Zugangspunkts aus 1 darstellt.
    • 4 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines Fluss-Manager-Servers darstellt, die einen oder mehrere Fluss-Manager innerhalb eines globalen Zugangspunkts aus 1 umsetzt.
    • 5 stellt veranschaulichende Interaktionen zum Routen einer Client-Vorrichtung, die an eine globale Netzwerkadresse adressiert ist, an einen globalen Zugangspunkt aus 1 dar.
    • 6 stellt veranschaulichende Interaktionen zum Routen einer Anforderung von einem globalen Zugangspunkt an ein Rechenzentrum aus 1 dar, mindestens teilweise basierend auf Lastverteilungsanforderungen unter den Rechenzentren.
    • 7 stellt veranschaulichende Interaktionen zum Weitergeben von Endpunkt-Informationen von einem Rechenzentrum an globale Zugangspunkte aus 1 dar, sodass die Zugangspunkte einen Verkehr von Client-Vorrichtungen, der an globale Netzwerkadressen adressiert ist, korrekt routen können.
    • 8 stellt eine veranschaulichende Routine zum Erhöhen der Ausfallsicherheit von globalen Netzwerkadressen durch Auswählen unterschiedlicher Nachbarvorrichtungen, gegenüber welchen unterschiedliche globale Netzwerkadressen von Zugangspunkten aus 1 bekanntgemacht werden, dar.
    • 9 stellt eine veranschaulichende Routine zum Routen eines Verkehrs, der an eine globale Netzwerkadresse adressiert ist, die mit einem Dienst assoziiert ist, der durch Endpunkte innerhalb von Rechenzentren bereitgestellt wird, unter Verwendung der Zugangspunkte aus 1 dar.
    • 10 stellt eine veranschaulichende Routine zum Aktualisieren von Informationen bei den globalen Zugangspunkten aus 1 bezüglich Endpunkten eines Rechenzentrums dar, die einen netzwerkzugänglichen Dienst bereitstellen.
    • 11 stellt veranschaulichende Interaktionen zum Herstellen einer Transmission-Control-Protocol(TCP)-Sitzung bei einem globalen Zugangspunkt aus 1 und zum Ü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 stellt eine veranschaulichende Routine zum Herstellen einer Transmission-Control-Protocol(TCP)-Sitzung bei einem globalen Zugangspunkt aus 1 und zum Übergeben der TCP-Sitzung an einen Endpunkt dar, um eine Kommunikation einer Client-Vorrichtung und des Endpunkts über die TCP-Sitzung zu ermöglichen.
  • DETAILLIERTE BESCHREIBUNG
  • Allgemein beschrieben, betreffen Aspekte der vorliegenden Offenbarung die Bereitstellung von lastverteiltem Zugang zu einem Pool von Rechenvorrichtungen, die über mehrere geografische Orte verteilt sind, unter Verwendung einer oder mehrerer globaler Netzwerkadressen. Insbesondere betreffen Aspekte der vorliegenden Offenbarung die Bereitstellung eines verteilten Satzes von Zugangspunkten, die über globale Netzwerkadressen erreichbar sind, wobei die Zugangspunkte Anforderungen auswählen und an Endpunkt-Vorrichtungen innerhalb des Pools routen, und zwar mindestens teilweise basierend auf Lastverteilung der Anforderungen. In einer Ausführungsform nutzen die Zugangspunkte Anycast-Routing-Techniken, um die Verfügbarkeit globaler Netzwerkadressen, die mit dem Pool von Rechenvorrichtungen assoziiert sind, bekanntzumachen und dadurch den an diese Adressen adressierten Verkehr anzuziehen. Beim Empfang einer Anforderung zum Zugang zu dem Pool kann ein Zugangspunkt einen geeigneten Endpunkt innerhalb des Pools basierend auf Faktoren wie Netzwerk-Performance-Kriterien zum Endpunkt und Last auf dem Endpunkt auswählen. Der Zugangspunkt kann dann als ein Proxy fungieren, der die Anforderung an den Endpunkt routet und die weitere Kommunikation zwischen dem Endpunkt und einem anfordernden Vorrichtung erleichtert. Der Zugangspunkt kann eine Vielfalt von Techniken umsetzen, wie hierin offenbart, um einen ausfallsicheren, effizienten Zugang zum Pool der Endpunkt-Vorrichtungen bereitzustellen. Wie hierin offenbart, können die Zugangspunkte über ein großes geografisches Gebiet verteilt sein, wodurch einzelne Ausfallpunkte innerhalb des Systems eliminiert werden. Darüber hinaus können die Zugangspunkte durch die Nutzung von Anycast-Bekanntmachungen Anforderungen auf den Pool verteilen, selbst wenn die Anforderungen an eine einzelne Netzwerkadresse adressiert sind, wodurch Komplikationen und Verzögerungen vermieden werden, die mit anderen Techniken, wie z. B. der DNS-basierten Lastverteilung, assoziiert sind. Indem die Zugangspunkte als Proxy zwischen Clients und dem Pool von Vorrichtungen fungieren, anstatt Ressourcen direkt zu bedienen, können die Zugangspunkte die Verteilung von Anforderungen an den Pool unabhängig davon steuern, wie externe Vorrichtungen die Anforderungen an die Anycast-Adresse routen möchten, wodurch Nachteile vermieden werden, die mit traditionellen Anycast-Netzwerken assoziiert sind. Daher verbessern die hierin offenbarten Ausführungsformen die bisherigen Lastverteilungstechniken erheblich.
  • Ausführungsformen der vorliegenden Offenbarung können veranschaulichend in einem großen geografischen Gebiet umgesetzt werden. In einer Ausführungsform ist die vorliegende Offenbarung im weltweiten Internet umgesetzt und stellt globale Internetprotokoll(IP)-Adressen, wie etwa IP-Version-4- (IPv4-) oder IP-Version-6-(IPv6)-Adressen, bereit. Unterschiedliche Rechenzentren können an unterschiedlichen geografischen Orten existieren und jedes Rechenzentrum kann eine oder mehrere Endpunkt-Vorrichtungen beinhalten, die Zugang zu einem netzwerkbasierten Dienst bereitstellen. Beispiele für solche Dienste sind Web-Hosting, Datenspeicherung, On-Demand-Rechendienste und dergleichen, ohne darauf beschränkt zu sein. Die Ressourcen in jedem Rechenzentrum können begrenzt sein, sodass ein Betreiber des netzwerkbasierten Dienstes die Last auf solche Dienste verteilen möchte. Um den Betrieb des netzwerkbasierten Dienstes zu vereinfachen (z. B. um die Komplikationen im Zusammenhang mit der DNS-basierten Lastverteilung zu vermeiden), kann es wünschenswert sein, dem Betreiber einen einzigen Satz relativ statischer Netzwerkadressen für den Dienst bereitzustellen, die unabhängig von den einzelnen Endpunkten verwaltet werden können, die Zugang zu dem Dienst bereitstellen. Solche Netzwerkadressen werden hierin im Allgemeinen als „globale“ Netzwerkadressen bezeichnet. Im vorliegenden Zusammenhang soll sich der Ausdruck „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 individuelle Vorrichtungen gilt) und impliziert nicht unbedingt, dass eine solche Netzwerkadresse weltweit zugänglich ist. Nichtsdestotrotz können Ausführungsformen der vorliegenden Offenbarung umgesetzt werden, um globale Netzwerkadressen bereitzustellen, die im Allgemeinen über ein weltweites Netzwerk, wie z. B. das Internet, zugänglich sind.
  • Um globale Netzwerkadressen für einen Dienst bereitzustellen, wird ein System offenbart, das einen Satz geografisch verteilter globaler Zugangspunkte bereitstellt. Ähnlich wie vorstehend erwähnt, soll sich der Begriff „globaler“ Zugangspunkt in diesem Zusammenhang im Allgemeinen auf den Zugangspunkt beziehen, der den Zugang zum Dienst im Allgemeinen bereitstellt, im Gegensatz zu einzelnen Endpunkten, und impliziert nicht unbedingt, dass solche Zugangspunkte weltweit existieren (obwohl eine solche Konfiguration möglich ist). Im Allgemeinen sind die Zugangspunkte jedoch geografisch verteilt. In einer Ausführungsform befinden sich die globalen Zugangspunkte an anderen und zahlreicheren geografischen Orten als denjenigen der Rechenzentren, die Endpunkte für den Dienst bereitstellen, wodurch der durchschnittliche Netzwerkabstand zwischen den globalen Zugangspunkten und den Client-Vorrichtungen, die versuchen, auf den Dienst zuzugreifen, verringert wird.
  • Jeder globale Zugangspunkt kann Anycast-Techniken nutzen, um die Verfügbarkeit des Dienstes über die eine oder die mehreren globalen Netzwerkadressen, die mit dem Dienst assoziiert sind, bekanntzumachen. Veranschaulichenderweise kann jeder Zugangspunkt das Border Gateway Protocol („BGP“) verwenden, um die globalen Netzwerkadressen bekanntzumachen, indem er einen BGP-„Lautsprecher“ beinhaltet, um die Verfügbarkeit der globalen Netzwerkadresse gegenüber Nachbarnetzwerken anzukündigen. Der globale Zugangspunkt kann somit den Verkehr auf die globalen Netzwerkadressen lenken. Wie nachstehend detaillierter erörtert, können die globalen Zugangspunkte in einigen Fällen BGP-Ankündigungen „formen“, um die Ausfallsicherheit eines netzwerkbasierten Dienstes gegenüber Netzwerkunterbrechungen zu erhöhen. Zum Beispiel können die globalen Zugangspunkte ihre angekündigten globalen Netzwerkadressen in zwei Gruppen unterteilen und einem Dienst mindestens eine Netzwerkadresse aus jeder Gruppe zuweisen. Die globalen Zugangspunkte können dann jede Gruppe von Adressen gegenüber einem anderen Nachbarnetzwerk ankündigen. Auf diese Weise kann jeder Zugangspunkt effektiv zwei Wege erzeugen, um den Punkt zu erreichen: über einen ersten Nachbarn unter Verwendung einer Adresse der ersten Gruppe oder über einen zweiten Nachbarn unter Verwendung einer Adresse einer zweiten Gruppe. Wenn ein Nachbarnetzwerk auf eine beliebige Weise ausfällt, existiert somit ein alternativer Weg, um den Zugangspunkt zu erreichen. Da jeder Zugangspunkt auf diese Weise betrieben werden kann, kann der Verkehr bei einem Totalausfall eines Zugangspunkte darüber hinaus automatisch über herkömmliche Anycast-Routing-Mechanismen zu einem anderen Zugangspunkt geleitet werden. Während hierin Beispiele bereitgestellt sind, die sich auf zwei Gruppen beziehen, kann eine beliebige Anzahl von Gruppen bereitgestellt sein.
  • Um eine noch höhere Ausfallsicherheit bereitzustellen, kann jeder Zugangspunkt in einigen Fällen den Verkehr gemäß einer bestimmten Teilmenge der bekanntgemachten globalen Netzwerkadressen trennen und unterschiedliche Vorrichtungen oder Programm-Threads nutzen, um den an jede Teilmenge adressierten Verkehr zu verarbeiten. Auf diese Weise ist es unwahrscheinlich, dass der Betrieb einer Vorrichtung oder eines Threads, die/der den Verkehr einer anderen Teilmenge verarbeitet, beeinträchtigt wird, wenn der Verkehr einer Teilmenge problematisch für den Betrieb des Zugangspunkts ist (z. B. aufgrund einer Fehlkonfiguration in Bezug auf eine globale Netzwerkadresse der Teilmenge). In einer Ausführungsform verwendet der Zugangspunkt eine Kombination aus unterschiedlichen Netzwerkadressengruppen und einer getrennten Verarbeitung von Teilmengen jeder Netzwerkgruppe. Darüber hinaus können Dienste zwischen den Teilmengen jeder Gruppe „gemischt“ werden, sodass, wenn zwei Diensten Netzwerkadressen innerhalb einer gemeinsamen Teilmenge einer Gruppe zugewiesen werden, die beiden Dienste wahrscheinlich Netzwerkadressen innerhalb unterschiedlichen Teilmengen einer zweiten Gruppe zugewiesen werden. Wenn bei dieser Konfiguration die Konfiguration eines spezifischen Dienstes Probleme beim Betrieb eines Zugangspunkts in Bezug auf eine Teilmenge einer Gruppe verursacht, wären andere Dienste wahrscheinlich immer noch über eine alternative Gruppe erreichbar (bei der es unwahrscheinlich ist, dass ihre Adressen in der gleichen Teilmenge wie der problematische Dienst liegen). Durch das Erhöhen der Anzahl von Adressengruppen und Teilmengen kann die Gesamtzahl der von einem problematischen Dienst betroffenen Dienste schrittweise verringert werden.
  • Nach dem Empfang einer Anforderung zum Zugang zu einem Dienst kann ein globaler Zugangspunkt so konfiguriert sein, dass er den Verkehr an einen geeigneten Endpunkt innerhalb eines Rechenzentrums weiterleitet, das den Dienst bereitstellt. Dazu kann es erforderlich sein, dass dem Zugangspunkt eine Netzwerkadresse des Endpunkts bekannt ist. In einer Ausführungsform ist jedes Rechenzentrum mit einer Ressourcen-Manager-Vorrichtung konfiguriert, die eine Liste von Endpunkten pflegt, die Zugang zu einem Dienst bereitstellen. Der Ressourcen-Manager kann Informationen über die Zugangspunkte der Endpunkte, einschließlich Netzwerkadresseninformationen für die Endpunkte, beinhalten. So kann jeder Zugangspunkt beim Empfang einer Anforderung zum Zugang zu einem Dienst so konfiguriert sein, dass er einen verfügbaren Endpunkt für den Dienst auswählt und die Anforderung an diesen Endpunkt routet. Wie nachstehend erörtert wird, kann der Endpunkt basierend auf einer Kombination von Kriterien ausgewählt werden, einschließlich Netzwerk-Performance-Kriterien für den Endpunkt (z. B. in Bezug auf die Latenz) und der gewünschten Lastverteilung im Endpunkt, ohne darauf beschränkt zu sein.
  • In einer Ausführungsform ist jeder Zugangspunkt so konfiguriert, dass er Netzwerkadressübersetzung (Network Address Translation - „NAT“) verwendet, um den Verkehr zu einem Endpunkt zu routen. NAT-Techniken sind auf dem Fachgebiet bekannt und werden daher hierin nicht im Detail beschrieben. Im Allgemeinen ermöglichen NAT-Techniken jedoch, dass eine Vorrichtung als Vermittler zwischen zwei Vorrichtungen fungiert, während Aspekte jedes Datenpakets, wie z. B. eine Quell- und Zielnetzwerkadresse, umgeschrieben werden, um die Kommunikation zwischen den Vorrichtungen zu erleichtern. Gemäß Ausführungsformen der vorliegenden Offenbarung kann jeder Zugangspunkt so betrieben werden, dass er eine Quellnetzwerkadresse einer anfordernden Vorrichtung durch seine eigene Netzwerkadresse ersetzt (z. B. eine Unicast-Netzwerkadresse, die den globalen Zugangspunkt eindeutig identifiziert) und die Zielnetzwerkadresse (z. B. die globale Netzwerkadresse eines Dienstes) durch eine Netzwerkadresse eines Endpunkts ersetzt, der diesen Dienst bereitstellt. Der Zugangspunkt kann dann das Paket an den Endpunkt routen, eine Antwort vom Endpunkt empfangen (falls vorhanden), eine Rückü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 des anfordernden Vorrichtung ersetzen) und das Paket an das anfordernde Vorrichtung zurücksenden. In einer Ausführungsform kann der Zugangspunkt Portübersetzung (auf dem Fachgebiet bekannt) verwenden, um die Unterscheidung von Verkehrsflüssen (Reihen von zusammenhängenden Paketen) zu erleichtern, wenn NAT genutzt wird, um die korrekte Übersetzung von Adressen sicherzustellen, wenn Verkehr von mehreren anfordernden Vorrichtungen verarbeitet wird.
  • Vorteilhafterweise ermöglicht es die Verwendung von NAT dem Zugangspunkt, den von einer Client-Vorrichtung empfangenen Verkehr an einen Endpunkt weiterzuleiten, und zwar mit minimaler Störung einer Verbindung zwischen der Client-Vorrichtung und dem Endpunkt. Durch die Nutzung von NAT ist es beispielsweise nicht erforderlich, dass ein Zugangspunkt als „Terminationspunkt“ für bestimmte Netzwerkprotokolle, wie z. B. das Transmission Control Protocol (TCP), fungiert. Alternative Routing-Techniken können z. B. verursachen, dass ein Zugangspunkt eine TCP-Verbindung von einer Client-Vorrichtung akzeptiert und eine zweite TCP-Verbindung mit einem Endpunkt initialisiert. Die Aufrechterhaltung mehrerer solcher Verbindungen (und Korrespondenzen zwischen ihnen) kann die Ressourcennutzung eines Zugangspunkts erheblich erhöhen und seine Kapazität zum Routen des an globale Netzwerkadressen adressierten Verkehrs verringern. Daher kann die Verwendung von NAT Vorteile gegenüber solchen Techniken bereitstellen.
  • Darüber hinaus ermöglicht die Verwendung von NAT an einem Zugangspunkt, dass der Verkehr an eine globale Netzwerkadresse geleitet wird, die sich von einer beliebigen Adresse unterscheidet, die von einem Endpunkt verwendet wird, wodurch die Offenbarung der tatsächlich vom Endpunkt verwendeten Adresse verhindert wird. Daher kann der Endpunkt vor dem direkten Empfang von Verkehr geschützt werden. Dies wiederum kann die Anfälligkeit des Endpunkts für Netzwerkangriffe, wie z. B. Denial-of-Service(DoS)-Angriffe, verringern oder eliminieren. Auf diese Weise können die globalen Zugangspunkte ähnliche Vorteile bereitstellen wie diejenigen, die von herkömmliche Content Delivery Networks (CDNs) bereitgestellt werden. Im Gegensatz zu CDNs müssen die Zugangspunkte jedoch nicht die Funktionalität des Dienstes replizieren (z. B. durch Umsetzen eines Webservers an jedem Einwählknoten innerhalb des CDN). Vielmehr können die Zugangspunkte der vorliegenden Offenbarung den Verkehr durch den Zugangspunkt fließen lassen, sodass Pakete einer anfordernden Vorrichtung einen Endpunkt erreichen können, der den Dienst bereitstellt. Unter anderem aus diesem Grund können die hierin offenbarten globalen Zugangspunkte einen größeren Funktionsumfang als CDNs bereitstellen, wodurch Lastverteilung und Aufteilung auf eine beliebige Anzahl unterschiedlicher netzwerkbasierter Dienste ermöglicht wird.
  • In einer anderen Ausführungsform ist jeder Zugangspunkt so konfiguriert, dass er Verkapselung nutzt, um den Verkehr zu einem Endpunkt zu routen. Die Verkapselung ist eine bekannte Netzwerktechnik und wird daher hierin nicht im Detail beschrieben. Im Allgemeinen kann die Verkapselung jedoch dazu genutzt werden, um zusätzliche Informationen (häufig in Form eines Headers und mitunter auch in Form eines Trailers) zu einem Datenpaket hinzuzufügen, wodurch das Datenpaket „eingewickelt“ oder verkapselt wird, um ein verkapseltes Datenpaket zu ergeben. Im Kontext der vorliegenden Offenbarung kann die Verkapselung genutzt werden, um einen „Netzwerktunnel“ zwischen jedem Zugangspunkt und Endpunkt bereitzustellen. Insbesondere, wenn ein Paket an einem Zugangspunkt von einer Client-Vorrichtung empfangen wird und an eine Netzwerkadresse eines Dienstes adressiert ist, der von einem Endpunkt bereitgestellt wird, kann der Zugangspunkt das Paket mit zusätzlichen Informationen verkapseln, die es ermöglichen, das Paket an einen ausgewählten Endpunkt zu routen, wie z. B. eine Netzwerkadresse des Endpunkts. Das verkapselte Paket kann dann über ein physisches Netzwerk zum Endpunkt geroutet werden. Der Endpunkt kann das verkapselte Paket „entkapseln“, um die zusätzlichen Informationen zu entfernen, und das entkapselte Paket so verarbeiten, als ob es direkt von der Client-Vorrichtung empfangen worden wäre.
  • In einer Ausführungsform kann der Endpunkt der Client-Vorrichtung direkt über ein physisches Netzwerk antworten, das den Endpunkt mit der Client-Vorrichtung verbindet. In einer anderen Ausführungsform kann der Endpunkt der Client-Vorrichtung antworten, indem er ein Antwortpaket verkapselt und das verkapselte Antwortpaket zurück an den Zugangspunkt überträgt. Der Zugangspunkt kann das Antwortpaket wiederum entkapseln und das Antwortpaket an den Client zurücksenden. Das direkte Zurücksenden von Antworten von einem Endpunkt an eine Client-Vorrichtung kann die Arbeitslast eines Zugangspunkts vorteilhaft reduzieren und kann auch den Verkehr in einem physischen Netzwerk, das den Zugangspunkt mit dem Endpunkt verbindet, verringern. Das direkte Zurücksenden von Antworten kann jedoch die Nutzung eines physischen Netzwerks erfordern, das den Endpunkt mit der Client-Vorrichtung verbindet und das möglicherweise nicht so robust ist wie das physische Netzwerk, das den Zugangspunkt mit dem Endpunkt verbindet. Wenn z. B. der Endpunkt und der Zugangspunkt über ein privates Netzwerk verbunden sind, während der Zugangspunkt, der Endpunkt und die Client-Vorrichtung über ein öffentliches Netzwerk (z. B. das Internet) verbunden sind, kann das Zurücksenden von Antworten über den Zugangspunkt (anstelle des direkten Zurücksendens) bevorzugt sein, da es bevorzugt sein kann, die gesamte über das öffentliche Netzwerk zurückgelegte Strecke zu minimieren (z. B. wenn sich der Zugangspunkt näher bei der Client-Vorrichtung befindet als der Endpunkt).
  • Im Allgemeinen kann die Verkapselung von Paketen zwischen Zugangspunkten und Endpunkten die Verwendung der Rechenressourcen von Zugangspunkten und Endpunkten erhöhen, verglichen mit der Verwendung von NAT, um Pakete von Zugangspunkten zu Endpunkten zu routen. Allerdings kann die Verkapselung auch Vorteile gegenüber einer NAT-Umsetzung bereitstellen. Beispielsweise kann die Verkapselung eine Ausfallsicherheit der TCP-Sitzung bereitstellen, falls Pakete einer Client-Vorrichtung während der TCP-Sitzung an unterschiedliche globale Zugangspunkte geroutet werden. Ein solches Routing kann z. B. basierend auf dem Betrieb von Netzwerken zwischen der Client-Vorrichtung und den unterschiedlichen Zugangspunkten erfolgen, und zwar aufgrund von möglichen Änderungen dessen, wie Netzwerke Anycast-Bekanntmachungen der unterschiedlichen Zugangspunkte verarbeiten. Wenn ein Zugangspunkt NAT nutzt, um Pakete an einen Endpunkt zu routen, kann jeder Zugangspunkt NAT-Informationen unabhängig voneinander pflegen. Somit, wenn Pakete der Client-Vorrichtung an einen anderen Zugangspunkt geroutet werden, verfügt dieser zweite Zugangspunkt möglicherweise nicht über ausreichende Informationen, um die Kommunikation des Clients kontrolliert zu übernehmen (z. B. sind die transformierten Pakete des zweiten Zugangspunkts möglicherweise nicht identisch mit denen, die am ursprünglichen Zugangspunkt erzeugt worden wären). Dies kann dazu führen, dass die TCP-Sitzung der Client-Vorrichtung und des Endpunkts unterbrochen wird und die Client-Vorrichtung die TCP-Verbindung neu herstellen muss.
  • Im Gegensatz dazu kann die Verkapselung eine kontrollierte Handhabung der Umleitung von Client-Anforderungen zwischen Zugangspunkte ermöglichen. Bei entweder NAT- oder Verkapselungsumsetzungen kann jeder Zugangspunkt so konfiguriert sein, dass er einen Endpunkt auf konsistente Weise auswählt (z. B. durch Anwenden desselben Auswahlalgorithmus). Es ist also zu erwarten, dass Pakete von Client-Vorrichtungen an denselben Endpunkt geroutet werden, unabhängig davon, an welchen Zugangspunkt sie ursprünglich gesendet wurden. Darüber hinaus müssen durch die Nutzung der Verkapselung keine Daten der ursprünglichen Pakete von Client-Vorrichtungen beim Routen der Pakete zum Endpunkt geändert werden. Vielmehr können diese Daten verkapselt werden (z. B. mit zusätzlichen Informationen, die das Routen zum Endpunkt ermöglichen) und nach der Entkapselung am Endpunkt wiedererlangt werden. Aus diesem Grund können, auch wenn Client-Pakete an unterschiedliche Zugangspunkte geroutet werden, die endgültigen Daten, die dem Endpunkt nach der Entkapselung zur Verfügung stehen, gleich sein, was es dem Endpunkt ermöglicht, eine TCP-Sitzung mit der Client-Vorrichtung auch dann aufrechtzuerhalten, wenn Daten durch unterschiedliche Zugangspunkte strömen.
  • In einigen Ausführungsformen kann zur weiteren Verbesserung der Performance bei Umsetzungen, die eine Verkapselung nutzen, jeder Zugangspunkt so konfiguriert sein, dass er Endpunkte beim Herstellen von verbindungsorientierten Kommunikationssitzungen, wie z. B. TCP-Sitzungen, mit Client-Vorrichtungen unterstützt. Verbindungsorientierte Kommunikationssitzungen erfordern im Allgemeinen eine Sitzungsinitialisierungsphase, bei der die beiden an der Sitzung beteiligten Parteien kommunizieren, um ein gegenseitiges Verständnis des Kommunikationsstatus herzustellen. TCP-Sitzungen nutzen z. B. einen „Drei-Wege-Handschlag“. Der TCP-Drei-Wege-Handschlag ist auf dem Fachgebiet bekannt und wird daher hierin nicht im Detail beschrieben. Kurz gesagt wird jedoch eine TCP-Sitzung hergestellt, wenn eine erste Partei ein Synchronisierungs(„SYN“)-Paket an eine zweite Partei sendet (einschließlich einer Sequenznummer der ersten Partei, die während der Sitzung verwendet werden soll), die zweite Partei antwortet mit einem Synchronisierungsbestätigungs(„SYN-ACK“)-Paket (das die Sequenznummer der ersten Partei bestätigt und eine Sequenznummer der zweiten Partei enthält), und die erste Partei antwortet auf das SYN-ACK-Paket mit einem Bestätigungs(„ACK“)-Paket (das die Sequenznummer der zweiten Partei bestätigt). Da der Drei-Wege-Handschlag drei separate Kommunikationen zwischen den Parteien erfordert, werden Erhöhungen der Latenz zwischen den Parteien während des Handschlags um das Dreifache vergrößert. Im Kontext der vorliegenden Offenbarung, wenn beispielsweise die Kommunikation zwischen einer Client-Vorrichtung und einem Endpunkt eine Latenz von 100 Millisekunden (ms) aufweist, ist zu erwarten, dass der Drei-Wege-Handschlag mindestens 300 Millisekunden dauert. Da ein solcher Handschlag vor der Übertragung von Daten über eine TCP-Sitzung erforderlich ist, ist es vorteilhaft, die für die Initialisierung der TCP-Sitzung erforderliche Zeit zu reduzieren.
  • Dementsprechend kann in Ausführungsformen der vorliegenden Offenbarung jeder globale Zugangspunkt so konfiguriert sein, dass er einen TCP-Drei-Wege-Handschlag mit einer.Client-Vorrichtung durchführt und dann die TCP-Verbindung an einen Endpunkt „übergibt“. Insbesondere kann jeder Zugangspunkt so konfiguriert sein, dass er auf eingehende SYN-Pakete von Client-Vorrichtungen „lauscht“ und auf solche Pakete mit dem Durchführen des TCP-Drei-Wege-Handschlags antwortet. Nachdem der Handschlag abgeschlossen ist, kann der Zugangspunkt TCP-Sitzungsinformationen (z. B. die Sequenznummer der ersten und zweiten Partei der TCP-Sitzung) an einen Endpunkt übermitteln, der ausgewählt ist, um der Client-Vorrichtung einen angeforderten Dienst bereitzustellen. Beim Empfang der TCP-Sitzungsinformationen kann der Endpunkt die TCP-Sitzung „annehmen“ und Datenpakete der Client-Vorrichtung so verarbeiten, als ob die TCP-Sitzung zwischen der Client-Vorrichtung und dem Endpunkt hergestellt worden wäre. Da davon ausgegangen werden kann, dass sich der Zugangspunkt in Bezug auf die Latenz „näher“ an der Client-Vorrichtung befindet, verringert sich die für die Herstellung der TCP-Sitzung benötigte Zeit, ohne dass die Fähigkeit der Client-Vorrichtung und des Endpunkts zur Kommunikation über eine gemeinsame TCP-Sitzung gestört wird. Während hierin Beispiele in Bezug auf TCP-Handschläge bereitgestellt werden, erfordern zustandsorientierte Kommunikationssitzungen im Allgemeinen jeweils eine Initialisierungsphase. Hierin beschriebene Ausführungsformen können genutzt werden, um eine solche Initialisierungsphase an einem Zugangspunkt durchzuführen, während das Übergeben von Kontext für die verbindungsorientierte Kommunikationssitzung an einen Endpunkt es einer Client-Vorrichtung und dem Endpunkt ermöglicht, über die verbindungsorientierte Kommunikationssitzung zu kommunizieren.
  • Der Fachmann versteht in Anbetracht der vorliegenden Offenbarung, dass die hierin offenbarten Ausführungsformen die Fähigkeit von Rechensystemen, netzwerkzugängliche Dienste bereitzustellen, verbessern. Insbesondere verbessern Ausführungsformen der vorliegenden Offenbarung frühere Lastverteilungstechniken, indem sie eine skalierbare, ausfallsichere und reaktionsschnelle Lastverteilung über eine gemeinsame Netzwerkadresse hinweg bereitstellen und bekannte Lastverteilungstechniken verbessern. Darüber hinaus gehen die vorliegend offenbarten Ausführungsformen technische Probleme, die Rechensystemen inhärent sind; insbesondere die begrenzte Beschaffenheit von Rechenressourcen, mit denen netzwerkzugängliche Dienste bereitgestellt werden, und die Schwierigkeiten der Lastverteilung von Anforderungen solcher Dienste auf eine skalierbare, ausfallsichere und reaktionsschnelle Weise an. Diese technischen Probleme werden durch die verschiedenen hierin beschriebenen technischen Lösungen angegangen, einschließlich der Verwendung eines verteilten Satzes von Zugangspunkten, der mit einer gemeinsamen Netzwerkadresse assoziiert ist, von denen jeder so konfiguriert ist, dass er Anforderungen für einen Dienst empfängt und die Anforderungen an Endpunkte des Dienstes mindestens teilweise basierend auf einer Lastverteilung der Anforderungen unter den Endpunkten routet. Somit stellt die vorliegende Offenbarung eine Verbesserung gegenüber existierenden Netzwerklastverteilungssystem und Rechensystemen im Allgemeinen dar.
  • Die vorgenannten Aspekte und viele der zugehörigen Vorteile der Offenbarung sind leichter zu erkennen, da Selbige durch Bezugnahme auf die folgende. Beschreibung verständlicher werden, wenn diese in Verbindung mit den beigefügten Zeichnungen betrachtet wird.
  • 1 ist ein Blockdiagramm, das eine veranschaulichende logische Umgebung 100 darstellt, die mehrere Client-Vorrichtungen 102 in Kommunikation mit einem Satz von globalen Zugangspunkten 106A-N über ein erstes Netzwerk 104 beinhaltet, wobei die globalen Zugangspunkte 106A-N in Kommunikation mit einem Satz von Rechenzentren 110AN über ein zweites Netzwerk 108 stehen. Während die Client-Vorrichtungen 102, die globalen Zugangspunkte 106 und die Rechenzentren 110 in 1 in Gruppen dargestellt sind, können die Client-Vorrichtungen 102, die globalen Zugangspunkte 106 und die Rechenzentren 110 geografisch entfernt sein und unabhängig voneinander geführt oder betrieben werden. Beispielsweise könnten die Client-Vorrichtungen 102 eine Vielzahl von Benutzern an verschiedenen globalen, kontinentalen oder regionalen Orten darstellen, die auf netzwerkzugängliche Dienste zugreifen, die von den Rechenzentren 110 bereitgestellt werden, wobei die Rechenzentren ferner auf verschiedene globale, kontinentale oder regionale Orte verteilt sein können. Die globalen Zugangspunkte 106 können ähnlich verteilt sein. In einer Ausführungsform stellen die Rechenzentren 110 Vorrichtungen an Orten dar, die unter der Kontrolle einer einzigen Entität stehen, wie z. B. eines „Cloud-Computing“-Anbieters, während die globalen Zugangspunkte 106 Vorrichtungen an Orten mit mehreren Mietern darstellen, wie z. B. Netzwerk-„Einwählknoten“ oder Internet Exchange Points (IXPs). Die globalen Zugangspunkte 106 können im Allgemeinen zahlreicher sein als die Rechenzentren 110 und sich an unterschiedlichen physischen Standorten befinden. In anderen Ausführungsformen können sich jedoch ein oder mehrere der Zugangspunkte 106 innerhalb eines oder mehrerer Rechenzentren 110 befinden. Dementsprechend soll die Gruppierung von Client-Vorrichtungen 102, Zugangspunkten 106 und Rechenzentren 110 in 1 eine logische und nicht eine physische Gruppierung darstellen.
  • 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 Personal Area Network, ein Local Area Network, ein Wide Area Network, ein Kabelnetzwerk, ein Satellitennetzwerk, ein Mobilfunktelefonnetzwerk oder eine Kombination davon sein. In der beispielhaften Umgebung aus 1 ist das Netzwerk 104 ein Global Area Network (GAN), wie z. B. das Internet, während das Netzwerk 108 ein privates Netzwerk ist, das für den Verkehr bestimmt ist, der mit einer Entität assoziiert ist, welche die Rechenzentren 110 und Zugangspunkte 106 bereitstellt. Protokolle und Komponenten für die Kommunikation über die anderen vorgenannten Arten von Kommunikationsnetzwerken sind dem Fachmann auf dem Gebiet der Computerkommunikation hinreichend bekannt und müssen daher hierin nicht detaillierter beschrieben werden.
  • Obwohl jede der Client-Vorrichtungen 102 und jeder der Zugangspunkte 106 als eine einzelne Verbindung mit dem Netzwerk 104 aufweisend dargestellt ist, können individuelle Komponenten der Client-Vorrichtungen 102 und der Zugangspunkte 106 an unterschiedlichen Punkten mit dem Netzwerk 104 verbunden sein (z. B. über unterschiedliche Nachbarnetzwerke innerhalb des Netzwerks 104). In einigen Ausführungsformen können die Rechenzentren 110 zusätzlich oder alternativ mit dem Netzwerk 104 verbunden sein. Auf ähnliche Weise, obwohl jeder der Zugangspunkte 106 und jedes der Rechenzentren 110 als eine einzelne Verbindung mit dem Netzwerk 108 aufweisend dargestellt ist, können individuelle Komponenten der Zugangspunkte 106 und der Rechenzentren 110 an unterschiedlichen Punkten mit dem Netzwerk 108 verbunden sein. Dementsprechend können die Kommunikationszeiten und - fähigkeiten zwischen den Komponenten aus 1 variieren. Die Netzwerkkonfiguration aus 1 soll einen Kommunikationsweg in Ausführungsformen der vorliegenden Offenbarung veranschaulichen und nicht unbedingt alle möglichen Kommunikationswege darstellen.
  • Die Client-Vorrichtungen 102 können eine beliebige Anzahl unterschiedlicher Rechenvorrichtungen beinhalten, die in der Lage ist, mit den globalen Zugangspunkten 106 zu kommunizieren. Individuelle Client-Vorrichtungen 102 können beispielsweise einem Laptop- oder Tablet-Computer, einem Personal Computer, einem tragbaren Computer, einem Server, einem persönlichen digitalen Assistenten (PDA), einem hybriden PDA/Mobiltelefon, einem Mobiltelefon, einem eBook-Reader, einer Set-Top-Box, einer Kamera, einer digitalen Medienwiedergabevorrichtung und dergleichen entsprechen. In einigen Fällen werden die Client-Vorrichtungen 102 von Endbenutzern betrieben. In einem anderen Fall stellen die Client-Vorrichtungen 102 selbst netzwerkzugängliche Dienste bereit, die mit den globalen Zugangspunkten 106 interagieren, um auf andere netzwerkzugängliche Dienste zuzugreifen.
  • Die Rechenzentren 110 aus 1 beinhalten auf veranschaulichende Weise Endpunkt-Rechenvorrichtungen, die einen oder mehrere netzwerkzugängliche Dienste im Auftrag eines oder mehrerer Dienstanbieter bereitstellen. Auf veranschaulichende Weise können die Rechenzentren 110 von einem „Cloud-Computing“-Anbieter betrieben werden, der Dienstanbietern Host-Rechenvorrichtung innerhalb des Rechenzentrums für die Bereitstellung ihrer Dienste zur Verfügung stellt. Die Bereitstellung von Cloud Computing kann im Allgemeinen den Betrieb des Rechenzentrums verwalten, während verschiedene Mechanismen für die Dienstanbieter bereitgestellt werden, um ihre jeweiligen Endpunkte zu konfigurieren. Eine veranschaulichende Konfiguration eines Rechenzentrums 110 ist nachstehend in Bezug auf 2 bereitgestellt.
  • Gemäß Ausführungsformen der vorliegenden Offenbarung kann der Cloud-Computing-Anbieter es Dienstanbietern ermöglichen, ihre Endpunkte mit einer oder mehreren globalen Netzwerkadressen zu assoziieren, die im Netzwerk 104 adressierbar sind, um mit den Rechenzentren 110 auf eine lastverteilte Weise zu interagieren. Der Cloud-Computing-Anbieter kann es den Dienstanbietern ferner ermöglichen, zu spezifizieren, wie eine solche Lastverteilung erfolgen soll, z. B. durch Spezifizieren eines Prozentsatzes der Anforderungen, die an jedes Rechenzentrum 110 geroutet werden sollen. Der Cloud-Computing-Anbieter kann es den Dienstanbietern ferner ermöglichen, die Konfiguration der Endpunkte unabhängig von den globalen Netzwerkadressen zu ändern, sodass eine Änderung der spezifischen Endpunkte, die einen Dienst bereitstellen, keine Neukonfiguration der Netzwerkadressen erfordert. Die Verwendung von globalen Netzwerkadressen kann den Betrieb von Netzwerkdiensten erheblich vereinfachen, da eine beliebige Client-Vorrichtung 102, das sich mit dem Dienst verbinden möchte, einfach eine Anforderung an eine globale Netzwerkadresse des Dienstes übertragen kann. Änderungen an den Endpunkten, die den Dienst bereitstellen, können dann vorgenommen werden, ohne dass z. B. 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 die Endpunkte für den Dienst innerhalb der Rechenzentren 110 ändern.
  • Um globale Netzwerkadressen zu erleichtern, ist ein Satz von globalen Zugangspunkten 106A-N bereitgestellt. Jeder Zugangspunkt kann im Allgemeinen eine oder mehrere Rechenvorrichtungen beinhalten, die so konfiguriert sind, dass sie Anforderungen von Client-Vorrichtungen 102 zur Interaktion mit Diensten erhalten und solche Anforderungen an einen Endpunkt innerhalb eines Rechenzentrums 110 routen, der mindestens teilweise basierend auf Lastverteilungsanforderungen über die Rechenzentren 110 hinweg ausgewählt wird. Die Zugangspunkte 106 können außerdem als eine Art Proxy für die Endpunkte fungieren, sodass der Verkehr zwischen den Client-Vorrichtungen 102 und den Rechenzentren 110 durch die Zugangspunkte 106 strömen kann. Der Betrieb der Zugangspunkte 106 wird nachstehend detaillierter erörtert. Kurz gesagt, können sie jedoch Anycast-Techniken verwenden, um die Verfügbarkeit globaler Netzwerkadressen an Nachbarnetzwerkvorrichtungen innerhalb des Netzwerks 104 zu übertragen, was in einer Ausführungsform Vorrichtungen einschließt, die nicht unter der Kontrolle einer gemeinsamen Entität stehen, wie sie die Zugangspunkte 106A bereitstellt. Die Zugangspunkte 106 können somit Verkehr anziehen, der an die globalen Netzwerkadressen adressiert ist. Die Zugangspunkte 106 können danach einen Endpunkt auswählen, an den der Verkehr zu leiten ist, und zwar basierend auf Faktoren wie der Verfügbarkeit von Endpunkten, Lastverteilung zwischen den Rechenzentren 110 und Performance-Kriterien zwischen dem Zugangspunkt 106 und den verschiedenen Rechenzentren 110.
  • Nach dem Auswählen eines Rechenzentrums 110 kann ein Zugangspunkt 106 die Anforderung an den Endpunkt routen. In einer Ausführungsform verwendet der Zugangspunkt 106 NAT-Übersetzung oder Verkapselung, um die Anforderung an den Endpunkt über das Netzwerk 108 umzuleiten, wodurch die Offenbarung einer Netzwerkadresse des Endpunkts gegenüber den Client-Vorrichtungen 102 verhindert wird. Wenn verbindungsorientierte Kommunikationssitzungen zwischen Client-Vorrichtungen 102 und einem Endpunkt genutzt werden, kann der Zugangspunkt 106 so betrieben werden, dass er gemäß den vorliegenden Ausführungsformen eine Initialisierungsphase der Kommunikationssitzung im Auftrag des Endpunkts durchführt. In Fällen, in denen das Netzwerk 108 ein privates Netzwerk ist, können die globalen Zugangspunkte 106 ferner als ein „Ablade“-Punkt für den Verkehr zu den Endpunkten fungieren, indem sie diesen Verkehr von einem öffentlichen Netzwerk (z. B. Netzwerk 104) in das private Netzwerk 108 verschieben. Im Allgemeinen würde erwartet werden, dass ein solches privates Netzwerk eine bessere Performance als ein öffentliches Netzwerk aufweist, und daher kann ein solches Abladen die Geschwindigkeit der Kommunikation zwischen Client-Vorrichtungen 102 und Endpunkten weiter erhöhen.
  • Wie vorstehend erwähnt, können die Zugangspunkte 106 eine Vielfalt von Techniken umsetzen, um die Ausfallsicherheit eines Netzwerkdienstes unter Verwendung einer globalen Netzwerkadresse sicherzustellen. Auf veranschaulichende Weise kann die Verwendung von Anycast zur Bekanntmachung von Zugangspunkten 106 Ausfallsicherheit zwischen den Zugangspunkten 106 bereitstellen, da beim Ausfall eines individuellen Zugangspunkts 106 im Allgemeinen erwartet werden kann, dass es die Vorrichtungen des Netzwerks 104 veranlassen, Anforderungen an einen anderen Zugangspunkt 106 zu routen. Um mögliche Ausfälle des Netzwerks 104 zu anzugehen, kann außerdem jeder Zugangspunkt 106 so konfiguriert sein, dass er seine Ankündigung von globalen Netzwerkadressen im Netzwerk 104 steuert und mehrere Routing-Wege für jeden Dienst zum Zugangspunkt 106 bereitstellt. Zusätzliche Details zu einer solchen Steuerung von Ankündigungen zur Bereitstellung von Routing-Wegen sind nachstehend bereitgestellt. Um mögliche Ausfälle innerhalb eines Zugangspunktes 106 zu adressieren, kann jeder Zugangspunkt 106 ferner so konfiguriert sein, dass er mehrere Fluss-Manager beinhaltet, die unterschiedliche Verkehrsflüsse verarbeiten, die an globale Netzwerkadressen adressiert sind. Die Fluss-Manager können logisch, z. B. über Programm-Threads, und/oder physisch, z. B. über Prozessoren oder Rechenvorrichtungen, verteilt sein. Somit kann der Ausfall eines Fluss-Managers nur geringe oder keine Auswirkungen auf andere Fluss-Manager innerhalb eines Zugangspunktes 106 aufweisen, wodurch die Auswirkungen von Teilausfällen innerhalb eines Zugangspunktes 106 begrenzt werden. Eine veranschaulichende Konfiguration eines Zugangspunkts 106 ist nachstehend unter Bezugnahme auf 4 erörtert.
  • 2 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines Rechenzentrums 110 aus 1 darstellt. Wie in 2 gezeigt, beinhaltet das Rechenzentrum 110 einen Endpunkt-Pool 201, der einen Satz von Endpunkten 202A-N enthält. Jeder Endpunkt 202 stellt auf veranschaulichende Weise eine Rechenvorrichtung dar, die so konfiguriert ist, dass sie Zugang zu einem netzwerkzugänglichen Dienst bereitstellt. In einer Ausführungsform sind die Endpunkte 202 individuelle physische Rechenvorrichtungen. In einer anderen Ausführungsform sind die Endpunkte 202 virtualisierte Rechenvorrichtungen, die auf physischen Rechenvorrichtungen ausgeführt werden. In noch einer anderen Ausführungsform sind die Endpunkte 202 Sammlungen von (physischen oder virtualisierten) Rechenvorrichtungen, die gemeinsam so konfiguriert sind, dass sie Zugang zu einem netzwerkzugänglichen Dienst bereitstellen. Zum Beispiel kann jeder Endpunkt 202 eine Sammlung von Vorrichtungen sein, bei der es sich um eine Lastverteilervorrichtung handelt, die so konfiguriert ist, dass sie Anforderungen an den Endpunkt 202 unter der Sammlung von Vorrichtungen verteilt. Jeder Endpunkt 202 steht in Kommunikation mit dem Netzwerk 108 und ist somit im Netzwerk 108 adressierbar. Die Anzahl der Endpunkte 202 kann z. B. in Abhängigkeit von den Kapazitätsanforderungen des netzwerkzugänglichen Dienstes variieren. Auf veranschaulichende Weise kann ein Dienstanbieter für einen solchen Dienst einen Vertrag mit einem Betreiber des Rechenzentrums 110 (z. B. einem Cloud-Computing-Anbieter) abschließen, um die Endpunkte 202 zu erzeugen und bereitzustellen.
  • In einer Ausführungsform kann die Anzahl der Endpunkte 202 gemäß einer aktuellen oder historischen Nachfrage nach dem netzwerkzugänglichen Dienst variieren. Um eine variierende Anzahl von Endpunkten 202 zu erleichtern, kann das Rechenzentrum einen Ressourcen-Manager 206 beinhalten (z. B. direkt auf einer physischen Rechenvorrichtung oder als virtualisierte Vorrichtung auf einer physischen Host-Rechenvorrichtung umgesetzt), der die Last der Endpunkte 202 überwacht (z. B. in Bezug auf Anforderungen pro Sekunde, Nutzung von Rechenressourcen, Antwortzeit usw.) und die Anzahl der Endpunkte 202 dynamisch anpasst, um die Last innerhalb von Schwellenwerten zu halten. Wenn die Endpunkte 202 beispielsweise als virtualisierte Vorrichtungen umgesetzt sind, kann der Ressourcen-Manager 206 neue virtualisierte Vorrichtungen generieren und bereitstellen, wenn ein aktueller Satz von Endpunkten 202 Nutzungsmetriken aufweist, welche die gewünschten oberen Nutzungsparameter überschreiten, und virtualisierte Vorrichtungen „herunterfahren“ und entfernen, wenn die Metriken unter die unteren Nutzungsparameter fallen. Der Ressourcenmanager 206 kann ferner so konfiguriert sein, dass er bei der Modifizierung einer Anzahl von Endpunkten 202 innerhalb des Pools 201 die globalen Zugangspunkte 106 über Netzwerkadresseninformationen für Endpunkte 202 innerhalb des Pools 201 informiert, sodass die Zugangspunkte 106 den Verkehr an die Endpunkte 202 adressieren können.
  • Darüber hinaus beinhaltet das Rechenzentrum 110 aus 2 eine Zustandsüberprüfungsvorrichtung 204, die so konfiguriert ist, dass sie den Zustand der Endpunkte 202 innerhalb des Pools 201 überwacht. Auf veranschaulichende Weise kann die Zustandsüberprüfungsvorrichtung 204 periodisch (z. B. alle n Sekunden) eine Anforderung an die Endpunkte 202 übertragen und überwachen, ob eine entsprechende Antwort empfangen wird. Wenn dies der Fall ist, kann die Zustandsüberprüfungsvorrichtung 204 den Endpunkt 202 als gesund betrachten. Wenn dies nicht der Fall ist, kann die Zustandsüberprüfungsvorrichtung 204 den Endpunkt 202 als ungesund betrachten. Die Zustandsüberprüfungsvorrichtung 204 kann auf veranschaulichende Weise die globalen Zugangspunkte 106 über ungesunde Endpunkte 202 benachrichtigen, um die Zugangspunkte 106 dazu zu veranlassen, das Routen von Verkehr zu dem Endpunkt 202 zu reduzieren oder zu eliminieren, während der Endpunkt 202 ungesund ist. In einigen Fällen kann die Zustandsüberprüfungsvorrichtung 204 ferner so konfiguriert sein, dass sie den Zustand der globalen Zugangspunkte 106, den Zustand der Endpunkte 202 in anderen Rechenzentren 110 oder den Zustand eines Netzwerkwegs zwischen der Zustandsüberprüfungsvorrichtung 204 und den Zugangspunkten 106 prüft. Zum Beispiel kann die Zustandsüberprüfungsvorrichtung 204 periodisch Informationen an den Zugangspunkt 106 übertragen und eine Antwort vom Zugangspunkt 106, Netzwerkmetriken bezüglich der Antwort (z. B. Latenz) oder dergleichen überwachen. Die Zustandsüberprüfungsvorrichtung 204 kann diese Informationen an die Zugangspunkte 106 melden, um das Routen des Verkehrs zu den Endpunkten 202A innerhalb des Rechenzentrums 110 zu erleichtern. Auf veranschaulichende Weise kann die Zustandsüberprüfungsvorrichtung 204 Zustandsinformationen für Endpunkte 202 an den Konfigurationsdatenspeicher 210 (z. B. eine Datenbank in dem Datenspeicher 210) melden, die durch den Betrieb des Konfigurations-Managers 208 auf die nachstehend beschriebenen Weise an die Zugangspunkte 106 weitergegeben werden können (z. B. als Teil eines Konfigurationspakets oder -stücks).
  • Das Rechenzentrum 110 aus 2 beinhaltet ferner einen Konfigurations-Manager 208, der so konfiguriert ist, dass Dienstanbieter den Betrieb der Rechenzentren 110 und der globalen Zugangspunkte 106 konfigurieren können. Auf veranschaulichende Weise kann der Konfigurations-Manager 208 eine Schnittstelle bereitstellen, über die Benutzer Endpunkte 202 spezifizieren können, die einen netzwerkzugänglichen Dienst bereitstellen, diese Endpunkte 202 konfigurieren und den Ressourcen-Manager 206 so konfigurieren, dass die Endpunkte nach oben oder unten skaliert werden. Der Konfigurations-Manager 208 kann es Dienstanbietern ferner ermöglichen, diesen Endpunkten eine globale Netzwerkadresse zuzuweisen und Lastverteilungsparameter für das Routen des an die globale Netzwerkadresse adressierten Verkehrs an verschiedene Rechenzentren 110 zu spezifizieren. Die von Dienstanbietern erstellten Konfigurationen können in einem Konfigurationsdatenspeicher 210 gespeichert werden, der einer beliebigen dauerhaften oder im Wesentlichen dauerhaften Speichervorrichtung entsprechen kann (z. B. Festplattenlaufwerke, Festkörperlaufwerke, netzwerkgebundene Speichervorrichtungen usw.). In einigen Fällen kann der Konfigurationsdatenspeicher 210 mehrere Darstellungen einer Konfiguration eines Dienstanbieters beinhalten. Um beispielsweise eine schnelle Neukonfiguration der globalen Zugangspunkte 106 zu erleichtern, kann der Konfigurationsdatenspeicher 210 eine Datenbank (z. B. eine relationale Datenbank) beinhalten, die immer dann modifiziert wird, wenn ein Dienstanbieter eine Änderung an seiner Konfiguration vornimmt. Der Konfigurations-Manager 208 kann periodisch (z. B. alle 100 Millisekunden, jede 1 Sekunde, alle 2 Sekunden, 5 Sekunden, 30 Sekunden usw.) bestimmen, ob Änderungen an der Datenbank vorgenommen wurden, und, wenn dies der Fall ist, ein neues Konfigurationspaket für die globalen Zugangspunkte 106 generieren, wobei das Konfigurationspaket die Änderungen an der Datenbank (und somit an der Konfiguration des Dienstanbieters) im Vergleich zu einem vorherigen Konfigurationspaket umschließt. Der Konfigurations-Manager 208 kann dann das Konfigurationspaket dann im Konfigurationsdatenspeicher 210 zum Abruf durch die globalen Zugangspunkte 106 speichern. In einer Ausführungsform ist jeder globale Zugangspunkt 106 so konfiguriert, dass er periodisch (z. B. alle 100 Millisekunden, jede 1 Sekunde, alle 2 Sekunden, 5 Sekunden, 30 Sekunden usw.) den Konfigurationsdatenspeicher 210 abfragt, um zu bestimmen, ob ein neues Konfigurationspaket vorhanden ist, und, wenn dies der Fall ist, um das Paket abzurufen und umzusetzen. In einigen Fällen kann ein Konfigurationspaket in Paket-„Stücke“ unterteilt sein, die einen Abschnitt der Konfiguration darstellen. Die globalen Zugangspunkte 106 können so konfiguriert sein, dass sie nur die Stücke abrufen, die in Bezug auf ein existierendes Stück modifiziert wurden. Modifikationen können z. B. basierend auf der Versionierung von Stücken oder eines Pakets verfolgt werden. Darüber hinaus können in einigen Ausführungsformen Pakete oder Stücke im Datenspeicher 210 als Unterschiede oder „Deltas“ zu einer früheren Version gespeichert werden, sodass ein Zugangspunkt 106 nur Änderungen seit einer früheren Version des Stücks abrufen kann, wodurch der zur Aktualisierung eines Pakets oder Stücks erforderliche Datentransfer reduziert wird. In einer Ausführungsform kann der Konfigurations-Manager 208 periodisch (z. B. alle 100 Millisekunden, 500 Millisekunden usw.) Pakete oder Stücke „zu einem Prüfpunkt machen“, indem er alle Änderungen seit einem früheren Prüfpunkt sammelt und das Paket oder Stück als eigenständige Version speichert. Ein solches als Checkpointing bezeichnetes Vorgehen kann eine schnelle Neukonfiguration erleichtern, falls ein globaler Zugangspunkt 106 keinen Bezugsrahmen für ein vorheriges Paket oder Stück aufweist.
  • In einer Ausführungsform beinhaltet nur ein Rechenzentrum 110 der Rechenzentren 110A-N aus 1 den Konfigurations-Manager 208, wobei der Manager 208 die Konfiguration des jeweiligen Dienstanbieters an die anderen Rechenzentren 110 und Zugangspunkte 106 weitergibt. In einer anderen Ausführungsform beinhaltet jedes Rechenzentrum 110 einen Konfigurations-Manager 208 und die Manager 208 jedes Rechenzentrums 110 können kommunizieren, um Konfigurationen zwischen den Rechenzentren 110 und mit den Zugangspunkten 106 zu synchronisieren.
  • Während nur einige Komponenten des Rechenzentrums 110 als mit dem Netzwerk 108 in Kommunikation stehend dargestellt sind, können andere Komponenten zusätzlich mit dem Netzwerk 108 und/oder dem Netzwerk 104 in Kommunikation stehen. Die Linien in 2 sollen nicht alle tatsächlichen oder möglichen Netzwerkverbindungen darstellen, sondern vielmehr einen möglichen Fluss des dienstbezogenen Verkehrs zu den Endpunkten 202 veranschaulichen.
  • Darüber hinaus, obwohl in einem Rechenzentrum 110 gezeigt, können die globalen Zugangspunkte 106 in einer Ausführungsform ebenfalls einen Konfigurations-Manager 208 beinhalten, der eine direkte Konfiguration des Zugangspunkts 106 ermöglicht. In einer anderen Ausführungsform schließen die globalen Zugangspunkte 106 einen beliebigen Konfigurations-Manager 208 und Datenspeicher 210 aus. Wenn beispielsweise Zugangspunkte 106 in Umgebungen mit mehreren Mietern umgesetzt sind (z. B. nicht von anderen Parteien als einem Betreiber der Zugangspunkte 106 betrieben oder für diese zugänglich), können die Zugangspunkte 106 so konfiguriert sein, dass sie eine beliebige dauerhafte Speicherung ausschließen und stattdessen bei der Initialisierung des Zugangspunkts 106 Konfigurationsinformationen von einem Rechenzentrum 110 abrufen. Auf diese Weise kann die Sicherheit der Zugangspunkte 106 erhöht werden, da ein Ausschalten des Zugangspunkts 106 voraussichtlich zum Verlust beliebiger sensibler Daten führen würde, die sich möglicherweise auf dem Zugangspunkt 106 befinden.
  • Obwohl das Rechenzentrum 110 als einen Endpunkt-Pool 201 beinhaltend dargestellt ist, der einem netzwerkzugänglichen Dienst entspricht, kann das Rechenzentrum 110 zahlreiche Pools 201 hosten, die jeweils einem anderen Dienst entsprechen. Somit können mehrere Dienstanbieter ein Rechenzentrum 110 nutzen. Außerdem kann, wie vorstehend erwähnt, jeder netzwerkzugängliche Dienst von den Endpunkten 202 über mehrere Rechenzentren 110 hinweg bereitgestellt werden. Dementsprechend können die globalen Zugangspunkte aus FIG..1 den Verkehr zu einem solchen Dienst über die Rechenzentren 110 hinweg verteilen.
  • Gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet das Rechenzentrum 110 ferner einen Sitzungsübergabe-Manager 212, der so konfiguriert ist, dass er die Annahme von verbindungsorientierten Kommunikationssitzungen mit Clients 102 erleichtert, die an einem globalen Zugangspunkt 106 initialisiert wurden. Wie vorstehend erörtert, können globale Zugangspunkte 106 in einigen Fällen so konfiguriert sein, dass sie eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung durchführen, wie z. B. den TCP-Drei-Wege-Handschlag, und danach die Kommunikationssitzung an einen Endpunkt 202 weitergeben. 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 generiert, die diesen Kontext enthalten. Der Endpunkt 202 kann z. B. durch Modifikation von Netzwerkprotokoll-Handlern innerhalb eines Betriebssystems eines Endpunkts 202 (z. B. durch Modifikation eines Kerns, um TCP-Kontextinformationen von einem globalen Zugangspunkt 106 zu akzeptieren und zu anzunehmen) so konfiguriert werden. Es kann jedoch bevorzugt sein, dass Endpunkte 202 nicht so konfiguriert sein müssen, um einer großen Vielfalt von Endpunkten 202 die Nutzung der globalen Zugangspunkte 106 zu ermöglichen. Um dies zu ermöglichen, kann das Rechenzentrum 110 zudem einen Sitzungsübergabe-Manager 212 beinhalten, der so konfiguriert ist, dass er eine verbindungsorientierte Kommunikationssitzung von einem globalen Zugangspunkt 106 akzeptiert und annimmt. Der Sitzungsübergabe-Manager 212 kann dann eine separate verbindungsorientierte Kommunikationssitzung mit dem vom Zugangspunkt 106 ausgewählten Endpunkt 202 herstellen, um einer Client-Vorrichtung 102 einen Dienst bereitzustellen und als „Mittelmann“ zwischen den beiden Sitzungen zu fungieren. Da der Sitzungsübergabe-Manager 212 und der Endpunkt 202 im Allgemeinen gemeinsam im Rechenzentrum 110 untergebracht sein können, kann davon ausgegangen 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.
  • 3 ist ein Blockdiagramm, das eine veranschaulichende Konfiguration eines globalen Zugangspunkts aus 1 darstellt. Wie in 3 gezeigt, steht jeder globale Zugangspunkt 106 über einen Router 302 in Kommunikation mit dem Netzwerk 104. Während in 2 nur ein einzelner Router 302 dargestellt ist, können die Zugangspunkte 106 mehrere Router 302 beinhalten. Darüber hinaus kann jeder Router 302, obwohl nur eine einzelne Verbindung zum Netzwerk 104 dargestellt ist, mehrere Verbindungen zum Netzwerk 104 beinhalten, möglicherweise zu mehreren unterschiedlichen Nachbarvorrichtungen innerhalb des Netzwerks 104, von denen jede unterschiedlichen Teilnetzwerken (z. B. autonomen Systemen (AS) innerhalb des Netzwerks 104) entsprechen kann.
  • Wie vorstehend erwähnt, können die globalen Zugangspunkte 106 so konfiguriert sein, dass sie Anycast-Techniken verwenden, um Verkehr zu globalen Netzwerkadressen zu lenken, die mit netzwerkzugänglichen Diensten assoziiert sind. Daher ist der Router 302 auf veranschaulichende Weise so konfiguriert, dass er die globalen Netzwerkadressen gegenüber Nachbarvorrichtungen im Netzwerk 104 bekannt macht. In einer Ausführungsform sind solche Bekanntmachungen BGP-Bekanntmachungen. Solche Bekanntmachungen können den Router 302 dazu veranlassen, an die globalen Netzwerkadressen adressierten Verkehr anzuziehen, da die Bekanntmachungen Vorrichtungen im Netzwerk 104 dazu veranlassen können, an die Adressen adressierten Verkehr an den Router 302 zu routen, und zwar gemäß dem Betrieb von Anycast-Techniken.
  • Wie vorstehend erörtert, kann der globale Zugangspunkt 106 eine Vielzahl von Techniken umsetzen, um die Ausfallsicherheit des Zugangspunkts 106 zu erhöhen. In einer Ausführungsform sind die vom Zugangspunkt 106 bekanntgemachten globalen Netzwerkadressen in mehrere Adressengruppen unterteilt. Um die möglichen Auswirkungen von Ausfällen im Netzwerk 104 zu verringern, kann der Router 302 (oder die mehreren Router 302) so konfiguriert sein, dass er BGP-Ankündigungen für jede Adressengruppe an unterschiedliche Nachbarvorrichtungen im Netzwerk 104 (z. B. unterschiedliche AS) überträgt. Ein netzwerkzugänglicher Dienst kann mit Adressen aus mehreren Adressengruppen assoziiert sein, von denen jede den Client-Vorrichtungen 102 als Adresse für den Zugang zu dem Dienst bereitgestellt werden kann. Da Adressen aus unterschiedlichen Gruppen in dem Netzwerk 104 unterschiedlich bekanntgemacht werden, können für Adressen jeder Gruppe unterschiedliche Routing-Wege in dem Netzwerk 104 erwartet werden. Beispielsweise können Pakete, die an Adressen innerhalb einer ersten Gruppe adressiert sind, den Router 302 über ein erstes AS des Netzwerks 104 erreichen, während Pakete, die an Adressen innerhalb einer zweiten Gruppe adressiert sind, den Router 302 über ein zweites AS erreichen können. Somit, wenn innerhalb der ersten AS (oder eines nachgeschalteten AS, das mit dem ersten AS verbunden ist) ein Fehler auftritt, kann erwartet werden, dass Pakete, die an Adressen innerhalb der zweiten Gruppe adressiert sind, den Router 302 trotzdem erreichen und umgekehrt. Daher kann die Aufteilung der globalen Netzwerkadressen in mehrere Gruppen die Ausfallsicherheit der Zugangspunkte 106 gegenüber Fehlern innerhalb des Netzwerks 104 erhöhen.
  • Beim Empfang eines Pakets, das an eine globale Netzwerkadresse adressiert ist, kann der Router 302 das Paket an einen Fluss-Manager 304 aus einem Satz von Fluss-Managern 304A-N routen. Während ein Zugangspunkt 106 einen einzelnen Fluss-Manager 304 umsetzen kann, kann es für einen Zugangspunkt vorteilhaft sein, mehrere Fluss-Manager 304 umzusetzen, um einen redundanten Betrieb solcher Fluss-Manager 304 bereitzustellen. Der Router 302 kann eine beliebige Anzahl von bekannten Lastverteilungstechniken verwenden, um Pakete an die Fluss-Manager 304 zu verteilen, z. B. Round-Robin-Auswahl. In einer Ausführungsform nutzt der Router 302 konsistentes Hashing zur Verteilung der Pakete. Konsistentes Hashing ist auf dem Fachgebiet bekannt und wird daher hierin nicht im Detail beschrieben. Konsistentes Hashing kann beispielsweise beim Erhöhen der Änderungen vorteilhaft sein, wodurch mehrere Pakete mit denselben Merkmalen (z.B. Quellnetzwerkadresse, Quellnetzwerkport, Zielnetzwerkadresse, Zielnetzwerkport, Protokoll) an denselben Fluss-Manager 304 geroutet werden. Dies kann es den Fluss-Managern 304 auf vorteilhafte Weise ermöglichen, Statusinformationen über die Paketflüsse zwischen einer Client-Vorrichtung 102 und einem Ziel-Endpunkt 202 zu aufrechtzuerhalten. In einigen Fällen können solche Statusinformationen erforderlich sein, um zum Beispiel NAT-Techniken umzusetzen oder um eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung durchzuführen. In einer anderen Ausführungsform wird Equal-Cost-Multi-Path(ECMP)-Lastverteilung verwendet, um den Verkehr zu den Fluss-Managern 304A-N zu routen. ECMP-Lastverteilung ist auf dem Fachgebiet bekannt und wird daher hierin nicht im Detail beschrieben.
  • In einer Ausführungsform wird ECMP-Lastverteilung angewendet, um Pakete basierend auf einer globalen Netzwerkadresse, an die das Paket adressiert ist, an die Fluss-Manager 304A zu routen, Auf veranschaulichende Weise kann jeder Fluss-Manager Pakete verarbeiten, die an eine Teilmenge von Adressen innerhalb einer Gruppe von globalen Netzwerkadressen adressiert sind. Beispielsweise kann ein erster Fluss-Manager 304 vorzugsweise ein erstes Quartil von Adressen innerhalb einer Gruppe bearbeiten, kann ein zweiter Manager 304 vorzugsweise ein zweites Quartil verarbeiten usw. Durch die Aufteilung von Netzwerkadressen innerhalb einer Gruppe auf unterschiedliche Fluss-Manager 304 kann der Zugangspunkt 106 beispielsweise den Teil von Diensten verringern, der durch einen falschen Betrieb eines Fluss-Managers 304 bewirkt wird, beispielsweise aufgrund einer Fehlkonfiguration eines Dienstes, der mit einer von diesem Fluss-Manager 304 verarbeiteten Adresse assoziiert ist. Wenn mehrere Gruppen globaler Netzwerkadressen verwendet werden, können Dienste zwischen unterschiedlichen Gruppen „gemischt“ werden, sodass es unwahrscheinlich ist, dass zwei Dienste mit Adressen, die sich eine Teilmenge in einer Adressengruppe teilen, Adressen aufweisen, die sich eine Teilmenge in einer anderen Adressengruppe teilen. Ein solches Mischen kann den Gesamtprozentsatz der Dienste reduzieren, die von einem Zugangspunkt 106 aufgrund einer Fehlfunktion eines individuellen Fluss-Managers 304A vollständig nicht verfügbar sind.
  • Um die Verwendung von Statusinformationen an Fluss-Managern 304 weiter zu erleichtern, setzt der Router 302 in einer Ausführungsform einen Fluss-Hash-Routing-Algorithmus oder einen ähnlichen Algorithmus um, um zusammengehörige Pakete zu identifizieren, die einen „Fluss“ von Verkehr zwischen einem Client 102 und einem Endpunkt 202 bilden. Eine Vielzahl von Flussidentifikationsalgorithmen ist auf dem Fachgebiet bekannt und wird daher hierin nicht im Detail beschrieben. Auf veranschaulichende Weise kann der Router 302 einen Flussidentifikationsalgorithmus umsetzen, um Flüsse von Datenpaketen zu erkennen und Pakete desselben Flusses konsistent an denselben Fluss-Manager 304 zu routen. In einer Ausführungsform wendet der Router 302 das flussbasierte Routing auf ein Datenpaket an, bevor er die Pakete anderweitig an die Fluss-Manager 304 verteilt, sodass, wenn das Paket als Teil eines Flusses erkannt wird, es an denselben Fluss-Manager 304 verteilt wird, der zuvor Pakete dieses Flusses verarbeitet hat. In einer solchen Ausführungsform werden, wenn das Paket nicht als Teil des Flusses erkannt wird, zusätzliche Lastverteilungsalgorithmen (z. B. konsistentes Hashing) auf das Paket angewendet, um einen Fluss-Manager 304 zu bestimmen, an den das Paket zu routen ist.
  • Beim Empfang eines Datenpakets kann ein Fluss-Manager 304 ein Rechenzentrum 110 bestimmen, an welches das Paket zu routen ist, sowie einen Endpunkt 202 innerhalb des Rechenzentrums 110. In einer Ausführungsform kann der Fluss-Manager 304 eine Kombination von Kriterien anwenden, um ein Rechenzentrum 110 auszuwählen, an das ein Paket zu routen ist, einschließlich Netzwerk-Performance-Kriterien und Lastverteilungskriterien. Zum Beispiel kann ein Fluss-Manager 304 für ein gegebenes Paket zunächst ein Rechenzentrum 110 mit einem minimalen Netzwerkabstand (z. B. über das Netzwerk 108 hinweg) vom Zugangspunkt 106 auswählen. Netzwerk-Performance-Kriterien können z. B. Latenz, Anzahl der Hops, Bandbreite oder eine Kombination daraus sein. Im Allgemeinen kann das Routen eines Pakets an ein Rechenzentrum 110 mit maximalen Netzwerk-Performance-Kriterien die Geschwindigkeit der Kommunikation zwischen einer Client-Vorrichtung 102 und dem Rechenzentrum 110 vorteilhaft erhöhen. Da es jedoch unwahrscheinlich ist, dass sich die Netzwerk-Performance-Kriterien zwischen einem Zugangspunkt 106 und einem Rechenzentrum 110 schnell verändern, kann das einfache Routen jedes Pakets an ein Rechenzentrum 110 mit erwarteten maximalen Performance-Kriterien möglicherweise nicht die von einem Dienstanbieter angeforderte Lastverteilung erreichen. Daher kann jeder Fluss-Manager 304 ein anfänglich ausgewähltes Rechenzentrum 110 weiter modifizieren, wenn dies notwendig ist, um die gewünschte Lastverteilung eines Dienstanbietern zu erreichen. Wenn ein Dienstanbieter beispielsweise wünscht, dass maximal 70 % des Verkehrs zu einem Rechenzentrum 110 geroutet werden, das sich in Bezug auf minimierte(n) Latenz oder Netzwerkabstand (z. B. Anzahl der Hops) am nächsten zu einem Zugangspunkt 106 befindet, kann ein Fluss-Manager 304 so konfiguriert sein, dass er die ersten 7 Pakete in einem gegebenen Zeitraum (z. B. jede Sekunde) zu dem Rechenzentrum 110 routet und die nächsten 3 Pakete zu einem alternativen Rechenzentrum 110 (z. B. einem Rechenzentrum 110, das in Bezug auf Netzwerkabstand, Latenz usw. am zweitnächsten ist) routet. Obwohl Prozentsätze hierin als Beispiel für Lastverteilungskriterien erörtert werden, können zusätzliche oder alternative Kriterien verwendet werden. Zum Beispiel kann ein Dienstanbieter eine Obergrenze für die Gesamtzahl der Pakete spezifizieren, die an ein Rechenzentrum 110 zu routen ist.
  • In einer anderen Ausführungsform können, statt anfänglich ein Rechenzentrum 110 basierend auf Performance-Kriterien zwischen dem Zugangspunkt 106 und dem Rechenzentrum 110 auszuwählen, die globalen Zugangspunkte 106 so konfiguriert sein, dass sie anfänglich ein Rechenzentrum 110 basierend auf Performance-Kriterien zwischen der Client-Vorrichtung 102, von der Verkehr empfangen wurde, und dem anfänglich ausgewählten Rechenzentrum 110 auswählen. Vorteilhafterweise kann die Verwendung von Netzwerk-Performance-Kriterien zwischen Client-Vorrichtungen 102 und Rechenzentren 110 zu einer konsistenten Auswahl eines Rechenzentrums 110 für eine gegebene Client-Vorrichtung 102 führen, unabhängig von dem Zugangspunkt 106, zu dem der Verkehr der Client-Vorrichtung geroutet wird. Nach der Auswahl eines anfänglichen Rechenzentrums 110 (z. B. am nächsten zu einer Client-Vorrichtung 102 in Bezug auf Abstand und minimierte Latenz) kann der Zugangspunkt 106 diese Auswahl nach Bedarf modifizieren, um die von einem Dienstanbieter spezifizierte Lastverteilung zu erreichen. Wenn der Dienstanbieter beispielsweise wünscht, dass nicht mehr als 70 % des Verkehrs an das anfänglich ausgewählte Rechenzentrum 110 geroutet werden, und der Anteil des Verkehrs über einen vergangenen Zeitraum diesen Prozentsatz übersteigt, kann der Zugangspunkt 106 ein anderes Rechenzentrum auswählen (z. B. ein Rechenzentrum 110 in Bezug auf die Client-Vorrichtung 102 mit der nächsthöchsten Performance). Der Zugangspunkt 106 kann dann bestimmen, ob die Anforderung zu diesem anderen Rechenzentrum 110 geroutet werden könnte, basierend auf einem Anteil des historischen Verkehrs, der zu diesem anderen Rechenzentrum 110 geroutet wurde. Dieser Prozess kann fortgesetzt werden, bis der Zugangspunkt 106 ein Rechenzentrum 110 findet, das basierend auf den Lastverteilungsspezifikationen des Dienstanbieters akzeptabel ist.
  • In einigen Ausführungsformen wird die Lastverteilung lokal bei jedem Fluss-Manager 304 umgesetzt. In anderen Ausführungsformen wird die Lastverteilung über alle Fluss-Manager 304 eines Zugangspunkts 106 hinweg umgesetzt. In noch anderen Ausführungsformen wird die Lastverteilung über Fluss-Manager 304 mehrerer Zugangspunkte 106 hinweg umgesetzt. Im Allgemeinen wird erwartet, dass eine lokale Lastverteilung weniger ressourcenintensiv ist, da sie weniger Kommunikation zwischen verteilten Komponenten erfordert. Weniger lokale Lastverteilung kann jedoch dazu führen, dass die Lastverteilungskriterien eher dem entsprechen, was ein Dienstanbieter wünscht.
  • In einigen Fällen können die Fluss-Manager 304 eine Mischung aus lokaler und nicht lokaler Lastverteilung umsetzen. Beispielsweise kann jeder Fluss-Manager 304 lokale Lastverteilung umsetzen (z. B. lokal für jeden Manager 304 oder jeden Zugangspunkt 106) und periodisch mit anderen Zugangspunkten 106 verhandeln, um die bei der Auswahl eines Rechenzentrums 110 angewendeten Gewichtungen anzupassen. Wenn zum Beispiel ein Dienstanbieter anfordert, dass der Verkehr gleichmäßig zwischen Rechenzentren 110 aufgeteilt wird, kann lokale Lastverteilung bewirken, dass jeder von zwei Zugangspunkten 106 den Verkehr gleichmäßig zwischen den Rechenzentren 110 aufteilt. Dies kann zu einem suboptimalen Routing führen, da die Hälfte des Verkehrs an jedem Zugangspunkt 106 zu einem nicht nahegelegenen Rechenzentrum 110 geroutet werden kann. Dementsprechend können in diesem Szenario die Zugangspunkte 106 über ihr Routing von Verkehr kommunizieren, und unter der hypothetischen Annahme, dass das Verkehrsvolumen an jedem Punkt 106 gleich ist (und dass nur zwei Zugangspunkte 106 betrachtet werden), kann jeder Zugangspunkt 106 damit beginnen, alle seine Pakete an ein nächstgelegenes Rechenzentrum 110 zu routen. Eine solche Aufteilung würde immer noch zu einer gleichmäßigen Verteilung des Verkehrs auf die Rechenzentren 110 führen und darüber hinaus die durchschnittliche Netzwerk-Performance-Metrik für jeden Paketfluss vorteilhaft erhöhen.
  • In einer Ausführungsform kann ein gewünschter Anteil oder ein gewünschtes Volumen des Verkehrs, der an ein gegebenes Rechenzentrum 110 geroutet wird, statisch von einem Dienstanbieter ausgewählt sein. Zum Beispiel kann ein Dienstanbieter anfordern, dass nicht mehr als 70 % der Anforderungen an einem Zugangspunkt 106 an ein gegebenes Rechenzentrum 110 geroutet werden. In einer anderen Ausführungsform kann der gewünschte Anteil oder das gewünschte Volumen dynamisch sein. Zum Beispiel kann ein Dienstanbieter spezifizieren, dass ein gewünschter Anteil oder ein gewünschtes Volumen des Datenverkehrs, der an ein gegebenes Rechenzentrum 110 geroutet wird, von einem ersten Zeitpunkt zu einem zweiten Zeitpunkt gemäß einer gegebenen Änderungsrate (z. B. linear, exponentiell, logarithmisch usw.) zunimmt oder abnimmt.
  • Nach der Auswahl eines Rechenzentrums 110, an das der Verkehr zu routen ist, kann ein Fluss-Manager 304 einen Endpunkt 202 innerhalb des Rechenzentrums 110 auswählen, an den der Verkehr zu routen ist. Der Endpunkt 202 kann gemäß einem beliebigen Lastverteilungsalgorithmus ausgewählt werden. In einer Ausführungsform kann der Fluss-Manager 304 konsistentes Hashing nutzen, um einen Endpunkt 202 auszuwählen.
  • Ähnlich wie vorstehend in Bezug auf die Fluss-Manager 304 erörtert, kann es wünschenswert sein, dass der Verkehr eines gegebenen Flusses konsistent an denselben Endpunkt 202 geroutet wird, sodass der Endpunkt 202 Statusinformationen bezüglich dieses Flusses aufrechterhalten kann. Daher kann jeder Fluss-Manager 304 einen Flussdetektionsalgorithmus nutzen (ähnlich wie vorstehend in Bezug auf den Router 302 erörtert), um nachfolgende Pakete innerhalb eines Flusses zu detektieren, der zuvor vom Fluss-Manager 302A an einen Endpunkt 202 geroutet wurde, und um solche Pakete an denselben Endpunkt 202 zu routen. In einer Ausführungsform, in der ein Paket durch die Fluss-Manager 304 als Teil eines bereits gerouteten Flusses identifiziert wird, kann der Fluss-Manager 304 die Auswahl eines Rechenzentrums 110 und eines Endpunkts 202 für das Paket auslassen, und zwar zu Gunsten des Routens des Pakets an den Endpunkt 202, der zuvor für frühere Pakete des Flusses verwendet wurde.
  • Nach der Auswahl eines Endpunkts 202, an den ein Paket zu routen ist, kann ein Fluss-Manager 304 das Paket modifizieren, um das Routen an den Endpunkt 202 zu erleichtern. Zum Beispiel kann eine Zielnetzwerkadresse des Pakets, wenn es am Router 302 empfangen wird, eine globale Netzwerkadresse sein. Der Fluss-Manager 304 kann daher das Paket modifizieren, um die Zielnetzwerkadresse durch eine Netzwerkadresse des Endpunkts 202 zu ersetzen. In einer Ausführungsform setzt jeder Fluss-Manager 304 NAT-Techniken um, um Pakete zu modifizieren, die an globale Netzwerkadressen adressiert sind. Beispielsweise kann jeder Fluss-Manager 304 bei Paketen, die für Endpunkte 202 bestimmt sind, eine globale Netzwerkadresse durch eine Netzwerkadresse eines Endpunkts 202 als die Zielnetzwerkadresse des Pakets ersetzen und eine Netzwerkadresse der Client-Vorrichtung 102 durch eine Adresse des Zugangspunkts 106 als eine Quelladresse ersetzen. Eine ähnliche Übersetzung kann für Pakete von Endpunkten 202 erfolgen, die an Client-Vorrichtungen 102 zu routen sind, und zwar gemäß NAT-Techniken. Fluss-Manager 304 können auf veranschaulichende Weise Portübersetzung (eine bekannte NAT-Technik) verwenden, um zwischen übersetzten Flüssen zu unterscheiden. Nach der Übersetzung kann der Fluss-Manager 304 das Paket an den Router 302 zur Übertragung an den ausgewählten Endpunkt 202 über das Netzwerk 108 zurücksenden.
  • In einer anderen Ausführungsform kann ein Fluss-Manager 304 Verkapselung nutzen, um ein Paket an einen Endpunkt 202 zu routen. Auf veranschaulichende Weise kann jeder Fluss-Manager 304 einen IP-„Tunnel“ zu einer Vorrichtung innerhalb eines Rechenzentrums 110 generieren, wie z. B. dem Sitzungsübergabe-Manager 212 oder einem Router innerhalb des Rechenzentrums 110. Um Pakete an einen Endpunkt 202 zu routen, kann ein Fluss-Manager 304 das Paket verkapseln und das Paket über den Tunnel an die empfangende Vorrichtung übertragen. Die empfangende Vorrichtung kann dann das Paket entkapseln und das Paket an den Endpunkt 202 übertragen. In einer Ausführungsform ersetzt der Fluss-Manager 304 eine Zieladresse des Pakets (z. B. eine globale Netzwerkadresse des Dienstes) durch eine Zieladresse des ausgewählten Endpunkts 202, um die Übertragung des Pakets 202 an den Endpunkt zu erleichtern. Die Verkapselung von Paketen über einen Tunnel kann Vorteile bieten, wie z. B. die Erhaltung der Netzwerkadresse einer Client-Vorrichtung 102, die das Paket übertragen hat. Daher kann die Verkapselung es beispielsweise einer Client-Vorrichtung 102 und einem Endpunkt 202 ermöglichen, verbindungsorientierte Kommunikationssitzungen zu erhalten, selbst wenn Pakete einer Client-Vorrichtung 102 durch unterschiedliche Zugangspunkte 106 geroutet werden. In einigen Fällen können Fluss-Manager 304 und Endpunkte 202 (oder Sitzungsübergabe-Manager 212) so konfiguriert sein, dass sie die Kommunikation untereinander authentifizieren, um die Authentizität der zwischen den Vorrichtungen übertragenen Pakete sicherzustellen. Zum Beispiel kann jeder der Fluss-Manager 304 und Endpunkte 202 (oder Sitzungsübergabe-Manager 212) so konfiguriert sein, dass er eine digitale Signatur generiert, welche die jeweiligen Vorrichtungen authentifiziert, und dass er eine solche digitale Signatur in einen Header von verkapselten Paketen einfügt, die zwischen den Vorrichtungen fließen, sodass jede Vorrichtung die digitale Signatur authentifizieren kann, um zu verifizieren, dass die Pakete an einer bekannten Vorrichtung generiert wurden. Als ein anderes Beispiel können die Fluss-Manager 304 und die Endpunkte 202 (oder Sitzungsübergabe-Manager 212) so konfiguriert sein, dass sie über bekannte sichere Protokolle kommunizieren, wie z. B. die Transport-Layer-Security(TLS)-Protokolle.
  • Wie vorstehend erwähnt, können Zugangspunkte 106 in einigen Fällen so konfiguriert sein, dass sie eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung durchführen, um die für die Durchführung einer solchen Phase benötigte Zeit zu reduzieren (z.B. aufgrund der relativen Nähe des Zugangspunkts 106 zur Client-Vorrichtung 102 relativ zum Rechenzentrum 110). Um eine solche Funktionalität zu erleichtern, kann jeder Fluss-Manager 304' die Initialisierungsphase mit einem Client umsetzen und Informationen über eine initialisierte Sitzung für eine Vorrichtung innerhalb des Rechenzentrums 110, wie z. B. einen Endpunkt 202 oder einen Sitzungsübergabe-Manager 212, bereitstellen. Die Informationen können z. B. über den Tunnel bereitgestellt werden. Auf veranschaulichende Weise kann ein Fluss-Manager 304 einen Tunnel zum Sitzungsübergabe-Manager 212 generieren und innerhalb des Tunnels einen „TCP-Übergabe“-Befehl überreichen, der TCP-Sitzungsstatusinformationen enthält. Die Statusinformationen können z. B. 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 enthalten. Beim Empfang des TCP-Übergabe-Befehls kann der Sitzungsübergabe-Manager 212 einen entsprechenden Eintrag in seiner eigenen zustandsorientierten Sitzungstabelle (z. B. TCP-Tabelle) generieren und damit die verbindungsorientierte Kommunikationssitzung „annehmen“. Der Fluss-Manager 304 kann dann Pakete von der Client-Vorrichtung 102 über den Tunnel übertragen, die bei dem Sitzungsübergabe-Manager 212 als Teil der angenommenen Sitzung entkapselt und verarbeitet werden können. In Ausführungsformen, in denen ein Sitzungsübergabe-Manager 212 verwendet wird, um die Übergabe von zustandsorientierten Sitzungen zu bewerkstelligen, ist es möglicherweise nicht erforderlich, dass Fluss-Manager 304 einen Endpunkt 202 auswählen, an den ein Paket zu übertragen ist. Vielmehr können die Fluss-Manager 304 so konfiguriert sein, dass sie konsistent einen geeigneten Sitzungsübergabe-Manager 212 innerhalb eines ausgewählten Rechenzentrums 110 als ein Ziel für die Pakete der Client-Vorrichtung 102 auswählen. Der Sitzungsübergabe-Manager 212 wiederum kann einen Endpunkt 202 innerhalb des Rechenzentrums 110 auswählen. Somit kann die Verwendung eines Sitzungsübergabe-Managers 212 die Verantwortung für die Auswahl eines Endpunkts 202 vom Fluss-Manager 304 auf den Sitzungsübergabe-Manager 212 verlagern. Die Auswahl eines Endpunktes 202 bei einem Sitzungsübergabe-Manager 212 kann ähnlich wie eine solche Auswahl durch einen Fluss-Manager 304 erfolgen.
  • Zusätzlich zu einem oder mehreren Routern 302 und Fluss-Managern 304 beinhaltet der globale Zugangspunkt 106 aus 2 eine Zustandsüberprüfungsvorrichtung 306. Die Zustandsüberprüfungsvorrichtung 306 kann auf veranschaulichende Weise Zustandsüberprüfungen an die Fluss-Manager 304 übertragen, um festzustellen, ob diese Fluss-Manager 304 eine Fehlfunktion aufweisen. Die Übertragung von Zustandsüberprüfungsdaten kann ähnlich wie die Übertragung von Zustandsüberprüfungsdaten durch eine Zustandsüberprüfungsvorrichtung 204 innerhalb eines Rechenzentrums 110 erfolgen, wie vorstehend erörtert. Zusätzlich oder alternativ kann die Zustandsüberprüfungsvorrichtung 306 Zustandsüberprüfungsdaten an Endpunkte 202 und/oder Client-Vorrichtungen 102 übertragen. Die in Bezug auf die Endpunkte 202 empfangenen Zustandsüberprüfungsdaten können Routing-Entscheidungen zum Endpunkt 202 erleichtern. Wenn beispielsweise die Zustandsüberprüfungsvorrichtung 306 nicht in der Lage ist, mit einem Endpunkt 202 zu kommunizieren, kann ein Fluss-Manager 304 die Auswahl des Endpunkts 202 als ein Ziel für den Verkehr stoppen, unabhängig davon, ob eine Zustandsüberprüfungsvorrichtung 204, die sich lokal am Endpunkt 202 befindet, den Endpunkt 202 als gesund meldet. Die in Bezug auf Client-Vorrichtungen 102 gesammelten Zustandsüberprüfungsdaten können auf veranschaulichende Weise verwendet werden, um Verfügbarkeitsankündigungen (z. B. BGP-Ankündigungen) an Vorrichtungen des Netzwerks 104 zu modifizieren. Zum Beispiel kann ein Betreiber der globalen Zugangspunkte 106 die auf Client-Vorrichtungen 102 bezogenen Zustandsüberprüfungsdaten durchsehen, um die Ankündigungen anzupassen, um zu versuchen, den Verkehr von einigen Vorrichtungen 102 zu einem anderen (z. B. näheren) Zugangspunkt 106 umzuleiten, als er derzeit im Netzwerk 104 geroutet wird.
  • Der globale Zugangspunkt 106 aus 3 beinhaltet ferner einen Konfigurations-Manager 308, der so konfiguriert ist, dass er Konfigurationsinformationen empfängt, die sich auf Dienste beziehen, die mit globalen Netzwerkadressen assoziiert sind, und dass er den Betrieb des globalen Zugangspunkts 106 konfiguriert, um eine solche Konfiguration umzusetzen: Zum Beispiel kann der Konfigurations-Manager 308 Informationen darüber erhalten, wie der Router 302 globale Netzwerkadressen gegenüber dem Netzwerk 104 bekanntmachen sollte, Informationen, welche die in den Rechenzentren 110 zur Verfügung gestellten Dienste zu globalen Netzwerkadressen zuordnen, die von den Zugangspunkten 106 geroutet werden, Informationen, welche die Rechenzentren 110 und die Endpunkte 202 solcher Dienste identifizieren, Informationen, die eine gewünschte Lastverteilung zwischen solchen Rechenzentren 110 spezifizieren, und dergleichen. In einer Ausführungsform ruft der Konfigurations-Manager 308 Konfigurationsinformationen aus einem Konfigurationsdatenspeicher 210 innerhalb eines Rechenzentrums 110 ab. Zum Beispiel kann der Konfigurationsmanager 308 den Datenspeicher 210 periodisch nach neuen Konfigurationsinformationen abfragen. Als ein anderes Beispiel kann ein Rechenzentrum 110 Konfigurationsänderungen an den Konfigurations-Manager 308 „pushen“, indem es eine Vielfalt bekannter Push-Benachrichtigungstechniken nutzt. Beispielsweise kann ein Rechenzentrum 110 ein Publish-Subscribe(„pub/sub“)-Nachrichtensystem umsetzen und ein Konfigurations-Manager 208 kann Änderungen an der Konfiguration des Systems eines Dienstanbieters veröffentlichen. Das System kann dann die Konfigurations-Manager 308 der Zugangspunkte 106 über solche Änderungen informieren. Wenn also Dienstanbieter die Konfiguration ihrer Dienste und globalen Netzwerkadressen in einem Rechenzentrum 110 modifizieren, können diese Modifikationen an die Zugangspunkte 106 weitergegeben werden. In einer Ausführungsform speichern die Zugangspunkte 106 keine Konfigurationsinformationen in einem dauerhaften Speicher (und kann ihnen ein beliebiger solcher dauerhafter Speicher fehlen), um die Wahrscheinlichkeit zu verringern, dass solche Informationen von den Zugangspunkten 106 erhalten werden könnten.
  • Während die Beispiele vorstehend in Bezug auf einen netzwerkzugänglichen Dienst erörtert werden, kann jeder Zugangspunkt-Server 402 mit mehreren Diensten assoziiert sein. Wenn z. B. jeder Fluss-Manager 304 damit beauftragt ist, Pakete zu verarbeiten, die an eine Teilmenge globaler Netzwerkadressen innerhalb einer Gruppe solcher Adressen adressiert sind, kann jeder Fluss-Manager 304 folglich Verkehr verarbeiten, der an einen beliebigen Dienst adressiert ist, der mit einer globalen Netzwerkadresse innerhalb dieser Teilmenge assoziiert ist.
  • Während nur einige Komponenten der Zugangspunkte 106 als mit den Netzwerken 104 und 108 in Kommunikation stehend dargestellt sind, können andere Komponenten zusätzlich mit dem Netzwerk 108 und/oder dem Netzwerk 104 in Kommunikation stehen. Die Linien in 3 sollen nicht alle tatsächlichen oder möglichen Netzwerkverbindungen darstellen, sondern vielmehr einen möglichen Fluss des dienstbezogenen Verkehrs durch einen Zugangspunkt 106 veranschaulichen.
  • Das Rechenzentrum 110 aus 2 und der globale Zugangspunkt 106 aus 3 arbeiten wie in einer verteilten Rechenumgebung, die ein oder mehrere Computersysteme beinhaltet, die unter Verwendung eines oder mehrerer Computernetzwerke (nicht in den jeweiligen Figuren) miteinander verbunden sind. Das Rechenzentrum 110 aus 2 und der globale Zugangspunkt 106 aus 3 könnten auch in einer Rechenumgebung mit einer geringeren oder größeren Anzahl von Vorrichtungen betrieben werden, als sie in den jeweiligen Figuren veranschaulicht ist. Daher sind die Darstellungen des Rechenzentrums 110 aus 2 und des globalen Zugangspunkts 106 aus 3 als veranschaulichend und die vorliegende Offenbarung nicht einschränkend aufzufassen. Beispielsweise könnten das Rechenzentrum 110 aus 2, der globale Zugangspunkt 106 aus 3 oder verschiedene Bestandteile davon verschiedene Webdienst-Komponenten, gehostete oder „Cloud“-Rechenumgebungen und/oder Peer-to-Peer-Netzwerkkonfigurationen umsetzen, um zumindest einen Teil der hierin beschriebenen Prozesse umzusetzen.
  • 4 stellt eine allgemeine Architektur eines beispielhaften Computersystems (bezeichnet als Zugangspunkt-Server 402) dar, die betrieben wird, um Fluss-Manager 304 eines Zugangspunkt 106 umzusetzen. Die in 4 dargestellte allgemeine Architektur des Zugangspunkt-Servers 402 beinhaltet eine Anordnung von Computerhardware- und - softwaremodulen, die zur Umsetzung von Aspekten der vorliegenden Offenbarung verwendet werden kann. Die Hardwaremodule können mit physischen elektronischen Vorrichtungen umgesetzt sein, wie nachsehend detaillierter erörtert. Der Zugangspunkt-Server 402 kann viel mehr (oder weniger) Elemente als die in 4 gezeigten beinhalten. Es ist jedoch nicht notwendig, dass alle diese im Allgemeinen herkömmlichen Elemente gezeigt werden, um eine ermöglichende Offenbarung bereitzustellen. Zusätzlich kann die in 4 dargestellte allgemeine Architektur verwendet werden, um eine oder mehrere der anderen in den 2 und 3 dargestellten Komponenten umzusetzen. Der Veranschaulichung nach beinhaltet der Zugangspunkt-Server 402 eine oder mehrere Verarbeitungseinheiten 490, eine oder mehrere Netzwerkschnittstellen 492 und ein oder mehrere Laufwerke 494 für computerlesbare Medien, die alle über einen Kommunikationsbus miteinander kommunizieren können. Die Netzwerkschnittstellen 492 können Konnektivität zu einem oder mehreren Netzwerken oder Rechensystemen bereitstellen, wie z. B. dem Router 302 (der z. B. einer handelsüblichen Router-Vorrichtung entsprechen kann). Die Verarbeitungseinheiten 490 können somit Informationen und Anweisungen von anderen Rechensystemen oder Diensten über Netzwerke, wie z. B. das Netzwerk 104 oder 108, empfangen. Die Verarbeitungseinheit 490 kann auch mit dem Speicher 480 und ausgehend davon kommunizieren.
  • Der Speicher 480 kann Computerprogrammanweisungen enthalten (in einigen Ausführungsformen als Module gruppiert), welche die Verarbeitungseinheit 490 ausführt, um einen oder mehrere Aspekte der vorliegenden Offenbarung umzusetzen. Der Speicher 480 beinhaltet im Allgemeinen einen Direktzugriffsspeicher (random access memory - RAM), einen Festwertspeicher (read only memory - ROM) und/oder andere dauerhafte, zusätzliche oder nicht transitorische computerlesbare Medien. Der Speicher 480 kann ein Betriebssystem 482 speichern, das Computerprogrammanweisungen zur Verwendung durch die Verarbeitungseinheit 490 bei der allgemeinen Verwaltung und dem allgemeinen Betrieb des Zugangspunkt-Servers 402 bereitstellt. Der Speicher 480 kann ferner Computerprogrammanweisungen und andere Informationen zur Umsetzung von Aspekten der vorliegenden Offenbarung beinhalten. In einer Ausführungsform beinhaltet der Speicher 480 beispielsweise eine oder mehrere Fluss-Manager-Einheiten 483, von denen jede Code darstellt, der ausgeführt wird, um einen Fluss-Manager 304 aus 3 umzusetzen. Jede Fluss-Manager-Einheit 483 kann auf veranschaulichende Weise von anderen Einheiten 483 auf dem Server 402 isoliert sein. Zum Beispiel kann jede Einheit eine separate virtuelle Maschine oder einen isolierten Software-Container darstellen. In einigen Fällen kann jede Einheit 483 mit separaten Verarbeitungseinheiten 490, Schnittstellen 492 oder Laufwerken 494 assoziiert sein, wodurch die Möglichkeit minimiert wird, dass der Betrieb einer Einheit 483 den Betrieb einer anderen Einheit 483 beeinflusst. Jede Einheit 483 beinhaltet auf veranschaulichende Weise eine Endpunkt-Auswahleinheit 484, die Code darstellt, der ausführbar ist, um einen Endpunkt 202 auszuwählen, an den ein an eine globale Netzwerkadresse adressiertes Paket zu routen ist, eine Flusstabelle 486, die eine Tabelle von Informationen darstellt, die Flüsse von Paketen Endpunkten 202 zuordnet, eine NAT-Einheit 488, die Code darstellt, der ausführbar ist, um NAT an Paketen, die an globale Netzwerkadressen adressiert sind, oder an Antworten auf solche Pakete von Endpunkten 202 durchzuführen, und eine Sitzungsübergabe-Einheit 489, die Code darstellt, der ausführbar ist, um eine Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung durchzuführen und diese Sitzung an eine empfangende Vorrichtung zu übergeben. Obwohl in 4 nicht dargestellt, beinhaltet der Speicher 480 auf veranschaulichende Weise auch eine Verkapselungseinheit, die Code darstellt, der ausführbar ist, um eine Tunnelverbindung zu einer anderen Vorrichtung zu generieren, welche die Übertragung von verkapselten Paketen ermöglicht, und um eine Verkapselung/Entkapselung durchzuführen, um eine solche Übertragung zu erleichtern.
  • Der Speicher 480 kann ferner eine Zustandsüberprüfungseinheit 496, die Anweisungen entspricht, die ausführbar sind, um die Zustandsüberprüfungsvorrichtung von 306 umzusetzen, und eine Konfigurations-Manager-Einheit 498 beinhalten, die Anweisungen entspricht, die ausführbar sind, um den Konfigurations-Manager 308 umzusetzen. In einigen Ausführungsformen können die Zustandsüberprüfungsvorrichtung 306 und der Konfigurations-Manager 308 als eigenständige Vorrichtungen und nicht als Teil des Zugangspunkt-Servers 402 umgesetzt werden. Darüber hinaus kann der Router 302, auch wenn er als vom Zugangspunkt-Server 402 getrennt dargestellt ist, in einigen Fällen in den Server 402 integriert sein (z. B. durch Aufnahme von Software in den Speicher 480, die ausführbar ist, um eine Routing-Funktionalität umzusetzen).
  • In einer Ausführungsform fehlt dem Zugangspunkt-Server 402 ein beliebiger nicht flüchtiger Speicher und ist er so konfiguriert, dass er ausschließlich in Bezug auf flüchtigen Speicher, wie zum Beispiel RAM, betrieben wird. Auf veranschaulichende Weise kann der Zugangspunkt-Server 402 so konfiguriert sein, dass er eine Preboot Execution Environment (PXE) verwendet, sodass der Zugangspunkt-Server 402 bei der Initialisierung zumindest einen Teil des Inhalts des Speichers 480 von netzwerkzugänglichen Speicherort (z. B. dem Konfigurationsdatenspeicher 210) abruft, wie z. B. das Betriebssystem 482, die Zustandsüberprüfungseinheit 496 und die Konfigurations-Manager-Einheit 498. Die Konfigurations-Manager-Einheit 498 kann danach zusätzliche Konfigurationsinformationen von einem netzwerkzugänglichen Speicherort abrufen, z. B. die Konfiguration für individuelle Dienste und assoziierte globale Netzwerkadressen, und diese zusätzlichen Informationen nutzen, um Fluss-Manager-Einheiten 483 zu generieren. Um eine unbefugte Offenbarung des Inhalts des Speichers 480 zu verhindern, kann die Authentifizierung des Servers 402 am Speicherort mindestens teilweise mit einem Netzwerkort des Servers 402 (z. B. an einem Zugangspunkt 106) verknüpft sein, sodass Versuche, den Server 402 physisch zu verschieben, zu einem Fehler beim Abrufen des Inhalts des Speichers 408 führen.
  • Während in 4 ein einzelner Server 402 und Router 302 dargestellt sind, kann in einigen Fällen ein globaler Zugangspunkt 106 durch mehrere Server 402 und/oder Router 302 umgesetzt sein. In einigen Fällen können solche Server 402 oder Router 302 physisch oder logisch isoliert sein, um die Weitergabe von Fehlern zwischen solchen Servern 402 oder Routern 302 zu vermeiden. Wenn ein Zugangspunkt 106 mehrere Pools von Netzwerkadressen verwaltet, kann auf veranschaulichende Weise jeder Pool von einem eigenen Server 402 und Router 302 verwaltet werden. Sollte ein Router 302 und/oder ein Server 402 ausfallen, würden somit voraussichtlich nur die Dienste betroffen sein, die mit dem von diesem Router 302 und/oder Server 402 verwalteten Pool assoziiert sind.
  • Unter Bezugnahme auf 5 werden veranschaulichende Interaktionen beschrieben, die darstellen, wie ein individueller globaler Zugangspunkt 106A ausfallsicher betrieben werden kann, indem mehrere Routen bereitgestellt werden, um einen netzwerkzugänglichen Dienst unter Verwendung globaler Netzwerkadressen zu erreichen. 5 stellt eine Umgebung 500 da, die wiederum eine Ausführungsform eines Teils der Umgebung 100 aus 1 darstellen kann. Insbesondere ist in der Umgebung 500 das Netzwerk 104 in die Netzwerke 104A-E unterteilt, von denen jedes z. B. ein autonomes System darstellen kann. Die Netzwerke 104A-C sind als in Kommunikation mit den Client-Vorrichtungen 102 stehend veranschaulicht. Diese Netzwerke 104A-C können z. B. Internet-Dienstanbieter (Internet service providers - ISPs) der Client-Vorrichtungen 102 darstellen. Die Netzwerke 104D und E stellen andere AS dar, mit denen der globale Zugangspunkt 106A eine Netzwerkverbindung aufweist. Während die Netzwerke 104D und E in 5 nicht als mit den Client-Vorrichtungen 102 verbunden gezeigt sind, können solche Netzwerke auch als ISPs für die Client-Vorrichtungen 102 fungieren. Jedes der Netzwerke 104A-E ist in 5 als mit anderen Netzwerken 104A-E verbunden gezeigt. Diese Konfiguration ist veranschaulichend und kann über Umsetzung hinweg variieren.
  • In der Veranschaulichung aus 5 weisen die Client-Vorrichtungen 102 im Allgemeinen zwei Routen auf, über welche der globale Zugangspunkt 106A erreichbar ist: über das Netzwerk 104D und 104E. Um die Ausfallsicherheit des Zugangs zu dem globalen Zugangspunkt 106A zu erhöhen, kann der Zugangspunkt 106A selektiv Verfügbarkeitsankündigungen an die Netzwerke 104D und 104E übertragen. Insbesondere, wie in 5 bei (1) gezeigt, kann ein globaler Zugangspunkt 106A mindestens zwei Gruppen von globalen Netzwerkadressen identifizieren, wie zum Beispiel zwei zusammenhängende Bereiche von Netzwerkadressen. Danach überträgt der globale Zugangspunkt 106A bei (2) eine Bekanntmachung (z. B. eine BGP-Ankündigung) für die erste Netzwerkgruppe an das Netzwerk 104D, anstatt alle globalen Netzwerkadressen sowohl gegenüber dem Netzwerk 104D als auch E bekanntzumachen. Auf ähnliche Weise überträgt der globale Zugangspunkt 106A bei (3) eine Bekanntmachung (z. B. eine BGP-Ankündigung) für die zweite Netzwerkgruppe an das Netzwerk 104E. Auf diese Weise wird der an Adressen innerhalb der ersten Netzwerkgruppe adressierte Verkehr wahrscheinlich über das Netzwerk 104D am Zugangspunkt 106A ankommen und wird der an Adressen innerhalb der zweiten Netzwerkgruppe adressierte Verkehr wahrscheinlich über das Netzwerk 104E am Zugangspunkt 106A ankommen. Jeder Dienst kann mit einer globalen Netzwerkadresse von mindestens zwei Gruppen assoziiert sein. Wenn also in einem der Netzwerke 104D oder E Fehler oder Probleme auftreten, kann eine Client-Vorrichtung 102 eine alternative globale Netzwerkadresse eines Dienstes nutzen, um über das verbleibende Netzwerk auf den globalen Zugangspunkt 106A zuzugreifen.
  • Unter Bezugnahme auf 6 werden veranschaulichende Interaktionen für den Betrieb eines globalen Zugangspunkts 106 beschrieben, um die Kommunikation zwischen einer Client-Vorrichtung 102 und einem Rechenzentrum 110 zu erleichtern, das Endpunkte 202 für einen netzwerkzugänglichen Dienst bereitstellt. Die Interaktionen aus 6 beginnen bei (1), wo eine Client-Vorrichtung 102 ein Datenpaket an den globalen Zugangspunkt 106A sendet, adressiert an eine globale Netzwerkadresse, die mit dem globalen Zugangspunkt 106A assoziiert ist. Das Datenpaket kann z. B. gemäß dem Transmission Control Protocol (TCP), dem User Datagram Protocol (UDP) oder dem Internet Control Message Protocol (ICMP) formatiert sein. Das Datenpaket kann über das Netzwerk 104 übertragen und über den Betrieb des Netzwerks 104 an den globalen Zugangspunkt 106A geroutet werden, basierend auf Bekanntmachungen des globalen Zugangspunkts 106A, die angeben, dass die globale Netzwerkadresse, an die das Paket adressiert ist, über den globalen Zugangspunkt 106A verfügbar ist. Beispielsweise kann der globale Zugangspunkt 106A ein der Client-Vorrichtung 102 nächstgelegener (z. B. in Bezug auf die Netzwerkabstand) globaler Zugangspunkt 106 sein.
  • Beim Empfang des Datenpakets weist ein Router 302 innerhalb des globalen Zugangspunkts 106A das Paket einem Fluss-Manager 304 innerhalb des Zugangspunkts 106 zu. Wenn das Datenpaket nicht mit einem existierenden Datenfluss assoziiert ist, kann der Router 302 ECMP-Lastverteilung nutzen, um das Datenpaket einem Fluss-Manager 304 zuzuweisen, und zwar basierend auf der Netzwerkadresse, an die das Paket adressiert ist. Wenn das Datenpaket mit einem existierenden Datenfluss assoziiert ist, kann der Router 302 das Paket an denselben Fluss-Manager 304 routen, an den auch frühere Pakete innerhalb des Flusses geroutet wurden.
  • Bei (2) weist der Fluss-Manager 304 innerhalb des Zugangspunkts 106A das Datenpaket einem Rechenzentrum 110 zu. Wenn das Datenpaket nicht mit einem existierenden Datenfluss assoziiert ist, kann der Fluss-Manager 304 einen Lastverteilungsalgorithmus auf das Datenpaket anwenden, um ein Rechenzentrum 110 aus dem Satz von verfügbaren Rechenzentren 110 auszuwählen. Der Algorithmus kann beispielsweise beinhalten, dass anfänglich ein Rechenzentrum 110 ausgewählt wird, das in Bezug auf die Client-Vorrichtung 102 (oder alternativ den globalen Zugangspunkt 106A) in Form der Netzwerk-Performance-Kriterien die beste Performance aufweist, und dass ein alternatives Rechenzentrum 110 (z.B. dasjenige mit der nächstbesten Performance) ausgewählt wird, wenn das nächstgelegene Rechenzentrum 110 über einen vergangenen Zeitraum eine Menge (z. B. als absolute Menge oder Prozentsatz) oder Datenpakete über einem Schwellenwert empfangen hat. In einer Ausführungsform setzt jeder Zugangspunkt 106A denselben Algorithmus bei der Auswahl eines Rechenzentrums 110 basierend auf aktuellen Informationen bezüglich der Performance-Kriterien zwischen Client-Vorrichtungen 102 und Rechenzentren 110 um. Darüber hinaus kann ein gemeinsamer Satz von Performance-Kriterien für jeden Zugangspunkt 106 verfügbar gemacht werden (z. B. aus dem Konfigurationsdatenspeicher 210). Somit kann das Routing von Datenpaketen der Client-Vorrichtung 102 zu einem Rechenzentrum 110 bei Abwesenheit einer Änderung der Performance-Kriterien oder der Last der Rechenzentren 110 unter den Zugangspunkten 106 konsistent sein. Auf diese Weise können, auch wenn Datenpakete einer Client-Vorrichtung 102 zu einem anderen Zugangspunkt 106 umgeleitet werden, sie zu demselben Rechenzentrum 110 geroutet werden. Wenn das Datenpaket mit einem existierenden Datenfluss assoziiert ist, kann der Fluss-Manager 304 das Paket an dasselbe Rechenzentrum 110 routen, an das auch frühere Pakete innerhalb des Flusses geroutet wurden.
  • Nach der Auswahl eines Rechenzentrums 110 kann ein Fluss-Manager 304 einen Endpunkt 202 innerhalb des ausgewählten Rechenzentrums 120 auswählen. Der Fluss-Manager 304 kann auf veranschaulichende Weise für ein gegebenes Rechenzentrum 110 einen Satz von Endpunkten 202 aufrechterhalten, der einen netzwerkzugänglichen Dienst bereitstellt, der mit der globalen Netzwerkadresse assoziiert ist, an die das Datenpaket adressiert wurde. In einer Ausführungsform kann dieser Satz von Endpunkten 202 basierend auf Informationen identifiziert werden, die von einem Ressourcen-Manager 206 innerhalb des Rechenzentrums 110 empfangen werden. Der Fluss-Manager 304 kann ferner Informationen über den apparenten Zustand der Endpunkte 202 aufrechterhalten, wie sie von einer Zustandsüberprüfungsvorrichtung 204 innerhalb des Rechenzentrums 110, einer Zustandsüberprüfungsvorrichtung 306 innerhalb des Zugangspunkts 106A oder von beiden erhalten werden. Der Fluss-Manager 304 kann somit aus einem Satz von Endpunkten 202 einen gesunden Endpunkt für den Dienst auswählen, der mit der Netzwerkadresse assoziiert ist, an die ein Paket adressiert wurde. Der Fluss-Manager 304 kann einen beliebigen einer Reihe von bekannten Lastverteilungsalgorithmen nutzen, wie z. B. konsistentes Hashing, um Pakete zwischen den Endpunkten 202 zu verteilen. Wenn ein Paket mit einem existierenden Paketfluss assoziiert ist, kann der Fluss-Manager 304 denselben Endpunkt 202 auswählen, an den frühere Pakete in dem Fluss geroutet wurden.
  • Nach der Auswahl eines Endpunkts modifiziert der Fluss-Manager 304 innerhalb des Zugangspunkts 106A das Paket nach Bedarf, um das Paket an den ausgewählten Endpunkt 202 zu routen. Insbesondere wendet der Fluss-Manager 304 in der Ausführungsform aus 6 bei (5) NAT-Techniken auf das Paket an, z. B. durch Ersetzen der Quell- und Zielnetzadresse des Pakets. Danach, bei (6), überträgt der Fluss-Manager 304 das Paket an den ausgewählten Endpunkt 202 innerhalb des ausgewählten Rechenzentrums 110.
  • Bei (7) verarbeitet der Endpunkt 202 das Paket gemäß dem netzwerkzugänglichen Dienst. Der Endpunkt 202 sendet dann ein Antwortpaket an den globalen Zugangspunkt 106A zurück. Da das Antwortpaket mit einem existierenden Datenfluss assoziiert ist, leitet der Router 302 innerhalb des Zugangspunkts 106A das Antwortpaket an denselben Fluss-Manager 304, der vorstehend erörtert wurde. Der Fluss-Manager 304 macht die vorherige NAT-Transformation rückgängig, um das Paket an das Client-Vorrichtung 102 zu adressieren. Der Fluss-Manager 304 sendet dann das Datenpaket an den Client 102 zurück. So kann eine Client-Vorrichtung 102 über die Interaktionen aus 6 ein Datenpaket an eine globale Netzwerkadresse adressieren und (über einen globalen Zugangspunkt 106) an einen Endpunkt routen, der einen auf die Netzwerkadresse bezogenen netzwerkzugänglichen Dienst bereitstellt. Der Zugangspunkt 106 kann Lastverteilung auf Pakete anwenden, sodass die Last des Dienstes auf die Rechenzentren 110 verteilt wird, und zwar gemäß einer gewünschten Konfiguration eines Dienstanbieters.
  • Unter Bezugnahme auf 7 werden veranschaulichende Interaktionen zum Weitergeben von Endpunkt-Informationen von einem Rechenzentrum 110A an globale Zugangspunkte 106 beschrieben, sodass die Zugangspunkte 106 einen Verkehr von Client-Vorrichtungen 102, der an globale Netzwerkadressen adressiert ist, korrekt routen können. Die Interaktionen aus 7 werden in Bezug auf ein einzelnes Rechenzentrum 110A beschrieben. Ähnliche Interaktionen können jedoch in Bezug auf andere Rechenzentren 110 auftreten, möglicherweise gleichzeitig.
  • Die Interaktionen aus 7 beginnen bei (1), wo der Ressourcen-Manager 206 eines Rechenzentrums 110A ein Endpunkt-Skalierungsereignis innerhalb des Endpunkt-Pools 201 detektiert. Ein Endpunkt-Skalierungsereignis entspricht auf veranschaulichende Weise einem „Heraufskalierungs“- oder „Herabskalierungs“-Ereignis, das eine Hinzufügung oder Entfernung eines Endpunkts 202 zu/aus dem Pool 201 angibt. In einigen Fällen kann ein Skalierungsereignis auch den Ersatz eines Endpunkts 202 im Pool 201 beinhalten. Skalierungsereignisse können auf veranschaulichende Weise aus dem Grund auftreten, dass eine Last auf dem Pool 201 gewünschte Schwellenwerte verlässt, oder aufgrund einer Fehlfunktion eines Endpunkts 202 innerhalb des Pools 201. Bei (2) überträgt der Ressourcen-Manager 206 Anweisungen an den Pool 201, um die Konfiguration des Pools gemäß dem Skalierungsereignis zu ändern. Zum Beispiel kann der Ressourcen-Manager 206 den Pool 201 anweisen, einen neuen Endpunkt 202 hinzuzufügen, einen existierenden Endpunkt 202 zu entfernen oder eine Kombination davon. Auf veranschaulichende Weise kann das Skalieren des Pools 201 das Übertragen von Anweisungen an eine Host-Vorrichtung beinhalten, um eine Instanz einer virtuellen Maschine hinzuzufügen oder zu entfernen, die Software ausführt, die dem Endpunkt 202 entspricht (z. B. das Verfügbarmachen eines netzwerkzugänglichen Dienstes in Bezug auf den Pool 201).
  • Bei (3) benachrichtigt der Pool 201 den Ressourcen-Manager 206 über Modifikationen am Pool 201, einschließlich z. B. der Netzwerkadressen beliebiger Endpunkte 202, die dem Pool 201 hinzugefügt wurden. Bei (4) benachrichtigt der Ressourcen-Manager 206 den Konfigurations-Manager 208 über beliebige Modifikationen der Netzwerkadressen des Pools 201. Eine Vielfalt von Techniken kann gemäß der vorliegenden Offenbarung verwendet werden, um die Übertragung von Informationen zwischen dem Ressourcen-Manager 206 und dem Konfigurations-Manager 208 zu erleichtern. Vorzugsweise erfolgt eine solche Kommunikation schnell (z. B. innerhalb von Millisekunden oder Sekunden), sodass zukünftige Anforderungen zum Zugang zu einem netzwerkzugänglichen Dienst an einen verfügbaren Endpunkt 202 geroutet werden, im Gegensatz zu einem ausgefallenen oder nicht verfügbaren Endpunkt 202. In einer Ausführungsform wird diese schnelle Kommunikation durch ein Pub/Sub-Nachrichtensystem, ein Stream-Datenverarbeitungssystem oder eine Kombination davon erleichtert. Auf veranschaulichende Weise kann der Ressourcen-Manager 206 Modifikationen an den Endpunkten 202 eines Pools 201 innerhalb eines Nachrichten-Streams veröffentlichen, der mit dem vom Pool 201 bereitgestellten netzwerkzugänglichen Dienst assoziiert ist. Der Konfigurations-Manager 208 kann so konfiguriert sein, dass er neue Nachrichten für den Stream abruft, entweder durch periodische Abfrage bezüglich solcher Nachrichten (z. B. mit einer Häufigkeit von 1 Sekunde, 2 Sekunden, 3 Sekunden usw.) oder durch Empfang von „Push“-Benachrichtigungen für solche Nachrichten durch das Nachrichtenverarbeitungssystem. Die Verwendung eines Pub/Sub-Nachrichtensystems oder eines Stream-Datenverarbeitungssystem kann vorteilhaft eine in hohem Maße ausfallsichere, schnelle Nachrichtenübermittlung zwischen dem Ressourcen-Manager 206 und dem Konfigurations-Manager 208 bereitstellen. Während die Beschreibung sich auf Änderungen der Netzwerkadressen bezieht, kann ein Pub/Sub-Nachrichtensystem oder ein Stream-Datenverarbeitungssystem verwendet werden, um die Kommunikation bezüglich anderer Änderungen der Konfiguration der globalen Zugangspunkte 106 zu erleichtern.
  • Wenn eine Änderung der Netzwerkadressen des Pools 201 detektiert wird, kann der Konfigurationsmanager 208 eine Konfiguration der globalen Zugangspunkte 106 modifizieren, um diese Änderungen widerzuspiegeln, wie nachstehend detailliert dargelegt. Während die nachstehenden Interaktionen unter Bezugnahme auf Änderungen von Netzwerkadressen innerhalb eines Pools 201 beschrieben werden, können dieselben oder ähnliche Interaktionen verwendet genutzt, um andere Konfigurationsänderungen an Zugangspunkte 106 weiterzugeben.
  • Insbesondere erstellt der Konfigurationsmanager 208 bei (5), nachdem er eine Änderung der Netzwerkadresse der Endpunkte 202 innerhalb des Pools 201 bestimmt hat, ein modifiziertes Konfigurationspaket (oder ein Stück innerhalb eines Pakets) für die globalen Zugangspunkte 106. Das modifizierte Konfigurationspaket (oder -stück) kann auf veranschaulichende Weise die Änderungen an den Netzwerkadressen des Pools 201 widerspiegeln, sowie beliebige andere Änderungen an der Konfiguration der globalen Zugangspunkte 106, seitdem das Konfigurationspaket (oder -stück) zuletzt erstellt wurde. In einer Ausführungsform spiegelt das Konfigurationspaket (oder -stück) nur eine Änderung seit einer letzten Version des Pakets (oder Stücks) wider. In einer anderen Ausführungsform spiegelt das Paket (oder -stück) alle relevanten Konfigurationsinformationen im Paket (oder -stück) wider. Bei (6) speichert der Konfigurations-Manager 208 das modifizierte Konfigurationspaket (oder -stück) im Datenspeicher 210 zum Abruf durch die globalen Zugangspunkte 106.
  • Wie vorstehend erwähnt, ist in einer Ausführungsform jeder globale Zugangspunkt 106 so konfiguriert, dass er den Konfigurationsdatenspeicher 210 periodisch nach Änderungen an seinem Konfigurationspaket (oder Stücken davon) abfragt. Somit kann bei (7) jeder globale Zugangspunkt 106 bestimmen, dass ein modifiziertes Paket (oder Stück) im Datenspeicher 210 existiert, und dieses Paket (oder Stück) abrufen. Bei (8) kann jeder Zugangspunkt 106 kann dann seine Konfiguration aktualisieren (z. B. mit den Änderungen der Netzwerkadressen innerhalb des Pools 201), sodass zukünftige Anforderungen an einen korrekten Endpunkt 202 innerhalb des Pools 201 geroutet werden. Die veranschaulichenden Interaktionen aus 7 können somit eine schnelle Modifikation der Konfiguration der globalen Zugangspunkte 106 erleichtern, z. B. als Reaktion auf eine Modifikation der Endpunkt-Pools 201.
  • Unter Bezugnahme auf 8 wird eine veranschaulichende Routine 800 zum Erhöhen der Ausfallsicherheit von globalen Netzwerkadressen durch Auswählen von Bekanntmachungen von Adressen gegenüber unterschiedlichen Nachbarvorrichtungen beschrieben. Die Routine 800 kann auf veranschaulichende Weise von einem globalen Zugangspunkt 106 umgesetzt werden (z. B. während der Initialisierung des Zugangspunkts 106). In einer Ausführungsform wird eine Instanz der Routine 800 von jedem Zugangspunkt 106 umgesetzt.
  • Die Routine 800 beginnt bei Block 804, wo die globalen Netzwerkadressen, die über den Zugangspunkt 106 bedient werden sollen, erlangt werden. Diese Informationen können auf veranschaulichende Weise als Teil einer Konfiguration des Zugangspunkts 106 erlangt werden, wie z. B. innerhalb einer Konfigurationsdatei, die in einem Konfigurationsdatenspeicher 210 gespeichert ist und während der Initialisierung des Zugangspunkts 106 erlangt wird. Die globalen Netzwerkadressen können in der Konfiguration auf veranschaulichende Weise in unterschiedliche Adressierungspools aufgeteilt werden. Jeder Pool kann z. B. einen anderen „Block“ von Netzwerkadressen beinhalten, wie z. B. einen zusammenhängenden Bereich von Adressen. Bereiche können z. B. „Teilnetze“ darstellen. In einer Ausführungsform werden Bereiche durch ein „Präfix“ dargestellt, das die ersten n Bits der Netzwerkadressen im Bereich bezeichnet. Beispielsweise kann das Präfix 192.0.2.0/24 (ausgedrückt in Classless Inter-Domain Routing oder CIDR) die ersten 24 Bits einer IPv4-Adresse darstellen, was Adressen im Bereich von 192.0.2.0 bis 192.0.2.255 entspricht.
  • Bei Block 808 wählt der Zugangspunkt 106 Nachbarvorrichtungen aus, gegenüber welchen er jeden Pool von Netzwerkadressen bekanntmacht. Im Allgemeinen können die verfügbaren Pools unter den verfügbaren Nachbarvorrichtungen aufgeteilt werden, um unterschiedliche Netzwerkwege bereitzustellen, von denen aus der Zugangspunkt erreicht werden kann. In einer Ausführungsform basiert eine solche Auswahl auf einer Spezifikation innerhalb der Konfiguration des Zugangspunkts 106. In einer anderen Ausführungsform wird eine solche Auswahl durch den Zugangspunkt 106 bestimmt. Auf veranschaulichende Weise kann der Zugangspunkt 106 die Pools gleichmäßig auf verfügbare Nachbarvorrichtungen aufteilen (die z. B. durch typische Routing-Protokolle erkannt werden können). In einigen Fällen können Nachbarvorrichtungen außerdem basierend auf dem bevorzugten Routing des Verkehrs bestimmt werden. Beispielsweise kann ein Zugangspunkt 106 so konfiguriert sein, dass er einen bestimmten Netzwerkadressen-Pool nicht gegenüber einer gegebenen Nachbarvorrichtung bekanntmacht, um dieses Nachbarvorrichtung dazu zu veranlassen, Anforderungen nach Adressen innerhalb des Pools an einen alternativen Zugangspunkt 106 zu routen.
  • Danach überträgt der globale Zugangspunkt 106 bei Block 810 Verfügbarkeitsankündigungen für die jeweiligen Pools von Netzwerkadressen an die relevanten Nachbarvorrichtungen. Die Ankündigungen können z. B. BGP-Protokoll-Ankündigungen sein; Die Übertragung von BGP-Protokoll-Ankündigungen ist auf dem Fachgebiet im Allgemeinen bekannt und wird daher hierin nicht im Detail beschrieben.
  • Wie vorstehend beschrieben, kann die Aufteilung der globalen Netzwerkadresse in Pools und die Bekanntmachung solcher Pools gegenüber unterschiedlichen Nachbarvorrichtungen die Ausfallsicherheit der Zugangspunkte 106 vorteilhaft erhöhen, insbesondere bei Ausfällen oder Fehlern in Nachbarnetzwerken. Insbesondere, da jeder netzwerkzugängliche Dienst mit globalen Netzwerkadressen unterschiedlicher Pools (z. B. eine für jeden Pool) assoziiert sein kann, 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 Ausfallsicherheit der Zugangspunkte 106 gegenüber begrenzten Ausfällen an den Zugangspunkten 106, wie z. B. Ausfällen einer Netzwerkschnittstelle oder eines Routers, der mit einem Nachbarnetzwerk verbunden ist, weiter erhöhen. Wie vorstehend angemerkt, wird in einer Ausführungsform die Ausfallsicherheit jedes Dienstes weiter erhöht, indem jeder Pool in Teilmengen von Netzwerkadressen aufgeteilt wird, die wiederum auf Fluss-Manager 304 eines Zugangspunkts 106 verteilt werden können. Die Assoziationen zwischen Diensten und jeder Teilmenge können zwischen den Pools „gemischt“ 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 der Dienste innerhalb der Teilmengen zwischen den Pools „gemischt“ werden. Wenn die Konfiguration eines individuellen Dienstes für andere Dienste innerhalb der Teilmenge problematisch ist, variieren auf diese Weise wahrscheinlich die anderen durch diese Fehlkonfiguration betroffen Dienste zwischen den Pools. Da erwartet werden kann, dass jeder Dienst über Adressen in mehreren Pools zugänglich ist, können sich Client-Vorrichtungen 102 mit jedem anderen Dienst über eine alternative Adresse eines alternativen Pools verbinden und so die problematische Teilmenge und den Pool umgehen. Dieser Mischmechanismus kann daher die Ausfallsicherheit von Diensten, die globale Netzwerkadressen verwenden, stark erhöhen.
  • Unter Bezugnahme auf 9 wird eine veranschaulichende Routine 900 zum Routen von Verkehr, der an eine globale Netzwerkadresse adressiert ist, die mit einem Dienst assoziiert ist, der durch Endpunkte 202 innerhalb von Rechenzentren 110 bereitgestellt wird, beschrieben. Die Routine 900 kann auf veranschaulichende Weise von einem Fluss-Manager 304 innerhalb eines Zugangspunkts 106 umgesetzt werden. In einer Ausführungsform wird eine Instanz der Routine 900 von jedem Fluss-Manager 304 jedes Zugangspunkts 106 umgesetzt.
  • Die Routine 900 beginnt bei Block 902, wobei der Fluss-Manager 304 ein Datenpaket empfängt, das an eine globale Netzwerkadresse adressiert ist, die als am Zugangspunkt 106 zugänglich bekanntgemacht wurde. Das Datenpaket kann z. B. eine Anforderung zum Zugang zu einem netzwerkzugänglichen Dienst darstellen, der über die Netzwerkadresse verfügbar ist. In einem Beispiel ist das Datenpaket als TCP- oder UDP-Datenpaket formatiert.
  • Bei Block 903 variiert die Routine 900 je nachdem, ob das Datenpaket mit einem existierenden Paketfluss assoziiert ist, wie bei Block 903 bestimmt. Auf veranschaulichende Weise kann der Zugangspunkt 106 Attribute des Datenpakets mit Attributen früherer Pakete vergleichen, um zu bestimmen, ob sich das neue Datenpaket innerhalb desselben Kommunikationsflusses wie ein früheres Paket befindet. Um zu bestimmen, ob sich, ein Datenpaket innerhalb eines existierenden Flusses befindet, kann eine beliebige Anzahl von Flussidentifikationstechniken verwendet werden, wobei eine Vielfalt davon auf dem Fachgebiet bekannt ist.
  • Wenn das Paket Teil eines existierenden Flusses ist, geht die Routine 900 zu Block 913 über, wo der Fluss-Manager 304 als einen Endpunkt 202 für das Paket denselben Endpunkt 202 auswählt, der für vorherige Pakete innerhalb des Flusses ausgewählt wurde. In einer Ausführungsform kann jeder Fluss-Manager 304 einen Cache im Speicher unterhalten, der Flüsse mit den Endpunkten 202 assoziiert und so diese Auswahl erleichtert.
  • Wenn das Paket nicht Teil eines existierenden Flusses ist, geht die Routine 900 zu Block 904 über, wo der Fluss-Manager 304 den netzwerkzugänglichen Dienst identifiziert, der mit der Netzwerkadresse assoziiert ist, an die das Paket adressiert ist. Der Fluss-Manager 304 kann auf veranschaulichende Weise auf Informationen zugreifen, die Netzwerkadressen zu assoziierten Diensten zuordnen (z. B. wie im Speicher des Zugangspunkts 106 aufrechterhalten), um den mit der Adresse assoziierten Dienst zu identifizieren.
  • Danach wählt der Zugangspunkt 106 bei Block 906 ein Rechenzentrum 110 aus, das den netzwerkzugänglichen Dienst bereitstellt. In einer Ausführungsform wird das Rechenzentrum 110 mindestens teilweise basierend auf Netzwerk-Performance-Kriterien zwischen dem Zugangspunkt 106 und dem Rechenzentrum 110 sowie einer Lastverteilungskonfiguration für den netzwerkzugänglichen Dienst ausgewählt. Auf veranschaulichende Weise kann der Fluss-Manager 304 anfänglich das Rechenzentren 110 mit der höchsten Performance (in Form von gegebenen Netzwerk-Performance-Kriterien in Bezug auf die Client-Vorrichtung 102 oder den Zugangspunkt 106) auswählen. Der Fluss-Manager 304 kann dann bestimmen, ob ein Anteil der Pakete, der über einen vergangenen Zeitraum (z. B. 1 Minute, 5 Minuten, 30 Minuten usw.) an das Rechenzentrum 110 geroutet wurde, ein gewünschtes Maximum eines Schwellenwerts für das Rechenzentrum 110 überschreitet, und zwar basierend auf einer gewünschten Lastverteilung zwischen den Rechenzentren 110 für den Dienst. In einer Ausführungsform kann das gewünschte Maximum des Schwellenwerts z. B. von einem Dienstanbieter spezifiziert sein, z. B. über einen gewünschten Prozentsatz des Verkehrs, der an jedes Rechenzentrum 110 zu routen ist. In einer anderen Ausführungsform kann das gewünschte Maximum des Schwellenwerts kooperativ von mehreren Zugangspunkten 106 bestimmt werden, sodass die kombinierten Schwellenwerte aller Zugangspunkte 106 die gewünschte Aufteilung eines Dienstanbieters auf die Rechenzentren 110 erreichen. Beispielsweise können die Zugangspunkte 106 einen Peer-to-Peer-Algorithmus umsetzen, der die Verkehrsvolumina zu einem Dienst über die Zugangspunkte 106 hinweg aggregiert und ein optimales Routing für jedes Datenpaket basierend auf dem Zugangspunkt 106 bestimmt, an den das Paket adressiert wurde (und entsprechenden Netzwerk-Performance-Kriterien für jedes Rechenzentrum 110). Der Algorithmus kann dann das optimale Routing für jeden Zugangspunkt 106 nach Bedarf modifizieren, um ein global optimiertes Routing umzusetzen, was zu einem individualisierten gewünschten Anteil zwischen den Rechenzentren 110 für jeden Zugangspunkt 106 führt. Jeder Zugangspunkt 106 kann somit diesen individualisierten gewünschten Anteil umsetzen, um zu bestimmen, ob ein Anteil der Pakete, der über einen vergangenen Zeitraum (z. B. 1 Minute, 5 Minuten, 30 Minuten usw.) an das anfänglich ausgewählte Rechenzentrum 110 geroutet wurde, ein gewünschtes Maximum eines Schwellenwerts für das Rechenzentrum 110 überschreitet. Wenn dies der Fall ist, kann der Zugangspunkt die anfängliche Auswahl auf ein alternatives Rechenzentrum modifizieren, z. B. ein näher gelegenes Rechenzentrum. In einer Ausführungsform wird die Umsetzung von Block 906 für jedes ausgewählte Rechenzentrum 110 wiederholt, um sicherzustellen, dass kein Rechenzentrum mehr als einen gewünschten maximalen Anteil oder ein gewünschtes maximales Volumen an Datenpaketen empfängt.
  • Nach der Auswahl eines Rechenzentrums 110 wählt der Fluss-Manager 304 einen Endpunkt 202 innerhalb des Rechenzentrums 110 aus, an den das Datenpaket zu routen ist. In einer Ausführungsform kann der Fluss-Manager 304 konsistentes Hashing nutzen, um einen Endpunkt 202 auszuwählen, und zwar basierend auf einem Attribut des Pakets (z. B. Quellen-IP-Adresse).
  • Danach wendet der Fluss-Manager 304 bei Block 910 NAT auf das Datenpaket an. Auf veranschaulichende Weise kann der Fluss-Manager 304 eine Quelladresse des Datenpakets durch eine Adresse des globalen Zugangspunkts 106 (z. B. eine Unicast-Adresse, im Gegensatz zu einer globalen Netzwerkadresse) ersetzen und eine Zieladresse durch eine Adresse des Endpunkts 202 (die auch eine Unicast-Adresse des Endpunkts 202 sein kann) ersetzen. Der Fluss-Manager 304 kann z. B. auch eine Portnummer des Pakets modifizieren, um die spätere Anwendung von NAT-Techniken auf Pakete innerhalb des Flusses zu erleichtern. Der Fluss-Manager 304 kann dann das Paket an den ausgewählten Endpunkt 202 übertragen. Die Routine 900 kann dann bei Block 914 enden.
  • Verschiedene Modifikationen der Routine 900 werden hierin in Betracht gezogen. Während die Routine 900 beispielsweise drei Blöcke enthält, die sich auf die Auswahl eines Endpunkts 202 für Pakete beziehen, die nicht mit einem existierenden Fluss assoziiert sind (Blöcke 904, 906 oder 908), können einige Umsetzungen der Routine 900 einen oder mehrere dieser Blöcke ausschließen. Anstatt einen Dienst und die zu diesem Dienst gehörenden Rechenzentren separat zu identifizieren, kann ein Fluss-Manager 304 auf veranschaulichende Weise Daten verwalten, die eine Netzwerkadresse zu Rechenzentren 110 und Endpunkten 202 zuordnet, die mit der Adresse assoziiert sind. Der Fluss-Manager 304 kann dann ein Rechenzentrum 110 basierend auf den vorstehend beschriebenen Kriterien auswählen, ohne dass der mit der Adresse assoziierte Dienst direkt identifiziert werden muss. In anderen Ausführungsformen kann der Fluss-Manager 304 nur Daten verwalten, die Netzwerkadressen mit entsprechenden Endpunkten 202 assoziieren, und kann einen Endpunkt 202 für ein Paket direkt auswählen, ohne zuerst den mit der Adresse assoziierten Dienst oder ein Rechenzentrum 110 zu identifizieren, das den Dienst bereitstellt. 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 Wert für die Performance-Kriterien ausgewählt wird und diese Auswahl modifiziert wird, wenn der Endpunkt 202 mehr als einen gewünschten Anteil des Datenvolumens empfängt. Während die Routine 900 in 9 als bei Block 914 endend dargestellt ist, kann ein Fluss-Manager 304 darüber hinaus weiterhin andere Handlungen im Anschluss an die Routine 900 durchführen, wie z. B. als NAT-Vorrichtung für die Kommunikation zwischen Client-Vorrichtungen 102 und Endpunkten 202 fungieren. Somit ist die. Darstellung der Routine 900 in 9 eine Ausführungsform der hierin offenbarten Konzepte.
  • Unter Bezugnahme auf 10 wird eine veranschaulichende Routine 1000 zum Aktualisieren von Informationen bei den globalen Zugangspunkten 106 bezüglich Endpunkten 202 eines Rechenzentrums 110, die einen netzwerkzugänglichen Dienst bereitstellen, beschrieben. Die Routine 1000 kann auf veranschaulichende Weise von einem Ressourcen-Manager 206 innerhalb eines Rechenzentrums 110 umgesetzt werden. In einer Ausführungsform wird eine Instanz der Routine 900 von jedem Ressourcen-Manager 206 jedes Rechenzentrums umgesetzt.
  • Die Routine 1000 beginnt bei Block 1002, wo der Ressourcen-Manager 206 eines Rechenzentrums 110A ein Endpunkt-Skalierungsereignis innerhalb eines Endpunkt-Pools 201 detektiert. Ein Endpunkt-Skalierungsereignis entspricht auf veranschaulichende Weise einem „Heraufskalierungs“- oder „Herabskalierungs“-Ereignis, das eine Hinzufügung oder Entfernung eines Endpunkts 202 zu/aus dem Pool 201 angibt. In einigen Fällen kann ein Skalierungsereignis auch den Ersatz eines Endpunkts 202 im Pool 201 beinhalten. Skalierungsereignisse können auf veranschaulichende Weise aus dem Grund auftreten, dass eine Last auf dem Pool 201 gewünschte Schwellenwerte verlässt, oder aufgrund einer Fehlfunktion eines Endpunkts 202 innerhalb des Pools 201.
  • Bei Block 1004 ändert der Ressourcen-Manager 206 die Poolkonfiguration basierend auf dem detektierten Skalierungsereignis. Auf veranschaulichende Weise kann der Ressourcen-Manager 206 Anweisungen an den Pool 201 übertragen, um die Konfiguration des Pools gemäß dem Skalierungsereignis zu ändern. Zum Beispiel kann der Ressourcen-Manager 206 den Pool 201 anweisen, einen neuen Endpunkt 202 hinzuzufügen, einen existierenden Endpunkt 202 zu entfernen oder eine Kombination davon. Auf veranschaulichende Weise kann das Skalieren des Pools 201 das Übertragen von Anweisungen an eine Host-Vorrichtung beinhalten, um eine Instanz einer virtuellen Maschine hinzuzufügen oder zu entfernen, die Software ausführt, die dem Endpunkt 202 entspricht (z. B. das Verfügbarmachen eines netzwerkzugänglichen Dienstes in Bezug auf den Pool 201).
  • Bei Block 1006 erlangt der Ressourcen-Manager 206 von dem Pool 301 die Netzwerkadressen beliebiger Endpunkte 202, die dem Pool 201 hinzugefügt oder aus ihm entfernt wurden. Ferner benachrichtigt der Ressourcen-Manager 206 bei Block 1008 die globalen Zugangspunkte 106 über beliebige Modifikationen der Netzwerkadressen des Pools 201. Wie vorstehend erörtert, können die Benachrichtigungen in einigen Fällen über Änderungen an einem Konfigurationspaket (oder -stück) für die Zugangspunkte 106 übertragen werden. Somit können die globalen Zugangspunkte 106 ihre Endpunktverfügbarkeit für den netzwerkzugänglichen Dienst in Bezug auf den Pool 201 aktualisieren, sodass zukünftige Anforderungen zum Zugang zu dem netzwerkzugänglich Dienst an einen verfügbaren Endpunkt 202 in dem Pool 201 geroutet werden können. Die Routine 1000 kann dann bei Block 1010 enden.
  • Unter Bezugnahme auf 11 werden veranschaulichende Interaktionen zur Durchführung einer Initialisierungsphase einer verbindungsorientierten Kommunikationssitzung an einem globalen Zugangspunkt 106A und zur Übergabe der Sitzung an eine Vorrichtung innerhalb eines Rechenzentrums 110 beschrieben, wodurch die für die Herstellung einer solchen Sitzung erforderliche Zeit reduziert wird. Die Interaktionen aus 11 können z. B. von einem Fluss-Manager 304 eines Zugangspunkte 106 umgesetzt werden. Die Interaktionen aus 11 werden in Bezug auf einen einzelnen Zugangspunkt 106A und ein einzelnes Rechenzentrum 110A beschrieben. Ähnliche Interaktionen können jedoch in Bezug auf andere Zugangspunkte 106 und Rechenzentren 110 auftreten, möglicherweise gleichzeitig. Darüber hinaus werden die Interaktionen aus 11 in Bezug auf eine spezifische Art von verbindungsorientierten Kommunikationssitzungen beschrieben: eine TCP-Sitzung. Ähnliche Interaktionen können in Bezug auf andere verbindungsorientierte Kommunikationssitzungen auftreten.
  • Die Interaktionen aus 11 beginnen bei (1), wo eine Client-Vorrichtung 102 versucht, eine verbindungsorientierte Kommunikationssitzung mit einem Netzwerkdienst zu initiieren, indem es ein TCP-SYN-Paket überträgt, das an eine globale Netzwerkadresse des Dienstes adressiert ist. Gemäß den vorstehend beschriebenen Funktionalitäten wird das TCP-SYN-Paket an den globalen Zugangspunkt 106A übertragen, wie in 11 dargestellt. Das TCP-SYN-Paket beinhaltet auf veranschaulichende Weise eine Sequenznummer für die Client-Vorrichtung 102.
  • Bei (2) setzt ein Fluss-Manager 304 des globalen Zugangspunkts 106A den TCP-Drei-Wege-Handschlag fort, indem er ein TCP-SYN-ACK-Paket an die Client-Vorrichtung 102 zurücksendet, das auf veranschaulichende Weise eine Sequenznummer für den Zugangspunkt 106A (sowie eine Bestätigung der Sequenznummer der Client-Vorrichtung 102) beinhaltet. Bei (3) setzt die Client-Vorrichtung 102 den TCP-Drei-Wege-Handschlag fort, indem sie ein TCP-ACK-Paket an den Zugangspunkt 106A zurücksendet, das die Sequenznummer des Zugangspunkts 106A bestätigt. Beim Empfang des TCP-ACK-Pakets wird eine TCP-Sitzung zwischen der Client-Vorrichtung 102 und dem globalen Zugangspunkt 106A initiiert. Da erwartet wird, dass sich der Zugangspunkt 106A in der Nähe der Client-Vorrichtung 102 befindet (z. B. in Form der Latenz), wird erwartet, dass die Interaktionen (1)-(3) schnell abgeschlossen werden, relativ zur Durchführung der Initialisierungsphase zwischen der Client-Vorrichtung 102 und einem Endpunkt 202.
  • Bei (4) überträgt die Client-Vorrichtung 102 (mit dem Verständnis, 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 an den globalen Zugangspunkt 106A geroutet, der bei (5) ein Rechenzentrum 110 auswählt, an welches das Paket zu routen ist. Die Auswahl eines Rechenzentrums kann auf die gleiche Weise erfolgen, die vorstehend beschrieben ist (z. B. als Interaktion (3) aus 6). Bei (6) verkapselt der Zugangspunkt 106 das Datenpaket ferner zur Übertragung an das ausgewählte Rechenzentrum 110 (in diesem Fall Rechenzentrum 110A) über einen Tunnel. In den Interaktionen aus 11 wird davon ausgegangen, dass der Zugangspunkt 106A zuvor einen Tunnel zu dem Rechenzentrum 110A hergestellt hat (z. B. zu einem Sitzungsübergabe-Manager 212 des Rechenzentrums 110A). Zum Beispiel kann der Zugangspunkt 106A einen oder mehrere ungenutzte TCP-Tunnel zu dem Rechenzentrum 110A aufrechterhalten, die für die Übertragung von Paketen zu dem Rechenzentrum 110 verwendet werden. Es kann jedoch eine zusätzliche Interaktion enthalten sein, wobei der globale Zugangspunkt 106A einen Tunnel zu dem Rechenzentrum 110A herstellt (z. B. einen UDP- oder TCP-Tunnel). Um die Übergabe der hergestellten TCP-Sitzung zu erleichtern, enthält das verkapselte Datenpaket auf veranschaulichende Weise auch TCP-Sitzungsstatusinformationen, wie z. B. das Fünf-Tupel für die TCP-Sitzung und Sequenznummern der Sitzung. In der in 11 auf veranschaulichende Weise dargestellten Ausführungsform sind die Sitzungsstatusinformationen als Header-Informationen für das verkapselte Datenpaket enthalten. Bei (7) überträgt der globale Zugangspunkt 106A das verkapselte Paket an das Rechenzentrum 110A (z.B. an einen Sitzungsübergabe-Manager 212 innerhalb des Rechenzentrums 110A).
  • Bei (8), beim Empfang des verkapselten Pakets, nimmt die Vorrichtung innerhalb des Rechenzentrums 110A (z. B. der Sitzungsübergabe-Manager 212 oder in einigen Fällen ein Endpunkt 202) die TCP-Sitzung an, indem sie Informationen, die in dem verkapselten Paket angegeben sind (z. B. in einem Header), zu ihrer eigenen TCP-Sitzungsstatustabelle hinzufügt. Die Vorrichtung entkapselt dann bei (9) das Paket der Client-Vorrichtung 102 und verarbeitet es bei (10) so, als ob es direkt an der Vorrichtung empfangen worden wäre. Wenn es sich bei der Vorrichtung um einen Endpunkt 202 handelt, kann der Endpunkt 202 die Daten des Pakets zum Beispiel gemäß dem von der Client-Vorrichtung 102 angeforderten Dienst verarbeiten. Wenn es sich bei der Vorrichtung um einen Sitzungsübergabe-Manager 212 handelt, kann der Manager 212 das Paket verarbeiten, indem er einen Endpunkt 202 zum Bedienen des Pakets identifiziert (z. B. auf eine Weise, die der Interaktion (4) aus 6 ähnlich ist), und den Endpunkt 202 zum Bedienen des Pakets nutzen. Da der Sitzungsübergabe-Manager 212 (und in diesem Fall nicht der Endpunkt 202) eine Partei der TCP-Verbindung mit der Client-Vorrichtung 102 ist, kann der Manager 212 auf veranschaulichende Weise eine zweite TCP-Verbindung mit dem Endpunkt 202 initiieren und die Daten innerhalb des Pakets der Client-Vorrichtung 102 über die zweite TCP-Sitzung an den Endpunkt 202 weiterleiten. Der Manager 212 kann weiterhin als ein Proxy zwischen der Client-Vorrichtung 102 und dem Endpunkt 202 für zukünftige Kommunikationen betrieben werden. Zum Beispiel kann der Manager 212 eine Antwort vom Endpunkt 202 erlangen und die Übertragung der Antwort an die Client-Vorrichtung 102 über die TCP-Sitzung mit der Client-Vorrichtung 102 erleichtern.
  • Bei (11) überträgt die Vorrichtung innerhalb des Rechenzentrums 110A ein Antwortpaket an den globalen Zugangspunkt 106A, z. B. über den Tunnel. Die Interaktion (11) kann z. B. das Verkapseln des Antwortpakets für die Übertragung über den Tunnel beinhalten. Der globale Zugangspunkt 106A leitet bei (12) dann das Antwortpaket an die Client-Vorrichtung 102 weiter. Die Interaktion (12) kann z. B. das Entkapseln des Antwortpakets für die Übertragung an die Client-Vorrichtung 102 beinhalten. Die weitere Kommunikation zwischen der Client-Vorrichtung 102 und einem Endpunkt 202 innerhalb des Rechenzentrums 110A kann auf eine Weise erfolgen, die den vorstehenden Interaktionen (4) bis (7) und (9) bis (12) ähnlich ist. Somit kann die Client-Vorrichtung 102 über eine TCP-Sitzung mit dem Rechenzentrum 110A kommunizieren, ohne dass eine Initialisierungsphase der Sitzung mit einer Vorrichtung des Rechenzentrums 110A durchgeführt werden muss.
  • Während in 11 veranschaulichend Interaktionen dargestellt sind, können diese Interaktionen über Ausführungsformen hinweg variieren. Während zum Beispiel in 11 der Darstellung nach ein Antwortpaket durch den globalen Zugangspunkt 106A geleitet wird, kann in einigen Fällen ein Endpunkt 202 so konfiguriert sein, dass er einer Client-Vorrichtung 102 direkt antwortet, ohne dass die Antwort durch den Zugangspunkt 106A geleitet wird. Anstatt ein Antwortpaket zu verkapseln und es an den Zugangspunkt 106A zu übertragen, kann ein Endpunkt 202 (oder Manager 212) das Antwortpaket beispielsweise direkt an die Client-Vorrichtung 102 übertragen (z. B. über das Netzwerk 104), wodurch die Notwendigkeit der Verkapselung entfällt. Als eine andere Variante, während Sitzungsinformationen in 11 der Beschreibung nach in einem verkapselten Datenpaket enthalten sind, können in anderen Ausführungsformen Sitzungsstatusinformationen in einem separaten Paket enthalten sein. Beispielsweise kann ein globaler Zugangspunkt 106A so konfiguriert sein, dass er nach der Durchführung einer Initialisierungsphase einer Kommunikationssitzung separat Sitzungsstatusinformationen an ein Rechenzentrum 110A überträgt, beispielsweise in einem „Sitzungsannahme“-Befehl an das Rechenzentrum 110A. Als noch eine andere Variante, während der Manager 212 der vorstehenden Erörterung nach einen Endpunkt 202 innerhalb des Rechenzentrums 110A zum Bedienen einer Client-Vorrichtung 102 auswählt, kann in einigen Fällen ein Zugangspunkt 106 einen solchen Endpunkt 202 auswählen, auch wenn ein Manager 212 verwendet wird. Zum Beispiel kann ein Zugangspunkt 106 einen Endpunkt 202 auswählen und den Manager 212 darüber benachrichtigen, welcher Endpunkt ausgewählt wurde (z. B. in den Headern eines verkapselten Pakets). In Fällen, bei denen der globale Zugangspunkt 106 einen Endpunkt 202 auswählt, an den ein Paket zu routen ist, kann der Zugangspunkt 106 das Paket modifizieren, um das Routing an den Endpunkt 202 zu erleichtern. Beispielsweise kann der Zugangspunkt 106 in einem Zieladressfeld des Pakets eine globale Netzwerkadresse für den Dienst durch eine Netzwerkadresse des Endpunkts 202 (z. B. eine „Unicast“-Adresse) ersetzen. Somit sollen die Interaktionen aus 11 einen veranschaulichenden Charakter aufweisen.
  • Während die Interaktionen aus 11 Interaktionen einer Client-Vorrichtung 102 mit einem einzelnen globalen Zugangspunkt 106A darstellen, kann eine Client-Vorrichtung 102 in einigen Fällen mit mehreren globalen Zugangspunkten 106 interagieren. Wie vorstehend angemerkt, kann jeder globale Zugangspunkt 106 so konfiguriert sein, dass er globale Netzwerkadressen gegenüber einem öffentlichen Netzwerk (z. B. Netzwerk 104) bekanntmacht, das nicht unter der Kontrolle der globalen Zugangspunkte 106 steht. Somit können Vorrichtungen in einem solchen Netzwerk im Allgemeinen den Zugangspunkt 106 bestimmen, an den Pakete einer Client-Vorrichtung 102, die an eine globale Netzwerkadresse adressiert sind, geroutet werden. In einigen Konfigurationen kann das Umleiten von Paketen innerhalb eines gegebenen Paketflusses zu einem anderen globalen Zugangspunkt 106 die Kommunikation der Client-Vorrichtung 102 nachteilig beeinflussen. Wenn beispielsweise eine Client-Vorrichtung 102 eine TCP-Verbindung herstellt, die eine Aufrechterhaltung von Statusinformationen an einem individuellen Zugangspunkt 106 erfordert (z. B. eine TCP-Verbindung mit dem Zugangspunkt 106 oder durch NAT mit dem Zugangspunkt 106), kann das Umleiten der Kommunikation der Client-Vorrichtung 102 zu einem anderen Zugangspunkt 106 diese Verbindung unerwünscht unterbrechen.
  • Die Interaktionen aus 11 gehen dieses Szenario an, indem sie es ermöglichen, dass TCP-Verbindungen zwischen einer Client-Vorrichtung 102 und dem Endpunkt 202 (oder dem Sitzungsübergabe-Manager 212) auch dann aufrechterhalten werden, wenn das Umleiten der Pakete der Client-Vorrichtung 102 zu einem anderen Zugangspunkt 106 auftritt. Insbesondere kann jeder Zugangspunkt 106 so konfiguriert sein, dass er dieselben Lastverteilungskriterien anwendet, wenn er ein Rechenzentrum 110 oder einen Endpunkt 202 auswählt, an das/den ein Paket einer Client-Vorrichtung 102 zu routen ist. Solche Lastverteilungskriterien können agnostisch für den Zugangspunkt 106 sein (z. B. unveränderlich, unabhängig vom Zugangspunkt 106, an dem sie angewendet werden). Beispielsweise können die Lastverteilungskriterien die Latenz zwischen einer Client-Vorrichtung 102 und dem Rechenzentrum 110 sowie den Zustand des Rechenzentrums 110 (oder der Endpunkte 202 darin) widerspiegeln, unabhängig von der Latenz zum oder vom Zugangspunkt 106: Daher kann erwartet werden, dass jeder Zugangspunkt 106 die Pakete einer gegebenen Client-Vorrichtung 102 an dasselbe Rechenzentrum 110 routet. Wenn also beispielsweise die Client-Vorrichtung 102 ein zusätzliches Paket an einen zweiten Zugangspunkt 106 übertragen würde, würde der zweite Zugangspunkt 106 dieselben Lastverteilungskriterien anwenden, um das Rechenzentrum 110A als ein Ziel für das Paket auszuwählen. Der zweite Zugangspunkt 106 würde dann das Paket an den Endpunkt 202 (oder den Sitzungsübergabe-Manager 212) routen, der das Paket auf dieselbe Weise verarbeiten würde, als ob es durch den Zugangspunkt 106A geroutet worden wäre. Da die Interaktionen aus 11 nicht erfordern, dass Statusinformationen am Zugangspunkt 106A aufrechterhalten werden, und da der Verkapselungsmechanismus aus 11 eine Quellnetzwerkadresse der Client-Vorrichtung 102 innerhalb verkapselter Pakete aufrechterhält, würde keine Unterbrechung einer verbindungsorientierten Kommunikationssitzung (z. B. einer TCP-Sitzung) auftreten. Somit gehen die Interaktionen aus 11 Umleitungsprobleme an, die ansonsten bei der Nutzung von Anycast-Technologien zur Gestaltung des Routings von verbindungsorientierten Kommunikationssitzungen auftreten würden.
  • Unter Bezugnahme auf 12 wird eine veranschaulichende Routine 1200 für die Initialisierung einer verbindungsorientierten Kommunikationssitzung an einem globalen Zugangspunkt 106A und die Übergabe der Sitzung an einen Manager 212 innerhalb eines Rechenzentrums 110 beschrieben. Die Routine 1200 ist auf veranschaulichende Weise kooperativ zwischen dem globalen Zugangspunkt 106A und der Sitzung zu einem Manager 212 umgesetzt, so dass die Kasten der Routine 1200 auf diese Vorrichtungen aufgeteilt sind. Obwohl Teile der Routine 1200 so dargestellt sind, dass sie von einem Manager 212 umgesetzt werden, können diese Teile in einigen Fällen alternativ direkt in einem Endpunkt 202 umgesetzt werden.
  • Die Routine 1200 beginnt bei Block 1202, wo der Zugangspunkt 106 (z. B. ein Fluss-Manager 304) eine an eine globale Netzwerkadresse eines Dienstes adressierte Anforderung erhält, um eine verbindungsorientierte Kommunikationssitzung mit dem Dienst zu initiieren. Die Anforderung kann z. B. ein TCP-SYN-Paket sein.
  • Bei Block 1204 schließt der Zugangspunkt 106 eine Initialisierungsphase der Sitzung ab, und zwar gemäß dem konkreten für die Sitzung verwendeten Protokoll. Wenn das Protokoll beispielsweise TCP ist, kann die Initialisierungsphase die Durchführung eines Drei-Wege-Handschlags mit der Client-Vorrichtung 102 beinhalten.
  • Bei Block 1206 empfängt der Zugangspunkt 106 ein Datenpaket von der Client-Vorrichtung 102 innerhalb der Sitzung. Das Paket kann zum Beispiel ein Nutzdatenpaket innerhalb einer TCP-Sitzung sein.
  • Bei Block 1208 verkapselt der Zugangspunkt 106 das Datenpaket für die Übertragung über einen Netzwerktunnel an den Manager 212. Der Zugangspunkt 106 enthält in dem verkapselten Paket (z. B. als Header-Information für das verkapselte Paket) ferner Sitzungskontext für die Kommunikationssitzung, wie z. B. ein TCP-Fünf-Tupel und Sequenznummern. Der Zugangspunkt 106 sendet dann bei Block 1210 das Paket an den Übergabe-Manager 212 als eine Übergabeanforderung für die Kommunikationssitzung.
  • Bei Block 1212 empfängt der Übergabe-Manager 212 das verkapselte Paket und baut bei Block 1214 innerhalb seiner lokalen Daten eine Kommunikationssitzung basierend auf den Kontextinformationen vom Zugangspunkt 106 auf. Der Manager 212 nimmt somit die Sitzung an und ermöglicht die anschließende Kommunikation innerhalb der Sitzung zwischen der Client-Vorrichtung 102 und dem Manager 212. Bei Block 1216 entkapselt der Übergabe-Manager 212 das Datenpaket der Client-Vorrichtung 102 und verarbeitet das Paket innerhalb der Sitzung. Zum Beispiel kann der Manager 212 einen Endpunkt 202 zum Verarbeiten der Anforderung auswählen und den Inhalt des Datenpakets über eine andere Kommunikationssitzung an den Endpunkt 202 übertragen. Die Routine 1200 endet dann bei Block 1218. So können die Client-Vorrichtung 102 und der Manager 212 über die zustandsorientierte Sitzung kommunizieren, wobei die Client-Vorrichtung 102 und der Manager 21 kommunizieren müssen, um die Sitzung herzustellen.
  • Die Routine 1200 kann zusätzliche oder alternative Blöcke als die vorstehend beschriebenen enthalten. Beispielsweise kann der Zugangspunkt 106 vor dem Senden eines verkapselten Pakets als eine Übergabeanforderung bei Block 1210 ein Rechenzentrum auswählen, um die Übergabeanforderung zu empfangen, und zwar auf eine Weise, die der in 9 erörterten Auswahl eines Rechenzentrums ähnlich ist. Darüber hinaus können der Zugangspunkt 106 und der Manager 212, obwohl die Routine 1200 der Darstellung nach im Anschluss an Block 1216 endet, weiterbetrieben werden, um die Kommunikation von oder zu einer Client-Vorrichtung 120 innerhalb der Sitzung zu ermöglichen, wie vorstehend erörtert. Die Anzahl und Anordnung der Blöcke in 12 weisen daher einen veranschaulichenden Charakter auf.
  • Ausführungsformen der vorliegenden Offenbarung können im Hinblick auf die folgenden Sätze beschrieben werden:
    • Satz 1. System, umfassend:
      • eine Vielzahl von Endpunkten, wobei sich jeder Endpunkt an einem anderen geografischen . Ort befindet und mindestens eine Server-Rechenvorrichtung enthält, die dazu konfiguriert ist, einen netzwerkzugänglichen Dienst bereitzustellen, der mit einer Netzwerkadresse assoziiert ist;
      • mindestens zwei Zugangspunkte zu dem netzwerkzugänglichen Dienst, wobei jeder der mindestens zwei Zugangspunkte einen Prozessor umfasst, sich an einem anderen geografischen Ort befindet und konfiguriert ist zum:
        • Nutzen der Anycast-Methodik, um ein Netzwerkpräfix der Netzwerkadresse als über den Zugangspunkt erreichbar bekannt zu machen;
        • Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
        • Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, an welchen das Netzwerkpaket zu routen ist, mindestens teilweise basierend auf einer Netzwerk-Performance-Metrik zwischen der Client-Vorrichtung und dem Endpunkt;
        • Transformieren des Netzwerkpakets gemäß Netzwerkadressübersetzung (NAT), um ein transformiertes Paket zu ergeben; und
        • Routen des transformierten Pakets zu dem Endpunkt.
    • Satz 2. System nach Satz 1, wobei das Netzwerkpaket ein Übertragungssteuerungsprotokoll(TCP)-Paket ist und wobei jeder Zugangspunkt dazu konfiguriert ist, Statusinformationen in Bezug auf TCP-Sitzungen aufrechtzuerhalten, die zwischen jeweiligen Client-Vorrichtungen und Endpunkten hergestellt wurden.
    • Satz 3. System nach Satz 1, wobei jeder Endpunkt konfiguriert ist zum:
      • Empfangen einer Antwort auf das transformierte Paket von dem Endpunkt; und
      • Transformieren der Antwort gemäß Netzwerkadressübersetzung (NAT), um eine transformierte Antwort zu ergeben; und
      • Routen der transformierten Antwort zu der .Client-Vorrichtung.
    • Satz 4. System nach Satz 1, wobei die mindestens zwei Zugangspunkte und die Vielzahl von Endpunkten über ein privates Netzwerk in Kommunikation stehen und wobei das Netzwerkpaket von der Client-Vorrichtung über ein öffentliches Netzwerk empfangen wird.
    • Satz 5. Verfahren, das an jedem Zugangspunkt einer Vielzahl von Zugangspunkten zu einem netzwerkzugänglichen Dienst, der über ein geographisches Gebiet verteilt ist, umgesetzt wird, wobei das Verfahren Folgendes umfasst:
      • Bekanntmachen einer Netzwerkadresse des netzwerkzugänglichen Dienstes als über jeden Zugangspunkt erreichbar;
      • an einem ersten Zugangspunkt der Vielzahl von Zugangspunkten:
        • Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
        • Auswählen eines Endpunkts aus einer Vielzahl von Endpunkten des netzwerkzugänglichen Dienstes, an welchen das Netzwerkpaket zu routen ist, mindestens teilweise basierend auf einer Netzwerk-Performance-Metrik zwischen der Client-Vorrichtung und dem Endpunkt;
        • Transformieren des Netzwerkpakets gemäß Netzwerkadressübersetzung (NAT), um ein transformiertes Paket zu ergeben; und
        • Routen des transformierten Pakets zu dem Endpunkt.
    • Satz 6. Verfahren nach Satz 5, wobei das Netzwerkpaket mindestens eines von einem User-Datagram-Protocol(UDP)-Paket oder einem Internet-Control-Message-Protocol(ICMP)-Paket ist.
    • Satz 7. Verfahren nach Satz 5, wobei die Netzwerkadressübersetzung (NAT) eine Portübersetzung beinhaltet.
    • Satz 8. Verfahren nach Satz 5, wobei Bekanntmachen der Netzwerkadresse des netzwerkzugänglichen Dienstes als über jeden Zugangspunkt erreichbar Übertragen eines Border-Gateway-Protocol(BGP)-Pakets von jedem Zugangspunkt umfasst.
    • Satz 9. Verfahren nach Satz 5, wobei der Endpunkt ferner mindestens teilweise basierend auf einem apparenten Zustand des Endpunkts für den ersten Zugangspunkt ausgewählt wird.
    • Satz 10. Verfahren nach Satz 9, wobei der apparente Zustand des Endpunkts für den ersten Zugangspunkt mindestens eines von Netzwerkbedingungen zwischen dem ersten Zugangspunkt und dem Endpunkt oder Antworten auf Zustandsüberprüfungsdaten, die von einer Zustandsüberprüfungsvorrichtung an den Endpunkt übertragen werden, widerspiegelt.
    • Satz 11. Verfahren nach Satz 5, ferner umfassend:
      • Bekanntmachen einer zweiten Netzwerkadresse eines zweiten netzwerkzugänglichen Dienstes als über den ersten Zugangspunkt erreichbar, wobei die zweite Netzwerkadresse ebenfalls als über einen zweiten Zugangspunkt an einem anderen geografischen Ort als dem des ersten Zugangspunkts bekanntgemacht wird;
      • Empfangen, von einer zweiten Client-Vorrichtung, eines Netzwerkpakets, das an die zweite Netzwerkadresse adressiert ist;
      • Auswählen eines Endpunktes für den zweiten netzwerkzugänglichen Dienst aus einer Vielzahl von Endpunkten des zweiten netzwerkzugänglichen Dienstes, zu dem das zweite Netzwerkpaket zu routen ist, mindestens teilweise basierend auf einem Netzwerkabstand zwischen der zweiten Client-Vorrichtung und dem Endpunkt für den zweiten netzwerkzugänglichen Dienst;
      • Transformieren des zweiten Netzwerkpakets gemäß NAT, um ein zweites transformiertes Paket zu ergeben; und
      • Routen des zweiten transformierten Pakets zu dem Endpunkt für den zweiten netzwerkzugänglichen Dienst.
    • Satz 12. Verfahren nach Satz 11, wobei die Verantwortung für das Routen von Paketen, die an die erste Netzwerkadresse adressiert sind, einem ersten Fluss-Manager innerhalb des ersten Zugangspunkts zugewiesen ist, wobei die Verantwortung für das Routen von Paketen, die an die zweite Netzwerkadresse adressiert sind, einem zweiten Fluss-Manager innerhalb des ersten Zugangspunkts zugewiesen ist, und wobei das Verfahren ferner Folgendes umfasst:
      • Routen des ersten Netzwerkpakets an den ersten Fluss-Manager mindestens teilweise darauf basierend, dass das erste Netzwerkpaket an die erste Netzwerkadresse adressiert ist; und
      • Routen des zweiten Netzwerkpakets an den zweiten Fluss-Manager mindestens teilweise darauf basierend, dass das zweite Netzwerkpaket an die zweite Netzwerkadresse adressiert ist.
    • Satz 13. Verfahren nach Satz 5, wobei die Netzwerkadresse eine erste Netzwerkadresse ist, die mit dem netzwerkzugänglichen Dienst assoziiert ist, wobei der netzwerkzugängliche Dienst ferner mit einer zweiten Netzwerkadresse assoziiert ist und das Verfahren ferner Folgendes umfasst:
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines ersten Nachbarnetzwerks des ersten Zugangspunkts, der ersten Netzwerkadresse als über den ersten Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des ersten Nachbarnetzwerks, dass die zweite Netzwerkadresse über den ersten Zugangspunkt erreichbar ist; und
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines zweiten Nachbarnetzwerks des ersten Zugangspunkts, der zweiten Netzwerkadresse als über den ersten Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des zweiten Nachbarnetzwerks, dass die erste Netzwerkadresse über den ersten Zugangspunkt erreichbar ist.
    • Satz 14. Verfahren nach Satz 5, wobei das Netzwerkpaket ein erstes Netzwerkpaket ist und wobei das Verfahren ferner Folgendes umfasst:
      • Speichern, in einem Fluss-Cache, von Informationen, die den Endpunkt als mit einem Datenfluss assoziiert identifizieren, der das erste Netzwerkpaket enthält;
      • Empfangen, von der Client-Vorrichtung, eines zweiten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
      • Identifizieren des zweiten Netzwerkpakets als Teil des Datenflusses;
      • Identifizieren des Endpunkts anhand der Informationen im Fluss-Cache; und
      • Routen des zweites Netzwerkpakets zu dem Endpunkt.
    • Satz 15. Nicht transitorische computerlesbare Medien, umfassend computerausführbare Anweisungen, die bei Ausführung durch jeden Zugangspunkt einer Vielzahl von Zugangspunkten zu einem netzwerkzugänglichen Dienst, der über ein geographisches Gebiet verteilt ist, jeden Zugangspunkt konfigurieren zum:
      • Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an eine Netzwerkadresse des netzwerkzugänglichen Dienstes adressiert ist, den der Zugangspunkt als über den Zugangspunkt erreichbar bekanntgemacht hat, wobei die Netzwerkadresse ebenfalls als über die anderen Zugangspunkte der Vielzahl von Zugangspunkten erreichbar bekanntgemacht wurde;
      • Auswählen eines Endpunkts aus einer Vielzahl von Endpunkten des netzwerkzugänglichen Dienstes, an den das Netzwerkpaket zu routen ist;
      • Transformieren des Netzwerkpakets gemäß Netzwerkadressübersetzung (NAT), um ein transformiertes Paket zu ergeben; und
      • Routen des transformierten Pakets zu dem Endpunkt.
    • Satz 16. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die Anweisungen jeden Zugangspunkt ferner konfigurieren zum:
      • Empfangen einer Antwort auf das transformierte Paket von dem Endpunkt; und
      • Transformieren der Antwort gemäß Netzwerkadressübersetzung (NAT), um eine transformierte Antwort zu ergeben; und
      • Routen der transformierten Antwort zu der Client-Vorrichtung.
    • Satz 17. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die computerausführbaren Anweisungen bei Ausführung durch jeden Zugangspunkt einen ersten Fluss-Manager umsetzen, und wobei die nicht transitorischen computerlesbares Medien ferner zweite Anweisungen umfassen, die bei Ausführung durch jeden Zugangspunkts einen zweiten Fluss-Manager umsetzen, der konfiguriert ist zum:
      • Empfangen, von einer zweiten Client-Vorrichtung, eines zweiten Netzwerkpakets, das an eine Netzwerkadresse eines zweiten netzwerkzugänglichen Dienstes adressiert ist,- dass der erste Zugangspunkt als über den ersten Zugangspunkt erreichbar bekanntgemacht hat, wobei die Netzwerkadresse des zweiten netzwerkzugänglichen Dienstes ebenfalls als über den zweiten Zugang erreichbar bekanntgemacht ist;
      • Auswählen eines Endpunkts aus einer Vielzahl von Endpunkten des zweiten netzwerkzugänglichen Dienstes, an den das zweite Netzwerkpaket zu routen ist;
      • Transformieren des zweiten Netzwerkpakets gemäß Netzwerkadressübersetzung (NAT), um ein zweites transformiertes Paket zu ergeben; und
      • Routen des zweiten transformierten Pakets zu dem Endpunkt, der aus der Vielzahl von Endpunkten des zweiten netzwerkzugänglichen Dienstes ausgewählt wurde.
    • Satz 18. Nicht transitorische computerlesbare Medien nach Satz 14, wobei das Netzwerkpaket ein erstes Netzwerkpaket ist und wobei die computerausführbaren Anweisungen bei Ausführung durch jeden Zugangspunkt jeden Zugangspunkt ferner konfigurieren zum:
      • Speichern, in einem Fluss-Cache, von Informationen, die den Endpunkt als mit einem Datenfluss assoziiert identifizieren, der das erste Netzwerkpaket enthält;
      • Empfangen, von der Client-Vorrichtung, eines zweiten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
      • Identifizieren des zweiten Netzwerkpakets als Teil des Datenflusses;
      • Identifizieren des Endpunkts anhand der Informationen im Fluss-Cache; und
      • Routen des zweites Netzwerkpakets zu dem Endpunkt.
    • Satz 19. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die computerausführbaren Anweisungen bei Ausführung durch jeden Zugangspunkt den Zugangspunkt ferner konfigurieren zum Auswählen des Endpunkts mindestens teilweise basierend auf einem apparenten Zustand des Endpunkts für den Zugangspunkt.
    • Satz 20. Nicht transitorische computerlesbare Medien nach Satz 14, wobei zum Auswählen des Endpunkts aus der Vielzahl von Endpunkten des netzwerkzugänglichen Dienstes die Anweisungen jeden Zugangspunkt dazu veranlassen, den Endpunkt mindestens teilweise basierend auf einem Netzwerkabstand zwischen der Client-Vorrichtung und dem Endpunkt auszuwählen.
    • Satz 21. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die computerausführbaren Anweisungen bei Ausführung durch jeden Zugangspunkt jeden Zugangspunkt ferner konfigurieren zum Umsetzen desselben Auswahlalgorithmus zum Auswählen von Endpunkten, an welche jedes Netzwerkpaket zu routen ist.
    • Satz 22. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die computerausführbaren Anweisungen bei Ausführung durch jeden Zugangspunkt jeden Zugangspunkt ferner konfigurieren zum Bekanntmachen der Netzwerkadresse als über den Zugangspunkt erreichbar, mindestens teilweise durch Bekanntmachen eines Netzwerkpräfixes der Netzwerkadresse.
  • Zusätzliche Ausführungsformen der vorliegenden Offenbarung können im Hinblick auf die folgenden Sätze beschrieben werden:
    • Satz 1. System, umfassend:
      • eine Vielzahl von Endpunkten, wobei sich jeder Endpunkt an einem anderen geografischen Ort befindet und mindestens eine Server-Rechenvorrichtung enthält, die dazu konfiguriert ist, einen netzwerkzugänglichen Dienst bereitzustellen, der sowohl mit einer ersten Netzwerkadresse als auch mit einer Netzwerkadresse assoziiert ist;
      • mindestens zwei Zugangspunkte zu dem netzwerkzugänglichen Dienst, wobei jeder der mindestens zwei Zugangspunkte einen Prozessor umfasst, sich an einem anderen geografischen Ort befindet und konfiguriert ist zum:
        • Nutzen der Anycast-Methodik zum Bekanntmachen, gegenüber einer Nachbarvorrichtung eines ersten Nachbarnetzwerks des Zugangspunkts, der ersten Netzwerkadresse als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des ersten Nachbarnetzwerks, dass die zweite Netzwerkadresse über den Zugangspunkt erreichbar ist;
        • Nutzen der Anycast-Methodik zum Bekanntmachen, gegenüber einer Nachbarvorrichtung eines zweiten Nachbarnetzwerks des Zugangspunkts, der zweiten Netzwerkadresse als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des zweiten Nachbarnetzwerks, dass die erste Netzwerkadresse über den Zugangspunkt erreichbar ist;
        • Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an mindestens eine der ersten oder zweiten Netzwerkadresse adressiert ist;
        • Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, an den das Netzwerkpaket zu routen ist; und
        • Routen des Pakets zu dem Endpunkt.
    • Satz 2. System nach Satz 1, wobei die gleiche erste Netzwerkadresse und zweite Netzwerkadresse durch jeden der mindestens zwei Zugangspunkte bekanntgemacht werden.
    • Satz 3. System nach Satz 1, wobei die erste Netzwerkadresse einen Abschnitt eines ersten Netzwerkadressen-Pools bildet, welcher der Nachbarvorrichtung des ersten Nachbarnetzwerks bekanntgemacht wird, und die zweite Netzwerkadresse einen Abschnitt eines zweiten Netzwerkadressen-Pools bildet, welcher der Nachbarvorrichtung des zweiten Nachbarnetzwerks bekannt gemacht wird, wobei jede Netzwerkadresse innerhalb des jeweiligen ersten und zweiten Pools mit mindestens einem netzwerkzugänglichen Dienst einer Vielzahl von netzwerkzugänglichen Diensten assoziiert ist, die von der Vielzahl von Endpunkten bereitgestellt wird.
    • Satz 4. System nach Satz 3, wobei jeder des ersten und zweiten Pools in Teilmengen unterteilt ist und wobei Gruppierungen von netzwerkzugänglichen Diensten innerhalb der Teilmengen der jeweiligen Pools zwischen den Pools variiert werden.
    • Satz 5. System nach Satz 4, wobei die erste und die zweite Netzwerkadresse zufällig aus dem ersten und dem zweiten Pool ausgewählt sind, um dem netzwerkzugänglichen Dienst assoziiert zu werden.
    • Satz 6. System nach Satz 4, wobei jeder der mindestens zwei Zugangspunkte mindestens zwei physisch isolierte Rechenvorrichtungen umfasst, wobei eine erste physisch isolierte Rechenvorrichtung dazu konfiguriert ist, die erste Netzwerkadresse als über den Zugangspunkt erreichbar bekanntzumachen, und wobei eine zweite physisch isolierte Rechenvorrichtung dazu konfiguriert ist, die zweite Netzwerkadresse als über den Zugangspunkt erreichbar bekanntzumachen.
    • Satz 7. Verfahren, das bei einem Zugangspunkt zu einem netzwerkzugänglichen Dienst umgesetzt wird, der sowohl mit einer ersten Netzwerkadresse als auch einer zweiten Netzwerkadresse assoziiert ist, wobei das Verfahren Folgendes umfasst:
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines Nachbarnetzwerks des Zugangspunkts, der ersten Netzwerkadresse als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des ersten Nachbarnetzwerks, dass die zweite Netzwerkadresse über den Zugangspunkt erreichbar ist;
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines zweiten Nachbarnetzwerks des Zugangspunkts, der zweiten Netzwerkadresse als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des zweiten Nachbarnetzwerks, dass die erste Netzwerkadresse über den Zugangspunkt erreichbar ist;
      • Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an mindestens eine der ersten oder zweiten Netzwerkadresse adressiert ist;
      • Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, an den das Netzwerkpaket zu routen ist; und
      • Routen des Pakets zu dem Endpunkt.
    • Satz 8. Verfahren nach Satz 6, wobei die erste Netzwerkadresse einen Abschnitt eines ersten Netzwerkadressen-Pools bildet, welcher der Nachbarvorrichtung des ersten Nachbarnetzwerks bekanntgemacht wird, und die zweite Netzwerkadresse einen Abschnitt eines zweiten Netzwerkadressen-Pools bildet, welcher der Nachbarvorrichtung des zweiten Nachbarnetzwerks bekannt gemacht wird, wobei jede Netzwerkadresse innerhalb des jeweiligen ersten und zweiten Pools mit mindestens einem netzwerkzugänglichen Dienst einer Vielzahl von netzwerkzugänglichen Diensten assoziiert ist, die von der Vielzahl von Endpunkten bereitgestellt wird, und wobei jeder des ersten und zweiten Pools in Teilmengen von Netzwerkadressen unterteilt ist.
    • Satz 9. Verfahren nach Satz 7, wobei Gruppierungen von netzwerkzugänglichen Diensten innerhalb der Teilmengen der jeweiligen Pools zwischen den Pools variiert werden.
    • Satz 10. Verfahren nach Satz 7, wobei die Verantwortung für das Routen von Paketen, die an Netzwerkvorrichtungen innerhalb von individuellen Teilmengen von Netzwerkadressen adressiert sind, unter Fluss-Managern aufgeteilt ist, die durch den Zugangspunkt umgesetzt sind, wobei jeder Fluss-Manager zum Routen von Paketen zugewiesen ist, die an mindestens eine individuelle Teilmenge adressiert sind.
    • Satz 11. Verfahren nach Satz 9, wobei die Fluss-Manager mindestens teilweise basierend auf der Ausführung als unterschiedliche Threads oder der Ausführung in unterschiedlichen Ausfuhrungsumgebungen voneinander isoliert sind.
    • Satz 12. Verfahren nach Satz 6, wobei Bekanntmachen der ersten Netzwerkadresse als über den Zugangspunkt erreichbar Übertragen eines Border-Gateway-Protocol(BGP)-Pakets umfasst.
    • Satz 13. Verfahren nach Satz 6, wobei Routen des Pakets an den Endpunkt Folgendes umfasst:
      • Anwenden von Netzwerkadressübersetzung (NAT) auf das Paket, um ein transformiertes Paket zu ergeben; und
      • Routen des transformierten Pakets zu dem Endpunkt;
    • Satz 14. Verfahren nach Satz 6, wobei das Paket ein Transmission-Control-Protocol(TCP)-Paket ist und wobei Routen des Pakets an den Endpunkt Weiterleiten von TCP-Sitzungsinformationen innerhalb des Pakets an den Endpunkt umfasst.
    • Satz 15. Nicht transitorische computerlesbare Medien, umfassend computerausführbare Anweisungen, die bei Ausführung durch einen ersten Zugangspunkt zu einem netzwerkzugänglichen Dienst, der sowohl mit einer ersten Netzwerkadresse als auch einer zweiten Netzwerkadresse assoziiert ist, den ersten Zugangspunkt zu Folgendem veranlassen:
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines Nachbarnetzwerks des Zugangspunkts, der ersten Netzwerkadresse als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des ersten Nachbarnetzwerks, dass die zweite Netzwerkadresse über den Zugangspunkt erreichbar ist;
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines zweiten Nachbarnetzwerks des Zugangspunkts, der zweiten Netzwerkadresse als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des zweiten Nachbarnetzwerks, dass die erste Netzwerkadresse über den Zugangspunkt erreichbar ist;
      • Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an mindestens eine der ersten oder zweiten Netzwerkadresse adressiert ist;
      • Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, an den das Netzwerkpaket zu routen ist; und
      • Routen des Pakets zu dem Endpunkt.
    • Satz 16. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die erste Netzwerkadresse einen Abschnitt eines ersten Netzwerkadressen-Pools bildet, welcher der Nachbarvorrichtung des ersten Nachbarnetzwerks bekanntgemacht wird, und die zweite Netzwerkadresse einen Abschnitt eines zweiten Netzwerkadressen-Pools bildet, welcher der Nachbarvorrichtung des zweiten Nachbarnetzwerks bekannt gemacht wird, wobei jede Netzwerkadresse innerhalb des jeweiligen ersten und zweiten Pools mit mindestens einem netzwerkzugänglichen Dienst einer Vielzahl von netzwerkzugänglichen Diensten assoziiert ist, die von der Vielzahl von Endpunkten bereitgestellt wird, und wobei jeder des ersten und zweiten Pools in Teilmengen von Netzwerkadressen unterteilt ist.
    • Satz 17. Nicht transitorische computerlesbare Medien nach Satz 15, wobei Gruppierungen von netzwerkzugänglichen Diensten innerhalb der Teilmengen der jeweiligen Pools zwischen den Pools variiert werden.
    • Satz 18. Nicht transitorische computerlesbare Medien nach Satz 15, wobei die Verantwortung für das Routen von Paketen, die an Netzwerkadressen innerhalb von individuellen Teilmengen von Netzwerkadressen adressiert sind, unter Fluss-Managern aufgeteilt ist, die durch den Zugangspunkt umgesetzt sind, wobei jeder Fluss-Manager zum Routen von Paketen zugewiesen ist, die an mindestens eine individuelle Teilmenge adressiert sind.
    • Satz 19. Nicht transitorische computerlesbare Medien nach Satz 17, wobei die Fluss-Manager mindestens teilweise basierend auf der Ausführung als unterschiedliche Threads oder der Ausführung in unterschiedlichen Ausführungsumgebungen voneinander isoliert sind.
    • Satz 20. Nicht transitorische computerlesbare Medien nach Satz 17, ferner umfassend Anweisungen, die durch den Zugangspunkt ausgeführt werden können, zum Routen von eingehenden Datenpaketen zwischen den Fluss-Managern mindestens teilweise basierend auf Netzwerkadressen, an welche die Datenpakete adressiert sind, und Informationen bezüglich der Aufteilung der Verantwortung zwischen den Fluss-Managern.
    • Satz 21. Nicht transitorische computerlesbare Medien nach Satz 14, ferner umfassend Anweisungen, die durch den Zugangspunkt ausgeführt werden können, zum:
      • Abrufen von Konfigurationsinformationen, die den netzwerkzugänglichen Dienst mit der ersten und zweiten Netzwerkadresse und der Vielzahl von Endpunkten assoziieren;
      • Detektieren, in einer entfernten Datenquelle, von Informationen, welche die Vielzahl von Endpunkten modifizieren; und
      • Aktualisieren der Konfigurationsinformationen, um die Informationen, welche die Vielzahl von Endpunkten modifizieren, widerzuspiegeln.
  • Zusätzliche Ausführungsformen der vorliegenden Offenbarung können im Hinblick auf die folgenden Sätze beschrieben werden:
    • Satz 1. System, umfassend:
      • eine Vielzahl von Endpunkt-Pools, wobei sich jeder Endpunkt-Pool an einem anderen geografischen Ort befindet und eine oder mehrere Endpunkt-Rechenvorrichtungen enthält, die dazu konfiguriert ist, einen netzwerkzugänglichen Dienst bereitzustellen, der mit einer Netzwerkadresse assoziiert ist;
      • mindestens zwei Zugangspunkte zu dem netzwerkzugänglichen Dienst, wobei jeder Zugangspunkt einen Prozessor umfasst und mit computerausführbaren Anweisungen konfiguriert ist zum:
        • periodisches Abrufen von Konfigurationsinformationen für die mindestens zwei Zugangspunkte von einem Netzwerkspeicherort, der für die mindestens zwei Zugangspunkte zugänglich ist,- wobei die Konfigurationsinformationen mindestens Adressierungsinformationen für jeden Endpunkt-Pool der Vielzahl von Endpunkt-Pools beinhalten, wobei die Adressierungsinformationen jedes Endpunkt-Pools Adressen von individuellen Endpunkt-Rechenvorrichtungen innerhalb des Endpunkt-Pools beinhalten;
        • Empfangen eines ersten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
        • Auswählen eines ersten Endpunkt-Pools aus der Vielzahl der Endpunkt-Pools, an den das erste Netzwerkpaket zu routen ist;
        • mindestens teilweise basierend auf den Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des ersten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools;
        • Empfangen von modifizierten Konfigurationsinformationen für den Zugangspunkt, wobei die modifizierten Konfigurationsinformationen modifizierte Adressierungsinformationen für den ersten Endpunkt-Pool als Ergebnis einer Änderung in der einen oder den mehreren Endpunkt-Rechenvorrichtungen, die in dem ersten Endpunkt-Pool enthalten sind, widerspiegeln;
        • Empfangen eines zweiten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
        • Auswählen des ersten Endpunkt-Pools aus der Vielzahl von Endpunkt-Pools als ein Ziel für das zweite Netzwerkpaket; und
        • mindestens teilweise basierend auf den modifizierten Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des zweiten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools.
    • Satz 2. System nach Satz 1, wobei jeder Zugangspunkt Zugang zu einer Vielzahl von netzwerkzugänglichen Diensten bereitstellt und wobei die Konfigurationsinformationen eine Zuordnung jedes netzwerkzugänglichen Dienstes und von Adressierungsinformationen für jeden Endpunkt-Pool einer Vielzahl von Endpunkt-Pools für den netzwerkzugänglichen Dienst beinhalten.
    • Satz 3. System nach Satz 1, ferner umfassend einen Konfigurations-Manager, der konfiguriert ist zum:
      • Empfangen von Informationen, welche die Änderung in der einen oder den mehreren Endpunkt-Rechenvorrichtungen angeben, die innerhalb des ersten Endpunkt-Pools enthalten sind; und
      • Generieren der modifizierten Konfigurationsinformationen, wobei die modifizierten Konfigurationsinformationen einen relativen Unterschied in den Konfigurationsinformationen im Vergleich zu einer früheren Version der Konfigurationsinformationen widerspiegeln.
    • Satz 4. System nach Satz 3, wobei die Informationen, welche die Änderung in der einen oder den mehreren Endpunkt-Rechenvorrichtungen angeben, die in dem ersten Endpunkt-Pool enthalten sind, einer Benachrichtigung entsprechen, dass eine ungesunde Endpunkt-Rechenvorrichtung aus dem ersten Endpunkt-Pool entfernt wird.
    • Satz 5. System nach Satz 1, wobei jedem Zugangspunkt nicht flüchtiger Speicher fehlt, in dem die computerausführbaren Anweisungen zu speichern sind, und wobei jeder Zugangspunkt bei Initialisierung ferner konfiguriert ist zum Abrufen der computerausführbaren Anweisungen von einem netzwerkzugänglichen Speicherort und Speichern der computerausführbaren Anweisungen in flüchtigem Speicher des Zugangspunkts.
    • Satz 6. Verfahren, das an einer Vielzahl von geografisch verteilten Zugangspunkt zu einem netzwerkzugänglichen Dienst, der mit einer Netzwerkadresse assoziiert ist, umgesetzt wird, wobei das Verfahren an jedem Zugangspunkt Folgendes umfasst:
      • periodisches Abrufen von Konfigurationsinformationen von einem Netzwerkspeicherort, der für die Vielzahl von Zugangspunkten zugänglich ist, wobei die Konfigurationsinformationen für alle Zugangspunkte gleich sind und mindestens Adressierungsinformationen für jeden Endpunkt-Pool einer Vielzahl von Endpunkt-Pools beinhalten, , wobei die Adressierungsinformationen jedes Endpunkt-Pools Adressen von individuellen Endpunkt-Rechenvorrichtungen innerhalb des Endpunkt-Pools beinhalten, der zum Bereitstellen des netzwerkzugänglichen Dienstes konfiguriert ist;
      • Empfangen eines ersten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
      • Auswählen eines ersten Endpunkt-Pools aus der Vielzahl der Endpunkt-Pools, an den das erste Netzwerkpaket zu routen ist;
      • mindestens teilweise basierend auf den Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des ersten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools;
      • Empfangen von modifizierten Konfigurationsinformationen für den Zugangspunkt, wobei die modifizierten Konfigurationsinformationen modifizierte Adressierungsinformationen für den ersten Endpunkt-Pool als Ergebnis einer Änderung in der einen oder den mehreren Endpunkt-Rechenvorrichtungen, die in dem ersten Endpunkt-Pool enthalten sind, widerspiegeln;
      • Empfangen eines zweiten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
      • Auswählen des ersten Endpunkt-Pools aus der Vielzahl von Endpunkt-Pools als ein Ziel für das zweite Netzwerkpaket; und
      • mindestens teilweise basierend auf den modifizierten Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des zweiten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools.
    • Satz 7. Verfahren nach Satz 6, wobei periodisches Abrufen der Konfigurationsinformationen periodisches Abrufen der Konfiguration von einem netzwerkzugänglichen Speicherort, der von jedem Zugangspunkt entfernt ist, umfasst.
    • Satz 8. Verfahren nach Satz 6, wobei das Verfahren basierend auf der Ausführung von computerausführbaren Befehlen auf jedem Zugangspunkt umgesetzt wird, die in flüchtigem Speicher gespeichert sind, ohne Bezugnahme auf Informationen in beliebigem nicht flüchtigen Speicher jedes Zugangspunkts.
    • Satz 9. Verfahren nach Satz 6, wobei die Vielzahl von Zugangspunkten Zugang zu einer Vielzahl von netzwerkzugänglichen Diensten bereitstellt, die mit Netzwerkadressen innerhalb mindestens eines ersten und eines zweiten Netzwerkadressen-Pools assoziiert ist, und wobei das Verfahren an jedem Zugangspunkt ferner Folgendes umfasst:
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines Nachbarnetzwerks des Zugangspunkts, des ersten Netzwerkadressen-Pools als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des ersten Nachbarnetzwerks, dass der zweite Netzwerkadressen-Pool über den Zugangspunkt erreichbar ist;
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines zweiten Nachbarnetzwerks des Zugangspunkts, des zweiten Netzwerkadressen-Pools als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des zweiten Nachbarnetzwerks, dass der erste Netzwerkadressen-Pool über den Zugangspunkt erreichbar ist;
    • Satz 10. Verfahren nach Satz 6, wobei Routen des ersten Netzwerkpakets zu der individuellen Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools Anwenden von Netzwerkadressübersetzung (NAT) auf das erste Netzwerkpaket umfasst.
    • Satz 11. Verfahren nach Satz 10, wobei Anwenden von Netzwerkadressübersetzung (NAT) auf das erste Netzwerkpaket eine Transmission-Control-Protocol(TCP)-Sequenznummer innerhalb des ersten Netzwerkpakets nicht modifiziert.
    • Satz 12. Verfahren nach Satz 6, wobei die modifizierten Konfigurationsinformationen ferner eine Assoziation des netzwerkzugänglichen Dienstes mit einer zusätzlichen Netzadresse widerspiegeln, und wobei das Verfahren ferner Folgendes umfasst:
      • Empfangen eines dritten Netzwerkpakets, das an die zusätzliche Netzwerkadresse adressiert ist;
      • Auswählen des ersten Endpunkt-Pools aus der Vielzahl von Endpunkt-Pools als ein Ziel für das dritte Netzwerkpaket; und
      • mindestens teilweise basierend auf den modifizierten Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des dritten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools.
    • Satz 13. Nicht transitorische computerlesbare Medien, beinhaltend computerausführbare Anweisungen, die bei Ausführung auf jedem Zugangspunkt einer Vielzahl von Zugangspunkten zu einem netzwerkzugänglichen Dienst, der mit einer Netzwerkadresse assoziiert ist, jeden Zugangspunkt konfigurieren zum:
      • periodisches Abrufen von Konfigurationsinformationen, die zwischen den mindestens zwei Zugangspunkten geteilt werden, wobei die Konfigurationsinformationen mindestens Adressierungsinformationen für jeden Endpunkt-Pool einer Vielzahl von Endpunkt-Pools beinhalten, wobei die Adressierungsinformationen jedes Endpunkt-Pools Adressen von individuellen Endpunkt-Rechenvorrichtungen innerhalb des Endpunkt-Pools beinhalten, der zum Bereitstellen des netzwerkzugänglichen Dienstes konfiguriert ist;
      • Empfangen eines ersten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
      • Auswählen eines ersten Endpunkt-Pools aus der Vielzahl der Endpunkt-Pools, an den das erste Netzwerkpaket zu routen ist;
      • mindestens teilweise basierend auf den Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des ersten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools;
      • Empfangen von modifizierten Konfigurationsinformationen für den Zugangspunkt, wobei die modifizierten Konfigurationsinformationen modifizierte Adressierungsinformationen für den ersten Endpunkt-Pool als Ergebnis einer Änderung in der einen oder den mehreren Endpunkt-Rechenvorrichtungen, die in dem ersten Endpunkt-Pool enthalten sind, widerspiegeln;
      • Empfangen eines zweiten Netzwerkpakets, das an die Netzwerkadresse adressiert ist;
      • Auswählen des ersten Endpunkt-Pools aus der Vielzahl von Endpunkt-Pools als ein Ziel für das zweite Netzwerkpaket; und
      • mindestens teilweise basierend auf den modifizierten Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des zweiten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools.
    • Satz 14. Nicht transitorische computerlesbare Medien nach Satz 13, wobei die • computerausführbaren Anweisungen auf jedem Zugangspunkt ausgeführt werden können, ohne zu erfordern, dass der Zugangspunkt nicht flüchtigen Speicher beinhaltet.
    • Satz 15. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die computerausführbaren Anweisungen erste computerausführbare Anweisungen sind und wobei die Medien ferner zweite computerausführbare Anweisungen umfassen, die bei Ausführung durch jeden Zugangspunkt jeden Zugangspunkt konfigurieren zum:
      • Abrufen der ersten computerausführbaren Anweisungen von einem netzwerkzugänglichen Speicherort, der von dem Zugangspunkt entfernt ist;
      • Platzieren der ersten computerausführbaren Anweisungen in einem flüchtigen Speicher des Zugangspunkts; und
      • Ausführen der ersten computerausführbaren Anweisungen aus dem flüchtigen Speicher.
    • Satz 16. Nicht-transitorische computerlesbare Medien nach Satz 14, wobei die Konfigurationsinformationen Informationen bezüglich mehrerer Teilmengen von Netzwerkadressen beinhalten, die über jeden Zugangspunkt zugänglich sind, und wobei die computerausführbaren Anweisungen ferner durch jeden Zugangspunkt ausgeführt werden können zum Umsetzen einer Vielzahl von isolierten Fluss-Managern, wobei unterschiedliche Fluss-Manager konfiguriert sind zum Routen von Paketen, die mit unterschiedlichen Teilmengen von Netzwerkadressen aus den mehreren Teilmengen assoziiert sind.
    • Satz 17. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die Vielzahl von Zugangspunkten Zugang zu einer Vielzahl von netzwerkzugänglichen Diensten bereitstellt, die mit Netzwerkadressen innerhalb mindestens eines ersten und eines zweiten Netzwerkadressen-Pools assoziiert ist, und wobei die computerausführbaren Anweisungen ferner durch jeden Zugangspunkt ausgeführt werden können zum:
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines Nachbarnetzwerks des Zugangspunkts, des ersten Netzwerkadressen-Pools als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des ersten Nachbarnetzwerks, dass der zweite Netzwerkadressen-Pool über den Zugangspunkt erreichbar ist;
      • Bekanntmachen, gegenüber einer Nachbarvorrichtung eines zweiten Nachbarnetzwerks des Zugangspunkts, des zweiten Netzwerkadressen-Pools als über den Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des zweiten Nachbarnetzwerks, dass der erste Netzwerkadressen-Pool über den Zugangspunkt erreichbar ist;
    • Satz 18. Nicht transitorische computerlesbare Medien nach Satz 14, wobei zum Routen des ersten Netzwerkpakets an die individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools und wobei die computerausführbaren Anweisungen jeden Zugangspunkt ferner konfigurieren zum Anwenden von Netzwerkadressübersetzung (NAT) auf das erste Netzwerkpaket.
    • Satz 19. Nicht transitorische computerlesbare Medien nach Satz 18, wobei Anwenden von Netzwerkadressübersetzung (NAT) auf das erste Netzwerkpaket eine Transmission-Control-Protocol(TCP)-Sequenznummer innerhalb des ersten Netzwerkpakets nicht modifiziert.
    • Satz 20. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die modifizierten Konfigurationsinformationen ferner eine Assoziation des netzwerkzugänglichen Dienstes mit einer zusätzlichen Netzadresse widerspiegeln, und wobei die computerausführbaren Anweisungen jeden Zugangspunkt ferner konfigurieren zum:
      • Empfangen eines dritten Netzwerkpakets, das an die zusätzliche Netzwerkadresse adressiert ist;
      • Auswählen des ersten Endpunkt-Pools aus der Vielzahl von Endpunkt-Pools als ein Ziel für das dritte Netzwerkpaket; und
      • mindestens teilweise basierend auf den modifizierten Adressierungsinformationen für den ersten Endpunkt-Pool, Routen des dritten Netzwerkpakets an eine individuelle Endpunkt-Rechenvorrichtung innerhalb des ersten Endpunkt-Pools.
  • Zusätzliche Ausführungsformen der vorliegenden Offenbarung können im Hinblick auf die folgenden Sätze beschrieben werden:
    • Satz 1. System, umfassend:
      • eine Vielzahl von Endpunkt-Systemen, wobei sich jedes Endpunkt-System an einem anderen geografischen Ort befindet und mindestens eine Endpunkt-Rechenvorrichtung enthält, die dazu konfiguriert ist, einen netzwerkzugänglichen Dienst bereitzustellen, der mit einer Netzwerkadresse assoziiert ist;
      • mindestens zwei Zugangspunkte zu dem netzwerkzugänglichen Dienst, wobei jeder der mindestens zwei Zugangspunkte einen Prozessor umfasst, sich an einem anderen geografischen Ort befindet und konfiguriert ist zum:
        • Nutzen der Anycast-Methodik, um ein Netzwerkpräfix der Netzwerkadresse als über den Zugangspunkt erreichbar bekannt zu machen;
        • Empfangen, von einer Client-Vorrichtung, einer Anforderung zum Initiieren einer Transmission-Control-Protocol(TCP)-Sitzung innerhalb des netzwerkzugänglichen Dienstes;
        • Durchführen einer Initialisierungsphase der TCP-Sitzung, um Kontextinformationen für die TCP-Sitzung, einschließlich mindestens einer Sequenznummer, herzustellen;
        • Empfangen, von der Client-Vorrichtung, eines Datenpakets als Teil der TCP-Sitzung;
        • Auswählen eines Endpunkt-System aus der Vielzahl von Endpunkt-Systemen, an welches das Netzwerkpaket zu routen ist; und
        • Übertragen, an das Endpunkt-System, des Datenpakets und der Kontextinformationen für die TCP-Sitzung;
        wobei jedes Endpunkt-System konfiguriert ist zum Annehmen von TCP-Sitzungen von individuellen Zugangspunkten basierend auf Kontextinformationen, die von den individuellen Zugangspunkten empfangen werden, und zum Verarbeiten der Datenpakete von Client-Vorrichtungen innerhalb der angenommenen TCP-Sitzungen, um den netzwerkzugänglichen Dienst bereitzustellen.
    • Satz 2. System nach Satz 1, wobei die mindestens eine Endpunkt-Rechenvorrichtung innerhalb jedes Endpunkt-Systems konfiguriert ist zum Annehmen der TCP-Sitzungen von den individuellen Zugangspunkten.
    • Satz 3. System nach Satz 1, wobei jedes Endpunkt-System ferner eine Sitzungsübergabevorrichtung umfasst, die konfiguriert ist zum Annehmen der TCP-Sitzungen von individuellen Zugangspunkten basierend auf den Kontextinformationen, die von den individuellen Zugangspunkten empfangen werden, und für eine gegebene angenommene TCP-Sitzung ferner konfiguriert ist zum:
      • Herstellen einer eigenständigen TCP-Sitzung mit mindestens einer Endpunkt-Rechenvorrichtung des Endpunkt-Systems; und
      • für individuelle Datenpakete, die über die gegebene angenommene TCP-Sitzung empfangen werden, Generieren und Übertragen entsprechender individueller Datenpakete an die mindestens eine Endpunkt-Rechenvorrichtung des Endpunkt-Systems über die eigenständige TCP-Sitzung.
    • Satz 4. System nach Satz 3, wobei die Sitzungsübergabevorrichtung jedes Endpunkt-Systems ferner konfiguriert ist zum, für die gegebene angenommene TCP-Sitzung, Auswählen der mindestens einen Endpunkt-Rechenvorrichtung des Endpunkt-Systems, um den netzwerkzugänglichen Dienst bereitzustellen.
    • Satz 5. System nach Satz 1, wobei die mindestens eine Endpunkt-Rechenvorrichtung innerhalb jedes Endpunkt-Systems konfiguriert ist zum direkten Antworten auf die Client-Vorrichtungen, die mit angenommenen TCP-Sitzungen assoziiert sind, unabhängig von den mindestens zwei Zugangspunkten.
    • Satz 6. Verfahren, das an jedem Zugangspunkt einer Vielzahl von Zugangspunkten zu einem netzwerkzugänglichen Dienst, der über ein geographisches Gebiet verteilt ist, umgesetzt wird, wobei das Verfahren Folgendes umfasst:
      • Bekanntmachen einer Netzwerkadresse des netzwerkzugänglichen Dienstes als über jeden Zugangspunkt erreichbar;
      • an einem ersten Zugangspunkt der Vielzahl von Zugangspunkten:
        • Empfangen, von einer Client-Vorrichtung, einer Anforderung zum Initiieren einer verbindungsorientierten Kommunikationssitzung mit dem netzwerkzugänglichen Dienst;
        • Durchführen einer Initialisierungsphase der verbindungsorientierten Kommunikationssitzung, um Kontextinformationen für die verbindungsorientierte Kommunikationssitzung herzustellen;
        • Empfangen, von der Client-Vorrichtung, eines Datenpakets als Teil der verbindungsorientierten Kommunikationssitzung;
        • Anwenden von Auswahlkriterien, um ein Endpunkt-System aus einer Vielzahl von Endpunkt-Systemen für den netzwerkzugänglichen Dienst auszuwählen, an welches das Netzwerkpaket zu routen ist; und
        • Übertragen, an das Endpunkt-System, des Datenpakets und der Kontextinformationen für die verbindungsorientierte Kommunikationssitzung;
        wobei das Endpunkt-System konfiguriert ist zum Nutzen der Kontextinformationen, um die verbindungsorientierte Kommunikationssitzung anzunehmen und das Datenpaket innerhalb der angenommenen verbindungsorientierten Kommunikationssitzung zu verarbeiten, um den netzwerkzugänglichen Dienst bereitzustellen.
    • Satz 7. Verfahren nach Satz 6, wobei die verbindungsorientierte Kommunikationssitzung eine Transmission-Control-Protocol(TCP)-Sitzung ist.
    • Satz 8. Verfahren nach Satz 6, wobei Übertragen des Datenpakets an das Endpunkt-System Einkapseln des Datenpakets, um ein eingekapseltes Datenpaket zu ergaben, und Übertragen des eingekapselten Datenpakets über einen Netzwerktunnel umfasst.
    • Satz 9. Verfahren nach Satz 8, wobei Übertragen der Kontextinformationen an das Endpunkt-System Hinzufügen der Kontextinformationen zu einem Header des eingekapselten Datenpakets umfasst.
    • Satz 10. Verfahren nach Satz 6, wobei Übertragen des Datenpakets an das Endpunkt-System Ersetzen, als eine Ziel-Netzwerkadresse des Datenpakets, der Netzwerkadresse des netzwerkzugänglichen Dienstes durch eine Netzwerkadresse des Endpunkt-Systems umfasst.
    • Satz 11. Verfahren nach Satz 6, wobei Übertragen, an das Endpunkt-System, des Datenpakets und der Kontextinformationen für die verbindungsorientierte Kommunikationssitzung Übertragen des Datenpakets und der Kontextinformationen an eine Sitzungsübergabevorrichtung innerhalb des Endpunkt-Systems umfasst, die konfiguriert ist zum Annehmen der verbindungsorientierten Kommunikationssitzung basierend auf den Kontextinformationen.
    • Satz 12. Verfahren nach Satz 6,ferner umfassend:
      • Empfangen einer Antwort auf das Datenpaket als Teil der verbindungsorientierten Kommunikationssitzung; und
      • Zurücksenden der Antwort an die Client-Vorrichtung.
    • Satz 13. Verfahren nach Satz 6, ferner umfassend, an einem zweiten Zugangspunkt der Vielzahl von Zugangspunkten:
      • Empfangen, von der Client-Vorrichtung, eines zweiten Datenpakets als Teil der verbindungsorientierten Kommunikationssitzung;
      • Anwenden der Auswahlkriterien, wie zuvor durch den ersten Zugangspunkt angewendet, um das Endpunkts-System als ein Ziel auszuwählen, an welches das Netzwerkpaket zu routen ist; und
      • Übertragen, an das Endpunkt-System, des zweiten Datenpakets als Teil der verbindungsorientierten Kommunikationssitzung.
    • Satz 14. Nicht transitorische computerlesbare Medien, umfassend computerausführbare Anweisungen, die bei Ausführung durch jeden Zugangspunkt einer Vielzahl von Zugangspunkten zu einem netzwerkzugänglichen Dienst, der über ein geographisches Gebiet verteilt ist, jeden Zugangspunkt konfigurieren zum:
      • Bekanntmachen einer Netzwerkadresse des netzwerkzugänglichen Dienstes als über jeden Zugangspunkt erreichbar;
      • Empfangen, von einer Client-Vorrichtung, einer Anforderung zum Initiieren einer verbindungsorientierten Kommunikationssitzung mit dem netzwerkzugänglichen Dienst;
      • Durchführen einer Initialisierungsphase der verbindungsorientierten Kommunikationssitzung, um Kontextinformationen für die verbindungsorientierte Kommunikationssitzung herzustellen;
      • Empfangen, von der Client-Vorrichtung, eines Datenpakets als Teil der verbindungsorientierten Kommunikationssitzung;
      • Auswählen eines Endpunkt-Systems aus einer Vielzahl von Endpunkt-Systemen für den netzwerkzugänglichen Dienst, an welches das Netzwerkpaket zu routen ist; und
      • Übertragen, an den Endpunkt, des Datenpakets und der Kontextinformationen für die verbindungsorientierte Kommunikationssitzung; wobei das Endpunkt-System konfiguriert ist zum Nutzen der Kontextinformationen, um die verbindungsorientierte Kommunikationssitzung anzunehmen und das Datenpaket innerhalb der angenommenen verbindungsorientierten Kommunikationssitzung zu verarbeiten, um den netzwerkzugänglichen Dienst bereitzustellen.
    • Satz 15. Nicht transitorische computerlesbare Medien nach Satz 14, wobei zum Übertragen, an das Endpunkt-System, des Datenpakets und der Kontextinformationen die Anweisungen jeden Zugangspunkt konfigurieren zum Herstellen eines Netzwerktunnels zu dem Endpunkt und zum Übertragen des Datenpakets und der Kontextinformationen über den Tunnel.
    • Satz 16. Nicht transitorische computerlesbare Medien nach Satz 15, wobei das Datenpaket und die Kontextinformationen unabhängig voneinander innerhalb des Tunnels übertragen werden.
    • Satz 17. Nicht transitorische computerlesbare Medien nach Satz 15, wobei, zum Auswählen des Endpunkt-Systems, die Anweisungen jeden Zugangspunkt konfigurieren zum Anwenden einheitlicher Auswahlkriterien, die von dem individuellen Zugangspunkt, auf den die einheitlichen Auswahlkriterien angewendet werden, unabhängig sind.
    • Satz 18. Nicht transitorische computerlesbare Medien nach Satz 17, wobei die Anweisungen jeden Zugangspunkt ferner konfigurieren zum:
      • Empfangen, von einer zweiten Client-Vorrichtung, eines zweiten Datenpakets als Teil einer zweiten verbindungsorientierten Kommunikationssitzung, wobei die zweite verbindungsorientierte Kommunikationssitzung zwischen der zweiten Client-Vorrichtung und dem Endpunkt stattfindet und mindestens teilweise basierend auf Interaktionen zwischen der zweiten Client-Vorrichtung und einem anderen Zugangspunkt hergestellt wird;
      • Anwenden einheitlicher Auswahlkriterien, um das Endpunkt-System als ein Ziel für das zweite Datenpaket auszuwählen; und
      • Übertragen, an das Endpunkt-System, des zweiten Datenpakets als Teil der zweiten verbindungsorientierten Kommunikationssitzung.
    • Satz 19. Nicht transitorische computerlesbare Medien nach Satz 14, wobei die Anweisungen jeden Zugangspunkt ferner konfigurieren zum Auswählen einer Endpunkt-Rechenvorrichtung innerhalb des Endpunkt-Systems, an welche das Netzwerkpaket zu routen ist.
    • Satz 20. Nicht transitorische computerlesbare Medien nach Satz 14, wobei zum Übertragen, an das Endpunkt-System, des Datenpakets und der Kontextinformationen die Anweisungen jeden Zugangspunkt konfigurieren zum Übertragen des Datenpakets und der Kontextinformationen an eine Sitzungsübergabevorrichtung innerhalb des Endpunkt-Systems, die konfiguriert ist zum Annehmen der verbindungsorientierten Kommunikationssitzung basierend auf den Kontextinformationen.
  • Alle der vorstehend beschriebenen Verfahren und Prozesse können in Softwarecodemodulen ausgeführt und vollständig automatisiert werden, die durch einen oder mehrere Universalcomputer oder -prozessoren ausgeführt werden. Die Codemodule können in einer beliebigen Art eines nicht transitorischen computerlesbaren Mediums oder einer anderen Computerspeichervorrichtung gespeichert werden. Einige oder alle der Verfahren können alternativ in Spezialcomputerhardware ausgeführt werden.
  • Konditionale Ausdrücke, wie zum Beispiel unter anderem „kann“, „könnte“ oder „können“, sind, sofern nicht ausdrücklich anders angegeben, anders als in dem Kontext aufzufassen, in dem sie im Allgemeinen verwendet werden, um wiederzugeben, dass bestimme Ausführungsformen bestimmte Merkmale, Elemente und/oder Schritte beinhalten, während andere Ausführungsformen diese nicht beinhalten. Somit ist mit derartigen konditionalen Ausdrücken im Allgemeinen nicht gemeint, dass sie 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 eine Logik enthalten, um mit oder ohne Benutzereingabe oder Aufforderung zu entscheiden, ob diese Merkmale, Elemente und/oder Schritte enthalten oder in einer bestimmten Ausführungsform auszuführen sind.
  • Sofern nicht ausdrücklich anderes angegeben, sind disjunktive Formulierungen, wie zum Beispiel der Ausdruck „mindestens eins von X, Y oder Z“ anders als in dem Kontext aufzufassen, in dem sie im Allgemeinen verwendet werden, um wiederzugeben, dass ein Artikel, Terminus usw. entweder X, Y oder Z oder eine beliebige Kombination daraus (z. B. X, Y und/oder Z) sein kann. Somit ist eine derartige disjunktive Sprache im Allgemeinen nicht dazu gedacht, und sollte nicht dazu verwendet werden, dass bestimmte Ausführungen erforderlich machen, dass mindestens eines von X, mindestens eines von Y oder mindestens eines von Z jeweils vorhanden ist.
  • Sofern nicht ausdrücklich anders angegeben, sind Artikel, wie zum Beispiel „ein“ oder „eine“, im Allgemeinen so zu auszulegen, dass sie einen oder mehrere beschriebene . Punkte umfassen.Dementsprechend sollen Ausdrücke, wie zum Beispiel „eine Vorrichtung, die konfiguriert ist zum“ eine oder mehrere aufgezählte Vorrichtungen beinhalten.Eine solche oder solche mehreren Vorrichtungen können zudem gemeinsam konfiguriert sein, um die genannten Rezitation auszuführen.Zum Beispiel kann „ein Prozessor, der konfiguriert ist zum Ausführen der Rezitationen A, B und C“ einen ersten Prozessor beinhalten, der konfiguriert ist zum Ausführen der Rezitation A und der mit einem zweiten Prozessor zusammenarbeitet, der zum Ausführen der Rezitationen B und C konfiguriert ist.
  • Alle Routinenbeschreibungen, Elemente oder Blöcke in den Ablaufdiagrammen, die hierin beschrieben und/oder in den beigefügten Figuren abgebildet sind, sind so zu verstehen, dass sie möglicherweise Module, Segmente oder Teile von Code darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen konkreter logischer Funktionen oder Elemente in der Routine enthalten. Alternative Umsetzungen sind innerhalb des Umfangs der hierin beschrieben Ausführungsformen eingeschlossen, bei denen Elemente oder Funktionen gelöscht oder in einer anderen Reihenfolge als der gezeigten oder erörterten ausgeführt werden können, einschließlich im Wesentlichen synchron oder in umgekehrter Reihenfolge, je nach betroffener Funktionalität, wie der Fachmann es verstehen würde.
  • Es sei darauf hingewiesen, dass viele Variationen und Modifikationen an den vorstehend beschriebenen Ausführungsformen vorgenommen werden können, wobei die Elemente davon als zu anderen akzeptablen Beispiele gehörend aufzufassen sind. Es ist beabsichtigt, dass sämtliche derartige Modifikationen und Variationen hierin im Umfang dieser Offenbarung eingeschlossen und durch die folgenden Ansprüche geschützt sind.

Claims (15)

  1. System, umfassend: eine Vielzahl von Endpunkten, wobei sich jeder Endpunkt an einem anderen geografischen Ort befindet und mindestens eine Server-Rechenvorrichtung enthält, die dazu konfiguriert ist, einen netzwerkzugänglichen Dienst bereitzustellen, der mit einer Netzwerkadresse assoziiert ist; mindestens zwei Zugangspunkte zu dem netzwerkzugänglichen Dienst, wobei jeder der mindestens zwei Zugangspunkte einen Prozessor umfasst, sich an einem anderen geografischen Ort befindet und konfiguriert ist zum: Nutzen der Anycast-Methodik, um ein Netzwerkpräfix der Netzwerkadresse als über den Zugangspunkt erreichbar bekannt zu machen; Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an die Netzwerkadresse adressiert ist; Auswählen eines Endpunkts aus der Vielzahl von Endpunkten, an welchen das Netzwerkpaket zu routen ist, mindestens teilweise basierend auf einer Netzwerk-Performance-Metrik zwischen der Client-Vorrichtung und dem Endpunkt; Transformieren des Netzwerkpakets gemäß Netzwerkadressübersetzung (NAT), um ein transformiertes Paket zu ergeben; und Routen des transformierten Pakets zu dem Endpunkt.
  2. System nach Anspruch 1, wobei das Netzwerkpaket ein Übertragungssteuerungsprotokoll(TCP)-Paket ist und wobei jeder Zugangspunkt dazu konfiguriert ist, Statusinformationen in Bezug auf TCP-Sitzungen aufrechtzuerhalten, die zwischen jeweiligen Client-Vorrichtungen und Endpunkten hergestellt wurden.
  3. System nach Anspruch 1, wobei jeder Endpunkt konfiguriert ist zum: Empfangen einer Antwort auf das transformierte Paket von dem Endpunkt; und Transformieren der Antwort gemäß Netzwerkadressübersetzung (NAT), um eine transformierte Antwort zu ergeben; und Routen der transformierten Antwort zu der Client-Vorrichtung.
  4. System nach Anspruch 1, wobei die mindestens zwei Zugangspunkte und die Vielzahl von Endpunkten über ein privates Netzwerk in Kommunikation stehen und wobei das Netzwerkpaket von der Client-Vorrichtung über ein öffentliches Netzwerk empfangen wird.
  5. Verfahren, das an jedem Zugangspunkt einer Vielzahl von Zugangspunkten zu einem netzwerkzugänglichen Dienst, der über ein geographisches Gebiet verteilt ist, umgesetzt wird, wobei das Verfahren Folgendes umfasst: Bekanntmachen einer Netzwerkadresse des netzwerkzugänglichen Dienstes als über jeden Zugangspunkt erreichbar; an einem ersten Zugangspunkt der Vielzahl von Zugangspunkten: Empfangen, von einer Client-Vorrichtung, eines Netzwerkpakets, das an die Netzwerkadresse adressiert ist; Auswählen eines Endpunkts aus einer Vielzahl von Endpunkten des netzwerkzugänglichen Dienstes, an welchen das Netzwerkpaket zu routen ist, mindestens teilweise basierend auf einer Netzwerk-Performance-Metrik zwischen der Client-Vorrichtung und dem Endpunkt; Transformieren des Netzwerkpakets gemäß Netzwerkadressübersetzung (NAT), um ein transformiertes Paket zu ergeben; und Routen des transformierten Pakets zu dem Endpunkt.
  6. Verfahren nach Anspruch 5, wobei das Netzwerkpaket mindestens eines von einem User-Datagram-Protocol(UDP)-Paket oder einem Internet-Control- Message-Protocol(ICMP)-Paket ist.
  7. Verfahren nach Anspruch 5, wobei die Netzwerkadressübersetzung (NAT) eine Portübersetzung beinhaltet.
  8. Verfahren nach Anspruch 5, wobei Bekanntmachen der Netzwerkadresse des netzwerkzugänglichen Dienstes als über jeden Zugangspunkt erreichbar Übertragen eines Border-Gateway-Protocol(BGP)-Pakets von jedem Zugangspunkt umfasst.
  9. Verfahren nach Anspruch 5, wobei der Endpunkt ferner mindestens teilweise basierend auf einem apparenten Zustand des Endpunkts für den ersten Zugangspunkt ausgewählt wird.
  10. Verfahren nach Anspruch 9, wobei der apparente Zustand des Endpunkts für den ersten Zugangspunkt mindestens eines von Netzwerkbedingungen zwischen dem ersten Zugangspunkt und dem Endpunkt oder Antworten auf Zustandsüberprüfungsdaten, die von einer Zustandsüberprüfungsvorrichtung an den Endpunkt übertragen werden, widerspiegelt.
  11. Verfahren nach Anspruch 5, ferner umfassend: Bekanntmachen einer zweiten Netzwerkadresse eines zweiten netzwerkzugänglichen Dienstes als über den ersten Zugangspunkt erreichbar, wobei die zweite Netzwerkadresse ebenfalls als über einen zweiten Zugangspunkt an einem anderen geografischen Ort als dem des ersten Zugangspunkts bekanntgemacht wird; Empfangen, von einer zweiten Client-Vorrichtung, eines Netzwerkpakets, das an die zweite Netzwerkadresse adressiert ist; Auswählen eines Endpunktes für den zweiten netzwerkzugänglichen Dienst aus einer Vielzahl von Endpunkten des zweiten netzwerkzugänglichen Dienstes, zu dem das zweite Netzwerkpaket zu routen ist, mindestens teilweise basierend auf einem Netzwerkabstarid zwischen der zweiten Client-Vorrichtung und dem Endpunkt für den zweiten netzwerkzugänglichen Dienst; Transformieren des zweiten Netzwerkpakets gemäß NAT, um ein zweites transformiertes Paket zu ergeben; und Routen des zweiten transformierten Pakets zu dem Endpunkt für den zweiten netzwerkzugänglichen Dienst.
  12. Verfahren nach Anspruch 11, wobei die Verantwortung für das Routen von Paketen, die an die erste Netzwerkadresse adressiert sind, einem ersten Fluss-Manager innerhalb des ersten Zugangspunkts zugewiesen ist, wobei die Verantwortung für das Routen von Paketen, die an die zweite Netzwerkadresse adressiert sind, einem zweiten Fluss-Manager innerhalb des ersten Zugangspunkts zugewiesen ist, und wobei das Verfahren ferner Folgendes umfasst: Routen des ersten Netzwerkpakets an den ersten Fluss-Manager mindestens teilweise darauf basierend, dass das erste Netzwerkpaket an die erste Netzwerkadresse adressiert ist; und Routen des zweiten Netzwerkpakets an den zweiten Fluss-Manager mindestens teilweise darauf basierend, dass das zweite Netzwerkpaket an die zweite Netzwerkadresse adressiert ist.
  13. Verfahren nach Anspruch 5, wobei die Netzwerkadresse eine erste Netzwerkadresse ist, die mit dem netzwerkzugänglichen Dienst assoziiert ist, wobei der netzwerkzugängliche Dienst ferner mit einer zweiten Netzwerkadresse assoziiert ist und das Verfahren ferner Folgendes umfasst: Bekanntmachen, gegenüber einer Nachbarvorrichtung eines ersten Nachbarnetzwerks des ersten Zugangspunkts, der ersten Netzwerkadresse als über den ersten Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des ersten Nachbarnetzwerks, dass die zweite Netzwerkadresse über den ersten Zugangspunkt erreichbar ist; und Bekanntmachen, gegenüber einer Nachbarvorrichtung eines zweiten Nachbarnetzwerks des ersten Zugangspunkts, der zweiten Netzwerkadresse als über den ersten Zugangspunkt erreichbar, ohne Bekanntmachen, gegenüber der Nachbarvorrichtung des zweiten Nachbarnetzwerks, dass die erste Netzwerkadresse über den ersten Zugangspunkt erreichbar ist.
  14. Verfahren nach Anspruch 5, wobei das Netzwerkpaket ein erstes Netzwerkpaket ist und wobei das Verfahren ferner Folgendes umfasst: Speichern, in einem Fluss-Cache, von Informationen, die den Endpunkt als mit einem Datenfluss assoziiert identifizieren, der das erste Netzwerkpaket enthält; Empfangen, von der Client-Vorrichtung, eines zweiten Netzwerkpakets, das an die Netzwerkadresse adressiert ist; Identifizieren des zweiten Netzwerkpakets als Teil des Datenflusses; Identifizieren des Endpunkts anhand der Informationen im Fluss-Cache; und Routen des zweites Netzwerkpakets zu dem Endpunkt.
  15. Verfahren nach Anspruch 5, wobei Auswählen des Endpunkts für den zweiten netzwerkzugänglichen Dienst, zu dem das zweite Netzwerkpaket zu routen ist, ferner mindestens teilweise auf einem apparenten Zustand des Endpunkts für den Zugangspunkt basiert.
DE112019005826.6T 2018-11-21 2019-11-19 Lastverteilter Zugang zu verteilten Endpunkten unter Verwendung globaler Netzwerkadressen Pending DE112019005826T5 (de)

Applications Claiming Priority (11)

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

Publications (1)

Publication Number Publication Date
DE112019005826T5 true DE112019005826T5 (de) 2021-08-19

Family

ID=70726923

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019005826.6T Pending DE112019005826T5 (de) 2018-11-21 2019-11-19 Lastverteilter Zugang zu verteilten Endpunkten unter Verwendung globaler Netzwerkadressen

Country Status (4)

Country Link
US (4) US10880218B2 (de)
CN (1) CN113196725B (de)
DE (1) DE112019005826T5 (de)
WO (1) WO2020106763A1 (de)

Families Citing this family (10)

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

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6427174B1 (en) 1998-11-12 2002-07-30 Cisco Technology, Inc. Dynamic IP addressing and quality of service assurance
US7272653B2 (en) 2000-09-28 2007-09-18 International Business Machines Corporation System and method for implementing a clustered load balancer
US20030182410A1 (en) 2002-03-20 2003-09-25 Sapna Balan Method and apparatus for determination of optimum path routing
US7260645B2 (en) * 2002-04-26 2007-08-21 Proficient Networks, Inc. Methods, apparatuses and systems facilitating determination of network path metrics
US20040181522A1 (en) 2003-01-16 2004-09-16 Jardin Cary A. Shared memory router system and method for node communication in a distributed system
ATE350852T1 (de) 2003-05-09 2007-01-15 Ericsson Telefon Ab L M System und verfahren zur datenzwischenspeicherung und wiederverteilung in einem drahtlosen kommunikationsnetzwerk
US20060064478A1 (en) 2004-05-03 2006-03-23 Level 3 Communications, Inc. Geo-locating load balancing
US7797426B1 (en) 2008-06-27 2010-09-14 BitGravity, Inc. Managing TCP anycast requests
US8175006B2 (en) 2009-12-08 2012-05-08 At&T Intellectual Property I, L.P. Multi-path load balancing using route controller
US8607014B2 (en) 2009-12-22 2013-12-10 At&T Intellectual Property I, L.P. Multi-autonomous system anycast content delivery network
US8826413B2 (en) * 2009-12-30 2014-09-02 Motorla Solutions, Inc. Wireless local area network infrastructure devices having improved firewall features
US8520615B2 (en) 2010-03-26 2013-08-27 Juniper Networks, Inc. Breakout gateway for mobile data traffic
US9037712B2 (en) * 2010-09-08 2015-05-19 Citrix Systems, Inc. Systems and methods for self-loading balancing access gateways
US8498295B1 (en) * 2010-11-23 2013-07-30 Juniper Networks, Inc. Modular lightweight tunneling mechanisms for transitioning between network layer protocols
US8774213B2 (en) * 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US9407539B1 (en) 2011-06-24 2016-08-02 Amazon Technologies, Inc. Techniques for utilizing network destination identifiers simultaneously announced from multiple locations
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US10038626B2 (en) * 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US9160650B2 (en) 2013-06-17 2015-10-13 Futurewei Technologies, Inc. Enhanced flow entry table cache replacement in a software-defined networking switch
US9407692B2 (en) 2013-11-27 2016-08-02 Avi Networks Method and system for distributed load balancing
CN105814925B (zh) 2013-12-04 2020-03-06 诺基亚技术有限公司 用于无线接入的接入点信息
US9276841B2 (en) 2014-01-31 2016-03-01 Edgecast Networks, Inc. Adapting network control messaging for anycast reliant platforms
US9559964B2 (en) 2014-01-31 2017-01-31 Verizon Digital Media Services Inc. Control message routing within anycast reliant platforms
US10356689B2 (en) 2015-03-06 2019-07-16 Futurewei Technologies, Inc. Method and system with separation of session anchor and forwarding anchor
US10623486B2 (en) 2015-06-15 2020-04-14 Redis Labs Ltd. Methods, systems, and media for providing distributed database access during a network split
US10034201B2 (en) 2015-07-09 2018-07-24 Cisco Technology, Inc. Stateless load-balancing across multiple tunnels
US9935857B1 (en) 2015-12-17 2018-04-03 8X8, Inc. Analysis of system conditions from endpoint status information
KR20180103063A (ko) 2016-01-15 2018-09-18 가부시끼 가이샤 나노템 비접촉 반송 장치 및 비접촉 반송 시스템
US10462054B2 (en) 2016-02-04 2019-10-29 Trinity Mobile Networks, Inc. Overloading address space for improved routing, diagnostics, and content-relay network
US10341236B2 (en) 2016-09-30 2019-07-02 Nicira, Inc. Anycast edge service gateways
US10547499B2 (en) 2017-09-04 2020-01-28 International Business Machines Corporation Software defined failure detection of many nodes
US10749945B2 (en) * 2017-10-09 2020-08-18 Level 3 Communications, Llc Cross-cluster direct server return with anycast rendezvous in a content delivery network (CDN)
US10567333B2 (en) * 2017-11-01 2020-02-18 Verizon Digital Media Services Inc. Deterministic traffic management in an anycast network
US10574627B2 (en) 2018-03-07 2020-02-25 Cisco Technology, Inc. Dynamic orthogonal local DHCP IP pools for wireless access points
US10721124B2 (en) * 2018-04-06 2020-07-21 Cisco Technology, Inc. Cloud management connectivity assurance
US10880218B2 (en) 2018-11-21 2020-12-29 Amazon Technologies, Inc. Load balanced access to distributed endpoints using resiliently advertised global network addresses

Also Published As

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

Similar Documents

Publication Publication Date Title
DE112019005826T5 (de) Lastverteilter Zugang zu verteilten Endpunkten unter Verwendung globaler Netzwerkadressen
DE112020001459T5 (de) Konsistente Route-Ankündigungen zwischen redundanten Controllern im globalen Netzwerk-Access-Point
DE112016007055B4 (de) Querverbindung von Switches auf der Basis eines hierarchischen Overlay-tunneling
US9900263B2 (en) Non-overlay resource access in datacenters using overlay networks
DE602005001601T2 (de) Protokoll-Failover in einem Softrouter
DE60132718T2 (de) System und methode zum auffinden von informationsobjekten und informationsobjektspeichern in rechnernetzen
DE102008010145B4 (de) Peer-to-Peer-Kommunikationssystem und -verfahren
DE60025129T2 (de) Verfahren und Vorrichtung zur Bereitstellung von skalierbaren Diensten unter Benutzung einer Paketverteilungstabelle
DE60026231T2 (de) Verfahren und Vorrichtung zur Durchführung eines Schnellen Dienstnachschlagen in einem Neztwerkgruppen
DE60103088T2 (de) Verfahren zur Herstellung von Weiterleitungslisten für Netzwerkgruppe
DE69636126T2 (de) Verteilte verbindungsorientierte dienste für vermittelte fernmeldenetz
DE602005004477T2 (de) Softrouter
DE69727447T2 (de) Übertragungstrennung und Ebene-3-Netzwerk-Vermittlung
DE60121176T2 (de) Verfahren und System zur anforderungsorientierten Wiedererkennung von verbindungsorientierten Transaktionen
EP1826956B1 (de) Anpassung von virtuellen und physikalischen Netzwerkschnittstellen
DE60028018T2 (de) Verfahren und Anordnungen in einem Telekommunikationssystem
DE202013012482U1 (de) Identifizieren eines Austrittspunkts zu einem Netzwerkstandort
DE112008003966T5 (de) Selektives Um-Abbilden einer Netzwerktopologie
US20160065386A1 (en) Scalable virutal networks in sdn-based ethernet networks using vlans
DE102011114278A1 (de) Verfahren und Vorrichtung, die eine Ausfallumnschaltung fur einen Punkt-Punkt-Tunnel für Split-Plane-Umgebungen drahtloser lokaler Netze bereitstellen
DE112013006420T5 (de) Erweiterte Verbindungszusammenfassung (LAG) zur Nutzung in mehreren Switsches
DE102006037499A1 (de) Verfahren und System zum Entdecken und Bereitstellen von Beinahe-Echtzeit-Aktualisierungen von VPN-Topologien
DE112020004639T5 (de) Verwaltung verteilter endpunkte
DE202021103381U1 (de) Computerlesbares Medium und Systeme zur Implementierung eines regional zusammenhängenden Proxy-Dienstes
US20210099532A1 (en) Management of distributed endpoints

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012801000

Ipc: H04L0047100000