DE102017122738A1 - Virtueller Router mit dynamischer Flussauslagerungsfähigkeit - Google Patents

Virtueller Router mit dynamischer Flussauslagerungsfähigkeit Download PDF

Info

Publication number
DE102017122738A1
DE102017122738A1 DE102017122738.5A DE102017122738A DE102017122738A1 DE 102017122738 A1 DE102017122738 A1 DE 102017122738A1 DE 102017122738 A DE102017122738 A DE 102017122738A DE 102017122738 A1 DE102017122738 A1 DE 102017122738A1
Authority
DE
Germany
Prior art keywords
flow
network flow
source
specific network
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102017122738.5A
Other languages
English (en)
Inventor
Jesse Louis Alpert
Uday Naik
Md Ahsan Arefin
David Andrew Schultz
Yossi Richter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE102017122738A1 publication Critical patent/DE102017122738A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

Es werden Systeme und Verfahren zum dynamischen Auslagern von Netzverkehrsflüssen in einem oder mehreren virtuellen Netzen 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.

Description

  • 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.
  • 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.
  • Figurenliste
    • 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.

Claims (27)

  1. Computerimplementiertes Verfahren zum dynamischen Auslagern von Netzverkehrsflüssen in einem oder mehreren virtuellen Netzen, wobei das computerimplementierte Verfahren 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.
  2. Computerimplementiertes Verfahren nach Anspruch 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.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, 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.
  4. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, 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.
  5. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Empfangen von Flussstatistiken ein Empfangen von Statistiken bezüglich der Bandbreite des spezifischen Netzflusses umfasst.
  6. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, 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.
  7. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, 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.
  8. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, 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.
  9. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei sich die Quellhostmaschine in einem Quellcluster befindet und sich die Zielhostmaschine in einem Zielcluster, der sich von dem Quellcluster unterscheidet, befindet.
  10. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, 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.
  11. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der spezifische Netzfluss mehrere virtuelle Zielmaschinen aufweist, die auf mehreren Zielhostmaschinen in mehreren Clustern existieren.
  12. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, 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.
  13. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, 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.
  14. 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.
  15. System nach Anspruch 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.
  16. System nach Anspruch 14 oder 15, 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.
  17. System nach einem der Ansprüche 14 bis 16, 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.
  18. System nach einem der Ansprüche 14 bis 17, wobei das Empfangen von Flussstatistiken ein Empfangen von Statistiken bezüglich der Bandbreite des spezifischen Netzflusses umfasst.
  19. System nach einem der Ansprüche 14 bis 18, 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.
  20. System nach einem der Ansprüche 14 bis 19, 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.
  21. System nach einem der Ansprüche 14 bis 20, 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.
  22. System nach einem der Ansprüche 14 bis 21, wobei sich die Quellhostmaschine in einem Quellcluster befindet und sich die Zielhostmaschine in einem Zielcluster, der sich von dem Quellcluster unterscheidet, befindet.
  23. System nach einem der Ansprüche 14 bis 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.
  24. System nach einem der Ansprüche 14 bis 23, wobei der spezifische Netzfluss mehrere virtuelle Zielmaschinen aufweist, die auf mehreren Zielhostmaschinen in mehreren Clustern existieren.
  25. System nach einem der Ansprüche 14 bis 24, 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.
  26. System nach einem der Ansprüche 14 bis 25, 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.
  27. 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 das Verfahren nach einem der Ansprüche 1 bis 13 ausführen.
DE102017122738.5A 2016-10-14 2017-09-29 Virtueller Router mit dynamischer Flussauslagerungsfähigkeit Withdrawn DE102017122738A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/294,494 2016-10-14
US15/294,494 US10193968B2 (en) 2016-10-14 2016-10-14 Virtual router with dynamic flow offload capability

Publications (1)

Publication Number Publication Date
DE102017122738A1 true DE102017122738A1 (de) 2018-04-19

Family

ID=60153441

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102017122738.5A Withdrawn DE102017122738A1 (de) 2016-10-14 2017-09-29 Virtueller Router mit dynamischer Flussauslagerungsfähigkeit
DE202017105977.4U Active DE202017105977U1 (de) 2016-10-14 2017-09-29 Virtueller Router mit dynamischer Flussauslagerungsfähigkeit

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE202017105977.4U Active DE202017105977U1 (de) 2016-10-14 2017-09-29 Virtueller Router mit dynamischer Flussauslagerungsfähigkeit

Country Status (8)

