DE102023205742A1 - Frühzeitige und effiziente paketkürzung - Google Patents

Frühzeitige und effiziente paketkürzung Download PDF

Info

Publication number
DE102023205742A1
DE102023205742A1 DE102023205742.5A DE102023205742A DE102023205742A1 DE 102023205742 A1 DE102023205742 A1 DE 102023205742A1 DE 102023205742 A DE102023205742 A DE 102023205742A DE 102023205742 A1 DE102023205742 A1 DE 102023205742A1
Authority
DE
Germany
Prior art keywords
packet
buffer
network device
data
shortened
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.)
Pending
Application number
DE102023205742.5A
Other languages
English (en)
Inventor
Barak Gafni
Aviv Kfir
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.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of DE102023205742A1 publication Critical patent/DE102023205742A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

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

Abstract

Es werden Netzwerkvorrichtungen, -systeme und -verfahren werden bereitgestellt. In einem Beispiel umfasst ein Verfahren Folgendes: Empfangen eines Pakets an einer Netzwerkvorrichtung; Auswerten des Pakets; basierend auf der Auswertung des Pakets, Kürzen des Pakets von einer ersten Größe auf eine zweite Größe, die kleiner als die erste Größe ist; und Speichern des gekürzten Pakets in einem Puffer vor dem Übertragen des gekürzten Pakets mit der Netzwerkvorrichtung.

