-
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]