Country Link
US (1) US10193968B2 (de)
EP (1) EP3526939B1 (de)
CN (1) CN107959625B (de)
DE (2) DE102017122738A1 (de)
GB (1) GB2556446B (de)
IE (1) IE87148B1 (de)
SG (1) SG10201708478XA (de)
WO (1) WO2018071188A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10608843B2 (en) * 2016-10-14 2020-03-31 Cisco Technology, Inc. Isolation networks for computer devices
US10601693B2 (en) 2017-07-24 2020-03-24 Cisco Technology, Inc. System and method for providing scalable flow monitoring in a data center fabric
US11233778B2 (en) * 2018-08-15 2022-01-25 Juniper Networks, Inc. Secure forwarding of tenant workloads in virtual networks
US11329966B2 (en) 2018-08-15 2022-05-10 Juniper Networks, Inc. System and method for transferring packets between kernel modules in different network stacks
US11070475B2 (en) * 2018-12-13 2021-07-20 Google Llc Transparent migration of virtual network functions
US11579908B2 (en) 2018-12-18 2023-02-14 Vmware, Inc. Containerized workload scheduling
US11146491B1 (en) * 2020-04-09 2021-10-12 International Business Machines Corporation Dynamically balancing inbound traffic in a multi-network interface-enabled processing system
US11740919B2 (en) * 2020-05-18 2023-08-29 Dell Products L.P. System and method for hardware offloading of nested virtual switches
US11743365B2 (en) * 2020-10-20 2023-08-29 Nokia Solutions And Networks Oy Supporting any protocol over network virtualization
US20230412496A1 (en) * 2022-06-21 2023-12-21 Oracle International Corporation Geometric based flow programming
US11909656B1 (en) * 2023-01-17 2024-02-20 Nokia Solutions And Networks Oy In-network decision for end-server-based network function acceleration

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7170301A (en) * 2000-06-29 2002-01-14 Cachestream Corp Virtual multicasting
US7734726B2 (en) * 2001-11-27 2010-06-08 International Business Machines Corporation System and method for dynamically allocating processing on a network amongst multiple network servers
US7801155B2 (en) 2002-03-01 2010-09-21 Verizon Business Global Llc Resource allocation in virtual routers
US7388851B2 (en) * 2002-04-26 2008-06-17 Spyder Navigations, L.L.C. Proactive seamless service provisioning in mobile networks through transferring of application context
CN100499570C (zh) * 2003-02-19 2009-06-10 松下电器产业株式会社 多个路由器间的调停方法、路由器优先度计算装置及路由器装置
CN100372336C (zh) 2004-07-13 2008-02-27 华为技术有限公司 多协议标签交换虚拟专用网及其控制和转发方法
US7822033B1 (en) * 2005-12-30 2010-10-26 Extreme Networks, Inc. MAC address detection device for virtual routers
US9817695B2 (en) * 2009-04-01 2017-11-14 Vmware, Inc. Method and system for migrating processes between virtual machines
US8743696B2 (en) 2009-08-07 2014-06-03 Cisco Technology, Inc. Mobile transport solution for offloading to an alternate network
EP2509000A4 (de) 2009-12-04 2017-09-20 Nec Corporation Server und flusssteuerungsprogramm
CN102546355A (zh) 2010-12-09 2012-07-04 上海杉达学院 路由器的负载均衡方法
US10084694B2 (en) 2011-12-29 2018-09-25 Nokia Solutions And Networks Oy Conveying traffic in a communications network system
US8930690B2 (en) 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
US9064216B2 (en) * 2012-06-06 2015-06-23 Juniper Networks, Inc. Identifying likely faulty components in a distributed system
US9092269B2 (en) 2012-06-21 2015-07-28 Microsoft Technology Licensing, Llc Offloading virtual machine flows to physical queues
US8948008B2 (en) * 2012-08-03 2015-02-03 Juniper Networks, Inc. Drop sensitive prefix (BGP path) attribute modification
US9270827B2 (en) * 2012-09-07 2016-02-23 Genesys Telecommunications Laboratories, Inc. Dynamic management and redistribution of contact center media traffic
US9306840B2 (en) 2012-09-26 2016-04-05 Alcatel Lucent Securing software defined networks via flow deflection
KR20140075826A (ko) * 2012-11-23 2014-06-20 한국전자통신연구원 패킷 기반의 이동통신 시스템에서 데이터 트래픽을 제어하기 위한 장치 및 그 방법
US10389623B2 (en) 2013-03-12 2019-08-20 Nec Corporation Packet data network, a method for operating a packet data network and a flow-based programmable network device
US9124506B2 (en) 2013-06-07 2015-09-01 Brocade Communications Systems, Inc. Techniques for end-to-end network bandwidth optimization using software defined networking
US9294407B2 (en) 2013-06-26 2016-03-22 Vmware, Inc. Network device load balancing in a virtualized computing environment
US9432487B2 (en) 2014-08-04 2016-08-30 Futurewei Technologies, Inc. System and method for network protocol offloading in virtual networks
CN104486234B (zh) * 2014-11-21 2018-10-30 华为技术有限公司 一种将业务交换机卸载到物理网卡的方法及服务器
WO2017116975A1 (en) * 2015-12-31 2017-07-06 Affirmed Networks, Inc. Seamless handoff between wireless access gateways
US10397108B2 (en) * 2016-01-25 2019-08-27 Futurewei Technologies, Inc. Service function chaining across multiple subnetworks

