JP4636583B2 - 動的にクラスベースパケットのスケジューリングする方法および装置 - Google Patents
動的にクラスベースパケットのスケジューリングする方法および装置 Download PDFInfo
- Publication number
- JP4636583B2 JP4636583B2 JP2001562908A JP2001562908A JP4636583B2 JP 4636583 B2 JP4636583 B2 JP 4636583B2 JP 2001562908 A JP2001562908 A JP 2001562908A JP 2001562908 A JP2001562908 A JP 2001562908A JP 4636583 B2 JP4636583 B2 JP 4636583B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- amount
- cache
- weight
- 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 - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/527—Quantum based scheduling, e.g. credit or deficit based scheduling or token bank
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/522—Dynamic queue service slot or variable bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
(背景)
本発明は、コンピュータシステム通信の分野に関する。具体的には、通信リンクを介して、種々のデータの所望される異なるクラスのサービスに基づいて、伝送するデータを動的スケジューリング、適合スケジューリング、横取りスケジューリングする方法および装置を提供する。
【0002】
複数のアプリケーションおよび/またはユーティリティを動作するコンピュータシステムにおいて、異なるプログラムによって生成されるデータに対して、異なる質または優先順位を有するサービスを提供することが望ましい場合が多い。データを別のコンピュータシステムに伝送する場合、例えば、ある種類またはあるクラスのデータは、別の種類または別のクラスのデータより、処理の遅れに対する反応が良くなり得る。したがって、この種類のデータに、サービスの比較的高い優先順位または質を割り当て得る。例えば、あるコンピュータ上で実行するリアルタイムのアプリケーションは、別のコンピュータシステムからの音声データまたは視覚データの一定した供給に依存し得る。この供給がない場合、性能の低下が非常に明白である。対照的に、電子メールアプリケーション用のデータを、著しい影響、または気づき得ないほどわずかな影響さえも有さずに遅らせ得る。
【0003】
複数のアプリケーションを動作し、そして1つ以上の接続されたコンピュータシステムに伝送されるデータを生成するホストコンピュータシステムは、アプリケーションによって共有されるべき通信リンクを1つのみ有する場合が多い。したがって、すべての発信トラフィックは、この情報に所望されるサービスの優先順位または質とは無関係に、1つの接続部またはポートを通る必要がある。1つのポートが潜在的な難所として機能するため、それぞれの種類の情報に対して所望のレベルのサービスを保証することがより困難になっている。
【0004】
発信情報(例えば、プロセッサによってサービスする情報、またはネットワークプロトコルスタックを介して処理するための情報)に優先順位を付ける現在の方法は通常、ソフトウェアでの解決策を含む。これらの種類の方法は、例えば、発信データがホストコンピュータから通信リンクを制御するデバイス(例えば、ネットワークインターフェース回路またはネットワークインターフェースカード(NIC))に伝達される順序に影響を及ぼし得る。例えば、種々のアプリケーションからの情報/データは、ある種類またはあるクラスの情報に別の種類または別のクラスの情報より多くのリソース(例えば、プロセッサ時間)を割り付けるスケジュールによって、異なるホストキュー内に置かれて、デバイスに伝えられ得る。
【0005】
このような方法は不十分である。特に、これらのスキームは単に、ホストコンピュータと通信インターフェースデバイスとの間のインターフェースからデバイス自体に、潜在的な輻輳を移動させる際に役立つだけである。例えば、アウトバウンドデータ(例えば、パケット)がNICで受信されると、トラフィックは通常、ホストコンピュータが所望するサービスの質、またはホストコンピュータがデータに割り当てたサービスの質とは無関係に、受信された順序で処理および発送される。ホスト上のソフトウェア機構は、発信データがその通信デバイスで受信された順序に影響を与えるだけである。そして、ホストコンピュータがその発信キューそれぞれの中にある発信データのレベルをモニタリングすることが可能であり得るが、ホストコンピュータはデバイス内のいかなる輻輳も直接にはモニタリングすることができない。これにより必然的に、ホストコンピュータが輻輳を緩和させ、所望のサービスの質を実施し得る様態および効果が制限される。
【0006】
より詳細には、サービスの質を提供するソフトウェアの方法に依存するデータ伝送スキームは、データが通信インターフェースデバイスに伝達された後には発信データの横取りを可能にしない。したがって、優先順位が高いデータに続いて、比較的優先順位が低いデータを過度にデバイスに伝達した場合、優先順位が高いデータに必要なサービスの質を保証することが必要な場合でも、優先順位が低いデータを横取りし得ない。通信デバイス内でこのような横取りを可能にすると、種々のサービスの質をより正確に与えることが可能になる。結果、ネットワークに適時に伝達することを必要とするネットワークトラフィック(例えば、リアルタイムのデータ)はその要件を満たす可能性が高くなる。
【0007】
したがって、必要なのは、ホストコンピュータシステム上で動作する複数のアプリケーションが共有する通信リンクを介して、伝送するパケットをキューまたはスケジューリングするハードウェアベースのシステムを提供する方法および装置である。有利なことに、このような方法を、ネットワークインターフェース回路またはネットワークインターフェースカードなどのホストの通信デバイス内で実現し得る。さらに、異なるクラスのデータに付与されるサービスの質に影響を与える優先順位または基準を動的に交替することが可能であることが望ましい。
【0008】
(要旨)
本発明の一実施形態において、パケットに割り当てられたサービスの優先順位またはクラスに基づいて、共有通信リンクを介して上記パケットを伝送する方法および装置を提供する。一実施形態において、上記装置は、ホストコンピュータシステムとネットワークとの間でインターフェースを取るネットワークインターフェース回路またはネットワークインターフェースカード(NIC)として機能する。
【0009】
本発明の一実施形態において、重みが、上記ネットワークを介して伝送される情報パケットに動的に割り当てられる。上記割り当てられた重みは、上記パケットに付与されたクラスまたはサービスまたは優先順位を示す。特に、上記重みは、パケットの各クラスに与えられた利用可能な通信帯域幅の一部または割合を示し得る。あるいは、上記重みをあるクラスがサービスされる前に伝送され得る別のクラスのデータの量(例えば、バイト数またはパケット数)を示すように構成し得る。この実施形態において、複数のキャッシュまたは他のメモリ構造は上記装置上で維持され、そして各キャッシュはサービスの異なる優先順位またはクラスごとに構成される。
【0010】
したがって、動作の一方法において、上記装置は、ホストコンピュータ(例えば、本発明の一実施形態によって構成されたデバイスドライバ)からアウトバウンドパケットの記述子を受信する。例示するように、各記述子はホストメモリ内に格納されたパケットまたはパケットの一部分を識別する。記述子が上記装置において受信された場合、上記記述子は上記関連付けられたパケットに割り当てられた優先順位に対応するキャッシュ内に配置される。
【0011】
次いで、各キャッシュがその関連付けられた重みによって順番にサービスされる。キャッシュがサービスされている間、記述子は受信された順番で上記キャッシュから取り出される。上記記述子に関連付けられた上記パケット(単数または複数)はホストメモリから取り出されて、上記通信リンクを介して伝送されるように転送される。一実施形態において、上記キャッシュの重みに対応するデータの量(例えば、パケット数またはバイト数)が伝送されるように転送される場合、上記次のキャッシュがサービスされ得る。
【0012】
この実施形態において、あるキャッシュの1回のサービスはパケットの最中に終了されない。具体的には、キャッシュ内の各記述子はデータパケットの一部分のみに対応し得、そうでない場合、上記1回のサービスが特定の記述子の後に終了する場合でさえ(例えば、キャッシュの重みのため)、上記1回のサービスは、上記最後のパケットのデータすべてが伝送されるまで、または伝送されるようにスケジューリングされるまで、延長される(例えば、必要な場合、より多くの記述子が処理される)。しかし、1回のサービスの間に伝送されるまたは伝送されるようにスケジューリングされたデータの量が所定の量(例えば、上記キャッシュの重みに比例する)を超えると、上記キャッシュの不足量が注目される。キャッシュが0でない不足量を有すると、上記キャッシュの1回のサービスの間に伝送され得るまたは伝送されるようにスケジューリングされ得るデータの量が低減される。この結果、データの異なるクラスまたは優先順位の間の通信帯域幅の所定の割り付けは経時的に概算され得る。
【0013】
本発明の一実施形態において、上記パケットに関連付けられた重みおよび上記装置上の上記記述子のキャッシュを動的に改変し得る。例えば、サービスの比較的高い優先順位またはクラスに関連付けられたパケットが十分な速度でサービスされていない場合、各キャッシュを、恐らく、優先順位がより低いパケットを犠牲にして、優先順位が最も高いパケットに有利になるように、キャッシュの重みを調整し得る。
【0014】
(詳細な説明)
以下の説明を提示して、当業者が本発明を製造および用いることを可能にする。さらに、以下の説明を、本発明特定の用途および本発明の要件とのコンテキストにおいて提供する。開示する実施形態に対する種々の改変は当業者に容易に明らかであり、本明細書において規定する一般的な原理は、本発明の意図および範囲から逸脱せずに、他の実施形態および用途に適用され得る。したがって、本発明は、図示する実施形態に限定されることは意図されず、本明細書において開示する原理および特徴と一致する最大の範囲に従うことが意図される。
【0015】
本発明のこの実施形態が例示するように実行されるプログラム環境は、汎用コンピュータまたは特殊目的デバイス(例えば、手持ち式コンピュータ)を組み込む。このようなデバイス(例えば、プロセッサ、メモリ、データ記憶装置、ディスプレイ)の詳細は、説明を明確にするために省略する。
【0016】
特に、以下に説明する装置の実施形態は、ホストコンピュータシステムから、ネットワーク、モデムまたは他のデバイスなどの共有通信リンクに伝送されるデータを受信するように構成されている。データは、関連付けられた優先順位またはホストコンピュータによって割り当てられたサービスの質を有する。情報が、要求されたサービスまたはデータに必要な種々のサービスの優先順位または質に従って、伝送または伝送されるようにスケジューリングされる、装置を動作させる種々の方法を説明する。
【0017】
本発明の技術は種々の技術を用いて実現され得ることを理解されたい。例えば、本明細書に説明する方法を、マイクロプロセッサまたは他の特別に設計した特定用途集積回路の組み合わせ、プログラム可能な論理デバイス、またはこれらの種々の組み合わせを用いて、ハードウェア内に実現し得る。特に、本明細書において説明する方法は、キャリア波またはコンピュータ読み出し可能記憶デバイスなどの格納媒体上に常駐する一連のコンピュータ上で実行可能な命令によて実現され得る。キャリア波の例示的な形態は、電気信号、電磁信号または光信号の形態を取り得、これらの信号は、ローカルネットワーク、またはインターネットなどの公的にアクセス可能なネットワークに沿ってデジタルデータストリームを送る。
【0018】
(導入)
本発明の一実施形態において、ホストコンピュータシステムと通信リンク(例えば、ネットワーク)との間でインターフェースを取るネットワークインターフェース回路またはネットワークインターフェースカード(NIC)などの通信デバイスを提供する。ホストコンピュータシステムからリンクを介して伝送されるすべての通信(例えば、データ)はNICを横断する。NICは、ホストコンピュータから複数のクラスの情報を受信して認識するように構成されている。サービスの優先順位または質という用語を、本明細書において、ホストコンピュータシステムによって通信リンクを介して伝送されるように提示された1セットのデータに要求されたサービス、所望されたサービス、または割り当てられたサービスの優先順位、クラスまたは質を指す際に用い得る。以下に説明する本発明の方法は、全二重通信および半二重通信の両方と互換性がある。
【0019】
この実施形態において、ホストコンピュータシステムから受信されたデータは、その優先順位(これは、ホストコンピュータ上で動作するプログラムによって割り当てられ得る)によって分けられる。例示するように、キャッシュまたは他のメモリ領域などの複数の記憶装置はデバイス上で維持され、各キャッシュは、複数のデータの優先順位のうちの1つに対応する、割り当てられた重みまたは割合(measure)を有する。データ(例えば、パケット、パケットの一部分)は、割り当てられた優先順位によって、NICによって伝送されるようにスケジューリングされる。したがって、一実施例において、ある優先順位を有する複数のデータパケットを、別の優先順位のパケットをスケジューリングする前に、伝送されるようにスケジューリングし得る。
【0020】
各キャッシュに順番にサービスするようにラウンドロビン(round−robin)スキームを適用し得る。各キャッシュの1回に処理される情報量はキャッシュに割り当てられた重みに依存する。重みは、NICが動作を継続している間、調整され得るように動的であり得る。したがって、特定の優先順位を有するデータが十分なリソース(例えば、伝送帯域幅)を付与されない場合、キャッシュの重みを動的に改変して、特定のクラスのデータのサービスを向上させ得る。一実施形態において、重みは、キャッシュごとに、処理され得るデータ量または伝送されるようにスケジューリングされ得るデータの量を反映する。
【0021】
本発明のこの実施形態において、発信パケットは、記述子と呼ばれるデータ構造によってキャッシュ内に表示され得る。例示するように、各記述子は、データおよび/またはフラグを含み、これは、中でも、関連付けられたデータパケットまたはパケットの一部分の位置(例えば、ホストメモリ内)を識別し、関連付けられたパケットの一部分がパケットの始めまたは終わりであるかを示し、パケットに割り当てられたサービスの優先順位または質などを示す。
【0022】
本発明の一実施形態のシステムおよび方法は、1999年3月1日に出願された「A High−Speed Network Interface」という名称の米国特許出願第09/259,765号に記載されるようなネットワークインターフェース回路と組み合わされ得る。同文献を本明細書において参考として援用する。
【0023】
(本発明の1実施形態によるネットワークインタフェース回路)
図1は、本発明の1実施形態に従って構築されたネットワークインタフェース回路(NIC)のブロック図である。NIC100は、ホストコンピュータ150が共有通信リンク130とインターフェースをとるように構築されている。共有通信リンク130は、図示される実施形態ではネットワークであり得る。ホストコンピュータ150は、デスクトップ、ラップトップ、携帯型コンピュータまたは任意の他のコンピュータ、または、リンク130を介して伝送するためのデータを生成可能な計算デバイスであり得る。ネットワーク130は、NIC100およびホスト150と互換性のある任意のトポロジーおよびプロトコルに従い得る。特に、NIC100は、本実施形態では、TCP/IP(伝送制御プロトコル/インターネットプロトコル)およびEthernet(R)用に構築されている。別の実施形態では、NIC100は、実質的に任意の通信プロトコル(単数または複数)用に構築されてもよいし、実質的に任意の通信プロトコル(単数または複数)と互換性があるように構築されてもよい。本発明のこの実施形態は、ネットワークインタフェース回路とともに使用される例を説明しているが、本発明の別の実施形態は、通信デバイスおよびインタフェースの他の形態で実現されてもよい。
【0024】
上述したように、NIC100は、ホスト150からデータを受け取り、データに関連付けられた優先順位に基づいて、共有リンク130上を伝送キュー120を介して伝送するようにデータをスケジューリングする。データは、ホスト150からパケット形式で受け取られ得るか、または、NIC100においてパケットに変形され得る。特定の1実施形態では、発信データを集めたもの(例えば、アクティブな通信プロトコルによって規定される、1パケットに十分な量)を複数の部分に分割して、NIC100に伝送し、NIC100が処理してもよい。
【0025】
図1に示されるように、NIC100には、複数のメモリ(例えば、キャッシュ)が組み込まれている。この特定の実施形態では、NIC100は発信データに割り当てられ得る優先順位レベルに対してメモリを一つずつ含む。このように、図1はホスト150によって提供された特性および優先順位が異なる4つのサービスに対応するキャッシュ102a、102b、102cおよび102dを示す。本発明の別の実施形態では、実質的に任意の数のサービスのキャッシュおよび特性が組み込まれてもよい。
【0026】
ここで示された本発明の実施形態において、NIC100に転送される準備の整ったホストデータは、共有リンク130を介する転送のために、NIC100がホストデータをスケジューリングするまで、ホストメモリに格納される。転送のための修正の前に、ホストデータは記述子と呼ばれるデータ構造によってNIC100のキャッシュに記される。各々の記述子は転送されるデータの一部(例えば、1パケットまたはパケットの一部)に関する情報を格納する。その情報とは、ポインタ、データの格納場所を特定するホストメモリアドレス、データの格納場所のデータ総量、そのデータがパケットの始まりか、または終わりかを指し示すフラッグなどである。
【0027】
図示された実施形態において、発信パケットまたは発信パケットの一部に関連した記述子は、パケットに割り当てられたサービスの優先順位または特性に基づいてキャッシュ102a−102dに受け止められ、格納される。パケットの優先順位は、発信データを生成したアプリケーションプログラムまたはユーティリティープログラムにより割り当てられ得、ホストコンピュータ上で機能するNICのためのデバイスドライバにより割り当てられ得る。もしくは、他の方法で割り当てられ得る。
【0028】
さらに、図示された実施形態において、各々のキャッシュ102a−102dはホスト150上に保持されたクラスベースキューに一致する。例証するように、ホストコンピュータは各々の優先順位レベルに対して、個別のキューを保持し得る。従って、NICキャッシュの一つが記述子を受け入れるまで、クラスベースキューはホスト上の発信データおよび/または記述子を格納する。
【0029】
本発明の一つの実施形態において、各々のキャッシュエントリーはサイズが64ビットであり、記述子のサイズと正確に合っている。さらに、各々のキャッシュは一度に4つまで記述子を格納し得る。それらのキャッシュはFIFO(first−in,first−out)基板上で取り除かれる。あるいは、記述子は実質的に任意のサイズであり得、各キャッシュは4個より小さいまたは4個より大きい任意の適切な数の入力を格納し得る。別の実施形態において、各キャッシュは一度に8個までの入力を格納する。(例えば、少しだけ説明したローダ112によって)処理するためにキャッシュから記述子を取り除く動作は、新しい記述子を要求し、そしてこれをキャッシュ内で受信するより相当速い動作であり得る。したがって、各キャッシュが十分な数の記述子を格納することで、キャッシュが(例えば、ローダ112によって)空にされることを防止し、ホストコンピュータ上で同じ優先順位の記述子が待っている状態が有利である。
【0030】
例示するように、ホストメモリからキャッシュ102a〜102dに記述子をロードする、または受信するように、キャッシュ制御器(これはローダ112の一部分であり得る)を構成する。したがって、キャッシュ制御器は、NIC100の他の素子にキャッシュが空であることおよび/またはホストメモリ内で待っている特定の優先順位の記述子が残っていないことを通知することを担う場合があり得る。
【0031】
マルチプレクサ104は、アービタ110およびローダ112に対するキャッシュ102a〜120dからの記述子を多重化する。記述子がキャッシュから取り出されてローダ112によって処理された場合、ローダは関連付けられたデータを(例えば、ホストメモリから)接続部114を用いて要求する。要求されたデータは受信されて(例えば、ホスト150から)、接続部122を介してキュー120に供給され得る。接続部114をさらに用いて、1つ以上の記述子をキャッシュ内にロードするように要求し得る。
【0032】
ホスト150と通信するために、ローダ112はDMA(ダイレクトメモリアクセス)制御器を組み込むか、またはDMA制御器と相互通信する。次いで、DMA制御器は、ホストコンピュータ上の制御器(例えば、PCI(周辺コンポーネント相互接続)制御器)とインターフェースを取り得る。例えば、ホスト150上のPCI制御器は、DMA制御器からDMA要求を受け取り、そしてPCIバスを介して所望のパケットを取り出し得る。本発明の範囲は、データがホストコンピュータから取り出され、または準備され、そしてリンク130を介して伝送される様態または手段によって制限されない。
【0033】
本発明の一実施形態において、伝送キュー120は、RAM(ランダムアクセスメモリ)を含み、そしてFIFO(先入れ先出し)方式で動作する。本発明の別の実施形態において、キュー120は、パケットを一時的に格納して、リンク130を介して伝送する、実質的に任意の形態のメモリデバイスを含み得る。本発明の一実施形態において、伝送キュー120内に格納されたデータを、媒体アクセス制御(MAC)または適用可能なネットワークプロトコルスタックの物理リンク層において動作する適切なデバイスによって、処理し(例えば、パケット化し)そして伝送する。例えば、伝送キュー内に置かれたデータは、データの完全なパケットがキューされるまで蓄積され得、このキューされた時点で、パケットが物理リンク層プロトコルによってフォーマット化され、そしてリンクを介して伝送される。次に、本発明の一実施形態において、DMA帯域幅が十分である場合、パケットの伝送は、全パケットが伝送キュー120内に格納される前に開始し得る。例えば、伝送キュー内にすでに格納されているパケットの一部分が特定の閾値(例えば、データの量またはパケット率として測定される)を超えると、パケットの伝送が開始し得る。閾値をDMA帯域幅およびリンク130の帯域幅を考慮して決定し得る。
【0034】
アービタ110は、キャッシュ102a〜102dからの記述子の取り出しを管理する。アービタ110は、これを行う際、各キャッシュおよび/または記述子に関連付けられた対応する重みを与えることによって、各データクラスに対するサービスの所望の優先順位または質を保証しようとする。本発明の例示の実施形態において、アービタ110は、記述子が受信され、ローダ112によって処理されるキャッシュを決定するだけでなく、どの種類(例えば、どの優先順位のレベル)の記述子がホストコンピュータから次に取り出されて、適切なキャッシュ内に配置されるかということも決定し得る。
【0035】
例示するように、ローダ112は、接続部114を介してホスト150に接触することによって、新しい記述子をNIC100内にロードし始める。特に、アービタ110は、どの種類の記述子が(例えば、関連付けられたサービスの優先順位または質によって)次にロードされるかを識別し得る。上述したように、ローダ112はさらに、キャッシュ102a〜102dのうちの1つから取り出された記述子に対応するパケットデータを取り出す。ローダ112は、キャッシュを管理するためにキャッシュ制御器(図1に別個には示さない)を含み得る。
【0036】
したがって、本発明の一実施形態において、アービタ110の機能は、キャッシュ102a〜102dに順にサービスすること(例えば、ラウンドロビン方式)を含む機能として考えられ得る。1セットのキャッシュは、どのぐらいの期間にキャッシュがサービスされるか、または1回のキャッシュの間、どのぐらいのデータ(例えば、何パケット)が伝送されるようにスケジューリングされ得るかに影響を与え得る。対照的に、ローダ112の機能は、キャッシュ102a〜102dを記述子で満たし続け、そして伝送するデータをロードすることを含み得る。
【0037】
図1に示す種々のモジュールおよび機能を組み合わせて、1つのASIC(特定用途集積回路)内で実現してもよいし、またはNIC150の複数のコンポーネント間で分割してもよい。さらに、図1はNIC100などのネットワークインターフェース回路内に含まれ得る種々の他のコンポーネントおよびモジュールを省略し得る。
【0038】
(動的重みによって伝送するパケットのスケジューリングする)
本発明の好適な実施形態において、ホストコンピュータ上で動作する複数のアプリケーション間で共有される通信リンクを介して伝送されるデータは、優先順位によって分けられ、その優先順位によって伝送されるようにスケジューリングされ、次いで、伝送される前にパケットの形態にされる。例えば、1つの電子メールメッセージまたは映像フレームは、複数のデータ部分にセグメント化され得、このデータ部分はそれぞれ、キャッシュ102a〜120d(図1に示す)のうちの1つのキャッシュ内の別個の記述子によって表され、次いで、1つ以上のネットワークパケットに形成される。前のセクションで説明したように、ある種類のデータ(例えば、特定のアプリケーションからのデータ)に関連付けられた優先順位は、NIC100内のデータのキャッシュに関連付けられた重みに反映され得る。例示するように、キャッシュの重みは、この種類のデータに付与された伝送の帯域幅(すなわち、オーバーリンク130)の相対部分または1回のキャッシュの間に、伝送され得るまたは伝送されるようにスケジューリングされ得るデータの量を示し得る。
【0039】
各データ部分は、ホストメモリ内に格納されており、そしてそのネットワークインターフェースデバイスの優先順位のキャッシュ内で記述子によって表される。しかし、記述子は、NICへの転送を待っている間、その関連付けられたデータのサービスの優先順位または質によって分けられ得る。特に、NIC上の各記述子のキャッシュ(例えば、図1のキャッシュ102a〜102d)に関して、別個のキューがホストコンピュータ上で維持され得る。
【0040】
したがって、本発明の一実施形態において、リアルタイムの音声データまたは視覚データに、ネットワークインターフェースデバイス内で優先的な処理を受けることを示す比較的高い優先順位を割り当て得てる。リアルタイムのデータのパケットの記述子を第1のホストキュー(すなわち、ネットワークインターフェースデバイスへの転送用)内に置く。この第1のホストキューは、キュー1と呼ばれ得、リアルタイムのデータがホストコンピュータから送信される優先順位が最も高いデータであることを反映している。例示するように、次に高いサービスの質は、ウェブまたはインターネットトラフィックによって表され得る。例えば、ホストコンピュータは、インターネットなどのネットワークを介して、データをユーザに提供するウェブサーバであり得る。したがって、ウェブトラフィックのパケットの記述子は、キュー2という名のホストキュー内に配置される。同様に、第3のサービスの質は、「ベストエフォート」の種類のトラフィックに適切であり得、この種類のトラフィックは、(あるとしても)ほとんど時間に対して反応しない。この種類のデータ(例えば、電子メール、ファイルバックアップ)の記述子は、キュー3という名のホストキュー内に格納され得る。最後に、優先順位が低いパケット(例えば、ネットワーク管理データを含むパケット)は、キュー4という名のキュー内に配置される記述子によって表され得る。特定のサービスの質が割り当てられていないデータに関しては、デフォルトのホストキュー(例えば、ベストエフォート、すなわちキュー3)を用い得る。
【0041】
本発明のこの実施形態において、1対1のマッピングが、ホストコンピュータ上のクラスベースキューとネットワークインターフェースデバイスまたは他の通信デバイス上の記述子のキャッシュとの間で存在する。したがって、図1において、キャッシュ102a〜102dがそれぞれ、ホストキューのキュー1からキュー4までに対応する場合、キャッシュ102aは通常最も高い重みを有し、そしてキャッシュ102dは最も低い重みを有する。しかし、記述子がその関連付けられたデータの優先順位によって分けられ得、そして対応するデバイス上の記述子のキャッシュ内に置かれ得る限り、1対1の構成は必要ではない。したがって、関連付けられたデータの優先順位が容易に確かめられる限り、実質的にいかなるメモリ構造を用いてもネットワークインターフェースデバイスへの伝達を待っている記述子を格納し得る。
【0042】
ネットワークインターフェースデバイス上の各記述子のキャッシュは、動的重みを割り当てられ、この動的重みは、データのサービスおよび伝送の間に調整され得る。特に、各重みはキャッシュ内に格納された記述子によって表されるデータの優先順位に対応する。例示するように、各重みは、あるキャッシュ内のいくつの記述子が、次のキャッシュがサービスされる前に、処理され得る(例えば、伝達されるようにスケジュールされたりまたはキューされる)かを決定する。したがって、重みは、複数またはある範囲の記述子、データの一部分またはデータパケット、ネットワークトラフィックの量(例えば、バイトまたは他の寸法の点で)時間率、処理サイクルまたは帯域幅などを識別し得る。本発明の一実施形態において、各キャッシュの重みは、1回のキャッシュの間に伝送され得る(または、伝送されるようにスケジューリングされ得る)データのバイト数を表す。
【0043】
本発明の一実施形態において、通信デバイス(例えば、図1のNIC100)は、リセットまたは初期化された場合に、優先順位が最も高いキャッシュからの記述子を受信および処理し始める。したがって、NIC100のローダ112は、伝送されるようにキューされたキャッシュ102a内の記述子によって表されるデータのバイト数が許容された最大値(例えば、キャッシュの重み)に達したことまたはこれを超えたことをアービタ110が示すまで、キャッシュ102aから記述子を取り出して処理する。次いで、ローダ112は、その最大量のデータが処理されてしまうまでにキャッシュ102bへのサービスを開始し、この後、キャッシュ102cがサービスされ、次いでキャッシュ102d、次いでキャッシュ102aなどがサービスされる。サービスされるキャッシュの1回はさらに、キャッシュに記述子が無くなった場合、特に、ホストメモリ内で準備完了となっているキャッシュのサービスの優先順位または質に関連付けられた記述子が無い場合に、終了し得る。
【0044】
この実施形態において、キャッシュの不足量は、キャッシュ内の記述子からある回に伝送されるようにスケジューリングされたまたはキューされたデータのバイト数が許容された最大値を超した場合に生成される。例示するように、不足量の大きさは、キャッシュの重みまたは許容可能なバイト数を超えている分のバイト数によって決定される。例示するように、キャッシュが次回にサービスされる際に、処理される最大のバイト数から不足量分だけ低減される。不足量は、1回以上のサービスにわたって持ち越されて、ある時間期間にわたってデータの優先順位を実施する。
【0045】
したがって、キャッシュの重みを、そのキャッシュの1回のサービスの間に伝送されるようにスケジューリングされ得たデータの最大量(例えば、最大バーストサイズ)を示すものとしてみなし得る。本発明の例示の実施形態において、あるキャッシュからの記述子の処理はパケットの終わりにおいてのみ終了する。パケットに関連付けられた第1および/または最後の記述子は、対応する記述子(単数または複数)内のフラグによって識別され得る。伝送するパケットのスケジューリングを終了するために、キャッシュの最大バーストサイズ(例えば、キャッシュの重み)を超えた場合、そのキャッシュの次回に許容されるバーストが少なくなる。例示するように、次回に許容されるバーストは、最大バースト(例えば、キャッシュの重み)から前に許容されていたバースト量を超えた量だけ減算した値に設定される。不足量は累積的であり、伝送されるようにスケジュールされたデータの量が最大バーストサイズを超えているかまたはこれより少ないかに依存して、各回において増えたりまたは減ったりし得る。例示するように、キャッシュの重みが、ネットワークインターフェースデバイスの動作の間に改変された場合、その不足量および恐らくすべての不足量が0にリセットされ得る。
【0046】
本発明の一実施形態において、キャッシュの重みは通信デバイス上のプログラム可能なレジスタ内に格納され、このレジスタは、ホストコンピュータ上で動作するソフトウェアドライバによって改変可能であり得る。したがって、ドライバがさらなる伝送の帯域幅が特定のクラスまたは優先順位のデータに必要であると決定した場合、ドライバはレジスタを動的に再度プログラムして、重みを調整し得る。以下に説明するように、キャッシュの重みを変更した場合、キャッシュにサービスする現在のスキームが終了され得、そしてサービスが、優先順位が最も高いデータに関連付けられたキャッシュから再度開始される。例示するように、キャッシュの1回は、パケットの伝送または伝送されるようにスケジューリングされている間に終了しない。あるパケットは、そのキャッシュの1回が終わる前に完了する。
【0047】
本発明の一実施形態において、キャッシュの重みは各キャッシュの1回においてスケジューリングされ得るデータの量を(例えば、バイトで)示し、比較的優先順位が高いデータに関しては、例示的なキャッシュの重みは、最大、平均、中間または他の適切な測定値において、パケットサイズ(例えば、適用可能なネットワークプロトコルスタックによって決定される)のバイト数の1倍以上であり得る。優先順位が低いキャッシュのキャッシュ重みは、例えば1など非常に低い場合があり、優先順位が低いデータは、優先順位が高いデータが実質的に利用可能でない場合にのみ送信される必要があることを示す。本発明の一実施形態において、小さくとも1である完全なデータパケットがキャッシュから伝送されるようにスケジューリングされており、このパケットサイズより小さい任意の重みは、キャッシュがサービスされる各回の間に1つのデータパケットのみが送信されることを保証する。したがって、本明細書において説明する重みのスキームにおいて、優先順位が高いキャッシュに比較的高い重みを有させることによって、不足量が進展しおよび/またはこのキャッシュに対する1回のサービスが終了する前に、より多くのデータを伝送するようにスケジューリングし得る。逆に、優先順位が低いキャッシュに低い重みを有させることによって、低い重みが急速に超過し、したがって、優先順位が低いキャッシュのサービスが比較的早期に終了する。
【0048】
図1に示す本発明の実施形態において、アービタ110は異なるキャッシュのサービスを管理する。したがって、アービタ110は、レジスタまたは他の格納領域を含み、これらのレジスタまたは他の格納領域は、各キャッシュを順番に処理されるデータの量(例えば、記述子の数またはデータのバイト数)を追跡し、キャッシュの不足量および重みならびにデータの横取りスケジューリングを促進し得る任意の他の情報を格納する。アービタ110はさらに、ローダ112または別個のキャッシュ制御器に、ホストから取り出され、そして(例えば、キャッシュが枯渇しないように)対応するキャッシュ内に配置される記述子のクラスまたは優先順位を通知し得る。
【0049】
図2A〜図2Bは、本発明の一実施形態による、アービタ110が通信リンクを介して伝送するクラスベースまたは優先順位を付けられたデータを適応的にスケジューリングする一方法を示す。例示する方法は、図1のNIC100などの通信デバイスとの使用が意図されている。
【0050】
図2A〜図2Bは、NIC100上の複数のキャッシュのうちの1つのサービスを示す。したがって、例示する方法をあるキャッシュに対して実行した後、同じまたは同様の方法を次のキャッシュ、そしてその次のキャッシュなどに実行する。すでに上述したように、本発明の一実施形態において、優先順位が最も高いキャッシュは、ネットワークインターフェースデバイスがリセットまたは初期化された後にまず自動的にサービスされる。その後、各キャッシュは、その割り当てられた重みまたは優先順位によって、ラウンドロビン方式でサービスされ得る。
【0051】
図2A〜図2Bにおいて、状態200は開始状態であり、この状態またはこの状態の前に、最初の重みがネットワークインターフェースデバイス内の各キャッシュに割り当てられる。本発明のこの実施形態において、キャッシュの重みは、ある優先順位のデータをスケジューリングする前に、伝送するようにスケジューリングされ得る別の優先順位の最大バーストサイズ、すなわち最大データの量(例えば、バイト数)を反映する。すでに上述したように、パケットの処理を終了させるために、最大バーストサイズを超えさせる場合がある。この実施例における最初のセットの重みは、優先順位が最も高いキャッシュに対する最大パケットサイズ(例えば、X*1516)、優先順位が2番目のキャッシュに対する最大パケットサイズ(例えば、1516)、優先順位が3番目のキャッシュに対する最大パケットサイズ(例えば、758)、および優先順位が最も低いキャッシュに対する最大パケットサイズよりかなり低い所定の低い数値(例えば、1〜8)の所定の倍数であり得る。
【0052】
さらに、状態200において、1つ以上のNIC100のコンポーネントは、カウンタ、レジスタ、または記述子の処理および関連付けられた伝送するデータのスケジューリングを促進するために用いられる他のデータ構造を初期化またはリセットし得る。例えば、本発明の一実施形態において、アービタ110は、各1回のキャッシュの間、伝送されるようにキューされたデータの量(例えば、バイト数またはパケット数)の追跡を続ける。状態200において、現在の1回のキャッシュの間にこの目的で用いられるカウンタを0にリセットする。
【0053】
状態202において、アービタがキャッシュの重みが変更されたか否かを決定する。例示するように、アービタは、ホストドライバが1つ以上のキャッシュの重みを変えたか否かを示すフラグを調べる。フラグが設定されている場合、アービタはプログラム可能なレジスタから新しい重みを読み出し、そしてフラグをクリアする。重みが変更されていない場合、例示の手順が状態206において続行する。もしくは、1つ以上の重みが変更されている場合、状態204において、各キャッシュの不足量が0にリセットされて、古い不足量が新しいスケジューリングスキームに影響を及ぼすことを阻止する。
【0054】
状態204の後、例示の手順は戻って、優先順位が最も高いデータに関連付けられたキャッシュ(単数または複数)のサービスを開始する。したがって、比較的優先順位が低いキャッシュがサービスされた場合、これは横取りされ得、そして優先順位が最も高いキャッシュに注意が再度向けられる。しかし、本発明の別の実施形態において、キャッシュの重みが変化した後、新しいサービススキームが、優先順位が最も高いキャッシュ以外のキャッシュで開始し得る。
【0055】
状態206において、現在のキャッシュが空であるか否かが判定される。本発明の一実施形態において、キャッシュ制御器(これはローダの一部分であり得る)は、キャッシュが空であることをアービタに通知し得る。レジスタを維持して、ホストメモリ内の記述子の数または記述子の存在(例えば、上述のクラスベースキュー)を示し得る。例示するように、ホストメモリからキャッシュに記述子を受信または伝達するようにキャッシュ制御器を構成する。記述子がキャッシュから取り出されて処理される場合において、キャッシュが空に近づく場合、またはキャッシュがホストから記述子を取り出し得る場合はいつでも、キャッシュ制御器はホストから記述子を取り出し得る。現在のキャッシュが空である場合、手順は状態210において続行する。
【0056】
そうでない場合(キャッシュが空でない場合)、状態208において、アービタは、キャッシュの重みが現在のキャッシュの不足量より大きいか否かを判定する。これにより、このキャッシュの不足量が、この回のキャッシュの間にいかなる記述子も処理しないように十分に大きくなっているか否かが明らかになる。重みが不足量より大きい場合、この方法は状態212において続行する。そうでない場合、データはこの回には伝送されるようにスケジューリングされず、例示する方法が状態210において続行する。
【0057】
状態210において、記述子はこの回のキャッシュの間に処理されず、現在のキャッシュの不足量は既存の不足量とキャッシュの重みとの差(すなわち、不足量から重みを減算したもの)まで減少する。不足量から重みを減算したものが0より小さい場合、不足量は0に設定される。
【0058】
データが現在の回のキャッシュの間に取り出されず、そして伝送されるようにスケジューリングされていない場合、状態210に達したことが分かり得る。これは、例えば、キャッシュが空であるか、キャッシュの不足量がキャッシュの重みを超えた場合に起こり得る。例えば、優先順位が低いキャッシュ重みが比較的小さい場合、少数の優先順位が低いパケットのサイズ(または、ジャンボイーサネット(R)パケットなどにおいては1でさえある)が重みを超え得ることがあり得る。この結果、同じ優先順位の記述子のみが、不足量がキャッシュの重みより下のレベルに減るまで、処理されるかまたは伝送されるようにスケジューリングされたデータを有する。
【0059】
状態210の後、アービタは現在のキャッシュを終了し、そして次のキャッシュのサービスに進む。例示するように、図1の実施形態において、キャッシュ102a〜102dはラウンドロビン方式でサービスされ、キャッシュ102aはキャッシュ102dの後にサービスされる。
【0060】
状態212において、現在の回のキャッシュの間に伝送される(または伝送されるようにキューされる)実際のデータの量(例えば、バイト数)は、キャッシュの重みからキャッシュの不足量を減算することによって決定される。この値をバーストサイズと呼び得る。不足量が0である場合、バーストサイズは、キャッシュの重みに等しいことが分かり、これはキャッシュの最大バーストサイズと考えられ得る。
【0061】
状態214において、現在のキャッシュからの1つ以上の記述子が、マルチプレクサ104を介してアービタ110およびローダ112によって受信される。特に、アービタ110は、マルチプレクサ104に、完全なデータパケットを記述する1セットの記述子を受け入れるように命令する。例えば、記述子がパケットの始めおよび終わりを示すフラグを含む場合、アービタは第1のパケット(パケットフラグの始めが設定されたパケット)が受信されることを可能にし、そして、マルチプレクサに、パケットフラグの終わりが設定されたパケットが受信されるまでさらなる記述子を受け入れるように指示する。状態214は、複数の個々の状態を含み得る。この状態において、マルチプレクサは記述子を受け入れ、次いで、この記述子はアービタによって調べられて、別の記述子を受け入れるか否かを決定する。
【0062】
状態216において、ローダ112は記述子(単数または複数)を構文解析して、記述子(単数または複数)によって表されるパケットデータを識別する情報(例えば、メモリアドレスまたはバッファ識別子)を取り出す。次いで、ローダ112は、パケットデータの要求をホスト150に伝える。これは、別個の記述子に関連付けられた個々のパケット部分に対する一連の要求を含み得るか、または単一の要求であり得る。上述したように、要求(単数または複数)を、図1に示さない種々のコンポーネント(例えば、DMA制御器、PCI制御器)によって処理し得る。あるいは、ローダ112は、NIC100がホストコンピュータにデータ取り出し要求(単数または複数)を提出するために必要なコンポーネント(単数または複数)(例えば、DMA制御器)を組み込み得る。状態216の間、キャッシュ制御器(これはローダ112の一部分であり得る)は、1つ以上の記述子をホストメモリからキャッシュ内にロードさせるように動作し得る。
【0063】
状態218において、ホスト150はNIC100に要求されたデータを提供し、この要求されたデータは伝送キュー120内に配置される。本発明の一実施形態において、ローダ112はホストコンピュータとインターフェースを取るように(例えば、DMA制御器を組み込むことによって)構成され、データは伝送キューに置くために、ローダによって(例えば、接続部114を介して)受信され得る。パケットデータは、一度に一部分(各部分は1つの記述子によって識別される)をキュー内にロードしてもよいし、一度にすべてをロードしてもよい。例示するように、パケットデータを、必要に応じて、通信リンクを介して伝送するためにコード化する。
【0064】
状態220において、アービタ110は、受信された記述子(単数または複数)に関連付けられたデータの量(例えば、バイト数)によって、現在のキャッシュのカウンタをインクリメントする。例示するように、各記述子はデータの量を報告するフィールドを含む。したがって、アービタ110は、この1回のキャッシュの間に伝送されるようにスケジューリングされたデータの量を追跡する。
【0065】
状態222において、アービタは、この1回のキャッシュの間に処理されて伝送されるようにキューされた記述子に関連付けられたデータの量が、その回に許容されたバーストのサイズより小さいか否かを判定する。小さい場合、例示する手順は状態226に進んでその回を続行する。そうでない場合、バーストサイズを超えて、方法は状態224において続行する。
【0066】
状態224において、現在のキャッシュの不足量は、許容されたバーストサイズを超えた分の量(例えば、この回の間にキューされたデータの量からバーストサイズを減算した値)に設定される。状態224の後、アービタ110およびローダ112は次のキャッシュのサービスを開始する。
【0067】
状態226において、アービタ110またはローダ112は、キャッシュの重みが動的に改変されたか否かを再度判定する。改変されている場合、手順は状態204に戻って、すべてのキャッシュの不足量をリセットし、そして優先順位の最も高いキャッシュのサービスを再開する。そうでない場合、例示する方法は状態228で続行する。したがって、例示する手順において、データパケットが伝送されるようにスケジューリングされる場合はいつでも、NIC100が、キャッシュの重みが変更されたか否かを判定することが理解され得る。これにより、横取りが促進され、そして新しいスケジューリングスキームが可能な限り早く実現されることが保証される。
【0068】
状態228において、現在のキャッシュが空であるか否かが判定される。空である場合、この1回のキャッシュの間に処理する記述子はすでに無く、例示の方法が状態230に進む。もしくは、処理する記述子が少なくとももう1つある場合には、方法は状態214に戻る。
【0069】
例示するように、サービス中のキャッシュのサービスの優先順位または質を照合する記述子がホストメモリ(例えば、ホストキュー)内で利用可能である限り、記述子が連続的にキャッシュ内にロードされることをキャッシュ制御器は保証する。アービタがキャッシュの1回が終わったことを(例えば、伝送されるようにキューされたデータの量に基づいて)判定する前に対応するホストキューが空になった場合、キャッシュ制御器は、もはや記述子は利用可能ではなく、この場合のキャッシュの1回は終了したことをアービタに通知する。
【0070】
状態230において、現在のキャッシュの不足量は、この回の間に伝送されるようにキューされたデータの量がバーストサイズより小さいため減る。すなわち、現在のキャッシュは、伝送されるようにキューされたデータの量(例えば、バイトカウント)がバーストサイズに等しくなる前に記述子が無くなる。本発明のこの実施形態において、不足量は、許容されたバーストのサイズだけ低減される。例示するように、バーストサイズの部分が不足量より大きい場合、不足量は0にリセットされる。しかし、本発明の別の実施形態において、状態230において、不足量はバーストサイズの未使用の部分だけ減少するのみであり得る。状態230の後、現在のキャッシュのサービスが終了し、次のキャッシュのサービスが開始する。
【0071】
図2A〜図2Bに示す方法は、1つのキャッシュを1回サービスする例示的な手順を一つのみ示す。多数の同様の方法は、本発明の範囲を超えることなく、この方法から得られ得る。例えば、状態216から220までが実行される順番を、手順に著しい影響を与えることなく変え得る。
【0072】
さらに、図2A〜図2Bに示す方法を改変して、サービス中でない1つ以上の他のキャッシュが空であるか否かを決定し得る。空である場合、空でないキャッシュ(例えば、サービス中のキャッシュ)が1つより多い回を受信し得る。これは、NIC100が、空のキャッシュを連続的に循環し、そして空でないキャッシュ内で待つ記述子の処理を遅らせることを阻止する際に役立つ。
【0073】
(ホストコンピュータの動作)
このセクションは、本発明の一実施形態において、ホストコンピュータシステム上の発信データの互換性のあるクラスベースキューを説明する。この実施形態において、ホストはその特性によってデータを分ける複数のクラスベースキューを維持する。例示するように、先のセクションで説明したように、クラスベースキューの数は、互換性のある通信インターフェースデバイス上に維持される記述子のキャッシュ数に等しい場合がある。
【0074】
互換性のあるホストコンピュータシステムは、複数のプロセッサを組み込み得、プロセッサはそれぞれ、データを複数のクラスベースキューのそれぞれに挿入する一連の命令を実行する一つのスレッドを維持する。しかし、通常、通信インターフェースデバイスを制御するソフトウェアドライバが、通信インターフェースデバイスと複数のクラスベースキューとの間のインターフェースを管理するように構成され得る。ホストコンピュータ上で動作する個々のアプリケーション/ユーティリティープログラムは、通信リンクを介して伝送されるデータを生成し得る。データは互換性のあるプロトコルスタックを介して所定の初期処理を受信し、次いでドライバに伝えられ、ドライバは、通信インターフェースデバイスとプロトコルスタックのホスト常駐層(例えば、層3および層4)との間で例示するように動作する。特に、本発明の一実施形態において、通信リンクがインターネット(または、ネットワークへの接続部)などのワイド領域ネットワークである場合、ソフトウェアドライバを介して、通信インターフェースデバイスに転送される前に、トランスポート制御プロトコル(TCP)およびインターネットプロトコル(IP)などのプロトコルによってデータを処理し得る。しかし、この実施形態において、インターフェースデバイスが層2(例えば、データリンク層)において動作するため、より高い層のプロトコルは本発明の動作または範囲を制限しない。
【0075】
クラスベースキュー内に置かれたデータは、記述子リングから抜き取られた記述子によって分割および記載される。例示するように、複数の記述子からなる1つの記述子リングは、各クラスベースキューに対して維持される。各記述子は、種々のフィールドおよび/またはフラグを含み、データの関連付けられた部分の伝送を促進する。例えば、本発明の一実施形態において、各記述子は1つ以上の以下のアイテムを含み得る。これらのアイテムとは、データ部分が格納されるメモリ領域(例えば、バッファ)へのポインタ、バッファの長さまたはデータ部分のサイズ、データがパケットの始めであるか終わりであるかを示すフラグである。
【0076】
本発明の一実施形態において、ユーザのメモリ空間からカーネル(例えば、オペレーティングシステム)のメモリ空間まで発信ユーザデータを伝達するコピーオンライト方法を用いることによって、アウトバウンドデータの操作の効率を上げ、このカーネルメモリ空間から、データが通信インターフェースデバイスに伝達される。特に、この方法により、ハードウェア(例えば、NIC)がデータを取り出すことを可能にする前に、ユーザメモリバッファからカーネルバッファにユーザデータをコピーする必要が無くなる。代わりに、この方法において、ハードウェア(例えば、NIC100)はユーザのバッファからデータを直接DMAし得る。
【0077】
発信データを壊さないようにするため、バッファ(または、バッファを含むメモリページ)に書き込むユーザの許可は、ハードウェアがデータを取り出す後まで拒否される。書き込み許可は、データ伝達が完了した後にユーザに返される。複数のユーザメモリバッファを実現して、プロテクトメモリが利用可能になる前に、ユーザまたはアプリケーションがプロテクトメモリを改変しようとする状況を避ける。さらに、ハードウェアへのデータ伝達が遅れた場合、またはユーザ/アプリケーションが書き込み失敗になる場合が多いと判定された場合、この方法は、このユーザまたはアプリケーションに対して一時停止され得る。
【0078】
この方法において、ユーザメモリバッファを用いて発信データを格納するため、プロトコルヘッダ(例えば、TCPおよびIP用)が別個のバッファ内に格納される。
【0079】
さらに向上させると、アウトバウンドデータをセグメント化して、データのフローをさらに促進し得る。セグメント化の第1の工程において、発信アプリケーションデータ(例えば、1ページまたはデータの1つのユーザバッファ)を集めたものがユーザ空間からカーネル空間内にマッピングまたはページフリップされ、このページ/バッファへのユーザの書き込み許可は一時的に無効にされる。有利にも、元のメモリバッファのサイズは1つのメモリページであり、これにより、より容易なデータ伝達が可能になる。上述したように、この処理により、データフローを遅くするデータコピー動作が無くなる。次いで、データはバッファ内の所定のサイズ(例えば、最大パケットサイズ)の部分に分割される。プロトコル情報(例えば、ヘッダ)がプロトコルスタックを介して処理される場合に、プロトコル情報をデータ部分に付加する代わりに、ヘッダを別個のメモリ領域またはブロック内に蓄積する。したがって、通信インターフェースデバイス(例えば、NIC)がパケットデータを要求し、そしてこれを(例えば、DMAを介して)取り出す場合、パケットデータは、1つのバッファまたはメモリ領域から一度にすべて取り出され得る。プロトコルヘッダは、その別個の位置からデータと共に取り出される。
【0080】
図2A〜図2Bに示す本発明の実施形態と共に説明したように、アービタ110およびローダ112(図1に示す)がNIC100上のキャッシュにサービスする場合、アービタ110およびローダ112はデータの1つの完全なパケットの値を一度に処理する。説明したばかりのアウトバウンドデータを処理する方法は、完全なデータパケットを一度に取り出すことを促進する。
【0081】
図3は、本発明の一実施形態における、ユーザ空間から通信リンクに伝達するための通信インターフェースデバイスへの1セットのユーザデータのフローを示す。この実施形態において、アウトバウンドデータトラフィックのプロトコルスタックは、層4においてTCPそして層3においてIPを含む。本発明の別の実施形態は、他のプロトコルおよびプロトコルスタックとの使用に適している。
【0082】
図3において、ユーザまたはアプリケーションデータ302は、ユーザまたはアプリケーションプログラムによって生成され、そしてユーザメモリ空間322内でマッピングされる。次いで、データバッファはカーネル空間324内にマッピングされ、元のデータは複数のデータ部分304a〜304dにセグメント化される。さらに、メモリブロック320aはプロトコルヘッダを格納するために確保されている。
【0083】
発信データがプロトコルスタックの層3および層4(例えば、TCPおよびIP)を介して処理される場合、メモリブロックが、まずデータ部分304a〜304d(参照符号320b)に必要なTCPヘッダを含み、次いで、IPヘッダ(参照符号320c)および必要とされ得る他の任意のプロトコル情報またはヘッダ(例えば、MAC)を含むように改変する。
【0084】
次いで、デバイスドライバおよび通信インターフェースデバイス(例えば、NIC100)は、データがデバイスに提供される場合に、協同してヘッダをデータ部分と組み合わせる。
【0085】
本発明の上述の説明は、例示および説明を目的としてのみ提示してきた。上述の説明は、包括的、または開示する形態に本発明を限定することが意図されない。したがって、上述の開示は本発明を限定することを意図されず、本発明の範囲は上掲の特許請求の範囲によって規定される。
【図面の簡単な説明】
【図1】 図1は、本発明の一実施形態による、通信リンクを介して伝送する、異なる優先順位を有するデータパケットのスケジューリングするデバイスを示すブロック図である。
【図2A】 図2Aは、本発明の1実施形態による、通信リンクを介して伝送するデータを、データの優先順位によってスケジューリングする一方法を示すフローチャートである。
【図2B】 図2Bは、本発明の1実施形態による、通信リンクを介して伝送するデータを、データの優先順位によってスケジューリングする一方法を示すフローチャートである。
【図3】 図3は、本発明の一実施形態による、発信データのセグメント化を示すブロック図である。
Claims (18)
- 異なる優先順位を有するデータに関連付けられた複数のメモリ(102a、102b)に順にサービスすることによって、通信リンク(130)を介した伝送についてデータをスケジューリングする方法であって、
該方法は、
該複数のメモリのうちの第1のメモリに、第1の優先順位を有するデータを記述する第1の組の記述子を格納することであって、該第1のメモリは、データの第1の閾値量に対応する第1の動的重みを有する、ことと、
該複数のメモリのうちの第2のメモリに、第2の優先順位を有するデータを記述する第2の組の記述子を格納することであって、該第2のメモリは、データの第2の閾値量に対応する第2の動的重みを有する、ことと、
該複数のメモリにサービスすることと
を包含し、
該複数のメモリのうちの1つにサービスすることは、
(a)該重みのうちの1つ以上が変更されたか否かを決定することと、
(b)該サービスされるメモリから記述子を受信することと、
(c)該受信された記述子によって記述されたデータを取り出すことであって、該取り出されたデータの量は該閾値量を超え得る、ことと、
(d)該通信リンクを介した伝送について該データをスケジューリングすることと、
(e)該通信リンクを介した伝送について該サービスの間にスケジューリングされたデータの量が、該サービスされるメモリに対する該重みに対応する該データの閾値量を超えるか否かを決定することと、
(f)該伝送についてスケジューリングされた該データの量が該データの閾値量よりも少ない場合には、ステップ(a)〜(e)を該サービスされるメモリ内の次の記述子に対して繰り返すことと、
(g)該伝送についてスケジューリングされた該データの量が該データの閾値量を超える場合には、第1の不足量を維持して、該サービスされるメモリに対する該重みに対応する該データの閾値量よりどのくらい少ないデータ量が該サービスされるメモリの次回のサービスの回の間にスケジューリングされ得るかを決定することと
を包含する、方法。 - 前記重みのうちの1つが変更された場合、前記第1の不足量はゼロに設定される、請求項1に記載の方法。
- 前記重みのうちの1つが変更された場合、前記複数のメモリのそれぞれに対する不足量はゼロに設定される、請求項1に記載の方法。
- 前記複数のメモリのうちの1つにサービスすることは、前記サービスされるメモリが空であるか否かを決定することをさらに包含する、請求項1〜3のいずれか1項に記載の方法。
- サービスの回は、該サービスの回の間に、前記サービスされるメモリが空であると決定されるか、または伝送についてスケジューリングされた優先データの量が該サービスされるメモリに対する前記重みに対応する前記データの閾値量を超えるかのいずれかの場合に、終了する、請求項4に記載の方法。
- 前記決定することは、
伝送についてスケジューリングされたデータの各単位についてデータカウンタをインクリメントすることと、
該データカウンタと、前記サービスされるメモリに対する前記重みに対応する前記データの閾値量とを比較することと
を包含する、請求項1〜5のいずれか1項に記載の方法。 - 前記データの単位はバイトである、請求項6に記載の方法。
- さらなる回において前記複数のメモリのうちのさらなるメモリにサービスすることをさらに包含し、
該さらなるメモリにサービスすることは、
該さらなるメモリが空であると決定されることと、
前記重みのうちの1つが変更されることと、
前記通信リンクを介した伝送について該さらなる回の間にスケジューリングされたデータの量が、該さらなるメモリに対する動的重みに対応するデータの閾値量と、該さらなるメモリに対する動的重みに対応する該データの閾値量からさらなる不足量を減算した値とのうちの小さい方の値を超えることであって、該さらなる不足量は、該さらなるメモリの1回以上前のサービスの回において、該さらなるメモリに対する動的重みに対応する該データの閾値量が超えたデータの量に対応する、ことと
のうちの少なくとも1つが満たされるまで、
該さらなるメモリから、さらなる優先順位を有するさらなる組のデータを記述する記述子を受信することと、
該さらなる組のデータを取り出すことと、
該通信リンクを介した伝送について該さらなる組のデータをスケジューリングすることと、
該さらなる回の間に以前にスケジューリングされたデータの測定値に該さらなる組のデータのサイズを加算することによって、該さらなる回の間にスケジューリングされたデータの量を追跡することと
を繰返し行うことを包含する、請求項1〜7のうちのいずれか1項に記載の方法。 - 前記第1のメモリは、最も高い優先順位を有するデータに対応し、
前記重みのうちの1つが変更されたために、メモリにサービスすることが終了する場合には、該第1のメモリは次のサービスされるメモリである、請求項8に記載の方法。 - 前記方法は、ネットワークインターフェース回路内で実行され、前記通信リンクはネットワークである、請求項1〜9のいずれか1項に記載の方法。
- 前記第1の動的重みは、前記通信リンクの最大パケットサイズにほぼ等しい、請求項1〜10のいずれか1項に記載の方法。
- 前記第2の動的重みは、1にほぼ等しい、請求項1〜11のいずれか1項に記載の方法。
- 命令を格納するコンピュータ読み出し可能記憶媒体であって、該命令は、コンピュータによって実行される場合に、該コンピュータに、請求項1〜12のいずれか1項に記載の異なる優先順位を有するデータに関連付けられた複数のメモリに順にサービスすることによって、通信リンクを介した伝送についてデータをスケジューリングする方法を実行させる、コンピュータ読み出し可能記憶媒体。
- 優先順位を付けられたデータを通信リンク(130)を介して伝送する通信インターフェースデバイス(100)であって、
該通信インターフェースデバイスは、
第1の優先順位を有するデータを記述する第1の組の記述子を格納するように構成されている複数のメモリのうちの第1のメモリ(102a)であって、該第1のメモリは、第1の動的重みを有し、該第1の重みは、データの第1の閾値量に対応する、第1のメモリと、
第2の優先順位を有するデータを記述する第2の組の記述子を格納するように構成されている該複数のメモリのうちの第2のメモリ(102b)であって、該第2のメモリは、第2の重みを有し、該第2の重みは、データの第2の閾値量に対応する、第2のメモリと、
伝送キュー(120)であって、該伝送キューに、該通信リンクを介した伝送のためにデータが配置される、伝送キューと、
該第1のメモリおよび該第2のメモリにサービスすることを容易にするように構成されているアービタ(110)と
を備え、
該複数のメモリのうちの1つにサービスすることは、
(a)該重みのうちの1つ以上が変更されたか否かを決定することと、
(b)該サービスされるメモリから記述子を受信することと、
(c)該受信された記述子によって記述されたデータを取り出すことであって、該取り出されたデータの量は該閾値量を超え得る、ことと、
(d)該通信リンクを介した伝送について該データをスケジューリングすることと、
(e)該通信リンクを介した伝送について該サービスの間にスケジューリングされたデータの量が、該サービスされるメモリに対する該重みに対応する該データの閾値量を超えるか否かを決定することと、
(f)該伝送についてスケジューリングされた該データの量が該データの閾値量よりも少ない場合には、ステップ(a)〜(e)を該サービスされるメモリ内の次の記述子に対して繰り返すことと、
(g)該伝送についてスケジューリングされた該データの量が該データの閾値量を超える場合には、第1の不足量を維持して、該サービスされるメモリに対する該重みに対応する該データの閾値量よりどのくらい少ないデータ量が該サービスされるメモリの次回のサービスの回の間にスケジューリングされ得るかを決定することと
を包含する、通信インターフェースデバイス。 - 前記サービスされるメモリの前記サービスの間に、前記伝送キュー内に配置するために前記伝送についてスケジュールされた前記データを取り出すように構成されているローダをさらに備える、請求項14に記載の通信インターフェースデバイス。
- 前記ローダは、前記複数のメモリのうちの1つに格納する次の記述子をロードするようにさらに構成されている、請求項15に記載の通信インターフェースデバイス。
- 前記第1の不足量は、前記サービスされるメモリに対する前記重みに対応する前記データの閾値量を超えた分のデータの量に対応し、該超えた分のデータの量は、前記サービスの回の間に前記伝送キュー内に配置される、請求項14〜16のいずれか1項に記載の通信インターフェースデバイス。
- 前記サービスの回の間に、1組の記述子を、前記アービタおよび前記ローダに伝達するように構成されているマルチプレクサ(104)をさらに備える、請求項15に記載の通信インターフェースデバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/510,905 US6956818B1 (en) | 2000-02-23 | 2000-02-23 | Method and apparatus for dynamic class-based packet scheduling |
US09/510,905 | 2000-02-23 | ||
PCT/US2001/004726 WO2001063836A2 (en) | 2000-02-23 | 2001-02-14 | Method and apparatus for dynamic class-based packet scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003524999A JP2003524999A (ja) | 2003-08-19 |
JP4636583B2 true JP4636583B2 (ja) | 2011-02-23 |
Family
ID=24032664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001562908A Expired - Lifetime JP4636583B2 (ja) | 2000-02-23 | 2001-02-14 | 動的にクラスベースパケットのスケジューリングする方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6956818B1 (ja) |
EP (1) | EP1258125B1 (ja) |
JP (1) | JP4636583B2 (ja) |
KR (1) | KR100817676B1 (ja) |
AU (1) | AU2001238252A1 (ja) |
WO (1) | WO2001063836A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210014177A1 (en) * | 2020-09-26 | 2021-01-14 | Intel Corporation | Deterministic packet scheduling and dma for time sensitive networking |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6975629B2 (en) * | 2000-03-22 | 2005-12-13 | Texas Instruments Incorporated | Processing packets based on deadline intervals |
US7126916B1 (en) * | 2000-08-24 | 2006-10-24 | Efficient Networks, Inc. | System and method for packet bypass in a communication system |
US8165246B1 (en) * | 2000-08-28 | 2012-04-24 | Alcatel Lucent | Training sequence for low latency LMS implementation |
KR100434270B1 (ko) * | 2001-05-30 | 2004-06-04 | 엘지전자 주식회사 | 가전기기 네트워크 제어시스템 |
JP2003124953A (ja) * | 2001-10-15 | 2003-04-25 | Fujitsu Ltd | リング型ネットワークシステム |
KR100447395B1 (ko) * | 2001-12-22 | 2004-09-04 | 엘지전자 주식회사 | 메모리 엑세스 제어용 라운드 로빈 스케쥴러 |
AU2003216673A1 (en) * | 2002-05-14 | 2003-11-11 | Koninklijke Philips Electronics N.V. | Method of processing data of at least one data stream, data storage system and method of use thereof |
KR100460429B1 (ko) * | 2002-11-15 | 2004-12-08 | 삼성전자주식회사 | 우선순위 큐잉 장치 및 이를 이용한 우선순위 큐잉 방법 |
US7587510B1 (en) * | 2003-04-21 | 2009-09-08 | Charles Schwab & Co., Inc. | System and method for transferring data between a user space and a kernel space in a server associated with a distributed network environment |
KR100439417B1 (ko) | 2003-06-17 | 2004-07-09 | 허수영 | 개비온 단위체와 이것을 포함한 개비온 철망 |
US7756594B2 (en) | 2004-06-14 | 2010-07-13 | Microsoft Corporation | Systems and methods for parsing flexible audio codec topologies |
US7742486B2 (en) * | 2004-07-26 | 2010-06-22 | Forestay Research, Llc | Network interconnect crosspoint switching architecture and method |
US7590065B2 (en) * | 2004-08-04 | 2009-09-15 | Microsoft Corporation | Equal-opportunity bandwidth regulation |
US7706901B2 (en) * | 2004-10-01 | 2010-04-27 | Microsoft Corporation | Low latency real-time audio streaming |
US7826470B1 (en) * | 2004-10-19 | 2010-11-02 | Broadcom Corp. | Network interface device with flow-oriented bus interface |
US8559443B2 (en) | 2005-07-22 | 2013-10-15 | Marvell International Ltd. | Efficient message switching in a switching apparatus |
US7581044B1 (en) * | 2006-01-03 | 2009-08-25 | Emc Corporation | Data transmission method and system using credits, a plurality of buffers and a plurality of credit buses |
US7675929B1 (en) | 2006-01-03 | 2010-03-09 | Emc Corporation | Method and system for managing data flow in a data transmission system |
US7756037B2 (en) * | 2006-08-14 | 2010-07-13 | Cisco Technology, Inc. | Oversubscription of guaranteed bandwidth |
JP2008090747A (ja) * | 2006-10-04 | 2008-04-17 | Sony Corp | 通信システム、通信装置、プログラムおよび通信方法 |
US8004991B1 (en) * | 2006-10-11 | 2011-08-23 | Qlogic, Corporation | Method and system for processing network information |
US7725594B2 (en) | 2006-12-29 | 2010-05-25 | Verizon Patent And Licensing Inc. | Assigning priority to network traffic at customer premises |
US7925795B2 (en) * | 2007-04-30 | 2011-04-12 | Broadcom Corporation | Method and system for configuring a plurality of network interfaces that share a physical interface |
US8433292B2 (en) * | 2007-06-29 | 2013-04-30 | Alcatel Lucent | Network based mobile user proxy and agent |
US8566467B2 (en) * | 2007-07-23 | 2013-10-22 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US8045563B2 (en) | 2007-12-27 | 2011-10-25 | Cellco Partnership | Dynamically adjusted credit based round robin scheduler |
EP2257888A4 (en) * | 2008-02-20 | 2013-04-10 | Novatel Wireless Inc | SYSTEM AND METHOD FOR TRAFFIC PRIORIZATION |
US7936669B2 (en) | 2008-06-04 | 2011-05-03 | Entropic Communications, Inc. | Systems and methods for flow control and quality of service |
CA2674372C (en) * | 2008-07-30 | 2016-02-09 | Gen-Tran Corporation | Automatic transfer switch |
US8005087B2 (en) * | 2008-09-16 | 2011-08-23 | Alcatel Lucent | Application-level processing for default LTE bearer |
US8116311B1 (en) * | 2008-11-13 | 2012-02-14 | Qlogic, Corporation | Method and system for tag arbitration in switches |
US9542341B2 (en) | 2008-12-19 | 2017-01-10 | St-Ericsson Sa | Resolving contention between data bursts |
US8811411B2 (en) * | 2008-12-24 | 2014-08-19 | Entropic Communications, Inc. | Packet aggregation and fragmentation at layer-2 over a managed network |
US7826469B1 (en) * | 2009-03-09 | 2010-11-02 | Juniper Networks, Inc. | Memory utilization in a priority queuing system of a network device |
US8225052B2 (en) | 2009-06-03 | 2012-07-17 | Micron Technology, Inc. | Methods for controlling host memory access with memory devices and systems |
US8356137B2 (en) * | 2010-02-26 | 2013-01-15 | Apple Inc. | Data storage scheme for non-volatile memories based on data priority |
US8935329B2 (en) | 2012-01-11 | 2015-01-13 | International Business Machines Corporation | Managing message transmission and reception |
DE102012208324B3 (de) * | 2012-05-18 | 2013-11-21 | Leica Microsystems Cms Gmbh | Schaltung und Verfahren zum Steuern eines Mikroskops |
JP6239990B2 (ja) * | 2014-01-22 | 2017-11-29 | クラリオン株式会社 | 接続装置、プログラムおよび接続方法 |
US10469404B1 (en) * | 2014-05-12 | 2019-11-05 | Google Llc | Network multi-level rate limiter |
US10819820B1 (en) * | 2017-03-24 | 2020-10-27 | Amazon Technologies, Inc. | On-path data caching in a mesh network |
US10581762B2 (en) | 2017-12-06 | 2020-03-03 | Mellanox Technologies Tlv Ltd. | Packet scheduling in a switch for reducing cache-miss rate at a destination network node |
US11258714B1 (en) | 2018-09-28 | 2022-02-22 | Google Llc | Fine grain traffic shaping offload for a network interface card |
US20190158429A1 (en) * | 2019-01-29 | 2019-05-23 | Intel Corporation | Techniques to use descriptors for packet transmit scheduling |
US11171869B2 (en) * | 2019-04-10 | 2021-11-09 | At&T Intellectual Property I, L.P. | Microburst detection and management |
KR102179769B1 (ko) | 2019-10-30 | 2020-11-17 | 고려대학교 산학협력단 | 다중 큐를 지원하는 네트워크 정책 적용 방법, 이를 수행하기 위한 기록 매체 및 장치 |
CN118034613B (zh) * | 2024-04-11 | 2024-06-11 | 深圳市铨兴科技有限公司 | 一种存储空间数据智能调度方法、系统及存储器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434872A (en) * | 1992-07-28 | 1995-07-18 | 3Com Corporation | Apparatus for automatic initiation of data transmission |
US5533020A (en) | 1994-10-31 | 1996-07-02 | International Business Machines Corporation | ATM cell scheduler |
US6490248B1 (en) * | 1995-09-18 | 2002-12-03 | Kabushiki Kaisha Toshiba | Packet transfer device and packet transfer method adaptive to a large number of input ports |
US5751951A (en) | 1995-10-30 | 1998-05-12 | Mitsubishi Electric Information Technology Center America, Inc. | Network interface |
GB2308959A (en) * | 1995-12-29 | 1997-07-09 | Ericsson Telefon Ab L M | Data switching apparatus with fair queuing |
US5844890A (en) * | 1997-03-25 | 1998-12-01 | International Business Machines Corporation | Communications cell scheduler and scheduling method for providing proportional use of network bandwith |
US6094435A (en) | 1997-06-30 | 2000-07-25 | Sun Microsystems, Inc. | System and method for a quality of service in a multi-layer network element |
CA2292828A1 (en) * | 1999-12-22 | 2001-06-22 | Nortel Networks Corporation | Method and apparatus for traffic flow control in data switches |
-
2000
- 2000-02-23 US US09/510,905 patent/US6956818B1/en not_active Expired - Lifetime
-
2001
- 2001-02-14 EP EP01910667A patent/EP1258125B1/en not_active Expired - Lifetime
- 2001-02-14 WO PCT/US2001/004726 patent/WO2001063836A2/en active Application Filing
- 2001-02-14 KR KR1020027011018A patent/KR100817676B1/ko active IP Right Grant
- 2001-02-14 AU AU2001238252A patent/AU2001238252A1/en not_active Abandoned
- 2001-02-14 JP JP2001562908A patent/JP4636583B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210014177A1 (en) * | 2020-09-26 | 2021-01-14 | Intel Corporation | Deterministic packet scheduling and dma for time sensitive networking |
Also Published As
Publication number | Publication date |
---|---|
KR20020079894A (ko) | 2002-10-19 |
EP1258125B1 (en) | 2013-01-16 |
WO2001063836A3 (en) | 2002-02-21 |
KR100817676B1 (ko) | 2008-03-27 |
AU2001238252A1 (en) | 2001-09-03 |
WO2001063836A2 (en) | 2001-08-30 |
US6956818B1 (en) | 2005-10-18 |
EP1258125A2 (en) | 2002-11-20 |
JP2003524999A (ja) | 2003-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4636583B2 (ja) | 動的にクラスベースパケットのスケジューリングする方法および装置 | |
US6233240B1 (en) | Event based rate policing with a jumping window | |
US8006016B2 (en) | Hiding system latencies in a throughput networking systems | |
US7567567B2 (en) | Network system including packet classification for partitioned resources | |
US7353360B1 (en) | Method for maximizing page locality | |
US7295565B2 (en) | System and method for sharing a resource among multiple queues | |
US7889734B1 (en) | Method and apparatus for arbitrarily mapping functions to preassigned processing entities in a network system | |
US7529245B1 (en) | Reorder mechanism for use in a relaxed order input/output system | |
US7992144B1 (en) | Method and apparatus for separating and isolating control of processing entities in a network interface | |
US7779164B2 (en) | Asymmetrical data processing partition | |
US8023528B2 (en) | Method for resolving mutex contention in a network system | |
US7443878B2 (en) | System for scaling by parallelizing network workload | |
US7865624B1 (en) | Lookup mechanism based on link layer semantics | |
US8510491B1 (en) | Method and apparatus for efficient interrupt event notification for a scalable input/output device | |
US9128771B1 (en) | System, method, and computer program product to distribute workload | |
US6625149B1 (en) | Signaled receiver processing methods and apparatus for improved protocol processing | |
EP2016496B1 (en) | Hiding system latencies in a throughput networking system | |
EP2016718B1 (en) | Method and system for scaling by parallelizing network workload | |
EP2016498B1 (en) | Asymmetrical processing for networking functions and data path offload | |
EP2014028B1 (en) | Asymmetrical processing for networking functions and data path offload | |
GB2375408A (en) | Data transmission via a network, using shared memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071228 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100527 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100805 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101021 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20101118 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101119 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131203 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4636583 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |