DE112007001529T5 - Flexibles und erweiterbares Receive Side Scaling - Google Patents

Flexibles und erweiterbares Receive Side Scaling Download PDF

Info

Publication number
DE112007001529T5
DE112007001529T5 DE112007001529T DE112007001529T DE112007001529T5 DE 112007001529 T5 DE112007001529 T5 DE 112007001529T5 DE 112007001529 T DE112007001529 T DE 112007001529T DE 112007001529 T DE112007001529 T DE 112007001529T DE 112007001529 T5 DE112007001529 T5 DE 112007001529T5
Authority
DE
Germany
Prior art keywords
package
protocol
packet
property
hash value
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
DE112007001529T
Other languages
English (en)
Inventor
Stephen Hillsboro Goglin
Linden Portland Cornett
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 DE112007001529T5 publication Critical patent/DE112007001529T5/de
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control

Landscapes

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

Abstract

Verfahren, das folgende Schritte umfasst:
Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle als Antwort auf ein Empfangen eines Pakets, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen;
Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten; und
Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll.

Description

  • BEREICH
  • Ausführungsformen dieser Erfindung beziehen sich auf flexibles und erweiterbartes Receive Side Scaling.
  • HINTERGRUND
  • Multiprozessor-Systeme wurden in den letzten paar Jahren alltäglich und ermöglichen mehrere nebenläufige Prozesse im System, um eine Vernetzung mit höherer Geschwindigkeit zu erreichen. Um eine optimale Verwendung dieser Architektur zu erreichen, kann eine als Receive Side Scaling (hiernach „RSS") bekannte Technologie verwendet werden, um eine Skalierung einer Empfangsverarbeitung mit der Anzahl von verfügbaren Computerprozessoren zu ermöglichen, indem zugelassen wird, dass die Netzwerklast von einem Netzwerkcontroller auf mehrere Prozessoren ausbalanciert wird. RSS wird in „Scalable Networking: Eliminating the Receive Processing Bottleneck – Introducing RSS", WinHEC (Windows Hardware Engineering Conference), 19. April 2005 beschrieben (hiernach "das WinHEC 19. April 2005, White Paper"). RSS ist Teil der Network Device Interface Spezifikation (hiernach „NDIS") 6.0, die von Microsoft® Windows® erhältlich ist. NDIS 6.0 stellt einen Vorrichtungstreiber bereit, der einem einzigen Netzwerkcontroller ermöglicht, mehrere Netzwerkprotokolle zu unterstützen, oder der mehreren Netzwerkcontrollern ermöglicht, mehrere Netzwerkprotokolle zu unterstützen. An NDIS 6.0 wird nach wie vor gearbeitet, allerdings sind darüber Informationen von Microsoft® Corporation aus Redmond, Washington erhältlich.
  • Systeme, die RSS implementieren, unterstützen derzeit nur eine beschränkte Anzahl von von RSS unterstützten Protokollen. In aktuellen RSS-Entwürfen werden zum Beispiel nur IPv4/v6-Protokolle auf der Netzwerkschicht und TCP und UDP auf der Transportschicht unterstützt. Allgemein werden Pakete, die einem der unterstützten Protokolle entsprechen, gehasht, um zu bestimmen, welcher Prozessor ein gegebenes Paket verarbeiten wird, und Pakete, die nicht einem der unterstützten Protokolle entsprechen, werden an einen Standardprozes sor gesendet. Pakete, die nicht einem der unterstützen Protokolle entsprechen, können sich deshalb anhäufen und zu Flaschenhälsen des Standardprozessors führen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungsformen der vorliegenden Erfindung werden beispielhaft und nicht beschränkend durch die Figuren der begleitenden Zeichnungen dargestellt, in denen sich gleiche Bezugszeichen auf ähnliche Elemente beziehen und in denen:
  • 1 ein System gemäß einer Ausführungsform darstellt.
  • 2 ein Blockdiagramm ist, das ein System gemäß einer Ausführungsform darstellt.
  • 3 ein Flussdiagramm ist, das ein Verfahren gemäß einer Ausführungsform darstellt.
  • 4 eine Protokolltabelle gemäß einer Ausführungsform ist.
  • 5 ein Flussdiagramm ist, das ein Verfahren gemäß einer Ausführungsform darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Unten beschriebene Beispiele sind nur für darstellende Zwecke und in keiner Weise dazu bestimmt, die Ausführungsformen der Erfindung zu beschränken. Somit ist verständlich, dass an Stellen, an denen Beispiele detailliert beschrieben sein können oder an denen eine Auflistung von Beispielen bereitgestellt wird, die Beispiele nicht als erschöpfend ausgelegt werden dürfen und die Ausführungsformen der Erfindung nicht auf die beschriebenen und/oder dargestellten Beispiele beschränken.
  • 1 stellt ein System in einer Ausführungsform dar. Ein System 100 kann einen oder mehrere Prozessoren 102A, 102B, ..., 102N, einen Host-Speicher 104, Busse 106, 110, 112 und einen Netzwerkcontroller 126 aufweisen. Das System 100 kann mehr als einen und andere Typen von Speichern, Bussen und Netzwerkcontrollern aufweisen; dennoch werden diese dargestellten zum Zwecke der Einfachheit der Diskussion beschrieben. Die Prozessoren 102A, 102B, ..., 102N, der Host-Speicher 104 und die Busse 106, 110, 112 können auf einer einzigen Leiterplatte enthalten sein, wie zum Beispiel auf einem System-Motherboard 118.
  • Ein „Prozessor", wie hier besprochen, bezieht sich auf eine Kombination von Hardware- und Softwareressourcen zum Durchführen von Berechnungsaufgaben. So kann zum Beispiel ein Prozessor einen Systemspeicher und eine Verarbeitungsschaltungsanordnung (z. B. eine Zentraleinheit (CPU) oder einen Microcontroller) aufweisen, um maschinenlesbare Instruktionen zum Verarbeiten von Daten entsprechend einem vordefinierten Instruktionssatz auszuführen. Alternativ kann ein Prozessor nur die Verarbeitungsschaltungsanordnung (z. B. die CPU) aufweisen. Ein Prozessor kann einen Multi-Core-Prozessor mit einer Vielzahl von Berechnungs-Engines aufweisen. Alternativ kann ein Prozessor eine Berechnungs-Engine aufweisen, die in dem Multi-Core-Prozessor enthalten sein kann, in dem ein Betriebssystem die Berechnungs-Engine als einen diskreten Prozessor mit einem vollständigen Satz von Ausführungsressourcen auffassen kann. Weitere Möglichkeiten existieren.
  • Das System kann eine Logik 130 aufweisen. Die Logik 130 kann Hardware, Software oder eine Kombination von Hardware und Software (z. B. Firmware) aufweisen. So kann z. B. die Logik 130 eine Schaltungsanordnung (d. h. eine oder mehrere Schaltungen) aufweisen, um die hier beschriebenen Operationen durchzuführen. Die Logik 130 kann zum Beispiel eine oder mehrere digitale Schaltungen, eine oder mehrere analoge Schaltungen, eine oder mehrere Zustandsmaschinen, programmierbare Logik und/oder eine oder mehrere ASICs (Application-Specific Integrated Circuits) aufweisen. Die Logik 130 kann festverdrahtet sein, um eine oder mehrere Operationen durchzuführen. Alternativ oder zusätzlich kann die Logik 130 als maschinenausführbare Instruktionen 132 verwirklicht sein, die in einem Speicher, wie z. B. Speicher 104 gespeichert sind, um diese Operationen durchzuführen. Alternativ oder zusätzlich kann die Logik 130 als Firmware verwirklicht sein. Die Logik kann in verschiedenen Komponenten des Systems 100 enthalten sein, umfassend den Netzwerkcontroller 126, einen Chipsatz 108, die Prozessoren 102A, 102B, ..., 102N und/oder auf dem Motherboard 118. Die Logik 130 kann verwendet werden, um verschiedene Funktionen durch verschiedene Komponenten, wie hier beschrieben, durchzuführen.
  • Der Chipsatz 108 kann einen oder mehrere integrierte Schaltungschips aufweisen, wie z. B. die, die aus integrierten Schaltungschipsätzen ausgewählt wurden, die von Intel® Corporation kommerziell erhältlich sind (z. B. Graphik-, Speicher- und I/O-Controller-Hub-Chipsätze), obwohl andere ein oder mehrere integrierte Schaltungschips ebenfalls oder alternativ verwendet werden können. Gemäß einer Ausführungsform kann der Chipsatz 108 einen Eingabe/Ausgabe-Steuer-Hub (ICH) und/oder einen Speichersteuer-Hub (MCH) aufweisen, obwohl Ausführungsformen der Erfindung nicht hierdurch beschränkt sind. Der Chipsatz 108 kann eine Host-Bridge/ein Hub-System aufweisen, die/das den Prozessor 102A, 102B, ..., 102N und den Host-Speicher 104 miteinander und an den lokalen Bus 106 koppelt. Der Chipsatz 108 kann mit dem Speicher 104 über den Speicherbus 112 und mit den Prozessoren 102A, 102B, ..., 102N über den Systembus 110 kommunizieren. Der Prozessor 102 und der Host-Speicher 104 können in alternativen Ausführungsformen statt über den Chipsatz 108 direkt an den Bus 106 gekoppelt sein.
  • Der lokale Bus 106 kann einen Bus aufweisen, der der Peripheral Component Interconnection (PCI) Local Bus-Spezifikation, Revision 2.2, 18. Dezember 1998 entspricht, die von der PCI Special Interest Group, Portland, Oregon, USA erhältlich ist (hiernach als ein „PCI-Bus" bezeichnet). Alternativ kann z. B. der Bus 106 einen Bus aufweisen, der der PCI Express-Basisspezifikation, Revision 1.0a, 15. April 2003, entspricht, die von der PCI Special Interest Group erhältlich ist (hiernach als ein „PCI Express-Bus" bezeichnet). Der Bus 106 kann andere Typen und Konfigurationen von Bussystemen aufweisen.
  • Der Netzwerkcontroller 126 kann in einer Schaltungskarte 124 (d. h. Netzwerkschnittstellenkarte oder NIC) enthalten sein, die in einen Schaltungskarteneinschub 114 eingesteckt werden kann. Ein „Netzwerkcontroller", wie hier bezeichnet, bezieht sich auf eine Vorrichtung, die an ein Datenübertragungsmedium gekoppelt sein kann, um Daten an oder Daten von anderen Vorrichtungen, die an das Datenübertragungsmedium gekoppelt sind, zu senden oder zu empfangen. Ein Netzwerkcontroller kann z. B. entworfen sein, um Daten an oder Daten von Vorrichtungen, die an ein Netzwerk gekoppelt sind, wie z. B. ein Local Area Network, zu senden oder zu empfangen. Ein solcher Netzwerkcontroller kann mit den anderen Vorrichtungen gemäß einem beliebigen aus unterschiedlichen Datenkommunikationsformaten kommunizieren, wie z. B. Kommunikationsformate gemäß Versionen nach IEEE Std. 802.3 (Ethernet), IEEE Std. 802.11, IEEE Std. 802.16, Universal Serial Bus, Firewire, asynchroner Transfermodus (ATM), synchrones optisches Netzwerk (SONET) oder synchrone digitale Hierarchie(SDH)-Standards. Ein Netzwerkcontroller kann in alternativen Ausführungsformen einen beliebigen aus weiteren I/O-Vorrichtungen aufweisen, wie z. B. einen Controller eines Datenspeichersys tems. Dies sind jedoch lediglich Beispiele eines Netzwerkcontrollers und Ausführungsformen der vorliegenden Erfindung sind diesbezüglich nicht beschränkt.
  • Der Netzwerkcontroller 126 kann die Logik 130 aufweisen, um die Operationen, die hier als von dem Netzwerkcontroller 126 und/oder dem System 100 durchgeführt beschrieben werden, durchzuführen. Wenn die Schaltungskarte 124 in den Schaltungskarteneinschub 114 eingesteckt ist, kann ein PCI-Bus-Verbinder (nicht gezeigt) auf dem Schaltungskarteneinschub 114 elektrisch und mechanisch mit einem PCI-Bus-Verbinder (nicht gezeigt) auf der Schaltungskarte 124 gekoppelt werden. Wenn diese PCI-Bus-Verbinder dermaßen miteinander gekoppelt werden, kann die Logik 130 in der Schaltungskarte 124 elektrisch an den Bus 106 gekoppelt werden. Wenn die Logik 130 an den Bus 106 elektrisch gekoppelt ist, kann jeder der Prozessoren 102A, 102B, ..., 102N Daten und/oder Kommandos mit der Logik 130 über den Bus 106 austauschen, die es dem einem oder mehreren Prozessoren 102A, 102B, ..., 102N ermöglichen können, den Betrieb der Logik 130 zu steuern und/oder zu überwachen. Der Netzwerkcontroller 126 kann eher auf dem System-Motherboard 118 enthalten sein, als sich auf der Schaltungskarte 124 zu befinden. Alternativ kann der Netzwerkcontroller 126 in einem Chipsatz 108 integriert sein.
  • Der Host-Speicher 104 kann maschinenausführbare Instruktionen 132, die in der Lage sind, ausgeführt zu werden, und/oder Daten speichern, die in der Lage sind, dass auf sie zugegriffen wird, dass mit ihnen gearbeitet wird und/oder dass sie von einer Logik, wie z. B. der Logik 130, manipuliert werden. Der Host-Speicher 104 kann z. B. einen Nur-Lese-, einen Massenstorage-, einen computerzugreifbaren Direktzugriffsspeicher und/oder einen oder mehrere andere Typen von maschinenzugreifbaren Speichern aufweisen. Die Ausführung von Programminstruktionen 132 und/oder das Zugreifen, das Arbeiten auf und/oder die Manipulation von diesen Daten durch die Logik 130 kann z. B. dazu führen, dass z. B. das System 100 und/oder die Logik 130 irgendeine oder alle der hier beschriebenen Operationen ausführen.
  • 2 ist ein Blockdiagramm gemäß einer Ausführungsform der Erfindung. In einer Ausführungsform können Protokolltabelle(n) 202, eine Umwegtabelle 210 und eine Hash-Funktion 206 in dem Netzwerkcontroller 126 implementiert sein und Empfangsschlangen 212A, 212B, ..., 212N können in dem Host-Speicher 104 implementiert sein.
  • 3 stellt ein Verfahren gemäß einer Ausführungsform der Erfindung dar. Das Verfahren beginnt in Block 300 und fährt mit Block 302 fort, in dem das Verfahren als Antwort auf ein Empfangen eines Pakets ein Nachschlagen einer Paketeigenschaft in einer von mindestens einer Protokolltabelle aufweisen kann, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen.
  • Ein „Paket" bezieht sich auf eine Sequenz von einem oder mehreren Symbolen und/oder Werten, die durch einen oder mehrere Signale kodiert sein können, die von mindestens einem Sender an mindestens einen Empfänger übertragen werden. Ein Paket kann durch einen bestimmten Protokollstapel verarbeitet werden. Ein Beispiel eines Protokollstapels ist der TCP/IP(Transport Control Protocol/Internet Protocol)-Stapel. Ein Paket kann ein oder mehrere Felder aufweisen, die einen Header, Daten und einen Nachspann umfassen. Innerhalb des Headers können zusätzliche Felder sein. In einem IP-Paket kann z. B. der Header eine IP-Version, Paketlänge, IP-Adresse einer Quelle und IP-Adresse eines Ziels umfassen. Die Felder können mit einem Satz von Bits identifiziert werden. So kann z. B. das IP-Versionsfeld die ersten vier Bits des IP-Headers umfassen und die IP-Adressen der Quelle und des Ziels können die letzten 64 Bits des IP-Headers umfassen.
  • Ein Paket kann in vielen Schichten eingekapselt werden, wobei jede Schicht einem Protokoll zugeordnet werden kann. Ein Paket, das einem Protokoll zugeordnet ist, bezieht sich, wie hier verwendet, auf ein Paket innerhalb einer bestimmten Schicht, die einem bestimmten Protokoll zugeordnet ist. Ein Paket 200 kann z. B. ein Ethernet-Paket aufweisen, das z. B. ein TCP-Paket (mit z. B. einem Header, Daten und einem Nachspann) umfasst, das innerhalb eines IP-Pakets (mit z. B. einem Header, Daten und einem Nachspann, wobei der Datenabschnitt des IP-Pakets das TCP-Paket umfasst) eingekapselt ist. In diesem Beispiel kann das Paket 200 sowohl dem IP-Protokoll als auch dem TCP-Protokoll zugeordnet werden. Abhängig von der verwendeten Protokollsammlung können verschiedene andere Einkapselungsschichten vorhanden sein.
  • Eine „Paketeigenschaft" bezieht sich auf eine Eigenschaft eines Pakets. Diese Eigenschaften können z. B. als in einer oder mehreren Schichten betrachtet werden. Mehrere Schichten können z. B. Paketeigenschaften aufweisen, die das Protokoll für die Schicht und Adressen oder Ports der Quelle und des Ziels umfassen.
  • Wie in 4 dargestellt, kann jede der mindestens einen Protokolltabelle(n) 202 Einträge 400A, 400B, ..., 400X umfassen, wobei jeder Eintrag eine Paketeigenschaft 402A, 402B, ..., 402X aufweist, die einem Versatz 404A, 404B, ..., 404X und einer Maske 406A, 406B, ..., 406X entspricht. Die Protokolltabelle(n) 202 kann/können eingerichtet sein, um eine beliebige Anzahl von Paketeigenschaften zu umfassen, und die Paketeigenschaften können sich unterscheiden (z. B. Protokoll, Ziel-Port usw.). Die Protokolltabelle(n) 202 kann/können eine einzelne Tabelle umfassen, um alle Protokolle aufzunehmen. Alternativ kann/können die Protokolltabelle(n) 202 mehrere Tabellen umfassen, wobei jede Protokolltabelle(n) 202 einer Paketeigenschaft für eine gegebene Schicht entsprechen kann. Des weiteren können sich die Paketeigenschaften für jede Schicht unterscheiden.
  • Der Versatz 404A, 404B, ..., 404X kann eine Distanz (z. B. Bits) von einem Start-Bit im Paket 200 (z. B. Ende eines Paket-Headers) angeben, auf die die Maske 406A, 406B, ..., 406X (z. B. Bit-Maske) angewendet werden kann, um einen Hash-Wert 204 zu ermitteln. Das Start-Bit kann z. B. den Anfang eines Pakets (z. B. das Byte 0) umfassen, der Versatz kann 20 Bits angeben und die Bit-Maske kann 32 Bits umfassen. In diesem Fall können die Bits 19 bis 50 gehasht werden, um den Hash-Wert 204 zu erzeugen. Als ein weiteres Bespiel kann das Start-Bit das Ende des Headers des Pakets 200 (z. B. das Bit 112) umfassen, der Versatz kann 0 Bits angeben und die Bit-Maske kann 32 Bits umfassen. In diesem Fall können die Bits 112 bis 143 maskiert werden, um den Hash-Wert 204 zu erzeugen. Das Start-Bit kann als eine Vorgabe angegeben werden. So kann z. B. der Anfang des Pakets als das Start-Bit angegeben werden. Des weiteren kann das Start-Bit von der Schicht abhängig sein. Alternativ kann das Start-Bit programmierbar sein. Das Start-Bit kann z. B. in einer Tabelle, wie z. B. einer beliebigen der Protokolltabelle(n) 202, definiert werden.
  • Falls das Paket 200 dem MPLS-Protokoll zugeordnet ist, kann z. B. das MPLS-Protokoll in einer der Protokolltabelle(n) 202 nachgeschlagen werden. Die Protokolltabelle(n) 202 kann/können einen Eintrag, z. B. den Eintrag 400A, für die MPLS-Paketeigenschaft 402A umfassen, in dem der Versatz 404A „OFFSET: 0x0" umfassen kann und die Maske 406A „MASK: 0xFF:FF:F0:00" umfassen kann. Falls das Start-Bit das Ende des Paket-Headers (z. B. das Bit 112) umfasst, dann würde dieser Eintrag zum Maskieren der Bits 112–143 führen, was dazu führen würde, dass der Hash-Wert 204 das oberste Label des MPLS-Stacks umfassen würde.
  • Das Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle(n) 202 um ein oder mehrere Felder des Pakets 200 zu bestimmen, die als ein Hash-Wert 204 verwendet werden sollen, kann ein iteratives Verfahren umfassen. In einer Ausführungsform kann z. B. eine nächste Schicht des Pakets 200 so lange aufgedeckt werden, bis es keine weiteren Schichten zum Aufdecken gibt. In einer Ausführungsform gibt es keine weiteren Schichten zum Aufdecken, falls eine gegebene Implementierung eine bestimmte Schicht als die letzte Schicht auszeichnet, in der die Paketeigenschaften untersucht werden sollen (nachdem z. B. die Transportschicht freigelegt wurde, liegen keine weiteren Schichten zum Aufdecken vor). Als ein weiteres Bespiel können keine weiteren Schichten zum Aufdecken vorliegen, falls ein freigelegtes Protokoll ein nicht unterstütztes Protokoll ist. Ein „freigelegtes Protokoll" kann sich auf das Protokoll der aktuell aufgedeckten Schicht oder auf ein Protokoll einer nächsten Schicht beziehen, das in der aktuell aufgedeckten Schicht angezeigt wird.
  • Falls das freigelegte Protokoll ein unterstütztes Protokoll ist, können ein oder mehrere Vorgabefelder des Pakets erhalten werden. (Falls das freigelegte Protokoll die erste Schicht ist, die aufgedeckt wurde, und es kein unterstütztes Protokoll ist, dann werden keine Vorgabefelder erhalten und das Paket kann an einen Standardprozessor zur Verarbeitung von Paketen, die nicht klassifiziert werden können, geschickt werden.) In aktuellen RSS-Entwürfen können z. B. die Vorgabefelder die IP-Adressen der Quelle und des Ziels für das IP-Protokoll in der Netzwerkschicht oder die TCP-Ports der Quelle und des Ziels für das TCP-Protokoll in der Transportschicht sein.
  • Wie hier verwendet, bezieht sich ein „nicht unterstütztes Protokoll" auf ein Protokoll, das das System nicht nativ unterstützt. Systeme, die aktuelle RSS-Entwürfe implementieren, unterstützen z. B. nativ IPv4/v6, TCP und UDP durch Festverdrahten des Systems, um diese Protokolle zu verstehen, oder Versenden die Systeme anderweitig, um diese Protokolle zu verstehen („unterstützte Protokolle"). Alle anderen Protokolle, die an den verschiedenen Schichten freigelegt werden, wären nicht unterstützt.
  • Falls es keine weiteren Schichten zum Aufdecken gibt, kann die der letzten aufgedeckten Schicht entsprechende Paketeigenschaft in einer der mindestens einen Protokolltabelle nachgeschlagen werden, um einen Versatz und eine Maske zu erhalten. Falls die Paketeigenschaft gefunden wird, können dann der Versatz und die Maske auf das Paket angewendet werden. Falls die Paketeigenschaft in der einen der mindestens einen Protokolltabelle(n) 202 nicht gefunden wird, können das eine oder die mehreren Vorgabefelder, die oben in dem iterativen Verfahren erhalten wurden, als der Hash-Wert 204 verwendet werden. Falls keine Vorgabefelder erhalten wurden, kann das Paket an einen Standardprozessor aus der Vielzahl von Prozessoren gesendet werden.
  • Durch Angeben eines Versatzes und einer Maske für Vorgabefeld(er) können die Felder, die für den Hash-Wert 204 verwendet werden, individuell angepasst werden, um die Klassifizierung des Pakets 200 in unterschiedlichen Weisen zu erlauben. So kann z. B. ein bestimmtes System statt des Sendens von TCP-Paketen an Prozessoren auf der Grundlage ihres Quell/Ziel-Ports verlangen, dass alle SYN- und FIN-Pakete an einen bestimmten Prozessor gesendet werden. Um dies zu bewerkstelligen, kann ein Eintrag 400A, 400B, ..., 400X in einer der Protokolltabelle(n) 202 auf die IP-Protokollnummer für TCP gesetzt werden, wobei der Versatz und die Maske des Eintrags dermaßen definiert sein können, um zum Ausmaskieren aller Bits des TCP-Pakets außer der SYN- und FIN-Flags zu führen.
  • Als ein weiteres Beispiel eröffnen einige Applikationen und/oder Protokolle zahlreiche TCP-Verbindungen zu einem anderen System, um eine einzige logische Datenverbindung aufzubauen. Da die TCP-Quell-Ports durch das System zufällig gewählt werden können, kann wahrscheinlich der Hash des TCP-Pakets dazu führen, dass Pakete von einigen Verbindungen aus der Vielzahl von TCP-Verbindungen zu unterschiedlichen Prozessoren als andere Verbindungen gehen. Dies würde zu ernsthaften Lokalitätsstrafen führen, da eine einzige logische Verbindung zwischen den Prozessoren hin und her springen müsste. Um diesen Konflikt aufzulösen, kann eine der Protokolltabelle(n) 202 eingerichtet sein, um einen Eintrag für unterschiedliche TCP-Ziel-Ports zu umfassen, wobei der Eintrag zu einem Ausmaskieren des Quell-Port-Felds (d. h. Bits) führen würde und allen Verbindungen von demselben TCP-Port erlauben würde, auf denselben Prozessor zu hashen. Andere Konfigurationen der Protokolltabelle(n) 202 sind möglich, um dies zu erreichen.
  • In Block 304 kann das Verfahren ein Anwenden einer Hash-Funktion auf den Hash-Wert umfassen, um ein Hash-Ergebnis zu erhalten. Mit Rückbezug auf 2 kann der Hash-Wert 204 mittels einer Hash-Funktion 206 gehasht werden, um ein Hash-Ergebnis 208 zu erhalten. Die Hash-Funktion kann einen Toeplitz-Hash aufweisen, wie in dem WinHEC, 19. April 2005, White Paper beschrieben ist.
  • In Block 306 kann das Verfahren ein Verwenden des Hash-Ergebnisses zum Bestimmen eines aus einer Vielzahl von Prozessoren aufweisen, auf dem das Paket verarbeitet werden soll. Wie in 2 dargestellt, kann die Umwegtabelle 210 verwendet werden, um die Pakete 200 an eine Empfangsschlange 212A, 212B, ..., 212N zu leiten. Die Umwegtabelle 210 kann einen oder mehrere Einträge umfassen, wobei jeder Eintrag ein Hash-Ergebnis 208 umfassen kann, das einer Empfangsschlange 212A, 212B, ..., 212N entspricht. Jede Empfangsschlange 212A, 212B, ..., 212N kann ein oder mehrere Empfangspakete 200 speichern und kann einem der Prozessoren 102A, 102B, ..., 102N entsprechen, der diese ein oder mehreren Pakete 200, die von einer gegebenen Empfangsschlange 212A, 212B, ..., 212N empfangen wurden, verarbeiten kann. Die Umwegtabelle 210 kann dermaßen eingerichtet sein, dass bestimmte Hash-Ergebnisse (die bestimmten Paketen 200 entsprechen) bestimmten Prozessoren entsprechen können (so dass die entsprechenden Pakete 200 an diese Prozessoren gesendet werden).
  • Das Verfahren kann mit Block 308 enden.
  • In einer Ausführungsform kann das oben beschriebene Verfahren in einer RSS-Umgebung eingesetzt werden. Wie in 5 dargestellt, kann ein solches Verfahren in Block 500 beginnen und mit Block 502 fortfahren, in dem als Antwort auf ein Empfangen eines Pakets das Verfahren ein Bestimmen, ob ein erstes Schichtprotokoll, das dem Paket zugeordnet ist, ein unterstütztes erstes Schichtprotokoll ist, umfassen kann. Die erste Schicht kann z. B. die Netzwerkschicht umfassen und die unterstützten Netzwerkschichtprotokolle in RSS können IPv4/v6 umfassen.
  • In Block 504 kann das Verfahren, falls das erste Schichtprotokoll nicht einem unterstützten ersten Schichtprotokoll zugeordnet ist, ein Nachschlagen des ersten Schichtprotokolls in einer ersten Protokolltabelle aufweisen, um zu bestimmen, welche Bits der Pakete als ein Hash-Wert verwendet werden sollen. Falls das Netzwerkschichtprotokoll des Pakets nicht ein IPv4/v6-Paket ist, kann z. B. das Netzwerkschichtprotokoll, das dem Paket zugeordnet ist, in einer Protokolltabelle nachgeschlagen werden. In einer Ausführungsform kann z. B. die erste Protokolltabelle eine Ethernet-Typ-Tabelle umfassen, die nicht unterstützte Netzwerkschichtprotokolle, wie z. B. MPLS (Multiprotocol Label Switching), umfasst.
  • Falls das erste Schichtprotokoll einem unterstützten ersten Schichtprotokoll zugeordnet ist, kann alternativ ein erster Satz von Bits, die dem ersten Schichtprotokoll zugeordnet sind, er halten werden und es kann danach bestimmt werden, ob ein zweites Schichtprotokoll, das dem Paket zugeordnet ist, ein unterstütztes zweites Schichtprotokoll ist.
  • Falls das zweite Schichtprotokoll nicht einem unterstütztem zweiten Schichtprotokoll zugeordnet ist, wird das zweite Schichtprotokoll in einer zweiten Protokolltabelle nachgeschlagen, um einen Hash-Wert zu bestimmen. Die zweite Schicht kann z. B. die Transportschicht umfassen und die unterstützten Transportschichtprotokolle in RSS können TCP und UDP umfassen. Falls z. B. das Transportschichtprotokoll des Pakets nicht ein TCP- oder UDP-Paket ist, kann deshalb das nicht unterstützte Transportschichtprotokoll in einer zweiten Protokolltabelle nachgeschlagen werden. In einer Ausführungsform kann z. B. die zweite Protokolltabelle eine IP-Tabelle umfassen, die spezifische Transportschichtprotokolle, wie z. B. IPSec (Internet Protocol Security), umfasst. Die Protokolltabelle(n) 202 kann/können einen Eintrag umfassen, z. B. den Eintrag 400B für das IPSec-Protokoll 402B, wobei der Versatz 404B „offset: 0x0" umfassen kann und die Maske 406B „mask: 0xFF:FF:FF:FF" umfassen kann. Wenn das Start-Bit das Ende des IP-Headers umfasst, würde dieser Eintrag nur zum Hashen der Bits des SPI (Security Parameter Index) des Pakets führen.
  • Falls das zweite Schichtprotokoll einem unterstützten zweiten Schichtprotokoll zugeordnet ist, kann ein zweiter Satz von Bits, die dem zweiten Schichtprotokoll zugeordnet sind, erhalten werden und dann kann das zweite Schichtprotokoll in einer dritten Protokolltabelle nachgeschlagen werden, um einen Hash-Wert zu bestimmen. So kann z. B. die zweite Schicht die Transportschicht umfassen und die unterstützten Transportschichtprotokolle in RSS können TCP und UDP umfassen. Falls z. B. das Transportschichtprotokoll des Pakets ein TCP- oder UDP-Paket ist, kann deshalb das Transportschichtprotokoll in einer Protokolltabelle nachgeschlagen werden.
  • In Block 506 kann das Verfahren ein Anwenden einer Hash-Funktion auf den Hash-Wert aufweisen, um ein Hash-Ergebnis zu erhalten. Wie oben beschrieben kann der Hash-Wert 204 aus einer der Protokolltabelle(n) 202 hergeleitet werden. Für die unterstützten Protokolle kann der Hash-Wert 204 ausschließlich aus den Vorgabefeldern oder aus einer Kombination von Vorgabefeldern und einer der Protokolltabelle(n) 202 erhalten werden.
  • In Block 508 kann das Verfahren ein Verwenden des Hash-Ergebnisses aufweisen, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll.
  • In einem RSS-System kann das Hash-Ergebnis 208 auf einen Eintrag in einer Umwegtabelle 210 abgebildet werden, um ein Ergebnis zu erhalten. Das Ergebnis kann zu einer anderen Variablen addiert werden, um einen Wert zu erhalten, der einer Empfangsschlange 212A, 212B, ..., 212N entspricht. Die andere Variable kann z. B. eine Basisprozessoranzahl aufweisen, die die niedrigste Anzahl von Prozessoren anzeigen kann, die in RSS verwendet werden können und die implementierungsspezifisch sein kann. Die Basisprozessoranzahl kann z. B. 0 sein. Der Netzwerkcontroller 126 kann das Paket 200 an die Empfangsschlange 212A, 212B, ..., 212N übertragen, die dem Hash-Ergebnis 208 entspricht.
  • Das Verfahren kann mit Block 510 enden.
  • Schlussfolgerung
  • In einer Ausführungsform kann deshalb ein Verfahren ein Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle als Antwort auf ein Empfangen eines Pakets, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, ein Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten, und ein Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll, aufweisen.
  • Ausführungsformen der Erfindung können eine Verarbeitung von Paketen auf der Empfangsseite ermöglichen, die auf die Anzahl von Prozessoren in einem System in einer flexiblen und erweiterbaren Weise skaliert werden soll. Statt die unterstützten Protokolle auf das, was bereits festverdrahtet oder anderweitig in das System programmiert ist, zu beschränken, stellen Ausführungsformen der Erfindung ein Verfahren für die Protokolle bereit, um einfach hinzugefügt und einfach konfiguriert zu werden. Des weiteren ermöglichen Ausführungsformen der Erfindung, dass Multiprozessorsysteme optimiert werden, indem nicht nur unterschiedliche Protokolle unterstützt werden, sondern ebenfalls, indem die Klassifikation von Paketen in einer Weise ermöglicht wird, die es den Paketen erlaubt, auf verschiedene Prozessoren verteilt zu werden.
  • In der vorangegangenen Beschreibung wurde die Erfindung mit Bezug auf spezifische Ausführungsformen davon beschrieben. Es ist jedoch offenkundig, dass verschiedene Modifikationen und Änderungen dieser Ausführungsformen gemacht werden können, ohne hiervon ab zuweichen. Entsprechend sollten die Beschreibung und die Zeichnungen in einem darstellenden statt einem restriktiven Sinn betrachtet werden.
  • ZUSAMMENFASSUNG
  • In einer Ausführungsform wird ein Verfahren bereitgestellt. Das Verfahren dieser Ausführungsform stellt ein Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle als Antwort auf ein Empfangen eines Pakets, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, ein Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten, und ein Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden sollen, bereit.
  • 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), 19. April 2005 [0002]
    • - WinHEC, 19. April 2005 [0033]

Claims (22)

  1. Verfahren, das folgende Schritte umfasst: Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle als Antwort auf ein Empfangen eines Pakets, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen; Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten; und Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll.
  2. Verfahren nach Anspruch 1, wobei das Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, folgende Schritte umfasst: Erhalten eines Versatzes und einer Maske, die der Paketeigenschaft entsprechen; und Anwenden der Maske auf das Paket bei einem Start-Bit des Pakets plus dem Versatz.
  3. Verfahren nach Anspruch 1, wobei das Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, folgende Schritte umfasst: Durchführen der folgenden Schritte, bis keine weiteren Schichten zum Aufdecken vorliegen: Aufdecken einer nächsten Schicht, um ein Protokoll freizulegen; und falls das freigelegte Protokoll ein unterstütztes Protokoll ist, Erhalten eines oder mehrer Vorgabefelder des Pakets; Setzen der aufgedeckten nächsten Schicht auf das letzte aufgedeckte Protokoll; Nachschlagen der Paketeigenschaft, die der letzten aufgedeckten Schicht entspricht, in einer aus der mindestens einen Protokolltabelle, um einen Versatz und eine Maske zu erhalten; und falls die Paketeigenschaft gefunden wird, Anwenden des Versatzes und der Maske auf das Paket.
  4. Verfahren nach Anspruch 3, das zusätzlich, falls die Paketeigenschaft in der einen aus mindestens einer Protokolltabelle nicht gefunden wird, ein Verwenden des einen oder der mehreren Vorgabefelder als den Hash-Wert umfasst.
  5. Verfahren nach Anspruch 4, das, falls dort keine Vorgabefelder vorliegen, ein Senden des Pakets an einen Standardprozessor aus der Vielzahl von Prozessoren umfasst.
  6. Verfahren, das folgende Schritte umfasst: Bestimmen als Antwort auf ein Empfangen eines Pakets, ob ein erstes Schichtprotokoll, das dem Paket zugeordnet ist, ein unterstütztes erstes Schichtprotokoll ist; und falls das erste Schichtprotokoll nicht einem unterstützten ersten Schichtprotokoll zugeordnet ist: Nachschlagen des ersten Schichtprotokolls in einer ersten Protokolltabelle, um zu bestimmen, welche Bits des Pakets als ein Hash-Wert verwendet werden sollen; Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten; und Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll.
  7. Verfahren nach Anspruch 6, das zusätzlich, falls das erste Schichtprotokoll einem unterstützten ersten Schichtprotokoll zugeordnet ist, folgende Schritte umfasst: Erhalten eines ersten Satzes von Bits, die dem ersten Schichtprotokoll zugeordnet sind; Bestimmen, ob ein zweites Schichtprotokoll, das dem Paket zugeordnet ist, ein unterstütztes zweites Schichtprotokoll ist; und falls das zweite Schichtprotokoll nicht einem unterstützten zweiten Schichtprotokoll zugeordnet ist, Nachschlagen des zweiten Schichtprotokolls in einer zweiten Protokolltabelle.
  8. Verfahren nach Anspruch 7, das zusätzlich, falls das zweite Schichtprotokoll einem unterstützten zweiten Schichtprotokoll zugeordnet ist, ein Nachschlagen einer Paket eigenschaft, die dem zweiten Schichtprotokoll entspricht, in einer dritten Protokolltabelle umfasst.
  9. Verfahren nach Anspruch 6, das zusätzlich, falls eines aus dem nicht unterstützten zweiten Schichtprotokoll und die Paketeigenschaft, die dem unterstützten zweiten Schichtprotokoll entspricht, in der einen aus mindestens einer Protokolltabelle nicht gefunden wird, ein Verwenden des erhaltenen Satzes von Bits als den Hash-Wert umfasst.
  10. Vorrichtung, die umfasst: eine Logik zum: Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle als Antwort auf ein Empfangen eines Pakets, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen; Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten; und Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll.
  11. Vorrichtung nach Anspruch 10, wobei das Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, folgende Schritte umfasst: Erhalten eines Versatzes und einer Maske, die der Paketeigenschaft entsprechen; und Anwenden der Maske auf das Paket bei einem Start-Bit des Pakets plus dem Versatz.
  12. Vorrichtung nach Anspruch 10, wobei das Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, folgende Schritte umfasst: Durchführen der folgenden Schritte, bis keine weiteren Schichten zum Aufdecken vorliegen: Aufdecken einer nächsten Schicht, um ein Protokoll freizulegen; und falls das freigelegte Protokoll ein unterstütztes Protokoll ist, Erhalten eines oder mehrerer Vorgabefelder des Pakets; Setzen der aufgedeckten nächsten Schicht auf das letzte aufgedeckte Protokoll; Nachschlagen der Paketeigenschaft, die der letzten aufgedeckten Schicht entspricht, in einer aus der mindestens einen Protokolltabelle, um einen Versatz und eine Maske zu erhalten; und falls die Paketeigenschaft gefunden wird, Anwenden des Versatzes und der Maske auf das Paket.
  13. System, das umfasst: eine Leiterplatte, die einen Schaltungskarteneinschub umfasst; und eine Schaltungskarte, die in der Lage ist, an die Leiterplatte über den Schaltungskarteneinschub gekoppelt zu werden, wobei die Schaltungskarte Logik umfasst, die betreibbar ist zum: Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle als Antwort auf ein Empfangen eines Pakets, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen; Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten; und Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll.
  14. System nach Anspruch 13, wobei die Logik zum Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, Logik umfasst zum: Erhalten eines Versatzes und einer Maske, die der Paketeigenschaft entsprechen; und Anwenden der Maske auf das Paket bei einem Start-Bit des Pakets plus dem Versatz.
  15. System nach Anspruch 13, wobei die Logik zum Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle, um einen oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, eine Logik umfasst zum: Durchführen der folgenden Schritte, bis keine weiteren Schichten zum Aufdecken vorliegen: Aufdecken einer nächsten Schicht, um ein Protokoll freizulegen; und falls das freigelegte Protokoll ein unterstütztes Protokoll ist, Erhalten eines oder mehrer Vorgabefelder des Pakets; Setzen der aufgedeckten nächsten Schicht auf das letzte aufgedeckte Protokoll; Nachschlagen der Paketeigenschaft, die der letzten aufgedeckten Schicht entspricht, in einer aus der mindestens einen Protokolltabelle, um einen Versatz und eine Maske zu erhalten; und falls die Paketeigenschaft gefunden wird, Anwenden des Versatzes und der Maske auf das Paket.
  16. System nach Anspruch 15, das zusätzlich, falls die Paketeigenschaft in der einen aus mindestens einer Protokolltabelle nicht gefunden wird, ein Verwenden des einen oder der mehreren Vorgabefelder als den Hash-Wert umfasst.
  17. System nach Anspruch 16, das, falls keine Vorgabefelder vorliegen, ein Senden des Pakets an einen Standardprozessor aus der Vielzahl von Prozessoren umfasst.
  18. Herstellungsartikel mit darauf gespeicherten Instruktionen, wobei die Instruktionen, wenn sie durch eine Maschine ausgeführt werden, zu den folgenden Schritten führen: Nachschlagen einer Paketeigenschaft in einer aus mindestens einer Protokolltabelle als Antwort auf ein Empfangen eines Pakets, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen; Anwenden einer Hash-Funktion auf den Hash-Wert, um ein Hash-Ergebnis zu erhalten; und Verwenden des Hash-Ergebnisses, um einen aus einer Vielzahl von Prozessoren zu bestimmen, auf dem das Paket verarbeitet werden soll.
  19. Herstellungsartikel nach Anspruch 18, wobei die Instruktionen, die dazu führen, dass die Maschine eine Paketeigenschaft in einer aus mindestens einer Protokolltabelle nachschlägt, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, ferner dazu führen, dass die Maschine: einen Versatz und eine Maske, die der Paketeigenschaft entsprechen erhält; und die Maske auf das Paket bei einem Start-Bit des Pakets plus dem Versatz anwendet.
  20. Herstellungsartikel nach Anspruch 18, wobei die Instruktionen, die dazu führen, dass die Maschine eine Paketeigenschaft in einer aus mindestens einer Protokolltabelle nachschlägt, um ein oder mehrere Felder des Pakets zu bestimmen, die als ein Hash-Wert verwendet werden sollen, ferner dazu führen, dass die Maschine: die folgenden Schritte durchführt, bis keine weiteren Schichten zum Aufdecken vorliegen: Aufdecken einer nächsten Schicht, um ein Protokoll freizulegen; und falls das freigelegte Protokoll ein unterstütztes Protokoll ist, Erhalten eines oder mehrerer Vorgabefelder des Pakets; die aufgedeckte nächste Schicht auf das letzte aufgedeckte Protokoll setzt; die Paketeigenschaft, die der letzten aufgedeckten Schicht entspricht, in einer aus der mindestens einen Protokolltabelle nachschlägt, um einen Versatz und eine Maske zu erhalten; und falls die Paketeigenschaft gefunden wird, den Versatz und die Maske auf das Paket anwendet.
  21. Herstellungsartikel nach Anspruch 20, der zusätzlich Instruktionen umfasst, die dazu führen, dass die Maschine das eine oder die mehreren Vorgabefelder als den Hash-Wert verwendet, falls die Paketeigenschaft in der einen aus mindestens einer Protokolltabelle nicht gefunden wird.
  22. Herstellungsartikel nach Anspruch 21, wobei, falls keine Vorgabefelder vorliegen, die Instruktionen ferner zu einem Senden des Pakets an einen Standardprozessor aus der Vielzahl von Prozessoren führen.
