DE102020122311A1 - Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern - Google Patents

Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern Download PDF

Info

Publication number
DE102020122311A1
DE102020122311A1 DE102020122311.0A DE102020122311A DE102020122311A1 DE 102020122311 A1 DE102020122311 A1 DE 102020122311A1 DE 102020122311 A DE102020122311 A DE 102020122311A DE 102020122311 A1 DE102020122311 A1 DE 102020122311A1
Authority
DE
Germany
Prior art keywords
security
flow
host
entry
swap
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
DE102020122311.0A
Other languages
English (en)
Inventor
Mesut Ergin
Ping Yu
Declan Doherty
Yuwei Zhang
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 DE102020122311A1 publication Critical patent/DE102020122311A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Verfahren und Vorrichtungen für Sicheres-Netzwerken-Protokoll-Optimierung über NIC-Hardware-Auslagern. Bei einem Verfahren werden Sicherheits-Auslagerungseinträge in einer Flusstabelle oder einer Sicherheitsdatenbank-Auslagerungstabelle auf einer Netzwerkschnittstelle zwischengespeichert, die mit einem Host gekoppelt ist, der eine Host-Sicherheitsdatenbank implementiert, die Flüsse auf Security Association (SA) -Kontexte abbildet. Jeder Sicherheits-Auslagerungseintrag umfasst Informationen, die einen Fluss und Informationen identifizieren, wie beispielsweise einen Versatzwert, um einen entsprechenden Eintrag für den Fluss in der Host-Sicherheitsdatenbank zu lokalisieren. Hardware-Deskriptoren für empfangene Pakete, die zu Flüssen mit übereinstimmenden Sicherheits-Auslagerungseinträgen gehören, werden erzeugt und mit den Informationen markiert, die verwendet werden, um die entsprechenden Einträge in der Host-Sicherheitsdatenbank zu lokalisieren. Die Hardware-Deskriptoren werden durch die Software auf dem Host verarbeitet und die Ortsinformationen werden verwendet, um den Ort der anwendbaren Einträge in der Host-Sicherheitsdatenbank zu de-referenzieren. Effektiv wird das Nachschlagen der übereinstimmenden Flüsse in der Host-Sicherheitsdatenbank an die Netzwerk-Hardwarevorrichtung ausgelagert.

