DE112014001397T5 - Flussrichterbasierter Niedriglatenznetzwerkbetrieb - Google Patents

Flussrichterbasierter Niedriglatenznetzwerkbetrieb Download PDF

Info

Publication number
DE112014001397T5
DE112014001397T5 DE112014001397.8T DE112014001397T DE112014001397T5 DE 112014001397 T5 DE112014001397 T5 DE 112014001397T5 DE 112014001397 T DE112014001397 T DE 112014001397T DE 112014001397 T5 DE112014001397 T5 DE 112014001397T5
Authority
DE
Germany
Prior art keywords
receive queue
identifier
receive
device driver
network device
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
DE112014001397.8T
Other languages
English (en)
Inventor
Yadong Ll
Linden Cornett
Anvil Vasudevan
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 DE112014001397T5 publication Critical patent/DE112014001397T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • 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

Landscapes

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

Abstract

Im Allgemeinen betrifft diese Offenbarung Niedriglatenznetzwerkbetrieb. Ein System kann eine Prozessorschaltung, die zumindest einen Prozessor umfasst; eine Speicherschaltung, die konfiguriert ist, um eine Anwendung, eine Empfangswarteschlange und einen Netzwerkstapel, der einen Netzwerkvorrichtungstreiber umfasst, zu speichern; eine Netzwerksteuerung, die einen Flussrichter umfasst, wobei die Netzwerksteuerung konfiguriert ist, um die Host-Vorrichtung mit zumindest einem Verbindungspartner zu koppeln, und der Flussrichter konfiguriert ist, um eines oder mehrere ausgewählte empfangene Pakete in der Empfangswarteschlange zu speichern, wobei die Auswahl zumindest teilweise auf einer Paketflusskennung basiert; und einen Netzwerkvorrichtungstreiber umfassen, der konfiguriert ist, die Empfangswarteschlange als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst, zu identifizieren; die Empfangswarteschlange abzurufen; und jedes empfangene Paket, das in der Empfangswarteschlange gespeichert ist, zu verarbeiten.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft Niedriglatenznetzwerkbetrieb und insbesondere flussrichterbasierten Niedriglatenznetzwerkbetrieb.
  • HINTERGRUND
  • Anwendungen des Finanzdienstleistungssektors und neue Datenzentrumskonzepte können niedrige Latenz und Vorhersagbarkeit (d. h. wenig Jitter) in der Datenkommunikation erfordern. Ein herkömmlicher Netzwerkspeicher, z. B. TCP/IP, kann gute Kompatibilität für socketbasierte Anwendungen bereitstellen, Latenz bleibt jedoch ein herausforderndes Thema. Eine Anwendung kann konfiguriert sein, um empfangene Pakete abzurufen, um Latenz zu reduzieren. Auch ohne Abruf durch die Anwendung unterbricht die Vorrichtung und es kann DPC-Scheduling (Delayed Procedure Call; verzögerter Verfahrensaufruf) für jede Unterbrechung auftreten, wenn ein oder mehrere Pakete empfangen werden, da ein Netzwerkvorrichtungstreiber sich typischerweise des Abrufs durch die Anwendung nicht bewusst ist und Unterbrechungen nicht deaktivieren kann. Sowohl Unterbrechungskontextwechsel als auch DPCs führen variierenden Verzögerungen ein, die Latenz erhöhen und/oder Latenzvariation (d. h. Jitter) erhöhen können.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Merkmale und Vorteile des beanspruchten Gegenstands sind aus der folgenden detaillierten Beschreibung von Ausführungsformen, die damit übereinstimmen, ersichtlich, wobei die Beschreibung in Bezug auf die beiliegenden Zeichnungen berücksichtigt werden soll, worin:
  • 1 eine beispielhafte Systemausführungsform veranschaulicht, die mit der vorliegenden Offenbarung übereinstimmt;
  • 2 ein Flussdiagramm ist, das Beispieloperationen eines flussrichterbasierten Netzwerksystems veranschaulicht, das mit der vorliegenden Offenbarung übereinstimmt; und
  • 3 ein Flussdiagramm ist, das Beispieloperationen veranschaulich, die konfiguriert sind, um einen Flussrichter zu initialisieren, der mit einer Ausführungsform der vorliegenden Offenbarung übereinstimmt.
  • Auch wenn die folgende detaillierte Beschreibung verfährt, indem ein Bezug zu den veranschaulichenden Ausführungsformen hergestellt wird, sind Fachleuten auf dem Gebiet viele Alternativen, Modifizierungen und Variationen davon ersichtlich.
  • DETAILLIERTE BESCHREIBUNG
  • Im Allgemeinen betrifft diese Offenbarung flussrichterbasierten Niedriglatenznetzwerkbetrieb. Es werden ein Verfahren und ein System konfiguriert, um Abrufe durch einen Netzwerkvorrichtungstreiber umzusetzen. Eine logische Verbindungssteuerung ist konfiguriert, um eine Abrufanfrage an den Netzwerkvorrichtungstreiber als Antwort auf eine Empfangsanfrage von einer Anwendung bereitzustellen. Der Netzwerkvorrichtungstreiber ist konfiguriert, um eine Empfangswarteschlange zu identifizieren, die zumindest teilweise auf einer Paketflusskennung basiert, die in der Abrufanfrage umfasst ist, und um einen Abruf zu initiieren. Eine Netzwerksteuerung, die einen Flussrichter umfasst, ist konfiguriert, um ein oder mehrere empfangene Pakete auszuwählen, die der Paketflusskennung zugeordnet sind, und um die ausgewählten Pakete in der Empfangswarteschlange zu speichern. Der Flussrichter kann mit der Paketflusskennung und einer Empfangswarteschlangenkennung initialisiert werden. Der Netzwerkvorrichtungstreiber ist konfiguriert, um die Empfangswarteschlange auf empfangene Pakete, die zur Verarbeitung bereit sind, abzufragen und um empfangene Pakete zu verarbeiten. Der Netzwerkvorrichtungstreiber kann konfiguriert sein, um Eigentum der Empfangswarteschlange zu schaffen und/oder Unterbrechungen zu deaktivieren. Der Netzwerkvorrichtungstreiber kann konfiguriert sein, um die logische Verbindungssteuerung zu benachrichtigen, wenn die Paketverarbeitung abgeschlossen ist. Der Netzwerkvorrichtungstreiber kann ferner Eigentum der Empfangswarteschlange freigeben und Unterbrechungen aktivieren, wenn die Paketverarbeitung abgeschlossen ist.
  • Daher kann ein Abruf von empfangenen Paketen, die zur Verarbeitung bereit sind, durch einen Netzwerkvorrichtungstreiber durchgeführt werden, der eine Netzwerksteuerung verwendet, die einen Flussrichter umfasst. Das Zuordnen der Empfangswarteschlange zu der Paketflusskennung ermöglicht es dem Netzwerkvorrichtungstreiber, die geeignete Empfangswarteschlange abzurufen. Der Netzwerkvorrichtungstreiber kann Unterbrechungen deaktivieren, wobei die Wirkungen von Unterbrechungskontextwechsel und/oder DPC-Scheduling (verzögerter Verfahrensaufruf) auf Latenz eliminiert werden. Das Deaktivieren von Unterbrechungen kann ferner Latenzen eliminieren, die Unterbrechungsmilderung zugeordnet sind.
  • 1 veranschaulicht eine beispielhafte Systemausführungsform, die mit der vorliegenden Offenbarung übereinstimmt. Das System 100 umfasst im Allgemeinen eine Host-Vorrichtung 102, ein Netzwerk 104 und eine Vielzahl an Verbindungspartnern 106A, 106B, ..., 106N. Die Host-Vorrichtung 102 kann konfiguriert sein, um Nachrichten und/oder Daten über das Netzwerk 104 an die Verbindungspartner 106A, 106B, ..., 106N zu übertragen und/oder um Nachrichten und/oder Daten von Verbindungspartnern 106A, 106B, ..., 106N über das Netzwerk 104 zu empfangen.
  • Die Host-Vorrichtung 102 umfasst im Allgemeinen eine Prozessorschaltung 110, eine Speicherschaltung 112, einen Brückenchipsatz 114 und eine Netzwerksteuerung 116. Die Prozessorschaltung 110 ist mit der Speicherschaltung 112 und dem Brückenchipsatz 114 gekoppelt. In manchen Ausführungsformen kann der Brückenchipsatz 114 in der Prozessorschaltung 110 umfasst sein. Der Brückenchipsatz 114 ist mit der Speicherschaltung 112 und der Netzwerksteuerung 116 gekoppelt. Die Netzwerksteuerung 116 ist konfiguriert, um die Host-Vorrichtung 102 mit Netzwerkkonnektivität bereitzustellen.
  • Die Prozessorschaltung 110 kann eine Vielzahl an Prozessoren und/oder Prozessorkernen 110a, ..., 110n umfassen. In manchen Ausführungsform, z. B. einer NUMA-Architektur (Non-Uniform Memory Access), kann die Prozessorschaltung 110 die Vielzahl an Prozessoren und/oder Prozessorkernen 110a, ..., 110n umfassen, und die Speicherschaltung 112 kann eine Vielzahl an lokalen Knotenspeichern umfassen. In diesen Ausführungsformen kann eine Teilmenge der Prozessorkerne 110a, ..., 110n einem jeweiligen lokalen Knotenspeicher zugeordnet sein (z. B. daran gekoppelt sein). Jeder lokale Knotenspeicher kann dann ähnliche Elemente wie in der Speicherschaltung 112 umfassen.
  • Die Speicherschaltung 112 ist konfiguriert, um eine oder mehrere Anwendungen und/oder Threads 120a, ..., 120m, einen Netzwerkstapel 125 und ein Betriebssystem OS 122 zu speichern. Das OS 122 kann ein Microsoft® Windows®-basiertes Betriebssystem (z. B. Windows® Server 8, erhältlich von Microsoft® Corporation, Redmond, Washington), ein Linux-basiertes Betriebssystem (z. B. Linux, ESX etc.), ein UNIX-basiertes Betriebssystem (z. B. FreeBSD) und/oder andere Betriebssysteme umfassen, ohne darauf beschränkt zu sein. Das OS 122 kann konfiguriert sein, um zu ermöglichen, Empfangswarteschlangen zum Detektieren von empfangenen Paketen, die zur Verarbeitung bereit sind, abzurufen. Beispielsweise ist Windows® Server 8 konfiguriert, um den Abruf von Empfangswarteschlangen zu ermöglichen. Windows® Server 8 ist ferner konfiguriert, um die Zuweisung („Registrierung”) von Empfangswarteschlangen vor der Kommunikationsaktivität zu ermöglichen. Dieses Verfahren ist konfiguriert, um Latenz während Paketempfangsoperationen zu verringern. Es soll angemerkt werden, dass, auch wenn Windows® Server 8 ein Beispiel eines Betriebssystems ist, das ein System und ein Verfahren verwenden kann, das mit der vorliegenden Offenbarung übereinstimmt, das System und das Verfahren sich nicht auf Windows® Server 8 beschränken.
  • Die eine oder mehreren Anwendungen und/oder Threads 120a, ..., 120m können konfiguriert sein, um Daten und/oder eine oder mehrere Nachrichten über die Netzwerksteuerung 116 und das Netzwerk 104 an einen oder mehrere der Verbindungspartner 106A, 106B, ..., 106N zu schicken und Daten und/oder eine oder mehreren Nachrichten von diesen zu empfangen. Die Daten und/oder eine oder mehreren Nachrichten können in Pakete zum Senden gegeben werden oder von empfangenen Paketen beispielsweise durch den Netzwerkstapel 125 extrahiert werden. Inhalt und Konfiguration des Netzwerkverkehrs können von einem Netzwerk und/oder Kommunikationsprotokoll, z. B. TCP/IP, UDP etc. abhängen. Netzwerkverkehr kann einen oder mehrere Paketflüsse umfassen. Normalerweise umfasst ein Paketfluss ein oder mehrere Felder, die eine Identifizierung zulassen. Beispielsweise ist die Paketflusskennung für ein TCP-Paket typischerweise ein Quintupel, das eine Sequenz der Quell-IP-Adresse, Ziel-IP-Adresse, Quellportnummer, Zielportnummer und einen IP-Protokoll-Wert umfasst (in diesem Fall TCP entsprechend).
  • Die Speicherschaltung 112 umfasst eine oder mehrere Sendewarteschlangen TxQ(s) 134a, ..., 134m und eine oder mehrere Empfangswarteschlangen RxQ(s) 136a, ..., 136m. In manchen Ausführungsformen, z. B. NUMA-Architektur, kann eine Sendewarteschlange, z. B. TxQ(s) 134a logisch mit einer Empfangswarteschlange, z. B. RxQ(s) 136a gepaart sein, um ein Tx/Rx-Warteschlangenpaar (QP) zu bilden. Jede Sendewarteschlange 134a, ..., 134m umfasst einen Sendepuffer 138a, ..., 138m, der konfiguriert ist, um Pakete zum Senden zu speichern, und einen Sendedeskriptor 140a, ..., 140m. Jede Empfangswarteschlange 136a, ..., 136m umfasst einen Empfangspuffer 142a, ..., 142m, der konfiguriert ist, um empfangene Pakete vor der Protokollstapelverarbeitung zu speichern, und einen Empfangsdeskriptor 144a, ..., 144m. Eine Paketflusskennung, die zu übertragenden Paketen zugeordnet ist, kann in einem Tx-Deskriptor, z. B. Tx-Deskriptor 140a, umfasst sein. Die Paketflusskennung kann im Tx-Deskriptor 140a gespeichert sein, wenn die zugeorndeten Pakete in dem jeweiligen Sendepuffer, z. B. Sendepuffer 138a, gespeichert sind. Eine Paketflusskennung, die Empfangspaketen zugeordnet ist, kann in einem Rx-Deskriptor, z. B. Rx-Deskriptor 144a, umfasst sein. Die Paketflusskennung kann in dem Rx-Deskriptor 144a gespeichert sein, wenn die Empfangspakete von Rx-FIFO 164 abgerufen werden und in einem jeweiligen Empfangspuffer, z. B. Empfangspuffer 138a zur Verarbeitung gespeichert werden. Die Rx-Deskriptoren 144a, ..., 144m können ferner ein Feld umfassen, das konfiguriert ist, um anzuzeigen, dass ein Paket zur Verarbeitung durch z. B. den Netzwerkstapel 125 und/oder eine Anwendung 120a, ..., 120m bereit ist. Ein Netzwerkvorrichtungstreiber, der konfiguriert ist, um eine Empfangswarteschlange für empfangene Pakete abzurufen, kann konfiguriert sein, um den zugeordneten Empfangsdeskriptor und das Feld mit den bereiten Paketen wie hierin beschrieben abzurufen.
  • Die Speicherschaltung 112 kann einen oder mehrere Unterbrechungsvektoren 146a, ..., 146m umfassen. Jede Warteschlange (TxQ 134a, ..., 134m und RxQ 136a, ..., 136m) kann einem jeweiligen Unterbrechungsvektor 146a, ..., 146m zugeordnet sein. Wenn kein Abruf durchgeführt wird, sind der eine oder die mehreren Unterbrechungsvektoren 146a, ..., 146m konfiguriert, um eine Position einer Unterbrechungsroutine anzuzeigen, die konfiguriert ist, um vollständige Sendeanfragen und/oder Empfangspakete zum Senden an die Anwendung zu verarbeiten.
  • Die Speicherschaltung 112 ist konfiguriert, um zumindest einen Netzwerkstapel 125 zu speichern, der eine Anwendungsschicht 124, eine Socket-Schnittstelle 126, einen Protokollstapel 128, eine logische Verbindungssteuerung 130 und einen Netzwerkvorrichtungstreiber 132 umfassen kann. Eine Anwendungsschicht, z. B. Anwendungsschicht 124, ist konfiguriert, um eine Schnittstelle zwischen dem Netzwerkstapel 125 und der einen oder den mehreren Anwendungen 120a, ..., 120m bereitzustellen. Eine Socket-Schnittstelle, z. B. die Socket-Schnittstelle 126, entspricht einer Programmierungsschnittstelle, die eine Anwendung verwenden kann, um Daten zu schicken und zu empfangen. Die Socket-Schnittstelle 126 ist konfiguriert, um eine Schnittstelle zwischen der Anwendungsschicht 124 und dem Protokollstapel 128 bereitzustellen. Ein Protokollstapel, z. B. der Protokollstapel 128, kann ein oder mehrere Programme ausführen, um Pakete zu verarbeiten. Ein Beispiel eines Protokollstapels ist ein TCP/IP-Protokollstapel (Transport Control Protocol/Internet Protocol), der ein oder mehrere Programme zum Bearbeiten (z. B. Verarbeiten oder Generieren) von Paketen umfasst, um sie über ein Netzwerk, z. B. Netzwerk 104, zu übertragen und/oder zu empfangen. Ein anderes Beispiel eines Protokollstapels ist ein UDP/IP-Protokollstapel (User Datagram Protocol/Internet Protocol). Ein Protokollstapel kann alternativ auf einem bestimmten Untersystem wie zum Beispiel einem TCP Offload Engine und/oder einer Netzwerksteuerung 116 enthalten sein.
  • Die logische Verbindungssteuerung 130 ist konfiguriert, um eine Schnittstelle zwischen dem Protokollstapel 128 und dem Netzwerkvorrichtungstreiber 132 bereitzustellen. Die logische Verbindungssteuerung 130 ist konfiguriert, um eine Empfangsanfrage von einer Anwendung, z. B. Anwendung 120a, über die Socket-Schnittstelle 126 und den Protokollstapel 128 zu empfangen. Die Empfangsanfrage kann eine Paketflusskennung umfassen, die der Empfangsanfrage zugeordnet ist. Die Paketflusskennung kann konfiguriert sein, um eine Empfangswarteschlange zu identifizieren, die zum Empfangen von Paketen verwendet werden soll, die der Paketflusskennung zugeordnet sind.
  • Die Empfangsanfrage kann ferner einen Indikator umfassen, der dem Niedriglatenznetzwerkbetrieb entspricht. Der Niedriglatenznetzwerkbetriebsindikator ist konfiguriert, um die logische Verbindungssteuerung 130 zu informieren, dass die Empfangswarteschlange wenn möglich auf empfangene Pakete, die zur Verarbeitung bereit sind, abgefragt werden soll. Die logische Verbindungssteuerung 130 ist konfiguriert, um einen entsprechenden Hinweis für den Netzwerkvorrichtungstreiber 132 bereitzustellen, dass die Empfangswarteschlange wenn möglich auf empfangene Pakete abgerufen werden soll. Der Hinweis ist konfiguriert, um dem Netzwerkvorrichtungstreiber zu ermöglichen, wenn möglich den Abruf zu initiieren. Beispielsweise kann der Abruf nicht initiiert werden, wenn eine Unterbrechungsroutine und/oder ein verzögerter Verfahrensaufruf durchgeführt werden, wenn der Hinweis empfangen wird.
  • Die logische Verbindungssteuerung 130 kann konfiguriert sein, um eine Filterkennung für die Netzwerksteuerung 116 wie hierin beschrieben bereitzustellen. Die Filterkennung kann der Paketflusskennung entsprechen. Bei einem TCP/IP-Socket kann ein Filter beispielsweise einer Quell-IP-Adresse, einer Ziel-IP-Adresse, einer Quellportnummer und einer Zielportnummer entsprechen und einen IP-Protokollwert umfassen. Die Netzwerksteuerung 116 kann dann die Filterkennung verwenden, wenn Pakete zur Speicherung in der Empfangswarteschlange, die der Paketflusskennung zugeordnet ist, ausgewählt werden.
  • Der Netzwerkvorrichtungstreiber 132 kann eine Abruf-API (Anwendungsprogrammierungsschnittstelle) 133 umfassen. Die Abruf-API 133 ist konfiguriert, um eine Schnittstelle für eine Anwendung, z. B. Anwendung 120a, bereitzustellen, um einen oder mehrere Abrufparameter für den Netzwerkvorrichtungstreiber 132 und damit für die Netzwerksteuerung 116 (und Flussrichter 170) bereitzustellen. Der eine oder die mehreren Abrufparameter können eine Kennung, die der Paketflusskennung entspricht (z. B. eine Filterkennung, eine Empfangswarteschlangenkennung), eine Dauer eines Abrufintervalls (z. B. 50 μsek), eine maximale Zahl (N) an abzufragenden Paketen, einen Hinweis, um eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch die logische Verbindungssteuerung 130 aktiviert wird, und/oder eine Anfrage, um eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfassen, ohne darauf beschränkt zu sein. Einer oder mehrere der Abrufparameter können für den Netzwerkvorrichtungstreiber 132 bereitgestellt sein. Die bereitgestellten Abrufparameter können von Eigenschaften der Anwendung 120a und/oder dem Paketfluss selbst abhängen.
  • Der Netzwerkvorrichtungstreiber 132 ist konfiguriert, um eine Flussrichterkapazität der Netzwerksteuerung 116 zu bestimmen. Beispielsweise kann der Netzwerkvorrichtungstreiber 132 konfiguriert sein, um eine Anzahl an Warteschlangen und/oder eine Anzahl an Filtern, die durch die Netzwerksteuerung 116 und/oder den Flussrichter 170 unterstützt werden, zu bestimmen. Der Netzwerkvorrichtungstreiber 132 kann dann konfiguriert sein, um die Kapazitäten der Netzwerksteuerung 116 der logischen Verbindungssteuerung 130 mitzuteilen.
  • Wenn ein Abruf initiiert werden kann, ist der Netzwerkvorrichtungstreiber 132 konfiguriert, um eine Empfangswarteschlange oder ein Tx/Rx-Warteschlangenpaar, das konfiguriert ist, um Pakete zu empfangen, die der Paketflusskennung zugeordnet sind, zuzuweisen. Beispielsweise kann ein Tx/Rx-Warteschlangenpaar zugewiesen werden, wenn für empfangene Pakete gewünscht ist, dass sie auf einem Kern verarbeitet werden, der Sendepaketen zugeordnet ist, z. B. einer NUMA-Architektur. Der Netzwerkvorrichtungstreiber 132 ist ferner konfiguriert, um den Flussrichter 170 zu programmieren, empfangene Pakete, die der Paketflusskennung zugeordnet sind, zur Speicherung in der zugewiesenen Empfangswarteschlange auszuwählen, wobei es dem Netzwerkvorrichtungstreiber 132 ermöglicht wird, die zugewiesene Empfangswarteschlange abzurufen. Der Netzwerkvorrichtungstreiber 132 kann konfiguriert sein, um die logische Verbindungssteuerung 130 zu benachrichtigen, dass der Flussrichter 170 programmiert ist.
  • Ein Flag kann von einer Anwendung verwendet werden, die konfiguriert ist, um anderen Anwendungen anzuzeigen, ob eine Warteschlange (z. B. RxQ 136a) von der Anwendung verarbeitet wird. Beispielsweise kann ein Netzwerkvorrichtungstreiber, z. B. der Netzwerkvorrichtungstreiber 132, konfiguriert sein, um ein Warteschlangen-Flag zu setzen, wenn ein Abruf in einer ausgewählten Empfangswarteschlange initiiert wird. Dieses gesetzte Warteschlangen-Flag kann anderen Anwendungen dann anzeigen, dass die ausgewählte Empfangswarteschlange in Verwendung ist. Die anderen Anwendungen sind typischerweise konfiguriert, um eine Verarbeitung der gleichen Warteschlange zu vermeiden, wenn dieses Flag gesetzt ist. Der Netzwerkvorrichtungstreiber 132 kann dann konfiguriert sein, um das Warteschlangen-Flag zu löschen, wenn die Verarbeitung abgeschlossen ist. In manchen Ausführungsformen kann das Warteschlangen-Flag ein Atomflag sein. Zusätzlich oder alternativ dazu kann ein Spinlock in die ausgewählte Warteschlange implementiert werden. Das Spinlock und die Warteschlangenflags sind konfiguriert, um die Synchronisierung der Warteschlangenverwendung zu erleichtern und um eine Wettlaufsituation zu vermeiden.
  • Die logische Verbindungssteuerung 130 kann konfiguriert sein, um einen Hinweis zu empfangen, dass eine Empfangspaketoperation abgeschlossen wurde, und um diesen Abschluss dem Netzwerkvorrichtungstreiber 132 mitzuteilen. Der Netzwerkvorrichtungstreiber 132 kann dann die zugeordnete Filterkennung von der Netzwerksteuerung 116 entfernen. Die Entfernung der zugeordneten Filterkennung ist konfiguriert, um Kommunikation zwischen der Host-Vorrichtung und einem Verbindungspartner zu beenden. Der Netzwerkvorrichtungstreiber 132 kann dann konfiguriert werden, um die Empfangswarteschlange freizugeben.
  • Die Netzwerksteuerung 116 kann eine Routingschaltung 160, eine oder mehrere Sendepuffer Tx FIFO 162 und einen oder mehrere Empfangspuffer Rx FIFO 164 umfassen. Der eine oder die mehreren Sendepuffer Tx FIFO 162 sind konfiguriert, um Pakete vor dem Senden zu speichern, und der eine oder die mehreren Empfangspuffer Rx FIFO 164 sind konfiguriert, um empfangene Pakete zu speichern. In manchen Ausführungsformen kann die Netzwerksteuerung 116 konfiguriert sein, um den einen oder die mehreren Unterbrechungsvektoren 166 zu speichern. Während Unterbrechungen aktiviert werden, ist die Netzwerksteuerung 116 konfiguriert, eine Unterbrechung für die Prozessorschaltung 110 bereitzustellen, wenn ein Paket empfangen wird, oder als Antwort auf das abgeschlossene Senden eines Pakets. Die Unterbrechung kann einem oder mehreren Unterbrechungsvektoren 166 und/oder einem oder mehreren Unterbrechungsvektoren 146 zugeordnet sein. Der bestimmte verwendete Unterbrechungsvektor kann mit der Paketflusskennung in Verbindung stehen. Wenn ein Abruf stattfindet, wenn eine Unterbrechung auftritt, wird eine Unterbrechungsroutine, auf die ein Unterbrechungsvektor gerichtet ist, konfiguriert, um zurückzukehren, ohne ein (Delayed Procedure Call) festzulegen. So können ein Abruf und Host-Vorrichtungsunterbrechungsverarbeitung synchronisiert werden.
  • Die Routingschaltung 160 kann einen Flussrichter 170 und Flussrichterdaten 172 umfassen. Die Routingschaltung 160 ist konfiguriert, um eine Filterkennung und/oder eine Empfangswarteschlangenkennung in den Flussrichterdaten 172 zu speichern. Beispielsweise kann die Filterkennung einer Paketflusskennung entsprechen. Die Filterkennung (d. h. die Paketflusskennung) und die Empfangswarteschlangenkennung können in den Flussrichterdaten 172 durch den Netzwerkvorrichtungstreiber 132 gespeichert werden. Die Flussrichterdaten 172 sind konfiguriert, um einen Paketfluss mit eine Empfangswarteschlange, die in der Speicherschaltung 112 gespeichert ist, zuzuordnen. Die Flussrichterdaten 172 sind konfiguriert, um das Routen von Paketen, die einer Paketflusskennung zugeordnet sind, zur Empfangswarteschlange, die dem Paketfluss zugeordnet ist, zu erleichtern, wobei es dem Netzwerkvorrichtungstreiber ermöglicht wird, die geeignete Empfangswarteschlange abzurufen.
  • Der Flussrichter 170 ist konfiguriert, um empfangene Pakete zu verarbeiten, um einen Paketfluss zu identifizieren und um eine Empfangswarteschlange zu identifizieren, die dem identifizierten Paketfluss zugeordnet ist. Wenn eine Anwendung/ein Thread beispielsweise Daten/eine oder mehrere Nachrichten zu übertragen hat und Pakete, die den zu übertragenden Daten/der einen oder den mehreren Nachrichten entsprechen, in einem Tx/Rx-Warteschlangenpaar gespeichert sind, kann der Netzwerkvorrichtungstreiber 132 konfiguriert sein, um den Flussrichter 170 zu programmieren, empfangenen Netzwerkverkehr für den gleichen Paketfluss mit dem gleichen Tx/Rx-Warteschlangenpaar zu routen.
  • So kann eine Host-Vorrichtung, die einen Netzwerkstapel und eine Netzwerksteuerung, die einen Flussrichter umfasst, umfasst, konfiguriert sein, um einen Abruf durch einen Netzwerkvorrichtungstreiber für empfangene Pakete, die bereit zur Verarbeitung sind, zu implementieren. Der Flussrichter kann mit einer Paketflusskennung und einer Empfangswarteschlangenkennung initialisiert werden, wobei der Abruf aktiviert wird, da nur Pakete, die der Paketflusskennung zugeordnet sind, in der Empfangswarteschlange durch die Netzwerksteuerung platziert werden können. Der Flussrichter ist dann konfiguriert, um der identifizierten Empfangswarteschlange empfangene Pakete, die der Paketflusskennung zugeordnet sind, bereitzustellen. In manchen Ausführungsformen ist der Netzwerkvorrichtungstreiber konfiguriert, um Unterbrechungen zu deaktivieren. Der Netzwerkvorrichtungstreiber kann dann die Empfangswarteschlange auf empfangene Pakete, die zur Verarbeitung bereit sind, abrufen. So kann Latenzvariation vermieden und Latenz verringert werden.
  • 2 ist ein Flussdiagramm 200, das Beispieloperationen eines flussrichterbasierten Systems veranschaulicht, das mit der vorliegenden Offenbarung übereinstimmt. Die Operationen können zum Beispiel durch einen Netzwerkvorrichtungstreiber und/oder eine logische Verbindungssteuerung durchgeführt werden. Insbesondere stellt das Flussdiagramm 200 beispielhafte Operationen dar, die konfiguriert sind, um eine Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Empfangsanfrage von einer Anwendung abzurufen. Die Operationen des Flussdiagramms 200 können bei Operation 202 beginnen, die als Antwort darauf, dass eine Anwendung einen Abruf-API in einem Netzwerkvorrichtungstreiber aufruft, initiiert wird.
  • Die Operation 204 kann das Initialisieren eines Flussrichters umfassen. Die Operation 206 kann das Empfangen einer Abrufanfrage umfassen. Beispielsweise kann die Abrufanfrage von einer logischen Verbindungssteuerung als Antwort auf den Empfang einer Empfangsanfrage von der Anwendung empfangen werden. Ob eine Unterbrechungsroutine (ISR) oder ein verzögerter Verfahrensaufruf (DPC) ablaufen, kann bei Operation 208 bestimmt werden. Wenn die ISR oder der DPC ablaufen, kann der Programmfluss bei Operation 210 zurückkehren. So kann ein Abruf nicht initiiert werden, wenn ISR und/oder DPC ablaufen, wobei Synchronisierung zwischen dem Abruf für die Verarbeitung empfangener Pakete und unterbrechungsgesteuerter Verarbeitung empfangener Pakete bereitgestellt wird. Wenn ISR und DPC nicht ablaufen, kann eine Empfangswarteschlange („RxQ”) zum Abrufen bei Operation 212 identifiziert werden. Beispielsweise kann die Empfangswarteschlange basierend auf Information, die mit der Abrufanfrage durch die logische Verbindungssteuerung bereitgestellt wird, identifiziert werden. In manchen Ausführungsformen kann bei Operation 214 Eigentum der identifizierten Empfangswarteschlange geschaffen werden. Beispielsweise kann ein Flag gesetzt werden, das konfiguriert ist, um anderen Anwendungen anzuzeigen, dass die Empfangswarteschlange gerade verwendet wird. In einem anderen Beispiel kann ein Spinlock eingerichtet werden.
  • In manchen Ausführungsformen können Unterbrechungen bei Operation 216 deaktiviert werden. Das Deaktivieren von Unterbrechungen ist konfiguriert, um Unterbrechungsdienste und DPCs zu verhindern, wobei Latenzvariation aufgrund von ISR- und DPC-Verarbeitung und/oder Unterbrechungsmilderung verringert (oder eliminiert) wird. Operation 218 umfasst das Abrufen der Empfangswarteschlange. Beispielsweise kann ein Empfangsdeskriptorfeld, das konfiguriert ist, empfangene Pakete, die zur Verarbeitung bereit sind, anzuzeigen, abgerufen werden. Jedes empfangene Paket kann bei Operation 220 verarbeitet werden. Ob die Paketverarbeitung abgeschlossen ist, kann bei Operation 222 bestimmt werden. Beispielsweise kann eine Anwendung konfiguriert sein, über z. B. die logische Verbindungssteuerung 130 mitzuteilen, wenn die Paketverarbeitung abgeschlossen ist. Wenn die Paketverarbeitung nicht abgeschlossen ist, kann der Programmfluss zu Operation 218, zum Abrufen der Empfangswarteschlange, zurückkehren. Wenn die Paketverarbeitung abgeschlossen ist, kann das Eigentum der Empfangswarteschlange freigegeben werden und Unterbrechungen können bei Operation 224 aktiviert werden. Der Programmfluss kann bei Operation 226 zurückkehren.
  • So kann ein Netzwerkvorrichtungstreiber konfiguriert sein, um eine Empfangswarteschlange auf empfangene Pakete abzurufen, die einer Paketflusskennung zugeordnet sind und zur Verarbeitung bereit sind. Ein Flussrichter, der in einer Netzwerksteuerung umfasst ist, kann mit einem Filter, der der Paketflusskennung entspricht, und mit einer Empfangswarteschlangenkennung initialisiert werden. Die Netzwerksteuerung kann dann konfiguriert sein, um empfangene Pakete, die der Paketflusskennung zugeordnet sind, in der Empfangswarteschlange entsprechend der Empfangswarteschlangenkennung zu platzieren. Der Netzwerkvorrichtungstreiber kann dann die Empfangswarteschlange abrufen, z. B. ein Empfangswarteschlangendeskriptorfeld, das konfiguriert ist, um empfangene Pakete, die bereit zur Verarbeitung sind, anzuzeigen. In manchen Ausführungsformen können Unterbrechungen deaktiviert werden, während Abruf auftritt, wobei jegliche Latenzvariation in der Verarbeitung empfangener Pakete verringert wird. Ein Abruf von empfangenen Paketen ist konfiguriert, um im Allgemeinen eine relativ niedrige Latenz der Verarbeitung empfangener Pakete bereitzustellen.
  • 3 ist ein Flussdiagramm 300, das Beispieloperationen veranschaulicht, die konfiguriert sind, um einen Flussrichter zu initialisieren, der mit einer Ausführungsform der vorliegenden Offenbarung übereinstimmt. Die Operationen müssen zum Beispiel durch einen Netzwerkvorrichtungstreiber und/oder eine logische Verbindungssteuerung durchgeführt werden. Insbesondere stellt das Flussdiagramm 300 beispielhafte Operationen dar, die konfiguriert sind, um einen Flussrichter zu initialisieren, Pakete, die einer Paketflusskennung zugeordnet sind, mit einer bestimmten Empfangswarteschlange (RxQ) oder einem Tx/Rx-Warteschlangenpaar (Tx/Rx QP) zu routen. Die Operationen des Flussdiagramms 300 entsprechen Operation 210 aus 2. Es wird angenommen, dass die Flussrichterkapazität und/oder eine Zahl an Warteschlangen und eine Zahl an Filtern, die durch die Netzwerksteuerung und/oder Flussrichter unterstützt werden, vom Netzwerkvorrichtungstreiber vor den Operationen von Flussdiagramm 200 und Flussdiagramm 300 gemeldet wurden. Diese Meldung kann während der Initialisierung der Host-Vorrichtung 102 auftreten.
  • Der Programmfluss kann mit dem Zuweisen einer Filterkennung bei Operation 302 beginnen. Die Filterkennung kann beispielsweise durch eine logische Verbindungssteuerung zugewiesen werden. Die logische Verbindungssteuerung kann ferner konfiguriert sein, um zu bestimmen, ob eine getrennte Warteschlange geeignet sein kann. Eine RxQ (oder ein Tx/Rx QP) kann bei Operation 304 zugewiesen werden. Operation 306 kann das Bereitstellen von Flussrichterdaten für einen Flussrichter bei Operation 306 umfassen. Flussrichterdaten können eine Paketflusskennung (z. B. eine Filterkennung) und/oder eine RxQ-Kennung (oder eine Tx/RxQP-Kennung) umfassen. Operation 308 kann das Benachrichtigen der logischen Verbindungssteuerung umfassen, dass der Flussrichter programmiert ist. Der Programmfluss kann dann bei Operation 310 zurückkehren.
  • So können eine Filterkennung und/oder eine RxQ-Kennung (oder eine Tx/RxQP-Kennung) zugewiesen werden, und ein Flussrichter kann mit einer Paketflusskennung und einer RxQ-Kennung (oder einer Tx/RxQP-Kennung) initialisiert werden. Der Flussrichter kann dann konfiguriert werden, um empfangene Pakete, die der Paketflusskennung zugeordnet sind, an die identifizierte RxQ (oder Tx/RxQP) zu richten.
  • Auch wenn 2 und 3 verschiedene Operationen gemäß einer Ausführungsform veranschaulichen, soll verstanden werden, dass nicht alle der in 2 und 3 dargestellten Operationen für andere Ausführungsformen notwendig sind. In der Tat wird hierin vollständig in Erwägung gezogen, dass in anderen Ausführungsformen der vorliegenden Offenbarung die in 2 und 3 dargestellten Operationen und/oder andere hierin beschriebene Operationen auf eine Weise kombiniert werden können, die durch die Zeichnungen nicht spezifisch gezeigt ist, aber dennoch vollständig mit der vorliegenden Offenbarung übereinstimmt. Ansprüche, die sich an Merkmale und/oder Operationen richten, die in einer Zeichnung nicht genau gezeigt sind, werden daher innerhalb des Schutzumfangs und Inhalts der vorliegenden Offenbarung angenommen.
  • Während das Vorhergehende als beispielhafte Systemarchitekturen und Methodologien dargestellt ist, sind Modifikationen der vorliegenden Offenbarung möglich. Beispielsweise kann ein Betriebssystem 122 in einer Host-Speicherschaltung Systemressourcen und Steueraufgaben, die zum Beispiel auf der Host-Vorrichtung 102 laufen, verwalten. Beispielsweise kann das OS 122 unter Verwendung von Microsoft Windows, HP-UX, Linux, BSD, ESX oder UNIX implementiert werden, auch wenn andere Betriebssysteme verwendet werden können. In einer Ausführungsform kann das in 1 gezeigte OS 122 durch einen Virtual Machine Manager ersetzt werden, der eine Abstraktionsschicht für zugrundeliegenden Hardware für verschiedene Betriebssysteme, die auf einer oder mehreren Verarbeitungseinheiten laufen, bereitstellt.
  • Linux kann ISO/IEC 23360-1:2006 Linux Standard Base (LSB) Kernspezifikation 3.1 – Teil 1: Generische Spezifikation und andere Teile dieses Standards, veröffentlich durch die Internationale Organisation für Normung (ISO) und durch die Internationale Elektrotechnische Kommission (IEC) und/oder späteren Versionen dieses Standards entsprechen oder damit übereinstimmen. BSD, ein Open-Source-Betriebssystem, kann Release 9.0 (Januar 2012) von FreeBSD, erhalten durch das FreeBSD-Projekt, unterstützt durch die FreeBSD-Stiftung, und/oder späteren Veröffentlichungen entsprechen oder damit übereinstimmen. ESX kann VMware ESX und/oder VMware ESXi, Veröffentlichung 5.1 (September 2012), erhältlich von VMware, Inc., Palo Alto, Kalifornien und/oder späteren Veröffentlichungen entsprechen oder damit übereinstimmen.
  • Die Host-Vorrichtung 102 und/oder einer oder mehrere der Verbindungspartner 106A, 106B, ..., 106N können ferner ein Betriebssystem (OS, nicht gezeigt) umfassen, um Systemressourcen und Steueraufgaben zu verwalten, die z. B. auf Knoten 102 laufen. Beispielsweise kann das OS unter Verwendung von Microsoft Windows, HP-UX, Linux oder UNIX implementiert werden, auch wenn andere Betriebssysteme verwendet werden können. In manchen Ausführungsformen kann das OS durch einen Virtual Machine Monitor (oder Hypervisor) ersetzt werden, der eine Abstraktionsschicht für zugrundeliegende Hardware für verschiedene Betriebssysteme (virtuelle Maschinen), die auf einer oder mehreren Verarbeitungseinheiten laufen, bereitstellt. Das Betriebssystem und/oder die virtuelle Maschine können einen oder mehrere Protokollstapel implementieren. Ein Protokollstapel kann ein oder mehrere Programme ausführen, um Pakete zu verarbeiten. Ein Beispiel eines Protokollstapels ist ein TCP/IP-Protokollstapel (Transport Control Protocol/Internet Protocol), der ein oder mehrere Programme zum Bearbeiten (z. B. Verarbeiten oder Generieren) von Paketen umfasst, um sie über ein Netzwerk zu übertragen und/oder zu empfangen. Ein Protokollstapel kann alternativ dazu auf einem bestimmten Untersystem wie etwa zum Beispiel einem TCP Offload Engine und/oder einer Netzwerksteuerung umfasst sein. Die TCP-Offload-Engine-Schaltung kann konfiguriert sein, um zum Beispiel Pakettransport, Paketsegmentierung, Paketwiedereinbau, Fehlerprüfung, Sendebestätigungen, Sendewiederholungsversuche etc. ohne den Bedarf an Host-CPU- und/oder Softwarebeteiligung bereitzustellen.
  • Es sind andere Modifizierungen möglich. Beispielsweise kann die Speicherschaltung eine oder mehrere der folgenden Speicherarten umfassen: Halbleiter-Firmware-Speicher, programmierbarer Speicher, nicht-flüchtiger Speicher, Nur-Lese-Speicher, elektrisch programmierbarer Speicher, Random Access Memory, Flash-Speicher, Magnetplattenspeicher, und/oder optischer Plattenspeicher. Enweder zusätzlich oder alternativ dazu kann die Speicherschaltung andere und/oder später entwickelte Arten von computerlesbaren Speichern umfassen. Die Host-Vorrichtung 102 und/oder einer oder mehrere der Verbindungspartner 106A, 106B, ..., 106N können ferner eine Speicherdirektzugriffsmaschine (DMA) umfassen, die konfiguriert ist, um Speicherlese- und/oder -schreibanfragen ohne Bedarf an direkter Verfahrensbeteiligung an solchen Durchführungen bereitzustellen.
  • Das Netzwerk 104 kann ein paketvermitteltes Netzwerk umfassen. Die Netzwerksteuerung 116 kann in der Lage sein, mit dem oder den Verbindungspartnern 106A, ..., 106N unter Verwendung eines ausgewählten paketvermittelten Netzwerkkommunikationsprotokolls zu kommunizieren. Ein beispielhaftes Kommunikationsprotokoll kann ein Ethernet-Kommunikationsprotokoll umfassen, das in der Lage sein kann, Kommunikation unter Verwendung eines Transmission Control Protocol/Internet Protocol (TCP/IP) zu ermöglichen. Das Ethernet-Protokoll kann dem Ethernet-Standard, der durch das Institute of Electrical and Electronics Engineers (IEEE) mit dem Titel „IEEE 802.3 Standard” im März 2002 veröffentlicht wurde, und/oder späteren Versionen dieses Standards entsprechen oder damit übereinstimmen. Alternativ oder zusätzlich dazu kann die Netzwerksteuerung 116 in der Lage sein, mit dem oder den Verbindungspartnern 106A, ..., 106N unter Verwendung eines X.25-Kommunikationsprotokolls zu kommunizieren. Das X.25-Kommunikationsprotokoll kann einem Standard, der durch den International Telecommunikation Union-Telecommunication Standardization Sector (ITU-T) bekanntgegeben wurde, entsprechen oder damit übereinstimmen. Alternativ oder zusätzlich dazu kann die Netzwerksteuerung 116 in der Lage sein, mit dem oder den Verbindungspartnern 106A, ..., 106N unter Verwendung eines Frame-Relay-Kommunikationsprotokolls zu kommunizieren. Das Frame-Relay-Kommunikationsprotokoll kann einem Standard, der durch den Internationalen Beratenden Ausschuss für den Telegrafen- und Telefondienst (CCITT) und/oder das American National Standards Institute (ANSI) bekanntgegeben wurde, entsprechen oder damit übereinstimmen. Alternativ oder zusätzlich dazu kann die Netzwerksteuerung 116 in der Lage sein, mit dem oder den Verbindungspartnern 106A, ..., 106N unter Verwendung eines Asynchronous-Transfer-Mode(ATM)-Kommunikationsprotokolls zu kommunizieren. Das ATM-Kommunikationsprotokoll kann einem ATM-Standard, der vom ATM-Forum mit dem Titel „ATM-MPLS Network Interworking 1.0” im August 2001 veröffentlicht wurde, und/oder späteren Versionen dieses Standards entsprechen oder damit übereinstimmen. Natürlich werden hierin unterschiedliche und/oder später entwickelte verbindungsausgerichtete Netzwerkkommunikationsprotokolle gleichermaßen in Erwägung gezogen.
  • Wie in jeder beliebigen Ausführungsform hierin verwendet kann der Begriff „Modul” sich auf eine App, Software, Firmware und/oder Schaltung beziehen, die konfiguriert ist, um eine beliebige der oben genannten Operationen durchzuführen. Software kann als ein Softwarepaket, als Code, Befehle, Befehlsreihen und/oder Daten, die auf nicht-transitorischem, computerlesbarem Speichermedium aufzeichnet sind, ausgeführt sein. Firmware kann als Code, Befehle oder Befehlsreihen und/oder Daten, die fest in Speichervorrichtungen programmiert sind (z. B. nicht-flüchtig), ausgeführt sein.
  • „Schaltung” wie in jeder beliebigen Ausführungsform hierin verwendet kann zum Beispiel einzeln oder in einer beliebigen Kombination verdrahtete Schaltungen, programmierbare Schaltungen wie etwa Computerprozessoren, die einen oder mehrere einzelne Befehlsverarbeitungskerne umfassen, Zustandsautomatenschaltungen und/oder Firmware, die Befehle speichert, die durch programmierbare Schaltungen ausgeführt werden, umfassen. Die Module können kollektiv oder einzeln als Schaltung ausgeführt werden, die einen Teil eines größeren Systems bilden, zum Beispiel ein integrierter Schaltkreis (IC), System-on-Chip (SoC), Desktopcomputer, Laptopcomputer, Tablet-Computer, Server, Smartphones etc.
  • Jede beliebige hierin beschriebene Operation kann in ein System implementiert werden, das ein oder mehrere Speichermedien umfasst, auf denen einzeln oder in Kombination Befehle gespeichert sind, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, die Verfahren durchführen. Der Prozessor kann hier zum Beispiel einen Server-CPU und/oder eine andere programmierbare Schaltung umfassen. Es ist auch vorgesehen, dass hierin beschriebene Operationen auf eine Vielzahl an physischen Vorrichtungen verteilt werden können, wie etwa Verarbeitungsstrukturen an mehr als eine unterschiedliche physische Stelle. Das Speichermedium kann eine beliebige Art an greifbarem Medium umfassen, zum Beispiel eine beliebige Art von Platte, einschließlich Harddisk, Floppy-Disk, optische Platte, Compact Disc Read-Only Memory (CD-ROMs), Compact Disc Rewritables (CD-RWs) und magnetisch-optische Platten, Halbleitervorrichtungen wie etwa Nur-Lese-Speicher (ROMs), Random Access Memorys (RAMs) wie etwa dynamische und statische RAMs, löschbare programmiere Nur-Lese-Speicher (EPROMs), elektrisch löschbare programmiere Nur-Lese-Speicher (EEPROMs), Flash-Speicher, Solid State Disks (SSDs), magnetische oder optische Karten oder eine beliebige art von Medien, die geeidnet sind, elektronische Befehle zu speichern. Andere Ausführungsformen können als Softwaremodule, die durch eine programmierbare Steuervorrichtung ausgeführt werden, implementiert werden. Das Speichermedium kann nicht-transitorisch sein.
  • Ein Verfahren und System sind konfiguriert, um einen Abruf durch einen Netzwerkvorrichtungstreiber zu implementieren. Eine logische Verbindungssteuerung ist konfiguriert, um eine Abrufanfrage an den Netzwerkvorrichtungstreiber als Antwort auf eine Empfangsanfrage von einer Anwendung bereitzustellen. Der Netzwerkvorrichtungstreiber ist konfiguriert, um eine Empfangswarteschlange zu identifizieren, die zumindest teilweise auf einer Paketflusskennung basiert, die in der Abrufanfrage enthalten ist, und um Abrufen zu initiieren. Eine Netzwerksteuerung, die einen Flussrichter umfasst, ist konfiguriert, um ein oder mehrere empfangene Pakete, die der Paketflusskennung zugeordnet sind, auszuwählen und die ausgewählten Pakete in der Empfangswarteschlange zu speichern. Der Flussrichter kann mit der Paketflusskennung und der Empfangswarteschlangenkennung initialisiert werden. Der Netzwerkvorrichtungstreiber ist konfiguriert, um die Empfangswarteschlange auf empfangene Pakete abzurufen und um empfangene Pakete zu verarbeiten. Der Netzwerkvorrichtungstreiber kann konfiguriert sein, um Eigentum der Empfangswarteschlange zu schaffen und/oder Unterbrechungen zu deaktivieren. Der Netzwerkvorrichtungstreiber kann konfiguriert sein, um die logische Verbindungssteuerung zu benachrichtigen, wenn die Paketverarbeitung abgeschlossen ist. Der Netzwerkvorrichtungstreiber kann ferner das Eigentum der Empfangswarteschlange freigeben und Unterbrechungen aktivieren, wenn die Paketverarbeitung abgeschlossen ist. Daher kann ein Abruf zur Paketverarbeitung durch einen Netzwerkvorrichtungstreiber unter Verwendung einer Netzwerksteuerung, die einen Flussrichter umfasst, durchgeführt werden. Das Zuweisen der Empfangswarteschlange mit der Paketflusskennung ermöglicht dem Netzwerkvorrichtungstreiber, die geeignete Empfangswarteschlange abzurufen. Der Netzwerkvorrichtungstreiber kann Unterbrechungen deaktivieren, wobei Wirkungen von Unterbrechungskontextwechsel und/oder DPC-Scheduling (verzögerter Verfahrensaufruf) auf Latenz eliminiert werden. Das Deaktivieren von Unterbrechungen kann ferner Latenzen, die Unterbrechungsmilderung zugeordnet sind, eliminieren.
  • In einem Aspekt ist eine Host-Vorrichtung bereitgestellt. Die Host-Vorrichtung umfasst eine Prozessorschaltung, die zumindest einen Prozessor umfasst; eine Speicherschaltung, die konfiguriert ist, um eine Anwendung, eine Empfangswarteschlange und einen Netzwerkstapel, der einen Netzwerkvorrichtungstreiber umfasst, zu speichern; eine Netzwerksteuerung, die einen Flussrichter umfasst, wobei die Netzwerksteuerung konfiguriert ist, um die Host-Vorrichtung mit zumindest einem Verbindungspartner zu koppeln, und der Flussrichter konfiguriert ist, um ein oder mehrere ausgewählte empfangene Pakete in der Empfangswarteschlange zu speichern, wobei die Auswahl zumindest teilweise auf einer Paketflusskennung basiert; und einen Netzwerkvorrichtungstreiber, der konfiguriert ist, die Empfangswarteschlange als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst, zu identifizieren; die Empfangswarteschlange abzurufen; und jedes empfangene Paket, das in der Empfangswarteschlange gespeichert ist, zu verarbeiten.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner konfiguriert, um den Flussrichter mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht, zu initialisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner für zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist, konfiguriert.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Abrufanfrage umfasst zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkstapel umfasst ferner eine logische Verbindungssteuerung, die konfiguriert ist, um die Abrufanfrage als Antwort auf eine Empfangsanfrage von der Anwendung bereitzustellen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Paketflusskennung entspricht einer Filterkennung, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Empfangswarteschlange ist in einem Sende-/Empfangswarteschlangenpaar umfasst, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem anderen Aspekt ist ein Verfahren bereitgestellt. Das Verfahren umfasst das Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem anderen Aspekt ist ein System bereitgestellt. Das System umfasst ein oder mehrere Speichermedien, auf denen einzeln oder in Kombination Befehle gespeichert sind, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zum Folgenden führen: Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem Aspekt ist eine Host-Vorrichtung bereitgestellt. Die Host-Vorrichtung umfasst eine Prozessorschaltung, die zumindest einen Prozessor umfasst; eine Speicherschaltung, die konfiguriert ist, um eine Anwendung, eine Empfangswarteschlange und einen Netzwerkstapel, der einen Netzwerkvorrichtungstreiber umfasst, zu speichern; eine Netzwerksteuerung, die einen Flussrichter umfasst, wobei die Netzwerksteuerung konfiguriert ist, um die Host-Vorrichtung mit zumindest einem Verbindungspartner zu koppeln, und der Flussrichter konfiguriert ist, um ein oder mehrere ausgewählte empfangene Pakete in der Empfangswarteschlange zu speichern, wobei die Auswahl zumindest teilweise auf einer Paketflusskennung basiert; und einen Netzwerkvorrichtungstreiber, der konfiguriert ist, die Empfangswarteschlange als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst, zu identifizieren; die Empfangswarteschlange abzurufen; und jedes empfangene Paket, das in der Empfangswarteschlange gespeichert ist, zu verarbeiten.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner konfiguriert, um den Flussrichter mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht, zu initialisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner für zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist, konfiguriert.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Abrufanfrage umfasst zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkstapel umfasst ferner eine logische Verbindungssteuerung, die konfiguriert ist, um die Abrufanfrage als Antwort auf eine Empfangsanfrage von der Anwendung bereitzustellen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Paketflusskennung entspricht einer Filterkennung, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Empfangswarteschlange ist in einem Sende-/Empfangswarteschlangenpaar umfasst, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem anderen Aspekt ist ein Verfahren bereitgestellt. Das Verfahren umfasst das Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem anderen Aspekt ist ein System bereitgestellt. Das System umfasst ein oder mehrere Speichermedien, auf denen einzeln oder in Kombination Befehle gespeichert sind, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zum Folgenden führen: Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Ein anderes beispielhaftes System umfasst Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den vorhergehenden Operationen führen, und umfasst außerdem, dass die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem Aspekt ist eine Host-Vorrichtung bereitgestellt. Die Host-Vorrichtung umfasst eine Prozessorschaltung, die zumindest einen Prozessor umfasst; eine Speicherschaltung, die konfiguriert ist, um eine Anwendung, eine Empfangswarteschlange und einen Netzwerkstapel, der einen Netzwerkvorrichtungstreiber umfasst, zu speichern; eine Netzwerksteuerung, die einen Flussrichter umfasst, wobei die Netzwerksteuerung konfiguriert ist, um die Host-Vorrichtung mit zumindest einem Verbindungspartner zu koppeln, und der Flussrichter konfiguriert ist, um ein oder mehrere ausgewählte empfangene Pakete in der Empfangswarteschlange zu speichern, wobei die Auswahl zumindest teilweise auf einer Paketflusskennung basiert; und einen Netzwerkvorrichtungstreiber, der konfiguriert ist, die Empfangswarteschlange als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst, zu identifizieren; die Empfangswarteschlange abzurufen; und jedes empfangene Paket, das in der Empfangswarteschlange gespeichert ist, zu verarbeiten.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner konfiguriert, um den Flussrichter mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht, zu initialisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner für zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist, konfiguriert.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Abrufanfrage umfasst zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkstapel umfasst ferner eine logische Verbindungssteuerung, die konfiguriert ist, um die Abrufanfrage als Antwort auf eine Empfangsanfrage von der Anwendung bereitzustellen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Paketflusskennung entspricht einer Filterkennung, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Empfangswarteschlange ist in einem Sende-/Empfangswarteschlangenpaar umfasst, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem anderen Aspekt ist ein Verfahren bereitgestellt. Das Verfahren umfasst das Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem Aspekt ist eine Host-Vorrichtung bereitgestellt. Die Host-Vorrichtung umfasst eine Prozessorschaltung, die zumindest einen Prozessor umfasst; eine Speicherschaltung, die konfiguriert ist, um eine Anwendung, eine Empfangswarteschlange und einen Netzwerkstapel, der einen Netzwerkvorrichtungstreiber umfasst, zu speichern; eine Netzwerksteuerung, die einen Flussrichter umfasst, wobei die Netzwerksteuerung konfiguriert ist, um die Host-Vorrichtung mit zumindest einem Verbindungspartner zu koppeln, und der Flussrichter konfiguriert ist, um ein oder mehrere ausgewählte empfangene Pakete in der Empfangswarteschlange zu speichern, wobei die Auswahl zumindest teilweise auf einer Paketflusskennung basiert; und einen Netzwerkvorrichtungstreiber, der konfiguriert ist, die Empfangswarteschlange als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst, zu identifizieren; die Empfangswarteschlange abzurufen; und jedes empfangene Paket, das in der Empfangswarteschlange gespeichert ist, zu verarbeiten.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner konfiguriert, um den Flussrichter mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht, zu initialisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkvorrichtungstreiber ist ferner für zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist, konfiguriert.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Abrufanfrage umfasst zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und der Netzwerkstapel umfasst ferner eine logische Verbindungssteuerung, die konfiguriert ist, um die Abrufanfrage als Antwort auf eine Empfangsanfrage von der Anwendung bereitzustellen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Paketflusskennung entspricht einer Filterkennung, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Eine andere beispielhafte Host-Vorrichtung umfasst die vorhergehenden Komponenten, und die Empfangswarteschlange ist in einem Sende-/Empfangswarteschlangenpaar umfasst, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem anderen Aspekt ist ein Verfahren bereitgestellt. Das Verfahren umfasst das Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Ein anderes beispielhaftes Verfahren umfasst die vorhergehenden Operationen und umfasst ferner, dass die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • In einem anderen Aspekt ist ein System bereitgestellt. Das System umfasst Mittel zum Identifizieren eines Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Mittel zum Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Mittel zum Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Mittel zum Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  • Ein anderes beispielhaftes System umfasst die vorhergehenden Komponenten und umfasst die Mittel zum Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  • Ein anderes beispielhaftes System umfasst die vorhergehenden Komponenten und umfasst die Mittel für zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  • Ein anderes beispielhaftes System umfasst die vorhergehenden Komponenten und umfasst, dass die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  • Ein anderes beispielhaftes System umfasst die vorhergehenden Komponenten und umfasst, dass die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  • Ein anderes beispielhaftes System umfasst die vorhergehenden Komponenten und umfasst, dass die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  • Ein anderes beispielhaftes System umfasst die vorhergehenden Komponenten und umfasst, dass die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  • Die Begriffe und Ausdrücke, die hierin verwendet wurden, werden als Begriffe zur Beschreibung und nicht zur Einschränkung verwendet, und bei der Verwendung solcher Begriffe und Ausdrücke ist nicht vorgesehen, beliebige Äquivalente der gezeigten und beschriebenen Merkmale (oder Teile davon) auszuschließen. Es wird erkannt, dass verschiedene Modifikationen innerhalb des Schutzumfangs der Ansprüche möglich sind. Demgemäß ist vorgesehen, dass die Ansprüche alle diese Äquivalente abdecken.
  • Es wurden hierin verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. Die Merkmale, Aspekte und Ausführungsformen sind empfänglich für Kombination miteinander sowie für Variation und Modifikation, wie Fachleuten auf dem Gebiet ersichtlich ist. Die vorliegende Offenbarung soll daher so in Erwägung gezogen werden, dass sie solche Kombinationen, Variationen und Modifikationen umfasst.

