DE202015009265U1 - Einheitliche api zur programmierung beider server und des fabric für die feinoptimieirung von netzwerken - Google Patents

Einheitliche api zur programmierung beider server und des fabric für die feinoptimieirung von netzwerken Download PDF

Info

Publication number
DE202015009265U1
DE202015009265U1 DE202015009265.9U DE202015009265U DE202015009265U1 DE 202015009265 U1 DE202015009265 U1 DE 202015009265U1 DE 202015009265 U DE202015009265 U DE 202015009265U DE 202015009265 U1 DE202015009265 U1 DE 202015009265U1
Authority
DE
Germany
Prior art keywords
application
network
edge devices
forwarding module
network controller
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.)
Active
Application number
DE202015009265.9U
Other languages
English (en)
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 DE202015009265U1 publication Critical patent/DE202015009265U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Ein System zur Steuerung von Netzwerkrouten, umfassend: ein Netzwerk umfassend eine Vielzahl von Edgegeräten, jedes der Vielzahl von Edgegeräten führt eine Anwendung mit einer Anwendungsanforderung aus und jedes der Vielzahl von Edgegeräten verfügt über ein Weiterleitungsmodul, und eine Vielzahl von Core-Switches, die die Vielzahl von Edgegeräten untereinander verbindet, und einen Netzwerkcontroller, der mit jedem der Vielzahl von Edgegeräten und mit jedem der Vielzahl von Core-Switches verknüpft ist, und der Netzwerkcontroller ist für Folgendes konfiguriert: das Empfangen der Anwendungsanforderung der auf jedem der Vielzahl von Edgegeräten ausgeführten Anwendung; das Bestimmen einer Vielzahl von Routen gemäss den empfangenen Anwendungsanforderungen, und das Programmieren des Weiterleitungsmoduls für jedes der Vielzahl von Edgegeräten sowie eines Weiterleitungsmoduls für jeden der Vielzahl von Core-Switches, die auf die festgelegte Vielzahl von Routen reagieren.

Description

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

Claims (8)

  1. Ein System zur Steuerung von Netzwerkrouten, umfassend: ein Netzwerk umfassend eine Vielzahl von Edgegeräten, jedes der Vielzahl von Edgegeräten führt eine Anwendung mit einer Anwendungsanforderung aus und jedes der Vielzahl von Edgegeräten verfügt über ein Weiterleitungsmodul, und eine Vielzahl von Core-Switches, die die Vielzahl von Edgegeräten untereinander verbindet, und einen Netzwerkcontroller, der mit jedem der Vielzahl von Edgegeräten und mit jedem der Vielzahl von Core-Switches verknüpft ist, und der Netzwerkcontroller ist für Folgendes konfiguriert: das Empfangen der Anwendungsanforderung der auf jedem der Vielzahl von Edgegeräten ausgeführten Anwendung; das Bestimmen einer Vielzahl von Routen gemäss den empfangenen Anwendungsanforderungen, und das Programmieren des Weiterleitungsmoduls für jedes der Vielzahl von Edgegeräten sowie eines Weiterleitungsmoduls für jeden der Vielzahl von Core-Switches, die auf die festgelegte Vielzahl von Routen reagieren.
  2. Das System nach Anspruch 1, wobei die Anwendungsanforderung mindestens eine Anforderung im Bezug auf das Ziel des Edgegerätes, eine Bandbreiten- und eine Latenzanforderung beinhaltet.
  3. Das System nach Anspruch 1, wobei das Weiterleitungsmodul jedes der Vielzahl von Edgegeräten ein softwarebasiertes Weiterleitungsmodul ist.
  4. Das System nach Anspruch 1, wobei das Weiterleitungsmodul jedes der Vielzahl von Core-Switches ein hardwarebasiertes Weiterleitungsmodul ist.
  5. Das System nach Anspruch 1, wobei der Netzwerkcontroller des Weiteren so konfiguriert ist, dass er das Weiterleitungsmodul jedes der Vielzahl von Edgegerät und das Weiterleitungsmodul jedes der Vielzahl von Core-Switches mit demselben Protokoll programmiert.
  6. Das System nach Anspruch 5, wobei das Protokoll ein OpenFlow-Protokoll ist.
  7. Das System nach Anspruch 1, wobei der Netzwerkcontroller des Weiteren so konfiguriert ist, dass er das Weiterleitungsmodul jedes der Vielzahl von Edgegeräten und das Weiterleitungsmodul jedes der Vielzahl von Core-Switches für das Daten-Routing mithilfe von Quellrouting, Multiprotocol Label Switching, lockerem Quellrouting und Generic Routing Encapsulation programmiert.
  8. Das System nach Anspruch 1, wobei der Netzwerkcontroller des Weiteren umfassend so konfiguriert ist, dass er eine zweite Vielzahl von Routen im Weiterleitungsmodul jedes und mindestens eines Edgegerätes für die Verwendung mit einer zweiten Anwendung, die auf mindestens einem Edgegerät ausgeführt wird, programmiert.
