DE112007000733T5 - Skalierung von ausgehendem Netzverkehr - Google Patents

Skalierung von ausgehendem Netzverkehr Download PDF

Info

Publication number
DE112007000733T5
DE112007000733T5 DE112007000733T DE112007000733T DE112007000733T5 DE 112007000733 T5 DE112007000733 T5 DE 112007000733T5 DE 112007000733 T DE112007000733 T DE 112007000733T DE 112007000733 T DE112007000733 T DE 112007000733T DE 112007000733 T5 DE112007000733 T5 DE 112007000733T5
Authority
DE
Germany
Prior art keywords
send
packets
queues
queue
unique identifier
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.)
Ceased
Application number
DE112007000733T
Other languages
English (en)
Inventor
Linden Portland Cornett
Sujoy Portland Sen
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 DE112007000733T5 publication Critical patent/DE112007000733T5/de
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/13Flow control; Congestion control in a LAN segment, e.g. ring or bus
    • 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/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • 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
    • 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/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • 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/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority

Landscapes

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

Abstract

Verfahren, umfassend:
Erzeugen eines oder mehrerer Datenpakete, wobei das Datenpaket oder die Datenpakete einem Anschluss zugeordnet sind; und
Zuordnen des Pakets oder der Pakete zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basiert, dem ein Paket oder mehrere Pakete zugeordnet ist beziehungsweise sind.