Claims (21)

  1. Host-Vorrichtung, umfassend: eine Prozessorschaltung, die zumindest einen Prozessor umfasst; eine Speicherschaltung, die konfiguriert ist, um eine Anwendung, eine Empfangswarteschlange und einen Netzwerkstapel, der einen Netzwerkvorrichtungstreiber umfasst, zu speichern; eine Netzwerksteuerung, die einen Flussrichter umfasst, wobei die Netzwerksteuerung konfiguriert ist, um die Host-Vorrichtung mit zumindest einem Verbindungspartner zu koppeln, und der Flussrichter konfiguriert ist, um ein oder mehrere ausgewählte empfangene Pakete in der Empfangswarteschlange zu speichern, wobei die Auswahl zumindest teilweise auf einer Paketflusskennung basiert; und einen Netzwerkvorrichtungstreiber, der konfiguriert ist, um die Empfangswarteschlange als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst, zu identifizieren; die Empfangswarteschlange abzurufen; und jedes empfangene Paket, das in der Empfangswarteschlange gespeichert ist, zu verarbeiten.
  2. Host-Vorrichtung nach Anspruch 1, worin der Netzwerkvorrichtungstreiber ferner konfiguriert ist, um den Flussrichter mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht, zu initialisieren.
  3. Host-Vorrichtung nach Anspruch 1, worin der Netzwerkvorrichtungstreiber ferner für zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist, konfiguriert ist.
  4. Host-Vorrichtung nach einem der Ansprüche 1 bis 3, worin die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  5. Host-Vorrichtung nach einem der Ansprüche 1 bis 3, worin der Netzwerkstapel ferner eine logische Verbindungssteuerung umfasst, die konfiguriert ist, um die Abrufanfrage als Antwort auf eine Empfangsanfrage von der Anwendung bereitzustellen.
  6. Host-Vorrichtung nach einem der Ansprüche 1 bis 3, worin die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  7. Host-Vorrichtung nach einem der Ansprüche 1 bis 3, worin die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  8. Verfahren, umfassend: das Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; das Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; das Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und das Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  9. Verfahren nach Anspruch 8, ferner umfassend das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  10. Verfahren nach Anspruch 8, ferner umfassend zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  11. Verfahren nach einem der Ansprüche 8 bis 10, worin die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  12. Verfahren nach einem der Ansprüche 8 bis 10, worin die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  13. Verfahren nach einem der Ansprüche 8 bis 10, worin die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  14. Verfahren nach einem der Ansprüche 8 bis 10, worin die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
  15. System, umfassend ein oder mehrere Speichermedien, auf denen einzeln oder in Kombination Befehle gespeichert sind, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden Operationen führen: Identifizieren einer Empfangswarteschlange durch einen Netzwerkvorrichtungstreiber als Antwort auf eine Abrufanfrage, die die Paketflusskennung umfasst; Speichern von einem oder mehreren ausgewählten empfangenen Paketen in der Empfangswarteschlange durch einen Flussrichter, wobei die Auswahl zumindest teilweise auf der Paketflusskennung basiert; Abrufen der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber; und Verarbeiten jedes empfangenen Pakets, das in der Empfangswarteschlange gespeichert ist.
  16. System nach Anspruch 15, worin die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen: das Initialisieren des Flussrichters mit der Paketflusskennung und einer Empfangswarteschlangenkennung, die der Empfangswarteschlange entspricht.
  17. System nach Anspruch 15, worin die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen: zumindest eines aus dem Schaffen von Eigentum der Empfangswarteschlange durch den Netzwerkvorrichtungstreiber und dem Deaktivieren einer Unterbrechung, die der Empfangswarteschlange zugeordnet ist.
  18. System nach einem der Ansprüche 15 bis 17, worin die Abrufanfrage zumindest eines aus einer Dauer eines Abrufintervalls, einer maximalen Anzahl an abzurufenden Paketen, einem Hinweis, eine zugeordnete Unterbrechung zu erhalten, die deaktiviert ist, bis sie durch eine logische Verbindungssteuerung aktiviert wird, und einer Anfrage, eine Prozessoraffinität eines zugeordneten Unterbrechungsvektors zu aktualisieren, umfasst.
  19. System nach einem der Ansprüche 15 bis 17, worin die Abrufanfrage durch eine logische Verbindungssteuerung als Antwort auf eine Empfangsanfrage von einer Anwendung bereitgestellt ist.
  20. System nach einem der Ansprüche 15 bis 17, worin die Paketflusskennung einer Filterkennung entspricht, die mit einem Filter, der in dem Flussrichter gespeichert ist, verwandt ist, wobei der Flussrichter konfiguriert ist, um ein oder mehrere empfangene Pakete, die zumindest teilweise auf der Filterkennung basieren, auszuwählen.
  21. System nach einem der Ansprüche 15 bis 17, worin die Empfangswarteschlange in einem Sende-/Empfangswarteschlangenpaar umfasst ist, das konfiguriert ist, um die Verarbeitung empfangener Pakete durch einen gleichen Prozessor, wie er zur Durchführung der Verarbeitung von Sendepaketen konfiguriert ist, zu erleichtern.
