DE102020102981A1 - Auswahl von Eingängen für Nachschlagoperationen - Google Patents

Auswahl von Eingängen für Nachschlagoperationen Download PDF

Info

Publication number
DE102020102981A1
DE102020102981A1 DE102020102981.0A DE102020102981A DE102020102981A1 DE 102020102981 A1 DE102020102981 A1 DE 102020102981A1 DE 102020102981 A DE102020102981 A DE 102020102981A DE 102020102981 A1 DE102020102981 A1 DE 102020102981A1
Authority
DE
Germany
Prior art keywords
packet
lookup
portions
over time
hash
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
DE102020102981.0A
Other languages
English (en)
Inventor
Cian FERRITER
Fei Z. WANG
Richard Walsh
John Browne
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102020102981A1 publication Critical patent/DE102020102981A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24549Run-time optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Library & Information Science (AREA)
  • Computational Linguistics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

Eine Hash-Berechnung wird unter Verwendung eines Abschnitts oder von Abschnitten eines Pakets ausgeführt, das übertragen oder empfangen werden soll. Der berechnete Hash-Wert kann verwendet werden, um einen Eintrag auszuwählen, der definiert, wie das Paket gehandhabt werden soll. Die Performance der Nachschlagoperation kann überwacht werden, und wenn die Hash-Berechnung zu übermäßigen Kollisionen führt oder zusätzliche Verarbeitungsschritte in Verbindung mit der Nachschlagoperation benötigt werden, können die Eingänge zu der Hash-Berechnung modifiziert werden, um zu versuchen, die Performance der Nachschlagoperation zu verbessern. Zum Beispiel können unterschiedliche Eingänge ausgewählt werden und zur Verwendung spezifiziert werden, wenn die Performance der Nachschlagoperation einen Schwellenpegel erreicht, um eine Eingangsveränderung auszulösen.