DE202015009265.9U 2014-02-10 2015-02-10 Einheitliche api zur programmierung beider server und des fabric für die feinoptimieirung von netzwerken Active DE202015009265U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461937933P 2014-02-10 2014-02-10
US61/937,933 2014-02-10
US14/276,399 US9705740B2 (en) 2014-02-10 2014-05-13 Using unified API to program both servers and fabric for forwarding for fine-grained network optimizations
US14/276,399 2014-05-13

Publications (1)

Publication Number Publication Date
DE202015009265U1 true DE202015009265U1 (de) 2017-01-19

Family

ID=53775945

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202015009265.9U Active DE202015009265U1 (de) 2014-02-10 2015-02-10 Einheitliche api zur programmierung beider server und des fabric für die feinoptimieirung von netzwerken

Country Status (6)

Country Link
US (1) US9705740B2 (de)
EP (2) EP3399424B1 (de)
CN (2) CN106104503B (de)
DE (1) DE202015009265U1 (de)
DK (1) DK3105683T3 (de)
WO (1) WO2015120444A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230267017A1 (en) * 2022-02-18 2023-08-24 Capital One Services, Llc Systems and methods for routing data payloads through a plurality of microservices using machine learning

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10044562B2 (en) * 2015-11-04 2018-08-07 Cisco Technology, Inc. Automatic provisioning of LISP mobility networks when interconnecting DC fabrics
KR102215025B1 (ko) 2017-06-30 2021-02-10 주식회사 엘지화학 고흡수성 수지의 제조 방법 및 이러한 방법으로 얻은 고흡수성 수지
KR20220001630A (ko) * 2020-06-30 2022-01-06 삼성에스디에스 주식회사 엣지 컴퓨팅 장치를 위한 애플리케이션 배포 방법 및 시스템
KR102283192B1 (ko) * 2021-05-31 2021-07-29 앰포 주식회사 다수개의 네트워크 장비 및 관리자용 대시보드를 연계하기 위한 임베디드 장치 연결 및 통신 방식의 내부 네트워크 통합 관리 방법 및 장치

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587890B1 (en) 1998-06-12 2003-07-01 Mci Communications Corporation Switch controller application programmer interface
US7142650B1 (en) 1998-06-12 2006-11-28 Mci Communication Corporation System and method for resource management
US7685254B2 (en) * 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7861247B1 (en) * 2004-03-24 2010-12-28 Hewlett-Packard Development Company, L.P. Assigning resources to an application component by taking into account an objective function with hard and soft constraints
US7551551B2 (en) * 2004-12-10 2009-06-23 Cisco Technology, Inc. Fast reroute (FRR) protection at the edge of a RFC 2547 network
CN100387019C (zh) * 2005-04-04 2008-05-07 华为技术有限公司 跨混合网络的多协议标签交换虚拟专用网的实现方法
US7742471B2 (en) 2005-11-29 2010-06-22 Samsung Electronics Co., Ltd. Methods and systems for routing packets with a hardware forwarding engine and a software forwarding engine
US7720065B2 (en) * 2008-02-29 2010-05-18 Lockheed Martin Corporation Method and apparatus for biasing of network node packet prioritization based on packet content
CN101557334B (zh) * 2008-04-08 2012-11-28 中兴通讯股份有限公司 Mpls vpn、其vpn多实例用户边缘设备及其实现方法
CN101751197A (zh) * 2008-12-01 2010-06-23 陈冠文 多层次输入系统、电脑程序产品及其方法
CN101662508B (zh) * 2009-09-11 2013-04-24 华为技术有限公司 基于点对点协议数据传输的方法、装置和系统
US8848715B2 (en) 2010-03-16 2014-09-30 Marvell Israel (M.I.S.L) Ltd. Combined hardware/software forwarding mechanism and method
US8837493B2 (en) 2010-07-06 2014-09-16 Nicira, Inc. Distributed network control apparatus and method
CN102546385B (zh) * 2010-12-15 2016-01-20 瞻博网络公司 交换机分布式控制面内自动供应资源的方法和装置
US9154433B2 (en) 2011-10-25 2015-10-06 Nicira, Inc. Physical controller
US20130219046A1 (en) * 2012-02-21 2013-08-22 Cisco Technology, Inc. Dynamic application-aware routing topologies
US8441961B1 (en) 2012-12-24 2013-05-14 Sideband Networks, Inc. Metadata-driven switch network control
US9118571B2 (en) * 2013-07-08 2015-08-25 Telefonaktiebolaget L M Ericsson (Publ) Methods of operating load balancing switches and controllers using matching patterns with unrestricted characters

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230267017A1 (en) * 2022-02-18 2023-08-24 Capital One Services, Llc Systems and methods for routing data payloads through a plurality of microservices using machine learning
US11893426B2 (en) * 2022-02-18 2024-02-06 Capital One Services, Llc Systems and methods for routing data payloads through a plurality of microservices using machine learning