DE112014001397.8T 2013-03-15 2014-02-28 Flussrichterbasierter Niedriglatenznetzwerkbetrieb Pending DE112014001397T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/836,959 2013-03-15
US13/836,959 US9621633B2 (en) 2013-03-15 2013-03-15 Flow director-based low latency networking
PCT/US2014/019260 WO2014149519A1 (en) 2013-03-15 2014-02-28 Flow director-based low latency networking

Publications (1)

Publication Number Publication Date
DE112014001397T5 true DE112014001397T5 (de) 2015-12-03

Family

ID=51533546

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014001397.8T Pending DE112014001397T5 (de) 2013-03-15 2014-02-28 Flussrichterbasierter Niedriglatenznetzwerkbetrieb

Country Status (4)

Country Link
US (1) US9621633B2 (de)
DE (1) DE112014001397T5 (de)
GB (1) GB2526467B (de)
WO (1) WO2014149519A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI554059B (zh) * 2013-11-12 2016-10-11 Using a distributed network of large number of nodes in the MPLS network architecture
CN104197299A (zh) * 2014-08-21 2014-12-10 浙江生辉照明有限公司 照明装置及基于该装置的语音播报系统及方法
US20180088978A1 (en) * 2016-09-29 2018-03-29 Intel Corporation Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container
US20180285151A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Dynamic load balancing in network interface cards for optimal system level performance
US11646980B2 (en) 2018-03-30 2023-05-09 Intel Corporation Technologies for packet forwarding on ingress queue overflow
US11157312B2 (en) * 2018-09-17 2021-10-26 International Business Machines Corporation Intelligent input/output operation completion modes in a high-speed network
US20200241927A1 (en) * 2020-04-15 2020-07-30 Intel Corporation Storage transactions with predictable latency

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7360217B2 (en) * 2001-09-28 2008-04-15 Consentry Networks, Inc. Multi-threaded packet processing engine for stateful packet processing
US7213135B2 (en) 2003-04-24 2007-05-01 International Business Machines Corporation Method using a dispatch flush in a simultaneous multithread processor to resolve exception conditions
US7602798B2 (en) * 2004-08-27 2009-10-13 Intel Corporation Techniques to reduce latency in receive side processing
US20060203730A1 (en) 2005-03-14 2006-09-14 Zur Uri E Method and system for reducing end station latency in response to network congestion
WO2007070836A2 (en) 2005-12-13 2007-06-21 Lyman Alden Copps Rapid messaging protocol wireless network data communication system
US8191073B2 (en) * 2008-03-04 2012-05-29 Fortinet, Inc. Method and system for polling network controllers
WO2012141696A1 (en) * 2011-04-13 2012-10-18 Hewlett-Packard Development Company, L.P. Input/output processing
US8924501B2 (en) * 2011-11-30 2014-12-30 Red Hat Israel, Ltd. Application-driven shared device queue polling
CN103999068B (zh) * 2011-12-23 2016-11-23 英特尔公司 共享的发送队列

