DE112018002716B4 - Virtuelles Kanalrouting - Google Patents

Virtuelles Kanalrouting Download PDF

Info

Publication number
DE112018002716B4
DE112018002716B4 DE112018002716.3T DE112018002716T DE112018002716B4 DE 112018002716 B4 DE112018002716 B4 DE 112018002716B4 DE 112018002716 T DE112018002716 T DE 112018002716T DE 112018002716 B4 DE112018002716 B4 DE 112018002716B4
Authority
DE
Germany
Prior art keywords
network device
packet
action
routing
routing table
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
DE112018002716.3T
Other languages
English (en)
Other versions
DE112018002716T5 (de
Inventor
Nicholas George McDonald
Gary Gostin
Darel N. Emmot
Gregg B. Lesartre
Al Davis
Derek Alan Sherlock
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE112018002716T5 publication Critical patent/DE112018002716T5/de
Application granted granted Critical
Publication of DE112018002716B4 publication Critical patent/DE112018002716B4/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
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • 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

Landscapes

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

Abstract

Verfahren (100), umfassend:Empfangen (101) eines Pakets (201; 303; 412) an einem Eingangsport (208) eines Netzwerkgeräts (200) eines Netzwerks, wobei das Paket (201; 303; 412) über einen virtuellen Eingangskanal (Eingangs-VC) kommt und an ein Zielnetzwerkgerät über einen Ausgabeport (209) und einem durch eine Routing-Engine (205; 300; 401) des Netzwerkgeräts (200) bestimmten virtuellen Ausgangskanal weitergeleitet werden soll;Bestimmen (102) eines Paares eines Ausgabeports (209) und einer virtuellen Kanal - Aktion (VC-Aktion) (214; 312-314), wobei das Paar aus einer ersten Routing-Tabelle (211; 307; 403) von mehreren Routing-Tabellen im Netzwerkgerät (200) erhalten wird, wobei die erste Routing-Tabelle (211; 307; 403) dem Eingangsport (208) zugeordnet ist, wobei das Bestimmen des Paares auf einer Kennung (203; 305) des Zielnetzwerkgeräts, die im Paket (201; 303; 412) gespeichert ist, basiert;Bestimmen (103) einer virtuellen Kanal - Maske (VC-Maske) anhand der Eingangs-VC und der VC-Aktion (214; 312-314) durch die Routing-Engine (205; 300; 401) aus einer virtuellen Kanalaktionstabelle (VCAT) (212; 308; 404) im Netzwerkgerät (200), wobei die VCAT (212; 308; 404) der ersten Routing-Tabelle (211; 307; 403) zugeordnet ist und die VC-Maske einen ersten Satz von verfügbaren virtuellen Ausgabekanälen (Ausgabe VCs) definiert, um das Paket (201; 303; 412) an das Zielnetzwerkgerät weiterzuleiten;Auswählen (104) eines bestimmten virtuellen Kanals (VC) aus dem in der VC-Maske definierten ersten Satz von verfügbaren Ausgabe VCs durch die Routing-Engine (205; 300; 401);und Weiterleiten (105) des Pakets (201; 303; 412) an das Zielnetzwerkgerät durch die Weiterleitungsmaschine unter Verwendung des Ausgabeports (209) und des bestimmten VC.

Description

  • HINTERGRUND
  • Virtuelle Kanäle (VCs) in einem Computernetzwerk können mehrere logische Datenpfade über eine einzelne physische Verbindung oder Verbindung im Computernetzwerk erstellen, sodass ein physischer Kanal mehrere über den physischen Kanal gemultiplexte virtuelle Kanäle unterstützen kann. Diese VCs können ihre eigenen Netzwerkressourcen wie Warteschlangen und Puffer-zu-Puffer-Guthaben zuweisen. Jede unidirektionale VC kann durch ein unabhängig verwaltetes Paar von (Flit-) Puffern realisiert werden. Verschiedene Pakete können dann den physikalischen Kanal auf einer Flit-by-Flit-Basis teilen. VCs können Deadlocks vermeiden und das Blockieren von Wurmlöchern in Netzwerken verringern sowie die Netzwerklatenz und den Netzwerkdurchsatz weiter verbessern. Darüber hinaus können VCs zum Aufbau von Adaptive Networking-Diensten verwendet werden.
    US 2005/0078601 A1 offenbart eine Multiprozessor-Schaltvorrichtung, die im Wesentlichen auf einer einzigen integrierten CMOS-Schaltung implementiert ist, in Verbindung mit einem parallelen Routing-Schema zum Berechnen von Routing-Informationen für ankommende Pakete.
    US 2002/0078226 A1 offenbart ein Datagramm-Übertragungsgerät, das eine Routensuche und andere Suchvorgänge mit hoher Geschwindigkeit ausführt.
    US 8,094,659 B1 offenbart ein Verfahren zum Erhöhen der Auflösung der virtuellen Routerzuweisung in einem Computernetzwerk.
  • Figurenliste
    • ist ein Flussdiagramm eines beispielhaften Verfahrens zum Weiterleiten virtueller Kanäle.
    • ist ein Blockdiagramm eines beispielhaften Netzwerkgeräts, das eine Routing-Engine und eine Routing-Tabelle sowie eine Virtual Channel Action Table (VCAT) für jeden Eingangsport des Netzwerkgeräts enthält.
    • ist ein Blockdiagramm eines beispielhaften Systems, das eine Routing-Engine, eine Routing-Tabelle und eine VCAT eines Netzwerkgeräts enthält, wobei Pakete an ein Zielnetzwerkgerät unter Berücksichtigung der von Paketen auszuführenden VC-Aktion weitergeleitet werden.
    • ist ein Blockdiagramm einer beispielhaften Netzwerkvorrichtung zum Weiterleiten von Paketen über virtuelle Kanäle unter Berücksichtigung der VC-Aktion, die von dem Paket auszuführen ist.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird ein Verfahren gemäß Ansprüchen 1 bis 8, ein nichtflüchtiges maschinenlesbares Speichermedium mit Anweisungen gemäß Ansprüchen 9 bis 15 und ein Netzwerkgerät gemäß Ansprüchen 16 bis 20 beansprucht. Fortgeschrittene Hochleistungs-Routing-Algorithmen erfordern möglicherweise unterschiedliche Aktionen, die von den durch die Netzwerke fließenden Paketen ausgeführt werden, damit sie unter verschiedenen virtuellen Kanälen der Netzwerke zugelassen werden. Diese fortschrittlichen Hochleistungs-Routing-Algorithmen ermöglichen möglicherweise ein Routing-VC-Remapping, wodurch die Pakete die Möglichkeit erhalten, virtuelle Kanäle während des Routings durch das Netzwerk zu wechseln.
  • Wie hierin allgemein beschrieben, kann sich eine „VC-Aktion“ auf eine Aktion beziehen, die angibt, wie ein Paket bei einem bestimmten Netzwerksprung zwischen zwei Netzwerkgeräten von einer VC zu einer anderen VC übergehen soll. Beispiele für VC-Aktionen können das Weiterleiten eines Pakets von einem Quellnetzwerkgerät an ein Zielnetzwerkgerät über die minimale Route (minimale Sprunganzahl) oder das Weiterleiten des Pakets von einem Quellnetzwerkgerät an ein Zielnetzwerkgerät über eine nicht minimale Route (nicht-minimale Sprungzahl). Andere weitere Beispiele für VC-Aktionen können VC-Übergänge sein, beispielsweise ein Wechsel von einer Eingangs-VC, über die ein Paket zu einem bestimmten Netzwerkgerät gelangt, zu einer anderen Ausgangs-VC, über die das Paket an ein Ziel-Netzwerkgerät weitergeleitet werden soll.
  • Diese fortschrittlichen Hochleistungs-Routing-Algorithmen verwenden möglicherweise Routing-Tabellen pro VC anstelle von Routing-Tabellen pro Port, um diese Funktionen bereitzustellen. Für die Verwendung von Routing-Tabellen pro VC muss möglicherweise eine Routing-Tabelle für jeden der VCs im Netzwerk und für jeden der Eingangsports des Netzwerkgeräts gespeichert werden. HPC-Netzwerke (High Performance Computing) können viele virtuelle Kanäle verwenden, und jedes der Netzwerkgeräte der HPC-Netzwerke kann viele Eingangsanschlüsse umfassen. Beispielsweise würde ein Gerät mit 32 VCs und 64 Ports das Speichern von 2.048 Routing-Tabellen in internen Speichern des Netzwerkgeräts erfordern. Somit kann die Verwendung von Routingtabellen pro VC die Speichermenge um die Anzahl der VCs im Netzwerk, die Komplexität für die Berechnung von Routen und daher die mit den Netzwerkgeräten verbundenen Kosten erhöhen. Einige Netzwerktopologien, die VC-Routingtabellen verwenden, unterstützen auch keine VC-Neuzuordnung, sodass sie möglicherweise für bestimmte HPC-Netzwerke unbrauchbar werden. Im Gegensatz dazu können Topologien, die die VC-Neuzuordnung für einen festen Routing-Algorithmus unterstützen, außerhalb ihres Entwurfs unbrauchbar sein.
  • Um diese Probleme anzugehen, beschreiben einige hierin offenbarte Beispiele Verfahren zum Weiterleiten von Paketen durch virtuelle Kanäle in einem Netzwerk unter Berücksichtigung der VC-Aktionen, die von den durch das Netzwerk fließenden Paketen auszuführen sind. Diese Verfahren können das Empfangen eines Pakets an einem Eingangsport eines bestimmten Netzwerkgeräts eines Netzwerks umfassen, wobei das Paket über eine Eingangs-VC zu dem bestimmten Netzwerkgerät gelangt und an ein Zielnetzwerkgerät weitergeleitet werden soll. Dann kann eine Routing-Engine des Netzwerkgeräts einen Ausgabeport und eine VC-Aktion aus einer Routing-Tabelle, die dem Eingabeport zugeordnet ist, basierend auf dem Zielnetzwerkgerät, an das das Paket gesendet werden soll, bestimmen. Der Ausgangsport ist der Port des Netzwerkgeräts, der zum Weiterleiten des Pakets an das Zielnetzwerkgerät verwendet werden soll, und die VC-Aktion definiert, wie das Paket von einem VC zu einem anderen VC übergehen kann, wenn der Sprung zwischen dem aktuellen Netzwerkgerät und dem Netzwerkgerät erfolgt an das das Paket gesendet werden soll (dieses Netzwerkgerät, an das das Paket gesendet werden soll, kann das Zielnetzwerkgerät oder jedes andere Netzwerkgerät im Netzwerk sein, das als Zwischenknoten zwischen dem aktuellen Netzwerkgerät und dem Zielnetzwerkgerät fungiert) .
  • Wie hierin allgemein beschrieben, kann eine Routing-Engine eine Kombination aus Hardware- und Softwarelogik in einem Netzwerkgerät darstellen, um Pakete über virtuelle Kanäle von einem Quellnetzwerkgerät zu einem Zielnetzwerkgerät in einem Netzwerk zu routen, wobei die von dem VC auszuführenden Aktionen berücksichtigt werden Pakete.
  • Dann kann die Routing-Engine eine VC-Maske aus einem virtuellen Kanal bestimmen Aktionstabelle (VCAT) im Netzwerkgerät basierend auf der Eingangs-VC und der VC-Aktion. Die VCAT kann der Routing-Tabelle zugeordnet sein und die VC-Maske kann einen Satz von Ausgangs-VCs definieren, die verfügbar und gültig sind, um das Paket an das Ziel-Netzwerkgerät weiterzuleiten. Die Routing-Engine kann ferner eine bestimmte VC aus dem Satz von VCs auswählen, die in der VC-Maske definiert sind, und kann das Paket unter Verwendung des Ausgangsports und der bestimmten VC an das Zielnetzwerkgerät weiterleiten.
  • In einigen Beispielen kann die Routingtabelle mehrere Routen speichern und jede Route kann einen Satz von Ausgangsport-VC-Aktionspaaren definieren, wobei jeder Ausgangsport einer jeweiligen VC-Aktion zugeordnet ist. Abhängig von der Zielnetzwerkvorrichtung für ein Paket kann ein Satz von Ausgangsport-VC-Aktionspaaren ausgewählt werden, die es dem Paket ermöglichen, die Zielnetzwerkvorrichtung zu erreichen und die mit verschiedenen Routen in der Routingtabelle in Beziehung stehen können. In solchen Beispielen kann die Routing-Engine einen Satz jeweiliger VC-Masken aus der VCAT basierend auf der Eingangs-VC und den jeweiligen VC-Aktionen des ausgewählten Satzes von Ausgangs-Port-VC-Aktionspaaren bestimmen.
  • In einigen anderen Beispielen kann die Auswahl der bestimmten VC aus dem Satz möglicher VCs, die durch die VC-Maske definiert sind, auf verschiedenen Kriterien basieren, wie z. B. der minimalen Route, dem kürzesten Netzwerksprung usw. Insbesondere und beispielhaft kann die Routing-Engine ferner den VCs und den von den VCs verwendeten Ausgangsports eine Gewichtung zuweisen und dann ein Ausgangsport-VC-Paar mit der geringsten kombinierten Gewichtung auswählen.
  • Wie hierin allgemein beschrieben, können die VC-Masken Bitfelder sein, die die gültigen Ausgangs-VCs darstellen, die von einem Paket unter verschiedenen VC-Aktionen verwendet werden können. Beispielsweise kann eine VC-Maske ein Bitfeld sein, das so viele Bits wie VCs in dem Netzwerk aufweist, und wobei eine „1“ eine gültige VC darstellen kann und eine „0“ eine ungültige VC darstellen kann. Beispielsweise kann eine VC-Maske „001 10“ alle VCs „VC0, VC1, VC2, VC3, VC4“ in dem Netzwerk darstellen, wobei VC2 und VC3 gültige VCs für eine bestimmte VC-Aktion sind (zum Beispiel Weiterleitung das Paket an das Zielnetzwerkgerät über die Minimalroute) und wobei VC0, VC1 und VC4 ungültige VCs für diese VC-Aktion sind. Alternativ zu einem Bitfeld können diese Informationen auch eine Liste gültiger VC-Kennungen sein.
  • Daher trennen die hier beschriebenen Verfahren die Funktionalität der Berechnung von Routen mit der Berechnung, wie sich das Paket durch die verschiedenen VCs im Netzwerk bewegt, in zwei separate Tabellen für jeden der Eingangsports der Netzwerkelemente des Netzwerks. Die Routing-Tabelle umfasst die Funktionalität, die der Berechnung der Routen zugeordnet ist, während die VCAT, die der Routing-Tabelle zugeordnet ist, die Funktionalität in Bezug auf die Berechnung beschreibt, wie sich die durch das Netzwerkelement gehenden Pakete durch die verschiedenen VCs im Netzwerk bewegen.
  • In der folgenden Beschreibung werden zu Erklärungszwecken zahlreiche spezifische Details angegeben, um ein gründliches Verständnis der vorliegenden Systeme und Verfahren zu ermöglichen. Für den Fachmann ist es jedoch offensichtlich, dass die vorliegenden Vorrichtungen, Systeme und Verfahren ohne diese spezifischen Details ausgeführt werden können. Ein Verweis in der Beschreibung auf „ein Beispiel“ oder eine ähnliche Sprache bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Verbindung mit diesem Beispiel beschrieben wurden, wie beschrieben enthalten ist, aber möglicherweise nicht in anderen Beispielen enthalten ist.
  • Wir wenden uns nun den Figuren zu. 1 zeigt ein Flussdiagramm eines beispielhaften Verfahrens 100 für das Routing virtueller Kanäle. Die Implementierung dieses Verfahrens 100 ist nicht auf ein solches Beispiel beschränkt.
  • In Schritt 101 des Verfahrens 100 wird ein Paket an einem bestimmten Eingangsport eines Netzwerkgeräts des Netzwerks empfangen. Dieses Paket enthält Kennungen der Eingangs-VC, über die das Paket eingeht, und des Zielnetzwerks, an das das Paket weitergeleitet werden soll. Das Paket kann die Kennungen im Header speichern. Dieses bestimmte Zielnetzwerkgerät kann ein anderes Netzwerkgerät aus demselben Netzwerk, ein Edge-Gerät eines anderen Netzwerks, mit dem es verbunden ist, oder ein anderes Gerät außerhalb des Netzwerks sein. In einigen Beispielen kann das an der Netzwerkvorrichtung empfangene Paket von einer Routing-Engine der Netzwerkvorrichtung decodiert werden, um die Kennung der Zielnetzwerkvorrichtung und die Eingangs-VC zu erhalten.
  • In Schritt 102 des Verfahrens bestimmt die Routing-Engine einen Ausgabeport und a VC-Aktion aus einer dem Eingabeport zugeordneten Routing-Tabelle basierend auf dem Ziel-Netzwerkgerät. Beispielsweise können sich die Spalten der Routingtabelle auf unterschiedliche Routen für die Pakete beziehen, so dass jeder Eintrag derselben Spalte unterschiedliche Ausgangsports und ihre entsprechenden VC-Aktionen für eine bestimmte Route definiert. In einigen Beispielen kann ein Satz von Ausgangsport-VC-Aktionspaaren, die das Erreichen des Zielnetzwerks ermöglichen, von der Routing-Engine ausgewählt werden, wobei jeder Ausgangsport einer entsprechenden VC-Aktion zugeordnet ist. In solchen Beispielen kann jeder Eintrag in derselben Spalte der Routingtabelle ein Ausgangsport-VC-Aktionspaar speichern, das der jeweiligen Route zugeordnet ist. Daher indiziert das Zielnetzwerkgerät die Routingtabelle, um den Ausgabeport und die VC-Aktion für dieses Paket zu bestimmen.
  • In Schritt 103 des Verfahrens 100 bestimmt die Routing-Engine eine VC-Maske aus einer VCAT in der Netzwerkvorrichtung basierend auf der Eingangs-VC und der VC-Aktion. Diese VCAT ist der Routing-Tabelle so zugeordnet, dass es für jeden Eingangsport des Netzwerkgeräts eine einzige Routing-Tabelle und eine entsprechende VCAT gibt. Die VCAT definiert die VC-Aktionen, die die Pakete in das Netzwerk einleiten können, und bestimmt die VCs, die für ein Paket gültig sind, um eine bestimmte VC-Aktion auszuführen. Beispielsweise können sich die Spalten der VCAT auf die in der Routing-Tabelle beschriebenen VC-Aktionen beziehen, so dass jeder Eintrag derselben Spalte jedem der VCs des Netzwerks entspricht und eine andere VC-Maske umfasst. Daher lässt die VCAT nur eine Routing-Tabelle pro Port zu, während weiterhin Routing-Aktionen pro VC zulässig sind. Wenn die Routing-Engine einen Satz von Ausgangsport-VC-Aktionspaaren bestimmt, kann die Routing-Engine ferner einen Satz von jeweiligen VC-Masken aus der VCAT basierend auf der Eingangs-VC und den jeweiligen VC-Aktionen des ausgewählten Satzes von Ausgangsport-VC-Aktionen bestimmen Paare. Daher indizieren die aus dem Paket erhaltene Eingangs-VC und die aus der Routing-Tabelle erhaltenen VC-Aktionen die VCAT, um die jeweiligen VC-Masken zu bestimmen.
  • Darüber hinaus definiert die VC-Maske einen Satz von Ausgangs-VCs, die für das empfangene Paket verfügbar und gültig sind, um eine entsprechende VC-Aktion auszuführen. In einigen Beispielen ist die VC-Maske ein Bit, das mit „1“ anzeigt, welche VCs verfügbar und gültig sind, um das Paket weiterzuleiten, und mit „0“ anzeigt, welche VCs ungültig sind, um das Paket an das Zielnetzwerkgerät weiterzuleiten. In solchen Beispielen zeigt eine VC-Maske mit allen „1“ an, dass alle VCs im Netzwerk gültig sind, damit dieses Paket die bestimmte VC-Aktion ausführt, während eine VC-Maske mit allen „0“ anzeigt, dass keine der VCs gültig ist dass dieses Paket die bestimmte Aktion ausführt, was bedeutet, dass die VCs für dieses Paket ungültig sind und daher die Aktion nicht ausgeführt werden kann.
  • In einigen Beispielen kann die Routing-Engine einen Satz von Ausgangsport-VC-Maskenpaaren erzeugen, indem die VC-Aktionen aus den Ausgangsport-VC-Aktionspaaren durch die entsprechenden VC-Masken ersetzt werden, die von der VCAT erhalten wurden. Da eine bestimmte VC-Aktion in der Routingtabelle eine VC-Maske in der VCAT bestimmt (die Eingangs-VC ist für ein bestimmtes Paket festgelegt), kann die bestimmte VC durch die entsprechende VC-Maske ersetzt werden.
  • In Schritt 104 des Verfahrens 100 wählt die Routing-Engine eine bestimmte VC aus dem Satz von VCs aus, die in der VC-Maske definiert sind. Diese Auswahl kann basierend auf verschiedenen Kriterien durchgeführt werden. Zum Beispiel können die Kriterien darin bestehen, die VC mit der niedrigsten geschätzten Latenz zum Zielgerät auszuwählen, wobei die Latenz aufgrund der Verbindungen und der Netzwerkgeräte in der Route berücksichtigt wird. In einem solchen Beispiel kann die Routing-Engine jedem Ausgangsport-VC-Paar eine Gewichtung zuweisen, die basierend auf einer dieser Route zugeordneten Ausbreitungsverzögerung berechnet wird. Die jeder Route zugeordneten Gewichte können in der Routing-Tabelle, der VCAT oder in einem unabhängigen Gewichtstabellenspeicher in der Netzwerkvorrichtung gespeichert sein.
  • Schließlich leitet die Routing-Engine in Schritt 105 des Verfahrens 100 das Paket unter Verwendung des aus der Routing-Tabelle erhaltenen Ausgangsports und der bestimmten VC, die aus den gültigen VCs ausgewählt wurden, die durch die von der VCAT erhaltene VC-Maske definiert sind, an das Zielnetzwerkgerät weiter.
  • In einigen anderen Beispielen kann die Routing-Engine vor dem Routing des Pakets über den Ausgangsport und die ausgewählte VC die Kennung der VC im Header des Pakets mit der Ausgangs-VC aktualisieren. Auf diese Weise empfängt das nächste Netzwerkgerät, das das Paket auf der Route empfängt, das Paket mit einer aktualisierten Kennung der VC.
  • Daher stellen die hier beschriebenen beispielhaften Verfahren eine Abstraktion der Aktionen bereit, die Pakete beim Durchqueren von Netzwerken ausführen, und einen Mechanismus zum Bereitstellen einer Routing-Fähigkeit pro VC, während nur Routing-Tabellen auf einer Basis pro VC vorhanden sind.
  • ist ein Blockdiagramm einer beispielhaften Netzwerkvorrichtung 200, die eine Routing-Engine 205 und einen Satz von Tabellen 210 umfasst, die eine Routing-Tabelle 211 und eine zugeordnete VCAT 212 für jeden Eingangsanschluss 208 der Netzwerkvorrichtung 200 umfassen. Es versteht sich, dass die beispielhafte Netzwerkvorrichtung 200, die in 1 dargestellt ist. 2 kann zusätzliche Komponenten enthalten und dass einige der hier beschriebenen Komponenten entfernt und / oder modifiziert werden können, ohne von einem Schutzumfang der beispielhaften Netzwerkvorrichtung 200 abzuweichen. Zusätzlich ist die Implementierung der beispielhaften Netzwerkvorrichtung 200 nicht auf ein solches Beispiel beschränkt, wie es in 1 gezeigt ist. 2.
  • Das Netzwerkgerät 200, beispielsweise ein Router oder Switch, kann Teil eines Netzwerks sein, das eine beliebige Anzahl von Netzwerkgeräten umfassen kann. Die Netzwerkvorrichtung 200 umfasst eine Routing-Engine 205, die wiederum eine Aktionsauswahl-Engine 206 und eine Routenauswahl-Engine 207 umfasst. Die Routing-Engine 205 greift auf einen Satz von Tabellen 210 zu, der eine Routing-Tabelle 211 und eine zugeordnete VCAT 212 für jeden Eingangsport 208 der Netzwerkvorrichtung 200 umfasst. Die Routing-Tabelle 211 speichert alle Routen zwischen dem Netzwerkgerät 200 und jedem der übrigen Netzwerkgeräte im Netzwerk. Jede Route ist in einer Spalte der Routingtabelle gezeigt und jeder Eintrag 215 in einer bestimmten Route identifiziert einen bestimmten Ausgangsport 209 und eine zugeordnete VC-Aktion 214. Der VCAT 212 speichert wiederum VC-Masken für jeden VC im Netzwerk und für alle VC-Aktionen 214, die zuvor in der Routing-Tabelle 211 definiert wurden. Jede VC-Aktion 214 ist in einer Spalte der VCAT 212 gezeigt, und jeder Eintrag 216 einer bestimmten VC-Aktion 214 umfasst eine VC-Maske, die die gültigen VCs für das Paket 201 identifiziert, um die entsprechende VC-Aktion 214 auszuführen.
  • In einem solchen Beispiel kann das Paket 201 an der Netzwerkvorrichtung 200 über einen seiner Eingangsports 208 empfangen und von der Routing-Engine 205 decodiert werden, um die Kennung 203 der Zielnetzwerkvorrichtung und die Kennung 204 der Eingangs-VC zu extrahieren. über die das Paket 201 von dem Header des Pakets 201 und der Nutzlast 202 zu der Netzwerkvorrichtung 200 gelangt ist. Die Kennung 203 des Zielnetzwerks indiziert die Routing-Tabelle 211, um den zu verwendenden spezifischen Ausgangsport 209 und die für dieses Paket 201 durchzuführende VC-Aktion 214 zu bestimmen. Die Kennung 204 der Eingangs-VC, die aus dem Paket 201 erhalten wird, und die VC-Aktion 214, die aus der Routing-Tabelle 211 erhalten wird, indizieren die VCAT 212, um die entsprechende VC-Maske zu bestimmen. Diese VC-Maske definiert die gültige VC des Netzwerks, die von dem Paket 201 verwendet werden kann, um das Zielnetzwerkgerät unter Verwendung des Ausgangsports zu erreichen und die aus der Routingtabelle 211 erhaltene VC-Aktion auszuführen.
  • In einigen Beispielen können die Tabellen 210 eine Gewichtstabelle (in der Figur nicht gezeigt) für jeden Eingangsport 208 umfassen, in der jedem Ausgangsport 209 der Netzwerkvorrichtung 200 und jeder VC des Netzwerks ein erstes Gewicht zugeordnet ist. In einigen anderen Beispielen kann die Gewichtstabelle ein kombiniertes Gewicht für jedes mögliche Ausgangsport-VC-Paar im Netzwerk speichern. In einigen anderen Beispielen kann jeder der Einträge 215 in der Routingtabelle 211 das Gewicht speichern, das dem im Eintrag identifizierten Ausgangsport 209 zugeordnet ist, und die Einträge 216 in der VCAT 212 können die Gewichte speichern, die den in der VC als gültig gekennzeichneten VCs zugeordnet sind entsprechende VC-Maske.
  • Das Gewicht einer bestimmten VC in dem Netzwerk kann von der Routing-Engine 205 berechnet werden, indem die Überlastung der VC, die Anzahl der Sprünge zu der Zielnetzwerkvorrichtung und / oder die der bestimmten VC zugeordnete Ausbreitungsverzögerung berücksichtigt werden. Beispielsweise kann sich die Überlastung der VC auf die Verzögerung beziehen, mit der ein Paket von einem Quellknoten zu einem Zielknoten gesendet wird, und zwar aufgrund des vorhandenen Datenverkehrs auf der Route, auf die das Paket folgt. Das Gewicht eines bestimmten Ausgangsports kann von der Routing-Engine 205 unter Berücksichtigung der Warteschlangenbelegung des bestimmten Ausgangsports berechnet werden. In solchen Beispielen können die Ausgangsports einen Puffer umfassen, beispielsweise einen FIFO-Puffer (First-In-First-Out) oder einen Ringpuffer, um vorübergehend Pakete zu speichern, die an ein benachbartes Netzwerkgerät weitergeleitet werden sollen. Während die Routing-Tabelle im Beispiel von FIG. 2 zeigt drei Routen und jede Route identifiziert acht Ausgangsport-VC-Aktionspaare. In Abhängigkeit von der speziellen Topologie des Netzwerks kann eine beliebige andere Anzahl von Routen und Paaren enthalten sein.
  • In einigen Beispielen ist jede der Routingtabellen 211 eines bestimmten Netzwerkgeräts 200 kann die Routen 213 zu bestimmten Netzwerkzielgeräten und in einigen Fällen Metriken (Entfernungen) auflisten, die diesen Routen 213 zugeordnet sind. Die Routingtabelle 211 eines bestimmten Netzwerkgeräts 200 kann ferner Informationen über die Topologie des Netzwerks unmittelbar um das bestimmte Netzwerkgerät 200 enthalten. Die Routingtabellen 211 und die VCATs 212 eines bestimmten Netzwerkgeräts 200 können automatisch und dynamisch von jedem Netzwerkgerät 200 durch „Ermitteln“ von Prozeduren erzeugt werden, oder sie können periodisch von einer Netzwerksteuerung für jedes der Netzwerkgeräte 200 von bereitgestellt werden das Netzwerk. In beiden Fällen kann jede Änderung der Netzwerktopologie automatisch einen Aktualisierungsprozess in den Tabellen 210 in allen oder einem Teil der Netzwerkgeräte des Netzwerks auslösen.
  • ist ein Blockdiagramm eines beispielhaften Systems, das eine Routing-Engine 300, eine Routing-Tabelle 307 und eine zugeordnete VCAT 308 eines Netzwerkgeräts (in der Figur nicht gezeigt) enthält, wobei Pakete unter Berücksichtigung der VC-Aktionen an ein Zielnetzwerkgerät weitergeleitet werden von den Paketen durchgeführt werden. Es versteht sich, dass das in 3 gezeigte System 300. 3 kann zusätzliche Komponenten enthalten und dass einige der hier beschriebenen Komponenten entfernt und / oder modifiziert werden können, ohne von einem Schutzumfang des beispielhaften Systems 300 abzuweichen. Zusätzlich ist die Implementierung des Systems 300 nicht auf ein solches Beispiel beschränkt, wie es in 3 gezeigt ist. 3.
  • Die Routenauswahlmaschine 300 umfasst eine Aktionsauswahlmaschine 301 und eine Routenauswahlmaschine 302. Ein Paket 303 wird an der Netzwerkvorrichtung über einen ihrer Eingangsports empfangen und von der Routing-Engine 300 decodiert, um den Identifizierer 305 der Zielnetzwerkvorrichtung, den Identifizierer 306 des Eingangs-VC, zu dem das Paket 303 gelangt ist, zu extrahieren das Netzwerkgerät und die Nutzlast 304. Dann wird die Kennung 305 des Zielnetzwerks von der Routing-Engine 300 verwendet, um die Routing-Tabelle 307 zu indizieren, um die Einträge mit Ausgangsport-VC-Aktionspaaren zu bestimmen, die zum Erreichen des Zielnetzwerks gültig sind. Die Kennung 306 der Eingangs-VC wird wiederum von der Routing-Engine 300 verwendet, um die der Routing-Tabelle 307 zugeordnete VCAT 308 zu indizieren, um die entsprechenden VC-Masken zu bestimmen, die gültige VCs des Netzwerks definieren, die von dem Paket 303 verwendet werden können erreichen Sie das Ziel-Netzwerkgerät. Die Routing-Tabelle 307 und die zugehörige VCAT 308 in 3 sind die Tabellen, die dem Eingangsport zugeordnet sind, über den das Paket 303 zu der Netzwerkvorrichtung gelangt ist. Jeder der anderen Eingangsports des Netzwerkgeräts ist einem entsprechenden Routing-Tabelle-VCAT-Paar zugeordnet.
  • In einem solchen Beispiel umfasst die Routingtabelle 307 drei Spalten, die drei verschiedenen Routenoptionen 309 - 311 pro Ziel entsprechen. In diesem Beispiel enthält jede Spalte fünf verschiedene OutputPort-VCaction-Paare, die fünf möglichen Zielen entsprechen. Während das Beispiel von 3 in einem Netzwerkgerät implementiert werden kann, das fünf verschiedene Ausgangsports (OutputPort0-4) umfasst und drei verschiedene VC-Aktionen (VCactionsO-2) definiert, kann eine beliebige andere Anzahl von Ausgangsports und VC-Aktionen enthalten sein. Die VCAT 308 umfasst drei Spalten, die den drei vordefinierten VC-Aktionen 312 - 314 (VCactionsO-2) entsprechen, und drei Zeilen, die den drei verschiedenen VCs (VCO-2) des Netzwerks entsprechen.
  • In einem solchen Beispiel indiziert die Kennung 305 des Zielnetzwerks ein OutputPort-VCaction-Paar von jeder der drei Routen der Routingtabelle. In einigen anderen Beispielen kann der Identifizierer 305 eine beliebige andere Anzahl von Paaren indizieren, die allen oder einem Teil der in der Routingtabelle 307 gespeicherten Routen entsprechen. Insbesondere indiziert die Kennung 305 des Zielnetzwerks die zweite Zeile der Routing-Tabelle, die OutputPort2-VCactionO, OutputPortl-VCaction2 und OutputPortO-VCactionl auswählt. OutputPort2-VCactionO entspricht der Routenoption 0 und gibt an, dass das Zielnetzwerkgerät erreicht werden kann, indem das Paket 303 über den Ausgangsport 2 des Netzwerkgeräts weitergeleitet und VCactionO 312 ausgeführt wird, beispielsweise indem das Paket über das Minimum an das Zielnetzwerkgerät weitergeleitet wird Route. OutputPortl -VCaction2 entspricht der Routenoption 2 und gibt an, dass das Zielnetzwerkgerät erreicht werden kann, indem das Paket 303 über den Ausgangsport 1 des Netzwerkgeräts weitergeleitet und VCaction2 314 ausgeführt wird, beispielsweise um das Paket 303 an das nächste Netzwerkgerät in der Route weiterzuleiten und Erhöhen der VC. OutputPortO-VCaction1 314 entspricht der Routenoption 2 und definiert, dass das Zielnetzwerkgerät erreicht werden kann, indem das Paket 303 über den Ausgangsport 0 des Netzwerkgeräts weitergeleitet wird und VCaction1 313 ausgeführt wird, beispielsweise indem das Paket 303 an das Zielnetzwerkgerät weitergeleitet wird eine nicht-minimale Route.
  • In einem solchen Beispiel indiziert die Kennung 306 der eingehenden VC für jede VC-Aktion, die in den aus der Routing-Tabelle 307 ausgewählten OutputPort-VCaction-Paaren identifiziert ist, eine VCMask von der VCAT 308. Wenn beispielsweise „VC0“ als Eingangs-VC und VCactionO-2 in den ausgewählten OutputPort-VCaction-Paaren identifiziert ist, werden die VCMaskO, VCMask3 und VCMask6 aus der VCAT 308 ausgewählt. Beispielsweise ist VCMaskO das Bitfeld „000“, das darstellt, dass keine der VCs des Netzwerks gültig ist, um das Paket 303 über die Minimalroute (VCactionO 312) an das Zielnetzwerkgerät weiterzuleiten, VCMask3 ist das Bitfeld „1“ 1 1 ", der angibt, dass alle VCs des Netzwerks gültig sind, um das Paket 303 über eine nicht-minimale Route (VCaction1 313) an das Zielnetzwerkgerät weiterzuleiten, und VCMask6 ist das Bitfeld„ 010 “, das angibt, dass nur VC1 gültig ist Weiterleiten des Pakets 303 an das nächste Netzwerkgerät in der Route und Inkrementieren der VC (VCaction2 314).
  • Dann ersetzt die Aktionsauswahlmaschine 301 der Routingmaschine 300 bei 315 die VCactions aus den ausgewählten OutputPort-VCaction-Paaren mit der entsprechenden VCMask, die aus dem VCAT 308 ausgewählt wurde, wodurch ein Satz von OutputPort-VCMask-Paaren erstellt wird. Insbesondere werden das OutputPort2-VCMaskO-Paar, das OutputPortl-VCMask6-Paar und das OutputPortO-VMask3-Paar erstellt. Diese drei OutputPort-VCMask-Paare sind drei verschiedene Alternativen zum Weiterleiten des Pakets 303 an das Zielnetzwerkgerät.
  • Danach wählt die Routenauswahlmaschine 302 der Routenauswahlmaschine 300 bei aus 316 Ein OutputPort-VCMask-Paar aus den drei Alternativen von OutputPort-VCMask-Paaren basierend auf vordefinierten Kriterien. In einem solchen Beispiel wird das OutputPort2-VCMaskO-Paar von der Routenabschnitt-Engine 302 verworfen, da VCMaskO („000“) angibt, dass keine der VCs des Netzwerks gültig ist, um das Paket 303 an das Zielnetzwerkgerät weiterzuleiten. Das OutputPortl-VMask6-Paar kann von der Routenauswahlmaschine 302 ausgewählt werden, da VCMask6 („010“) angibt, dass VC1 zum Weiterleiten des Pakets 303 an das Zielnetzwerkgerät gültig ist. Das OutputportO-VCMask3-Paar kann von der Routenauswahlmaschine 302 ausgewählt werden, da VCMask3 („1 1 1“) anzeigt, dass alle VCs des Netzwerks gültig sind, um das Paket 303 an das Zielnetzwerkgerät weiterzuleiten.
  • In einem solchen Beispiel die Kriterien für die Auswahl zwischen OutputPortl -VCMask6-Paar Das Paar (VC1) und OutputPortO-VMask3 (VC0, VC1, VC2) wählt möglicherweise die VC mit der niedrigsten geschätzten Latenz zum Zielgerät aus, wobei die Latenz aufgrund der Verbindungen und der Netzwerkgeräte auf der Route berücksichtigt wird. In einigen Beispielen kann die Routenauswahlmaschine 302 ferner die VC-Masken aus den ausgewählten Outputport-VC-Masken-Paaren durch die entsprechenden gültigen VCs ersetzen, wodurch ein Satz von OutputPort-VC-Paaren erzeugt wird. In diesem Beispiel erstellt die Routenauswahlmaschine 302 einen Satz von OutputPort-VC-Paaren, einschließlich OutputPortO-VCO, OutputPortO-VC1, OutputPortO-VC2 und OutputPortl-VC1. Dann kann die Routing-Engine 300 jedem OutputPort-VC-Paar eine Gewichtung zuweisen, die basierend auf einer geschätzten Latenzzeit berechnet wird, die dieser Route zugeordnet ist. Die jeder Route zugeordneten Gewichte können in der Routing-Tabelle 307, der VCAT 308 oder in einer unabhängigen Gewichtstabelle gespeichert sein, die in der Netzwerkvorrichtung gespeichert ist (nicht gezeigt). Beispielsweise hat das OutputPortO-VCO-Paar ein zugeordnetes Gewicht von „3“, das OutputPortO-VC1-Paar ein zugeordnetes Gewicht von „1“, das OutputPortO-VC2-Paar ein zugeordnetes Gewicht von „6“ und das OutputPortl - Dem VC1-Paar ist ein Gewicht von „8“ zugeordnet.
  • Infolgedessen wählt die Routenauswahlmaschine 302 bei 316 den Ausgangsport 0 und den VC1 aus, um das Paket 303 an die Zielnetzwerkvorrichtung weiterzuleiten. Zuletzt leitet die Routing-Engine 300 das Paket unter Verwendung des von der Routing-Tabelle 307 erhaltenen Ausgangsports 0 und des von der VCAT 308 erhaltenen VC1 an die Zielnetzwerkvorrichtung weiter.
  • ist ein Blockdiagramm einer beispielhaften Netzwerkvorrichtung 400 zum Routing virtueller Kanäle, in der ein maschinenlesbares Speichermedium 405 Anweisungen speichert, die von einer Verarbeitungsressource einer Routing-Engine 401 auszuführen sind. Es versteht sich, dass die Netzwerkvorrichtung 400, die in 4 dargestellt ist. 4 kann zusätzliche Komponenten enthalten und dass einige der hier beschriebenen Komponenten entfernt und / oder modifiziert werden können, ohne von einem Schutzumfang der beispielhaften Netzwerkvorrichtung 400 abzuweichen. Zusätzlich ist die Implementierung der Netzwerkvorrichtung 400 nicht auf ein solches Beispiel beschränkt. Es versteht sich auch, dass die Routing-Engine 401 eine Kombination aus Hardware- und Softwarelogik in der Netzwerkvorrichtung 400 zum Weiterleiten von Paketen über virtuelle Kanäle von einer Quellnetzwerkvorrichtung zu einer Zielnetzwerkvorrichtung in einem Netzwerk darstellen kann, wobei die durchzuführenden VC-Aktionen berücksichtigt werden die Pakete.
  • Die Netzwerkvorrichtung 400 ist so dargestellt, dass sie eine Mehrzahl von Eingangsports 410, über die Pakete 412 von Daten empfangen werden, eine Mehrzahl von Ausgangsports 41 1, über die Pakete 412 zu ihren Zielnetzwerkvorrichtungen weitergeleitet werden, ein maschinenlesbares Speichermedium 405, einschließt Routing-Engine 401 und einen Satz von Tabellen 402. Der Satz von Tabellen 402 umfasst eine Routingtabelle 403 und eine zugeordnete VCAT 404 für jeden der Eingangsports 410 der Netzwerkvorrichtung 400. Die Routing-Engine 401 kann Hardware- und Softwarelogik zum Ausführen von Anweisungen enthalten, wie beispielsweise die Anweisungen 406 - 409, die in dem maschinenlesbaren Speichermedium 405 gespeichert sind. Die Tabellen 402 können in dem maschinenlesbaren Speichermedium 405 gespeichert sein oder können in einem unabhängigen und internen Speicher (in der Figur nicht gezeigt) der Netzwerkvorrichtung 400 gespeichert sein. In einigen Beispielen kann jede Routingtabelle 403 für jeden Eingangsport 410 alle möglichen Routen zwischen der aktuellen Netzwerkvorrichtung 400 und den übrigen Netzwerkvorrichtungen im Netzwerk speichern.
  • In einem solchen Beispiel können die empfangenen Pakete 412 eine Kennung des Zielnetzwerks und eine Kennung der Eingangs-VC in ihren Headern speichern. Die Routing-Engine 401 bestimmt in Reaktion auf den Empfang eines Pakets 412 über einen bestimmten Eingangsport 410 der Netzwerkvorrichtung 400 bei 406 einen Ausgangsport und eine VC-Aktion aus der Routing-Tabelle 403, die diesem bestimmten Eingangsport 410 zugeordnet sind, basierend auf der Kennung des Zielnetzwerks, das in dem Paket 412 gespeichert ist. Die Routing-Engine 401 bestimmt ferner bei 407 eine VC-Maske aus der VCAT 404 basierend auf der Eingangs-VC, die von dem Paket 412 verwendet wird, um an der Netzwerkvorrichtung 400 anzukommen, und der VC-Aktion, die aus der Routing-Tabelle 403 bestimmt wird. Die VCAT 404 ist der Routing-Tabelle 403 zugeordnet, und die VC-Maske definiert einen Satz von VCs, die das Weiterleiten des Pakets 412 an das Zielnetzwerkgerät ermöglichen.
  • Dann wählt die Routing-Engine 401 bei 408 weiter eine bestimmte VC aus dem Satz von VCs der VC-Maske aus. Diese Auswahl kann auf der Grundlage eines bestimmten Kriteriums getroffen werden, beispielsweise der Auswahl der VC mit dem niedrigsten Gewicht. Schließlich leitet die Routing-Engine 401 bei 409 das Paket 412 unter Verwendung des Ausgangsports und der zuvor ausgewählten bestimmten VC weiter an das Zielnetzwerkgerät.
  • In einigen Beispielen kann die Routing-Engine 401 auch die Routing-Tabelle erzeugen 403 Speichern eines Satzes von Routen, wobei jede Route einen Satz von Ausgangsports aufweist, die einer jeweiligen VC-Aktion zugeordnet sind. Die VC-Aktion ist eine Aktion, die angibt, wie das Paket 412 bei einem bestimmten Netzwerksprung zwischen zwei Netzwerkgeräten von einer VC zu einer anderen VC übergehen soll. In einem solchen Beispiel kann die Routing-Engine 401 auch die der Routing-Tabelle 403 zugeordnete VCAT 404 erzeugen, wobei die VCAT 404 eine VC-Maske für jede VC im Netzwerk und für jede in der Routing-Tabelle 403 definierte VC-Aktion speichert.
  • In einigen anderen Beispielen wählt die Routing-Engine 401 alle möglichen Paare von Ausgangsports und jeweiligen VC-Aktionen aus der Routing-Tabelle 403 basierend auf der Zielnetzwerkvorrichtung aus. In einem solchen Beispiel kann die Routing-Engine 401 ferner alle möglichen VC-Masken aus der VCAT basierend auf der Eingangs-VC und der VC-Aktion auswählen. Dann kann die Routing-Engine 401 auch jede VC-Aktion aus den ausgewählten Paaren von Ausgangsports und VC-Aktionen durch die entsprechende VC-Maske ersetzen, die aus der VCAT 404 ausgewählt wurde, wodurch ein Satz von Paaren von Ausgangsports mit entsprechenden VC-Masken erzeugt wird. Schließlich kann die Routing-Engine 401 ein Paar von Ausgangsanschlüssen und VC-Masken aus dem Satz von Paaren von Ausgangsanschlüssen und VC-Masken auswählen.
  • Die Routing-Engine 401 kann Hardware- und Softwarelogik enthalten, um die oben in Bezug auf die Anweisungen 406 - 409 beschriebenen Funktionalitäten auszuführen. Das maschinenlesbare Speichermedium 405 kann sich entweder in der Computervorrichtung befinden, die die maschinenlesbaren Anweisungen ausführt, oder von der Computervorrichtung entfernt, aber zur Ausführung für diese zugänglich sein (z. B. über ein Computernetzwerk).
  • Wie hierin verwendet, kann ein „maschinenlesbares Speichermedium“ eine beliebige elektronische, magnetische, optische oder andere physikalische Speichervorrichtung sein, um Informationen wie ausführbare Anweisungen, Daten und dergleichen zu enthalten oder zu speichern. Zum Beispiel kann jedes maschinenlesbare Speichermedium, das hier beschrieben wird, ein Random Access Memory (RAM), ein flüchtiger Speicher, ein nichtflüchtiger Speicher, ein Flash-Speicher, ein Speicherlaufwerk (z. B. eine Festplatte) oder ein Solid State Drive sein Art der Speicherplatte (z. B. eine CD, eine DVD usw.) und dergleichen oder eine Kombination davon. Ferner kann jedes hierin beschriebene maschinenlesbare Speichermedium nichtflüchtig sein. In den hier beschriebenen Beispielen kann ein maschinenlesbares Speichermedium oder -medium Teil eines Artikels (oder Herstellungsartikels) sein. Ein Artikel oder ein Herstellungsartikel kann sich auf jede hergestellte Einzelkomponente oder mehrere Komponenten beziehen.
  • Die hier beschriebenen Routing-Techniken für virtuelle Kanäle verbessern die Routing-Flexibilität von Routing-Tabellen pro VC, während sie den Platz-Overhead von Routing-Tabellen pro Port haben. Dies ermöglicht die Implementierung von Routing-Algorithmen mit sehr hoher Leistung, die in die Routing-Tabellen von Netzwerkgeräten passen, bei denen der Platz eine ernsthafte Einschränkung darstellt. Die Platzersparnis dieser Techniken ist proportional zur Anzahl der im System vorhandenen VCs. Beispielsweise würde ein System mit 32 VCs und 64 Ports pro Gerät 2.048 Routingtabellen pro Gerät erfordern, wenn es auf VC-Basis implementiert wird. Die beschriebenen Routing-Techniken für virtuelle Kanäle bieten jedoch die gleiche Routing-Leistung mit nur 64 Routingtabellen neben 64 VCATs (die von Natur aus klein sind).

Claims (20)

  1. Verfahren (100), umfassend: Empfangen (101) eines Pakets (201; 303; 412) an einem Eingangsport (208) eines Netzwerkgeräts (200) eines Netzwerks, wobei das Paket (201; 303; 412) über einen virtuellen Eingangskanal (Eingangs-VC) kommt und an ein Zielnetzwerkgerät über einen Ausgabeport (209) und einem durch eine Routing-Engine (205; 300; 401) des Netzwerkgeräts (200) bestimmten virtuellen Ausgangskanal weitergeleitet werden soll; Bestimmen (102) eines Paares eines Ausgabeports (209) und einer virtuellen Kanal - Aktion (VC-Aktion) (214; 312-314), wobei das Paar aus einer ersten Routing-Tabelle (211; 307; 403) von mehreren Routing-Tabellen im Netzwerkgerät (200) erhalten wird, wobei die erste Routing-Tabelle (211; 307; 403) dem Eingangsport (208) zugeordnet ist, wobei das Bestimmen des Paares auf einer Kennung (203; 305) des Zielnetzwerkgeräts, die im Paket (201; 303; 412) gespeichert ist, basiert; Bestimmen (103) einer virtuellen Kanal - Maske (VC-Maske) anhand der Eingangs-VC und der VC-Aktion (214; 312-314) durch die Routing-Engine (205; 300; 401) aus einer virtuellen Kanalaktionstabelle (VCAT) (212; 308; 404) im Netzwerkgerät (200), wobei die VCAT (212; 308; 404) der ersten Routing-Tabelle (211; 307; 403) zugeordnet ist und die VC-Maske einen ersten Satz von verfügbaren virtuellen Ausgabekanälen (Ausgabe VCs) definiert, um das Paket (201; 303; 412) an das Zielnetzwerkgerät weiterzuleiten; Auswählen (104) eines bestimmten virtuellen Kanals (VC) aus dem in der VC-Maske definierten ersten Satz von verfügbaren Ausgabe VCs durch die Routing-Engine (205; 300; 401); und Weiterleiten (105) des Pakets (201; 303; 412) an das Zielnetzwerkgerät durch die Weiterleitungsmaschine unter Verwendung des Ausgabeports (209) und des bestimmten VC.
  2. Verfahren nach Anspruch 1, weiterhin umfassend eine VCAT (212; 308; 404), die der Routing-Tabelle (211; 307; 403) für jeden Eingangsport (208) des Netzwerkgeräts (200) zugeordnet ist.
  3. Verfahren nach Anspruch 1, wobei das Bestimmen des Paares aus der Routingtabelle das Identifizieren eines zweiten Satzes möglicher Paare von Ausgabeports (209) und entsprechender VC-Aktionen (214; 312-314) aus der Routing-Tabelle (211; 307; 403) basierend auf dem Zielnetzwerkgerät durch die Routing-Engine (205; 300; 401) umfasst, wobei jedes mögliche Paar aus dem zweiten Satz möglicher Paare eine zugehörende Gewichtung aufweist.
  4. Verfahren nach Anspruch 1, wobei das Bestimmen der VC-Maske aus der VCAT (212; 308; 404) das Auswählen eines dritten Satzes möglicher VC-Masken aus der VCAT (212; 308; 404) durch die Routing-Engine (205; 300; 401) basierend auf der Eingangs-VC und der VC-Aktion (214; 312-314) umfasst.
  5. Verfahren nach Anspruch 4, weiter umfassend das Ersetzen jeder VC-Aktion (214; 312-314) aus dem zweiten Satz möglicherden ausgewählten Paaren von Ausgangsports und entsprechender VC-Aktionen (214; 312-314) durch eine entsprechende aus dem dritten Satz ausgewählte VC-Maske, wobei ein vierter Satz von Paaren von Ausgangsports mit entsprechenden VC-Masken erzeugt wird.
  6. Verfahren nach Anspruch 5, weiterhin umfassend das Auswählen eines Paars von Ausgangsanschlüssen und VC-Masken aus dem vierten Satz von Paaren von Ausgangsanschlüssen mit entsprechenden VC-Masken.
  7. Verfahren nach Anspruch 1, weiter umfassend: Erhalten einer bestimmten Routing-Tabelle als die erste Routing-Tabelle (211; 307; 403), wobei die bestimmte Routing-Tabelle einem bestimmten Eingangsport (208) des Netzwerkgeräts (200) zugeordnet ist, wobei: die bestimmte Routing-Tabelle einen Sammlung von Routen speichert, wobei jede Route in der Sammlung von Routen einen oder mehrere Ausgabeports (209) aufweist, die einer jeweiligen VC-Aktion (214; 312-314) zugeordnet sind, wobei die jeweilige VC-Aktion (214; 312-314) eine Aktion ist, die mit Bezug auf eine Bewegung des Pakets (201; 303; 412) zwischen einem ersten Netzwerkgeräte und einem Zielnetzwerkgerät ausgewählt ist, wobei die Bewegung eine VC-Neuzuordnung einschließt um das Packet von einem ersten VC an einen zweiten VC zu übertragen.
  8. Verfahren nach Anspruch 1, wobei das Empfangen des Pakets (201; 303; 412) am Netzwerkgerät (200) das Decodieren des Pakets (201; 303; 412) durch die Routing-Engine (205; 300; 401) umfasst, um die Kennung (203; 305) des Zielnetzwerkgeräts und eine Kennung (204; 306) der Eingangs-VC zu erhalten.
  9. Nichtflüchtiges maschinenlesbares Speichermedium mit Anweisungen, die von einer Routing-Engine eines Netzwerkgeräts (200) ausgeführt werden können, um: in Reaktion auf den Empfang eines Pakets (201; 303; 412) im Netzwerkgerät, eine erste Bestimmung eines Ausgabeports (209) und einer virtuellen Kanal-Aktion (VC-Aktion) (214; 312-314) aus einer ersten Routing-Tabelle (211; 307; 403) von mehreren Routing-Tabellen im Netzwerkgerät (200) durchzuführen, die erste Bestimmung basierend auf einer Kennung (203;305) des Zielnetzwerkgeräts, die in dem Paket (201; 303; 412) gespeichert ist; erhalten einer virtuellen Kanal-Maske (VC-Maske) aus einer virtuellen Kanalaktionstabelle (VCAT) (212; 308; 404) im Netzwerkgerät (200) basierend auf einem vom Paket (201; 303; 412) und der VC-Aktion (214; 312-314) verwendeten virtuellen Eingangskanal (Eingangs-VC), wobei die VCAT (212; 308; 404) der ersten Routing-Tabelle (211; 307; 403) zugeordnet ist, wobei die VC-Maske einen ersten Satz von verfügbaren virtuellen Kanälen (VCs) definiert, der das Weiterleiten des Pakets (201; 303; 412) an das Zielnetzwerkgerät ermöglicht; wählen eines bestimmten VC aus dem erstem Satz von verfügbaren VCs wie in der VC-Maske identifiziert; und weiterleiten des Pakets (201; 303; 412) an das Zielnetzwerkgerät unter Verwendung des Ausgabeports (209) und der bestimmten VC.
  10. Nichtflüchtiges maschinenlesbares Speichermedium nach Anspruch 9, wobei die Anweisungen die erste Bestimmung des Ausgabeports (209) und der VC-Aktion (214; 312-314) aus der ersten Routing-Tabelle (211; 307; 403) zu machen Anweisungen zum Identifizieren aller möglichen Paare von Ausgabeports (209) und jeweiligen VC-Aktionen (214; 312-314) aus der ersten Routing-Tabelle (211; 307; 403) basierend auf dem Zielnetzwerkgerät umfassen.
  11. Nichtflüchtiges maschinenlesbares Speichermedium nach Anspruch 9, wobei die Anweisungen zum Erhalten der VC-Maske aus der VCAT (212; 308; 404) Anweisungen zum Identifizieren aller möglichen VC-Masken aus der VCAT (212; 308; 404) basierend auf der Eingangs-VC und der VC-Aktion (214; 312-314) umfassen.
  12. Nichtflüchtiges maschinenlesbares Speichermedium nach Anspruch 10, weiter umfassend Anweisungen zum Ersetzen jeder jeweiligen VC-Aktion (214; 312-314) aus den identifizierten Paaren von Ausgabeports (209) und jeweiligen VC-Aktionen (214; 312-314) durch eine entsprechende VC-Maske, die aus der VCAT (212; 308; 404) ausgewählt wurde, wodurch ein zweiter Satz von Paaren von Ausgabeports (209) mit entsprechender VC Masken erzeugt wird.
  13. Nichtflüchtiges maschinenlesbares Speichermedium nach Anspruch 12, das Anweisungen zum Auswählen eines Paares von Ausgabeports (209) und VC-Masken aus dem zweiten Satz von Paaren von Ausgabeports (209) mit entsprechenden VC-Masken umfasst.
  14. Nichtflüchtiges maschinenlesbares Speichermedium nach Anspruch 9, das Anweisungen umfasst, um: eine bestimmte Routing-Tabelle als die erste Routing-Tabelle (211; 307; 403) zu erhalten, wobei die bestimmte Routing-Tabelle einem bestimmten Eingangsport (208) des Netzwerkgeräts (200) zugeordnet ist, wobei die bestimmte Routing-Tabelle einen dritten Satz von Routen speichert und jede Route einen oder mehrere Ausgabeports (209) aufweist zugeordnet zu einer jeweiligen VC-Aktion (214; 312-314), und wobei die jeweilige VC-Aktion (214; 312-314) eine Aktion ist, die in Bezug auf eine Bewegung des Pakets (201; 303; 412) zwischen zwei Netzwerkgeräten (200) innerhalb des Netzwerks ausgewählt ist, wobei die Bewegung eine VC-Neuzuordnung um das Packet von einem ersten VC zu einem zweiten VC zu übertagen beinhaltet.
  15. Nichtflüchtiges maschinenlesbares Speichermedium nach Anspruch 9, wobei die Anweisungen die erste Bestimmung durchzuführen Anweisungen zum Decodieren des Pakets (201; 303; 412) umfassen, um eine Kennung (203; 305) des Zielnetzwerkgeräts und der Eingangs-VC zu erhalten.
  16. Netzwerkgerät (200), umfassend: mindestens einen Eingangsport (208); mindestens einen Ausgabeport (209); eine Mehrzahl von Routing-Tabellen, einschlieslich einer ersten Routing-Tabelle (211; 307; 403) und einer virtuellen Kanalaktionstabelle (VCAT) (212; 308; 404), die jedem Eingangsport (208) zugeordnet sind, wobei die erste Routing-Tabelle (211; 307; 403) einen ersten Satz von Routen speichert und jede Route im ersten Satz von Routen mindestens einen Ausgabeport (209) aufweist, der einer jeweiligen virtuellen Kanal-Aktion (VC-Aktion) (214; 312-314) zugeordnet ist, wobei die VCAT (212; 308; 404) virtuelle Kanal- Masken (VC-Masken) für jede VC-Aktion (214; 312-314) speichert, wobei die VC-Masken einen zweiten Satz von verfügbaren virtuellen Kanälen (VCs) definieren mit Bezug auf im Netzwerk definierten VCs, die das Weiterleiten des Pakets (201; 303; 412) an ein Zielnetzwerkgerät ermöglichen; und ein Routing-Engine (205; 300; 401) zum Bestimmen eines bestimmten Ausgabeports (209) und einer VC-Aktion (214; 312-314) aus der ersten Routing-Tabelle (211; 307; 403) basierend auf einer Kennung (203; 305) des Zielnetzwerkgeräts, die in einem empfangenen Paket (201; 303; 412) gespeichert ist, erhalten eine Instanz einer VC-Maske von den im VCAT (212; 308; 404) gespeicherten VC Masken, wobei die Instanz der VC-Maske auf einem virtuellen Eingangskanal (Eingangs-VC), der von dem empfangenen Paket verwendet wird und der VC-Aktion (214; 312-314) basiert; wählen eines bestimmten virtuellen Kanals (VC) basierend auf der bestimmten VC, die in der Instanz der VC-Maske als verfügbar identifiziert wurde; und weiterleiten des Pakets (201; 303; 412) unter Verwendung des Ausgabeports (209) und der bestimmten VC an das Zielnetzwerkgerät.
  17. Netzwerkgerät (200) nach Anspruch 16, wobei die Routing-Engine (205; 300; 401) eine bestimmte Routing-Tabelle als die erste Routing-Tabelle (211; 307; 403) bestimmt, basierend darauf dass diese Routing-Tabelle einem bestimmten Eingangsport (208) des Netzwerkgeräts (200) zugeordnet ist, und die VCAT (212; 308; 404) bestimmt, die der bestimmten Routing-Tabelle zugeordnet ist.
  18. Netzwerkgerät (200) nach Anspruch 16, wobei die VC-Aktion (214; 312-314) eine Aktion ist, die mit Bezug auf eine Bewegung des Pakets (201; 303; 412) zwischen zwei Netzwerkgeräten innerhalb des Netzwerks ausgewählt ist, wobei die Bewegung eine VC-Neuzuordnung einschließt um das Packet von einem ersten VC an einen zweiten VC zu übertragen.
  19. Netzwerkgerät (200) nach Anspruch 16, wobei die Routing-Engine (205; 300; 401) eine Aktionsauswahl-Engine (301) umfasst, um VC-Aktionen (214; 312-314) aus Ausgabeports-VC Aktions Paaren durch entsprechende VC-Masken zu ersetzen, die aus der VCAT (212; 308; 404) ausgewählt wurden, wodurch ein drittter Satz von Paaren von Ausgabeports (209) mit entsprechende VC Masken erstellt wird.
  20. Netzwerkgerät (200) nach Anspruch 19, wobei die Routing-Engine (205; 300; 401) eine Routenauswahl-Engine (302) umfasst, um ein Paar von Ausgabeports (209) und VC-Masken aus dem dritten Satz von Paaren von Ausgabeports (209) mit entsprechenden VC-Masken auszuwählen.
DE112018002716.3T 2017-05-26 2018-05-23 Virtuelles Kanalrouting Active DE112018002716B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/606,402 US10491545B2 (en) 2017-05-26 2017-05-26 Virtual channel routing
US15/606,402 2017-05-26
PCT/US2018/034242 WO2018217960A1 (en) 2017-05-26 2018-05-23 Virtual channel routing

Publications (2)

Publication Number Publication Date
DE112018002716T5 DE112018002716T5 (de) 2020-02-20
DE112018002716B4 true DE112018002716B4 (de) 2022-06-09

Family

ID=64396054

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018002716.3T Active DE112018002716B4 (de) 2017-05-26 2018-05-23 Virtuelles Kanalrouting

Country Status (4)

Country Link
US (1) US10491545B2 (de)
CN (1) CN110679123B (de)
DE (1) DE112018002716B4 (de)
WO (1) WO2018217960A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230224244A1 (en) * 2022-01-11 2023-07-13 Nokia Solutions And Networks Oy Network device including trained neural network

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078226A1 (en) 2000-12-15 2002-06-20 Kei Kato Datagram transmission device
US20050078601A1 (en) 2003-10-14 2005-04-14 Broadcom Corporation Hash and route hardware with parallel routing scheme
US8094659B1 (en) 2007-07-09 2012-01-10 Marvell Israel (M.I.S.L) Ltd. Policy-based virtual routing and forwarding (VRF) assignment

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101181A (en) 1997-11-17 2000-08-08 Cray Research Inc. Virtual channel assignment in large torus systems
US20040268387A1 (en) * 2001-06-11 2004-12-30 Bertrand Wendling Field of programme delivery
US7042842B2 (en) 2001-06-13 2006-05-09 Computer Network Technology Corporation Fiber channel switch
US7218638B2 (en) 2002-05-15 2007-05-15 Broadcom Corporation Switch operation scheduling mechanism with concurrent connection and queue scheduling
US7656898B2 (en) 2003-09-18 2010-02-02 Brocade Communications Systems, Inc. Virtual channel remapping
US7852836B2 (en) 2003-11-19 2010-12-14 Cray Inc. Reduced arbitration routing system and method
US7773616B2 (en) 2006-11-08 2010-08-10 Sicortex, Inc. System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
US7843929B2 (en) 2007-04-20 2010-11-30 Cray Inc. Flexible routing tables for a high-radix router
US8224885B1 (en) * 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US8139490B2 (en) 2009-12-21 2012-03-20 Google Inc. Deadlock prevention in direct networks of arbitrary topology
US9009756B2 (en) 2011-04-13 2015-04-14 Comcast Cable Communications, Llc Virtual channel map masking
CN105721355A (zh) * 2016-01-29 2016-06-29 浪潮(北京)电子信息产业有限公司 一种片上网络路由传输报文的方法及片上网络路由

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078226A1 (en) 2000-12-15 2002-06-20 Kei Kato Datagram transmission device
US20050078601A1 (en) 2003-10-14 2005-04-14 Broadcom Corporation Hash and route hardware with parallel routing scheme
US8094659B1 (en) 2007-07-09 2012-01-10 Marvell Israel (M.I.S.L) Ltd. Policy-based virtual routing and forwarding (VRF) assignment

Also Published As

Publication number Publication date
US20180343210A1 (en) 2018-11-29
US10491545B2 (en) 2019-11-26
WO2018217960A1 (en) 2018-11-29
DE112018002716T5 (de) 2020-02-20
CN110679123A (zh) 2020-01-10
CN110679123B (zh) 2022-02-25

Similar Documents

Publication Publication Date Title
DE112020002528B4 (de) Algorithmen für die verwendung von lastinformationen von benachbarten knoten beim adaptiven routing
DE69730392T2 (de) Verbindungsmatrix basierte Multikosten-Leitweglengkung
DE69832884T2 (de) Wegesucheinheit mit zuteilung von virtuellen kanälen
DE69834122T2 (de) Verbindingsunterstützung in einer hochleistungsnetzwerkvorrichtung
DE60202136T2 (de) Cache-eintrag-auswahlverfahren und -vorrichtung
DE69025713T2 (de) Dynamische Fensterbestimmung in einem Datennetzwerk
DE69934644T2 (de) Netzwerkvermittlungseinrichtung mit auf der Basis von Benutzung verteilten Umleitungsdatenbanken
DE60024228T2 (de) Dynamische zuweisung verkehrsklassen an einer prioritätswarteschlange in einer paketbeförderungsvorrichtung
DE112009000834B4 (de) Expressvirtuelle Kanäle in einem Paketvermittelten Auf-Chip Verbindungsnetzwerk
DE69325398T2 (de) Weiterleitung von bandbreitenreservierten verbindungen in informationsnetzwerken
DE69733703T2 (de) Puffer von Mehrfachsendezellen in Vermittlungsnetzen
DE69834763T2 (de) Verfahren zur Unterstützung von verbindungsindividuellen Warteschlangen für rückgekoppelte Verkehrssteuerung
DE602004005785T2 (de) Dynamische Leitweglenkung in einem inhaltbasierten verteilten Netzwerk
DE69522666T2 (de) Netzwerk mit sicherer, schneller paketvermittlung und garantierter servicequalität
DE60213509T2 (de) Verfahren und Vorrichtung zur Verbesserung der Verfügbarkeit von Wegeleitsystemen mit mehrwege-Kostengleichheit
DE102015017100B3 (de) Verteilte Switch-Architektur
DE202015009244U1 (de) Routing von Datenverkehr innerhalb von und zwischen autonomen Systemen
DE112011105843T5 (de) Pfaddiversität in einem verbindungsorientierten Netzwerk
DE112013001426B4 (de) Dynamische Optimierung einer Multicast-Baumhierarchie für einen verteilten Switch
DE112016002952T5 (de) Systeme und Verfahren zum Verarbeiten von Paketen in einem Computernetz
DE112017003324T5 (de) Technologien für adaptives Routing unter Verwendung aggregierter Überlastungsinformationen
DE602005005291T2 (de) Erweiterbare Pipelinearchitektur für ein Netzwerkgerät
DE102013111341A1 (de) Blockierungsfreies routing in fat-tree-netzwerken
DE112018002716B4 (de) Virtuelles Kanalrouting
DE112005002981T5 (de) Maskierbarer inhaltsadressierbarer Speicher

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB - PATENT- , DE

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB PATENTANWA, DE

Representative=s name: PROCK, THOMAS, DR., GB

R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012935000

Ipc: H04L0012701000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012701000

Ipc: H04L0045000000

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US

R082 Change of representative

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB - PATENT- , DE

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB PATENTANWA, DE

R020 Patent grant now final