JP4358437B2 - デジタルデータネットワークにおいてメッセージ伝送をスケジューリングし、処理を行うシステムおよび方法 - Google Patents

デジタルデータネットワークにおいてメッセージ伝送をスケジューリングし、処理を行うシステムおよび方法 Download PDF

Info

Publication number
JP4358437B2
JP4358437B2 JP2000545109A JP2000545109A JP4358437B2 JP 4358437 B2 JP4358437 B2 JP 4358437B2 JP 2000545109 A JP2000545109 A JP 2000545109A JP 2000545109 A JP2000545109 A JP 2000545109A JP 4358437 B2 JP4358437 B2 JP 4358437B2
Authority
JP
Japan
Prior art keywords
virtual circuit
message
task
virtual
buffer
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
Application number
JP2000545109A
Other languages
English (en)
Other versions
JP2002512459A5 (ja
JP2002512459A (ja
Inventor
シャウン エイ. クレイトン
デービッド アール. フォレット
ナイチン ディー. ゴディワラ
マリア シー. グティエレス
デービッド エス. ウェルズ
ジェームズ ビー. ウィリアムズ
Original Assignee
エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
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 エミュレックス デザイン アンド マニュファクチュアリング コーポレーション filed Critical エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Publication of JP2002512459A publication Critical patent/JP2002512459A/ja
Publication of JP2002512459A5 publication Critical patent/JP2002512459A5/ja
Application granted granted Critical
Publication of JP4358437B2 publication Critical patent/JP4358437B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

【0001】
発明の分野
本発明は一般的にはデジタル通信システムの分野に関し、さらに具体的には、例えば、デジタルイメージ(画像)、オーディオおよびビデオ配信システムでのデジタルデータの通信とデジタルコンピュータシステム相互間の通信を容易化するデジタルネットワークに関する。さらに具体的には、本発明は、輻輳を避け、データ損失を防止し、ネットワークを利用して情報を転送する複数のデバイス間で公平性を保つように、ネットワークを通る情報のフロー(流れ)を調整するフロー制御およびスケジューリング構成を目的としている。
【0002】
発明の背景
データとプログラムを含む情報を、デジタルコンピュータシステムや他のデジタルデバイス相互間で転送することを容易化するデジタルネットワークはすでに開発されている。種々のタイプのネットワークは、種々の情報転送技法を使用して開発され、構築されている。周知のEthernetなどの、いくつかのネットワークでは、ネットワークに接続されたデバイスのすべてを相互接続するためにシングルワイヤが使用されている。この方法によると、施設内のネットワークの配線が単純化され、デバイスをネットワークに接続することが単純化されるが、ワイヤはメッセージの形をした情報を、一度に1つのデバイスからしか伝達できないために情報転送が全体的に低速になっている。この問題をある程度軽減するために、いくつかのEthernet設置施設では、ネットワークはいくつかのサブネットワークに分割され、各サブネットワークが別々のワイヤをもち、これらのワイヤはインタフェースで相互に接続されている。このような施設では、ワイヤはそこに接続されたデバイスのメッセージを同時に伝達できるために、同時に転送できるメッセージの数が増加している。2またはそれ以上のサブネットワーク内のワイヤが使用されるのは、あるワイヤに接続されたデバイスが別のワイヤに接続されたデバイスにメッセージを送信する必要があるときだけであるため、ワイヤに接続された他のデバイスはサブネットワークを利用できないようになっている。
【0003】
この問題をさらに軽減するために、メッシュ(網)状のスイッチングノードを通してコミュニケーション(通信)が処理されるようにしたネットワークが開発されている。コンピュータシステムと他のデバイスは種々のスイッチングノードに接続されている。スイッチングノード自体はさまざまなパターンで相互接続されているために、デバイスのペア間で複数の経路 (path) が利用できるので、ある経路が輻輳しているとき、別の経路が使用できるようになっている。このような構成では、ネットワークはEthernetネットワークよりも複雑化するが、特に、スイッチングノードとデバイスを相互接続する媒体として光ファイバが使用される場合には、情報転送レートを大幅に高速化することを可能にしている。この種のネットワークには次のような問題がある。すなわち、この種のネットワークでは、スイッチングノードまたはデバイスがネットワーク内の別のスイッチングノードまたはデバイスから情報を受信するとき、「フロー制御(flow-control)」情報を送信側スイッチングノードまたはデバイスに提供するメカニズムがないことである。このようにすると、ネットワークのコストは確かに低減されるが、輻輳を引き起こす原因になる。輻輳が起こると、スイッチングノードは送信能力以上の高速レートで情報を受信することになるか、あるいはデスティネーションデバイスは情報をバッファに保管し、情報を処理する速度以上の高速レートで情報を受信することになるであろう。
【0004】
発明の概要
本発明は、通信ネットワークにおけるメッセージ転送をスケジューリングする新規で、改良されたシステムおよび方法を提供することを目的としている。
【0005】
要約して簡単に説明すると、本発明の一実施形態によれば、少なくとも1つの通信リンクを含むネットワークによって相互接続された少なくとも2つのデバイスを含んでいるシステムが提供されている。各デバイスは、ネットワークを利用してメッセージを転送するためのネットワークインタフェースを装備している。これらデバイスの少なくとも1つは、ソースデバイス (source device) として、ネットワーク上に確立された1つまたは2つ以上の仮想回線 (virtual circuit) を利用してメッセージを送信する。そして、前記デバイスの少なくとも1つの他は、それぞれの仮想回線のデスティネーションデバイス (destination device) として、仮想回線を利用してメッセージを受信する。ソースデバイスのネットワークインタフェースは送信セクションを含み、それはトランスミッタと送信スケジューラを含む。トランスミッタは、デバイスがそのソースデバイスとなっている、それぞれの仮想回線に対してメッセージを送信するのが一般である。送信スケジューラはトランスミッタによるメッセージの送信をスケジュールすることにより、デバイスがそのソースデバイスとなっている仮想回線の間でメッセージがラウンドロビン (round-robin) 方式で送信されるようにする。これによって、メッセージ伝送の公平性が仮想回線の間で保たれるようにしている。一実施形態では、トランスミッタは一連の固定長セルの形でメッセージを送信し、セルの各々にはメッセージの一部を収容することが可能であり、また送信スケジューラはトランスミッタによるメッセージの送信をスケジュールすることによって、デバイスがそのソースデバイスとなっている仮想回線の間でメッセージがラウンドロビン方式で送信されるようにする。このため、仮想回線の一方に対する短メッセージ (short message) が、仮想回線の他方に対する相対的に長いメッセージによって不当に遅延されないようにしている。デスティネーションデバイスのネットワークインタフェースは、あらかじめ定めたオペレーションを受信メッセージに関連して実行する受信ホストと受信スケジューラを含む。受信スケジューラは、デバイスがそのデスティネーションデバイスとなっている仮想回線をスケジュールし、デバイスがそのデスティネーションデバイスとなっている仮想回線に関連して、受信ホストがあらかじめ定めたオペレーションをラウンドロビン方式で実行することを可能にする。これによってメッセージ処理の公平性が仮想回線の間で保たれるようにしている。
【0006】
別の実施形態では、ネットワークは、ソースデバイスとデスティネーションデバイスの間の1つまたは2つ以上の仮想回線に対する経路の一部を形成しているスイッチングノード (switching node) を含んでいる。スイッチングノードは、そのノードがそこに接続された通信リンク上の経路の一部を形成している、1つまたは複数の仮想回線を利用してソースデバイスから送信されたメッセージを受信し、受信したメッセージを内部バッファに置いておき(バッファリング)、バッファに保管されたメッセージをそこに接続された別の通信リンク上の1つまたは複数の仮想回線を利用して送信するように接続される。これによりスイッチングノードは、1つまたは複数の仮想回線に対するメッセージを、それぞれの仮想回線上の下流側に転送するようにしている。スイッチングノードは、それぞれの通信リンクが経路の一部を形成しているときの仮想回線については、バッファに保管されたメッセージを仮想回線上にラウンドロビン方式で送信するのが一般である。これによってメッセージ伝送の公平性が仮想回線の間で保たれるようにしている。
【0007】
実施形態の詳細説明
図1は、データを表している信号を複数のデバイスの間で転送するための複数のスイッチングノード11(1) 乃至11(N)(11(n) で総称する)を含んでいるコンピュータネットワーク10を概略的に示す。図1に示すように、複数のデバイスはコンピュータ12(1) 乃至12(M)(12(m) で総称する)で表されている。コンピュータ12(m) は、従来と同じように、プログラム命令に従ってデータを処理し、処理済みデータを生成する。この処理の際、コンピュータ12(mS)(下付き文字の“S”は「ソース」を表している)は、ソースコンピュータとして、データ、処理済みデータおよび/またはプログラム命令(以下では、これらは「情報」と総称することにする)を、別のデスティネーションコンピュータ12(mD)(下付き文字の“D”は「デスティネーション」を表している)に転送する必要が起こることがある。また、デスティネーションコンピュータは転送されてきた情報をそのオペレーションで使用する必要が起こることがある。各コンピュータ12(m) は、全体を符号13(p) で示している通信リンクを利用してスイッチングノード11(n) に接続され、スイッチングノードとの間のデータの送受信を容易化している。スイッチングノード11(n) はコンピュータ12(m) からや、他のスイッチングノード11(n) から送られてきたデータを受信し、バッファリングし、転送することによって、コンピュータ12(m) 間のデータ転送を容易化している。スイッチングノード11(n) は、これも全体を符号13(p) で示している通信リンクで相互接続され、その間のデータ転送を容易化している。通信リンク13(p) は、都合の良いものであれば、どのデータ伝送媒体でも利用することが可能である。図1に示す各通信リンク13(p) は双方向であることが好ましく、これにより、スイッチングノード11(n) は相互間に、および同一リンクを利用してそこに接続されたコンピュータ12(m) との間で信号を送受信することができる。この双方向通信リンクに適合させるために、通信リンク13(p) ごとに別々のメディアを設けてもよい、各メディアは信号を単方向に転送する。
【0008】
一実施形態では、データは周知の "ATM"("Asynchronous Transfer Mode":非同期転送モード)を使用して転送される。この技法は、C. Partridge著「ギガビットネットワーキング(Gigabit Networking)」(Reading MA: Addison Wesley Publishing Company, 1994)の主に第3章と第4章、およびD. McDysan他著「ATMの理論と応用(ATM Theory and Application)」(McGraw Hill, 1995) に詳しく説明されているので、ここで詳しく説明することは省略する。一般的に、ATM技法では、コンピュータ12(m) とスイッチングノード11(n)とは、ネットワークを通してコンピュータ間12(m)で確立された「仮想回線(virtual circuit)」を利用してデータを固定長「セル(cell)」の形で伝送している。各仮想回線は、基本的に、ソースコンピュータ12(mS) からデスティネーションコンピュータ12(mD) への経路を、1つまたは2つ以上のスイッチングノード11(n) を通って、それぞれの通信リンク13(p) を利用するように定義している。ATMデータ転送技法では、ある情報ブロックがソースコンピュータ12(mS) からデスティネーションコンピュータ12(mD) あてに、その間で確立された仮想回線を利用して転送されるとき、ソースコンピュータ12(mS) はそのデータブロックを1つまたは一連の「セル」に割り当てて、通信リンク13(p) 上をシリアルに伝送する。ネットワーク10を通して転送される各セルはヘッダ部分とデータ部分を含み、ヘッダ部分は、ネットワーク10を通るセルの転送を制御するための仮想回線ID情報のほかに、プロトコルおよび他の制御情報(「メッセージ終わり(end of message EOM)」フラグなど)を含む。データ部分は、セルに入って転送されるデータブロックのデータを含む。各セルのデータ部分はあらかじめ定めた固定長であり、一実施形態では、48バイトである。ソースコンピュータ12(mS) はデータをセルのデータ部分に埋め込むか(転送されるデータブロックが1つのセルに収容される場合)、あるいはブロックに含まれるデータ量が各セルのデータ部分のサイズの整数倍になっていないときは、一連のセルの最終セルに埋め込むことによって(転送されるデータブロックを収容するために複数のセルが必要な場合)、最終セルのデータ部分が必要とする長さになるようにしている。データブロックを転送するために一連のセルが必要なときは、ソースコンピュータ12(mS)は、一連のセルのデータ部分内のデータが転送されるデータブロック内のデータの順序に一致するようにセルを送信する。さらに、これらのセルがデスティネーションコンピュータ12(mD) に正しく転送されると、デスティネーションコンピュータはセルを同じ順序で受信することになる。一連のセルの中で、データブロックからの情報を含んでいる最終セルでは、ヘッダ部分のメッセージ終わりフラグがセットされるので、データブロックのデータを含んでいるセルのすべてを受信したことがデスティネーションコンピュータ12(mD) に通知される。
【0009】
本発明は、コンピュータ12(m) とスイッチングノード11(n) がネットワーク上のセルのフローを制御し、スイッチングノード11(n) 側とデスティネーションコンピュータ側の双方で輻輳が起こるのを防止または低減するための構成を提供している。このような構成がないと、セル転送スループットが低下し、あるいはネットワーク上でセルが紛失するおそれがある。さらに、本発明は、コンピュータ12(m) とスイッチングノード11(n) によるオペレーションをスケジュールすることによって情報転送の公平性が全体的に保たれると共に、ネットワーク10を通して確立された種々の仮想回線を利用した小さなメッセージの転送の遅れを妥当な範囲に留める構成を提供している。一般的に、フロー制御に関しては、コンピュータ12(m) とスイッチングノード11(n) は、フロー制御を2つのモードで実現している。以下では、2つのモードの一方は仮想回線フロー制御モード (virtual circuit flow control mode)、他方はリンクフロー制御モード (link flow control mode) と呼ぶことにする。仮想回線フロー制御モードでは、仮想回線に対してデスティネーションコンピュータ12(mD) として動作しているコンピュータ12(m) が、処理できないほど(これについては下述する)余りに高速レートでその仮想回線に関連するセルを受信している場合、処理できない場合には仮想回線フロー制御モードで動作しているデスティネーションコンピュータ12(mD) はセットされた仮想回線フロー制御ステート(a set virtual circuit flow control state)に入るので、仮想回線のフロー制御が可能になる。このオペレーションでは、デスティネーションコンピュータ12(mD) はセットされた仮想回線フロー制御メッセージを生成し、仮想回線の経路上を上流側に、つまり、仮想回線のソースコンピュータ12(mS) に向かってそのメッセージを伝送する。デスティネーションコンピュータ12(mD) からソースコンピュータ12(mS) へ向かう仮想回線の経路上の各スイッチングノード11(n) も、その仮想回線に対してセットされた仮想回線フロー制御ステートに入る。仮想回線のソースコンピュータ12(mS) がセットされた仮想回線フロー制御メッセージを受信すると、その仮想回線に関連するセルの送信を事実上停止する。
【0010】
仮想回線の経路上の各スイッチングノード11(n) は、例えば、余りに高速レートで仮想回線に関連するセルを受信するために、仮想回線の経路上を下流側に転送できない場合も(これについては下述する)、仮想回線フロー制御モードで動作しているとき、セットされた仮想回線フロー制御ステートに入って、セットされた仮想回線フロー制御メッセージを生成し、その仮想回線の経路上を上流側にそのメッセージを送信することができる。ソースコンピュータ12(mS) に向かう仮想回線の経路上の上流側スイッチングノード11(n)(存在する場合)とソースコンピュータ11(mS) は上述したのと同じように動作する。
【0011】
デスティネーションコンピュータ12(mD) がその仮想回線のセルの受信を再開できるようになると、クリアされた仮想回線フロー制御ステート(a clear virtual circuit flow control state)に入るので、クリアされた仮想回線フロー制御メッセージを生成し、その仮想回線の経路上を上流側にそのメッセージを伝送する。スイッチングノード11(n) がクリアされた仮想回線フロー制御メッセージを受信したとき、自身がセットされた仮想回線フロー制御ステートになっていなければ、セットされた仮想回線フロー制御メッセージを、仮想回線の経路上を上流側に向かって、ソースコンピュータ12(mS) に通じる経路上の上流側スイッチングノード11(n)(存在する場合)に伝送するか、あるいは仮想回線のソースコンピュータ12(mS) に伝送する。他方、スイッチングノード11(n) がクリアされた仮想回線フロー制御メッセージを受信したとき、自身がセットされた仮想回線フロー制御ステートにあれば、クリアされた仮想回線フロー制御メッセージの転送を、セットされた仮想回線フロー制御ステートから出るまで延期し、この状態から出ると、クリアされた仮想回線フロー制御メッセージを仮想回線の経路上の上流側に転送する。ソースコンピュータ12(mS) は、クリアされた仮想回線フロー制御メッセージを受信したとき、仮想回線に関連するセルを、仮想回線上の下流側に伝送することを再開することが可能になる。以上から理解されるように、スイッチングノード11(n) が、セットされた仮想回線フロー制御ステートにある間、クリアされた仮想回線フロー制御メッセージを仮想回線の経路上を上流側に転送することを延期可能とすると、スイッチングノード11(n) は、上流側スイッチングノード11(n) またはソースコンピュータ12(mS) がセルをそこに伝送することを再開することが可能になる前に、仮想回線のセルを転送できるので、仮想回線に対してバッファに置いておく必要のあるセルの数が低減されることになる。
【0012】
リンクフロー制御モードは、仮想回線ごとの単位ではなく、通信リンク単位で実現されている。従って、リンクフロー制御モードでは、コンピュータ12(m) がそこに接続されたスイッチングノード11(n) からセルを、余りに高速レートで受信しているために処理ができない場合には(これについても後述する)、リンクフロー制御モードで動作しているコンピュータ12(m) はセットされたリンクフロー制御状態に入るので、通信リンクのフロー制御が可能になる。このオペレーションでは、コンピュータ12(m) はセットされたリンクフロー制御メッセージを生成し、そのリンクを利用してそこに接続されたスイッチングノード11(n) にそのメッセージを送信する。スイッチングノード11(n) はセットされたリンクフロー制御メッセージを受信すると、そのリンクを利用してセルをそこに送信することを停止する。同様に、各スイッチングノード11(n) は、例えば、余りに高速レートでセルを受信しているため転送できない場合も(これについても下述する)、リンクフロー制御モードで動作しているとき、セットされたリンクフロー制御ステートに入って、それぞれのセットされたリンクフロー制御メッセージを生成し、他のスイッチングノード11(n) またはそこに接続されていて、そこにセルを送信しているコンピュータ12(m) にこれらのメッセージを送信する。これらのスイッチングノード11(n) またはコンピュータ12(m) がセットされたリンクフロー制御メッセージを受信したときも、それぞれのセットされたリンクフロー制御メッセージが送られてきたスイッチングノード11(n) にセルを送信することを停止する。
【0013】
コンピュータ12(m) が通信リンク13(p) を利用してスイッチングノード11(n) からセルを受信することを再開できるようになると、それは、クリアされたリンクフロー制御ステートとなり、クリアされたリンクフロー制御メッセージを生成し、スイッチングノード11(n) にそのメッセージを送信する。スイッチングノード11(n) がクリアされたリンクフロー制御メッセージを受信すると、コンピュータ12(m) にセルを送信することを再開できるようになる。同様に、セットされたリンクフロー制御ステートで動作しているスイッチングノード11(n) がセルを受信することを再開できるようになると、クリアされたリンクフロー制御ステートに入って、それぞれのクリアされたリンクフロー制御メッセージを生成し、スイッチングノード11(n) および/またはそこに接続されたコンピュータ12(m) にそのメッセージを送信することが可能になる。どちらの場合も、スイッチングノード11(n) とコンピュータ12(m) は、それぞれのクリアされたリンクフロー制御メッセージを受信すると、クリアされたリンクフロー制御メッセージが送られてきたスイッチングノード11(n) またはコンピュータ12(m) にセルを送信することを再開できるようになる。
【0014】
仮想回線フロー制御モードとリンクフロー制御モードが別々になっていると、いくつかの利点が得られる。例えば、仮想回線フロー制御モードを使用すると、各デスティネーションコンピュータ12(mD) が終端となっている仮想回線や、各スイッチングノード11(n) が経路の一部となっているような仮想回線の間で、ネットワークを通るセル伝送バンド幅の公平性が全体的に保たれるようになる。また、仮想回線フロー制御モードを使用すると、過剰の輻輳が起こる可能性を低減することもできる。他方、リンクフロー制御モードを使用すると、過剰の輻輳が実際に起こったとき、そこに置かれているバッファオーバーフローを引き起こし、そのためにセルを消失させるようなレートで、セルがコンピュータ12(m) またはスイッチングノード11(n) によって受信される可能性が防止され、あるいは少なくともその可能性が低減される。一実施形態では、種々のフロー制御メッセージ、すなわち、セットおよびクリアされた仮想回線フロー制御メッセージとセットおよびクリアされたリンクフロー制御メッセージは相対的に短いメッセージになっており、そこには、メッセージのタイプ、つまり、セットされた仮想回線フロー制御メッセージであるか、クリアされた仮想回線フロー制御メッセージであるか、セットされたリンクフロー制御メッセージであるか、クリアされたリンクフロー制御メッセージであるか、を示すメッセージタイプフラグとID部分が含まれている。ID部分があらかじめ定めた値、つまり、一実施形態では「ゼロ」になっているときは、そのメッセージは、メッセージタイプフラグの値に応じて、セットまたはクリアされたリンクフロー制御メッセージである。他方、ID部分があらかじめ定めた値とは別の値になっているときは、そのメッセージも、メッセージタイプフラグの値に応じて、セットまたはクリアされた仮想回線フロー制御メッセージであり、ID部分のその値は、そのメッセージが関連付けられている仮想回線を示している。セットおよびクリアされた仮想回線とリンクフロー制御メッセージは相対的に短いので、メッセージを転送するには、ネットワークを通る少量のバンド幅だけで十分である。
【0015】
システム10で使用されるフロー制御構成を詳しく説明する前に、システム10の一実施形態で使用されるコンピュータ12(m) とスイッチングノード11(n) の構造と動作について説明することにする。図2は、ネットワーク10に関連して使用されるコンピュータ12(m) の機能ブロック図を示す、図3は、ネットワーク10に関連して使用されるスイッチングノード11(n) の機能ブロック図を示す。一般的に、コンピュータ12(m) は従来のどのタイプのコンピュータにすることも可能であり、その中には、従来のパーソナルコンピュータやコンピュータワークステーション、サーバコンピュータ、ミニまたはメインフレームコンピュータ、などが含まれている。図2に示すように、コンピュータ12(m) は、プロセッサ20、システムメモリ21、大容量記憶サブシステム22、入出力サブシステム23およびネットワークインタフェース24を搭載し、これらはすべて相互接続構成25によって相互接続されている。一実施形態では、相互接続構成25は従来のPCIバスを含んでいる。プロセッサ20は、オペレーティングシステムの制御の下で1つまたは2つ以上のアプリケーションプログラムを処理する。ネットワーク10を利用してデータが転送される特定のコネクションでは、 (i) コンピュータ12(m) がソースコンピュータ12(mS) として動作しているときの転送では、プロセッサは、システムメモリ21内にバッファ(単独には示していない)を設定し、デスティネーションコンピュータ12(mD) となる他のコンピュータに転送されるデータブロックをそこにロードできるようになっている。
【0016】
(ii) コンピュータ12(m) がデスティネーションコンピュータ12(mD) として動作しているときの転送では、プロセッサはシステムメモリ内にバッファ(これも単独には示していない)を設定し、ソースコンピュータ12(mS) となる他のコンピュータから送られてきたデータブロックをそこに置いておくことができる。なお、この一実施形態については、仮想インタフェースアーキテクチャ (Virtual Interface Architecture VIA) 規格バージョン1(1997年12月16日)(Compaq Computer Corp、Intel Corp、およびMicrosoft Corp発行)に記載されている。
【0017】
大容量記憶サブシステムは、一般的に、プロセッサ20によって処理可能な情報を長期間保存しておくことができる。大容量記憶サブシステム22としては、ディスクまたはテープサブシステム、光ディスク記憶デバイス、CD-ROMのように、情報をそこに保管することができ、および/またはそこから情報を取り出すことができるデバイスにすることができる。また、大容量記憶サブシステム22は、オペレータによる取り外しと取り付けが可能である、取り外し可能記憶媒体を利用することが可能であるので、オペレータはプログラムとデータをコンピュータ12(m) にロードし、処理済みデータをそこから取り出すことができる。
【0018】
入出力サブシステム23は、一般に、オペレータとデジタルコンピュータ10とのインタフェースとなっている、オペレータ入出力サブシステムを含んでいる。具体的には、オペレータ入力サブシステムは、例えば、キーボードとマウスデバイスを含み、オペレータは対話方式で情報をデジタルコンピュータ10に入力し、処理させることができる。さらに、オペレータ入力サブシステムは、オペレータがデジタルコンピュータ10を制御できるようにするメカニズムを備えていることもある。オペレータ出力サブシステムは、ビデオディスプレイデバイスのように、デジタルコンピュータ10が、マイクロコンピュータ11の制御の下で、そこから処理結果をオペレータに表示するデバイスを備えることができる。さらに、ハードコピーでオペレータに出力するプリンタを備えることも可能である。
【0019】
ネットワークインタフェース24は、デスティネーションコンピュータ12(mD) として動作する他のコンピュータに転送されるデータをシステムメモリ21から取り出し、それからセルを生成し、生成されたセルを通信リンク13(p) を利用して転送する。さらに、ネットワークインタフェース24は、通信リンク13(p) からセルを受信し、そこからデータを抽出し、そのデータをシステムメモリ21内の該当バッファに転送し、そこに保管しておく。ネットワークインタフェース24は複数のコンポーネントを含み、その中には、受信セクション30、送信セクション31、システムインタフェース回路32およびフロー制御回路33が含まれている。受信セクション30は通信リンク13(p) に接続され、通信リンクから送られてきたセルを受信し、受信したセルからのデータをバッファに置いておき、システムインタフェース回路32と協力して、バッファに保管されたデータを、相互接続構成25を利用してシステムメモリ21に転送し、コンピュータ12(m) によって生成されるアプリケーションによる使用に備えて保管しておく。送信セクション31はシステムインタフェース回路32と協力して、システムメモリ21から相互接続構成25を利用して転送されるデータを取り出し、セルを生成し、そのセルを通信リンク13(p) を利用して伝送する。一実施形態では、システムインタフェース回路32はDMA(direct memory access:ダイレクトメモリアクセス)と同じように動作し、システムメモリ21からデータを取り出し、送信セクション31から送信されるようにすると共に、受信セクション30で受信されたデータをシステムメモリ21に転送し、そこに保管しておく。システムインタフェース回路32も、プロセッサ20から制御情報を受信し、それを種々の制御レジスタ(図示せず)に格納しておくように動作する。制御レジスタは、受信セクション30、送信セクション31、フロー制御回路33のオペレーションだけでなく、システムインタフェース回路32自身のオペレーションも制御している。
【0020】
上述したように、受信セクション30は、コンピュータ12(m) に接続された通信リンク13(p)からセルを受信し、受信したセルからのデータをバッファに置いておき、システムインタフェース回路32と協力して、バッファに保管されたデータをシステムメモリ21に転送し、そこに保管しておくように動作する。受信セクションはいくつかのコンポーネントを含み、その中には、ネットワーク受信インタフェース回路40、受信バッファ41、受信ホスト回路42、受信スケジューラ43および受信仮想回路制御回路44が含まれている。ネットワーク受信インタフェース回路40は"CELLS IN" と名付けられたセルを、コンピュータ12(m) に接続された通信リンク13(p) から受信し、各セルのデータ部分内のデータを受信バッファ41に保管しておく。上述したように、セルはネットワーク10を通るように仮想回線上を伝送されるので、ネットワーク受信インタフェース回路40は、特定の仮想回路に関連するセルからのデータを集約して、受信バッファ41に保管しておくのが一般である。一実施形態では、受信バッファ41に置かれていて、特定の仮想回線に関連するデータはリンクリスト (linked list) に保管され、ネットワーク受信インタフェース回路40が特定の仮想回線に関連するセルを受信すると、そのセルからのデータを受信バッファに保管しておき、そのセルが関連付けられていた仮想回線に関連するリンクリストの最後にそのデータをリンクするようにしている。
【0021】
受信仮想回線制御回路44は、そこを通ってセルがネットワークインタフェース24に送られてきた各仮想回線の情報を保管しておく。そのような情報としては、各々の仮想回線ごとに、送られてきたデータを保管しておくシステムメモリ21内のロケーションを指すポインタと、仮想回線に関連するリンクリストがあれば、そのヘッドとテールのロケーションを指すポインタと、仮想回線に関連していて、そのデータが現在受信バッファ41に置かれている受信セルの数を示しているバッファ内セル数の値とが含まれている。受信バッファ41が特定の仮想回線に関連するセルからの、どのデータも保管していない間は、受信仮想回線制御回路44は仮想回線にリンクリストが存在しないことを示しているが、仮想回線に関連する少なくとも1つのセルからのデータが存在する間は、受信仮想回線制御回路44は仮想回線のリンクリスト情報を含んでいる。以上から理解されるように、受信バッファ41が特定の仮想回線に関連する1つのセルだけからのデータを保管しているときは、ヘッドポインタとテールポインタは同じロケーションを指している。つまり、そのデータを保管している受信バッファ41内のロケーションを指している。受信セルからのデータがネットワーク受信インタフェース回路40にあって、そのデータが受信バッファ41に保管されているときは、ネットワーク受信インタフェース回路40は、受信仮想回線制御回路44内の情報を使用して、仮想回線にリンクリストが存在するかどうかを判断することができる。受信仮想回線制御回路44が仮想回線にリンクリストが存在しないことを示している場合は、ネットワーク受信インタフェース回路40は、セルからのデータが保管されていた受信バッファ41内のロケーションを指すポインタを、リンクリストのヘッドとテールの両ポインタとして受信仮想回線制御回路44にロードし、バッファ内セル数の値をインクリメントすることができる。この条件では、バッファ内セル数の値は「1」になる。他方、リンクリストが存在することを受信仮想回線制御回路44が示していれば、ネットワーク受信インタフェース回路40はストアしたばかりのデータを、仮想回線に関連するリンクリストのテールにリンクし、仮想回線のほうは受信セルと関連付けられる。さらに、ネットワーク受信インタフェース回路40は、受信仮想回線制御回路44内のテールポインタを、保管したばかりのデータのロケーションをリンクリストの新しいテールとして指すように更新し、バッファ内セル数の値をインクリメントする。
【0022】
受信ホスト42はバッファ内データを受信バッファ41から取り出し、システムインタフェース回路31と協力して、そのバッファ内データを、相互接続構成25を利用してシステムメモリ21に転送して保管しておく。受信ホスト42は受信仮想回線制御回路44内の仮想回線情報も利用して、各特定仮想回線に関連していて、保管のためにシステムメモリ21に転送されるデータが、受信バッファ41内のどのロケーションに置かれているかを判別する。具体的に説明すると、受信ホスト42が特定の仮想回線の受信バッファ41からデータを取り出して、システムメモリ21に転送しようとするとき、その受信ホスト42は、仮想回線のリンクリストのヘッドロケーションを指しているヘッドポインタを利用することができる。一実施形態では、ネットワークインタフェース24は、1つのセルまたは複数セルのブロックからのバッファ内データを、相互接続構成21を利用して一回の転送でシステムメモリ21に転送することができる。いずれの場合も、受信ホスト42は、セルに関連する受信バッファからのデータを、そのセルの仮想回線に関連するリンクリストの先頭から取り出したあと、受信回線制御回路44によって維持されている仮想回線のヘッドポインタを、仮想回線のデータが保管されている次のロケーションがリンクリストの受信バッファ41にあれば、そのロケーションを指すように更新し、仮想回線のバッファ内セル数の値をデクリメントする。取り出したばかりのデータがその仮想回線の最後のデータであれば、受信ホスト42はバッファ内セル数の値をデクリメントすることにより0とし、仮想回線に関連するリンクリストが受信バッファ41に存在しないことを示すことができる。
【0023】
受信スケジューラ43は、ネットワーク受信インタフェース回路40が受信ホスト42と通信して、受信ホスト42によって実行される上述のオペレーションのスケジューリングを制御できるようにする。また、受信スケジューラ43は、プロセッサ20が受信ホスト42と通信して、コンピュータ12(m) によって処理されるアプリケーションプログラムの制御の下で、受信ホスト42によって実行される、ある種のオペレーションを制御し、例えば、それぞれの仮想回線に関連するセルに入って受信されたデータがシステムメモリ21内のどのバッファに保管されるかを、受信ホスト42に通知できるようにする。プロセッサ20、ネットワーク受信インタフェース回路40および受信ホスト42に関連して受信スケジューラ43によって実行されるオペレーションは、図5を参照して以下に説明されている。
【0024】
上述したように、送信セクション31はシステムインタフェース回路32と協力して、相互接続構成25を利用してシステムメモリ21から送信されるデータを取り出し、セルを生成し、そのセルを通信リンク13(p) 上を伝送する。送信セクション31はいくつかのコンポーネントを含み、その中には、送信ホスト50、送信バッファ51、ネットワーク送信インタフェース回路52、送信スケジューラ53、および送信仮想回線制御回路54が含まれている。
【0025】
送信ホスト50は、システムインタフェース回路31と協力して、通信リンク13(p) 上をセルに入れて送信されるデータを、システムメモリ21から相互接続構成25を利用して取り出し、それを(つまり、取り出したデータを)送信バッファ51に置いておく。送信仮想回線制御回路54は各仮想回線の情報を保管するが、この情報の中には、送信されるデータがそれぞれの仮想回線に関して取り出されるシステムメモリ21内のロケーションを指すポインタと、仮想回線ステータス(状況)情報が含まれている。受信バッファ41と同じように、送信バッファ51は、特定の仮想回線に関連するセルに入れて送信されるデータを集約してリンクリストに入れておき、送信仮想回線制御回路54は、リンクリストのヘッドポインタとテールポインタ、および送信バッファが送信されるデータを保管しようとしている各仮想回線のバッファ内セル数の値も保管している。従って、送信ホスト50が転送されようとするデータで、特定の仮想回線に関連付けられていているデータを送信バッファ51に保管するとき、送信仮想回線制御回路54内の仮想回線の情報にアクセスし、仮想回線に関連する送信バッファにリンクリストが存在するかどうかを判断する。そのようなリンクリストが存在しないと送信ホスト50が判断したときは、つまり、仮想回線に関連するバッファ内セル数の値が「ゼロ」の値になっているときは、その送信ホスト50は、データが保管されている送信バッファ51内のロケーションを指すポインタが、仮想回線のヘッドとテールの両ポインタとなるようにし、さらに送信仮想回線制御回路54内のバッファ内セル数の値をインクリメントすることができる。他方、送信バッファ51に保管したばかりのデータが送信される仮想回線にリンクリストが存在すると送信ホスト50が判断したときは、その送信ホスト50は、受信仮想回線制御回路44によって維持されている仮想回線のテールポインタを、データが保管されていた送信バッファ51内のロケーションを指すように更新し、仮想回線のバッファ内セル数の値をインクリメントする。
【0026】
ネットワーク送信インタフェース回路52は送信バッファ51からデータを取り出し、"CELLS OUT" と名付けたセルをそのデータから生成し、コンピュータ12(m) に接続された通信リンク13(p) を利用して送信する。このオペレーションでは、ネットワーク送信インタフェース回路52が特定の仮想回線に関連するデータを送信バッファ51から取り出すとき、仮想回線に関連するリンクリストの先頭からデータを取り出し、このオペレーションでは、その特定仮想回線の送信仮想回線制御回路54に保管されているリンクリスト情報、具体的にはヘッドポインタを使用する。ネットワーク送信インタフェース回路52がセルに関連する送信バッファ51からのデータを、そのセルの仮想回線に関連するリンクリストの先頭から取り出したあと、このネットワーク送信インタフェース回路52は送信仮想回線制御回路54によって維持されている仮想回線のヘッドポインタを、データが仮想回線に関して保管されている次のロケーションがリンクリストの受信バッファ41にあれば、そのロケーションを指すように更新し、仮想回線のバッファ内セル数の値をデクリメントする。取り出したばかりのデータが仮想回線の最後のデータであれば、ネットワーク送信インタフェース回路52は、バッファ内セル数の値をゼロにデクリメントすることにより、仮想回線に関連するリンクリストが送信バッファ51にないことを示すことができる。
【0027】
送信スケジューラ53は、送信ホスト50がネットワーク送信インタフェース回路52と通信して、ネットワーク送信インタフェース回路52によって実行される上述のオペレーションのスケジューリングを制御できるようにする。また、送信スケジューラ53は、プロセッサ20が送信ホスト50と通信して、コンピュータ12(m) によって処理されるアプリケーションプログラムの制御の下で送信ホスト50による、ある種のオペレーションを制御し、例えば、それぞれの仮想回線に関連するセルに入れて送信されるデータが、システムメモリ21内のどのバッファに保管されているかを送信ホスト50に通知できるようにする。送信スケジューラ53に関連してプロセッサ20、送信ホスト50およびネットワーク送信インタフェース回路52によって実行されるオペレーションは、図6を参照して以下に説明されている。
【0028】
本発明の一態様によれば、フロー制御回路33は、以下に関連するいくつかのオペレーションを実行する。
【0029】
(i) 送信セクション31によるセルの伝送レートを制御する。
【0030】
(ii) 送信セクションが仮想回線フロー制御メッセージとリンクフロー制御メッセージを、必要に応じて通信リンク13(p) を利用して送信できるようにする。
【0031】
上記 (i) に関しては、フロー制御回路33は、
(a) セットされた仮想回線フロー制御メッセージを受信したあと、クリアされた仮想回線フロー制御メッセージが受信されるまで送信セクション31が特定の仮想回線に関連するセルを送信することを禁止する。セットされた仮想回線フロー制御メッセージを受信したあと、フロー制御回路33は、送信ホスト50がシステムメモリ21からデータを取り出し、そのデータをその仮想回線を利用して送信することを禁止する(一実施形態では、ネットワーク送信インタフェース52は、以前に取り出されたデータで、送信バッファ51に置かれているデータのセルの送信を続けることが可能になっている)。
【0032】
(b) セットされたリンクフロー制御メッセージを受信したあと、クリアされたリンクフロー制御メッセージが受信されるまでネットワーク送信インタフェース52がセルを通信リンク13(p) を利用して送信することを禁止する。
【0033】
上記 (ii) に関しては、フロー制御回路33は、ネットワーク送信インタフェース52によって送信されるセットおよびクリアされた仮想回線とリンクフロー制御メッセージを、受信バッファ41に保管されている総データ量(以下では、「総受信バッファ占有レベル(total receive buffer occupancy level)」と呼ぶことにする)と特定の仮想回線の受信バッファ41に保管されているデータ量(以下では、仮想回線ごとの受信バッファ占有レベル(per-virtual circuit receive buffer occupancy level))と呼ぶことにする)の両者に基づいて生成し、フロー制御回路33は、受信仮想回路制御回路44内の情報に基づいてデータ量を判断することができる。フロー制御回路33によって実行されるある種のオペレーションは、図4に示すフロー図を参照して以下に説明されている。一般的に、フロー制御回路33は4つのステート(状態)で動作するが、その4ステートとは、非フロー制御(non-flow controlled) ステート、通常輻輳(normal congestion) ステート、中輻輳(medium congestion) ステート、および高輻輳(high congestion) ステートである。これらのステートは、種々のしきい値を基準にした総受信バッファ占有レベルによって判断される。従って、フロー制御回路33は、総受信バッファ占有レベルが相対的に低い「非フロー制御」しきい値以下にあれば、非フロー制御ステートで動作することになる。他方、フロー制御回路33は、総受信バッファ占有レベルが非フロー制御しきい値と若干高い「輻輳モード」しきい値の間にあれば、通常輻輳ステートで動作し、総受信バッファ占有レベルが輻輳モードしきい値と相対的に高い「リンクモード」しきい値の間にあれば、中輻輳ステートで動作し、総受信バッファ占有レベルがリンクモードしきい値以上であれば、高輻輳ステートで動作することになる。フロー制御回路33は、
【0034】
(a) 非フロー制御ステートで動作しているときは、ネットワーク送信インタフェース回路52がセットされた仮想回線またはリンクフロー制御メッセージを送信するのを禁止し、仮想回線ID順のラウンドロビン方式で、セットされた仮想回線フロー制御ステートにあるこれら仮想回線を、クリアされた仮想回線フロー制御ステートにし、ネットワーク送信インタフェース回路52がそのためにクリアされた仮想回線フロー制御メッセージを送信することを可能にする。
【0035】
(b) 通常輻輳ステートで動作しているときは、
(I) その仮想回線ごとの受信バッファ占有レベルが選択した仮想回線ごとの受信バッファフロー制御しきい値以上にある各仮想回線については、仮想回線をセットされた仮想回線フロー制御ステートにし、ネットワーク送信インタフェース回路52がそのためにセットされた仮想回線フロー制御メッセージを送信することを可能にする。
(II) セットされた仮想回線フロー制御ステートにあるが、その仮想回線ごとの受信バッファ占有レベルが選択した仮想回線ごとの受信バッファフロー制御しきい値以下にある仮想回線については、仮想回線ID順のラウンドロビン方式で、仮想回線をクリアされた仮想回線フロー制御ステートにし、ネットワーク送信インタフェース回路52がそのためにクリアされた仮想回線フロー制御メッセージを送信するのを可能にする。
【0036】
(c) 中輻輳ステートで動作しているときは、受信セクションがセルを受信するときの各仮想回線をセットされた仮想回線フロー制御モードにし、ネットワーク送信インタフェース回路52がそのためにセットされた仮想回線フロー制御メッセージを送信するのを可能にする。
【0037】
(d) 高輻輳ステートで動作しているときは、ネットワーク送信インタフェース回路52がセットされたリンクフロー制御メッセージを送信することを可能にする。
【0038】
フロー制御回路33が高輻輳ステートから他のステートのいずれかにシーケンスしたときは、ネットワーク送信インタフェース回路52がクリアされたリンクフロー制御メッセージを送信することを可能にする。通常輻輳ステートにあるとき、セットされた仮想回線フロー制御ステートにあるが、その仮想回線ごとの受信バッファ占有レベルが選択した仮想回線ごとの受信バッファフロー制御しきい値以下にある仮想回線を、仮想回線ID順のラウンドロビン方式でクリアされた仮想回線フロー制御ステートにシーケンスするようにすると、フロー制御回路33は、仮想回線間である程度の公平性が得られるようにする。
【0039】
クリアされた仮想回線とリンクフロー制御メッセージを生成し、送信するかどうかを判断するためにフロー制御回路33によって実行されるオペレーションは、図4に示すフローチャートを参照して以下に説明されている。図4に示すように、フロー制御回路33は、まず、仮想回線ポインタを設定し、初期化し(ステップ100)、このポインタは、仮想回線をセットされた仮想回線フロー制御ステートからクリアされた仮想回線フロー制御ステートに仮想回線ID順のラウンドロビン方式でシーケンスするとき使用される。そのあと、フロー制御回路33は、セットされた仮想回線フロー制御ステートにある仮想回線があるかどうかを判断する(ステップ101)。フロー制御回路33がステップ101で否定の判断をしたときは、セットされた仮想回線フロー制御ステートからクリアされた仮想回線フロー制御ステートにシーケンスする必要のある仮想回線がないために、フロー制御回路33はステップ101に戻ることになる。
【0040】
他方、フロー制御回路33がステップ101で肯定の判断をしたときは、セットされた仮想回線フロー制御ステートからクリアされた仮想回線フロー制御ステートにシーケンスする必要のある仮想回線があるために、フロー制御回路33は、中または高輻輳ステートで動作しているかどうかを判断する(ステップ102)。フロー制御回路33が高または中輻輳ステートで動作している間は、どの仮想回線もセットされた仮想回線フロー制御ステートからクリアされた仮想回線フロー制御ステートにシーケンスすることがないので、フロー制御回路がステップ102で肯定の判断をしたときは、ステップ101に戻ることになる。
【0041】
他方、フロー制御回路33がステップ102で否定の判断をしたときは、非フロー制御ステートまたは通常輻輳ステートで動作しているので、その仮想回線ごとの受信バッファ占有レベルが選択した仮想回線毎の受信バッファフロー制御しきい値以下にある仮想回線を、仮想回線ID順のラウンドロビン方式でクリアされた仮想回線フロー制御ステートにシーケンスし、ネットワーク送信インタフェース回路52がクリアされた仮想回線フロー制御メッセージを、それに対し送信することを可能にする。従って、フロー制御回路33がステップ102で否定の判断をしたときは、ステップ100で設定された仮想回線ポインタを、セットされた仮想回線フロー制御ステートにある、次の仮想回線を指すようにインクリメントする(ステップ103)。そのあと、フロー制御回路33は非フロー制御ステートで動作しているかどうかを判断し(ステップ104)、そうであれば、仮想回線ポインタが指している仮想回線をクリアされた仮想回線フロー制御ステートに置く(ステップ105)、ネットワーク送信インタフェース42がクリアされた仮想回線フロー制御メッセージを、それに対して送信することを可能にする(ステップ106)。そのあと、フロー制御回路33はステップ101に戻る。
【0042】
ステップ104に戻って説明すると、フロー制御回路33が非フロー制御ステートで動作していないと、そのステップで判断したときは、通常輻輳ステートで動作している。従って、フロー制御回路33は、仮想回線ポインタが指している仮想回線は仮想回線ごとの受信バッファ占有レベルが、選択した仮想回線ごとの受信バッファ占有レベルしきい値以下にあるかどうかを判断することになる(ステップ107)。フロー制御回路33がそのステップ107で肯定の判断をしたときは、ステップ105にシーケンスして、仮想回線ポインタが指している仮想回線をクリアされた仮想回線フロー制御ステートに置き、そのあと、ネットワーク送信インタフェース42がクリアされた仮想回線フロー制御メッセージを、それに対して送信することを可能にする(ステップ106)。他方、フロー制御回路33がステップ107で否定の判断をしたときは、仮想回線ポインタが指している仮想回線の仮想回線ごとのバッファ占有レベルは選択したしきい値以上であるので、フロー制御回路33は、仮想回線をクリアされた仮想回線フロー制御ステートに置くことなくステップ101に戻る。
【0043】
図2に戻って説明すると、本発明の別の態様によれば、上述したように、受信スケジューラ43は、ネットワーク受信インタフェース回路40とプロセッサが受信ホスト42と通信して、受信ホスト42によって実行される種々のオペレーションのスケジューリングを制御することを可能にする。受信スケジューラ43は、「ドアベル(doorbell)」タスク、高優先度データ転送タスク、およびメッセージ終わりデータ転送タスクといった、いくつかの高優先度クラスのタスクと、低優先度データ転送タスクといった、1つの低優先度クラスのタスクを用意している。一実施形態では、特定の仮想回線に関連するプロセッサ20(図2)は、特定の仮想回線のために利用可能な制御情報があるとき、「ドアベル」メカニズムを利用して、受信ホスト42または送信ホスト50にシステムインタフェース32を通してそのことを選択的に通知する。ドアベルメカニズムは、受信ホスト42または送信ホスト50の各々のためにワークキュー (work queue)(単独には示されていない)を選択的に用意し、プロセッサ20は、システムメモリ21に保管されている、それぞれの仮想回線の制御ブロック(これも単独には示されていない)を指すポインタをそのワークキューにロードする。各制御ブロック(前記のVIA規格では「デスクリプタ(descriptor)」と呼ばれている)は、仮想回線のための種々タイプのコマンドと制御情報を含んでいる。この中には、例えば、ネットワークインタフェース24がそのデスティネーションとなっている仮想回線に関しては、仮想回線の受信セクション30によって受信されたメッセージのデータが保管されるシステムメモリ21内のそれぞれのバッファを指している、1つまたは複数のポインタが含まれている。また、ネットワークインタフェース24がそのソースとなっている仮想回線に関しては、仮想回線上を伝送されるデータを収容しているシステムメモリ21内のそれぞれのバッファを指している、1つまたは複数のポインタが含まれている。プロセッサ20は、制御ブロックを指しているポインタを、仮想回線に関連するワークキューにロードすることによって、受信ホスト42が仮想回線に関連するドアベルタスクを実行できるようにする。特定の仮想回線に関連するドアベルタスクの実行中に、受信ホスト42はワークキューに保管されている最初のポインタが指している制御ブロックからコマンドと制御情報を取り出し、その処理を行う。受信ホスト42は、カレントドアベルタスクに関して実行される追加作業があれば、仮想回線に関連するドアベルタスクを使用可能にすることもできる。さらに、受信ホスト42は、セットされたメッセージ終わりフラグに関連する受信バッファ41からデータを仮想回線に対して転送していた場合、および仮想回線に関連するワークキューに後続制御ブロックを指すポインタが保管されている場合、仮想回線に関連するドアベルタスクを使用可能にすることができる。このようにすると、受信ホスト42は、例えば、システムメモリ21内の別のバッファを指しているポインタを取得し、そのバッファに仮想回線のデータを保管しておくことができる。
【0044】
仮想回線に関連する高優先度データ転送タスクを使用すると、受信ホスト42は、仮想回線のデータを受信バッファ41からシステムメモリ21に高優先度順に転送することができる。一般的に、受信ホスト42は、あらかじめ定めたデータ量がその仮想回線の受信バッファ41に累積されると、仮想回線のデータをシステムメモリ21に転送する。一実施形態では、このあらかじめ定めた量は、受信ホスト42が高優先度データ転送タスクに従ってデータを転送する場合、データブロックが相互接続構成25上を効率よく転送されるように選択されている。高優先度データ転送タスクは、受信ホスト42自身によって使用可能にすることができるが、ネットワーク受信インタフェース40によって使用可能にされるのが一般的である。ネットワーク受信インタフェース40が仮想回線に関連する高優先度データ転送タスクを使用可能にできるのは、受信バッファ41内の仮想回線のリンクリストにセルからのデータをロードするとき、リンクリスト内のデータ量があらかじめ定めたしきい値にあるか、それ以上になった場合である。さらに、受信ホスト42は、仮想回線に対していずれかのタスクを実行したあと、受信バッファ41内の仮想回線のリンクリストにデータがある場合、仮想回線に関連する高優先度データ転送タスクを使用可能にすることができる。
【0045】
仮想回線に関連するメッセージ終わりデータ転送タスクを使用すると、受信ホスト42は、仮想回線に対してセルが受信され、そのセルがメッセージの最後のセルであるとき、仮想回線のデータを受信バッファ41からシステムメモリに高優先度順に転送することができる。メッセージ終わりデータ転送タスクは、受信バッファ41に累積されたデータ量が高優先度データ転送タスクを使用するのに十分でない場合でも、メッセージ終わりに関するデータが確実にシステムメモリ21に転送されるようにする。ネットワーク受信インタフェース40は、受信バッファ41内の仮想回線のリンクリストにセルからのデータをロードするとき、セルがセットされたメッセージ終わりフラグを含んでいた場合、仮想回線に関連するメッセージ終わりデータ転送タスクを使用可能にすることができる。さらに、受信ホスト42は、仮想回線に対していずれかのタスクを実行したあと、受信バッファ41に保管されている仮想回線のデータがセットされたメッセージ終わりフラグを含んでいたセルからのものであった場合、仮想回線に関連する高優先度データ転送タスクを使用可能にすることができる。
【0046】
最後に、仮想回線に関連する低優先度タスクを使用すると、受信ホストは、仮想回線のデータを受信バッファからシステムメモリ21に低優先度順に転送することができる。任意の仮想回線に対して実行すべき高優先度タスクが受信ホスト42にないときは、受信ホストは低優先度データ転送タスクを実行して、データを仮想回線のシステムメモリに転送する。以上から理解されるように、受信ホスト42が仮想回線に対して低優先度データ転送タスクを使用して、しばらくの間データを転送していないと、仮想回線に対する十分なデータ量が受信バッファ41に累積されるので、高優先度データ転送タスクを使用した転送が保証されることになる。ネットワーク受信インタフェース40は、受信バッファ41内の仮想回線のリンクリストにセルからのデータをロードするとき、仮想回線に関連する低優先度データ転送タスクを使用可能にすることができる。
【0047】
一般的に、受信スケジューラ43は、少なくとも1つのタスクが使用可能にされている仮想回線の中で、受信ホスト42がどの仮想回線に対してタスクを実行すべきかを、受信ホスト42に知らせる。受信スケジューラ43は、どの仮想回線に対して高優先度クラスのタスクが使用可能であるかを、仮想回線ID順のラウンドロビン方式で知らせる。どの仮想回線に対しても高優先度クラスのタスクが使用可能になっていなければ、受信スケジューラ43は、どの仮想回線に対して低優先度クラスのタスクがスケジュールされているかを、この場合も、仮想回線ID順のラウンドロビン方式で知らせる。いずれの場合も、受信スケジューラ43は、どの仮想回線に対してタスクが実行されるかを、そのIDで受信ホスト42に知らせるようになっている。受信ホスト42側は、通知された仮想回線に対して高優先度クラスのどのタスクを実行すべきかを、受信仮想回線制御回路43に維持されているその仮想回線のカレントステートに基づいて判断し、そのタスクを実行することになる。仮想回線に対して実行すべき高優先度クラスのタスクがないと受信ホスト42が判断したときは、受信ホストは低優先度クラスのタスクを実行することになる。受信ホスト42が通知された仮想回線に対して少なくとも1つのタスクを実行したあと、受信ホスト42はそのことを受信スケジューラに通知し、さらに、仮想回線の、そのときのカレントステート(これは、タスクが実行されたあとの仮想回線のステートである)に応じて、その仮想回線に対して後続タスクを使用可能にすることができる。受信スケジューラ43は、受信ホスト42が通知された仮想回線に対してタスクを実行したとの通知を受信ホスト42から受け取ると、受信スケジューラ43は、タスクが使用可能にされる次の仮想回線を仮想回線ID順に通知し、そのあと上述したオペレーションが繰り返される。
【0048】
上述したように、受信ホスト42は、どの仮想回線に対してタスクを実行すべきかをそのIDで通知を受けたあと、どのタスクを実行すべきかを、通知された仮想回線のカレントステートから判断する。例えば、転送すべき仮想回線のデータが受信バッファ42にあると受信ホスト42が判断したとき、データを保管しておくシステムメモリ21内のバッファを指すポインタをもっていなければ、受信ホスト42は、ポインタを取り出すためにドアベルタスクを実行する。そのあと、受信ホスト42はドアベルタスク、高優先度データ転送タスク、メッセージ終わりデータ転送タスクのいずれかを、仮想回線のバッファに保管されているデータが、メッセージ終わりフラグがセットされていたセルと関連しているかどうかに応じて使用可能にする。他方、どの仮想回線に対してタスクを実行すべきかをそのIDで通知を受けたあと、受信ホストがデータを保管しておくシステムメモリ21内のバッファへのポインタをもっていれば、受信ホストは1ブロックまでのデータを、システムインタフェース32から相互接続構成25を経由してシステムメモリ21に転送することを開始できる。そのあと、受信ホスト42はドアベルタスク、高優先度データ転送タスク、メッセージ終わりデータ転送タスクのいずれかを、仮想回線のバッファに保管されたデータが、メッセージ終わりフラグがセットされていたセルと関連があるかどうかに応じて使用可能にすることができるが、そうしなくてもよい。
【0049】
図5は、本発明の一実施形態で使用される受信スケジューラ43の機能ブロック図を示す。図5に示すように、受信スケジューラ43は、高優先度データ転送メモリ80(1)、ドアベルメモリ80(2)、メッセージ終わりデータメモリ80(3) および低優先度データ転送メモリ80(4) を含む複数のメモリ、メモリアクセスアービタ (memory access arbiter) 81、タスクコントロール82、および複数のマルチプレクサ83と84を搭載している。メモリ80(1) 乃至80(4) の各々は一連のビットを含み、ネットワークインタフェース24がそのデスティネーションとなっている仮想回線ごとに1ビットが割り当てられている。一実施形態では、仮想回線IDは10ビットであるので、各メモリ80(1) 乃至80(4) は1024(つまり、210)ビットからなり、各ビットは、仮想回線が特定の符号化用に設定されているかどうかに関係なく、仮想回線IDの1つの取り得るバイナリ符号化と関連付けられている。この実施形態では、各メモリ内のビット(i)(インデックス"i" はゼロから1023までの範囲)は、ネットワークインタフェース24がデスティネーションとなっているのときの、そのID用に仮想回線が設定されているかどうかに関係なく、ID "i" をもつ仮想回線と関連付けられている。メモリ80(1) 乃至80(4)内の「i番目」ビットがセットされたときは、関連タスク(つまり、高優先度データ転送タスク、ドアベルタスク、メッセージ終わりデータ転送タスクまたは低優先度データ転送タスク)は「i番目」仮想回線に対して使用可能にされる。
【0050】
タスクコントロール82はビットの状態を表す信号をメモリから受信し、RCV_HOST_CTRL受信ホスト制御信号のうち該当する信号を通して、どの仮想回線に対して受信ホスト42にタスクを実行させるかを通知する。さらに、タスクコントロール82は、メモリ80(1) 乃至80(4)の1つの中の、通知された仮想回線に関連するビットのリセットを行う。タスクコントロール82がどの仮想回路であるかを、メモリ80(1) 乃至80(3)の1つの中の、仮想回線のビットがセットされていることに基づいて通知したときは、タスクコントロール82は、メモリ80(1) 乃至80(3)の1つの中の、仮想回線のビットがリセットされるようにするが、このリセットはメモリ80(1) 乃至80(3)の間で、ラウンドロビン方式で行われる。タスクコントロール82は、HI_PRI_TASK_RST_REQ高優先度タスクリセット要求信号、DOORBELL_TASK_RST_REQドアベルタスクリセット要求信号、LOW_PRI_TASK_RST_REQ低優先度タスクリセット要求信号のうち該当する信号をアサートすることによって、このオペレーションを使用可能にし、その信号はマルチプレクサ83によってマルチプレクサ84の一方の入力に結合される。マルチプレクサ84の方は、この信号をSEL_TASK_RST_REQ選択タスクリセット要求信号としてメモリアクセスアービタ81に結合する。アービタがSEL_TASK_RST_REQ信号を選択したときは、メモリ80(1) 乃至80(3)のうちの、該当メモリの仮想回線のビットがリセットされる。
【0051】
他方、タスクコントロール82がどの仮想回線であるかを、メモリ80(4) 内の仮想回線のビットがセットされていることに基づいて通知したときは(これは、受信ホスト42に低優先度データ転送タスクを実行させる場合である)、タスクコントロール82は、メモリ80(4) 内の仮想回線のビットがリセットされるようにする。タスクコントロール82は、LOW_PRI_TASK_RST_REQ低優先度タスクリセット要求信号をアサートすることによって、このオペレーションを使用可能にし、この信号はマルチプレクサ84の一方の入力に結合される。マルチプレクサ84の方は、信号をSEL_TASK_RST_REQ選択タスクリセット要求信号としてメモリアクセスアービタ81に結合する。アービタがSEL_TASK_RST_REQ信号を選択したときは、メモリ80(4) の仮想回線のビットがリセットされる。
【0052】
システムインタフェース32を経由するプロセッサ20からのドアベル要求に応答して、あるいはネットワーク受信インタフェース40または受信ホスト42からのドアベル要求に応答してメモリにアクセスして、メモリ内のビットのセットを容易にすることも、メモリアクセスアービタ81によって制御される。ネットワーク受信インタフェース40とシステムインタフェース32からは、特定の仮想回線に対する、それぞれのNWK_RCV_INTF_REQネットワーク受信インタフェース、SYS_INTF_REQシステムインタフェース、およびRCV_VC_CTRL_REQ受信仮想回線制御セット要求をメモリアクセスアービタ81に対して出して、その特定仮想回線に関連するメモリ80(1) 乃至80(4) の1つの中のビットをセットする。メモリアクセスアービタ81がNWK_RCV_INTF_REQ、SYS_INTF_REQまたはRCV_VC_CTRL_REQ要求を選択したときは、メモリ80(1) 乃至80(4)の1つの中のビットがその特定仮想回線に対してセットされる。一般的に、ドアベルメモリ80(2) 内のビットは、システムインタフェース32からのSYS_INTF_REQに応答してセットされ、システムインタフェース32のほうは、プロセッサ20からの要求に応答してドアベルタスクを使用可能にする。他方、高優先度データ転送メモリ80(1)、メッセージ終わりデータ転送メモリ80(3) または低優先度データ転送メモリ80(4) 内のビットは、一般的には、ネットワーク受信インタフェース40が特定仮想回線に関連する、1つまたは複数のセルからのデータを受信バッファ41にロードしたあとで、ネットワーク受信インタフェース40からのNWK_RCV_INTF_REQ要求に応答してセットされる。さらに、メモリ80(1) 乃至80(3) のいずれかにあるビットは、受信ホスト42からのRCV_VC_CTRL_SET_REQ要求に応答してセットされ、高優先度データ転送タスク、ドアベルタスクまたはメッセージ終わりデータ転送タスクを、それぞれ使用可能にすることができる。
【0053】
以上から理解されるように、受信スケジューラ43は仮想回線に関して仮想回線ID順のラウンドロビン方式でタスクを実行させるようにするので、受信スケジューラは、それぞれの仮想回線の間である程度の公平性を保つようにしている。さらに、タスクは、ネットワークインタフェース24によって提供される種々のリソースが正しく使用されるような形で実行される。例えば、受信スケジューラ43は、あらかじめ定めた最小データ量が転送ために受信されていない限り、受信ホスト42が特定の仮想回線に関連するシステムメモリにデータを転送することを禁止しているのが通常で、このようにして相互接続構成25が効率よく使用されるようにしている(これは、低優先度転送タスクの場合である)。しかし、受信バッファ41が、少なくともあらかじめ定めた最小データ量を保管している場合は、受信スケジューラ43は、仮想回線に関連するデータがシステムメモリ21に転送されることを可能にする(これは高優先度転送タスクの場合である)。さらに、受信バッファ41が仮想回線を利用したメッセージ終わり転送に関連するデータを保管している場合は、その仮想回線に対して受信された追加データがないか、あるいはその仮想回線に対して後続データが受信されるまで相対的に長い遅延があるために、受信スケジューラ43は仮想回線に関連するデータがシステムメモリ21に転送されることを可能にする(これも、高優先度転送タスクの場合である)。最後に、受信ホストに実行させる他のタスクがないときは、受信スケジューラ43は受信ホスト42が低優先度転送を実行することを可能にする。
【0054】
上述したように、送信スケジューラ53は送信ホスト50がシステムインタフェース32およびネットワーク送信インタフェース回路52と通信して、ネットワーク送信インタフェース回路52によって実行される、上述のオペレーションのスケジューリングを制御することを可能にする。また、送信スケジューラ53は、プロセッサ20が送信ホスト50と通信して、コンピュータ12(m) によって処理されるアプリケーションプログラムの制御の下で送信ホスト50によるある種のオペレーションを制御することも可能にし、例えば、それぞれの仮想回線に関連するセルに入って送信されるデータが、システムメモリ21内のどのロケーションに保管されているかを送信ホスト50に通知するようにする。
【0055】
一般的に、送信スケジューラ53は送信ホスト50によるデータの取り出しを制御し、ネットワーク送信インタフェース52によるその後の送信に備えてそのデータを送信バッファ51に保管しておくようにする。さらに、上述したように、一実施形態では、特定の仮想回線に関連するプロセッサ20(図2)は「ドアベル」メカニズムを利用して、特定の仮想回線に対して利用可能である制御情報があるとき、そのことを受信ホスト42または送信ホスト50に選択的に通知することにより、送信ホスト50がシステムメモリ21内の仮想回線の制御ブロック(個別には示されていない)から仮想回線の情報を選択的に取り出すことを可能にする。特定の仮想回線に関連するドアベルタスクの実行中に、送信ホスト50は、受信ホスト42に関して上述したのと同じように、仮想回線の制御ブロックからコマンドと制御情報を取り出し、その処理を行う。優先度順に、送信スケジューラ53は送信ホスト50が次のことを行うことを可能にする。
【0056】
(i) 最高優先度順では、あらかじめ定めた数の仮想回線に関連するドアベルタスクを処理すること。この処理はドアベルタスクを実行しようとする仮想回線に対して仮想回線ID順のラウンドロビン方式で行われる。
【0057】
(ii) 中間優先度順では、システムメモリからデータを選択的に取り出し、送信バッファ51に保管しておくこと。この取り出しは、セットされた仮想回線フロー制御モードになっていないか、あるいはそうでなくても、あらかじめ定めた最大数の仮想回線に関して伝送が制限されない仮想回線に対して仮想回線ID順のラウンドロビン方式で行われる。
【0058】
(iii) 最低優先度順では、システムメモリからデータを選択に取り出し、送信バッファ51に保管しておくこと。この取り出しは、伝送が制限されていて、セットされた仮想回線フロー制御モードになっていない仮想回線に対して仮想回線ID順のラウンドロビン方式で行われる。
上記項目 (iii) に関して、伝送が制限されている仮想回線としては、伝送が特定の伝送レートに制限されている仮想回線がある。受信スケジューラ43の場合と同じように、送信スケジューラ53は特定の優先度レベル内にある仮想回線に関して仮想回線ID順のラウンドロビン方式で動作するので、送信スケジューラはその優先度レベルでオペレーションが実行される、それぞれの仮想回線の間で、ある程度の公平性を保証している。さらに、送信スケジューラ53は、優先度レベル内のあらかじめ定めた最大数の仮想回線に関連するオペレーションを実行したあと、次に低い優先度レベルに移るので、送信スケジューラは異なる優先度レベルにある仮想回線の間で、ある程度の公平性を保証している。
【0059】
送信スケジューラ53の機能ブロック図は図6に示されている。図6に示すように、送信スケジューラ53はドアベルメモリ90(1)、2つの高優先度メモリ90(2) と90(3)、低優先度メモリ90(4)、および送信タスクコントロール91を含んでいる。メモリの各々は、それぞれのタスクを実行しようとする仮想回線のIDを保管しており、このIDは送信タスクコントロール91が使用して、送信ホストがそれぞれのタスクを実行できるようにする。メモリ90(1) 乃至90(4) の各々は一連のビットを含み、ネットワークインタフェース24がそのソースとなっている仮想回線ごとに1ビットが割り当てられている。一実施形態では、仮想回線IDは10ビットになっているので、各メモリ90(1) 乃至90(4)は1024(つまり、210)ビットを含み、各ビットは、仮想回線が特定の符号化用に設定されていたかどうかに関係なく、仮想回線IDの1つの取り得るバイナリ符号化と関連付けられている。この実施形態では、各メモリ内のビット"i"(インデックス"i" はゼロから1023までの範囲)は、ネットワークインタフェース24がそのソースとなっている、そのID用に仮想回線が設定されていたかどうかに関係なく、ID "i" をもつ仮想回線と関連付けられている。
【0060】
ドアベルメモリ90(1) は、ドアベルタスクが処理されようとする仮想回線のIDを保管している。受信スケジューラ43側のドアベルメモリ80(1) の場合と同じように、仮想回線と関連付けられている、送信スケジューラ53側のドアベルメモリ90(1) のビットは、プロセッサ20からのその要求に応答してセットされ、ドアベルタスクが送信セクション31によって実行されるようにする。送信ホスト50が新しいメッセージのデータを取り出して、仮想回線上を送信しようとすると、送信タスクコントロール91は高優先度メモリ90(2) 内にある、仮想回線に関連するビットをセットする。送信しようとするメッセージが相対的に長いときは、送信ホスト50がそのメッセージのデータの一部を取り出したあとで、送信タスクコントロール91は高優先度メモリ90(2) 内にある、仮想回線に関連するビットをリセットし、高優先度メモリ90(3) 内にある、仮想回線に関連するビットをセットする。送信ホスト50が、伝送レートが制限されている仮想回線のデータを取り出そうとしたときは、送信タスクコントロール91は、低優先度メモリ90(4) 内にある、仮想回線に関連するビットをセットする。
【0061】
送信タスクコントロール91はそれぞれのメモリ90(1) 乃至90(4) 内のビットを使用して、どの仮想回線に対してドアベルまたはデータ取り出しオペレーションが、各メモリ内で仮想回線ID順のラウンドロビン方式で実行されるのかを示すようにする。1つまたは複数のビットがドアベルメモリ90(1) 内でセットされ、プロセッサ20がそれぞれの仮想回線に関連してドアベルタスクが実行されることを可能にしていた場合は、送信タスクコントロール91は、送信ホスト50およびシステムインタフェース32と協力して、仮想回線の制御ブロックから情報を取り出し、ドアベルタスクを処理する。メッセージが仮想回線上を送信される場合は、仮想回線が伝送レート制限されていなければ、仮想回線に関連するビットが高優先度メモリ90(2) 内でセットされ、仮想回線が伝送レート制限されていれば、低優先度メモリ90(4) 内でセットされる。これらのオペレーションは、ドアベルメモリ90(1) 内のそれぞれのビットが仮想回線ID順のラウンドロビン方式でセットされている仮想回線に対して繰り返される。
【0062】
あらかじめ定めた数の仮想回線に対してドアベルメモリ90(1) を使用して一連のドアベルタスクが処理されたあとで、メモリ90(2) 乃至90(4) のビットの中にセットされているビットがあり、データがシステムメモリ21から取り出されて少なくとも1つの仮想回線に対して送信されようとしていれば、送信タスクコントロール91は送信ホスト50がそのオペレーションを開始できるようにする。一般的に、これらのオペレーションでは、送信タスクコントロール91は、送信ホスト50が一連の繰り返しで、高優先度メモリの1つ90(2) または90(3) に示されている、あらかじめ定めた数の仮想回線上を送信されるデータを取り出すことを可能にし、そのあとで、低優先度メモリ90(4) に示されている、あらかじめ定めた数の仮想回線上を送信されるデータを取り出すことを可能にし、特別なメモリ90(2) と90(3) はある繰り返しと次の繰り返しの間に交互に切り替わるようになっている。送信タスクコントロール91は、一連のドアベルタスクが終わるたびに、送信ホスト50が1つの繰り返しを実行できるようにする。各メモリ90(2) 乃至90(4) を使用して行われる取り出しに関しては、その取り出しは、各メモリ内の連続するビットを使用して仮想回線に対して仮想回線ID順のラウンドロビン方式で行われる。
【0063】
以上から理解されるように、送信スケジューラ53は、上述したように、どの仮想回線に対してデータが取り出されるのかを示し、送信ホスト50は実際にデータ取り出しオペレーションを実行する。一般的に、データ取り出しオペレーションでは、仮想回線がセットされた仮想回線フロー制御モードにあるときは、上述したように、送信ホスト50は仮想回線に対するどのデータも取り出さない。同様に、(i) 送信バッファ51が仮想回線に関連する、あらかじめ定めた数の完成セルに関連するデータを収容しているか、あるいは(ii) 送信バッファ51があらかじめ定めたデータ量を超えるデータを収容していると、送信ホストは、(ii) に関して、少なくとも一部のデータが1つまたは2つ以上の未完成セルと関連していない限り、仮想回線に対してどのデータも取り出さず、その場合には、送信ホスト50はセルを完成するのに十分なデータだけを取り出す。その他の場合は、送信ホスト50は、システムメモリ21からあるブロックのデータを取り出し、そのサイズは、好ましくは、セル内のデータ量から、送信バッファ51にすでに保管されている未完成セルのデータ量を差し引いた倍数になっており、ブロックのサイズは相互接続構成25上を効率よく転送されるサイズになっている。
【0064】
2つのメモリ90(2) と90(3) を使用して、どの非レート制限仮想回線に対してデータが送信のために取り出されるのかを示すようにし、送信スケジューラ53が連続する繰り返しで2メモリ間を交互に切り替わるようにし、上述したように、送信ホスト50にデータブロックを取り出させるようにすると、当然に理解されるように、相対的に短いメッセージに関連するセルは妥当なレイテンシ(latency)で伝送されることになる。以上の結果、少なくとも交互に切り替わる繰り返しの間は、メモリ90(2) は、どの仮想回線に対してデータが送信ホスト50によって取り出されるのかを示すために使用される。上述したように、メモリ90(2) は、少なくともメッセージ始まりのデータが、どの仮想回線に対して送信ホスト50によって取り出されるのかを示している。仮想回線のメッセージが相対的に短ければ、その時送信ホスト50は、仮想回線のビットがメモリ90(2) にセットされている繰り返しの間に、そのメッセージのデータをすべて取り出すので、メッセージは他の仮想回線に関連する相対的に長いメッセージによって遅延されることがない。しかし、メッセージのデータ量が十分に大きいために繰り返しの間にそのデータを取り出すことができないときは、メモリ90(2) 内の仮想回線に関連するビットはリセットされるが、メモリ90(3) 内の仮想回線に関連するビットはセットされ、その場合には、そのビットがメモリ90(3) にセットされている仮想回線で仮想回線ID順のラウンドロビン方式で仮想回線がサービスを受けているとき、仮想回線に関連する、もっと多くのデータを取り出すことが可能になる。
【0065】
図3は、図1に示すネットワーク10で使用すると便利なスイッチングノード11(n) の機能ブロック図を示す。図3に示すように、スイッチングノード11(n) は、複数の入力ポート60(1) 乃至60(I)(全体を符号60(i) で示している)、複数の出力ポート61(1) 乃至61(I)(全体を符号61(i) で示している)、バッファストア63およびバッファマネージャ64を装備している。各入力ポート60(i) は"CELLS_IN"と名付けたセルを、コンピュータ12(m) またはスイッチングノードから通信リンク13(p) を利用して受信するように接続されている。各出力ポート61(i) は"CELLS_OUT"と名付けたセルを、同じ通信リンク13(p) を利用してコンピュータ12(m) またはスイッチングノードに送信するように接続されている。入力ポート60(i) がスイッチングノードからセルを受信し、出力ポート61(i) がセルをスイッチングノードに送信する場合、スイッチングノード11(n) の入力ポート60(i) がそこからセルを受信し、あるいはスイッチングノード11(n) の出力ポート61(i) がそこへセルを送信するスイッチングノードは、好ましくは、別のスイッチングノード11(n') (n'≠n) になっているが、通信リンク13(p) がスイッチングノード11(n) のループバックコネクションとなっていれば、同一スイッチングノード11(n)であっても構わない。
【0066】
各入力ポート60(i) は、そこに接続された通信リンク13(p) 上でセルを受信すると、そのセルをバッファストア63に置いておく。各入力ポート60(i) は、実際にセルを受信し、それをバッファに置いてからセルがバッファストア63に転送されて、そこに保管されるようにするセルレシーバ70と、入力ポート60(i)がそこでセルを受信する仮想回線に関する仮想回線情報を含んでいる入力ポートコントロール71とを含んでいる。一実施形態では、セルレシーバ70は、受信したセルのための内部「ダブルバッファ」構成(個別には示されていない)を備えている。具体的には、一方の内部バッファは、バッファストア63に転送される前に受信したばかりのセルの少なくとも一部を収容しておくことができ、その間に、別のセルの一部は他方の内部バッファに受信されている。
【0067】
セルレシーバ70がセルを受信すると、入力ポートコントロール71はそのセルをバッファストア63に転送し、そこに保管しておく。一般的に、バッファストア63は複数の "B" バッファBUF0 乃至BUF(B-1)(全体をBUF(b) で示している)から構成され、これらはバッファマネージャ64内のバッファリンクヘッダ75によってリンクリストに編成されている。バッファBUF(b) の各々は、1つのセルからの情報をストアすることができる。一般的に、バッファストア63とバッファマネージャ64はスイッチングノード11(n) を通る仮想回線ごとに1つのリンクリストを提供し、さらにフリーリストを提供する。他方、バッファリンクヘッダ75は複数のバッファヘッダBUF_HDR(0) 乃至BUF_HDR(B-1)(全体をBUF_HDR(b) で示している)を含み、その各々はバッファストア63内の対応するインデックスをもつBUF(b) と関連付けられている。各入力ポート61(i) の入力ポートコントロール71は仮想回線情報ブロック(個別には示されていない)を維持しており、そこには、特に、ヘッドポインタとテールポインタを含むリンクリストヘッダとバッファカウント値が、入力ポート61(i) がその経路となっている仮想回線ごとに、収められている。さらに、バッファマネージャ64は、フリーリストのヘッドポインタとテールポインタを含むフリーリストポインタをもっている。
【0068】
各リンクリストについて、
(i) ヘッドポインタは次を指している。
(a) 仮想回線のリンクリストの場合は、仮想回線のバッファストア63に保管されている第1セルの情報を含んでいるバッファBUF(b) に関連するバッファヘッダBUF_HDR(b)、または
(b) フリーリストの場合は、フリーリスト内の第1バッファBUF(b) に関連するバッファヘッダBUF_HDR(b)。
【0069】
(ii) テールポインタは次を指している。
(a) 仮想回線のリンクリストの場合は、仮想回線のバッファストア63に保管されている最終セルの情報を含んでいるバッファBUF(b') に関連するバッファヘッダBUF_HDR(b')、または
(b) フリーリストの場合は、フリーリスト内の最終バッファBUF(b') に関連するバッファヘッダBUF_HDR(b)。
【0070】
(iii) バッファカウント値は、仮想回線のリンクリストの場合は、リンクリストにリンクされたバッファストア63内のバッファの数を示している。
【0071】
以上から理解されるように、ヘッドポインタが指しているバッファBUF(b) はテールポインタが指しているものと同じバッファBUF(b') にすることができるが、そうでなくてもよい。ヘッドポインタが指しているバッファBUF(b) が、テールポインタが指している同じバッファBUF(b') であれば、バッファストア63内のリンクリストに関連するバッファBUF(b) は1つになる。さらに、各バッファヘッダBUF_HDR(b) は、リンクリスト内の最終バッファヘッダを除き、リンクリスト内の次のバッファヘッダBUF_HDR(b") を指している次ポインタを含んでいる。リンクリスト内の最終バッファヘッダ内の次ポインタは、リンクリストのリストヘッダを指していることもあれば、それがリンクリスト内の最終バッファヘッダであることを示している値を含んでいることもある。仮想回線に関連するリンクリストの場合には、バッファBUF(b") は、スイッチングノード11(n) によって受信され、その情報が同じ仮想回線のバッファBUF(b) に保管されているセルの後に続く次のセルの情報を保管している。
【0072】
一般的に、セルをバッファストア63に保管するとき、入力ポートコントロール71は、フリーリストのヘッドに保管されているバッファヘッダBUF_HDR(b) に関連するバッファBUF(b) にそのセルを保管し、フリーリストヘッダのヘッダポインタとバッファカウントをそれに応じて更新する。さらに、入力ポートコントロール71は、
【0073】
(i) 仮想回線の仮想回線情報ブロック内のバッファカウント値が非ゼロで、アクティブのリンクリストが仮想回線のバッファストア63とバッファマネージャ64にあることを示していれば、仮想回線の仮想回線情報ブロック内に維持されているテールポインタが指しているバッファヘッダの次ポインタを更新し、
【0074】
(ii) セルが保管されているバッファBUF(B) に関連するバッファヘッダBUF_HDR(b) の次ポインタに値をロードし、それがリンクリスト内の最終バッファヘッダであることを示し、
【0075】
(iii) 仮想回線に関連する仮想回線情報ブロックに維持されている、リンクリストヘッダ(必要に応じてヘッドポインタとテールポインタを含んでいる)とセルカウント値を更新する。
【0076】
各仮想回線に対して入力ポートコントロール71によって維持されている仮想回線情報ブロックは、仮想回線に関連するセルがどの出力ポート61(i') から送信されるのかも示しており、入力ポートコントロール71は、リンクリストを確立したあと、その出力ポート61(i')から送信されるために仮想回線に対してセルが受信されたことも、出力ポート61(i')に通知する。
【0077】
各出力ポート61(i)は、少なくとも1つのセルが、その出力ポート61(i')からセルが送信される仮想回線のバッファストア63に保管されているとの通知を、入力ポート60(i) の入力ポートコントロール71から受信すると、それが接続されている通信リンク13(p)が、クリアされたリンクフロー制御ステートになっていれば、仮想回線に関連するセルをバッファストア63から取り出し、そのセルをそこに接続されている通信リンク13(p) 上に送出するオペレーションを開始する。以上から理解されるように、出力ポート61(i) が接続されている通信リンク13(p) が、セットされたリンクフロー制御ステートになっていれば、出力ポート61(i) は仮想回線に関連するセルを通信リンク上に送信することが禁止される。
【0078】
各出力ポート61(i) は出力ポートコントロール72とセルトランスミッタ73を含んでいる。出力ポートコントロール72は、それぞれの入力ポート61(i) の入力ポートコントロール71 から通知を受信する。これに応答して、通信リンク13(p) が、セットされたリンクフロー制御ステートになっていなければ、出力ポートコントロール72は、入力ポートコントロール71によって維持されている仮想回線の仮想回線情報ブロックにアクセスしてリンクリストのヘッドポインタを特定する。これによって出力ポートコントロール72は、仮想回線に関連するリンクリスト内の第1セルを特定し、そのセルがバッファストア63から取り出され、セルトランスミッタ73に転送され、その処理と送信が行われるようにする。従来と同じように、セルのヘッダ部分は送信前に更新しておく必要があるが、これはセルトランスミッタによって行われる。セルレシーバ70の場合と同じように、一実施形態では、セルトランスミッタ73は送信されるセルのための内部「ダブルバッファ」構成(個別には示されていない)を備えている。具体的には、一方の内部バッファはバッファストア63から取り出されるセルの一部を収容することができ、一方、別のセルの一部がそこに接続された通信リンク13(p) 上を送信される。セルが送信のために取り出されると、出力ポートコントロール72は入力ポートコントロール71が、セルの取り出しを反映するように、仮想回線の仮想回線情報ブロックに維持されているセルカウントをデクリメントするのを許可することができる。仮想回線情報ブロック内のセルカウント値がデクリメントされたあとゼロになっていなければ、入力ポートコントロール71は、仮想回線のリンクリストがまだアクティブであることを出力ポートコントロール72に通知する。さらに、入力ポートコントロール71は、仮想回線情報ブロック内のヘッダポインタを、リンクリスト内の次のセルを指すように更新する。出力ポートコントロール72は、バッファストア63に保管されている、それぞれの仮想回線のセルがある限り、そこから送信される仮想回線すべてのセルの取り出しを仮想回線ID順のラウンドロビン方式で開始する。
【0079】
以上から理解されるように、入力ポート60(i) はセル以外のメッセージを受信することができる。具体的には、本発明によるセットおよびクリアされた仮想回線フロー制御メッセージと、セットおよびクリアされたリンクフロー制御メッセージを受信することができる。入力ポート60(i) がセットされた仮想回線フロー制御メッセージを受信したときは、スイッチングノード11(n) はその仮想回線に対してセットされた下流側仮想回線フロー制御ステートに入り、その場合には、入力ポート60(i) に関連する入力ポートコントロール71は、仮想回線に対して維持されている仮想回線情報ブロック内の下流側仮想回線フロー制御ステートフラグ(個別には示されていない)をセットし、さらに、ソースコンピュータ12(mS)、つまり、仮想回線のソースコンピュータ12(mS) に向かう仮想回線の経路上の上流側スイッチングノード11(n") に接続されている該当出力ポート61(i") が、セットされた仮想回線フロー制御メッセージを通信リンク13(p) 上に送信することを許可する。
【0080】
上述したように、スイッチングノード11(n) は、仮想回線に関連するセルが余りに高速レートで受信されるため仮想回線上の下流側に送信できないと判断したときは、セットされた仮想回線フロー制御ステートに入って、セットされた仮想回線フロー制御メッセージを生成し、仮想回線の経路上の上流側にそれを送信することもできる。これに関連して、仮想回線の仮想回線情報ブロックを維持している入力ポート60(i) に関連する入力ポートコントロール71は、ローカル仮想回線フロー制御フラグも維持しており、入力ポートコントロール71はこのフラグをセットすることにより、仮想回線をセットされたローカル仮想回線フロー制御ステートに置くことができる。入力ポートコントロール71はローカル仮想回線フロー制御フラグをセットすると、上流側スイッチングノード11(n") または仮想回線のソースコンピュータ12(mS) に接続された出力ポート60(i") が、セットされた仮想回線フロー制御メッセージを通信リンク13(p) 上に送信するのを許可することもできる。仮想回線に関連する経路上の下流側スイッチングノードまたは仮想回線に関連するデスティネーションコンピュータ12(mD) に接続された出力ポート61(i') は、バッファストア63に保管されている仮想回線に関連するセルを十分な数だけ取り出したあと、ローカル仮想回線フロー制御フラグをクリアして、仮想回線をクリアされたローカル仮想回線フロー制御ステートに置くことができる。
【0081】
各仮想回線に関連した下流側仮想回線フロー制御フラグとローカル仮想回線フロー制御フラグは、スイッチングノード11(n) による仮想回線の、クリアされた仮想回線フロー制御メッセージの送信または生成を制御するためにも使用される。これに関連して、
【0082】
(i) 入力ポート60(i) が仮想回線に関連するクリアされた仮想回線フロー制御メッセージを受信したときは、下流側仮想回線フロー制御フラグをクリアすると、仮想回線をクリアされた下流側仮想回線フロー制御ステートに置くことができ、仮想回線もセットされた仮想回線フロー制御ステートになっていなければ、入力ポート60(i) は、仮想回線に関連する経路上の上流側スイッチングノード、または仮想回線に関連するソースコンピュータ12(mS) に接続された出力ポート60(i") が、クリアされた仮想回線フロー制御メッセージを生成し、送信することを許可することができる。
【0083】
(ii) 仮想回線に関連する経路上の下流側スイッチングノード、または仮想回線に関連するソースコンピュータ12(mS) に接続された出力ポート61(i') がローカル仮想回線フロー制御フラグをクリアし、仮想回線をクリアされたローカル仮想回線フロー制御ステートに置き、仮想回線もセットされた下流側仮想回線フロー制御ステートになっていなければ、出力ポート61(i') は、仮想回線に関連する経路上の上流側スイッチングノード、または仮想回線に関連するソースコンピュータ12(mS) に接続された出力ポート60(i") が、クリアされた仮想回線フロー制御メッセージを生成し、送信するのを許可することができる。
【0084】
本発明によれば、入力ポート71と出力ポートコントロール72も、特定の仮想回線をセットおよびクリアされたローカル仮想回線フロー制御ステートに置くべきかどうかの判断に関して、および特定の通信リンク13(p) をセットまたはクリアされたリンクフロー制御ステートに置くかどうかに関して、いくつかのオペレーションを実行する。最初に、ローカル仮想回線フロー制御ステートに関しては、仮想回線のローカル仮想回線フロー制御ステートをセットするか、クリアするかの判断は、次に基づいて行われる。
【0085】
(i) 仮想回線に関連する経路上の下流側スイッチングノードまたは仮想回線に関連するデスティネーションコンピュータ12(mD) に接続された出力ポート61(i') の出力ポート仮想回線利用数(utilization number)。
【0086】
(ii) バッファストア63のセル占有レベル(cell occupancy level)。および、
【0087】
(iii) バッファストア63に保管されている、仮想回線に関連するセルの数。
【0088】
出力ポート61(i')の出力ポート仮想回線利用数は、出力ポート61(i')によって送信されるセルをバッファストア63が保管している仮想回線の数を示している。上述したように、出力ポート61(i) は仮想回線のセルを仮想回線ID順のラウンドロビン方式で取り出すので、特定の出力ポート61(i')の出力ポート仮想回線利用数が増加すると、特定の仮想回線の取り出しと取り出しの間の時間が増加するので、バッファストア63のセル占有レベル(上記項目(ii))が増加し、特定の仮想回線に関連するセルの数(上記項目(iii))も増加すると、望ましくない輻輳が発生することになる。
【0089】
一実施形態では、出力ポートコントロール72は、各出力ポート61(i) に対して3つの出力ポート仮想回線利用レベル(上記項目(i)参照)、すなわち、低利用レベル、通常利用レベル、高利用レベルを定義している。出力ポート61(i) によって送信されるセルをバッファストア63が保管している仮想回線の数が、
【0090】
(a) 選択した低出力ポート利用しきい値以下であれば、出力ポートコントロール72は、出力ポート61(i) が低利用レベルにあると判断する。
【0091】
(b) 選択した低出力ポート利用しきい値と選択した高出力ポート利用しきい値の間にあれば、出力ポートコントロール72は、出力ポート61(i) が通常利用レベルにあると判断する。そして、
【0092】
(c) 高出力ポート利用しきい値を越えていれば、出力ポートコントロール72は、出力ポートが高利用レベルにあると判断する。
さらに、出力ポートコントロールは、1つのバッファ占有しきい値(上記項目(ii) 参照)と、3セットのバッファ保管セル「ウォータマーク(watermark)」レベル(上記項目(iii)参照)を定義している。各セットのバッファ保管セルウォータマークレベルは、バッファストア63に保管されている、仮想回線に関連するセルがある数に達すると、仮想回線がセットされたローカル仮想回線フロー制御ステートに置かれることを示し、さらに、バッファ保管セル数がある数に達すると、仮想回線がクリアされたローカル仮想回線フロー制御ステートに置かれることを示している。バッファ保管セルウォータマークのセットは、低バッファ保管セルウォータマークレベル、中間バッファ保管セルウォータマークレベル、および高バッファ保管セルウォータマークレベルを含んでおり、これらは、その数に達すると仮想回線がセットされたローカル仮想回線フロー制御ステートに置かれ、その数に達すると仮想回線がクリアされたローカル仮想回線フロー制御ステートに置かれる、仮想回線に関連する両方のバッファ保管セル数が、連続的に大きくなることを定義している。
【0093】
入力ポートコントロール71は出力ポート仮想回線利用レベルとバッファ占有レベルを使用して、バッファ保管セルウォータマークのセットの1つを選択し、これは仮想回線をセットまたはクリアされた仮想回線フロー制御ステートに置くべきかどうかを判断するために使用される。これに関連して、バッファストア63のセル占有レベルが、各仮想回線についてバッファ占有しきい値以下であると出力ポートコントロール72が判断したとき、
【0094】
(i) 仮想回線に関連するセルを送信のために取り出す出力ポート61(i') に関連する仮想回線利用レベルが低利用レベルにあれば、入力ポートコントロール71は高バッファ保管セルウォータマークレベルのセットを選択する。
【0095】
(ii) 仮想回線に関連するセルを送信のために取り出す出力ポート61(i') に関連する仮想回線利用レベルが中間利用レベルにあれば、入力ポートコントロール71は中間バッファ保管セルウォータマークレベルのセットを選択する。
【0096】
(iii) 仮想回線に関連するセルを送信のために取り出す出力ポート61(i') に関連する仮想回線利用レベルが高利用レベルにあれば、入力ポートコントロール71は低バッファ保管セルウォータマークレベルのセットを選択する。
他方、バッファストア63のセル占有レベルが、各仮想回線についてバッファ占有しきい値にあるか、あるいはそれを越えていると入力ポートコントロール71が判断したとき、
【0097】
(iv) 仮想回線に関連するセルを送信のために取り出す出力ポート61(i') に関連する仮想回線利用レベルが低利用レベルにあれば、入力ポートコントロール71は中間バッファ保管セルウォータマークレベルのセットを選択する。
【0098】
(v) 仮想回線に関連するセルを送信のために取り出す出力ポート61(i') に関連する仮想回線利用レベルが中間利用レベルにあれば、入力ポートコントロール71は低バッファ保管セルウォータマークレベルのセットを選択する。
【0099】
(vi) 仮想回線に関連するセルを送信のために取り出す出力ポート61(i') に関連する仮想回線利用レベルが高利用レベルにあれば、この場合も、入力ポートコントロール71は低バッファ保管セルウォータマークレベルのセットを選択する。
【0100】
以上から理解されるように、仮想回線利用レベルが増加すると共に、仮想回線をセットされたローカル仮想回線フロー制御ステートに置くために必要とされる、仮想回線に関連するバッファ保管セルの数は少なくなる。しかし、バッファストア63のバッファ占有レベルが増加してバッファ占有しきい値を越えると、バッファ保管セルウォータマークレベルが選択されるので、仮想回線をセットされたローカル仮想回線フロー制御ステートに置くために必要とされる、仮想回線に関連するバッファ保管セルの数は少なくなる。入力ポートコントロール71は各仮想回線に対して選択されたバッファ保管セルウォータマークレベルセットの中のウォータマークレベルを使用して、仮想回線をセットまたはクリアされたローカル仮想回線フロー制御ステートに置くために、ローカル仮想回線フロー制御フラグをセットするか、クリアするかを判断する。
【0101】
一実施形態では、各バッファ保管セルウォータマークレベルセット内で、その数に達すると、仮想回線がクリアされたローカル仮想回線フロー制御ステートに置かれる、バッファストア63の中の保管セルの数を示しているバッファ保管セルウォータマークレベルは、その数に達すると、仮想回線がセットされたローカル仮想回線フロー制御ステートに置かれる、バッファストア63の中の保管セルの数を示しているバッファ保管セルウォータマークレベルよりも低くなっている。このようにすると、ある程度の「ヒステリシス」が得られるので、特定の仮想回線に関連するバッファストア63に保管のセルの数が該当ウォータマークレベルに近づいたときセルがスイッチングノード11(n) によって取り出されて、送信される場合、特定の仮想回線に関連するローカル仮想回線フロー制御ステートが、セットされたステートとクリアされたステートの間で急激に切り替わることが有効に防止されることになる。
【0102】
さらに、入力ポートコントロール71は、スイッチングノード11(n) またはそこに接続された特定の通信リンク13(p) を、セットまたはクリアされたリンクフロー制御ステートにいつ移行させるかを判断し、その判断に応じて出力ポート61(i) によるリンクフロー制御メッセージの送信を制御する。一般的に、入力ポート60(i) の入力ポートコントロール71は、
【0103】
(i) バッファストア63のセル占有レベルが、選択したセットされたリンクフロー制御しきいレベルを超えるレベルに増加したときは、スイッチングノード11(n) に接続された通信リンク13(p) をセットされたリンクフロー制御ステートに置き、その場合には、入力ポートコントロール71は対応するインデックスをもつ出力ポート61(i) が、セットされたリンクフロー制御メッセージを送信することを許可し、そのあと、
【0104】
(ii) スイッチングノード11(n) をクリアされたリンクフロー制御ステートに置き、
(a) バッファストア63のセル占有レベルが選択した、クリアされたリンクフロー制御しきいレベル以下のレベルに減少したときは、通信リンク13(p) をクリアされたリンクフロー制御ステートに置き、その場合には、入力ポートコントロール71は、対応するインデックスをもつ出力ポート61(i) が、クリアされたリンクフロー制御メッセージをスイッチングノード11(n) またはそこに接続されたコンピュータ12(m) に送信することを許可し、あるいは
(b) 仮想回線に関連付けられていて、それぞれの入力ポート60(i) から受信されたバッファストア63に保管のセルの数があらかじめ定めた入力ポートごとのしきいレベルに等しいか、それ以下であるときは、入力ポート60(i) に接続された通信リンク13(p) をクリアされたリンクフロー制御ステートに置き、その場合には、入力ポート60(i) の入力ポートコントロール71は、対応するインデックスをもつ出力ポート61(i) がスイッチングノード11(n) またはそこに接続されたコンピュータ12(m) にクリアされたリンクフロー制御メッセージを送信することを許可する。一実施形態では、入力ポートごとのしきいレベルはゼロになるように選択されている。
【0105】
一実施形態では、セットされたリンクフロー制御しきいレベルは、クリアされたリンクフロー制御しきいレベルよりも大になっている。このようにすると、ある程度の「ヒステリシス」が得られるので、バッファストア63に保管のセルの数がセットされたリンクフロー制御しきいレベルに近づいたときセルがスイッチングノード11(n) によって受信され、送信される場合、リンクフロー制御ステートが、セットされたステートとクリアされたステートの間で急激に切り替わることが有効に防止されることになる。
【0106】
バッファリンクヘッダ75のほかに、バッファマネージャはアービタ76も備えており、このアービタは、バッファストア63へのアクセス、バッファマネージャ64によって維持されているバッファリンクヘッダ75へのアクセス、および入力ポートコントロール71と出力ポートコントロール72による入力ポート61(i) の各々の入力ポートコントロール71によって維持されている仮想回線情報ブロックへのアクセスをスケジュールする。一般的に、
【0107】
(i) 入力ポート60(i) の入力ポートコントロール71は、仮想回線に関連するセルを受信するとき、次のものにアクセスする必要がある。
(a) バッファストア63内のどのバッファBUF(b) にセルを保管しようとしているのかを示すために、およびフリーリストのリンクリスト情報を更新するためにフリーリストについて、バッファマネージャ64によって維持されているリンクリスト情報、
(b) 示されたバッファに受信セルをストアするためのバッファストア63、
(c) そこからリンクリスト情報を取り出し、そのリンクリスト情報、セルカウント値および仮想回線のフロー制御ステータスを更新するために、さらに、どの出力ポート61(i) からセルが送信されるかを示すために、入力ポートコントロール71によって維持されている仮想回線情報ブロック、および
(d) 受信セルが保管されたバッファをフロー制御のリンクリストにリンクするために、入力ポートコントロール71によって維持されている仮想回線情報ブロック内のリンクリスト情報によって示されている、仮想回線に関連するリンクリストについてバッファマネージャによって維持されているリンクリスト情報。
【0108】
(ii) 出力ポート61(i) の出力ポートコントロール72は、仮想回線に関連するセルを送信しようとするとき、次のものにアクセスする必要がある。
(a) リンクリスト情報を取り出し、リンクリスト情報とセルカウント値を含む情報を更新するために、さらに、仮想回線のフロー制御ステータスを必要に応じて更新するために、そこからセルが受信された入力ポートコントロール71によって維持されている仮想回線情報、
(b) バッファから送信するためのセルを取り出すために、バッファストア63、および
(c) 仮想回線のリンクリストからセルが送信されるバッファをデリンク(de-link)し、バッファをフリーリストにリンクするために、バッファマネージャによって維持されているリンクリスト情報。
【0109】
一般的に、上述のように、アービタ76は、入力ポート60(i) の入力ポートコントロール71と出力ポート61(i) の出力ポートコントロール72によるアクセス要求の仲裁を行う。このオペレーションでは、一実施形態によれば、アービタ76は、一般的に入力ポートコントロール71相互間にラウンドロビン方式で高い優先度をもたせ、出力ポートコントロール72相互間にラウンドロビン方式で低い優先度をもたせるようにしている。
【0110】
本発明によれば、いくつかの利点が得られる。上述したように、本発明は、コンピュータと他のデバイス間でメッセージをネットワーク上に効率よく転送すると共に、ネットワークの輻輳が原因で起こるセル損失を防止する構成を提供している。ネットワークインタフェース24の送信セクション31によるデータ伝送は、コンピュータ12(m) がそのソースとなっている仮想回線間で、仮想回線ID順のラウンドロビン方式で行われるので、本発明によれば、そこから延長された仮想回線間でかなりの公平性が得られ、仮想回線すべてに少なくとも一部のメッセージ転送バンド幅を効果的に保証し、仮想回線間のメッセージ転送レイテンシを制限するので、決定的なメッセージ転送レイテンシ特性が得られるようにしている。仮想回線間の公平性は、スイッチングノードが、仮想回線に対してそこで受信したセルからのデータを、仮想回線ID順のラウンドロビン方式で転送し、各デスティネーションコンピュータ側では、ネットワークインタフェースの受信セクション31が、コンピュータ12(m) がそのデスティネーションとなっている仮想回線上でそこで受信したセルからのデータを、仮想回線ID順のラウンドロビン方式でシステムメモリ21に転送し、受信バッファ41がいずれかの仮想回線からのデータで過負荷状態になる可能性を低減することによって、さらに向上されている。本発明によれば、スイッチングノード11(n)、具体的には、バッファストア63で使用されるメモリ量を低減化でき、望ましいメッセージ転送飽和特性が得られるので、システムコストを低減化することができる。
【0111】
上述したように、本発明によれば、「エンドツーエンド」仮想回線とリンクフロー制御のメカニズムが効率化されているので、ネットワークの輻輳が原因で起こるセル損失がさらに防止される。仮想回線フロー制御に関しては、本発明によれば、それぞれのデスティネーションコンピュータとソースコンピュータ12(m) 間の仮想回線を利用したセルの伝送を、仮想回線が仮想回線のセルを転送し、デスティネーションコンピュータが仮想回線を利用してセルを受信する経路を形成しているスイッチングノードの瞬時容量に基づいて制御するようにメカニズムが効率化されている。さらに、リンクフロー制御に関しては、本発明によれば、各通信リンク上のセルの伝送を、それぞれのリンクを利用してセルを受信するデバイスの瞬時容量に基づいて制御し、それぞれのリンクを利用してセルを受信するメカニズムが別になっている。仮想回線フロー制御は、仮想回線フロー制御が実現されているしきいレベルが、仮想回線のそれぞれを利用した転送レートが大きくなって、セルが転送される他の仮想回線が利用できるバンド幅が不当に制限されることがないように選択されているので、仮想回線間の公平性をさらに向上している。
【0112】
以上から理解されるように、上述してきたシステム10、コンピュータ12(m)およびスイッチングノード11(n) は種々態様に変更することが可能である。例えば、以上から理解されるように、本発明によるシステム10は、スイッチングノード11(n) がなくても、複数のコンピュータ12(m) を相互接続することにより、例えば、2コンピュータ12(m) のネットワークインタフェース24を相互接続し、これらが相互間でデータを転送するための仮想回線を確立できるようにすることによって構築することができる。さらに、以上から理解されるように、ゲートウェイ、ブリッジなどの他のタイプのコンポーネントでネットワーク10を他のネットワークに接続し、大容量記憶システムなどの、他のタイプのデバイスを、コンピュータ12(m) について上述したのと同じように、メッセージのソースおよび/またはデスティネーションなどのネットワークに接続することも可能である。
【0113】
さらに、システム10は、一般に仮想回線間の優先度を1つ使用してメッセージを転送するものとして説明してきたが、以上から理解されるように、システム10は種々の優先度レベルを取り入れることが可能である。従って、例えば、タスクが実行される各仮想回線が特定されてから1つの仮想回線が特定されるようにする、ラウンドロビン方式を使用する代わりに、ある仮想回線を特定する回数を他の仮想回線よりも多くして、これらの仮想回線(つまり、なんども特定される仮想回線)に高い優先度をもたせることが可能である。事実、仮想回線を特定する回数を多くすると、優先度レベルを複数にすることができる。
【0114】
さらに、システム10は、一方では、新規の仮想回線とリンクフロー制御技法を含み、他方では新規のスケジューリング技法を含むものとして説明してきたが、以上から理解されるように、本発明によるシステムは、どの技法を取り入れることも可能であり、上述してきた利点の少なくともいくつかを得ることができる。
【0115】
上述してきたシステム10では、ラウンドロビンスケジューリング技法を利用して、それぞれの受信スケジューラと送信スケジューラ43、53が、どの仮想回線に対してタスクを実行するかを、仮想回線ID順のラウンドロビン方式で特定するようにようしているが、以上から理解されるように、他のラウンドロビンID方式を使用することも可能である。例えば、それぞれのタスクで種々の仮想回線IDリストを使用することが可能であり、タスクが特定の仮想回線で可能にされたとき、仮想回線のIDをリストの終わりに付加することができる。この場合には、それぞれのスケジューラは、連続するエントリからの仮想回線を、リストの先頭から特定していくことができる。以上から理解されるように、ラウンドロビン技法をスケジューラ43、53で使用すると、ハードウェア設計が単純化されるが、仮想回線は、そのビットがそれぞれのメモリにセットされた直後にだけ、タスク処理のために特定されることになり、このことは仮想回線間の公平性を若干損なうことになる。他方、仮想回線IDリストは、タスクが可能にされる順に仮想回線に対してタスクが実行される可能性を大にするので、仮想回線間の公平性が増加するが、ハードウェア設計は若干複雑化する。
【0116】
さらに、ATMセルを使用したデータ転送に関して本発明を説明してきたが、以上から理解されるように、他のデータ転送技法を使用することも可能である。
【0117】
以上から理解されるように、本発明によるシステムは、その全体または一部を特殊目的コンピュータまたは汎用コンピュータ、あるいはその組み合わせで構築することが可能であり、その一部は適当なプログラムで制御することができる。どのプログラムも、その全体または一部をシステムの一部にすることも、適当な方法でシステム上に格納しておくことも可能であり、あるいはその全体または一部をネットワークまたは適当な方法で情報を転送する他のメカニズムを利用して、システムに送るようにすることも可能である。さらに、以上から理解されるように、システムは、システムに直接に接続されているか、あるいはネットワークまたは適当な方法で情報を転送する他のメカニズムを利用して情報をシステムに送ることができるオペレータ入力エレメント(図示せず)を使用するオペレータから与えられた情報によって操作し、および/または他の方法で制御することができる。
【0118】
上述してきた説明は本発明の特定の実施形態に限定されるが、以上から理解されるように、本発明を種々態様に変更または改良することにより、本発明の利点のすべてまたは一部を達成することができる。上記実施形態およびその他の変形または改良形態は請求項の対象になっており、これらは本発明の真の趣旨と範囲に属するものである。
【図面の簡単な説明】
本発明は具体的には特許請求の範囲に記載されている。本発明の上記および他の利点は、以下の、添付図面を使用して上述の記述を参照することにより容易に理解されよう。
【図1】 本発明によるフロー制御構成が実装されているコンピュータネットワークを示す概略図である。
【図2】 図1に示すコンピュータネットワークで使用されるコンピュータシステムを示す機能ブロック図である。
【図3】 図1に示すコンピュータネットワークで使用されるスイッチングノードを示す機能ブロック図である。
【図4】 本発明によるコンピュータシステムのオペレーションを示す詳細フローチャートである。
【図4A】 本発明によるコンピュータシステムのオペレーションを示す詳細フローチャートである。
【図5】 図2に示すコンピュータシステムで使用される受信スケジューラと送信スケジューラを示す機能ブロック図である。
【図6】 図2に示すコンピュータシステムで使用される受信スケジューラと送信スケジューラを示す機能ブロック図である。

Claims (23)

  1. 少なくとも1つの通信リンクを含んでいるネットワークによって相互接続された少なくとも2つのデバイスを有するシステムであって、各デバイスはメッセージをネットワーク上に転送するためのネットワークインタフェースを含み、デバイスの少なくとも1つはソースデバイスとして、ネットワーク上に確立された1つまたは2つ以上の仮想回線を利用してメッセージを送信し、前記デバイスの少なくとも他の1つはそれぞれの仮想回線のデスティネーションデバイスとして仮想回線上のメッセージを受信するシステムにおいて、
    A. ソースデバイスのネットワークインタフェースは、トランスミッタと送信スケジューラとを含む送信セクションを含み、トランスミッタは、デバイスがそのソースデバイスとなっているそれぞれの仮想回線に対してメッセージを送信するように構成され、送信スケジューラは、トランスミッタによるメッセージの送信をスケジューリングするように構成されており、その結果、デバイスがそのソースデバイスとなっている仮想回線のそれぞれの間でメッセージがラウンドロビン方式で送信され、
    B. デスティネーションデバイスのネットワークインタフェースは、受信されたメッセージパケットからデータのリンクリストを記憶するように構成された受信バッファと、前記各リンクリストは特定の仮想回線に対応しており、メモリと、デスティネーションデバイスのメモリに前記受信バッファからデータを転送するように構成された受信ホストと、受信スケジューラとを含み、前記受信スケジューラは高い優先度の仮想回線はラウンドロビン方式でスケジュールし、そして低い優先度の仮想回線はラウンドロビン方式でスケジュールして、受信ホストが受信バッファからデータをメモリに転送するように構成されていることを特徴とするシステム。
  2. 請求項1に記載のシステムにおいて、送信スケジューラは、
    A. 仮想回線に対してメッセージパケットが送信される仮想回線を識別するように構成された仮想回線タスクリストと、
    B. 仮想回線タスクリストを通るようにシーケンスして、メッセージパケットが送信される連続の仮想回線を識別し、識別された仮想回線ごとに、データを取得して、前記トランスミッタがそれぞれのメッセージパケットに入れて送信できるように構成された送信タスクコントロールと
    を含むことを特徴とするシステム。
  3. 請求項2に記載のシステムにおいて、前記仮想回線タスクリストは複数の優先順位付けタスクリストを含むように構成され、送信タスクコントロールは前記優先順位付けタスクリストの中から選択し、そのように選択された優先順位付けタスクリスクごとに、どの仮想回線に対してメッセージパケットが送信されるのかを示すように構成されていることを特徴とするシステム。
  4. 請求項3に記載のシステムにおいて、各仮想回線は仮想回線IDによって識別され、仮想回線IDの各々は、仮想回線ID値の範囲内にある値を有し、前記優先順位付けタスクリストの各々は、前記範囲内の各仮想回線IDと関連付けられたビットを含むビットマップを有し、送信タスクコントロールは、メッセージパケットがそれぞれの優先度レベルで送信されようとする仮想回線ごとに、それぞれの優先順位付けタスクリストのビットマップ内における仮想回線の仮想回線ID値と関連付けられているビットをセットするように構成されており、送信タスクコントロールはセットされたビットを使用して、メッセージパケットが送信される仮想回線を識別することを特徴とするシステム。
  5. 請求項3に記載のシステムにおいて、1つまたは2つ以上のメッセージパケットはメッセージと関連付けられており、各メッセージは始まりを有し、前記優先順位付けタスクリストの1つは、メッセージの始まりに関連するメッセージパケットのデータが取得される仮想回線に関連付けられており、前記優先順位付けタスクリストのもう1つは、メッセージの始まりに関連するメッセージパケットのデータがすでに取得されている仮想回線に関連付けられており、送信タスクコントロールは前記優先順位付けタスクリストの各々から、選択したレートで選択するように構成されていることを特徴とするシステム。
  6. 請求項5に記載のシステムにおいて、送信タスクコントロールは、前記優先順位付けタスクリストの間で交互に切り替わることを特徴とするシステム。
  7. 請求項3に記載のシステムにおいて、前記仮想回線に対するメッセージパケット送信はレート制限することが可能であり、前記優先順位付けタスクリストの1つはレート制限タスクリストを有し、送信タスクコントロールは、レート制限に関係するレートで前記レート制限タスクリストから選択するように構成されていることを特徴とするシステム。
  8. 請求項1に記載のシステムにおいて、受信スケジューラは、
    A. メッセージパケットが受信される仮想回線を識別するように構成された仮想回線タスクリストと、
    B. 仮想回線タスクリストを通るようにシーケンスして、メッセージパケットが受信された連続の仮想回線を識別し、仮想回線ごとに、データがデータストアに転送されるように構成された受信タスクコントロールとを含むことを特徴とするシステム。
  9. 請求項8に記載のシステムにおいて、前記仮想回線タスクリストは複数の優先順位付けタスクリストを含むように構成され、受信タスクコントロールは前記優先順位付けタスクリストの中から選択し、選択された優先順位付けタスクリストごとに、メッセージパケットが送信される仮想回線を識別するように構成されていることを特徴とするシステム。
  10. 請求項9に記載のシステムにおいて、各仮想回線は仮想回線IDによって識別され、仮想回線IDの各々は仮想回線ID値の範囲内にある値を有し、前記優先順位付けタスクリストの各々は前記範囲内の各仮想回線ID値と関連付けられたビットを含むビットマップから構成され、受信タスクコントロールは、メッセージパケットが受信された仮想回線ごとに、それぞれの優先順位付けタスクリストのうち該当するもののビットマップの中で、仮想回線の仮想回線IDと関連付けられたビットがセットされるように構成され、受信タスクコントロールはセットされたビットを使用して、メッセージパケットが送信される仮想回線を識別することを特徴とするシステム。
  11. 請求項9に記載のシステムにおいて、前記デスティネーションデバイスの前記ネットワークインタフェースは、さらに、受信されたメッセージパケットをバッファリングするためのバッファを含み、前記優先順位付けタスクリストの1つは、バッファが仮想回線に関連する少なくとも1つのメッセージパケットを含む仮想回線と関連付けられ、前記優先順位付けタスクリストのもう1つは、バッファが仮想回線に関連するメッセージパケットを、選択されたバッファ輻輳レベルで含む仮想回線と関連付けられており、受信タスクコントロールは、前記優先順位付けタスクリストの各々から選択するように構成されていることを特徴とするシステム。
  12. 請求項9に記載のシステムにおいて、1つまたは2つ以上のメッセージパケットはメッセージと関連付けられ、各メッセージは終わりを有し、前記優先順位付けタスクリストの1つは終わりのメッセージタスクリストを有することを特徴とするシステム。
  13. 請求項1に記載のシステムにおいて、ネットワークは、ソースデバイスとデスティネーションデバイスの間にそれぞれの仮想回線に対する経路の一部を形成しているスイッチングノードをさらに含み、スイッチングノードは、そのスイッチングノードがそこに接続された1つの通信リンク上の経路の一部を形成している1つまたは複数の仮想回線上を、ソースデバイスによって送信されたメッセージを受信し、受信したメッセージを内部バッファに保管し、バッファに保管されたメッセージを、そこに接続された別の通信リンク上の仮想回線上に送信し、前記仮想回線に対するメッセージをそれぞれの仮想回線上の下流側に転送するように構成され、さらにスイッチングノードは、それぞれの通信リンクが回路の一部を形成している仮想回線に対しては、バッファに保管されたメッセージを一般的にラウンドロビン方式で仮想回線上に送信するように構成されていることを特徴とするシステム。
  14. ネットワーク上のソースデバイスによるメッセージパケットの送信をスケジューリングする際に使用される送信スケジューラであって、各メッセージパケットは複数の仮想回線の1つと関連付けられている送信スケジューラにおいて、
    A. メッセージパケットが送信される仮想回線を識別するように構成された仮想回線タスクリストと、
    B. 仮想回線タスクリストを通るようにシーケンスして、メッセージパケットが送信される連続の仮想回線を識別する送信タスクコントロールであって、識別された仮想回線ごとに、送信のためにデータを好適なメッセージパケットの中で取得し、それによりメッセージパケットの送信を容易にし(facilitate)、デバイスがそのソースデバイスとなっている仮想回線のそれぞれの間でメッセージがラウンドロビン方式で送信されるように構成された送信タスクコントロールとを含み、
    前記仮想回線タスクリストは複数の優先順位付けタスクリストを含むように構成され、送信タスクコントロールは前記優先順位付けタスクリストの中から選択し、選択された優先順位付けタスクリスクごとに、メッセージパケットが送信される仮想回線を識別するように構成されていることを特徴とする送信スケジューラ。
  15. 請求項14に記載の送信スケジューラにおいて、各仮想回線は仮想回線IDによって識別され、仮想回線IDの各々は、仮想回線ID値の範囲内にある値をもち、前記優先順位付けタスクリストの各々は、前記範囲内の各仮想回線IDと関連付けられたビットを含むビットマップを有し、送信タスクコントロールは、メッセージパケットがそれぞれの優先度レベルで送信されようとする仮想回線ごとに、それぞれの優先順位付けタスクリストのビットマップ内における仮想回線の仮想回線ID値と関連付けられているビットをセットするように構成されており、送信タスクコントロールはセットされたビットを使用して、メッセージパケットが送信される仮想回線を識別することを特徴とする送信スケジューラ。
  16. 請求項14に記載の送信スケジューラにおいて、1つまたは2つ以上のメッセージパケットはメッセージと関連付けられており、各メッセージは始まりを有し、前記優先順位付けタスクリストの1つは、メッセージの始まりに関連するメッセージパケットのデータが取得されようとする仮想回線に関連付けられており、前記優先順位付けタスクリストのもう1つは、メッセージの始まりに関連するメッセージパケットのデータがすでに取得される仮想回線に関連付けられており、送信タスクコントロールは前記優先順位付けタスクリストの各々から選択レートで選択するように構成されていることを特徴とする送信スケジューラ。
  17. 請求項16に記載の送信スケジューラにおいて、送信タスクコントロールは、前記優先順位付けタスクリストの間で交互に切り替わることを特徴とする送信スケジューラ。
  18. 請求項14に記載の送信スケジューラにおいて、前記仮想回線に対するメッセージパケット送信はレート制限することが可能であり、前記優先順位付けタスクリストの1つはレート制限タスクリストを有し、送信タスクコントロールは、レート制限に関係するレートで前記レート制限タスクリストから選択するように構成されていることを特徴とする送信スケジューラ。
  19. ネットワーク上のデスティネーションデバイスによるメッセージパケットの処理をスケジューリングする際に使用される受信スケジューラであって、各メッセージパケットは複数の仮想回線の1つと関連付けられている受信スケジューラにおいて、
    A. どの仮想回線に対してメッセージパケットが受信された仮想回線を識別するように構成された仮想回線タスクリストと、
    B. 仮想回線タスクリストを通るようにシーケンスして、メッセージパケットが受信された連続の仮想回線を識別し、識別された仮想回線ごとに、デバイスがそのデスティネーションデバイスとなっている仮想回線に関連して、あらかじめ定めたオペレーションを実行可能にするように構成された受信タスクコントロールとを含み、
    前記仮想回線タスクリストは複数の優先順位付けタスクリストを含むように構成され、受信タスクコントロールは前記優先順位付けタスクリストの中から選択し、選択された優先順位付けタスクリストごとに、メッセージパケットが送信される仮想回線を識別するように構成されていることを特徴とする受信スケジューラ。
  20. 請求項19に記載の受信スケジューラにおいて、前記あらかじめ定めたオペレーションの1つは、前記メッセージパケットに関連するデータをデータストアに転送することを含むことを特徴とする受信スケジューラ。
  21. 請求項19に記載の受信スケジューラにおいて、各仮想回線は仮想回線IDによって識別され、仮想回線IDの各々は仮想回線ID値の範囲内にある値を有し、前記優先順位付けタスクリストの各々は前記範囲内の各仮想回線ID値と関連付けられたビットを含むビットマップを有し、受信タスクコントロールは、メッセージパケットが受信された仮想回線ごとに、それぞれの優先順位付けタスクリスクのうち該当するもののビットマップの中で、仮想回線の仮想回線IDと関連付けられたビットがセットされるように構成され、受信タスクコントロールはセットされたビットを使用して、メッセージパケットが送信される仮想回線を識別することを特徴とする受信スケジューラ。
  22. 請求項19に記載の受信スケジューラにおいて、前記デスティネーションデバイスの前記ネットワークインタフェースは、さらに、受信されたメッセージパケットをバッファに保管するためのバッファを含み、前記優先順位付けタスクリストの1つは、バッファが仮想回線に関連する少なくとも1つのメッセージパケットを含む仮想回線と関連付けられ、前記優先順位付けタスクリストのもう1つは、バッファが仮想回線に関連するメッセージパケットを、選択されたバッファ輻輳レベルで含む仮想回線と関連付けられており、受信タスクコントロールは、前記優先順位付けタスクリストの各々から選択するように構成されていることを特徴とする受信スケジューラ。
  23. 請求項19に記載の受信スケジューラにおいて、1つまたは2つ以上のメッセージパケットはメッセージと関連付けられ、各メッセージは終わりを有し、前記優先順位付けタスクリストの1つは終わりのメッセージタスクリストを有することを特徴とする受信スケジューラ。
JP2000545109A 1998-04-23 1999-04-23 デジタルデータネットワークにおいてメッセージ伝送をスケジューリングし、処理を行うシステムおよび方法 Expired - Lifetime JP4358437B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/065,115 1998-04-23
US09/065,115 US6795442B1 (en) 1998-04-23 1998-04-23 System and method for scheduling message transmission and processing in a digital data network
PCT/US1999/009021 WO1999054829A1 (en) 1998-04-23 1999-04-23 System and method for scheduling message transmission and processing in a digital data network

Publications (3)

Publication Number Publication Date
JP2002512459A JP2002512459A (ja) 2002-04-23
JP2002512459A5 JP2002512459A5 (ja) 2006-06-22
JP4358437B2 true JP4358437B2 (ja) 2009-11-04

Family

ID=22060429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000545109A Expired - Lifetime JP4358437B2 (ja) 1998-04-23 1999-04-23 デジタルデータネットワークにおいてメッセージ伝送をスケジューリングし、処理を行うシステムおよび方法

Country Status (6)

Country Link
US (2) US6795442B1 (ja)
EP (1) EP1080416A4 (ja)
JP (1) JP4358437B2 (ja)
AU (1) AU752188B2 (ja)
CA (1) CA2329542C (ja)
WO (1) WO1999054829A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6580721B1 (en) * 1998-08-11 2003-06-17 Nortel Networks Limited Routing and rate control in a universal transfer mode network
US6697330B1 (en) * 1999-11-26 2004-02-24 Hewlett-Packard Development Company L.P. Method and system for output flow control in network multiplexers
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7006514B2 (en) 2001-05-31 2006-02-28 Polytechnic University Pipelined maximal-sized matching cell dispatch scheduling
USRE42600E1 (en) * 2000-11-20 2011-08-09 Polytechnic University Scheduling the dispatch of cells in non-empty virtual output queues of multistage switches using a pipelined arbitration scheme
DE10065115A1 (de) * 2000-12-28 2002-07-04 Bosch Gmbh Robert Verfahren und Kommunikationssystem zum Datenaustausch zwischen mehreren über ein Bussystem miteinander in Verbindung stehenden Teilnehmern
EP1451994B1 (en) 2001-11-23 2005-12-28 Nokia Corporation Method and system for handling network congestion
US6963747B1 (en) * 2002-01-31 2005-11-08 Bbnt Solutions Llc Globally optimized channel access for wireless networks
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7305493B2 (en) * 2002-11-27 2007-12-04 Intel Corporation Embedded transport acceleration architecture
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US9699102B2 (en) * 2004-08-09 2017-07-04 Arris Enterprises Llc Very high speed cable modem for increasing bandwidth
US9722850B2 (en) * 2004-08-09 2017-08-01 Arris Enterprises Llc Method and system for transforming video streams using a multi-channel flow-bonded traffic stream
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US7724733B2 (en) * 2005-03-31 2010-05-25 International Business Machines Corporation Interconnecting network for switching data packets and method for switching data packets
US7853957B2 (en) * 2005-04-15 2010-12-14 Intel Corporation Doorbell mechanism using protection domains
US8570906B1 (en) * 2005-07-26 2013-10-29 At&T Intellectual Property Ii, L.P. Method and apparatus for assigning a virtual number during porting of a primary number
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US7853281B2 (en) * 2006-04-14 2010-12-14 Qualcomm Incorporated Methods and apparatus for tracking wireless terminal power information
US7948922B2 (en) * 2006-04-18 2011-05-24 Cisco Technology, Inc. Blocked redundant link-aware spanning tree protocol enhancement
US7821986B2 (en) * 2006-05-31 2010-10-26 Cisco Technology, Inc. WLAN infrastructure provided directions and roaming
EP2036262A1 (en) * 2006-06-20 2009-03-18 Freescale Semiconductor, Inc. Method for transmitting a datum from a time-dependent data storage means
US8001309B2 (en) 2006-06-22 2011-08-16 Freescale Semiconductor, Inc. Method and system for grouping interrupts from a time-dependent data storage system
US20080056125A1 (en) * 2006-09-06 2008-03-06 Nokia Corporation Congestion control in a wireless network
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US7978614B2 (en) 2007-01-11 2011-07-12 Foundry Network, LLC Techniques for detecting non-receipt of fault detection protocol packets
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8037399B2 (en) 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8149839B1 (en) 2007-09-26 2012-04-03 Foundry Networks, Llc Selection of trunk ports and paths using rotation
US7836198B2 (en) * 2008-03-20 2010-11-16 International Business Machines Corporation Ethernet virtualization using hardware control flow override
US8458380B2 (en) * 2008-03-26 2013-06-04 Qualcomm Incorporated Off-line task list architecture utilizing tightly coupled memory system
US8520571B2 (en) 2008-03-26 2013-08-27 Qualcomm Incorporated Reconfigurable wireless modem sub-circuits to implement multiple air interface standards
US8787433B2 (en) * 2008-03-28 2014-07-22 Qualcomm Incorporated Wall clock timer and system for generic modem
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
WO2011065227A1 (ja) * 2009-11-27 2011-06-03 日本電気株式会社 フロー制御装置、ネットワークシステム、ネットワーク制御方法およびプログラム
US9065773B2 (en) * 2010-06-22 2015-06-23 Juniper Networks, Inc. Methods and apparatus for virtual channel flow control associated with a switch fabric
CN105812365B (zh) * 2016-03-12 2018-09-28 武汉芯泰科技有限公司 一种可编程可重构的帧处理器
FR3140501A1 (fr) * 2022-09-30 2024-04-05 Orange Procédé de gestion du trafic de données entre une entité source et une entité destinataire, entité et programme d’ordinateur correspondants.
CN117851459B (zh) * 2024-03-08 2024-06-07 江苏金恒信息科技股份有限公司 一种工业数据采集下基于多级缓存的数据处理方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0257168B1 (en) * 1986-08-27 1992-06-03 International Business Machines Corporation Pseudo synchronous transportation apparatus in a communication network
JP3308525B2 (ja) * 1990-11-30 2002-07-29 株式会社日立製作所 ネットワーク
US5583861A (en) 1994-04-28 1996-12-10 Integrated Telecom Technology ATM switching element and method having independently accessible cell memories
EP0690596B1 (en) * 1994-06-28 2002-05-15 Hewlett-Packard Company, A Delaware Corporation Method and apparatus for scheduling the transmission of cells of guaranteed-bandwidth virtual channels
EP0784895B1 (en) * 1994-09-17 1998-12-09 International Business Machines Corporation Flow control method and apparatus for cell-based communication networks
US5533020A (en) * 1994-10-31 1996-07-02 International Business Machines Corporation ATM cell scheduler
US5608733A (en) * 1994-11-29 1997-03-04 Valle; Richard ATM inverse multiplexing
US5517495A (en) * 1994-12-06 1996-05-14 At&T Corp. Fair prioritized scheduling in an input-buffered switch
EP0717532A1 (en) * 1994-12-13 1996-06-19 International Business Machines Corporation Dynamic fair queuing to support best effort traffic in an ATM network
US5664116A (en) * 1995-07-07 1997-09-02 Sun Microsystems, Inc. Buffering of data for transmission in a computer communication system interface
US5625625A (en) * 1995-07-07 1997-04-29 Sun Microsystems, Inc. Method and apparatus for partitioning data load and unload functions within an interface system for use with an asynchronous transfer mode system
US5872769A (en) * 1995-07-19 1999-02-16 Fujitsu Network Communications, Inc. Linked list structures for multiple levels of control in an ATM switch
US5610921A (en) * 1995-08-31 1997-03-11 Sun Microsystems, Inc. Scalable architecture for asynchronous transfer mode segmentation and reassembly
US5712851A (en) * 1995-12-28 1998-01-27 Lucent Technologies Inc. Adaptive time slot scheduling apparatus and method utilizing a linked list mechanism
US5935213A (en) * 1996-05-02 1999-08-10 Fore Systems, Inc. System and method for generating explicit rate value information for flow control in ATAM network
US5822612A (en) * 1996-09-12 1998-10-13 Thomas; Robert E. Apparatus and method for managing schedule table pointers
US6094712A (en) * 1996-12-04 2000-07-25 Giganet, Inc. Computer network interface for direct mapping of data transferred between applications on different host computers from virtual addresses to physical memory addresses application data
US6570850B1 (en) * 1998-04-23 2003-05-27 Giganet, Inc. System and method for regulating message flow in a digital data network

Also Published As

Publication number Publication date
CA2329542C (en) 2008-11-18
US7295557B2 (en) 2007-11-13
AU3762199A (en) 1999-11-08
EP1080416A1 (en) 2001-03-07
US20040208181A1 (en) 2004-10-21
CA2329542A1 (en) 1999-10-28
EP1080416A4 (en) 2005-01-19
AU752188B2 (en) 2002-09-12
US6795442B1 (en) 2004-09-21
JP2002512459A (ja) 2002-04-23
WO1999054829A1 (en) 1999-10-28

Similar Documents

Publication Publication Date Title
JP4358437B2 (ja) デジタルデータネットワークにおいてメッセージ伝送をスケジューリングし、処理を行うシステムおよび方法
JP4852194B2 (ja) デジタルデータネットワークにおけるメッセージフローを調整するシステムおよび方法
US6914881B1 (en) Prioritized continuous-deficit round robin scheduling
US6654343B1 (en) Method and system for switch fabric flow control
US5457687A (en) Method and apparatus for backward explicit congestion notification (BECN) in an ATM network
US7843816B1 (en) Systems and methods for limiting low priority traffic from blocking high priority traffic
US7899927B1 (en) Multiple concurrent arbiters
JP2002519912A (ja) 出力ポートバッファの割当てを用いるフロー制御
US7729258B2 (en) Switching device
US8018851B1 (en) Flow control for multiport PHY
US6046982A (en) Method and apparatus for reducing data loss in data transfer devices
US5732082A (en) System and method for multi-frame received queuing with sorting in an asynchronous transfer mode (ATM) system
US5852601A (en) Method and apparatus for reactive congestion control in an asynchronous transfer mode (ATM) network
JP4072315B2 (ja) パケットスイッチ
JP4391819B2 (ja) コンピュータ・システムの入出力ノード
EP0604538B1 (en) Method and apparatus for asynchronous transfer mode (atm) network
JP4406011B2 (ja) 通信ネットワークを介して接続されたプロセッシングユニットを備えた電子回路

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041126

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20041126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060420

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060420

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081017

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090119

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: 20090710

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090806

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120814

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130814

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term