Also Published As

Publication number Publication date
GB201514485D0 (en) 2015-09-30
GB2526467A (en) 2015-11-25
US9621633B2 (en) 2017-04-11
WO2014149519A1 (en) 2014-09-25
GB2526467B (en) 2020-09-09
US20140280709A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
DE112014001397T5 (de) Flussrichterbasierter Niedriglatenznetzwerkbetrieb
US10922205B2 (en) Monitoring applications running on containers
DE102015105884B4 (de) Rechenknoten und Verfahren zur Migration einer virtuellen Maschine, Rechenzentrummanager zur Migration virtueller Maschinen, Maschinenlesbares Speichermedium und Rechenvorrichtungen
DE102020113346A1 (de) Bereitstellen von service-containern in einer adaptervorrichtung
DE102014109518A1 (de) Techniken zur Initialisierung von einem Speichergerät, auf das von der Ferne zugegriffen werden kann
US11294698B2 (en) Waiting a host determined specific amount of time before performing virtual network function migration
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112016000258T5 (de) Gruppieren von nichtflüchtigem speicher auf grundlage von hosts mithilfe von zugeordnetem netzwerkspeicher
DE112017001762T5 (de) Technologien für den einsatz dynamischer underlay-netzwerke in cloud-computing-infrastrukturen
DE102018204859A1 (de) Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene
DE102014109519A1 (de) Techniken zum Replizieren von Daten zwischen Speicherservern
CN111328392B (zh) 部分供应的虚拟机的部署
DE112012003776T5 (de) Migration logischer Partitionen mit zustandsbehafteten Auslagerungsdatenverbindungen während des laufenden Betriebs unter Verwendung der Kontextherauslösung und -einfügung
WO2015199685A1 (en) Network function virtualization
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112012003808T5 (de) Ermittlung der Migration des Netzwerkadapter-Hardwarezustands in einer zustandsbehafteten Umgebung
DE102009023953A1 (de) Verfahren zum Booten eines zustandslosen Client
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
US9342369B2 (en) System and method for increasing throughput of a PaaS system
DE112016006308T5 (de) Erweiterte virtuelle Funktionsfähigkeiten in einer virtualisierten Netzwerkumgebung
US11513830B2 (en) Introspection into workloads running within virtual machines
CN115794317B (zh) 一种基于虚拟机的处理方法、装置、设备及介质
US20190377612A1 (en) VCPU Thread Scheduling Method and Apparatus
DE102009060299A1 (de) Das Einführen von Transaktionen, um die Virtualisierung eines physischen Geräte-Controllers zu unterstützen
DE102019103932A1 (de) Technologien für optimierte Dienstgütebeschleunigung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)