Description

  • HINTERGRUNDINFORMATIONEN
  • Sichere Netzwerkprotokolle, wie beispielsweise IPsec (Internet Protocol security), sind in dem Internet weit verbreitet und werden häufig verwendet, um Überdeckung und virtuelle private Netzwerke (VPNs; virtual private networks) auf eine geschützte Weise aufzubauen. IPsec umfasst speziell Sicherheitsmechanismen, die eine sichere Datagrammauthentifizierung und - Verschlüsselung innerhalb des IP ermöglichen. Diese Mechanismen erlaubten die Erschaffung einer Begrenzung zwischen ungeschützten und geschützten Netzwerkschnittstellen, für einen Host oder ein Netzwerk. Verkehrsflüsse (flows), die IPSec verwenden werden, müssen einem Security Association (SA) -Kontext zugeordnet sein, der eine einseitige abstrakte Verbindung ist, für die alle erforderlichen Sicherheitsparameter in Datenbanken aufgezeichnet sind, wie beispielsweise einer Sicherheitsrichtliniendatenbank (SPD; Security Policy Database) und/oder der Security Association Datenbank (SAD; Security Association Database). Eingehende und ausgehende Ströme werden gegen diese Datenbank nachgeschlagen, um die Anordnung von allem IP-Verkehr, eingehend oder ausgehend von einem Host oder Sicherheitsgateway, zu bestimmen, sowie um Verschlüsselungsparameter zu identifizieren, die jeder solchen Verbindung zugeordnet sind.
  • Mit zunehmender Anzahl von Flüssen, die der IPsec-Verarbeitung unterliegen, wächst die Anzahl von Einträgen in solchen Datenbanken, wodurch die benötigte Zeit, um nach dem richtigen Eintrag für ein bestimmtes Paket zu suchen, drastisch ansteigt. Diese Nachschlageoperation ist in dem kritischen Pfad der Paketverarbeitung und beeinflusst daher die Gesamtsystem-Performance und -Skalierbarkeit. Um dies anzugehen, werden Suchalgorithmusoptimierungen verwendet, um Nachschlagevorgänge (lookups) in Software, wie beispielsweise Zwischenspeichern (caching) und Hash-Tabellen, zu optimieren. Diese Verbesserungen können jedoch bestenfalls dabei helfen, die algorithmische Zeitkomplexität der Suchoperation von O(N) auf O(logN) zu reduzieren - auf Kosten von mehr Speicherverbrauch. Obwohl ein Auslagern (offloading) von Verschlüsselungs- und Entschlüsselungsfunktionalitäten von IPsec an Hardware-Blöcke außerhalb der CPU (central processing unit), wie beispielsweise Netzwerkschnittstellenkarten (NIC; network interface cards), von vielen erforscht wurde, blieben SA-Etablierung und Nachschlage-Prozesse hauptsächlich innerhalb der CPU und verließen sich auf Software-Algorithmus-Optimierungen.
  • Figurenliste
  • Die vorangehenden Aspekte und viele der dazugehörigen Vorteile dieser Erfindung werden leichter verständlich, wenn diese durch Bezugnahme auf die folgende detaillierte Beschreibung besser verstanden wird, wenn sie in Verbindung mit den beigefügten Zeichnungen genommen wird, wobei gleiche Bezugszeichen sich durch die verschiedenen Ansichten hindurch auf gleiche Teile beziehen, sofern nicht anderweitig angegeben.
    • 1 ist ein Diagramm, das ein Ausführungsbeispiel einer Einrichtungsphase darstellt, unter der Sicherheits-Auslagerungs-Einträge, die von Sicherheitseinträgen in einer Host-Sicherheitsdatenbank (DB) hergeleitet sind, zu einer NIC-Sicherheits-DB-Auslagerungstabelle hinzugefügt werden;
    • 1b ist ein Diagramm, das ein Ausführungsbeispiel einer Nachschlagephase darstellt, unter der Informationen in einem Sicherheits-Auslagerungseintrag verwendet werden, um einen Hardware-Deskriptor mit einem Offset-Wert zu MARKIEREN (MARK), der verwendet wird, um einen Ort eines entsprechenden sicheren Eintrags in die Host-Sicherheitsdatenbank zu de-referenzieren;
    • 1c ist ein Diagramm, das ein Ausführungsbeispiel einer Wartungsphase darstellt, unter der Einträge, die einem Fluss entsprechen, der nicht länger verwendet wird, aus der NIC-Sicherheits-DB-Auslagerungstabelle und der Host-Sicherheitsdatenbank entfernt werden;
    • 2 ist ein schematisches Diagramm, das eine Systemarchitektur darstellt, die verwendet werden kann, um Aspekte der hierin beschriebenen Ausführungsbeispiele zu implementieren;
    • 3a ist gemäß einem Ausführungsbeispiel ein erstes Flussdiagramm, das eine Operation und Logik darstellt, die durch die Hardware- und Softwareschichten der Systemarchitektur von 2 während einer Verarbeitung eines empfangenen Pakets ausgeführt werden;
    • 3b ist gemäß einem Ausführungsbeispiel ein zweites Flussdiagramm, das eine Operation und Logik darstellt, die durch die Hardware- und Softwareschichten der Systemarchitektur von 2 während einer Verarbeitung eines empfangenen Pakets ausgeführt werden;
    • 3c ist gemäß einem Ausführungsbeispiel ein drittes Flussdiagramm, das eine Operation und Logik darstellt, die durch die Hardware- und Softwareschichten der Systemarchitektur von 2 während einer Verarbeitung eines empfangenen Pakets ausgeführt werden;
    • 4 ist ein Blockdiagramm, das beispielhafte Assoziationen zwischen Paketdaten, Host-Speicherpuffern und zugeordneten Hardware-Deskriptoren darstellt;
    • 5 ist ein Diagramm, das ein Format eines Ausführungsbeispiels eines Hardware-Deskriptors, umfassend einen MARKIERTEN Versatz (offset) -Wert, darstellt;
    • 6 ist gemäß einem Ausführungsbeispiel ein schematisches Diagramm, das beispielhafte Konfigurationen einer NIC-Sicherheits-DB-Auslagerungs-Tabelle und einer Host-Sicherheitsdatenbank darstellt;
    • 6a ist gemäß einem Ausführungsbeispiel ein schematisches Diagramm, das eine beispielhafte Konfiguration einer NIC-Flusstabelle darstellt, die Sicherheits-Auslagerungseinträge und eine Host-Sicherheitsdatenbank umfasst;
    • 7 ist ein schematisches Diagramm einer Plattformarchitektur, die ausgebildet ist, um eine Mehrzahl von virtuellen Maschinen zu hosten, in denen Aspekte der hierin beschriebenen Ausführungsbeispiele implementiert sein können;
    • 7a ist ein schematisches Diagramm einer Plattformarchitektur, die ähnlich zu der ist, die 7 gezeigt ist, in der die NIC in dem SoC integriert ist;
    • 8 ist gemäß einem Ausführungsbeispiel ein schematisches Diagramm, das eine Architektur für eine NIC darstellt, die zum Implementieren von Aspekten der hierin offenbarten Netzwerk-Hardwarevorrichtungen verwendet werden kann;
    • 9a ist ein schematisches Diagramm, das eine NIC darstellt, die mit einer Mehrzahl von Hosts in einer Plattform gekoppelt ist;
    • 9b ist ein schematisches Diagramm, das eine NIC in einem ersten Slot oder einem Gehäuse eines Racks darstellt, gekoppelt in Kommunikation mit einem oder mehreren Hosts in einem zweiten Slot oder Gehäuse des Racks über eine Struktur; und
    • 10 ist ein schematisches Diagramm, das eine Implementierung einer NIC in einem Schalter darstellt.
  • Ausführungsbeispiele von Verfahren und Vorrichtungen für Sicheres-Netzwerken-Protokoll-Optimierung über NIC-Hardware-Auslagern sind hierin beschrieben. In der folgenden Beschreibung sind zahlreiche spezifische Details ausgeführt, um ein tiefgreifendes Verständnis von Ausführungsbeispielen der Erfindung bereitzustellen. Ein Fachmann auf dem jeweiligen Gebiet wird jedoch erkennen, dass die Erfindung ohne eines oder mehrere der spezifischen Details oder mit anderen Verfahren, Komponenten, Materialien, etc. ausgeführt werden kann. In anderen Fällen werden gut bekannte Strukturen, Materialien oder Operationen nicht gezeigt oder detailliert beschrieben, um ein Verunklaren von Aspekten der Erfindung zu vermeiden.
  • In dieser gesamten Beschreibung bedeutet ein Bezug auf „das eine Ausführungsbeispiel“ oder „ein Ausführungsbeispiel“, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik, das/die in Verbindung mit dem Ausführungsbeispiel beschrieben wird, bei zumindest einem Ausführungsbeispiel der vorliegenden Erfindung umfasst ist. Somit bezieht sich das Auftreten der Phrasen „bei einem einzelnen Ausführungsbeispiel“ oder „bei einem Ausführungsbeispiel“ an verschiedenen Stellen durchgehend in dieser Beschreibung nicht zwingend überall auf das gleiche Ausführungsbeispiel. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristika in irgendeiner geeigneten Weise bei einem oder mehreren Ausführungsbeispielen kombiniert werden.
  • Der Klarheit halber kann auf individuelle Komponenten in den Figuren hierin auch durch ihre Bezeichnungen in den Figuren Bezug genommen werden, anstatt durch ein bestimmtes Bezugszeichen. Zusätzlich können Bezugszeichen, die sich auf einen bestimmten Typ von Komponente (im Gegensatz zu einer bestimmten Komponente) beziehen, mit einem Bezugszeichen gefolgt von „(typ)“, was „typisch“ bedeutet, gezeigt sein. Es versteht sich, dass die Konfiguration dieser Komponenten typisch für ähnliche Komponenten sein wird, die möglicherweise existieren, aber der Einfachheit und Klarheit halber nicht in den zeichnerischen Figuren gezeigt sind, oder für ansonsten ähnliche Komponenten, die nicht mit separaten Bezugszeichen gekennzeichnet sind. Umgekehrt soll „(typ)“ nicht so ausgelegt werden, dass es bedeutet, dass die Komponente, das Element etc. typischerweise für seine offenbarte Funktion, Implementierung, seinen Zweck etc. verwendet wird.
  • Moderne NICs weisen Funktionen auf, die dafür entwickelt sind, schnelle Nachschlage-Operationen auf Netzwerkpaketen gegen Fluss-Tabellen durchzuführen, die für Paketklassifizierungsanwendungen vorgesehen sind. Gemäß hierin offenbarten Aspekt-Ausführungsbeispielen werden ähnliche Fähigkeiten genutzt, um das Nachschlagen von Einträgen aus Sicherheitsdatenbanken, wie beispielsweise SPD und SAD für IPsec, zu beschleunigen. Wenn ein Fluss einem Sicherheitskontext (z.B. SA eines IP-Flusses für IPsec) und einer Richtlinie zugeordnet ist, kann die NIC-Hardware über die Zuordnung mittels eines Auswählens und Programmierens eines Flussmarkierers (MARK) zu der NIC benachrichtigt werden, der den Eintrag in der Sicherheitsdatenbank eindeutig identifiziert und/oder dazu verwendet werden kann, ihn zu lokalisieren. Einmal programmiert, kann die NIC dann damit beginnen, die Pakete, die zu dem gleichen Fluss gehören, mit dem geeigneten MARK zu versehen, wodurch der Prozess des Nachschlagens in der CPU auf ein einfaches De-Referenzieren des MARK auf einen Index in die Datenbank reduziert wird.
  • Während der Einrichtung eines sicheren Kanals werden die betreffenden Flussinformationen (z. B. n-Tupel, Hash von n-Tupel oder eine Ersatz-FlowID, die irgendeinen bestimmten Fluss von Interesse identifiziert) und der entsprechende Sicherheitskontext (Kryptoschlüssel, Richtlinien, etc.) in einer oder mehreren Datenbanken aufgezeichnet. Bei Legacy-Betrieb werden eingehende und ausgehende Pakete gegen diese Datenbanken nachgeschlagen, basierend auf den n-Tupeln in dem Paket (oder basierend auf einem n-Tupel-Hash oder einer Ersatz-FlowID), um die richtigen anzuwendenden Sicherheitsaktionen zu bestimmen. Gemäß Aspekten der Ausführungsbeispiele hierin wird die Einrichtungs (setup) -Phase des Sicherheitskontexts erweitert, um die NIC so zu programmieren, dass sie die Pakete etikettiert, die den gleichen n-Tupel-Informationen (z. B. die zu dem Fluss gehören, für den der Sicherheitskontext eingerichtet ist) entsprechen, unter Verwendung von Ortsinformationen, die verwendet werden können, um einen Index des Eintrags mit diesem Sicherheitskontext in der Sicherheitsdatenbank als einen MARK-Wert zu de-referenzieren und die Adresse des Eintrags in dem Speicher zurückzugeben oder zu identifizieren. Falls dieser Fluss in mehreren Tabellen nachgeschlagen werden muss, kann der MARK als ein zusammengesetzter Schlüssel zu mehreren Tabellen konstruiert sein. Software-Abstraktionen zum Programmieren von NICs von mehreren Herstellern für MARK-Funktionalität kann zu diesem Zweck verwendet werden, wie beispielsweise eine „rte flow“ -Bibliothek von Data Plane Development Kit (DPDK), einem Open-Source-Paketverarbeitungs-Softwareprojekt.
  • Zusätzlich zu DPDK-Implementierungen kann andere SDN (Software Defined Network) und/oder Datenebenen-Software verwendet werden. Zum Beispiel können Ausführungsbeispiele unter Verwendung von Linaros OpenDataPlane-Software und SDN-Software, die das OpenFlow-Kommunikationsprotokoll verwenden, implementiert werden.
  • Ein abstrahiertes Beispiel der Einrichtungs (setup) -Phase ist in 1a dargestellt, die eine Host-Sicherheitsdatenbank 100 mit mehreren Sicherheitseinträgen 102 und eine NIC-Sicherheitsdatenbank (DB) -MARK-Tabelle 104 mit mehreren Sicherheits-Auslagerungseinträgen 105, die auf einer NIC 106 gespeichert sind, abbildet. Jeder der Sicherheitseinträge 102 in der Sicherheitsdatenbank 100 ist zu darstellenden Zwecken als einen Versatz 108, eine FlowID 110 und einen Security Association (SA) -Kontext 112 umfassend dargestellt; in der Praxis sind die Werte, die in dem Versatz 108 abgebildet sind, impliziert und repräsentieren diesen Versatzwert von der Speicheradresse, in der eine Host-Sicherheitsdatenbank 100 in einem Hostspeicher auf einem Host gespeichert ist, oder andernfalls kann der Versatz als ein Zeilenindex für den Sicherheitseintrag in der Host-Sicherheitsdatenbank 100 de-referenziert sein. Jeder der Sicherheits-Auslagerungseinträge 105 in der NIC-Sicherheits-DB-Auslagerungstabelle 104 umfasst eine FlowID, eine Aktion und einen Wert. Während der Einrichtungsphase, wenn ein neuer Fluss über eine Software, die auf einem Host ausgeführt wird, etabliert wird, wird ein entsprechender Sicherheitseintrag zu der Host-Sicherheitsdatenbank 100 hinzugefügt, wie beispielsweise durch den Eintrag 102 bei Versatz x + 1 abgebildet ist. In Verbindung dazu wird ein entsprechender Sicherheits-Auslagerungseintrag 105 zu der NIC-Sicherheits-DB-Auslagerungstabelle 104 hinzugefügt, mit der gleichen FlowID, einer MARK-Aktion und einem Wert, der den gleichen Versatz aufweist, wie der Sicherheitseintrag 102 in der Host-Sicherheitsdatenbank 100.
  • Wenn ein Paket von der NIC mit einem MARK-Wert, der in dem NIC-Hardware-Deskriptor vorliegt, eintrifft, umgeht die Sicherheitssoftware auf der Host-CPU den vollständigen Nachschlageprozess und gibt einfach den Sicherheitsdatenbankeintrag zurück, der durch den MARK-Wert indexiert wird, und führt die Paketverarbeitung wie gewohnt fort. Falls der MARK-Wert entwickelt ist, um in mehrere Sicherheitsdatenbanken zu indexieren, dekonstruiert die Software einfach zuerst mehrere Indexe aus dem MARK-Wert und indexiert dann in entsprechende Tabellen, um mehrere Nachschlagevorgänge auf einmal zu realisieren. Das Nettoergebnis ist, dass die herkömmliche Software-Nachschlageoperation (der Host-Sicherheits-DB) an die NIC-Hardware ausgelagert wird, wodurch Software-Nachschlagen von dem kritischen Pfad entfernt wird und die Nachschlagezeitkomplexität auf O(1) reduziert wird, was impliziert, dass die Nachschlageoperation eine konstante Zeit benötigen würde, unabhängig von der Gesamtzahl der Einträge in der Host-Sicherheitsdatenbank.
  • 1b zeigt ein abstrahiertes Beispiel der Nachschlagephase. In diesem Fall wurde eine Paketverarbeitung auf der NIC 106 durchgeführt, um eine FlowID für das Paket als Fluss j zu identifizieren oder anzupassen. Ein Nachschlagen der NIC-Sicherheits-DB-Auslagerungstabelle 104 von Fluss j liefert eine MARK-Aktion und einen Versatzwert von x + 1. Ein designiertes Feld in dem Hardware (HW) -Deskriptor, das durch die NIC-Hardware für das Paket erzeugt wird, wird dann mit dem Wert x + 1 MARKIERT und wird einem Ringspeicher (ring buffer) auf dem Host zugewiesen. Anschließend, wenn auf den HW-Deskriptor durch die Host-Software zugegriffen wird, und der Wert x + 1 extrahiert wird und als ein Versatz verwendet wird, um Fluss j in der Host-Sicherheitsdatenbank 100 zu lokalisieren. Der SA-Kontext q wird dann auf das Paket angewendet.
  • Wenn der sichere Kanal und die zugeordneten Sicherheitsdatenbankeinträge nicht länger gültig sind, muss die Software die Korrektheit der Nachschlage-Auslagerung aufrechterhalten und die NIC-Hardware aktualisieren, um die alten Fluss- und MARK-Informationen zu entfernen, was den Tabelleneintrag (und den entsprechenden MARK-Wert) für einen neuen zukünftigen Eintrag verfügbar macht. Ein abstrahiertes Beispiel davon ist als eine Wartungsphase in 1c gezeigt. Bei diesem Beispiel hat die Software, die auf dem Host läuft, bestimmt, dass Fluss j beendet wurde und somit sein Sicherheitskontext nicht länger gültig ist (oder anderweitig aus anderen Gründen nicht länger behalten werden muss). Der entsprechende Eintrag von Fluss j wird effektiv aus der Host-Sicherheitsdatenbank 100 entfernt, wobei der Sicherheitseintrag 102 bei Versatz x+1 als ungültig und für einen Ersatz durch einen gültigen zukünftigen Eintrag verfügbar markiert wird. Die Software markiert dann (bei einem Ausführungsbeispiel durch ein Speicher-abgebildete-Eingabe/Ausgabe (MMIO; memory mapped input output) - Schreiben) den Sicherheits-Auslagerungseintrag 105 für Fluss j in der NIC-Security-DB-Offload-Tabelle 104 als ungültig und für einen Ersatz durch einen gültigen zukünftigen Eintrag verfügbar. Dies macht effektiv die Nachschlage-Auslagerungsfunktionalität für Fluss j ungültig, wie in 1c dargestellt.
  • 2 zeigt eine Systemarchitektur 200, die verwendet werden kann, um Aspekte der hierin beschriebenen Ausführungsbeispiele zu implementieren. Die Systemarchitektur 200 ist logisch in eine Software-Schicht 202 und eine Hardware-Schicht 204 unterteilt. Die Software-Schicht 202 umfasst einen Host-Speicher 206, in den verschiedene Softwarekomponenten vor Ausführung geladen werden, wie beispielsweise während eines Bootens einer Host-Plattform und/oder während laufender Laufzeitoperationen. Der Host-Speicher 206 wird auch verwendet, um Datenstrukturen zu speichern, die der Software zugeordnet sind und verschiedene Daten puffern, wie beispielsweise Paketdaten. Einige der anderen Komponenten umfassen Betriebssystem (OS; operating system) -Software-Blocks, umfassend einen OS-Kernel-Protokollstapel 208 und einen NIC-Treiber 209.
  • Der OS-Kernel-Protokollstapel 208 umfasst einen Software-Netzwerkstapel, der verschiedene Komponenten zum Implementieren von Software-Verarbeiten von OSI (Open System Interconnection) -Reference-Layer 3 und darüber, sowie Implementieren verschiedener sicherheitsbezogener Paketverarbeitungsoperationen, wie beispielsweise IPsec-Protokollverarbeitungsoperationen, umfasst. Unter einem nicht einschränkenden Ansatz, der durch das Linux-OS implementiert wird, bildet der Kernel-Vorrichtungstreiber für eine NIC den Hardware-Deskriptor-Ring in der NIC-Hardware ab, auf einen Abschnitt 210 eines Host-Speichers 206, über MMIO-Zugriff, um weitere Kommunikation zwischen NIC-Hardware und einem NIC-Vorrichtungstreiber über diese Hardware-Deskriptoren zu ermöglichen. Jeder Ringspeicher hält eine Anzahl von Hardware-Deskriptoren, die Metadaten über ein bestimmtes Paket und Speicherzeiger zu dem tatsächlichen Paket-Anfangsblock und Paketnutzlastinformationen in dem Ringspeicher 210 tragen. Wie in der Architektur 200 dargestellt, umfasst der Ringspeicher 210 einen Deskriptor-Ring 211, dessen Operation nachfolgend beschrieben wird. Typischerweise benötigt die NIC-Vorrichtung für jede Paket-Warteschlange, die sie aufrechterhält, einen Sende-Ringspeicher zum Senden von Paketen aus dem System, und einen Empfangs-Ringspeicher zum Akzeptieren von Paketen in das System von dem Netzwerk. Unter einem virtualisierten Ausführungsbeispiel können separate Ringspeicher und Deskriptor-Ringe für separate OS-Instanzen zugeordnet sein, die auf virtuellen Maschinen (VMs; virtual machines) oder in Containern auf eine ähnliche Weise laufen, wie in 2 dargestellt und hierin beschrieben ist. Ein nicht einschränkendes Beispiel eines virtualisieren Ausführungsbeispiels ist in 7 dargestellt und nachfolgend beschrieben.
  • Der OS-Kernel-Protokollstapel 208 umfasst einen Speicherpuffer 212, in dem eine Host-Flusstabelle 214 und eine Host-Sicherheitsdatenbank 215 gespeichert sind. Die Host-Flusstabelle 214 umfasst einen Satz von Weiterleitungsregeln und Filtern 216, die für verschiedene hierin beschriebene Operationen verwendet werden, umfassend Paket/FlussKlassifizierung, Weiterleiten und andere Aktionen. Bei einem Ausführungsbeispiel umfasst die Host-Sicherheitsdatenbank 215 eine Struktur, die ähnlich zu der vorangehend beschriebenen Host-Sicherheitsdatenbank 100 ist. Optional können Daten in der Host-Sicherheitsdatenbank 215 mit Daten in der Host-Flusstabelle 214 kombiniert sein.
  • Bei dem Ausführungsbeispiel, das in der Systemarchitektur 200 dargestellt ist, umfasst der NIC-Treiber 209 einen speicherabgebildeten-Eingangs-Ausgangs (MMIO) -Schreibblock 218, der verwendet wird, um Informationen zu schreiben, um die ausgewählten Einträge der Host-Flusstabelle 214 zu kommunizieren, die in einer NIC-Flusstabelle 214a auf einer NIC 220 in der Hardware-Schicht 204 zwischengespeichert werden sollen. Zusätzlich kann der MMIO-Schreibblock 218 auch verwendet werden, um Einträge von den Sicherheitsdatenbank-Auslagerungsdaten 215a als Sicherheitsauslagerungseinträge in einer NIC 220 -Sicherheits-DB-Auslagerungstabelle 233 zwischenzuspeichern. Optional können die Sicherheits-Auslagerungseinträge in einer NIC-Flusstabelle zwischengespeichert sein, die mit Spalten ausgebildet ist, um Sicherheits-Auslagerungseinträge zu unterstützen.
  • Die NIC 220 ist im Allgemeinen repräsentativ für eine Netzwerk-Hardware-Vorrichtung, die für ein Durchführen von Hardware-basierten Paketverarbeitungsoperationen verwendet wird, die einem Empfangen von Paketen von und einem Übertragen von Paketen an ein oder mehrere Netzwerke zugeordnet sind, mit denen Ports auf der NIC verbunden sind. Die NIC 220 umfasst einen Eingangspuffer 222, der mit einem Eingangsport 224 gekoppelt ist. Obwohl nur ein einzelner Eingangsport 224 gezeigt ist, kann eine NIC mehrere Eingangsports 224 umfassen, die jeweils mit einem jeweiligen Eingangspuffer 222 gekoppelt sind. Die NIC 220 umfasst ferner einen Flussleiterblock (flow director block) 226, einen Hardware-Deskriptor-Markierungsblock 228, einen MMIO-Adressraum 230 und einen oder mehrere Ausgangsports 232. Während laufender Operationen werden ausgewählte Einträge aus der Host-Flusstabelle 214 in einer NIC-Flusstabelle 214a über den MMIO-Adressraum 230 zwischengespeichert. Bei einem Ausführungsbeispiel sind die ausgewählten Einträge über den MMIO-Schreibblock 218 in dem NIC-Treiber 209 an den MMIO-Adressraum 230 geschrieben. Optional kann eine andere Softwarekomponente (nicht gezeigt) verwendet werden, um ausgewählte Einträge aus der Host-Fluss-Tabelle 214 über den MMIO-Block 230 in die NIC-Flusstabelle 214a zu schreiben. Als eine andere Option werden die ausgewählten Flusstabelleneinträge an eine Portaladresse in dem MMIO-Adressraum 230 geschrieben, von der Portaladresse durch eine Logik auf der NIC 220 gelesen und in der NIC-Flusstabelle 214a zwischengespeichert. Zusätzlich werden während des laufenden Betriebs Sicherheits-Datenbank-Auslagerungsdaten 215a für ausgewählte Sicherheitseinträge in der Host-Sicherheitsdatenbank 215 an die NIC-Sicherheitsdatenbank-Auslagerungstabelle 233 auf der NIC 220 geschrieben oder an eine Portaladresse in dem MMIO-Adressraum 230 geschrieben.
  • Bezug nehmend auf das Flussdiagramm 300a, 300b und 300c der jeweiligen 3a, 3b und 3c schreiten Operationen, die einer Verarbeitung eines Pakets unter der Systemarchitektur 200 zugeordnet sind, wie folgt fort. Die Flussdiagramme 300a, 300b und 300c entsprechen einem Betrieb für eine Konfiguration, die separate NIC-Flow- und Sicherheits-DB-Auslagerungstabellen verwendet. Fachleute auf dem Gebiet des Netzwerkens werden erkennen, dass Operationen und Logik modifiziert sein können, um eine NIC-Flusstabelle zu implementieren, in der Sicherheits-Auslagerungseinträge gespeichert sind (ohne die Verwendung einer separaten NIC-Sicherheits-DB-Auslagerungstabelle).
  • Wie in einem Startblock 302 und einem Block 304 des Flussdiagramms 300a gezeigt ist, wird ein Paket 234, das einen Anfangsblock 236 und eine Paketnutzlast 238 umfasst, von einem Netzwerk an dem Eingangsport 224 empfangen und wird in dem Eingangspuffer 222 gepuffert. Abhängig von der Implementierung können der Paket-Anfangsblock und die Nutzlast aufgeteilt werden oder der Anfangsblock kann „vor Ort“ gelesen werden. Viele moderne NICs, umfassend NICs, die von der Intel® Corporation hergestellt werden, unterstützen eine Funktion, unter der Paket-Anfangsblöcke aus empfangenen Paketen extrahiert und von den Paket-Nutzlastdaten auf der NIC selbst getrennt werden können. Zum Beispiel können für ein TCP/IP-Paket die TCP- und IP-Paket-Anfangsblöcke von der Paket-Nutzlast getrennt werden. Optional können Pakete „vor Ort“ verarbeitet werden, ohne den Paket-Anfangsblock von der Nutzlast zu trennen, oder sonst können die Pakete von dem Empfangspuffer kopiert und in einem anderen Puffer (nicht gezeigt) gepuffert und diesem anderen Puffer verarbeitet werden.
  • Eine Paketklassifizierung wird als nächstes in einem Block 306 durchgeführt, um zu bestimmen, ob das Paket zu einem Fluss mit einem übereinstimmenden Paketfluss gehört, der in der NIC-Flusstabelle 214a zwischengespeichert ist. Wie in 2 dargestellt ist, werden anwendbare Felder in dem Paket-Anfangsblock 236 inspiziert und entsprechende Daten werden extrahiert, die von dem Flussleiter 226 für Flussklassifizierung verwendet werden, sowie andere Operationen. Zum Beispiel können Informationen in dem Paket-Anfangsblock (z. B. Quell-/Ziel-Adresse, Port und Buchse) verwendet werden, um zu identifizieren, ob das Paket zu einem zuvor klassifizierten Fluss gehört, der einen entsprechenden Eintrag aufweist, der in der NIC-Flusstabelle 214a zwischengespeichert ist.
  • Bei einem weiteren Detail bei einem Ausführungsbeispiel ist der Flussleiter 226 ausgebildet, um Filterlogik und/oder Regeln zu verwenden, um auf mehreren Anfangsblock-Feldern (bekannt als Übereinstimmungsfelder) mit entsprechenden Übereinstimmungsfeldern in Einträgen in der NIC-Flusstabelle 214a übereinzustimmen. Bei einem Ansatz wird ein oder werden mehrere Filter, die einen Satz von Regeln umfassen, auf anwendbare Anfangsblock-Felddaten, wie beispielsweise 5-Tupel- oder 12-Tupel-Daten, angewendet, wobei ein Abgleichen auf der Feldebene ausgeführt wird. Bei einem anderen Ansatz wird vor einem Verifizieren einer Übereinstimmung auf der Feldebene ein Hashing-Schema verwendet, um nicht übereinstimmende Flüsse schnell auszuschließen. Bei einem Ausführungsbeispiel wird ein Hash auf einer Verkettung der 5-Tupel- oder 12-Tupel-Daten für ein FlowID-Nachschlagen in einer NIC-Flusstabelle 214a unter Verwendung einer Hash-Tabelle und zugehöriger Hashfunc(key) verwendet: falls ein Hash auf den 5-Tupel- oder 12-Tupel-Daten eines eingehenden Pakets mit einem existierenden FlowID-Hash übereinstimmt, wird das Paket dann weiter verarbeitet, um über Feldebenen-Abgleich zu prüfen, um zu sehen ob der Fluss zu einer programmierten Regel gehört; falls der Hash nicht übereinstimmt, dann hat der Fluss keinen entsprechenden Eintrag in der NIC-Flusstabelle 214a, wie nachfolgend genauer beschrieben wird, und kann schnell ohne kostspieligere Feldebenenverifizierung für eine Übereinstimmung angeordnet werden. Wenn die gleichen Filterregeln, die von dem OS-Kernel-Netzwerkstapel 208 in der Host-Flusstabelle 214 verwendet werden, in dem Flussleiter 226 implementiert sind, können die richtigen Regeln, die an diese Pakete, die durch die NIC 220 empfangen werden, angewendet werden sollen, durch die NIC 220 selbst bestimmt werden. Zum Beispiel ist diese Situation durch die Weiterleitungsregeln/-filter 216 und 216a in 2 dargestellt. Bei Ausführungsbeispielen, die übereinstimmende Felder (mit oder ohne Hashes) verwenden, kann ein ähnlicher Satz von übereinstimmenden Feldern an sowohl den Hardware- als auch den Software-Ebenen angewendet werden. Dies kann jedoch deutlich mehr Speicher auf der Hardware-Netzwerkvorrichtung erfordern. Dementsprechend wird bei einem Ausführungsbeispiel ein gehashte Fluss-Nachschlage-Optimierung für Flusstabelleneinträge in der NIC-Flusstabelle implementiert. In der Zwischenzeit kann die Host-Fluss-Tabelle Übereinstimmungsfelder mit oder ohne Hashing-Optimierungen umfassen oder kann einen unterschiedlichen Nachschlage-Algorithmus ohne die Übereinstimmungsfelder verwenden. Zusätzlich kann das Flussfiltern an dem Host als eine Sequenz von Flusstabellen implementiert werden.
  • In den Flussdiagrammen 300a, 300b und 300c und der folgenden Beschreibung werden Hashbasierte Fluss-Nachschlage-Optimierungen verwendet. Dennoch werden Fachleute auf dem Gebiet verstehen, dass andere Flussabgleichs-Schemata auf eine ähnliche Weise implementiert werden können, wie beispielsweise ein Übereinstimmen nur unter Verwendung von n-Tupel-Übereinstimmungsfeldern.
  • Bei einem Ausführungsbeispiel können Weiterleitungsregeln/-filter 216a einen Abschnitt eines Systemspeichers umfassen, der auf den MMIO-Adressraum 230 abgebildet ist. MMIO ermöglicht es, dass ein Abschnitt eines Speichers einer Hardwarevorrichtung auf den Systemspeicheradressraum des Hosts abgebildet wird, als ob der Speicher auf dem Host ist, was es den Software-Komponenten ermöglicht, über Lese- und Schreibtransaktionen an Hardware, die zu den Softwarekomponenten transparent sind, direkt auf den MMIO-Adressraum zuzugreifen. Bei einem Ausführungsbeispiel wird die MMIO-Adressraumzuordnung und der Zugriff durch den NIC-Vorrichtungstreiber 209 gehandhabt. Der MMIO-Adressraum kann auch für Weiterleitungsregeln/-filter 216 verwendet werden und/oder ein Kopierschema kann verwendet werden, das eine Schattenkopie eines Abschnitts der Weiterleitungsregeln/-filter 216 in dem MMIO-Adressraum für Weiterleitungsregeln/- filter 216 aufrechterhält. Dementsprechend kann, wenn Weiterleitungsfilter und/oder -regeln für neue klassifizierte Flüsse durch den OS-Kernel-Protokollstapel 208 in Weiterleitungsregeln/-filter 216 geschrieben werden, eine Kopie der Filter und/oder Regeln in die Weiterleitungsregeln/-filter 216a geschrieben werden.
  • Bei einem Entscheidungsblock 308 wird bestimmt, ob das Nachschlagen der NIC-Flusstabelle 214a zu einer Übereinstimmung führt. Wenn die Antwort NEIN ist, auch als „Fehltreffer (miss)“ bezeichnet, fährt die Logik zu einem Block 310 fort, in dem der Flussleiter 226 (oder ein anderer Block, der nicht gezeigt ist) einen Hardware-Deskriptor 240 erzeugt, der anzeigt, dass keine Übereinstimmung gefunden wurde. Die Logik fährt dann zu Flussdiagramm 300b von 3b fort, das nachfolgend beschrieben wird.
  • Falls die Antwort zu dem Entscheidungsblock 308 JA ist, was auch als ein „Treffer (hit)“ bezeichnet wird, fährt die Logik zu einem Block 312 fort, in dem ein Nachschlagen des Flusses in der NIC-Sicherheits-Auslagerungstabelle 233 durchgeführt wird. Bei dem dargestellten Ausführungsbeispiel wird angenommen, dass die Fluss-Einträge in der NIC-Flusstabelle 214a alle Fluss-Einträge in der NIC-Sicherheits-DB-Auslagerungstabelle 233 einschließen. Zum Beispiel weist die NIC-Flusstabelle bei einigen Ausführungsbeispielen mehr Einträge auf als die NIC-Sicherheits-DB-Auslagerungstabelle; somit ist es möglich, dass die NIC-Flusstabelle einen Übereinstimmungstreffer aufweist, obwohl die NIC-Sicherheits-DB-Auslagerungstabelle für denselben Fluss einen Fehltreffer aufweist. Unter einem alternativen Schema verwenden entweder die Einträge in beiden Tabellen die gleichen Flüsse (oder die gleichen Übereinstimmungsfelder, falls Übereinstimmungsfelder verwendet werden) gemeinschaftlich, oder die verschiedenen Felder in den Tabellen werden in eine einzelne Tabelle kombiniert, z. B. eine NIC-Flusstabelle mit erweiterten Feldern, die Versatz und SA-Kontextdaten (siehe z. B. 6a nachfolgend) enthält. Unter diesen Schemata kann der Betrieb von Blöcken 312, 314 und 316 übersprungen oder anderweitig mit Blöcken 306, 308 und 310 aggregiert werden.
  • Wiederum Bezug nehmend auf Block 312, wie durch einen Entscheidungsblock 314 angezeigt, falls das Nachschlagen zu einem Fehltreffer führt, fährt die Logik zu Block 316 fort, bei dem ein Hardware-Deskriptor erzeugt wird, der keine Sicherheitsübereinstimmung (d.h. es gibt keinen Sicherheits-Auslagerungseintrag in einer NIC-Sicherheits-DB-Auslagerungstabelle mit einer übereinstimmenden FlowID) anzeigt. Die Logik fährt dann zu Flussdiagramm 300c in 3c fort, wie nachfolgend beschrieben wird. Falls die Antwort auf den Entscheidungsblock 314 JA ist, fährt die Logik zu einem Block 318 fort, bei dem ein Hardware-Deskriptor erzeugt wird, der mit dem Versatzwert des übereinstimmenden Sicherheits-Auslagerungseintrags in der NIC-Sicherheits-DB-Auslagerungstabelle 233 MARKIERT ist.
  • Ein Ausführungsbeispiel eines Hardware-Deskriptors 500 ist in 5 gezeigt. Das Format des Hardware-Deskriptors 500 entspricht einem 32-Byte-Empfangsdeskriptor mit einem Rückschreiben (writeback) -Format, das repräsentiert, wie Host-Software den Hardware-Deskriptor sieht, da es das vom dem MMIO-Adressraum der NIC liest. Wie dargestellt, kann ein MARKIERTER Versatz 502 entweder an das 32-Bit-FD-Filter-ID-/Flexible-Nutzlast-Byte- hohe Feld 504 oder das 32-Bit-Flexible-Nutzlast-Byte- niedrige Feld 506 geschrieben werden, wobei zu beachten ist, dass er nicht alle 32-Bit des Felds, an das er geschrieben ist (abhängig von der Anzahl von Einträgen in die Host-Sicherheitsdatenbank), belegen muss.
  • Abhängig von den Bestimmungen, die in den Entscheidungsblöcken 308 und 310 gemacht werden, werden Hardware-Deskriptoren mit unterschiedlichen Angaben in einem der Blöcke 310, 316 und 318 erzeugt, wie (allgemein) durch einen Hardware-Deskriptor 240 in 2 dargestellt ist. Nach einer Erzeugung wird der Hardware-Deskriptor 240 über einen DMA-Schreibvorgang (write) an einen Slot in dem Deskriptor-Ring 211 geschrieben. Zum Beispiel können unter Peripheral Component Interconnect Express (PCIe) DMA-Schreibvorgänge und -Lesevorgänge unter Verwendung von PCIe-Schreib- und -Lese-Transaktionen implementiert werden. Im Wesentlichen parallel dazu wird eine Kopie des Pakets 234 in den Ringspeicher 210 DMA-d (z. B. über eine oder mehrere PCIe-DMA-Schreibtransaktionen). Diese DMA-Schreibvorgänge sind kollektiv in einem Block 320 dargestellt und können im Allgemeinen asynchron durchgeführt werden.
  • Unter dem in 2 gezeigten Schema werden Empfangspakete (d.h. Pakete, die an einem Eingangsport empfangen werden) System- (Host-) Speicherpuffern zugewiesen, die der Hardware durch Hardware-Deskriptoren (oder allgemein auch einfach als „Deskriptoren“ bezeichnet) angezeigt werden. Bei einem Ausführungsbeispiel können die Deskriptoren Zeiger auf die Datenpuffer und Statusanzeigen der empfangenen Pakete umfassen. 4 zeigt zwei Beispiele von Empfangspaketen in einem Host-Speicher, zusammengesetzt aus zwei Puffern (angezeigt durch zwei übereinstimmende Deskriptoren). Das Schema auf der linken Seite verwendet vereinfachte Deskriptoren, die einem Ausführungsbeispiel entsprechen, bei dem der Paket-Anfangsblock und die Nutzlast nicht aufgeteilt sind. Das Schema rechts in 4 ist für ein Ausführungsbeispiel implementiert, bei dem der Paket-Anfangsblock und die Nutzlast über die Hardware (z. B. durch die NIC 220 aufgeteilt) aufgeteilt sind.
  • Wiederum Bezug nehmend auf 2, wird die NIC 220 bei einem Ausführungsbeispiel, wenn neue Deskriptoren dem Deskriptor-Ring 211 (z. B. über DMA-Schreibtransaktionen) zugewiesen werden, eine Hardware-Unterbrechung auslösen. Ansprechend darauf plant ein Hardware-Unterbrechungshandhaber auf dem Host eine paketempfangende Software-Unterbrechung (Softirq). Der OS-Kernel-Protokollstapel 208 verwendet dann die Softirq, um den Ringspeicher (z. B. Polls für neue Deskriptoren in dem Deskriptorring 211) zu pollen. Unter einem herkömmlichen Ansatz wird der Deskriptor von dem Ring „gezogen“ und durch den OS-Kernel-Protokollstapel 208 gelesen, der dann den Zeiger in dem Deskriptor verwendet, um auf den Paket-Anfangsblock (z. B. Anfangsblock 236 für Paket 234) zuzugreifen. In Verbindung mit einem Abziehen eines Deskriptors von dem Deskriptorring 211 kann der entsprechende Slot als ungültig markiert werden (oder anderweitig als gültig, um einen neuen Deskriptor zu empfangen, markiert werden), und/oder ein Kopfzeiger für den Deskriptorring wird vorbewegt, um auf den nächsten Slot zu zeigen. Sobald der Paket-Anfangsblock von dem OS-Kernel-Protokollstapel 208 gelesen wird, kann eine Höhere-Schicht-Verarbeitung des Paketanfangsblocks durchgeführt werden.
  • Die vorangehende Beschreibung ist des besseren Verständnisses halber abstrahiert. In der Praxis können verschiedene Warteschlangen auf der NIC 220 und in dem Host-Speicher 206 implementiert sein, um die DMA-Übertragung von Deskriptoren und Paketdaten (d.h. Paket-Anfangsblöcke und Nutzlast) zu ermöglichen.
  • Unter der Annahme einer Fluss-ID-Übereinstimmung oder eines „Treffers“ durch den Flussleiter oder ein anderes Fluss-Klassifizierungsschema, enthält unter herkömmlichen Ansätzen entweder der Hardware-Deskriptor die FlowID für das Paket, der Paket-Anfangsblock wird so modifiziert, dass er die FlowID umfasst, oder ein anderes Mittel wird implementiert, um die FlowID dem Paket zuzuordnen. Im Allgemeinen kann die FlowID der ursprüngliche Hash-Wert (z. B. ein n-Tupel-Hash) oder eine Ersatz-Fluss-ID sein, die dem ursprünglichen Hash zugeordnet ist (oder ein ähnliches Schema verwenden). Eine Hash-Funktion, die den n-Tupel-Hash (oder die Ersatz-Fluss-ID) als ihren Schlüssel verwendet, kann dann verwendet werden, um die Zeile oder den Index des übereinstimmenden Eintrags zu identifizieren. Bei Ausführungsbeispielen, die Übereinstimmungsfelder verwenden, wird Abgleichen durch einen Satz von Filtern oder Regeln auf Feldebene durchgeführt, um einen übereinstimmenden Eintrag (für den Paketfluss) in der Host-Fluss-Tabelle zu identifizieren. Wie vorangehend erörtert wurde, ist eine algorithmische Komplexität der Suche unter Verwendung eines solchen Übereinstimmungsfeldschemas O(logN), was zu erheblicher Latenz in dem kritischen Pfad führt, wenn N (die Anzahl der Flüsse) groß wird. Zum Beispiel kann ein modernes System mehr als hunderttausende Flüsse unterstützen, jeder mit einem entsprechenden Eintrag in der Host-Fluss-Tabelle auf der Software-Ebene (oder Einträge in jeder von mehreren verwandten Tabellen, die für ein Management von Flüssen verwendet werden).
  • Wiederum Bezug nehmend auf das Flussdiagramm 300a, wie in einem Block 322 in Verbindung damit, dass die Software auf den Hardware-Deskriptor von dem Deskriptor-Ring zugreift, dargestellt, wird die Software den MARKIERTEN Versatzwert extrahieren und den Ort des Sicherheitseingangs (z. B. die Reihe oder den Index des auf das Paket anzuwendenden Sicherheitseingangs) de-referenzieren. Der SA-Kontext (z. B. Kryptoschlüssel, Richtlinien etc.) für den übereinstimmenden Sicherheitseintrag kann dann auf die herkömmliche Weise auf das Paket angewendet werden, wie in einem Block 324 gezeigt.
  • Wie vorangehend erörtert wurde, falls die Antwort auf den Entscheidungsblock 308 NEIN ist, gibt es keine aktuellen Einträge in der NIC-Flusstabelle, die einen Eintrag aufweisen, der mit der FlowID übereinstimmt, die durch den Flussleiter (oder eine andere Flussklassifizierungskomponente) bestimmt wurde, ein entsprechender Hardware-Deskriptor wird erzeugt, der andeutet, dass es keine Übereinstimmung gibt, und die Logik fährt zu Flussdiagramm 300b in 3b fort.
  • Bei einem Block 326 werden anwendbare Klassifizierungsregeln und/oder Filter verwendet, um die FlowID oder den Schlüssel herzuleiten, die als ein Nachschlagen in die Host-Flusstabelle verwendet werden. Wie vorangehend erörtert wurde, kann dies im Allgemeinen eine Verwendung eines n-Tupel-Hash in Kombination mit einer Hash-Funktion umfassen, um eine Instanz der FlowID in der Host-Flusstabelle zu lokalisieren, falls eine existiert. Optional kann ein Übereistimmungsfeldschema mit Anwendungsfiltern und Regeln verwendet werden. Bei einigen Ausführungsbeispielen wird das gleiche Schema von sowohl der NIC als auch der Software (z. B. OS-Kernel-Netzwerkstapel) auf dem Host für Konsistenz verwendet.
  • In einem Entscheidungsblock 328 wird bestimmt, ob das FlowID-Nachschlagen zu einer Übereinstimmung führt. Da die Größe der Host-Flusstabelle viel größer sein kann als die Größe der NIC-Flusstabelle, ist die Wahrscheinlichkeit einer Übereinstimmung viel größer, insbesondere für zuvor klassifizierte Flüsse. Falls das Paket jedoch einem neuen Fluss (z. B. das Paket ist ein erstes Paket, das für den Fluss empfangen wird) entspricht, dann wird es keine entsprechende FlowID in der Host-Flusstabelle geben. Alternativ, und abhängig von der Implementierung, können zuvor klassifizierte Flüsse periodisch aus der Host-Flusstabelle ausgeschlossen werden; in welchem Fall das Nachschlagen auch zu einem Fehltreffer führen würde.
  • Falls keine Übereinstimmung gefunden wird, fährt die Logik zu einem Block 330 fort, in dem Software verwendet wird, um einen neuen Fluss als Teil einer „Langsamer-Pfad“ - Verarbeitung zu etablieren. Dies umfasst ein Erzeugen eines neuen Host-Flusstabelleneintrags, was ein Ausschließen und Ersetzen eines existierenden Eintrags umfassen kann, falls die Größe der Host-Flusstabelle begrenzt ist und die Tabelle voll ist.
  • Falls der Fluss angewendete Sicherheitsverarbeitung sein soll, wie durch einen Entscheidungsblock 322 dargestellt, wird ein sicherer Kanal eingerichtet, und ein neuer Sicherheitseintrag wird erzeugt und zu der Host-Sicherheitsdatenbank auf die Weise hinzugefügt, die in Flussdiagramm 300c von 3 dargestellt ist. Wie durch den Eingangspunkt 3B angezeigt, wird dieser Prozess bei einem Block 348 beginnen, in dem ein sicherer Kanal eingerichtet wird. Wie vorangehend erörtert wurde, werden während der Einrichtung eines sicheren Kanals die betreffenden Flussinformationen (z. B. n-Tupel oder ein Hash über n-Tupel) und der entsprechende Sicherheitskontext (Kryptoschlüssel, Richtlinien, etc.) in einer oder mehreren Datenbanken aufgezeichnet. Der Einfachheit und der einfacheren Verständlichkeit halber ist hierin nur eine einzelne Sicherheitsdatenbank (Host-Sicherheitsdatenbank 215) dargestellt.
  • Beispielhafte Konfigurationen der Host-Sicherheitsdatenbank 215 und der NIC-Sicherheits-DB-Auslagerungstabelle 233 sind in 6 gezeigt. Die Host-Sicherheitsdatenbank 215 umfasst Q-Einträge 102, die jeweils einen jeweiligen Versatz von dem Anfang der Tabelle aufweisen, der zu darstellenden Zwecken eine Adresse von 0x000F aufweist. Bei diesem Beispiel ist Q = 100; in der Praxis würde Q viel größer sein (z. B. über mehrere hunderttausend Einträge). Zu darstellenden Zwecken zeigt die Host-Sicherheitsdatenbank 215 eine Versatzspalte mit ganzzahligen Werten, die um 1 inkrementieren, wenn man sich in der Tabellenstruktur nach unten bewegt. In der Praxis werden die Versätze basierend auf der Zeile oder dem Index jedes Eintrags impliziert und werden eine Funktion der Größe jedes Eintrags sein. Zum Beispiel wäre der Versatz für einen 8-Byte-Eintrag der ganzzahlige Wert multipliziert mit 8 Byte, was wiederum impliziert nicht explizit in dem Sicherheitseintrag umfasst wäre. Bei einem Ausführungsbeispiel wird jeder Sicherheitseintrag 102 das vorangehend in den 1a, 1b und 1c erörterte Format aufweisen, dargestellt als eine FlowID und ein SA-Kontext. In der Praxis kann der SA-Kontextwert ein Zeiger auf eine andere Datenstruktur sein, in der Parameter für den SA-Kontext (z. B. Kryptoschlüssel, Richtlinien etc.) gespeichert sind.
  • Auch sind zu darstellenden Zwecken die FlowIDs in der Host-Sicherheitsdatenbank 215 in nummerischer Reihenfolge gezeigt, mit Beispielen von Ausschluss und Ersatz für Zeile 1 (FlowID 1 wurde mit FlowID 100 ersetzt) und Reihe i +2 (FlowID 17 wurde mit FlowID 101 ersetzt). In der Praxis können die FlowIDs Hash-Schlüssel-Werte sein (wie vorangehend erörtert wurde), die eine etwas zufällige Reihenfolge basierend auf der für die Tabelle verwendeten Hash-Funktion haben würden. Zum Beispiel verwendet eine Hashfunc(key)-Funktion bei einem einfachen Schema einen Modulo-Operator, wobei der Modulo die Anzahl von Reihen in der Tabelle ist. Es können jedoch auch komplexere Schemata verwendet werden, umfassend Schemata, die Hash-Schlüssel-Kollisionen adressieren. Für sehr große Tabellen kann bei einigen Ausführungsbeispielen Kuckucks-Hashing (cuckoo hashing) für Host-Flusstabellen und/oder Host-Sicherheits-Datenbanktabellen verwendet werden. Wie in 6 ferner dargestellt ist, ist die FlowID 101 als ein neuer Eintrag 600 abgebildet, der zu der Host-Sicherheitsdatenbank 215 als ein Ergebnis der Operationen, die in Block 348 in 3c durchgeführt werden, hinzugefügt wurde.
  • Wiederum Bezug nehmend auf 3c, in Verbindung mit einem Hinzufügen eines neuen Sicherheitseintrags zu der Host-Sicherheitsdatenbank 215 wird in einem Block 350 ein entsprechender neuer Sicherheits-Auslagerungseintrag an die NIC-Sicherheits-DB-Auslagerungstabelle 233 geschrieben, wie ferner in Blöcken 352, 354 und 356 abgebildet. Die NIC-Sicherheits-DB-Auslagerungstabelle 233 arbeitet als eine Art von Zwischenspeicher, die der Host-Sicherheitsdatenbank 215 zugeordnet ist, aber anstatt identische Einträge in beiden Tabellen zwischenzuspeichern, werden Fluss-Einträge 105 und zugeordnete Aktionen und Versatzinformationen zwischengespeichert, um ein Nachschlagen des SA-Kontext für zugeordnete Flüsse in der Host-Sicherheitsdatenbank 215 zu beschleunigen.
  • Wie in 6 gezeigt ist, umfasst die NIC-Sicherheits-DB-Auslagerungstabelle 233 N Sicherheitseinträge, wobei N=16. Im Allgemeinen wird N viel kleiner sein als Q. Da die NIC-Sicherheits-DB-Auslagerungstabelle 233 als ein Zwischenspeicher arbeitet, verwendet die Speicherung von Einträgen in dieser Tabelle keinen Hash-Schlüssel für ein Nachschlagen, das auf den n-Tupeln von Paketen basiert. Vielmehr können herkömmliche Zwischenspeicher-Mechanismen verwendet werden, wie sie beispielsweise durch Prozessorzwischenspeicher und ähnliches verwendet werden. Zum Beispiel kann bei einigen Ausführungsbeispielen ein TCAM (ternärer inhaltsadressierbarer Speicher; ternary content-addressable memory) verwendet werden. Alternativ kann ein Krypto-Beschleuniger verwendet werden, um ein Nachschlagen von Einträgen zu beschleunigen. Da die Größe von N relativ klein sein wird und die NIC-Sicherheits-DB-Auslagerungstabelle 233 in Hardware implementiert ist, wird die Latenz für ein Nachschlagen eines Eintrags in der NIC-Sicherheits-DB-Auslagerungstabelle 233 relativ zu anderen Latenzen Bezug nehmend auf Paketverarbeitungsoperationen auf der Plattform unbedeutend sein.
  • Auch da die NIC-Sicherheits-DB-Auslagerungstabelle 233 als ein Zwischenspeicher arbeitet, wird eine oder werden mehrere Zwischenspeicher-Ausschlussrichtlinien implementiert. Bei einem Ansatz kann eine oder können mehrere bestehende Zwischenspeicher-Ausschlussrichtlinien verwendet werden, wie beispielsweise LRU (Least Recently Used). Es ist jedoch vorzuziehen, eine komplexere Zwischenspeicherausschlussrichtlinie zu haben, die Zugriffsmuster beobachtet, um Einträge für Flüsse, die mehr Verkehr aufweisen, zu behalten. Solche Zwischenspeicher-Ausschlussrichtlinien können unter Verwendung von Heuristiken und Ähnlichem implementiert werden.
  • Wiederum Bezug nehmend auf Block 350 von 3c, wird die Software bei einem Ausführungsbeispiel ein MMIO-Schreiben, umfassend die FlowID und die Versatzwerte, an ein Portal (z. B. eine vorbestimmte Adresse in einem MMIO-Speicherraum 230) auf der NIC durchführen. Die NIC liest dann die FlowID und Versatzwerte von dem Portal, erzeugt einen neuen Sicherheits-Auslagerungseintrag, der auf der FlowID und Versatzwerten basiert, und fügt diesen neuen Sicherheits-Auslagerungseintrag der NIC-Sicherheits-DB-Auslagerungstabelle 233 hinzu. Wie in Entscheidungsblock 352 gezeigt ist, stellt die NIC zunächst fest, ob die NIC-Sicherheits-DB-Auslagerungstabelle 233 voll ist; allgemein wird die Antwort nach einer kurzen Anlaufperiode JA sein. Dementsprechend wird ein vorhandener Eintrag in Block 354 unter Verwendung einer anwendbaren ZwischenspeicherAusschlussrichtlinie ausgeschlossen und der ausgeschlossene Eintrag wird in Block 356 durch den neuen Sicherheitseintrag ersetzt, wie durch einen neuen Sicherheitseintrag 602 für Fluss 101 abgebildet ist. Wie gezeigt ist, umfasst ein neuer Sicherheitseintrag 602 eine FlowID von 101, eine MARK-Aktion und einen Versatzwert von i+2, den Versatz für einen neuen Eintrag 600. Ein entsprechender Zwischenspeicher-Zugriffsmechanismus (wie beispielsweise ein TCAM) kann ebenfalls aktualisiert werden, um den Ort des neuen Eintrags basierend auf seiner FlowID oder anderen Übereinstimmungskriterien zu reflektieren.
  • Wie ebenfalls in 3c abgebildet, wird in Verbindung mit einem Einrichten eines Sicherheitskanals der SA-Kontext für den Fluss auf alle Pakete angewendet, die dem Fluss zugeordnet sind, umfassend das erste Paket. Eine Anwendung des SA-Kontextes ist in einem Rückgabeblock 358 dargestellt, wobei die Logik anschließend zu dem 3C-Rückgabepunkt in dem Flussdiagramm 300b von 3b zurückkehrt.
  • Wie in 3b gezeigt, nachfolgend auf die Rückkehr von dem Flussdiagramm 300c oder falls die Antwort auf den Entscheidungsblock 332 NEIN ist, schreitet die Logik zu einem Block 336 fort, bei dem ein MMIO-Schreiben des neuen Host-Fluss-Tabelle 214 -Eintrags an die NIC-Flusstabelle 214a geschrieben wird. Die NIC-Flusstabelle 214a arbeitet ebenfalls als ein Zwischenspeicher der Flusstabellen-Einträge, aber in diesem Fall können die Flusstabellen-Einträge in der Host-Flusstabelle und in der NIC-Flow-Tabelle gleich sein, oder zumindest ein Abschnitt der Felder in den Einträgen ist gleich. Wie zuvor führt die Software einen MMIO-Schreibvorgang an ein Portal in dem MMIO-Adressraum 230 durch, die Logik auf der NIC 230 greift auf die Informationen von dem Portal zu, stellt in einem Entscheidungsblock 338 fest, ob die NIC-Flusstabelle 214a voll ist, schließt einen existierenden Eintrag in einem Block 340 aus falls die NIC-Flusstabelle voll ist und fügt den neuen Eintrag der NIC-Flusstabelle 214a in einem Block 342 hinzu.
  • Im Allgemeinen sind Operationen, die sich auf die Host-Flusstabelle 214 und die NIC-Flusstabelle 214a beziehen, herkömmliche Operationen die der Vollständigkeit halber in Flussdiagrammen 3a und 3b umfasst sind. Ferner wird darauf hingewiesen, dass die Operationen, die sich auf ein Hinzufügen neuer Einträge zu der NIC-Flusstabelle 214a und der NIC-Sicherheits-DB-Auslagerungstabelle 233 in Verbindung mit einem Errichten neuer sicherer Kanäle beziehen, auf eine parallele Weise ausgeführt werden können.
  • Wiederum Bezug nehmend auf 3a, bei einigen Fällen, bei denen separate Fluss- und Sicherheits-DB-Auslagerungstabellen in Hardware implementiert sind, wird das Nachschlagen der FlowID in der NIC-Flusstabelle zu einem Treffer führen, wohingegen das Nachschlagen dieser selben FlowID in der NIC-Sicherheits-DB-Auslagerungstabelle zu einem Fehltreffer führen wird, wie durch ein JA-Ergebnis für Entscheidungsblock 308 und ein NEIN-Ergebnis für Entscheidungsblock 314 abgebildet ist. Zum Beispiel wird bei einigen Ausführungsbeispielen die Größe der NIC-Flusstabelle größer sein als die Größe der NIC-Sicherheits-DB-Auslagerungstabelle oder anderweitig unterschiedliche Zwischenspeicherausschlussrichtlinien können für die zwei Tabellen angewendet werden. In diesem Fall wird der HW-Deskriptor keine Sicherheitsübereinstimmung (Block 316) anzeigen und die Logik fährt zu dem Eingangspunkt 3A oben auf 3c fort. Bei einem Block 344 wird der n-Tupel-Wert (oder sonst die FlowID, die über den HW-Deskriptor weitergegeben wird) als ein Nachschlagen für die Host-Sicherheitsdatenbank 215 verwendet. Falls das Nachschlagen zu einer Übereinstimmung (wie durch ein JA-Ergebnis für einen Entscheidungsblock 346 angezeigt) führt, fährt die Logik zu Block 350 fort, um einen neuen Eintrag zu der NIC-Sicherheits-DB-Auslagerungstabelle 233 zu schreiben, basierend auf der FlowID und dem Versatz für den übereinstimmenden Eintrag in der Host-Sicherheitsdatenbank 215.
  • Falls das Nachschlagen in Block 344 zu einem Fehltreffer führt, wird die Software einen langsamen Pfad anwenden, um den Sicherheitskanal wiederherzustellen. Zum Beispiel, bei Implementierungen, bei denen die Host-Sicherheitsdatenbank eine feste Größe aufweist, die erfordert, dass gesicherte Flüsse ausgeschlossen werden (wenn voll), und kleiner als die Host-Fluss-Tabelle ist, ist es möglich, dass ein Eintrag für einen Fluss, der einem sicheren Kanal entspricht, in der Host-Flusstabelle vorliegt aber aus der Host-Sicherheitsdatenbank ausgeschlossen wurde. In diesem Fall muss der sichere Kanal für den Datenfluss bei Block 348 wiederhergestellt werden.
  • Wie vorangehend erörtert wurde, können bei einigen Ausführungsbeispielen Sicherheitsauslagerungseinträge in der Flusstabelle auf der Netzwerk-Hardware-Vorrichtung umfasst sein, anstatt dass eine separate NIC-Sicherheits-DB-Auslagerungstabelle verwendet wird. 6a zeigt ein Ausführungsbeispiel einer NIC-Flusstabelle 214a, die ausgebildet ist, um Sicherheitsauslagerungseinträge zwischenzuspeichern. Bei dem dargestellten Ausführungsbeispiel umfasst die Tabellenstruktur Filterfelder und Metadatenfelder, zusätzlich zu den vorangehend beschriebenen und in 6 dargestellten Aktions- und Wertefeldern. Im Allgemeinen werden entweder n-Tupel-Übereinstimmungsfelder für die Filterfelder verwendet, oder eine FlowID, die einen Hash über die n-Tupel-Werte (oder andere Mittel zum Erzeugen einer FlowID) umfasst, kann auf ähnliche Weise wie vorangehend beschrieben verwendet werden. Die Metadatenfelder können ein oder mehrere Felder umfassen, die Metadaten, wie beispielsweise Zählerwerte, enthalten. Im Allgemeinen werden die Sicherheits-Auslagerungseinträge 602a auf eine ähnliche Weise wie die Sicherheits-Auslagerungseinträge 602 in 6 verwendet, wobei die Informationen in den Aktions- und Wert-Spalten verwendet werden, um anwendbare Hardware-Deskriptoren für übereinstimmende Sicherheits-Auslagerungseinträge zu MARKIEREN.
  • 7 zeigt ein Ausführungsbeispiel einer Plattformarchitektur 700, die einer Rechenplattform entspricht, die für ein Implementieren von Aspekten der hierin beschriebenen Ausführungsbeispiele geeignet ist. Die Architektur 700 umfasst eine Hardware-Schicht in dem unteren Abschnitt des Diagramms, umfassend eine Plattform-Hardware 702, und eine Software-Schicht, die Softwarekomponenten umfasst, die in dem Host-Speicher 704 laufen. Die Plattform-Hardware 702 umfasst einen Prozessor 706, der eine System-auf-einem-Chip (SoC; System on a Chip) -Architektur aufweist, die eine zentrale Verarbeitungseinheit (CPU; central processing unit) 708 mit M Prozessorkernen 710 umfasst, die jeweils mit einem Level-1- und Level-2-Zwischenspeicher (L1/L2) 712 gekoppelt sind. Jeder der Prozessorkerne und L1/L2-Zwischenspeicher ist mit einer Verbindung 714 verbunden, mit der jeweils eine Speicherschnittstelle 716 und ein Letzte-Ebene-Zwischenspeicher (LLC; Last Level Cache) 718 gekoppelt ist, wodurch ein kohärenter Speicherbereich gebildet wird. Die Speicherschnittstelle wird verwendet, um auf den Host-Speicher 704 zuzugreifen, in dem verschiedene Software-Komponenten geladen und über eine Ausführung zugeordneter Software-Anweisungen auf Prozessorkernen 710 ausgeführt werden.
  • Der Prozessor 706 umfasst ferner eine Eingangs-/Ausgangs- (I/O) -Verbindungshierarchie, die eine oder mehrere Ebenen von Verbindungsschaltungsanordnungen und Schnittstellen umfasst, die der Einfachheit halber kollektiv als I/O-Verbindungen und -Schnittstellten 720 dargestellt sind. Verschiedene Komponenten und Peripherievorrichtungen sind mit dem Prozessor 706 über jeweilige Schnittstellen (nicht alle separat gezeigt) gekoppelt, umfassend eine Netzwerksteuerung 721 über eine I/O-Schnittstelle 723, eine Firmware-Speicherungsvorrichtung 722, in der die Firmware 724 gespeichert ist, und ein Plattenlaufwerk (disk drive) oder eine Solid State Disk (SSD) mit einer Steuerung 726, in der Softwarekomponenten 728 gespeichert sind. Optional kann alles oder ein Abschnitt der Software-Komponenten, die verwendet werden, um die Software-Aspekte der hierin beschriebenen Ausführungsbeispiele zu implementieren, über ein Netzwerk (nicht gezeigt) geladen werden, auf das z. B. durch die Netzwerksteuerung 721 zugegriffen wird. Bei einem Ausführungsbeispiel umfasst die Firmware 724 einen BIOS (Basic Input Output System) - Abschnitt und zusätzliche Firmware-Komponenten, die gemäß der Universal Extensible Firmware Interface (UEFI) -Architektur ausgebildet sind.
  • Während einer Plattforminitialisierung werden verschiedene Abschnitte von Firmware 724 (nicht separat gezeigt) in den Host-Speicher 704 geladen, zusammen mit verschiedenen Softwarekomponenten. In der Architektur 700 von 7 umfassen die Softwarekomponenten einen Typ-1-Hypervisor 730, der auch als ein „Bare-Metal“-Hypervisor bekannt ist. Optional kann ein Typ-2-Hypervisor verwendet werden (nicht gezeigt). Einer der primären Unterschiede zwischen einem Typ-1-Hypervisor und einem Typ-2-Hypervisor ist, dass der Typ-2-Hypervisor als eine Anwendung implementiert ist, die auf dem Host-Betriebssystem läuft, wobei bei einem Typ-1-Hypervisor der Hypervisor direkt auf der Plattform-Hardware ohne ein Host-Betriebssystem läuft (d.h. er läuft auf dem „blanken Metall (bare metal)“ der Plattform; daher der Name).
  • Unter der Plattformarchitektur 700 umfasst jede von m virtuellen Maschinen (VMs) VM 1 ... VM m ein Betriebssystem 732 und Anwendungen 434. Jede VM ist ferner ausgebildet, um die Softwarekomponenten und die zugeordnete Funktionalität, dargestellt in der in 2 vorangehend beschriebenen Softwareschicht 202, in den jeweiligen Speicherplätzen zu implementieren, die den VMs (z. B. dem Abschnitt des Host-Speichers 704, der jeder VM zugeordnet ist) zugeordnet sind. Plattformarchitekturen, die Container verwenden, wie beispielsweise Docker-Typ-Container, können auf eine ähnliche Weise implementiert werden. Zusätzlich können auch Rechenplattformen verwendet werden, die nur eine einzige Instanz eines Betriebssystems betreiben.
  • In 7 umfasst ein Abschnitt der Schaltungsanordnung und Logik zum Implementieren der Hardware-Schicht-Funktionalität von 2 und der vorangehend beschriebenen Flussdiagramme 3a-3c einen Prozessor 736, gekoppelt mit einem Speicher 738 und Firmware 740, die auf einem Prozessor 736 ausgeführt wird. Im Allgemeinen kann die Firmware 740 auf der Netzwerksteuerung 721 gespeichert sein, wie beispielsweise in einer Firmware-Speicherungsvorrichtung 742, oder kann von einer anderen Firmware-Speicherungsvorrichtung während eines Pre-Boots auf die Plattform außerhalb der Netzwerksteuerung 721 geladen werden, wie beispielsweise von einer Firmware-Speicherung 722.
  • 7a zeigt eine Plattformarchitektur 700a, umfassend ein SoC 706a, aufweisend eine integrierte NIC 220a, die auf eine ähnliche Weise ausgebildet ist wie die NIC 220 in der Plattformarchitektur 700, mit den folgenden Unterschieden. Da die NIC 220a in dem SoC integriert ist, umfasst sie eine interne Schnittstelle 723a, die mit der Verbindung 714 oder einer anderen Verbindungsebene in einer Verbindungshierarchie (nicht gezeigt) gekoppelt ist.
  • Eingangsport 224 und Ausgangsport 232 sind physische Ports in einer externen Schnittstelle 744, die jeweils mit den I/O-Ports 224a und 232a auf dem SoC 706a gekoppelt sind. Bei einem Ausführungsbeispiel umfasst das SoC 706a ferner I/O-Verbindungen und -Schnittstellen und die Plattform-Hardware umfasst Firmware, eine Firmware-Speicherung, Platten/SSD und eine Steuerung, sowie Software-Komponenten ähnlich zu diesen, die in der Plattform-Architektur 700 gezeigt sind, aber aufgrund von Raummangel nicht gezeigt sind.
  • Die CPUs 708 in den SoCs 706 und 706a können irgendeine geeignete Prozessorarchitektur verwenden, die derzeit verwendet oder in Zukunft entwickelt wird. Bei einem Ausführungsbeispiel ist die Prozessorarchitektur eine Intel®-Architektur (IA; Intel® architecture), umfassend, aber nicht beschränkt auf eine Intel®-x86-Architektur, sowie eine IA-32-Architektur und eine IA-64-Architektur. Bei einem Ausführungsbeispiel ist die Prozessorarchitektur eine ARM®-basierte Architektur.
  • Im Allgemeinen können die hierin offenbarten Hardware-Vorrichtungen Netzwerkadapter, Netzwerksteuerungen oder NICs, InfiniBand HCAs und Host Fabric Interfaces (HFIs) umfassen, sind aber nicht darauf beschränkt. Bei einigen Ausführungsbeispielen sind die Netzwerkadapter, -Steuerungen und NICs ausgebildet, um unter Verwendung eines oder mehreren Ethernet-Protokolle, die durch IEEE 802.3-basierte Protokolle definiert werden, implementiert zu werden. Andere Arten von Protokollen können auch verwendet werden, wie Fachleute auf dem Gebiet der Netzwerktechnik bemerken werden.
  • Eine beispielhafte Systemarchitektur für eine NIC 800 ist in 8 gezeigt. Eine NIC 800 umfasst eine NIC-Systemplatine 802, auf der ein/e Netzwerkprozessor/-steuerung 804 und ein Speicher, der statistischen Direktzugriffsspeicher (SRAM; static random access memory) 806 und dynamischen Direktzugriffsspeicher (DRAM; dynamic random access memory) 808 umfasst, und befestigt sind. Bei verschiedenen Ausführungsbeispielen. Die NIC-Systemplatine 802 ist repräsentativ für eine Ethernet-Steuerungskarte, eine Tochterplatine, eine Multi-Chip-Modul-Platine oder ein Substrat, oder sie kann Teil einer Computersystemplatine sein, wie beispielsweise als eine Hauptplatine oder ein Motherboard für einen Computer-Server. Der Prozessor/Die Steuerung 804 ist repräsentativ für eine Ethernet-Verarbeitungs- und/oder - Steuerungseinheit und kann in verschiedenen Formen ausgebildet sein, umfassend als ein Ethernet-Steuerungschip oder eine Netzwerkprozessoreinheit (NPU; network processor unit).
  • Bei dem dargestellten Ausführungsbeispiel, umfasst der Prozessor/die Steuerung 804 eine Anweisungsspeicherung 810, ein Cluster von Prozessor-Maschinen 812, eine SRAM-Steuerung 814, eine DRAM-Steuerung 816, einen Schreib-DMA-Block 818, einen Lese-DMA-Block 820, eine PCIe-Schnittstelle 822, einen Scratch-Speicher 824, eine Hash-Einheit 826, Serialisierer/Deserialisierer (Ser/Des) 828 und 830 und PHY-Schnittstellen 832 und 834. Jede der Komponenten ist mit einer oder mehreren anderen Komponenten über eine anwendbare Verbindungsstruktur und Logik, die kollektiv als eine interne Verbindungs-Cloud 835 abgebildet ist, verbunden.
  • Die Anweisungsspeicherung 810 umfasst verschiedene Anweisungen, die durch Prozessormaschinen-Cluster 812 ausgeführt werden, umfassend Flussklassifizierungsanweisungen 813, LAN-Maschine-/Flussleiter-Anweisungen 815, Deskriptorerzeugungs- und Markierungsanweisungen 817, und Paketanordnungsanweisungen 819. Das Prozessormaschinen-Cluster 812 umfasst eine Mehrzahl von Mikromaschinen 836, wobei jede mit einer lokalen Steuerungsspeicherung 837 gekoppelt ist. Bei einem Ausführungsbeispiel werden verschiedene Operationen, wie beispielsweise Paketidentifizierung und Flussklassifizierung, unter Verwendung einer Pipeline-Architektur durchgeführt, wie beispielsweise in 8 dargestellt ist, wobei jede Mikromaschine eine zugeordnete Operation in der Pipeline ausführt. Als eine Alternative ist das Prozessormaschinen-Cluster 836 repräsentativ für einen oder mehrere Prozessorkerne in einer zentralen Verarbeitungseinheit oder Steuerung. Als noch eine andere Option kann die Kombination aus Prozessormaschinen 812 und der Anweisungsspeicherung 810 als eingebettete Logik implementiert sein, wie beispielsweise über ein feldprogrammierbares Gate-Array (FPGA; field programmable gate array) oder Ähnliches.
  • Bei einem Ausführungsbeispiel ist die Anweisungsspeicherung 810 als eine Auf-Chip-Speicherung implementiert, wie beispielsweise in 8 abgebildet. Optional kann ein Abschnitt der oder alle der Anweisungen, die in der Anweisungsspeicherung 810 abgebildet sind, in dem SRAM 806 gespeichert sein und darauf kann unter Verwendung der SRAM-Steuerung 814 über eine Schnittstelle 838 zugegriffen werden. SRAM 806 kann auch verwendet werden, um ausgewählte Daten und/oder Anweisungen, die sich auf Paketverarbeitungsoperationen beziehen, zu speichern. Bei dem dargestellten Ausführungsbeispiel ist jede der NIC-Flusstabelle 214a und der NIC-Sicherheits-DB-Auslagerungstabelle 233 in SRAM implementiert.
  • DRAM 806 wird verwendet, um einen oder mehrere Eingangs (RX) -Puffer (gekoppelt mit Eingangsports) und einen oder mehrere Ausgangspuffer (gekoppelt mit Ausgangsports) zu speichern, sowie für verschiedene andere Puffer und/oder Warteschlangen, und darauf wird unter Verwendung der DRAM-Steuerung 816 über eine Schnittstelle 840 zugegriffen. Der Schreib-DMA-Block 818 und der Lese-DMA-Block 820 sind jeweils ausgebildet, um DMA-Schreib- und Lese-Operationen gemäß den hierin beschriebenen Ausführungsbeispielen zu unterstützen. Bei dem dargestellten Ausführungsbeispiel wird DMA-Kommunikation zwischen SRAM 806 und einer Plattform-Host-Schaltungsanordnung über die PCIe-Schnittstelle 822 über einen PCIe-Link 842, gekoppelt mit einer PCIe-Verbindung oder einem PCI-Erweiterungsslot 844, ermöglicht, was DMA-Schreib- und Lese-Transaktionen zwischen SRAM 806 und dem Systemspeicher für einen Host 846, der das PCIe-Protokoll nutzt, ermöglicht. Auf Abschnitte von DRAM 808 kann auch über DMA-Schreib- und -Lese-Transaktionen zugegriffen werden. Die PCIe-Schnittstelle kann bei einigen Ausführungsbeispielen als ein PCIe-Endpunkt arbeiten, der SR-IOV (Single-root Input-Output Virtualization) -Funktionalität unterstützt.
  • Zusätzlich zu PCIe können andere Verbindungstechnologien und -Protokolle verwendet werden. Diese umfassen beispielsweise, sind aber nicht beschränkt auf Computer Express Link (CXL), InfiniBand und Omni-Path.
  • Der Scratch-Speicher 824 und die Hash-Einheit 826 sind darstellend für Komponenten, die von NICs verwendet werden, um Scratch-Speicher- und Hashing-Operationen, die sich auf Paketverarbeitung beziehen, zu ermöglichen. Zum Beispiel kann, wie vorangehend beschrieben wurde, eine Hash-Operation zum Herleiten von Fluss-IDs und für Paketidentifikation implementiert werden. Zusätzlich kann eine Hash-Einheit ausgebildet sein, um Krypto-Beschleuniger-Operationen zu unterstützten.
  • PHYs 832 und 834 ermöglichen Physical-Layer-Operationen für die NIC und arbeiten als eine Brücke zwischen dem digitalen Bereich, der von der NIC-Logik und Komponenten verwendet wird, und dem analogen Bereich, der für ein Übertragen von Daten über elektrische, optische oder drahtgebundene Signale verwendet wird. Zum Beispiel ist bei dem dargestellten Ausführungsbeispiel von 8 jede der PHYs 832 und 834 mit einem Paar von I/O-Ports gekoppelt, die ausgebildet sind, um elektrische Signale über ein Drahtkabel, wie beispielsweise ein Cat6e- oder Cat6-Ethernet-Kabel oder ein 100GB-Ethernet-Kabel zu senden. Optisches- und Drahtloses-Signal-Ausführungsbeispiele würden zusätzliche Schaltungsanordnungen und Schnittstellen zum Ermöglichen einer Verbindung über optische und drahtlose Signale (nicht gezeigt) verwenden. In Verbindung mit PHY-Operationen werden SerDes 828 und 830 verwendet, um Ausgangs-Paketströme zu serialisieren und eingehende Paketströme zu deserialisieren.
  • Zusätzlich zu den Anweisungen, die in der Anweisungsspeicherung 810 gezeigt sind, können andere Anweisungen über eine Ausführung von Prozessormaschinen 812 oder anderer Verarbeitungsmittel implementiert werden, um zusätzliche Operationen zu ermöglichen. Zum Beispiel ist bei einem Ausführungsbeispiel die NIC 800 ausgebildet, um einen TCP/IP-Stapel auf der NIC selbst zu implementieren. Die NIC 800 kann auch ausgebildet sein, um TCP-Operationen auf eine Weise zu ermöglichen, die von den Betriebssystem-TCP-Einrichtungen ausgelagert ist, wobei, sobald ein Paket nach außen gesendet wird, die NIC 800 für ein Verarbeiten einer ACK-Nachricht und ein erneutes Senden des Pakets, falls eine ACK-Nachricht nicht innerhalb eines anwendbaren TCP-Timeout-Werts empfangen wird, verantwortlich ist.
  • Im Allgemeinen kann eine NIC ausgebildet sein, um Routing-Daten für ein Ermöglichen von Paketidentifizierung und Flussklassifizierung, umfassend Weiterleitungsfilter und -regeln, zu speichern, entweder lokal oder unter Verwendung eines MMIO-Adressraums in dem System- oder Host-Speicher. Wenn sie lokal gespeichert sind können diese Routing-Daten entweder in SRAM 806 oder DRAM 808 gespeichert sein. Auf Routing-Daten, die in einem MMIO-Adressraum gespeichert sind, wie beispielsweise NIC-Flusstabellen 214a -Daten, kann durch die NIC 800 über Lese-DMA-Operationen zugegriffen werden. Im Allgemeinen kann ein Einrichten der MMIO-Adressraumabbildung durch einen NIC-Vorrichtungstreiber in Koordination mit dem Betriebssystem ermöglicht werden. Der NIC-Vorrichtungstreiber kann auch ausgebildet sein, um es Anweisungen in der Anweisungsspeicherung 810 zu ermöglichen, über das Betriebssystem aktualisiert zu werden. Optional können die Anweisungen in der Anweisungsspeicherung Firmware-Anweisungen umfassen, die in einem nichtflüchtigen Speicher, wie beispielsweise einem Flash-Speicher, gespeichert sind, der entweder auf dem Prozessor/ der Steuerung 804 integriert oder an der NIC-Systemplatine 802 (nicht gezeigt) befestigt sein kann.
  • Zusätzlich dazu, dass eine NIC mit einem einzelnen Host verbunden ist, kann die NIC mit mehreren Hosts verbunden sein. Zum Beispiel zeigt 9a eine Plattform 900, umfassend eine NIC 802, die mit jedem der Hosts 902, 904, 906 und 906 verbunden ist. Die NIC 802 umfasst bei einem Ausführungsbeispiel, wenn sie mit mehreren Hosts verbunden ist, einen separaten Satz von NIC-Flusstabellen und NIC-Sicherheits-DB-Auslagerungstabellen für jeden Host. Bei einem anderen Ausführungsbeispiel sind die NIC-Flusstabellen- und die NIC-Sicherheits-DB-Auslagerungstabellen-Einträge für mehrere Hosts in den gleichen Tabellen kombiniert.
  • Wie in 9b gezeigt ist, kann eine NIC in einem Rack in einem Slot, Gehäuse, Träger oder Schlitten installiert sein, der/das separat von einem Slot, Gehäuse, Träger oder Schlitten ist, in dem ein oder mehrere Hosts, die mit der NIC verbunden sind, installiert sind. Bei diesem Beispiel ist die NIC 802 in einem Slot oder Gehäuse #2 in einem Rack 910 installiert, das mehrere Slots umfasst. Ein oder mehrere Hosts 902, 904, 906 und 908 sind in einem Slot oder Gehäuse #1 installiert. Die NIC 802 ist in Kommunikation mit einem oder mehreren der Hosts 902, 904, 906 und 908 über einen Strukturschalter 914 und Strukturlinks 916 gekoppelt. Bei anderen Ausführungsbeispielen kann eine NIC in Kommunikation mit einem Host in einem separaten Slot oder Gehäuse über einen Punkt-zu-Punkt-Link gekoppelt sein. Bei noch anderen Ausführungsbeispielen kann eine NIC in Kommunikation mit einem Host in einem separaten Rack (nicht gezeigt) gekoppelt sein.
  • Die hierin offenbarten Lehren und Prinzipien können auch in einem Schalter implementiert sein. Zum Beispiel zeigt 10 einen Schalter 1000, umfassend eine NIC 802, die mit mehreren Schalterports 1004 und mit einen Schalterprozessor 1006 verbunden ist. Ein Betriebssystem oder eine andere Software 1008 wird auf einem Schalterprozessor 1006 ausgeführt, um Operationen, ähnlich zu diesen zu bewirken, die durch den OS-Kernel-Protokollstapel (oder anderen Betriebssystemkomponenten) in den vorangehend beschriebenen Ausführungsbeispielen ausgeführt werden.
  • Im Allgemeinen können die Schaltungsanordnung, die Logik und die Komponenten, die in den Figuren hierin abgebildet sind, in verschiedenen Arten von integrierten Schaltungen (z. B. Halbleiterchips) und Modulen implementiert sein, umfassend diskrete Chips, SoCs, Multi-Chip-Module und Netzwerken/Link-Schnittstellenchips, umfassend Unterstützung für mehrere Netzwerkschnittstellen. Auch können nach hiesigem Gebrauch Schaltungsanordnungen und Logik, um verschiedene Operationen zu bewirken, über eines oder mehrere aus eingebetteter Logik, eingebetteten Prozessoren, Steuerungen, Mikromaschinen oder anderweitig unter Verwendung irgendeiner Kombination von Hardware, Software und/oder Firmware implementiert werden. Zum Beispiel können die Operationen, die durch verschiedene Logikblöcke und/oder Schaltungsanordnungen dargestellt sind, unter Verwendung programmierter Logik-Gates und Ähnlichem bewirkt werden, umfassend aber nicht beschränkt auf anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), FPGAs, IP-Blockbibliotheken oder durch eine oder mehrere Software- oder Firmware-Anweisungen, die auf einem oder mehreren Verarbeitungselementen ausgeführt werden, umfassend Prozessoren, Prozessorkerne, Steuerungen, Mikrocontroller, Mikromaschinen, etc.
  • Obwohl einige Ausführungsbeispiele in Bezug auf bestimmte Implementierungen beschrieben wurden, sind andere Implementierungen gemäß einigen Ausführungsbeispielen möglich. Zusätzlich muss die Anordnung und/oder Reihenfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen dargestellt und/oder hierin beschrieben sind, nicht auf die bestimmte Weise angeordnet sein, die dargestellt und beschrieben ist. Viele andere Anordnungen sind gemäß einigen Ausführungsbeispielen möglich.
  • Bei jedem System, das in einer Figur gezeigt ist, können die Elemente in einigen Fällen jeweils ein gleiches Bezugszeichen oder ein unterschiedliches Bezugszeichen aufweisen, um vorzuschlagen, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, um unterschiedliche Implementierungen aufzuweisen und mit einigen oder allen der hierin gezeigten oder beschriebenen Systeme zu arbeiten. Die verschiedenen Elemente, die in den Figuren gezeigt sind, können die gleichen oder unterschiedliche sein. Welches als ein erstes Element bezeichnet wird und welches ein zweites Element genannt wird, ist beliebig.
  • In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander vorgesehen sind. Vielmehr kann bei bestimmten Ausführungsbeispielen „verbunden“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander sind. „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt sind. Jedoch kann „gekoppelt“ auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, aber dennoch weiter miteinander zusammenarbeiten oder interagieren. Zusätzlich bedeutet „kommunikativ gekoppelt“, dass es zwei oder mehreren Elementen, die möglicherweise in direktem Kontakt miteinander sind, oder auch nicht, ermöglicht ist, miteinander zu kommunizieren. Zum Beispiel, falls eine Komponente A mit einer Komponente B verbunden ist, die wiederum mit einer Komponente C verbunden ist, kann die Komponente A mit der Komponente C kommunikativ gekoppelt sein, unter Verwendung der Komponente B als eine Zwischenkomponente.
  • Ein Ausführungsbeispiel ist eine Implementierung oder ein Beispiel der Erfindungen. Ein Bezug in der Beschreibung auf „ein Ausführungsbeispiel“, „ein einziges Ausführungsbeispiel“, „einige Ausführungsbeispiele“, oder „andere Ausführungsbeispiele“ bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik, das oder die in Verbindung mit den Ausführungsbeispielen beschrieben ist, in zumindest manchen Ausführungsbeispielen umfasst ist, aber nicht notwendigerweise in allen Ausführungsbeispielen der Erfindung. Die verschiedenen Erscheinungsbilder „ein Ausführungsbeispiel“, „ein einziges Ausführungsbeispiel“ oder „einige Ausführungsbeispielen“ beziehen sich nicht alle notwendigerweise auf dieselben Ausführungsbeispiele.
  • Nicht alle Komponenten, Merkmale, Strukturen, Charakteristika, etc., die hierin beschriebenen und dargestellt sind, müssen in einem bestimmten Ausführungsbeispiel oder Ausführungsbeispielen umfasst sein. Wenn die Beschreibung beschreibt, dass eine Komponente, ein Merkmal, eine Struktur oder Charakteristik umfasst sein „kann“, „könnte“ oder „möglicherweise“ umfasst ist, zum Beispiel, muss diese bestimmte Komponente, dieses Merkmal, diese Struktur oder diese Charakteristik nicht unbedingt umfasst sein. Wenn die Beschreibung oder ein Anspruch sich auf „ein“ oder „eines“ von Elementen bezieht, bedeutet das nicht, dass nur eines dieses Elements vorhanden ist. Wenn die Beschreibung oder die Ansprüche sich auf „ein zusätzliches“ Element beziehen, schließt das nicht aus, dass mehr als eines des zusätzlichen Elements vorhanden ist.
  • Ein Algorithmus wird hier, und allgemein als eine selbstkonsistente Sequenz von Handlungen oder Operationen verstanden, die zu einem gewünschten Ergebnis führen. Diese umfassen physische Manipulationen von physischen Mengen. In der Regel, wenn auch nicht unbedingt, werden diese Größen in Form von elektrischen oder magnetischen Signalen dargestellt, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden zu können. Es hat sich bisweilen als praktisch erwiesen, hauptsächlich aus Gründen der allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder Ähnliches zu bezeichnen. Es sollte jedoch verstanden werden, dass alle diese und ähnliche Ausdrücke den geeigneten physikalischen Größen zugeordnet werden sollen und nur praktische Etiketten sind, die auf diese Größen angewandt werden.
  • Kursiv gesetzte Buchstaben wie beispielsweise, h' ,i', j', ,k', l', ,m', ,n', ,p', ,M', ,N', ,Q', etc. in der vorangehenden detaillierten Beschreibung, werden verwendet, um eine ganze Zahl darzustellen, und die Verwendung eines bestimmten Buchstabens ist nicht auf bestimmte Ausführungsbeispiele beschränkt. Weiterhin kann derselbe Buchstabe in separaten Ansprüchen verwendet werden, um separate ganze Zahlen zu repräsentieren, oder unterschiedliche Buchstaben können verwendet werden. Zusätzlich kann die Verwendung eines bestimmten Buchstabens in der detaillierten Beschreibung mit dem Buchstaben übereinstimmen, der in einem Anspruch verwendet wird, der sich auf denselben Gegenstand in der detaillierten Beschreibung bezieht, oder auch nicht.
  • Wie vorangehend erörtert wurde, können verschiedene Aspekte der Ausführungsbeispiele hierin durch entsprechende Software- und/oder Firmware-Komponenten und -Anwendungen erörtert werden, wie beispielsweise Software und/oder Firmware, die durch einen eingebetteten Prozessor oder Ähnliches ausgeführt wird. Somit können Ausführungsbeispiele dieser Erfindung als ein Softwareprogramm, Softwaremodule, Firmware und/oder verteilte Software oder zur Unterstützung davon verwendet werden, die auf einer Form von Prozessor, Verarbeitungskern oder eingebetteter Logik ausgeführt werden, eine virtuelle Maschine, die auf einem Prozessor oder Kern läuft, oder anderweitig auf einem oder innerhalb eines nichtflüchtigen computerlesbaren oder maschinenlesbaren Speicherungsmediums implementiert oder realisiert ist. Ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium umfasst irgendeinen Mechanismus zum Speichern oder Übertragen von Information in einer durch eine Maschine (z. B. einen Computer) lesbaren Form. Zum Beispiel umfasst ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium irgendeinen Mechanismus, der Information in einer Form bereitstellt (d. h. speichert und/oder sendet), auf die durch einen Computer oder eine Rechenmaschine (z. B. Rechenvorrichtung, elektronisches System, etc.) zugegriffen werden kann, wie beispielsweise beschreibbare/nicht beschreibbare Medien (z. B. Nur-Lese-Speicher (ROM; read only memory), Direktzugriffsspeicher (RAM; random access memory), Magnetplattenspeicherungsmedien, optische Speicherungsmedien, Flash-Speichervorrichtungen, etc.) Der Inhalt kann direkt ausführbar („Objekt“ oder „ausführbare“ Form), ein Quellcode oder ein Differenzcode („Delta“ oder „Patch“ -Code) sein. Ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium kann auch eine Speicherung oder Datenbank umfassen, aus der Inhalt heruntergeladen werden kann. Das nichtflüchtige computerlesbare oder maschinenlesbare Speicherungsmedium kann auch eine Vorrichtung oder ein Produkt umfassen, das zur Zeit des Verkaufs oder der Lieferung darauf gespeicherten Inhalt aufweist. Somit kann ein Liefern einer Vorrichtung mit gespeichertem Inhalt oder ein Anbieten von Inhalt zum Herunterladen über ein Kommunikationsmedium als Bereitstellen eines Herstellungsgegenstands, der ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium mit solchem hierin beschriebenen Inhalt umfasst, verstanden werden.
  • Die Operationen und Funktionen, die durch verschiedene hierin beschriebene Komponenten ausgeführt werden, können durch Software, die auf einem Verarbeitungselement läuft, implementiert werden, über eingebettete Hardware oder Ähnliches oder irgendeine Kombination von Hardware und Software. Solche Komponenten können als Software-Module, Hardware-Module, Spezialzweck-Hardware (z. B. anwendungsspezifische Hardware, ASICs, DSPs, etc.), eingebettete Steuerungen, fest verdrahtete Schaltungsanordnungen, Hardware-Logik, etc. implementiert sein. Software-Inhalt (z. B. Datenanweisungen, Konfigurationsinformationen, etc.) kann über einen Herstellungsgegenstand bereitgestellt werden, umfassend ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium, das Inhalt bereitstellt, der Anweisungen repräsentiert, die ausgeführt werden können. Der Inhalt kann dazu führen, dass ein Computer verschiedene hierin beschriebene Funktionen/Operationen ausführt.
  • Nach hiesigem Gebrauch kann eine Liste von Gegenständen, die durch den Begriff „zumindest eine/r/s von“ verbunden sind, irgendeine Kombination der aufgezählten Begriffe bedeuten. Zum Beispiel kann der Ausdruck „zumindest eine/r/s von A, B oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C bedeuten.
  • Die vorangehende Beschreibung von dargestellten Ausführungsbeispielen der Erfindung, umfassend was in der Zusammenfassung beschrieben ist, soll nicht erschöpfend sein oder die Erfindung auf die offenbarten genauen Formen begrenzen. Während bestimmte Ausführungsbeispiele von und Beispiele für die Erfindung hierin zu Veranschaulichungszwecken beschrieben sind, sind verschiedene äquivalente Modifikationen innerhalb des Schutzbereichs der Erfindung möglich, wie Fachleute auf dem relevanten Gebiet erkennen können.
  • Diese Modifikationen können an der Erfindung im Hinblick auf die obige, detaillierte Beschreibung vorgenommen werden. Die Ausdrücke, die in den folgenden Ansprüchen verwendet werden, sollten nicht derart betrachtet werden, dass sie die Erfindung auf die spezifischen Ausführungsbeispiele einschränken, die in der Beschreibung und den Zeichnungen offenbart sind. Stattdessen soll der Schutzbereich der Erfindung vollständig durch die nachfolgenden Ansprüche bestimmt sein, die gemäß etablierten Vorgaben der Anspruchsinterpretation ausgelegt werden sollen.

