-
HINTERGRUND
-
Datencenter umfassen eine riesige Anzahl von untereinander verbundener Hostgeräte. Die Hostgeräte führen häufig multiple Anwendungen aus, und jede der Anwendungen hat spezifische Netzwerkanforderungen. In standardmässigen Datencenternetzwerken werden Datenrouten in einem Netzwerk unabhängig von den spezifischen Netzwerkanforderungen der Anwendungen durch Switches kontrolliert.
-
KURZDARSTELLUNG
-
Nach einem Aspekt der Offenlegung beinhaltet ein Verfahren zur Kontrolle der Netzwerkrouten die Bereitstellung eines Netzwerks. Das Netzwerk umfasst eine Vielzahl von Edgegeräten und eine Vielzahl von Core-Switches. Jedes der Vielzahl von Edgegeräten führt eine Anwendung mit einer Anwendungsanforderung aus. Jedes der Vielzahl der Edgegeräte hat ausserdem ein Weiterleitungsmodul. Die Vielzahl der Core-Switches verbindet die Vielzahl der Edgegeräte untereinander. Des Weiteren umfasst das Netzwerk einen Netzwerkcontroller, der mit jedem der Vielzahl von Edgegeräten und mit jedem der Vielzahl von Core-Switches verknüpft ist. Das Verfahren beinhaltet ausserdem das Empfangen der Anwendungsanforderung der auf jedem der Vielzahl der Edgegeräte ausgeführten Anwendung durch den Netzwerkcontroller. Das Verfahren umfasst des Weiteren das Bestimmen einer Vielzahl von Routen, die auf die empfangenen Anwendungsanforderungen reagieren, durch den Netzwerkcontroller. Schliesslich beinhaltet das Verfahren das Programmieren eines Weiterleitungsmoduls für jedes der Vielzahl der Edgegeräte und eines Weiterleitungsmoduls für jeden der Vielzahl der Core-Switches, die auf die festgelegte Vielzahl der Routen reagieren, durch den Netzwerkcontroller.
-
Nach einem anderen Aspekt der Offenlegung beinhaltet ein System zur Kontrolle der Netzwerkrouten ein Netzwerk. Das Netzwerk umfasst eine Vielzahl von Edgegeräten, jedes der Vielzahl der Edgegeräte führt eine Anwendung mit einer Anwendungsanforderung aus. Jedes der Vielzahl der Edgegeräte hat ausserdem ein Weiterleitungsmodul. Das Netzwerk umfasst des Weiteren eine Vielzahl von Core-Switches, die die Vielzahl von Edgegeräten untereinander verbindet. Des Weiteren umfasst das System einen Netzwerkcontroller, der mit jedem der Vielzahl von Edgegeräten und mit jedem der Vielzahl von Core-Switches verknüpft ist. Der Netzwerkcontroller ist so konfiguriert, dass er die Anwendungsanforderung der auf jedem der Vielzahl von Edgegeräten ausgeführten Anwendung empfangen kann. Der Netzwerkcontroller ist ausserdem so konfiguriert, dass er eine Vielzahl von Routen, die auf die empfangenen Anwendungsanforderungen reagieren bestimmen kann, und das Weiterleitungsmodul für jedes der Vielzahl von Edgegeräten sowie ein Weiterleitungsmodul für jeden der Vielzahl von Core-Switches, die auf die festgelegte Vielzahl von Routen reagieren, programmieren kann.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die hier dargestellten Abbildungen dienen ausschliesslich Illustrierungszwecken. Es versteht sich, dass mehrere Aspekte der beschriebenen Ausführungsformen in einigen Beispielen als übertrieben oder ausgeweitet aufgezeigt werden, um das Verständnis der beschriebenen Ausführungsformen zu vereinfachen. In den Zeichnungen beziehen sich gleiche Referenzzeichen allgemein auf gleiche Merkmale, funktionell und / oder strukturell vergleichbare Elemente in den verschiedenen Zeichnungen. Die Zeichnungen sind nicht unbedingt massstabsgerecht, stattdessen stehen die Prinzipien der Lehren im Vordergrund. Die Zeichnungen sollen den Geltungsbereich der vorliegenden Lehren in keiner Weise beschränken. Das System und das Verfahren können aus der folgenden veranschaulichenden Beschreibung mit Bezug auf die folgenden Zeichnungen besser verstanden werden:
-
1 veranschaulicht ein exemplarisches Datencenter-Netzwerk.
-
2 veranschaulicht ein Flussdiagramm eines Verfahrens zur Steuerung von Netzwerkrouten mithilfe des in 1 dargestellten Netzwerkcontrollers.
-
3 veranschaulicht ein Flussdiagramm eines Verfahrens zur Steuerung des Daten-Routings mithilfe des in 1 dargestellten Netzwerkcontrollers.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die unterschiedlichen, oben vorgestellten und nachfolgend im Detail besprochenen Konzepte können auf vielfältige Weise implementiert werden, da diese Konzepte nicht auf eine spezielle Implementierungsweise beschränkt sind. Beispiele für bestimmte Ausführungen und Anwendungen werden vor allem zum Zweck der Veranschaulichung gegeben.
-
In Datencentern kann die Leistung einer Anwendung nachteilig beeinflusst werden, wenn das Netzwerk die Daten nicht auf eine Art und Weise transferieren kann, die den Netzwerkanforderungen der Anwendung entspricht. Das Problem wird noch verschärft, wenn unterschiedliche Anwendungen mit unterschiedlichen Arten der Netzwerkanforderungen alle innerhalb desselben Datencenters ausgeführt werden.
-
Als Übersicht stellt die vorliegende Offenlegung ein System zur Netzwerkoptimierung vor. Insbesondere wird in der Offenlegung ein einheitliches System zur Steuerung des Daten-Routings in einem dynamischen Netzwerk besprochen. In manchen Ausführungsformen sind Edgegeräte (z. B. Hosts oder externe Switches) über ein Netzwerk Fabric (z. B. Vielzahl von internen Switches) untereinander verbunden. Die Hosts und Switches verfügen über Weiterleitungsmodule, die das nächste Ziel des eingehenden Datenverkehrs bestimmen.
-
1 veranschaulicht ein exemplarisches Datencenter-Netzwerk 100. Das Datencenter-Netzwerk 100 beinhaltet einen logisch zentralisierten Controller 190. Datencenter-Netzwerk 100 beinhaltet ausserdem eine Vielzahl von Core-Switches 101, jedes davon enthält ein Weiterleitungsmodul 107. Das Netzwerk 100 beinhaltet des Weiteren eine Vielzahl von Netzwerk-Edgegeräten 102. Jedes der Netzwerk-Edgegeräte 102 ist mit einem Switch 104 gekoppelt. Jedes der Netzwerk-Edgegeräte 102 beinhaltet eine Vielzahl von Hosts 105, die eine oder mehrere Anwendungen 106 ausführen. Die Core-Switches 101 und Edgegeräte 102 sind durch eine Vielzahl von Datenverbindungen 103 miteinander verbunden. Die Core-Switches 101 und Edgegeräte 102 sind durch Verbindungen 110 mit dem Netzwerkcontroller 190 verbunden. In manchen Implementierung ist der Netzwerkcontroller 190 mit dem Netzwerkcontroller über eine oder mehrere Datenverbindungen 103 verbunden, und der Netzwerkcontroller 190 nutzt die Datenverbindung 103, um mit jedem der Core-Switches 101 und Edgegeräte 102 zu kommunizieren.
-
Das Netzwerk 100 beinhaltet eine Vielzahl von Core-Switches 101. In manchen Ausführungsformen beinhaltet das Netzwerk 100 Tausende, Zehntausende oder Hunderttausende Core-Switches 104. Die Core-Switches 101 sind Router, Switching Chips, Serversammlungen oder andere Geräte oder Geräteanordnungen, die in der Lage sind, Informationen von einem Port zum anderen zu übertragen. In manchen Ausführungsformen bilden Core-Switches 101 eine oder mehrere Aggregationsebenen im Netzwerk 100 und übertragen Daten zwischen der Vielzahl der Edgegeräte 102. Der Core-Switch 101c kann beispielsweise für die Übertragung von Daten vom Edgegerät 102a zum Edgegerät 102b verwendet werden.
-
Die Core-Switches 101 (und nachfolgend beschriebene Switches 104) beinhalten Weiterleitungsmodule 107. Die Weiterleitungsmodule 107 verarbeiten eingehende Datenpakete, um das nächste Ziel des Datenpakets bzw. eine Route für das Datenpaket zu bestimmen. Das Weiterleitungsmodul 107 extrahiert Adressinformationen aus dem Datenpaket (z. B. eine IP-Adresse oder andere Daten aus dem Paket-Header) und verarbeitet sie mithilfe spezieller Datenstrukturen und hier beschriebener Verfahren, um zu bestimmen, wie das Datenpaket gehandhabt werden soll (z. B. zu welchen Core-Switch 101 oder Edgegerät 102 das Datenpaket im nächsten Schritt weitergeleitet werden soll). In einigen Ausführungsformen verweist das Weiterleitungsmodul 107 auf eine Routing-Tabelle, eine FIB (Forwarding Information Base) oder vergleichbare Datenstruktur (nachfolgend allgemein als Daten-Routing-Struktur bezeichnet), in der Routing-Informationen gespeichert werden. In einigen Ausführungsformen identifiziert die Daten-Routing-Struktur eine Vielzahl von Routen, die so konfiguriert sind, dass sie auf die unterschiedlichen Anwendungsanforderungen 106 reagieren.
-
In einigen Ausführungsformen sind die Weiterleitungsmodule 107 als Spezialschaltungen implementiert (z. B. ein ASIC). In einigen Ausführungsformen sind die Weiterleitungsmodule 107 als ein Satz von computerausführbaren Befehlssätzen implementiert, die in einem Computerzugriffsspeicher gespeichert sind und von einem oder mehreren Rechenprozessoren ausgeführt werden.
-
Das Netzwerk 100 beinhaltet ausserdem eine Vielzahl von Edgegeräten 102. Jedes der Edgegeräte 102 beinhaltet einen Switch 104 und eine Vielzahl von Hosts 105, die eine oder mehrere Anwendungen 106 ausführen. Die Hosts 105 dieses Edgegerätes 102 sind über den Switch 104 miteinander verbunden.
-
Jedes der Edgegeräte 102 umfasst eine Anzahl (n) von Hosts 105. Die Hosts 105 sind Server oder andere Computersysteme, wie die nachfolgend beschriebenen Computersysteme. In einigen Ausführungsformen sind die Hosts 105 des besagten Edgegerätes 102 in Serverracks angeordnet, und jeder der Serverracks kommuniziert mit den Core-Switches 101 über den Switch 104. In einigen Ausführungsformen ist eine Vielzahl von Edgegeräten 102 zusammengruppiert, um einen Edgegeräte-Superblock 102 zu bilden. In einigen Ausführungsformen sind die Edgegeräte 102 in einem Superblock jeweils mit demselben Aggregationsebenengerät (z. B. Core-Switch 101) verknüpft.
-
Jeder der Hosts 105 führt eine oder mehrere Anwendungen 106 aus. Die Anwendungen 106 sind Sammlungen von prozessorausführbaren Befehlen, die auf einem computerlesbaren Medium gespeichert sind. Die Anwendungen 106 können auch als Programme, Software, Softwareanwendungen, Skripts oder Code bezeichnet werden. Jede der Anwendungen 106 übertragen Daten über das Netzwerk 100 und haben Hardware- und Software bezogene Anforderungen. Die Anforderungen können Bandbreitenanforderungen, Latenzanforderungen oder spezielle Dienstanforderungen wie SSL, Lastenausgleich, spezifische Pfade über Zwischenknoten oder sonstige spezielle Dienste, die für die Datenverarbeitung erforderlich sein können. "Weiche" Anforderungen sind Netzwerkanforderungen, bei Erfüllung derer eine optimale Anwendungsleistung gewährleistet wird. Dementsprechend kann eine Anwendung 106 auch dann ausgeführt werden, wenn die weichen Anforderungen nicht erfüllt werden. "Harte" Anforderungen sind jedoch Netzwerkanforderungen, die erfüllt sein müssen, damit die Anwendung 106 ausgeführt werden kann. Ein Host 105 kann beispielsweise eine Kommunikationsanwendung ausführen, die einen niedriglatenten Datentransfer mit einem anderen Host 105 erfordert. In einigen Ausführungsformen ist der Switch 104 ein virtueller Switch und führt einen Host 105 wie eine Anwendung 106 aus.
-
Wie vorstehend beschrieben, übertragen Anwendungen 106 Daten über das Netzwerk 100. In einigen Ausführungsformen greifen die Anwendungen 106 auf Daten-Routing-Strukturen, die vom Netzwerkcontroller 190 zur Bestimmung einer Route für die durch sie generierten Datenpakete bereitgestellt werden. Die Daten-Routing-Struktur kann beispielsweise unterschiedliche Routen entsprechend unterschiedlichen Anforderungen, die Anwendungen 106 zu unterschiedlichen Zeiten haben, beinhalten. Wenn die Anwendung 106 Datenpakete generiert, stellt die Anwendung 106 das Datenpaket so zusammen, dass es ordnungsgemäss durch das Netzwerk über die Switches 101 und 104 transferiert wird. In einigen Ausführungsformen verschlüsseln die Anwendungen 106 die Routing-Informationen im Paket-Header. In einigen Ausführungsformen verwenden die Anwendungen 106 (oder andere Komponenten des Netzwerks 100) Quellrouting, dynamisches Quellrouting, Multiprotocol Label Switching (MPLS), Generic Routing Encapsulation (GRE), lockeres Quellrouting oder eine Kombination der genannten Verfahren, um Daten durch das Netzwerk 100 zu transferieren. Die Anwendung 106 kann beispielsweise Routing-Informationen in jedes ihrer Datenpakete mithilfe eines Satzes von MPLS-gestapelten statischen Labels oder verschachtelten GRE-Headern. Unter Verwendung von GRE bestimmt die Anwendung 106 beispielsweise beim Verweisen auf die Daten-Routing-Struktur eine geeignete Route für ihre Daten gemäss den aktuellen Anforderungen der Anwendung 106. Die Anwendung 106 kapselt die Routeninformationen dann in einer Vielzahl von verschachtelten Headern ein. Das Datenpaket wird danach durch den Switch 104 an den ersten Core-Switch 101 transferiert. Bei jedem Hop (z. B. Switch 101 entlang der Route) legt der empfangene Switch den nächsten eingekapselten Header frei, um den nächsten Hop zu identifizieren, bis das finale Ziel erreicht ist.
-
Jedes der Vielzahl von Edgegeräten 102 beinhaltet auch einen Switch 104. In einigen Ausführungsformen sind die Switches 104 ToR-Switches (Top of Rack), die Daten intern innerhalb eines Edgegerätes 102 (z. B. zwischen der Vielzahl von Hosts 105 eines Edgegerätes 102) und extern an ein bestimmtes Edgegerät 102 (z. B. zu einem bestimmten Core-Switch 101) übertragen. In einigen Ausführungsformen sind die Switches 104 der Edgegeräte 102 Router, Switching Chips oder andere Geräte bzw. Geräteanordnungen, die in der Lage sind, Informationen von einem Port zu einem anderen zu übertragen. In einigen Ausführungsformen sind die Switches 104 der Edgegeräte 102 virtuelle Switches und die Core-Switches 101 sind physische Switches.
-
Das Netzwerk 100 beinhaltet ausserdem einen Netzwerkcontroller 190. Der Netzwerkcontroller 190 beinhaltet ein Nutzungsmodul 108 und ein Modul zur Routenprogrammierung 109. Die Komponenten des Netzwerkcontrollers 190 sind nachfolgend beschrieben. Im Allgemeinen erhöht der Netzwerkcontroller 190 die Nutzung des Netzwerks 100 durch die Anwendungen, indem er die Switches 101 und die Edgegeräte 102 mit einer einzelnen, einheitlichen API so programmiert, dass sie den Datentransfer gemäss den Anwendungsanforderungen ausführen. In einigen Ausführungsformen reduziert der Netzwerkcontroller 190 die Komplexität der Datencenter-Netzwerkkonfigurationen. Anstatt bestimmte Netzwerkbereiche zu spezifizieren, um beispielsweise die Anwendungsanforderungen zu erfüllen und dann neue Hosts, die auf die von ihnen ausgeführten Anwendungen reagieren, im neuen Netzwerk zu platzieren, können Hosts zu einem Netzwerk hinzugefügt werden, das nicht speziell für die Erfüllung ihrer Anwendungsanforderungen bereitgestellt wurde. Die spezifischen Anwendungsanforderungen können dann durch den Netzwerkcontroller erfüllt werden, der bestimmte Routen für jede der Anwendungsanforderungen konfiguriert.
-
Die Komponenten des Netzwerkcontrollers 190 können durch eine spezielle Logikschaltung (z. B. FPGA (Field Programmable Gate Array), eine ASIC (anwendungsspezifische integrierte Schaltung)) oder ein allgemeines Computergerät implementiert werden.
-
In einigen Ausführungsformen beinhaltet das Netzwerk 100 eine Vielzahl von Netzwerkcontrollern 190. Wenn ein Netzwerk 100 eine Vielzahl von Netzwerkcontrollern 190 umfasst, kann jeder der Vielzahl von Netzwerkcontrollern 190 nur einen Teil des Netzwerks 100 steuern. Jeder Netzwerkcontroller 190 kann beispielsweise die Routen für die Edgegeräte 102 eines spezifischen Superblocks generieren. Wenn Daten, wie in diesem Beispiel, zum Zielhost innerhalb eines zweiten Superblocks übertragen werden sollen, stellt der Netzwerkcontroller eine Route zum zweiten Superblock bereit, und sobald die Daten den zweiten Superblock erreicht haben, liefert ein zweiter Netzwerkcontroller die Route zum Zielhost.
-
Der Netzwerkcontroller 190 beinhaltet ein Nutzungsmodul 108 und ein Modul zur Routenprogrammierung 109. Das Nutzungsmodul 108 ruft regelmässig ab (oder sendet) die "harten" und "weichen" Anforderungen jeder der Anwendungen 106, die im Netzwerk 100 ausgeführt werden. In einigen Ausführungsformen ist das Nutzungsmodul 108 eine Komponente des Netzwerkcontrollers 190, und in anderen Ausführungsformen ist das Nutzungsmodul 108 vom Netzwerkcontroller 190 separat aufgestellt. In einigen Ausführungsformen beinhaltet das Nutzungsmodul 108 eine API, die eine Schnittstelle zwischen den Anwendungen 106 und dem Nutzungsmodul 108 bildet. In einigen Ausführungsformen liefert das Nutzungsmodul 108 Feedback an die Anwendungen 106 im Bezug auf die Nutzung des Netzwerks. Das Nutzungsmodul 108 kann beispielsweise einen Host 105 informieren, wenn das Netzwerk 100 über ausreichende Ressourcen hat, um die harten und / oder die weichen Anforderungen einer Anwendung 106, die der Host 105 ausführen möchte, verfügt. Um weiter in diesem Beispiel zu bleiben, eine andere Anwendung, die grosse Mengen an Bandbreite erfordert, um ordnungsgemäss zu funktionieren, wird ausgeführt. Das Nutzungsmodul 108 überwacht das Netzwerk und benachrichtigt den Host 105 (oder die erste Anwendung), wenn ausreichend Bandbreite im Netzwerk 100 für die korrekte Ausführung der ersten Anwendung verfügbar ist. In einigen Ausführungsformen erfasst das Nutzungsmodul 108 ausserdem Informationen zum Netzwerk 100. Das Nutzungsmodul 108 kann beispielsweise Informationen zu den Core-Switches 101, Edgegeräten 102 und Links, die online oder offline gehen, sammeln.
-
Der Netzwerkcontroller beinhaltet ausserdem ein Modul zur Routenprogrammierung 109. Wie vorstehend beschrieben, programmiert das Modul zur Routenprogrammierung 109 mithilfe einer einzelnen, einheitlichen API die Daten-Routing-Strukturen und die Weiterleitungsmodule 107 des Netzwerks 100. In einigen Ausführungsformen ist das Modul zur Routenprogrammierung 109 eine Spezialschaltung (z. B. eine ASIC), und in anderen Ausführungsformen ist das Modul zur Routenprogrammierung 109 als ein Satz von computerausführbaren Befehlssätzen implementiert, die in einem Computerzugriffsspeicher gespeichert sind und von einem oder mehreren Rechenprozessoren ausgeführt werden. Das Modul zur Routenprogrammierung 109 programmiert die Daten-Routing-Strukturen jedes Switches 101 und 104 mithilfe derselben Programmierschnittstelle (API) oder eines Protokolls wie unter anderem OpenFLow, Open vSwitch Database Management Protocol (OVSDB), Network Configuration Protocol (NETCONF), Cisco Location Identifier Separation Protocol (LISP) oder Border Gateway Protocol (BGP). Das Modul zur Routenprogrammierung 109 assimiliert die Nutzungsinformationen, die vom Nutzungsmodul 108 gesammelt wurden, um eine Vielzahl von Routen, die der Vielzahl von Anwendungsanforderungen entsprechen, zu generieren. Das Modul zur Routenprogrammierung 109 programmiert danach jeden der Switches 101 und Edgegeräte 102 des Netzwerks 100 mit der Vielzahl der generierten Routen. In einigen Ausführungsformen programmiert der Netzwerkcontroller 190 jedes Weiterleitungsmodul 107 mit einer Vielzahl von Daten-Routing-Strukturen, die von den Weiterleitungsmodulen verwenden werden, um auf die aktuellen Anwendungsanforderungen zu reagieren. Die Switches 104 sind beispielsweise mit einer ersten Daten-Routing-Struktur programmiert, die mit einem ersten Anforderungssatz (z. B. aktuelle und künftige Anwendungsanforderungen) verwendet werden, und einer zweiten Daten-Routing-Struktur, die mit einem zweiten Anforderungssatz verwendet werden Danach, gemäss den Anforderungen der Edgegeräte 102, wählen die Edgegeräte 102 bei der Übertragung eines spezifischen Datenpakets eine der Daten-Routing-Strukturen aus. In einigen Ausführungsformen werden eine oder mehrere Daten-Routing-Strukturen für einen einzelnen Switch in einer einzelnen Routing-Tabelle oder vergleichbaren Struktur gespeichert. In diesen Ausführungsformen verwendet das Weiterleitungsmodul 107 einen Hash oder eine andere Funktion, um die richtige Route oder den nächsten Hop für ein Datenpaket auszuwählen. Der Netzwerkcontroller 190 und seine Komponenten werden nachfolgend im Bezug auf die Verfahren, die in 2 und 3 veranschaulicht werden, beschrieben.
-
2 zeigt ein Flussdiagramm eines Verfahrens 200 für die Steuerung von Netzwerkrouten. Zunächst wird ein Netzwerk bereitgestellt (Schritt 201). Danach empfängt ein Netzwerkcontroller eine Anwendungsanforderung (Schritt 202). Gemäss der empfangenen Anwendungsanforderung wird vom Netzwerkcontroller eine Route bestimmt (Schritt 203). Schliesslich werden die Switches des Netzwerks mit der Vielzahl von Routen programmiert (Schritt 204).
-
Wie vorstehend beschrieben und im Bezug auf 1 wird ein Netzwerk bereitgestellt (Schritt 201). Wie in 1 veranschaulicht, beinhaltet ein Netzwerk eine Vielzahl von untereinander verbundenen Core-Switches 101 und Edgegeräten 102. Die Edgegeräte 102 führen eine oder mehrere Anwendungen 106 aus. Jede der Anwendungen 106 hat eine oder mehrere Anforderungen, darunter Bandbreiten- und Latenzanforderungen.
-
Zunächst empfängt ein Netzwerkcontroller mindestens eine Anwendungsanforderung (Schritt 202). Der Netzwerkcontroller kann über das Nutzungsmodul für die auf den Edgegeräten ausgeführten Anwendungen eine API bereitstellen, mit derer Hilfe die Anwendungen ihre Anwendungsanforderungen an den Netzwerkcontroller übermitteln können. In einigen Ausführungsformen übermitteln die Anwendungen ihre Anforderungen an das Nutzungsmodul im Wesentlichen in Echtzeit (z. B. wenn sich die Anforderungen der Anwendung verändern), und in anderen Ausführungsformen übermitteln die Anwendungen ihre Anforderungen an den Netzwerkcontroller während einer Initiierungsphase der Anwendung oder in vorbestimmten Intervallen. Die Anwendungsanforderungen enthalten aktuelle und künftige Anforderungen, darunter Kapazität, Bandbreite, Latenz und spezielle Dienste wie SSL.
-
Nach Empfang der Anforderungen bestimmt der Netzwerkcontroller eine Vielzahl von Routen (Schritt 203) und programmiert die Hosts und die Weiterleitungsmodule mit diesen Routen (Schritt 204). In dem Beispiel, in dem die Anwendungen ihre Anforderungen an den Netzwerkcontroller in Echtzeit übermitteln, müssen die Prozessdaten des ersten Edgegerätes an ein zweites Edgegerät transferiert werden. Das erste Edgegerät wird dem Netzwerkcontroller mitteilen, dass das erste Edgegerät in Kürze eine grössere Bandbreite benötigt, um diese Daten zu übermitteln. Dementsprechend bestimmt der Netzwerkcontroller neue Routen für das erste Edgegerät und programmiert das Edgegerät mit der aktualisierten Daten-Routing-Struktur, die Routen mit einer grösseren Bandbreite für das Edgegerät enthält.
-
3 veranschaulicht ein Flussdiagramm eines Verfahrens 300 für das Daten-Routing im Netzwerk. Zunächst übermittelt ein Edgegerät die erste Anwendungsanforderung und die zweite Anwendungsanforderung an einen Netzwerkcontroller (Schritt 301). Danach empfängt ein Edgegerät die erste Daten-Routing-Struktur und die zweite Daten-Routing-Struktur (Schritt 302). Dann bestimmt das Edgegerät die erste Route (Schritt 303). Das Edgegerät verschlüsselt das Datenpaket dann mit der ausgewählten Route (Schritt 304).
-
Wie vorstehend beschrieben, beinhaltet das Verfahren 300 die Übertragung der ersten und der zweiten Anwendungsanforderung an den Netzwerkcontroller (Schritt 301). Wie vorstehend beschrieben, beinhaltet jedes Edgegerät einen oder mehrere Hosts, die eine oder mehrere Anwendungen ausführen. Das Edgegerät übermittelt die Anforderungen der von ihm ausgeführten Anwendungen an den Netzwerkcontroller. Angenommen und wie in 1 dargestellt, führt der Host 105 (A) eine erste und eine zweite Anwendung aus. Angenommen, die erste Anwendung ist latenzempfindlich und die zweite Anwendung ist bandbreitenempfindlich (erfordert z. B. eine grosse Bandbreite). Der Host überträgt diese spezifische Bandbreiten- und Latenzanforderungen an den Netzwerkcontroller.
-
Danach empfängt das Edgegerät die erste und die zweite Daten-Routing-Struktur, die gemäss der ersten und der zweiten Anwendungsanforderung konfiguriert wurden (Schritt 302). Wie oben beschrieben, generiert der Netzwerkcontroller Daten-Routing-Strukturen, die unterschiedliche Routen gemäss den unterschiedlichen Anwendungsanforderungen enthalten. In einigen Ausführungsformen werden die Daten-Routing-Strukturen mit einem prognosebasierten Traffic-Algorithmus generiert. Der prognosebasierte Traffic-Algorithmus erfasst Leistungsinformationen aus dem Netzwerk und bestimmt Routen, die auf dem durchschnittlichen Datenverkehr im Netzwerk basieren. Die Leistungsinformationen können in einem relativ kurzen Zeitraum erfasst werden, um "online" adaptive Routen bereitzustellen, oder aber die Leistungsinformationen werden über einen langen Zeitraum hinaus erfasst, um "Offline"-Routen bereitzustellen, die auf historischen Durchschnittswerten für den Datenverkehrbedarf im Netzwerk basieren. In anderen Ausführungsformen werden die Daten-Routing-Strukturen mithilfe eines Oblivious Routing-Algorithmus generiert, bei dem der Netzwerkcontroller die Routing-Strukturen nur anhand des Quell- und Zielknotens generiert. In weiteren Ausführungsformen werden Daten-Routing-Strukturen mithilfe eines Hybrids aus Adaptives Routing- und Oblivious Routing-Algorithmen generiert. Während der Zeiträume mit geringer Datenverkehrsnachfrage können beispielsweise Oblivious Routing-Algorithmen zur Generierung von Daten-Routing-Strukturen verwendet werden, und bei erhöhter Nachfrage dementsprechend die Adaptives Routing-Algorithmen. Der Netzwerkcontroller liefert an das Edgegerät eine Daten-Routing-Struktur, die dedizierte Routen für Daten enthält, die nur eine geringe Latenz erfordern. In einigen Ausführungsformen, um die Netzwerkeffizienz zu erhöhen, sammelt der Netzwerkcontroller Anwendungsanforderungen von so gut wie allen Edgegeräten (und den darauf ausgeführten Anwendungen), bevor er die Switches und die Edgegeräte des Netzwerks mit einer Vielzahl von Daten-Routing-Strukturen programmiert. Der Netzwerkcontroller kann beispielsweise auf den Empfang aller Anwendungsanforderungen warten, sodass er keine Daten-Routing-Strukturen mit kollidierenden Routen (z. B. das erste Edgegerät erfordert eine grosse Bandbreite und muss Daten übertragen über eine Verbindung, die er mit einem zweiten Edgegerät teilt, das wiederum eine latenzempfindliche Anwendung ausführt).
-
Dann bestimmt das Edgegerät die erste Route (Schritt 303). Wie vorstehend beschrieben, kann das Hostgerät jedes Edgegerätes eine Vielzahl von Anwendungen ausführen, wobei jede der Anwendungen unterschiedliche Anforderungen aufweist. Die Anwendung bezieht sich auf die Daten-Routing-Struktur und wählt die erste Route aus, die den Anwendungsanforderungen entspricht. Um das Beispiel von vorhin aufzugreifen, bei dem der Host 105(A) eine erste, latenzempfindliche Anwendung und eine zweite, bandbreitenempfindliche Anwendung ausführt, bezieht sich die zweite Anwendung auf die Daten-Routing-Struktur, um die Route für Anwendungen mit bandbreitenempfindlichen Anforderungen zu bestimmen. Bezugnehmend auf 1 und um das Beispiel fortzusetzen, wenn der Host 105(a) eine erste, latenzempfindliche und eine zweite, bandbreitenempfindliche Anwendung ausführt, kann der Netzwerkcontroller den Switch 104(A) mit vier Daten-Routing-Strukturen programmieren. Die vier Daten-Routing-Strukturen können Folgendes umfassen: (1) Eine Route, bei der das Datenpaket der ersten Anwendung mit dem Ziel Host 105(B) den Core-Switch 101(D) verwendet; (2) eine Route, bei der das Datenpaket der ersten Anwendung mit dem Ziel Host 105(C) den Core-Switch 101(E) verwendet; (3) eine Route, bei der das Datenpaket der zweiten Anwendung mit dem Ziel Host 105(B) den Core-Switch 101(D) und den Core-Switch 101(G) verwendet; (4) eine Route, bei der das Datenpaket der zweiten Anwendung mit dem Ziel Host 105(C) den Core-Switch 101(D) und Core-Switch 101(G) verwendet. In diesem Beispiel wählt die Anwendung die Route (3) aus, um die bandbreitenempfindlichen Datenpakete vom Host 105a zum Host 105b zu transferieren. In einigen Ausführungsformen indiziert die ausgewählte Route auf einen vollständigen Pfad durch das Netzwerk, oder im Falle eines lockeren Quellroutings nur die spezifischen Punkte entlang der Route.
-
Nach der Bestimmung der ersten Datenroute verschlüsselt die Anwendung das Datenpaket mit der ersten Route (Schritt 304). Wenn die Anwendung beispielsweise ein Datenpaket zusammenstellt, kann die Anwendung GRE verwenden, um die Route für das Datenpaket zu verschlüsseln. In diesem Beispiel erstellt die Anwendung ein Datenpaket mit einer Vielzahl von verschachtelten Headern. Nach der Ankunft bei jedem Switch entlang der Route entfernt der Switch die äussere Schicht, um das nächste Ziel des Datenpakets zu erfahren.
-
Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschliesslich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehreren von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Durchführung durch oder die Kontrolle des Betriebs des datenverarbeitenden Apparats kodiert werden.
-
Bei einem computerlesbaren Speichermedium kann es sich um ein computerlesbares Speichergerät, einen computerlesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Ausserdem ist ein computerlesbares Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann eine Quelle oder ein Bestimmungsort von Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Disks oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein. Ein computerlesbares Medium ist dementsprechend greifbar und nicht transitorisch.
-
Die in dieser Spezifikation beschriebenen Tätigkeiten können als Tätigkeiten implementiert werden, die von einem datenverarbeitenden Apparat mit Daten durchgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert werden oder von anderen Quellen entgegengenommen werden. Der Begriff „datenverarbeitender Apparat“ umfasst alle Arten von Apparaten, Geräten und Maschinen für die Verarbeitung von Daten, einschliesslich beispielsweise durch einen programmierbaren Prozessor, einen Computer, ein System auf einem oder mehreren Chips oder Kombinationen des Vorstehenden. Der Apparat kann logische Schaltungen mit einem Sonderzweck, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung) enthalten. Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Durchführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Durchführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen.
-
Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschliesslich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computern eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
-
Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, beinhalten beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Computer ein. Im Allgemeinen nimmt ein Prozessor Anweisungen und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Tätigkeiten gemäß Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehr Massenspeichergeräte für das Speichern von Daten, z.B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben.
-
Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte, in dieser Beschreibung im Kontext gesonderter Ausführungsformen der betreffenden Technologie beschriebene Merkmale können auch in Kombination in einer einzelnen Implementierung implementiert werden. Umgekehrt können verschiedene, im Kontext einer einzelnen Ausführungsform beschriebenen Merkmale auch in mehreren Ausführungsformen gesondert oder in einer geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
-
Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Anfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Des Weiteren sollte die Unterscheidung zwischen unterschiedlichen Systemen in den vorgehend beschriebenen Ausführungsformen nicht als eine notwendige Trennung für alle Ausführungsformen verstanden werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen in einem einzelnen Produkt oder in mehrere Produkte integriert werden können.
-
Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Diese und andere Ausführungsformen fallen in den Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge ausgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.