DE102004052412A1 - Verfahren und Vorrichtung zum dynamischen Umschalten zwischen Abfragen und Interrupt, um Netzverkehr zu handhaben - Google Patents

Verfahren und Vorrichtung zum dynamischen Umschalten zwischen Abfragen und Interrupt, um Netzverkehr zu handhaben Download PDF

Info

Publication number
DE102004052412A1
DE102004052412A1 DE102004052412A DE102004052412A DE102004052412A1 DE 102004052412 A1 DE102004052412 A1 DE 102004052412A1 DE 102004052412 A DE102004052412 A DE 102004052412A DE 102004052412 A DE102004052412 A DE 102004052412A DE 102004052412 A1 DE102004052412 A1 DE 102004052412A1
Authority
DE
Germany
Prior art keywords
network interface
interface card
mode
interrupt
packets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE102004052412A
Other languages
English (en)
Inventor
Sunay Santa Clara Tripathi
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE102004052412A1 publication Critical patent/DE102004052412A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Abstract

Es werden Verfahren und eine Vorrichtung zum Verarbeiten von Paketen in einem Computersystem, inkludierend ein Betriebssystem und eine Netzschnittstellenkarte, offengelegt. Die Netzschnittstellenkarte ist konfiguriert, in entweder einem Abfragemodus oder einem Interruptmodus zu arbeiten. Wenn die Netzschnittstellenkarte in dem Abfragemodus ist, wird die Netzschnittstellenkarte periodisch abgefragt, um zu bestimmen, ob ein oder mehr Pakete empfangen wurden. Wenn die Netzschnittstellenkarte in dem Interruptmodus ist, ist das Betriebssystem zum Empfangen eines Interrupts von der Netzschnittstellenkarte fähig, wobei der Interrupt anzeigt, dass die Netzschnittstellenkarte ein oder mehr Pakete empfangen hat. Das Betriebssystem ist zum Instruieren der Netzschnittstellenkarte fähig, ihren Modus von dem Abfragemodus zu dem Interruptmodus (z. B. wenn Pakete selten durch die Netzschnittstellenkarte empfangen werden) und von dem Interruptmodus zu dem Abfragemodus (z. B. Pakete häufiger durch die Netzschnittstellenkarte empfangen werden) zu ändern. Pakete, die empfangen werden, können dann durch das Betriebssystem verarbeitet werden.