Description

  • GEBIET
  • Ausführungsformen dieser Erfindung beziehen sich auf das Skalieren von ausgehendem Netzverkehr.
  • HINTERGRUND
  • Mit zunehmenden Netzgeschwindigkeiten wird es notwendig, Paketverarbeitung über Multiprozessoren in einem System hinweg zu skalieren. Für die Empfangsverarbeitung kann eine RSS (Receive Side Scaling) genannte Einrichtung ankommende Pakete über Multiprozessoren in einem System hinweg verteilen. RSS ist eine Technologie des Betriebssystems Windows® von Microsoft®, die es ermöglicht, die Empfangsverarbeitung mit der Anzahl an verfügbaren Computerprozessoren zu skalieren, indem es erlaubt, die Netzbelastung von einem Netzwerkcontroller über Multiprozessoren hinweg auszugleichen. RSS ist in „Scalable Networking: Eliminating the Receive Processing Bottleneck – Introducing RSS", WinHEC (Windows Hardware Engineering Conference) 2004, 14. April 2004 (nachfolgend „WinHEC April 14, 2004 White Paper" genannt) beschrieben. Es ist auch geplant, Teil einer noch freizugebenden zukünftigen Version der Network Driver Interface Specification (NDIS) zu werden. NDIS beschreibt einen Gerätebetreiber von Microsoft® Windows®, der es einem einzelnen Netzwerkcontroller, beispielsweise einer Netzwerkkarte (NIC) ermöglicht, Mehrfachnetzwerkprotokolle zu unterstützen, oder der es Mehrfachnetzwerkcontrollern ermöglicht, Mehrfachnetzwerkprotokolle zu unterstützen. Die aktuelle Version von NDIS ist NDIS 5.1 und von der Microsoft® Corporation in Redmond, Washington, erhältlich. Die Nachfolgeversion von NDIS, bekannt als NDIS 5.2, erhältlich von der Microsoft® Corporation, ist zurzeit bekannt als das „Scalable Networking Pack" für den Windows Server 2003.
  • Während es definierte Mechanismen gibt, welche das Skalieren der Empfangsverarbeitung bei zunehmenden Netzgeschwindigkeiten ermöglichen, sind zurzeit noch keine bekannten Mechanismen für die Sendeverarbeitung definiert. Wenn zum Beispiel eine Anwendung gleichzeitig auf verschiedenen Prozessoren ausgeführt wird, kann eine bei einer Anwendung entstehende Sendeanforderung (mit einem oder mehreren Paketen) üblicherweise durch den Protokollstapel verbreitet werden, und einen Netzwerkgerätetreiber am selben Prozessor (unter der Voraussetzung eines mehrprozessgestützten Netzwerkgerätetreibers) ansprechen. Falls der Netzwerkgerätetreiber nur eine Warteschlange unterstützt, kann es sein, dass der Netzwerkgerätetreiber ein Spin-Lock auf der einzelnen Sendewarteschlange erreichen und warten muss, bis andere Prozessoren ihre Sperren auf der Sendewarteschlange gelöst haben. Der Spin-Lock kann zu Sperren führen, die die Leistung vermindern können, indem sie erfordern, dass Threads auf einem Prozessor auf „aktives Warten" gesetzt werden und zum Beispiel unnötigerweise die Prozessornutzung verstärken.
  • Eine Möglichkeit würde darin bestehen, mehrere Sendewarteschlangen zu haben und jeder Sendewarteschlange einen oder mehrere Prozessoren zuzuordnen. Dies würde erfordern, Pakete zu einer der Sendewarteschlangen zu senden, basierend darauf, welcher Prozessor die Pakete erzeugt hat. Da jedoch bei den Anwendungen nicht gewährleistet ist, dass sie für einen gegebenen Anschluss stets vom gleichen Prozessor übertragen, ist es möglich, dass frühere Pakete auf einem hoch belasteten Prozessor nach späteren Paketen auf einem gering belasteten Prozessor gesendet werden, wodurch es zu Übertragungen außer der Reihe kommt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungsformen der vorliegenden Erfindung werden in den Figuren der begleitenden Zeichnungen, bei denen sich gleiche Bezugszeichen auf ähnliche Elemente beziehen, beispielhaft und nicht einschränkend veranschaulicht. Es zeigt:
  • 1 ein System gemäß einer Ausführungsform,
  • 2 ein Netzwerk gemäß einer Ausführungsform,
  • 3 ein detailliertes System gemäß einer Ausführungsform,
  • 4 ein Flussdiagramm, das ein Verfahren gemäß einer Ausführungsform veranschaulicht,
  • 5 ein Flussdiagramm, das ein anderes Verfahren gemäß einer Ausführungsform veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die nachstehend beschriebenen Beispiele dienen nur der Veranschaulichung und sollen die Ausführungsformen der Erfindung in keiner Weise einschränken. Wo also Beispiele detailliert beschrieben werden oder wo eine Liste von Beispielen bereitgestellt wird, ist dies so zu verstehen, dass die Beispiele nicht als erschöpfend auszulegen und dass die Ausführungsformen der Erfindung nicht auf die beschriebenen und/oder illustrierten Beispiele beschränkt sind.
  • Die hier beschriebenen Verfahren können in einem System, beispielsweise in dem in 1 veranschaulichten System 100, umgesetzt werden. System 100 kann einen Prozessor oder mehrere Prozessoren 102A, 102B, ..., 102N umfassen. Ein „Prozessor" im Sinne dieser Erörterung bezieht sich auf eine Kombination von Hardware- und Softwareressourcen zum Ausführen Rechenaufgaben. Ein Prozessor kann zum Beispiel einen Systemspeicher und einen Prozessorschaltkreis (z. B. eine Zentraleinheit (CPU) oder Mikrocontroller) zum Ausführen maschinenlesbarer Befehle für das Verarbeiten von Daten gemäß einem vorbestimmten Befehlssatz umfassen. Alternativ kann ein Prozessor nur den Prozessorschaltkreis (z. B. CPU) umfassen. Ein weiteres Beispiel für einen Prozessor ist eine Rechenmaschine, die in einem Mehrkernprozessor enthalten sein kann, wobei zum Beispiel das Betriebssystem die Rechenmaschine als einen diskreten Prozessor mit einem vollständigen Satz an Ausführungsressourcen wahrnehmen kann. Dies sind jedoch nur Beispiele für Prozessoren, und die Ausführungsformen der vorliegenden Erfindung sind in dieser Hinsicht nicht eingeschränkt.
  • Jeder Prozessor 102A, 102B, ..., 102N kann ein Coprozessor sein. In einer Ausführungsform kann/können ein Prozessor oder mehrere Prozessoren 102A, 102B, ..., 102N im Wesentlichen die gleichen Funktionen ausüben. Jeder oder mehrere der Prozessoren 102A, 102B, ..., 102N kann beziehungsweise können zum Beispiel einen Intel® Pentium®-Mikroprozessor umfassen, der beim Rechtsnachfolger der gegenständlichen Anmeldung käuflich erhältlich ist. Natürlich kann alternativ jeder der Prozessoren 102A, 102B, ..., 102N eine andere Art von Prozessor umfassen, wie zum Beispiel einen Mikroprozessor, der vom Rechtsnachfolger oder einer anderen Quelle als dem Rechtsnachfolger der gegenständlichen Anmeldung gefertigt wird und/oder der bei diesem käuflich erhältlich ist, ohne damit von den Ausführungsformen der Erfindung abzuweichen.
  • System 100 kann zusätzlich Speicher 104 umfassen. Speicher 104 kann maschinell ausführbare Befehle 132 und/oder Daten, auf die Zugriff möglich ist und die bearbeitbar und/oder manipulierbar sind, speichern. „Maschinell ausführbare" Anweisungen beziehen sich in dem hier gemeinten Sinn auf Ausdrücke, die von einer Maschine oder mehreren Maschinen für die Ausführung einer logischen Operation oder mehrerer logischer Operationen verstanden werden können. Zum Beispiel können maschinell ausführbare Anweisungen solche Anweisungen umfassen, die durch einen Prozessorcompiler interpretierbar sind, um eine Operation oder mehrere Operationen an einem Datenobjekt oder mehreren Datenobjekten auszuführen. Dies ist jedoch nur ein Beispiel für maschinell ausführbare Anweisungen, und die Ausführungsformen der vorliegenden Erfindung sind in dieser Hinsicht nicht eingeschränkt. Speicher 104 kann zum Beispiel Nur-Lese-Speicher, Massenspeicher, Computer-Direktzugriffsspeicher und/oder eine Art oder mehrere Arten von Direktzugriffsspeichern umfassen.
  • Chipsatz 108 kann einen integrierten Schaltkreischip oder mehrere integrierte Schaltkreischips umfassen, beispielsweise aus von der Intel® Corporation kommerziell erwerbbaren integrierten Schaltkreischipsätzen ausgewählte (zum Beispiel Graphik-, Speicher- und E/A-Controller-Hub-Chipsets), obwohl sich entweder auch oder alternativ ein integrierter Schaltkreischip oder mehrere andere integrierte Schaltkreischips einsetzen lassen. Gemäß einer Ausführungsform kann Chipsatz 108 einen Eingabe-/Ausgabe-Steuerungs-Hub (ICH) und einen Speicher-Steuerungshub (MCH) umfassen, obwohl Ausführungsformen der Erfindung dadurch nicht eingeschränkt werden. Chipsatz 108 kann ein Host-Bridge-/Hub-System umfassen, das Prozessor 102A, 102B, ..., 102N und Host-Speicher 104 aneinander und an den lokalen Bus 106 koppeln kann. Chipsatz 108 kann mit Speicher 104 über Speicherbus 112 und mit Host-Prozessor 102 über Systembus 110 Daten austauschen. In alternativen Ausführungsformen können Host-Prozessor 102 und Host-Speicher 104 statt über Chipsatz 108 direkt mit Bus 106 verbunden sein.
  • Der lokale Bus 106 kann mit einem Steckkartenplatz 120 mit einem (nicht gezeigtem) Busanschluss verbunden sein. Der lokale Bus 106 kann einen Bus umfassen, welcher der Peripheral Component Interconnect (PCI) Local Bus Specification, Version 3.0, vom 3. Februar 2004 entspricht, die bei der PCI Special Interest Group, Portland, Oregon, USA, erhältlich ist (nachstehend „PCI-Bus" genannt). Alternativ kann zum Beispiel Bus 106 einen Bus umfassen, welcher der PCI ExpressTM Base Specification, Version 1.1, vom 28. März 2005 entspricht, die ebenfalls bei der PCI Special Interest Group erhältlich ist (nachstehend „PCI-Express-Bus" genannt). Bus 106 kann Bussysteme anderer Arten und Konfigurationen umfassen.
  • System 100 kann zusätzlich einen oder mehrere Netzwerkcontroller 126 umfassen (nur einer wird gezeigt). Unter „Netzwerkcontroller" ist hier eine Einrichtung zu verstehen, die sich zum Übertragen von Daten an andere mit einem Kommunikationsmedium verbundene Einrichtungen und/oder zum Empfang von Daten von ebensolchen Einrichtungen mit einem solchen Kommunikationsmedium verbinden lässt, d. h. zum Senden und Empfangen von Netzwerkdatenverkehr. Beispielsweise kann ein Netzwerkcontroller Pakete 140 an Einrichtungen senden, die an ein Netzwerk, beispielsweise an ein lokales Netzwerk, gekoppelt sind, und/oder Pakete 140 von solchen Einrichtungen empfangen. Unter „Paket" ist hier eine Sequenz von einem oder mehreren Zeichen und/oder Werten zu verstehen, die durch ein Signal oder mehrere Signale, das bzw. die von mindestens einem Sender an mindestens einen Empfänger übertragen wird bzw. werden, kodiert sein kann. Ein solcher Netzwerkcontroller 126 kann mit anderen Einrichtungen gemäß einem beliebigen Datenübertragungsformat, wie zum Beispiel Übertragungsformaten gemäß Versionen der Normen des IEEE (Institute of Electrical and Electronics Engineers) Std. 802.3 (CSMA/CD Access Method, Ausgabe 2002); IEEE Std. 802.11 (LAN/MAN Wireless LANS, Ausgabe 1999), IEEE Std. 802.16 (Ausgaben 2003 und 2004, LAN/MAN Broadband Wireless LANS), Universal Serial Bus, Firewire, Asynchronous Transfer Mode (ATM), Synchronous Optical Network (SONST) oder Synchronous Digital Hierarchy (SDH) kommunizieren.
  • In einer Ausführungsform kann die System-Hauptplatine 118 Netzwerkcontroller 126 umfassen. Netzwerkcontroller 126 braucht nicht in Hauptplatine 118, sondern kann in Chipsatz 108 integriert sein. Stattdessen kann eine Steckkarte 128 (z. B. NIC (Netzwerkkarte)), die sich in einen Steckkartenplatz 120 einfügen lässt, Netzwerkcontroller 126 umfassen. Steckkartenplatz 120 kann zum Beispiel einen PCI-Erweiterungssteckplatz umfassen, welcher einen (nicht gezeigten) PCI-Busanschluss umfasst. Der (nicht gezeigte) PCI-Busanschluss kann elektrisch und mechanisch einem in Steckkarte 128 enthaltenen (nicht gezeigten) PCI-Busanschluss entsprechen. Steckkartenplatz 120 und Steckkarte 128 können so gebaut sein, dass sich Steckkarte 128 in Steckkartenplatz 120 einstecken lässt. Wenn Steckkarte 128 in Steckkartenplatz 120 eingesteckt ist, können PCI-Busanschlüsse (nicht gezeigt) elektrisch und mechanisch miteinander verbunden werden. Wenn PCI-Busanschlüsse (nicht gezeigt) solchermaßen miteinander verbunden sind, kann Logik 130 in Steckkarte 128 mit Systembus 110 elektrisch verbunden werden.
  • Das System kann Logik 130 umfassen. Logik 130 kann Hardware, Software oder eine Kombination von Hardware und Software (z. B. Firmware) umfassen. Beispielsweise kann Logik 130 eine Schaltungsanordnung (z. B. einen Schaltkreis oder mehrere Schaltkreise) zur Ausführung hier beschriebener Operationen umfassen. Beispielsweise kann Logik 130 einen digitalen Schaltkreis oder mehrere digitale Schaltkreise, einen analogen Schaltkreis oder mehrere analoge Schaltkreise, eine Statusmaschine oder mehrere Statusmaschinen, programmierbare Logik und/oder einen oder mehrere ASIC (Anwendungsspezifische integrierte Schaltung (Application-Specific Integrated Circuits)) umfassen. Logik 130 kann verdrahtet sein, um eine bestimmte Operation oder mehrere Operationen auszuführen. Alternativ oder zusätzlich kann Logik 130 zur Ausführung dieser Operationen in maschinell ausführbaren Befehlen 132 enthalten sein, die in einem Speicher, beispielsweise in Speicher 104, gespeichert sind. Alternativ oder zusätzlich kann Logik 130 in Firmware enthalten sein. Verschiedene Komponenten des Systems 100 einschließlich Netzwerkcontroller 126, Chipsatz 108, einer oder mehrere der Prozessoren 102A, 102B, ..., 102N und/oder die Hauptplatine 118 können eine Logik umfassen. Logik 130 lässt sich, wie hier beschrieben, zur Ausführung verschiedener Funktionen durch verschiedene Komponenten nutzen.
  • System 100 kann einzelne und mehrere unterschiedliche Speicher, Busse, Prozessoren und Netzwerkcontroller umfassen. Zum Beispiel kann System 100 einen Server mit Multiprozessoren 102A, 102B, ..., 102N und multiplen Netzwerkcontrollern 126 umfassen. Die Prozessoren 102A, 102B, ..., 102N, Speicher 104 und Busse 106, 110, 112 können in einer einzelnen Leiterplatte, beispielsweise in einer Systemhauptplatine 118, enthalten sein, ohne dass die Ausführungsformen der Erfindung in dieser Hinsicht eingeschränkt sind.
  • 2 veranschaulicht ein Netzwerk 200, in dem die Ausführungsformen der Erfindung betrieben werden können. Netzwerk 200 kann eine Mehrzahl von Knoten 202A, ... 202N umfassen, wobei sich der Knoten 202A, ... 202N über ein Kommunikationsmedium 204 kommunikativ miteinander gekoppelt sein kann. Die Knoten 202A, ... 202N können über Medium 204, welches ein Paket oder mehrere Pakete kodieren kann, Blöcke eines Signals oder mehrerer Signale übertragen oder empfangen. Kommunikationsmedium 104 kann beispielsweise ein optisches und/oder elektrisches Kabel oder mehrere solcher Kabel umfassen, wobei viele Alternativen möglich sind. Beispielsweise kann Kommunikationsmedium 104 Luft und/oder Vakuum umfassen, durch die beziehungsweise das die Knoten 202A, ... 202N drahtlos Blöcke eines Signals oder mehrerer Signale übertragen und/oder empfangen können.
  • In Netzwerk 200 kann bzw. können einer oder mehrere der Knoten 202A, ... 202N eine Zwischenstation oder mehrere Zwischenstationen umfassen, beispielsweise einen Hub oder mehrere Hubs, einen oder mehrere Switches und/oder Router; zusätzlich oder alternativ kann bzw. können einer oder mehrere der Knoten 202A, ... 202N eine Endstation oder mehrere Endstationen umfassen. Ebenfalls zusätzlich oder alternativ kann Netzwerk 200 eine oder mehrere Zwischenstationen (nicht gezeigt) umfassen, und Medium 204 kann zumindest einige der Knoten 202A, ... 202N und eine oder mehrere dieser Zwischenstationen kommunikativ miteinander verbinden. Natürlich sind viele Alternativen möglich.
  • 3 veranschaulicht ein System 300 gemäß mindestens einer Ausführungsform der Erfindung. Wie in 3 veranschaulicht, kann Speicher 104 ein Betriebssystem 304 enthalten. Betriebssystem 304 kann Systemressourcen und Steuerungsaufgaben verwalten, die auf System 100 ausgeführt werden. Betriebssystem 304 kann einen oder mehrere Protokollstapel 306 (nur einer gezeigt) umfassen. Protokollstapel 306 kann ein Programm oder mehrere Programme zum Verarbeiten von Paketen 104 ausführen. Ein Beispiel für einen Protokollstapel ist ein TCP/IP-(Transport Control Protocol/Internet Protocol)-Protokollstapel, der ein Programm oder mehrere Programme zum Handhaben (d. h. Verarbeiten oder Erzeugen) von Paketen 104 für das Übertragen und/oder Empfangen über ein Netzwerk umfasst. Protokollstapel 306 kann alternativ in einem dedizierten Subsystem, beispielsweise in einer TCP Offload Engine, enthalten sein. Betriebssystem 304 kann zusätzlich einen oder mehrere Treiber 308 (nur einer gezeigt) umfassen. Zum Beispiel kann Treiber 308 einen Netzwerktreiber 308 umfassen. Netzwerktreiber 308 kann die Schnittstelle zwischen einem Netzwerkcontroller, beispielsweise Netzwerkcontroller 126, und Betriebssystem 304 bereitstellen. Speicher 104 kann zusätzlich eine Anwendung oder mehrere Anwendungen 302 (nur eine gezeigt) umfassen. Anwendung 302 kann Programme auf einer Endanwenderebene ausführen, einschließlich, ohne darauf beschränkt zu sein, beispielsweise Textverarbeitungs- und Tabellenkalkulationsprogrammen.
  • 4 veranschaulicht ein Verfahren gemäß einer Ausführungsform der Erfindung. Das Verfahren von 4 beginnt bei Block 400 und schreitet zu Block 402 vor, wo das Verfahren das Erzeugen eines Datenpakets oder mehrerer Datenpakete umfassen kann, wobei das Datenpaket oder die Datenpakete einem Anschluss zugeordnet sind.
  • In einer Ausführungsform kann zum Beispiel Anwendung 302 eine Socket-API (Programmschnittstelle (Application Programming Interface)) erzeugen, um einen Anschluss 312 anzufordern, der es Anwendung 302 ermöglicht, mit einer anderen Anwendung über ein Netzwerk Daten auszutauschen. Protokollstapel 306 kann den Anschluss 312 herstellen. Anwendung 302 kann Daten erzeugen und Protokollstapel 306 von Betriebssystem 304 aufrufen, um ein Paket oder mehrere Pakete 140 zu erzeugen, welches/welche die an die andere Anwendung zu sendenden Daten enthält/enthalten. Jedes Paket 140 kann einen Header und Nutzdaten einschließen. Der Header kann Informationen über den Anschluss 312 einschließen, zum Beispiel ein Source-Port und ein Destination-Port. Die Nutzdaten können zumindest einen Teil der an die andere Anwendung zu sendenden Daten einschließen. In einer Ausführungsform kann Protokollstapel 306 den Netzwerktreiber 308 aufrufen, eine Sendeanfrage zu erzeugen, die das Datenpaket oder die Datenpakete 140 einschließt.
  • Bei Block 404 kann das Verfahren das Zuordnen des Pakets oder der Pakete zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basieren, der dem Paket oder den Paketen zugeordnet ist, umfassen.
  • In einer Ausführungsform kann das Zuordnen des Pakets oder der Pakete 140 zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N, die zumindest teilweise auf dem Anschluss 312 basieren, der dem Paket oder den Paketen 140 zugeordnet ist, das Lenken des Pakets oder der Pakete 140, zumindest teilweise auf einer bekannten Anzahl von Sendewarteschlangen 310A, 310B, ..., 310N basierend, die von einer bestimmten Netzwerkschnittstelle bereitgestellt werden, umfassen. In dieser Ausführungsform kann zum Beispiel Protokollstapel 306 die Anzahl der Sendewarteschlangen 310A, 310B, ..., 310N, welche von einer bestimmten Netzwerkschnittstelle bereitgestellt werden, und die spezifischen Kennzeichen der Netzwerkschnittstelle kennen. „Netzwerkschnittstelle" kann sich zum Beispiel auf Netzwerktreiber 308 beziehen, welcher zum System 100 aufgeschlossen ist, wo der Netzwerktreiber 308 anzeigen kann, ob eine Sendeanpassung unterstützt wird. Falls dies der Fall ist, kann Protokollstapel 306 Netzwerktreiber 308 anweisen, mit einem bestimmten TCP-Anschluss verbundene Pakete an dieselbe Sendewarteschlange abzusenden.
  • In einer anderen Ausführungsform kann das Zuordnen des Pakets oder der Pakete 140 zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N, die zumindest teilweise auf dem Anschluss 312 basieren, der dem Paket oder den Paketen 140 zugeordneten ist, das Erzeugen eines eindeutigen Bezeichners 314 zwecks Zuordnen zum Anschluss und das Zuordnen des eindeutigen Bezeichners 314 (verwendet zur Kennzeichnung eines vorgegebenen Anschlusses) zu einer der Sendewarteschlangen 310A, 310B, ..., 310N umfassen. Zum Beispiel kann Protokollstapel 306 den eindeutigen Bezeichner erzeugen. Der eindeutige Bezeichner kann ein Vierer-Tupel umfassen, das die lokalen IP-Adressen und Remote-IP-Adressen und die lokalen TCP-Ports und Remote-TCP-Ports, die den Anschluss kennzeichnen, umfasst. Protokollstapel 306 kann den eindeutigen Bezeichner 314 zum Netzwerktreiber 308 übertragen, und Netzwerktreiber 308 kann dies dazu verwenden, um das Paket oder die Pakete 140 einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N zuzuordnen.
  • Der eindeutige Bezeichner 314 kann einer der Sendewarteschlangen 310A, 310B, ..., 310N zugeordnet sein, indem zum Beispiel ein Algorithmus zum Abbilden des eindeutigen Bezeichners 314 auf einer bestimmten Sendewarteschlange 310A, 310B, ..., 310N verwendet wird. Alternativ kann der eindeutige Bezeichner 314 in einer Referenztabelle 316 registriert sein, welche Einträge von eindeutigen Bezeichnern 314 und den entsprechenden Sendewarteschlangen 310A, 310B, ..., 310N enthält und in der eine entsprechende Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N ausgewählt werden kann. Falls der eindeutige Bezeichner 314 nicht in der Referenztabelle 316 zu finden ist, kann der Referenztabelle 316 ein Eintrag hinzugefügt werden. Es gibt eine Reihe von Möglichkeiten zum Auswählens der einem bestimmten eindeutigen Bezeichner 314 entsprechenden Sendewarteschlange 310A, 310B, ..., 310N für neue Einträge; zum Beispiel die Round-Robin-Auswahl oder das Verwenden von niedrigen Bits des eindeutigen Bezeichners 314 für das Abbilden auf eine Sendewarteschlange 310A, 310B, ..., 310N.
  • In einer Ausführungsform kann zum Beispiel der eindeutige Bezeichner 314 einen RSS-Hash-Wert umfassen. Ein RSS-Hash-Wert kann berechnet werden, indem eine Hash-Funktion über einem Headerfeld oder mehreren Headerfeldern in einem Header eines zu sendenden Pakets ausgeführt wird. In einer Ausführungsform würden die ausgewählten Headerfelder in einem Header, über dem eine Hash-Funktion ausgeführt wird, sicherstellen, dass alle über denselben Anschluss ausgehenden Pakete demselben Hash-Wert zugeordnet werden. Weiterhin kann Referenztabelle 316 in dieser Ausführungsform eine Indirektionstabelle entsprechend der NDIS-Spezifikation umfassen.
  • Bei Block 406 kann das Verfahren das Senden des Pakets oder der Pakete an die Sendewarteschlange umfassen. In einer Ausführungsform kann Netzwerktreiber 126 das Paket oder die Pakete 140 an die Sendewarteschlange 310A, 310B, ..., 310N senden. Das Paket oder die Pakete 140 auf der Sendewarteschlange 310A, 310B, ..., 310N können anschließend vom Netzwerkcontroller 126 für das Übertragen über das Netzwerk zum anderen System verwendet werden.
  • In einer Ausführungsform kann Protokollstapel 306 vor dem Senden des Pakets oder der Pakete 104 an die Sendewarteschlange 310A, 310B, ..., 310N ermitteln, ob sich die Referenztabelle 316 verändert hat, und falls sich Referenztabelle 316 verändert hat, kann Protokollstapel 306 auf eines oder mehrere der zuvor gesendeten Pakete 140 warten, um die drahtgebundene Übertragung abzuschließen, bevor neue Pakete 140 an den Netzwerktreiber 208 gesendet werden. Zum Beispiel kann Protokollstapel 306 die Referenztabelle 316 regelmäßig verändern, um die Belastung der Prozessoren 102A, 102B, ..., 102N des Systems auszugleichen.
  • Das Verfahren kann bei Block 408 enden.
  • 5 veranschaulicht ein Flussdiagramm gemäß einer anderen Ausführungsform der Erfindung. Das Verfahren von 5 beginnt bei Block 500 und schreitet zu Block 502 vor, wo das Verfahren das Empfangen eines Pakets oder mehrerer Pakete, die einem Anschluss zugeordnet sind, umfassen kann. In einer Ausführungsform kann Netzwerktreiber 308 ein einem Anschluss zugeordnetes Paket 140 oder mehrere solcher Pakete empfangen. Nachdem zum Beispiel Protokollstapel 306 ein Paket oder mehrere Pakete 140 erzeugt hat, kann Protokollstapel 306 das Paket oder die Pakete 140 zum Netzwerktreiber 308 übertragen, zum Beispiel verkapselt in einer Sendeanforderung.
  • Bei Block 504 kann das Verfahren das Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N, die zumindest teilweise auf dem Anschluss basieren, umfassen. In einer Ausführungsform kann das Senden des Pakets oder der Pakete 140 an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N, die zumindest teilweise auf dem Anschluss 312 basieren, das Ausrichten des Pakets oder der Pakete 140, basierend zumindest teilweise auf einer bekannten Anzahl von Sendewarteschlangen 310A, 310B, ..., 310N, die von einer Netzwerkschnittstelle bereitgestellt werden, umfassen.
  • In einer anderen Ausführungsform kann das Senden des Pakets oder der Pakete 140 an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N, die zumindest teilweise auf dem Anschluss 312 basieren, das Senden des Pakets oder der Pakete 140 an eine Sendewarteschlange 310A, 310B, ..., 310N, der ein eindeutiger Bezeichner 314 zugeordnet ist, umfassen. Zum Beispiel kann dies durch Senden des Pakets oder der Pakete 140 zumindest teilweise auf der Basis eines Algorithmus erfolgen, der verwendet wird, um den eindeutigen Bezeichner 314 auf einer Sendewarteschlange 310A, 310B, ..., 310N abzubilden. Alternativ kann dies das Senden des Pakets oder der Pakete 140 an eine Sendewarteschlange umfassen, welches zumindest teilweise auf dem Verwenden des eindeutigen Bezeichners 314 zum Registrieren in einer Referenztabelle 316 und dem Auswählen einer entsprechenden Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N aus Referenztabelle 316 basiert. Zum Beispiel kann Protokollstapel 306 zusätzlich zum Erzeugen eines Pakets oder mehrerer Pakete 140 einen eindeutigen Bezeichner 314 erzeugen und diesen zum Netzwerktreiber 308 übertragen. Netzwerktreiber 308 kann den eindeutigen Bezeichner 314 zwecks Zuordnung zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen 310A, 310B, ..., 310N verwenden.
  • In einer Ausführungsform kann Protokollstapel 306 vor dem Senden des Pakets oder der Pakete 104 an die Sendewarteschlange 310A, 310B, ..., 310N ermitteln, ob sich die Referenztabelle 316 verändert hat, und falls sich Referenztabelle 316 verändert hat, kann Protokollstapel 306 auf eines oder mehrere der zuvor gesendeten Pakete warten, um die Übertragung zu vollenden.
  • Das Verfahren kann bei Block 506 enden.
  • Schlussfolgerung
  • In einer Ausführungsform kann somit ein Verfahren das Erzeugen eines Datenpakets oder mehrerer Datenpakete, das oder die einem Anschluss zugeordnet ist beziehungsweise sind, sowie das Zuordnen des Pakets oder der Pakete zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem mit dem Paket oder den Paketen verbundenen Anschluss basieren, umfassen.
  • Ausführungsformen der Erfindung können das Skalieren der Verarbeitung von Sendepaketen bei Erhöhung der Netzwerkgeschwindigkeiten ermöglichen. Durch Absenden von Paketen an Sendewarteschlangen basierend auf dem Anschluss, mit dem die Pakete verbunden sind, wird das Problem des Skalierens der Sendeverarbeitung bei erhöhten Netzwerkgeschwindigkeiten angegangen, und der Verkehr lässt sich wirksam über multiple Sendewarteschlangen hinweg anpassen.
  • In der vorstehenden Beschreibung wurde die Erfindung mit Bezug auf spezielle Ausführungsformen beschrieben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne dass von der Erfindung abgewichen wird. Die Beschreibung und die Zeichnungen sind demgemäß eher in einem veranschaulichenden als in einem restriktiven Sinne anzusehen.
  • Zusammenfassung
  • In einer Ausführungsform wird ein Verfahren bereitgestellt. Das Verfahren dieser Ausführungsform stellt das Erzeugen von einem Datenpaket oder mehreren Datenpaketen bereit, wobei das Datenpaket oder die Datenpakete einem Anschluss zugeordnet ist beziehungsweise sind und das Datenpaket oder die Datenpakete einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen zugeordnet ist beziehungsweise sind, welche zumindest teilweise auf dem Anschluss basiert, dem das Paket oder die Pakete zugeordnet ist beziehungsweise sind.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • - „Scalable Networking: Eliminating the Receive Processing Bottleneck – Introducing RSS", WinHEC (Windows Hardware Engineering Conference) 2004, 14. April 2004 [0002]
    • - „WinHEC April 14, 2004 White Paper" [0002]