Description

  • GEBIET DER OFFENBARUNG
  • Die vorliegende Offenbarung ist allgemein auf Netzwerkvorrichtungen und insbesondere auf eine effiziente Paketverarbeitung innerhalb einer Netzwerkvorrichtung gerichtet.
  • HINTERGRUND
  • Netzwerkvorrichtungen wie Router, Switches, Network Interface Controllers (NICs) usw. enthalten normalerweise ein Paketverarbeitungssubsystem, das den Durchlauf von Paketen durch ein mehrschichtiges Netzwerk oder einen Protokollstapel verwaltet. In einigen Netzwerken werden die Paketverarbeitungsfunktionen in das Netzwerk injiziert. Eine Möglichkeit, die Paketverarbeitungsfunktion zu injizieren, besteht darin, Pakete so zu konfigurieren, dass sie den Verarbeitungscode tragen, den Netzwerkvorrichtungen bei der Durchführung von Weiterleitungs- oder Routingfunktionen anwenden. Das Verhalten und die Qualität des Netzwerks können erheblich verbessert werden, wenn jedes Paket so effizient wie möglich verarbeitet wird.
  • KURZE ZUSAMMENFASSUNG
  • Die Erfindung ist durch die Ansprüche definiert. Zur Veranschaulichung der Erfindung werden hier Aspekte und Ausführungsformen beschrieben, die in den Anwendungsbereich der Ansprüche fallen können oder auch nicht.
  • Ausführungsformen der vorliegenden Offenbarung zielen darauf ab, die Leistung von Netzwerken durch Verbesserung von Paket-Routing-Prozessen zu verbessern. In einigen Ausführungsformen können die verbesserten Paket-Routing-Prozesse von oder innerhalb einer Netzwerkvorrichtung durchgeführt werden. Beispiele für Netzwerkvorrichtungen, die so konfiguriert sein können, dass sie die hierin dargestellten und beschriebenen Operationen durchführen, können ohne Einschränkung einen Switch, einen NIC, einen Netzwerkadapter, eine Ethernet-Karte, eine Erweiterungskarte, einen lokalen Netzwerk- (Local Area Network, LAN) Adapter, einen drahtlosen Router, eine physische Netzwerkschnittstelle, eine Netzwerkgrenzvorrichtung (z. B. Session Border Controller (SBC), Firewall usw.) oder eine ähnliche Art von Vorrichtung umfassen, das dafür konfiguriert ist, Netzwerk- oder Datenübertragungsprozesse durchzuführen.
  • Beispielhaft und ohne Einschränkung wird hier eine Netzwerkvorrichtung offenbart, die Folgendes umfasst: eine Schnittstelle, die ein oder mehrere Pakete empfängt; einen Puffer, der das eine oder die mehreren Pakete vorübergehend speichert, bevor sie von der Netzwerkvorrichtung übertragen werden; und eine Schaltung, die ein an der Schnittstelle empfangenes Paket auswertet und basierend auf der Auswertung des Pakets das Paket kürzt, wodurch eine Größe des Pakets vor dem Speichern des Pakets in dem Puffer reduziert wird.
  • In einigen Ausführungsformen teilt die Schaltung das Paket ferner in zwei oder mehr Paketteile auf, die in zwei oder mehr entsprechenden Zellen in dem Puffer gespeichert werden.
  • In einigen Ausführungsformen wird das Paket vor der Kürzung geteilt.
  • In einigen Ausführungsformen wird das Paket nach der Kürzung geteilt.
  • In einigen Ausführungsformen belegt das gekürzte Paket eine Anzahl von Zellen im Puffer, die kleiner ist als die Anzahl von Zellen, die das Paket vor der Kürzung belegen würde.
  • In einigen Ausführungsformen wird das Paket vor dem Kürzen zunächst im Puffer gespeichert, und mindestens ein Zeiger wird als Teil des Kürzens des Pakets angepasst, um mindestens eine Zelle im Puffer freizugeben, wodurch mehr Pufferplatz für die Speicherung anderer Pakete zugewiesen wird.
  • In einigen Ausführungsformen kann die Netzwerkvorrichtung ferner einen Ausgangsanschluss enthalten, wobei die Schaltung das gekürzte Paket aus dem Puffer liest und bewirkt, dass das gekürzte Paket über den Ausgangsanschluss übertragen wird.
  • In einigen Ausführungsformen kann die Netzwerkvorrichtung ferner einen Multiplexer enthalten, wobei die Schaltung das gekürzte Paket aus dem Puffer liest und bewirkt, dass das gekürzte Paket dem Multiplexer zugeführt wird.
  • In einigen Ausführungsformen bestimmt die Schaltung eine Menge an Pufferplatz, die durch das Kürzen des Pakets eingespart wird, und gibt die Menge an Pufferplatz für die Speicherung eines zusätzlichen Pakets frei, bevor das gekürzte Paket aus dem Puffer gelesen wird.
  • In einigen Ausführungsformen liest die Schaltung das gekürzte Paket aus dem Puffer unter Verwendung einer verknüpften Liste und/oder eines Datenbank-Lookups.
  • In einigen Ausführungsformen aktualisiert die Schaltung einen Deskriptor des Pakets, um eine Länge des gekürzten Pakets zu beschreiben, wie sie im Puffer gespeichert ist.
  • In einem anderen Beispiel wird ein System beschrieben, das Folgendes umfasst: eine Netzwerkvorrichtung, die ein oder mehrere Pakete empfängt, wobei die Netzwerkvorrichtung einen Puffer umfasst, der das eine oder die mehreren Pakete vor der Übertragung durch die Netzwerkvorrichtung vorübergehend speichert; und einen Controller, der ein an der Netzwerkvorrichtung empfangenes Paket auswertet und, basierend auf der Auswertung des Pakets, das Paket kürzt, wodurch eine Größe des Pakets für die Speicherung in dem Puffer reduziert wird.
  • In einigen Ausführungsformen ist der Controller als Teil der Netzwerkvorrichtung vorgesehen.
  • In einigen Ausführungsformen unterteilt der Controller das Paket in zwei oder mehr Paketteile, die in zwei oder mehr entsprechenden Zellen im Puffer gespeichert werden.
  • In einigen Ausführungsformen belegt das gekürzte Paket eine Anzahl von Zellen im Puffer, die kleiner ist als die Anzahl von Zellen, die das Paket vor der Kürzung belegen würde.
  • In einigen Ausführungsformen wird das Paket vor dem Kürzen zunächst im Puffer gespeichert, und mindestens ein Zeiger wird als Teil des Kürzens des Pakets angepasst, um mindestens eine Zelle im Puffer freizugeben, wodurch mehr Pufferplatz für die Speicherung anderer Pakete zugewiesen wird.
  • In einigen Ausführungsformen bestimmt der Controller eine Menge an Pufferplatz, die durch das Kürzen des Pakets eingespart wird, und gibt die Menge an Pufferplatz für die Speicherung eines zusätzlichen Pakets frei, bevor das gekürzte Paket aus dem Puffer gelesen wird.
  • In einem anderen Beispiel wird ein Verfahren offenbart, das Folgendes umfasst: Empfangen eines Pakets an einer Netzwerkvorrichtung; Auswerten des Pakets; basierend auf der Auswertung des Pakets, Kürzen des Pakets von einer ersten Größe auf eine zweite Größe, die kleiner als die erste Größe ist; und Speichern des gekürzten Pakets in einem Puffer vor dem Übertragen des gekürzten Pakets mit der Netzwerkvorrichtung.
  • In einigen Ausführungsformen umfasst das Verfahren ferner das Aufteilen des Pakets in zwei oder mehr Paketteile, die in entsprechenden zwei oder mehr Zellen des Puffers gespeichert werden, wobei das gekürzte Paket eine Anzahl von Zellen in dem Puffer belegt, die kleiner ist als eine Anzahl von Zellen, die das Paket in dem Puffer vor der Kürzung belegen würde.
  • In einigen Ausführungsformen umfasst das Verfahren ferner das Multiplexen des gekürzten Pakets; und das Übertragen des gemultiplexten gekürzten Pakets über einen Port der Netzwerkvorrichtung.
  • In einigen Ausführungsformen umfasst das Verfahren ferner das Bestimmen eines Ports und/oder einer Warteschlange, an die das Paket gesendet werden sollte, und das Senden des Pakets an den bestimmten Port und/oder die bestimmte Warteschlange.
  • Jedes Merkmal eines Aspekts oder einer Ausführungsform kann auf andere Aspekte oder Ausführungsformen in jeder geeigneten Kombination angewendet werden. Insbesondere kann jedes Merkmal eines Verfahrensaspekts oder einer Ausführungsform auf einen Vorrichtungsaspekt oder eine Ausführungsform angewandt werden und umgekehrt.
  • Weitere Merkmale und Vorteile sind hierin beschrieben und werden aus der folgenden Beschreibung und den Figuren ersichtlich sein.
  • KURZE BESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Die vorliegende Offenbarung wird in Verbindung mit den beigefügten Figuren beschrieben, die nicht unbedingt maßstabsgetreu gezeichnet sind:
    • 1A ist ein Blockdiagramm, das ein Computersystem gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 1B ist ein Blockdiagramm, das eine alternative Anordnung eines Computersystems gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 2 ist ein Blockdiagramm, das Details eines Paketverarbeitungsvorgangs gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 3 ist ein Flussdiagramm, das ein erstes Paketverarbeitungsverfahren gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 4 ist ein Flussdiagramm, das ein zweites Paketverarbeitungsverfahren gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 5 ist ein Flussdiagramm, das ein drittes Paketverarbeitungsverfahren gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 6 ist ein Flussdiagramm, das ein viertes Paketverarbeitungsverfahren gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die nachfolgende Beschreibung stellt nur Ausführungsbeispiele dar und soll den Umfang, die Anwendbarkeit oder die Ausgestaltung der Ansprüche nicht einschränken. Vielmehr soll die nachfolgende Beschreibung Fachleuten eine Anleitung zur Umsetzung der beschriebenen Ausführungsformen geben. Es versteht sich, dass verschiedene Änderungen in der Funktion und Anordnung der Elemente vorgenommen werden können, ohne vom Geist und Umfang der beigefügten Ansprüche abzuweichen.
  • Aus der folgenden Beschreibung und aus Gründen der Recheneffizienz wird ersichtlich, dass die Komponenten des Systems an jedem geeigneten Ort innerhalb eines verteilten Netzwerks von Komponenten angeordnet werden können, ohne dass dies Auswirkungen auf den Betrieb des Systems hat.
  • Darüber hinaus wird darauf hingewiesen, dass die verschiedenen Verbindungen, die die Elemente miteinander verbinden, drahtgebundene, Leiterbahn- oder drahtlose Verbindungen sein können, oder jede geeignete Kombination davon, oder jedes andere geeignete bekannte oder später entwickelte Element, das in der Lage ist, Daten zu und von den verbundenen Elementen zu liefern und/oder zu übermitteln. Übertragungsmedien, die als Verbindungen verwendet werden, können zum Beispiel jeder geeignete Träger für elektrische Signale sein, einschließlich Koaxialkabel, Kupferdraht und Glasfaser, elektrische Leiterbahnen auf einer gedruckten Schaltung (PCB) oder ähnliches.
  • Wie hierin verwendet, sind die Ausdrücke „mindestens ein“, „ein oder mehrere“, „oder“ und „und/oder“ offene Ausdrücke, die sowohl konjunktiv als auch disjunktiv verwendet werden können. Zum Beispiel bedeutet jeder der Ausdrücke „mindestens eines von A, B und C“, „mindestens eines von A, B, oder C“, „eines oder mehrere von A, B, und C“, „eines oder mehrere von A, B, oder C“, „A, B und/oder C“ und „A, B, oder C“: A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen, oder A, B und C zusammen.
  • Der Begriff „automatisch“ und Variationen davon, wie er hier verwendet wird, bezieht sich auf jeden geeigneten Prozess oder Vorgang, der ohne wesentliche menschliche Eingaben durchgeführt wird, wenn der Prozess oder Vorgang ausgeführt wird. Ein Prozess oder eine Operation kann jedoch automatisch sein, auch wenn die Durchführung des Prozesses oder der Operation eine materielle oder immaterielle menschliche Eingabe erfordert, wenn die Eingabe vor der Durchführung des Prozesses oder der Operation empfangen wird. Menschliche Eingaben gelten als wesentlich, wenn sie die Art und Weise der Durchführung des Prozesses oder des Vorgangs beeinflussen. Menschliche Eingaben, die der Durchführung des Prozesses oder Vorgangs zustimmen, gelten nicht als „wesentlich“.
  • Die Begriffe „bestimmen“, „berechnen“ und „errechnen“ und Abwandlungen davon werden hier austauschbar verwendet und schließen jede geeignete Art von Methodik, Prozess, Operation oder Technik ein.
  • Verschiedene Aspekte der vorliegenden Offenbarung werden hier unter Bezugnahme auf Zeichnungen beschrieben, die schematische Darstellungen idealisierter Konfigurationen sind.
  • Sofern nicht anders definiert, haben alle hierin verwendeten Begriffe (einschließlich technischer und wissenschaftlicher Begriffe) die gleiche Bedeutung, wie sie von Fachleuten auf dem Gebiet, zu dem diese Offenbarung gehört, allgemein verstanden werden. Es versteht sich ferner, dass Begriffe, wie sie in allgemein gebräuchlichen Wörterbüchern definiert sind, so ausgelegt werden sollten, dass sie eine Bedeutung haben, die mit ihrer Bedeutung im Zusammenhang mit dem relevanten Stand der Technik und dieser Offenbarung übereinstimmt.
  • Wie hierin verwendet, sollen die Singularformen „ein“, „eine“ und „der“, „die“, „das“ auch die Pluralformen umfassen, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Es versteht sich ferner, dass die Begriffe „umfassen“, „umfasst“ und/oder „umfassend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein der angegebenen Merkmale, ganzen Zahlen, Schritte, Operationen, Elemente und/oder Komponenten spezifizieren, aber nicht das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen. Der Begriff „und/oder“ schließt jede und alle Kombinationen von einem oder mehreren der zugehörigen aufgeführten Punkte ein.
  • Unter Bezugnahme auf 1 bis 6 werden nun verschiedene Systeme und Verfahren zur Paketverarbeitung gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung beschrieben. Wie hierin ausführlicher beschrieben wird, kann die Paketverarbeitung das Auswerten und Kürzen eines Pakets umfassen. Es kann möglich sein, ein Paket so zu kürzen, dass die Pufferzuweisung für das Paket minimiert wird. Es kann auch möglich sein, das Paket so zu kürzen, dass keine notwendigen Daten verloren gehen, aber die Gesamtleistung des Netzes erhöht wird.
  • Unter Bezugnahme auf 1A und 1B wird zunächst ein illustratives Computersystem 100 gezeigt, in dem eine Netzwerkvorrichtung 104 dafür konfiguriert ist, mit einer Datenquelle 108 und einem Datenziel 112 zu kommunizieren. Während nur ein einziges Datenziel 112 dargestellt ist, wird darauf hingewiesen, dass die Netzwerkvorrichtung 104 die von einer Datenquelle 108 empfangenen Informationen an mehrere Datenziele 112 weiterleiten kann.
  • Die Netzwerkvorrichtung 104 kann jede Art von Vorrichtung umfassen, die zur Ermöglichung der Maschine-zu-Maschine-Kommunikation verwendet wird. Wie oben erwähnt, kann die Netzwerkvorrichtung 104 einen oder mehrere Switches, eine Netzwerkkarte, einen Netzwerkadapter, einen Host Channel Adapter (HCA), eine Ethernetkarte, eine Erweiterungskarte, einen LAN-Adapter, eine physische Netzwerkschnittstelle, einen drahtlosen Router, eine Netzwerkgrenzvorrichtung oder ähnliches umfassen. Alternativ oder zusätzlich kann die Netzwerkvorrichtung 104 als Datenübertragungsvorrichtung bezeichnet werden und kann in einigen Ausführungsformen einer formatabhängigen Datenübertragungsvorrichtung entsprechen. In einigen Ausführungsformen ist die Netzwerkvorrichtung 104 mit einer Datenverarbeitungseinheit 128 versehen, die dafür konfiguriert ist, Datenverarbeitungsfunktionen innerhalb der Netzwerkvorrichtung 104 durchzuführen. Insbesondere kann die Netzwerkvorrichtung 104 so konfiguriert sein, dass sie sowohl Datenübertragungsfunktionen als auch Paketkürzungsoperationen durchführt.
  • Die Netzwerkvorrichtung 104 kann über eine erste Vorrichtungsschnittstelle 116 mit der Datenquelle 108 verbunden sein. Die erste Vorrichtungsschnittstelle 116 kann die Kommunikation zwischen der Netzwerkvorrichtung 104 und der Datenquelle 108 über eine erste Kommunikationsverbindung 120 ermöglichen. Die erste Kommunikationsverbindung 120 kann eine drahtgebundene Verbindung, eine drahtlose Verbindung, eine elektrische Verbindung, usw. umfassen. In einigen Ausführungsformen kann die erste Kommunikationsverbindung 120 die Übertragung von Datenpaketen zwischen der Netzwerkvorrichtung 104 und der Datenquelle 108 über ein oder mehrere elektrische Signale, optische Signale, Kombinationen davon und dergleichen ermöglichen. Die Datenpakete können Daten von der Datenquelle 108 an die Netzwerkvorrichtung 104 übertragen, die zur Übertragung an das/die Datenziel(e) 112 bestimmt sind. Mit anderen Worten kann die Netzwerkvorrichtung 104 die Kommunikation zwischen der Datenquelle 108 und dem/den Datenziel(en) 112 ermöglichen und kann ferner die Datenverarbeitungseinheit 128 verwenden, um Daten von der Datenquelle 108 zu dem/den Datenziel(en) 112 zu übertragen. Es wird darauf hingewiesen, dass der Systembus (z.B. der Pfad, der Daten zwischen der Datenquelle 108 und dem/den Datenziel(en) 112 transportiert) ohne Einschränkung eine PCIe-Verbindung, eine Compute Express Link (CXL)-Verbindung, eine direkte Hochgeschwindigkeits-GPU-zu-GPU-Verbindung (z.B. eine NVlink), usw. umfassen kann.
  • Die Netzwerkvorrichtung 104 kann mit einem oder mehreren Datenzielen 112 über eine zweite Vorrichtungsschnittstelle 116 verbunden sein. Die zweite Vorrichtungsschnittstelle 116 kann ähnlich oder identisch mit der ersten Vorrichtungsschnittstelle 116 sein. In einigen Ausführungsformen kann eine einzige Vorrichtungsschnittstelle 116 so konfiguriert sein, dass sie als die erste Vorrichtungsschnittstelle 116 und die zweite Vorrichtungsschnittstelle 116 arbeitet. Mit anderen Worten, eine einzige Vorrichtungsschnittstelle 116 kann die Netzwerkvorrichtung 104 mit der Datenquelle 108 und dem/den Datenziel(en) 112 verbinden. In einigen Ausführungsformen können jedoch unterschiedliche physikalische Vorrichtungen für die verschiedenen Schnittstellen verwendet werden, was bedeutet, dass die erste Vorrichtungsschnittstelle 116 einer ersten physikalischen Vorrichtung entsprechen kann, die sich von einer zweiten physikalischen Vorrichtung unterscheidet, die als zweite Vorrichtungsschnittstelle 116 arbeitet. Die zweite Vorrichtungsschnittstelle 116 kann die Kommunikation zwischen der Netzwerkvorrichtung 104 und dem/den Datenziel(en) 112 über eine zweite Kommunikationsverbindung 124 ermöglichen. Wie ersichtlich ist, kann die zweite Kommunikationsverbindung 124 eine oder mehrere verschiedene Kommunikationsverbindungen umfassen, abhängig von der Anzahl der Datenziele in dem/den Datenziel(en) 112. Ähnlich wie die erste Kommunikationsverbindung 120 kann die zweite Kommunikationsverbindung 124 eine verdrahtete Verbindung, eine drahtlose Verbindung, eine elektrische Verbindung usw. umfassen. In einigen Ausführungsformen kann die zweite Kommunikationsverbindung 124 die Übertragung von Datenpaketen zwischen der Netzwerkvorrichtung 104 und dem Datenziel 112 über ein oder mehrere elektrische Signale, optische Signale, Kombinationen davon und dergleichen ermöglichen.
  • In einigen Ausführungsformen kann die erste Vorrichtungsschnittstelle 116 und/oder die zweite Vorrichtungsschnittstelle 116 einen einzelnen Kommunikationsanschluss, mehrere Kommunikationsanschlüsse, eine serielle Datenschnittstelle, eine PCIe, einen Ethernet-Port, einen InfiniBand-Port (IB) usw. umfassen. Die erste Kommunikationsverbindung 120 und/oder die zweite Kommunikationsverbindung 124 kann über ein Netzwerkkabel, eine optische Faser, eine elektrische Leitung, eine Leiterbahn, ein serielles Datenkabel, ein Ethernetkabel oder dergleichen hergestellt werden. Die erste Kommunikationsverbindung 120 und/oder die zweite Kommunikationsverbindung 124 kann jede Art von bekanntem oder noch zu entwickelndem Kommunikationsprotokoll verwenden (z.B. paketbasiertes Kommunikationsprotokoll, serielles Kommunikationsprotokoll, paralleles Kommunikationsprotokoll, usw.).
  • Der Quelldatenzugriff und/oder der Zieldatenzugriff kann über einen Systembus (z.B. lokal), über einen Netzwerkanschluss (z.B. entfernt) oder über keines von beiden (z.B. für einen vorrichtungsinternen Arbeitsspeicher) erfolgen. Während verschiedene Ausführungsformen in Verbindung mit einer bestimmten Art des Datenzugriffs dargestellt oder beschrieben werden, wird darauf hingewiesen, dass die Ansprüche nicht auf eine bestimmte Art des Datenzugriffs beschränkt sind.
  • Die Datenquelle 108 und/oder das/die Datenziel(e) 112 können jeder Art von bekannter Computervorrichtung oder einer Sammlung von Computervorrichtungen entsprechen oder diese umfassen. Eine Datenquelle 108 kann beispielsweise eine Host-Vorrichtung, einen netzwerkinternen Vorrichtungsarbeitsspeicher, einen Peer-Vorrichtungsarbeitsspeicher usw. umfassen. Ein Datenziel 112 kann beispielsweise ein Host-Arbeitsspeichervorrichtung, einen netzwerkinternen Vorrichtungsarbeitsspeicher, einen Peer-Vorrichtungsarbeitsspeicher usw. umfassen. In einigen Ausführungsformen können das/die Datenziel(e) 112 in der Nähe der Netzwerkvorrichtung 104 angeordnet sein (z.B. kann ein physisches Kabel verwendet werden, um ein Datenziel 112 direkt mit der Netzwerkvorrichtung 104 zu verbinden). In einigen Ausführungsformen, wie in 1B gezeigt, können ein oder mehrere Datenziele 112 entfernt von der Netzwerkvorrichtung 104 und der Datenverarbeitungseinheit 128 der Netzwerkvorrichtung 104 angeordnet sein. Insbesondere kann/können das/die Datenziel(e) 112 mit der Netzwerkvorrichtung 104 über ein Kommunikationsnetzwerk 152 verbunden sein, ohne dass dies vom Umfang der vorliegenden Offenbarung abweicht. 1B zeigt darüber hinaus ein optionales Kommunikationsnetzwerk 152, das zwischen der Datenquelle 108 und der Netzwerkvorrichtung 104 angeordnet ist. Es wird darauf hingewiesen, dass die Datenquelle 108 von der Netzwerkvorrichtung 104 entfernt sein kann, in welchem Fall ein Kommunikationsnetzwerk 152 zwischen der Datenquelle 108 und der Netzwerkvorrichtung 104 vorgesehen sein kann. In jeder Konfiguration kann die Netzwerkvorrichtung 104 so konfiguriert sein, dass sie die Datenverarbeitungseinheit 128 als Teil der Datenübertragung zwischen einer Datenquelle 108 und einem Datenziel 112 verwendet.
  • Beispiele für eine Datenquelle 108 und/oder ein Datenziel 112 umfassen, ohne Einschränkung, eine Host-Vorrichtung, einen Server, eine Netzwerkvorrichtung, eine Datenspeichervorrichtung, eine Kamera, ein neuronales Netzwerk, ein Deep Neural Network (DNN) oder eine Kombinationen davon. Eine Datenquelle 108 und/oder ein Datenziel 112 kann in einigen Ausführungsformen einem oder mehreren von einem Personal Computer (PC), einem Laptop, einem Tablet, einem Smartphone, einem Cluster, einem Container oder dergleichen entsprechen. Es wird darauf hingewiesen, dass eine Datenquelle 108 und/oder ein Datenziel 112 als ein Host bezeichnet werden kann, der einen Netzwerk-Host, einen Ethernet-Host, einen IB-Host usw. umfassen kann. Als ein weiteres spezifisches, aber nicht einschränkendes Beispiel kann eine oder mehrere der Datenquelle 108 und/oder Datenziel(e) 112 einem Server entsprechen, der Informationsressourcen, Dienste und/oder Anwendungen für Benutzervorrichtungen, Client-Vorrichtungen oder andere Hosts in dem Computersystem 100 anbietet. Es wird darauf hingewiesen, dass der Datenquelle 108 und/oder dem/den Datenziel(en) 112 mindestens eine Netzwerkadresse (z. B. eine Internetprotokoll (IP)-Adresse) zugewiesen werden kann, und das Format der ihr zugewiesenen Netzwerkadresse kann von der Art des Netzwerks abhängen, mit dem die Vorrichtung verbunden ist.
  • Die Netzwerkvorrichtung 104 kann einer optischen Vorrichtung und/oder einer elektrischen Vorrichtung entsprechen. Die Datenverarbeitungseinheit 128 der Netzwerkvorrichtung 104 kann so konfiguriert sein, dass sie Daten von der Datenquelle 108 empfängt, die von der Datenquelle 108 empfangenen Daten sammelt, bis eine vorbestimmte Datenmenge gesammelt wurde, ein oder mehrere Pakete, die zum Übertragen der Daten verwendet werden, kürzt und dann die Daten an ein oder mehrere Datenziele 112 unter Verwendung gekürzter Pakete überträgt. In einigen Ausführungsformen kann die Datenverarbeitungseinheit 128 Komponenten enthalten, die sich zwischen verschiedenen Vorrichtungsschnittstellen 116 befinden. In einigen Ausführungsformen kann die Datenverarbeitungseinheit 128 Komponenten enthalten, die an einer Vorrichtungsschnittstelle 116 von der Datenquelle 108 empfangene Daten verarbeiten und dann über dieselbe Vorrichtungsschnittstelle 116 Daten an ein Datenziel 112 übertragen.
  • Zu den Komponenten, die optional als Teil der Datenverarbeitungseinheit 128 enthalten sein können, gehören ohne Einschränkung ein Prozessor 132, ein Arbeitsspeicher 136, ein Puffer 140, eine Schaltung 144 und/oder ein Multiplexer/Demultiplexer (MUX/DEMUX) 148. Der Puffer 140 kann eine oder mehrere Pufferarbeitsspeichervorrichtungen umfassen und kann einem Bereich oder einer Art von Arbeitsspeichervorrichtung entsprechen, die verwendet wird, um von der Datenquelle 108 empfangene Daten zu sammeln. Der Puffer 140 kann alternativ oder zusätzlich gekürzte Versionen der von der Datenquelle 108 empfangenen Daten speichern, bevor die Netzwerkvorrichtung 104 die Daten an das/die Datenziel(e) 112 (z.B. als gekürzte Daten) überträgt.
  • Der Arbeitsspeicher 136 kann Anweisungen zur Ausführung durch den Prozessor 132 enthalten, die, wenn sie von dem Prozessor 132 ausgeführt werden, die Datenverarbeitungseinheit 128 in die Lage versetzen, die von der Datenquelle 108 empfangenen Daten zu analysieren und die Daten (z.B. als gekürzte Pakete) in einer effizienten Weise zu kürzen. Die im Arbeitsspeicher 136 gespeicherten Anweisungen können den Prozessor 132 auch in die Lage versetzen, die gekürzten Daten an das/die Datenziel(e) 112 zu übertragen.
  • Die Schaltung 144 kann als Teil des Prozessors 132 vorgesehen sein oder speziell dafür konfiguriert sein, eine Funktion des Prozessors 132 auszuführen, ohne notwendigerweise auf Anweisungen im Arbeitsspeicher 136 zu verweisen. Die Schaltung 144 kann beispielsweise digitale Schaltungskomponenten, analoge Schaltungskomponenten, aktive Schaltungskomponenten, passive Schaltungskomponenten oder dergleichen umfassen, die spezifisch dafür konfiguriert sind, eine bestimmte Datenkürzungsoperation und/oder einen Übertragungsprozess durchzuführen. Die Schaltung 144 kann alternativ oder zusätzlich Schalt-Hardware enthalten, die konfigurierbar ist, um selektiv eine Vorrichtungsschnittstelle 116 mit einer anderen Vorrichtungsschnittstelle 116 zu verbinden (z.B. wenn die Netzwerkvorrichtung 104 einen Schalter oder eine Komponente eines Schalters enthält). Dementsprechend kann die Schaltung 144 elektrische und/oder optische Komponenten enthalten, ohne dass dies vom Umfang der vorliegenden Offenbarung abweicht.
  • Der Prozessor 132 und/oder die Schaltung 144 können einen oder mehrere integrierte Schaltungs- (Integrated Circuit, IC) Chips, Mikroprozessoren, Leiterplatten, CPUs, Grafikverarbeitungseinheiten (Graphics Processing Units, GPUs), Datenverarbeitungseinheiten (Data Processing Units, DPUs), einfache analoge Schaltungskomponenten (z.B. Widerstände, Kondensatoren, Induktoren, etc.), digitale Schaltungskomponenten (z.B. Transistoren, Logikgatter, etc.), Register, feldprogrammierbare Gate-Arrays (Field Programmable Gate Arrays, FPGAs), anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits, ASICs), Kombinationen davon, und dergleichen umfassen. Es wird darauf hingewiesen, dass der Prozessor 132 einer optionalen Komponente der Datenverarbeitungseinheit 128 entsprechen kann, insbesondere in Fällen, in denen die Schaltung 144 eine ausreichende Funktionalität bietet, um Operationen der hier beschriebenen Datenverarbeitungseinheit 128 zu unterstützen.
  • Der Arbeitsspeicher 136 kann eine beliebige Anzahl von Arten von Arbeitsspeichervorrichtungen umfassen. Als Beispiel kann der Arbeitsspeicher 136 Direktzugriffsspeicher (Random Access Memory, RAM), Nur-Lese-Arbeitsspeicher (Read Only Memory, ROM), Flash-Arbeitsspeicher, elektronisch löschbaren programmierbaren ROM (Electronically-Erasable Programmable ROM, EEPROM), dynamischen RAM (DRAM), pufferarbeitsspeicher 140, Kombinationen davon und dergleichen umfassen. Mit anderen Worten kann der Puffer 140 als Teil des Arbeitsspeichers 136 bereitgestellt werden, ohne dass dies vom Anwendungsbereich der vorliegenden Offenbarung abweicht.
  • Der MUX/DEMUX 148 kann eine oder mehrere Schaltungen umfassen, die in der Lage sind, Datenflüsse, Datenpakete usw. zu multiplexen und/oder zu demultiplexen. In einigen Ausführungsformen kann der MUX/DEMUX 148 so konfiguriert sein, dass er Daten verarbeitet, die in den und/oder aus dem Puffer 140 fließen. Zum Beispiel kann der MUX/DEMUX 148 Daten von zwei oder mehr Kanälen auf einen einzigen Kanal zur Übertragung durch die Schnittstelle 116 zu einem Datenziel 112 multiplexen. Als weiteres Beispiel kann der MUX/DEMUX 148 Daten, die von einer Datenquelle 108 an einer Schnittstelle 116 empfangen werden, demultiplexen, bevor separate Datenströme im Arbeitsspeicher 136 oder Puffer 140 gespeichert werden.
  • Obwohl in 1A und 1B eine einzelne Datenquelle 108 und ein einzelnes Kästchen, das das/die Datenziel(e) 112 repräsentiert, dargestellt sind, wird darauf hingewiesen, dass die Netzwerkvorrichtung 104 so konfiguriert sein kann, dass sie Daten von einer, zwei, drei, ... oder vielen weiteren Datenquellen 108 empfängt. Die Netzwerkvorrichtung 104 kann auch so konfiguriert sein, dass sie verkürzte Daten an ein, zwei, drei, ... oder viele weitere Datenziele 112 liefert. Die Darstellung einer einzelnen Datenquelle 108 und eines einzelnen Kästchens, das Datenziel(e) 112 repräsentiert, dient nur der Veranschaulichung und sollte nicht als Einschränkung des Umfangs der Ansprüche ausgelegt werden. In der Tat sehen Aspekte der vorliegenden Offenbarung die Fähigkeit der Netzwerkvorrichtung 104 vor, Daten von einer einzigen Datenquelle 108 zu empfangen und verkürzte Daten an ein oder mehrere Datenziele 112 zu liefern.
  • Unter Bezugnahme auf 2 werden nun weitere Einzelheiten der Datenverarbeitungsvorgänge gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung beschrieben. 2 zeigt insbesondere eine Datenverarbeitungs-Pipeline, in der ein Puffer 140 verwendet werden kann, um die Daten eines Pakets vorübergehend zu speichern, bevor und nachdem die Daten des Pakets gekürzt wurden. In einigen Ausführungsformen kann der Deskriptor des Pakets einem Paketdeskriptorpfad 208 folgen und die Daten des Pakets können einem Paketdatenpfad 204 folgen. Der Paketdatenpfad 204 kann durch den Puffer 140 fließen, während der Paketdeskriptorpfad 208 den Puffer 140 umgehen kann. Sowohl der Paketdatenpfad 204 als auch der Paketdeskriptorpfad 208 beginnen bei einer Paketempfangsoperation 216. Wenn das Paket in der Paketempfangsoperation 216 empfangen wird (z.B. an einer Schnittstelle 116 einer Netzwerkvorrichtung 104 oder innerhalb der DPU 128 selbst), können die Daten des Pakets in den Puffer 140 geschrieben werden. Wie hierin weiter beschrieben wird, können die Daten des Pakets zunächst in den Puffer 140 geschrieben werden, dann kann eine Kürzungsentscheidung 212 in Bezug auf die Daten des Pakets basierend auf einer Analyse der Paketdaten (z.B. Daten innerhalb der Paketnutzlast) und/oder basierend auf einer Analyse von Metadaten, die im Paket enthalten sind (z.B. Daten innerhalb des Paketkopfes), getroffen werden. Alternativ kann die Kürzungsentscheidung 212 getroffen werden, bevor die Daten des Pakets in den Puffer 140 geschrieben werden, so dass eine geringere Menge an Platz im Puffer 140 benötigt wird, um die gekürzten Daten des Pakets zu speichern.
  • Wie oben erwähnt, kann die Entscheidung über das Kürzen von Paketen 212 während einer Entscheidung zum Parsen und Weiterleiten von Paketen 220 getroffen werden. Die Entscheidung 220 zum Parsen und Weiterleiten eines Pakets kann erfolgen, bevor die Daten eines Pakets anfänglich im Puffer 140 gespeichert werden, oder nachdem die Daten des Pakets in einem Puffer gespeichert wurden, aber bevor die Daten des Pakets aus dem Puffer 140 für die Paketübertragung 228 abgerufen werden. Insbesondere gibt es viele Möglichkeiten, von einer frühen Parsing- und Weiterleitungsentscheidung 220 zu profitieren, die zu einer Kürzungsentscheidung 212 führt. In einem Beispiel können die Daten des Pakets zunächst in einem ersten Puffer 140 gespeichert werden, woraufhin eine Kürzungsentscheidung 212 getroffen werden kann. Nach der Kürzungsentscheidung 212 können die Daten des Pakets gekürzt werden, so dass das gekürzte Paket in dem ersten Puffer 140 gespeichert wird, während die Warteschlangenbildung und das Scheduling 224 des Pakets stattfindet. Da die Daten des Pakets vor der Paketübertragung 228 gekürzt werden, wird weniger von dem ersten Puffer 140 zum Speichern der Daten des Pakets zugewiesen.
  • In einem weiteren Beispiel können die Daten des Pakets zunächst in einem ersten Puffer 140 gespeichert werden, woraufhin eine Kürzungsentscheidung 212 getroffen werden kann. Nach der Kürzungsentscheidung 212 können die Daten des Pakets gekürzt und in einem zweiten Puffer 140 gespeichert werden, der sich von dem ersten Puffer 140 unterscheidet. Obwohl in 2 ein einzelner Puffer 140 dargestellt ist, wird darauf hingewiesen, dass der Puffer 140 tatsächlich mehrere verschiedene Pufferarbeitsspeichervorrichtungen enthält. An diesem Punkt kann der erste Puffer 140 verwendet werden, um die Daten eines nächsten empfangenen Pakets zu speichern, wobei der Platzbedarf im zweiten Puffer 140 geringer ist, als wenn das Paket nicht gekürzt würde. Auch dieser Ansatz führt zu einer effizienten Nutzung des Platzes im Puffer 140.
  • In einem anderen Beispiel kann das Paket 216 empfangen werden und eine Kürzungsentscheidung 212 kann getroffen werden, bevor die Daten des Pakets überhaupt in einem Puffer 140 gespeichert werden. In diesem Beispiel kann das gekürzte Paket zunächst in dem Puffer 140 gespeichert werden, während zusätzliche Weiterleitungsentscheidungen getroffen werden und während das Paket in eine Warteschlange gestellt und für die Übertragung 228 eingeplant wird.
  • In einem anderen Beispiel kann das Paket 216 empfangen und zunächst im Puffer 140 gespeichert werden, woraufhin eine Kürzungsentscheidung 212 getroffen werden kann. Nachdem die Entscheidung über die Kürzung getroffen wurde, können die Bereiche des Pufferarbeitsspeichers (z.B. Register), die den nun entfernten (z.B. gekürzten) Teilen des gekürzten Pakets gewidmet sind, für die Speicherung von Daten aus anderen Paketen freigegeben werden.
  • Wie ersichtlich ist, kann jede Kombination der oben erwähnten Ansätze verwendet werden. In einigen Ausführungsformen kann die Verarbeitung eines Pakets folgende Schritte umfassen, deren Reihenfolge nach Wunsch und Bedarf angepasst werden kann:
    1. (1) Ein Paket wird in der Netzwerkvorrichtung 104 empfangen.
    2. (2) Ein Paket wird in der Netzwerkvorrichtung 104 gespeichert (z.B. im Puffer 140 und/oder im Arbeitsspeicher 136). In einigen Implementierungen kann dies erst nach Schritt (4) geschehen.
      1. a. In einigen Implementierungen wird ein Paket in kleinere „Zellen“ zerlegt, um in eine feste Zuordnung des Puffers 140 zu passen.
      2. b. Wenn es in kleinere Zellen zerlegt wird, könnten die Zellen miteinander verbunden werden, möglicherweise durch eine verknüpfte Liste, in der jede Zelle einen Zeiger auf die nächste hat, um das gesamte Paket zu bilden.
    3. (3) Das Paket wird geparst (220).
    4. (4) Der Prozessor 132 bestimmt durch die Ausführung von Anweisungen im Arbeitsspeicher 136, was mit dem Paket geschehen soll (z.B. als Teil der Entscheidung zum Parsen und Weiterleiten 220). In einigen Beispielen kann der Prozessor 132 feststellen, dass das Paket an Port(s) X (und Y) gesendet, verworfen, modifiziert, einer bestimmten Warteschlange zugewiesen werden soll, usw.
      1. a. Gemäß der Auswertung bei (4) wird eine Kürzungsentscheidung 212 getroffen, möglicherweise basierend auf dem Puffer 140 und/oder dem Warteschlangenstatus und/oder einer anderen Richtlinie. In dieser Phase beschließt der Prozessor 132, das Paket im Puffer 140 auf eine bestimmte neue Größe zu kürzen, die kleiner ist als die ursprüngliche/ganze Paketgröße.
      2. b. Das Paket wird gekürzt, wodurch seine Belegung effektiv reduziert wird und zusätzliche Daten verschiedener Pakete darin gespeichert werden können.
    5. (5) Der „Deskriptor“ des Pakets wird an die Warteschlange des/der Ports gesendet, von dem/denen es übertragen werden soll.
    6. (6) Sobald der Deskriptor des Pakets für die Übertragung vorgesehen ist, wird der Puffer 140 aufgefordert, die Daten des Pakets zu lesen und an den/die entsprechenden Port(s) zu senden.
    7. (7) Die (nun kürzeren) Daten werden aus dem Puffer 140 gelesen. Bei diesem Vorgang durchlaufen die Daten Kanäle und den MUX/DEMUX 148. Da das Paket bereits gekürzt wurde, werden weniger Ressourcen von den Datenkanälen und dem MUX/DEMUX 148 benötigt, um die Paketübertragung 228 zu ermöglichen. In einigen Implementierungen können die Daten den MUX/DEMUX 148 durchlaufen, bevor sie in den Puffer 140 geschrieben werden. Dies kann zu einer weiteren Reduzierung der Ressourcen führen, die für die Übertragung der Daten des Pakets innerhalb der Netzwerkvorrichtung 104 erforderlich sind.
    8. (8) Das Paket wird während der Paketübertragung 228 von dem/den jeweiligen Port(s) aus der Vorrichtung gesendet.
      1. a. Vor dem Senden des Pakets kann seine zyklische Redundanzprüfung (Cyclic Redundancy Check, CRC) (und/oder andere ähnliche Schutzfelder für verschiedene Protokolle) neu berechnet werden, um zu verhindern, dass die Netzwerkvorrichtung 104 des nächsten Sprungs das Paket verwirft.
  • Unter Bezugnahme auf 3 bis 6 werden nun verschiedene mögliche Verfahren zur Verarbeitung eines Pakets gemäß zumindest einigen Ausführungsformen beschrieben. Es wird darauf hingewiesen, dass jede der hier dargestellten und/oder beschriebenen Komponenten so konfiguriert sein kann, dass sie einige oder alle der Verfahrensschritte ausführt. Es wird auch darauf hingewiesen, dass jeder Schritt aus einem der Verfahren in jedes andere Verfahren aufgenommen werden kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Anders ausgedrückt, sollte die Reihenfolge der hier dargestellten und beschriebenen Schritte nicht als Beschränkung des Umfangs der Ansprüche auf diese bestimmte Reihenfolge ausgelegt werden.
  • Unter Bezugnahme auf 3 wird zunächst ein erstes Paketverarbeitungsverfahren 300 gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung beschrieben. Das Verfahren 300 beginnt, wenn ein Paket an der Netzwerkvorrichtung 104 empfangen wird (Schritt 304). Das Paket kann dann optional in mehrere Teile basierend auf der Größe des Pakets und basierend auf der Zellengröße des Puffers 140 aufgeteilt werden. Insbesondere, wenn die Größe der Paketdaten eine einzelne Zellengröße des Puffers 140 überschreitet, kann es wünschenswert sein, das Paket in mehrere Teile zu unterteilen, so dass verschiedene Teile in verschiedenen Zellen des Puffers 140 gespeichert werden können.
  • Das Verfahren 300 fährt dann mit der Auswertung des Pakets durch den Prozessor 132 fort (Schritt 312). Die Daten und/oder Metadaten des Pakets können analysiert werden, um eine Weiterleitungsentscheidung in Bezug auf das Paket zu treffen und um eine Kürzungsentscheidung 212 in Bezug auf das Paket zu treffen. Basierend auf der Auswertung des Pakets kann der Prozessor 132 eine Kürzungsentscheidung 212 treffen (Schritt 316). Die Kürzungsentscheidung 212 kann einer Entscheidung entsprechen, dass das Paket zumindest einige unnötige oder unerwünschte Daten in seiner Nutzlast aufweist. In einigen Ausführungsformen kann eine Kürzungsentscheidung 212 getroffen werden, wenn einige der Daten, die gekürzt werden, für einen vorherigen Sprung in einem Netzwerk erforderlich waren, aber nicht mehr erforderlich sind. In einigen Ausführungsformen kann die Kürzungsentscheidung 212 getroffen werden, wenn einige der Daten in dem Paket verwendet werden, um ein Protokoll zu unterstützen, das innerhalb des Netzwerks nicht verwendet wird. Eine Kürzungsentscheidung 212 kann aus jedem beliebigen Grund getroffen werden und muss nicht notwendigerweise in Bezug auf die Daten in der Nutzlast des Pakets getroffen werden. Beispielsweise können bei der Paketkürzung auch die Metadaten des Pakets entfernt werden. In jedem Fall wird die Kürzungsentscheidung 212 dazu führen, dass das Paket von einer ersten Größe auf eine zweite Größe, die kleiner als die erste Größe ist, gekürzt wird (Schritt 316). Bei der Erwägung des Kürzens der Pakete ist zu beachten, dass unter der Annahme einer Implementierung, bei der die Zellen des Pakets als verknüpfte Liste verbunden werden, das Durchgehen der verknüpften Liste zum „Entfernen“ der nicht benötigten Daten die Leistung des Puffers 140 kosten und länger als gewünscht dauern kann. Daher kann es möglich sein, ein Paket so effizient wie möglich und auf eine Weise zu kürzen, die nicht unbedingt die nicht benötigten Daten aus dem Puffer 140 „entfernt“. Insbesondere könnte der Prozessor 132, anstatt alle Zellen zu lesen und zu löschen, die nicht benötigte Daten aus einem Paket enthalten, Folgendes ausführen, ohne darauf beschränkt zu sein:
    1. (1) Durchsuchen der verknüpften Liste und Durchgehen der Gesamtmenge der benötigten Bytes und dann Aktualisieren des nächsten Zeigers auf Null. Wenn die benötigte Datenmenge beispielsweise kleiner ist als die Daten einer einzelnen Zelle, wird nur ein einziger Lese-/Schreibvorgang in den Arbeitsspeicher erfolgen.
    2. (2) Aktualisieren der entsprechenden Längenfelder im „Deskriptor“ des Pakets.
    3. (3) Implementieren der verknüpften Liste im Arbeitsspeicher und nicht im Puffer selbst, wodurch die Notwendigkeit, in den Puffer zu schreiben/lesen, entfallen könnte.
  • Das Verfahren 300 kann dann mit dem Speichern des gekürzten Pakets in einem Puffer 140 fortfahren (Schritt 320). In einigen Ausführungsformen wird das gekürzte Paket in den Puffer geschrieben, jedoch später als üblich. In diesem Beispiel kann es möglich sein, zunächst nur die notwendigen Teile in den Puffer zu schreiben, so dass kein zusätzliches Schreiben/Lesen in den Puffer erforderlich ist. In einigen Ausführungsformen kann das gekürzte Paket in der gleichen Anzahl von Zellen gespeichert werden, die für die Speicherung des ursprünglichen Pakets verwendet worden wäre. Wenn jedoch die Verkürzung des Pakets zu einer Verringerung der Paketgröße um einen Betrag führt, der ausreicht, um die Anzahl der Zellen zu verringern, die zum Speichern des verkürzten Pakets erforderlich sind, dann kann das verkürzte Paket im Puffer 140 mit weniger Zellen gespeichert werden, als für das ursprüngliche Paket als erforderlich ermittelt wurden.
  • Das Verfahren 300 kann damit fortfahren, dass der Prozessor 132 das gekürzte Paket für die Übertragung über die Schnittstelle 116 vorbereitet (Schritt 324). Die Vorbereitung für die Übertragung kann das Einreihen von Paketen in eine Warteschlange und das Planen umfassen. Die Vorbereitung für die Übertragung kann auch die Auswahl eines oder mehrerer Ausgangsports von der Schnittstelle 116 umfassen, die für die Übertragung des gekürzten Pakets an ein Datenziel 112 verwendet werden. Das gekürzte Paket kann optional durch den MUX/DEMUX 148 geleitet werden, um vor der Übertragung gemultiplext zu werden (Schritt 328). Unabhängig davon, ob das Paket gemultiplext ist oder nicht, wird es dann über den/die ausgewählten Port(s) übertragen (Schritt 332).
  • Wie oben erörtert, kann die Paketkürzung dazu beitragen, weniger Ressourcen des Puffers 140 zu nutzen. Zusätzlich zur Verringerung der Anforderungen an die Puffergröße können die hier beschriebenen Verfahren zur Paketkürzung auch die Leistung der Netzwerkvorrichtung 104 beschleunigen, die die gekürzten Pakete sendet. Insbesondere, aber ohne Einschränkung, kann die Netzwerkvorrichtung 104 in der Lage sein, die Leitungsrate an seinen Ausgangsanschlüssen zu erreichen und wird weniger Strom verbrauchen, da weniger Pufferoperationen und weniger Daten innerhalb der Vorrichtung selbst übertragen werden.
  • Unter Bezugnahme auf 4 wird nun ein zweites Paketverarbeitungsverfahren 400 gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung beschrieben. Das Verfahren 400 beginnt, wenn ein Paket an der Netzwerkvorrichtung 104 empfangen wird (Schritt 404). Das Paket wird zunächst in einem ersten Puffer 140 gespeichert (Schritt 408). Der als erster Puffer 140 verwendete Vorrichtungstyp kann jedem geeigneten Typ von Pufferarbeitsspeicher entsprechen. Der erste Puffer 140 kann jede der hier dargestellten und beschriebenen Arbeitsspeichervorrichtungen umfassen, die sich in der Netzwerkvorrichtung 104 befinden oder ihr zur Verfügung stehen.
  • Das Verfahren 400 wird mit dem Auswerten des Pakets durch den Prozessor 132 fortgesetzt (Schritt 412). Das Paket kann als Teil einer Parsing- und Weiterleitungsentscheidung 220 ausgewertet werden. Basierend auf der Auswertung des Pakets kann der Prozessor 132 eine Kürzungsentscheidung 212 treffen (Schritt 416). Als Teil des Treffens einer bestätigenden Kürzungsentscheidung 212 kann das Paket von einer ersten Größe auf eine zweite, kleinere Größe gekürzt werden.
  • Das gekürzte Paket kann dann in einem zweiten Puffer 140 gespeichert werden (Schritt 420). In diesem Schritt können die Paketdaten aus dem ersten Puffer 140 gekürzt und anschließend in dem zweiten Puffer 140 gespeichert werden. Die ursprünglichen Paketdaten im ersten Puffer 140 können dann überschrieben werden oder die Zellen im ersten Puffer 140 können zur Speicherung von Daten anderer Pakete freigegeben werden. Währenddessen speichert der zweite Puffer 140 das gekürzte Paket, während das Paket für die Übertragung vorbereitet wird (Schritt 424). Vor der Übertragung können die aus dem zweiten Puffer 140 abgerufenen Paketdaten gemultiplext werden (Schritt 428). Unabhängig davon, ob die aus dem zweiten Puffer 140 abgerufenen Paketdaten gemultiplext sind oder nicht, wird das Verfahren 400 fortgesetzt, indem das gekürzte Paket an ein oder mehrere Datenziele 112 übertragen wird (Schritt 432). Das gekürzte Paket kann über einen oder mehrere Ports der Schnittstelle 116 übertragen werden.
  • Unter Bezugnahme auf 5 wird nun ein drittes Paketverarbeitungsverfahren 500 gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung beschrieben. Das Verfahren 500 beginnt, wenn ein Paket an der Netzwerkvorrichtung 104 empfangen wird (Schritt 504). Das Paket wird zunächst in einem ersten Puffer 140 gespeichert (Schritt 508). Der als erster Puffer 140 verwendete Vorrichtungstyp kann jedem geeigneten Typ von Pufferarbeitsspeicher entsprechen. Der erste Puffer 140 kann jede der hier dargestellten und beschriebenen Arbeitsspeichervorrichtungen umfassen, die sich in der Netzwerkvorrichtung 104 befinden oder ihr zur Verfügung stehen.
  • Das Verfahren 500 wird mit dem Auswerten des Pakets durch den Prozessor 132 fortgesetzt (Schritt 512). Das Paket kann als Teil einer Parsing- und Weiterleitungsentscheidung 220 ausgewertet werden. Basierend auf der Auswertung des Pakets kann der Prozessor 132 eine Kürzungsentscheidung 212 treffen (Schritt 516). Als Teil des Treffens einer bestätigenden Kürzungsentscheidung 212 kann das Paket von einer ersten Größe auf eine zweite, kleinere Größe gekürzt werden.
  • Das gekürzte Paket kann dann in dem ersten Puffer 140 gespeichert werden, jedoch mit der zweiten, kleineren Größe. Die Speicherung (oder Neuspeicherung) des gekürzten Pakets im ersten Puffer 140 kann auf verschiedene Weise erfolgen. In einem Beispiel kann das ursprüngliche Paket durch das gekürzte Paket im ersten Puffer 140 (z.B. durch einen Neuschreib-Prozess) ersetzt werden (Schritt 520). In einem anderen Beispiel kann eine verknüpfte Liste aktualisiert werden, um zumindest einige Zellen in dem ersten Puffer 140 freizugeben, die nicht mehr benötigt werden, um das gekürzte Paket zu speichern, aber zuvor zum Speichern des ursprünglichen Pakets verwendet wurden. In diesem Beispiel besteht keine Notwendigkeit, die im ersten Puffer 140 gespeicherten Daten zu ändern, jedoch werden zumindest einige der Zellen des Puffers 140 freigegeben und für die Speicherung anderer Pakete verfügbar gemacht (Schritt 524). Es wird darauf hingewiesen, dass beide Schritte 520 und 524 auch als Teil der Speicherung des gekürzten Pakets in dem ersten Puffer 140 durchgeführt werden können.
  • Das Verfahren 500 wird dann mit der Vorbereitung des gekürzten Pakets für die Übertragung fortgesetzt (Schritt 528). Die Vorbereitung des Pakets kann ein Einreihen in eine Warteschlange und ein Planen des Pakets für die Übertragung über einen oder mehrere ausgewählte Ports umfassen. Vor der Übertragung kann das gekürzte Paket gemultiplext werden (Schritt 532). Unabhängig davon, ob das gekürzte Paket gemultiplext wird oder nicht, wird das Verfahren 500 fortgesetzt, indem das gekürzte Paket an ein oder mehrere Datenziele 112 übertragen wird (Schritt 536). Das gekürzte Paket kann über einen oder mehrere Ports der Schnittstelle 116 übertragen werden.
  • Unter Bezugnahme auf 6 wird nun ein viertes Paketverarbeitungsverfahren 600 gemäß zumindest einigen Ausführungsformen der vorliegenden Offenbarung beschrieben. Das Verfahren 600 beginnt, wenn ein Paket an der Netzwerkvorrichtung 104 empfangen wird (Schritt 604). Das Paket wird zunächst im Arbeitsspeicher der Netzwerkvorrichtung 104 gespeichert (Schritt 604). Das Paket kann in einem Puffer 140 oder einem anderen Arbeitsspeicher 136 innerhalb der Netzwerkvorrichtung 104 gespeichert werden. Der zum Speichern des gekürzten Pakets verwendete Arbeitsspeicher kann in einem gemeinsamen Gehäuse wie andere Komponenten der Netzwerkvorrichtung 104 enthalten sein und kann in einer Datenverarbeitungseinheit 128 enthalten sein.
  • Das Verfahren 600 fährt damit fort, dass der Prozessor 132 das Paket parst und eine Auswertung des Pakets basierend auf dem Parsen des Pakets durchführt (Schritt 612). Basierend auf der Auswertung des Pakets während des Parsens kann der Prozessor 132 eine Entscheidung bezüglich einer oder mehrerer Aktionen treffen, die mit dem Paket durchgeführt werden sollen (Schritt 616). Eine Aktion, die auf das Paket angewendet werden kann, besteht darin, das Paket von einer ersten Größe auf eine zweite, kleinere Größe zu kürzen (Schritt 620). In einigen Ausführungsformen kann es auch möglich sein, den Pufferplatz freizugeben, der jetzt effektiv ungenutzt ist (z.B. der vorher das nicht gekürzte Paket gespeichert hat) (Schritt 624).
  • Sobald das Paket gekürzt wurde (oder vor der Kürzung), können die Deskriptoren des Pakets an eine Port-Warteschlange gesendet werden, die während des Paket-Parsing ausgewählt wurde (Schritt 628). Nach dem Empfang der Deskriptoren des Pakets an der Port-Warteschlange kann das Paket für die Übertragung geplant werden (Schritt 632). Wenn das Paket den Anfang der Warteschlange erreicht, können die Daten des gekürzten Pakets aus dem Puffer 140, in dem es gespeichert ist, abgerufen und dem/den Port(s) bereitgestellt werden, der/die das gekürzte Paket übertragen wird/werden (Schritt 636). Das Verfahren 600 fährt fort mit der Übertragung des gekürzten Pakets an ein oder mehrere Datenziele 112 (Schritt 640).
  • Spezifische Details wurden in der Beschreibung angegeben, um ein gründliches Verständnis der Ausführungsformen zu ermöglichen. Fachleute werden jedoch verstehen, dass die Ausführungsformen auch ohne diese spezifischen Details ausgeführt werden können. In anderen Fällen können bekannte Schaltungen, Prozesse, Algorithmen, Strukturen und Techniken ohne unnötige Details gezeigt werden, um die Ausführungsformen nicht zu verdecken.
  • Während veranschaulichende Ausführungsformen der Offenbarung hier im Detail beschrieben wurden, ist es zu verstehen, dass die erfinderischen Konzepte auf andere Weise verkörpert und verwendet werden können, und dass die beigefügten Ansprüche so ausgelegt werden sollen, dass sie solche Variationen umfassen, sofern sie nicht durch den Stand der Technik eingeschränkt sind.
  • Es versteht sich, dass die oben beschriebenen Aspekte und Ausführungsformen rein beispielhaft sind und dass im Rahmen der Ansprüche Änderungen im Detail vorgenommen werden können.
  • Jede Vorrichtung, jedes Verfahren und jedes Merkmal, die in der Beschreibung und (optional) in den Ansprüchen und Zeichnungen offenbart sind, können unabhängig voneinander oder in jeder geeigneten Kombination bereitgestellt werden.
  • Die in den Ansprüchen verwendeten Bezugszahlen dienen nur der Veranschaulichung und haben keine einschränkende Wirkung auf den Umfang der Ansprüche.