DE112007001529T 2006-06-28 2007-06-26 Flexibles und erweiterbares Receive Side Scaling Ceased DE112007001529T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/478,147 US7584286B2 (en) 2006-06-28 2006-06-28 Flexible and extensible receive side scaling
US11/478,147 2006-06-28
PCT/US2007/072165 WO2008002945A1 (en) 2006-06-28 2007-06-26 Flexible and extensible receive side scaling

Publications (1)

Publication Number Publication Date
DE112007001529T5 true DE112007001529T5 (de) 2009-07-30

Family

ID=38845976

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112007001529T Ceased DE112007001529T5 (de) 2006-06-28 2007-06-26 Flexibles und erweiterbares Receive Side Scaling

Country Status (5)

Country Link
US (3) US7584286B2 (de)
CN (1) CN101455040B (de)
DE (1) DE112007001529T5 (de)
TW (1) TWI400910B (de)
WO (1) WO2008002945A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7584286B2 (en) 2006-06-28 2009-09-01 Intel Corporation Flexible and extensible receive side scaling
US20080059720A1 (en) * 2006-09-05 2008-03-06 Rothman Michael A System and method to enable prioritized sharing of devices in partitioned environments
US20080086575A1 (en) * 2006-10-06 2008-04-10 Annie Foong Network interface techniques
US8639833B1 (en) * 2006-10-06 2014-01-28 Nvidia Corporation Dynamic control of scaling in computing devices
GB0802126D0 (en) * 2008-02-05 2008-03-12 Level 5 Networks Inc Scalable sockets
US8949472B2 (en) * 2008-09-10 2015-02-03 International Business Machines Corporation Data affinity based scheme for mapping connections to CPUs in I/O adapter
US8626955B2 (en) * 2008-09-29 2014-01-07 Intel Corporation Directing packets to a processor unit
US8645596B2 (en) * 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US7996548B2 (en) 2008-12-30 2011-08-09 Intel Corporation Message communication techniques
US8239699B2 (en) * 2009-06-26 2012-08-07 Intel Corporation Method and apparatus for performing energy-efficient network packet processing in a multi processor core system
US8346999B2 (en) * 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8446824B2 (en) * 2009-12-17 2013-05-21 Intel Corporation NUMA-aware scaling for network devices
US8082359B2 (en) * 2009-12-23 2011-12-20 Citrix Systems, Inc. Systems and methods for determining a good RSS key
US8819245B2 (en) * 2010-11-22 2014-08-26 Ixia Processor allocation for multi-core architectures
US8842562B2 (en) 2011-10-25 2014-09-23 Dell Products, Lp Method of handling network traffic through optimization of receive side scaling
US8874786B2 (en) 2011-10-25 2014-10-28 Dell Products L.P. Network traffic control by association of network packets and processes
US10353631B2 (en) * 2013-07-23 2019-07-16 Intel Corporation Techniques for moving data between a network input/output device and a storage device
US9473405B2 (en) * 2014-03-10 2016-10-18 Palo Alto Research Center Incorporated Concurrent hashes and sub-hashes on data streams
US9396154B2 (en) 2014-04-22 2016-07-19 Freescale Semiconductor, Inc. Multi-core processor for managing data packets in communication network
US10721160B2 (en) 2014-05-15 2020-07-21 Samsung Electronics Co., Ltd. Method of distributing data and device supporting the same
CN104375841B (zh) * 2014-12-03 2018-04-20 广州广电运通金融电子股份有限公司 一种基于linux系统的CEN/XFS标准的架构以及实现方法
US9553853B2 (en) * 2014-12-23 2017-01-24 Intel Corporation Techniques for load balancing in a packet distribution system
US9755972B1 (en) * 2015-06-09 2017-09-05 Google Inc. Protocol-independent receive-side scaling
US11394804B2 (en) * 2015-09-30 2022-07-19 Radware, Ltd. System and method for stateless distribution of bidirectional flows with network address translation
US10469569B2 (en) 2018-03-22 2019-11-05 International Business Machines Corporation Optimizing receive side scaling key selection using flow data
US11095495B2 (en) * 2019-04-05 2021-08-17 Arista Networks, Inc. Multi-result lookups
US10860325B1 (en) 2019-07-05 2020-12-08 Nokia Solutions And Networks Oy Dynamic control of processor instruction sets

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4839891A (en) 1987-07-24 1989-06-13 Nec Corporation Method for controlling data flow
JPH0286245A (ja) 1988-09-21 1990-03-27 Hitachi Ltd データリンクレイヤ処理方式
US5528605A (en) 1991-10-29 1996-06-18 Digital Equipment Corporation Delayed acknowledgement in an asymmetric timer based LAN communications protocol
US5222061A (en) 1991-10-31 1993-06-22 At&T Bell Laboratories Data services retransmission procedure
US5444718A (en) 1993-11-30 1995-08-22 At&T Corp. Retransmission protocol for wireless communications
FI98174C (fi) 1995-05-09 1997-04-25 Nokia Telecommunications Oy Datansiirtojärjestelmä, jossa on liukuvaan ikkunaan perustuva datavuonohjaus
US5712860A (en) 1995-09-22 1998-01-27 Cirrus Logic, Inc. Methods and system for using multi-block bursts in half duplex subscriber unit transmissions
US5838563A (en) 1996-04-12 1998-11-17 Fisher-Rosemont Systems, Inc. System for configuring a process control environment
US6008805A (en) 1996-07-19 1999-12-28 Cisco Technology, Inc. Method and apparatus for providing multiple management interfaces to a network device
US6023698A (en) 1996-12-05 2000-02-08 International Business Machines Corporation System and method for transparently registering and updating information over the internet
US5970063A (en) 1997-07-31 1999-10-19 Telefonaktiebolaget Lm Ericsson Method for unacknowledged data frame delivery in a noisy wireless environment
WO1999011012A1 (en) 1997-08-26 1999-03-04 Telefonaktiebolaget Lm Ericsson (Publ) Wireless communications systems and methods utilizing group frame acknowledgment
US5872777A (en) 1997-09-30 1999-02-16 Motorola, Inc. Method and apparatus for conveying data packets in a packet data communication system
US6128296A (en) * 1997-10-03 2000-10-03 Cisco Technology, Inc. Method and apparatus for distributed packet switching using distributed address tables
US6115390A (en) 1997-10-14 2000-09-05 Lucent Technologies, Inc. Bandwidth reservation and collision resolution method for multiple access communication networks where remote hosts send reservation requests to a base station for randomly chosen minislots
US6111877A (en) * 1997-12-31 2000-08-29 Cisco Technology, Inc. Load sharing across flows
US6085328A (en) 1998-01-20 2000-07-04 Compaq Computer Corporation Wake up of a sleeping computer using I/O snooping and imperfect packet filtering
US7466703B1 (en) * 1998-05-01 2008-12-16 Alcatel-Lucent Usa Inc. Scalable high speed router apparatus
DE19844702C2 (de) 1998-09-29 2002-11-21 Siemens Ag Verfahren, Empfangseinrichtung und Funkstation zur Erkennung eines Nutzdatenblocks mit fehlerhaften Nutzdatensymbolen
US6650640B1 (en) 1999-03-01 2003-11-18 Sun Microsystems, Inc. Method and apparatus for managing a network flow in a high performance network interface
US6400724B1 (en) 1999-07-16 2002-06-04 Qualcomm Inc. Method and apparatus for efficient data transmission in a voice-over-data communication system
WO2001022645A1 (en) 1999-09-20 2001-03-29 Nokia Corporaton Error control method and apparatus
US6775707B1 (en) 1999-10-15 2004-08-10 Fisher-Rosemount Systems, Inc. Deferred acknowledgment communications and alarm management
US7058064B2 (en) * 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US6977930B1 (en) * 2000-02-14 2005-12-20 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
WO2002065700A2 (en) * 2001-02-14 2002-08-22 Clearspeed Technology Limited An interconnection system
US7178145B2 (en) 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US6909713B2 (en) 2001-09-05 2005-06-21 Intel Corporation Hash-based data frame distribution for web switches
US7209996B2 (en) 2001-10-22 2007-04-24 Sun Microsystems, Inc. Multi-core multi-thread processor
US7076545B2 (en) 2002-07-31 2006-07-11 Sun Microsystems, Inc. Load balancing the servicing of received packets
CN100379236C (zh) * 2003-03-17 2008-04-02 华为技术有限公司 地址解析协议表项的处理方法
JP4196732B2 (ja) 2003-05-26 2008-12-17 日本電気株式会社 データ転送装置及びプログラム
US7400627B2 (en) * 2003-06-05 2008-07-15 Brooktree Broadband Holding, Inc. ATM header compression using hash tables
US7366092B2 (en) * 2003-10-14 2008-04-29 Broadcom Corporation Hash and route hardware with parallel routing scheme
US7620046B2 (en) * 2004-09-30 2009-11-17 Intel Corporation Dynamically assigning packet flows
US7765405B2 (en) * 2005-02-25 2010-07-27 Microsoft Corporation Receive side scaling with cryptographically secure hashing
CN1842051A (zh) * 2005-03-30 2006-10-04 国际商业机器公司 流量均衡设备和方法以及使用它们的网络转发设备和方法
US7984180B2 (en) * 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7701849B1 (en) * 2006-06-23 2010-04-20 Juniper Networks, Inc. Flow-based queuing of network traffic
US7584286B2 (en) * 2006-06-28 2009-09-01 Intel Corporation Flexible and extensible receive side scaling

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), 19. April 2005
WinHEC, 19. April 2005