Claims (30)

  1. Verfahren, umfassend: Erzeugen eines oder mehrerer Datenpakete, wobei das Datenpaket oder die Datenpakete einem Anschluss zugeordnet sind; und Zuordnen des Pakets oder der Pakete zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basiert, dem ein Paket oder mehrere Pakete zugeordnet ist beziehungsweise sind.
  2. Verfahren nach Anspruch 1, wobei das Zuordnen des Pakets oder der Pakete zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen das Zuweisen des Pakets oder der Pakete zumindest teilweise basierend auf einer bekannten Anzahl von bereitgestellten Sendewarteschlangen umfasst.
  3. Verfahren nach Anspruch 1, wobei das Zuordnen des Pakets oder der Pakete zu einer Sendewarteschlange aus der Mehrzahl der Sendewarteschlangen zumindest teilweise basierend auf dem Anschluss, dem das Paket oder die Pakete zugeordnet ist beziehungsweise sind, umfasst: Erzeugen eines eindeutigen Bezeichners zwecks Zuordnung zum Anschluss und Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen.
  4. Verfahren nach Anspruch 3, wobei das Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen das Verwenden des eindeutigen Bezeichners zum Registrieren in einer Referenztabelle und das Auswählen einer entsprechenden Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen aus der Referenztabelle umfasst.
  5. Verfahren nach Anspruch 4, das zusätzlich, falls der eindeutige Bezeichner nicht in der Referenztabelle zu finden ist, das Hinzufügen eines Eintrags in die Referenztabelle umfasst, wobei der Eintrag den eindeutigen Bezeichner und eine Sendewarteschlange aus der Mehrzahl der Sendewarteschlangen einschließt.
  6. Verfahren nach Anspruch 3, wobei der eindeutige Bezeichner einen RSS-(Receive Side Scaling)-Hash-Wert umfasst.
  7. Verfahren nach Anspruch 1, das zusätzlich das Senden des Pakets oder der Pakete an die Sendewarteschlange umfasst.
  8. Verfahren nach Anspruch 7, das vor dem Senden des Pakets oder der Pakete an die Sendewarteschlange zusätzlich umfasst: Ermitteln, ob sich die Referenztabelle verändert hat, und, falls sich die Referenztabelle verändert hat, Warten auf ein zuvor gesendetes Paket oder mehrere zuvor gesendete Pakete zur Vollendung der Übertragung.
  9. Verfahren, umfassend: Empfangen eines einem Anschluss zugeordneten Pakets oder mehrerer solcher Pakete, und Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basiert.
  10. Verfahren nach Anspruch 9, wobei das Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen zumindest teilweise auf dem Anschluss basierend umfasst, das Paket oder die Pakete zumindest teilweise basierend auf einer bekannten Anzahl von durch eine Netzwerkschnittstelle bereitgestellten Sendewarteschlangen zu lenken.
  11. Verfahren nach Anspruch 9, wobei das Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf einem dem Paket oder den Paketen zugeordneten Anschluss basiert, umfasst: Erzeugen eines eindeutigen Bezeichners zwecks Zuordnung zum Anschluss und Verbinden des eindeutigen Bezeichners mit einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen.
  12. Verfahren nach Anspruch 11, wobei das Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen das Verwenden des eindeutigen Bezeichners zum Registrieren in einer Referenztabelle und das Auswählen einer entsprechenden Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen aus der Referenztabelle umfasst.
  13. Verfahren nach Anspruch 12, das zusätzlich das Senden des Pakets oder der Pakete an die entsprechende Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen umfasst.
  14. Verfahren nach Anspruch 11, wobei das Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen das Verwenden eines Algorithmus umfasst, um den eindeutigen Bezeichner auf einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen abzubilden.
  15. Vorrichtung, umfassend: Logik zum Empfangen eines Pakets oder mehrerer Pakete, wobei das Paket oder die Pakete einem Anschluss zugeordnet ist beziehungsweise sind und zum Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basiert.
  16. Vorrichtung nach Anspruch 15, wobei die Logik zum Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basiert, eine Logik zum Lenken des Pakets oder der Pakete, zumindest teilweise basierend auf einer bekannten Anzahl von durch eine Netzwerkschnittstelle bereitgestellten Sendewarteschlangen, umfasst.
  17. Vorrichtung nach Anspruch 15, wobei die Logik zum Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf einem dem Paket oder den Paketen zugeordneten Anschluss basiert, eine Logik umfasst, um einen eindeutigen Bezeichner zwecks Zuordnung zum Anschluss zu erzeugen und den eindeutigen Bezeichner einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen zuzuordnen.
  18. Vorrichtung nach Anspruch 17, wobei die Logik zur Zuordnung des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen Logik zum Verwenden des eindeutigen Bezeichners für das Registrieren in einer Referenztabelle und zum Auswählen einer entsprechenden Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen aus der Referenztabelle umfasst.
  19. Vorrichtung nach Anspruch 18, die zusätzlich eine Logik zum Senden des Pakets oder der Pakete an die entsprechende Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen umfasst.
  20. Vorrichtung nach Anspruch 17, wobei die Logik zum Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen eine Logik zum Verwenden eines Algorithmus umfasst, um den eindeutigen Bezeichner auf eine Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen abzubilden.
  21. System, umfassend: Logik zum Empfangen eines einem Anschluss zugeordneten Pakets oder mehrerer solcher Pakete und Senden des Pakets oder der Pakete an eine aus einer Mehrzahl von Sendewarteschlangen ausgewählte Sendewarteschlange, wobei die aus der Mehrzahl von Sendewarteschlangen ausgewählte Sendewarteschlange zumindest teilweise auf dem Anschluss basiert, und eine an eine Leiterplatte gekoppelte Schaltkarte, wobei die Schaltkarte betreibbar ist, um Zugang zu der Mehrzahl von Sendewarteschlangen zu erhalten und um ein Paket oder mehrere Pakete von der Mehrzahl der Sendewarteschlangen zu übertragen.
  22. System nach Anspruch 21, wobei die Logik zum Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basiert, Logik zum Lenken des Pakets oder der Pakete, zumindest teilweise auf einer bekannten Anzahl von durch eine Netzwerkschnittstelle bereitgestellten Sendewarteschlangen basierend, umfasst.
  23. System nach Anspruch 21, wobei die Logik zum Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf einem dem Paket oder den Paketen zugeordneten Anschluss basiert, eine Logik umfasst, um einen eindeutigen Bezeichner zwecks Zuordnen zu der Verbindung zu erzeugen und den eindeutigen Bezeichner zu einer Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen zuzuordnen.
  24. System nach Anspruch 23, wobei die Logik zum Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen eine Logik zum Verwenden des eindeutigen Bezeichners für das Registrieren in einer Referenztabelle und zum Auswählen einer entsprechenden Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen aus der Referenztabelle umfasst.
  25. System nach Anspruch 23, wobei die Logik zum Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen eine Logik für das Verwenden eines Algorithmus umfasst, um den eindeutigen Bezeichner auf einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen abzubilden.
  26. Fertigungsgegenstand, auf dem Befehle gespeichert wurden, wobei die Befehle, wenn diese von einer Maschine ausgeführt werden, Folgendes bewirken: Empfangen eines Pakets oder mehrerer Pakete, wobei das Paket oder die Pakete einem Anschluss zugeordnet sind, und Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf dem Anschluss basieren.
  27. Fertigungsgegenstand nach Anspruch 26, wobei die Logik zum Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf einem dem Paket oder den Paketen zugeordneten Anschluss basiert, Logik zum Lenken des Pakets oder der Pakete, zumindest teilweise auf einer bekannten Anzahl von durch eine Netzwerkschnittstelle bereitgestellten Sendewarteschlangen basierend, umfasst.
  28. Fertigungsgegenstand nach Anspruch 26, wobei die Logik zum Senden des Pakets oder der Pakete an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen, die zumindest teilweise auf einem dem Paket oder den Paketen zugeordneten Anschluss basiert, eine Logik umfasst, um einen eindeutigen Bezeichner zwecks Zuordnen zum Anschluss zu erzeugen und den eindeutigen Bezeichner einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen zuzuordnen.
  29. Fertigungsgegenstand nach Anspruch 28, wobei die Logik zum Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen Logik zum Verwenden des eindeutigen Bezeichners für das Registrieren in einer Referenztabelle und zum Auswählen einer entsprechenden Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen aus der Referenztabelle umfasst.
  30. Fertigungsgegenstand nach Anspruch 28, wobei die Logik zum Zuordnen des eindeutigen Bezeichners zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen eine Logik zum Verwenden eines Algorithmus umfasst, um den eindeutigen Bezeichner auf einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen abzubilden.
