DE112005000705B4 - Konfiguration von Umleitungstabellen - Google Patents

Konfiguration von Umleitungstabellen Download PDF

Info

Publication number
DE112005000705B4
DE112005000705B4 DE112005000705T DE112005000705T DE112005000705B4 DE 112005000705 B4 DE112005000705 B4 DE 112005000705B4 DE 112005000705 T DE112005000705 T DE 112005000705T DE 112005000705 T DE112005000705 T DE 112005000705T DE 112005000705 B4 DE112005000705 B4 DE 112005000705B4
Authority
DE
Germany
Prior art keywords
entries
redirection table
hardware
software
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.)
Expired - Fee Related
Application number
DE112005000705T
Other languages
English (en)
Other versions
DE112005000705T5 (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, ob ein erster Satz von Einträgen in einer Software-Umleitungstabelle mehr Elemente als ein zweiter Satz von Einträgen in einer Hardware-Umleitungstabelle hat;
Bestimmen einer Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle mit dem ersten Satz von Einträgen als Reaktion auf die Bestimmung, dass 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 der erste Satz von Einträgen dem zweiten Satz von Einträgen der Hardware-Umleitungstabelle zugeordnet werden kann und wobei ein Konflikt dadurch charakterisiert ist, dass mindestens zwei Einträge der Software-Umleitungstabelle, die zu einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschiedene Empfangsschlangen anzeigen;
Zuordnen des ersten Satzes von Einträgen zu dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle; und
Anzeigen, dass Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender...

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.
  • Die US 2002/0138648 A1 offenbart eine Hash-Kompensierungsarchitektur unter Verwendung einer Tabelle zum Nachschlagen und Speichern von Adressen innerhalb einer Rechenplattform. Kommt es zu einem Überlauf, etwa weil zwei nicht-identische Adressen dem gleichen Eintrag in der Tabelle zugeordnet werden sollen, so werden Adressen, die auf diese Weise kollidieren, in einem dedizierten Kompensierungsverzeichnis gespeichert. Dies hat zur Folge, dass es bei einem einfachen Nachschlagen (look-up) niemals ausreicht, lediglich auf die Tabelle zuzugreifen, sondern auch das besagte Kompensierungsverzeichnis durchsucht werden muss. Auf diese Weise geht jedoch ein Vorzug der verwendeten Tabelle verloren, der darin besteht, besonders effizient nach Einträgen zu suchen; muss jedesmal auch ein einfaches, nicht zur Suche optimiertes Verzeichnis durchsucht werden, dürfte es zu erheblichen Geschwindigkeitseinbußen kommen.
  • Die US 2003/0225881 A1 offenbart ein Look-up-Verfahren, bei dem eingehende Netzwerkpakete anhand ihrer Headerinformationen zu ihrem jeweiligen nächsten Ziel (hop) geleitet werden sollen. Dies geschieht mit Hilfe kaskadierter Tabellen, von denen die erste zunächst mit Hilfe von Paketheaderinformationen, in der Druckschrift als erster Suchschlüssel bezeichnet, auf einen zweiten Suchschlüssel hin abgefragt wird, der dann wiederum in einer zweiten Tabelle verwendet wird. Die kaskadierte Form von Tabellen trägt der Tatsache Rechnung, dass sich die Wege der Pakete dynamisch ändern, und durch diese Art der Abfrage besonders effizient abgerufen werden können. Es steht dem bekannten Verfahren jedoch nicht frei, ein eintreffendes Paket in eine beliebige Destination umzuleiten, so dass kaum Möglichkeit zur gleichmäßigen Auslastung beteiligter Komponenten besteht.
  • Die US 5857090 A offenbart ein Eingabe/Ausgabe(I/O)-System mit einem integrierten programmierbaren Interruptcontroller, dessen Ziel darin liegt, eine größere Anzahl von Interrupts, die von Geräten innerhalb des Systems erzeugt werden können, an einen oder mehrere Mikroprozessoren des Systems zu leiten. Gegenüber bestehender einschlägiger Interrupt-Techniken (APIC) zeichnet sich die angeführte Druckschrift durch eine Umleitungstabelle aus, die als Software im Speicher des Systems ausgeführt ist. Beim Dirigieren von Interrupts unterschiedlicher Art, beispielsweise PCI-Interrupts, wird auf Multiplexer zurückgegriffen, die die Interrupts auf den jeweils passenden Bus leiten. Ein gegebener Interrupt muss jedoch immer auf einen bestimmten Bus gelenkt werden, so dass auch hier eine gleichmäßige Auslastung der beteiligten Komponenten nicht vorgesehen oder gar möglich ist.
  • Auch die US 5727217 A befasst sich mit programmierbaren Interruptcontrollern. Der darin offenbarte Gegenstand umfasst eine Umleitungstabelle, die benutzt wird, um bei der Bearbeitung eines Interrupts auf weiterführende Informationen zu diesem Interrupt zuzugreifen und in Folge des entsprechenden Eintrags aus der Tabelle eine „APIC-Interrupt-Nachricht" zu erstellen. Die hinsichtlich der beiden vorangehenden Offenbarungen genannten Nachteile bestehen auch hier.
  • Auch die WO 99/30243 A1 auf das Handhaben von Interrupts gerichtet, wobei hier ein Steuern von Interrupts im Mittelpunkt steht, die anhand ihrer Priorität bewertet werden und entsprechend an bestimmte Prozessoren geleitet werden. Dabei wird auch auf eine Umleitungstabelle zugegriffen, die jedem Interrupt eine entsprechende Serviceroutine zuordnet. Wiederum ist auf die kaum mögliche Auslastung der Komponenten hinzuweisen.
  • 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 Betriebssystem 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 empfangt 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, waren 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 Eintragen 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 bestimmten 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 Eintragen 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, kann 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 Rechenplattform 102 und der Netzwerkschnittstellen-Hardware 106. Die Rechenplattform 102 und die Netzwerkschnittstellen-Hardware 106 können eine Computerarchitektur 700 mit einen 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.

Claims (22)

  1. Verfahren, umfassend: Bestimmen, ob ein erster Satz von Einträgen in einer Software-Umleitungstabelle mehr Elemente als ein zweiter Satz von Einträgen in einer Hardware-Umleitungstabelle hat; Bestimmen einer Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle mit dem ersten Satz von Einträgen als Reaktion auf die Bestimmung, dass 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 der erste Satz von Einträgen dem zweiten Satz von Einträgen der Hardware-Umleitungstabelle zugeordnet werden kann und wobei ein Konflikt dadurch charakterisiert ist, dass mindestens zwei Einträge der Software-Umleitungstabelle, die zu einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschiedene Empfangsschlangen anzeigen; Zuordnen des ersten Satzes von Einträgen zu dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle; und Anzeigen, dass Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender Einträge geringer als ein Schwellenwert ist.
  2. Verfahren nach Anspruch 1, 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.
  3. Verfahren nach Anspruch 1, des Weiteren umfassend: Anzeigen, dass alle Pakete zu einer einzigen Empfangsschlange gelenkt werden, abhängig von der Bestimmung, dass die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist.
  4. Verfahren nach Anspruch 3, 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 umfasst.
  5. Verfahren nach Anspruch 1, des Weiteren umfassend: Programmieren der Hardware-Umleitungstabelle gemäß der Software-Umleitungstabelle als Reaktion auf die Bestimmung, dass 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.
  6. Verfahren nach Anspruch 1, wobei das Bestimmen und Umsetzen von einem Gerätetreiber in einer Rechenplattform mit einer Mehrzahl von Prozessoren erfolgt.
  7. Verfahren nach Anspruch 1, wobei die Software-Umleitungstabelle einem Betriebssystem zugeordnet ist, das das Receive-Side-Scaling unterstützt, wobei die Hardware-Umleitungstabelle in einer Hardware-Vorrichtung implementiert ist, die an eine Rechenplattform mit einer Mehrzahl von Prozessoren gekoppelt ist, und wobei die Hardware-Umleitungstabelle eine festgelegte Größe hat.
  8. 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) zu bestimmen, ob ein erster Satz von Einträgen in einer Software-Umleitungstabelle mehr Elemente als ein zweiter Satz von Einträgen in einer Hardware-Umleitungstabelle hat; (ii) eine Anzahl konfliktbildender Eintrage in der Software-Umleitungstabelle mit dem ersten Satz von Einträgen als Reaktion darauf, dass der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat, zu bestimmen, wobei der erste Satz von Einträgen dem zweiten Satz von Einträgen einer zweiten Umleitungstabelle zugeordnet werden kann, die in der Netzwerkschnittstelle implementiert ist, und wobei ein Konflikt dadurch charakterisiert ist, dass mindestens zwei Einträge der Software-Umleitungstabelle, die zu einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschieden Empfangsschlangen anzeigen; (iii) den ersten Satz von Einträgen dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle zuzuordnen; und (iv) anzuzeigen, dass Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender Einträge geringer als ein Schwellenwert ist.
  9. System nach Anspruch 8, 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.
  10. System nach Anspruch 8, wobei die Programmlogik des Weiteren in der Lage ist, den mindestens einen Prozessor betriebsbereit zu machen, um: anzuzeigen, dass alle Pakete zu einer einzigen Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist.
  11. System nach Anspruch 10, 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.
  12. System nach Anspruch 8, 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, dass der erste Satz von Einträgen in der Soft ware-Umleitungstabelle nicht mehr Elemente hat als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle.
  13. System nach Anspruch 8, 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.
  14. System nach Anspruch 8, wobei die Software-Umleitungstabelle einem Betriebssystem zugeordnet ist, das ein Receive-Side-Scaling unterstützt, wobei die Hardware-Umleitungstabelle in der Netzwerkschnittstelle implementiert ist, und wobei die Hardware-Umleitungstabelle von festgelegter Größe ist.
  15. System nach Anspruch 8, ferner umfassend: eine Rechenplattform, die mit dem mindestens einen Prozessor und der Netzwerkschnittstelle gekoppelt ist; und eine Speichersteuerung, die in der Rechenplattform implementiert ist.
  16. Herstellungsgegenstand, umfassend eine Speichermedium mit gespeicherten Anweisungen, die von einer Maschine ausführbar sind, um: zu bestimmen, ob ein erster Satz von Einträgen in einer Software-Umleitungstabelle mehr Elemente als ein zweiter Satz von Einträgen in einer Hardware-Umleitungstabelle hat; eine Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle mit einem ersten Satz von Einträgen als Reaktion darauf, dass der erste Satz von Einträgen in der Software-Umleitungstabelle mehr Elemente als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle hat, zu bestimmen, wobei der erste Satz von Einträgen dem zweiten Satz von Einträgen der Hardware-Umleitungstabelle zugeordnet werden kann, und wobei ein Konflikt dadurch charakterisiert ist, dass mindestens zwei Einträge der Software-Umleitungstabelle, die zu einem Eintrag der Hardware-Umleitungstabelle zugeordnet werden können, verschiedene Empfangsschlangen anzeigen; den ersten Satz von Einträgen dem zweiten Satz von Einträgen auf der Basis der Anzahl konfliktbildender Einträge in der Software-Umleitungstabelle zuzuordnen und anzuzeigen, dass Pakete, die mit konfliktbildenden Einträgen verbunden sind, zu einer Empfangsschlange gelenkt werden, wenn die Anzahl konfliktbildender Einträge geringer als ein Schwellenwert ist.
  17. Herstellungsgegenstand nach Anspruch 16, 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.
  18. Herstellungsgegenstand nach Anspruch 16, wobei die Anweisungen des Weiteren von einer Maschine ausgeführt werden können, um: anzuzeigen, dass alle Pakete zu einer einzigen Empfangsschlange gelenkt werden, abhängig von der Bestimmung, dass die Anzahl konfliktbildender Einträge nicht geringer als der Schwellenwert ist.
  19. Herstellungsgegenstand nach Anspruch 18, 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.
  20. Herstellungsgegenstand nach Anspruch 16, 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, dass der erste Satz von Einträgen in der Soft ware-Umleitungstabelle nicht mehr Elemente hat als der zweite Satz von Einträgen in der Hardware-Umleitungstabelle.
  21. Herstellungsgegenstand nach Anspruch 16, 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.
  22. Herstellungsgegenstand nach Anspruch 16, wobei die erste Umleitungstabelle einem Betriebssystem zugeordnet ist, das das Receive-Side-Scaling unterstützt, wobei die Hardware-Umleitungstabelle in der Netzwerkschnittstelle implementiert ist, und wobei die Hardware-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 DE112005000705T5 (de) 2007-02-15