Claims (21)

  1. Netzwerkvorrichtung, die Folgendes umfasst: eine Schnittstelle, die ein oder mehrere Pakete empfängt; einen Puffer, der das eine oder die mehreren Pakete vorübergehend speichert, bevor sie von der Netzwerkvorrichtung übertragen werden; und eine Schaltung, die ein an der Schnittstelle empfangenes Paket auswertet und, basierend auf der Auswertung des Pakets, das Paket kürzt, wodurch eine Größe des Pakets vor dem Speichern des Pakets in dem Puffer reduziert wird.
  2. Netzwerkvorrichtung nach Anspruch 1, wobei die Schaltung das Paket ferner in zwei oder mehr Paketteile aufteilt, die in zwei oder mehr entsprechenden Zellen in dem Puffer gespeichert werden.
  3. Netzwerkvorrichtung nach Anspruch 2, wobei das Paket vor der Kürzung geteilt wird.
  4. Netzwerkvorrichtung nach Anspruch 2, wobei das Paket nach der Kürzung geteilt wird.
  5. Netzwerkvorrichtung nach einem der Ansprüche 2 bis 4, wobei das gekürzte Paket eine Anzahl von Zellen im Puffer belegt, die kleiner ist als die Anzahl von Zellen, die das Paket vor der Kürzung belegen würde.
  6. Netzwerkvorrichtung nach einem der vorhergehenden Ansprüche, wobei das Paket vor dem Kürzen zunächst im Puffer gespeichert wird, und mindestens ein Zeiger als Teil des Kürzens des Pakets angepasst wird, um mindestens eine Zelle im Puffer freizugeben, wodurch mehr Pufferplatz für die Speicherung anderer Pakete zugewiesen wird.
  7. Netzwerkvorrichtung nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: einen Ausgangsanschluss, wobei die Schaltung das gekürzte Paket aus dem Puffer liest und bewirkt, dass das gekürzte Paket über den Ausgangsanschluss übertragen wird.
  8. Netzwerkvorrichtung nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: einen Multiplexer, wobei die Schaltung das gekürzte Paket aus dem Puffer liest und bewirkt, dass das gekürzte Paket dem Multiplexer zugeführt wird.
  9. Netzwerkvorrichtung nach einem der vorhergehenden Ansprüche, wobei die Schaltung eine Menge an Pufferplatz bestimmt, die durch das Kürzen des Pakets eingespart wird, und die Menge an Pufferplatz für die Speicherung eines zusätzlichen Pakets freigibt, bevor das gekürzte Paket aus dem Puffer gelesen wird.
  10. Netzwerkvorrichtung nach einem der vorhergehenden Ansprüche, wobei die Schaltung das gekürzte Paket aus dem Puffer unter Verwendung einer verknüpften Liste und/oder eines Datenbank-Lookups liest.
  11. Netzwerkvorrichtung nach einem der vorhergehenden Ansprüche, wobei die Schaltung einen Deskriptor des Pakets aktualisiert, um eine Länge des gekürzten Pakets zu beschreiben, wie sie im Puffer gespeichert ist.
  12. System, das Folgendes umfasst: eine Netzwerkvorrichtung, die ein oder mehrere Pakete empfängt, wobei die Netzwerkvorrichtung einen Puffer umfasst, der das eine oder die mehreren Pakete vor der Übertragung durch die Netzwerkvorrichtung vorübergehend speichert; und einen Controller, der ein an der Netzwerkvorrichtung empfangenes Paket auswertet und, basierend auf der Auswertung des Pakets, das Paket kürzt, wodurch eine Größe des Pakets für die Speicherung in dem Puffer reduziert wird.
  13. System nach Anspruch 12, wobei der Controller als Teil der Netzwerkvorrichtung vorgesehen ist.
  14. System nach Anspruch 12 oder 13, wobei der Controller das Paket in zwei oder mehr Paketteile unterteilt, die in zwei oder mehr entsprechenden Zellen im Puffer gespeichert werden.
  15. System nach Anspruch 14, wobei das gekürzte Paket eine Anzahl von Zellen im Puffer belegt, die kleiner ist als die Anzahl von Zellen, die das Paket vor der Kürzung belegen würde.
  16. System nach einem der Ansprüche 12 bis 15, wobei das Paket vor dem Kürzen zunächst im Puffer gespeichert wird, und mindestens ein Zeiger als Teil des Kürzens des Pakets angepasst wird, um mindestens eine Zelle im Puffer freizugeben, wodurch mehr Pufferplatz für die Speicherung anderer Pakete zugewiesen wird.
  17. System nach einem der Ansprüche 12 bis 16, wobei der Controller eine Menge an Pufferplatz bestimmt, die durch das Kürzen des Pakets eingespart wird, und die Menge an Pufferplatz für die Speicherung eines zusätzlichen Pakets freigibt, bevor das gekürzte Paket aus dem Puffer gelesen wird.
  18. Verfahren, das Folgendes umfasst: Empfangen eines Pakets an einer Netzwerkvorrichtung; Auswerten des Pakets; basierend auf der Auswertung des Pakets, Kürzen des Pakets von einer ersten Größe auf eine zweite Größe, die kleiner als die erste Größe ist; und Speichern des gekürzten Pakets in einem Puffer vor dem Übertragen des gekürzten Pakets mit der Netzwerkvorrichtung.
  19. Verfahren nach Anspruch 18, das ferner Folgendes umfasst: Aufteilen des Pakets in zwei oder mehr Paketteile, die in entsprechenden zwei oder mehr Zellen des Puffers gespeichert werden, wobei das gekürzte Paket eine Anzahl von Zellen in dem Puffer belegt, die kleiner ist als eine Anzahl von Zellen, die das Paket in dem Puffer vor der Kürzung belegen würde.
  20. Verfahren nach Anspruch 18 oder 19, das ferner Folgendes umfasst: Multiplexen des gekürzten Pakets; und Übertragen des gemultiplexten gekürzten Pakets über einen Port der Netzwerkvorrichtung.
  21. Verfahren nach Anspruch 18, 19 oder 20, das ferner Folgendes umfasst: Bestimmen eines Ports und/oder einer Warteschlange, an die das Paket gesendet werden soll; und Senden des Pakets an den bestimmten Port und/oder die bestimmte Warteschlange.