DE112007000733T 2006-03-31 2007-03-22 Skalierung von ausgehendem Netzverkehr Ceased DE112007000733T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/395,959 US7792102B2 (en) 2006-03-31 2006-03-31 Scaling egress network traffic
US11/395,959 2006-03-31
PCT/US2007/064573 WO2007117916A1 (en) 2006-03-31 2007-03-22 Scaling egress network traffic

Publications (1)

Publication Number Publication Date
DE112007000733T5 true DE112007000733T5 (de) 2009-02-05

Family

ID=38558826

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112007000733T Ceased DE112007000733T5 (de) 2006-03-31 2007-03-22 Skalierung von ausgehendem Netzverkehr

Country Status (4)

Country Link
US (4) US7792102B2 (de)
DE (1) DE112007000733T5 (de)
TW (1) TWI374636B (de)
WO (1) WO2007117916A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8085769B2 (en) 2006-03-31 2011-12-27 Intel Corporation Scaling egress network traffic

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7787453B2 (en) * 2006-08-03 2010-08-31 Broadcom Corporation Network interface controller with receive side scaling and quality of service
US7715428B2 (en) 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing
US8296490B2 (en) 2007-06-29 2012-10-23 Intel Corporation Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system
US8041854B2 (en) 2007-09-28 2011-10-18 Intel Corporation Steering data units to a consumer
US8626955B2 (en) * 2008-09-29 2014-01-07 Intel Corporation Directing packets to a processor unit
WO2010117359A1 (en) * 2009-04-07 2010-10-14 Cisco Technology, Inc. Transmit-side scaler and method for processing outgoing information packets using thread-based queues
US8842562B2 (en) * 2011-10-25 2014-09-23 Dell Products, Lp Method of handling network traffic through optimization of receive side scaling
US10320918B1 (en) * 2014-12-17 2019-06-11 Xilinx, Inc. Data-flow architecture for a TCP offload engine
US10360267B2 (en) * 2015-06-10 2019-07-23 Futurewei Technologies, Inc. Query plan and operation-aware communication buffer management
US10284501B2 (en) * 2016-12-08 2019-05-07 Intel IP Corporation Technologies for multi-core wireless network data transmission
US10469569B2 (en) 2018-03-22 2019-11-05 International Business Machines Corporation Optimizing receive side scaling key selection using flow data
US10896140B2 (en) * 2019-04-19 2021-01-19 International Business Machines Corporation Controlling operation of multiple computational engines
US11973693B1 (en) 2023-03-13 2024-04-30 International Business Machines Corporation Symmetric receive-side scaling (RSS) for asymmetric flows

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI103005B (fi) 1996-03-25 1999-03-31 Nokia Telecommunications Oy Lähetettävän datan priorisointi reitittimessä
US6075791A (en) 1997-10-28 2000-06-13 Lucent Technologies Inc. System for guaranteeing data transfer rates and delays in packet networks
US6212184B1 (en) 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
JP3687501B2 (ja) * 2000-07-05 2005-08-24 日本電気株式会社 パケット交換機の送信キュー管理システム及び管理方法
US20020176430A1 (en) * 2001-01-25 2002-11-28 Sangha Onkar S. Buffer management for communication systems
US6963566B1 (en) * 2001-05-10 2005-11-08 Advanced Micro Devices, Inc. Multiple address lookup engines running in parallel in a switch for a packet-switched network
US7248593B2 (en) * 2001-09-25 2007-07-24 Intel Corporation Method and apparatus for minimizing spinlocks and retaining packet order in systems utilizing multiple transmit queues
US7039061B2 (en) * 2001-09-25 2006-05-02 Intel Corporation Methods and apparatus for retaining packet order in systems utilizing multiple transmit queues
ATE308185T1 (de) * 2002-03-05 2005-11-15 Ibm Verfahren und system zur geordneten dynamischen verteilung von paketströmen zwischen netzwerkprozessoren
US7206861B1 (en) * 2002-07-29 2007-04-17 Juniper Networks, Inc. Network traffic distribution across parallel paths
JP3834280B2 (ja) * 2002-10-01 2006-10-18 Necインフロンティア株式会社 端末装置、端末装置内の優先処理方法、およびプログラム
US7584352B2 (en) 2002-12-04 2009-09-01 International Business Machines Corporation Protection against denial of service attacks
US20040184470A1 (en) 2003-03-18 2004-09-23 Airspan Networks Inc. System and method for data routing
US20040267967A1 (en) * 2003-06-30 2004-12-30 Intel Corporation Method, system, and program for managing requests to a network adaptor
US20050249228A1 (en) * 2004-05-05 2005-11-10 Linden Cornett Techniques for providing scalable receive queues
US20050286544A1 (en) 2004-06-25 2005-12-29 Kitchin Duncan M Scalable transmit scheduling architecture
US20060004904A1 (en) * 2004-06-30 2006-01-05 Intel Corporation Method, system, and program for managing transmit throughput for a network controller
US7533176B2 (en) * 2004-07-14 2009-05-12 International Business Machines Corporation Method for supporting connection establishment in an offload of network protocol processing
US7602798B2 (en) 2004-08-27 2009-10-13 Intel Corporation Techniques to reduce latency in receive side processing
US8984140B2 (en) * 2004-12-14 2015-03-17 Hewlett-Packard Development Company, L.P. Managing connections through an aggregation of network resources providing offloaded connections between applications over a network
US20060153215A1 (en) 2004-12-20 2006-07-13 Linden Cornett Connection context prefetch
US7984180B2 (en) * 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7792102B2 (en) 2006-03-31 2010-09-07 Intel Corporation Scaling egress network traffic

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Scalable Networking: Eliminating the Receive Processing Bottleneck - Introducing RSS", WinHEC (Windows Hardware Engineering Conference) 2004, 14. April 2004
"WinHEC April 14, 2004 White Paper"

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8085769B2 (en) 2006-03-31 2011-12-27 Intel Corporation Scaling egress network traffic
US9276854B2 (en) 2006-03-31 2016-03-01 Intel Corporation Scaling egress network traffic