Also Published As

Publication number Publication date
US8874767B2 (en) 2014-10-28
CN101455040B (zh) 2012-04-18
TWI400910B (zh) 2013-07-01
CN101455040A (zh) 2009-06-10
TW200818782A (en) 2008-04-16
US20100061377A1 (en) 2010-03-11
WO2008002945A1 (en) 2008-01-03
US20080005352A1 (en) 2008-01-03
US7584286B2 (en) 2009-09-01
US8150981B2 (en) 2012-04-03
US20120189013A1 (en) 2012-07-26

Similar Documents

Publication Publication Date Title
DE112007001529T5 (de) Flexibles und erweiterbares Receive Side Scaling
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE112008002550B4 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE112015004008B4 (de) Selektives abtasten von netzwerkpaketverkehr unter verwendung von virtuelle-maschinen-werkzeugplattformen auf cloud-basis
DE102013209372B4 (de) Ein für die Aggregation virtueller Ethernet-Ports (VEPA) geeignetes mandantenfähiges Overlay-Netzwerk
DE112012004550B4 (de) Verfahren, System und Vorrichtung zur Zustandsmigration für einen Remote Direct Memory Access-Adapter in einer virtuellen Umgebung
DE112018003059B4 (de) Identifizierung und authentifizierung von vorrichtungen in einem netzwerk
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE60033529T2 (de) Netzprozessor, speicherorganisation und verfahren
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE69826930T2 (de) System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe
DE102015102871A1 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE102007046474B4 (de) Verfahren zum Unterstützen einer IP-Netzwerk-Verbindung zwischen Teilbereichen in einer virtuellen Umgebung
DE202016107377U1 (de) Systeme zur Auslagerung von Netzwerkfunktionen über Paket-Trunking
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE102015119890A1 (de) Paralleles Verarbeiten von Service-Funktionen in Service-Funktionsketten
DE102013208431B4 (de) Großer verteilter Switch auf Fabric-Basis unter Verwendung virtueller Switches und virtueller Steuereinheiten
DE112013001904T5 (de) Paketvermittlung auf der Ebene 2 ohne Nachschlagetabelle für Ethernet-Switches
DE102008030587A1 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
DE112007000733T5 (de) Skalierung von ausgehendem Netzverkehr
DE102020119682A1 (de) System, einrichtung und verfahren zum erhöhen der effizienz von streckenübermittlungen
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE602004009574T2 (de) System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
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

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