DE102023205742.5A 2022-06-27 2023-06-20 Frühzeitige und effiziente paketkürzung Pending DE102023205742A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/850,537 US20230421508A1 (en) 2022-06-27 2022-06-27 Early and efficient packet truncation
US17/850,537 2022-06-27

Publications (1)

Publication Number Publication Date
DE102023205742A1 true DE102023205742A1 (de) 2023-12-28

Family

ID=89075556

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023205742.5A Pending DE102023205742A1 (de) 2022-06-27 2023-06-20 Frühzeitige und effiziente paketkürzung

Country Status (2)

Country Link
US (1) US20230421508A1 (de)
DE (1) DE102023205742A1 (de)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798777B1 (en) * 2000-04-17 2004-09-28 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7848341B2 (en) * 2001-02-28 2010-12-07 International Business Machines Corporation Switching arrangement and method with separated output buffers
US7813342B2 (en) * 2007-03-26 2010-10-12 Gadelrab Serag Method and apparatus for writing network packets into computer memory
US9282022B2 (en) * 2012-11-14 2016-03-08 Broadcom Corporation Forensics for network switching diagnosis
US10313255B1 (en) * 2017-01-16 2019-06-04 Innovium, Inc. Intelligent packet queues with enqueue drop visibility and forensics

Also Published As