Claims (25)

  1. Ein Verfahren, umfassend: Empfangen eines ersten Pakets an einer Netzwerkschnittstelle; Durchführen einer Flussklassifizierung, um einen Fluss zu identifizieren, zu dem das erste Paket gehört; Abgleichen eines Sicherheits-Auslagerungseintrags, der dem Fluss zugeordnet ist; und Markieren eines Hardware-Deskriptors mit Ortsinformationen in dem Sicherheits-Auslagerungseintrag.
  2. Das Verfahren gemäß Anspruch 1, ferner umfassend ein Zwischenspeichern einer Mehrzahl von Sicherheits-Auslagerungseinträgen in einer Flusstabelle oder einer Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle, die mit einem Host gekoppelt ist, der einen Host-Speicher aufweist, wobei jeder jeweilige Sicherheitsauslagerungseintrag Informationen umfasst, um einen jeweiligen Fluss in zumindest einer einer Fluss-Tabelle und Sicherheitsdatenbank in dem Host-Speicher zu identifizieren oder abzugleichen.
  3. Das Verfahren gemäß Anspruch 2, wobei der Host eine Host-Sicherheitsdatenbank umfasst und jeder Sicherheitseintrag in der Host-Sicherheitsdatenbank einen Security Association (SA) -Kontext umfasst, ferner umfassend: Verarbeiten des Hardware-Deskriptors über eine Ausführung von Software auf dem Host, die Verarbeitung des Hardware-Deskriptors umfassend, Extrahieren der Ortsinformationen des Hardware-Deskriptors; Nutzen der Ortsinformationen, um einen Index eines Sicherheitseintrags in der Host-Sicherheitsdatenbank zu de-referenzieren; und Anwenden des SA-Kontexts in diesem Sicherheitseintrag auf das erste Paket.
  4. Das Verfahren gemäß Anspruch 2 oder 3, ferner umfassend: Zwischenspeichern der Sicherheits-Auslagerungseinträge in einer Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle; und Implementieren einer Flusstabelle auf der Netzwerkschnittstelle.
  5. Das Verfahren gemäß einem der Ansprüche 1-4, ferner umfassend: Empfangen, von dem Host, von Informationen, die einen Fluss identifizieren oder dafür zu verwenden sind, einen solchen abzugleichen, und Ortsinformationen, um einen Ort eines entsprechenden Sicherheitseintrags für den Fluss in der Host-Sicherheitsdatenbank zu de-referenzieren.
  6. Das Verfahren gemäß Anspruch 5, ferner umfassend ein Zwischenspeichern eines neuen Sicherheits-Auslagerungseintrags in einer der Flusstabelle oder der Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle, umfassend die Informationen, die den Fluss identifizieren oder dafür zu verwenden sind, einen solchen abzugleichen, und die Ortsinformationen, um einen Ort des entsprechenden Sicherheitseintrags für den Fluss in der Host-Sicherheitsdatenbank zu de-referenzieren.
  7. Das Verfahren gemäß Anspruch 6, wobei der Sicherheits-Auslagerungseintrag ein Flussidentifikations (FlowID) -Feld, ein Aktionsfeld und ein Wertfeld umfasst, in dem ein Wert, umfassend eines aus einem Versatzwert und einer Versatzadresse, von einer Basisadresse, bei der die Host-Sicherheitsdatenbank gespeichert ist, und wobei das Aktionsfeld identifiziert, ob ein Hardware-Deskriptor für ein Paket, das zu einem Fluss gehört, der mit der FlowID übereinstimmt, mit dem Wert in dem Wertfeld markiert werden sollte.
  8. Das Verfahren gemäß Anspruch 6 oder 7, ferner umfassend: Verwenden einer Zwischenspeicherausschlussrichtlinie, um einen existierenden Sicherheits-Auslagerungseintrag zu bestimmen, der aus einer der Flusstabelle oder der Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle auszuschließen ist; Ausschließen des Sicherheits-Auslagerungseintrags, der bestimmt wird; und Ersetzen des Sicherheits-Auslagerungseintrags, der ausgeschlossen wird, mit dem neuen Sicherheits-Auslagerungseintrag.
  9. Das Verfahren gemäß einem der Ansprüche 1-7, ferner umfassend: Empfangen eines zweiten Pakets an einem Eingangsport der Netzwerk-Hardwarevorrichtung; Durchführen einer Flussklassifizierung, um einen Fluss zu identifizieren, zu dem das zweite Paket gehört; Bestimmen, dass es keinen übereinstimmenden Eintrag für den Fluss gibt, der in zumindest einer der Flusstabelle und der Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkvorrichtung identifiziert wird; und Erzeugen eines Hardware-Deskriptors, der zu dem zweiten Paket zugeordnet wird, das Angaben enthält, die anzeigen, dass es keinen übereinstimmenden Eintrag für den Fluss gab, zu dem das zweite Paket gehört.
  10. Das Verfahren gemäß Anspruch 9, wobei die Netzwerk-Hardware-Vorrichtung einen speicherabgebildeten-Eingangs-Ausgangs (MMIO) -Adressraum umfasst, ferner umfassend: Durchführen von Flussklassifizierung auf dem Host, um einen Fluss zu identifizieren, zu dem das zweite Paket gehört, oder ein Extrahieren von Informationen über den Host, um den Fluss zu identifizieren, zu dem das zweite Paket gehört, von dem Hardware-Deskriptor; Identifizieren eines Eintrags in der Host-Sicherheitsdatenbank, entsprechend dem Fluss; und Schreiben, über den Host an einen Speicherort in der MMIO-Adresse, von Informationen, die den Fluss und eines eines Versatzwerts, einer Versatzadresse von der Basisadresse oder einer Host-Speicheradresse für den Eintrag in der Host-Sicherheitsdatenbank identifizieren.
  11. Eine Netzwerkschnittstelle, umfassend: eine Schaltungsanordnung, um zumindest eine einer Flusstabelle und einer Sicherheitsdatenbank-Auslagerungstabelle zu implementieren; und einen Speicher, um eine Mehrzahl von Sicherheits-Auslagerungseinträgen in einer Flusstabelle oder einer Sicherheitsdatenbank-Auslagerungstabelle zu speichern, wobei jeder jeweilige Sicherheits-Auslagerungseintrag Informationen umfasst, um einen jeweiligen Fluss und Ortsinformationen zu identifizieren oder abzugleichen.
  12. Die Hardware-Netzwerkvorrichtung gemäß Anspruch 11, ferner umfassend eine Schaltungsanordnung zum: Empfangen eines ersten Pakets an einem Eingangsport der Netzwerkschnittstelle; Durchführen einer Flussklassifizierung, um einen Fluss zu identifizieren, zu dem das erste Paket gehört; Abgleichen eines Sicherheits-Auslagerungseintrags, der auf der Netzwerkschnittstelle zwischengespeichert ist, die dem Fluss zugeordnet ist; Erzeugen eines Hardware-Deskriptors, der dem ersten Paket zugeordnet ist; Markieren des Hardware-Deskriptors mit den Ortsinformationen in dem Sicherheits-Auslagerungseintrag, der abgeglichen wird.
  13. Die Hardware-Netzwerkvorrichtung gemäß Anspruch 11 oder 12, ferner umfassend eine Schaltungsanordnung zum: Empfangen, von dem Host, von Informationen, die einen Fluss identifizieren oder dafür zu verwenden sind, einen solchen abzugleichen, und Ortsinformationen, um einen Ort eines entsprechenden Sicherheitseintrags für den Fluss in der Host-Sicherheitsdatenbank zu de-referenzieren; und Zwischenspeichern eines neuen Sicherheits-Auslagerungseintrags in einer der Flusstabelle oder der Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle, umfassend die Informationen, die den Fluss identifizieren oder dafür zu verwenden sind, einen solchen abzugleichen, und die Ortsinformationen, um einen Ort des entsprechenden Sicherheitseintrags für den Fluss in der Host-Sicherheitsdatenbank zu de-referenzieren.
  14. Die Hardware-Netzwerkvorrichtung gemäß Anspruch 13, wobei der Sicherheits-Auslagerungseintrag ein Flussidentifikations (FlowID) -Feld, ein Aktionsfeld und ein Wertfeld umfasst, in dem ein Wert, umfassend eines aus einem Versatzwert, einer Versatzadresse von einer Basisadresse, bei der die Host-Sicherheitsdatenbank gespeichert ist, und wobei das Aktionsfeld identifiziert, ob ein Hardware-Deskriptor für ein Paket, das zu einem Fluss gehört, der mit der FlowID übereinstimmt, mit dem Wert in dem Wertfeld markiert werden sollte.
  15. Die Hardware-Netzwerkvorrichtung gemäß Anspruch 13 oder 14, ferner umfassend eine Schaltungsanordnung zum: Verwenden einer Zwischenspeicherausschlussrichtlinie, um einen existierenden Sicherheits-Auslagerungseintrag zu bestimmen, der aus einer der Flusstabelle oder der Sicherheitsdatenbank-Auslagerungstabelle auf der Schnittstelle auszuschließen ist; Ausschließen des Sicherheits-Auslagerungseintrags, der bestimmt wird; und Ersetzen des Sicherheits-Auslagerungseintrags, der ausgeschlossen wird, mit dem neuen Sicherheits-Auslagerungseintrag.
  16. Die Hardware-Netzwerkvorrichtung gemäß einem der Ansprüche 11-15, ferner umfassend eine Schaltungsanordnung zum: Empfangen eines zweiten Pakets an einem Eingangsport der Netzwerkschnittstelle; Durchführen einer Flussklassifizierung, um einen Fluss zu identifizieren, zu dem das zweite Paket gehört; Bestimmen, dass es keinen übereinstimmenden Eintrag für den Fluss gibt, der in zumindest einer der Flusstabelle und der Sicherheitsdatenbank-Auslagerungstabelle identifiziert ist; und Erzeugen eines Hardware-Deskriptors, der zu dem zweiten Paket zugeordnet ist, das Angaben enthält, die anzeigen, dass es keinen übereinstimmenden Eintrag für den Fluss gab, zu dem das zweite Paket gehört.
  17. Die Hardware-Netzwerkvorrichtung gemäß Anspruch 16, wobei die Netzwerkschnittstelle einen speicherabgebildeten-Eingangs-Ausgangs (MMIO) - Adressraum umfasst, ferner umfassend eine Schaltungsanordnung zum: Empfangen, an einem Speicherort in dem MMIO-Adressraum, von Informationen, die von einem Sicherheitseintrag in der Host-Sicherheitsdatenbank hergeleitet sind, die einen Fluss, zu dem das zweite Paket gehört, identifizieren oder dafür zu verwenden sind, diesen abzugleichen, und Ortsinformationen, um einen Ort des Sicherheitseintrags in der Host-Sicherheitsdatenbank zu de-referenzieren.
  18. Die Hardware-Netzwerkvorrichtung gemäß einem der Ansprüche 11-17, ferner umfassend eine Schaltungsanordnung zum: Zwischenspeichern der Sicherheits-Auslagerungseinträge in einer Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle; und Implementieren einer Flusstabelle auf der Netzwerkschnittstelle, wobei die Flusstabelle und die Sicherheitsdatenbank-Auslagerungstabelle unterschiedliche Größen aufweisen.
  19. Die Hardware-Netzwerkvorrichtung gemäß einem der Ansprüche 11-18, ferner umfassend eine Schaltungsanordnung zum: Implementieren einer Flusstabelle; und Zwischenspeichern einer Mehrzahl von Sicherheits-Auslagerungseinträgen in der Flusstabelle.
  20. Eine Computerplattform, umfassend: einen Prozessor, umfassend eine Mehrzahl von Kernen; Host-Speicher, kommunikativ mit dem Prozessor gekoppelt, eine oder mehrere Speicherungsvorrichtungen, in denen Software-Anweisungen gespeichert sind; und eine Netzwerkschnittstelle, die kommunikativ mit dem Prozessor über einen Eingangs-/Ausgangs (I/O) -Link gekoppelt ist, die Netzwerkschnittstelle umfassend eine Schaltungsanordnung und einen oder mehrere Ports, die ausgebildet sind, um es der Netzwerkschnittstelle zu ermöglichen, Pakete von einem oder mehreren Netzwerken zu empfangen, wobei die Computerplattform über eine Ausführung der Software-Anweisungen auf dem Prozessor und über die Schaltungsanordnung in der Netzwerkschnittstelle ausgebildet ist zum Implementieren einer Host-Flusstabelle in dem Host-Speicher, umfassend eine Mehrzahl von Flusstabelleneinträgen; Implementieren einer Host-Sicherheitsdatenbank in dem Host-Speicher, umfassend eine Mehrzahl von Sicherheitseinträgen; Implementieren von zumindest einer einer Flusstabelle und einer Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle; und Zwischenspeichern einer Mehrzahl von Sicherheits-Auslagerungseinträgen in der Flusstabelle oder der Sicherheitsdatenbank-Auslagerungstabelle auf der Netzwerkschnittstelle, jeder jeweilige Sicherheits-Auslagerungseintrag umfassend Informationen, um einen jeweiligen Fluss zu identifizieren oder abzugleichen, und Ortsinformationen, um einen Ort eines Sicherheitseintrags, der dem jeweilige Fluss in der Host-Sicherheitsdatenbank zugeordnet ist, zu de-referenzieren.
  21. Die Computerplattform gemäß Anspruch 20, wobei die Schaltungsanordnung in der Schnittstelle ferner ausgebildet ist zum: Empfangen eines ersten Pakets an einem Eingangsport der Netzwerkschnittstelle; Durchführen einer Flussklassifizierung, um einen Fluss zu identifizieren, zu dem das erste Paket gehört; Abgleichen eines Sicherheits-Auslagerungseintrags, der auf der Netzwerkschnittstelle zwischengespeichert ist, die dem Fluss zugeordnet ist; Erzeugen eines Hardware-Deskriptors, der dem ersten Paket zugeordnet ist; Markieren des Hardware-Deskriptors mit den Ortsinformationen in dem Sicherheits-Auslagerungseintrag, der abgeglichen wird; und Schreiben des Hardware-Deskriptors an einen Ringspeicher in dem Host-Speicher.
  22. Die Computerplattform gemäß Anspruch 21, wobei jeder Eintrag in der Host-Sicherheitsdatenbank einen Security Association (SA) -Kontext umfasst, wobei eine Ausführung der Anweisungen auf dem Host-Prozessor es der Computerplattform ermöglicht: die Ortsinformationen in dem Hardware-Deskriptor zu extrahieren; die Ortsinformationen zu nutzen, um einen Index eines Sicherheitseintrags in der Host-Sicherheitsdatenbank zu de-referenzieren; und den SA-Kontext in diesem Sicherheitseintrag auf das erste Paket anzuwenden.
  23. Die Computerplattform gemäß einem der Ansprüche 20-22, wobei die Schaltungsanordnung in der Schnittstelle ferner ausgebildet ist zum: Empfangen eines zweiten Pakets an einem Eingangsport der Netzwerkschnittstelle; Durchführen einer Flussklassifizierung, um einen Fluss zu identifizieren, zu dem das zweite Paket gehört; Bestimmen, dass es keinen übereinstimmenden Eintrag für den Fluss gibt, der in zumindest einer der Flusstabelle und der Sicherheitsdatenbank-Auslagerungstabelle identifiziert wird; und Erzeugen eines Hardware-Deskriptors, der zu dem zweiten Paket zugeordnet ist, das Angaben enthält, die anzeigen, dass es keinen übereinstimmenden Eintrag für den Fluss gab, zu dem das zweite Paket gehört.
  24. Die Computerplattform gemäß Anspruch 23, wobei die Netzwerkschnittstelle einen speicherabgebildeten-Eingangs-Ausgangs (MMIO) -Adressraum umfasst, und wobei eine Ausführung der Anweisungen auf dem Host-Prozessor es der Computerplattform ermöglicht: eine Flussklassifizierung auf dem Host durchzuführen, um einen Fluss zu identifizieren, zu dem das zweite Paket gehört, oder Informationen von dem Hardware-Deskriptor zu extrahieren, um den Fluss zu identifizieren, zu dem das zweite Paket gehört; einen Sicherheitseintrag in der Host-Sicherheitsdatenbank entsprechend dem Fluss zu lokalisieren; und an einem Speicherort in dem MMIO-Adressraum Informationen, die den Fluss, zu dem das zweite Paket gehört, identifizieren, oder die dafür zu verwenden sind, diesen abzugleichen, und Ortsinformationen, um einen Ort des Sicherheitseintrags in der Host-Sicherheitsdatenbank zu de-referenzieren, zu schreiben.
  25. Die Computerplattform gemäß Anspruch 23 oder 24, wobei die Schaltungsanordnung in der Schnittstelle ferner ausgebildet ist zum: Implementieren einer Flusstabelle; und Zwischenspeichern einer Mehrzahl von Sicherheits-Auslagerungseinträgen in der Flusstabelle.
DE102020122311.0A 2019-10-10 2020-08-26 Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern Pending DE102020122311A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/599,051 2019-10-10
US16/599,051 US11831663B2 (en) 2019-10-10 2019-10-10 Secure networking protocol optimization via NIC hardware offloading

Publications (1)

Publication Number Publication Date
DE102020122311A1 true DE102020122311A1 (de) 2021-04-15

Family

ID=69523597

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020122311.0A Pending DE102020122311A1 (de) 2019-10-10 2020-08-26 Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern

Country Status (2)

Country Link
US (1) US11831663B2 (de)
DE (1) DE102020122311A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113595959B (zh) * 2020-04-30 2023-04-18 海信集团有限公司 网络流量数据的处理方法及服务器
US11740919B2 (en) * 2020-05-18 2023-08-29 Dell Products L.P. System and method for hardware offloading of nested virtual switches
CN114221849B (zh) * 2020-09-18 2024-03-19 芯启源(南京)半导体科技有限公司 一种fpga结合tcam实现智能网卡的方法
CN114374648B (zh) * 2020-10-14 2024-03-19 芯启源(南京)半导体科技有限公司 一种np芯片结合tcam实现智能网卡的方法
US20210144094A1 (en) * 2020-11-09 2021-05-13 Namrata Limaye Extension of openvswitch megaflow offloads to hardware to address hardware pipeline limitations
CN112988762B (zh) * 2021-05-07 2021-09-14 江苏中辰软件科技有限公司 一种适用于失信单位的实时识别及预警方法
CN113595822B (zh) * 2021-07-26 2024-03-22 北京恒光信息技术股份有限公司 一种数据包管理方法、系统和装置
US20230246963A1 (en) * 2022-01-31 2023-08-03 Avago Technologies Inernationl Sales Pte. Limited Systems for and methods of flow table management
CN115150328B (zh) * 2022-09-07 2022-11-15 珠海星云智联科技有限公司 一种流表硬件卸载方法、设备及介质
CN116506355B (zh) * 2023-06-27 2023-09-05 珠海星云智联科技有限公司 卸载流表存储的处理方法及相关装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130219167A1 (en) * 2012-02-21 2013-08-22 International Business Machines Corporation Network node with network-attached stateless security offload device employing in-band processing
US8930690B2 (en) * 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
US10289565B2 (en) * 2017-05-31 2019-05-14 Apple Inc. Cache drop feature to increase memory bandwidth and save power
US11483245B2 (en) * 2018-09-13 2022-10-25 Intel Corporation Technologies for filtering network traffic on ingress

Also Published As

Publication number Publication date
US20200059485A1 (en) 2020-02-20
US11831663B2 (en) 2023-11-28

Similar Documents

Publication Publication Date Title
DE102020122311A1 (de) Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
US9851918B2 (en) Copy-on-write by origin host in virtual machine live migration
DE60215417T2 (de) Netzwerkschaltung
DE112017001027B4 (de) Seitenfehlerbehebung
DE102019104394A1 (de) Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
US20060075206A1 (en) Deterministic finite automata (DFA) instruction
US20060069872A1 (en) Deterministic finite automata (DFA) processing
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE112013002155T5 (de) Befehl zur Art des Zugriffs auf den nächsten Befehl
DE112013000381T5 (de) Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE112006003597T5 (de) Unbeschränkte Transaktionsspeichersysteme
DE112013002040T5 (de) Transaktionsabbruchverarbeitung
DE102012209016A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE112016004476T5 (de) Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher
DE102020129690A1 (de) Semiflexibler paketzusammenführungs-steuerweg
DE102012209011A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE112017000163T5 (de) Priorisierung von Transaktionen
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE102020132140A1 (de) Pipelines für sichere Multithread-Ausführung
DE112021004377T5 (de) Systeme zum aufbau von datenstrukturen mit hoch skalierbaren algorithmen für eine verteiltelpm-implementierung

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0029060000

Ipc: H04L0065000000