(57)【要約】      （修正有）【課題】  送信元でパケットを固定長のセルに分割、送信し、送信先で元通りのパケットを再構成、再整列する仕組みを提供し、小規模のハードウェア資源で転送レートが向上した場合でも対応可能とする。【解決手段】  セルを特定の識別子によりパケット単位で区別する機構と、パケットをパケット毎に一次保存するメモリのアドレスを獲得する機構と、セルを前記アドレスにセル番号を加えたアドレスのメモリへ書き込む機構と、パケット毎に到着セル数をカウントする機構と、到着セル数がパケット構成セル数と一致した場合にパケットが揃ったとみなす機構と、パケット毎に到着セル数と前記メモリアドレスを記録する機構とを含み、順不同に到着する前記セルからパケットを再生する第１手段と、再生されたパケット群からパケットの特定の識別子によりパケットを並び替えるべきグループに分類し、グループ毎に元通りの順番に前記パケットを再整列する第２手段を有する。 【選択図】  図１０
2008092485.tif 000002
【特許請求の範囲】
【請求項１】
送信元のノードで可変長または固定長のパケットを固定長のセルに分割した後に、複数のスイッチ経路を経て宛先のノードへ渡す分散型スイッチシステムの前記宛先ノードに適用するパケット再整列器であって、
前記セルを特定の識別子によりパケット単位で区別する機構と、
前記パケットをパケット毎に一次保存するメモリのアドレスを獲得する機構と、
前記セルを前記アドレスにセル番号を加えたアドレスのメモリへ書き込む機構と、
前記パケット毎に到着セル数をカウントする機構と、
前記到着セル数がパケット構成セル数と一致した場合にパケットが揃ったとみなす機構と
前記パケット毎に前記到着セル数と前記メモリアドアレスを記録する機構とを含み、順不動に到着する前記セルから前記パケットを再生するための第１手段と、
前記第１手段で再生されたパケット群から、前記パケットの特定の識別子によりパケットを並び替えるべきグループに分類する機能と、
前記グループ毎に未到着の先頭パケット番号と既到着の最後尾パケットの番号を管理する機能と、
前記グループ毎に未到着の先頭以外のパケットの少なくとも前記メモリアドレスを管理する機能と、
前記グループの先頭パケットから、管理中の連続する保持パケットまでを出力する機構とを含み、区別すべきグループ毎に元通りの順番に前記パケットを再整列する第２の手段とを有する分散型スイッチシステムのパケット再整列器。
【請求項２】
前記第１手段を複数個有し、セルを前記識別子によりパケット単位に区別して複数個の前記第１手段の中の一つへ送信し、前記第一手段毎に受信して前記パケット単位で収集することを特徴とする請求項１記載の分散型スイッチシステムのパケット再整列器。
【請求項３】
請求項１記載のパケット再整列器において、 セルをパケット単位で区別するための前記識別子として、少なくとも送信元番号と、優先度と、宛先番号と、パケット整理番号を全てのセルに含むことを特徴とする分散型スイッチシステムのパケット再整列器。
【請求項４】
請求項３記載のパケット再整列器において、 宛先番号をビットマップ化した上で縮約した宛先パターンを全てのセルに含むことを特徴とする分散型スイッチシステムのパケット再整列器。
【請求項５】
請求項１記載のパケット再整列器または請求項２において、セルの到着個数を判定するための識別子としてパケットから生成されたセルの個数を全てのセルに含むことを特徴とする分散型スイッチシステムのパケット再整列器。
【請求項６】
送信元のノードで可変長または固定長のパケットを固定長のセルに分割した後に、複数面のスイッチ経路をそれぞれ経て宛先のノードへ渡す分散型スイッチシステムのパケット再整列方法であって、
前記セルを特定の識別子によりパケット単位で区別し、
前記パケットをパケット毎に一次保存するメモリのアドレスを獲得し、
前記セルを前記アドレスにセル番号を加えたアドレスのメモリへ書き込み、
前記パケット毎に到着セル数をカウントし、
パケット毎に前記到着セル数と前記メモリアドレスを記録し、
前記到着セル数がパケット構成セル数と一致した場合にパケットが揃ったと判定して順不同に到着する前記セルから前記パケットを再生し、
前記の再生されたパケット群から、
前記パケットの特定の識別子によりパケットを並び替えるべきグループに分類し、
前記グループ毎に未到着の先頭パケット番号と既到着の最後尾パケットの番号を管理し、
前記グループ毎に未到着の先頭以外のパケットの少なくとも前記メモリアドレスを管理し、
前記グループの先頭パケットから、管理中の連続する保持パケットまでを出力することにより、
区別すべきグループ毎に元通りの順番に前記パケットを再整列する分散型スイッチシステムのパケット再整列方法。
【請求項７】
請求項６記載のパケット再整列方法において、パケット毎に並び替えるべきグループ毎、未到着の先頭パケット番号と既到着の最後尾パケット番号の差が設定値を超えたら、対応するグループのパケットに属するセルを最優先で出力するように、全スイッチ面へ要求するステップを更に有する分散型スイッチシステムのパケット再整列方法。
【請求項８】
請求項６記載のパケット再整列方法において、パケット毎に並び替えるべきグループ毎、未到着の先頭パケット番号と既到着の最後尾パケット番号の差が設定値を超えたら、対応するグループの対応するパケット整理番号のパケットに属するセルを最優先で出力するように全スイッチ面へ要求するステップを更に有する分散型スイッチシステムのパケット再整列方法。
【請求項９】
請求項６記載のパケット再整列方法において、パケット毎に並び替えるべきグループ毎、未到着の先頭パケット番号と既到着の最後尾パケット番号の差が設定値を超えたら、対応するグループのパケットに属するセルのうち、現在保持しているセル全てを最優先で出力するように全スイッチ面へ要求するステップを更に有する分散型スイッチシステムのパケット再整列方法。
【請求項１０】
請求項７乃至請求項１０のいずれか一つに記載のパケット再整列方法において、前記の全スイッチ面への要求後、指定した時間が経過してもセルが到着しない場合に、前記未到着セルは廃棄されたものと見做し、未到着の先頭パケット番号を一つ進めることを特徴とする分散型スイッチシステムのパケット再整列方法。
【請求項１１】
請求項６記載のパケット再整列方法において、 前記パケット毎に前記到着セル数と前記メモリアドレスを記録する機構のエントリ数が不足する状況を見越して、送信元のノードに対しパケット送信の停止要求を出し、送信元ノードでは、前記停止要求を受けて新規パケット及びセル送信を一定時間、または宛先ノードから送信再開要求を受けるまで停止することを特徴とする分散型スイッチシステムのパケット再整列方法。
【請求項１２】
請求項６記載のパケット再整列方法において、前記パケット毎に前記到着セル数と前記メモリアドレスを記録する機構のエントリ数が不足する状況において、全スイッチ面に対し、未到着セルの出力要求を出すことを特徴とする分散型スイッチシステムのパケット再整列方法。
【請求項１３】
前記未到着セルの出力を要求後、指定した時間が経過してもセルが到着しない場合に、前記未到着セルは廃棄されたものと見做し、前記パケット毎に前記到着セル数と前記メモリアドレスを記録する機構のエントリを解放するステップを更に有する請求項１２記載の分散型スイッチシステムのパケット再整列方法。
【請求項１４】
請求項６記載のパケット再整列方法において、 セルをパケット単位で区別するための前記識別子として、少なくとも送信元番号と、優先度と、宛先番号と、パケット整理番号を全てのセルに含むことを特徴とする分散型スイッチシステムのパケット再整列方法。  
【請求項１５】
請求項１４記載のパケット再整列方法において、 宛先のノードで再整列済みのパケットのパケット整理番号の一部または全てを送信元のノードに返却することにより、処理中のセルで、送信元番号と、優先度と、宛先番号、パケット整理番号が同一のセルは、必ず同一のパケットから生成されていることを保証することを特徴とする分散型スイッチシステムのパケット再整列方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルータ、サーバ、ストレージ装置などにおいて、装置内部に有する複数の機能ブロックを動的に相互に接続するスイッチ技術に関する。特に、独立動作する複数のスイッチを利用し、宛先でデータの到着順序が入れ替わる場合に、順番通りに並べ替えるための技術に関する。
【背景技術】
【０００２】
ルータなどのネットワーク転送装置やサーバ装置、複数のディスクアレイを接続するストレージ装置などでは、装置内部の機能ブロック間でデータ交換を行うためにスイッチファブリックが利用される。スイッチファブリックの交換容量は、ポート数とポート容量（回線速度）の積で表現され、大交換容量を実現するためには、ポート数とポート容量のいずれか片方、もしくは両方を増加させる必要がある。
【０００３】
ポート数を増加させるには、要素スイッチを多段結合し、オメガ網やクロス網、ファットツリー網等を形成することにより実現が可能である。また、スイッチＬＳＩ（Large Scale Integration）のポート容量を増加させることでポート容量を増加させることも可能であるが、ＬＳＩに実装可能なピン数は、その時代のＣＭＯＳ（Complementary MOS）の実装限界によって制限されるため、大容量ポートを実現すると、ＬＳＩあたりのポート数は減少する。
【０００４】
ここで、大容量ポートを少数持つＬＳＩを多段結合することでスイッチファブリック全体の交換容量を向上することは可能であるが、総ポート数を大きくするに従い接続段数が大きくなり、結果としてスイッチファブリック通過のレイテンシが大きくなる問題、宛先が異なってもスイッチファブリック内で衝突が発生してスループットが低下する問題が発生する。
【０００５】
前記の問題を克服するために、目的とする交換容量の1／Ｋの交換容量のスイッチをＫ面分用意し、入力データ（以後、パケットと呼ぶ）を各スイッチ面へ分散させ、並列動作させることで目的の交換容量を実現する分散型スイッチ方式(パラレルパケットスイッチ)がある。図２に、Ｎ入力、Ｎ出力で、Ｋ面分のスイッチを利用する分散型スイッチ方式の構成例を示す。
【０００６】
一般に、分散型スイッチでは、スイッチファブリックに入力されたパケットを、分散器１００により可変長のパケット単位、または、可変長のパケットを固定長で分割して生成したセル単位で各スイッチ面２００へ分散する。そして、並列化されたスイッチ２００を利用し、各スイッチ２００がそれぞれ独立にパケットまたはセルの宛先調停を行う。最もシンプルなスイッチ２００の構成は、単段のクロスバスイッチである。大量のポート数が必要な場合には、スイッチ２００は複数個のスイッチで構成した多段結合網となる。最後に、前記パケットまたはセルは、目的の宛先に接続されている整列器３００へ届く。
【０００７】
以上のように、分散型スイッチ方式は、個々のスイッチ２００が小容量ポートで交換容量が小さくても、スイッチ面数を増加させることにより、大容量ポートをサポートし、大容量交換が可能な方式である。また、分散型スイッチ方式は、スイッチの冗長化が容易というメリットもある。例えば、必要面数以上のスイッチ面を用意しておき、必要数以上の分は待機状態にしておく。そして、動作しているスイッチ面のうちひとつが動作不能な状態に陥った場合、待機しているスイッチに切り替えることでスイッチ全体の交換容量を低下させずに動作を続けることができる。
【０００８】
このように、分散型スイッチ方式は、大容量交換を実現でき、スイッチの冗長化が容易である利点を持つが、パケット単位で分散させた場合には、各スイッチ２００において各パケットが独立に宛先調停されるので、宛先の整列器３００へは、分散器１００で送信したパケット順番とは異なる順番で届きうる。また、セル単位で分散させた場合には、各スイッチ２００において各セルが独立に宛先調停されるので、宛先の整列器３００へは、分散器１００で送信したパケット順番及びパケット内のセル順番とは異なる順番で届きうる。
【０００９】
よって、宛先の整列器３００は、各セルを元通りのパケットへ組立てる操作と、各パケットを元通りの順番に並べ替える操作が必要となる。
【００１０】
特許文献１、特許文献２では、入力側のインタフェースでパケットをパケット単位で全スイッチ面へ分散送信し、各スイッチを独立動作させてパケット交換する分散型スイッチ方式について述べられている。この方式では、パケット内のセルは順番通り宛先の整列器３００に到着するため、宛先の整列器３００は、パケットの順番だけを元通りにすればよく、最善の状況では、スイッチ面数に応じた交換容量を実現できる。しかしながら、パケット単位で各スイッチ面２００へ送出するため、例えば、最善の状況となるのは、宛先の整列器３００へ向かう一連のパケット群が同一サイズであり、前記パケット群を構成するパケットの数が面数の整数倍である場合が挙げられる。
【００１１】
よって、スイッチ面数に応じた交換容量を実現するためには、分散器１００での分散単位は、可変長パケットを固定長セルにしたあとのセル単位であることが望ましい。この場合、先に述べたように、整列器３００では、各セルを元通りのパケットへ組立てる操作と、各パケットを元通りの順番に並べ替える操作の両方が必要となる。
【００１２】
特許文献３、特許文献４では、スイッチ２００にセル単位で分散し、整列器３００で、複数の並べ替えコンポーネントを利用し、他の並べ替えコンポーネントに記録されているパケットストリームのパケットの識別子を管理する１以上のデータ構造を使って、複数の並べ替えコンポーネント間での通信し、各セルを元通りのパケットへ組立てる操作と、各パケットを元通りの順番に並べ替える操作を実現する方法について述べている。
【００１３】
前記のような、複数の並べ替えコンポーネントを利用した整列器３００は、例えば、並べ替え用のメモリのバンド幅を超える回線においても、並べ替えができる可能性がある一方で、並べ替えるべきデータ構造の情報通信がボトルネックになる可能性や、十分な数のパケットフロー（送信元、優先度、宛先が同一のパケット群）がない場合に並べ替えが滞る可能性がある。また、複数の並べ替えコンポーネントを利用する結果、多くのハードウェア資源を必要とする可能性がある。
【００１４】
【特許文献１】US20040143593A1 System and method for re-sequencing data packets on a per-flow basis
【特許文献２】US20040141504A1 Method and system for resequencing data packets switched through a parallel packet switch
【特許文献３】US006832261B1 METHOD AND APPARATUS FOR DISTRIBUTED RESEQUENCING AND REASSEMBLY OF SUBDIVIDED PACKTES
【特許文献４】US006934760B1 METHOD AND APPARATUS FOR RESEQUENCING OF PACKETS INTO AN ORIGINAL ORDERING USING MULTIPLE RESEQUENCING COMPONENTS
【発明の開示】
【発明が解決しようとする課題】
【００１５】
送信元でパケットを一つ以上のセルに分割、送信し、複数のスイッチ経路を経た宛先において、順不同に到着するセルから、元通りのパケットを再生する仕組みと、それらのパケットを元通りの順番に並べ替える仕組みを提供することが課題である。また、転送レートが向上した場合でも対応可能な、前記のセルの再構成とパケット再整列の仕組みを提供することが課題である。また、可能な限り小規模のハードウェア資源で、前記のデータの再構成と再整列の仕組みを提供することが課題である。
【課題を解決するための手段】
【００１６】
本発明の代表的実施形態では、送信元のノードで可変長または固定長のパケットを固定長のセルに分割した後に、複数のスイッチ経路を経て宛先のノードへ渡すシステムの前記宛先ノードにおいて、セルを特定の識別子によりパケット単位で区別する機構と、パケットをパケット毎に一次保存するメモリのアドレスを獲得する機構と、セルを前記アドレスにセル番号を加えたアドレスのメモリへ書き込む機構と、パケット毎に到着セル数をカウントする機構と、到着セル数がパケット構成セル数と一致した場合にパケットが揃ったとみなす機構と、パケット毎に到着セル数と前記メモリアドレスを記録する機構とにより、第一の機能として順不同に到着する前記セルから前記パケットを再生する機能を提供する。
【００１７】
更に、前記の再生されたパケット群から、パケットの特定の識別子によりパケットを並び替えるべきグループに分類する機構と、前記グループ毎に未到着の先頭パケット番号と既到着の最後尾パケットの番号を管理する機構と、前記グループ毎に未到着の先頭以外のパケットの少なくとも前記メモリアドレスを管理する機構と、前記グループの先頭パケットから、管理中の連続する保持パケットまでを出力する機構とにより、第二の機能として区別すべきグループ毎に元通りの順番に前記パケットを再整列する方法及びシステムを提供する。
【００１８】
また、処理すべき回線の速度が向上したときに上記代表的実施形態に特徴的なシステムでボトルネックとなりうるパケット再生機能を並列化し、独立動作させて必要なスループットを満たす方法を提供する。すなわち、複数個のパケット再生機能を具備し、セルを特定の識別子によりパケット単位で区別し、複数個のパケット再生機能の中の一つへ送信する機能と、パケット再生機能毎に前記セルを受信し、前記パケット単位で収集する機能とを持つ方法及びシステムを提供する。
【００１９】
また、宛先ノードで最小限のハードウェア資源によってパケット再生機能及びパケット再整列機能を実現するために、パケット送信の停止要求を出す機能、未到着セルの出力を要求する機能、パケット毎の到着セル数と一次保存するメモリのアドレスを記録する機構のエントリを解放する機能、等を提供する。 
【発明の効果】
【００２０】
本発明を利用することにより、送信元で分割され、複数のスイッチ経路へ分散されたデータの宛先において、順不同に到着するデータから、元通りのデータを構成する仕組みと、それらのデータを元通りの順番に並べ替える仕組みを提供できる。また、転送レートが向上した場合でも対応可能な、前記のデータの再構成と再整列の仕組みを提供できる。また、可能な限り小規模のハードウェア資源で、前記のデータの再構成と再整列の仕組みを提供することができる。
【発明を実施するための最良の形態】
【００２１】
以下、より詳細な内容を添付図面に基づいて実施例で説明する。
【実施例１】
【００２２】
本発明の実施例１の分散型スイッチシステムの構成を図２に示す。分散型スイッチシステムでは、スイッチファブリックに入力されたパケットを、分散器１００により、可変長のパケットを固定長で分割して生成したセル単位で各スイッチ面２００−１〜２００−Ｋへ分散する。そして、各スイッチ面にて宛先へのスイッチングがなされ、分散されたセルは整列器３００−１〜３００−Ｎのうちの目的とする宛先に連結する一つの整列器に送信される。以上は一つの送信元のパケットを分割したセルについての動作であるが、複数の送信元からのパケットは送信元の分割器１００−１〜１００−Ｎでそれぞれ固定長のセルに分割されてセル単位で各スイッチに分散される。各スイッチ２００−１〜２００−Ｋはそれぞれ独立にセルの宛先調停を行う。最もシンプルなスイッチ２００の構成は、単段のクロスバスイッチである。
【００２３】
実施例１における整列器３００のブロック図を図１に示し、まず、整列器３００における処理の概略について説明する。最初に、データセル受信器３１０により、各スイッチ２００から順不同に到着する複数のセルを受信し、単一のセルフローとしてパケット再生器３２０へ送信する。パケット再生器３２０は、受信したセルを一時的にパケットバッファ３４０へ保持し、パケット単位で同一のパケットから生成されたセルの待ち合わせを行う。当該パケットのセルが全て集まると当該パケットに関する情報をパケット再整列器３３０へ送信する。パケット再整列器３３０は、パケットをフロー（送信元、優先度、宛先が同一のパケット群）単位で管理し、送信元での順番通りにパケットを並べ替え、当該パケット情報をスケジューラ３５０へ送信する。スケジューラ３５０は、順番通りになったパケット情報を優先度毎に管理し、所定のアルゴリズムに従い出力するパケット情報を選び、パケットバッファ３４０からパケット本体を読出し、出力する。また、データセル受信器３１０、パケット再生器３２０、パケット再整列器３３０のハードウェア資源量を最小限で済ませるための情報を収集し、制御情報として生成、出力するための制御セル生成器３６０を利用する。
【００２４】
整列器３００の各要素の詳細を説明する前に、実施例１におけるセルの構成を図３に示す。分散器１００は、可変長のパケットと、スイッチファブリック内での宛先や優先度等の情報を含む装置内情報を受信し、パケットを分割して固定長のセルのペイロード６２０とし、それぞれにヘッダ情報６１０を付与する。こうしてセルのフォーマット６００が形成される。
【００２５】
前記ヘッダ情報６１０は、様々な情報を含み、本実施例では、セル種６１１（ＴＹＰＥ）、送信元番号６１２（ＳＲＣ）、宛先番号６１３（ＤＳＴ）、宛先番号をビットマップ化した上で縮約した宛先パターン６１４（ＤＩＤ）、優先度６１４（ＱｏＳ）、パケット整理番号６１６（ＰＳＮ）、パケット内のセル番号６１７（ＣＳＮ）、パケットから生成されたセル数６１８（ＣＮＭ）、ペイロードの有効長６１９（ＬＥＮＧ）を含む。
【００２６】
本発明の分散器１００におけるセルのヘッダ情報付与方法の一実施例を図４を用いて説明する。セル分散器１００は、自身の識別番号をＳＲＣ６１２に書き込む。また、パケットに付与されている装置内情報を利用し、ＤＳＴ６１３、ＱｏＳ６１５を書き込む。ここで、ＳＲＣ６１２、ＤＳＴ６１３、ＱｏＳ６１５が同一のパケットを同一フローのパケットと呼び、フロー毎、各パケットにＰＳＮ６１６をシーケンシャルに付与する。
【００２７】
ここで、ネットワークでは宛先が唯一つであるユニキャストだけではなく、複数の宛先を含むマルチキャストが存在する。例えば、１６個の入出力を持ち、４レベルの優先度を扱うスイッチファブリックでは、各入力はユニキャストの場合は１６ｘ４＝６４フローを扱えばよい。ところが、マルチキャストを考慮すると、各入力は２１６ｘ４のオーダーのフローを扱う必要が生じ、ハードウェアでの高速な管理が事実上不可能になる。しかしながら、現実的には、全てのマルチキャストパターンが利用されることは稀であるため、宛先をビットマップで表現し、それを縮約した宛先パターン６１４を利用することで扱うフロー数を劇的に削減することができる。先の例で、ユニキャストは全パターンを、マルチキャストはユニキャストの7倍程度のパターンを扱うとすれば、２７ｘ４のオーダーのフローを扱うだけでよい。
【００２８】
図４のセルヘッダ付与部７００は、フロー毎にＰＳＮ６１６を管理するＰＳＮメモリ７３０とＰＳＮ管理部７４０、ＰＳＮメモリ７３０のエントリをポイントするポインタメモリ７２０とポインタメモリ管理部７１０により構成する。
【００２９】
ポインタメモリ７２０は、ＣＡＭ（Content Addressable Memory）による構成が理想である。エントリを宛先パターン６１４でインデックスし、各エントリにＤＳＴ６１３を格納する。入力パケットのＤＳＴ６１３でポインタメモリ７２０を参照し、一致するＤＳＴパターンが存在すれば、対応するエントリ番号をＤＩＤ６１４とする。一致するＤＳＴパターンが存在しなければ、空きエントリに当該ＤＳＴパターンを書き込み、そのエントリ番号をＤＩＤ６１４とする。
【００３０】
ＰＳＮメモリ７３０は、ＤＩＤ６１４とＱｏＳ６１５を結合した値によりインデックスする。各エントリで０始まりのＰＳＮ番号を管理し、参照されると現在のＰＳＮを読出し、ＰＳＮ６１６としたあと、ＰＳＮに１加えた値を同じエントリに書き戻す。ＰＳＮは有限のビット数で表現するため、表現できる最大値となった後は、ラップアラウンドして、再び０に戻る。 
各パケットは、セル６００のペイロードサイズによって分割し、各ペイロードには、セルヘッダ６１０を付与する。同一パケットから生成されるセルは、ＳＲＣ６１２、ＤＳＴ６１３、ＤＩＤ６１４、ＱｏＳ６１５、ＰＳＮ６１６が同一である。また、同一パケットから生成されたセルの先頭から順に０始まりのＣＳＮ６１７を1ずつ増加させながら付与する。
【００３１】
こうして、必要なセルヘッダ６１０を付与したセル６００を、分散器１００は、各スイッチ面２００へ分散し、各スイッチ面２００を通過してセルは宛先の整列器３００へ届く。
【００３２】
ここで、整列器３００の各要素の詳細について説明する。データセル受信器３１０は、全スイッチ面２００からの入力毎に、内部にＦＩＦＯキューで構成される緩衝バッファを備え、一旦、データセルを前記緩衝バッファに蓄え、入力のあった前記緩衝バッファから順番にセルを取り出して、セル分散器３１５へ送信する。前記緩衝バッファのバックプレッシャ情報、または、クレジット回復情報を制御セル生成器３６０へ送信し、前記制御セル生成器３６０は、同情報を各スイッチ面２００へ伝達し、各スイッチ面２００からのセル受信により、緩衝バッファが溢れないように制御を行う。
【００３３】
本発明の整列器３００におけるパケット再生器３２０のブロック図を一実施例として図５に示す。パケット再生器３２０は、パケットを構成する全てのセルが揃うまでパケット毎にセルの待ち合わせを行うセル収集メモリ３２３、セル収集メモリ３２３のエントリを示すためのポインタメモリ３２１、及び、両メモリを管理するメモリ管理部３２２、セルをパケットバッファ３４０へ一旦書き込み、セルの待ち合わせを完了したパケットに関する情報をパケット再整列器３３０へ送信するパケット再生制御部３２４により構成する。ポインタメモリ３２１は、ＣＡＭによる構成が理想である。
【００３４】
図６に示すフローチャートを利用し、前記パケット再生器３２０によるパケット再生処理の説明を行う。前記パケット再生器３２０は、リンク４０１経由でセルを受信し（ステップ８００）、セルヘッダ６１０のＣＮＭ６１８により、パケットが複数のセルで構成されているか調べる（ステップ８０１）。ＣＮＭ６１８が２以上であればパケットは複数のセルで、そうでなければパケットは単一のセルで構成されている。
【００３５】
もし、パケットが単一のセルにより構成されているのであれば、パケット再生制御部３２４は、セルのペイロード６２０を一次保存するパケットバッファ３４０のアドレスＰＢＵＦ＿ＢＡをリンク４０２経由で獲得し（ステップ８０２）、リンク４０３経由で当該ＰＢＵＦ＿ＢＡアドレスへセルのペイロード６２０を書き込み（ステップ８０３）む。そして、有効なパケット長を計算し、リンク４０４経由でＰＢＵＦ＿ＢＡ、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５、ＰＳＮ６１６、パケット長の情報をパケット再整列器３３０へ送信し（ステップ８３５）、当該セルの処理を終了する（ステップ８５０）。ここまでの処理は、パケットが単一のセルで構成されているケースであり、本操作により、パケットバッファ３４０上でパケットは再生されている。ここで、ＰＢＵＦ＿ＢＡは、パケット一つ分を格納できる粒度で設定する。また、パケット長は、ＣＮＭ６１８にセルの最大ペイロード長を乗じ、末尾セルの有効ペイロード長ＬＥＮＧ６１９を加えることで計算できる。
【００３６】
もし、パケットが複数のセルにより構成されているのであれば、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５、ＰＳＮ６１６が同一のセルがセル収集メモリ３２３で待ち合わせを行っているか、ポインタメモリ３２１を参照して調べる（ステップ８１０）。前記同一セルが、まだ、待ち合わせを行っていなければ、新たにポインタメモリ３２１のエントリ、セル収集メモリ３２３のエントリ、前記ＰＢＵＦ＿ＢＡを獲得する（ステップ８２０）。そして、前記ＰＢＵＦ＿ＢＡにＣＳＮ６１７を加えた値で表現されるアドレスへ当該セルのペイロード６２０を書き込む（ステップ８２１）。また、セル収集メモリ３２３の獲得エントリへ、前記ＰＢＵＦ＿ＢＡと到着セル数１を書き込み（ステップ８２２）、尚且つ、当該セルが当該パケットの末尾セルであればＬＥＮＧ６１９も書き込み（ステップ８２３）、当該セルの処理を終了する（ステップ８５０）。
【００３７】
また、ステップ８０２で、ポインタメモリ３２１を参照した結果、前記同一のセルがセル収集メモリ３２３で待ち合わせを行っていれば、ポインタメモリ３２１が示すセル収集メモリ３２３のエントリからＰＢＵＦ＿ＢＡと到着セル数を読み出す（ステップ８３０）。そして、前記ＰＢＵＦ＿ＢＡにＣＳＮ６１７を加えた値で表現されるアドレスへ当該セルのペイロード６２０を書き込む（ステップ８３１）。また、到着セル数に１を加える（ステップ８３２）。
【００３８】
ここで、到着セル数がパケット構成セル数ＣＮＭ６１８と一致しているか調べる（ステップ８３３）。不一致であれば、まだ、パケットを構成するセルが全て集まっていないため、セル収集メモリ３２３の獲得エントリへ到着セル数を上書きし（ステップ８４０）、尚且つ、当該セルが当該パケットの末尾セルであればＬＥＮＧ６１９も書き込み（ステップ８４１）、当該セルの処理を終了する（ステップ８５０）。
【００３９】
ステップ８３３において、到着セル数がパケット構成セル数ＣＮＭ６１８と一致していれば、パケットを構成する全てのセルが揃ったため、ポインタメモリ３２１の当該エントリを解放する（ステップ８３４）。そして、有効なパケット長を計算し、当該パケットのＰＢＵＦ＿ＢＡ、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５、ＰＳＮ６１６、パケット長の情報をパケット再整列器３３０へ送信し（ステップ８３５）、当該セルの処理を終了する（ステップ８５０）。ここまでの処理は、パケットが複数のセルで構成されているケースであり、本操作により、パケットバッファ３４０上でパケットは再生されている。
【００４０】
次に、本発明の整列器３００において、受信パケット情報を再整列するためのパケット再整列器３３０のブロック図を一実施例として図７に示す。図８に示すフローチャートを利用し、前記パケット再整列器３３０によるパケット順序再整列処理の説明を行う。前記パケット再整列器３３０は、リンク５０１経由で、パケット再生器３２０から、再生済みのパケットのパケット情報として、当該パケットのＰＢＵＦ＿ＢＡ、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５、ＰＳＮ６１６、パケット長を受信する（ステップ９００）。この時点では、パケットの順番は保証されていず、順不同の状態である。
【００４１】
パケット再整列器３３０は、前記パケット情報受信後、当該パケットが所属するフロー、すなわち、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５が同一のパケットがフロー管理メモリ３３３で管理されているか、ポインタメモリ３３１を参照して調べる（ステップ９０１）。尚、ポインタメモリは理想的にはＣＡＭで構成し、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５をデータとして記録し、そのエントリ番号がフロー管理メモリ３３３を示すポインタとなる。ポインタメモリ３３１の管理、ポインタメモリ３３１とフロー管理メモリ３３３との対応付けの処理はメモリ管理部３３２を通じて行う。
【００４２】
前記同一フローのパケットが管理中でなければ、ポインタメモリ３３１のエントリ、フロー管理メモリ３３３のエントリを獲得する（ステップ９０２）。
【００４３】
受信パケット情報のＰＳＮ６１６を確認し（ステップ９０３）、ゼロであれば未管理フローの先頭パケットであるため、当該パケットのＰＢＵＦ＿ＢＡ、ＱｏＳ６１５、パケット長をリンク５０２経由でスケジューラ３５０へ送信し（ステップ９０４）、フロー管理メモリ３３３の該当エントリにＨｅａｄ Ｐｏｉｎｔｅｒ＝１、Ｔａｉｌ Ｐｏｉｎｔｅｒ＝１を書き込み（ステップ９０５）、当該パケットの処理を終了する（ステップ９５０）。
【００４４】
尚、フロー管理メモリ３３３が各エントリで管理するＨｅａｄ Ｐｏｉｎｔｅｒは、該当するフローの未到着の先頭パケット番号を示す。また、Ｔａｉｌ Ｐｏｉｎｔｅｒは、該当するフローの既到着の最後尾パケット番号を示す。
【００４５】
また、ステップ９０３において、受信パケット情報のＰＳＮ６１６がゼロでなければ、未管理フローの先頭以外のパケットであるため、当該パケットのＰＢＵＦ＿ＢＡとパケット長をパケット再整列メモリ３３４の該当エントリ、すなわち、フロー管理メモリ３３３のエントリ番号を上位インデックス、ＰＳＮ６１６を下位インデックスとしたメモリ番地へ書き込み、当該エントリを有効（Ｖａｌｉｄ＝１）にする（ステップ９１０）。そして、フロー管理メモリ３３３の該当エントリにＨｅａｄ Ｐｏｉｎｔｅｒ＝０，Ｔａｉｌ Ｐｏｉｎｔｅｒ＝ＰＳＮを書き込み（ステップ９１１）、当該パケットの処理を終了する（ステップ９５０）。
【００４６】
尚、パケット再整列メモリ３３４は、フロー管理メモリ３３３のエントリ数に相当する数の循環バッファ構造を持ち、各循環バッファで、各フローのＰＢＵＦ＿ＢＡ、パケット長を管理する。
【００４７】
また、ステップ９０１において、当該パケットが所属するフローがフロー管理メモリ３３３で管理されていれば、ポインタメモリ３３１の示すフロー管理メモリ３３３のエントリのＨｅａｄ Ｐｏｉｎｔｅｒ、Ｔａｉｌ Ｐｏｉｎｔｅｒを読出す（ステップ９２０）。
【００４８】
ステップ９２１において、Ｈｅａｄ Ｐｏｉｎｔｅｒが受信パケット情報のＰＳＮ６１６と一致していれば、当該フローの未到着先頭パケットであるため、当該パケットのＰＢＵＦ＿ＢＡ、ＱｏＳ６１５、パケット長をリンク５０２経由でスケジューラ３５０へ送信する（ステップ９２２）。ここで、Ｈｅａｄ ＰｏｉｎｔｅｒがＴａｉｌ Ｐｏｉｎｔｅｒが一致していれば、フロー管理メモリ３３３の該当エントリのＨｅａｄ ＰｏｉｎｔｅｒとＴａｉｌ Ｐｏｉｎｔｅｒ両方を１増やし（表現できる最大値を越えたら、ラップアラウンドして、オールゼロ）（ステップ９２３、９２４）、当該パケットの処理を終了する（ステップ９５０）。
【００４９】
ステップ９２３において、Ｈｅａｄ ＰｏｉｎｔｅｒがＴａｉｌ Ｐｏｉｎｔｅｒが不一致であれば、当該フローのパケット情報がいくつか、既にパケット再整列メモリ３３４に記録されているため、まず、フロー管理メモリ３３３の同Ｈｅａｄ Ｐｏｉｎｔｅｒを１増やし（表現できる最大値を越えたら、ラップアラウンドして、オールゼロ）（ステップ９３０）、フロー管理メモリ３３３のエントリ番号を上位インデックス、ＰＳＮ６１６を下位インデックスとしたメモリ番地のＰＢＵＦ＿ＢＡを読み出す（ステップ９３１）。
【００５０】
ステップ９３２で、当該エントリが有効であれば（Ｖａｌｉｄ＝１）、当該フローの次のパケットが記録されていたことになるため、同エントリを無効化（Ｖａｌｉｄ＝０）し、当該ＰＢＵＦ＿ＢＡと当該フローのＱｏＳ６１５とパケット長をリンク５０２経由でスケジューラ３５０へ送信し（ステップ９３３）、再度、ステップ９２３に戻る。
【００５１】
ステップ９３２で、当該エントリが無効であれば（Ｖａｌｉｄ＝０）、当該フローの次のパケットは未到着であるため、当該パケットの処理を終了する（ステップ９５０）。
【００５２】
また、ステップ９２１において、Ｈｅａｄ Ｐｏｉｎｔｅｒが受信パケット情報のＰＳＮ６１６と不一致であれば、当該フローの先頭以外のパケットであるため、当該パケットのＰＢＵＦ＿ＢＡとパケット長をパケット再整列メモリ３３４の該当エントリ、すなわち、フロー管理メモリ３３３のエントリ番号を上位インデックス、ＰＳＮ６１６を下位インデックスとしたメモリ番地へ書き込み、当該エントリを有効（Ｖａｌｉｄ＝１）にする（ステップ９４０）。
【００５３】
次に、ステップ９４１において、当該パケット情報のＰＳＮ６１６が、Ｔａｉｌ Ｐｏｉｎｔｅｒより小さければ、ここで、当該パケットの処理を終了する（ステップ９５０）。
【００５４】
また、ステップ９４１において、当該パケット情報のＰＳＮ６１６が、Ｔａｉｌ Ｐｏｉｎｔｅｒより大きければ、当該フローの現在管理している最後尾のパケットより後のパケットであるため、Ｔａｉｌ Ｐｏｉｎｔｅｒを当該ＰＳＮ６１６で更新し（ステップ９４２）、当該パケットの処理を終了する（ステップ９５０）。
【００５５】
以上の操作により、パケット再整列器３３０は、パケットを順番通りに並べ直す。また、図８のフローチャートに示す各パケット情報の処理は、複数のパケット情報間でオーバーラップして処理しても良い。
【００５６】
最後に、本発明の整列器３００において、スケジューラ３５０のブロック図を一実施例として図９に示し、説明する。スケジューラ３５０は、ＦＩＦＯ（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）で構成される複数の優先度バッファ３５１を備え、リンク５０２経由でパケット再整列器３３０から、当該パケットのＰＢＵＦ＿ＢＡ、パケット長、ＱｏＳ６１５を受信すると、対応する優先度バッファ３５１に前記ＰＢＵＦ＿ＢＡとパケット長を登録する。
【００５７】
いずれかの優先度バッファ３５１に登録データがあれば、選択器３５２は、所定のアルゴリズムに従い、優先度バッファ３５１の一つを選ぶ。例えば、優先度が高いものを常に優先的に選ぶ等の手法があるが、本特許では特に規定しない。更に、選択器３５２は、選んだ優先度バッファ３５１の先頭のＰＢＵＦ＿ＢＡで示されるパケットバッファ３４０のアドレスから、対応するパケット長分だけ、リンク５１０経由で当該パケットを読み出し、リンク５１１経由で出力する。また、選択器３５２は、読出しに利用したＰＢＵＦ＿ＢＡをパケットバッファアドレスプール３５３へ返却する。パケットバッファアドレスプール３５３は、パケットバッファ３４０で利用可能なＰＢＵＦ＿ＢＡをＦＩＦＯキューに蓄えておき、パケット再生器３２０の要求に応じてリンク４０２を経由して前記ＦＩＦＯキューの先頭のＰＢＵＦ＿ＢＡを割り当てる。
【００５８】
以上、本発明によるセル分散型スイッチにおける再整列方法について詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例２】
【００５９】
実施例１で説明した整列器３００は、処理する回線速度の向上に伴い、パケット再生器３２０が処理のボトルネックになりうる。具体的には、同一パケットの検索やエントリ登録、削除に用いるポインタメモリ３２１がボトルネックとなりうる。そこで、実施例２では、前記ボトルネックを解消するために、パケット再生器３２０を並列化して十分なスループットを確保する。
【００６０】
図１０に実施例２における整列器３００′のブロック図を示す。この整列器３００は、パケット再生器３２０を複数個備え、その手前にセル分散器３１５を備える。
【００６１】
セル分散器３１５は、セルを特定の識別子によりパケット単位で区別し、対応するパケット再生器３２０へ送信する。例えば、パケット再生器３２０を４個備える場合、セルのパケット番号ＰＳＮ６１６の４の剰余（４で割った余り）で示される番号を持つパケット再生器３２０へ当該セルを送信する。この操作により、同一パケットから構成されるセルは必ず同一のパケット再生器３２０で収集可能である。
【００６２】
また、短時間に特定のパケット再生器３２０にセルが集中する可能性があるため、図１１に示すようにセル分散器３１５は、セル振り分けを行う分散器３１６と各パケット再生器３２０との間にＦＩＦＯキューで構成される緩衝バッファ３１７を備える構成を採っても良い。
【００６３】
それぞれのパケット再生器３２０は、実施例１で示したパケット再生器３２０と同一の構成と機能を持つ。
【００６４】
また、実施例２では、パケット再整列器３３０は、複数のパケット再生器３２０からパケット情報を受信する。このため、パケット再整列器３３０は図７で示すリンク５０１の手前にパケット再生器３２０の個数分のＦＩＦＯキューで構成される緩衝バッファを備え、所定のアルゴリズムに従って、選択した一つのＦＩＦＯキューからパケット情報を取り出す。所定のアルゴリズムは、例えばラウンドロビン制御でも良いし、当該パケット情報のＱｏＳ６１５が高位のものを優先的に選んでも良い。
【００６５】
以上、本発明によるセル分散型スイッチにおける再整列方法について詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例３】
【００６６】
実施例１や実施例２において利用する様々なハードウェア資源は有限であるため、不足しないように有効利用する必要がある。例えば、実施例１で示した宛先番号をビットマップ化した上で縮約した宛先パターンＤＩＤ６１４の利用は、ユニキャストとマルチキャストを同様に扱いつつ、パケット再生器３２０のポインタメモリ３２１のエントリ数とセル収集メモリ３２３のエントリ数、また、パケット再整列器３３０のポインタメモリ３３１のエントリ数とフロー管理メモリ３３３のエントリ数、パケット再整列メモリ３３４のエントリ数等のハードウェア量を削減する工夫のひとつである。
【００６７】
この他にも、ハードウェア量を必要最小限に抑えることで、より低コストで大容量交換可能なスイッチファブリックを実現できる。そこで、実施例３では、可能な限り少量のハードウェア資源で特に整列器３００を実現する手法について説明する。
【００６８】
例えば、図７で示すパケット再整列器３３０のパケット再整列メモリ３３４のエントリ数を更に削減するためには、各フローの先頭近くのパケットが順調に届くようにすればよい。
【００６９】
分散型スイッチで各フローの先頭パケットが順調に届かない主たる理由として、高優先度のパケットが優先的にスイッチ面２００で出力される結果、低優先度のパケットがいずれかのスイッチ面２００に滞留することが挙げられる。
【００７０】
そこで、図１２のフローチャートで示すように、フロー管理メモリ３３３で管理する各フローの未到着の先頭パケット番号ＰＳＮと既到着の末尾パケット番号ＰＳＮの差、すなわち、当該フローのＨｅａｄ ＰｏｉｎｔｅｒとＴａｉｌ Ｐｏｉｎｔｅｒの差が所定の閾値以上となったら、当該整列器３００に接続される全てのスイッチ面２００に対し、当該フローの未到着の先頭パケットを構成するセルを出力するための要求（ＰＵＬＬ要求）を送信する（ステップ９６０、９６１）。ＰＵＬＬ要求は当該パケットのＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５を含む。また、当該パケットを構成するセル群を特定するためにＰＳＮ６１６を含んでもよい。また、ＰＵＬＬ要求送信とともにタイマをスタートさせる（ステップ９６２）。尚、正確には、前記ＰＵＬＬ要求は、図７の再整列制御部３３５からリンク５０３経由で、図１または図１０の制御セル生成器３６０に送信され、そこから全スイッチ面２００へ送信される。
【００７１】
ＰＵＬＬ要求を受信した各スイッチ面２００は、例えば、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５が一致するセルのうち先頭のものだけを最優先で出力する。または、各スイッチ面２００は、ＰＵＬＬ要求を受信した時に保持しているＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５が一致するセル全てを最優先で出力する。または、各スイッチ面２００は、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５、ＰＳＮ６１６が一致するセルだけを最優先で出力する。または、各スイッチ面２００は、ＰＵＬＬ要求を受信した時に保持しているＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５が一致するセルを先頭から順にＰＳＮ６１６が一致するまで全てを最優先で出力する。ＰＳＮ６１６が一致しない場合は、ＰＵＬＬ要求を受信した時に保持していた対応するセル全てが出力される。または、各スイッチ面２００は、セルを出力するのではなく、セルを廃棄しても良い。
【００７２】
当該セルが優先的に出力された場合、当該セルは、一定時間の間に、パケット再生器３２０及びパケット再整列器３３０に到着することが期待される。図１２のフローチャートのステップ９６３において、ステップ９６２でカウントをスタートさせたタイマが、前記の一定時間を超えた場合、当該セルは、何らかの理由で消滅したものとみなし、当該セルを収集するパケット再生器３２０の該当するポインタメモリ３２１のエントリとセル収集メモリ３２３のエントリをクリアする（ステップ９６４）。また、パケット再整列既３３０のフロー管理メモリ３３３の当該フローのＨｅａｄ Ｐｏｉｎｔｅｒを１進め（ステップ９６５）、処理を終了する（ステップ９６６）。
【００７３】
また、パケット再生器３２０において、ポインタメモリ３２１またはセル収集メモリ３２３の不足する状況を避けるために、ポインタメモリ３２１またはセル収集メモリ３２３の各エントリにタイマを設ける方法がある。この場合、パケットを構成するセルの一つがパケット再生器３２０に届くと、当該エントリのタイマをスタートさせる。
【００７４】
前記タイマは、当該パケットを構成する全てのセルが到着すると、ポインタメモリ３２１のエントリを解放するのと同時にクリアする。
【００７５】
しかしながら、一定時間の間に当該パケットを構成する全てのセルが到着しない場合、当該パケットのＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５を含む前記のＰＵＬＬ要求をリンク４０５経由で、図１または図１０の制御セル生成器３６０に送信し、そこから全スイッチ面２００へ送信する。尚、当該パケットを構成するセル群を特定するためにＰＳＮ６１６を含んでもよい。各スイッチ面２００での扱いは、パケット再整列器３３０が送信するＰＵＬＬ要求と同じである。
【００７６】
ＰＵＬＬ要求送信後、前記タイマを再度スタートさせ、一定時間の間に当該パケットを構成する全てのセルがパケット再生器３２０に届かなければ、当該セルは何らかの理由で消滅したものとみなす。そして、ポインタメモリ３２１またはセル収集メモリ３２３の関係する全てのエントリとタイマをクリアし、当該パケットのパケット情報として、リンク４０４経由でＰＢＵＦ＿ＢＡ、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５、ＰＳＮ６１６情報に加え、パケットが無効である情報をパケット再整列器３３０へ送信する。尚、パケット長は、計算できない可能性があるため送信しない。
【００７７】
前記パケット情報を受信したパケット再整列器３３０は、同パケット情報が関係するフローの先頭であれば、対応するフロー管理メモリ３３３のＨｅａｄ Ｐｏｉｎｔｅｒを１進め（表現できる最大値を越えたら、ラップアラウンドして、オールゼロ）ることで、当該パケット情報を破棄する。また、当該ＰＢＵＦ＿ＢＡはスケジューラ３５０へ送信し、パケットバッファアドレスプール３５３へ返却する。
【００７８】
また、前記パケット情報を受信したパケット再整列器３３０は、同パケット情報が関係するフローの末尾であれば、対応するフロー管理メモリ３３３のＴａｉｌ ＰｏｉｎｔｅｒをＰＳＮ６１６で更新する。先頭でも末尾でもなければ、フロー管理メモリ３３３のエントリの内容は変更しない。いずれにしても、パケット再整列メモリ３３４には、当該パケット情報のＰＢＵＦ＿ＢＡとＶａｌｉｄ＝１を記録（パケット長は無効）し、更に廃棄ビットのフィールドを用意しておき、当該エントリの廃棄ビットを有効にする。そして、図８のフローチャートでは、フロー管理メモリ３３３のエントリを読み出してＶａｌｉｄ＝１であっても、廃棄ビットが１であれば、当該パケット情報は破棄し、スケジューラ３５０へは、当該ＰＢＵＦ＿ＢＡをパケットバッファアドレスプール３５３へ返却するために送信する。
【００７９】
尚、パケット再生器３２０において、ポインタメモリ３２１またはセル収集メモリ３２３の不足する状況を避けるための他の方法として、ポインタメモリ３２１の利用エントリが設定した閾値を超えた場合に、図１または図１０の送信元である全ての分散器１００に新規のパケット送信停止要求を出す方法がある。この場合、新規パケット送信停止要求が、各分散器１００に届くと、新規パケット及びそこから生成されるセルの送信が停止するため、各スイッチ面２００に溜まっているセルが順次出力され、やがて、各整列器３００で不足していたポインタメモリ３２１、セル収集メモリ３２３のエントリ不足は解消される。各分散器１００は、新規パケット送信を停止してから、設定時間が経過したら、再度新規パケット及びセルの送信を開始すればよい。または、各整列器３００が、ポインタメモリ３２１またはセル収集メモリ３２３のエントリ不足が解消された旨を各分散器１００へ伝え、その信号をトリガとして各分散器１００は、新規パケット及びセルの送信を開始すればよい。
【００８０】
また、本発明のシステムでは、ＳＲＣ６１２、ＤＩＤ６１４、ＱｏＳ６１５で表現されるフロー毎に、図２の各分散器１００が各パケットにＰＳＮ６１６を割り振る。ＰＳＮ６１６は、各整列器３００において、各セルをパケット毎に組み立てるため、及び、各パケットをフロー順に整列させるために利用する。よって、整列器３００でパケットの再整列が完了するまで、分散器１００では同一フローのＰＳＮ６１６を新たに他のパケットに割り当てるべきではなく、仮に割り当てた場合、整列器３００で異なるパケットのセルが交じり合い不整合を起こしうる。
【００８１】
そこで、現在利用中のＰＳＮ６１６を新たに別のパケットに割り当てないことを保証するための仕組みの実施例を示す。
【００８２】
まず、図４において、ＰＳＮメモリ７３０の各エントリには、管理中のＰＳＮ６１６の他に、ＰＳＮのクレジットを管理する。ＰＳＮのクレジットの粒度は、最小粒度では、１パケット分である。最大粒度では、当該ＰＳＮで表現可能な全パケット分である。前記ＰＳＮのクレジットがある限りにおいて、分散器１００は、当該フローのパケットを各スイッチ面２００へ送信できる。送信するたびに、対応するＰＳＮのクレジットを減らす。前記最小粒度の場合、１パケット送信する毎にＰＳＮのクレジットを減らす。前記最大粒度の場合、全パケット送信したらＰＳＮのクレジットを減らす。
【００８３】
図１または図１０のパケット再整列器３３０では、スケジューラ３５０に送ったパケットのＰＳＮ６１６を参照し、前記のＰＳＮのクレジット粒度に応じて、ＰＳＮのクレジットを図７の再整列制御器３３５がリンク５０３経由で、いずれかひとつのスイッチ面２００を経由させ、対応する分散器１００のＰＳＮメモリ７３０へ返却する。ここで、ＰＳＮのクレジット粒度が最小粒度の場合、１パケット毎にクレジットを返却し、最大粒度の場合、当該フローの最大ＰＳＮが通過後に１クレジット返却する。
【００８４】
ここで、前記最小粒度とすると、クレジット情報が頻繁に更新されすぎ、効率が悪い可能性がある。また、前記最大粒度とすると、分散器１００がフローの最大ＰＳＮを持つパケットを送信後、当該パケットまで全てが整列器３００で整列されてから出ないと、当該フローの新規のパケットを送信できなくなる。
【００８５】
そこで、一般には、ＰＳＮのクレジットは２個分とし、ＰＳＮの最大値の半分単位で管理する方法が効率がよい。例えば、フローあたり、１０２４種類（１０ビット）のＰＳＮを持つ場合、前半、後半の５１２種類ずつにＰＳＮのクレジットを管理する。整列器３００は、当該フローの前半の５１２個のパケットまでの整列を終えた時点で、前半分の１クレジットを分散器１００へ返却する。この間に、分散器１００では、当該不ローンも後半の５１２種類に属するパケットの送信を続けることができる。
【００８６】
このときの、ＰＳＮクレジット返却のフローチャートを図１３に示す。図７の再整列器３３０のフロー管理メモリ３３３のＨｅａｄ Ｐｏｉｎｔｅｒ、Ｔａｉｌ Ｐｏｉｎｔｅｒのビット幅はＰＳＮのビット幅に一致させる。すると、前記の前半、後半は、Ｈｅａｄ Ｐｏｉｎｔｅｒの最上位ビットが０から１、もしくは１から０へ反転したときと判定することができる（ステップ９７０）。前記のＨｅａｄ Ｐｏｉｎｔｅｒの最上位ビットの反転が発生したら、当該フローのＳＲＣ６１２で示されるセル送信元の図１もしくは図１０の分散器１００に向かって、図４で示すＰＳＮメモリ７３０の対応するＤＩＤ６１４、ＱｏＳ６１５エントリ宛てにＰＳＮクレジットを返却し、処理を終了する（ステップ９７１、９７２）。
【００８７】
以上、本発明によるセル分散型スイッチにおける再整列方法について詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【産業上の利用可能性】
【００８８】
本発明によるセル分散型スイッチにおける再整列方法は、大容量回線を利用したデータ交換が必要なシステムで利用することができる。例えば、ルータやスイッチに代表されるネットワーク装置内のスイッチファブリックや、サーバやストレージ機器の装置内のスイッチファブリック等での利用が考えられる。
【図面の簡単な説明】
【００８９】
【図１】本発明の整列器の一実施形態を示すブロック図である。
【図２】分散型スイッチ構成例を示すブロック図である。
【図３】本発明におけるデータセルの一実施形態を示す説明図である。
【図４】本発明におけるデータセルのヘッダ情報付与方法の一実施形態を示す説明図である。
【図５】本発明のパケット再生器の一実施形態を示すブロック図である。
【図６】本発明におけるパケット再生方法の一実施形態を示すフローチャートである。
【図７】本発明のパケット整列器の一実施形態を示すブロック図である。
【図８】本発明におけるパケット整列方法の一実施形態を示すフローチャートである。
【図９】本発明のスケジューラの一実施形態を示すブロック図である。
【図１０】本発明の並列型パケット再生器を含む整列器の一実施形態を示すブロック図である。
【図１１】図１０内のセル分散器の一実施形態を示すブロック図である。
【図１２】本発明におけるパケット整列方法の一実施形態を示すフローチャートである。
【図１３】本発明におけるパケット整理番号重複利用抑止の一実施形態を示すフローチャートである。
【符号の説明】
【００９０】
１００：分散器
２００：スイッチ
３００、３００′：整列器
３１０：データセル受信器
３２０：パケット再生器
３３０：パケット再整列器
３４０：パケットバッファ
３５０：スケジューラ
３６０：制御セル生成器
６００：セルフォーマット
６１０：セルヘッダフォーマット
６２０：セルペイロード。
【図１】
2008092485.tif 000003
【図２】
2008092485.tif 000004
【図３】
2008092485.tif 000005
【図４】
2008092485.tif 000006
【図５】
2008092485.tif 000007
【図６】
2008092485.tif 000008
【図７】
2008092485.tif 000009
【図８】
2008092485.tif 000010
【図９】
2008092485.tif 000011
【図１０】
2008092485.tif 000012
【図１１】
2008092485.tif 000013
【図１２】
2008092485.tif 000014
【図１３】
2008092485.tif 000015