DE112007000733T5 - Skalierung von ausgehendem Netzverkehr - Google Patents
Skalierung von ausgehendem Netzverkehr Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 32
- 238000013507 mapping Methods 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 6
- 238000004519 manufacturing process Methods 0.000 claims 5
- 230000015654 memory Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 101100172132 Mus musculus Eif3a gene Proteins 0.000 description 1
- 101001094044 Mus musculus Solute carrier family 26 member 6 Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/021—Ensuring consistency of routing table updates, e.g. by using epoch numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/13—Flow control; Congestion control in a LAN segment, e.g. ring or bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/621—Individual queue per connection or flow, e.g. per VC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
- H04L47/6225—Fixed service order, e.g. Round Robin
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6295—Queue 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
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 System100 , umgesetzt werden. System100 kann einen Prozessor oder mehrere Prozessoren102A ,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 Prozessoren102A ,102B , ...,102N im Wesentlichen die gleichen Funktionen ausüben. Jeder oder mehrere der Prozessoren102A ,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 Prozessoren102A ,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 Speicher104 umfassen. Speicher104 kann maschinell ausführbare Befehle132 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. Speicher104 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 Chipsatz108 einen Eingabe-/Ausgabe-Steuerungs-Hub (ICH) und einen Speicher-Steuerungshub (MCH) umfassen, obwohl Ausführungsformen der Erfindung dadurch nicht eingeschränkt werden. Chipsatz108 kann ein Host-Bridge-/Hub-System umfassen, das Prozessor102A ,102B , ...,102N und Host-Speicher104 aneinander und an den lokalen Bus106 koppeln kann. Chipsatz108 kann mit Speicher104 über Speicherbus112 und mit Host-Prozessor102 über Systembus110 Daten austauschen. In alternativen Ausführungsformen können Host-Prozessor102 und Host-Speicher104 statt über Chipsatz108 direkt mit Bus106 verbunden sein. - Der lokale Bus
106 kann mit einem Steckkartenplatz120 mit einem (nicht gezeigtem) Busanschluss verbunden sein. Der lokale Bus106 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 Bus106 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). Bus106 kann Bussysteme anderer Arten und Konfigurationen umfassen. - System
100 kann zusätzlich einen oder mehrere Netzwerkcontroller126 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 Pakete140 an Einrichtungen senden, die an ein Netzwerk, beispielsweise an ein lokales Netzwerk, gekoppelt sind, und/oder Pakete140 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 Netzwerkcontroller126 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 Netzwerkcontroller126 umfassen. Netzwerkcontroller126 braucht nicht in Hauptplatine118 , sondern kann in Chipsatz108 integriert sein. Stattdessen kann eine Steckkarte128 (z. B. NIC (Netzwerkkarte)), die sich in einen Steckkartenplatz120 einfügen lässt, Netzwerkcontroller126 umfassen. Steckkartenplatz120 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 Steckkarte128 enthaltenen (nicht gezeigten) PCI-Busanschluss entsprechen. Steckkartenplatz120 und Steckkarte128 können so gebaut sein, dass sich Steckkarte128 in Steckkartenplatz120 einstecken lässt. Wenn Steckkarte128 in Steckkartenplatz120 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 Logik130 in Steckkarte128 mit Systembus110 elektrisch verbunden werden. - Das System kann Logik
130 umfassen. Logik130 kann Hardware, Software oder eine Kombination von Hardware und Software (z. B. Firmware) umfassen. Beispielsweise kann Logik130 eine Schaltungsanordnung (z. B. einen Schaltkreis oder mehrere Schaltkreise) zur Ausführung hier beschriebener Operationen umfassen. Beispielsweise kann Logik130 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. Logik130 kann verdrahtet sein, um eine bestimmte Operation oder mehrere Operationen auszuführen. Alternativ oder zusätzlich kann Logik130 zur Ausführung dieser Operationen in maschinell ausführbaren Befehlen132 enthalten sein, die in einem Speicher, beispielsweise in Speicher104 , gespeichert sind. Alternativ oder zusätzlich kann Logik130 in Firmware enthalten sein. Verschiedene Komponenten des Systems100 einschließlich Netzwerkcontroller126 , Chipsatz108 , einer oder mehrere der Prozessoren102A ,102B , ...,102N und/oder die Hauptplatine118 können eine Logik umfassen. Logik130 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 System100 einen Server mit Multiprozessoren102A ,102B , ...,102N und multiplen Netzwerkcontrollern126 umfassen. Die Prozessoren102A ,102B , ...,102N , Speicher104 und Busse106 ,110 ,112 können in einer einzelnen Leiterplatte, beispielsweise in einer Systemhauptplatine118 , enthalten sein, ohne dass die Ausführungsformen der Erfindung in dieser Hinsicht eingeschränkt sind. -
2 veranschaulicht ein Netzwerk200 , in dem die Ausführungsformen der Erfindung betrieben werden können. Netzwerk200 kann eine Mehrzahl von Knoten202A , ...202N umfassen, wobei sich der Knoten202A , ...202N über ein Kommunikationsmedium204 kommunikativ miteinander gekoppelt sein kann. Die Knoten202A , ...202N können über Medium204 , welches ein Paket oder mehrere Pakete kodieren kann, Blöcke eines Signals oder mehrerer Signale übertragen oder empfangen. Kommunikationsmedium104 kann beispielsweise ein optisches und/oder elektrisches Kabel oder mehrere solcher Kabel umfassen, wobei viele Alternativen möglich sind. Beispielsweise kann Kommunikationsmedium104 Luft und/oder Vakuum umfassen, durch die beziehungsweise das die Knoten202A , ...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 Knoten202A , ...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 Knoten202A , ...202N eine Endstation oder mehrere Endstationen umfassen. Ebenfalls zusätzlich oder alternativ kann Netzwerk200 eine oder mehrere Zwischenstationen (nicht gezeigt) umfassen, und Medium204 kann zumindest einige der Knoten202A , ...202N und eine oder mehrere dieser Zwischenstationen kommunikativ miteinander verbinden. Natürlich sind viele Alternativen möglich. -
3 veranschaulicht ein System300 gemäß mindestens einer Ausführungsform der Erfindung. Wie in3 veranschaulicht, kann Speicher104 ein Betriebssystem304 enthalten. Betriebssystem304 kann Systemressourcen und Steuerungsaufgaben verwalten, die auf System100 ausgeführt werden. Betriebssystem304 kann einen oder mehrere Protokollstapel306 (nur einer gezeigt) umfassen. Protokollstapel306 kann ein Programm oder mehrere Programme zum Verarbeiten von Paketen104 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 Paketen104 für das Übertragen und/oder Empfangen über ein Netzwerk umfasst. Protokollstapel306 kann alternativ in einem dedizierten Subsystem, beispielsweise in einer TCP Offload Engine, enthalten sein. Betriebssystem304 kann zusätzlich einen oder mehrere Treiber308 (nur einer gezeigt) umfassen. Zum Beispiel kann Treiber308 einen Netzwerktreiber308 umfassen. Netzwerktreiber308 kann die Schnittstelle zwischen einem Netzwerkcontroller, beispielsweise Netzwerkcontroller126 , und Betriebssystem304 bereitstellen. Speicher104 kann zusätzlich eine Anwendung oder mehrere Anwendungen302 (nur eine gezeigt) umfassen. Anwendung302 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 von4 beginnt bei Block400 und schreitet zu Block402 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 Anschluss312 anzufordern, der es Anwendung302 ermöglicht, mit einer anderen Anwendung über ein Netzwerk Daten auszutauschen. Protokollstapel306 kann den Anschluss312 herstellen. Anwendung302 kann Daten erzeugen und Protokollstapel306 von Betriebssystem304 aufrufen, um ein Paket oder mehrere Pakete140 zu erzeugen, welches/welche die an die andere Anwendung zu sendenden Daten enthält/enthalten. Jedes Paket140 kann einen Header und Nutzdaten einschließen. Der Header kann Informationen über den Anschluss312 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 Protokollstapel306 den Netzwerktreiber308 aufrufen, eine Sendeanfrage zu erzeugen, die das Datenpaket oder die Datenpakete140 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 Sendewarteschlangen310A ,310B , ...,310N , die zumindest teilweise auf dem Anschluss312 basieren, der dem Paket oder den Paketen140 zugeordnet ist, das Lenken des Pakets oder der Pakete140 , zumindest teilweise auf einer bekannten Anzahl von Sendewarteschlangen310A ,310B , ...,310N basierend, die von einer bestimmten Netzwerkschnittstelle bereitgestellt werden, umfassen. In dieser Ausführungsform kann zum Beispiel Protokollstapel306 die Anzahl der Sendewarteschlangen310A ,310B , ...,310N , welche von einer bestimmten Netzwerkschnittstelle bereitgestellt werden, und die spezifischen Kennzeichen der Netzwerkschnittstelle kennen. „Netzwerkschnittstelle" kann sich zum Beispiel auf Netzwerktreiber308 beziehen, welcher zum System100 aufgeschlossen ist, wo der Netzwerktreiber308 anzeigen kann, ob eine Sendeanpassung unterstützt wird. Falls dies der Fall ist, kann Protokollstapel306 Netzwerktreiber308 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 Sendewarteschlangen310A ,310B , ...,310N , die zumindest teilweise auf dem Anschluss312 basieren, der dem Paket oder den Paketen140 zugeordneten ist, das Erzeugen eines eindeutigen Bezeichners314 zwecks Zuordnen zum Anschluss und das Zuordnen des eindeutigen Bezeichners314 (verwendet zur Kennzeichnung eines vorgegebenen Anschlusses) zu einer der Sendewarteschlangen310A ,310B , ...,310N umfassen. Zum Beispiel kann Protokollstapel306 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. Protokollstapel306 kann den eindeutigen Bezeichner314 zum Netzwerktreiber308 übertragen, und Netzwerktreiber308 kann dies dazu verwenden, um das Paket oder die Pakete140 einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen310A ,310B , ...,310N zuzuordnen. - Der eindeutige Bezeichner
314 kann einer der Sendewarteschlangen310A ,310B , ...,310N zugeordnet sein, indem zum Beispiel ein Algorithmus zum Abbilden des eindeutigen Bezeichners314 auf einer bestimmten Sendewarteschlange310A ,310B , ...,310N verwendet wird. Alternativ kann der eindeutige Bezeichner314 in einer Referenztabelle316 registriert sein, welche Einträge von eindeutigen Bezeichnern314 und den entsprechenden Sendewarteschlangen310A ,310B , ...,310N enthält und in der eine entsprechende Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen310A ,310B , ...,310N ausgewählt werden kann. Falls der eindeutige Bezeichner314 nicht in der Referenztabelle316 zu finden ist, kann der Referenztabelle316 ein Eintrag hinzugefügt werden. Es gibt eine Reihe von Möglichkeiten zum Auswählens der einem bestimmten eindeutigen Bezeichner314 entsprechenden Sendewarteschlange310A ,310B , ...,310N für neue Einträge; zum Beispiel die Round-Robin-Auswahl oder das Verwenden von niedrigen Bits des eindeutigen Bezeichners314 für das Abbilden auf eine Sendewarteschlange310A ,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 Referenztabelle316 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 Netzwerktreiber126 das Paket oder die Pakete140 an die Sendewarteschlange310A ,310B , ...,310N senden. Das Paket oder die Pakete140 auf der Sendewarteschlange310A ,310B , ...,310N können anschließend vom Netzwerkcontroller126 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 Pakete104 an die Sendewarteschlange310A ,310B , ...,310N ermitteln, ob sich die Referenztabelle316 verändert hat, und falls sich Referenztabelle316 verändert hat, kann Protokollstapel306 auf eines oder mehrere der zuvor gesendeten Pakete140 warten, um die drahtgebundene Übertragung abzuschließen, bevor neue Pakete140 an den Netzwerktreiber208 gesendet werden. Zum Beispiel kann Protokollstapel306 die Referenztabelle316 regelmäßig verändern, um die Belastung der Prozessoren102A ,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 von5 beginnt bei Block500 und schreitet zu Block502 vor, wo das Verfahren das Empfangen eines Pakets oder mehrerer Pakete, die einem Anschluss zugeordnet sind, umfassen kann. In einer Ausführungsform kann Netzwerktreiber308 ein einem Anschluss zugeordnetes Paket140 oder mehrere solcher Pakete empfangen. Nachdem zum Beispiel Protokollstapel306 ein Paket oder mehrere Pakete140 erzeugt hat, kann Protokollstapel306 das Paket oder die Pakete140 zum Netzwerktreiber308 ü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 Sendewarteschlangen310A ,310B , ...,310N , die zumindest teilweise auf dem Anschluss basieren, umfassen. In einer Ausführungsform kann das Senden des Pakets oder der Pakete140 an eine Sendewarteschlange aus einer Mehrzahl von Sendewarteschlangen310A ,310B , ...,310N , die zumindest teilweise auf dem Anschluss312 basieren, das Ausrichten des Pakets oder der Pakete140 , basierend zumindest teilweise auf einer bekannten Anzahl von Sendewarteschlangen310A ,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 Sendewarteschlangen310A ,310B , ...,310N , die zumindest teilweise auf dem Anschluss312 basieren, das Senden des Pakets oder der Pakete140 an eine Sendewarteschlange310A ,310B , ...,310N , der ein eindeutiger Bezeichner314 zugeordnet ist, umfassen. Zum Beispiel kann dies durch Senden des Pakets oder der Pakete140 zumindest teilweise auf der Basis eines Algorithmus erfolgen, der verwendet wird, um den eindeutigen Bezeichner314 auf einer Sendewarteschlange310A ,310B , ...,310N abzubilden. Alternativ kann dies das Senden des Pakets oder der Pakete140 an eine Sendewarteschlange umfassen, welches zumindest teilweise auf dem Verwenden des eindeutigen Bezeichners314 zum Registrieren in einer Referenztabelle316 und dem Auswählen einer entsprechenden Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen310A ,310B , ...,310N aus Referenztabelle316 basiert. Zum Beispiel kann Protokollstapel306 zusätzlich zum Erzeugen eines Pakets oder mehrerer Pakete140 einen eindeutigen Bezeichner314 erzeugen und diesen zum Netzwerktreiber308 übertragen. Netzwerktreiber308 kann den eindeutigen Bezeichner314 zwecks Zuordnung zu einer Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen310A ,310B , ...,310N verwenden. - In einer Ausführungsform kann Protokollstapel
306 vor dem Senden des Pakets oder der Pakete104 an die Sendewarteschlange310A ,310B , ...,310N ermitteln, ob sich die Referenztabelle316 verändert hat, und falls sich Referenztabelle316 verändert hat, kann Protokollstapel306 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- Verfahren nach Anspruch 3, wobei der eindeutige Bezeichner einen RSS-(Receive Side Scaling)-Hash-Wert umfasst.
- Verfahren nach Anspruch 1, das zusätzlich das Senden des Pakets oder der Pakete an die Sendewarteschlange umfasst.
- 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.
- 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.
- 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.
- 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.
- 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.
- Verfahren nach Anspruch 12, das zusätzlich das Senden des Pakets oder der Pakete an die entsprechende Sendewarteschlange aus der Mehrzahl von Sendewarteschlangen umfasst.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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)
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 |
-
2006
- 2006-03-31 US US11/395,959 patent/US7792102B2/en active Active
-
2007
- 2007-03-22 DE DE112007000733T patent/DE112007000733T5/de not_active Ceased
- 2007-03-22 WO PCT/US2007/064573 patent/WO2007117916A1/en active Application Filing
- 2007-03-30 TW TW096111328A patent/TWI374636B/zh active
-
2010
- 2010-09-07 US US12/877,072 patent/US8085769B2/en active Active
-
2011
- 2011-12-23 US US13/336,497 patent/US8937944B2/en active Active
-
2014
- 2014-12-09 US US14/564,705 patent/US9276854B2/en active Active
Non-Patent Citations (2)
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)
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 |