分散型スイッチファブリックシステム
【課題】 各交換部が非同期動作する分散型スイッチにおいて、交換容量が低下しない分散・復元動作を実現し、複数スイッチから順不同に到着するセルをフロー内及びパケット内で元通りに復元する復元動作を、小容量のハードウェアで実現する。
【解決手段】 分散部100では同じ宛先への可変長パケットを固定長セルに分割後、スイッチ数の整数倍個ずつ送信し、整列部300では各交換部(交換部1〜交換部M)から順不同に到着するセルを受信バッファに保持したまま、ヘッダ情報だけを分離して再検査キューに保持し、受信時の順番検査またはキューの再検査でフロー中の先頭と判明したら対応するセル本体を受信バッファから抜出してセル順番を復元し、パケットを再生する。
【解決手段】 分散部100では同じ宛先への可変長パケットを固定長セルに分割後、スイッチ数の整数倍個ずつ送信し、整列部300では各交換部(交換部1〜交換部M)から順不同に到着するセルを受信バッファに保持したまま、ヘッダ情報だけを分離して再検査キューに保持し、受信時の順番検査またはキューの再検査でフロー中の先頭と判明したら対応するセル本体を受信バッファから抜出してセル順番を復元し、パケットを再生する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ルータ、サーバ、ストレージ装置などにおいて、装置内部に有する複数の機能ブロックを動的に相互に接続するスイッチ技術に関する。特に、独立動作する複数のスイッチを利用し、宛先でデータの到着順序が入れ替わる場合に、順番通りに並べ替えるための技術に関する。
【背景技術】
【0002】
ルータなどのネットワーク転送装置やサーバ装置、複数のディスクアレイを接続するストレージ装置などでは、装置内部の機能ブロック間でデータ交換を行うためにスイッチファブリックが利用される。スイッチファブリックの交換容量は、ポート数とポート容量(回線速度)の積で表現され、大交換容量を実現するためには、ポート数とポート容量のいずれか片方、もしくは両方を増加させる必要がある。
【0003】
ポート数を増加させるには、要素スイッチを多段結合し、オメガ網やクロス網、ファットツリー網等を形成することにより実現が可能である。また、スイッチLSI(Large Scale Integration)のポート容量を増加させることでポート容量を増加させることも可能であるが、LSIに実装可能なピン数は、その時代のCMOS(Complementary MOS)の実装限界によって制限されるため、大容量ポートを実現すると、スイッチLSIあたりのポート数は減少する。
【0004】
ここで、大容量ポートを少数持つスイッチLSIを多段結合することでスイッチファブリック全体の交換容量を向上することは可能であるが、総ポート数を大きくするに従って接続段数が大きくなり、結果としてスイッチファブリック通過のレイテンシが大きくなる問題、また、宛先が異なってもスイッチファブリック内で衝突が発生してスループットが低下する問題が発生する。これらの問題を回避して、目的の交換容量を実現する方法として、分散型スイッチ(パラレルパケットスイッチ)が知られている。
【0005】
分散型スイッチでは、要求容量の1/Mの容量のポートを備える比較的低速なスイッチLSIをM個用意し、スイッチファブリックの入力にあたる分散部において、入力データを分割して各スイッチへ分散して通過させることで所望の大交換容量を実現する。一般に、ネットワーク装置で利用されるスイッチの場合、入力データは可変長のパケットであり、パケットは固定長のセルと呼ばれる単位に分割される。
【0006】
分散型スイッチを最も容易に構成する場合、交換部用に用いる複数のスイッチLSIを完全に同期させ、更に完全に同一の宛先調停動作を実施する。よって、宛先には、完全に予測可能なタイミングで順番通りにセルが到着するため、容易にパケットを元通りに復元可能であり、更にフロー内のパケット順番も容易に復元可能である。
【0007】
ところが、近年、スイッチに要求されるポート容量、交換容量は非常に大きくなっており、分散型スイッチを構成する各スイッチLSI自体も高速してきている。例えば、LSI間の通信には、SerDes(SERialization/DE-Serialization)と呼ばれる高速シリアル伝送が利用されたり、セルの交換処理ピッチも短縮化されたりしているため、各スイッチLSIを完全同期させることが事実上困難である。よって、各スイッチが非同期動作する、すなわち、各スイッチが独立して宛先調停を行なう分散型スイッチが必要である。
【0008】
各交換部が非同期動作する分散型スイッチでは、スイッチファブリックの入力にあたる分散部でのセルの送信順番と、スイッチファブリックの出力にあたる整列部でのセルの到着順番が一致することが保証されない。よって、同一送信元から同一宛先を目指すパケット群(フロー)内のセルの順番を元通りに復元し(フロー復元)、更にパケットを元通りに復元(パケット復元)しなくてはならない。
【0009】
US2004/0143593(A1)では、パケットのシーケンス番号(整理番号)、送信元番号、ルーティングインデックス(単一の宛先、もしくは複数の宛先の組合せを参照するための値)、優先度を利用して、宛先において各フローのパケットを十分な量溜め込んだのち、パケット順番を元通りに復元する方法が開示されている。しかしながら、US2004/0143593(A1)のパケット順番復元方法は、送信元番号、ルーティングインデックス、優先度の積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。
【0010】
WO02/43329(A1)では、同一のパケットから生成したセルには、宛先番号、送信元番号、セル分割番号の他、同一のタイムスタンプを付加し、スイッチファブリックの各部で共通の時計を利用して、スイッチ内ではタイムスタンプの古いものを優先して選択し、スイッチの宛先では、同一のフローに属するセル、パケットをタイムスタンプの値が古いものから順に順序復元を行う方法が開示されている。しかしながら、WO02/43329(A1)のセル、パケット順番復元方法は、送信元番号、ルーティングインデックスの積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。また、スイッチファブリック各部で共通の時計を利用し、その時刻を元に並べ替えを行う点も、パケットやセルの転送速度が向上するにつれて困難になりうる課題を持つ。
【0011】
USP6832261(B1)では、セル、パケット順序復元用のデバイスを複数個用いて、互いに交信しつつセル、パケットの順序復元を行う方法が開示されている。USP6832261(B1)の実施例から、送信元スロット(送信元番号)、シーケンス番号(整理番号)、宛先スロット(宛先番号)の積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。
【0012】
また、USP6832261(B1)は、スイッチファブリックの出力にあたる整列部を主眼にかかれているため、明記されていないが、US2004/0143593(A1)とWO02/43329(A1)では、各スイッチの負荷に応じて、スイッチファブリックの入力にあたる分散部においてロードバランスを取りながら分散動作を行うことが開示されている。しかしながら、一般に、単純なロードバランス動作を行うと、輻輳状態にあるスイッチに溜まっているセルやパケットが目的の宛先、すなわち、スイッチファブリックの出力にあたる整列部に到着する前に、後続のセルやパケットが非輻輳状態のスイッチを経由して到着しうる。よって、整列部においてセルやパケットの順番を復元するために、整列部は大量のセルやパケットの保持が必要であり、ハードウェア量が多くなりうる課題を持つ。
【0013】
以上のように、従来の、各交換部が非同期動作する分散型スイッチでは、整列部におけるフロー復元、パケット復元の手法に関して開示されているが、いずれの手法もハードウェア量が多くなりうる課題を持っている。分散型スイッチは、スイッチ全体の交換容量を向上させることが本来の目的であるため、分散動作、復元動作によって交換容量が低下しないように潤沢なハードウェアを搭載していると考えることもできるが、装置を低コスト化するためには、より小規模のハードウェアで実現可能な整列部を持つ分散型スイッチが望まれる。
【0014】
【特許文献1】US2004/0143593(A1)
【特許文献2】WO02/43329(A1)
【特許文献3】USP6832261(B1)
【発明の開示】
【発明が解決しようとする課題】
【0015】
各交換部が非同期動作する分散型スイッチにおいて、交換容量が低下しない分散動作、復元動作を実現することが課題である。また、複数のスイッチから順不同に到着するセルを、フロー内及びパケット内で元通りに復元する方法を小容量のハードウェアで実現することが課題である。
【課題を解決するための手段】
【0016】
スイッチファブリックの入力部で、同じ宛先への1個以上の可変長データを固定長データに分割後、スイッチ数の整数倍個ずつ送信し、スイッチファブリックの各交換部で同一送信元の固定長データは順番を維持したまま、固定長データ単位で宛先毎出力調停を行う。スイッチファブリックの出力部では、受信バッファに固定長データを保持したまま、固定長データの送信元番号とフロー番号によってフローの区別を行い、現在の先頭番号を、当該固定長データの整理番号と比較し、一致すればフローの先頭とみなす。不一致であれば当該固定長データを一時保持し、後続の固定長データの整理番号の確認とともに、一時保持した固定長データの整理番号の再確認を繰り返し、最終的に一致したものをフローの先頭とみなす。フロー先頭となった固定長データは、更に送信元番号とフロー番号が同じものの中でパケット先頭及びパケット末尾を検出してパケットを復元する。
【発明の効果】
【0017】
本発明を利用することにより、各スイッチが非同期動作する分散型スイッチにおいて、交換容量が低下しない分散動作、復元動作を実現可能となる。また、複数のスイッチから順不同に到着するセルを、フロー内及びパケット内で元通りに復元する方法を小容量のハードウェアで実現することが可能となる。よって、従来方法より少ないコストで、高い交換容量の分散型スイッチを構成可能となる。
【発明を実施するための最良の形態】
【0018】
以下、より詳細な内容を添付図面に基づいて実施例で説明する。
【実施例1】
【0019】
本発明における分散型スイッチ構成の一実施例を図1に示す。分散型スイッチは、スイッチファブリックの入力にあたるN個の分散部100、データ交換を行うM個の交換部200、スイッチファブリックの出力にあたるN個の整列部300で構成する。尚、図1は、構成を明快にするために分散型スイッチの一部のみを図示しているが、入出力の数、交換部の数は様々な組合せが可能であり、例えば、入出力が4個、交換部が3個の分散型スイッチを構成する場合の全体像は、図2に示す通りである。すなわち、4個の分散部100−{1〜4}、3個の交換部200−{1〜3}、4個の整列部300−{1〜4}で構成される。
【0020】
まず、各部の役割を簡単に紹介する。分散部100は、受信した可変長のパケットを固定長のセルに分割し、複数の交換部200へ送信し、宛先の整列部300では、受信したセルを元通りの順番に直してパケットとして出力する。図2で、交換部200−{1〜3}は互いに独立に動作する、すなわち、入力セルに対して互いに独立に宛先調停を自立的に行うため、スイッチファブリック全体では非同期型の分散スイッチとして振る舞うことになる。
【0021】
ここで、各スイッチが非同期動作する分散型スイッチにおいて、交換容量が低下しない分散動作、復元動作を実現しつつ、複数のスイッチから順不同に到着するセルを、フロー内及びパケット内で元通りに復元する方法を小容量のハードウェアとメモリで実現するためには、次の2点を満足する必要がある。
【0022】
1点目は、スイッチファブリックの交換帯域を完全に活用すること、すなわち、各分散部が、各交換部に対して同量のセルを分散し、各整列部が、各交換部から同量のセルを受信できるようにすることである。2点目は、各整列部が受信するセルの順番乱れの量を極力少なくすることである。
【0023】
各スイッチが非同期動作する一般的な分散型スイッチでは、各交換部200に可変長パケットをそのまま分散してしまうと、長いパケットを送信した交換部200は負荷が高く、短いパケットを送信した交換部200は負荷が低くなる。そこで、可変長パケットを固定長のセルに分割し、1セルずつ順番に各交換部200へ送信することで前記不均衡を緩和できる。
【0024】
しかしながら、単純に1セルずつ順番に各交換部200へ送信するだけでは、ある分散部100から、ある整列部300へ到着するセルは、特定の交換部200だけを経由することがありうる。例えば、図2の分散型スイッチでも、パケット長が短く、1パケットから1セルだけが生成され、全分散部100に入力される各パケットの宛先が、1、2、3、1、2、3、1、2、3と繰り返される場合、各分散部100は、全ての交換部200に順次セルを送り出すのだが、宛先1行きのセルは、交換部200−1だけしか通過しない。同様に宛先2行きのセルは、交換部200−2だけしか通過しないし、宛先3行きのセルは、交換部200−3だけしか通過しない。整列部300−1からみると、全ての分散部100−1、100−2、100−3、100−4からのセルが交換部200−1からだけ到着するように見える。
【0025】
前記状況は、分散部100から観測すると、ある宛先に対しては、特定の交換部200の負荷が高くなるように見えるため、後続のパケットから生成したセルを負荷が低い別の交換部200を経由して整列部300へ送信して、全ての交換部200に対する不均衡をなくすような動作が必要になる。この不均衡をなくすため動作は、一般にロードバランスをとる動作として知られている。
【0026】
一旦、ロードバランス動作が発生すると、ある宛先から早期に送信されたセルがある交換部200に滞留している間に、後続のセルが別の交換部200を経由して先に目的の整列部300に届きうるため、整列部300におけるセルの到着順番を大きく乱す原因にもなる。そして、背景技術でも述べたように、整列部300でのセルの到着順番が大きく乱れる場合、整列部300はセルやパケットの順番を復元するために、大量のセルやパケットの保持が必要であり、ハードウェア量が多くなりうる課題を持つ。
【0027】
そこで、本発明では、分散部100から、全ての交換部200に、同一宛先のセルを可能な限り均等に送信することによって、全ての交換部200の均等利用、及び、整列部300の各送信元100から全ての交換部200を経由したセルの均等受信を実現する。
【0028】
分散部100における、より具体的なセル分散方法について図3を利用して説明する。可変長パケットはネットワーク111を経由して分散部100に入力され、フロー番号割当器110に到着する。フロー番号割当器110では、整列部300で受信セルの属する元のパケットの種類を区別するために、フロー番号を割当てる。宛先がひとつであるユニキャストを扱うだけであれば、前記区別のためにフロー番号は必要ないが、宛先が複数であるマルチキャストを扱う場合、整列部300では、どのパケットに属するセルか区別するためのフロー番号が必要となる。フロー番号は、最大で2のポート数乗のオーダーの数が必要であるが、実際にはあらゆる宛先の組み合わせのマルチキャストパケットが連続して出現するわけではないので、2の8乗から10乗程度のフロー番号があれば十分である。
【0029】
パケットにフロー番号を付与したあと、スイッチファブリックの宛先、及び優先度毎に独立したFIFO(FFirst In First Out)キューであるVirtual Output Queue(VOQ)120の対応するVOQへパケットを保持する。マルチキャスト用のVOQは、優先度毎に1本ずつであり、どのような宛先の組み合わせのマルチキャストも、対応する優先度の前記マルチキャスト用VOQに保持する。各VOQには、パケットのたまり具合を検出するために、パケット量カウンタを備える。また、パケットが入力されてから取り出しが行なわれるまでの時間を計測するタイマーを備える。
【0030】
VOQ120では、各VOQのパケットの溜まり具合を監視し、可変長パケットを固定長セルに分割した際に、前記セルの数が交換部200の数、例えば、図2の場合は、3を越えた場合に当該VOQを出力対象とする。複数のVOQが出力対象となっている場合は、優先度の高いものの中からラウンドロビンなどのアルゴリズムを利用してひとつを選択する。そして、クレジットテーブル160を参照し、交換部200群の当該宛先がセルを受信可能かどうか調査する。
【0031】
クレジットテーブルとは、宛先の受信バッファの空き容量を前記受信バッファが受信可能なセルの数をクレジットと呼んで管理するための機構である。図2のスイッチファブリックの場合のクレジットテーブル160の例を図9に示す。クレジットテーブルのエントリは、宛先毎に独立しており、更に各交換部用に独立している。本例では、いずれも8ずつクレジットを持っていることを示しており、各宛先の各交換部は、8個までセルを受信可能であることを示す。また、VOQ120が参照するための宛先毎に全交換部のクレジットを合計したVOQ参照用合計クレジット165を持つ。
【0032】
図4に示すフローチャートを利用して、VOQからのパケット抜出し方法の一実施形態を説明する。まず、ステップS600において、VOQ120の中にタイマーがあらかじめ設定した時間を経過した(タイムアウトした)ものがあれば、最優先で選択候補とする。そして、ステップS605において、何らかのアルゴリズムで選択したVOQのVOQ参照用合計クレジット165が正であれば、ステップS606において、選択したVOQから溜まっているパケット群を取り出し、パケット分割器130の対応するFIFOキューに書き込み、書き込んだFIFOキューをタイムアウト扱いにする。また、取り出した分のパケットに相当するクレジットを対応するVOQ参照用合計クレジット165から減算する。
【0033】
ステップS600において、タイムアウトしたVOQが無ければ、ステップS601においてマルチキャスト用のVOQ群にパケットがあれば選択候補とする。そして、ステップS603において、該当する宛先全てのVOQ参照用合計クレジット165が正であれば、ステップS604において、選択したVOQから溜まっているパケット群を取り出し、パケット分割器130の対応するFIFOキューに書き込む。また、取り出した分のパケットに相当するクレジットを対応するVOQ参照用合計クレジット165から減算する。
【0034】
ステップS601においてマルチキャスト用のVOQ群にパケットがなく、ステップS602において、ユニキャストVOQのいずれかのパケット群から生成されるセル量が交換部の数以上であれば選択候補とする。そして、ステップS603において、何らかのアルゴリズムで選択したユニキャストVOQのVOQ参照用合計クレジット165が正であれば、ステップS604において、選択したVOQから溜まっているパケット群を取り出し、パケット分割器130の対応するFIFOキューに書き込む。また、取り出した分のパケットに相当するクレジットを対応するVOQ参照用合計クレジット165から減算する。
【0035】
尚、VOQ120で消費したVOQ参照用合計クレジット165は、交換部から配線270経由で回復クレジットが到着した際に、回復クレジットに示されている量だけ回復させる。
【0036】
パケット分割器130は、パケットをセルに分割するための機構である。各宛先へのユニキャスト用のFIFOキューを1本ずつ持ち、マルチキャスト用のFIFOキューを1本だけ持つ。各FIFOキューの入力はパケット、出力はセルであり、セル化途中のパケットを保持する。また、各FIFOキューは、パケットが入力されてから当該パケットが取り出されるまでの時間を計測するタイマーを備える。
【0037】
図5に示すフローチャートを利用して、パケット分割器130の各FIFOキューのセル出力方法の一実施形態を説明する。まず、ステップS610において、タイマーがタイムアウトしたFIFOキューがあれば、最優先で選択候補とする。タイムアウトしたものがなく、マルチキャストのFIFOキューにパケットが存在すれば、ステップS611においてマルチキャストのFIFOキューを選択する。マルチキャストのエントリも無く、ユニキャストのFIFOキューにエントリがあれば、ユニキャストFIFOキューのエントリがあるものの中から、ひとつを選択する(S613)。
【0038】
ここで、セル割当器140について先に説明を加える。パケット分割器130のもつ各FIFOキューに対応するFIFOキューがセル割当器140にもあり、こちらのFIFOキューはセルだけを保持する。セル割当器140のFIFOキューが一杯で受付不能の場合、同じ宛先のパケット分割器130のFIFOキューにバックプレッシャを与え、当該FIFOキューからのセルをセル割当器140へ渡すことを禁止する。
【0039】
再び、図5のフローチャートのステップS614の説明に戻る。先に説明したセル割当器140からステップS613で選択したFIFOキューがバックプレッシャを受けていれば、ステップS618へ進み、当該FIFOキューのタイマーがスタートしていなければタイマーをスタートさせ、当該FIFOキューからのセル抜出しを行なわず、ステップS610のチェックに戻る。
【0040】
そうでなければ、ステップS615へ進み、選択したFIFOキューの先頭のパケットをあらかじめ定めた固定長に分割し、ヘッダ情報を追加してセル化し、まず1セル分だけセル割当器140へ送信する。ここで追加する前記ヘッダ情報は、当該パケットの属するフローのフロー番号と整理番号、パケットの先頭セルならHead情報、パケットの末尾セルならTail情報である。セル化が終了したパケットは消去する。尚、セル化を行っているFIFOキューがタイムアウトしているならば、セル割当器140の該当するFIFOキューもタイムアウト扱いにする。
【0041】
ここで、前記のフロー番号は、フロー番号割当器110で得た値である。
【0042】
また、前記の整理番号は、フロー番号毎にエントリを持つ整理番号管理メモリ150をフロー番号でアクセスすることによって獲得する値である。整理番号管理メモリ150の各エントリが管理する整理番号は、ゼロから始め、当該エントリにアクセスがあるたびに1ずつ増やしていき、最大値(セルがスイッチファブリックを通過する間に同じ番号が出現しない程度の値)に達したら再びゼロに戻す。
【0043】
次にステップS616へ進み、選択していたFIFOキューのパケットのセル化が終了していなければ再度ステップS614へ戻る。ステップS616で、全パケットのセル化が完了すれば当該FIFOキューのタイマーを(もしスタートしていれば)クリアし、ステップS610へ戻る。
【0044】
次に、図6に示すフローチャートを利用して、セル割当器140の各FIFOキューのセル受信方法の一実施形態を説明する。まず、ステップS620において、パケット分割器130からセル入力があるのを待つ。セル入力があれば、ステップS621において、当該FIFOキューのタイマーが停止していればタイマーをスタートさせる。そしてステップS622において、当該FIFOキューのエントリにセルを保持し、待機セル数を1増やす。また、ステップS623において、受信セルがタイムアウト情報を持っていれば、当該FIFOキューをタイムアウト扱いにする。
【0045】
次に、図7に示すフローチャートを利用して、セル割当器140の各FIFOキューからのセル出力方法の一実施形態を説明する。セル割当器140は、セルを適切な交換部に割り当て、セル送信するための機構である。まず、ステップS630において、タイマーがタイムアウトしたFIFOキューがひとつ以上あれば、その中のひとつを選択する(S640)。タイムアウトしたものがなく、マルチキャストのFIFOキューにセルが存在すれば、ステップS631においてマルチキャストのFIFOキューを選択する(S640)。
【0046】
セル割当器140は、セルを送信する交換部200を指し示すためのスイッチポインタを備え、1セル送信する毎に次の交換部を指すようスイッチポインタを移動させる。例えば、図2に示すように交換部が三つある場合、スイッチポインタはセルを送信するたびに、交換部1→交換部2→交換部3→交換部1と順に移動させていく。ここで、ステップS641において、クレジットテーブル160を参照し、スイッチポインタの指す交換部の全ての対象となる宛先のクレジット161が正であるか確認する。
【0047】
前記のクレジット161が負であれば、セルを送信することができないので当該FIFOキューのセル送信は中断し、ステップS630へ戻る。
【0048】
前記のクレジット161が正であれば、ステップS642において、選択したFIFOキューの先頭のセルに対し、追加のヘッダ情報として交換部番号(スイッチポインタの示す交換部番号)を付加し、対象となる交換部200へ当該セルを送信する。そして、スイッチポインタを1ずらし、選択したFIFOキューの待機セル数を1減少させる。また、クレジットテーブル160の対象となる宛先の対象となる交換部のクレジット161を1減少させる。前記のセル送信により、選択したFIFOキューの待機セル数がゼロでなければ、ステップS643から、再度ステップS641に戻ってセル送信チェックを続ける。
【0049】
ステップS643で、選択したFIFOキューの待機セル数がゼロになれば、全セルを送信したことになるので、ステップS637へ進み、当該FIFOキューのタイマーをクリアし、ステップS630へ戻る。
【0050】
ステップS631において、マルチキャストのFIFOにセルが存在しなければ、ステップS632に進み、待機セル数が交換部の数以上のユニキャストFIFOがあるか調べ、無ければステップS630へ戻る。あれば、ステップS633にて対象FIFOのひとつを選択し、クレジットテーブル160の対象宛先の全ての交換部のクレジット161が正であるか確認する。全てが正でなければ、セル送信することはせず、ステップS630へ戻る。
【0051】
対象宛先の全ての交換部のクレジット161が正であれば、ステップS635へ進み、選択したFIFOキューの先頭のセルに対し、追加のヘッダ情報として交換部番号(スイッチポインタの示す交換部番号)を付加し、対象となる交換部200へ配線240経由で当該セルを送信する。そして、スイッチポインタを1ずらし、選択したFIFOキューの待機セル数を1減少させる。また、クレジットテーブル160の対象となる宛先の対象となる交換部のクレジット161を1減少させる。ここでは、セルを交換部と同じ数だけ送信するまでステップS635の操作を繰り返す。そして、ステップS637へ進み、当該FIFOキューのタイマーをクリアし、ステップS630へ戻る。
【0052】
尚、セル割当器140で消費した交換部毎のクレジット161は、交換部200から配線270経由で回復クレジットが到着した際に、回復クレジットに示されている量だけ回復させる。
【0053】
分散部100と整列部300を同一LSI上に構成する場合、交換部200から、整列部100のクレジットテーブル160へ回復クレジットを送信する配線270は、交換部200から整列部300へセルを送信する配線250を共用することが可能である。具体的には、配線250経由で交換部200から整列部300へ送信するセルのヘッダ情報の一部に、交換部200から分散部100への回復クレジットを相乗りさせて送信することができる。
【0054】
分散部100と整列部300を異なるLSI上に構成する場合、前記の回復クレジットを送信する配線270は、交換部200から整列部300へセルを送信する配線250とは別の専用の配線を利用する。
【0055】
また、図8に、本発明におけるセル割当器140からパケット分割器130へのバックプレッシャ信号生成方法の一実施形態を示すフローチャートを示す。まず、ステップS650において、待機セル数が交換部の数より多いFIFOキューがあるか検査する。前記条件を満たせば、ステップS653においてパケット分割器130の対応するFIFOキューへバックプレッシャをかける。前記条件を満たさなければ、ステップS651において待機セル数と交換部数のFIFOキューがあるか調べ、該当するFIFOキューがあり、そのFIFOキューにセル出力が無く、セル入力があれば、ステップS653においてパケット分割器130の対応するFIFOキューへバックプレッシャをかける。ステップS651、ステップS652いずれの条件も満たさなければ、ステップS654において、パケット分割器130の対応するFIFOキューへのバックプレッシャを解除する。
【0056】
以上、分散部100において可変長パケットを固定長セルに分割し、全ての交換部200に、同一宛先のセルを可能な限り均等に送信する具体的な実施例について説明した。本発明によれば、ユニキャストのパケットは、スイッチファブリックの備える交換部200と同じ数ずつのセル単位で分散部100から各交換部200へ送信することができる。
【0057】
あるパケットから交換部200の数と異なる数のセルが生成される場合でも、VOQ120、パケット分割器130、セル分散器140の仕組みにより、余りとなるセルは次の同一宛先のユニキャストパケットから生成されるセルと一緒に、交換部200の数と同じ数ずつだけ、各交換部200へ送信することができる。また、前記の余りとなるセルが存在するときに、次の同一宛先のユニキャストパケットが到着しない場合は、タイムアウトの仕組みにより強制的に交換部200へ送信することもできる。すなわち、交換部200と同じ数のセル群の単位で送信した余りのセルが残った際にタイマを起動し、タイマの時間が所定の閾値に達したら、同一宛先の次のパケットの到着を待って待機しているこれら余りのセル群を、もはや待機させずに交換部200に強制送信する強制送信機構を付け加える。
【0058】
マルチキャストパケットの場合は、同じ複数の宛先の組合せのマルチキャストパケットが常に続くとは限らないため、ユニキャストパケットとは異なり、すぐに分散部100から各交換部200へ、送信するための仕組みを持たせている。
【0059】
次に、図10を用いて交換部200の一実施例について説明する。交換部200は、宛先毎のメモリ210で構成し、各入力からのセルは対応する宛先メモリ210に格納する。マルチキャストのセルの場合、対応するすべての宛先用メモリ210に格納する。各メモリ210の中は送信元毎に格納領域が決まっており、セルを受信後、各メモリでは、ラウンドロビンのような公平な選択アルゴリズムにより一つのセルを選び、当該宛先の整列部300の受信バッファに空きがあれば、選択したセルを送信する。そして、前記の選択したセルの送信元である対応する分散部100に対し、対応する配線260経由で回復クレジットを1セルにつき1ずつ返却する。
【0060】
前記の宛先毎のメモリ210は、メモリ容量を削減するために、複数の宛先で共有し、時分割で利用してもよい。時分割でメモリ210を利用する場合、メモリ容量が削減される分、クレジットテーブル220が管理するクレジット量も減少する。
【0061】
尚、前記の整列部300の受信バッファに空きがあるか否かは、交換部200が備えるクレジットテーブル220によって調べる。交換部200の備えるクレジットテーブル220の構成例を図11に示す。クレジットテーブル220は、各宛先毎に独立しており、それぞれの中で各送信元用のクレジット221を最低1ずつ、また、各送信元に共通のクレジット222を複数(図11の例では8)備える。
【0062】
交換部200から整列部300へセルを送信する際、送信するセルに対応する送信元用のクレジット221がゼロでなければ対応する送信元用のクレジット221を1減らし、ゼロであれば共通のクレジット222を1減らす。尚、クレジットは、整列部300から回復クレジットが到着した際に、回復させる送信元の番号に対応する送信元用のクレジット221が最大値でなければ(図11の例では1でなければ)、その対応する送信元用のクレジット221を1回復させる。そうでなければ、共通のクレジット222を1回復させる。
【0063】
尚、分散部100と整列部300を同一LSI上に構成する場合、整列部300の回復クレジット生成器370から、交換部200のクレジットテーブル220へ回復クレジットを送信する配線260は、分散部100から交換部200へセルを送信する配線240を共用することが可能である。具体的には、配線240経由で分散部100から交換部200へ送信するセルのヘッダ情報の一部に、整列部300から交換部200への回復クレジットを相乗りさせて送信することができる。
【0064】
分散部100と整列部300を異なるLSI上に構成する場合、前記の回復クレジットを送信する配線260は、分散部100から交換部200へセルを送信する配線240とは別の専用の配線を利用する。
【0065】
交換部200の各宛先メモリ210は、セルを選択する際に、クレジットテーブル220の各送信元の共通クレジット222が正であれば、どのセルを選択してもよい。しかし、前記の共通クレジット222がゼロであれば、対応する送信元用のクレジット221が正であるセルの中からのみ選択する。このルールは、整列部300でセルの順番復元を行なう際に、ある送信元からのセルが、他の送信元からのセルに邪魔されて交換部200から永久に送信されずにデッドロックする状況を防ぐために用いる。
【0066】
次に、図12を用いて本発明の整列部300の一実施形態を示す。整列部300の概略動作についてまず説明する。整列部300は、各交換部200から配線250経由でセルを受信バッファ310へ受信する。そして、受信したセル本体は受信バッファ310に保持したまま、セルのヘッダ情報の一部と追加の情報をセレクタ320経由でフロー復元器330へ渡し、ひとつ以上のフロー復元器330にてフロー毎の先頭となるセルを検出する。
【0067】
先頭セルを検出すると、そのうちひとつをセレクタ340で選び、受信バッファ310から該当するセルを抜出し、セレクタ350経由でパケット復元器360に前記のセルを渡す。同時に、対応する受信バッファ310に空き領域ができたことを回復クレジット生成器370に教える。回復クレジット生成器370は、セルを出力した受信バッファ310に対応する交換部200に対し、前記のセルの持つ送信元番号を含めた回復クレジットを生成し、配線260経由で送信する。
【0068】
パケット復元器360では、フロー毎にセルを一次保持する手段を持ち、分散部100で付与したHead情報のセルを先頭に送信元番号とフロー番号の一致するセルを順番に保持し、同じく分散部100で付与したTail情報のセルを受信したところでパケットとして復元を完了し出力する。
【0069】
本発明の特長は、小規模の資源でフロー復元を可能にする点である。従来方法では、少なくとも、送信元番号、フロー番号の積で表現される数のフローにつき、順番乱れが発生した際に吸収可能な量のメモリ、例えば100セル分格納できるメモリ、が必要である。よって、従来方法では、ハードウェア量、特に利用するメモリ量が非常に多くならざるを得ない。
【0070】
本発明の整列部300は、交換部200と整列部300の間でセルを送信し、回復クレジットを返信するまでの間に各交換部200から送信される総セル量と同等程度の量の受信バッファ310のメモリだけで、セルの順番乱れを元通りに復元する仕組みを提供する。本発明の整列部300が必要とする前記のメモリ量は、従来の整列部が持つメモリ量(少なくとも、送信元番号、フロー番号、順番乱れが発生した際に吸収可能なエントリ数の積で示されるメモリ量)より遥かに少なく、十分な低コスト化が望める。
【0071】
尚、整列部300に前記の非常に少ないメモリ量しか搭載しなくても、整列部300において、セル順番復元が滞らないようにするためには、通常の状態において、非常に大きな順番乱れが発生しないようなセル分散が行われることが必須である。本発明では、分散部100において、全ての宛先に対して、可能な限り全ての交換部200を経由させるセル分散を行っているため、非常に大きな順番乱れは発生しにくいため、通常の状態では、問題を引き起こさない。
【0072】
以下に、前記の非常に少ない受信バッファ310のメモリだけでセル順番を復元するフロー復元器330の詳細について説明する。
【0073】
フロー復元器330は、送信元である分散部100と同じ数だけ備えるのが望ましいが、複数の送信元で共有しても構わない。例えば、送信元が16個ある場合、フロー復元器330を16個備えるのが理想であるが、論理量の増加を抑えるために、フロー復元器330を8個だけ備え、特定の2個の送信元で特定の1個のフロー復元器330を共有させても構わない。同様に、フロー復元器330を4個だけ備え、特定の4個の送信元で特定の1個のフロー復元器330を共有させても構わない。
【0074】
フロー復元器330の一実施例を図13に示す。フロー復元器330は、整理番号管理メモリ332、整理番号比較器333、受信バッファ読み出しキュー335、再検査キュー336を備える。
【0075】
交換部200から受信したセルのヘッダ情報の一部と追加の情報を、入力400経由で対応するフロー復元器330へ入力する。一般に、セル本体に比べセルのヘッダ情報はサイズが小さいため、数マシンサイクルに1回の割合で入力があることになる。ここで、前記のセルのヘッダ情報とは、送信元番号、フロー番号、整理番号である。また、前記の追加の情報とは、セル本体を記録した受信バッファ310内のアドレス、当該セルが通過した交換部200の番号である。
【0076】
フロー復元器330の内部では、前記の各種の情報を、キー情報、整理番号、データ情報の3種類の情報に分類する。
【0077】
ここで、キー情報とは、整理番号管理メモリ332をアクセスするためのインデックスであり、本実施例では、送信元番号とフロー番号を結合したものである。
【0078】
また、データ情報とは、受信バッファ310からセル本体を読み出すための情報であり、本実施例では、受信バッファ310内のアドレスと交換部200の番号である。
【0079】
ここで、図14のフローチャートを利用して、図13のフロー復元器330の動作に関して説明する。ステップS700で、入力400経由で交換部200からのセル入力があれば、当該セルヘッダのキー情報で整理番号管理メモリ332を参照し、そのフローの現在の先頭にあたる整理番号を読み出す。
【0080】
そして、ステップS703で、比較器333にて、入力したセルの整理番号と一致するか検査する。整理番号同士が一致すれば、ステップS704で、当該セルのデータ情報を受信バッファ読出しキュー335へ記録し、ステップS705で、加算器334を利用して、読み出していた整理番号に1を加え、整列番号管理メモリ332に書き戻す。
【0081】
ステップS703で整理番号同士が一致しなければ、ステップS706で、当該セルのキー情報、整理番号、データ情報を再検査キュー336に積む。
【0082】
また、ステップS700で、入力400経由で交換部200からセル入力がなく、再検査キュー336にエントリがあれば、ステップS702で再検査キュー336の先頭のエントリを読出し、入力420経由で、前記の説明同様、整理番号管理メモリ332を参照し、ステップS703〜S705、またはS706の動作を繰り返す。
【0083】
以上の動作を繰り返すことで、フロー復元器330に入力される、フロー順番の乱れたセル群は、各送信元の各種のフロー毎に送信された順番通りに受信バッファ読出しキュー335に積みなおされる。そして、受信バッファ読出しキュー335の先頭のエントリから順に出力430経由でデータ情報を読み出し、該当する受信バッファ310のセル本体を読み出せば、フロー内のセルの順番を完全に復元することができる。
【0084】
図17(a)、(b)に、本発明を利用した場合にパケットがどのように分散型スイッチファブリックを通過するかというイメージ図を、分散部100−3、分散部100−4から、整列部300−1、整列部300−2行きのパケットがあるという前提で示す。また、いずれのパケットもユニキャストパケットであるとしている。パケットを示す長方形や角丸長方形には、宛先が整列部300−1であればD1、整列部300−2であればD2とし、宛先毎のフロー内の番号をそのあとに記載している。可変長パケットから生成される固定長セル内に記載の番号も、同様であるが、セルに記載している「宛先毎のフロー内の番号」は、本実施例の文中に登場するフロー毎の「整理番号」である。尚、本例では、長方形は分散部100−3入力、角丸長方形は分散部100−4入力としている。
【0085】
分散部100−3入力の可変長パケット群500−3、分散部100−4入力の可変長パケット群500−4は、各分散部100において、それぞれ、対応する個数の固定長セル群510−3、510−4に分割される。
【0086】
各分散部100は、交換部200が3個あるため、宛先毎に3の整数倍ずつセルを選んでセル群520−{3、4}{A、B、C}として対応する交換部200へ出力する。もともとのパケット長が3の倍数にならないような場合、一定時間が経過してタイムアウトが発生した際に出力する。例えば、分散部100−3出力のD2−4のセルは、前記のタイムアウトが発生して出力されている様子を示している。前記のタイムアウトイベント発生後は、再び、宛先毎に3の整数倍ずつセルが選択できる状態であるので、D1−10、D1−11、D1−12の3セルが連続して出力されている。
【0087】
各交換部200では、各分散部100からの入力順番は維持したまま、宛先毎に出力調停を行い、セル群530{A、B、C}−{1、2}として宛先である整列部300へ送信する。
【0088】
各整列部300では、受信したセルを送信元毎、また、フロー毎(この場合は、ユニキャストが1フローずつあるのみ)に分類し、フロー内のセル順番を元通りのセル群540−{1、2}に復元し、更にそれぞれ元のパケット群550−{1、2}を復元する。
【0089】
以上、本発明によるセル分散型スイッチについて詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例2】
【0090】
実施例1で説明した整列部300よりも短時間でフロー復元可能な整列部を備える分散型スイッチファブリックを実施例2として説明する。ここで、実施例2の分散部100、交換部200の構成は図1等を用いて説明した実施例1のものと同一である。また、整列部300の構成は、整列部300内のフロー復元器を除いて同一である。よって、ここでは実施例2におけるフロー復元器330′の構成と動作を詳細に説明する。
【0091】
実施例2のフロー復元器330′は、図15に示すように、整理番号管理メモリ332、整理番号比較器333、受信バッファ読み出しキュー335、再検査キュー336に加え、連続整理番号生成器337、チェックエントリ338A〜338K、連鎖選択器341を備える。ここで、チェックエントリとは、フローの先頭でなかったセルの、送信元番号、フロー番号、整理番号、セル本体を記録した受信バッファ310内のアドレス、当該セルが通過した交換部200の番号を一時的に記録するための機構である。前記の各種情報は、交換部200から受信して先頭検査を行なって先頭でなかった場合に記録する。以後、交換部200からセルを受信するたびにチェックエントリ338A〜338Kに一次記録してある情報も全て同時に検査を行う。
【0092】
交換部200からセルが当該フローの先頭であった場合、チェックエントリ338A〜338Kのいずれかの内容がその次の先頭、更に別のチェックエントリの内容がその次の先頭、という具合に、次々と先頭が見つかる可能性がある。図15のフロー復元器330では、交換部200からセルが当該フローの先頭であった場合、更に、同時にチェックエントリ338A〜338Kの中から最大で3個の連続する先頭セルを検出する。3個の連続する先頭セルの整理番号は、連続整理番号生成器337を利用して生成する。
【0093】
尚、チェックエントリ338A〜338Kで連鎖的に4個目以降の先頭セルが発見されうる。そこで、チェックエントリ338A〜338Kの各々は、連鎖ビットと呼ぶ情報用のフィールドを備える。連鎖ビットは、前記の3個目の先頭であることを検出した時点で有効化する。そして、連鎖選択器341によって、連鎖ビットが有効になっているいずれかのチェックエントリの情報を選択し、入力440経由で、整理番号管理メモリ332で先頭検査を行なうことで、前記4個目以降の先頭セルの有無を調査する。
【0094】
また、実施例2における受信バッファ読出しキュー335は、多入力1出力である。図15に示す構成例では、3入力1出力である。3入力である理由は、チェックエントリ338の利用により、同時に、あるフローの先頭、その次、更にその次の3個の連続するセルが発見されうるためである。1出力である理由は、対応する受信バッファ310からセル本体を3個同時では無く、1個ずつ読み出すためである。尚、正確には、受信バッファ読出しキュー335からは同時に3情報を読み出し、整理番号+0位置、整理番号+1位置、整理番号+2位置の順にひとつずつ出力430経由で出力し、対応する受信バッファ310のセル本体を読み出すことになる。
【0095】
ここで、図16のフローチャートを利用して、図15のフロー復元器330′の動作に関して説明する。ステップS800で、入力400経由で交換部200からセル入力があれば、当該セルヘッダのキー情報で整理番号管理メモリ332を参照し、そのフローの現在の先頭にあたる整理番号を読み出す。
【0096】
そして、ステップS805で、比較器333にて、入力したセルの整理番号と一致するか検査する。整理番号同士が一致すれば、ステップS810で、当該セルのデータ情報を受信バッファ読出しキュー335の整理番号+0位置へ記録する。また、当該セルとキー情報が同一であるチェックエントリ338の保持する整理番号が、連続整理番号生成器337で生成した「整理番号+1」、「整理番号+2」、「整理番号+3」と一致するか検査する。
【0097】
「整理番号+1」、「整理番号+2」、「整理番号+3」全てがいずれかのチェックエントリで一致すれば、「整理番号+1」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+1位置へ記録する。また、「整理番号+2」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+2位置へ記録する。そして、「整理番号+1」と「整理番号+2」のチェックエントリの内容を消去し、「整理番号+3」のチェックエントリの連鎖ビットを有効にする。整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+3」を書き戻す。(ステップS811→S812→S813→S822)
ステップS811の条件を満たさなければ、ステップS820で「整理番号+1」、「整理番号+2」両方がいずれかのチェックエントリで一致すれば、「整理番号+1」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+1位置へ記録する。また、「整理番号+2」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+2位置へ記録する。そして、「整理番号+1」と「整理番号+2」のチェックエントリの内容を消去する。整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+3」を書き戻す。(ステップS811→S820→S821→S822)
ステップS820の条件を満たさなければ、ステップS830で「整理番号+1」がいずれかのチェックエントリで一致すれば、「整理番号+1」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+1位置へ記録する。そして、「整理番号+1」のチェックエントリの内容を消去する。整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+2」を書き戻す。(ステップS811→S820→S830→S831→S832)
ステップS830の条件を満たさなければ、ステップS840で整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+1」を書き戻す。(ステップS811→S820→S830→S840)
ステップS805で整理番号同士が一致しなければ、ステップS806で、チェックエントリ338のいずれかに空きエントリがあるか検査し、空きエントリがあれば、ステップS807にて、空きエントリのいずれかに、当該セルのキー情報、整理番号、データ情報を記録する。
【0098】
また、ステップS806で、チェックエントリ338のいずれかに空きエントリがあるか検査し、空きエントリがなければ、ステップS808にて、再検査キュー336に、当該セルのキー情報、整理番号、データ情報を記録する。
【0099】
また、ステップS800で、入力400経由で交換部200からセル入力がなければ、ステップS801にて、チェックエントリ338A〜338Kの連鎖ビットを検査する。そして、いずれかの連鎖ビットが有効であれば、ステップS804にて、それら有効な連鎖ビットをもつ、つまり連鎖ヒットしているチェックエントリの中からいずれかひとつを連鎖選択器341で選択し、選択したチェックエントリの保持する全情報を入力440経由でフロー復元器に再入力し、選択したチェックエントリの内容は消去する。
【0100】
前記のチェックエントリ338A〜338Kのいずれかから入力した整理番号は、連鎖ビットが有効であり、必ず整理番号管理メモリの対象となる整理番号と一致するので、ステップS805、ステップ810以下、先ほどの説明と同様の処理を行なう。
【0101】
また、ステップS801で、いずれのチェックエントリ338の連鎖ビットも有効になっていなければ、ステップS802において、再検査キュー336にエントリがあるかどうか検査する。
【0102】
再検査キュー336にエントリがあれば、ステップS803で再検査キュー336の先頭のエントリを読出し、ステップS805において、入力420経由で読み出した整理番号と、整理番号管理メモリ332の当該フローの整理番号が一致するかどうか検査し、以下、前記の説明同様、ステップS806以降、または、ステップS810以降の動作を繰り返す。
【0103】
以上、チェックエントリ338A〜338Kを利用して、実施例1で説明した整列部300より、短時間でフロー復元可能な整列部について詳細な説明を行なった。チェックエントリや、連続整理番号生成器337等はその搭載量に比例して論理資源が大規模化するため、十数個程度のチェックエントリ、+3〜4程度の連続整理番号生成器337がリーズナブルと考えられる。チェックエントリ不足は、再検査キュー336の設置によって補うことができる。尚、論理資源の大規模化が共用範囲以内であると判断できれば、再検査キュー336は搭載せず、ある程度大量のチェックエントリ338を備える構成もとりうる。
以上、本発明によるセル分散型スイッチのフロー復元器について詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【産業上の利用可能性】
【0104】
本発明によるセル分散型スイッチにおける再整列方法は、大容量回線を利用したデータ交換が必要なシステムで利用することができる。例えば、ルータやスイッチに代表されるネットワーク装置内のスイッチファブリックや、サーバやストレージ機器の装置内のスイッチファブリック等での利用が考えられる。
【図面の簡単な説明】
【0105】
【図1】本発明の分散型スイッチの一実施形態の一部を示すブロック図である。
【図2】本発明の分散型スイッチの一実施形態を示すブロック図である。
【図3】本発明における整列部の一実施形態を示すブロック図である。
【図4】本発明におけるVOQ抜出し方法の一実施形態を示すフローチャートである。
【図5】本発明におけるパケット分割器の出力方法の一実施形態を示すフローチャートである。
【図6】本発明におけるセル割当器の受信方法の一実施形態を示すフローチャートである。
【図7】本発明におけるセル割当器の出力方法の一実施形態を示すフローチャートである。
【図8】本発明におけるセル割当器からパケット分割器へのバックプレッシャ信号生成方法の一実施形態を示すフローチャートである。
【図9】本発明の分散部が管理する交換部のクレジットの説明図である。
【図10】本発明の交換部の一実施形態を示すブロック図である。
【図11】本発明の交換部が管理する整列部のクレジットの説明図である。
【図12】本発明の整列部の一実施形態を示すブロック図である。
【図13】本発明のフロー復元器の一実施形態を示すブロック図である。
【図14】図12のフロー復元の一実施形態を示すフローチャートである。
【図15】本発明のチェックエントリを含むフロー復元器の一実施形態を示すブロック図である。
【図16】図14のフロー復元の一実施形態を示すフローチャートである。
【図17a】本発明におけるパケット、セルの流れを示す説明図である。
【図17b】本発明におけるパケット、セルの流れ(続き)を示す説明図である。
【符号の説明】
【0106】
100:分散部
110:フロー番号割当器
120:VOQ
130:パケット分割器
140:セル割当器
150:分散部の整理番号管理メモリ
160:分散部が管理する交換部のクレジットテーブル
200:交換部
210:交換部が管理する整列部のクレジットテーブル
300:整列部
310:受信バッファ
330:フロー復元器
332:整列部の整理番号管理メモリ
335:受信バッファ読出しキュー
336:再検査キュー
338:チェックエントリ
360:パケット復元器
370:回復クレジット生成器
500:分散部入力パケット
510:分散部入力パケットに対応するセル
520:分散部出力セル
530:交換部出力セル(=整列部入力セル)
540:整列済みセル
550:整列部出力パケット。
【技術分野】
【0001】
本発明は、ルータ、サーバ、ストレージ装置などにおいて、装置内部に有する複数の機能ブロックを動的に相互に接続するスイッチ技術に関する。特に、独立動作する複数のスイッチを利用し、宛先でデータの到着順序が入れ替わる場合に、順番通りに並べ替えるための技術に関する。
【背景技術】
【0002】
ルータなどのネットワーク転送装置やサーバ装置、複数のディスクアレイを接続するストレージ装置などでは、装置内部の機能ブロック間でデータ交換を行うためにスイッチファブリックが利用される。スイッチファブリックの交換容量は、ポート数とポート容量(回線速度)の積で表現され、大交換容量を実現するためには、ポート数とポート容量のいずれか片方、もしくは両方を増加させる必要がある。
【0003】
ポート数を増加させるには、要素スイッチを多段結合し、オメガ網やクロス網、ファットツリー網等を形成することにより実現が可能である。また、スイッチLSI(Large Scale Integration)のポート容量を増加させることでポート容量を増加させることも可能であるが、LSIに実装可能なピン数は、その時代のCMOS(Complementary MOS)の実装限界によって制限されるため、大容量ポートを実現すると、スイッチLSIあたりのポート数は減少する。
【0004】
ここで、大容量ポートを少数持つスイッチLSIを多段結合することでスイッチファブリック全体の交換容量を向上することは可能であるが、総ポート数を大きくするに従って接続段数が大きくなり、結果としてスイッチファブリック通過のレイテンシが大きくなる問題、また、宛先が異なってもスイッチファブリック内で衝突が発生してスループットが低下する問題が発生する。これらの問題を回避して、目的の交換容量を実現する方法として、分散型スイッチ(パラレルパケットスイッチ)が知られている。
【0005】
分散型スイッチでは、要求容量の1/Mの容量のポートを備える比較的低速なスイッチLSIをM個用意し、スイッチファブリックの入力にあたる分散部において、入力データを分割して各スイッチへ分散して通過させることで所望の大交換容量を実現する。一般に、ネットワーク装置で利用されるスイッチの場合、入力データは可変長のパケットであり、パケットは固定長のセルと呼ばれる単位に分割される。
【0006】
分散型スイッチを最も容易に構成する場合、交換部用に用いる複数のスイッチLSIを完全に同期させ、更に完全に同一の宛先調停動作を実施する。よって、宛先には、完全に予測可能なタイミングで順番通りにセルが到着するため、容易にパケットを元通りに復元可能であり、更にフロー内のパケット順番も容易に復元可能である。
【0007】
ところが、近年、スイッチに要求されるポート容量、交換容量は非常に大きくなっており、分散型スイッチを構成する各スイッチLSI自体も高速してきている。例えば、LSI間の通信には、SerDes(SERialization/DE-Serialization)と呼ばれる高速シリアル伝送が利用されたり、セルの交換処理ピッチも短縮化されたりしているため、各スイッチLSIを完全同期させることが事実上困難である。よって、各スイッチが非同期動作する、すなわち、各スイッチが独立して宛先調停を行なう分散型スイッチが必要である。
【0008】
各交換部が非同期動作する分散型スイッチでは、スイッチファブリックの入力にあたる分散部でのセルの送信順番と、スイッチファブリックの出力にあたる整列部でのセルの到着順番が一致することが保証されない。よって、同一送信元から同一宛先を目指すパケット群(フロー)内のセルの順番を元通りに復元し(フロー復元)、更にパケットを元通りに復元(パケット復元)しなくてはならない。
【0009】
US2004/0143593(A1)では、パケットのシーケンス番号(整理番号)、送信元番号、ルーティングインデックス(単一の宛先、もしくは複数の宛先の組合せを参照するための値)、優先度を利用して、宛先において各フローのパケットを十分な量溜め込んだのち、パケット順番を元通りに復元する方法が開示されている。しかしながら、US2004/0143593(A1)のパケット順番復元方法は、送信元番号、ルーティングインデックス、優先度の積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。
【0010】
WO02/43329(A1)では、同一のパケットから生成したセルには、宛先番号、送信元番号、セル分割番号の他、同一のタイムスタンプを付加し、スイッチファブリックの各部で共通の時計を利用して、スイッチ内ではタイムスタンプの古いものを優先して選択し、スイッチの宛先では、同一のフローに属するセル、パケットをタイムスタンプの値が古いものから順に順序復元を行う方法が開示されている。しかしながら、WO02/43329(A1)のセル、パケット順番復元方法は、送信元番号、ルーティングインデックスの積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。また、スイッチファブリック各部で共通の時計を利用し、その時刻を元に並べ替えを行う点も、パケットやセルの転送速度が向上するにつれて困難になりうる課題を持つ。
【0011】
USP6832261(B1)では、セル、パケット順序復元用のデバイスを複数個用いて、互いに交信しつつセル、パケットの順序復元を行う方法が開示されている。USP6832261(B1)の実施例から、送信元スロット(送信元番号)、シーケンス番号(整理番号)、宛先スロット(宛先番号)の積で表現される数のフローについて、十分な量のパケット保持機構が必要と考えられ、ハードウェア量が多くなりうる課題を持つ。
【0012】
また、USP6832261(B1)は、スイッチファブリックの出力にあたる整列部を主眼にかかれているため、明記されていないが、US2004/0143593(A1)とWO02/43329(A1)では、各スイッチの負荷に応じて、スイッチファブリックの入力にあたる分散部においてロードバランスを取りながら分散動作を行うことが開示されている。しかしながら、一般に、単純なロードバランス動作を行うと、輻輳状態にあるスイッチに溜まっているセルやパケットが目的の宛先、すなわち、スイッチファブリックの出力にあたる整列部に到着する前に、後続のセルやパケットが非輻輳状態のスイッチを経由して到着しうる。よって、整列部においてセルやパケットの順番を復元するために、整列部は大量のセルやパケットの保持が必要であり、ハードウェア量が多くなりうる課題を持つ。
【0013】
以上のように、従来の、各交換部が非同期動作する分散型スイッチでは、整列部におけるフロー復元、パケット復元の手法に関して開示されているが、いずれの手法もハードウェア量が多くなりうる課題を持っている。分散型スイッチは、スイッチ全体の交換容量を向上させることが本来の目的であるため、分散動作、復元動作によって交換容量が低下しないように潤沢なハードウェアを搭載していると考えることもできるが、装置を低コスト化するためには、より小規模のハードウェアで実現可能な整列部を持つ分散型スイッチが望まれる。
【0014】
【特許文献1】US2004/0143593(A1)
【特許文献2】WO02/43329(A1)
【特許文献3】USP6832261(B1)
【発明の開示】
【発明が解決しようとする課題】
【0015】
各交換部が非同期動作する分散型スイッチにおいて、交換容量が低下しない分散動作、復元動作を実現することが課題である。また、複数のスイッチから順不同に到着するセルを、フロー内及びパケット内で元通りに復元する方法を小容量のハードウェアで実現することが課題である。
【課題を解決するための手段】
【0016】
スイッチファブリックの入力部で、同じ宛先への1個以上の可変長データを固定長データに分割後、スイッチ数の整数倍個ずつ送信し、スイッチファブリックの各交換部で同一送信元の固定長データは順番を維持したまま、固定長データ単位で宛先毎出力調停を行う。スイッチファブリックの出力部では、受信バッファに固定長データを保持したまま、固定長データの送信元番号とフロー番号によってフローの区別を行い、現在の先頭番号を、当該固定長データの整理番号と比較し、一致すればフローの先頭とみなす。不一致であれば当該固定長データを一時保持し、後続の固定長データの整理番号の確認とともに、一時保持した固定長データの整理番号の再確認を繰り返し、最終的に一致したものをフローの先頭とみなす。フロー先頭となった固定長データは、更に送信元番号とフロー番号が同じものの中でパケット先頭及びパケット末尾を検出してパケットを復元する。
【発明の効果】
【0017】
本発明を利用することにより、各スイッチが非同期動作する分散型スイッチにおいて、交換容量が低下しない分散動作、復元動作を実現可能となる。また、複数のスイッチから順不同に到着するセルを、フロー内及びパケット内で元通りに復元する方法を小容量のハードウェアで実現することが可能となる。よって、従来方法より少ないコストで、高い交換容量の分散型スイッチを構成可能となる。
【発明を実施するための最良の形態】
【0018】
以下、より詳細な内容を添付図面に基づいて実施例で説明する。
【実施例1】
【0019】
本発明における分散型スイッチ構成の一実施例を図1に示す。分散型スイッチは、スイッチファブリックの入力にあたるN個の分散部100、データ交換を行うM個の交換部200、スイッチファブリックの出力にあたるN個の整列部300で構成する。尚、図1は、構成を明快にするために分散型スイッチの一部のみを図示しているが、入出力の数、交換部の数は様々な組合せが可能であり、例えば、入出力が4個、交換部が3個の分散型スイッチを構成する場合の全体像は、図2に示す通りである。すなわち、4個の分散部100−{1〜4}、3個の交換部200−{1〜3}、4個の整列部300−{1〜4}で構成される。
【0020】
まず、各部の役割を簡単に紹介する。分散部100は、受信した可変長のパケットを固定長のセルに分割し、複数の交換部200へ送信し、宛先の整列部300では、受信したセルを元通りの順番に直してパケットとして出力する。図2で、交換部200−{1〜3}は互いに独立に動作する、すなわち、入力セルに対して互いに独立に宛先調停を自立的に行うため、スイッチファブリック全体では非同期型の分散スイッチとして振る舞うことになる。
【0021】
ここで、各スイッチが非同期動作する分散型スイッチにおいて、交換容量が低下しない分散動作、復元動作を実現しつつ、複数のスイッチから順不同に到着するセルを、フロー内及びパケット内で元通りに復元する方法を小容量のハードウェアとメモリで実現するためには、次の2点を満足する必要がある。
【0022】
1点目は、スイッチファブリックの交換帯域を完全に活用すること、すなわち、各分散部が、各交換部に対して同量のセルを分散し、各整列部が、各交換部から同量のセルを受信できるようにすることである。2点目は、各整列部が受信するセルの順番乱れの量を極力少なくすることである。
【0023】
各スイッチが非同期動作する一般的な分散型スイッチでは、各交換部200に可変長パケットをそのまま分散してしまうと、長いパケットを送信した交換部200は負荷が高く、短いパケットを送信した交換部200は負荷が低くなる。そこで、可変長パケットを固定長のセルに分割し、1セルずつ順番に各交換部200へ送信することで前記不均衡を緩和できる。
【0024】
しかしながら、単純に1セルずつ順番に各交換部200へ送信するだけでは、ある分散部100から、ある整列部300へ到着するセルは、特定の交換部200だけを経由することがありうる。例えば、図2の分散型スイッチでも、パケット長が短く、1パケットから1セルだけが生成され、全分散部100に入力される各パケットの宛先が、1、2、3、1、2、3、1、2、3と繰り返される場合、各分散部100は、全ての交換部200に順次セルを送り出すのだが、宛先1行きのセルは、交換部200−1だけしか通過しない。同様に宛先2行きのセルは、交換部200−2だけしか通過しないし、宛先3行きのセルは、交換部200−3だけしか通過しない。整列部300−1からみると、全ての分散部100−1、100−2、100−3、100−4からのセルが交換部200−1からだけ到着するように見える。
【0025】
前記状況は、分散部100から観測すると、ある宛先に対しては、特定の交換部200の負荷が高くなるように見えるため、後続のパケットから生成したセルを負荷が低い別の交換部200を経由して整列部300へ送信して、全ての交換部200に対する不均衡をなくすような動作が必要になる。この不均衡をなくすため動作は、一般にロードバランスをとる動作として知られている。
【0026】
一旦、ロードバランス動作が発生すると、ある宛先から早期に送信されたセルがある交換部200に滞留している間に、後続のセルが別の交換部200を経由して先に目的の整列部300に届きうるため、整列部300におけるセルの到着順番を大きく乱す原因にもなる。そして、背景技術でも述べたように、整列部300でのセルの到着順番が大きく乱れる場合、整列部300はセルやパケットの順番を復元するために、大量のセルやパケットの保持が必要であり、ハードウェア量が多くなりうる課題を持つ。
【0027】
そこで、本発明では、分散部100から、全ての交換部200に、同一宛先のセルを可能な限り均等に送信することによって、全ての交換部200の均等利用、及び、整列部300の各送信元100から全ての交換部200を経由したセルの均等受信を実現する。
【0028】
分散部100における、より具体的なセル分散方法について図3を利用して説明する。可変長パケットはネットワーク111を経由して分散部100に入力され、フロー番号割当器110に到着する。フロー番号割当器110では、整列部300で受信セルの属する元のパケットの種類を区別するために、フロー番号を割当てる。宛先がひとつであるユニキャストを扱うだけであれば、前記区別のためにフロー番号は必要ないが、宛先が複数であるマルチキャストを扱う場合、整列部300では、どのパケットに属するセルか区別するためのフロー番号が必要となる。フロー番号は、最大で2のポート数乗のオーダーの数が必要であるが、実際にはあらゆる宛先の組み合わせのマルチキャストパケットが連続して出現するわけではないので、2の8乗から10乗程度のフロー番号があれば十分である。
【0029】
パケットにフロー番号を付与したあと、スイッチファブリックの宛先、及び優先度毎に独立したFIFO(FFirst In First Out)キューであるVirtual Output Queue(VOQ)120の対応するVOQへパケットを保持する。マルチキャスト用のVOQは、優先度毎に1本ずつであり、どのような宛先の組み合わせのマルチキャストも、対応する優先度の前記マルチキャスト用VOQに保持する。各VOQには、パケットのたまり具合を検出するために、パケット量カウンタを備える。また、パケットが入力されてから取り出しが行なわれるまでの時間を計測するタイマーを備える。
【0030】
VOQ120では、各VOQのパケットの溜まり具合を監視し、可変長パケットを固定長セルに分割した際に、前記セルの数が交換部200の数、例えば、図2の場合は、3を越えた場合に当該VOQを出力対象とする。複数のVOQが出力対象となっている場合は、優先度の高いものの中からラウンドロビンなどのアルゴリズムを利用してひとつを選択する。そして、クレジットテーブル160を参照し、交換部200群の当該宛先がセルを受信可能かどうか調査する。
【0031】
クレジットテーブルとは、宛先の受信バッファの空き容量を前記受信バッファが受信可能なセルの数をクレジットと呼んで管理するための機構である。図2のスイッチファブリックの場合のクレジットテーブル160の例を図9に示す。クレジットテーブルのエントリは、宛先毎に独立しており、更に各交換部用に独立している。本例では、いずれも8ずつクレジットを持っていることを示しており、各宛先の各交換部は、8個までセルを受信可能であることを示す。また、VOQ120が参照するための宛先毎に全交換部のクレジットを合計したVOQ参照用合計クレジット165を持つ。
【0032】
図4に示すフローチャートを利用して、VOQからのパケット抜出し方法の一実施形態を説明する。まず、ステップS600において、VOQ120の中にタイマーがあらかじめ設定した時間を経過した(タイムアウトした)ものがあれば、最優先で選択候補とする。そして、ステップS605において、何らかのアルゴリズムで選択したVOQのVOQ参照用合計クレジット165が正であれば、ステップS606において、選択したVOQから溜まっているパケット群を取り出し、パケット分割器130の対応するFIFOキューに書き込み、書き込んだFIFOキューをタイムアウト扱いにする。また、取り出した分のパケットに相当するクレジットを対応するVOQ参照用合計クレジット165から減算する。
【0033】
ステップS600において、タイムアウトしたVOQが無ければ、ステップS601においてマルチキャスト用のVOQ群にパケットがあれば選択候補とする。そして、ステップS603において、該当する宛先全てのVOQ参照用合計クレジット165が正であれば、ステップS604において、選択したVOQから溜まっているパケット群を取り出し、パケット分割器130の対応するFIFOキューに書き込む。また、取り出した分のパケットに相当するクレジットを対応するVOQ参照用合計クレジット165から減算する。
【0034】
ステップS601においてマルチキャスト用のVOQ群にパケットがなく、ステップS602において、ユニキャストVOQのいずれかのパケット群から生成されるセル量が交換部の数以上であれば選択候補とする。そして、ステップS603において、何らかのアルゴリズムで選択したユニキャストVOQのVOQ参照用合計クレジット165が正であれば、ステップS604において、選択したVOQから溜まっているパケット群を取り出し、パケット分割器130の対応するFIFOキューに書き込む。また、取り出した分のパケットに相当するクレジットを対応するVOQ参照用合計クレジット165から減算する。
【0035】
尚、VOQ120で消費したVOQ参照用合計クレジット165は、交換部から配線270経由で回復クレジットが到着した際に、回復クレジットに示されている量だけ回復させる。
【0036】
パケット分割器130は、パケットをセルに分割するための機構である。各宛先へのユニキャスト用のFIFOキューを1本ずつ持ち、マルチキャスト用のFIFOキューを1本だけ持つ。各FIFOキューの入力はパケット、出力はセルであり、セル化途中のパケットを保持する。また、各FIFOキューは、パケットが入力されてから当該パケットが取り出されるまでの時間を計測するタイマーを備える。
【0037】
図5に示すフローチャートを利用して、パケット分割器130の各FIFOキューのセル出力方法の一実施形態を説明する。まず、ステップS610において、タイマーがタイムアウトしたFIFOキューがあれば、最優先で選択候補とする。タイムアウトしたものがなく、マルチキャストのFIFOキューにパケットが存在すれば、ステップS611においてマルチキャストのFIFOキューを選択する。マルチキャストのエントリも無く、ユニキャストのFIFOキューにエントリがあれば、ユニキャストFIFOキューのエントリがあるものの中から、ひとつを選択する(S613)。
【0038】
ここで、セル割当器140について先に説明を加える。パケット分割器130のもつ各FIFOキューに対応するFIFOキューがセル割当器140にもあり、こちらのFIFOキューはセルだけを保持する。セル割当器140のFIFOキューが一杯で受付不能の場合、同じ宛先のパケット分割器130のFIFOキューにバックプレッシャを与え、当該FIFOキューからのセルをセル割当器140へ渡すことを禁止する。
【0039】
再び、図5のフローチャートのステップS614の説明に戻る。先に説明したセル割当器140からステップS613で選択したFIFOキューがバックプレッシャを受けていれば、ステップS618へ進み、当該FIFOキューのタイマーがスタートしていなければタイマーをスタートさせ、当該FIFOキューからのセル抜出しを行なわず、ステップS610のチェックに戻る。
【0040】
そうでなければ、ステップS615へ進み、選択したFIFOキューの先頭のパケットをあらかじめ定めた固定長に分割し、ヘッダ情報を追加してセル化し、まず1セル分だけセル割当器140へ送信する。ここで追加する前記ヘッダ情報は、当該パケットの属するフローのフロー番号と整理番号、パケットの先頭セルならHead情報、パケットの末尾セルならTail情報である。セル化が終了したパケットは消去する。尚、セル化を行っているFIFOキューがタイムアウトしているならば、セル割当器140の該当するFIFOキューもタイムアウト扱いにする。
【0041】
ここで、前記のフロー番号は、フロー番号割当器110で得た値である。
【0042】
また、前記の整理番号は、フロー番号毎にエントリを持つ整理番号管理メモリ150をフロー番号でアクセスすることによって獲得する値である。整理番号管理メモリ150の各エントリが管理する整理番号は、ゼロから始め、当該エントリにアクセスがあるたびに1ずつ増やしていき、最大値(セルがスイッチファブリックを通過する間に同じ番号が出現しない程度の値)に達したら再びゼロに戻す。
【0043】
次にステップS616へ進み、選択していたFIFOキューのパケットのセル化が終了していなければ再度ステップS614へ戻る。ステップS616で、全パケットのセル化が完了すれば当該FIFOキューのタイマーを(もしスタートしていれば)クリアし、ステップS610へ戻る。
【0044】
次に、図6に示すフローチャートを利用して、セル割当器140の各FIFOキューのセル受信方法の一実施形態を説明する。まず、ステップS620において、パケット分割器130からセル入力があるのを待つ。セル入力があれば、ステップS621において、当該FIFOキューのタイマーが停止していればタイマーをスタートさせる。そしてステップS622において、当該FIFOキューのエントリにセルを保持し、待機セル数を1増やす。また、ステップS623において、受信セルがタイムアウト情報を持っていれば、当該FIFOキューをタイムアウト扱いにする。
【0045】
次に、図7に示すフローチャートを利用して、セル割当器140の各FIFOキューからのセル出力方法の一実施形態を説明する。セル割当器140は、セルを適切な交換部に割り当て、セル送信するための機構である。まず、ステップS630において、タイマーがタイムアウトしたFIFOキューがひとつ以上あれば、その中のひとつを選択する(S640)。タイムアウトしたものがなく、マルチキャストのFIFOキューにセルが存在すれば、ステップS631においてマルチキャストのFIFOキューを選択する(S640)。
【0046】
セル割当器140は、セルを送信する交換部200を指し示すためのスイッチポインタを備え、1セル送信する毎に次の交換部を指すようスイッチポインタを移動させる。例えば、図2に示すように交換部が三つある場合、スイッチポインタはセルを送信するたびに、交換部1→交換部2→交換部3→交換部1と順に移動させていく。ここで、ステップS641において、クレジットテーブル160を参照し、スイッチポインタの指す交換部の全ての対象となる宛先のクレジット161が正であるか確認する。
【0047】
前記のクレジット161が負であれば、セルを送信することができないので当該FIFOキューのセル送信は中断し、ステップS630へ戻る。
【0048】
前記のクレジット161が正であれば、ステップS642において、選択したFIFOキューの先頭のセルに対し、追加のヘッダ情報として交換部番号(スイッチポインタの示す交換部番号)を付加し、対象となる交換部200へ当該セルを送信する。そして、スイッチポインタを1ずらし、選択したFIFOキューの待機セル数を1減少させる。また、クレジットテーブル160の対象となる宛先の対象となる交換部のクレジット161を1減少させる。前記のセル送信により、選択したFIFOキューの待機セル数がゼロでなければ、ステップS643から、再度ステップS641に戻ってセル送信チェックを続ける。
【0049】
ステップS643で、選択したFIFOキューの待機セル数がゼロになれば、全セルを送信したことになるので、ステップS637へ進み、当該FIFOキューのタイマーをクリアし、ステップS630へ戻る。
【0050】
ステップS631において、マルチキャストのFIFOにセルが存在しなければ、ステップS632に進み、待機セル数が交換部の数以上のユニキャストFIFOがあるか調べ、無ければステップS630へ戻る。あれば、ステップS633にて対象FIFOのひとつを選択し、クレジットテーブル160の対象宛先の全ての交換部のクレジット161が正であるか確認する。全てが正でなければ、セル送信することはせず、ステップS630へ戻る。
【0051】
対象宛先の全ての交換部のクレジット161が正であれば、ステップS635へ進み、選択したFIFOキューの先頭のセルに対し、追加のヘッダ情報として交換部番号(スイッチポインタの示す交換部番号)を付加し、対象となる交換部200へ配線240経由で当該セルを送信する。そして、スイッチポインタを1ずらし、選択したFIFOキューの待機セル数を1減少させる。また、クレジットテーブル160の対象となる宛先の対象となる交換部のクレジット161を1減少させる。ここでは、セルを交換部と同じ数だけ送信するまでステップS635の操作を繰り返す。そして、ステップS637へ進み、当該FIFOキューのタイマーをクリアし、ステップS630へ戻る。
【0052】
尚、セル割当器140で消費した交換部毎のクレジット161は、交換部200から配線270経由で回復クレジットが到着した際に、回復クレジットに示されている量だけ回復させる。
【0053】
分散部100と整列部300を同一LSI上に構成する場合、交換部200から、整列部100のクレジットテーブル160へ回復クレジットを送信する配線270は、交換部200から整列部300へセルを送信する配線250を共用することが可能である。具体的には、配線250経由で交換部200から整列部300へ送信するセルのヘッダ情報の一部に、交換部200から分散部100への回復クレジットを相乗りさせて送信することができる。
【0054】
分散部100と整列部300を異なるLSI上に構成する場合、前記の回復クレジットを送信する配線270は、交換部200から整列部300へセルを送信する配線250とは別の専用の配線を利用する。
【0055】
また、図8に、本発明におけるセル割当器140からパケット分割器130へのバックプレッシャ信号生成方法の一実施形態を示すフローチャートを示す。まず、ステップS650において、待機セル数が交換部の数より多いFIFOキューがあるか検査する。前記条件を満たせば、ステップS653においてパケット分割器130の対応するFIFOキューへバックプレッシャをかける。前記条件を満たさなければ、ステップS651において待機セル数と交換部数のFIFOキューがあるか調べ、該当するFIFOキューがあり、そのFIFOキューにセル出力が無く、セル入力があれば、ステップS653においてパケット分割器130の対応するFIFOキューへバックプレッシャをかける。ステップS651、ステップS652いずれの条件も満たさなければ、ステップS654において、パケット分割器130の対応するFIFOキューへのバックプレッシャを解除する。
【0056】
以上、分散部100において可変長パケットを固定長セルに分割し、全ての交換部200に、同一宛先のセルを可能な限り均等に送信する具体的な実施例について説明した。本発明によれば、ユニキャストのパケットは、スイッチファブリックの備える交換部200と同じ数ずつのセル単位で分散部100から各交換部200へ送信することができる。
【0057】
あるパケットから交換部200の数と異なる数のセルが生成される場合でも、VOQ120、パケット分割器130、セル分散器140の仕組みにより、余りとなるセルは次の同一宛先のユニキャストパケットから生成されるセルと一緒に、交換部200の数と同じ数ずつだけ、各交換部200へ送信することができる。また、前記の余りとなるセルが存在するときに、次の同一宛先のユニキャストパケットが到着しない場合は、タイムアウトの仕組みにより強制的に交換部200へ送信することもできる。すなわち、交換部200と同じ数のセル群の単位で送信した余りのセルが残った際にタイマを起動し、タイマの時間が所定の閾値に達したら、同一宛先の次のパケットの到着を待って待機しているこれら余りのセル群を、もはや待機させずに交換部200に強制送信する強制送信機構を付け加える。
【0058】
マルチキャストパケットの場合は、同じ複数の宛先の組合せのマルチキャストパケットが常に続くとは限らないため、ユニキャストパケットとは異なり、すぐに分散部100から各交換部200へ、送信するための仕組みを持たせている。
【0059】
次に、図10を用いて交換部200の一実施例について説明する。交換部200は、宛先毎のメモリ210で構成し、各入力からのセルは対応する宛先メモリ210に格納する。マルチキャストのセルの場合、対応するすべての宛先用メモリ210に格納する。各メモリ210の中は送信元毎に格納領域が決まっており、セルを受信後、各メモリでは、ラウンドロビンのような公平な選択アルゴリズムにより一つのセルを選び、当該宛先の整列部300の受信バッファに空きがあれば、選択したセルを送信する。そして、前記の選択したセルの送信元である対応する分散部100に対し、対応する配線260経由で回復クレジットを1セルにつき1ずつ返却する。
【0060】
前記の宛先毎のメモリ210は、メモリ容量を削減するために、複数の宛先で共有し、時分割で利用してもよい。時分割でメモリ210を利用する場合、メモリ容量が削減される分、クレジットテーブル220が管理するクレジット量も減少する。
【0061】
尚、前記の整列部300の受信バッファに空きがあるか否かは、交換部200が備えるクレジットテーブル220によって調べる。交換部200の備えるクレジットテーブル220の構成例を図11に示す。クレジットテーブル220は、各宛先毎に独立しており、それぞれの中で各送信元用のクレジット221を最低1ずつ、また、各送信元に共通のクレジット222を複数(図11の例では8)備える。
【0062】
交換部200から整列部300へセルを送信する際、送信するセルに対応する送信元用のクレジット221がゼロでなければ対応する送信元用のクレジット221を1減らし、ゼロであれば共通のクレジット222を1減らす。尚、クレジットは、整列部300から回復クレジットが到着した際に、回復させる送信元の番号に対応する送信元用のクレジット221が最大値でなければ(図11の例では1でなければ)、その対応する送信元用のクレジット221を1回復させる。そうでなければ、共通のクレジット222を1回復させる。
【0063】
尚、分散部100と整列部300を同一LSI上に構成する場合、整列部300の回復クレジット生成器370から、交換部200のクレジットテーブル220へ回復クレジットを送信する配線260は、分散部100から交換部200へセルを送信する配線240を共用することが可能である。具体的には、配線240経由で分散部100から交換部200へ送信するセルのヘッダ情報の一部に、整列部300から交換部200への回復クレジットを相乗りさせて送信することができる。
【0064】
分散部100と整列部300を異なるLSI上に構成する場合、前記の回復クレジットを送信する配線260は、分散部100から交換部200へセルを送信する配線240とは別の専用の配線を利用する。
【0065】
交換部200の各宛先メモリ210は、セルを選択する際に、クレジットテーブル220の各送信元の共通クレジット222が正であれば、どのセルを選択してもよい。しかし、前記の共通クレジット222がゼロであれば、対応する送信元用のクレジット221が正であるセルの中からのみ選択する。このルールは、整列部300でセルの順番復元を行なう際に、ある送信元からのセルが、他の送信元からのセルに邪魔されて交換部200から永久に送信されずにデッドロックする状況を防ぐために用いる。
【0066】
次に、図12を用いて本発明の整列部300の一実施形態を示す。整列部300の概略動作についてまず説明する。整列部300は、各交換部200から配線250経由でセルを受信バッファ310へ受信する。そして、受信したセル本体は受信バッファ310に保持したまま、セルのヘッダ情報の一部と追加の情報をセレクタ320経由でフロー復元器330へ渡し、ひとつ以上のフロー復元器330にてフロー毎の先頭となるセルを検出する。
【0067】
先頭セルを検出すると、そのうちひとつをセレクタ340で選び、受信バッファ310から該当するセルを抜出し、セレクタ350経由でパケット復元器360に前記のセルを渡す。同時に、対応する受信バッファ310に空き領域ができたことを回復クレジット生成器370に教える。回復クレジット生成器370は、セルを出力した受信バッファ310に対応する交換部200に対し、前記のセルの持つ送信元番号を含めた回復クレジットを生成し、配線260経由で送信する。
【0068】
パケット復元器360では、フロー毎にセルを一次保持する手段を持ち、分散部100で付与したHead情報のセルを先頭に送信元番号とフロー番号の一致するセルを順番に保持し、同じく分散部100で付与したTail情報のセルを受信したところでパケットとして復元を完了し出力する。
【0069】
本発明の特長は、小規模の資源でフロー復元を可能にする点である。従来方法では、少なくとも、送信元番号、フロー番号の積で表現される数のフローにつき、順番乱れが発生した際に吸収可能な量のメモリ、例えば100セル分格納できるメモリ、が必要である。よって、従来方法では、ハードウェア量、特に利用するメモリ量が非常に多くならざるを得ない。
【0070】
本発明の整列部300は、交換部200と整列部300の間でセルを送信し、回復クレジットを返信するまでの間に各交換部200から送信される総セル量と同等程度の量の受信バッファ310のメモリだけで、セルの順番乱れを元通りに復元する仕組みを提供する。本発明の整列部300が必要とする前記のメモリ量は、従来の整列部が持つメモリ量(少なくとも、送信元番号、フロー番号、順番乱れが発生した際に吸収可能なエントリ数の積で示されるメモリ量)より遥かに少なく、十分な低コスト化が望める。
【0071】
尚、整列部300に前記の非常に少ないメモリ量しか搭載しなくても、整列部300において、セル順番復元が滞らないようにするためには、通常の状態において、非常に大きな順番乱れが発生しないようなセル分散が行われることが必須である。本発明では、分散部100において、全ての宛先に対して、可能な限り全ての交換部200を経由させるセル分散を行っているため、非常に大きな順番乱れは発生しにくいため、通常の状態では、問題を引き起こさない。
【0072】
以下に、前記の非常に少ない受信バッファ310のメモリだけでセル順番を復元するフロー復元器330の詳細について説明する。
【0073】
フロー復元器330は、送信元である分散部100と同じ数だけ備えるのが望ましいが、複数の送信元で共有しても構わない。例えば、送信元が16個ある場合、フロー復元器330を16個備えるのが理想であるが、論理量の増加を抑えるために、フロー復元器330を8個だけ備え、特定の2個の送信元で特定の1個のフロー復元器330を共有させても構わない。同様に、フロー復元器330を4個だけ備え、特定の4個の送信元で特定の1個のフロー復元器330を共有させても構わない。
【0074】
フロー復元器330の一実施例を図13に示す。フロー復元器330は、整理番号管理メモリ332、整理番号比較器333、受信バッファ読み出しキュー335、再検査キュー336を備える。
【0075】
交換部200から受信したセルのヘッダ情報の一部と追加の情報を、入力400経由で対応するフロー復元器330へ入力する。一般に、セル本体に比べセルのヘッダ情報はサイズが小さいため、数マシンサイクルに1回の割合で入力があることになる。ここで、前記のセルのヘッダ情報とは、送信元番号、フロー番号、整理番号である。また、前記の追加の情報とは、セル本体を記録した受信バッファ310内のアドレス、当該セルが通過した交換部200の番号である。
【0076】
フロー復元器330の内部では、前記の各種の情報を、キー情報、整理番号、データ情報の3種類の情報に分類する。
【0077】
ここで、キー情報とは、整理番号管理メモリ332をアクセスするためのインデックスであり、本実施例では、送信元番号とフロー番号を結合したものである。
【0078】
また、データ情報とは、受信バッファ310からセル本体を読み出すための情報であり、本実施例では、受信バッファ310内のアドレスと交換部200の番号である。
【0079】
ここで、図14のフローチャートを利用して、図13のフロー復元器330の動作に関して説明する。ステップS700で、入力400経由で交換部200からのセル入力があれば、当該セルヘッダのキー情報で整理番号管理メモリ332を参照し、そのフローの現在の先頭にあたる整理番号を読み出す。
【0080】
そして、ステップS703で、比較器333にて、入力したセルの整理番号と一致するか検査する。整理番号同士が一致すれば、ステップS704で、当該セルのデータ情報を受信バッファ読出しキュー335へ記録し、ステップS705で、加算器334を利用して、読み出していた整理番号に1を加え、整列番号管理メモリ332に書き戻す。
【0081】
ステップS703で整理番号同士が一致しなければ、ステップS706で、当該セルのキー情報、整理番号、データ情報を再検査キュー336に積む。
【0082】
また、ステップS700で、入力400経由で交換部200からセル入力がなく、再検査キュー336にエントリがあれば、ステップS702で再検査キュー336の先頭のエントリを読出し、入力420経由で、前記の説明同様、整理番号管理メモリ332を参照し、ステップS703〜S705、またはS706の動作を繰り返す。
【0083】
以上の動作を繰り返すことで、フロー復元器330に入力される、フロー順番の乱れたセル群は、各送信元の各種のフロー毎に送信された順番通りに受信バッファ読出しキュー335に積みなおされる。そして、受信バッファ読出しキュー335の先頭のエントリから順に出力430経由でデータ情報を読み出し、該当する受信バッファ310のセル本体を読み出せば、フロー内のセルの順番を完全に復元することができる。
【0084】
図17(a)、(b)に、本発明を利用した場合にパケットがどのように分散型スイッチファブリックを通過するかというイメージ図を、分散部100−3、分散部100−4から、整列部300−1、整列部300−2行きのパケットがあるという前提で示す。また、いずれのパケットもユニキャストパケットであるとしている。パケットを示す長方形や角丸長方形には、宛先が整列部300−1であればD1、整列部300−2であればD2とし、宛先毎のフロー内の番号をそのあとに記載している。可変長パケットから生成される固定長セル内に記載の番号も、同様であるが、セルに記載している「宛先毎のフロー内の番号」は、本実施例の文中に登場するフロー毎の「整理番号」である。尚、本例では、長方形は分散部100−3入力、角丸長方形は分散部100−4入力としている。
【0085】
分散部100−3入力の可変長パケット群500−3、分散部100−4入力の可変長パケット群500−4は、各分散部100において、それぞれ、対応する個数の固定長セル群510−3、510−4に分割される。
【0086】
各分散部100は、交換部200が3個あるため、宛先毎に3の整数倍ずつセルを選んでセル群520−{3、4}{A、B、C}として対応する交換部200へ出力する。もともとのパケット長が3の倍数にならないような場合、一定時間が経過してタイムアウトが発生した際に出力する。例えば、分散部100−3出力のD2−4のセルは、前記のタイムアウトが発生して出力されている様子を示している。前記のタイムアウトイベント発生後は、再び、宛先毎に3の整数倍ずつセルが選択できる状態であるので、D1−10、D1−11、D1−12の3セルが連続して出力されている。
【0087】
各交換部200では、各分散部100からの入力順番は維持したまま、宛先毎に出力調停を行い、セル群530{A、B、C}−{1、2}として宛先である整列部300へ送信する。
【0088】
各整列部300では、受信したセルを送信元毎、また、フロー毎(この場合は、ユニキャストが1フローずつあるのみ)に分類し、フロー内のセル順番を元通りのセル群540−{1、2}に復元し、更にそれぞれ元のパケット群550−{1、2}を復元する。
【0089】
以上、本発明によるセル分散型スイッチについて詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例2】
【0090】
実施例1で説明した整列部300よりも短時間でフロー復元可能な整列部を備える分散型スイッチファブリックを実施例2として説明する。ここで、実施例2の分散部100、交換部200の構成は図1等を用いて説明した実施例1のものと同一である。また、整列部300の構成は、整列部300内のフロー復元器を除いて同一である。よって、ここでは実施例2におけるフロー復元器330′の構成と動作を詳細に説明する。
【0091】
実施例2のフロー復元器330′は、図15に示すように、整理番号管理メモリ332、整理番号比較器333、受信バッファ読み出しキュー335、再検査キュー336に加え、連続整理番号生成器337、チェックエントリ338A〜338K、連鎖選択器341を備える。ここで、チェックエントリとは、フローの先頭でなかったセルの、送信元番号、フロー番号、整理番号、セル本体を記録した受信バッファ310内のアドレス、当該セルが通過した交換部200の番号を一時的に記録するための機構である。前記の各種情報は、交換部200から受信して先頭検査を行なって先頭でなかった場合に記録する。以後、交換部200からセルを受信するたびにチェックエントリ338A〜338Kに一次記録してある情報も全て同時に検査を行う。
【0092】
交換部200からセルが当該フローの先頭であった場合、チェックエントリ338A〜338Kのいずれかの内容がその次の先頭、更に別のチェックエントリの内容がその次の先頭、という具合に、次々と先頭が見つかる可能性がある。図15のフロー復元器330では、交換部200からセルが当該フローの先頭であった場合、更に、同時にチェックエントリ338A〜338Kの中から最大で3個の連続する先頭セルを検出する。3個の連続する先頭セルの整理番号は、連続整理番号生成器337を利用して生成する。
【0093】
尚、チェックエントリ338A〜338Kで連鎖的に4個目以降の先頭セルが発見されうる。そこで、チェックエントリ338A〜338Kの各々は、連鎖ビットと呼ぶ情報用のフィールドを備える。連鎖ビットは、前記の3個目の先頭であることを検出した時点で有効化する。そして、連鎖選択器341によって、連鎖ビットが有効になっているいずれかのチェックエントリの情報を選択し、入力440経由で、整理番号管理メモリ332で先頭検査を行なうことで、前記4個目以降の先頭セルの有無を調査する。
【0094】
また、実施例2における受信バッファ読出しキュー335は、多入力1出力である。図15に示す構成例では、3入力1出力である。3入力である理由は、チェックエントリ338の利用により、同時に、あるフローの先頭、その次、更にその次の3個の連続するセルが発見されうるためである。1出力である理由は、対応する受信バッファ310からセル本体を3個同時では無く、1個ずつ読み出すためである。尚、正確には、受信バッファ読出しキュー335からは同時に3情報を読み出し、整理番号+0位置、整理番号+1位置、整理番号+2位置の順にひとつずつ出力430経由で出力し、対応する受信バッファ310のセル本体を読み出すことになる。
【0095】
ここで、図16のフローチャートを利用して、図15のフロー復元器330′の動作に関して説明する。ステップS800で、入力400経由で交換部200からセル入力があれば、当該セルヘッダのキー情報で整理番号管理メモリ332を参照し、そのフローの現在の先頭にあたる整理番号を読み出す。
【0096】
そして、ステップS805で、比較器333にて、入力したセルの整理番号と一致するか検査する。整理番号同士が一致すれば、ステップS810で、当該セルのデータ情報を受信バッファ読出しキュー335の整理番号+0位置へ記録する。また、当該セルとキー情報が同一であるチェックエントリ338の保持する整理番号が、連続整理番号生成器337で生成した「整理番号+1」、「整理番号+2」、「整理番号+3」と一致するか検査する。
【0097】
「整理番号+1」、「整理番号+2」、「整理番号+3」全てがいずれかのチェックエントリで一致すれば、「整理番号+1」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+1位置へ記録する。また、「整理番号+2」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+2位置へ記録する。そして、「整理番号+1」と「整理番号+2」のチェックエントリの内容を消去し、「整理番号+3」のチェックエントリの連鎖ビットを有効にする。整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+3」を書き戻す。(ステップS811→S812→S813→S822)
ステップS811の条件を満たさなければ、ステップS820で「整理番号+1」、「整理番号+2」両方がいずれかのチェックエントリで一致すれば、「整理番号+1」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+1位置へ記録する。また、「整理番号+2」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+2位置へ記録する。そして、「整理番号+1」と「整理番号+2」のチェックエントリの内容を消去する。整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+3」を書き戻す。(ステップS811→S820→S821→S822)
ステップS820の条件を満たさなければ、ステップS830で「整理番号+1」がいずれかのチェックエントリで一致すれば、「整理番号+1」のチェックエントリのデータ情報を受信バッファ読出しキュー335の整理番号+1位置へ記録する。そして、「整理番号+1」のチェックエントリの内容を消去する。整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+2」を書き戻す。(ステップS811→S820→S830→S831→S832)
ステップS830の条件を満たさなければ、ステップS840で整理番号管理メモリ332へは、当該フローのその後の先頭番号として「整理番号+1」を書き戻す。(ステップS811→S820→S830→S840)
ステップS805で整理番号同士が一致しなければ、ステップS806で、チェックエントリ338のいずれかに空きエントリがあるか検査し、空きエントリがあれば、ステップS807にて、空きエントリのいずれかに、当該セルのキー情報、整理番号、データ情報を記録する。
【0098】
また、ステップS806で、チェックエントリ338のいずれかに空きエントリがあるか検査し、空きエントリがなければ、ステップS808にて、再検査キュー336に、当該セルのキー情報、整理番号、データ情報を記録する。
【0099】
また、ステップS800で、入力400経由で交換部200からセル入力がなければ、ステップS801にて、チェックエントリ338A〜338Kの連鎖ビットを検査する。そして、いずれかの連鎖ビットが有効であれば、ステップS804にて、それら有効な連鎖ビットをもつ、つまり連鎖ヒットしているチェックエントリの中からいずれかひとつを連鎖選択器341で選択し、選択したチェックエントリの保持する全情報を入力440経由でフロー復元器に再入力し、選択したチェックエントリの内容は消去する。
【0100】
前記のチェックエントリ338A〜338Kのいずれかから入力した整理番号は、連鎖ビットが有効であり、必ず整理番号管理メモリの対象となる整理番号と一致するので、ステップS805、ステップ810以下、先ほどの説明と同様の処理を行なう。
【0101】
また、ステップS801で、いずれのチェックエントリ338の連鎖ビットも有効になっていなければ、ステップS802において、再検査キュー336にエントリがあるかどうか検査する。
【0102】
再検査キュー336にエントリがあれば、ステップS803で再検査キュー336の先頭のエントリを読出し、ステップS805において、入力420経由で読み出した整理番号と、整理番号管理メモリ332の当該フローの整理番号が一致するかどうか検査し、以下、前記の説明同様、ステップS806以降、または、ステップS810以降の動作を繰り返す。
【0103】
以上、チェックエントリ338A〜338Kを利用して、実施例1で説明した整列部300より、短時間でフロー復元可能な整列部について詳細な説明を行なった。チェックエントリや、連続整理番号生成器337等はその搭載量に比例して論理資源が大規模化するため、十数個程度のチェックエントリ、+3〜4程度の連続整理番号生成器337がリーズナブルと考えられる。チェックエントリ不足は、再検査キュー336の設置によって補うことができる。尚、論理資源の大規模化が共用範囲以内であると判断できれば、再検査キュー336は搭載せず、ある程度大量のチェックエントリ338を備える構成もとりうる。
以上、本発明によるセル分散型スイッチのフロー復元器について詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【産業上の利用可能性】
【0104】
本発明によるセル分散型スイッチにおける再整列方法は、大容量回線を利用したデータ交換が必要なシステムで利用することができる。例えば、ルータやスイッチに代表されるネットワーク装置内のスイッチファブリックや、サーバやストレージ機器の装置内のスイッチファブリック等での利用が考えられる。
【図面の簡単な説明】
【0105】
【図1】本発明の分散型スイッチの一実施形態の一部を示すブロック図である。
【図2】本発明の分散型スイッチの一実施形態を示すブロック図である。
【図3】本発明における整列部の一実施形態を示すブロック図である。
【図4】本発明におけるVOQ抜出し方法の一実施形態を示すフローチャートである。
【図5】本発明におけるパケット分割器の出力方法の一実施形態を示すフローチャートである。
【図6】本発明におけるセル割当器の受信方法の一実施形態を示すフローチャートである。
【図7】本発明におけるセル割当器の出力方法の一実施形態を示すフローチャートである。
【図8】本発明におけるセル割当器からパケット分割器へのバックプレッシャ信号生成方法の一実施形態を示すフローチャートである。
【図9】本発明の分散部が管理する交換部のクレジットの説明図である。
【図10】本発明の交換部の一実施形態を示すブロック図である。
【図11】本発明の交換部が管理する整列部のクレジットの説明図である。
【図12】本発明の整列部の一実施形態を示すブロック図である。
【図13】本発明のフロー復元器の一実施形態を示すブロック図である。
【図14】図12のフロー復元の一実施形態を示すフローチャートである。
【図15】本発明のチェックエントリを含むフロー復元器の一実施形態を示すブロック図である。
【図16】図14のフロー復元の一実施形態を示すフローチャートである。
【図17a】本発明におけるパケット、セルの流れを示す説明図である。
【図17b】本発明におけるパケット、セルの流れ(続き)を示す説明図である。
【符号の説明】
【0106】
100:分散部
110:フロー番号割当器
120:VOQ
130:パケット分割器
140:セル割当器
150:分散部の整理番号管理メモリ
160:分散部が管理する交換部のクレジットテーブル
200:交換部
210:交換部が管理する整列部のクレジットテーブル
300:整列部
310:受信バッファ
330:フロー復元器
332:整列部の整理番号管理メモリ
335:受信バッファ読出しキュー
336:再検査キュー
338:チェックエントリ
360:パケット復元器
370:回復クレジット生成器
500:分散部入力パケット
510:分散部入力パケットに対応するセル
520:分散部出力セル
530:交換部出力セル(=整列部入力セル)
540:整列済みセル
550:整列部出力パケット。
【特許請求の範囲】
【請求項1】
それぞれが非同期に宛先調停を行う複数の交換部を有する分散型スイッチファブリックシステムにおいて、
スイッチファブリックの入力にあたる分散部に、同じ宛先への可変長のパケットを1個以上の固定長のセルに分割し、交換部の数の整数倍個以上となるまで前記同じ宛先へのセル群を一時保持したあと、交換部数の整数倍個ずつ前記セル群を前記複数の交換部へ送信する機構を備え、
スイッチファブリックの各交換部に、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、
スイッチファブリックの出力にあたる整列部に、
受信セルの順番検査用の情報を利用して先頭であるか否かの順番検査を行なう機構と、
非先頭であれば検査に利用した情報を一時記録する先入れ先出しキュー機構と、
先頭であれば当該セルを抽出し、更に前記の一時記録した先入れ先出しキューの先頭の情報から順に検査し、更なる続きの先頭となるセルを抽出するする機構と、
前記の先頭として抽出されたセルに対し、パケットの区切り情報を利用して元のパケットを復元する機構とを備えたことを特徴とする分散型スイッチファブリックシステム。
【請求項2】
それぞれが非同期に宛先調停を行う複数の交換部を有する分散型スイッチファブリックシステムにおいて、
スイッチファブリックの入力にあたる分散部に、同じ宛先への可変長のパケットを1個以上の固定長のセルに分割し、スイッチ数の整数倍個以上となるまで前記同じ宛先へのセル群を一時保持したあと、スイッチ数の整数倍個ずつ前記セル群を送信する機構を備え、
スイッチファブリックの各交換部に、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、
スイッチファブリックの出力にあたる整列部に、
受信セルの順番検査用の情報を利用して先頭であるか否かの順番検査を行なう機構と、
前記受信セルが非先頭であれば検査に利用した情報を一時記録する一時記録機構と、
前記受信セルが先頭であれば当該セルを抽出し、更に前記一時記録機構に記録した非先頭セルの情報を全検査し、更なる続きの先頭となるセルを抽出する機構と、
前記の先頭として抽出されたセルに対し、パケットの区切り情報を利用して元のパケットを復元する機構とを備えたことを特徴とする分散型スイッチファブリックシステム。
【請求項3】
前記分散部は、 宛先が複数であるマルチキャストパケットの場合は、前記パケットを固定長セルに分割後、スイッチ数の整数倍個以上のセルに達しなくても複数の交換部へ送信する機構を更に備えたことを特徴とする請求項1もしくは第2項のいずれかに記載の分散型スイッチファブリックシステム。
【請求項4】
前記分散部は、 固定長セルに分割して待機中のセル群が、設定した閾値時間を経過しても出力されない場合に、前記待機中のセル群を強制的に複数の交換部へ送信する機構を更に備えたことを特徴とする請求項1もしくは第2項のいずれかに記載の分散型スイッチファブリックシステム。
【請求項5】
前記整列部で利用する受信セルの順番検査用の情報として、送信元番号と、各分散部で単一の宛先、もしくは複数の宛先の組合せ毎に一意に決定するフロー番号と、前記フロー内の整理番号とを利用することを特徴とする請求項1もしくは第2項のいずれかに記載の分散型スイッチファブリックシステム。
【請求項6】
前記整列部に、受信セルが先頭であるか否かの順番検査を行う機構と、非先頭であった前記セルを一時記録する先入れ先出しキュー機構と、更なる続きの先頭となるセルを検査する機構とをそれぞれ複数備え、
前記先入れ先出しキューにエントリがある場合、受信セルの入力がないタイミングで前記先入れ先出しキューの先頭の情報から順に先頭検査を行う機構を備えた請求項1記載の分散型スイッチファブリックシステム。
【請求項7】
前記整列部に、受信セルが先頭であるか否かの順番検査を行う機構と、前記一時記録機構と、更なる続きの先頭となるセルを抽出する機構とをそれぞれ複数備え、
前記一時記録機構にセルがある場合、受信セルが先頭であったら、前記一時記録機構の全セルの整理番号と現在の先頭の整理番号に1から特定の整数までの各整数値を加えた値とをそれぞれ比較検査し、1を加えた整理番号のセルから順に、一致した整理番号のセルまでを、先頭から連続する整理番号のセルとして選択し、前記の一時記録機構から削除する機構を備えた分散型スイッチファブリックシステム。
【請求項8】
前記整列部に、前記一時記録機構のエントリが非先頭であったセルの情報で満杯の時に、非先頭であった前記セルの情報を一時記録する先入れ先出しキュー機構を更に備え、受信セル及び前記一時記録機構に記録された情報の検査の合間に前記先入れ先出しキュー機構のセル情報の検査により更なる続きの先頭セルの抽出を行うことを特徴とする請求項2記載の分散型スイッチファブリックシステム。
【請求項9】
前記交換部で受信可能なセルの数、及び前記整列部で受信可能なセルの数を、それぞれ前記分散部と前記交換部がクレジットとして管理し、セル送信のたびにクレジットを削減し、交換部と整列部のセル受信バッファからセルが送信された時に、それぞれ整列部と交換部に空き領域が出来たことを通知し、整列部と交換部でクレジットを回復する機構を備えた請求項1もしくは請求項2にいずれかに記載の分散型スイッチファブリックシステム。
【請求項10】
前記交換部が管理する整列部用クレジットは送信元毎に最低1個、また、各送信元共通で複数個管理する請求項9の分散型スイッチファブリックシステム。
【請求項11】
それぞれが非同期に宛先調停を行う複数の交換部を有する分散型スイッチにおいて、
スイッチファブリックの入力にあたる分散部には、同じ宛先への可変長のパケットを1個以上の固定長のセルに分割し、スイッチ数の整数倍個ずつ前記セル群を複数の交換部へ送信する機構を備え、
スイッチファブリックの出力にあたる整列部には、受信したセルを、フローの先頭となるまで保持、先頭の再確認を繰り返し、正しい順番に並べ替える機能を備えた分散型スイッチファブリックシステム。
【請求項1】
それぞれが非同期に宛先調停を行う複数の交換部を有する分散型スイッチファブリックシステムにおいて、
スイッチファブリックの入力にあたる分散部に、同じ宛先への可変長のパケットを1個以上の固定長のセルに分割し、交換部の数の整数倍個以上となるまで前記同じ宛先へのセル群を一時保持したあと、交換部数の整数倍個ずつ前記セル群を前記複数の交換部へ送信する機構を備え、
スイッチファブリックの各交換部に、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、
スイッチファブリックの出力にあたる整列部に、
受信セルの順番検査用の情報を利用して先頭であるか否かの順番検査を行なう機構と、
非先頭であれば検査に利用した情報を一時記録する先入れ先出しキュー機構と、
先頭であれば当該セルを抽出し、更に前記の一時記録した先入れ先出しキューの先頭の情報から順に検査し、更なる続きの先頭となるセルを抽出するする機構と、
前記の先頭として抽出されたセルに対し、パケットの区切り情報を利用して元のパケットを復元する機構とを備えたことを特徴とする分散型スイッチファブリックシステム。
【請求項2】
それぞれが非同期に宛先調停を行う複数の交換部を有する分散型スイッチファブリックシステムにおいて、
スイッチファブリックの入力にあたる分散部に、同じ宛先への可変長のパケットを1個以上の固定長のセルに分割し、スイッチ数の整数倍個以上となるまで前記同じ宛先へのセル群を一時保持したあと、スイッチ数の整数倍個ずつ前記セル群を送信する機構を備え、
スイッチファブリックの各交換部に、同一送信元のセル群の間の送信順番を維持したまま、セル単位で宛先毎出力調停する機構を備え、
スイッチファブリックの出力にあたる整列部に、
受信セルの順番検査用の情報を利用して先頭であるか否かの順番検査を行なう機構と、
前記受信セルが非先頭であれば検査に利用した情報を一時記録する一時記録機構と、
前記受信セルが先頭であれば当該セルを抽出し、更に前記一時記録機構に記録した非先頭セルの情報を全検査し、更なる続きの先頭となるセルを抽出する機構と、
前記の先頭として抽出されたセルに対し、パケットの区切り情報を利用して元のパケットを復元する機構とを備えたことを特徴とする分散型スイッチファブリックシステム。
【請求項3】
前記分散部は、 宛先が複数であるマルチキャストパケットの場合は、前記パケットを固定長セルに分割後、スイッチ数の整数倍個以上のセルに達しなくても複数の交換部へ送信する機構を更に備えたことを特徴とする請求項1もしくは第2項のいずれかに記載の分散型スイッチファブリックシステム。
【請求項4】
前記分散部は、 固定長セルに分割して待機中のセル群が、設定した閾値時間を経過しても出力されない場合に、前記待機中のセル群を強制的に複数の交換部へ送信する機構を更に備えたことを特徴とする請求項1もしくは第2項のいずれかに記載の分散型スイッチファブリックシステム。
【請求項5】
前記整列部で利用する受信セルの順番検査用の情報として、送信元番号と、各分散部で単一の宛先、もしくは複数の宛先の組合せ毎に一意に決定するフロー番号と、前記フロー内の整理番号とを利用することを特徴とする請求項1もしくは第2項のいずれかに記載の分散型スイッチファブリックシステム。
【請求項6】
前記整列部に、受信セルが先頭であるか否かの順番検査を行う機構と、非先頭であった前記セルを一時記録する先入れ先出しキュー機構と、更なる続きの先頭となるセルを検査する機構とをそれぞれ複数備え、
前記先入れ先出しキューにエントリがある場合、受信セルの入力がないタイミングで前記先入れ先出しキューの先頭の情報から順に先頭検査を行う機構を備えた請求項1記載の分散型スイッチファブリックシステム。
【請求項7】
前記整列部に、受信セルが先頭であるか否かの順番検査を行う機構と、前記一時記録機構と、更なる続きの先頭となるセルを抽出する機構とをそれぞれ複数備え、
前記一時記録機構にセルがある場合、受信セルが先頭であったら、前記一時記録機構の全セルの整理番号と現在の先頭の整理番号に1から特定の整数までの各整数値を加えた値とをそれぞれ比較検査し、1を加えた整理番号のセルから順に、一致した整理番号のセルまでを、先頭から連続する整理番号のセルとして選択し、前記の一時記録機構から削除する機構を備えた分散型スイッチファブリックシステム。
【請求項8】
前記整列部に、前記一時記録機構のエントリが非先頭であったセルの情報で満杯の時に、非先頭であった前記セルの情報を一時記録する先入れ先出しキュー機構を更に備え、受信セル及び前記一時記録機構に記録された情報の検査の合間に前記先入れ先出しキュー機構のセル情報の検査により更なる続きの先頭セルの抽出を行うことを特徴とする請求項2記載の分散型スイッチファブリックシステム。
【請求項9】
前記交換部で受信可能なセルの数、及び前記整列部で受信可能なセルの数を、それぞれ前記分散部と前記交換部がクレジットとして管理し、セル送信のたびにクレジットを削減し、交換部と整列部のセル受信バッファからセルが送信された時に、それぞれ整列部と交換部に空き領域が出来たことを通知し、整列部と交換部でクレジットを回復する機構を備えた請求項1もしくは請求項2にいずれかに記載の分散型スイッチファブリックシステム。
【請求項10】
前記交換部が管理する整列部用クレジットは送信元毎に最低1個、また、各送信元共通で複数個管理する請求項9の分散型スイッチファブリックシステム。
【請求項11】
それぞれが非同期に宛先調停を行う複数の交換部を有する分散型スイッチにおいて、
スイッチファブリックの入力にあたる分散部には、同じ宛先への可変長のパケットを1個以上の固定長のセルに分割し、スイッチ数の整数倍個ずつ前記セル群を複数の交換部へ送信する機構を備え、
スイッチファブリックの出力にあたる整列部には、受信したセルを、フローの先頭となるまで保持、先頭の再確認を繰り返し、正しい順番に並べ替える機能を備えた分散型スイッチファブリックシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17a】
【図17b】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17a】
【図17b】
【公開番号】特開2008−278387(P2008−278387A)
【公開日】平成20年11月13日(2008.11.13)
【国際特許分類】
【出願番号】特願2007−122014(P2007−122014)
【出願日】平成19年5月7日(2007.5.7)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成20年11月13日(2008.11.13)
【国際特許分類】
【出願日】平成19年5月7日(2007.5.7)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]