DE112005000705T5 - Konfiguration von Umleitungstabellen - Google Patents

Konfiguration von Umleitungstabellen Download PDF

Info

Publication number
DE112005000705T5
DE112005000705T5 DE112005000705T DE112005000705T DE112005000705T5 DE 112005000705 T5 DE112005000705 T5 DE 112005000705T5 DE 112005000705 T DE112005000705 T DE 112005000705T DE 112005000705 T DE112005000705 T DE 112005000705T DE 112005000705 T5 DE112005000705 T5 DE 112005000705T5
Authority
DE
Germany
Prior art keywords
entries
redirection table
software
hardware
conflicting
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.)
Granted
Application number
DE112005000705T
Other languages
English (en)
Other versions
DE112005000705B4 (de
Inventor
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 DE112005000705T5 publication Critical patent/DE112005000705T5/de
Application granted granted Critical
Publication of DE112005000705B4 publication Critical patent/DE112005000705B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers

Abstract

Verfahren, umfassend:
Bestimmen einer Anzahl konfliktbildender Einträge in einer ersten Umleitungstabelle mit einem ersten Satz von Einträgen, wobei der erste Satz von Einträgen einem zweiten Satz von Einträgen einer zweiten Umleitungstabelle zugeordnet werden kann; und
Zuordnen des ersten Satzes von Einträgen zu dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle.

Description

  • HINTERGRUND
  • Receive-Side-Scaling (RSS) ist ein Feature in einem Betriebssystem, das Netzwerkadaptern, die RSS unterstützen, ermöglicht, Pakete gewisser Transmission Protocol/Internet Protocol (TCP/IP) Ströme zu lenken, so daß sie auf einer bestimmten zentralen Verarbeitungseinheit (CPU) verarbeitet werden, wodurch die Netzwerkverarbeitungsleistung auf Rechnerplattformen erhöht wird, die eine Mehrzahl von Prozessoren aufweisen. Weitere Einzelheiten des TCP/IP-Protokolls sind in der Veröffentlichung mit dem Titel "Transmission Control Protocol: DARPA Internet Program Protocol Specification", beschrieben, die für die Defense Advanced Projects Research Agency (RCF 793, veröffentlicht im September 1981) erstellt wurde. Das RSS-Feature skaliert den eingehenden Verkehr über die Mehrzahl von Prozessoren, um eine Begrenzung der Empfangsbandbreite auf die Verarbeitungsfähigkeiten eines einzigen Prozessors zu vermeiden.
  • Um Pakete zu der geeigneten CPU zu lenken, ist eine Hash-Funktion definiert, die als Eingang die Anfangsblockinformationen nimmt, die in dem Fluß enthalten sind, und durch einen Gerätetreiber und den TCP/IP-Stapel einen Hash-Wert ausgibt, der zur Identifizierung der CPU verwendet wird, auf der der Fluß verarbeitet werden sollte. Die Hash-funktion läuft über die verbindungsspezifischen Informationen in jedem Anfangsblock eines eintreffenden Pakets. Auf der Basis des Hash-Wertes wird jedes Paket einem bestimmten Bucket in einer Umleitungstabelle zugeordnet. In der Umleitungstabelle gibt es eine festgelegte Anzahl von Buckets und jeder Bucket kann auf einen spezifischen Prozessor verweisen. Der Inhalt der Umleitungstabelle wird von dem Host-Stapel ausgelagert. Als Reaktion auf ein eintreffendes Paket, das für einen bestimmten Bucket klassifiziert ist, kann das eintreffende Paket zu dem Prozessor gelenkt werden, der diesem Bucket zugeordnet ist.
  • Kurze Beschreibung der Zeichnungen
  • Unter Bezugnahme nun auf die Zeichnungen, in welchen durchgehend gleiche Bezugszeichen entsprechende Teile bezeichnen, zeigt:
  • 1 eine Computerumgebung gemäß bestimmten Ausführungsformen;
  • 2 ein Blockdiagramm, das zeigt, wie Pakete gemäß bestimmten Ausführungsformen unter einer Mehrzahl von Prozessoren verteilt werden;
  • 3 ein Blockdiagramm, das zeigt, wie ein Gerätetreiber gemäß bestimmten Ausführungsformen eine Software-Umleitungstabelle zu einer Hardware-Umleitungstabelle umsetzt;
  • 4 erste Operationen, die in einem Gerätetreiber gemäß bestimmten Ausführungsformen implementiert werden, der zur Ausführung in der Rechenumgebung imstande ist;
  • 5 zweite Operationen, die in einem Gerätetreiber gemäß bestimmten Ausführungsformen implementiert werden, der zur Ausführung in der Rechenumgebung imstande ist;
  • 6 ein Blockdiagramm, das gemäß bestimmten Ausführungsformen für eine beispielhafte Umsetzung von Paketen zu Prozessoren sorgt;
  • 7 ein Blockdiagramm einer Computerarchitektur für bestimmte Elemente der Rechenumgebung gemäß bestimmten Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung wird auf die beiliegenden Zeichnungen Bezug genommen, die einen Teil hiervor bilden und mehrere Ausführungsformen zeigen. Es ist offensichtlich, daß andere Ausführungsformen verwendet werden können und strukturelle und betriebliche Änderungen vorgenommen werden können.
  • 1 zeigt eine Rechen- oder Computerumgebung 100 gemäß bestimmten Ausführungsformen. Eine Rechenplattform 102 ist über eine Netzwerkschnittstellen-Hardware 106 gekoppelt. Die Rechenplattform 102 kann Pakete senden und von anderen Vorrichtungen (nicht dargestellt) durch das Netzwerk 104 empfangen.
  • Die Rechenplattform 102 kann ein Personal-Computer, ein Großrechner, ein Taschencomputer, ein Slate-PC, ein Laptop-Computer, ein Telephoniegerät, ein Netzwerkcomputer, ein Blade-Computer oder jede andere Rechenplattform sein. Das Netzwerk 104 kann das Internet, ein Intranet, ein lokales Netz (LAN), ein Speicherbereichsnetz (SAN), ein weiträumiges Netz (WAN), ein drahtloses Netz, usw. sein. Das Netzwerk 104 kann Teil eines oder mehrerer größerer Netzwerke sein oder kann ein unabhängiges Netzwerk sein oder kann aus mehreren miteinander verbundenen Netzwerken bestehen. Die Netzwerkschnittstellen-Hardware 106 kann Pakete über das Netzwerk 104 senden und empfangen. In bestimmten Ausführungsformen kann die Netzwerkschnittstellen-Hardware 106 einen Netzwerkadapter, wie eine TCP/IP-Offload Engine (TOE) Adapter, enthalten.
  • In bestimmten Ausführungsformen kann die Rechenplattform 102 eine Mehrzahl von Prozessoren 108a,...108n, ein Betriebssystem 110, einen Gerätetreiber 112, eine Software-Umleitungstabelle 114, und eine Mehrzahl von Empfangsschlangen 116a...116m enthalten.
  • Die Mehrzahl von Prozessoren 108a...108n kann Complex Instruction Set Computer (CISC) oder Reduced Instruction Set Computer (RISC) Prozessoren oder jeden anderen Prozessor enthalten. Das Betriebssystem 110 kann das MICROSOFT WINDOWS Betriebssystem das UNIX Betriebssystem oder ein anderes Betriebssystem umfassen. Der Gerätetreiber 112 kann ein Gerätetreiber für die Netzwerkschnittstellen-Hardware 106 sein. Zum Beispiel kann in bestimmten Ausführungsformen, wenn die Netzwerkschnittstellen-Hardware 106 ein Netzwerkadapter ist, der Gerätetreiber 112 ein Gerätetreiber für den Netzwerkadapter sein.
  • Die Software-Umleitungstabelle 114 ist eine Datenstruktur, die eine Mehrzahl von Einträgen enthält, wobei jeder Eintrag dazu verwendet werden kann, auf einen der Mehrzahl von Prozessoren 108a...108n zu verweisen, wo empfangene Pakete verarbeitet werden können. In bestimmten Ausführungsformen kann die Software-Umleitungstabelle 114 Teil des Betriebssystems 110 sein oder kann andernfalls dem Betriebssystemn 110 zugeordnet sein.
  • Die Empfangsschlangen 116a...116m sind Datenstrukturen die von dem Gerätetreiber 112 verwaltet werden. Die Empfangsschlangen 116a...116m können Pakete enthalten, die von der Netzwerkschnittstellen-Hardware 106 empfangen werden, die zur Verarbeitung durch die Prozessoren 108a...108n in eine Schlange gereiht werden.
  • Die Netzwerkschnittstellen-Hardware 106 kann eine Hardware-Umleitungstabelle 118 und einen Hardware-Hash-Berechner 120 enthalten. In bestimmten Ausführungsformen kann die Hardware-Umleitungstabelle 118 in Hardware in der Netzwerkschnittstellen-Hardware 106 implementiert sein, und jeder Eintrag in der Hardware-Umleitungstabelle kann dazu verwendet werden, auf einen der Mehrzahl von Prozessoren 108a...108n zu verweisen, wo empfangene Pakete verarbeitet werden können.
  • Der Hardware-Hash-Berechner 120 kann eine Hash-Funktion auf der Basis des Anfangsblocks eines empfangenen Pakets berechnen, wobei die Hash-Funktion auf einen Eintrag der Hardware-Umleitungstabelle 118 verweist. In bestimmten Ausführungsformen kann das empfangene Paket durch einen Prozessor verarbeitet werden, der dem Eintrag entspricht, den die Hash-Funktion umgesetzt hat.
  • In bestimmten Ausführungsformen kann die Software-Umleitungstabelle 114 eine andere Anzahl von Einträgen haben als die Hardware-Umleitungstabelle 118. Der Gerätetreiber 112 setzt die Software-Umleitungstabelle 114 zu der Hardware-Umleitungstabelle 118 um und lenkt empfangene Pakete zu den Prozessoren 108a...108n auf der Basis der Umsetzung.
  • 2 zeigt ein Blockdiagramm, das zeigt, wie Pakete unter einer Mehrzahl von Prozessoren gemäß bestimmten beispielhaften Ausführungsformen verteilt werden, die in der Rechenumgebung 100 implementiert sind.
  • Die Netzwerkschnittstellen-Hardware 106 empfängt ein Paket "i" 200 von dem Netzwerk 104. In bestimmten Ausführungsformen wendet der Hardware-Hash-Berechner 120 eine Hash-Funktion bei bestimmten Anfangsblöcken des Pakets "i" an, um einen Hash 202 zu berechnen. Der Hash 202 kann für einen Index 204 zu einem Entrag einer Umleitungstabelle 206 verwendet werden. Die Umleitungstabelle 206 setzt ein Paket zu einer Empfangsschlange 210 um, ausgehend davon, welche Eintragsnummer 208 der Hash 206 in der Umleitungstabelle 206 angibt 204. Zum Beispiel kann in bestimmten Ausführungsformen der Hash 202 die Eintragsnummer 0000001 (Bezugszeichen 212) angeben, die auf die Empfangsschlange "1" verweist. In einem solchen Fall wird das Paket "i" 214 (welches dasselbe wie Paket "i" 200 ist) in die Empfangsschlange "1" 216b gestellt.
  • In der beispielhaften Ausführungsform, die in 2 dargestellt ist, gibt es vier Empfangsschlangen 216a...216d, vier Deferred Procedure Calls (DPC) 218a...218a und vier Prozessoren 220a...220m. Wenn die Netzwerkschnittstellen-Hardware 106 eine Unterbrechung erzeugt, kann die Unterbrechungsdienstroutine des Gerätetreibers 112 von dem Betriebssystem 110 aufgerufen werden. Die Unterbrechungsdienstroutine des Gerätetreibers 112 kann die Unterbrechung beanspruchen und einen DPC planen. Der DPC kann, sobald er gestartet ist, Pakete, wie das Paket "i" 200, das von der Netzwerkschnittstellen-Hardware 106 empfangen wurde, verarbeiten. In bestimmten Ausführungsformen wird ein DPC zur Verarbeitung von Paketen verwendet, die einem Prozessor entsprechen, während eine Empfangsschlangen eine Mehrzahl von DPCs aufweisen kann, die der Empfangsschlange zugeordnet sind. In der beispielhaften Ausführungsform, die in 2 dargestellt ist, gibt es einen DPC pro Empfangsschlange. Zum Beispiel ist die Empfangsschlange "1" 216b dem DPC 218b zugeordnet, der das Paket "i" 214 im Prozessor 220b verarbeitet.
  • In der beispielhaften Ausführungsform, die in 2 dargestellt ist, wird das Paket "i" 200, 214 zu der Empfangsschlange "1" (Bezugszeichen 216b) umgesetzt. Der DPC 218b, der der Empfangsschlangen "1" (Bezugszeichen 216b) zugeordnet ist, verarbeitet das Paket 200, 214 im Prozessor 220b.
  • 3 zeigt ein Blockdiagramm, das zeigt, wie der Gerätetreiber 112 die Software-Umleitungstabelle 117 zu der Hardware-Umleitungstabelle 118 gemäß bestimmten Ausführungsformen umsetzt bzw. zuordnet (mapping).
  • In bestimmten Ausführungsformen kann das Betriebssystem 110 keine spezifische Grenze für die Anzahl von Einträgen in der Software-Umleitungstabelle 114 setzen. Im Gegensatz zur Software-Umleitungstabelle 114 kann die Anzahl von Einträgen in der Hardware-Umleitungstabelle 118 begrenzt sein und kann eine festgelegte Größe haben. Daher kann in bestimmten Ausführungsformen eine Mehrzahl von Software-Tabelleneinträgen jedem Hardware-Tabelleneintrag entsprechen. Dadurch kann es zu Konflikten unter den Software-Tabelleneinträgen kommen, die zu den Hardware-Tabelleneinträgen umgesetzt bzw. zugeordnet werden.
  • Wenn zum Beispiel die Software-Umleitungstabelle 114 die zweifache Anzahl von Einträgen wie die Hardware-Umleitungstabelle 118 hat, kann ein Konflikt für eine Eintragszahl x bestehen, für die die Empfangsschlange, die der Eintragszahl x entspricht, nicht dieselbe ist wie die Empfangsschlange, die der Eintragszahl x + N entspricht, wobei N die Anzahl von Einträgen in der Hardware-Umleitungstabelle 118 ist. Wenn ein Konflikt unter mehreren Software-Tabelleneinträgen besteht, könnte der Gerätetreiber 112 eine Bestimmung vornehmen müssen, welcher Prozessor in dem entsprechenden Hardware-Tabelleneintrag zu verwenden ist. Bei einer Methode kann eine Heuristik verwendet werden, um den Prozessor zu erraten, der im Falle eines Konflikts verwendet wird. Die Verwendung einer Heuristik kann im schlimmsten Fall bewirken, daß jede Empfangsschlange potentiell Pakete enthält, die für jeden Prozessor bestimmt sind. Daher müsste jede Empfangsschlange DPCs haben, die der Anzahl von Prozessoren entsprechen. Wenn vier Prozessoren und vier Empfangsschlangen vorhanden sind, wären in einer solchen Ausführungsform auf der Basis einer Heuristik sechzehn DPCs erforderlich. Die Zusatzlast, die mit der Schaffung und Verwendung einer großen Anzahl von DPCs erzeugt wird, kann die Systemleistung herabsetzen.
  • In bestimmten Ausführungsformen ist der Gerätetreiber 112 mit einem Schwellenwert 300 bereitgestellt. Der Schwellenwert 300 kann eine programmierbare Variable oder Konstante sein. In bestimmten Ausführungsformen bestimmt der Gerätetreiber 112 die Anzahl von Konflikten in der Software-Umleitungstabelle 114 und setzt die Einträge der Software-Umleitungstabelle 114 zu den Einträgen der Hardware-Umleitungstabelle 118 auf der Basis der Anzahl von Konflikten um.
  • 4 zeigt erste Operationen, die in dem Gerätetreiber 112 gemäß bestimmten Ausführungsformen implementiert werden, der imstande ist, in der Rechenumgebung 110 zu arbeiten. Der Gerätetreiber 112 setzt die Einträge der Software-Umleitungstabelle 114 zu der Hardware-Umleitungstabelle 118 auf der Basis der Anzahl von Konflikten in den Software-Umleitungstabelleneinträgen um.
  • Die Kontrolle beginnt bei Block 400, wo der Gerätetreiber 112 eine Anzahl konfliktbildender Einträge in einer ersten Umleitungstabelle 114 mit einem ersten Satz von Einträgen bestimmt, wobei der erste Satz von Einträgen zu einem zweiten Satz von Einträgen einer zweiten Umleitungstabelle 118 umgesetzt werden kann. In bestimmten beispielhaften Ausführungsformen kann zum Beispiel die erste Umleitungstabelle 114 die Software-Umleitungstabelle 114 sein und die zweite Umleitungstabelle 118 kann die Hardware-Umleitungstabelle 118 sein. Zusätzlich kann in bestimmten beispielhaften Ausführungsformen die Anzahl von Einträgen in der ersten Umleitungstabelle 114 höher als die Anzahl von Einträgen in der zweiten Umleitungstabelle 118 sein. Daher können in bestimmten beispielhaften Ausführungsformen konfliktbildende Einträge vorhanden sein, wenn mehr als ein Eintrag der ersten Umleitungstabelle 114 zu einem einzigen Eintrag der zweiten Umleitungstabelle 118 umgesetzt werden kann.
  • Der Gerätetreiber setzt (in Block 402) den ersten Satz von Einträgen zu dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle 114 um. Wenn in bestimmten beispielhaften Ausführungsformen die Anzahl konfliktbildender Einträge den Schwellenwert 300 überschreitet, wird die Umsetzung anders ausgeführt als dann, wenn die Anzahl konfliktbildender Einträge den Schwellenwert nicht überschreitet.
  • In bestimmten beispielhaften Ausführungsformen kann der Gerätetreiber 112 eine größere Anzahl von Einträgen der Software-Umleitungstabelle 114 zu einer geringeren Anzahl von Einträgen der Hardware-Umleitungstabelle 118 auf der Basis der Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle 114 umsetzen.
  • 5 zeigt zweite Operationen, die in dem Gerätetreiber 112, der in der Rechenumgebung 100 arbeiten kann, gemäß bestimmten Ausführungsformen implementiert werden. In bestimmten beispielhaften Ausführungsformen können die zweite Operationen, die in 5 dargestellt sind, zusätzlich zu den ersten Operationen ausgeführt werden, die in 4 dargestellt sind, wobei die erste Umleitungstabelle 114 eine Software-Umleitungstabelle 114 ist und die zweite Umleitungstabelle 118 eine Hardware-Umleitungstabelle 118 ist. 5 zeigt Operationen, in welchen der Gerätetreiber 112 die Einträge der Software-Umleitungstabelle 114 zu der Hardware-Umleitungstabelle 118 auf der Basis der Anzahl von Konflikten in den Software-Umleitungstabelleneinträgen umsetzt.
  • Die Kontrolle beginnt in Block 500, wo der Gerätetreiber 112 bestimmt, ob die Software-Umleitungstabelle 114 mehr Einträge hat als die Hardware-Umleitungstabelle 118, d.h., ob ein erster Satz von Einträgen in der Software-Umleitungstabelle 114 mehr Elemente als ein zweiter Satz von Einträgen in der Hardware-Umleitungstabelle 118 hat. Für das Receive-Side-Scaling wird angenommen, daß jeder Eintrag einer Empfangsschlange entspricht, in der der Gerätetreiber 112 ein Paket verarbeiten soll. Zum Beispiel entspricht in 2 der Eintrag, der mit der Eintragsnummer 0000001 (Bezugszeichen 212) bezeichnet ist, der Empfangsschlange "1 ". Der Gerätetreiber 112 soll die Einträge der Software-Umleitungstabelle 114 zu den Einträgen der Hardware-Umleitungstabelle 118 umsetzen. In bestimmten Ausführungsformen kann das Betriebssystem 110 die Software-Umleitungstabelle 114 dem Gerätetreiber 112 für die Netzwerkschnittstellen-Hardware 106 bereitstellen, die die Hardware-Umleitungstabelle 118 enthält.
  • Als Reaktion auf die Bestimmung, daß die Software-Umleitungstabelle 114 mehr Einträge hat als die Hardware-Umleitungstabelle 118, bestimmt der Gerätetreiber 114 (in Block 502) eine Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle 114, wobei ein Konflikt verursacht wird, wenn mindestens zwei Einträge der Software-Umleitungstabelle, die zu einem Eintrag der Hardware-Umleitungstabelle umgesetzt werden können, verschiedene Empfangsschlangen anzeigen.
  • Der Gerätetreiber 112 bestimmt (in Block 504), ob die Anzahl von Konflikten geringer als der Schwellenwert 300 ist. Falls dies zutrifft, zeigt der Gerätetreiber 112 (in Block 506) an, daß Pakete die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden sollen. Der Gerätetreiber 112 verteilt (in Block 508) Pakete in der einen Empfangsschlange unter allen Prozessoren zur Verarbeitung und verarbeitet Pakete in den anderen Empfangsschlangen in verschiedenen Prozessoren. Wenn zum Beispiel in bestimnten Ausführungsformen vier Prozessoren vorhanden sind, die mit "0", "1 ", "2", "3" numeriert sind, sowie vier Empfangsschlangen, die mit "0", "1", "2", "3" numeriert sind, können alle Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu der Empfangsschlange "0" gelenkt werden. In diesem Fall können die Schlangen "1", "2", "3" Pakete anzeigen, die auf den Prozessoren "1", "2" beziehungsweise "3" zu verarbeiten sind, während die Empfangsschlange "0" Pakete anzeigen kann, die zur Verarbeitung unter den Prozessoren "0", "1", "2", "3" verteilt werden. Daher können in bestimmten Ausführungsformen insgesamt sieben DPCs erforderlich sein, wenn die Empfangsschlange "0" vier DPCs benötigt und jede der anderen Empfangsschlangen einen DPC benötigt. Im Vergleich zu der Ausführungsform, die auf Heuristik beruht und zuvor beschrieben wurde, wird daher die Gesamtzahl an DPCs von sechzehn auf sieben verringert.
  • Wenn eine Bestimmung (in Block 504) vorgenommen wird, daß die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert 300 ist, zeigt der Gerätetreiber 112 (in Block 510) an, daß alle Pakete zu einer einzigen Empfangsschlange gelenkt werden sollen. Wenn die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist, kam eine hohe Anzahl konfliktbildender Einträge vorhanden sein. Wenn in einem solchen Fall der Gerätetreiber 112 anzeigt, daß Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden sollen, kann der Gerätetreiber 112 noch immer erforderlich sein, um die anderen Empfangsschlangen zu verarbeiten. Bei einer hohen Anzahl konfliktbildender Einträge können die meisten Pakete zu der einen Empfangsschlange gelenkt werden. Daher kann die Verarbeitungszusatzlast verringert werden, indem nur eine einzige Empfangsschlange vorhanden ist und alle Pakete zu der einen Empfangsschlange gelenkt werden. In einem solchen Fall können in bestimmten beispielhaften Ausführungsformen vier Prozessoren und eine einzelne Empfangsschlange nur vier DPCs benötigen.
  • Der Gerätetreiber 112 verarbeitet (in Block 512) das Receive-Side-Scaling in Software, wobei die Receive-Side-Scaling-Verarbeitung des Weiteren das Erzeugen virtueller Warteschlangen umfaßt, sowie das Einreihen von DPCs zu entsprechenden Prozessoren in Schlangen durch den Gerätetreiber 112.
  • Wenn der Gerätetreiber (in Block 500) bestimmt, daß die Software-Umleitungstabelle 114 nicht mehr Einträge hat als die Hardware-Umleitungstabelle 118, programmiert der Gerätetreiber 112 die Hardware-Umleitungstabelle 118 in Übereinstimmung mit der Software-Umleitungstabelle 114. Für jeden Eintrag der Hardware-Umleitungstabelle 118 wird der entsprechende Wert in der Software-Umleitungstabelle 114 verwendet. Wenn in einem solchen Fall vier Prozessoren vorhanden sind, können vier DPCs notwendig sein.
  • Daher beschreibt 5 eine Ausführungsform, in der, abhängig von der Anzahl von Konflikten, der Gerätetreiber 112 die Einträge der Software-Umleitungstabelle 114 anders umsetzt, um die Einträge der Hardware-Umleitungstabelle 118 zu erzeugen. In bestimmten Ausführungsformen wird die Bestimmung, ob die Software-Umleitungstabelle 114 mehr Einträge hat, die Bestim mung der Anzahl von Konflikten, und die Anzeige von dem Gerätetreiber 112 in der Rechenplattform 102 ausgeführt, die die Mehrzahl von Prozessoren 108a...108n aufweist. In bestimmten Ausführungsformen ist die Hardware-Umleitungstabelle 118 in einer Hardware-Vorrichtung implementiert, die an die Rechenplattform 102 mit der Mehrzahl von Prozessoren 108a...108n gekoppelt ist, wobei die Hardware-Umleitungstabelle 118 eine festgelegte Größe hat, und wobei die Software-Umleitungstabelle 114 mit dem Betriebssystem 100 verbunden ist, das in der Rechenplattform 102 implementiert ist.
  • In einer alternativen Ausführungsform kann der Schwellenwert 300 mit Bedingungen verglichen werden, die sich von jenen unterscheiden, die in 5 beschrieben sind, und die Anzahl konfliktbildender Einträge kann anders berechnet werden.
  • 6 zeigt ein Blockdiagramm, das eine beispielhafte Umsetzung von Paketen zu Prozessoren, die in der Rechenumgebung 100 implementiert sein können, gemäß bestimmten Ausführungsformen zeigt.
  • In 6 sind vier Empfangsschlangen 600a...600d dargestellt. Die empfangenen Pakete können unter vier Prozessoren 604a...604d verteilt werden. Wenn die Software-Umleitungstabelle 114 mehr Einträge als die Hardware-Umleitungstabelle 118 hat, und die Anzahl von Konflikten geringer als der Schwellenwert 300 ist, zeigt in der beispielhaften Ausführungsform, die in 6 dargestellt ist, der Gerätetreiber 112 an, daß Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange 600a zu lenken sind. Daher sind vier DPCs 602a....602d vorhanden, die der Empfangsschlange 600a zugeordnet sind, während für jede der anderen Empfangsschlangen 600b...600d entsprechende DPCs 602e...602g vorhanden sind. Alle Pakete, die zur Empfangsschlange 600b gesendet werden, werden im Prozessor 604b verarbeitet, alle Pakete, die zur Empfangsschlange 600c gesendet werden, werden im Prozessor 604c verarbeitet, alle Pakete, die zur Empfangsschlange 600d gesendet werden, werden im Prozessor 604d verarbeitet und alle Pakete, die zur Empfangsschlange 600a gesendet werden, werden unter den vier Prozessoren 604a...604d verteilt.
  • Bestimmte Ausführungsformen analysieren die Eigenschaften der Software- und Hardware-Umleitungstabellen und setzen auf der Basis der Eigenschaften die Software-Umleitungstabelle 114 zu der Hardware-Umleitungstabelle 118 um. In bestimmten Ausführungsformen ist die Anzahl von DPCs, die erforderlich sind, kontrolliert, während gleichzeitig die Verarbeitung von Paketen unter den Prozessoren aufgeteilt ist. In bestimmten anderen Ausführungsformen, wo die Anzahl von Konflikten einen Schwellenwert übersteigt oder erreicht, wird das Receive-Side-Scaling in Software von dem Gerätetreiber 112 ausgeführt, indem alle Pakete zu einer einzigen Empfangsschlange gelenkt werden. In einem solchen Fall kann die Anzahl von DPCs gleich der Anzahl von Prozessoren sein. Die Zusatzlast, die mit der Erstellung von DPCs verbunden ist, wird in bestimmten Ausführungsformen kontrolliert.
  • Die beschriebenen Techniken können als Methode, Apparat oder Herstellungsgegenstand implementiert werden, die Software, Firmware, Mikro-Code, Hardware und/oder Kombinationen davon beinhalten. Der Begriff "Herstellungsgegenstand", wie hierin verwendet, bezieht sich auf Programmanweisungen, Code und/oder Logik, implementiert in einem Schaltkreis (z.B. einem integrierten Schaltungschip, Programmable Gate Array (PGA), ASIC, usw.) und/oder ein computerlesbares Medium (z.B. Magnetspeichermedium, wie ein Festplattenlaufwerk, eine Diskette, ein Band), einen optischen Speicher (z.B., CD-ROM, DVD-ROM, Bildplatte usw.), eine flüchtige und nicht flüchtige Speichervorrichtung (z.B. Electrically Erasable Programmable Read Only Memory (EEPROM), Read Only Memory (ROM), Programmable Read Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Flash, Firmware, programmierbare Logik, usw.). Eine Maschine, wie ein Prozessor, kann auf den Code im computerlesbaren Medium zugreifen und diesen ausführen. In bestimmten Ausführungsformen kann der Code, in dem Ausführungsformen gemacht sind, des Weiteren über ein Übertragungsmedium zugänglich sein, oder von einem Datenserver über ein Netzwerk. In solchen Fällen kann der Herstellungsgegenstand, in dem der Code implementiert ist, ein Übertragungsmedium umfassen, wie eine Netzwerkübertragungsleitung, drahtlose Übertragungsmedien, Signale, die sich durch den Raum fortpflanzen, Funkwellen, Infrarotsignale usw. Natürlich ist für den Fachmann klar, daß viele Modifizierungen vorgenommen werden können, ohne vom Umfang der Ausführungsformen Abstand zu nehmen, und daß der Herstellungsgegenstand jedes informationstragende Medium umfassen kann, das in der Technik bekannt ist. Zum Beispiel umfaßt der Herstellungsgegenstand ein Speichermedium mit gespeicherten Anweisungen, daß, wenn diese von einer Maschine ausgeführt werden, Operationen durchgeführt werden. Ferner kann die Programmlogik, die den Code enthält, in Hardware, Software, Firmware oder vielen Kombinationen davon implementiert sein.
  • 7 zeigt ein Blockdiagramm einer Computerarchitektur, in der bestimmte Ausführungsformen implementiert sind. 7 zeigt eine Ausführungsform der Rechenplattfom 102 und der Netzwerkschnittstellen-Hardware 106. Die Rechenplattform 102 und die Netzwerkschnittstellen-Hardware 106 können eine Computerarchitektur 700 mit einem oder mehreren Prozessoren 702, einem Speicher 704 (z.B. einer flüchtigen Speichervorrichtung) und einem Speicher 706 implementieren. Nicht alle Elemente der Computerarchitektur 700 mögen in der Rechenplattform 102 und der Netzwerkschnittstellen-Hardware 106 zu finden sein. Der Speicher 706 kann eine nicht flüchtige Speichervorrichtung (z.B. EEPROM, ROM, PROM, RAM, DRAM, SRAM, Flash, Firmware, programmierbare Logik, usw.), ein Magnetplattenlaufwerk, Bildplattenlaufwerk, Bandlaufwerk usw. enthalten. Der Speicher 706 kann eine interne Speichervorrichtung, eine beigefügte Speichervorrichtung und/oder eine über das Netzwerk zugängliche Speichervorrichtung umfassen. Programme im Speicher 706 können in den Speicher 704 geladen und von dem einen oder den mehreren Prozessoren 702 ausgeführt werden, wie in der Technik bekannt ist. Die Architektur kann des Weiteren eine Netzwerkkarte 708, wie die Netzwerkschnittstellen-Hardware 106, enthalten, um eine Kommunikation mit einem Netzwerk zu ermöglichen. Die Architektur kann auch mindestens eine Eingabevorrichtung 710, wie eine Tastatur, einen Berührungsbildschirm, einen Stift, eine sprachaktivierte Eingabe usw., enthalten, und mindestens eine Ausgabevorrichtung 712, wie eine Anzeigevorrichtung, einen Lautsprecher, einen Drucker usw..
  • Bestimmte Ausführungsformen können in einem Computersystem implementiert werden, einschließlich einer Videosteuerung, um Informationen zur Anzeige auf einem Monitor aufzubereiten, der an das Computersystem gekoppelt ist, das die Netzwerkschnittstellen-Hardware 106 enthält, wobei das Computersystem einen Tischcomputer, einen Arbeitsplatzrechner, einen Großrechner, einen Laptop, einen Taschencomputer, usw. umfassen kann. Ein Betriebssystem kann zur Ausführung durch das Computersystem imstande sein, und die Videosteuerung kann graphische Ausgänge durch Zusammenarbeit mit dem Betriebssystem aufbereiten. Als Alternative können einige Ausführungsformen in einem Computersystem implementiert sein, das keine Videosteuerung enthält, wie in einem Umschalter, Router, usw.. Ferner kann in bestimmten Ausführungsformen die Vorrichtung in einer Karte enthalten sein, die an ein Computersystem gekoppelt wird, oder auf einer Mutterplatine eines Computersystems.
  • Zumindest einige der Operationen von 4 und 5 können parallel wie auch der Reihe nach ausgeführt werden. In alternativen Ausführungsformen können gewisse der Operationen in einer anderen Reihenfolge ausgeführt, modifiziert oder entfernt werden. In alternativen Ausführungsformen können die Operationen von 4 und 5 in der Netzwerkschnittstellen-Hardware 106 implementiert werden. Ferner wurden viele der Software- und Hardware-Komponenten in separaten Modulen zum Zwecke der Veranschaulichung beschrieben. Solche Komponenten können in eine geringere Anzahl von Komponenten integriert oder in eine größere Anzahl von Komponenten geteilt werden. Zusätzlich können bestimmte Operationen, die in der Beschreibung von einer spezifischen Komponente ausgeführt werden, von anderen Komponenten ausgeführt werden.
  • Die Datenstrukturen und Komponenten, die in 1 bis 7 dargestellt oder angeführt sind, haben laut Beschreibung spezifische Arten von Informationen. In alternativen Ausführungsformen können die Datenstrukturen und Komponenten anders strukturiert sein und weniger, mehr oder andere Gebiete oder andere Funktionen haben als jene, die in den Figuren dargestellt oder angeführt sind.
  • Daher wurde die vorangehende Beschreibung der Ausführungsformen zum Zwecke der Veranschaulichung und Beschreibung präsentiert. Sie soll weder umfassend sein noch die Ausführungsformen auf die präzise offenbarte Form begrenzen. Viele Modifizierungen und Variationen sind angesichts der obengenannten Lehren möglich.
  • Zusammenfassung:
  • In bestimmten Ausführungsformen wird eine Bestimmung der Anzahl konfliktbildender Einträge in einer ersten Umleitungstabelle mit einem ersten Satz von Einträgen vorgenommen, wobei der erste Satz von Einträgen einem zweiten Satz von Einträgen einer zweiten Umleitungstabelle zugeordnet werden kann. Auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle wird ein Mapping des ersten Satzes von Einträgen zu dem zweiten Satz von Einträgen durchgeführt.

Claims (28)

  1. Verfahren, umfassend: Bestimmen einer Anzahl konfliktbildender Einträge in einer ersten Umleitungstabelle mit einem ersten Satz von Einträgen, wobei der erste Satz von Einträgen einem zweiten Satz von Einträgen einer zweiten Umleitungstabelle zugeordnet werden kann; und Zuordnen des ersten Satzes von Einträgen zu dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle.
  2. Verfahren nach Anspruch 1, wobei die erste Umleitungstabelle eine Software-Umleitungstabelle ist, wobei die zweite Umleitungstabelle eine Hardware-Umleitungstabelle ist, und wobei ein Konflikt entsteht, wenn mindestens zwei Einträge der Software-Umleitungstabelle, die zu einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschiedene Empfangsschlangen anzeigen, wobei das Verfahren des Weiteren umfaßt: Bestimmen, ob der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat, wobei die Anzahl konfliktbildender Einträge als Reaktion auf die Bestimmung bestimmt wird, daß der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat; und Anzeigen, daß Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, abhängig von der Bestimmung, daß die Anzahl konfliktbildender Einträge geringer als ein Schwellenwert ist.
  3. Verfahren nach Anspruch 2, des Weiteren umfassend: Verteilen von Paketen in der einen Empfangsschlange unter allen Prozessoren zur Verarbeitung; und Verarbeiten von Paketen in anderen Empfangsschlangen in verschiedenen Prozessoren.
  4. Verfahren nach Anspruch 2, des Weiteren umfassend: Anzeigen, daß alle Pakete zu einer einzigen Empfangsschlange gelenkt werden, abhängig von der Bestimmung, daß die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist.
  5. Verfahren nach Anspruch 4, des Weiteren umfassend: eine Receive-Side-Scaling-Verarbeitung in der Software, wobei die Receive-Side-Scaling-Verarbeitung des Weiteren das Erzeugen virtueller Warteschlangen und das Einreihen von Deferred Procedure Calls zu entsprechenden Prozessoren in einer Schlange über einen Gerätetreiber umfaßt.
  6. Verfahren nach Anspruch 2, des Weiteren umfassend: Programmieren der Hardware-Umleitungstabelle gemäß der Software-Umleitungstabelle als Reaktion auf die Bestimmung, daß der erste Satz von Einträgen in der Software-Umleitungstabelle nicht mehr Elemente hat als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle.
  7. Verfahren nach Anspruch 1, wobei das Bestimmen und Umsetzen von einem Gerätetreiber in einer Rechenplattform mit einer Mehrzahl von Prozessoren erfolgt.
  8. Verfahren nach Anspruch 1, wobei die erste Umleitungstabelle einem Betriebssystem zugeordnet ist, das das Receive-Side-Scaling unterstützt, wobei die zweite Umleitungstabelle in einer Hardware-Vorrichtung implementiert ist, die an eine Rechenplattform mit einer Mehrzahl von Prozessoren gekoppelt ist, und wobei die zweite Umleitungstabelle eine festgelegte Größe hat.
  9. System, umfassend: mindestens einen Prozessor; eine Netzwerkschnittstelle, die an den mindestens einen Prozessor gekoppelt ist; und eine Programmlogik, die einen Code enthält, der imstande ist, mindestens einen Prozessor betriebsbereit zu machen, um: (i) eine Anzahl konfliktbildender Einträge in einer ersten Umleitungstabelle mit einem ersten Satz von Einträgen zu bestimmen, wobei der erste Satz von Einträgen einem zweiten Satz von Einträgen einer zweiten Umleitungstabelle zugeordnet werden kann, die in der Netzwerkschnittstelle implementiert ist; und (ii) den ersten Satz von Einträgen dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle zuzuordnen.
  10. System nach Anspruch 9, wobei die erste Umleitungstabelle eine Software-Umleitungstabelle ist, wobei die zweite Umleitungstabelle eine Hardware-Umleitungstabelle ist, und wobei ein Konflikt entsteht, wenn mindestens zwei Einträge der Software-Umleitungstabelle, die einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschiedene Empfangsschlangen anzeigen, wobei die Programmlogik des Weiteren imstande ist, den mindestens einen Prozessor betriebsbereit zu machen, um: zu bestimmen, ob der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat, wobei die Anzahl konfliktbildender Einträge als Reaktion auf eine Bestimmung bestimmt wird, daß der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat; und anzuzeigen, daß Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender Einträge geringer als ein Schwellenwert ist.
  11. System nach Anspruch 10, wobei die Programmlogik des Weiteren in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: Pakete in der einen Empfangsschlange unter allen Prozessoren zur Verarbeitung zu verteilen; und Pakete in anderen Empfangsschlangen in verschiedenen Prozessoren zu verarbeiten.
  12. System nach Anspruch 10, wobei die Programmlogik des Weiteren in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: anzuzeigen, daß alle Pakete zu einer einzigen Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist.
  13. System nach Anspruch 12, des Weiteren umfassend: einen Gerätetreiber, wobei der Gerätetreiber zur Receive-Side-Scaling-Verarbeitung in der Software durch Erstellung virtueller Warteschlangen betreibbar ist, und wobei der Gerätetreiber in der Lage ist, Deferred Procedure Calls, die den virtuellen Warteschlangen zugeordnet sind, zu entsprechenden Prozessoren in einer Warteschlange einzureihen.
  14. System nach Anspruch 10, wobei die Programmlogik des Weiteren in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: die Hardware-Umleitungstabelle gemäß der Software-Umleitungstabelle als Reaktion auf die Bestimmung zu programmieren, daß der erste Satz von Einträgen in der Software-Umleitungstabelle nicht mehr Elemente hat als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle.
  15. System nach Anspruch 9, des Weiteren umfassend: einen Gerätetreiber, der betreibbar ist, um die Anzahl konfliktbildender Einträge zu bestimmen und den ersten Satz von Einträgen umzusetzen.
  16. System nach Anspruch 9, wobei die erste Umleitungstabelle einem Betriebssystem zugeordnet ist, das ein Receive-Side-Scaling unterstützt, wobei die zweite Umleitungstabelle in der Netzwerkschnittstelle implementiert ist, und wobei die zweite Umleitungstabelle von festgelegter Größe ist.
  17. System, umfassend: eine Rechenplattform; eine Speichersteuerung, die in der Rechenplattform implementiert ist; mindestens einen Prozessor, der an die Rechenplattform gekoppelt ist; eine Netzwerkschnittstelle, die an die Rechenplattform gekoppelt ist; und eine Programmlogik, die einen Code enthält, der in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: (i) eine Anzahl konfliktbildender Einträge in einer ersten Umleitungstabelle mit einem ersten Satz von Einträgen zu bestimmen, wobei der erste Satz von Einträgen einem zweiten Satz von Einträgen einer zweiten Umleitungstabelle zugeordnet werden kann, wobei die zweite Umleitungstabelle in der Netzwerkschnittstelle implementiert ist; und (ii) den ersten Satz von Einträgen zu dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle umzusetzen.
  18. System nach Anspruch 17, wobei die erste Umleitungstabelle eine Software-Umleitungstabelle ist, wobei die zweite Umleitungstabelle eine Hardware-Umleitungstabelle ist, und wobei ein Konflikt entsteht, wenn mindestens zwei Einträge der Software-Umleitungstabelle, die einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschiedene Empfangsschlangen anzeigen, wobei die Pro grammlogik des Weiteren in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: zu bestimmen, ob der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat, wobei die Anzahl konfliktbildender Einträge als Reaktion auf eine Bestimmung bestimmt wird, daß der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat; und anzuzeigen, daß Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender Einträge geringer als ein Schwellenwert ist.
  19. System nach Anspruch 18, wobei die Programmlogik des Weiteren in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: Pakete in der einen Empfangsschlange unter allen Prozessoren zur Verarbeitung zu verteilen; und Pakete in anderen Empfangsschlangen in verschiedenen Prozessoren zu verarbeiten.
  20. System nach Anspruch 18, wobei die Programmlogik des Weiteren in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: anzuzeigen, daß alle Pakete zu einer einzigen Empfangsschlange gelenkt werden, abhängig von der Bestimmung daß die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist.
  21. Herstellungsgegenstand, umfassend eine Speichermedium mit gespeicherten Anweisungen, die von einer Maschine ausführbar sind, um: eine Anzahl konfliktbildender Einträge in einer ersten Umleitungstabelle mit einem ersten Satz von Einträgen zu bestimmen, wobei der erste Satz von Einträgen einem zweiten Satz von Einträgen einer zweiten Umleitungstabelle zugeordnet werden kann; und den ersten Satz von Einträgen dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle zuzuordnen.
  22. Herstellungsgegenstand nach Anspruch 21, wobei die erste Umleitungstabelle eine Software-Umleitungstabelle ist, wobei die zweite Umleitungstabelle eine Hardware-Umleitungstabelle ist, und wobei ein Konflikt entsteht, wenn mindestens zwei Einträge der Software-Umleitungstabelle, die einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschiedene Empfangsschlangen anzeigen, wobei die Anweisungen des Weiteren von einer Maschine ausgeführt werden können, um: zu bestimmen, ob der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat, wobei die Anzahl konfliktbildender Einträge als Reaktion auf die Bestimmung bestimmt wird, daß der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat; und anzuzeigen, daß Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, abhängig von der Bestimmung, daß die Anzahl konfliktbildender Einträge geringer als ein Schwellenwert ist.
  23. Herstellungsgegenstand nach Anspruch 22, wobei die Anweisungen des Weiteren von einer Maschine ausgeführt werden können, um: Pakete in der einen Empfangsschlange unter allen Prozessoren zur Verarbeitung zu verteilen; und Pakete in anderen Empfangsschlangen in verschiedenen Prozessoren zu verarbeiten.
  24. Herstellungsgegenstand nach Anspruch 22, wobei die Anweisungen des Weiteren von einer Maschine ausgeführt werden können, um: anzuzeigen, daß alle Pakete zu einer einzigen Empfangsschlange gelenkt werden, abhängig von der Bestimmung, daß die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist.
  25. Herstellungsgegenstand nach Anspruch 24, wobei die Anweisungen des Weiteren von einer Maschine ausgeführt werden können, um: ein Receive-Side-Scaling durch Erzeugung virtueller Warteschlangen zu verarbeiten, und wobei ein Gerätetreiber in der Lage ist, Deferred Procedure Calls, die den virtuellen Warteschlangen zugeordnet sind, zu entsprechenden Prozessoren in einer Warteschlange einzureihen.
  26. Herstellungsgegenstand nach Anspruch 22, wobei die Anweisungen des Weiteren von einer Maschine ausgeführt werden können, um: die Hardware-Umleitungstabelle gemäß der Software-Umleitungstabelle als Reaktion auf die Bestimmung zu programmieren, daß der erste Satz von Einträgen in der Software-Umleitungstabelle nicht mehr Elemente hat als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle.
  27. Herstellungsgegenstand nach Anspruch 21, wobei die Bestimmung der Anzahl konfliktbildender Einträge und das Zuordnen des ersten Satzes von Einträgen von einem Gerätetreiber in einer Rechenplattform mit einer Mehrzahl von Prozessoren durchgeführt wird.
  28. Herstellungsgegenstand nach Anspruch 21, wobei die erste Umleitungstabelle einem Betriebssystem zugeordnet ist, das das Receive-Side-Scaling unterstützt, wobei die zweite Umleitungstabelle in der Netzwerkschnittstelle implementiert ist, und wobei die zweite Umleitungstabelle von festgelegter Größe ist.
DE112005000705T 2004-03-29 2005-03-18 Konfiguration von Umleitungstabellen Expired - Fee Related DE112005000705B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/813,334 2004-03-29
US10/813,334 US20050228851A1 (en) 2004-03-29 2004-03-29 Configuration of redirection tables
PCT/US2005/008949 WO2005101769A1 (en) 2004-03-29 2005-03-18 Configuration of redirection tables

Publications (2)

Publication Number Publication Date
DE112005000705T5 true DE112005000705T5 (de) 2007-02-15
DE112005000705B4 DE112005000705B4 (de) 2009-06-25

Family

ID=34963159

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005000705T Expired - Fee Related DE112005000705B4 (de) 2004-03-29 2005-03-18 Konfiguration von Umleitungstabellen

Country Status (5)

Country Link
US (1) US20050228851A1 (de)
CN (1) CN1926827B (de)
DE (1) DE112005000705B4 (de)
GB (1) GB2429602B (de)
WO (1) WO2005101769A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257572B2 (en) * 2004-04-30 2007-08-14 Intel Corporation Function for directing packets
US7764709B2 (en) * 2004-07-07 2010-07-27 Tran Hieu T Prioritization of network traffic
US20070121662A1 (en) * 2005-11-30 2007-05-31 Christopher Leech Network performance scaling
JP4815284B2 (ja) * 2006-07-06 2011-11-16 アラクサラネットワークス株式会社 パケット転送装置
US8745013B2 (en) * 2012-05-19 2014-06-03 International Business Machines Corporation Computer interface system
US10218617B2 (en) * 2014-07-15 2019-02-26 Nec Corporation Method and network device for handling packets in a network by means of forwarding tables
CN104468412B (zh) * 2014-12-04 2017-10-31 东软集团股份有限公司 基于rss的网络会话数据包分发方法及系统
CN104580017B (zh) * 2014-12-30 2018-04-06 东软集团股份有限公司 基于rss的网络会话分发方法及系统
WO2017167385A1 (en) 2016-03-31 2017-10-05 Nec Europe Ltd. Software-enhanced stateful switching architecture

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887451A (ja) * 1994-09-09 1996-04-02 Internatl Business Mach Corp <Ibm> アドレス変換を管理する方法およびアドレス変換マネージャ
US5895503A (en) * 1995-06-02 1999-04-20 Belgard; Richard A. Address translation method and mechanism using physical address information including during a segmentation process
US5727217A (en) * 1995-12-20 1998-03-10 Intel Corporation Circuit and method for emulating the functionality of an advanced programmable interrupt controller
US5857090A (en) * 1995-12-29 1999-01-05 Intel Corporation Input/output subsystem having an integrated advanced programmable interrupt controller for use in a personal computer
US5835964A (en) * 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US6418496B2 (en) * 1997-12-10 2002-07-09 Intel Corporation System and apparatus including lowest priority logic to select a processor to receive an interrupt message
US6141344A (en) * 1998-03-19 2000-10-31 3Com Corporation Coherence mechanism for distributed address cache in a network switch
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7002924B2 (en) * 2000-02-04 2006-02-21 Matsushita Electric Industrial Co., Ltd. Zero configuration networking
US6430667B1 (en) * 2000-04-13 2002-08-06 International Business Machines Corporation Single-level store computer incorporating process-local address translation data structures
US20020138648A1 (en) * 2001-02-16 2002-09-26 Kuang-Chih Liu Hash compensation architecture and method for network address lookup
US6615221B2 (en) * 2001-03-09 2003-09-02 Hewlett-Packard Development Company, Lp. Scalable transport layer protocol for multiprocessor interconnection networks that tolerates interconnection component failure
US7441017B2 (en) * 2001-06-29 2008-10-21 Thomas Lee Watson System and method for router virtual networking
WO2003048961A1 (en) * 2001-12-04 2003-06-12 Powerllel Corporation Parallel computing system, method and architecture
US7395354B2 (en) * 2002-02-21 2008-07-01 Corente, Inc. Methods and systems for resolving addressing conflicts based on tunnel information
US7219121B2 (en) * 2002-03-29 2007-05-15 Microsoft Corporation Symmetrical multiprocessing in multiprocessor systems
US7412507B2 (en) * 2002-06-04 2008-08-12 Lucent Technologies Inc. Efficient cascaded lookups at a network node
US6970990B2 (en) * 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus
US7325239B2 (en) * 2003-11-12 2008-01-29 International Business Machines Corporation Method and system of generically managing tables for network processors
US7529800B2 (en) * 2003-12-18 2009-05-05 International Business Machines Corporation Queuing of conflicted remotely received transactions

Also Published As

Publication number Publication date
GB2429602A (en) 2007-02-28
GB2429602B (en) 2007-11-07
CN1926827A (zh) 2007-03-07
WO2005101769A1 (en) 2005-10-27
CN1926827B (zh) 2010-05-05
DE112005000705B4 (de) 2009-06-25
US20050228851A1 (en) 2005-10-13
GB0620513D0 (en) 2006-12-06

Similar Documents

Publication Publication Date Title
DE112005000705B4 (de) Konfiguration von Umleitungstabellen
DE69834763T2 (de) Verfahren zur Unterstützung von verbindungsindividuellen Warteschlangen für rückgekoppelte Verkehrssteuerung
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE69924057T2 (de) Verfahren, Ablauffolgesteuerung, intelligenter Pufferspeicher, Prozessor und Telekommunikationssystem zum Verteilen verfügbahrer Bandbreite
DE60213974T2 (de) Verfahren und vorrichtung zur prioritäts-basierten flusskontrolle in einer ethernet-architektur
DE60020817T2 (de) Ablaufsteuerung für Betriebsmittel
DE60024228T2 (de) Dynamische zuweisung verkehrsklassen an einer prioritätswarteschlange in einer paketbeförderungsvorrichtung
DE69825801T2 (de) Vorrichtung und Verfahren zur Ermöglichung gleichranginger Zugangskontrolle in einem Netz
DE69926109T2 (de) Paketversendegerät mit einer Flussnachweistabelle
DE60114097T2 (de) Verfahren und System zur Verbesserung der Netzleistungsfähigkeit unter Verwendung eines leistungssteigernden Proxies
DE112018003482T5 (de) Serveranfrageverwaltung
DE102019105193A1 (de) Technologien zum beschleunigen von edge-vorrichtungsarbeitslasten
DE60302045T2 (de) Verfahren und System zur geordneten dynamischen Verteilung von Paketströmen zwischen Netzwerkprozessoren
DE112017003324T5 (de) Technologien für adaptives Routing unter Verwendung aggregierter Überlastungsinformationen
DE602004008618T2 (de) System und verfahren zum einheitlichen weiterleiten von paketen über drahtlose und verdrahtete netzwerke
DE112012006642T5 (de) Bandbreitengarantie und Arbeitskonservierung
DE602004013414T2 (de) Verfahren und Vorrichtung zum verbesserten Weitergeben und Hochladen von Netzwerkdaten
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
DE10338741A1 (de) Verfahren und Vorrichtung zum Anzeigen von Meßdaten von heterogenen Meßquellen
DE112012000393T5 (de) Reservierung von Switch-Warteschlangenkapazität auf der Sicherungsschicht
DE112019000421T5 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE60222233T2 (de) Prozessor und Verfahren zur Erhaltung der Verarbeitungsreihenfolge von Paketen basierend auf Paketstromkennungen
DE60303444T2 (de) Ablaufsteuerung unter verwendung von quantumwerten und defizitwerten
DE69838103T2 (de) Verfahren zur Pufferverwaltung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20131001