Description

  • HINTERGRUND
  • Ein Betriebssystem inkludiert im allgemeinen einen Kern (kernel), der das Kernstück des Betriebssystems vom Computer ist. Die Dienste vom Kern können durch andere Teile des Betriebssystems oder durch eine Anwendung durch eine Systemabrufroutine angefordert werden.
  • Oben auf dem Netzprotokollstapel sind üblich Anwendungen geschrieben, um durch die Verwendung eines spezifischen Netzprotokolls zu funktionieren. Der Anwendungsentwickler muss dann eine unterschiedliche Version der Anwendung schreiben, damit sie unter Verwendung unterschiedlicher Netzprotokolle arbeitet. Viele Entwickler haben diese Probleme durch Schreiben von Anwendungen basierend auf einer gemeinsamen oder Standardschnittstelle, wie etwa NetBIOS, WinSock oder BSD-Sockets überwunden. Im allgemeinen kommunizieren diese Schnittstellen direkt mit der Socket-Schicht des Kerns. Die Socket-Schicht wurde gestaltet, um Unabhängigkeit von der Netzkommunikationsschicht vorzusehen und verbindet sich mit Systemabrufroutinen, die sich mit dem Kern verbinden.
  • Der Kern inkludiert die Socket-Schicht und den Netzprotokollstapel. Außerdem befindet sich ein Netzschnittstellenkarten- (NIC, Network Interface Card) Treiber, der zum Kommunizieren mit einer NIC fähig ist, in Kommunikation mit dem Kern über eine Standardschnittstelle, wie etwa eine Datenverknüpfungs-Anbieterschnittstelle.
  • Wenn eine NIC ein Paket über das Netz empfängt, erteilt die NIC traditionell einen Interrupt (Unterbrechung). Der Treiber benachrichtigt den Betriebssystemkern über den Interrupt. Der Kern verarbeitet den Interrupt und erhält das Paket von der NIC über den Treiber. Wie jedes Paket anschließend durch die NIC empfangen wird, generiert die NIC einen Interrupt. Somit erhält der Betriebssystemkern jedes Paket von der NIC, wie Interrupts generiert werden. Entsprechend werden Pakete, die durch die NIC empfangen werden, unverzüglich durch den Betriebssystemkern verarbeitet.
  • Ein Server wird typischerweise durch einen Client kontaktiert, wenn Daten von dem Server angefordert werden. Somit ist es die hauptsächliche Verantwortlichkeit des Servers, auf jede Serveranforderung mit den angeforderten Daten zu antworten. Da der Server aufgefordert ist, unverzüglich auf Interrupts zu antworten, die generiert werden, wenn Pakete empfangen werden, wird diesen empfangenen Daten unglücklicherweise eine höhere Priorität als die gegeben, die Paketen gegeben wird, die durch den Server übertragen werden. Entsprechend kann ein Client, der Pakete von einem Server empfängt, eine beträchtliche Verzögerung wahrnehmen, während Pakete durch den Server übertragen werden.
  • ZUSAMMENFASSUNG
  • Die vorliegende Erfindung ermöglicht einer Netzschnittstellenkarte, in vielfachen Modi betrieben zu werden, was ihre Fähigkeit aktiviert, eine zu steuernde CPU zu unterbrechen. Speziell können die Modi der Netzschnittstellenkarte durch einen Betriebssystemkern gesteuert werden. Auf diese Art und Weise kann der Betriebssystemkern Interruptverarbeitung der Netzschnittstellenkarte deaktivieren oder aktivieren, wobei dadurch ermöglicht wird, das Leistungsverhalten des Servers zu optimieren.
  • In Übereinstimmung mit einem Aspekt der Erfindung werden Verfahren und Vorrichtung zum Verarbeiten von Paketen in einem Computersystem inkludierend ein Betriebssystem und eine Netzschnittstellenkarte offengelegt. Wenn die Netzschnittstellenkarte in einem Abfragemodus ist, fragt der Betriebssystemkern die Netzschnittstellenkarte ab um zu bestimmen, ob ein oder mehr Pakete empfangen wurden. Wenn die Netzschnittstellenkarte in einem Interruptmodus ist, ist die CPU zum Empfangen eines Interrupts von der Netzschnittstellenkarte fähig, der anzeigt, dass die Netzschnittstellenkarte ein oder mehr Pakete empfangen hat. Pakete, die durch die Netzschnittstellenkarte empfangen wurden, können dann von der Netzschnittstellenkarte erhalten und verarbeitet werden.
  • In Übereinstimmung mit einem anderen Aspekt der Erfindung ist das Betriebssystem konfiguriert, die Netzschnittstellenkarte zu instruieren, in dem Abfragemodus oder dem Interruptmodus zu arbeiten. In Übereinstimmung mit einer Ausführungsform steuert das Betriebssystem den Betriebsmodus der Netzschnittstellenkarte derart, dass die Netzschnittstellenkarte in dem Abfragemodus während Perioden von starkem Netzverkehr und in dem Interruptmodus während Perioden von leichtem bis mäßigem Netzverkehr ist. Speziell instruiert das Betriebssystem die Netzschnittstellenkarte dynamisch, in einem ersten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei weniger als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem ersten Modus zum Unterbrechen einer CPU fähig ist, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird. Ähnlich instruiert das Betriebssystem die Netzschnittstellenkarte, in einem zweiten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei einer größeren als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem zweiten Modus deaktiviert wird, die CPU zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird. Entsprechend wird das System für eine netzintensive Arbeitslast wahrscheinlich in dem Abfragemodus bleiben.
  • In Übereinstimmung mit noch einem anderen Aspekt der Erfindung inkludiert ein Computersystem ein Betriebssystem und eine Netzschnittstellenkarte, die mit dem Betriebssystem gekoppelt ist, wobei die Netzschnittstellenkarte konfiguriert ist, im Interruptmodus zu arbeiten, wenn sie in einem ersten Zustand ist, und im Abfragemodus zu arbeiten, wenn sie in einem zweiten Zustand ist, wobei die Netzschnittstellenkarte, wenn sie in dem Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird. Wenn sie in dem Abfragemodus ist, kann die Netzschnittstellenkarte gänzlich oder unter speziellen Umständen (z.B. für Pakete, die eine normale bis geringe Priorität haben) deaktiviert sein, einen Interrupt zu erteilen.
  • In Übereinstimmung mit einer Ausführungsform inkludiert das Computersystem eine CPU mit einer zugehörigen Schlange und eine Netzschnittstellenkarte mit einem zugehörigen Puffer. Wenn ein Interrupt von der Netzschnittstellenkarte empfangen wird, wird eine Menge von einem oder mehr Paketen von dem Puffer, der zu der Netzschnittstellenkarte gehört, zu der Schlange, die zu der CPU gehört, transferiert. Ähnlich werden beim Abfragen der Netzschnittstellenkarte, falls bestimmt wird, dass ein oder mehr Pakete durch die Netzschnittstellenkarte empfangen wurden, das eine oder mehr Pakete in dem Puffer, der zu der Netzschnittstellenkarte gehört, zu der Schlange, die zu der CPU gehört, transferiert. Jedes der Pakete in der Schlange, die zu der CPU gehört, wird dann verarbeitet. Da die Menge von Paketen gleichzeitig als eine Kette von Paketen (d.h. eine verknüpfte Liste) transferiert werden kann, wird das Leistungsverhalten des Servers verbessert.
  • In Übereinstimmung mit einer Ausführungsform der Erfindung wird die Fähigkeit einer Netzschnittstellenkarte, eine spezifische CPU zu unterbrechen, dargelegt. Außerdem können die Pakete in dem Puffer der Netzschnittstellenkarte durch das Betriebssystem zu der Schlange, die zu der spezifischen CPU gehört, transferiert werden. Dies wird durch Zuweisen eines einzelnen Netzschnittstellenkartenidentifikators, um die CPU und ihre zugehörigen Schlange zu einer Netzschnittstellenkarte und ihrem zugehörigen Puffer abzubilden, bewerkstelligt. Auf diese Art und Weise können Pakete von der Netzschnittstellenkarte zu der Schlange für eine Verarbeitung durch die CPU effizient transferiert werden.
  • Die Ausführungsformen der Erfindung können durch Software, Hardware oder eine Kombination von Hardware und Software implementiert werden. Die Erfindung kann auch als ein computerlesbarer Code auf einem computerlesbaren Medium verkörpert sein. Außerdem sind auch Datenstrukturen, die offengelegt werden, Teil der Erfindung.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungsformen der Erfindung können am besten durch Verweis auf die folgende Beschreibung, aufgenommen in Verbindung mit den begleitenden Zeichnungen, verstanden werden, in denen:
  • 1 ein Blockdiagramm ist, das ein Computersystem inkludierend eine Netzschnittstellenkarte (NIC) vom Stand der Technik veranschaulicht;
  • 2 ein Blockdiagramm ist, das ein System veranschaulicht, in dem die vorliegende Erfindung in Übereinstimmung mit einer Ausführungsform der Erfindung implementiert sein kann;
  • 3 ein Prozessflussdiagramm ist, das ein allgemeines Verfahren zum Durchführen von Abfragen, um Netzverkehr zu handhaben, in Übereinstimmung mit einer Ausführungsform der Erfindung veranschaulicht;
  • 4 ein Prozessflussdiagramm ist, das ein Verfahren zum Durchführen von Abfragen, um Netzverkehr zu handhaben, in Übereinstimmung mit einer Ausführungsform der Erfindung veranschaulicht;
  • 5 ein Prozessflussdiagramm ist, das ein Verfahren zum Initialisieren der NIC, wie in Block 404 von 4 gezeigt, um dynamisches Abfragen zu unterstützen, in Übereinstimmung mit einer Ausführungsform der Erfindung veranschaulicht;
  • 6 ein Blockdiagramm ist, das ein typisches Mehrzweck-Computersystem veranschaulicht, das zum Implementieren der vorliegenden Erfindung geeignet ist.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung für Ausführungsformen der Erfindung werden zahlreiche spezifischen Details dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung vorzusehen. Es wird jedoch einem Durchschnittsfachmann offensichtlich sein, dass die vorliegende Erfindung ohne einige oder alle dieser spezifischen Details praktiziert werden kann. In anderen Fällen wurden gut bekannte Prozessschritte nicht detailliert beschrieben, um die vorliegende Erfindung nicht unnötig zu verwirren.
  • Wie in 1 gezeigt, inkludiert ein beispielhaftes Betriebssystem einen Kern 102. Der Kern ist das Kernstück des Computerbetriebssystems. Die Dienste des Kerns können durch andere Teile des Betriebssystems oder durch eine Anwendung 103 durch eine Systemabrufroutine angefordert werden.
  • Oben auf dem Netzprotokollstapel 107 sind Anwendungen 103 üblich geschrieben, um durch die Verwendung eines spezifischen Netzprotokolls zu funktionieren. Der Anwendungsentwickler muss dann eine unterschiedliche Version der Anwendung schreiben, damit sie unter Verwendung unterschiedlicher Netzprotokolle arbeitet. Viele Entwickler haben diese Probleme durch Schreiben von Anwendungen basierend auf einer gemeinsamen oder Standardschnittstelle, wie etwa NetBIOS, WinSock oder BSD-Sockets, überwunden. Im allgemeinen kommunizieren diese Schnittstellen direkt mit der Socket-Schicht 104 des Kerns. Die Socket-Schicht wurde gestaltet, Unabhängigkeit von der Netzkommunikationsschicht vorzusehen und verbindet sich mit Systemabrufroutinen, die sich mit dem Kern 102 verbinden.
  • Der Kern 102 inkludiert die Socket-Schicht 104 und den Netzprotokollstapel 107, der eine TCP-Schicht 106 und eine IP-Schicht 108 inkludiert. Speziell ist die TCP-Schicht 106 zum Durchführen eines TCP-Drei-Weg-Handshake fähig, um eine TCP-Verbindung herzustellen, und managt den Zusammenbau einer Nachricht oder Datei in Pakete, die über das Internet während der TCP-Verbindung übertragen werden können. Die IP-Schicht 108 handhabt die Adressierung für jedes Paket. Außerdem ist ein Netzschnittstellenkarten- (NIC) Treiber 110, der zum Kommunizieren mit einer NIC 112 fähig ist, in Verbindung mit dem Kern 102 über eine Standardschnittstelle, wie etwa eine Da tenverknüpfungs-Anbieterschnittstelle (Data Link Provider Interface).
  • Wenn eine NIC 112 ein Paket über das Netz empfängt, erteilt die NIC 112 traditionell einen Interrupt. Der Treiber 110 benachrichtigt den Betriebssystemkern 102 über den Interrupt. Der Kern 102 verarbeitet den Interrupt und erhält das Paket von der NIC 112 über den Treiber 110. Wie jedes Paket anschließend durch die NIC 112 empfangen wird, generiert die NIC 112 einen Interrupt. Somit erhält der Betriebssystemkern 102 jedes Paket von der NIC 112, wie Interrupts generiert werden. Entsprechend werden Pakete, die durch die NIC 112 empfangen werden, unverzüglich durch den Betriebssystemkern 102 verarbeitet.
  • Wie eine NIC Pakete über das Netz empfängt, generiert sie typischerweise Interrupts. Während ein Interrupt in Situationen mit hoher Priorität, die selten auftreten, praktisch ist, ist ein Interrupt für Situationen mit geringer Priorität, die häufig auftreten, nicht praktisch.
  • In elektronischer Kommunikation ist "Abfragen" die periodische Prüfung von anderen Programmen oder Einrichtungen durch ein Programm oder eine Einrichtung um zu sehen, in welchem Zustand sie sind, gewöhnlich um zu sehen, ob sie noch verbunden sind oder zu kommunizieren wünschen. Speziell sendet eine steuernde Einrichtung, die zu einer anderen Einrichtung angebracht ist, periodisch der Einrichtung eine Nachricht, die nachfragt, ob irgendetwas zu kommunizieren ist.
  • Abfragen ist eine brauchbare Option für eine Verwendung in Situationen, die Situationen geringer Priorität sind, die häufig auftreten. Z.B. könnte die NIC in einen Abfragemodus platziert werden, und beliebige Pakete, die durch die NIC empfangen werden, könnten periodisch von der NIC erhalten werden. Permanentes Platzieren der NIC in einen Abfragemodus würde jedoch potenziell zu einer beträchtlichen Verzögerung für jene Pakete führen, die durch die NIC empfangen werden.
  • In Übereinstimmung mit einer Ausführungsform der Erfindung ist die NIC zum Arbeiten in zwei Modi konfiguriert: Abfragemodus und Interruptmodus. Wenn die NIC in dem Abfragemodus ist, fragt der Betriebssystemkern speziell die NIC periodisch ab um zu bestimmen, ob ein oder mehr Pakete empfangen wurden. Wenn die NIC in dem Interruptmodus ist, erteilt die NIC einen Interrupt, wenn die NIC ein oder mehr Pakete empfangen hat, die durch den Betriebssystemkern gehandhabt werden müssen.
  • In Übereinstimmung mit einer anderen Ausführungsform der Erfindung ist das Betriebssystem zum Instruieren der NIC fähig, in entweder dem Abfragemodus oder dem Interruptmodus zu arbeiten. Speziell wird die Netzschnittstellenkarte instruiert, in dem Abfragemodus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte häufig empfangen werden, während die Netzschnittstellenkarte instruiert wird, in dem Interruptmodus zu arbeiten, wenn Pakete durch Netzschnittstellenkarte selten empfangen werden. Die Häufigkeit kann durch Festsetzen eines vordefinierten numerischen Schwellwertes festgesetzt werden, wie etwa die Zahl von Paketen, die pro Sekunde durch die NIC empfangen werden. Wenn z.B. die Zahl von Paketen, die durch die Netzschnittstellenkarte pro Sekunde empfangen werden, kleiner als eine vorbestimmte Zahl von Paketen ist, dann kann die Netzschnittstellenkarte instruiert werden, in dem Interruptmodus zu arbeiten. Wenn die Zahl von Paketen, die pro Sekunde durch die Netzschnittstellenkarte empfangen werden, größer oder gleich einer vordefinierten Zahl von Paketen ist, kann dann die Netzschnittstellenkarte ähnlich instruiert werden, in dem Abfragemodus zu arbeiten. In einer anderen Ausführungsform der Erfindung wird, falls das Betriebssystem bereits ein Paket verarbeitet, das früher empfangen wird oder zu übertragen ist und es mehr in einer Schlange eingereihte Pakete in der Schlange der CPU gibt, die NIC instruiert, im Abfragemodus zu arbeiten.
  • 2 ist ein Blockdiagramm, das ein System veranschaulicht, in dem die vorliegende Erfindung in Übereinstimmung mit einer Ausführungsform der Erfindung implementiert werden kann. Wie gezeigt, kann das Computersystem eine oder mehr zentrale Verarbeitungseinheiten (CPUs) inkludieren, die als CPU0 202, CPU1 204 und CPUn 206 gezeigt werden. Außerdem kann das System eine oder mehr Netzschnittstellenkarten (NICs) inkludieren, die als NIC0 208, NIC1 210 und NICn 212 gezeigt werden. In Übereinstimmung mit einer Ausführungsform wird der Modus (z.B. Interrupt, Abfragen) einer bestimmten NIC in Verbindung mit einer oder mehr der CPUs festgesetzt. Auf diese Art und Weise ist es möglich, eine NIC zu instruieren, ob ihr gestattet ist, eine bestimmte CPU zu unterbrechen, während der NIC noch ermöglicht wird, andere CPUs zu unterbrechen.
  • Betriebssystem 214 inkludiert einen Betriebssystemkern mit einem Netzprotokollstapel. Z.B. kann der Netzprotokollstapel ein TCP/IP-Stapel sein. Das Betriebssystem inkludiert auch ein Interrupt-Steuerungsprogramm (interrupt handler). Allgemein priorisiert ein Interrupt-Steuerungsprogramm Interrupts, die durch das Betriebssystem empfangen werden, und sichert sie in einer Schlange, falls mehr als einer darauf wartet, gehandhabt zu werden. Wenn ein Interrupt von einer der NICs 208, 210, 212 empfangen wird, wird der Interrupt in der Schlange priorisiert. Ein Zeitplanungsprogramm (scheduler) des Betriebssystems plant den Betrieb von unterschiedlichen Programmen, wie die Interrupts empfangen werden.
  • Wenn eine Hardware-Einrichtung einen Interrupt generiert, hat im allgemeinen der Interrupt einen Wert, der ihn mit einer bestimmten Einrichtung in Verbindung bringt. Somit identifi ziert der Interruptwert die eine der NICs. In Übereinstimmung mit einer Ausführungsform identifiziert der Interruptwert auch die eine der CPUs, die gerade unterbrochen wird. Z.B. kann ein einzelner Interruptidentifikator (d.h. NIC- oder Interruptidentifikator) verwendet werden, um eine bestimmte NIC auf eine bestimmte CPU abzubilden. Somit können durch die Verwendung dieses Identifikators sowohl die NIC als auch die CPU, die gerade unterbrochen wird, durch den Betriebssystemkern identifiziert werden, der den Interrupt empfängt.
  • Wie in 2 gezeigt, hat in Übereinstimmung mit einer Ausführungsform jede der CPUs 202, 204, 206 eine zugehörige Schlange Squeue0 216, Squeuel 218 bzw. Squeuen 220 zum Speichern von Paketen. Die Schlange kann eingehende (inbound) und/oder ausgehende (outbound) Pakete speichern. Außerdem hat jede der NICs 208, 210, 212 einen zugehörigen Speicher (z.B. einen Ringpuffer) zum Speichern eingehender Pakete, wie sie über ein Netz empfangen werden. Wie gezeigt hat somit jede der NICs 208, 210, 212 einen zugehörigen Ringpuffer 222, 224 bzw. 226.
  • In Übereinstimmung mit einer Ausführungsform ist jede der Schlangen Squeue0 216, Squeuel 218, Squeuen 220, die mit einer der CPUs 202, 204, 206 in Verbindung steht, zum Speichern von sowohl eingehenden Paketen als auch ausgehenden Paketen fähig. Als ein Ergebnis wird sowohl eingehenden Paketen als auch ausgehenden Paketen gleiche Priorität gegeben. Z.B. kann jede der Schlangen Squeue0 216, Squeuel 218, Squeuen 220 eine Serialisierungsschlange sein, wie etwa die, die in der Patentanmeldung mit dem Titel "A System and Method for Vertical Perimeter Protection" offengelegt wird, die Sunay Tripathi und Bruce Curtis als Erfinder benennt, eingereicht am 10. Oktober 2003, die hierin durch Verweis für alle Zwecke einbezogen ist.
  • Wie oben beschrieben, kann der Interruptwert (d.h. NIC- oder Interruptidentifikator) verwendet werden, um sowohl eine der CPUs 202, 204, 206 als auch eine der NICs 208, 210, 212 zu identifizieren. Außerdem kann der Identifikator ferner auf eine der Schlangen 216, 218, 220, die mit einer der CPUs 202, 204, 206 in Verbindung steht, abgebildet werden. Außerdem kann der Identifikator weiter verwendet werden, um den Identifikator auf einen der Ringpuffer 222, 224, 226 abzubilden. Z.B. kann es wünschenswert sein, eine der Schlangen 216, 218, 220 auf einen der Ringpuffer 222, 224, 226 abzubilden, um den Transfer von Paketen von einem der Ringpuffer zu einer der Schlangen zu erleichtern. In Übereinstimmung mit einer Ausführungsform wird ein einzelner Identifikator verwendet, um eine der CPUs 202, 204, 206 und ihre zugehörige Schlange 216, 218 oder 220 mit einer der NICs 208, 210, 212 und ihrem zugehörigen Puffer 222, 224 oder 226 abzubilden.
  • Kommunikation zwischen den CPUs 202, 204, 206 und den NICs 208, 210, 212 kann durch die Verwendung eines Treibers 228 erreicht werden. In Übereinstimmung mit einer Ausführungsform inkludiert der Treiber einer oder mehr Anwendungsprogrammierschnittstellen (APIs, application programming interface) (z.B. CHANGE INTERRUPT (ÄNDERE INTERRUPT)), um dem Betriebssystemkern zu ermöglichen, eine der NICs 208, 210, 212 zu instruieren, ihren Modus von dem Interruptmodus zu dem Abfragemodus oder vom Abfragemodus zum Interruptmodus zu ändern.
  • Außerdem kann eine API (z.B. GET PACKETS (ERHALTE PAKETE)) vorgesehen sein, die dem Betriebssystemkern ermöglicht, eine Menge von Paketen von einem der Puffer 222, 224, 226, die mit einer der NICs 208, 210, 212 in Verbindung stehen, zu einer der Schlangen 216, 218, 220, die mit einer der CPUs 202, 204, 206 in Verbindung stehen, zu verschieben. Somit kann der Betriebssystemkern eine NIC instruieren, ihren Modus vom Interruptmodus zum Abfragemodus oder vom Abfragemodus zum Inter ruptmodus zu ändern. Als Reaktion tritt die NIC in den Abfragemodus oder den Interruptmodus ein, wie instruiert.
  • Außerdem kann das für das Betriebssystem wünschenswert sein herauszufinden, ob die Netzschnittstellenkarte in einem Interruptmodus oder einem Abfragemodus ist. Sobald das Betriebssystem den Zustand der Netzschnittstellenkarte kennt, kann es dann entsprechend handeln. Wenn die NIC in dem Abfragemodus ist, fragt das Betriebssystem speziell die NIC periodisch nach Paketen ab, die empfangen worden sein können. Wenn die NIC in dem Interruptmodus ist, arbeitet das Betriebssystem, Pakete abzufragen, wenn ein Interrupt von der NIC empfangen wird.
  • Wie oben beschrieben, ist die NIC zum Arbeiten in zwei unterschiedlichen Modi fähig. Dieses Beispiel ist jedoch lediglich veranschaulichend, und es können auch andere zusätzliche Modi implementiert werden. Außerdem ist es auch möglich, dass der Interruptmodus und der Abfragemodus auf unterschiedliche Art und Weise implementiert sind. Allgemein generiert die NIC einen Interrupt, wenn ein Paket empfangen wird, während sie in dem Interruptmodus arbeitet, kann aber nicht einen Interrupt generieren, wenn ein Paket empfangen wird, während sie in dem Abfragemodus arbeitet. Wenn die NIC alternativ in dem Abfragemodus ist, kann die NIC einen Interrupt generieren, wenn ein Paket empfangen wird, aber nur für Pakete, von denen erachtet wird, dass sie eine hohe Priorität haben (nicht für Pakete, von denen erachtet wird, dass sie eine geringe Priorität haben). Hohe Priorität kann auf eine einzelne Priorität verweisen, oder kann auf einen Bereich von Prioritäten von Paketen verweisen.
  • Speziell ist in Übereinstimmung mit einer Ausführungsform die Netzschnittstellenkarte, wenn sie in dem Interruptmodus ist, konfiguriert, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird. Wenn die Netzschnittstellenkarte in dem Abfragemodus ist, ist die NIC nicht in der Lage, das Betriebssystem zu unterbrechen, wobei dadurch dem Betriebssystem ermöglicht wird, die Netzschnittstellenkarte abzufragen, um Pakete von der Netzschnittstellenkarte zu erhalten. In Übereinstimmung mit einer anderen Ausführungsform ist die Netzschnittstellenkarte nicht in der Lage, das Betriebssystem, wenn sie indem Abfragemodus ist, für Pakete mit geringer Priorität zu unterbrechen, sondern setzt fort in der Lage zu sein, das System für Pakete mit hoher Priorität zu unterbrechen, wenn sie in dem Abfragemodus ist.
  • Wie oben beschrieben, ist eine NIC zum Arbeiten in zwei unterschiedlichen Modi fähig. In diese Modi kann bei Initialisierung (z.B. Hochfahren), bei Instruktion von einer externen Quelle (z.B. CPU oder Treiber, der mit der NIC in Verbindung steht) oder bei interner Instruktion von innerhalb der NIC eingetreten werden. Z.B. kann die NIC wählen, ihren Betriebsmodus wegen einem externen (z.B. beschäftigter (busy) oder nicht-beschäftigter Zustand) oder internen Faktor (z.B. Hardwarefehler) zu ändern. Es wird auch betrachtet, dass die NIC in einen Betriebsmodus permanent (z.B. bis zu einer weiteren Instruktion) oder zeitweilig (z.B. für eine spezifizierte Zeitperiode) eintreten kann. Somit kann die CPU die NIC instruieren, in den Abfragemodus oder den Interruptmodus für eine spezifizierte Zeitperiode einzutreten, wonach sie zu ihrem vorherigen Betriebsmodus zurückkehrt. Alternativ kann die CPU die NIC instruieren, in einen Betriebsmodus durch die Verwendung einer spezifischen Instruktion, um in diesen Modus einzutreten, oder durch die Verwendung einer Umschalteroperation, um die NIC zu veranlassen, in den Betriebsmodus einzutreten, der ihrem gegenwärtigen Betriebsmodus entgegengesetzt ist, einzutreten.
  • 3 ist ein Prozessflussdiagramm, das ein allgemeines Verfahren zum Durchführen von Anfragen veranschaulicht, um Netzverkehr in Übereinstimmung mit einer Ausführungsform der Erfindung zu handhaben. Wie oben beschrieben, können eine NIC und ihr zugehöriger Puffer auf eine CPU und ihre zugehörige Schlange abgebildet werden. In Übereinstimmung mit einer Ausführungsform wird diese Abbildung während Initialisierung des Computersystems durchgeführt. Wenn das Computersystem in Block 302 hochgefahren wird, wird die NIC somit in Block 304 derart initialisiert, dass die NIC auf eine spezifische CPU abgebildet wird, wobei dadurch die Schlange der CPU mit dem Ringpuffer der NIC in Verbindung gebracht wird. Dies kann durch die Verwendung eines NIC-Identifikators bewerkstelligt werden, wie oben mit Bezug auf 2 beschrieben wurde. Ein Verfahren zum Initialisieren des Systems, um eine derartige Abbildung zu bewerkstelligen, wird detaillierter nachstehend mit Bezug auf 5 beschrieben. Da der NIC-Identifikator eine bestimmte CPU identifiziert, wird die NIC darüber in Kenntnis gesetzt, welche CPU sie unterbrechen wird. Bei Empfang des NIC-Identifikators speichert der Betriebssystemkern den NIC-Identifikator (z.B. während Initialisierung oder bei Empfang eines Interrupts) derart, dass der NIC-Identifikator mit einer unterbrochenen CPU und ihrer zugehörigen Schlange in Verbindung gebracht wird. Wie oben beschrieben, kann der NIC-Identifikator auch den Empfangspuffer (ebenso wie eine Interruptleitung) für die NIC identifizieren. Außerdem kann die NIC derart initialisiert werden, dass sie anfangs im Interruptmodus arbeitet.
  • Angenommen, dass die NIC im Interruptmodus arbeitet, unterbricht die NIC die CPU in Block 306, um ein empfangenes Paket zu bearbeiten. Wenn ein Interrupt von der NIC empfangen wird, wird eine Menge von einem oder mehr Paketen von dem Ringpuffer, der zu der NIC gehört, zu der Schlange, die zu der CPU gehört, in Block 308 transferiert. In Übereinstimmung mit ei ner Ausführungsform wird eine Menge von Paketen gleichzeitig transferiert. Z.B. kann ein Zeiger zu einer verknüpften Liste von Paketen der Schlange von Paketen, die zu der CPU gehört, hinzugefügt werden.
  • Die NIC schaltet dann zu dem Abfragemodus in Block 310 um. Z.B. kann die NIC zu dem Abfragemodus umgeschaltet werden, wenn der Interrupt von der NIC empfangen wird (oder kurz danach), oder vor einer Verarbeitung der Pakete in der Schlange. Speziell instruiert der Kern des Betriebssystems in Übereinstimmung mit einer Ausführungsform die NIC, in den Abfragemodus einzutreten. Z.B. kann die NIC, die durch den NIC-Identifikator identifiziert wird, instruiert werden, in den Abfragemodus von dem Interruptmodus einzutreten. Danach arbeitet der Kern des Betriebssystems, die NIC periodisch abzufragen.
  • Nachdem die Pakete von dem Ringpuffer der NIC empfangen sind, verarbeitet der Betriebssystemkern jedes der Pakete in der Schlange der CPU in Block 312. Da die Schlange sowohl eingehende als auch ausgehende Pakete enthält, priorisiert die CPU gleichmäßig eingehende und ausgehende Pakete.
  • Sobald alle Pakete in der Schlange der CPU verarbeitet wurden, fragt der Betriebssystemkern in Block 314 die NIC ab um zu bestimmen, ob die NIC ein oder mehr Pakete empfangen hat. Z.B können der Betriebssystemkern, der Treiber und/oder die NIC herausfinden, ob es irgendwelche Pakete in dem Ringpuffer gibt, der zu der NIC gehört. Die kann z.B. durch Abfragen der NIC, die durch einen spezifischen NIC-Identifikator identifiziert wird, bewerkstelligt werden.
  • Falls ein oder mehr Pakete durch die Netzschnittstellenkarte empfangen wurden, wie in Block 316 gezeigt (z.B. falls beliebige Pakete in dem Ringpuffer der NIC sind), werden das eine oder mehr Pakete in dem Puffer, der zu der Netzschnittstellenkarte gehört, zu der Schlange transferiert, die zu der CPU gehört, wie in Block 318 gezeigt. Das Betriebssystem setzt in Block 312 fort, jedes der Pakete in der Schlange, die zu der CPU gehört, zu verarbeiten.
  • Falls keine Pakete mehr durch die Netzschnittstellenkarte in Block 316 empfangen wurden (z.B. keine Pakete in dem Ringpuffer sind, der zu der NIC gehört), wird die Netzschnittstelle instruiert, von dem Abfragemodus zu dem Interruptmodus in Block 320 umzuschalten. Wie oben beschrieben kann z.B. die NIC, die durch einen speziellen NIC-Identifikator identifiziert wird, instruiert sein, von dem Abfragemodus zu dem Interruptmodus umzuschalten. Der Prozess setzt dann in Block 306 fort, Interrupts zu verarbeiten, wie sie empfangen werden.
  • Wie oben beschrieben, werden sowohl eingehende als auch ausgehende Pakete, die in der Schlange vorhanden sind, die mit der CPU in Verbindung steht, verarbeitet. Diese Pakete können mit vielen Netzverbindungen ebenso wie einer einzelnen Netzverbindung in Verbindung stehen.
  • Die beschriebenen Ausführungsformen können in einer Vielfalt von Programmiersprachen implementiert werden. In Übereinstimmung mit einer Ausführungsform werden die beschriebenen Ausführungsformen in einer objektorientierten Programmiersprache implementiert. Sprachen, die objektorientierte Programmierung unterstützen, bringen auch Multithreading auf verschiedenen Wegen unter und fördern es. Z.B. unterstützt JavaTM Multithreading durch Einschließen von Synchronisationsmodifikatoren in der Sprachsyntax, durch Vorsehen von Klassen, die für Multithreading entwickelt sind, die durch andere Klassen geerbt werden können, und durch Durchführen von Hintergrund"Ausschussdatensammlung" (Wiedergewinnen von Datenbereichen, die nicht länger verwendet werden) für viele Threads. Somit werden in Übereinstimmung mit einer Ausführungsform ein oder mehr Threads für eine Ausführung der beschriebenen Ausführungsformen instantiiert.
  • 4 ist ein Prozessflussdiagramm, das ein Verfahren zum Durchführen von Abfragen veranschaulicht, um Netzverkehr in Übereinstimmung mit einer Ausführungsform der Erfindung zu handhaben. Speziell werden ein oder mehr Arbeitsthreads (worker threads) zur Ausführung des oben beschriebenen Verfahrens instantiiert. Wie in Block 402 gezeigt, wird das Computersystem erneut hochgefahren. Zu dieser Zeit werden in Block 404 ein oder mehr Arbeitsthreads instantiiert. In Übereinstimmung mit einer Ausführungsform sind die Arbeitsthreads einer bestimmten CPU gewidmet.
  • Zu der Zeit, zu der das System wieder hochgefahren wird, wird das System in Block 406 derart initialisiert, dass die NIC auf eine spezielle CPU abgebildet wird, wobei dadurch die Schlange der CPU mit dem Ringpuffer der NIC in Verbindung gebracht wird. Dies kann durch die Verwendung eines gemeinsamen Identifikators bewerkstelligt werden, wie oben beschrieben wird. Außerdem wird das System derart initialisiert, dass die NIC im Interruptmodus ist.
  • Wenn die NIC die CPU in Block 408 unterbricht, um ein Paket zu verarbeiten, signalisiert die CPU einem Arbeitsthread (z.B. der CPU gewidmet) in Block 410, Pakete zu verarbeiten. Der Arbeitsthread kann einer Verarbeitung aller Pakete für die CPU gewidmet sein, oder lediglich einer Verarbeitung von Paketen in der Schlange gewidmet sein, die zu der CPU gehört. Speziell transferiert der Arbeitsthread eine Menge von Paketen in dem Ringpuffer der NIC zu der Schlange der CPU in Block 412. In Übereinstimmung mit einer Ausführungsform ruft der Arbeitsthread eine Prozedur GET PACKETS mit dem NIC-Iden tifikator als einen Parameter ab, um die Pakete von dem Ringpuffer der NIC zu der Schlange der CPU zu transferieren. Wie oben beschrieben, bildet der NIC-Identifikator die CPU und ihre zugehörige Schlange zu der NIC und ihren zugehörigen Ringpuffer ab. Der Arbeitsthread ruft dann eine Prozedur CHANGE INTERRUPT in Block 414 mit dem NIC-Identifikator als einen Parameter und einem boolschen Wert, um Interruptverarbeitung für die NIC, die durch den NIC-Identifikator (und ihre zugehörige CPU) identifiziert wird, abzuschalten. Auf diese Art und Weise wird die NIC instruiert, in den Abfragemodus einzutreten. Z.B. kann die NIC instruiert werden, in den Abfragemodus einzutreten, wenn der Interrupt empfangen wird oder kurz danach. Außerdem verarbeitet der Arbeitsthread jedes der Pakete in der Schlange der CPU in Block 416.
  • Wenn der Arbeitsthread die Verarbeitung aller Pakete in der Schlange der CPU erledigt hat, findet er in Block 418 heraus, ob die NIC beliebige zusätzliche Pakete empfangen hat. Z.B. kann der Ringpuffer, der zu der NIC gehört, in Block 418 geprüft werden um zu bestimmen, ob es beliebige Pakete in dem Ringpuffer gibt.
  • Falls in Block 420 mehr Pakete durch die NIC empfangen wurden (z.B. gibt es zusätzliche Pakete in dem Ringpuffer), ruft der Arbeitsthread in Block 422 erneut die Prozedur GET PACKETS ab, um die Menge von Paketen in dem Ringpuffer der NIC zu der Schlange, die zu der CPU gehört, zu transferieren, wie oben beschrieben wird. Der Prozess setzt dann fort, wie in Block 416 gezeigt, und der Arbeitsthread verarbeitet jedes der Pakete in der Schlange der CPU.
  • Sobald bestimmt ist, dass die NIC keinerlei zusätzliche Pakete empfangen hat (z.B. gibt es keine zusätzlichen Pakete in dem Ringpuffer), ruft der Arbeitsthread in Block 424 die Prozedur CHANGE INTERRUPT mit dem NIC-Identifikator und einem boolschen Wert als einen Parameter ab, um Interruptverarbeitung für die NIC, die durch den NIC-Identifikator identifiziert wird (und ihre zugehörige CPU), einzuschalten. Auf diese Art und Weise wird die NIC instruiert, in den Interruptmodus einzutreten. Somit wird die NIC instruiert, zu dem Interruptmodus umzuschalten, wenn keine Pakete in der Schlange, die zu der CPU gehört, oder dem Puffer, der zu der NIC gehört, sind. Der Prozess setzt dann in Block 408 fort, wie Interrupts durch die CPU empfangen werden.
  • In Übereinstimmung mit einer anderen Ausführungsform ist der Arbeitsthread lediglich für eine Verarbeitung von Paketen in der Schlange der CPU verantwortlich. Somit wird ein zweiter Arbeitsthread für den Zweck eines Transfers der Pakete von dem Ringpuffer der NIC zu der Schlange der CPU über die Prozedur GET PACKETS instantiiert. Dieser zweite Arbeitsthread ist auch für TCP/IP-Verarbeitung der Pakete verantwortlich. Sobald die Kette von Paketen zu der Schlange der CPU transferiert wurde, verarbeitet der ursprüngliche Arbeitsthread die Pakete.
  • 5 ist ein Prozessflussdiagramm, das ein Verfahren zum Initialisieren der NIC, wie in Block 406 von 4 gezeigt, veranschaulicht, um dynamisches Abfragen in Übereinstimmung mit einer Ausführungsform der Erfindung zu unterstützen. Wie oben beschrieben, wird in Übereinstimmung mit einer Ausführungsform ein NIC-Identifikator verwendet, um eine CPU und ihre zugehörige Schlange auf eine NIC und ihren zugehörigen Ringpuffer abzubilden. Somit wird ein NIC-Identifikator in Block 502 zugeordnet. Der NIC-Identifikator wird einer NIC und einem zugehörigen Ringpuffer 504 zugewiesen. Außerdem wird der NIC-Identifikator einer CPU und ihrer zugehörigen Schlange in Block 506 zugewiesen. Auf diese Art und Weise wird ein einzelner NIC-Identifikator mit einer CPU und ihrer zugehörigen Schlange in Verbindung gebracht, ebenso wie mit einer NIC und ihrem zugehörigen Ringpuffer in Verbindung gebracht. Der NIC-Identifikator wird dann dem Netzprotokollstapel des Betriebssystemkerns in Block 508 ebenso wie die NIC bereitgestellt. Auf diese Art und Weise können der Betriebssystemkern und die NIC miteinander unter Verwendung des NIC-Identifikators kommunizieren. Es wird dann in Block 510 Interruptverarbeitung derart initiiert, dass die NIC im Interruptmodus ist.
  • Die oben beschriebenen Ausführungsformen ermöglichen, dass eine NIC und ihr Betriebsmodus durch einen Betriebssystemkern gesteuert werden. Speziell kann die Fähigkeit einer NIC, eine CPU zu unterbrechen, aktiviert oder deaktiviert werden. Dieser Betriebsmodus kann ein allgemeiner Betriebsmodus sein. Alternativ kann dieser Betriebsmodus für die Handhabung von Paketen, die durch die NIC empfangen werden, spezifisch sein. Mit anderen Worten kann in Übereinstimmung mit einer Ausführungsform ein Interrupt durch die NIC für Zwecke außer einer Benachrichtigung des Betriebssystemkerns, dass ein Paket empfangen wurde, generiert werden, selbst wenn die NIC in den Abfragemodus ist.
  • Die vorliegende Erfindung kann in einem beliebigen geeigneten Computersystem implementiert werden. 6 veranschaulicht ein typisches Mehrzweck-Computersystem 1502, das zum Implementieren der vorliegenden Erfindung geeignet ist. Das Computersystem kann eine beliebige geeignete Form annehmen.
  • Computersystem 1530, oder genauer CPUs 1532, kann angeordnet sein, eine virtuelle Maschine zu unterstützen, wie durch einen Durchschnittsfachmann erkannt wird. Das Computersystem 1502 inkludiert eine beliebige Zahl von Prozessoren 1504 (auch als zentrale Verarbeitungseinheiten oder CPUs bezeichnet), die mit Speichereinrichtungen gekoppelt sein können, inkludierend eine primäre Speichereinrichtung 1506 (typi scherweise ein Nur-Lese-Speicher oder ROM) und eine primäre Speichereinrichtung 1508 (typischerweise ein Speicher mit wahlfreiem Zugriff oder RAM). Wie in der Technik gut bekannt ist, agiert ein ROM, um Daten und Instruktionen unidirektional zu den CPUs 1504 zu transferieren, während RAM typischerweise verwendet wird, um Daten und Instruktionen auf eine bidirektionale Art und Weise zu transferieren. Beide primäre Speichereinrichtungen 1506, 1508 können beliebige geeignete computerlesbare Medien inkludieren. Die CPUs 1504 kann im allgemeinen eine beliebige Zahl von Prozessoren inkludieren.
  • Es kann auch ein sekundäres Speichermedium 1510, das typischerweise eine Massenspeichereinrichtung ist, bidirektional mit CPUs 1504 gekoppelt sein, und sieht zusätzliche Datenspeicherkapazität vor. Die Massenspeichereinrichtung 1510 ist ein computerlesbares Medium, das verwendet werden kann, um Programme, inkludierend Computercode, Daten und dergleichen, zu speichern. Typischerweise ist die Massenspeichereinrichtung 1510 ein Speichermedium, wie etwa eine Festplatte, die typischerweise langsamer als primäre Speichereinrichtungen 1506, 1508 ist.
  • Die CPUs 1504 können auch mit einer oder mehr Eingabe-/Ausgabeeinrichtungen 1512 gekoppelt sein, die Einrichtungen inkludieren können, aber nicht darauf begrenzt, wie etwa Videomonitore, Track-Balls (Rollkugeln), Mäuse, Tastaturen, Mikrofone, berührungsempfindliche Anzeigen, Tranducer-Kartenleser, magnetische oder Papierbandleser, Tabletts, Griffel, Sprach- oder Handschrifterkennungseinrichtungen oder andere gut bekannte Eingabeeinrichtungen, wie etwa natürlich andere Computer. Schließlich können die CPUs 1504 optional mit einem Computer oder einem Telekommunikationsnetz, wie etwa einem Internet-Netz oder einem Intranet-Netz, unter Verwendung einer Netzverbindung, wie allgemein bei 1514 gezeigt, gekoppelt sein. Mit einer derartigen Netzverbindung wird erachtet, dass die CPUs 1504 Information von dem Netz empfangen können, oder Information zu dem Netz im Verlauf einer Durchführung der oben beschriebenen Verfahrensschritte ausgeben können. Derartige Information, die häufig als eine Sequenz von Instruktionen dargestellt wird, um unter Verwendung der CPUs 1504 ausgeführt zu werden, kann von/zu dem Netz z.B. in der Form eines Computerdatensignals, das in einer Trägerwelle verkörpert ist, empfangen und ausgegeben werden.
  • Obwohl veranschaulichende Ausführungsformen und Anwendungen dieser Erfindung hierin gezeigt und beschrieben werden, sind viele Variationen und Modifikationen möglich, die innerhalb des Konzepts, Bereichs und Geistes der Erfindung bleiben, und diese Variationen würden einem Durchschnittsfachmann nach Durchsicht dieser Anmeldung klar werden. Obwohl z.B. die oben beschriebenen Ausführungsformen in Bezug auf die Verwendung eines einzelnen NIC-Treibers dargelegt werden, sind diese Ausführungsformen lediglich veranschaulichend. Entsprechend können die beschriebenen Ausführungsformen bezüglich einer Vielfalt von Systemen implementiert werden, und können deshalb mit einer größeren Anzahl von Treibern implementiert werden. Z.B. kann ein Treiber in Verbindung mit jeder NIC implementiert werden. Außerdem sind die oben beschriebenen Prozessblöcke lediglich veranschaulichend. Deshalb kann die Kommunikation zwischen dem Computerbetriebssystem und jeder NIC unter Verwendung alternativer Prozessblöcke ebenso wie alternativer Datenstrukturen durchgeführt werden. Entsprechend sind die vorliegenden Ausführungsformen als veranschaulichend und nicht beschränkend zu betrachten, und die Erfindung ist nicht auf die hierin angegebenen Details zu begrenzen, sondern kann innerhalb des Bereichs und von Entsprechungen der angefügten Ansprüche modifiziert werden.

Claims (63)

  1. Verfahren zum Konfigurieren einer Netzschnittstellenkarte, umfassend: Instruieren der Netzschnittstellenkarte, in einem ersten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei weniger als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem ersten Modus zum Unterbrechen einer CPU fähig ist, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird; und Instruieren der Netzschnittstellenkarte, in einem zweiten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei einer größeren als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem zweiten Modus deaktiviert ist, die CPU zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird.
  2. Verfahren zum Verarbeiten von Paketen in einem Computersystem, inkludierend ein Betriebssystem und eine Netzschnittstellenkarte, umfassend: Abfragen der Netzschnittstellenkarte um zu bestimmen, ob ein oder mehr Paket empfangen wurden, wenn die Netzschnittstellenkarte in einem Abfragemodus ist; und Empfangen eines Interrupts von der Netzschnittstellenkarte, wenn die Netzschnittstellenkarte in einem Inter ruptmodus ist, wobei der Interrupt anzeigt, dass die Netzschnittstellenkarte ein oder mehr Pakete empfangen hat.
  3. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Erhalten von Paketen von der Netzschnittstellenkarte und Verarbeiten der Pakete, die von der Netzschnittstellen- karte erhalten werden.
  4. Verfahren, wie in Anspruch 2 angeführt, wobei das Betriebssystem konfiguriert ist, die Netzschnittstellenkarte zu instruieren, in dem Abfragemodus oder dem Interruptmodus zu arbeiten.
  5. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, in dem Abfragemodus zu arbeiten, wenn Pakete häufig durch die Netzschnittstellenkarte empfangen werden; und Instruieren der Netzschnittstellenkarte, in dem Interruptmodus zu arbeiten, wenn Pakete selten durch die Netzschnittstellenkarte empfangen werden.
  6. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, in dem Abfragemodus zu arbeiten, wenn eine Zahl von Paketen, die pro Sekunde durch die Netzschnittstellenkarte empfangen werden, größer als eine vordefinierte Zahl ist; und Instruieren der Netzschnittstellenkarte, in dem Interruptmodus zu arbeiten, wenn die Zahl von Paketen, die pro Sekunde durch die Netzschnittstellenkarte empfangen werden, kleiner als die vordefinierte Zahl ist.
  7. Verfahren, wie in Anspruch 2 angeführt, wobei das Computersystem eine oder mehr CPUs hat, und wobei der Modus der Netzschnittstellenkarte in Verbindung mit einer oder mehr der CPUs festgesetzt wird.
  8. Verfahren, wie in Anspruch 2 angeführt, wobei die Netzschnittstellenkarte, wenn sie im Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird, wobei die Netzschnittstellenkarte nicht in der Lage ist, das Betriebssystem zu unterbrechen, wenn sie in dem Abfragemodus ist, wobei dadurch dem Betriebssystem ermöglicht wird, die Netzschnittstellenkarte abzufragen, um Pakete von der Netzschnittstellenkarte zu erhalten, wenn die Netzschnittstellenkarte in dem Abfragemodus ist.
  9. Verfahren, wie in Anspruch 2 angeführt, wobei die Netzschnittstellenkarte, wenn sie im Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird, wobei die Netzschnittstellenkarte nicht in der Lage ist, das Betriebssystem, wenn sie im Abfragemodus ist, für Pakete mit geringer Priorität zu unterbrechen, und in der Lage ist, das System, wenn sie in dem Abfragemodus ist, für Pakete mit hoher Priorität zu unterbrechen, ferner umfassend: Empfangen eines Interrupts von der Netzschnittstellenkarte, wenn die Netzschnittstellenkarte in dem Abfragemodus ist, wenn die Netzschnittstellenkarte ein oder mehr Pakete mit einer hohen Priorität empfangen hat.
  10. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Herausfinden, ob die Netzschnittstellenkarte in einem Interruptmodus oder einem Abfragemodus ist.
  11. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Platzieren der Netzschnittstellenkarte in den Abfragemodus.
  12. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Platzieren der Netzschnittstellenkarte in den Interruptmodus.
  13. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Initialisieren der Netzschnittstellenkarte derart, dass die Netzschnittstellenkarte in dem Interruptmodus ist.
  14. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Abfragemodus zu dem Interruptmodus umzuschalten.
  15. Verfahren, wie in Anspruch 14 angeführt, wobei Instruieren der Netzschnittstellenkarte, von dem Abfragemodus zu dem Interruptmodus umzuschalten, Instruieren der Netzschnittstellenkarte, von dem Abf ragemodus zu dem Interruptmodus für eine spezifizierte Zeitperiode umzuschalten umfasst.
  16. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten.
  17. Verfahren, wie in Anspruch 16 angeführt, wobei Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten, Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus für eine spezifizierte Zeitperiode umzuschalten umfasst.
  18. Verfahren, wie in Anspruch 2 angeführt, wobei das Computersystem ferner eine CPU inkludiert, wobei die CPU eine zugehörige Schlange hat, die Netzschnittstellenkarte einen zugehörigen Puffer hat, das Verfahren ferner umfassend: falls bestimmt wird, dass ein oder mehr Pakete durch die Netzschnittstellenkarte empfangen wurden, Transferieren des einen oder mehr Pakete von dem Puffer, der zu der Netzschnittstellenkarte gehört, zu der Schlange, die zu der CPU gehört, und Verarbeiten von jedem der Pakete in der Schlange, die zu der CPU gehört.
  19. Verfahren, wie in Anspruch 2 angeführt, wobei das Computersystem ferner eine CPU inkludiert, wobei die CPU eine zugehörige Schlange hat, die Netzschnittstellenkarte einen zugehörigen Puffer hat, das Verfahren ferner umfassend: wenn ein Interrupt von der Netzschnittstellenkarte empfangen wird, Transferieren einer Menge von einem oder mehr Paketen von dem Puffer, der zu der Netzschnittstellenkarte gehört, zu der Schlange, die zu der CPU gehört.
  20. Verfahren, wie in Anspruch 19 angeführt, wobei die Menge von Paketen gleichzeitig übertragen wird.
  21. Verfahren, wie in Anspruch 19 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Abfragemodus zu dem Interruptmodus umzuschalten, wenn keine Pakete in der Schlange sind, die zu der CPU gehört, oder in dem Puffer, der zu der Netzschnittstellenkarte gehört.
  22. Verfahren, wie in Anspruch 19 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten, wenn der Interrupt von der Netzschnittstellenkarte empfangen wird.
  23. Verfahren, wie in Anspruch 19 angeführt, ferner umfassend: Verarbeiten von jedem der Pakete in der Schlange.
  24. Verfahren, wie in Anspruch 23 angeführt, wobei jedes der Pakete in der Schlange eingehend oder ausgehend ist.
  25. Verfahren, wie in Anspruch 23 angeführt, wobei jedes der Pakete in der Schlange einer oder mehr Netzverbindungen entspricht.
  26. Verfahren, wie in Anspruch 23 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus vor einer Verarbeitung von jedem der Pakete in der Schlange umzuschalten.
  27. Verfahren, wie in Anspruch 23 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten.
  28. Verfahren, wie in Anspruch 27 angeführt, ferner umfassend: nach einer Verarbeitung von jedem der Pakete in der Schlange Abfragen der Netzschnittstellenkarte um zu bestimmen, ob ein oder mehr Pakete durch die Netzschnittstellenkarte in dem damit verbundenen Puffer empfangen wurden; und falls ein oder mehr Pakete durch die Netzschnittstellenkarte empfangen wurden, Transferieren des einen oder mehr Paketen von dem Puffer, der zu der Netzschnittstellenkarte gehört, zu der Schlange, die zu der CPU gehört, und Verarbeiten von jedem der Pakete in der Schlange, die zu der CPU gehört.
  29. Verfahren, wie in Anspruch 28 angeführt, ferner umfassend: falls keine Pakete mehr durch die Netzschnittstellenkarte empfangen wurden, Instruieren der Netzschnittstellenkarte, von dem Abfragemodus zu dem Interruptmodus umzuschalten.
  30. Verfahren, wie in Anspruch 27 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Abf ragemodus zu dem Interruptmodus nach Verarbeitung von jedem der Pakete in der Schlange umzuschalten.
  31. Verfahren, wie in Anspruch 23 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, von dem Abf ragemodus zu dem Interruptmodus nach Verarbeitung von jedem der Pakete in der Schlange umzuschalten.
  32. Verfahren, wie in Anspruch 19 angeführt, ferner umfassend: Initiieren eines Arbeitsthreads für eine Verarbeitung von Paketen in der Schlange, die zu der CPU gehört.
  33. Verfahren, wie in Anspruch 32 angeführt, wobei der Arbeitsthread oder ein zweiter Arbeitsthread zum Transferieren der Menge von Paketen von dem Puffer, der zu der Netzschnittstellenkarte gehört, zu der Schlange, die zu der CPU gehört, verantwortlich ist.
  34. Verfahren, wie in Anspruch 32 angeführt, wobei der Arbeitsthread zum Instruieren der Netzschnittstellenkarte, vom Abfragemodus zum Interruptmodus umzuschalten, wenn keine Pakete in der Schlange sind, der zu der CPU gehört, oder dem Puffer, der zu der Netzschnittstellenkarte gehört, verantwortlich ist.
  35. Verfahren, wie in Anspruch 32 angeführt, wobei der Arbeitsthread zum Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten, nachdem ein Interrupt von der Netzschnittstellenkarte empfangen wird, verantwortlich ist.
  36. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Zuweisen eines Identifikators, um eine aus einer Menge von einer oder mehr CPUs in dem Computersystem zu einer aus einer Menge von einer oder mehr Netzschnittstellenkarten abzubilden.
  37. Verfahren, wie in Anspruch 36 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, die durch den Identifikator identifiziert wird, in den Abfragemodus einzutreten.
  38. Verfahren, wie in Anspruch 36 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, die durch den Identifikator identifiziert wird, in den Interruptmodus einzutreten.
  39. Verfahren, wie in Anspruch 36 angeführt, wobei der Interrupt den Identifikator inkludiert.
  40. Verfahren, wie in Anspruch 36 angeführt, wobei der Identifikator ferner zu einer Schlange, die zu der CPU gehört, und einem Puffer, der zu der Netzschnittstellenkarte gehört, gehört.
  41. Verfahren, wie in Anspruch 40 angeführt, wobei der Interrupt den Identifikator inkludiert.
  42. Verfahren, wie in Anspruch 40 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, die durch den Identifikator identifiziert wird, von dem Abfragemodus zu dem Interruptmodus umzuschalten.
  43. Verfahren, wie in Anspruch 40 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, die durch den Identifikator identifiziert wird, von dem Interruptmodus zu dem Abfragemodus umzuschalten.
  44. Verfahren, wie in Anspruch 2 angeführt, ferner umfassend: Instruieren der Netzschnittstellenkarte, in dem Abfragemodus zu arbeiten, wenn ein Netzpaket, das empfangen wird oder zu übertragen ist, bereits verarbeitet wird und ein oder mehr Pakete in einer Schlange eingereiht sind; und Instruieren der Netzschnittstellenkarte, in dem Interruptmodus zu arbeiten, wenn es keine in einer Schlange eingereihte Pakete gibt.
  45. Computersystem, umfassend: ein Betriebssystem; und eine Netzschnittstellenkarte, die mit dem Betriebssystem gekoppelt ist, wobei die Netzschnittstellenkarte konfiguriert ist, in einem Interruptmodus zu arbeiten, wenn sie in einem ersten Zustand ist, und im Abfragemodus zu arbeiten, wenn sie in einem zweiten Zustand ist, wobei die Netzschnittstellenkarte, wenn sie in dem Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird.
  46. Computersystem, wie in Anspruch 45 angeführt, wobei die Netzschnittstellenkarte nicht in der Lage ist, das Betriebssystem zu unterbrechen, wenn sie in dem Abfragemodus ist, wobei dadurch dem Betriebssystem ermöglicht wird, die Netzschnittstellenkarte abzufragen, um Pakete von der Netzschnittstellenkarte zu erhalten, wenn die Netzschnittstellenkarte in dem Abfragemodus ist.
  47. Computersystem, wie in Anspruch 45 angeführt, wobei die Netzschnittstellenkarte nicht in der Lage ist, das Betriebssystem, wenn sie in dem Abfragemodus ist, für Pakete mit geringer Priorität zu unterbrechen, und in der Lage ist, das System, wenn sie in dem Abfragemodus ist, für Pakete mit hoher Priorität zu unterbrechen.
  48. Computersystem, wie in Anspruch 45 angeführt, ferner umfassend: eine oder mehr CPUs.
  49. Computersystem, wie in Anspruch 48 angeführt, wobei die Netzschnittstellenkarte auf eine der CPUs abgebildet wird.
  50. Computersystem, wie in Anspruch 49 angeführt, wobei die Netzschnittstellenkarte ferner auf eine Schlange abgebildet wird, die mit einer der CPUs in Verbindung steht, wobei die Schlange zum Speichern eingehender und ausgehender Pakete angepasst ist.
  51. Computersystem, wie in Anspruch 45 angeführt, ferner umfassend: Mittel zum Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten; und Mittel zum Instruieren der Netzschnittstellenkarte, von dem Abfragemodus zu dem Interruptmodus umzuschalten.
  52. Computersystem, wie in Anspruch 45 angeführt, ferner umfassend: einen Treiber, der eine Abrufschnittstelle zwischen einem Kern des Betriebssystems und der Netzschnittstellenkarte inkludiert, wobei die Abrufschnittstelle dem Kern des Betriebssystem ermöglicht, die Netzschnittstellenkarte zu instruieren, in den Interruptmodus oder den Abfragemodus einzutreten.
  53. Vorrichtung zum Verarbeiten von Paketen in einem Computersystem, inkludierend ein Betriebssystem und eine Netzschnittstellenkarte, umfassend: Mittel zum Abfragen der Netzschnittstellenkarte um zu bestimmen, ob ein oder mehr Pakete empfangen wurden, wenn die Netzschnittstellenkarte in einem Abfragemodus ist; und Mittel zum Empfangen eines Interrupts von der Netzschnittstellenkarte, wenn die Netzschnittstellenkarte in einem Interruptmodus ist, wobei der Interrupt anzeigt, dass die Netzschnittstellenkarte ein oder mehr Pakete empfangen hat.
  54. Vorrichtung, wie in Anspruch 53 angeführt, ferner umfassend: Mittel zum Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten; und Mittel zum Instruieren der Netzschnittstellenkarte, von dem Abfragemodus zu dem Interruptmodus umzuschalten.
  55. Vorrichtung, wie in Anspruch 53 angeführt, wobei die Netzschnittstellenkarte, wenn sie in dem Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird, wobei die Netzschnittstellenkarte nicht in der Lage ist, das Betriebssystem zu unterbrechen, wenn sie in dem Abfragemodus ist, wobei dadurch dem Betriebssystem ermöglicht wird, die Netzschnittstellenkarte abzufragen, um Pakete von der Netzschnittstellenkarte zu erhalten, wenn die Netzschnittstellenkarte in dem Abfragemodus ist.
  56. Vorrichtung, wie in Anspruch 53 angeführt, wobei die Netzschnittstellenkarte, wenn sie in dem Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird, wobei die Netzschnittstellenkarte nicht in der Lage ist, wenn sie in dem Abfragemodus ist, das Betriebssystem für Pakete mit geringer Priorität zu unterbrechen, und in der Lage ist, wenn sie in dem Abfragemodus ist, das System für Pakete mit hoher Priorität zu unterbrechen.
  57. Computerlesbares Medium, das darauf computerlesbare Instruktionen speichert zum Verarbeiten von Paketen in ei nem Computersystem, inkludierend ein Betriebssystem und eine Netzschnittstellenkarte, umfassend: Instruktionen zum Abfragen der Netzschnittstellenkarte um zu bestimmen, ob ein oder mehr Pakete empfangen wurden, wenn die Netzschnittstellenkarte in einem Abfragemodus ist; und Instruktionen zum Empfangen eines Interrupts von der Netzschnittstellenkarte, wenn die Netzschnittstellenkarte in einem Interruptmodus ist, wobei der Interrupt anzeigt, dass die Netzschnittstellenkarte ein oder mehr Pakete empfangen hat.
  58. Computerlesbares Medium, wie in Anspruch 57 angeführt, ferner umfassend: Instruktionen zum Instruieren der Netzschnittstellenkarte, von dem Interruptmodus zu dem Abfragemodus umzuschalten; und Instruktionen zum Instruieren der Netzschnittstellenkarte, von dem Abfragemodus zu dem Interruptmodus umzuschalten.
  59. Computerlesbares Medium, wie in Anspruch 57 angeführt, wobei die Netzschnittstellenkarte, wenn sie in dem Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird, wobei die Netzschnittstellenkarte nicht in der Lage ist, das Betriebssystem zu unterbrechen, wenn sie in dem Abfragemodus ist, wobei dadurch dem Betriebssystem ermöglicht wird, die Netzschnittstellenkarte abzufragen, um Pakete von der Netzschnittstellenkarte zu erhalten, wenn die Netzschnittstellenkarte in dem Abf ragemodus ist.
  60. Computerlesbares Medium, wie in Anspruch 57 angeführt, wobei die Netzschnittstellenkarte, wenn sie in dem Interruptmodus ist, konfiguriert ist, das Betriebssystem zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte über ein Netz empfangen wird, wobei die Netzschnittstellenkarte nicht in der Lage ist, wenn sie in dem Abfragemodus ist, das Betriebssystem für Pakete mit geringer Priorität zu unterbrechen, und in der Lage ist, wenn sie in dem Abfragemodus ist, das System für Pakete mit hoher Priorität zu unterbrechen.
  61. Computerlesbares Medium, das darauf computerlesbare Instruktionen zum Konfigurieren einer Netzschnittstellenkarte speichert, umfassend: Instruktionen zum Instruieren der Netzschnittstellenkarte, in einem ersten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei weniger als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem ersten Modus zum Unterbrechen einer CPU fähig ist, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird; und Instruktionen zum Instruieren der Netzschnittstellenkarte, in einem zweiten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei mehr als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem zweiten Modus deaktiviert ist, die CPU zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird.
  62. Vorrichtung zum Konfigurieren einer Netzschnittstellenkarte, umfassend: Mittel zum Instruieren der Netzschnittstellenkarte, in einem ersten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei weniger als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem ersten Modus zum Unterbrechen einer CPU fähig ist, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird; und Mittel zum Instruieren der Netzschnittstellenkarte, in einem zweiten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei mehr als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem zweiten Modus deaktiviert ist, die CPU zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird.
  63. Vorrichtung zum Konfigurieren einer Netzschnittstellenkarte, umfassend: einen Prozessor; und einen Speicher, wobei mindestens einer von dem Prozessor und dem Speicher angepasst ist zum: Instruieren der Netzschnittstellenkarte, in einem ersten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei weniger als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem ersten Modus zum Unterbrechen einer CPU fähig ist, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird; und Instruieren der Netzschnittstellenkarte, in einem zweiten Modus zu arbeiten, wenn Pakete durch die Netzschnittstellenkarte bei mehr als einer vordefinierten Rate empfangen werden, wobei die Netzschnittstellenkarte in dem zweiten Modus deaktiviert ist, die CPU zu unterbrechen, wenn ein Paket durch die Netzschnittstellenkarte empfangen wird.
DE102004052412A 2003-10-31 2004-10-28 Verfahren und Vorrichtung zum dynamischen Umschalten zwischen Abfragen und Interrupt, um Netzverkehr zu handhaben Ceased DE102004052412A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/698,211 US20050097226A1 (en) 2003-10-31 2003-10-31 Methods and apparatus for dynamically switching between polling and interrupt to handle network traffic
US10/698,211 2003-10-31

Publications (1)

Publication Number Publication Date
DE102004052412A1 true DE102004052412A1 (de) 2005-06-09

Family

ID=33518214

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004052412A Ceased DE102004052412A1 (de) 2003-10-31 2004-10-28 Verfahren und Vorrichtung zum dynamischen Umschalten zwischen Abfragen und Interrupt, um Netzverkehr zu handhaben

Country Status (3)

Country Link
US (1) US20050097226A1 (de)
DE (1) DE102004052412A1 (de)
GB (1) GB2408119B (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363383B2 (en) * 2003-04-23 2008-04-22 Sun Microsytems, Inc. Running a communication protocol state machine through a packet classifier
US20050132081A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation Efficient protocol processing to increase bandwidth in interrupt mode
US7779178B2 (en) * 2005-06-29 2010-08-17 Intel Corporation Method and apparatus for application/OS triggered low-latency network communications
US20070156930A1 (en) * 2005-12-30 2007-07-05 Peng-Jen Chen Method for controlling data transmission and related device
US7653835B2 (en) * 2006-06-27 2010-01-26 Lenovo (Singapore) Pte. Ltd. Apparatus and methods for improved computer system error reporting and management
US7738457B2 (en) * 2006-12-20 2010-06-15 Oracle America, Inc. Method and system for virtual routing using containers
US7936772B2 (en) * 2007-07-13 2011-05-03 International Business Machines Corporation Enhancement of end-to-end network QoS
US20100138567A1 (en) * 2008-12-02 2010-06-03 International Business Machines Corporation Apparatus, system, and method for transparent ethernet link pairing
US8402190B2 (en) * 2008-12-02 2013-03-19 International Business Machines Corporation Network adaptor optimization and interrupt reduction
GB0919253D0 (en) * 2009-11-03 2009-12-16 Cullimore Ian Atto 1
US8875276B2 (en) 2011-09-02 2014-10-28 Iota Computing, Inc. Ultra-low power single-chip firewall security device, system and method
US20170180272A1 (en) * 2012-10-03 2017-06-22 Tracey Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
JP2015104093A (ja) * 2013-11-28 2015-06-04 株式会社日立製作所 通信パケット処理装置および通信パケット処理方法
CN103699428A (zh) * 2013-12-20 2014-04-02 华为技术有限公司 一种虚拟网卡中断亲和性绑定的方法和计算机设备
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications
CN109936502B (zh) * 2017-12-15 2022-05-17 迈普通信技术股份有限公司 数据接收方法及数据传输设备
CN110968402A (zh) * 2018-09-28 2020-04-07 深信服科技股份有限公司 一种cpu工作控制方法、装置、设备及存储介质
CN110968403A (zh) * 2018-09-28 2020-04-07 深信服科技股份有限公司 一种cpu工作控制方法、装置、设备及存储介质
CN113687944A (zh) * 2021-07-29 2021-11-23 山东云海国创云计算装备产业创新中心有限公司 基板管理控制芯片的任务执行方法、装置、设备及介质
CN116185915B (zh) * 2023-04-21 2023-08-04 山东云海国创云计算装备产业创新中心有限公司 总线调度方法、装置及设备、介质和基板管理控制芯片

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301275A (en) * 1991-10-03 1994-04-05 Compaq Computer Corporation Data transfer system with variable data buffer size and programmable interrupt frequency
US5471618A (en) * 1992-11-30 1995-11-28 3Com Corporation System for classifying input/output events for processes servicing the events
US5414858A (en) * 1992-12-11 1995-05-09 International Business Machines Corporation System and method for dynamically varying between interrupt and polling to service requests of computer peripherals
US6167423A (en) * 1997-04-03 2000-12-26 Microsoft Corporation Concurrency control of state machines in a computer system using cliques
EP0903670A1 (de) * 1997-09-19 1999-03-24 Hewlett-Packard Company Verbesserte Peripheriegerätsteuerung in Datenverarbeitungssystemen
US6356951B1 (en) * 1999-03-01 2002-03-12 Sun Microsystems, Inc. System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction
US6434651B1 (en) * 1999-03-01 2002-08-13 Sun Microsystems, Inc. Method and apparatus for suppressing interrupts in a high-speed network environment
US6467008B1 (en) * 1999-03-01 2002-10-15 Sun Microsystems, Inc. Method and apparatus for indicating an interrupt in a network interface
US7089335B2 (en) * 2000-10-30 2006-08-08 Microsoft Corporation Bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device
US6988140B2 (en) * 2001-02-23 2006-01-17 Sun Microsystems, Inc. Mechanism for servicing connections by disassociating processing resources from idle connections and monitoring the idle connections for activity
DE10160298A1 (de) * 2001-12-07 2003-06-18 Bosch Gmbh Robert Verfahren und Vorrichtung zur Verarbeitung von Interrput-Signalen

Also Published As

Publication number Publication date
US20050097226A1 (en) 2005-05-05
GB2408119A (en) 2005-05-18
GB0423765D0 (en) 2004-12-01
GB2408119B (en) 2007-04-11

Similar Documents

Publication Publication Date Title
DE102004052412A1 (de) Verfahren und Vorrichtung zum dynamischen Umschalten zwischen Abfragen und Interrupt, um Netzverkehr zu handhaben
DE60125705T2 (de) Vorrichtung und Verfahren zur Implementierung eines HTTP Programmstacks auf einem Client
DE60036465T2 (de) Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben
DE69628798T2 (de) Verfahren zur Übertragung von Multimediadaten
DE19605093B4 (de) Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
DE69814900T2 (de) Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software
DE69820566T2 (de) Verfahren, Vorrichtung, und Programmprodukt zum Zugriff auf einen Server-basierten Verwaltungsinformationsdienst
DE102005014727B4 (de) Hardwarekoordination von Power Management-Aktivitäten
DE69936627T2 (de) In einer warteschlange angeordnete aufrufe von prozeduren für verteilte auf komponenten basierte anwendungen
DE19607515B4 (de) Computer mit Prozessverwalter
DE102004042170B4 (de) Nachrichtenbasierte Interrupttabelle
DE60100624T2 (de) Verfahren und vorrichtung zum verbessern der verwendung eines betriebsmittels auf einem verteilten klient
DE69930695T2 (de) Verfahren und Vorrichtung für ein Applikationsverteiler für eine Serverapplikation
DE112005003343B4 (de) Mechanismus für eine befehlssatzbasierte Threadausführung an mehreren Befehlsablaufsteuerungen
DE102006046129A1 (de) Vorrichtung, System und Verfahren für einen ständigen Thread auf Benutzerebene
DE112011103498T5 (de) Verhaltensgestützte Client-Auswahl für unterschiedliche Behandlung
DE60109060T2 (de) Interkommunikationsvorprozessor
DE202017105777U1 (de) System für hardwareunabhängigen RDMA
DE112014001397T5 (de) Flussrichterbasierter Niedriglatenznetzwerkbetrieb
CN103605575A (zh) 一种Cloud Foundry平台应用调度系统及方法
US10523746B2 (en) Coexistence of a synchronous architecture and an asynchronous architecture in a server
DE19983709B4 (de) Einplanung von Ressourcenanforderungen in einem Computersystem
DE102016125020B4 (de) Verfahren zum Betreiben eines Druckservers für digitale Hochleistungsdrucksysteme
DE102013211266B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8131 Rejection