-
Die vorliegende Offenbarung bezieht sich allgemein auf Netzwerkkommunikation und insbesondere auf Mehrwegekommunikation über solche Netzwerke.
-
Die
US 2013/0194963 A1 bezieht sich allgemein auf Kommunikationsnetzwerke und auf Anker für eine End-Host-basierte Mobilität, Multi-Homing und Multipath-Protokolle.
-
Die
WO 2017/157457 A1 bezieht sich allgemein auf ein Verfahren und System, das eine Multipath-Verbindung zwischen zwei Verbindungsendpunkten in einem Netzwerk unterstützt.
-
Figurenliste
-
Die vorliegende Offenbarung wird gemäß einer oder mehreren verschiedenen Ausführungsformen detailliert unter Bezugnahme auf die folgenden Figuren beschrieben. Die Figuren dienen nur zur Veranschaulichung und zeigen lediglich typische oder beispielhafte Ausführungsformen.
- 1 zeigt ein Beispiel einer Netzwerkkonfiguration, die für eine Organisation implementiert werden kann, wie beispielsweise ein Unternehmen, eine Bildungseinrichtung, eine Regierungsbehörde, eine Gesundheitseinrichtung oder eine andere Organisation.
- 2 zeigt ein System, in dem ein einzelnes Netzwerkgateway eine End-to-End-Multipath-Transportsteuerungsprotokoll (MPTCP) -Kommunikation bereitstellt.
- 3 zeigt ein System, in dem mehrere Netzwerkgateways zusammenarbeiten, um eine End-to-End-Multipath-Transportsteuerungsprotokoll (MPTCP) -Kommunikation bereitzustellen.
- 4 zeigt ein Blockdiagramm einer beispielhaften Rechenkomponente oder - vorrichtung zum Implementieren von Multipath-TCP über ein Netzwerkgateway gemäß einer Ausführungsform.
- 5 zeigt ein Blockdiagramm eines beispielhaften Computersystems, in dem verschiedene der hier beschriebenen Ausführungsformen implementiert werden können.
-
Die Figuren erheben keinen Anspruch auf Vollständigkeit und beschränken die vorliegende Offenbarung nicht auf die genaue offenbarte Form.
-
Detaillierte Beschreibung
-
Ausführungsformen der offenbarten Technologie stellen eine End-to-End-Multipath-Transportsteuerungsprotokoll (MPTCP) -Kommunikation über ein Netzwerkgateway bereit. Die Erfindung wird durch die unabhängigen Ansprüche definiert; bevorzugte Ausführungsformen der Erfindung sind Gegenstand der abhängigen Ansprüche. Gemäß den offenbarten Ausführungsformen erfasst das Gateway einen anfänglichen MPTCP-Subflow, der von einem Client mit einem Server über das Netzwerkgateway eingerichtet wurde. Als Reaktion auf die Erkennung des anfänglichen MPTCP-Subflows gibt das Netzwerkgateway dem Client eine oder mehrere IP-Adressen bekannt. Der Client betrachtet jede bekanntgegebene IP-Adresse als IP-Adresse des Servers und initiiert einen neuen MPTCP-Subflow für jede bekanntgegebene Adresse, wobei die bekanntgegebene Adresse als Zieladresse verwendet wird. Das Netzwerkgateway ordnet jeder bekanntgegebenen Adresse eine Gateway-IP-Adresse zu. Beim Empfang eines MPTCP-Pakets mit einer der bekanntgegebenen Adressen als Zieladresse ersetzt das Netzwerkgateway die Ziel-IP-Adresse durch die IP-Adresse des Servers, ersetzt die Quelladresse durch die der bekanntgegebenen Adresse zugeordnete Gateway-IP-Adresse und sendet das Paket an den Server.
-
Ein ähnlicher Prozess wird für Pakete verwendet, die vom Server empfangen werden und eine der Gateway-IP-Adressen als Ziel-IP-Adresse haben. Bei solchen Paketen ersetzt das Gateway die Ziel-IP-Adresse durch die IP-Adresse des Clients, ersetzt die Quelladresse durch die bekanntgegebene Adresse, die der Gateway-IP-Adresse zugeordnet ist, und sendet das Paket an den Client.
-
Verschiedene Ausführungsformen können in einem softwaredefinierten Weitverkehrsnetz (SD WAN) implementiert werden. In solchen Ausführungsformen kann sich der Client in einem lokalen Netzwerk (LAN) befinden, und der Server kann sich in einem WAN (Wide Area Network) befinden. In diesen Ausführungsformen kann jeder Subflow über einen Tunnel über das WAN geführt werden.
-
Zusätzlich zur Bekanntgabe und Verwendung von Gateway-IP-Adressen können einige Ausführungsformen zusätzliche Ports bekanntgeben und verwenden, Zuordnungen erstellen und die IP-Adressen und Ports auf ähnliche Weise wie oben beschrieben übersetzen.
-
Ausführungsformen der offenbarten Technologie bieten zahlreiche Vorteile. Verschiedene Ausführungsformen ermöglichen es einem MPTCP-Client, die an einem SD-WAN-Gateway verfügbare Pfadvielfalt vollständig zu nutzen, ohne Änderungen an den Clients oder am Server vorzunehmen und ohne den IP-Adressierungsplan des Netzwerks zu ändern. Verschiedene Ausführungsformen bieten eine bessere Leistung als die SD-WAN-Tunnelübergabe. Eine einzelne TCP-Verbindung kann alle verfügbaren Links verwenden. MPTCP ermöglicht eine viel schnellere Wiederherstellung nach Verbindungsfehlern. MPTCP-Verbindungen können direkt zu jedem Internetziel geführt werden, ohne dass Tunnel und Dreiecks-Routing durchlaufen werden müssen.
-
Die offenbarte Technologie bietet in den meisten Fällen eine bessere Leistung als MPTCP-Proxys. Die meisten MPTCP-Proxys teilen die TCP-Verbindung auf, wodurch die angenommene End-to-End-Semantik von TCP unterbrochen wird. Die Bestätigung von Paketen erfolgt nicht mehr durchgehend, sodass der Absender nicht wissen kann, ob die von ihm gesendeten Daten tatsächlich beim Empfänger festgeschrieben werden, und Datenverlust am Proxy auftreten kann. Das Aufteilen der Verbindung verhindert normalerweise auch die Verwendung von Sicherheitsprotokollen, die die IP-Adressen verwenden, wie z. B. IPsec. Durch die Verwendung des Proxys wird verhindert, dass die Verbindung vom Proxy weggeleitet wird. Darüber hinaus ist die Skalierbarkeit eines solchen Proxys normalerweise problematisch, da der Proxy jede TCP- und MPTCP-Verbindung verfolgen muss, wodurch zusätzliche Ressourcen auf dem Gateway verbraucht werden. Darüber hinaus gibt es bei den meisten Implementierungen Leistungseinbußen für Hochgeschwindigkeits-WAN-Verbindungen.
-
Bevor Ausführungsformen der offenbarten Systeme und Verfahren im Detail beschrieben werden, ist es nützlich, eine beispielhafte Netzwerkinstallation zu beschreiben, mit der diese Systeme und Verfahren in verschiedenen Anwendungen implementiert werden können. 1 zeigt ein Beispiel einer Netzwerkkonfiguration 100, die für eine Organisation implementiert werden kann, wie beispielsweise ein Unternehmen, eine Bildungseinrichtung, eine Regierungsstelle, eine Gesundheitseinrichtung oder eine andere Organisation. Dieses Diagramm zeigt ein Beispiel einer Konfiguration, die mit einer Organisation implementiert wurde, die mehrere Benutzer (oder mindestens mehrere Client-Geräte 110) und möglicherweise mehrere physische oder geografische Standorte 102, 132, 142 hat. Die Netzwerkkonfiguration 100 kann einen primären Standort 102 in Kommunikation mit einem Netzwerk 120 enthalten. Die Netzwerkkonfiguration 100 kann auch einen oder mehrere entfernte Standorte 132, 142 enthalten, die mit dem Netzwerk 120 in Kommunikation stehen.
-
Der primäre Standort 102 kann ein primäres Netzwerk enthalten, das beispielsweise ein Büronetzwerk, ein Heimnetzwerk oder eine andere Netzwerkinstallation sein kann. Das Netzwerk des primären Standorts 102 kann ein privates Netzwerk sein, beispielsweise ein Netzwerk, das Sicherheits- und Zugriffskontrollen enthalten kann, um den Zugriff auf autorisierte Benutzer des privaten Netzwerks zu beschränken. Zu den autorisierten Benutzern können beispielsweise Mitarbeiter eines Unternehmens am Hauptstandort 102, Bewohner eines Hauses, Kunden eines Unternehmens usw. gehören.
-
In dem dargestellten Beispiel enthält der primäre Standort 102 ein Netzwerkgateway 104 in Kommunikation mit dem Netzwerk 120. Das Netzwerkgateway 104 kann eine Kommunikation mit dem Netzwerk 120 für den primären Standort 102 bereitstellen, obwohl es möglicherweise nicht der einzige Kommunikationspunkt mit dem Netzwerk 120 für den primären Standort 102 ist. Ein einzelnes Netzwerkgateway 104 ist dargestellt, obwohl der primäre Standort mehrere Netzwerkgateways und / oder mehrere Kommunikationspunkte mit dem Netzwerk 120 enthalten kann. In einigen Ausführungsformen kommuniziert das Netzwerkgateway 104 mit dem Netzwerk 120 über einen Router (nicht dargestellt). In anderen Ausführungsformen stellt das Netzwerkgateway 104 den Geräten am primären Standort 102 Router-Funktionalität zur Verfügung.
-
Ein Netzwerkgateway 104 kann eine Verbindung zu einem einzelnen Netzwerk 120 oder zu mehreren Netzwerken herstellen. Das Netzwerkgateway 104 kann selbst ein Zugangspunkt, ein Switch und / oder ein Router sein oder die Funktionalität eines solchen bereitstellen.
-
Das Netzwerkgateway 104 kann mit einem oder mehreren Switches 108 und / oder drahtlosen Zugangspunkten (APs) 106a-c in Verbindung stehen. Die Switches 108 und die drahtlosen APs 106a-c stellen Netzwerk-Konnektivität zu verschiedenen Client-Geräten 110a-j bereit. Unter Verwendung einer Verbindung zu einem Switch 108 oder AP 106a-c kann ein Client-Gerät 110a-j auf Netzwerkressourcen zugreifen, einschließlich anderer Geräte im Netzwerk (des primären Standorts 102) und im Netzwerk 120. Wenn das Netzwerkgateway 104 die Funktionalität eines Zugangspunkts oder eines Switches bereitstellt, können die verschiedenen Client-Geräte 110a-j eine direkte Verbindung zu ihm herstellen, ohne den Switch 108 oder den AP 106a-c zu durchlaufen.
-
Beispiele für Client-Geräte können sein: Desktop-Computer, Laptops, Server, Webserver, Authentifizierungsserver, AAA-Server (Authentication-Authorization-Accounting), DNS-Server (Domain Name System), DHCP-Server (Dynamic Host Configuration Protocol), Internetprotokoll- (IP-) Server, VPN-Server (Virtual Private Network), Netzwerkrichtlinienserver, Mainframes, Tablet-Computer, E-Reader, Netbook-Computer, Fernseher und ähnliche Monitore (z. B. Smart-TVs), Inhaltsempfänger, Set-Top-Boxen, Personal Digital Assistants (PDAs), Mobiltelefone, Smartphones, intelligente Terminals, dumme Terminals, virtuelle Terminals, Videospielkonsolen, virtuelle Assistenten, IOT-Geräte (Internet of Things) und dergleichen.
-
Innerhalb des primären Standorts 102 ist ein Switch 108 als ein Beispiel für einen Zugriffspunkt auf das am primären Standort 102 eingerichtete Netzwerk für verdrahtete Client-Geräte 110i-j enthalten. Die Client-Geräte 110i-j können möglicherweise eine Verbindung mit dem Switch 108 herstellen und über den Switch 108 auf andere Geräte innerhalb der Netzwerkkonfiguration 100 zugreifen. Die Client-Geräte 110i-j können möglicherweise auch über den Switch 108 auf das Netzwerk 120 zugreifen. Die Client-Geräte 110i-j können über eine verdrahtete 112-Verbindung mit dem Switch 108 kommunizieren. In dem dargestellten Beispiel kommuniziert der Switch 108 mit der Steuerung 104 über eine verdrahtete 112-Verbindung, obwohl diese Verbindung auch drahtlos sein kann.
-
Die drahtlosen APs 106a-c sind als ein weiteres Beispiel für einen Zugriffspunkt auf das Netzwerk enthalten, das am primären Standort 102 für Client-Geräte 110a-h eingerichtet wurde. Jeder der APs 106a-c kann eine Kombination aus Hardware, Software und / oder Firmware sein, die konfiguriert ist, um eine Drahtlos-Netzwerk-Konnektivität zu drahtlosen Client-Geräten 110a-h bereitzustellen. In dem dargestellten Beispiel können die APs 106a-c von der Steuerung 104 verwaltet und konfiguriert werden. Die APs 106a-c kommunizieren mit der Steuerung 104 und dem Netzwerk über Verbindungen 112, die entweder drahtgebundene oder drahtlose Schnittstellen sein können.
-
Die Netzwerkkonfiguration 100 kann einen oder mehrere entfernte Standorte 132 enthalten. Ein entfernter Standort 132 kann sich an einem anderen physischen oder geografischen Ort als der primäre Standort 102 befinden. In einigen Fällen kann sich der entfernte Standort 132 an demselben geografischen Ort oder möglicherweise in demselben Gebäude wie der primäre Standort 102 befinden, es fehlt jedoch eine direkte Verbindung zu dem Netzwerk, das sich innerhalb des primären Standorts 102 befindet. Stattdessen kann der entfernte Standort 132 eine Verbindung über ein anderes Netzwerk verwenden, z. B. das Netzwerk 120. Ein entfernter Standort 132 wie der in 1 dargestellte kann beispielsweise ein Satellitenbüro, eine andere Etage oder Suite in einem Gebäude usw. sein. Der entfernte Standort 132 kann eine Gateway-Vorrichtung 134 zum Kommunizieren mit dem Netzwerk 120 enthalten. Eine Gateway-Vorrichtung 134 kann ein Router, ein Digital-Analog-Modem, ein Kabelmodem, ein DSL-Modem (Digital Subscriber Line) oder ein anderes Netzwerkgerät sein, das zur Kommunikation mit dem Netzwerk 120 konfiguriert ist. Der entfernte Standort 132 kann auch einen Switch 138 und / oder AP 136 enthalten, der über drahtgebundene oder drahtlose Verbindungen mit der Gateway-Vorrichtung 134 in Kommunikation steht. Der Switch 138 und der AP 136 stellen Konnektivität zum Netzwerk für verschiedene Client-Geräte 140a-d bereit.
-
In verschiedenen Ausführungsformen kann der entfernte Standort 132 in direkter Kommunikation mit dem primären Standort 102 stehen, so dass die Client-Geräte 140a-d am entfernten Standort 132 auf die Netzwerkressourcen am primären Standort 102 zugreifen, als ob sich diese Client-Geräte 140a-d am primären Standort 102 befänden. In solchen Ausführungsformen wird der entfernte Standort 132 von der Steuerung 104 am primären Standort 102 verwaltet, und die Steuerung 104 stellt die erforderliche Konnektivität, Sicherheit und Zugänglichkeit bereit, die die Kommunikation des entfernten Standorts 132 mit dem primären Standort 102 ermöglichen. Sobald die Verbindung mit dem primären Standort 102 hergestellt ist, kann der entfernte Standort 132 als Teil eines privaten Netzwerks fungieren, das vom primären Standort 102 bereitgestellt wird.
-
In verschiedenen Ausführungsformen kann die Netzwerkkonfiguration 100 einen oder mehrere kleinere entfernte Standorte 142 enthalten, die nur eine Gateway-Vorrichtung 144 zur Kommunikation mit dem Netzwerk 120 und einen drahtlosen AP 146 umfassen, über den verschiedene Client-Geräte 150a-b auf das Netzwerk 120 zugreifen. Ein solcher entfernter Standort 142 kann beispielsweise das Haus eines einzelnen Mitarbeiters oder ein temporäres entferntes Büro darstellen. Der entfernte Standort 142 kann auch mit dem primären Standort 102 in Kommunikation stehen, so dass die Client-Geräte 150a-b am entfernten Standort 142 auf Netzwerkressourcen am primären Standort 102 zugreifen, als ob sich diese Client-Geräte 150a-b am primären Standort 102 befinden würden. Der entfernte Standort 142 kann von der Steuerung 104 am primären Standort 102 verwaltet werden, um diese Transparenz zu ermöglichen. Sobald die Verbindung mit dem primären Standort 102 hergestellt ist, kann der entfernte Standort 142 als Teil eines privaten Netzwerks fungieren, das vom primären Standort 102 bereitgestellt wird.
-
Das Netzwerk 120 kann ein öffentliches oder privates Netzwerk wie das Internet oder ein anderes Kommunikationsnetz sein, um die Konnektivität zwischen den verschiedenen Standorten 102, 130 bis 142 sowie den Zugriff auf die Server 160a-b zu ermöglichen. Das Netzwerk 120 kann Telekommunikationsleitungen von Drittanbietern umfassen, wie Telefonleitungen, Rundfunkkoaxialkabel, Glasfaserkabel, Satellitenkommunikation, Mobilfunkkommunikation und dergleichen. Das Netzwerk 120 kann eine beliebige Anzahl von Zwischennetzwerkgeräten wie Switches, Routern, Gateways, Servern und / oder Controllern enthalten, die nicht direkt Teil der Netzwerkkonfiguration 100 sind, aber die Kommunikation zwischen den verschiedenen Teilen der Netzwerkkonfiguration 100 erleichtern und zwischen der Netzwerkkonfiguration 100 und anderen mit dem Netzwerk verbundenen Entitäten. Das Netzwerk 120 kann verschiedene Inhaltsserver 160a-b enthalten. Die Inhaltsserver 160a-b können verschiedene Anbieter von herunterladbaren Multimedia-Inhalten und / oder Streaming-Inhalten umfassen, einschließlich Audio-, Video-, Grafik- und / oder Textinhalten oder einer beliebigen Kombination davon. Beispiele für Inhaltsserver 160a-b umfassen beispielsweise Webserver, Streaming-Radio- und Videoanbieter sowie Kabel- und Satellitenfernsehanbieter. Die Client-Geräte 110a-j, 140a-d, 150a-b können den von den Inhaltsservern 160a-b bereitgestellten Multimedia-Inhalt anfordern und darauf zugreifen.
-
Nachdem eine beispielhafte Netzwerkinstallation beschrieben wurde, werden nun Ausführungsformen der offenbarten Technologie detailliert beschrieben. 2 zeigt ein System, in dem ein einzelnes Netzwerkgateway eine End-to-End-Multipath-Transportsteuerungsprotokoll (MPTCP) -Kommunikation bereitstellt. Bezugnehmend auf 2 umfasst das System 200 einen Client 202 und einen Server 204. Ausführungsformen der offenbarten Technologie werden unter Bezugnahme auf die Kommunikation zwischen einem Client und einem Server beschrieben. Es versteht sich jedoch, dass die offenbarte Technologie auf die Kommunikation zwischen zwei beliebigen Netzwerkgeräten angewendet werden kann.
-
Der Client 202 kann eine Anwendung 206 ausführen und kann eine Internetprotokoll (IP) -Adresse IP-C haben. Die vom Client 202 ausgeführte Anwendung 206 kann beispielsweise ein Netzwerkbrowser, eine E-Mail-Anwendung oder dergleichen sein. Die vom Client 202 ausgeführten Anwendungen 206 sind jedoch nicht auf diese Beispiele beschränkt und können jede Anwendung enthalten, die Netzwerkkommunikation verwendet.
-
Der Server 204 kann eine Anwendung 208 ausführen und kann eine IP-Adresse IP-S haben. Die vom Server 204 ausgeführte Anwendung 208 kann beispielsweise ein Streaming-Videodienst oder dergleichen sein. Die vom Server 204 ausgeführten Anwendungen 208 sind jedoch nicht auf dieses Beispiel beschränkt und können jede Anwendung enthalten, die Netzwerkkommunikation verwendet.
-
Das System 200 kann ein Netzwerkgateway 214 enthalten. Das Netzwerk-Gateway 214 kann beispielsweise als SD-WAN Gateway oder dergleichen realisiert sein. In dem System 200 verbindet das Gateway 214 ein lokales Netzwerk (LAN) 210 mit einem Weitverkehrsnetz (WAN) 212. In diesem Beispiel stellt das Gateway 214 über drei verschiedene WAN-Verbindungen 225, 226 und 227 eine Verbindung zum WAN (Wide Area Network) 212 her. In anderen Ausführungsformen kann das Gateway 214 jedoch andere Netzwerke verbinden. Der Client 202 ist über das LAN 210 mit dem Gateway 214 verbunden. Der Server 204 ist durch das WAN 212 mit dem Gateway 214 verbunden. Zu beiden Verbindungen kann das Internet 216 gehören.
-
Das Gateway 214 kann eine Erfassungs-Subflow-Schaltung 218 enthalten. Die Erfassungs-Subflow-Schaltung 218 erfasst einen anfänglichen MPTCP-Subflow durch Netzwerkgeräte im LAN 210. Beispielsweise kann die Erfassungs-Subflow-Schaltung 218 einen anfänglichen Subflow 230a erfassen, der vom Client 202 zwischen dem Client 202 und dem Server 204 über eine WAN-Verbindung 225 eingerichtet wurde.
-
Das Gateway 214 kann Gateway-IP-Adressen bereitstellen. In dem Beispiel von 2 stellt das Gateway 214 vier Gateway-IP-Adressen bereit: IP-K, IP-L, IP-Y und IP-Z. Das Gateway 214 kann jedoch viel mehr Gateway-IP-Adressen bereitstellen.
-
Das Gateway 214 kann eine Spoof-ADD_ADDR-Schaltung 220 enthalten. Die Spoof-ADD_ADDR-Schaltung 220 kann dem Client 202 einige dieser Gateway-IP-Adressen als Gateway-IP-Adressen des Servers 204 bekanntgeben, beispielsweise wie nachstehend ausführlich beschrieben. In dem Beispiel von 2 kann die Spoof-ADD_ADDR-Schaltung 220 die Gateway-IP-Adressen IP-K und IP-L als Gateway-IP-Adressen des Servers 204 bekanntgeben.
-
Das Gateway 214 kann eine Subflow-NAT-Schaltung (Subflow Network Address Translation) 222 enthalten. Die Subflow-NAT-Schaltung 222 kann eine Netzwerkadressübersetzung für die vom Gateway 214 bereitgestellten Gateway-IP-Adressen durchführen. Insbesondere übersetzt die Subflow-NAT-Schaltung 222 zwischen einer Gateway-IP-Adresse, die dem Client 202 als Gateway-IP-Adresse des Servers 204 bekanntgegeben wird, und einer Gateway-IP-Adresse, die mit dem Server 204 als Gateway-IP-Adresse des Clients 202 verwendet wird. Auf diese Weise ermöglicht das Gateway 214 dem Client 202, zusätzliche MPTCP-Subflows mit dem Server 204 einzurichten. In dem Beispiel von 2 ermöglicht die Subflow-NAT-Schaltung 222 durch Übersetzen zwischen den Gateway-IP-Adressen IP-K und IP-Y dem Client 202, einen zusätzlichen Subflow 230b über eine WAN-Verbindung 226 einzurichten. Und durch Übersetzen zwischen den Gateway-IP-Adressen IP-L und IP-Z ermöglicht die Subflow-NAT-Schaltung 222 dem Client 202, einen zusätzlichen Subflow 230c über eine WAN-Verbindung 227 einzurichten.
-
3 zeigt ein System, in dem mehrere Netzwerkgateways zusammenarbeiten, um eine End-to-End-Multipath-Transportsteuerungsprotokoll (MPTCP) -Kommunikation bereitzustellen. Bezugnehmend auf 3 ist das Netzwerkgateway 214 von 2 durch drei Netzwerkgateways 214a, b, c ersetzt. In der Ausführungsform von 3 unterstützt jedes Netzwerkgateway 214 einen Subflow 230. Insbesondere enthält ein Netzwerkgateway 214a die Erfassungs-Subflow-Schaltung 218 und die Spoof-ADD_ADDR-Schaltung 220, während jedes der anderen Netzwerkgateways 214b, c eine jeweilige Subflow-NAT-Schaltung 222a, b enthält. Das Netzwerkgateway 214 erfasst einen anfänglichen Subflow 230a, während die Netzwerkgateways 214b, c die Einrichtung zusätzlicher Subflows 230b, c ermöglichen. Es versteht sich jedoch, dass die Erfassungs-Subflow-Schaltung 218, die Spoof-ADD_ADDR-Schaltung 220 und die Subflow-NAT-Schaltungen 222a, b auf irgendeine Weise auf eine beliebige Anzahl von mehreren Netzwerkgateways 214 verteilt sein können, um eine beliebige Anzahl zusätzlicher Subflows 230 zu unterstützen, vorausgesetzt, die Schaltungen 218, 220, 222 können miteinander kommunizieren.
-
Darüber hinaus müssen die Netzwerkgateways 214 nicht auf der Client-Seite des LAN 210 implementiert sein. In dem Beispiel von 3 ist das Netzwerkgateway 214c in der Nähe des Servers 204 implementiert, während die Netzwerkgateways 214a, b in der Nähe des Clients 202 implementiert sind. Ausführungsformen der offenbarten Technologie unterstützen jede Platzierung von Netzwerkgateways 214.
-
4 zeigt ein Blockdiagramm einer beispielhaften Rechenkomponente oder Vorrichtung 400 zum Implementieren von Multipath-TCP über ein oder mehrere Netzwerkgateways gemäß einer Ausführungsform. Die Rechenkomponente 400 kann beispielsweise ein Servercomputer, eine Steuerung oder eine andere ähnliche Rechenkomponente sein, die Daten verarbeiten kann. In der beispielhaften Implementierung von 4A, B umfasst die Computerkomponente 400 einen Hardwareprozessor 402 und ein maschinenlesbares Speichermedium 404.
-
Der Hardwareprozessor 402 können eine oder mehrere Zentraleinheiten (CPUs), halbleiterbasierte Mikroprozessoren und / oder andere Hardwarevorrichtungen sein, die zum Abrufen und Ausführen von Anweisungen geeignet sind, die in einem maschinenlesbaren Speichermedium 404 gespeichert sind. Der Hardwareprozessor 402 kann Anweisungen wie die Anweisungen 406 bis 414 abrufen, decodieren und ausführen, um Prozesse oder Operationen zu steuern, um die Einrichtung zusätzlicher MPTCP-Subflows als Reaktion auf das Erfassen eines anfänglichen MPTCP-Subflows zu ermöglichen. Alternativ oder zusätzlich zum Abrufen und Ausführen von Anweisungen kann der Hardwareprozessor 402 eine oder mehrere elektronische Schaltungen enthalten, die elektronische Komponenten zum Ausführen der Funktionalität einer oder mehrerer Anweisungen enthalten, wie beispielsweise ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC) oder andere elektronische Schaltungen.
-
Ein maschinenlesbares Speichermedium, wie beispielsweise ein maschinenlesbares Speichermedium 404, kann eine beliebige elektronische, magnetische, optische oder andere physische Speichervorrichtung sein, die ausführbare Anweisungen enthält oder speichert. So kann ein maschinenlesbares Speichermedium 404 beispielsweise ein Arbeitsspeicher (RAM), ein nichtflüchtiges RAM (NVRAM), ein elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM - Electrically Erasable Programmable Read-Only Memory), ein Speichergerät, eine optische Speicherplatte und ähnliches sein. In einigen Ausführungsformen kann das maschinenlesbare Speichermedium 404 ein nichttransitorisches Speichermedium sein, wobei der Begriff „nichttransitorisch“ keine transitorischen Ausbreitungssignale umfasst. Wie nachstehend ausführlich beschrieben, kann das maschinenlesbare Speichermedium 404 mit ausführbaren Anweisungen codiert werden, beispielsweise mit den Anweisungen 406 bis 414.
-
Der Hardwareprozessor 402 kann die Anweisung 406 ausführen, um das Erkennen eines MPTCP-Subflows mit einer ersten IP-Adresse als Quelladresse und einer zweiten IP-Adresse als Zieladresse durchzuführen, wobei keines der Gateways die Quelle oder das Ziel des MPTCP-Subflows ist. Beispielsweise kann die Anweisung 406 das Erfassen eines anfänglichen MPTCP-Subflows 230a durchführen, der durch das Netzwerkgateway 214 zwischen einem ersten Netzwerkgerät im LAN 210 und einem zweiten Netzwerkgerät im WAN 212 läuft. Zum Beispiel erkennt unter Bezugnahme auf 2 die Erfassungs-Subflow-Schaltung 218 des Netzwerkgateways 214 den anfänglichen Subflow 230a zwischen dem Client 202 und dem Server 204. In dem Beispiel von 3 erkennt die Erfassungs-Subflow-Schaltung 218 des Gateways 214a einen anfänglichen Subflow 230a zwischen dem Client 202 und dem Server 204. Insbesondere prüft die Erfassungs-Subflow-Schaltung 218 jedes SYN-ACK-Paket, das einen MPTCP-Optionsheader enthält. Solche Pakete bezeichnen den erfolgreichen Aufbau eines MPTCP-Subflows. Das Vorhandensein dieser TCP-Option zeigt an, dass sowohl der Client als auch der Server dieses Subflows MPTCP unterstützen.
-
In Reaktion auf das Erfassen des anfänglichen MPTCP-Subflows 230a aktiviert das Netzwerkgateway 214 einen oder mehrere zusätzliche Subflows zwischen dem Client 202 und dem Server 204, wie unter Bezugnahme auf die nachstehenden Anweisungen 408-418 beschrieben.
-
Der Hardwareprozessor 402 kann die Anweisung 408 ausführen, um das Zuordnen einer dritten IP-Adresse zum MPTCP-Subflow durchzuführen. Unter Bezugnahme auf 2 kann beispielsweise die Spoof-ADD_ADDR-Schaltung 220 des Gateways 214 eine oder beide der IP-Adressen IP-K und IP-L dem MPTCP-Subflow zuordnen. In den Beispielen der 2 und 3 kann die Spoof-ADD_ADDR-Schaltung 220 die Adressen IP-K und IP-Y und die Adressen IP-L und IP-Z zuordnen.
-
Der Hardwareprozessor 402 kann die Anweisung 410 ausführen, um die dritte IP-Adresse an mindestens einen Endpunkt des MPTCP-Subflows bekanntzugeben. Zum Beispiel kann unter Bezugnahme auf 2 die Spoof-ADD_ADDR-Schaltung 220 des Gateways 214 dem Client 202 eine oder beide der IP-Adressen IP-K und IP-L bekanntgeben. In dem Beispiel von 3 gibt die Spoof-ADD_ADDR-Schaltung 220 des Gateways 214a dem Client 202 Adressen IP-K und IP-L bekannt. Jede Technik kann zur Bekanntgabe von IP-Adressen und zur Bekanntgabe von Transportports verwendet werden. Beispielsweise kann eine IP-Adresse bekanntgegeben werden, indem in ein MPTCP-Paket ein MPTCP-ADD-ADDR-Optionsheader aufgenommen wird, der die IP-Adresse enthält. In einem anderen Beispiel wird das SYN-ACK-Paket, das die Erkennung des MPTCP-Subflows ausgelöst hat, geklont (dupliziert), und sein MPTCP-Optionsheader wird durch einen MPTCP-ADD-ADDR-Optionsheader ersetzt, der die IP-Adresse enthält. Als andere Beispiele können IP-Adressen und Transportports durch Posten auf einer Webseite, Aufnahme in den Optionsheader einer DHCP-Nachricht (Dynamic Host Configuration Protocol), Aufnahme in eine ICMP-Nachricht (Internet Control Message Protocol) und dergleichen bekanntgegeben werden.
-
Ein oder mehrere Gateways 214 können ein MPTCP-Paket mit der dritten IP-Adresse als Zieladresse empfangen. Beispielsweise kann das Gateway 214 für jeden zusätzlichen Subflow ein MPTCP-Paket vom Client 202 empfangen, das die IP-Adresse des Clients als Quelladresse und eine der bekanntgegebenen IP-Adressen als Zieladresse hat. In jedem der Beispiele der 2 und 3 können zwei solche Pakete empfangen werden. Beide Pakete haben die IP-Adresse IP-C des Clients 202. Und eines der Pakete kann die Adresse IP-K als Zieladresse haben, während das andere Paket die Adresse IP-L als Zieladresse haben kann.
-
Der Hardwareprozessor 402 kann die Anweisung 412 ausführen, um zu bewirken, dass in Reaktion auf das MPTCP-Paket mit der dritten IP-Adresse als Zieladresse die Quelladresse des MPTCP-Pakets und die Zieladresse des MPTCP-Pakets ersetzt werden. Das heißt, die Anweisung 412 kann eine Paketverarbeitungseinheit (einen Hardware- oder Softwareblock, der Pakete verarbeitet) anweisen, die Quell- und Zieladresse eines Pakets zu ändern, dessen Zieladresse mit der dritten IP-Adresse übereinstimmt. Beispielsweise wird die Zieladresse des vom Client 202 in einem Subflow empfangenen Pakets verwendet, um eine Quelladresse für die Kommunikation mit dem Server 204 in diesem Subflow auszuwählen. In den Beispielen der 2 und 3 wird die Adresse IP-Y für Pakete ausgewählt, die vom Client 202 mit IP-K als Zieladresse empfangen werden, und die Adresse IP-Z wird für Pakete ausgewählt, die vom Client 202 mit IP-L als Zieladresse empfangen werden. Auf diese Weise werden die Zieladressen von vom Client 202 empfangenen Paketen verwendet, um die Zuordnungen für die Adressumsetzung durch die Subflow-NAT-Schaltung 222 auszuwählen.
-
Ein oder mehrere Gateways 214 können das Ersetzen der ersten IP-Adresse im zweiten MPTCP-Paket durch die vierte IP-Adresse und das Ersetzen der dritten IP-Adresse im zweiten MPTCP-Paket durch die zweite IP-Adresse durchführen. Das heißt, für jedes vom Client 202 in einem Subflow empfangene Paket wird die Quelladresse durch die Adresse ersetzt, die der Zieladresse des Pakets zugeordnet ist, und die Zieladresse wird durch die Adresse des Servers 204 ersetzt. In dem Beispiel der 2 und 3 ersetzt die Subflow-NAT-Schaltung 222 für den zusätzlichen Subflow 230b die Quelladresse IP-C durch die ausgewählte Adresse IP-Y und ersetzt die Zieladresse IP-K durch die Adresse IP-S des Servers. Und für den zusätzlichen Subflow 230c ersetzt die Subflow-NAT-Schaltung 222 die Quelladresse IP-C durch die ausgewählte Adresse IP-Z, und die Zieladresse IP-L wird durch die Adresse IP-S des Servers 204 ersetzt.
-
Um den Verbrauch von IP-Adressen auf dem Gateway 214 zu verringern, können einige Ausführungsformen eine Portüberlastung verwenden. In solchen Ausführungsformen kann das Gateway 214 dem Client 202 einen Satz von Tupeln übermitteln, die jeweils eine IP-Adresse und einen Zielport enthalten. Der Client 202 erstellt einen Subflow 230 für jede Ziel-IP-Adresse und jeden Zielport. Alle Subflows 230 des Clients 202 verwenden dieselbe Quell-IP-Adresse und im Allgemeinen denselben Quellport (jedoch nicht immer), so dass die von der Subflow-NAT-Schaltung 222 verwendete Zuordnung sowohl durch die Ziel-IP-Adresse als auch durch den Zielport identifiziert werden muss.
-
Wenn ein ausgehendes Paket das Netzwerkgateway 214 erreicht, sind sowohl die Ziel-IP-Adresse als auch der Zielport diejenigen, die vom Netzwerkgateway 214 an den Client 202 gesendet wurden und zum Identifizieren einer Adress- und Port-Zuordnung verwendet werden. Sowohl die Ziel-IP-Adresse als auch der Zielport werden auf ähnliche Weise wie oben beschrieben in das geändert, was der Server 204 erwartet. Sowohl die Quell-IP-Adresse als auch die Quellports werden in ein eindeutiges Paar geändert, das die umgekehrte Adress- und Portzuordnung für den Rückgabeteil des Subflows 230 identifiziert (d.h. für Pakete, die vom Server 204 an den Client 202 gesendet werden). Die umgekehrte Übersetzung wird dann für eingehende Pakete vom Server 204 durchgeführt.
-
Der anfängliche MPTCP-Subflow 230a wird unter Verwendung von direktem Routing, Tunneling oder Standard Network Address Translation (NAT) verarbeitet. In den meisten Fällen verwendet das Gateway 214 eine dieser Techniken für Nicht-MPTCP-Flows; In diesen Fällen wird der anfängliche MPTCP-Subflow genauso behandelt wie ein Nicht-MPTCP-Flow. Nicht-MPTCP-Flows können in einigen Fällen von einem MPTCP-Proxy verarbeitet werden. Der anfängliche MPTCP-Subflow wird jedoch nicht von einem MPTCP-Proxy verarbeitet.
-
Verschiedene Ausführungsformen sind mit dem anfänglichen MPTCP-Subflow kompatibel, der unter Verwendung von direktem Routing, Tunneling oder Standard-NAT verarbeitet wird. Im Fall desTunneling werden die zusätzlichen Subflows 230b, c wie oben beschrieben verarbeitet und dann in den richtigen Tunnel eingekapselt.
-
Im SD-WAN besteht der Hauptgrund für das Herstellen mehrerer Verbindungen zum Netzwerk darin, dass einige dieser Verbindungen möglicherweise nicht zuverlässig sind und daher die Ausfallsicherheit durch mehrere Verbindungen verbessert wird. Im SD-WAN überwacht das Gateway in den meisten Fällen diese Links und die zugehörigen Pfade zum Internet. Wenn das SD-WAN-Gateway die Tunnelübergabe implementiert, muss es die WAN-Verbindungen überwachen, um Ausfälle zu erkennen, und TCP-Flows von der ausgefallenen Verbindung zu einer fehlerfreien Verbindung umleiten. In einigen Ausführungsformen kann das SD-WAN-Gateway die Informationen über den Zustand der WAN-Verbindungen verwenden.
-
Zuerst gibt das SD-WAN-Gateway dem Client möglicherweise nur alternative IP-Adress- und Transportport-Tupel bekannt, die fehlerfreien Verbindungen entsprechen. Wenn dann eine Verbindung als ausgefallen erkannt wird, kann das SD-WAN-Gateway einen REMOVE-ADDR in einer Spoof-Nachricht senden, um den Client anzuweisen, den mit der ausgefallenen Verbindung verknüpften Subflow zu schließen. Wenn eine zuvor ausgefallene Verbindung als fehlerfrei erkannt wird, kann das Gateway einen ADD-ADDR in einer Spoof-Nachricht senden, um den Client anzuweisen, einen Subflow zu öffnen, der der neu fehlerfreien Verbindung zugeordnet ist.
-
5 zeigt ein Blockdiagramm eines beispielhaften Computersystems 500, in dem verschiedene der hier beschriebenen Ausführungsformen implementiert werden können. Das Computersystem 500 enthält einen Bus 502 oder eine anderen Kommunikationsmechanismus zum Kommunizieren von Informationen und einen oder mehrere Hardware-Prozessoren 504, gekoppelt mit dem Bus 502 zum Verarbeiten von Informationen. Hardwareprozessor(en) 504 können beispielsweise ein oder mehrere Allzweck-Mikroprozessoren sein.
-
Das Computersystem 500 enthält auch einen Hauptspeicher 506, wie einen Direktzugriffsspeicher (RAM), einen Cache und / oder andere dynamische Speichervorrichtungen, die mit dem Bus 502 gekoppelt sind, um Informationen und Anweisungen zu speichern, die vom Prozessor 504 ausgeführt werden sollen. Der Hauptspeicher 506 kann auch zum Speichern temporärer Variablen oder anderer Zwischeninformationen während der Ausführung von Anweisungen verwendet werden, die vom Prozessor 504 ausgeführt werden sollen. Wenn solche Anweisungen auf Speichermedien gespeichert sind, auf die der Prozessor 504 zugreifen kann, machen sie das Computersystem 500 zu einer Spezialmaschine, die angepasst ist, um die in den Anweisungen angegebenen Operationen auszuführen.
-
Das Computersystem 500 enthält ferner einen Nur-Lese-Speicher (ROM) 508 oder eine andere statische Speichervorrichtung, die mit dem Bus 502 gekoppelt ist, um statische Informationen und Anweisungen für den Prozessor 504 zu speichern. Eine Speichervorrichtung 510, wie eine Magnetplatte, eine optische Platte oder ein USB-Stick (Flash-Laufwerk) usw., ist vorgesehen und mit dem Bus 502 zum Speichern von Informationen und Anweisungen verbunden.
-
Das Computersystem 500 kann über den Bus 502 mit einer Anzeige 512, wie einer Flüssigkristallanzeige (LCD) (oder einem Touchscreen), verbunden sein, um einem Computerbenutzer Informationen anzuzeigen. Eine Eingabevorrichtung 514, die alphanumerische und andere Tasten enthält, ist mit dem Bus 502 verbunden, um Informationen und Anweisungsauswahlen an den Prozessor 504 zu übermitteln. Ein anderer Typ einer Benutzereingabevorrichtung ist die Cursorsteuerung 516, wie beispielsweise eine Maus, ein Trackball oder Cursorrichtungs-Tasten zum Übermitteln von Richtungsinformationen und Befehlsauswahlen an den Prozessor 504 und zum Steuern der Cursorbewegung auf der Anzeige 512. In einigen Ausführungsformen können die gleichen Richtungsinformationen und Befehlsauswahlen wie bei der Cursorsteuerung durch Empfangen von Berührungen auf einem Touchscreen ohne Cursor implementiert werden.
-
Das Computersystem 500 kann ein Benutzerschnittstellenmodul zum Implementieren einer GUI enthalten, die in einer Massenspeichervorrichtung als ausführbare Softwarecodes gespeichert sein kann, die von der bzw. den Rechenvorrichtung(en) ausgeführt werden. Dieses und andere Module können beispielsweise Komponenten wie Softwarekomponenten, objektorientierte Softwarekomponenten, Klassenkomponenten und Aufgabenkomponenten, Prozesse, Funktionen, Attribute, Prozeduren, Unterprogramme, Segmente des Programmcodes, Treiber, Firmware, Mikrocode, Schaltkreise, Daten, Datenbanken, Datenstrukturen, Tabellen, Arrays und Variablen umfassen.
-
Im Allgemeinen kann sich das Wort „Komponente“, „Engine“, „System“, „Datenbank“, „Datenspeicher“ und dergleichen, wie hierin verwendet, auf Logik beziehen, die in Hardware oder Firmware enthalten ist, oder auf eine Sammlung von Softwareanweisungen, möglicherweise mit Ein- und Ausstiegspunkten, die in einer Programmiersprache wie z. B. Java, C oder C++ geschrieben sind. Eine Softwarekomponente kann kompiliert und zu einem ausführbaren Programm verknüpft, in einer dynamischen Linkbibliothek installiert oder in einer interpretierten Programmiersprache wie beispielsweise BASIC, Perl oder Python geschrieben werden. Es versteht sich, dass Softwarekomponenten von anderen Komponenten oder von sich selbst aus aufgerufen werden können und / oder als Reaktion auf erkannte Ereignisse oder Interrupts aufgerufen werden können. Softwarekomponenten, die für die Ausführung auf Rechenvorrichtungen konfiguriert sind, können auf einem computerlesbaren Medium wie einer CD, einer digitalen Videodisk, einem Flash-Laufwerk, einer Magnetplatte oder einem anderen materiellen Medium oder als digitaler Download bereitgestellt werden (und können ursprünglich in einem komprimierten oder installierbaren Format gespeichert sein, das vor der Ausführung installiert, dekomprimiert oder entschlüsselt werden muss). Ein solcher Softwarecode kann teilweise oder vollständig auf einer Speichervorrichtung der ausführenden Rechenvorrichtung zur Ausführung durch die Rechenvorrichtung gespeichert werden. Softwareanweisungen können in Firmware wie ein EPROM eingebettet sein. Es versteht sich ferner, dass Hardwarekomponenten aus verbundenen Logikeinheiten wie Gates und Flip-Flops bestehen können und / oder aus programmierbaren Einheiten wie programmierbaren Gate-Arrays oder Prozessoren bestehen können.
-
Das Computersystem 500 kann die hierin beschriebenen Techniken unter Verwendung einer angepassten fest verdrahteten Logik, eines oder mehrerer ASICs oder FPGAs, einer Firmware und / oder einer Programmlogik implementieren, die in Kombination mit dem Computersystem bewirkt oder programmiert, dass das Computersystem 500 eine Spezialmaschine ist. Gemäß einer Ausführungsform werden die hierin enthaltenen Techniken von dem Computersystem 500 als Reaktion darauf ausgeführt, dass der oder die Prozessoren 504 eine oder mehrere Sequenzen einer oder mehrerer im Hauptspeicher 506 enthaltener Anweisungen ausführen. Solche Anweisungen können von einem anderen Speichermedium, wie beispielsweise der Speichervorrichtung 510, in den Hauptspeicher 506 eingelesen werden. Die Ausführung der im Hauptspeicher 506 enthaltenen Anweisungssequenzen bewirkt, dass der bzw. die Prozessor(en) 504 die hier beschriebenen Prozessschritte ausführen. In alternativen Ausführungsformen können fest verdrahtete Schaltungen anstelle von oder in Kombination mit Softwareanweisungen verwendet werden.
-
Der Begriff „nichttransitorische Medien“ und ähnliche Begriffe, wie sie hier verwendet werden, beziehen sich auf alle Medien, die Daten und / oder Anweisungen speichern, die bewirken, dass eine Maschine auf eine bestimmte Weise arbeitet. Solche nichtflüchtigen Medien können nichtflüchtige Medien und / oder flüchtige Medien umfassen. Nichtflüchtige Medien umfassen beispielsweise optische oder magnetische Platten, wie beispielsweise die Speichervorrichtung 510. Flüchtige Medien umfassen einen dynamischen Speicher, wie beispielsweise den Hauptspeicher 506. Übliche Formen von nichttransitorischen Medien umfassen beispielsweise eine Diskette, eine flexible Platte, eine Festplatte, ein Solid-State-Laufwerk, ein Magnetband oder ein anderes magnetisches Datenspeichermedium, eine CD-ROM oder ein anderes optisches Datenspeichermedium, jedes physische Medium mit Lochmustern, ein RAM, ein PROM und ein EPROM, ein FLASH-EPROM, ein NVRAM, einen beliebigen anderen Speicherchip oder eine beliebige andere Kassette sowie vernetzte Versionen derselben.
-
Nichttransitorische Medien unterscheiden sich von Übertragungsmedien, können jedoch in Verbindung mit diesen verwendet werden. Übertragungsmedien sind an der Übertragung von Informationen zwischen nichttransitorischen Medien beteiligt. Zum Beispiel umfassen Übertragungsmedien Koaxialkabel, Kupferdraht und Glasfaser, einschließlich der Drähte, die den Bus 502 umfassen. Übertragungsmedien können auch die Form von akustischen oder Lichtwellen annehmen, wie sie beispielsweise während der Funkwellen- und Infrarot-Datenkommunikation erzeugt werden.
-
Das Computersystem 500 enthält auch eine Kommunikationsschnittstelle 518, die mit dem Bus 502 verbunden ist. Die Netzwerkschnittstelle 518 stellt eine bidirektionale Datenkommunikationskopplung mit einer oder mehreren Netzwerkverbindungen bereit, die mit einem oder mehreren lokalen Netzwerken verbunden sind. Beispielsweise kann die Kommunikationsschnittstelle 518 eine ISDN-Karte (Integrated Services Digital Network), ein Kabelmodem, ein Satellitenmodem oder ein Modem sein, um eine Datenkommunikationsverbindung zu einem entsprechenden Typ einer Telefonleitung bereitzustellen. Als ein anderes Beispiel kann die Netzwerkschnittstelle 518 eine LAN-Karte (Local Area Network) sein, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN (oder eine WAN-Komponente zur Kommunikation mit einem WAN) bereitzustellen. Drahtlose Verbindungen können ebenfalls implementiert werden. In einer solchen Implementierung sendet und empfängt die Netzwerkschnittstelle 518 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen, die verschiedene Arten von Informationen darstellen.
-
Eine Netzwerkverbindung stellt normalerweise eine Datenkommunikation über ein oder mehrere Netzwerke zu anderen Datengeräten bereit. Beispielsweise kann eine Netzwerkverbindung eine Verbindung über ein lokales Netzwerk zu einem Host-Computer oder zu Datengeräten bereitstellen, die von einem Internetdienstanbieter (ISP) betrieben werden. Der ISP wiederum stellt Datenkommunikationsdienste über das weltweite Paketdatenkommunikationsnetz bereit, das heute allgemein als „Internet“ bezeichnet wird. Das lokale Netzwerk und das Internet verwenden beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen. Die Signale durch die verschiedenen Netzwerke und die Signale auf der Netzwerkverbindung und über die Kommunikationsschnittstelle 518, die die digitalen Daten zum und vom Computersystem 500 übertragen, sind beispielhafte Formen von Übertragungsmedien.
-
Das Computersystem 500 kann Nachrichten senden und Daten, einschließlich Programmcode, über das bzw. die Netzwerk(e), die Netzwerkverbindung und die Kommunikationsschnittstelle 518 empfangen. In dem Internet-Beispiel könnte ein Server einen angeforderten Code für ein Anwendungsprogramm über das Internet, den ISP, das lokale Netzwerk und die Kommunikationsschnittstelle 518 übertragen.
-
Der empfangene Code kann vom Prozessor 504 ausgeführt werden, wenn er empfangen und / oder in der Speichervorrichtung 510 oder einem anderen nichtflüchtigen Speicher zur späteren Ausführung gespeichert wird.
-
Jeder der in den vorhergehenden Abschnitten beschriebenen Prozesse, Verfahren und Algorithmen kann in Codekomponenten enthalten sein, die von einem oder mehreren Computersystemen oder Computerprozessoren, die Computerhardware umfassen, ausgeführt werden, und diese vollständig oder teilweise automatisieren. Das eine oder die mehreren Computersysteme oder Computerprozessoren können auch dazu funktionsfähig sein, die Leistung der relevanten Vorgänge in einer „Cloud-Computing“-Umgebung oder als „Software as a Service“ (SaaS) zu unterstützen. Die Prozesse und Algorithmen können teilweise oder vollständig in anwendungsspezifischen Schaltungen implementiert sein. Die verschiedenen oben beschriebenen Merkmale und Verfahren können unabhängig voneinander verwendet oder auf verschiedene Weise kombiniert werden. Verschiedene Kombinationen und Unterkombinationen sollen in den Geltungsbereich dieser Offenbarung fallen, und bestimmte Verfahren oder Prozessblöcke können in einigen Implementierungen weggelassen werden. Die hier beschriebenen Verfahren und Prozesse sind auch nicht auf eine bestimmte Sequenz beschränkt, und die dazugehörigen Blöcke oder Zustände können in anderen Sequenzen ausgeführt werden, die geeignet sind, oder können parallel oder auf eine andere Weise durchgeführt werden. Blöcke oder Zustände können zu den offenbarten beispielhaften Ausführungsformen hinzugefügt oder daraus entfernt werden. Die Leistung bestimmter Vorgänge oder Prozesse kann auf Computersysteme oder Computerprozessoren verteilt werden, die sich nicht nur auf einem einzelnen Computer befinden, sondern auf mehreren Computern bereitgestellt werden.
-
Wie hierin verwendet, kann eine Schaltung unter Verwendung irgendeiner Form von Hardware, Software oder einer Kombination davon implementiert werden. Beispielsweise können ein oder mehrere Prozessoren, Controller, ASICs, PLAs, PALs, CPLDs, FPGAs, logische Komponenten, Softwareroutinen oder andere Mechanismen implementiert werden, um eine Schaltung zu bilden. Bei der Implementierung können die verschiedenen hier beschriebenen Schaltungen als diskrete Schaltungen implementiert werden, oder die beschriebenen Funktionen und Merkmale können teilweise oder insgesamt auf eine oder mehrere Schaltungen aufgeteilt werden. Obwohl verschiedene Merkmale oder Elemente der Funktionalität einzeln als separate Schaltkreise beschrieben oder beansprucht werden können, können diese Merkmale und Funktionen von einem oder mehreren gemeinsamen Schaltkreisen gemeinsam genutzt werden, und eine solche Beschreibung erfordert oder impliziert nicht, dass separate Schaltkreise erforderlich sind, um solche Merkmale oder Funktionen zu implementieren. Wenn eine Schaltung ganz oder teilweise unter Verwendung von Software implementiert wird, kann eine solche Software implementiert werden, um mit einem Computer- oder Verarbeitungssystem zu arbeiten, das in der Lage ist, die in Bezug darauf beschriebenen Funktionen auszuführen, wie beispielsweise das Computersystem 500.
-
Wie hierin verwendet, kann der Begriff „oder“ entweder in einem inklusiven oder einem exklusiven Sinne ausgelegt werden. Darüber hinaus darf die Beschreibung von Ressourcen, Operationen oder Strukturen im Singular nicht so gelesen werden, dass der Plural ausgeschlossen ist. Bedingte Sprache wie unter anderem „kann“, „könnte“, „könnten“ oder „können“, sofern nicht ausdrücklich anders angegeben oder im verwendeten Kontext anderweitig verstanden, soll im Allgemeinen vermitteln, dass bestimmte Ausführungsformen Folgendes bestimmte Merkmale, Elemente und / oder Schritte umfassen, während andere Ausführungsformen diese nicht enthalten.
-
In diesem Dokument verwendete Begriffe und Ausdrücke sowie Variationen davon sollten, sofern nicht ausdrücklich anders angegeben, als offen und nicht als einschränkend ausgelegt werden. Adjektive wie „konventionell“, „traditionell“, „normal“, „Standard“, „bekannt“ und Begriffe mit ähnlicher Bedeutung sollten nicht so ausgelegt werden, dass sie den beschriebenen Artikel auf einen bestimmten Zeitraum oder auf einen ab einer bestimmten Zeit verfügbaren Artikel beschränken, sondern sollten so gelesen werden, dass sie konventionelle, traditionelle, normale oder Standardtechnologien umfassen, die jetzt oder zu einem späteren Zeitpunkt in der Zukunft verfügbar oder bekannt sein können. Das Vorhandensein von erweiternden Wörtern und Ausdrücken wie „einem oder mehreren“, „zumindest“, „aber nicht beschränkt auf“ oder ähnlichen Ausdrücken in einigen Fällen bedeutet nicht, dass beim Fehlen solcher erweiternder Ausdrücke der engere Fall beabsichtigt oder erforderlich ist.