Also Published As

Publication number Publication date
GB2556446A (en) 2018-05-30
CN107959625A (zh) 2018-04-24
EP3526939A1 (de) 2019-08-21
US10193968B2 (en) 2019-01-29
IE20170217A1 (en) 2018-04-18
GB201716632D0 (en) 2017-11-22
DE202017105977U1 (de) 2018-02-05
SG10201708478XA (en) 2018-05-30
EP3526939B1 (de) 2020-11-18
GB2556446B (en) 2019-09-11
US20180109606A1 (en) 2018-04-19
IE87148B1 (en) 2020-09-02
CN107959625B (zh) 2021-02-05
WO2018071188A1 (en) 2018-04-19

Similar Documents

Publication Publication Date Title
DE102017122738A1 (de) Virtueller Router mit dynamischer Flussauslagerungsfähigkeit
DE112014000322B4 (de) Skalierbare Fluss- und Überlastungssteuerung in einem Netzwerk
DE102013209118B4 (de) Beibehaltung und Änderung von Netzwerküberlastungsbenachrichtigungen während der Übertragung von Netzwerkdaten zwischen einem physischen Netzwerk und einem virtuellen Netzwerk
DE112018003482B4 (de) Serveranfrageverwaltung
DE202019103185U1 (de) Verteilte Deduplizierung von Paketen
DE102006012614B4 (de) Verfahren und Vorrichtung für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung
DE602005001815T2 (de) Verfahren zur effizienten Mehrfachverbreitung von Inhalten in einem Peer-to-peer Netzwerk
DE112013006420B4 (de) Erweiterte Verbindungszusammenfassung (LAG) zur Nutzung in mehreren Switsches
DE102018214776A1 (de) Technologien für die Verwaltung von Netz-Statistik-Zählern
DE112019007229T5 (de) Heuristische sd-wan-routen-neukonfiguration
DE202015009244U1 (de) Routing von Datenverkehr innerhalb von und zwischen autonomen Systemen
DE102016103492B4 (de) Datenverarbeitungsvorrichtung und Verfahren zum Überwachen von Netzwerkverkehr und Maschinenlesbares Speichermedium
DE102019105193A1 (de) Technologien zum beschleunigen von edge-vorrichtungsarbeitslasten
DE112020001459T5 (de) Konsistente Route-Ankündigungen zwischen redundanten Controllern im globalen Netzwerk-Access-Point
DE102015119889A1 (de) Verfahren für Netzwerkvorrichtungsfluss-Look-up-Verwaltung
DE102016104264B4 (de) Übertragen von Mehrfachzielpaketen in Overlay-Netzwerken
DE112013006417B4 (de) Verlustfreie Schalterstruktur mit niedriger Latenzzeit zum Gebrauch in einem Rechenzentrum
DE102015102871A1 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE112008003966T5 (de) Selektives Um-Abbilden einer Netzwerktopologie
DE102021127243A1 (de) Auswahl von Profilen für virtuelle private Netze
DE112016001663T5 (de) Empfangen von Pufferkrediten durch eine Vielzahl von Kanälen von einer oder mehreren Host-Recheneinheiten, um Daten an eine Steuereinheit zu übertragen
DE202015009251U1 (de) Netzwerkpaketkapselung und Routing
DE10297645B4 (de) Verfahren und Einrichtung zum Lastteilen und zur Datenverteilung in Servern
DE202014010940U1 (de) Dynamische Shuffle-Rekonfiguration
DE112017006993T5 (de) System und Verfahren zum Erfassen einer Netztopologie

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R120 Application withdrawn or ip right abandoned
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012729000

Ipc: H04L0045125000

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D.STAATES DELAWARE), MOUNT, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US