-
Hintergrund
-
Rechenvorrichtungen in einem softwaredefinierten Netz haben möglicherweise keine physischen Verbindungen, sind aber virtuell miteinander verbunden. Eine softwaredefinierte Vernetzung ermöglicht ein Verwalten von Netzen durch Abstraktion von Funktionalität auf niedrigerer Ebene. Eine Steuerebene in einem virtuellen Netz trifft normalerweise Entscheidungen darüber, wie Datenpakete des Netzverkehrs von einer virtuellen Quellmaschine in dem Netz zu einer virtuellen Zielmaschine geleitet werden. Eine Datenebene leitet den Netzverkehr an ausgewählte Ziele weiter. In einem softwaredefinierten Netz entkoppeln Verfahren der Netzvirtualisierung die Steuerebene eines Netzes von der Datenebene. Daher haben virtuelle Netze typischerweise Adressräume, die wenig Ähnlichkeit mit der Topologie des zugrundeliegenden physischen Netzes haben, was bedeutet, dass herkömmliche Techniken zum Skalieren von Netzen nicht für virtuelle Netze funktionieren. Folglich kann das Leiten von Netzverkehr durch große virtuelle Netze unter Verwendung herkömmlicher Netzverkehrs-Routingmodelle problematisch sein.
-
Durch das Gebrauchsmuster und den Gegenstand des Gebrauchsmusters sollen gemäß den Anforderungen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren geschützt werden. Wenn in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich zur Veranschaulichung der Vorrichtung oder Vorrichtungen, für die mit den beigefügten Ansprüchen Schutz angestrebt wird.
-
Zusammenfassung
-
Diese Patentschrift beschreibt Technologien, die sich auf das Routing von virtuellem Netzverkehr im Allgemeinen und insbesondere auf Systeme und Verfahren zum Skalieren virtueller Netze durch Verwenden von virtuellen Routern und zum Auslagern von Flüssen zum Leiten von Netzverkehr beziehen.
-
Eine beispielhafte Implementierung verwendet virtuelle Router und dynamisches Auslagern, um Pakete durch Netze zu leiten. Die beispielhafte Implementierung ist vorteilhaft, weil sie die Programmierlatenz, die die Zeit ist, die benötigt wird, um Änderungen in einem virtuellen Netz zu programmieren, und die Skalierbarkeit von virtuellen Netzen verbessert. Die Effizienz, Latenz und/oder Kapazität des virtuellen Netzes kann dadurch verbessert werden.
-
Die Einzelheiten einer oder mehrerer Ausführungsformen der Erfindung sind in den begleitenden Zeichnungen, die nur zur Veranschaulichung präsentiert werden, und der nachfolgenden Beschreibung dargelegt. Weitere Merkmale, Aspekte und Vorteile der Erfindung ergeben sich aus der Beschreibung, den Zeichnungen und den Ansprüchen. Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente.
-
Kurzbeschreibung der Zeichnungen
-
1 zeigt eine Konfiguration eines virtuellen Netzes.
-
2 zeigt eine Konfiguration eines beispielhaften virtuellen Netzes.
-
3 zeigt eine Konfiguration eines beispielhaften virtuellen Netzes in mehreren Clustern.
-
4 ist ein Ablaufdiagramm eines beispielhaften Verfahrens zum dynamischen Auslagern von Netzverkehrsflüssen in einem virtuellen Netz.
-
Genaue Beschreibung
-
1 zeigt eine Konfiguration eines virtuellen Netzes. Ein virtuelles Netz ist eine Abstraktion auf einem physischen Netz, das aus mehreren virtuellen Maschinen besteht, die auf mehreren Hostmaschinen ausgeführt werden. Die Hostmaschinen sind über ein physisches Netz verbunden, das aus oben auf Racks angebrachten Switches, Routern und anderen Netzeinheiten besteht.
-
In 1 befinden sich virtuelle Maschinen A und D auf verschiedenen Hostmaschinen (Host_1 und Host_3). Virtuelle Maschinen können auf verschiedenen Hostmaschinen in einem oder mehreren Clustern existieren. 1 zeigt direkte Routen zwischen Hostmaschinen, die Punkt-zu-Punkt-Tunnel sind. Wie in dieser Beschreibung verwendet ist eine direkte Route eine Route zwischen zwei Hostmaschinen, die kein Routing durch einen oder mehrere virtuelle Router umfasst. Diese Tunnel können ein Tunnelprotokoll wie z. B. die generische Routing-Einkapselung (GRE) verwenden, bei der es sich um ein Tunnelprotokoll handelt, das eine Vielzahl von Netzschichtprotokollen innerhalb virtueller Punkt-zu-Punkt-Verbindungen über ein Internetprotokollnetz einkapseln kann. Punkt-zu-Punkt-Tunnel zwischen Hostmaschinen ermöglichen es virtuellen Maschinen in demselben Netz, miteinander zu kommunizieren. Zum Beispiel verbindet eine direkte Route 101 Host_1 und Host_5. In diesem Beispiel ermöglicht es die direkte Route 101 den virtuellen Maschinen A und B, mit der virtuellen Maschine F zu kommunizieren. Im Allgemeinen gibt es keine direkte physische Verbindung zwischen zwei Hosts, so dass Pakete zwischen den zwei Hosts mindestens einen Zwischenswitch durchlaufen.
-
Jede Maschine, die eine virtuelle Maschine in dem Netz hostet, weist einen programmierbaren Softwareswitch 110, 112, 113, 114 und 115 auf. Eine Steuerebene (102) in dem Netz kann Routung-Flüsse auf diesen Switches 110, 112, 113 installieren 114 und 115. Jeder Routing-Fluss definiert, wie Netzverkehr zwischen zwei virtuellen Maschinen im Netz geleitet werden soll, indem ein spezifischer Weg für Netzpakete bereitgestellt wird, der zu durchlaufen ist, damit Datenpakete von einer virtuellen Quellmaschine an eine virtuelle Zielmaschine gesendet werden können.
-
Zum Beispiel Host_2 in 1 hat eine IP-Adresse 10.0.0.2 in dem physischen Netz und Host_3 eine IP-Adresse 10.0.0.3. Die virtuelle Maschine C hat eine virtuelle IP-Adresse 10.240.3.3 und die virtuelle Maschine D hat eine virtuelle IP-Adresse 10.240.4.4 innerhalb desselben virtuellen Netzes.
-
Wenn die virtuelle Maschine C ein Paket an die virtuelle Maschine D senden muss, ist es der direkteste Weg für den Switch (112), das Paket weiterzuleiten, indem die virtuelle Maschine C das Paket unter Verwendung einer generischen Routing-Einkapselung einkapselt und das Paket an die physische IP-Adresse 10.0.0.3 von Host_3 sendet. Der Weg von Host_2 zu Host_3 kann mehrere physische Netzverbindungen durchlaufen, stellt jedoch einen direkten virtuellen Weg von Host_2 zu Host_3 dar.
-
Wenn jedoch Host_2, der die virtuelle Maschine C hostet, den Host, der die virtuelle Maschine D hostet, nicht kennt, kann Host_2 stattdessen das Paket über potentiell mehrere physische Verbindungen an einen virtuellen Router senden. Der virtuelle Router wäre für die Weiterleitung verantwortlich. Dieses Durchlaufen eines virtuellen Routers ist kein direkter virtueller Weg.
-
2 zeigt eine Konfiguration eines beispielhaften Netzes. In einem beispielhaften Modell für ein virtuelles Netz ist mindestens ein virtueller Router (201) installiert, um es virtuellen Netzen zu ermöglichen, Netzverkehrspakete durch die Netze zu leiten. Virtuelle Router laufen auf dedizierter Hardware und verhalten sich ähnlich wie Router für physische Netze. Virtuelle Maschinen müssen nicht direkt mit einem virtuellen Router verbunden sein, sondern können Pakete unter Verwendung eines Standard-Routingflusses, der von der Steuerebene bereitgestellt wird, an einen virtuellen Router weiterleiten.
-
Dieses virtuelle Netzmodell unterstützt eine Mandantenfähigkeit, was bedeutet, dass virtuelle Router und Hosts von mehreren Kunden gemeinsam genutzt werden, die virtuelle Maschinen in verschiedenen virtuellen Netzen ausführen. Zum Beispiel können zehn virtuelle Router in einem physischen Cluster vorhanden sein und dieser Cluster kann Tausende von Hosts und Tausende von virtuellen Netzen aufweisen.
-
Routingentscheidungen für Routingflüsse werden von dem hostinternen Switch getroffen. Wenn der Switch die physische IP-Adresse kennt, die die virtuelle Zielmaschine für ein bestimmtes Paket hostet, sendet der Switch das Paket über einen GRE-Tunnel an den Zielhost. Andernfalls sendet der Switch das Paket über einen GRE-Tunnel an einen virtuellen Router. Durch das Senden von Netzverkehr über einen virtuellen Router benötigen die virtuellen Maschinen in dem Netz jeweils keine vollständige Routingtabelle oder keine direkte Route zu jeder anderen virtuellen Maschine in dem Netz.
-
Beim Hochfahren kommuniziert jeder virtuelle Router mit der Steuerebene (200) des virtuellen Netzes, um der Steuerebene mitzuteilen, dass der Router bereit ist, Netzverkehr zu bedienen. Die Steuerebene führt eine Liste von virtuellen Routern in dem virtuellen Netz und von Informationen über jeden Router, die den Standort und den Zustand des virtuellen Routers enthalten. Darüber hinaus kann die Steuerebene eine vollständige Konfiguration des virtuellen Netzes an jeden virtuellen Router senden. Jeder virtuelle Router kann möglicherweise Netzverkehrspakete von einer beliebigen virtuellen Quellmaschine an eine beliebige virtuelle Zielmaschine in dem Netz weiterleiten.
-
In dem beispielhaften virtuellen Netz weist jede virtuelle Maschine A–E einen Standard-Routingfluss (202) durch mindestens einen virtuellen Router (201) auf. Dieser Standard-Routingfluss kann für jede Hostmaschine, die eine virtuelle Maschine in dem Netz hostet, durch die Steuerebene bereitgestellt werden. Zusätzlich oder alternativ kann jeder Host einen virtuellen Router (201), zu dem der Host Pakete leitet, aus der Liste der virtuellen Router, die von der Steuerebene (200) verwaltet werden, basierend auf Eigenschaften der Pakete, die geleitet werden müssen, und des einen oder der mehreren Flussschlüssel des virtuellen Routers, die den Netzverkehr definieren, zu dessen Behandlung der virtuelle Router programmiert ist, auswählen.
-
3 zeigt eine Konfiguration eines beispielhaften Netzes mit mehreren Clustern. Ein Cluster ist eine Sammlung physischer Maschinen, die durch ein Hochgeschwindigkeitsnetz verbunden sind und sich typischerweise in einem einzigen Gebäude befinden. Netzlatenzen innerhalb eines Clusters sind viel besser als über Cluster hinweg. In einem Beispielnetz kann eine virtuelle Quellmaschine Netzverkehr von der virtuellen Quellmaschine an virtuelle Zielmaschinen in dem Netz, die in verschiedenen Clustern vorliegen, senden. Zum Beispiel kann die virtuelle Quellmaschine A Netzpakete haben, die für die virtuelle Maschine D bestimmt sind, die sich in einem anderen Cluster befindet als die virtuelle Maschine A. Um Netzverkehr von der virtuellen Maschine A zu der virtuellen Maschine D zu übertragen, sendet die virtuelle Maschine A zuerst Netzverkehr an einen virtuellen Router (301) in dem lokalen Cluster (303) der virtuellen Quellmaschine. Der virtuelle Router (303) des Quellclusters sendet dann den Netzverkehr an einen virtuellen Router (302) in dem Zielcluster (304). Der virtuelle Router des Zielclusters (302) sendet dann den Netzverkehr an die virtuelle Zielmaschine D.
-
In einem beispielhaften Netz kann ein Lastausgleich bezüglich der Last durch virtuelle Router durch die Hosts durchgeführt werden. Wenn beispielsweise drei virtuelle Router vorhanden sind, versucht ein Host möglicherweise, den Datenverkehr gleichmäßig auf sie zu verteilen. Um den Datenverkehr aufzuteilen, wendet der Host möglicherweise eine Hashfunktion auf einen n-Tupel-Flussschlüssel, der einen Fluss definiert, an und verwendet den Hash, um einen Router-Lastausgleich auf virtuellen Routern durch zustandslosen 5-Tupel-Lastausgleich mit gleichem Gewicht zu wählen. Jeder n-Tupel-Flussschlüssel kann beispielsweise die Form eines 3-Tupel-Flussschlüssels, der durch <Quell-IP-Adresse, Ziel-IP-Adresse, IP-Protokoll> definiert ist, oder eines 5-Tupel-Flussschlüssels, der durch <Quell-IP-Adresse, Ziel-IP-Adresse, IP-Protokoll, Quelltransportport, Zieltransportport> definiert ist, haben. Um einen Lastausgleich eines Flusses zu bestimmen, kann ein Host ein Hashfunktion auf den Flussschlüssel eines Pakets anwenden. Wenn der Hash innerhalb des ersten Drittels des Hash-Bereichs liegt, kann das Paket an den ersten Router gesendet werden. Wenn der Hash innerhalb des zweiten Drittels des Hashbereichs liegt, kann das Paket an den zweiten Router gesendet werden, und so weiter.
-
In einigen Implementierungen kann die Steuerebene den Switch auf jeder Hostmaschine programmieren, um nur bestimmte Arten von Netzverkehr an einen bestimmten virtuellen Router zu senden. Zum Beispiel können Pakete an ein spezifisches Zielnetzpräfix zu einem spezifischen Router geleitet werden. In einem mandantenfähigen System kann der Verkehr von bestimmten Netzen zu bestimmten Routern geleitet werden. In diesen Fällen muss ein virtueller Router nur bestimmten Netzverkehr bewältigen. In einigen Implementierungen können Pakete an einen bestimmten Ziel-IP-Bereich ein fortgeschrittenes Routing-Merkmal verwenden, das der virtuelle Router nicht unterstützt, und daher werden die Pakete nicht durch den virtuellen Router geleitet.
-
Ein Lastausgleich über mehrere Cluster hinweg kann bewältigt werden, indem der Netzverkehr auf virtuelle Maschinen in jedem Cluster aufgeteilt wird. Eine Route kann beispielsweise fünf Ziele haben: zwei virtuelle Maschinen in Cluster 1 und drei virtuelle Maschinen in Cluster 2. Wenn eine virtuelle Quellmaschine in Cluster 1 Netzverkehr sendet, der der Route entspricht, müssen die virtuellen Router in Cluster 1 2/5 des Verkehrs jeweils auf die virtuellen Maschinen in Cluster 1 und 3/5 auf die virtuellen Maschinen in Cluster 2 aufteilen. Nach dem Empfangen der Flüsse von den virtuellen Routern in Cluster 1 teilen die virtuellen Router in Cluster 2 die Flüsse gleichmäßig unter den drei virtuellen Maschinen in Cluster 2 auf.
-
In einigen Implementierungen überwachen Hosts von virtuellen Maschinen, virtuelle Router oder andere Netzeinheiten Netzverkehrsflüsse und melden Flussstatistiken an die Steuerebene. Diese Entitäten können Flussnutzungsinformationen für jeden Fluss von virtueller Maschine zu virtuellem Router sammeln. In jedem Meldeintervall können Entitäten, die Netzverkehrsflüsse überwachen, andere Informationen sammeln, die umfassen: den Quellswitch-Port, die virtuelle Ziel-IP-Adresse und die Anzahl der Bytes und Pakete in dem Meldeintervall. Jeder Fluss kann durch ein virtuelles IP-Paar der virtuellen Quellmaschine und des virtuellen Routers definiert sein. In einem Host kann der programmierbare Softwareswitch Flussnutzungsinformationen sammeln. Eine Netzeinheit wie etwa ein virtueller Router oder ein virtueller Host kann mit einer konfigurierbaren Bandbreitenschwelle, z. B. 20 kbps oder 100 kbps, programmiert werden.
-
Zusätzlich oder alternativ können die Flussnutzungsinformationen durch Stichproben (z. B. NetFlow oder sFlow) statt durch Sammeln exakter Paket- oder Byte-Zählungen abgeleitet werden. In einer Stichprobenimplementierung meldet ein Host oder Router einen bestimmten Bruchteil von Paketen, z. B. 1 von 10000, und die Entität, die die Stichprobe sammelt, kann die Flussbandbreite für jeden Fluss basierend auf der Anzahl der empfangenen Stichprobenwerte schätzen, um eine konfigurierbare Bandbreitenschwelle zu bestimmen.
-
Wie beschrieben kann die konfigurierbare Bandbreitenschwelle von einem Netzadministrator programmiert oder in dem virtuellen Netz erlernt werden. In einer Implementierung ist die konfigurierbare Schwelle statisch konfiguriert. In einer anderen Implementierung kann die Steuerebene die Schwelle basierend auf einer Anzahl von Faktoren wie etwa der Menge an Bandbreite, die durch die virtuellen Router geht, und der aktuellen Anzahl von Auslagerungsflüssen adaptiv einstellen.
-
Jede Netzeinheit, wie beispielsweise ein Host einer virtuellen Maschine oder ein virtueller Router, kann Flussnutzungsinformationen überwachen, um Netzverkehrsflüsse zu bestimmen, die diese konfigurierbare Bandbreitenschwelle überschreiten. Wenn ein Netzverkehrsfluss die konfigurierbare Bandbreitenschwelle überschreitet, wird der Netzverkehrsfluss als Fluss mit hoher Bandbreite betrachtet, und die Entität, die die Bestimmung durchgeführt hat, meldet den Fluss an die Steuerebene.
-
Die Steuerebene empfängt Flussstatistiken von Netzeinheiten und kann Flüsse von virtuellen Routern, die Auslagerungskriterien erfüllen, auslagern. Wenn ein Netzfluss Auslagerungskriterien erfüllt (die eine Auslagerungsregel definieren), programmiert die Steuerebene direkte Routen zwischen dem sendenden Host und dem Zielhost des Netzflusses.
-
Wie oben beschrieben zeigt 3 eine Konfiguration eines beispielhaften Netzes mit mehreren Clustern. Diese Figur zeigt ein beispielhaftes virtuelles Netz mit Flüssen durch einen virtuellen Router (301 und 302) und Flüssen durch eine direkte Route (310). Wenn die virtuelle Maschine A wie oben beschrieben Netzflussverkehr hat, der für die virtuelle Maschine D bestimmt ist, wird die virtuelle Maschine A den Netzflussverkehr an den virtuellen Router 301 senden. Der virtuelle Router 301 wird den Netzflussverkehr an den virtuellen Router 302 senden, der wiederum den Verkehr an die virtuelle Maschine D senden wird. Wenn die virtuelle Maschine A Netzflussverkehr hat, der für die virtuelle Maschine C bestimmt ist, gibt es zwei mögliche Routen, eine erste Route von der virtuellen Maschine A zu dem virtuellen Router 301 zu dem virtuellen Router 302 und dann zu der virtuellen Maschine C und eine zweite Route direkt von Host_1, der die virtuelle Maschine A hostet, zu Host_3, der die virtuelle Maschine C hostet. Die Steuerebene enthält die Routingtabelle für das Netz, die die Regeln für das Routing eines Pakets definiert. Die Regeln zum Senden von Netzverkehr von einer virtuellen Maschine an einen virtuellen Router haben eine niedrigere Priorität als die Regeln für die Weiterleitung von virtuellen Maschinen zu virtuellen Maschinen, d. h. die bei Bedarf erlernten Regeln für den direkten Datenfluss. Daher wird der Netzflussverkehr von der virtuellen Maschine A, der für die virtuelle Maschine C bestimmt ist, die abgeladene direkte Route zwischen virtueller Maschine und virtueller Maschine verwenden.
-
Flüsse, die bestimmte Auslagerungskriterien erfüllen, werden von virtuellen Routern abgeladen. In den meisten Fällen handelt es sich bei diesen Flüssen um Flüsse mit hoher Bandbreite, die als Flüsse bestimmt werden, die die konfigurierbare Bandbreitenschwelle erreichen oder überschreiten. Die Steuerebene kann jedoch die Entscheidung zum Auslagern eines Netzflusses basierend auf anderen Flussstatistiken dynamisch treffen (wie unten diskutiert).
-
4 ist ein Ablaufdiagramm eines beispielhaften Verfahrens zum dynamischen Auslagern von Netzverkehrsflüssen in einem virtuellen Netz. Eine virtuelle Quellmaschine kann Daten haben, die an eine virtuelle Zielmaschine gesendet werden sollen. In einem beispielhaften virtuellen Netz identifiziert eine Steuerebene einen virtuellen Router, durch den der Netzverkehr eines spezifischen Netzflusses von der virtuellen Quellmaschine zu der virtuellen Zielmaschine geleitet werden soll (410). Die Hostmaschine sendet dann den spezifischen Netzflussverkehr von der virtuellen Quellmaschine an den identifizierten virtuellen Router, der den spezifischen Netzflussverkehr an die virtuelle Zielmaschine weiterleitet. Die Hostmaschine überwacht die Flussstatistiken des spezifischen Netzflusses von der virtuellen Quellmaschine zu dem identifizierten virtuellen Router, um zu bestimmen, ob ein Fluss die konfigurierbare Bandbreitenschwelle überschreitet. Wenn der Fluss die konfigurierbare Bandbreitenschwelle überschreitet, meldet der Host den Fluss an die Steuerebene. Die Steuerebene empfängt Flussstatistiken über das virtuelle Netz, die Statistiken über den spezifischen Netzfluss enthalten (425).
-
Um zu bestimmen, ob ein Fluss ausgelagert werden sollte, bestimmt die Steuerebene, ob der Netzfluss eine Auslagerungsregel erfüllt (430). Die Steuerebene kann nur das Auslagern von Netzflüssen in Betracht ziehen, die bereits als Flüsse mit hoher Bandbreite bestimmt worden sind, bei denen wie oben beschrieben eine konfigurierbare Bandbreitenschwelle überschritten ist. Die Steuerebene berücksichtigt zudem mehrere Flussstatistiken in einer Auslagerungsregelbestimmung, die umfassen: der Bandbreite jedes Flusses, die gesammelte Bandbreite, die durch jeden virtuellen Router geht, und die Anzahl der bereits ausgelagerten Flüsse. Informationen über die Flussbandbreite können aus mehreren Quellen stammen, wie etwa von virtuellen Maschinen, Hosts, von einem Router auf dem physischen Host, auf dem sich die virtuelle Zielmaschine befindet, von einem Switch, von Netzüberwachungssystemen oder von den virtuellen Routern selbst.
-
Eine konfigurierbare Auslagerungsregel kann von einem Netzadministrator festgelegt oder von der Steuerebene basierend auf den Flussstatistiken dynamisch erlernt werden. Eine Steuerebene lagert die Flüsse aus, die die Kriterien einer gegebenen Auslagerungsregel erfüllen. Eine Auslagerungsregel könnte beispielsweise darin bestehen, dass ein Fluss ausgelagert wird, der 20 kbps überschreitet. Eine weitere Auslagerungsregel kann darin bestehen, dass ein Fluss ausgelagert wird, der 20 kbps überschreitet, sofern nicht bereits mehr als 20 Flüsse für den Quellhost des Flusses ausgelagert wurden. Eine zusätzliche Auslagerungsregel kann darin bestehen, dass ein Fluss mit hoher Bandbreite ausgelagert wird, wenn die gesammelte Bandbreite, die durch den virtuellen Router geht, den der Fluss mit hoher Bandbreite verwendet, eine konfigurierbare Bandbreitenschwelle für den virtuellen Router überschreitet.
-
Eine Auslagerungsregel kann durch die Steuerebene dynamisch auf der Basis von Faktoren bestimmt werden wie den folgenden: der gesammelten Bandbreite, die derzeit durch einen virtuellen Router geht, der Anzahl von bereits für den gegebenen Quellhost ausgelagerten Flüsse, der Gesamtzahl von ausgelagerten Flüssen in der Steuerebene und anderen Flussstatistiken.
-
In einigen Implementierungen kann eine Steuerebene direkte Routen vorprogrammieren. Zum Beispiel kann die Steuerebene direkte Routen für alle virtuellen Maschinen in demselben Unternetz programmieren, wenn das Unternetz ausreichend klein ist. In einem weiteren Beispiel kann die Steuerebene direkte Routen für alle virtuellen Maschinen in demselben Netz programmieren, wenn das Netz ausreichend klein ist.
-
Wie oben beschrieben, lagert die Steuerebene Flüsse, die Auslagerungsregeln erfüllen oder die vorprogrammiert sind, durch Installieren direkter Routen zwischen sendenden Hosts und Zielhosts aus. Sobald ein Netzfluss ausgelagert ist, wird der nachfolgende Datenverkehr des Netzes direkt von dem Host der virtuellen Quellmaschine zu dem Host der virtuellen Zielmaschine geleitet, ohne virtuelle Router zu durchlaufen.
-
Die Steuerebene kann aus verschiedenen Gründen, einschließlich der Bestimmung, dass der ausgelagerte Fluss nicht mehr benötigt wird, ausgelagerte Flüsse ablaufen lassen oder entfernen. Ein beispielhaftes System entfernt ausgelagerte Datenflüsse, wenn die virtuelle Quell- oder Zielmaschine des Datenflusses gelöscht worden ist. In einigen Netzen kann ein Auslagerungsfluss ungültig werden, wenn sich die Netzkonfiguration ändert. Flussnutzungsstatistiken können ebenfalls verwendet werden, um zu bestimmen, ob ein ausgelagerter Fluss abläuft oder entfernt wird. Wie oben beschrieben können Flussnutzungsstatistiken gesammelt oder stichprobenartig genommen werden, um die Nutzung jedes Flusses zu bestimmen. Ein ausgelagerter Fluss kann ablaufen/entfernt werden, wenn er eine vorbestimmte Zeitdauer lang ungenutzt war oder wenn die Nutzung für eine vorbestimmte Zeitdauer unter einer Schwellendauer lag.
-
Hostmaschinen müssen schnell Ausfälle von virtuellen Routern detektieren und darauf reagieren, um den Netzverkehr weiter leiten zu können. Um Ausfälle von virtuellen Routern zu bestimmen, kann der programmierbare Softwareswitch auf jedem Host eine Verbindung zu jedem virtuellen Router in seinem lokalen Cluster herstellen und Inline-Zustandsprüfungen verwenden, um Ausfälle zu detektieren. Flüsse über Cluster hinweg erfordern ein Senden von Netzverkehr an virtuelle Router von entfernten Clustern. Daher muss jeder virtuelle Router alle virtuellen Router von entfernten Clustern überprüfen. Um den Funktionszustand eines virtuellen Routers zu überprüfen, sendet jeder Host regelmäßig eine Nachricht an den Router. Der virtuelle Router antwortet mit einer bestätigenden oder negativen Antwort oder keiner Antwort, wenn der virtuelle Router vollständig ausgefallen ist. Die Steuerebene stellt eine vollständige Liste der verfügbaren virtuellen Router in dem Cluster bereit. Hosts verteilen Pakete auf Router, die gemäß den Ergebnissen der Funktionszustandsprüfungen als funktionsfähig bestimmt werden.
-
Obwohl Aspekte der Erfindung in Bezug auf virtuelle Quellmaschinen und virtuelle Zielmaschinen beschrieben worden sind, kann die Erfindung mit jedem virtuellen Netz oder aufgesetztem Netz verwendet werden, unabhängig davon, ob die Endpunkte eines Flusses in dem Netz virtuelle Maschinen sind. Zum Beispiel können die Endpunkte Prozesse sein, die nicht auf virtuellen Maschinen laufen, die miteinander mittels virtueller Internetprotokolladressen kommunizieren.
-
Ausführungsformen des Gegenstandes und die funktionellen Operationen, die in dieser Beschreibung beschrieben sind, können in einer digitalen elektronischen Schaltung, in einer konkret ausgeführten Computersoftware oder Firmware, in Computerhardware einschließlich der in dieser Beschreibung offenbarten Strukturen und deren struktureller Äquivalente oder in Kombinationen von einem oder mehreren von diesen implementiert werden. Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. ein oder mehrere Module von Computerprogrammbefehlen, die auf einem konkreten nichtflüchtigen Speichermedium zur Ausführung durch die oder zur Steuerung des Betriebs der Datenverarbeitungsvorrichtung codiert sind, implementiert werden. Das Computerspeichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Speichervorrichtung mit wahlfreiem oder seriellem Zugriff oder eine Kombination aus einem oder mehreren von diesen sein. Alternativ oder zusätzlich können die Programmbefehle auf einem künstlich erzeugten sich ausbreitenden Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal, codiert werden, das zum Codieren von Information zur Übertragung an eine geeignete Empfängervorrichtung zur Ausführung durch eine Datenverarbeitungsvorrichtung erzeugt wird.
-
Der Ausdruck "Datenverarbeitungsvorrichtung" bezieht sich auf Datenverarbeitungshardware und umfasst alle Arten von Vorrichtungen, Einrichtungen und Maschinen zum Verarbeiten von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Computers oder mehrerer Prozessoren oder Computer. Die Vorrichtung kann auch eine spezielle Logikschaltung sein oder eine solche enthalten, z. B. eine FPGA (feldprogrammierbare Gatteranordnung) oder eine ASIC (anwendungsspezifische integrierte Schaltung). Die Vorrichtung kann optional zusätzlich zu der Hardware Code enthalten, der eine Ausführungsumgebung für Computerprogramme erzeugt, z. B. Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbankverwaltungssystem, ein Betriebssystem oder eine Kombination aus einem oder mehreren von diesen bildet.
-
Ein Computerprogramm, das auch als Programm, Software, Softwareanwendung, App, Modul, Softwaremodul, Skript oder Code bezeichnet oder beschrieben werden kann, kann in einer beliebigen Form von Programmiersprache einschließlich kompilierter oder interpretierter Sprachen oder deklarativer oder prozeduraler Sprachen geschrieben sein; und es kann in jeder Form einschließlich als eigenständiges Programm oder als Modul, Komponente, Unterroutine oder andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist, eingesetzt werden. Ein Programm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei, die andere Programme oder Daten, z. B. ein oder mehrere in einem Markup-Sprachdokument gespeicherte Skripte, enthält, in einer einzelnen Datei für das fragliche Programm oder in mehreren koordinierten Dateien, z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Codeabschnitte speichern, gespeichert sein. Ein Computerprogramm kann zur Ausführung auf einem Computer oder auf mehreren Computern, die sich an einem Standort befinden oder über mehrere Standorte verteilt sind und durch ein Datenkommunikationsnetz miteinander verbunden sind, eingesetzt werden. Ein derartiges Computerprogramm, das dazu ausgelegt ist, ein beliebiges hierin beschriebenes Verfahren auszuführen, wenn es von einem Prozessor ausgeführt wird, wird ferner bereitgestellt.
-
Die Prozesse und Logikabläufe, die in dieser Beschreibung beschrieben sind, können von einem oder mehreren programmierbaren Computern ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen auszuführen, indem sie Instanzdaten verarbeiten und eine Ausgabe erzeugen. Die Prozesse und Logikabläufe können auch durch Logikschaltungen für spezielle Zwecke, z. B. eine FPGA oder eine ASIC, oder durch eine Kombination von Logikschaltungen für spezielle Zwecke und einem oder mehreren programmierten Computern durchgeführt werden.
-
Computer, die für die Ausführung eines Computerprogramms geeignet sind, können auf allgemeinen und/oder speziellen Mikroprozessoren oder auf irgendeiner anderen Art von zentraler Verarbeitungseinheit basieren. Im Allgemeinen empfängt eine zentrale Verarbeitungseinheit Befehle und Daten aus einem Nur-Lese-Speicher und/oder einem Direktzugriffsspeicher. Die wesentlichen Elemente eines Computers sind eine zentrale Verarbeitungseinheit zum Durchführen oder Ausführen von Befehlen und eine oder mehrere Speichervorrichtungen zum Speichern von Befehlen und Daten. Die zentrale Verarbeitungseinheit und der Speicher können durch spezielle Logikschaltungen ergänzt oder in diese integriert sein. Im Allgemeinen wird ein Computer auch eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, z. B. magnetische Platten, magnetooptische Platten oder optische Platten, enthalten oder betriebstechnisch mit diesen gekoppelt sein, um Daten von diesen zu empfangen oder an diese zu senden oder beides. Ein Computer muss jedoch keine solchen Vorrichtungen aufweisen. Darüber hinaus kann ein Computer in eine andere Vorrichtung eingebettet sein, z. B. ein Mobiltelefon, einen persönlichen digitalen Assistenten (PDA), einen mobilen Audio- oder Videoabspieler, eine Spielkonsole, einen Empfänger für das globale Positionsbestimmungssystem (GPS-Empfänger) oder eine tragbare Speichervorrichtung wie etwa ein USB-Flashlaufwerk, um nur einige zu nennen.
-
Computerlesbare Medien, die zum Speichern von Computerprogrammbefehlen und Daten geeignet sind, umfassen alle Formen von nichtflüchtigen Speichern, Medien und Speichervorrichtungen, einschließlich beispielsweise Halbleiterspeichervorrichtungen, z. B. EPROM-, EEPROM- und Flash-Speichervorrichtungen; Magnetplatten, z. B. interne Festplatten oder Wechselplatten; magnetooptische Platten; und CD-ROM- und DVD-ROM-Scheiben.
-
Um eine Interaktion mit einem Anwender bereitzustellen, können Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands auf einem Computer implementiert werden, der eine Anzeigevorrichtung, z. B. einen CRT-Monitor (eine Kathodenstrahlröhre) oder einen LCD-Monitor (Flüssigkristallanzeige), zum Anzeigen von Informationen für den Anwender und eine Tastatur und eine Zeigevorrichtung, z. B. eine Maus oder einen Trackball, durch die der Anwender eine Eingabe an den Computer liefern kann, enthalten. Es können auch andere Arten von Vorrichtungen verwendet werden, um Interaktionen mit einem Anwender bereitzustellen; beispielsweise kann eine Rückmeldung, die für den Anwender bereitgestellt wird, irgendeine Form von sensorischer Rückmeldung sein, z. B. eine visuelle Rückmeldung, akustische Rückmeldung oder taktile Rückmeldung; und die Eingabe von dem Anwender kann in irgendeiner Form einschließlich akustischer, sprachlicher oder taktiler Eingabe empfangen werden. Darüber hinaus kann ein Computer mit einem Anwender interagieren, indem er Dokumente an eine Vorrichtung sendet und von einer Vorrichtung empfängt, die von einem Anwender verwendet wird, und zwar z. B. durch Senden von Webseiten an einen Webbrowser auf der Vorrichtung eines Anwenders als Antwort auf von dem Webbrowser empfangene Anforderungen. Außerdem kann ein Computer mit einem Anwender interagieren, indem er Textnachrichten oder andere Formen von Nachrichten an eine persönliche Vorrichtung, z. B. ein Smartphone, das eine Nachrichtenvermittlungsanwendung ausführt, sendet und im Gegenzug Antwortnachrichten von dem Anwender empfängt.
-
Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können in einem Computersystem implementiert werden, das eine Backend-Komponente, z. B. als Datenserver, oder eine Middleware-Komponente, z. B. einen Anwendungsserver, oder eine Frontend-Komponente, z. B. einen Clientcomputer mit einer grafischen Anwenderoberfläche oder einem Webbrowser, über den ein Anwender mit einer Implementierung des in dieser Beschreibung beschriebenen Gegenstands interagieren kann, oder eine beliebige Kombination aus einer oder mehreren solchen Backend-, Middleware- oder Frontend-Komponenten enthält. Die Komponenten des Systems können über jede Form oder jedes Medium der digitalen Datenkommunikation, z. B. ein Kommunikationsnetz, miteinander verbunden sein. Beispiele von Kommunikationsnetzen umfassen ein lokales Netz (LAN) und ein Weitbereichsnetz (WAN), z. B. das Internet.
-
Das Computersystem kann Clients und Server enthalten. Ein Client und ein Server sind im Allgemeinen voneinander entfernt und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung von Client und Server entsteht durch Computerprogramme, die auf den jeweiligen Computern laufen und eine Client-Server-Beziehung zueinander haben. In einigen Ausführungsformen überträgt ein Server Daten, z. B. eine HTML-Seite, an eine Anwendervorrichtung, z. B. zum Anzeigen von Daten für und Empfangen von Anwendereingaben von einem Anwender, der mit der Vorrichtung interagiert, die als Client agiert. Daten, die in der Vorrichtung erzeugt werden, z. B. ein Ergebnis der Anwenderinteraktion, können auf dem Server von der Vorrichtung empfangen werden.
-
Ausführungsform 1 ist ein computerimplementiertes Verfahren, das umfasst:
Identifizieren eines virtuellen Routers, durch den der Netzverkehr eines spezifischen Netzflusses geleitet werden soll, wobei der spezifische Netzfluss einen Quellendpunkt, der auf einem Quellhostcomputer existiert, und einen Zielendpunkt, der auf einem Zielhostcomputer existiert, aufweist;
Empfangen von Flussstatistiken, die Statistiken über den spezifischen Netzfluss enthalten;
Bestimmen unter Verwendung der empfangenen Flussstatistiken, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt; und
Auslagern des spezifischen Netzflusses aus dem virtuellen Router als Antwort auf das Bestimmen, dass der spezifische Fluss die Auslagerungsregel erfüllt.
-
Ausführungsform 2 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei das Auslagern des spezifischen Netzflusses aus dem virtuellen Router ferner umfasst:
Schaffen einer direkten Route zwischen der Quellhostmaschine und der Zielhostmaschine, durch die der spezifische Netzfluss geleitet werden soll; und
Leiten von anschließendem Netzflussverkehr durch die direkte Route anstelle des virtuellen Routers.
-
Ausführungsform 3 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei der virtuelle Router basierend auf Eigenschaften des spezifischen Netzflusses und mindestens einem Flussschlüssel des virtuellen Routers, der Netzverkehr definiert, für dessen Handhabung der virtuelle Router programmiert ist, identifiziert wird.
-
Ausführungsform 4 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Vergleichen der spezifischen Netzflussbandbreite mit einer vordefinierten Bandbreite; und
Bestimmen, dass der spezifische Netzfluss einen Bandbreitennetzfluss überschreitet, wenn die spezifische Netzflussbandbreite größer als die vordefinierte Bandbreite ist.
-
Ausführungsform 5 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei das Empfangen von Flussstatistiken ein Empfangen von Statistiken bezüglich der Bandbreite des spezifischen Netzflusses umfasst.
-
Ausführungsform 6 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Bestimmen einer gesammelten Bandbreite, die durch den virtuellen Router fließt; und
Bestimmen, ob die Gesamtbandbreite eine Schwellenbandbreite für den virtuellen Router überschreitet.
-
Ausführungsform 7 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Bestimmen der Anzahl von Netzflüssen, die bereits für die Quellhostmaschine des spezifischen Netzflusses ausgelagert worden sind; und
Bestimmen, ob die Anzahl der ausgelagerten Netzflüsse einen Schwellenwert für die Quellhostmaschine überschreitet.
-
Die Ausführungsform 8 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei Flussstatistiken aus mindestens einer Quelle empfangen werden, wobei die mindestens eine Quelle ist: die virtuellen Quell- oder Zielmaschinen, die Quell- oder Zielhosts, ein Router auf dem Zielhost, ein programmierbarer Softwareswitch auf dem Quell- oder Zielhost, ein Netzüberwachungssystem oder der virtuelle Router.
-
Ausführungsform 9 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei sich die Quellhostmaschine in einem Quellcluster befindet und sich die Zielhostmaschine in einem Zielcluster, der sich von dem Quellcluster unterscheidet, befindet.
-
Ausführungsform 10 ist das computerimplementierte Verfahren nach Ausführungsform 9, wobei das Identifizieren eines virtuellen Routers, durch den Netzverkehr eines spezifischen Netzflusses geleitet werden soll, ein Identifizieren eines virtuellen Routers in dem Quellcluster und eines zweiten virtuellen Routers in dem Zielcluster umfasst.
-
Ausführungsform 11 ist das computerimplementierte Verfahren von Ausführungsform 1, wobei der spezifische Netzfluss mehrere virtuelle Zielmaschinen aufweist, die auf mehreren Zielhostmaschinen in mehreren Clustern existieren.
-
Ausführungsform 12 ist das computerimplementierte Verfahren von Ausführungsform 1, das ferner umfasst:
Beenden oder Entfernen des spezifischen Flusses als Antwort auf das Bestimmen, dass der spezifische Fluss für eine vorbestimmte Zeitdauer unbeschäftigt war.
-
Ausführungsform 13 ist das computerimplementierte Verfahren von Ausführungsform 1, das ferner umfasst:
Beenden oder Entfernen des spezifischen Flusses als Antwort auf das Bestimmen, dass die Nutzung des spezifischen Flusses für eine vorbestimmte Zeitdauer unterhalb eines Schwellenbetrags lag.
-
Ausführungsform 14 ist ein System, das enthält:
einen oder mehrere Computer; und
eine oder mehrere Speichervorrichtungen, die Befehle speichern, die, wenn sie von dem einen oder den mehreren Computern ausgeführt werden, betreibbar sind, um zu veranlassen, dass der eine oder die mehreren Computer Operationen ausführen, die umfassen:
Identifizieren eines virtuellen Routers, durch den ein Netzverkehr eines spezifischen Netzflusses geleitet werden soll, wobei der spezifische Netzfluss einen Quellendpunkt, der auf einem Quellhostcomputer existiert, und einen Zielendpunkt, der auf einem Zielhostcomputer existiert, aufweist;
Empfangen von Flussstatistiken, die Statistiken über den spezifischen Netzfluss enthalten;
Bestimmen unter Verwendung der empfangenen Flussstatistiken, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt; und
Auslagern des spezifischen Netzflusses aus dem virtuellen Router als Antwort auf das Bestimmen, dass der spezifische Fluss die Auslagerungsregel erfüllt.
-
Ausführungsform 15 ist das System von Ausführungsform 14, wobei das Auslagern des spezifischen Netzflusses aus dem virtuellen Router ferner umfasst:
Schaffen einer direkten Route zwischen der Quellhostmaschine und der Zielhostmaschine, durch die der spezifische Netzfluss geleitet werden soll; und
Leiten von anschließendem Netzflussverkehr durch die direkte Route anstelle des virtuellen Routers.
-
Ausführungsform 16 ist das System von Ausführungsform 14, wobei der virtuelle Router basierend auf Eigenschaften des spezifischen Netzflusses und mindestens einem Flussschlüssel des virtuellen Routers, der Netzverkehr definiert, für dessen Handhabung der virtuelle Router programmiert ist, identifiziert wird.
-
Ausführungsform 17 ist das System von Ausführungsform 14, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Vergleichen der spezifischen Netzflussbandbreite mit einer vordefinierten Bandbreite; und
Bestimmen, dass der spezifische Netzfluss einen Bandbreitennetzfluss überschreitet, wenn die spezifische Netzflussbandbreite größer als die vordefinierte Bandbreite ist.
-
Ausführungsform 18 ist das System von Ausführungsform 14, wobei das Empfangen von Flussstatistiken ein Empfangen von Statistiken bezüglich der Bandbreite des spezifischen Netzflusses umfasst.
-
Ausführungsform 19 ist das System von Ausführungsform 14, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Bestimmen einer gesammelten Bandbreite, die durch den virtuellen Router fließt; und
Bestimmen, ob die Gesamtbandbreite eine Schwellenbandbreite für den virtuellen Router überschreitet.
-
Ausführungsform 20 ist das System von Ausführungsform 14, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Bestimmen der Anzahl von Netzflüssen, die bereits für die Quellhostmaschine des spezifischen Netzflusses ausgelagert worden sind; und
Bestimmen, ob die Anzahl der ausgelagerten Netzflüsse einen Schwellenwert für die Quellhostmaschine überschreitet.
-
Ausführungsform 21 ist das System von Ausführungsform 14, wobei Flussstatistiken aus mindestens einer Quelle empfangen werden, wobei die mindestens eine Quelle ist: die virtuellen Quell- oder Zielmaschinen, die Quell- oder Zielhosts, ein Router auf dem Zielhost, ein programmierbarer Softwareswitch auf dem Quell- oder Zielhost, ein Netzüberwachungssystem oder der virtuelle Router.
-
Ausführungsform 22 ist das System von Ausführungsform 14, wobei sich die Quellhostmaschine in einem Quellcluster befindet und sich die Zielhostmaschine in einem Zielcluster, der sich von dem Quellcluster unterscheidet, befindet.
-
Ausführungsform 23 ist das System von Ausführungsform 22, wobei das Identifizieren eines virtuellen Routers, durch den Netzverkehr eines spezifischen Netzflusses geleitet werden soll, ein Identifizieren eines virtuellen Routers in dem Quellcluster und eines zweiten virtuellen Routers in dem Zielcluster umfasst.
-
Ausführungsform 24 ist das System von Ausführungsform 14, wobei der spezifische Netzfluss mehrere virtuelle Zielmaschinen aufweist, die auf mehreren Zielhostmaschinen in mehreren Clustern existieren.
-
Ausführungsform 25 ist das System von Ausführungsform 14, das ferner umfasst:
Beenden oder Entfernen des spezifischen Flusses als Antwort auf das Bestimmen, dass der spezifische Fluss für eine vorbestimmte Zeitdauer unbeschäftigt war.
-
Ausführungsform 26 ist das System von Ausführungsform 14, das ferner umfasst:
Beenden oder Entfernen des spezifischen Flusses als Antwort auf das Bestimmen, dass die Nutzung des spezifischen Flusses für eine vorbestimmte Zeitdauer unterhalb eines Schwellenbetrags lag.
-
Ausführungsform 27 ist ein nichttransitorisches computerlesbares Medium, das Software speichert, die Befehle enthält, die von einem oder mehreren Computern ausführbar sind und bei einer solchen Ausführung veranlassen, dass der eine oder die mehreren Computer Operationen ausführen, die umfassen:
Identifizieren eines virtuellen Routers, durch den der Netzverkehr eines spezifischen Netzflusses geleitet werden soll, wobei der spezifische Netzfluss einen Quellendpunkt, der auf einem Quellhostcomputer existiert, und einen Zielendpunkt, der auf einem Zielhostcomputer existiert, aufweist;
Empfangen von Flussstatistiken, die Statistiken über den spezifischen Netzfluss enthalten;
Bestimmen unter Verwendung der empfangenen Flussstatistiken, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt; und
Auslagern des spezifischen Netzflusses aus dem virtuellen Router als Antwort auf das Bestimmen, dass der spezifische Fluss die Auslagerungsregel erfüllt.
-
Ausführungsform 28 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, wobei das Auslagern des spezifischen Netzflusses aus dem virtuellen Router ferner umfasst:
Schaffen einer direkten Route zwischen der Quellhostmaschine und der Zielhostmaschine, durch die der spezifische Netzfluss geleitet werden soll; und
Leiten von anschließendem Netzflussverkehr durch die direkte Route anstelle des virtuellen Routers.
-
Ausführungsform 29 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, wobei der virtuelle Router basierend auf Eigenschaften des spezifischen Netzflusses und mindestens einem Flussschlüssel des virtuellen Routers, der Netzverkehr definiert, für dessen Handhabung der virtuelle Router programmiert ist, identifiziert wird.
-
Ausführungsform 30 ist das nicht transitorische computerlesbare Medium der Ausführungsform 27, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Vergleichen der spezifischen Netzflussbandbreite mit einer vordefinierten Bandbreite; und
Bestimmen, dass der spezifische Netzfluss einen Bandbreitennetzfluss überschreitet, wenn die spezifische Netzflussbandbreite größer als die vordefinierte Bandbreite ist.
-
Ausführungsform 31 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, wobei das Empfangen von Flussstatistiken ein Empfangen von Statistiken bezüglich der Bandbreite des spezifischen Netzflusses umfasst.
-
Ausführungsform 32 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Bestimmen einer gesammelten Bandbreite, die durch den virtuellen Router fließt; und
Bestimmen, ob die Gesamtbandbreite eine Schwellenbandbreite für den virtuellen Router überschreitet.
-
Ausführungsform 33 ist das nichtflüchtige computerlesbare Medium von Ausführungsform 27, wobei das Bestimmen, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt, umfasst:
Bestimmen der Anzahl von Netzflüssen, die bereits für die Quellhostmaschine des spezifischen Netzflusses ausgelagert worden sind; und
Bestimmen, ob die Anzahl der ausgelagerten Netzflüsse einen Schwellenwert für die Quellhostmaschine überschreitet.
-
Ausführungsform 34 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, wobei Flussstatistiken aus mindestens einer Quelle empfangen werden, wobei die mindestens eine Quelle ist: die virtuellen Quell- oder Zielmaschinen, die Quell- oder Zielhosts, ein Router auf dem Zielhost, ein programmierbarer Softwareswitch auf dem Quell- oder Zielhost, ein Netzüberwachungssystem oder der virtuelle Router.
-
Ausführungsform 35 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, wobei sich die Quellhostmaschine in einem Quellcluster befindet und sich die Zielhostmaschine in einem Zielcluster, der sich von dem Quellcluster unterscheidet, befindet.
-
Ausführungsform 36 ist das nichttransitorische computerlesbare Medium von Ausführungsform 35, wobei das Identifizieren eines virtuellen Routers, durch den Netzverkehr eines spezifischen Netzflusses geleitet werden soll, ein Identifizieren eines virtuellen Routers in dem Quellcluster und eines zweiten virtuellen Routers in dem Zielcluster umfasst.
-
Ausführungsform 37 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, wobei der spezifische Netzfluss mehrere virtuelle Zielmaschinen aufweist, die auf mehreren Zielhostmaschinen in mehreren Clustern existieren.
-
Ausführungsform 38 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, das ferner umfasst:
Beenden oder Entfernen des spezifischen Flusses als Antwort auf das Bestimmen, dass der spezifische Fluss für eine vorbestimmte Zeitdauer unbeschäftigt war.
-
Ausführungsform 39 ist das nichttransitorische computerlesbare Medium von Ausführungsform 27, das ferner umfasst:
Beenden oder Entfernen des spezifischen Flusses als Antwort auf das Bestimmen, dass die Nutzung des spezifischen Flusses für eine vorbestimmte Zeitdauer unterhalb eines Schwellenbetrags lag.
-
Jede der oben beschriebenen Ausführungsformen kann miteinander kombiniert werden, selbst wenn dies nicht explizit erwähnt ist. Obwohl diese Beschreibung viele spezifische Implementierungsdetails enthält, sollten diese nicht als Einschränkungen des Umfangs irgendeiner Erfindung oder des Umfangs dessen, was beansprucht werden kann, sondern als Beschreibungen von Merkmalen, die für bestimmte Ausführungsformen bestimmter Erfindungen spezifisch sein können, ausgelegt werden.
-
Systeme und Verfahren zum dynamischen Auslagern von Netzverkehrsflüssen in einem oder mehreren virtuellen Netzen werden offenbart. Ein beispielhaftes Verfahren beginnt mit einem Identifizieren eines virtuellen Routers, durch den Netzverkehr eines spezifischen Netzflusses geleitet werden soll, wobei der spezifische Netzfluss einen Quellendpunkt auf einer Quellhostmaschine und einen Zielendpunkt auf einer Zielhostmaschine aufweist. Es werden Flussstatistiken, die Statistiken über den spezifischen Netzfluss enthalten, empfangen. Unter Verwendung der empfangenen Flussstatistiken wird bestimmt, ob der spezifische Netzfluss eine Auslagerungsregel erfüllt. Als Antwort auf das Bestimmen, dass der spezifische Fluss die Auslagerungsregel erfüllt, wird der spezifische Netzfluss aus dem virtuellen Router ausgelagert.
-
Bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit getrennten Ausführungsformen beschrieben sind, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in einer beliebigen geeigneten Unterkombination implementiert werden. Obwohl ferner Merkmale oben so beschrieben sein können, dass sie in bestimmten Kombinationen agieren, und sogar anfänglich derart beansprucht werden, können ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination extrahiert werden und die beanspruchte Kombination kann auf eine Unterkombination oder Variation einer Unterkombination ausgerichtet werden.
-
Obwohl Operationen in den Zeichnungen in einer bestimmten Reihenfolge dargestellt sind, sollte dies ebenfalls nicht dahingehend verstanden werden, dass es erforderlich ist, dass solche Operationen in der gezeigten Reihenfolge oder in sequentieller Reihenfolge ausgeführt werden oder dass alle dargestellten Operationen durchgeführt werden, um wünschenswerte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemmodule und Komponenten in den oben beschriebenen Ausführungsformen nicht so verstanden werden, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in einem einzigen Softwareprodukt integriert sein können oder in mehreren Softwareprodukten verpackt sein können.
-
Bestimmte Ausführungsformen des Gegenstands sind beschrieben worden. Andere Ausführungsformen liegen innerhalb des Umfangs der folgenden Ansprüche. Zum Beispiel können die in den Ansprüchen aufgeführten Aktionen in einer anderen Reihenfolge ausgeführt werden und dennoch wünschenswerte Ergebnisse erzielen. Als Beispiel erfordern die in den begleitenden Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder eine sequentielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. In einigen Fällen kann Multitasking und Parallelverarbeitung vorteilhaft sein.