(57)【特許請求の範囲】
【請求項１】
スイッチファブリックの入力にあたる複数の分散部と、
スイッチファブリックの出力にあたる複数の整列部と、
それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部と
を備え、
前記分散部は、
入力される可変長のパケットを固定長のセルに分割し、パケット先頭セルには先頭記号を付与し、パケット末尾セルには末尾記号を付与し、全セルに対して自分散部を示す送信元識別子と宛先となるひとつ又は複数の整列部を示す宛先情報とを付与する機構と、
セルからパケットを復元するためのセルの順番を示す整理番号を、宛先となる整列部毎に管理する機構と、
宛先情報に基づき前記管理する機構を参照して、宛先に対応するひとつ又は複数の前記整理番号をセルに付与する機構と、
複数の前記交換部へセルを振り分けて出力する機構と
を有し、
前記整列部は、
複数の前記交換部を介して受信したセルの送信元識別子に従い、送信元の分散部毎に受信セルを分類する機構と、
分散部毎に分類されたセルに対して、該セルに付与された自宛先に対応する整理番号に従い、前記セルを整列する機構と、
整列されたセルを順に格納する分散部毎の整列済みキューと、
前記整列済みキューのうち、末尾記号が付与されたパケット末尾セルまで格納している前記整列済みキューを選び、先頭記号が付与されたパケット先頭セルから前記パケット末尾セルまでを取り出してパケットを復元し、出力する機構と
を有し、
前記分散部の前記管理する機構は、
複数の宛先を含む宛先情報が予め指定したパターンのパケットについて、該パケットを復元するためのセルの順序を示す指定パターン用の整理番号をさらに管理し、
前記分散部の前記整理番号をセルに付与する機構は、
入力したパケットの宛先情報が予め指定したパターンである場合は、前記管理する機構を参照し、前記指定パターン用の整理番号をセルに付与し、
前記整列部では、宛先が指定パターンの場合の整理番号の期待値と宛先が指定パターンでない場合の整理番号の期待値とを別々に管理し、宛先が指定パターンか否かにより別々に、セルに付与された整理番号に従いセルを整列する分散型スイッチファブリック。
【請求項２】
スイッチファブリックの入力にあたる複数の分散部と、
スイッチファブリックの出力にあたる複数の整列部と、
それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部と、
を備え、
前記分散部は、
入力される可変長のパケットを固定長のセルに分割し、パケット先頭セルには先頭記号を付与し、パケット末尾セルには末尾記号を付与し、全セルに対して自分散部を示す送信元識別子と宛先となるひとつ又は複数の整列部を示す宛先情報とを付与する機構と、
各ビットが前記整列部に対応し、ビットの値が１の前記整列部へセルを送信し及びビットの値が０の前記整列部へはセルを送信しないための宛先ビットマップに対し、予め定められたふたつの宛先に対応する２ビットずつを組み合わせ、該２ビットの組合せパターンのうち０１、１０、１１の３種類の組合せパターンが該ふたつの宛先へのフローとして予め定義され、該ふたつの宛先の組み合わせ毎に、該３種類のフローに対応したセルの順番を示す整理番号を管理する機構と、
宛先ビットマップの予め定められたふたつの宛先に対応する２ビットずつを組み合わせ、前記整理番号を管理する機構を参照して、該ふたつの宛先の組み合わせと、該２ビットの組合せパターンで定義されるフローに対応するひとつ又は複数の前記整理番号をセルに付与する機構と、
複数の前記交換部へセルを振り分けて出力する機構と
を有し、
前記整列部は、
複数の前記交換部を介して受信したセルの送信元識別子に従い、送信元の分散部毎に受信セルを分類する機構と、
宛先ビットマップを参照して、自整列部に対応するビットを含む予め定められた２ビットの組み合わせに基づき、組合せパターンが０１又は１０である第１のフローか、組合せパターンが１１である第２のフローかを判別し、第１及び第２のフロー毎に、セルに付与された整理番号に従いセルを整列する機構と、
整列されたセルを順に格納する分散部毎及びフロー毎の整列済みキューと、
前記整列済みキューのうち、パケット末尾セルまで格納している前記整列済みキューを選び、パケット先頭セルからパケット末尾セルまでを取り出してパケットを復元し、出力する機構と
を有する分散型スイッチファブリック。
【請求項３】
請求項１または請求項２の分散型スイッチファブリックにおいて、
分割されたセルに、前記整理番号が複数付与されることを特徴とする分散型スイッチファブリック。
【請求項４】
請求項１または請求項２の分散型スイッチファブリックにおいて、
ひとつのセルに付与可能な整理番号の個数が予め定められており、
マルチキャストパケットで宛先の数が前記付与可能な整理番号の個数を超える場合、前記分散部は、ひとつのセルの宛先の数が、前記付与可能な整理番号の個数以下となるように宛先情報を分割し、セルを宛先情報の分割数分コピーし、コピー後の各セルには、分割された宛先情報と、分割後の各宛先に対応する整理番号とを付与することを特徴とする分散型スイッチファブリック。
【請求項５】
請求項１または請求項２の分散型スイッチファブリックにおいて、
前記分散部で分割されたセルを宛先の前記整列部へ送信する途中で、該宛先が輻輳して送信できなくなった場合、前記分散部は、同宛先を含まない他の宛先へのパケットをセルに分割して送信を開始することを特徴とする分散型スイッチファブリック。
【請求項６】
請求項２の分散型スイッチファブリックにおいて、
前記整列部において任意の前記分散部から期待整理番号を含むパケット末尾以外のセルが到着後、同一の前記分散部から、予め定められた期間が経過しても期待する後続の整理番号を含むセルが到着しない場合、又は、同一の前記分散部について全ての前記交換部から期待する後続の整理番号以外のセルが到着した場合、前記の期待する後続の整理番号を無視して期待整理番号を増加させ、最大値に達したらゼロ又は初期値に戻し、無視された整理番号のセルの抜けたパケットはエラーパケットとして処理することを特徴とする分散型スイッチファブリック。
【請求項７】
請求項１の分散型スイッチファブリックにおいて、前記整列する機構は、
セルを格納する分散部毎かつ交換部毎に対応して備えるキューと、
予め初期値が設定され、セルを整理番号に従い整列するための、第１のフロー用の期待整理番号と、第２のフロー用の期待整理番号とを管理する期待整理番号管理部と、
各キューに格納されたセルの宛先情報が予め指定したパターンか判別し、（ａ）該パターンの場合、セルに含まれる整理番号と前記期待整理番号管理部の第１のフロー用の期待整理番号とを比較し、一致するセルを前記キューから取り出して第１のフロー用の前記整列済みキューに格納し、前記期待整理番号管理部の第１のフロー用の期待整理番号を増加させ、最大値に達したらゼロ又は初期値に戻し、（ｂ）該パターンでない場合、セルに含まれる整理番号と、前記期待整理番号管理部の第２のフロー用の期待整理番号とを比較し、一致するセルを前記キューから取り出して第２のフロー用の前記整列済みキューに格納し、前記期待整理番号管理部の第２のフロー用の期待整理番号を増加させ、最大値に達したらゼロ又は初期値に戻す比較部と
を有する分散型スイッチファブリック。
【請求項８】
請求項２の分散型スイッチファブリックにおいて、前記整列する機構は、
セルを格納する分散部毎かつ交換部毎に対応して備えるキューと、
予め初期値が設定され、セルを整理番号に従い整列するための、第１のフロー用の期待整理番号と、第２のフロー用の期待整理番号とを管理する期待整理番号管理部と、
各キューに格納されたセルの宛先ビットマップを参照して、自整列部に対応するビットを含む予め定められた２ビットの組み合わせに基づき、前記第１のフローか又は前記第２のフローかを判別し、（ａ）第１のフローの場合、セルに含まれる整理番号と前記期待整理番号管理部の第１のフロー用の期待整理番号とを比較し、一致するセルを前記キューから取り出して第１のフロー用の前記整列済みキューに格納し、前記期待整理番号管理部の第１のフロー用の期待整理番号を増加させ、最大値に達したらゼロ又は初期値に戻し、（ｂ）第２のフローの場合、セルに含まれる整理番号と前記期待整理番号管理部の第２のフロー用の期待整理番号とを比較し、一致するセルを前記キューから取り出して第２のフロー用の前記整列済みキューに格納し、前記期待整理番号管理部の第２のフロー用の期待整理番号を増加させ、最大値に達したらゼロ又は初期値に戻す比較部と
を有する分散型スイッチファブリック。
【請求項９】
請求項７または請求項８の分散型スイッチファブリックにおいて、
各交換部は、同一の前記分散部からのセルの順番を維持したまま、セル単位で宛先毎出力調停する機構を有し、
前記整列部の前記比較部は、前記交換部毎のキューの先頭セルについて、該先頭セルの整理番号と、前記期待整理番号管理部の第１又は第２のフロー用の期待整理番号とを比較することを特徴とする分散型スイッチファブリック。
【請求項１０】
請求項２の分散型スイッチファブリックにおいて、
Ｍ個（Ｍは２以上の整数）の前記分散部はそれぞれ、ｊ個（ｊは２以上の整数）の入力ポートを有し、
Ｎ個（Ｎは２以上の整数）の前記整列部はそれぞれ、ｉ個（ｉは２以上の整数）の出力ポートを有し、
前記分散部は、宛先となる前記整列部及び前記出力ポートを示す、Ｎ×ｉビットの第１の宛先ビットマップを含むパケットを入力し、該第１の宛先ビットマップに対し、前記整列部に対応するｉビット毎の論理和をとって、Ｎビットの第２の宛先ビットマップを作成し、分割されたセルに第２の宛先ビットマップを付与して前記交換部へ出力し、
前記交換部は、第２の宛先ビットマップに従いセルを前記整列部に送信し、
前記整列部は、受信したセルを整列してパケットを復元し、復元されたパケットに含まれるＮ×ｉビットの第１の宛先ビットマップを参照して、自整列部のｉ個の前記出力ポートのうち出力先をひとつ又は複数決定して、復元されたパケットを出力することを特徴とする分散型スイッチファブリック。
【請求項１１】
それぞれが非同期にデータ交換を行う複数の交換部を有する分散型スイッチファブリックにおいて、
スイッチファブリックの入力にあたる分散部は、
可変長のパケットを固定長のセルに分割し、セルに分散部の識別子と宛先の整列部を示す宛先ビットマップを付与する機構と、
各ビットが整列部に対応し、ビットが１の整列部にセルを送信するための宛先ビットマップに対して、任意のふたつの宛先を２ビット表現し、前記２ビットの組合せとして０１、１０、１１の３種類を該当する２宛先へのフローとして定義し、フロー毎にセルの順番を示す整理番号を管理する機構と、
前記宛先に対応する前記整理番号を指定の範囲内で複数個付与する機構と、
前記交換部へセルを出力する機構と
を備え、
スイッチファブリックの各交換部は、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、
スイッチファブリックの各交換部を経由したセルを受信した整列部において、整理番号に従いセルを整列することを特徴とする分散型スイッチファブリック。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散型スイッチファブリックに係り、ルータ、サーバ、ストレージ装置などにおいて、装置内部に有する複数の機能ブロックを動的に相互に接続するスイッチ技術に関し、特に、独立動作する複数のスイッチを利用し、宛先でデータの到着順序が入れ替わる場合に、順番通りに並べ替えるための分散型スイッチファブリックに関する。
【背景技術】
【０００２】
ルータなどのネットワーク転送装置やサーバ装置、複数のディスクアレイを接続するストレージ装置などでは、装置内部の機能ブロック間でデータ交換を行うためにスイッチファブリックが利用される。スイッチファブリックの交換容量は、ポート数とポート容量（回線速度）の積で表現され、大容量交換を実現するためには、ポート数とポート容量のいずれか片方、もしくは両方を増加させる必要がある。
ポート数を増加させるには、要素スイッチを多段結合し、オメガ網やクロス網、ファットツリー網等を形成することにより実現が可能である。また、スイッチＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）のポート容量を増加させることでスイッチファブリックのポート容量を増加させることも可能であるが、ＬＳＩに実装可能なピン数は、その時代のＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  ＭＯＳ）の実装限界によって制限されるため、大容量ポートを実現すると、スイッチＬＳＩあたりのポート数は減少する。
大容量ポートを少数持つスイッチＬＳＩを多段結合することでスイッチファブリック全体の交換容量を向上することは可能であるが、次のような課題が発生する。すなわち、総ポート数を増やすと接続段数が増加し、スイッチファブリック通過のレイテンシが大きくなる課題、また、異なる宛先でもスイッチファブリック内で衝突が発生してスループットが低下する課題が発生する。これらの課題を回避して、目的の交換容量を実現する方法として、分散型スイッチファブリック（パラレルパケットスイッチ）が知られている。
【０００３】
分散型スイッチファブリックでは、要求容量の１／Ｍの容量のポートを備える比較的低速なスイッチＬＳＩをＭ個用意し、スイッチファブリックの入力にあたる分散部において、入力データを分割して各スイッチへ分散して通過させることで所望の大容量交換を実現する。一般に、ネットワーク装置で利用されるスイッチの場合、入力データは可変長のパケットであり、パケットは固定長のセルと呼ばれる単位に分割される。
分散型スイッチファブリックを最も容易に構成する場合、交換部用に用いる複数のスイッチＬＳＩを完全に同期させ、更に完全に同一の宛先調停動作を実施する。よって、宛先（スイッチの出力）には、完全に予測可能なタイミングで順番通りにセルが到着するため、容易にパケットを元通りに復元可能であり、更にフロー内のパケット順番も容易に復元可能である。
ところが、近年、スイッチに要求されるポート容量、交換容量は非常に大きくなっており、分散型スイッチファブリックを構成する各スイッチＬＳＩ自体も高速してきている。例えば、ＬＳＩ間の通信には、ＳｅｒＤｅｓ（ＳＥＲｉａｌｉｚａｔｉｏｎ／ＤＥ−Ｓｅｒｉａｌｉｚａｔｉｏｎ）と呼ばれる高速シリアル伝送が利用されたり、セルの交換処理ピッチも短縮化されたりしているため、各スイッチＬＳＩを完全同期させることが事実上困難である。よって、各スイッチが非同期動作する、すなわち、各スイッチが独立してデータ交換を行なう分散型スイッチファブリックが必要である。
【０００４】
【特許文献１】ＵＳ２００４／０１４３５９３（Ａ１）
【特許文献２】ＷＯ０２／４３３２９（Ａ１）
【特許文献３】ＵＳＰ６８３２２６１（Ｂ１）
【特許文献４】ＵＳ２００４／０１４１５１０（Ａ１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
各交換部が非同期動作する分散型スイッチファブリックでは、スイッチファブリックの入力にあたる分散部でのセルの送信順番と、スイッチファブリックの出力にあたる整列部での各交換部間のセルの到着順番が一致することが保証されない。例えば、輻輳状態にあるスイッチを経由するパケットを、非輻輳状態のスイッチを経由する後続のパケットが追い越すことがある。よって、同一送信元から同一宛先を目指すパケット群（フロー）内のセルの順番を元通りに復元し（フロー復元）、更にパケットを元通りに復元（パケット復元）しなくてはならない。
ＵＳ２００４／０１４３５９３（Ａ１）（特許文献１）では、パケットのシーケンス番号（整理番号）、送信元番号、ルーティングインデックス（単一の宛先、もしくは複数の宛先の組合せを参照するための値）、優先度を利用して、宛先において各フローのパケットを十分な量溜め込んだのち、パケット順番を元通りに復元する方法が開示されている。しかしながら、ＵＳ２００４／０１４３５９３（Ａ１）のパケット順番復元方法は、送信元番号、ルーティングインデックス、優先度の積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。
【０００６】
ＷＯ０２／４３３２９（Ａ１）（特許文献２）では、同一のパケットから生成したセルには、宛先番号、送信元番号、セル分割番号の他、同一のタイムスタンプを付加し、スイッチファブリックの各部で共通の時計を利用して、スイッチ内ではタイムスタンプの古いものを優先して選択し、スイッチの宛先では、同一のフローに属するセル、パケットをタイムスタンプの値が古いものから順に順序復元を行う方法が開示されている。しかしながら、ＷＯ０２／４３３２９（Ａ１）のセル、パケット順番復元方法は、送信元番号、ルーティングインデックスの積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。また、スイッチファブリック各部で共通の時計を利用し、その時刻を元に並べ替えを行う点も、パケットやセルの転送速度が向上するにつれて困難になりうる課題を持つ。
【０００７】
ＵＳＰ６８３２２６１（Ｂ１）（特許文献３）では、セル、パケット順序復元用のデバイスを複数個用いて、互いに交信しつつセル、パケットの順序復元を行う方法が開示されている。ＵＳＰ６８３２２６１（Ｂ１）の実施例から、送信元スロット（送信元番号）、シーケンス番号（整理番号）、宛先スロット（宛先番号）の積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。
また、ＵＳ２００４／０１４３５９３（Ａ１）とＷＯ０２／４３３２９（Ａ１）では、各スイッチの負荷に応じて、スイッチファブリックの入力にあたる分散部においてロードバランスを取りながら分散動作を行うことが開示されている。しかしながら、一般に、単純なロードバランス動作を行うと、輻輳状態にあるスイッチに溜まっているセルやパケットが目的の宛先、すなわち、スイッチファブリックの出力にあたる整列部に到着する前に、後続のセルやパケットが非輻輳状態のスイッチを経由して到着しうる。よって、整列部においてセルやパケットの順番を復元するために、整列部は大量のセルやパケットの保持が必要であり、ハードウェア量が多くなりうる課題を持つ。
【０００８】
以上のように、従来の、各交換部が非同期動作する分散型スイッチファブリックでは、整列部におけるフロー復元、パケット復元の一手法に関して開示されているが、いずれの手法もハードウェア量が多くなりうる課題を持っている。分散型スイッチファブリックは、スイッチ全体の交換容量を向上させることが本来の目的であるため、分散動作、復元動作によって交換容量が低下しないように潤沢なハードウェアを搭載することもできるが、装置を低コスト化するためには、より小規模のハードウェアで実現可能な整列部を持つ分散型スイッチファブリックが望まれる。
本発明は、以上の点に鑑み、各交換部が非同期動作する分散型スイッチファブリックの整列部において、複数の交換部から順不同に到着するセルを、元通りのパケットに復元する方法を小容量のハードウェアで実現する分散型スイッチファブリックを提供することを目的とする。
【０００９】
本発明は、各スイッチが非同期動作する分散型スイッチファブリックにおいて、各宛先の整列部は送信元毎に１パケットフローもしくは２パケットフローだけを扱うだけにすることを目的のひとつとする。本発明は、フロー内のセルおよびパケットの整列時に必要とする保持メモリ量を送信元数の１倍もしくは２倍に比例する量だけに削減し、従来方法より少ないコストで、高い交換容量の分散型スイッチファブリックを構成可能とすることを目的のひとつとする。
【課題を解決するための手段】
【００１０】
本発明における分散型スイッチファブリックは、それぞれが非同期にデータ交換を行う複数の交換部を有する分散型スイッチファブリックにおいて、スイッチファブリックの入力にあたる分散部は、可変長のパケットを１個以上の固定長のセルに分割する機構と、個々の宛先毎に連続する整理番号を管理する機構と、パケット先頭セルには先頭記号、パケット末尾セルには末尾記号を付与し、全セルに分散部の番号と宛先を示す宛先ビットマップを付与し、更に前記宛先に対応する前記整理番号を指定の範囲内で複数個付与する機構と、前記の１個以上の交換部へセルを出力する機構を備え、スイッチファブリックでセルを目的の宛先へ配信する複数の交換部は、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、スイッチファブリックの出力にあたる整列部において、受信セルを分散部の番号で分類してから整理番号の期待値とセルの持つ当該宛先の整理番号との比較を行う機構と、前記比較で一致したものを格納する送信元毎の整列済みＦＩＦＯキューと、前記整列済みＦＩＦＯキューのうち、パケット末尾セルまで到着している整列済みＦＩＦＯキューを選び、パケット先頭セルからパケット末尾セルまでを取り出す機構とを備えることを特徴のひとつとする。
【００１１】
本発明の他の分散型スイッチファブリックは、例えば、それぞれが非同期にデータ交換を行う複数の交換部を有する分散型スイッチファブリックにおいて、
スイッチファブリックの入力にあたる分散部は、可変長のパケットを１個以上の固定長のセルに分割する機構と、任意の二つの宛先を２ビット表現（ビットが１の場合にセルを送信）し、前記２ビットの組合せとして０１、１０、１１の３種類を該当する２宛先へのフローとして定義し、フロー毎に連続する整理番号を管理する機構と、パケット先頭セルには先頭記号、パケット末尾セルには末尾記号を付与し、全セルに分散部の番号と宛先を示す宛先ビットマップを付与し、更に前記宛先に対応する前記整理番号を指定の範囲内で複数個付与する機構と、前記の１個以上の交換部へセルを出力する機構を備え、
スイッチファブリックでセルを目的の宛先へ配信する各交換部は、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、
スイッチファブリックの出力にあたる整列部は、
受信セルを分散部の番号と宛先ビットマップの中から同宛先を含む指定の２ビットで示されるフロー番号で分類してから整理番号の期待値とセルの持つ当該宛先の整理番号との比較を行う機構と、前記比較で一致したものを格納する送信元毎及びフロー番号毎の整列済みＦＩＦＯキューと、前記整列済みＦＩＦＯキューのうち、パケット末尾セルまで到着している整列済みＦＩＦＯキューを選び、パケット先頭セルからパケット末尾セルまでを取り出す機構とを備えることを特徴のひとつとする。
【００１２】
上述の分散型スイッチファブリックは、例えば、マルチキャストパケットで宛先の数が１個のセルに付与可能な整理番号の個数を超える場合、前記分散部は１個のセルに付与可能な数以下の整理番号となるように宛先ビットマップを分割し、セルを前記分割数分個コピーし、コピー後の各セルには、対応する分割後の宛先ビットマップと対応する全宛先の整理番号を付与することを特徴のひとつとする。
【００１３】
上述の分散型スイッチファブリックは、例えば、マルチキャストパケットで宛先のパターンが予め指定したパターンである場合は、前記パターンを特別なフローとして専用の整理番号を前記分散部で付与し、前記整列部で前記パターン専用の整理番号の期待値を通常の整理番号の期待値と別に管理し一致比較を行うことを特徴のひとつとする。
上述の分散型スイッチファブリックは、例えば、分散部からセル化したパケットを送信途中で当該宛先が輻輳して送信できなくなった場合、同宛先を含まない他の宛先へのパケットをセル化して送信を開始することを特徴のひとつとする。
【００１４】
上述の分散型スイッチファブリックは、例えば、整列部において任意の送信元から期待する整理番号を持つパケット末尾以外のセルが到着後、同一送信元から、指定の期間が経過しても後続の期待する整理番号を持つセルが到着しない場合、もしくは、同一送信元かつ全ての交換部から期待する整理番号以外のセルが到着した場合、期待する整理番号を持つセルが分散部に到着するまでに障害で廃棄されたものとして、期待する整理番号を１増やして処理し、廃棄されたセルを含むパケットはエラーパケットとして処理することを特徴のひとつとする。
【００１５】
上述の分散型スイッチファブリックは、例えば、各分散部は複数の入力を持ち、各整列部は複数の出力を持つ場合、セルに付与する宛先ビットマップ以外に全出力を示す宛先ビットマップをパケットに付属のデータとして、当該パケットを構成するセルのいずれかに保持し、整列部の出力部分で前記全出力を示す宛先ビットマップの当該整列部の部分を参照してパケットの最終出力先を決定することを特徴のひとつとする。
【００１６】
本発明の他の分散型スイッチファブリックは、例えば、それぞれが非同期にデータ交換を行う複数の交換部を有する分散型スイッチファブリックにおいて、
スイッチファブリックの入力にあたる分散部は、可変長のパケットを１個以上の固定長のセルに分割する機構と、個々の宛先毎に連続する整理番号を管理する機構と、パケット先頭セルには先頭記号、パケット末尾セルには末尾記号を付与し、全セルに分散部の番号と宛先を示す宛先ビットマップを付与し、更に前記宛先に対応する前記整理番号を指定の範囲内で複数個付与する機構と、前記の１個以上の交換部へセルを出力する機構を備え、
スイッチファブリックの各交換部を経由して目的の出力にあたる整列部において、期待する整理番号のセルから順番に取り出すことを特徴のひとつとする。
【００１７】
本発明の他の分散型スイッチファブリックは、例えば、
それぞれが非同期にデータ交換を行う複数の交換部を有する分散型スイッチファブリックにおいて、
スイッチファブリックの入力にあたる分散部は、可変長のパケットを１個以上の固定長のセルに分割する機構と、任意の二つの宛先を２ビット表現（ビットが１の場合にセルを送信）し、前記２ビットの組合せとして０１、１０、１１の３種類を該当する２宛先へのフローとして定義し、フロー毎に連続する整理番号を管理する機構と、パケット先頭セルには先頭記号、パケット末尾セルには末尾記号を付与し、全セルに分散部の番号と宛先を示す宛先ビットマップを付与し、更に前記宛先に対応する前記整理番号を指定の範囲内で複数個付与する機構と、前記の１個以上の交換部へセルを出力する機構を備え、
スイッチファブリックの各交換部は、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、スイッチファブリックの各交換部を経由して目的の出力にあたる整列部において、期待する整理番号のセルから順番に取り出すことを特徴のひとつとする。
【００１８】
本発明の第１の解決手段によると、
スイッチファブリックの入力にあたる複数の分散部と、
スイッチファブリックの出力にあたる複数の整列部と、
それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部と
を備え、
前記分散部は、
入力される可変長のパケットを固定長のセルに分割し、パケット先頭セルには先頭記号を付与し、パケット末尾セルには末尾記号を付与し、全セルに対して自分散部を示す送信元識別子と宛先となるひとつ又は複数の整列部を示す宛先情報とを付与する機構と、
セルからパケットを復元するためのセルの順番を示す整理番号を、宛先となる整列部毎に管理する機構と、
宛先情報に基づき前記管理する機構を参照して、宛先に対応するひとつ又は複数の前記整理番号をセルに付与する機構と、
複数の前記交換部へセルを振り分けて出力する機構と
を有し、
前記整列部は、
複数の前記交換部を介して受信したセルの送信元識別子に従い、送信元の分散部毎に受信セルを分類する機構と、
分散部毎に分類されたセルに対して、該セルに付与された自宛先に対応する整理番号に従い、前記セルを整列する機構と、
整列されたセルを順に格納する分散部毎の整列済みキューと、
前記整列済みキューのうち、末尾記号が付与されたパケット末尾セルまで格納している前記整列済みキューを選び、先頭記号が付与されたパケット先頭セルから前記パケット末尾セルまでを取り出してパケットを復元し、出力する機構と
を有する分散型スイッチファブリックが提供される。
【００１９】
本発明の第２の解決手段によると、
スイッチファブリックの入力にあたる複数の分散部と、
スイッチファブリックの出力にあたる複数の整列部と、
それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部と、
を備え、
前記分散部は、
入力される可変長のパケットを固定長のセルに分割し、パケット先頭セルには先頭記号を付与し、パケット末尾セルには末尾記号を付与し、全セルに対して自分散部を示す送信元識別子と宛先となるひとつ又は複数の整列部を示す宛先情報とを付与する機構と、
各ビットが前記整列部に対応し、ビットの値が１の前記整列部へセルを送信し及びビットの値が０の前記整列部へはセルを送信しないための宛先ビットマップに対し、予め定められたふたつの宛先に対応する２ビットずつを組み合わせ、該２ビットの組合せパターンのうち０１、１０、１１の３種類の組合せパターンが該ふたつの宛先へのフローとして予め定義され、該ふたつの宛先の組み合わせ毎に、該３種類のフローに対応したセルの順番を示す整理番号を管理する機構と、
宛先ビットマップの予め定められたふたつの宛先に対応する２ビットずつを組み合わせ、前記整理番号を管理する機構を参照して、該ふたつの宛先の組み合わせと、該２ビットの組合せパターンで定義されるフローに対応するひとつ又は複数の前記整理番号をセルに付与する機構と、
複数の前記交換部へセルを振り分けて出力する機構と
を有し、
前記整列部は、
複数の前記交換部を介して受信したセルの送信元識別子に従い、送信元の分散部毎に受信セルを分類する機構と、
宛先ビットマップを参照して、自整列部に対応するビットを含む予め定められた２ビットの組み合わせに基づき、組合せパターンが０１又は１０である第１のフローか、組合せパターンが１１である第２のフローかを判別し、第１及び第２のフロー毎に、セルに付与された整理番号に従いセルを整列する機構と、
整列されたセルを順に格納する分散部毎及びフロー毎の整列済みキューと、
前記整列済みキューのうち、パケット末尾セルまで格納している前記整列済みキューを選び、パケット先頭セルからパケット末尾セルまでを取り出してパケットを復元し、出力する機構と
を有する分散型スイッチファブリックが提供される。
【００２０】
また、本発明の他の解決手段によると上述の分散型スイッチファブリックにおいて、
前記分散部の前記管理する機構は、
複数の宛先を含む宛先情報が予め指定したパターンのパケットについて、該パケットを復元するためのセルの順序を示す指定パターン用の整理番号をさらに管理し、
前記分散部の前記整理番号をセルに付与する機構は、
入力したパケットの宛先情報が予め指定したパターンである場合は、前記管理する機構を参照し、前記指定パターン用の整理番号をセルに付与し、
前記整列部では、宛先が指定パターンの場合の整理番号の期待値と宛先が指定パターンでない場合の整理番号の期待値とを別々に管理し、宛先が指定パターンか否かにより別々に、セルに付与された整理番号に従いセルを整列することを特徴とする分散型スイッチファブリックが提供される。
【００２１】
また、本発明の他の解決手段によると、上述の分散型スイッチファブリックにおいて、
Ｍ個（Ｍは２以上の整数）の前記分散部はそれぞれ、ｊ個（ｊは２以上の整数）の入力ポートを有し、
Ｎ個（Ｎは２以上の整数）の前記整列部はそれぞれ、ｉ個（ｉは２以上の整数）の出力ポートを有し、
前記分散部は、宛先となる前記整列部及び前記出力ポートを示す、Ｎ×ｉビットの第１の宛先ビットマップを含むパケットを入力し、該第１の宛先ビットマップに対し、前記整列部に対応するｉビット毎の論理和をとって、Ｎビットの第２の宛先ビットマップを作成し、分割されたセルに第２の宛先ビットマップを付与して前記交換部へ出力し、
前記交換部は、第２の宛先ビットマップに従いセルを前記整列部に送信し、
前記整列部は、受信したセルを整列してパケットを復元し、復元されたパケットに含まれるＮ×ｉビットの第１の宛先ビットマップを参照して、自整列部のｉ個の前記出力ポートのうち出力先をひとつ又は複数決定して、復元されたパケットを出力することを特徴とする分散型スイッチファブリックが提供される。
【００２２】
本発明の第３の解決手段によると、
それぞれが非同期にデータ交換を行う複数の交換部を有する分散型スイッチファブリックにおいて、
スイッチファブリックの入力にあたる分散部は、
可変長のパケットを固定長のセルに分割し、セルに分散部の識別子と宛先の整列部を示す宛先ビットマップを付与する機構と、
個々の宛先毎にセルの順番を示す整理番号を管理する機構と、
前記管理する機構を参照して、前記宛先に対応する前記整理番号を指定の範囲内で複数個、セルに付与する機構と、
前記交換部へセルを出力する機構と
を備え、
スイッチファブリックの各交換部を経由したセルを受信した整列部において、セルに付与された複数の整理番号のうち、自整列部に対応する整理番号を判別し、該整理番号に従いセルを整列する分散型スイッチファブリックが提供される。
【００２３】
本発明の第４の解決手段によると、
それぞれが非同期にデータ交換を行う複数の交換部を有する分散型スイッチファブリックにおいて、
スイッチファブリックの入力にあたる分散部は、
可変長のパケットを固定長のセルに分割し、セルに分散部の識別子と宛先の整列部を示す宛先ビットマップを付与する機構と、
各ビットが整列部に対応し、ビットが１の整列部にセルを送信するための宛先ビットマップに対して、任意のふたつの宛先を２ビット表現し、前記２ビットの組合せとして０１、１０、１１の３種類を該当する２宛先へのフローとして定義し、フロー毎にセルの順番を示す整理番号を管理する機構と、
前記宛先に対応する前記整理番号を指定の範囲内で複数個付与する機構と、
前記交換部へセルを出力する機構と
を備え、
スイッチファブリックの各交換部は、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、
スイッチファブリックの各交換部を経由したセルを受信した整列部において、整理番号に従いセルを整列することを特徴とする分散型スイッチファブリックが提供される。
【発明の効果】
【００２４】
本発明によると、各交換部が非同期動作する分散型スイッチファブリックの整列部において、複数の交換部から順不同に到着するセルを、元通りのパケットに復元する方法を小容量のハードウェアで実現することができる。
本発明により、各スイッチが非同期動作する分散型スイッチファブリックにおいて、各宛先の整列部は送信元毎に１パケットフローもしくは２パケットフローだけを扱うだけになる。このため、フロー内のセルおよびパケットの整列時に必要とする保持メモリ量を送信元数の１倍もしくは２倍に比例する量だけに削減することができ、従来方法より少ないコストで、高い交換容量の分散型スイッチファブリックを構成可能となる。
【発明を実施するための最良の形態】
【００２５】
以下、より詳細な内容を図面に基づいて説明する。
１．第１の実施の形態
図１に、本実施の形態による分散型スイッチファブリックの一構成例を示す。
分散型スイッチファブリックは、例えば、スイッチファブリックの入力にあたるＮ個の分散部１００（１００−１、１００−２、、、１００−Ｎ）、データ交換を行うＭ個の交換部２００（２００−１、２００−２、、、２００−Ｍ）、スイッチファブリックの出力にあたるＮ個の整列部３００（３００−１、３００−２、、、３００−Ｎ）を備える（Ｎ、Ｍは整数）。分散部１００は、受信した可変長のパケットを固定長のセルに分割し、複数の交換部２００へ送信する。宛先の整列部３００では、受信したセルを元通りの順番に直してパケットとして出力する。交換部２００は互いに独立に動作する、すなわち、入力セルに対して互いに独立に宛先調停を自立的に行うため、スイッチファブリック中では非同期型の分散スイッチとして振る舞うことになる。
【００２６】
図２に、可変長パケットを固定長のセルに分割する様子を示す。
パケットからセルへの分割は、従来方法でも本実施の形態の方法でも同じ手法を用いることができる。一般に、スイッチファブリックを内蔵するルータなどのパケット転送装置は、受信したパケット１０の内容を解析して宛先やパケット長、優先度などを含む解析情報１１を生成する。この解析情報１１の生成は、分散部１００で行っても良いし、分散部１００へ入力する前に設置するネットワークプロセッサやパケット処理エンジンなどを利用して生成してもよい。いずれにしても、分散部１００の中では、解析情報１１を含むパケット２０を、指定された固定長に分割しセルのペイロード３２とする。固定長に満たない場合は、例えば最後のセルのペイロードに値ゼロを必要量パディングして固定長にする。そして、各セルペイロード３２にセルヘッダ３１を付与して固定長のセル３０とする。
セルヘッダ３１は、セル３０を分散部１００から、いずれかの交換部２００を経由して宛先の整列部３００まで通過させた後、元通りの順番で解析情報１１を含むパケット２０、またはパケット１０を復元するために必要な情報を含んでいる。
【００２７】
図５に、従来のセルヘッダ３１の構成例を示す。
一般にセルヘッダ３１は、パケットの先頭セルであることを示す先頭記号４１、パケットの末尾セルであることを示す末尾記号４２、パケットの送信元分散部１００を示す送信元番号４３、スイッチファブリックにおけるパケットの宛先（整列部）を示す宛先ビットマップ４４、複数の宛先のパターン（組み合わせ）を示すフロー番号４６、同一のフロー内でのセルの順番を示す整理番号４５を有する。場合によっては、セルの有効なペイロード長なども必要であり、先に示した情報以外は、ここではその他の情報４９としてまとめて示す。尚、宛先ビットマップ４４とは、例えば宛先が８個の場合、８ビットの情報で示し、各ビットを宛先に対応させ、値が１となっているビット（有効ビット）が配信対象の宛先であり、値が０のビット（無効ビット）は配信対象ではないことを示す。宛先ビットマップ４４により、単一宛先へ送信するユニキャストだけでなく、複数宛先へ送信するマルチキャストも表現することが出来る。
【００２８】
フロー番号４６は、総宛先数が８個程度までの場合、省略することも可能である。フロー番号４６を省略する場合、宛先の整列部３００では、宛先ビットマップ４４そのものをフロー番号として利用することができる。しかしながら、総宛先数が８個を超える場合、宛先の整列部３００では、宛先ビットマップ４４そのものをフロー番号として利用することは非現実的である。なぜなら、宛先の整列部３００では、２の総宛先数乗のフローを識別しなければならず、必要メモリ量が非現実的に大きくなるからである。
【００２９】
図６は、従来例における宛先ビットマップから整理番号を得る方法を示す模式図である。
例えば、ＵＳ２００４／０１４１５１０（Ａ１）（特許文献４）ではＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）を利用して宛先ビットマップから十分ビット数の小さいフロー番号を生成する方法が開示されている。これは、図６に示すように、宛先ビットマップ４４をＣＡＭ６０にサーチキーとして入力し、一致する宛先ビットマップパターンに対応するＣＡＭエントリのアドレスを、フロー番号４６として出力する方法である。この方法で得られたフロー番号４６をアドレスとして、整理番号を収めたＲＡＭ７０をアクセスし、当該フロー番号４６に対応する整理番号４５を得ることができる。ここで、整理番号はフロー番号ごとに管理されており、ＣＡＭのエントリ数に応じた領域が使用される。ＣＡＭ６０やＲＡＭ７０のエントリ数は、フロー番号４６のビット数をＰとすると、２のＰ乗個である。宛先ビットマップのビット数をＱビットすると、２のＰ乗は、２のＱ乗より小さい値になる。このように宛先ビットマップを縮約する形でフロー番号を得る方法の場合、フロー番号で表現可能なフロー数は宛先ビットマップで表現可能な全組合せの量より少なくなる。よって、フロー番号を使い尽くした場合に、利用していないフロー番号を見つけて新しいフローに割り当てるといった操作が必要になる。また、この手法では、宛先の整列部３００でも、フロー番号に対応する数の期待整理番号を管理する必要があり、その分のメモリが必要となる。期待整理番号の管理自体は大きなオーバーヘッドを伴わないが、同時に複数のフローのセルを管理しながらセル順番とパケットを復元する必要があるため、セル保持用のメモリが大量に必要となる。
【００３０】
図３は、本実施の形態のセルヘッダの構成例である。
次に、本実施の形態におけるセルヘッダ３１の内容のうち、従来のセルヘッダ３１との差分を、図３を用いて説明する。本実施の形態では、セルヘッダ３１に複数個の整理番号を付与する。図３の例では、セルヘッダ３１内に最大４個までの整理番号４５を付与することを示している。この場合、分散部１００の整理番号管理部は、図４に示すように宛先毎（整列部毎）に整理番号を管理する。これは、宛先パターンの組み合わせによらず、宛先ごとのパケットフローを管理することを意味する。なお、図４については後に詳述する。これにより、宛先となる整列部３００では送信元あたり１フローだけを扱えばよく、フロー内のセルおよびパケットの整列時に必要とする保持メモリ量を送信元数の１倍に比例する量（送信元数に応じた量）だけに削減することができる。従来のようにフロー数に応じたメモリ量より削減できる。よって、従来方法より少ないコストで、高い交換容量の分散型スイッチファブリックを構成可能となる。
【００３１】
ここで、図１９に、分散部１００のブロック図を示す。
分散部１００は、例えば、パケット受信部１１０、宛先毎及びマルチキャスト（ＭＣ）用の複数のＶＯＱ（Ｖｉｒｔｕａｌ  Ｏｕｔｐｕｔ  Ｑｕｅｕｅ）群１２０、セル生成部１３０、整理番号付与部１４０、整理番号管理部１４１及びセル振分部１５０を有する。なお、図１９は、図１の分散部１００のひとつに対応する。したがって、分散型スイッチファブリックでは、図１９の構成をＮ個有している。
分散部１００は、パケット受信部１１０でパケット２０を受信後、宛先毎に独立したＦＩＦＯキューであるＶＯＱ１２０のうち対応するＶＯＱへパケットを積む。尚、マルチキャストの場合は、あらゆるパターンのマルチキャストで共用のＶＯＱへパケットを積む。次に、セル生成部１３０は、分散部１００に接続されている全ての交換部２００の各宛先の空き状況を確認し、空きのある宛先に対応するＶＯＱ１２０のうち一つを選択してパケット２０を取り出し、セルペイロード３２に分割し、セルヘッダ３１を付与して固定長のセル３０とする。この時点のセルヘッダ３１では、セルヘッダ３１のうち、先頭記号４１、末尾記号４２、送信元番号４３、宛先ビットマップ４４のみが確定している。また、セルヘッダ３１の中に明示的には現れないが、送信する交換部２００の番号もこの時点で確定している。尚、パケット２０の取出し途中で当該宛先の空きが無くなった場合は、当該パケット２０のセル化を一旦中断し、次のセル化の機会を得たときに、続きの部分からセル化を再開してもよい。なお、送信元番号４３、整理番号４５は、番号以外にも適宜の識別子を用いてもよい。また、宛先ビットマップはビットマップ以外にも、例えば宛先の識別子をひとつ又は複数含むなど、適宜の宛先情報でもよい。
【００３２】
次に、整理番号付与部１４０がセル３０を受け取り、セルヘッダ３１の宛先ビットマップ４４を整理番号管理部１４１に送り、対応する整理番号４５を決定しセルヘッダ３１に書き込む。最後にセル振分部１５０にて、指定の交換部２００へセル３０を送信する。
図４は、整理番号管理部１４１の構成図である。
整理番号管理部１４１は、宛先毎に整理番号を管理する。整理番号管理部１４１には、整理番号付与部から宛先ビットマップ４４が入力される。宛先ビットマップの第１ビットは、宛先１用整理番号に対応しており、以下、宛先ビットマップの第２〜第Ｎビットは、宛先２〜Ｎ用整理番号に対応している。入力された宛先ビットマップ４４の有効ビット（例えば値が１になっているビット）に対応するひとつ又は複数の整理番号が出力される。
【００３３】
図７に、本実施の形態における宛先ビットマップ４４と整理番号４５の関係を示す。
図７の上図の３３はユニキャストの場合を示しており、対応する宛先の整理番号を整理番号領域１の位置４５−１へ記録する。整理番号２、３、４のフィールドは利用しない。また、例えば０を入れてもよい。図７の下図の３４は４つの宛先へのマルチキャストの場合を示しており、宛先ビットマップ４４で１が記録されている宛先に対し、最も左側の（先頭側）宛先の整理番号をセルの整理番号領域１の位置４５−１へ記録する。同様に、左側から２、３、４番目の宛先の整理番号を、セルの整理番号領域２、整理番号領域３、整理番号領域４の位置４５−２、４５−３、４５−４へそれぞれ記録する。
【００３４】
セルに整理番号を付与したら、図４の対応する宛先用整理番号を１増加させることで、次回のセルの整理番号を準備する。尚、整理番号として管理する番号数は、分散部１００から目的の整列部３００でセルの順番が整列されるまでの途中の継路上の全てのバッファ量を超える量とすれば、整列部３００では、同時に同じ整理番号が出現して整列不能に陥ることはない。
本実施の形態において、宛先の数がセルに付与可能な整理番号の数（指定の個数）を超えない場合、すなわち、図３のセルヘッダの例では宛先の数が４個を超えない場合、分散部１００から送信されたセルは、交換部２００が宛先ビットマップ４４で示される有効な宛先すべてに対してコピーし、対応する整列部３００へ送信する。
【００３５】
図８は、宛先の数が整理番号領域の数を超えた場合の説明図である。
宛先の数がセルに付与可能な整理番号の数を超えた場合は、分散部１００でパケットおよびそこから生成されるセルをコピーしてから送信する。例えば、図３のセルヘッダの例では宛先の数が４個を超える場合、分散部１００でコピーする。図８では宛先の数が６個の場合の例を示す。この場合、６ビットが有効な宛先ビットマップ４４を、有効なビットがセルに付与可能な整理番号の数４を超えないように２分割する。図８の例では、有効な宛先の数が４ビットの一つ目のセルの一部３５−１と、２ビットの二つ目のセルの一部３５−２に２分割している。なお、分割の仕方は３ビットずつなど適宜の割合でわけてよい。分割後の宛先ビットマップ４４の有効ビットと整理番号４５−１、４５−２、４５−３、４５−４の関係は図８に示す通りであり、一つ目のセル３５−１では、分割された宛先ビットマップの有効ビットの示す宛先の整理番号を、それぞれ整理番号４５−１、４５−２、４５−３、４５−４の位置に記録する。二つ目のセル３５−２では、分割された宛先ビットマップの有効ビットの示す宛先の整理番号を、それぞれ整理番号４５−１、４５−２の位置に記録する。図示はしないが、上述の説明と同様の考え方に基づき、宛先ビットマップ４４の有効なビット数が８個を超えれば３分割、１２個を超えれば４分割等すればよい。
【００３６】
図９に、パケットとセル、および、セルヘッダに付与する整理番号の関係の例を示す。
この例では、パケット１は３セルで構成され、宛先１行きなので、それぞれのセルヘッダには宛先１用整理番号として０、１、２を整理番号領域１の位置へ記録する。パケット２は６セルで構成され、宛先１と宛先３へのマルチキャストなので、それぞれのセルヘッダには宛先１用整理番号として先ほどの続きの番号３〜８を整理番号領域１の位置へ、また、宛先３用整理番号として０〜５を整理番号領域２の位置へ記録する。
パケット３は３セルで構成され、宛先２行きなので、それぞれのセルヘッダには宛先２用整理番号として０、１、２を整理番号領域１の位置へ記録する。パケット４は５セルで構成され、宛先２と宛先３へのマルチキャストなので、それぞれのセルヘッダには宛先２用整理番号として先ほどの続きの番号３〜７を整理番号領域１の位置へ、また、宛先３用整理番号として６〜１０を整理番号領域２の位置へ記録する。パケット５は３セルで構成され、宛先１〜宛先６へのマルチキャストなので、パケットをコピーし、宛先ビットマップを２分割する。例えば、宛先１〜宛先４が有効（宛先５、６は無効）な宛先ビットマップと宛先５、宛先６が有効（宛先１〜４は無効）なビットマップへ２分割する。そして、前者の宛先ビットマップを持つセルに対しては、それぞれのセルヘッダには宛先１用整理番号として９〜１１をセルヘッダの整理番号領域１の位置へ、宛先２用整理番号として８〜１０を整理番号領域２の位置へ、宛先３用整理番号として１１〜１３を整理番号領域３の位置へ、宛先４用整理番号として０〜２を整理番号領域４の位置へ記録する。また、後者の宛先ビットマップを持つセルに対しては、それぞれのセルヘッダには宛先５用整理番号として０〜２を整理番号領域１の位置へ、宛先６用整理番号として０〜２を整理番号領域２の位置へ記録する。
【００３７】
分散部１００は、複数存在する交換部２００のうち送信可能なところへ、必要なセルヘッダを付与したセルを送信する。送信する交換部２００の選択については、従来と同様にできる。交換部２００は、セルの宛先ビットマップに従い、セルを目的宛先の整列部３００へ送信する。
宛先の整列部３００には、複数の交換部２００からセルが到着する。同一の交換部２００から到着するセルは、任意の一つの送信元だけに着目すると順番が揃ったままである。しかし、異なる交換部２００の間での任意の一つの送信元に関する順番は保証されないため、整列部３００はセル順序を適切に並べ直してからパケットを復元する必要がある。
図１０に、本実施の形態における整列部３００の構成例を示す。図１１、図１２は、セルの整列、パケットの復元のフローチャートである。図１１および図１２のフローチャートと合わせて、セル順序を適切に並べ直してパケットを復元する方法について説明する。
整列部３００は、例えば、各交換部２００に対応する振分部３０５と、各送信元の分散部１００に対応する複数の整列ブロック３１０と、出力パケット選択部３２０を有する。交換部がＭ個ある場合、振分部はＭ個存在し、分散部１００がＮ個ある場合、整列ブロック３１０はＮ個存在する。整列ブロック３１０は、その入力に交換部２００に対応するＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）キュー３１１と、期待整理番号管理部３１２と、整理番号比較部３１３と、整列済みＦＩＦＯキュー３１４とを備える。交換部２００がＭ個である場合、各整列ブロック３１０にはＭ個の交換部対応ＦＩＦＯキュー３１１が存在する。なお、図１０の整列部は、図１の整列部のひとつに対応する。従って、分散型スイッチファブリックは、図１０の構成をＮ個有している。
【００３８】
整列部３００はセルを受信（図１１のＳ５００）すると、振分部３０５が、セルをセルヘッダの送信元番号４３に基づき分散部１００に対応する整列ブロック３１０へ振り分け、経由してきた交換部２００に対応するＦＩＦＯキュー３１１へ記録する（図１１のＳ５０１）。そして、整理番号比較部３１３は、宛先ビットマップ４４との相関関係から、整列ブロック３１０毎、Ｍ個ある交換部対応ＦＩＦＯキュー３１１のうち一つを選び、先頭のセルの整理番号フィールド４５−１、２、３、４の整理番号のうち、当該整列部３００に対応する整理番号フィールドの整理番号を選んで、期待整理番号３１２と比較を行う（図１１のＳ５０２）。
【００３９】
より具体的には、整理番号比較部３１３は、宛先ビットマップの有効ビット（ビットが１）を参照して、複数の整理番号領域１〜４のうち自整列部に対応するフィールドを求める。例えば、図７の下図に示すように、宛先ビットマップの有効ビットと整理番号領域は対応しており、宛先ビットマップの有効ビットのうち、自整列部に対応するビットが先頭から何番目か（相対的位置関係）が分かれば、整理番号領域（格納位置）を特定できる。整理番号比較部３１３は、各ＦＩＦＯキューの先頭セルについて、特定した整理番号領域を参照し、期待整理番号管理部３１２で管理されている期待整理番号と比較する。なお、期待整理番号３１２は、例えば、初期値として０が記憶され、一致する整理番号のセルをＦＩＦＯキュー３１１から抽出するたびに、１増加される。また、管理している期待整理番号が最大値（又は予め定めた整理番号の数の値）であった場合は前記の増加によって期待整理番号をゼロ又は初期値とする。
比較結果が不一致であれば、整理番号比較部３１３は、他の交換部対応ＦＩＦＯキュー３１１の先頭セルの検査を行う（図１１のＳ５０４）。
比較結果が一致であれば、整理番号比較部３１３は、一致した交換部対応ＦＩＦＯキュー３１１の先頭セルを整列済みＦＩＦＯキュー３１４へ移動し、次回の比較のために期待値整理番号３１２を１増加する（図１１のＳ５０３）。この操作により、任意の送信元からのセル順番を適切に並べ直すことができる。以上の処理は、各整列ブロック３１０で実行される。
【００４０】
その後、出力パケット選択部３２０は、パケットの末尾セルであることを示す末尾記号４２を持つセルが存在する整列済みＦＩＦＯキュー３１４のいずれか一つを選び（図１２のＳ５１０）、先頭記号４１を持つセルから末尾記号４２を持つセルまでを、選ばれたＦＩＦＯキュー３１４から取り出す（図１２のＳ５１１）。出力パケット選択部３２０は、セルヘッダを削除してセルペイロードのみを集めることでパケット（解析情報を含むパケット）を復元し、出力する。復元すべきパケットの正確な末尾位置は、パケット（解析情報を含むパケット２０）の中の解析情報１１を参照することで特定できる。
【００４１】
尚、セルが整列部３００に到着するまでに、何らかの障害が発生して任意のセルが消滅してしまう可能性がある。このような障害が発生した場合でも、セルおよびパケットの整列処理を続行する方法を、図１０を参照しながら説明する。
まず、本実施の形態では整列部３００の整列ブロック３１０の整理番号比較部３１３では、各交換部対応のＦＩＦＯキュー３１１の先頭のセルが期待する整理番号のセルかどうか検査する。もし、障害で期待する整理番号を持つセルが消滅している場合、前述の期待整理番号の検査（Ｓ５０２、Ｓ５０４）が成功しなくなる。そこで、整列ブロック３１０では、障害検出のために任意の時間を設定しておく。そして、末尾記号４２を持たない任意のセルが検査に成功してから次のセル（後続の整理番号を含むセル）が前記の任意の設定時間を経過しても到着しない場合、期待すべき整理番号を持つセルは障害で廃棄されたものとみなす。そして、現在の期待整理番号３１２のセルはエラーセルであるという情報を整列済みＦＩＦＯキュー３１４へ積む。また、期待整理番号３１２を１増加させて後続のセルの検査を続ける。
【００４２】
また、ある整列ブロック３１０の全ての交換部対応ＦＩＦＯキュー３１１にセルがあり、尚且つ、それらの先頭のセルが期待整理番号３１２と異なる値を持っている場合、やはり、現在の期待整理番号３１２を持つセルが障害で消滅していることがわかる。よって、この場合も、現在の期待整理番号３１２のセルはエラーセルであるという情報を整列済みＦＩＦＯキュー３１４へ積む。また、期待整理番号３１２を１増加させて後続のセルの検査を続ける。
エラーセルを受信した整列済みＦＩＦＯキュー３１４は、エラーを含むパケットを出力できる状態にある。そこで、先頭セルからエラーセルまでを、エラーパケットであるという情報と共に出力する。尚、エラーセルを受信した整列済みＦＩＦＯキュー３１４は、その後、先頭記号４１を含むセルでない限り、受信するセルを全て廃棄することで、整列部３００の出力に誤った状態のパケットを出力することがなくなる。
以上、本実施の形態によるセル分散型スイッチファブリックについて詳細な説明を行った。上述の説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【００４３】
２．第２の実施の形態
第２の実施の形態では、図１における分散型スイッチファブリックの分散部１００が特定の一宛先以外に、指定の宛先パターンに対しても整理番号を管理する。
図１３に、第２の実施の形態における、整理番号管理部１４１の構成図を示す。
第２の実施の形態では、図１３に示すように、Ｎ個の分散部１００の整理番号管理部１４１は、いずれも特定の一宛先用の整理番号７０−１〜７０−Ｎ以外に、指定の宛先パターン用整理番号７１を管理する。例えば、全ての宛先に対して送信を行うブロードキャストを指定宛先パターンとして設定すれば、ブロードキャスト用パケットを送信するセルに対しては、指定宛先パターン用整理番号７１を図３のセルヘッダ３１の中の整理番号１の位置４５−１に付与する。
図１４に、第２の実施の形態におけるパケットとセル、および、セルヘッダに付与する整理番号の関係の例を示す。
パケット１からパケット４までは第１の実施の形態と同じルールでセルヘッダに整理番号を付与する。３セルで構成されるパケット５が前述のブロードキャストであるとすれば、指定宛先パターン用整理番号として０、１、２を３個のセルヘッダの整理番号１の位置４５−１へそれぞれ付与する。
【００４４】
図２０は、第２の実施の形態における整列ブロック３１０の構成図である。
図２０に示すように宛先の整列部３００では、整列ブロック３１０の中で２種類の期待整理番号を管理する期待整理番号管理部３１２Ｂと、２種類の整列済みＦＩＦＯキュー３１４Ｂと、整列ブロック内パケット選択部３１５とを有する。すなわち、特定の送信元に対して、２フローを管理することになる。この例では、１フローはブロードキャストフロー（フロー０とする。第１のフロー）であり、もう１フローはブロードキャスト以外の当該宛先を含むフロー（フロー１とする。第２のフロー）である。整列部３００は、第１の実施の形態と同様にセルを適切な整列ブロック３１０に振り分けた後、セルヘッダの中の宛先ビットマップ４４を参照して、２フローのうちいずれであるかを判別する。整列部３００は、判別したフロー用の期待整理番号３１２Ｂと、受信セルの整理番号の一致検査を行い、一致したセルを対応するフローの整列済みＦＩＦＯキュー３１４Ｂへ格納する。そして、パケット末尾までのセルが揃ったいずれか一方の整列済みＦＩＦＯキュー３１４Ｂを整列ブロック内パケット選択部３１５で選択し、図１０に示すパケット選択部３２０の選択候補とする。その後のパケット復元処理や障害発生時の処理に関しては第１の実施の形態と同様に行えばよい。なお、分散部１００の他の構成、交換部２００の構成、整列部３００の他の構成は、第１の実施の形態と同様である。
本実施の形態では、宛先となる整列部３００では送信元あたり２フローだけを扱えばよい。すなわち、フロー内のセルおよびパケットの整列時に必要とする保持メモリ量を送信元数の２倍に比例する量（送信元数の２倍に応じた量）だけに削減することができ、従来方法より少ないコストで、高い交換容量の分散型スイッチファブリックを構成可能となる。
【００４５】
尚、指定の宛先パターンは、セルヘッダに付与可能な整理番号数を超える数の宛先へのマルチキャストとすることができる。前記指定の宛先パターン場合、第１の実施の形態では、セルを分散部１００で２個以上にコピーする必要があったが、第２の実施の形態では、コピーを不要にできる利点を持っている。
以上、本実施の形態によるセル分散型スイッチファブリックについて詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【００４６】
３．第３の実施の形態
本発明による第３の実施の形態では、図１における分散型スイッチファブリックの分散部１００が任意の二つの宛先を２ビット表現（ビットが１の場合にセルを送信）し、前記２ビットの組合せとして０１、１０、１１の３種類を該当する２宛先へのフローとして定義し、フロー毎に連続する整理番号を管理する。
図１５に、第３の実施の形態の場合のセルヘッダの宛先ビットマップ４４と整理番号４５の関係の例を示す。
宛先が最大Ｎ個であればＮを２で割った数の整理番号用フィールド４５を用意する。この例では、宛先が最大８個であるため、８を２で割った４個の整理番号用のフィールド４５−１、４５−２、４５−３、４５−４を用意している。宛先ビットマップ４４はどの２宛先をペアにしても良いが、図１５の例では理解を容易にするために、隣り合う２宛先同士をペアにしている。なお、宛先最大個数Ｎを２で割った値が大きすぎる場合、第１の実施の形態のように、宛先ビットマップ４４を適宜分割して整理番号用フィールド４５の個数を抑え、分散部１００でセルのコピーをするようにしてもよい。
【００４７】
ある宛先に対し、セルを送信する場合、当該宛先を示す宛先ビットマップ４４の位置（ビット）が１（有効）になる。すなわち、有効な宛先を示す２ビットの組合せは０１、１０、１１の３種類（３フロー）に限られる。ビットの組み合わせ００はセルを送信しないので、整理番号を管理しなくてもよい。そこで、分散部１００は、有効な組合せのみに対して整理番号を管理することができる。総宛先数が８個の例で示すと、宛先１と宛先２を示す宛先ビットマップ部分の組合せ、宛先３と宛先４を示す宛先ビットマップ部分の組合せ、宛先５と宛先６を示す宛先ビットマップ部分の組合せ、宛先７と宛先８を示す宛先ビットマップ部分の組合せ、それぞれによって同時に整理番号管理部１４１にアクセスする。
【００４８】
図１６は、第３の実施の形態における整理番号管理部１４１の構成例である。
２つの宛先の有効な組合せは上述のように３種類ずつなので、整理番号管理部１４１は宛先１と２に対して、図１６に示すように、ビットの組み合わせ１０に対応する宛先１用整理番号７１−１、ビットの組み合わせ０１に対応する宛先２用整理番号７１−２、ビットの組み合わせ１１に対応する宛先１かつ宛先２用整理番号７１−３のように管理する。指定された宛先の有効な組合せに対応する整理番号をセルの指定の整理番号位置へ付与する。なお、他の宛先の組み合わせについても同様である。
例えば、整理番号管理部１４１は、入力された宛先ビットマップを２ビットずつに分割し、宛先１及び２（先頭の２ビット）に対して、ビットの組み合わせが１０であれば、対応する宛先１用整理番号７１−１を読み出し、ビットの組み合わせが０１であれば、対応する宛先２用整理番号７１−２を読み出し、ビットの組み合わせが１１であれば、対応する宛先１及び２用整理番号７１−３を読み出す。また、他の２つの宛先に対しても同様に整理番号を読み出す。整理番号管理部１４１は、読み出した複数の整理番号を整理番号付与部１４０に出力する。ここで出力される整理番号は、宛先ビットマップの宛先数をＮとするとＮ／２である。
【００４９】
図１７に、第３の実施の形態におけるパケットとセル、および、セルヘッダに付与する整理番号の関係の例を示す。
宛先１へのパケット１から生成されるセルに対しては、宛先１用整理番号をセルヘッダの整理番号１の位置４５−１に付与する。宛先１と宛先３へのパケット２から生成されるセルに対しては、宛先１用整理番号をセルヘッダの整理番号１の位置４５−１に、また、宛先３用整理番号をセルヘッダの整理番号２の位置４５−２に付与する。宛先２へのパケット３から生成されるセルに対しては、宛先２用整理番号をセルヘッダの整理番号１の位置４５−１に付与する。
宛先２と宛先３へのパケット４から生成されるセルに対しては、宛先２用整理番号をセルヘッダの整理番号１の位置４５−１に、また、宛先３用整理番号をセルヘッダの整理番号２の位置４５−２に付与する。宛先１から宛先６へのパケット５から生成されるセルに対しては、宛先１かつ宛先２用整理番号をセルヘッダの整理番号１の位置４５−１に、また、宛先３かつ宛先４用整理番号をセルヘッダの整理番号２の位置４５−２に、また、宛先５かつ宛先６用整理番号をセルヘッダの整理番号３の位置４５−３に、それぞれ付与する。
【００５０】
宛先の整列部３００では、整列ブロック３１０の中で２種類の期待整理番号３１２と２種類の整列済みＦＩＦＯキュー３１４を管理する。すなわち、特定の送信元に対して、２フローを管理することになる。この例では、１フローは自宛先とペアになる１宛先が有効であるフローであり、もう１フローは自宛先とペアになる１宛先が無効であるフローである。言い換えると、例えば、２ビット表現で左（又は右）のビットを自宛先とした場合、前者は１１となるフロー、後者は１０（又は０１）となるフローである。整列部３００は、第１の実施の形態と同様にセルを適切な整列ブロック３１０に振り分けた後、セルヘッダの中の宛先ビットマップ４４を参照して、上記２フローのうちいずれであるかを判別する。例えば、自宛先に対応するビットが予め定められており、２ビット表現の組み合わせとなるビットが自ビットの前か後かが予め定められている。例えば、先頭から２ビットずつ区切っていくことにより、自ビットを含む２ビットを判別できる。該当するフロー用の期待整理番号３１２と一致検査を行い、一致したセルを対応する整列済みＦＩＦＯキュー３１４へ格納する。その後のパケット復元処理や障害発生時の処理に関しては第１の実施の形態と同様に行えばよい。分散部１００の他の構成、交換部２００の構成、整列部３００の他の構成は上述の第２の実施の形態と同様である。
【００５１】
この実施の形態では、第２の実施の形態と同様、宛先となる整列部３００では送信元あたり２フローだけを扱えばよい。すなわち、フロー内のセルおよびパケットの整列時に必要とする保持メモリ量を送信元数の２倍に比例する量（送信元数の２倍に応じた量）だけに削減することができ、従来方法より少ないコストで、高い交換容量の分散型スイッチファブリックを構成可能となる。
また、第３の実施の形態は、第１の実施の形態や第２の実施の形態とは異なり、マルチキャストの宛先数が図３のセルヘッダが持つ整理番号フィールド４５の個数を超えた場合でも、分散部１００でのセルコピーを無くすことができる場合がある。例えば、総宛先数が１６である場合、図３の整理番号フィールド４５を８個（総宛先数を２で割った値）備えれば、あらゆるマルチキャストでも分散部１００でセルのコピーが一切発生しない。同じ条件でも、第１の実施の形態では、総宛先数が８を越えると分散部１００でセルを２個にコピーする必要がある。また、第２の実施の形態では指定の宛先パターンの場合はコピー不要であるが、それ以外で総宛先数が８を越えると分散部１００でセルを２個にコピーする必要がある。
以上、本実施の形態によるセル分散型スイッチファブリックについて詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【００５２】
４．第４の実施の形態
第４の実施の形態では、図１における分散型スイッチファブリックの分散部１００と整列部３００が複数の回線を収容する。
図１８は、本実施の形態のスイッチファブリックの構成図である。
例えば、各分散部１００および各整列部３００がともに１６個（Ｎ個）あり、いずれも４回線（ｉ回線）を収容する場合、図１８に示すようなスイッチファブリックとなる。ここで、Ｎ、ｉはそれぞれ、２以上の整数である。なお、分散部と整列部は同数でなくてもよく、例えば、分散部１００はＭ個あり、ｊ回線（ｊ個の入力ポート）を収容するものでもよい。ここで、Ｍ、ｊはそれぞれ、２以上の整数である。
この場合、図１９に示す分散部１００において、パケット受信部１１０が１回線入力ではなく、４回線入力となる。また、図１０に示す整列部３００において、出力パケット選択部３２０が１回線出力ではなく、４回線出力となる。
任意の分散部１００から見ると、スイッチファブリックとして総出力ポート数は１６ｘ４＝６４となる。この場合、図２のパケット２０が持つ解析情報１１において６４ビット（Ｎ×ｉビット）の宛先ビットマップ５４を保持する。この６４ビットの宛先ビットマップ５４では、連続する４ビットによって特定の宛先となる整列部３００を選択できる。例えば、宛先ビットマップを先頭から整列部１のポート１〜４、整列部２のポート１〜４、、、に対応するよう定めれば、先頭の４ビットは整列部１宛、次の４ビットは整列部２宛に対応する。
【００５３】
そこで、分散部１００は、６４ビットの宛先ビットマップ（第１の宛先ビットマップ）５４において連続する４ビットに対し論理和をとった値を１ビットに変換し、１６ビットのセルヘッダ用の宛先ビットマップ４４を生成し、１６ビットの宛先ビットマップ（第２の宛先ビットマップ）４４をセルヘッダとして付加して交換部２００でのスイッチングに利用する。
例えば、パケット受信部１１０が、入力されたパケットの６４ビットの宛先ビットマップを４ビットずつに区切り、区切られた４ビットに対し論理和をとって１ビットに変換し、変換された１ビットを並べた１６ビットの宛先ビットマップを作成する。パケット受信部１１０は、作成した１６ビットの宛先ビットマップに従い、上述の第１の実施の形態と同様に、宛先（ここでは整列部及びマルチキャストに対応）に対応するＶＯＱ１２０にパケットを格納する。このとき、作成された１６ビットの宛先ビットマップをパケットに付与してもよい。
【００５４】
なお、パケット受信部１１０は、ＶＯＱを宛先（ここでは整列部の各ポート及びマルチキャストに対応）毎に備え、６４ビットの宛先ビットマップに従い、パケットをＶＯＱ１２０に格納してもよい。この場合、１６ビットの宛先ビットマップの作成は、セル生成部１３０で行ってもよい。
セル生成部１３０は、作成された１６ビットの宛先ビットマップを含むセルヘッダを用いて、パケットからセルを作成する。整理番号付与部１４０は、１６ビットの宛先ビットマップに従い、上述の第１の実施の形態と同様に整理番号を付与し、セル振分部１５０はセルを交換部２００に振り分ける。
目的の宛先の整列部３００では、到着したセル群を上述の第１の実施の形態と同様に整列してパケット２０を復元する。復元後、例えば出力パケット選択部３２０が、復元されたパケット２０内の解析情報１１として含まれる６４ビットの宛先ビットマップ５４の中の当該整列部３００を示す４ビットの情報を参照し、４つある出力ポートのうち、目的となるひとつ又は複数の宛先ポートへパケットを送信する。
以上、本実施の形態によるセル分散型スイッチファブリックについて詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。なお、本実施の形態は、上述の第１の実施の形態と組み合わせる以外にも、第２、第３の実施の形態と組み合わせることもできる。
【産業上の利用可能性】
【００５５】
本発明によるセル分散型スイッチファブリックは、例えば、大容量回線を利用したデータ交換が必要なシステムで利用することができる。例えば、ルータやスイッチに代表されるネットワーク装置内のスイッチファブリックや、サーバやストレージ機器の装置内のスイッチファブリック等での利用が考えられる。
【図面の簡単な説明】
【００５６】
【図１】本実施の形態の分散型スイッチファブリックの一実施形態を示すブロック図。
【図２】可変長パケットから固定長セルを生成する様子を示す模式図。
【図３】本実施の形態におけるセルヘッダの構成例。
【図４】本実施の形態における整理番号を得る方法を示す模式図。
【図５】従来例におけるセルヘッダの構成例。
【図６】従来例における宛先ビットマップから整理番号を得る方法を示す模式図。
【図７】本実施の形態における宛先ビットマップと整理番号の関係を示す模式図。
【図８】本実施の形態における宛先ビットマップと整理番号の関係を示す模式図。
【図９】本実施の形態におけるパケットとセルと整理番号の関係を示す模式図。
【図１０】本実施の形態における整列部のブロック図。
【図１１】本実施の形態におけるセル整列方法を示すフローチャート。
【図１２】本実施の形態におけるパケット復元方法を示すフローチャート。
【図１３】本実施の形態における整理番号を得る方法を示す模式図。
【図１４】本実施の形態における図１２に対応するパケットとセルと整理番号の関係を示す模式図。
【図１５】本実施の形態における宛先ビットマップと整理番号の関係を示す模式図。
【図１６】本実施の形態における図１４に対応する整理番号を得る方法を示す模式図。
【図１７】本実施の形態における図１４に対応するパケットとセルと整理番号の関係を示す模式図。
【図１８】本実施の形態における入出力ポート数を増やした場合の分散型スイッチファブリックの一実施形態を示すブロック図。
【図１９】本実施の形態における分散部のブロック図。
【図２０】本実施の形態における分散部あたり２フロー用の整列部のブロック図。
【符号の説明】
【００５７】
１００：分散部
２００：交換部
３００：整列部
１０：パケット
１１：解析情報
２０：解析情報を含むパケット
３０：セル
３１：セルヘッダ
３２：セルペイロード
４４：宛先ビットマップ
４５：整理番号１１０  パケット受信部
１２０  ＶＯＱ
１３０  セル生成部
１４０  整理番号付与部
１４１  整理番号管理部
１５０  セル振分部
３０５  振分部
３１０  整列ブロック
３２０  出力パケット選択部
３１１  ＦＩＦＯキュー
３１２  期待整理番号管理部
３１３  整理番号比較部
３１４  整列済みＦＩＦＯキュー
３１５  整列ブロック内パケット選択部
【図１】
0004958745.tif 000002
【図２】
0004958745.tif 000003
【図３】
0004958745.tif 000004
【図４】
0004958745.tif 000005
【図５】
0004958745.tif 000006
【図６】
0004958745.tif 000007
【図７】
0004958745.tif 000008
【図８】
0004958745.tif 000009
【図９】
0004958745.tif 000010
【図１０】
0004958745.tif 000011
【図１１】
0004958745.tif 000012
【図１２】
0004958745.tif 000013
【図１３】
0004958745.tif 000014
【図１４】
0004958745.tif 000015
【図１５】
0004958745.tif 000016
【図１６】
0004958745.tif 000017
【図１７】
0004958745.tif 000018
【図１８】
0004958745.tif 000019
【図１９】
0004958745.tif 000020
【図２０】
0004958745.tif 000021