DE112005000705B4 true 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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO1999030243A1 (en) * 1997-12-10 1999-06-17 Intel Corporation Mechanism that performs interrupt destination redirection
US20020138648A1 (en) * 2001-02-16 2002-09-26 Kuang-Chih Liu Hash compensation architecture and method for network address lookup
US20030225881A1 (en) * 2002-06-04 2003-12-04 Apoorv Saxena Efficient cascaded lookups at a network node

Family Cites Families (15)

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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO1999030243A1 (en) * 1997-12-10 1999-06-17 Intel Corporation Mechanism that performs interrupt destination redirection
US20020138648A1 (en) * 2001-02-16 2002-09-26 Kuang-Chih Liu Hash compensation architecture and method for network address lookup
US20030225881A1 (en) * 2002-06-04 2003-12-04 Apoorv Saxena Efficient cascaded lookups at a network node

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
DE112005000705T5 (de) 2007-02-15
US20050228851A1 (en) 2005-10-13
GB0620513D0 (en) 2006-12-06

Similar Documents

Publication Publication Date Title
DE112005000705B4 (de) Konfiguration von Umleitungstabellen
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
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
DE60020817T2 (de) Ablaufsteuerung für Betriebsmittel
DE60213974T2 (de) Verfahren und vorrichtung zur prioritäts-basierten flusskontrolle in einer ethernet-architektur
DE60024228T2 (de) Dynamische zuweisung verkehrsklassen an einer prioritätswarteschlange in einer paketbeförderungsvorrichtung
DE69834763T2 (de) Verfahren zur Unterstützung von verbindungsindividuellen Warteschlangen für rückgekoppelte Verkehrssteuerung
DE69928860T2 (de) System und Verfahren zur Auswahl von Servern für gespiegelte Sites
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
DE60302045T2 (de) Verfahren und System zur geordneten dynamischen Verteilung von Paketströmen zwischen Netzwerkprozessoren
DE102018204859A1 (de) Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene
DE102018212253A1 (de) Drosselung für bandbreitenunausgewogene datenübertragungen
DE112018003482T5 (de) Serveranfrageverwaltung
DE112008002550T5 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE102015119889A1 (de) Verfahren für Netzwerkvorrichtungsfluss-Look-up-Verwaltung
DE10296682T5 (de) Integriertes Verfahren zur Aufteilung von Netzwerkdatendienstleistungen unter mehreren Teilnehmern
DE112012006642T5 (de) Bandbreitengarantie und Arbeitskonservierung
DE112017003324T5 (de) Technologien für adaptives Routing unter Verwendung aggregierter Überlastungsinformationen
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
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
DE102020110143A1 (de) Standortbasierte virtualisierungs-workload-platzierung
DE112011105911T5 (de) Server mit Switch-Schaltungen

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