Also Published As

Publication number Publication date
EP3105683A1 (de) 2016-12-21
CN106104503B (zh) 2019-06-04
WO2015120444A1 (en) 2015-08-13
US9705740B2 (en) 2017-07-11
EP3399424B1 (de) 2020-04-08
DK3105683T3 (en) 2018-09-17
US20150229522A1 (en) 2015-08-13
CN106104503A (zh) 2016-11-09
EP3105683B1 (de) 2018-07-04
EP3399424A1 (de) 2018-11-07
CN110262988A (zh) 2019-09-20

Similar Documents

Publication Publication Date Title
DE112013006063B4 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE112013000752B4 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE69634928T2 (de) Netzwerkverwaltungssystem mit verbesserter Knotenerkennung und -überwachung
DE202015009265U1 (de) Einheitliche api zur programmierung beider server und des fabric für die feinoptimieirung von netzwerken
DE202015009244U1 (de) Routing von Datenverkehr innerhalb von und zwischen autonomen Systemen
DE112017001762T5 (de) Technologien für den einsatz dynamischer underlay-netzwerke in cloud-computing-infrastrukturen
DE102015102871A1 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE112016003242T5 (de) System und verfahren zum handhaben von verbindungsverlust in einem netzwerk
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE112013003289T5 (de) Gerät, System und Verfahren für client-geregelte Sitzungspersistenz zwischen ein oder mehreren Clients und Servern eines Rechenzentrums
DE202014010967U1 (de) Multi-Master-Auswahl in einem Software-basierten Netzwerk
DE202017105977U1 (de) Virtueller Router mit dynamischer Flussauslagerungsfähigkeit
DE602004005242T2 (de) Zentralisierte konfiguration von verwalteten objekten des link-scope-typs in netzwerken, die auf dem internet-protokoll (ip) basieren
DE202012103103U1 (de) Nullkonfiguration einer virtuellen verteilten Vorrichtung
DE102018129112A1 (de) Systemdecoder für Trainingsbeschleuniger
DE19822543A1 (de) Verfahren zum Zuteilen von Aufträgen, Datenverarbeitssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium
DE112011105911T5 (de) Server mit Switch-Schaltungen
DE102018204577A1 (de) Techniken zum Erfüllen von Dienstgüteanforderungen für eine Fabric-Punkt-zu-Punkt-Verbindung
DE202016107141U1 (de) Netzwerk stochastische Kreuzschicht-Optimierung zum Erreichen des Verkehrsflussverfügbarkeitziels zu Mindestkosten
EP1711892B1 (de) Verfahren zum bestimmen eines übernahmeszenarios der softwareeinheiten bei einem rechnerausfall in einer serverfarm
DE202017105777U1 (de) System für hardwareunabhängigen RDMA
DE102015111820A1 (de) Auswählen eines Netzwerkes
DE202014010916U1 (de) Verwirklichung von Spezifikationen bezüglich einer Netzwerk-Weiterleitungsebene eines elektronischen Geräts, das weiterleitende Funktionalität hat
WO2018059690A1 (de) Verfahren zum betrieb eines mehrere kommunikationsgeräten umfassenden kommunikationsnetzes eines industriellen automatisierungssystems und steuerungseinheit
DE202016107125U1 (de) Systeme zum Erkennen der Topologie von Fernnetzwerken

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

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

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

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012700000

Ipc: H04L0045000000

R152 Utility model maintained after payment of third maintenance fee after eight years