Also Published As

Publication number Publication date
US20120093159A1 (en) 2012-04-19
TWI374636B (en) 2012-10-11
US8937944B2 (en) 2015-01-20
US20070230489A1 (en) 2007-10-04
US7792102B2 (en) 2010-09-07
WO2007117916A1 (en) 2007-10-18
US20100329264A1 (en) 2010-12-30
TW200807966A (en) 2008-02-01
US8085769B2 (en) 2011-12-27
US20150207738A1 (en) 2015-07-23
US9276854B2 (en) 2016-03-01

Similar Documents

Publication Publication Date Title
DE112007000733T5 (de) Skalierung von ausgehendem Netzverkehr
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE112008002550B4 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
JP4150336B2 (ja) 共有属性に基づいて圧縮キューペアから複数の仮想キューペアを作成する構成
DE112014000415B4 (de) Quantisierte Überlastbenachrichtigung in einem virtuellen Netzwerksystem
DE102018210537A1 (de) Mikrodienste-Architektur
DE102020112346A1 (de) Techniken zum betrieb einer tdm-mac
DE112020002498T5 (de) System und verfahren zur erleichterung einer effizienten paketweiterleitung in einer netzwerkschnittstellensteuerung (nic)
DE112007000975B4 (de) Techniken zum Erzeugen von Netzwerkprotokolleinheiten
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE112017003279T5 (de) Grafikverarbeitungseinheit (gpu) für pakettransfer
DE112007001529T5 (de) Flexibles und erweiterbares Receive Side Scaling
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE112011102415T5 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
DE102020109669A1 (de) Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen
DE102019104531A1 (de) Anomalieerkennung in einem netzswerksbereichskontroller
DE102015102871A1 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE112012004550T5 (de) Zustandsmigration für einen Remote Direct Memory Access-Adapter in einer virtuellen Umgebung
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
US8539089B2 (en) System and method for vertical perimeter protection
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE102020201347A1 (de) Technologien zum abgleichen von sicherheitsanforderungen von funktion-als-dienst in edge-clouds
DE102021207394A1 (de) Zusammenführen von paketen auf der grundlage von hinweisen, die vom netzwerkadapter erzeugt werden
DE102021127325A1 (de) Flexibles hochverfügbarkeits-computing mit parallel konfigurierbaren geweben

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012743000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012743000

Effective date: 20121121

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012743000

Ipc: H04L0012947000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012743000

Ipc: H04L0012947000

Effective date: 20140919

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final