Description

  • TECHNISCHES GEBIET
  • Verschiedene hierin beschriebene Beispiele beziehen sich auf Techniken zur Paketverarbeitung und genauer auf die Auswahl von Eingängen für eine Nachschlagoperation, die zur Bestimmung einer nächsten Aktion für die Verarbeitung eines Pakets verwendet wird.
  • HINTERGRUND
  • Hash-Berechnungen werden verwendet, um einen Bitstrom oder ein Bitsymbol in ein kürzeres Bitmuster zu transformieren, das als kompakte Darstellungen des Eingangs-Bitstroms oder - Bitsymbols verwendet werden kann. Hash-Berechnungen können in Verbindung mit der Suche nach Nachschlagtabellen für relevante Informationen verwendet werden. Das Verwenden von kürzeren Bitmustern kann eine Such- oder Nachschlaggeschwindigkeit erhöhen, insbesondere wenn die Anzahl von durchsuchbaren Einträgen sehr groß ist. Die Suchzeit kann durch die Auswahl von einer Hash-Funktion und interner Datenstrukturen reduziert werden. Wenn jedoch das Hashing mehrerer unterschiedlicher Eingangs-Bitströme oder -Bitsymbole zu dem gleichen kürzeren Bitmuster führt, tritt eine Kollision auf und zusätzliche Nachschlagoperation werden benötigt, um eine geeignete Übereinstimmung für den/das Eingangs-Bitstrom oder -Bitsymbol zu finden.
  • Einige Ansätze zum Reduzieren von Hash-Kollisionen, wie beispielsweise MurmerHash oder Jenkins, haben angestrebt, Hash-Kollisionen zu vermeiden, indem sie die Geschwindigkeit oder die Einzigartigkeit von Hash-Operationen verbessern. Einige Ansätze wählen zur Kompiliert-Zeit manuell Hash-Eingangsabschnitte eines Bitstroms basierend auf Versuch und Irrtum oder einem heuristischen Ansatz-Satz aus.
  • Figurenliste
    • 1 stellt ein beispielhaftes Szenario dar, in welchem eine Verkehrsquelle einen Verkehr von Paketen oder Frames gemäß einiger Ausführungsbeispiele ausgibt.
    • 2 stellt ein Flussdiagramm einer bekannten Verarbeitungsart von Paketen unter Verwendung eines virtuellen Schalters gemäß einiger Ausführungsbeispiele dar.
    • 3A stellt ein beispielhaftes System dar, das gemäß einiger Ausführungsbeispiele verwendet werden kann.
    • 3B stellt eine beispielhafte Arbeitsumgebung gemäß einiger Ausführungsbeispiele dar.
    • 4 stellt ein Beispiel eines Systems dar, wo ein Empfänger Performance-Informationen in Bezug auf Nachschlagen, basierend auf Eingangsfeldern, gemäß einiger Ausführungsbeispiele senden kann.
    • 5 stellt Beispiele von Feldern dar, die zum Ausführen eines Nachschlagens verwendet werden und die zur Verwendung gemäß einiger Ausführungsbeispiele vorgeschlagen werden.
    • 6A stellt einen Prozess dar, der verwendet wird, um Abschnitte von Paketen zu verwalten, die zum Nachschlagen von Paketverarbeitungsaktionen gemäß einiger Ausführungsbeispiele verwendet werden.
    • 6B stellt einen Prozess zum selektiven Anpassen einer Hashing-Berechnung gemäß einiger Ausführungsbeispiele dar.
    • 7 stellt ein beispielhaftes System gemäß einiger Ausführungsbeispiele dar.
    • 8 stellt eine beispielhafte Netzwerkschnittstelle gemäß einiger Ausführungsbeispiele dar.
    • 9 stellt einen beispielhaften Schalter gemäß einiger Ausführungsbeispiele dar.
    • 10 stellt ein Beispiel eines Datenzentrums gemäß einiger Ausführungsbeispiele dar.
  • DETAILLIERTE BESCHREIBUNG
  • Im Netzwerkkontext wird das Hashing von empfangenen Paketen gemeinhin in virtuellen Schaltern verwendet, um relevante Informationen für empfangene Pakete zu bestimmen, um zu entscheiden, wie die empfangenen Pakete verarbeitet werden sollen. Bei aktuellen virtuellen Schalteraufbauten kann die Performance-Verschlechterung (z.B. reduzierte Geschwindigkeit von Paketdurchsatz) aufgrund von Hashing-Schemata, die Hash-Kollisionen verursachen, auftreten. Kollidierende Hashes können sich schädlich auf die Performance von Netzwerkknoten auswirken, da sie zu einer hohen zentralen Verarbeitungseinheit- (CPU; Central Processing Unit) Auslastung während Nachschlagoperationen führen können.
  • 1 stellt ein beispielhaftes Szenario dar, in welchem eine Verkehrsquelle Pakete oder Frames zur Übertragung ausgibt oder Pakete zur Verarbeitung bereitstellt. Eine Verkehrsquelle 102 kann eine Übertragung eines Pakets anfordern oder ein Paket zur Verarbeitung bereitstellen. Zum Beispiel kann die Verkehrsquelle 102 eine virtuelle Maschine (VM; virtual machine), ein Behälter, eine Anwendung, ein Betriebssystem, ein Paketsender oder eine andere Einheit sein. Ein virtueller Schalter 104 bestimmt Aktionen zum Verarbeiten von Paketen unter Verwendung eines Fluss-Tabellen-Nachschlagens 106. Zur Kompilier-Zeit des virtuellen Schalters 104, können Felder eines Pakets spezifiziert werden, um als ein Eingang einer Hash-Berechnung verwendet zu werden. Zum Beispiel können einer oder mehrere Abschnitte von Anfangsblock-Feldern als Eingänge für eine Hash-Berechnung ausgewählt werden. Wenn Pakete jedoch die gleichen Eingänge für die Hash-Berechnung aufweisen, können Hash-Kollisionen auftreten und die Paketverarbeitungsgeschwindigkeiten können sich verringern, um zusätzliche Nachschlagoperationen auszuführen, um dem Paket zugeordnete Flussinformationen zu finden und zu aktualisieren. Zum Beispiel kann eine Hash-Tabelle abgefragt werden, um einen Austrittport für ein Paket, eine Paketklassifizierung, eine Statusverwaltung pro Datenfluss und eine Netzwerküberwachung zu bestimmen. Basierend auf einem Fluss-Nachschlagen für das Paket stellt ein Schalt-/Routing-Element 108 das Paket einer/m anderen VM oder Behälter oder zur Übertragung an ein drahtgebundenes oder drahtloses Netzwerk unter Verwendung eines Übertragungs- (TX) Elements 110 bereit.
  • 2 stellt ein Flussdiagramm einer bekannten Verarbeitungsart von Paketen unter Verwendung eines virtuellen Schalters dar. Bei 202 wird ein Paket empfangen. Das Paket kann von einem Netzwerkmedium empfangen werden oder zur Übertragung zur Verfügung gestellt werden (oder beides). Bei 204 wird eine Bestimmung durchgeführt, ob ein Hash auf dem Paket berechnet werden soll. Bei einigen Fällen sind zur Übertragung verfügbare Pakete von einer virtuellen Maschine (VM) oder einem Behälter bei dem vSwitch oder seiner klassifizierenden Anwendung nicht gehasht, während von einem Netzwerkmedium empfangene Pakete gehasht werden sollen. Wenn ein Hash nicht ausgeführt werden soll, können bei 220 die Pakete an die Netzwerk-Zielanwendung (z.B. vSwitch) weitergeleitet werden. Wenn ein Hash ausgeführt werden soll, werden dann bei 206 aktuelle Hashing-Parameter von dem Paket abgerufen. Die Hash-Parameter werden im Voraus gewählt, wenn der virtuelle Schalter basierend darauf, welche Verkehrsart erwartet wird, kompiliert wird. Zum Beispiel können Hashing-Parameter einen oder mehrere 5Tupel von einem Paket umfassen (z.B. Quell-IP-Adresse, Quellportnummer, Ziel-IP-Adresse, Zielportnummer, und verwendetes Protokoll oder eine Media Access Controll- (MAC) Quell- oder Zieladresse). Bei 208 kann ein Empfangsseiten-Skalierungs-(RSS, receive side scaling) Hash-Wert unter Verwendung der Hashing-Parameter erzeugt werden. Eine Hash-Berechnung wird in der vSwitch auf den Feldern der Anfangsblöcke des Pakets, spezifiziert in den Hashing-Parametern, ausgeführt. Der RSS Hash-Wert kann verwendet werden, um einen Kern zur Verarbeitung des empfangenen Pakets und seiner zugeordneten Warteschlange auszuwählen. Das empfangene Paket kann an die geeignete Warteschlange zur Verarbeitung basierend auf dem RSS Hash-Wert weitergeleitet werden. Zum Beispiel können Beispiele von RSS eine Microsoft® Empfangsseiten-Skalierung, eine Linux® Empfangsseiten-Skalierung und so weiter umfassen.
  • Die Hash-Berechnung auf dem Paket wird verwendet, um nachzuschlagen, welche Aktion auf dem Paket ausgeführt werden soll. Wenn ein Eintrag für den berechneten Hash gefunden wird und das Paket als dem Eintrag zugeordnet verifiziert wird (z.B. unter Verwendung eines Nachschlagens umfassend zusätzliche Abschnitte des Pakets umfassend oder über die Hashing-Parameter hinaus), wird die in diesem Eintrag umfasste Aktion ausgeführt und das Paket wird basierend auf der in dem Eintrag spezifizierten Aktion weitergeleitet. Wenn ein Eintrag gefunden wird aber das Paket nicht zum Verwenden des Eintrags verifiziert ist, schlägt das Nachschlagen fehl und eine Hash-Kollision ist aufgetreten. Wenn kein Eintrag in der Nachschlagtabelle gefunden wird, muss ein Up-Call ausgeführt werden, um die korrekte Aktion zu bestimmen, die auf dem Paket ausgeführt werden soll.
  • Wenn sich der Betrag von Nachschlage-Fehlschlägen erhöht, weil sich die Art des Verkehrs, der durch den virtuellen Schalter gesendet wird, ändert, aber die in der Hash-Berechnung verwendeten Felder nicht variieren, dann kann die Performance des Nachschlagens inakzeptabel sein. Zum Beispiel können, wenn Layer 4 Quellen- oder Zielportinformationen in der Hash-Berechnung verwendet wurden, aber sich der Verkehr ändert, sodass sich die Ziel-IP-Adresse ändert aber die Layer 4 Quelle- oder Zielports gleich bleiben, mehr Kollisionen auftreten und die Nachschlag-Performance kann inakzeptabel werden.
  • Verschiedene Ausführungsbeispiele sehen vor, dass Felder, die in einer Hash-Berechnung in Verbindung mit einer Paket-Klassifizierung und einer nächsten Aktion zur Verarbeitung eines Pakets verwendet werden, geändert werden können. Bei einigen Ausführungsbeispielen detektiert ein System, dass ein Paket zur Übertragung verfügbar ist oder von einem drahtgebundenen oder drahtlosen Medium empfangen wird. Ein Feldselektor bestimmt, welche Felder (oder Abschnitte) des Pakets in einer Hash-Berechnung verwendet werden. Die Hash-Berechnung kann in Verbindung mit einem Fluss-Tabellen-Nachschlagen verwendet werden, wobei der gehashte Wert verwendet wird, um eine Tabelle zum Abrufen von Flussinformationen für ein Paket zu indizieren. Zum Beispiel kann, wenn eine Kollisionsrate von Hash-Berechnungen zu hoch ist, ein Nachschlag-Performancepaket gebildet werden, um einen separaten Sender zu informieren. Das Nachschlag-Performancepaket kann Informationen bereitstellen, um eine Qualität eines Hash anzuzeigen, unter Verwendung eines oder mehrerer aus: Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum. Der Sender, eine separate Vorrichtung oder eine lokale Entität können das Nachschlag-Performancepaket oder seine Informationen empfangen, bestimmen, welcher eine oder welche mehrere Eingänge in einer Hash-Berechnung verwendet werden sollen und ein Feedback-Paket oder Feedback an das System übertragen, um auszuwählen, welcher eine oder welche mehrere Eingänge in einer Hash-Berechnung verwendet werden sollen. Bei einigen Ausführungsbeispielen kann das Feedback-Paket oder Feedback anzeigen, dass eine verwendete Hashing-Berechnung geändert werden sollte.
  • 3A stellt ein beispielhaftes System dar, das verwendet werden kann. Ein Host-System oder eine Netzwerkschnittstelle können das System von 3A in Verbindung mit der Verarbeitung eines Pakets zur Übertragung oder Wieder-Übertragung verwenden. Das Paket kann von einer anderen Vorrichtung empfangen werden oder eine Übertragung, die von einer virtuellen Maschine, einem Behälter, einer Anwendung oder einer anderen Software initiiert wird. Verschiedene Ausführungsbeispiele können in Netzwerkschnittstellen, Routern und Schaltern oder wo Hashbasiertes Nachschlagen verwendet werden soll, verwendet werden. Ein Beispiel wird als nächstes für das Verarbeiten eines empfangenen Pakets bereitgestellt. Ein Sendeempfänger 302 kann ein Paket von einem drahtgebundenen oder drahtlosen Netzwerkmedium empfangen und Physical Layer-Verarbeitung (PHY; physical layer processing) und Media Access Controll- (MAC) Schicht-Verarbeitung auf dem Paket ausführen. Eine Feldauswahlsteuerung 304 kann das empfangene Paket durch eine Bestimmung verarbeiten, welches eine oder welche mehrere Felder oder welcher eine oder welche mehrere Abschnitte des empfangenen Pakets in einer Hash-Berechnung durch den Fluss-Tabellen-Nachschlagblock 306 verwendet werden sollen. In einigen Fällen spezifiziert ein empfangenes Paket, welches eine oder welche mehrere Felder oder welcher eine oder welche mehrere Abschnitte des empfangenen Pakets in einer Hash-Berechnung durch das Fluss-Tabellen-Nachschlagen 306 für dieses empfangene Paket oder für Pakete, die nach der Spezifikation, welches eine oder welche mehrere Felder oder welcher eine oder welche mehrere Abschnitte in einer Hash-Berechnung verwendet werden sollen. Ausgewählte Felder können eine MAC-Adresse, 5-Tupel, ein Virtual Local Area Network- (VLAN) Tag sein oder Protokollfelder höherer Schichten (oder Abschnitte derselben) können zur Verwendung ausgewählt werden. In einigen Fällen kann ein empfangenes Paket einen Hashing-Algorithmus zur Verwendung für das empfangene Paket oder andere empfangene Pakete spezifizieren. Bei einigen Ausführungsbeispielen können Hash-Eingänge für die Verwendung in bestimmten Flüssen oder Eingangsports spezifiziert sein. Wenn ein empfangenes Paket nicht spezifiziert, welches eine oder welche mehrere Felder oder welcher eine oder welche mehrere Abschnitte des empfangenen Pakets in einer Hash-Berechnung durch das von dem virtuellen Schalter 320 verwendete Fluss-Tabellen-Nachschlagen 306 verwendet werden sollen, dann kann die Feldauswahlsteuerung 304 konfigurierte Einstellungen anwenden und eines oder mehrere spezifizierte Felder oder einen oder mehrere spezifizierte Abschnitte des empfangenen Pakets für die Fluss-Nachschlagtabelle 306 bereitstellen.
  • Der Fluss-Tabellen-Nachschlagblock 306 kann eine Hash-Berechnung unter Verwendung des einen oder der mehreren bereitgestellten Felder oder Abschnitte des empfangenen Pakets ausführen. Beispiele von Hash-Berechnungen umfassen unter anderem SHA-256 oder MD-5, sind aber nicht auf diese beschränkt. Basierend auf dem berechneten Hash kann der Fluss-Tabellen-Nachschlagblock 306 einen Eintrag, der dem berechneten Hash der Tabellen 308 zugeordnet ist, abrufen. Wenn eine Übereinstimmung vorliegt, kann ein zusätzlicher Verifizierungsschritt unter Verwendung des einen oder der mehreren bereitgestellten Feldern oder Abschnitten des empfangenen Pakets sowie anderer Informationen des empfangenen Pakets erfolgen, um zu verifizieren, dass der Eintrag abgerufen werden soll und für das empfangene Paket verwendet werden soll. Das Nachschlagen kann spezifizieren, wie ein Paket oder Pakete unter Verwendung einer Regel, des nächsten Ziels (z.B. Warteschlange, Ausgangsport) eindeutig gehandhabt werden sollen, und wie sie unter anderem unterschieden werden können. Andere Beispiele für Regeln sind das Fallenlassen von Paketen, das Spiegeln, das Modifizieren von Feldern, die Empfangsseitenskalierung oder das Hinzufügen oder Entfernen von Protokoll-Anfangsblöcken. Es wird daraus hingewiesen, dass die Feldauswahl und das Nachschlagen der nächsten Aktion nach einer Empfangsseitenskalierung-Zuweisung von Paketen an einen Kern und eine zugeordnete Warteschlange auftreten können.
  • Im Folgenden wird ein Beispiel einer Hash-Tabelle-Nachschlag-Prozedur bereitgestellt. Ein bereitgestellter Schlüssel wird gehashet, um einen Index eines entsprechenden Buckets in der Tabelle abzurufen. Ein primärer Bucket und ein sekundärer Bucket können verwendet werden, um eine duplizierte Schlüsselverwendung zu vermeiden. Zum Beispiel kann ein Schlüssel 3-Wegegehasht sein, um eine Signatur, einen primären Bucketindex (der sich auf mehrere Buckets 0 bis n beziehen kann) und einen sekundären Bucketindex (der sich auf mehrere Buckets 0 bis m beziehen kann) zu erzeugen. Gehashte Schlüssel, die einer Signatur in einem Bucket entsprechen, führen zu einem Abruf der zugeordneten Schlüsseldaten-Zeigerpaaren. Der Schlüsselabschnitt des Schlüsseldaten-Zeigerpaars wird mit dem Schlüssel von der Warteschlange verglichen. Wenn eine Übereinstimmung vorliegt, kann der Datenzeiger zum Abrufen der angeforderten Daten verwendet werden. Zum Beispiel kann der Datenzeiger zum Abrufen von Daten (z.B. einer Flussklassifizierung) in einen Cache verwendet werden.
  • Die Performance-Informationen des Nachschlagens können unter Verwendung einer Performance-Informationen-Erfassung 322 erfasst werden. Zum Beispiel können die Performance-Informationen eines oder mehrere umfassen von: Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen über einen Zeitraum, Fluss-Regel-Verdrängungen von den Tabellen 308 über einen Zeitraum, Installationsraten von Regeln in die Tabelle 308 über einen Zeitraum und andere Informationen. Die Feldauswahlsteuerung 304 kann Fluss-Nachschlag-Performance-Informationen 307 von der Performance-Informationen-Erfassung 322 empfangen, die die Performance von Nachschlagoperationen unter Verwendung des einen oder der mehreren bereitgestellten Felder oder Abschnitte des empfangenen Pakets anzeigt. Die Feldauswahlsteuerung 304 kann Performance-Informationen 305 bereitstellen, die die Fluss-Nachschlag-Performance-Informationen 307 anzeigen und/oder einen oder mehrere empfohlene Eingänge zum Verwenden zum Hashen eines empfangenen Pakets anzeigen.
  • Basierend zumindest auf den Fluss-Nachschlag-Performance-Informationen 307 kann die Feldauswahlsteuerung 304 ein Eingangsauswahlelement 303 verwenden, um Felder auszuwählen, die empfohlen oder für das Hashing eines empfangenen Pakets verwendet werden sollen. Zum Beispiel kann das Eingangsauswahlelement 303 bestimmen, welche Felder dem Fluss-Tabellen-Nachschlagblock 306 bereitgestellt werden sollen, wenn eine oder mehrere der Fluss-Nachschlag-Performance-Informationen 307 über einem Schwellenpegel liegen. Zum Beispiel kann das Eingangsauswahlelement 303 die Felder bestimmen, die sich ändern, und diese Felder als empfohlene Eingänge unter Verwendung der Performance-Informationen 305, bereitgestellt in einem übertragenen Paket oder in einer lokalen Kommunikation, identifizieren (umfassend eine Übertragung über einen Bus oder eine Verbindung). Zum Beispiel können die Performance-Informationen 305 zur Übertragung an einen oder mehrere Sender von Paketen bereitgestellt sein, die Pakete an die Vorrichtung übertragen (z.B. Schalter, Router, Netzwerkschnittstelle), die die Feldauswahlsteuerung 304 umfasst. Bei anderen Beispielen können die Performance-Informationen durch lokale Kommunikation unter Verwendung von Interprozesskommunikationen (IPC; inter-processor communications), Remote Procedure Call (RPC), einer Datenbank oder auf andere Weise bereitgestellt sein. Die Performance-Informationen 305 können zur Übertragung an einen Orchestrator (z.B. Kubernetes oder OpenStack) bereitgestellt sein, der Fluss-Tabellen-Nachschlagoperationen für einen oder mehrere virtuelle Schalter verwaltet.
  • Ein Sender, ein Orchestrator oder andere Elemente können entscheiden, die empfohlenen Felder, die über die Performance-Informationen 305 zur Verwendung bereitgestellt sind, zu akzeptieren oder abzulehnen und stattdessen ihre eigenen Felder zur Verwendung als Hash-Berechnungs-Eingänge unter Verwendung eines Feedback-Pakets auszuwählen. Ein an das System von 3A gesendete Feedback-Paket kann verwendet werden, um an die Feldauswahlsteuerung 304 zu spezifizieren, welcher Abschnitt eines empfangenen Pakets zur Ausführung einer Hash-Berechnung verwendet werden soll. Bei einigen Ausführungsbeispielen kann die Feldauswahlsteuerung 304 die empfohlenen Eingangsfelder, spezifiziert in einem Feedback-Paket, akzeptieren und verwenden. Bei einigen Ausführungsbeispielen kann die Feldauswahlsteuerung 304 unabhängige Entscheidungen treffen, welche Felder basierend auf Empfehlungen von dem Eingangsauswahlelement 303 verwendet werden sollen.
  • Es wird darauf hingewiesen, dass im Falle von Nachschlag-Fehlschlägen alte Einträge in Tabelle 308 verdrängt werden können. Alte Einträge würden im Laufe der Zeit durch neue Einträge ersetzt werden, die die neuere Hash-Berechnung verwenden. Die Tabelle 308 ersetzt Einträge, wenn diese voll sind und ein neuer Wert wird eingesetzt. Die Tabelle 308 kann so eingerichtet sein, dass Einträge, auf die in einem bestimmten Zeitraum nicht zugegriffen wurde, verdrängt werden, was bei den Einträgen, die die alte Hash-Berechnung verwendet haben, der Fall wäre, da diese Einträge nicht länger getroffen werden würden.
  • Bei dem Beispiel aus 3A kann der virtuelle Schalter das Fluss-Tabellen-Nachschlagen 306, um eine nächste Aktion für ein Paket zu bestimmen, ein Schalten / Routing 310, um Verkehr zu einer anderen VM oder einem Behälter bereitzustellen oder das Übertragungs- (TX) Element 312 zum Übertragen von Paketen durch ein Netzwerkmedium verwenden. Der virtuelle Schalter 320 kann irgendeine Software- und/oder Hardwarevorrichtung sein, die eines oder mehrere bereitstellt aus: Einblick in die VM-interne Kommunikation; Unterstützung für das Link Aggregation Control Protocol (LACP) zur Steuerung der Bündelung mehrerer physischer Ports, um einen einzelnen logischen Kanal zu bilden; Unterstützung für das Standard 802. IQ VLAN-Modell mit Trunking; Multicast-Snooping; IETF Auto-Attach SPBM und rudimentäre erforderliche LLDP-Unterstützung; BFD- und 802.1ag-Verknüpfungsüberwachung; STP (IEEE 802.1D-1998) und RSTP (IEEE 802. 1D-2004); feinkörnige QoS-Steuerung; Unterstützung für HFSC-QDisc; Verkehrsüberwachung pro VM-Schnittstelle; Netzwerk-Schnittstellen-Bonding mit Quell-MAC-Lastausgleich, aktivem Backup und L4-Hashing; OpenFlow-Protokollunterstützung (umfassend viele Erweiterungen für die Virtualisierung), IPv6-Unterstützung; Unterstützung für mehrere Tunneling-Protokolle (GRE, VXLAN, STT und Geneve, mit IPsec-Unterstützung); Unterstützung für das Fernkonfigurationsprotokoll mit C- und Python-Bindungen; Unterstützung für Kernel- und User-Space-Weiterleitungs-Engine-Optionen; Multi-Tabellen-Weiterleitungs-Pipeline mit Flow-Caching-Engine; und Weiterleitung der Abstraktionsschicht zur Vereinfachung der Portierung auf neue Software- und Hardware-Plattformen. Nicht einschränkende Beispiele des virtuellen Schalters 104 umfassen Open vSwitch (OVS), Vektorpaketverarbeitung (VPP; vector packet processing) und Tungsten Fabric vRouter.
  • 3B stellt eine beispielhafte Arbeitsumgebung dar. Eine Netzwerkschnittstellensteuerung 370 stellt empfangene Pakete von einem Netzwerk zur/m Paket-Wiederübertragung oder - Wiederempfang von einem drahtgebundenen oder drahtlosen Medium bereit. Eine Feldauswahlsteuerung 380 stellt einen oder mehrere Hash-Eingänge gemäß hierin beschriebener Ausführungsbeispiele bereit. Die Feldauswahlsteuerung 380 kann Eingänge, die zur Ausführung eines Hash auf einem empfangenen Paket oder einem Paket, das zur Übertragung verfügbar ist, verwendet werden, auswählen. Die Eingänge können basierend auf einer Spezifikation durch einen entfernten Sender, Orchestrator oder Hypervisor ausgewählt werden. Bei einigen Ausführungsbeispielen kann die Feldauswahlsteuerung 380 Feedback zur Qualität der Hash-Eingänge nutzen, um zu bestimmen, welche Eingänge in einer Hash-Berechnung verwendet werden sollen, wobei die Hash-Berechnung zum Nachschlagen von Einträgen verwendet wird, die die nächste Verarbeitung oder Aktion für ein Paket spezifizieren. Feedback zur Qualität von Hash-Eingängen kann eine Kollisionsrate von Hashes über einen Zeitraum umfassen, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen für einen Hash-Berechnungs-Eingang über einen Zeitraum, Fluss-Regel-Verdrängungen von Nachschlagtabellen über einen Zeitraum, Installationsraten von Regeln in eine Nachschlagtabelle über einen Zeitraum und andere Informationen. Bei verschiedenen Ausführungsbeispielen kann die Feldauswahlsteuerung 380 unter Verwendung irgendeines Teils oder einer Kombination aus dem virtuellen Schalter 360 oder der Netzwerkschnittstellensteuerung 370 implementiert sein.
  • Pakete treten dann in den virtuellen Schalter 360 (z.B. vSwitch) zum Nachschlagen einer nächsten Aktion ein. Nicht einschränkende Beispiele des virtuellen Schalters 360 umfassen Open vSwitch (OVS), Vektorpaketverarbeitung (VPP) und Tungsten Fabric vRouter. Der virtuelle Schalter 360 kann Performance-Informationen betreffend Hashing und Nachschlagoperationen gemäß hierin beschriebenen Ausführungsbeispielen bereitstellen. Der virtuelle Schalter 360 sendet Pakete an die virtuelle Maschine (VM) oder einen Behälter 350. Die VM oder der Behälter 350 können ein Paket zur Übertragung unter Verwendung der Netzwerkschnittstellensteuerung 370 oder zur Verarbeitung von Inhalten von empfangenen Paketen unter Verwendung der Netzwerkschnittstellensteuerung 370 in Anspruch nehmen.
  • Irgendeine Art von Virtualisierungsplattform kann verwendet werden, umfassend Xen, Betriebssystem-Kern-basierte virtuelle Maschine (KVM; kernel-based virtual machine), VmWare, QWMU und so weiter. Wenn ein Linux-Betriebssystem verwendet wird, kann ein VirtIO-Virtualisierungs-Rahmen in Verbindung mit einer QEMU - Virtualisierungsplattform verwendet werden, um eine Kommunikation mit einem virtuellen Schalter 360 bereitzustellen. Der virtuelle Schalter 360 kann einen Data Plane Development Kit-(DPDK) vHost Nutzerport zur Interaktion und Ethernet als einen Standard zum Empfangen und Senden von Paketen verwenden. In anderen Umgebungen kann OpenDataPlane verwendet werden.
  • 4 stellt ein Beispiel eines Systems dar, wobei ein Empfänger Performance-Informationen, die sich auf Nachschlagen basierend auf Eingangsfeldern beziehen, senden kann. Ein lokaler Agent 402, Hypervisor 404, Sender 406 oder eine andere Vorrichtung oder Software kann die Performance-Informationen, die von einem Empfänger 410 bereitgestellt oder übertragen werden, verwenden, um ein oder mehrere Eingangsfelder auszuwählen oder zu spezifizieren, die zur Durchführung eines Nachschlagens von flussbezogenen Informationen verwendet werden. Der lokale Agent 402 kann mit dem Empfänger unter Verwendung einer lokalen Schnittstelle, Verbindung, RPC, IPC und so weiter verbunden sein. Der Hypervisor 404 oder der Sender 406 können Performance-Informationen unter Verwendung eines Netzwerks empfangen, sodass ein Paket zur Übertragung der Performance-Informationen gebildet wird. Bei einigen Beispielen können mehrere Sender die Performance-Informationen empfangen.
  • 5 stellt Beispiele von Feldern dar, die zur Ausführung von Nachschlagen verwendet werden und von Feldern, die zur Verwendung vorgeschlagen werden. Die zur Hash-Berechnung verwendeten Felder sind die Felder 1, 2, 5 und 9. Basierend auf den Performance-Informationen sind die für die Verwendung in der Hash-Berechnung vorgeschlagenen Felder die Felder 5 und 9. Zum Beispiel können die Felder 5 und 9 ausreichend variieren, um Hash-Kollisionen zu reduzieren. Die Felder 5 und 9 können als Abschnitte eines empfangenen Pakets zum Bereitstellen von Hash-basiertem Nachschlagen empfohlen werden. Ein an einen Sender übertragenes Feedback-Paket, das einen Feldselektor verwendet, identifiziert die Felder 5 und 9, die in Hashes von empfangenen Paketen verwendet werden sollen. Unter Verwendung dieser Information wählt der Feldselektor die Felder 5 und 9 für Hashes basierend genau auf diesen beiden Felder für empfangene Pakete aus.
  • 6A stellt einen Prozess dar, der zum Verwalten von Abschnitten von Paketen, die in Nachschlag-Paket-Verarbeitungsaktionen verwendet werden, verwendet werden kann. Der Prozess der 6A kann durch eine Feldselektorlogik, bevor das Hashing eines Pakets ausgeführt wird, verwendet werden, um Information (z.B. nächste Aktion oder Flussinformation) für ein Paket zu bestimmen. Der Prozess der 6A kann von einer Netzwerkschnittstelle, einem virtuellen Schalter, einem Host-System, einem Router, einem Schalter oder einem anderen System verwendet werden. Bei 602 ist ein Paket zur Verarbeitung verfügbar. Zum Beispiel kann ein Paket von einem Netzwerk empfangen werden oder zur Verarbeitung oder Wiederverarbeitung verfügbar sein. Bei 604 können Abschnitte des Pakets zur Verwendung bereitgestellt werden, um Informationen im Zusammenhang mit der Verarbeitung des Pakets nachzuschlagen. Zum Beispiel können eines oder mehrere Felder des Pakets so programmiert werden, dass sie in einer Hash-Berechnung zur Verwendung bereitgestellt sind. Die Eingangsfelder können zur Kompilier-Zeit eines virtuellen Schalters programmiert werden. Bei einigen Ausführungsbeispielen können das eine oder die mehreren Felder während der Laufzeit des virtuellen Schalters modifiziert werden und eine Feldselektorlogik (z.B. Software und/oder Hardware) kann die Eingangsfelder basierend auf der Programmierung unter Verwendung eines Feedback-Pakets, empfangen von einem lokalen oder entfernten Agenten (z.B. Software und/oder Hardware) auswählen. Zum Beispiel kann ein Prozess Bezug nehmend auf die 6B verwendet werden, um eines oder mehrere Eingangsfelder, verwendet in einer Hash-Berechnung, anzupassen. Danach kann eine vorangehend beschriebene Nachschlagoperation verwendet werden, um Informationen in Bezug auf die Verarbeitung des Pakets zu bestimmen. Bei 606 können Performance-Informationen über Nachschlagen basierend auf bereitgestellten Abschnitten von einem oder mehreren Paketen empfangen werden. Zum Beispiel können Performance-Informationen eine Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen über einen Zeitraum, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum und andere Informationen umfassen. Bei 608 kann festgestellt werden, ob eine Schwelle für irgendeine der Performance-Informationen erreicht (oder überschritten) wird. Zum Beispiel kann, wenn Performance-Informationen eine Kollisionsrate über einen Zeitraum, die eine Schwelle erreicht oder über überschreitet, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, der/die eine Schwelle erreicht oder überschreiten, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, die eine Schwelle erreichen oder überschreiten oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum, die eine Schwelle erreichen oder überschreiten, umfassen kann, dann können die bereitgestellten Abschnitte im Zusammenhang mit dem Veranlassen von Überschuss-Hash-Kollisionen betrachtet werden. Wenn eine Schwelle für irgendeine der Performance-Informationen erreicht oder überschritten wird, kann 610 folgen. Wenn keine der Schwellen für irgendeine der Performance-Informationen erreicht und nicht überschritten wird, kann 602 folgen und der Prozess kann sich wiederholen. Der Schwellenpegel für irgendeine der Performance-Informationen kann von einem Orchestrator oder Administrator programmiert sein.
  • Bei 610 können Performance-Informationen einem Verwalter von Paket-Übertragungen bereitgestellt sein. Der Verwalter von Paket-Übertragungen kann die Performance-Informationen verwenden, um einen oder mehrere Abschnitte der empfangenen Pakete auszuwählen, um sie für eine Hash-Berechnung im Zusammenhang mit dem Nachschlagen von Paket-Verarbeitungsoperationen zu verwenden. Der Verwalter von Paket-Übertragungen kann spezifizieren, welcher eine oder mehrere Abschnitte der empfangenen Pakete für eine Hash-Berechnung unter Verwendung eines Feedback-Pakets oder Feedback-Informationen, die für das Ändern von Konfigurationseinstellungen einer Netzwerkschnittstelle, eines Routers oder eines Schalters bereitgestellt sind, zu verwenden. Bei einigen Beispielen kann ein Paket eine Spezifikation umfassen, welcher eine oder welche mehreren Abschnitte für die Ausführung einer Hash-Berechnung auf diesem Paket verwendet werden sollen und ein Feedback-Paket wird nicht separat übertragen. Der Verwalter von Paket-Übertragungen kann ein Sender von Paketen, einem Orchestrator, einem Hypervisor wie beispielsweise QEMU, XEN, Oracle VM VirtualBox oder ein lokaler Agent sein.
  • Bei einigen Ausführungsbeispielen kann 612 ausgeführt werden, wobei empfohlen wird, einen oder mehrere Abschnitte bei einem Nachschlagen zu verwenden. Zum Beispiel kann ein Feldselektor oder ein virtueller Schalter eine Empfehlung bereitstellen, welche Eingangsfelder für eine Hash-Berechnung ausgewählt werden sollen. Die Empfehlungen können ganz oder teilweise von einem Verwalter von Paket-Übertragungen akzeptiert oder abgelehnt werden, der bestimmt, welche Eingangsfelder verwendet werden sollen (z.B. MAC-Adressen, Ethernet-Typ, VLAN-Tag, IP-Adressen, MPLS Etikett).
  • 6B stellt einen Prozess zum selektiven Anpassen einer Hashing-Berechnung dar. Der Prozess kann unter anderem von einem virtuellen Schalter, einer Paket-Klassifizierungsanwendung, einer Netzwerkschnittstelle, einem Router, einem Schalter oder einer Host-Vorrichtung verwendet werden. Bei 650 wird ein Feedback-Paket empfangen. Zum Beispiel kann ein Feedback-Paket basierend auf einer Anfangsblock-Einstellung identifiziert werden, zum Beispiel kann das Ethernet-Typ-Feld mit einem kundenspezifischen Wert, der noch nicht von einem Protokoll verwendet wird, ein Feedback-Paket identifizieren. Ein entfernter Sender, Orchestrator, Hypervisor, lokaler Agent oder eine andere Vorrichtung können das Feedback-Paket mit der Spezifikation übertragen, welcher Abschnitt eines empfangenen Pakets zur Ausführung einer Hash-Berechnung verwendet werden soll. Bei 652 wird eine Bestimmung durchgeführt, um festzustellen, ob ein Feldselektorelement verfügbar ist. Ein Feldselektorelement kann eine Hardware und/oder Software sein, die so programmiert sein kann, Eingangsfelder zum Bereitstellen einer Paket-Nachschlagoperation auszuwählen. Zum Beispiel können eines oder mehrere Anfangsblockfelder (oder Abschnitte davon) in einem empfangenen Paket identifiziert werden. Zum Beispiel können die Anfangsblockfelder eine VLAN ID, eine IP- Quell- und/oder - Zieladresse, einen Ethernet-Typ, MAC- Quell- und/oder -Zieladressen, ein MPLS Etikett und so weiter umfassen. Bei einigen Ausführungsbeispielen kann eine Validierung auftreten, dass das Feedback-Paket zum Anpassen des einen oder der mehreren Eingänge für eine Nachschlagoperation verwendet werden kann. Eine Validierung kann das Validieren von Quell-oder Ziel-IP-Adressen, Quell-oder Ziel-MAC-Adressen und/oder Paket-Anfangsblock-Inhalt umfassen. Ein Feldselektorelement kann Pakete inspizieren, um festzustellen, ob ein Feedback-Paket validiert ist. Wenn ein Paket validiert und ein Feldselektorelement zur Verwendung verfügbar ist, folgt 654. Wenn ein Feldselektorelement nicht zur Verwendung verfügbar und ein Paket nicht validiert ist, folgt 670.
  • Bei 654 werden einer oder mehrere Eingänge, bereitgestellt zur Verwendung in Nachschlagoperationen, geupdatet. Bei empfangenen Paketen, die nach dem Feedback-Paket verarbeitet werden, werden ein oder mehrere vom Feedback-Paket ausgewählte Eingangsfelder als Hash-Eingang verwendet, um ein Nachschlagen auszuführen. Bei einigen Beispielen kann ein Feedback-Paket spezifizieren, welche Felder in einer Hash-Berechnung verwendet werden sollen und ebenso kann eine nächste Aktion für das Feedback-Paket unter Verwendung der spezifizierten Felder ausgeführt werden. Zum Beispiel kann ein Prozess wie der in 6A verwendet werden, um Pakete unter Verwendung der upgedateten Eingangsfelder zu verarbeiten.
  • Bei 670 kann das Feedback-Paket verworfen oder nicht weitergeleitet werden und zur PaketVerarbeitung zur Verfügung gestellt werden. Wenn ein Feedback-Paket nicht validiert ist, kann es verworfen oder an eine Standardwarteschlange zur Verarbeitung gesendet werden.
  • 7 stellt ein System dar. Das System kann hierin beschriebene Ausführungsbeispiele verwenden. Ein System 700 umfasst einen Prozessor 710, der die Verarbeitung, die Betriebsverwaltung und die Ausführung von Anweisungen für das System 700 bereitstellt. Der Prozessor 710 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU; graphics processing unit), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 700 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 710 steuert den Gesamtbetrieb des Systems 700 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder dergleichen oder eine Kombination solcher Bauelemente sein oder umfassen.
  • Bei einem Beispiel umfasst das System 700 eine Schnittstelle 712, die mit de, Prozessor 710 gekoppelt ist, was eine Hochgeschwindigkeitsschnittstelle oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten repräsentieren kann, die Verbindungen mit höherer Bandbreite benötigten, wie beispielsweise ein Speicherteilsystem 720 oder Grafikschnittstellen-Komponenten 740 oder Beschleuniger 742. Die Schnittstelle 712 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, ist eine Grafikschnittstelle 740 über eine Schnittstelle mit Grafikkomponenten verbunden, um einem Nutzer des Systems 700 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel umfasst die Grafikschnittstelle 740 eine hochauflösende (HD; high definition) Anzeige, die einem Nutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z.B. 1080p), Retina-Displays, 4K (ultra high definition oder UHD; ultrahochauflösend) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in einem Speicher 730 gespeichert sind oder basierend auf Operationen, die ein Prozessor 710 ausführt oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in dem Speicher 730 gespeichert sind oder basierend auf Operationen, die der Prozessor 710 ausführt oder beidem.
  • Die Beschleuniger 742 können eine Offload-Engine mit fester Funktion sein, auf die der Prozessor 710 zugreifen kann oder die von einem Prozessor 1010 verwendet werden kann. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 742 Kompressionsfähigkeit (DC), Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierung-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 742 zusätzlich oder alternativ die hierin beschriebenen Feldauswahlsteuerungsfähigkeiten bereit. In einigen Fällen können die Beschleuniger 742 in eine CPU-Buchse integriert sein (z.B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt). Beispielsweise können die Beschleuniger 742 einen Einzel- oder Multi-Kern-Prozessor umfassen, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit mit Ein- oder Multi-Ebenen-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronale-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gate-Arrays (FPGAs; field programmable gate arrays). Die Beschleuniger 742 können mehrere neuronale Netzwerke, Prozessorkerne bereitstellen oder Grafikverarbeitungseinheiten können für die Verwendung durch Modelle der künstlichen Intelligenz (KI (artificial intelligence (AI)) oder des maschinellen Lernens (ML; machine learning) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: ein Verstärkungs-Lernschema, ein Q-Lernschema, ein Deep-Q-Lernen oder ein Asynchronous Advantage Actor-Critic (A3C), ein kombinatorisches neuronales Netzwerk, ein rekurrierendes kombinatorisches neuronales Netzwerk oder ein anderes KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch AI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 720 repräsentiert den Hauptspeicher des Systems 700 und stellt Speicher für einen Code, der von dem Prozessor 710 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 720 kann eine oder mehrere Speichervorrichtungen 730 umfassen, wie beispielsweise Nurlesespeicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten eines Direktzugriffsspeichers (RAM; random access memory) wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 730 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 732, um eine Softwareplattform für die Ausführung von Befehlen in dem Zusätzlich können Anwendungen 734 auf der Software-Plattform von OS 732 von dem Speicher 730 ausgeführt werden. Die Anwendungen 734 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen umfassen. Prozesse 736 repräsentieren Mittel oder Routinen, die Hilfsfunktionen an OS 732 oder eine oder mehrere Anwendungen 734 oder eine Kombination bereitstellen. Das OS 732, die Anwendungen 734 und die Prozesse 736 stellen Software-Logik bereit, um Funktionen für das System 700 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 720 eine Speichersteuerung 722, die eine Speichersteuerung zum Erzeugen und Erteilen von Befehlen an den Speicher 730 ist. Es versteht sich, dass die Speichersteuerung 722 ein physikalischer Teil des Prozessors 710 oder ein physikalischer Teil der Schnittstelle 712 sein könnte. Zum Beispiel kann die Speichersteuerung 722 eine integrierter Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 710 integriert ist.
  • Auch wenn nicht speziell dargestellt, versteht es sich, dass das System 700 einen oder mehrere Busse oder Bussysteme zwischen Bauelementen umfassen kann, wie beispielsweise einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheriekomponentenverbindungs-Bus (PCI; peripheral component interconnect), einem Hyper Transport- oder Industry Standard Architecture-(ISA) Bus, einem Small Computer System Interface- (SCSI) Bus , einem Universellen-Seriellen-Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers-(IEEE) Standard 1374-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 700 eine Schnittstelle 714, die mit der Schnittstelle 712 gekoppelt sein kann. Bei einem Beispiel repräsentiert die Schnittstelle 714 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Nutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide an die Schnittstelle 714. Eine Netzwerkschnittstelle 750 stellt dem System 700 die Möglichkeit bereit, über eines oder mehrere Netzwerke mit entfernten Bauelementen (z.B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 750 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlose standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 750 kann Daten an eine entfernte Vorrichtung übertragen, was das Senden von im Speicher gespeicherten Daten umfassen kann. Eine Netzwerkschnittstelle 750 kann Daten von einer entfernten Vorrichtung empfangen, was die Speicherung der empfangenen Daten im Speicher umfassen kann. Verschiedene Ausführungsbeispiele können in Verbindung mit der Netzwerkschnittstelle 750, dem Prozessor 710 und dem Speicherteilsystem 720 verwendet werden.
  • Bei einem Beispiel umfasst das System 700 eine oder mehrere Eingangs-/Ausgangs- (I/O; Input/Output) Schnittstelle(n) 760. Eine I/O-Schnittstelle 760 kann eine oder mehrere Schnittstellenkomponenten umfassen, durch die ein Nutzer mit dem System 700 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellen). Eine Peripherieschnittstelle 770 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig von dem System 700 verbunden werden. Eine abhängige Verbindung ist eine Verbindung, bei der das System 700 die Software- oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Nutzer interagiert.
  • Bei einem Beispiel umfasst das System 700 ein Speicherteilsystem 780, um Daten in einer nichtflüchtigen Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten eines Speichers 780 mit Komponenten des Speicherteilsystems 720 überlappen. Das Speicherteilsystem 780 umfasst (eine) Speichervorrichtung(en) 784, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen kann (können), wie beispielsweise eine oder mehrere magnetische, Festkörper- oder optische Platten oder eine Kombination davon. Ein Speicher 784 umfasst einen Code oder Anweisungen und Daten 786 in einem dauerhaften Zustand (d.h. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 700 erhalten). Der Speicher 784 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 730 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 710 Anweisungen bereitzustellen. Während der Speicher 784 nichtflüchtig ist, kann der Speicher 730 einen flüchtigen Speicher umfassen (d.h. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 700 unterbrochen ist). Bei einem Beispiel umfasst das Speicherteilsystem 780 eine Steuerung 782, um über eine Schnittstelle mit dem Speicher 784 verbunden zu sein. Bei einem Beispiel ist die Steuerung 782 ein physikalischer Teil der Schnittstelle 714 oder des Prozessors 710 oder kann Schaltungsanordnungen oder Logik sowohl in dem Prozessor 710 als auch in der Schnittstelle 714 umfassen.
  • Eine Leistungsquelle (nicht abgebildet) stellt den Komponenten des Systems 700 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 700, um den Komponenten des Systems 700 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen Wechselstrom-zu-Gleichstrom-(Wechselstrom-zu-Gleichstrom) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom-Leistung kann eine erneuerbare Energie- (z.B. Sonnenenergie) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom-Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom-Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarstromversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 700 unter Verwendung von miteinander verbundenen Rechenschlitten aus Prozessoren, Speichern, Speichervorrichtungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Es können Hochgeschwindigkeitsverbindungen wie PCIe, Ethernet oder optische Verbindungen (oder eine Kombination davon) verwendet werden.
  • 8 stellt eine Netzwerkschnittstelle dar. Eine Netzwerkschnittstelle 800 kann einen Sendeempfänger 802, Prozessoren 804, eine Sende-Warteschlange 806, eine Empfangs-Warteschlange 808, einen Speicher 810 und eine Bus-Schnittstelle 824, einen Nachschlag-Eingangs-Selektor 824 und eine DMA-Engine 852 umfassen. Der Sendeempfänger 802 kann imstande sein, Pakete in Übereinstimmung mit den anwendbaren Protokollen wie beispielsweise Ethernet, wie in IEEE 802.3 beschrieben, zu empfangen und zu senden, obwohl auch andere Protokolle verwendet werden können. Der Sendeempfänger 802 kann Pakete von und zu einem Netzwerk über ein Netzwerkmedium (nicht abgebildet) empfangen und senden. Der Sendeempfänger 802 kann eine PHY-Schaltungsanordnung 814 und eine Media Access Control-(MAC) Schaltungsanordnung 816 umfassen. Die PHY-Schaltungsanordnung 814 kann Kodier- und Dekodierschaltungsanordnungen (nicht gezeigt) zum Kodieren und Dekodieren von Datenpaketen gemäß den anwendbaren Spezifikationen oder Standards der Physical Layer umfassen. Die MAC-Schaltungsanordnung 816 kann so konfiguriert sein, dass sie die zu übertragenden Daten zu Paketen anordnet, die Ziel- und Quelladressen zusammen mit Netzwerksteuerungsinformation und Hash-Werten zur Fehlerdetektierung umfassen. Bei den Prozessoren 804 kann es sich um eine irgendeine Kombination handeln aus: Prozessor, Kern, Grafikverarbeitungseinheit (GPU), feld-programmierbarem Gate-Array (FPGA), anwendungsspezifischer integrierter Schaltung (ASIC) oder einer anderen programmierbaren Hardware-Vorrichtung, die die Programmierung der Netzwerkschnittstelle 800 erlauben. Beispielsweise kann eine „Smart Netzwerkschnittstelle“ unter Verwendung von den Prozessoren 804 Paketverarbeitungsfähigkeiten in der Netzwerkschnittstelle bereitstellen.
  • Ein Nachschlag-Eingangs-Selektor 824 kann einen oder mehrere ausgewählte Abschnitte von einem empfangenen Paket zur Verwendung in einer Hash-Berechnung zur Verwendung in einer Tabelle-Nachschlagoperation bereitstellen, um zu bestimmen, wie das empfangene Paket verarbeitet werden soll. Zum Beispiel können einer oder mehrere ausgewählte Abschnitte eines Pakets in einem Paket spezifiziert werden oder unter Verwendung einer anderen Kommunikationstechnik bereitgestellt werden. Der eine oder die mehreren ausgewählten Abschnitte können auf der Hash-Performance basieren, basierend auf einem oder mehreren vorher ausgewählten Abschnitten und können versuchen, Hash-Kollisionen zu reduzieren. Die Hash-Berechnung kann verwendet werden, um auf eine Nachschlagtabelle zuzugreifen, die einen nächsten Verarbeitungsschritt für ein empfangenes Paket spezifiziert. Zum Beispiel kann Empfangsseitenskalierung (RSS) verwendet werden, um das empfangene Paket zur Verarbeitung durch einen Kern oder einen Prozessor zuzuweisen. Bei einigen Fällen, wenn RSS verwendet wird, kann die RSS-basierte Kernauswahl durch den Nachschlag-Eingangs-Selektor 824 durchgeführt und das empfangene Paket an die Empfangs-Warteschlange 808 mit einer Anzeige des Kerns zur Verarbeitung des empfangenen Pakets bereitgestellt werden. Funktionalität des Nachschlag-Eingangs-Selektors 824 kann stattdessen oder zusätzlich zur Verwendung bereitgestellt werden, bevor eine virtuelle Schalter-/Paket- Verarbeitungsanwendung ein Nachschlagen auf einem Paket durchführt.
  • Eine Interrupt-Zusammenführung 822 kann eine Interrupt-Moderation durchführen, wobei eine Netzwerkschnittstellen-Interrupt-Zusammenführung 822 auf das Eintreffen mehrerer Pakete oder den Ablauf eines Time-Outs wartet, bevor sie einen Interrupt an das Host-System zur Verarbeitung (eines) empfangener(n) Pakete(s) erzeugt. Empfangssegment-Zusammenführung (RSC; Receive Segment Coalescing) kann durch eine Netzwerkschnittstelle 800 durchgeführt werden, wobei Abschnitte der eingehenden Pakete zu Segmenten eines Pakets kombiniert werden. Die Netzwerkschnittstelle 800 stellt dieses zusammengeführte Paket an eine Anwendung bereit.
  • Der Direktspeicherzugriffs-(DMA) Engine 852 kann einen Paketanfangsblock, eine Paketnutzlast und/oder einen Deskriptor direkt vom Host-Speicher an die Netzwerkschnittstelle oder umgekehrt kopieren, anstatt das Paket an einen Zwischenpuffer bei dem Host zu kopieren und dann eine weitere Kopieroperation von dem Zwischenpuffer an den Zielpuffer zu verwenden.
  • Der Speicher 810 kann jede Art von flüchtiger oder nichtflüchtiger Speichervorrichtung sein und kann irgendeine Warteschlange oder Anweisungen speichern, die zur Programmierung der Netzwerkschnittstelle 800 verwendet werden. Die Sendewarteschlange 806 kann Daten oder Referenzen auf Daten zur Übertragung über die Netzwerkschnittstelle umfassen. Die Empfangswarteschlange 808 kann Daten oder Referenzen auf Daten umfassen, die über eine Netzwerkschnittstelle von einem Netzwerk empfangen wurden. Deskriptor-Warteschlangen 820 können Deskriptoren umfassen, die auf Daten oder Pakete in der Sendewarteschlange 806 oder Empfangswarteschlange 808 Bezug nehmen. Die Busschnittstelle 812 kann eine Schnittstelle mit der Host-Vorrichtung (nicht dargestellt) bereitstellen. Zum Beispiel kann die Busschnittstelle 812 mit einer PCI-, PCI-Express-, PCI-x-, Serial ATA- und/oder USB-kompatiblen Schnittstelle kompatibel sein (obwohl andere Verbindungsstandards verwendet werden können).
  • 9 stellt einen Schalter dar. Verschiedene Ausführungsbeispiele können in oder mit dem Schalter von 9 verwendet werden. Ein Schalter 904 kann Pakete oder Rahmen in irgendeinem Format oder gemäß irgendeiner Spezifikation von irgendeinem Port 902-0 bis 902-X bis zu irgendeinem der Ports 906-0 bis 906-Y (oder umgekehrt) routen. Irgendeiner der Ports 902-0 bis 902-X kann mit einem Netzwerk von einer oder mehreren verbundenen Vorrichtungen verbunden sein. Ähnlich kann irgendeiner der Ports 906-0 bis 906-X mit einem Netzwerk von einer oder mehreren verbundenen Vorrichtungen verbunden sein. Der Schalter 904 kann unter Verwendung einer Tabelle, die Paket-Charakteristika mit einem zugeordneten Ausgangs-Port abbildet, entscheiden, an welchen Port Pakete oder Rahmen übertragen werden sollen. Zusätzlich kann der Schalter 904 eine Paket-Replikation zum Weiterleiten eines Pakets oder Rahmens an mehrere Ports und das Einreihen von Paketen oder Rahmen in eine Warteschlange vor der Übertragung an einen Ausgangs-Port durchführen.
  • 10 stellt ein Beispiel eines Datenzentrums dar. Verschiedene Ausführungsbeispiele können in oder mit dem Datenzentrum von 10 verwendet werden. Wie in 100 gezeigt ist, kann ein Datenzentrum 1000 eine optische Struktur 1012 umfassen. Die optische Struktur 1012 kann im Allgemeinen eine Kombination aus optischen Signalisierungsmedien (wie beispielsweise optisches Verkabeln) und optische Schaltinfrastruktur umfassen, über welche irgendein bestimmter Schlitten im Datenzentrum 1000 Signale an die anderen Schlitten im Datenzentrum 1000 senden (und Signale von denselben empfangen) kann. Die Signalisierungsanschlussfähigkeit, die die optische Struktur 1012 an irgendeinen gegebenen Schlitten bereitstellt, kann sowohl Anschlussfähigkeit zu anderen Schlitten in einem gleichen Rack als auch zu Schlitten in anderen Racks umfassen. Das Datenzentrum 1000 umfasst vier Racks 1002A bis 1002D und die Racks 1002A bis 1002D häusen die jeweiligen Schlittenpaare 1004A-1 und 1004A-2, 1004B-1 und 1004B-2, 1004C-1 und 1004C-2 und 1004D-1 und 1004D-2. Somit umfasst das Datenzentrum 1000 in diesem Beispiel insgesamt acht Schlitten. Die optische Struktur 10012 kann Schlitten-Signalisierungsanschlussfähigkeit mit einem oder mehreren der sieben anderen Schlitten bereitstellen. Zum Beispiel kann der Schlitten 1004A-1 über die optische Struktur 10012 in Rack 1002A eine Signalisierungsanschlussfähigkeit mit dem Schlitten 1004A-2 in Rack 1002A besitzen, ebenso wie die anderen sechs Schlitten 1004B-1, 1004B-2, 1004C-1, 1004C-2, 1004D-1 und 1004D-2, die über den anderen Racks 1002B, 1002C und 1002D des Datenzentrums 1000 verteilt sind. Die Ausführungsbeispiele sind nicht auf dieses Beispiel beschränkt. Zum Beispiel kann die Struktur 1012 optische und/oder elektrische Signalisierung bereitstellen.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware- und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Budget des Verarbeitungszyklus, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceseinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Es wird darauf hingewiesen, dass Hardware-, Firmware- und/oder Software-Elemente hierin zusammen oder einzeln als „Modul“, „Logik“, „Schaltung“ oder „Schaltungsanordnung“ bezeichnet werden können
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest als ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speichervorrichtungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speichervorrichtungsmedium eine oder mehrere Arten von computerlesbaren Speichervorrichtungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Softwareelemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speichervorrichtungsmedium zum Speichern oder Aufrechterhalten von Anweisungen enthalten, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und dergleichen. Die Anweisungen können nach einer vordefinierten Computersprache, -weise oder -syntax implementiert sein, um eine Maschine, ein(e) Rechenvorrichtung oder -system anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können mit irgendeiner geeigneten Hoch- und Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer(m) Rechenvorrichtung oder -system gelesen werden, die Maschine, die (das) Rechenvorrichtung oder das -system veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein Beispiel“ oder „ein Beispiel“ beziehen sich nicht alle notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zur Implementierung dieser Funktionen notwendigerweise unterteilt, weggelassen oder in Ausführungsformen umfasst sein müssten.
  • Einige Beispiele können mit den Ausdrücken „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente möglicherweise nicht in direktem Kontakt miteinander sind, jedoch weiter kooperieren oder miteinander interagieren.
  • Die Begriffe „erste“, „zweite“ und dergleichen bezeichnen hierin nicht irgendeine Ordnung, Menge oder Bedeutung, sondern werden eher dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein“ und „eine“ bezeichnen hierin nicht eine Quantitätseinschränkung, sondern eher das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „durchgesetzt“, der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anlegen irgendeines Logikpegels an das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Schritten können auch durchgeführt werden, gemäß alternativen Ausführungsbeispielen. Ferner können zusätzliche Schritte, je nach bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Vorteil dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff usw. entweder X, Y oder Z oder eine Kombination davon (z.B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Ausführungsbeispiele zumindest eines von X, zumindest eines von Y oder zumindest eines von Z erfordern, um jeweils vorzuliegen. Darüber hinaus sollte konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder eine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Darstellende Beispiele von den Vorrichtungen, Systemen und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Ausführungsbeispiel der Vorrichtungen, Systeme und Verfahren kann irgendeine einzelne oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst eine Vorrichtung, umfassend: zumindest einen Speicher und zumindest einen Prozessor, der mit dem zumindest einem Speicher kommunikativ gekoppelt ist, wobei der zumindest eine Prozessor ausgebildet ist zum: Bereitstellen eines ersten Satzes von einem oder mehreren Abschnitten eines Pakets zur Verwendung in einer Nachschlagoperation; Empfangen von Feedback, das eine Nachschlag-Performance über einen Zeitraum anzeigt; und Veranlassen einer Übertragung von einer Performance-Anzeige, basierend auf der Nachschlag-Performance, die einen Schwellenpegel erreicht oder überschreitet.
  • Beispiel 2 umfasst den Gegenstand gemäß Beispiel 1, wobei der zumindest eine Prozessor ausgebildet ist zum: Empfangen einer Anzeige zum Verwenden eines zweiten Satzes von einem oder mehreren Abschnitten, die sich zumindest teilweise von dem einen oder mehreren Abschnitten des ersten Satzes unterscheiden; Zugreifen auf ein zweites Paket; und Bereitstellen des zweiten Satzes von einem oder mehreren Abschnitten des zweiten Pakets zur Verwendung in einer Nachschlagoperation.
  • Beispiel 3 umfasst den Gegenstand gemäß einem der Beispiele 1-2, wobei der zumindest eine Prozessor ausgebildet ist zum: Bestimmen eines zweiten Satzes von einem oder mehreren Abschnitten, die sich zumindest teilweise von dem einen oder mehreren Abschnitten des ersten Satzes unterscheiden, basierend auf der Nachschlag-Performance, die einen Schwellenpegel erreicht oder überschreitet und Veranlassung einer Übertragung des bestimmten zweiten Satzes.
  • Beispiel 4 umfasst den Gegenstand gemäß einem der Beispiele 1-3, wobei der zumindest eine Prozessor ausgebildet ist zum: Empfangen einer Anzeige zum Verwenden eines dritten Satzes von einem oder mehreren Abschnitten, die sich zumindest teilweise von dem einen oder mehreren Abschnitten des zweiten Satzes unterscheiden; Zugreifen auf ein zweites Paket; und Bereitstellen des dritten Satzes von einem oder mehreren Abschnitten des zweiten Pakets zur Verwendung in einer Nachschlagoperation.
  • Beispiel 5 umfasst den Gegenstand gemäß einem der Beispiele 1-4, die Performance-Anzeige umfassend eines oder mehrere aus: Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum.
  • Beispiel 6 umfasst den Gegenstand gemäß einem der Beispiele 1-5, der eine oder mehrere Abschnitte umfassend eines oder mehrere aus: ein Anfangsblockfeld, einen Abschnitt eines Anfangsblockfelds, oder ein Virtual Local Area Network-Tag.
  • Beispiel 7 umfasst den Gegenstand gemäß einem der Beispiele 1-6, wobei der zumindest eine Prozessor ausgebildet ist zum: Zugreifen auf ein empfangenes Paket; Ausführen einer Hash-Berechnung unter Verwendung des ersten Satzes von einem oder mehreren Abschnitten des empfangenen Pakets; und Ausführen einer Nachschlagoperation unter Verwendung der Hash-Berechnung, wobei die Nachschlagoperation ausgebildet ist zum Anzeigen von zumindest einer nächsten Aktion, die basierend auf dem empfangenen Paket ausgeführt werden soll.
  • Beispiel 8 umfasst den Gegenstand gemäß einem der Beispiele 1-7, wobei der zumindest eine Prozessor ausgebildet ist zum: Zugreifen auf ein empfangenes Paket; Bestimmen, dass das empfangene Paket eine Anzeige eines zweiten Satzes von einem oder mehreren Abschnitten eines Pakets zum Bereitstellen einer Naschlagoperation umfasst; und Verwerfen des empfangenen Pakets basierend auf der Unfähigkeit, einen oder mehrere Abschnitte eines Pakets zu ändern, um eine Nachschlagoperation bereitzustellen.
  • Beispiel 9 umfasst den Gegenstand gemäß einem der Beispiele 1-8, wobei die Vorrichtung eines oder mehrere umfasst aus: einer Netzwerkschnittstelle, einem Host-System, einer Offload-Engine oder einem virtuellen Schalter.
  • Beispiel 10 umfasst ein Verfahren, umfassend: Bereitstellen eines ersten Satzes, umfassend einen oder mehrere Abschnitte eines Pakets für eine Nachschlagoperation; Empfangen einer Nachschlag-Performance-Anzeige von Hash-Operationen unter Verwendung des ersten Satzes von einem oder mehreren Abschnitten von mehreren Paketen,
    als Antwort auf das Erreichen oder Überschreiten einer Schwelle durch die Nachschlag-Performance-Anzeige, Veranlassen einer Übertragung der Nachschlag-Performance-Anzeige; Empfangen einer Identifikation eines zweiten Satzes, umfassend einen oder mehrere Abschnitte eines Pakets; Empfangen eines zweiten Pakets; und Bereitstellen des zweiten Satzes von einem oder mehreren Abschnitten des zweiten Pakets für eine zweite Nachschlagoperation.
  • Beispiel 11 umfasst den Gegenstand gemäß Beispiel 10, wobei der erste Satz und der zweite Satz unterschiedlich sind.
  • Beispiel 12 umfasst den Gegenstand gemäß einem der Beispiele 10-11, die Nachschlag-Performance-Anzeige umfassend eines oder mehrere aus: Hash-Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum.
  • Beispiel 13 umfasst den Gegenstand gemäß einem der Beispiele 10-12, der eine oder mehrere Abschnitte umfassend eines oder mehrere aus: ein Anfangsblockfeld, einen Abschnitt eines Anfangsblockfelds, oder ein Virtual Local Area Network-Tag.
  • Beispiel 14 umfasst den Gegenstand gemäß einem der Beispiele 10-13, wobei das Empfangen einer Identifikation eines zweiten Satzes, umfassend einen oder mehrere Abschnitte eines Pakets, das Empfangen eines Feedback-Pakets umfassend den zweiten Satz umfasst.
  • Beispiel 15 umfasst den Gegenstand gemäß einem der Beispiele 10-14, ferner umfassend ein: Ausführen einer Hash-Berechnung unter Verwendung des ersten Satzes umfassend einen oder mehrere Abschnitte des ersten Pakets und Ausführen einer Nachschlagoperation unter Verwendung der Hash-Berechnung, wobei die Nachschlagoperation zumindest eine nächste Aktion für das erste Paket bereitstellt.
  • Beispiel 16 umfasst den Gegenstand gemäß einem der Beispiele 10-15, wobei die Nachschlagoperation Empfangsseitenskalierung (RSS) umfasst und die nächste Aktion das Speichern des ersten Pakets in eine Warteschlange umfasst, die einem Kern zugeordnet ist.
  • Beispiel 17 umfasst ein System, umfassend: eine Netzwerkschnittstelle; zumindest einen Prozessor, der mit der Netzwerkschnittstelle kommunikativ gekoppelt ist, wobei der zumindest eine Prozessor ausgebildet ist zum:
    • Zugreifen auf ein erstes Paket; Bereitstellen eines ersten Satzes, umfassend einen oder mehrere Abschnitte des ersten Pakets für ein Nachschlagen; Empfangen einer Anzeige zum Verwenden eines zweiten Satzes, umfassend einen oder mehrere Abschnitte eines Pakets für ein Nachschlagen; Zugreifen auf ein zweites Paket; und Bereitstellen des zweiten Satzes, umfassend einen oder mehrere Abschnitte des zweiten Pakets für ein Nachschlagen.
  • Beispiel 18 umfasst den Gegenstand gemäß Beispiel 17, wobei der zumindest eine Prozessor ausgebildet ist zum: Bereitstellen von Nachschlag-Performance-Informationen, basierend auf der Verwendung des ersten Satzes, der veranlasst, dass die Nachschlag-Performance eine Schwelle erreicht oder überschreitet, die Nachschlag-Performance-Informationen umfassend eines oder mehrere aus: Hash-Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum.
  • Beispiel 19 umfasst den Gegenstand gemäß einem der Beispiele 17-18, wobei der zumindest eine Prozessor ausgebildet ist ein: Ausführen einer Hash-Berechnung unter Verwendung des ersten Satzes umfassend einen oder mehrere Abschnitte des ersten Pakets und Ausführen einer Nachschlagoperation unter Verwendung der Hash-Berechnung, wobei die Nachschlagoperation ausgebildet ist zum Anzeigen von zumindest einer nächsten Aktion für das erste Paket.
  • Beispiel 20 umfasst den Gegenstand gemäß einem der Beispiele 17-19, umfassend einen Rechenschlitten, ein Rack oder einen Server-Computer.

Claims (15)

  1. Eine Vorrichtung, umfassend: zumindest einen Speicher; und zumindest einen Prozessor, der mit dem zumindest einem Speicher kommunikativ gekoppelt ist, wobei der zumindest eine Prozessor ausgebildet ist zum: Bereitstellen eines ersten Satzes von einem oder mehreren Abschnitten eines Pakets zur Verwendung in einer Nachschlagoperation; Empfangen von Feedback, das eine Nachschlag-Performance über einen Zeitraum anzeigt; und Veranlassen einer Übertragung von einer Performance-Anzeige, basierend auf der Nachschlag-Performance, die einen Schwellenpegel erreicht oder überschreitet.
  2. Die Vorrichtung gemäß Anspruch 1, wobei der zumindest eine Prozessor ausgebildet ist zum: Empfangen einer Anzeige zum Verwenden eines zweiten Satzes von einem oder mehreren Abschnitten, die sich zumindest teilweise von dem einen oder mehreren Abschnitten des ersten Satzes unterscheiden; Zugreifen auf ein zweites Paket; und Bereitstellen des zweiten Satzes von einem oder mehreren Abschnitten des zweiten Pakets zur Verwendung in einer Nachschlagoperation.
  3. Die Vorrichtung gemäß Anspruch 1 oder 2, die Performance-Anzeige umfassend eines oder mehrere aus: Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum.
  4. Die Vorrichtung gemäß einem der vorhergehenden Ansprüche, der eine oder mehrere Abschnitte umfassend eines oder mehrere aus: ein Anfangsblockfeld, einen Abschnitt eines Anfangsblockfelds, oder ein Virtual Local Area Network-Tag.
  5. Die Vorrichtung gemäß einem der vorhergehenden Ansprüche, wobei der zumindest eine Prozessor ausgebildet ist zum: Zugreifen auf ein empfangenes Paket; Ausführen einer Hash-Berechnung unter Verwendung des ersten Satzes von einem oder mehreren Abschnitten des empfangenen Pakets; und Ausführen einer Nachschlagoperation unter Verwendung der Hash-Berechnung, wobei die Nachschlagoperation ausgebildet ist zum Anzeigen von zumindest einer nächsten Aktion, die basierend auf dem empfangenen Paket ausgeführt werden soll.
  6. Die Vorrichtung gemäß einem der Ansprüche 1-5, wobei die Vorrichtung eines oder mehrere umfasst aus: einer Netzwerkschnittstelle, einem Host-System, einer Offload-Engine oder einem virtuellen Schalter.
  7. Ein Verfahren, umfassend: Bereitstellen eines ersten Satzes, umfassend einen oder mehrere Abschnitte eines Pakets für eine Nachschlagoperation; Empfangen einer Nachschlag-Performance-Anzeige von Hash-Operationen unter Verwendung des ersten Satzes von mehreren Paketen; als Antwort auf das Erreichen oder Überschreiten einer Schwelle durch die Nachschlag-Performance-Anzeige, Veranlassen einer Übertragung der Nachschlag-Performance-Anzeige; Empfangen einer Identifikation eines zweiten Satzes, umfassend einen oder mehrere Abschnitte eines Pakets; Empfangen eines zweiten Pakets; und Bereitstellen des zweiten Satzes, umfassend einen oder mehrere Abschnitte des zweiten Pakets, für eine zweite Nachschlagoperation.
  8. Das Verfahren gemäß Anspruch 7, wobei der erste Satz und der zweite Satz unterschiedlich sind.
  9. Das Verfahren gemäß Anspruch 7 oder 8, die Nachschlag-Performance-Anzeige umfassend eines oder mehrere aus: Hash-Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum.
  10. Das Verfahren gemäß einem der Ansprüche 7-9, ferner umfassend: Ausführen einer Hash-Berechnung unter Verwendung des ersten Satzes, umfassend einen oder mehrere Abschnitte des ersten Pakets und Ausführen einer Nachschlagoperation unter Verwendung der Hash-Berechnung, wobei die Nachschlagoperation zumindest eine nächste Aktion bereitstellt, die betreffend das erste Paket ausgeführt werden soll.
  11. Das Verfahren gemäß einem der Ansprüche 7-10, der eine oder mehrere Abschnitte eines Pakets umfassend eines oder mehrere aus: einem Anfangsblockfeld, einem Abschnitt eines Anfangsblockfelds oder einem Virtual Local Area Network-Tag.
  12. Ein System, umfassend: eine Netzwerkschnittstelle; zumindest einen Prozessor, der mit der Netzwerkschnittstelle kommunikativ gekoppelt ist, wobei der zumindest eine Prozessor ausgebildet ist zum: Zugreifen auf ein erstes Paket; Bereitstellen eines ersten Satzes, umfassend einen oder mehrere Abschnitte des ersten Pakets für eine Nachschlagoperation; Empfangen einer Anzeige zum Verwenden eines zweiten Satzes, umfassend einen oder mehrere Abschnitte eines Pakets für eine Nachschlagoperation; Zugreifen auf ein zweites Paket; und Bereitstellen des zweiten Satzes, umfassend einen oder mehrere Abschnitte des zweiten Pakets für eine Nachschlagoperation.
  13. Das System gemäß Anspruch 12, wobei der zumindest eine Prozessor ausgebildet ist zum: Bereitstellen einer Nachschlag-Performance-Information, basierend auf der Verwendung des ersten Satzes, der veranlasst, dass die Nachschlag-Performance eine Schwelle erreicht oder überschreitet, die Nachschlag-Performance-Information umfassend eines oder mehrere aus: Hash-Kollisionsrate über einen Zeitraum, einen Prozentsatz oder eine Anzahl von Tabellen-Nachschlag-Fehlschlägen im Laufe der Zeit, Fluss-Regel-Verdrängungen von Fluss-Nachschlagtabellen über einen Zeitraum, oder Installationsraten von Regeln in Fluss-Nachschlagtabellen über einen Zeitraum.
  14. Das System gemäß Anspruch 13, wobei der zumindest eine Prozessor ausgebildet ist zum: Ausführen einer Hash-Berechnung unter Verwendung des ersten Satzes, umfassend einen oder mehrere Abschnitte des ersten Pakets und Ausführen einer Nachschlagoperation unter Verwendung der Hash-Berechnung, wobei die Nachschlagoperation ausgebildet ist zum Anzeigen von zumindest einer nächsten Aktion für das erste Paket.
  15. Das System gemäß einem der Ansprüche 12-14, umfassend einen Rechenschlitten, ein Rack oder einen Server-Computer.
DE102020102981.0A 2019-03-07 2020-02-05 Auswahl von Eingängen für Nachschlagoperationen Pending DE102020102981A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/296,162 US20190207853A1 (en) 2019-03-07 2019-03-07 Selection of inputs for lookup operations
US16/296,162 2019-03-07

Publications (1)

Publication Number Publication Date
DE102020102981A1 true DE102020102981A1 (de) 2020-09-10

Family

ID=67058645

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020102981.0A Pending DE102020102981A1 (de) 2019-03-07 2020-02-05 Auswahl von Eingängen für Nachschlagoperationen

Country Status (2)

Country Link
US (1) US20190207853A1 (de)
DE (1) DE102020102981A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11188671B2 (en) 2019-04-11 2021-11-30 Bank Of America Corporation Distributed data chamber system
CN111143034B (zh) * 2019-12-23 2023-11-14 绿盟科技集团股份有限公司 一种控制网络数据转发平面的方法、装置及系统
US11677583B2 (en) * 2020-04-06 2023-06-13 Cisco Technology, Inc. Dynamic cellular connectivity between the hypervisors and virtual machines

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2267983B1 (de) * 2009-06-22 2018-08-08 Citrix Systems, Inc. System und Verfahren zur Bereitstellung der Verknüpfungsverwaltung in einem Mehrkernsystem
EP2691883A1 (de) * 2011-03-28 2014-02-05 Citrix Systems Inc. Systeme und verfahren für utf-8-mustervergleich
US9225806B2 (en) * 2012-06-15 2015-12-29 Citrix Systems, Inc. Systems and methods for generating IPID across a cluster network
US11088951B2 (en) * 2017-01-16 2021-08-10 Intel Corporation Flow classification apparatus, methods, and systems

Also Published As

Publication number Publication date
US20190207853A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
US10944660B2 (en) Managing congestion in a network
US20200322287A1 (en) Switch-managed resource allocation and software execution
CN114189571B (zh) 用于实施加速网络分组处理的装置和方法
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020132078A1 (de) Ressourcenzuteilung basierend auf anwendbarem service level agreement
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE102020102981A1 (de) Auswahl von Eingängen für Nachschlagoperationen
DE102020122301A1 (de) Konfigurationsschema für link-herstellung
DE102020109669A1 (de) Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
CN112929299B (zh) 基于fpga加速卡的sdn云网络实现方法、装置及设备
EP4189938A1 (de) Empfängerbasierte präzisionsüberlastungssteuerung
WO2022119620A1 (en) Network device intermediary for memory access requests
DE102022129250A1 (de) Übertragungsrate basierend auf detektierter verfügbarer Bandbreite
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE112022002377T5 (de) Paketformatanpassungstechnologien
CN108965148A (zh) 一种处理器及报文处理方法
US10019505B2 (en) Method and apparatus for creating data cube in streaming manner based on distributed system
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
DE102022121268A1 (de) Überlastungssteuerung auf basis von netzwerktelemetrie
JP2022032974A (ja) ネットワークによる攻撃からの保護
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE112019000965T5 (de) Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung
DE102022103981A1 (de) Flusssteuerungstechnologien

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012743000

Ipc: H04L0045745300