Publication number Publication date
US20230421508A1 (en) 2023-12-28

Similar Documents

Publication Publication Date Title
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE60026676T2 (de) Paketklassifizierungsautomat
DE102013209118B4 (de) Beibehaltung und Änderung von Netzwerküberlastungsbenachrichtigungen während der Übertragung von Netzwerkdaten zwischen einem physischen Netzwerk und einem virtuellen Netzwerk
DE60033529T2 (de) Netzprozessor, speicherorganisation und verfahren
DE102006058818B4 (de) Vorrichtung und Verfahren zur Umwandlung von Textmitteilungen
DE69924732T2 (de) Quellknoten fuer ein breitbandnetzwerk mit atm zellen
DE60030737T2 (de) Hochleistungs-Vermittlungselement und -Vermittlungssystem
DE69031266T2 (de) Übertragungsarchitektur für Hochgeschwindigkeitsnetzwerk
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE102015102871A1 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
EP2115948A1 (de) Verfahren und anlage zur optimierten übertragung von daten zwischen einer steuereinrichtung und mehreren feldgeräten
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE112008000598T5 (de) Relaisschaltungseinheit für ein Fahrzeug
DE10392638T5 (de) Koppelpunktschalter mit Serialisierungs- und Deserialisierungsfunktionen
DE112010004809B4 (de) Mehrfachgranulare Datenstromverarbeitung
DE102015118711A1 (de) Technologien zur Netzwerkpaketcacheverwaltung
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE102018204861A1 (de) Einzelner Umsetzungstabelleneintrag für symmetrische Flüsse
DE102021207394A1 (de) Zusammenführen von paketen auf der grundlage von hinweisen, die vom netzwerkadapter erzeugt werden
DE102016216495B4 (de) Basic-CAN Controller
DE102021213414A1 (de) Routing mit einem switch mit festen zuordnungen
DE69735546T2 (de) Paketvermittelte leitweglenkung-architektur für mehrere gleichzeitige verbindungen
DE102020124791A1 (de) Verfahren zur Übertragung von Daten von einer ersten Recheneinheit zu einer zweiten Recheneinheit
DE102023205742A1 (de) Frühzeitige und effiziente paketkürzung

Legal Events

Date Code Title Description
R012 Request for examination validly filed