(57)【特許請求の範囲】
【請求項１】
セル分散型スイッチファブリックであって、
前記スイッチファブリックの入力にあたる複数の分散部と、
前記スイッチファブリックの出力にあたる複数の整列部と、
それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部とを備え、
前記分散部は、
入力される可変長のパケットを宛先毎に分類し第一の分割長単位で揃える機構と、
前記第一の分割長単位の2倍以上の整数倍である第二の分割長単位で固定長のセルペイロードに分割し、前記セルペイロード各々にセルヘッダとして少なくとも宛先情報と送信元識別子と整理番号とパケット先頭末尾の位置情報を付与して固定長のセルとする機構と、
前記セルが前記交換部と同数溜まるたびに、前記セルを全ての前記交換部へひとつずつ分散する機構を有し、
前記整列部は、
複数の前記交換部を介して受信した前記セルの前記送信元識別子によって前記セルを分類し、前記整理番号を元に順番整列する機構と、
前記セルの前記パケット先頭末尾の位置情報によって前記パケットを復元する機構と、
復元済みの前記パケットを出力する機構とを有し、
前記分散部は、
前記パケットとして、マルチキャストパケットを受信した場合、前記マルチキャストパケットを目的の宛先を含むユニキャストパケットへ分解してからセル分割する機構を有する
セル分散型スイッチファブリック。
【請求項２】
セル分散型スイッチファブリックであって、
前記スイッチファブリックの入力にあたる複数の分散部と、
前記スイッチファブリックの出力にあたる複数の整列部と、
それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部とを備え、
前記分散部は、
入力される可変長のパケットを宛先毎に分類し第一の分割長単位で揃える機構と、
前記第一の分割長単位の2倍以上の整数倍である第二の分割長単位で固定長のセルペイロードに分割し、前記セルペイロード各々にセルヘッダとして少なくとも宛先情報と送信元識別子と整理番号とパケット先頭末尾の位置情報を付与して固定長のセルとする機構と、
前記セルが前記交換部と同数溜まるたびに、前記セルを全ての前記交換部へひとつずつ分散する機構を有し、
前記整列部は、
複数の前記交換部を介して受信した前記セルの前記送信元識別子によって前記セルを分類し、前記整理番号を元に順番整列する機構と、
前記セルの前記パケット先頭末尾の位置情報によって前記パケットを復元する機構と、
復元済みの前記パケットを出力する機構とを有し、
前記分散部は、
前記パケットとして、マルチキャストパケットを受信した場合、同一のマルチキャスト先を含む連続する前記マルチキャストパケットまでをセル分割し、
前記セルが前記交換部と同数溜まっていなくても各セルを異なる前記交換部へ一つずつ分散する機構を有する
セル分散型スイッチファブリック。
【請求項３】
セル分散型スイッチファブリックであって、
複数の分散部と、複数の整列部と、それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部とを備え、
前記分散部は、
入力される可変長のパケットを宛先毎に分類し、同じ宛先への前記可変長のパケットを一個以上の固定長のセルペイロードとし、前記セルペイロード各々にセルヘッダとして少なくとも宛先情報と送信元識別子と整理番号とパケット先頭末尾の位置情報を付与して固定長のセルとし、
前記セルが前記交換部と同数溜まるたびに、前記セルを全ての前記交換部へひとつずつ分散し、
前記可変長のパケットとしてマルチキャストパケットを受信した場合、目的の宛先を含むユニキャストパケットへ分解してからセル分割する
セル分散型スイッチファブリック。
【請求項４】
セル分散型スイッチファブリックであって、
複数の分散部と、複数の整列部と、それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部とを備え、
前記分散部は、
入力される可変長のパケットを宛先毎に分類し、同じ宛先への前記可変長のパケットを一個以上の固定長のセルペイロードとし、前記セルペイロード各々にセルヘッダとして少なくとも宛先情報と送信元識別子と整理番号とパケット先頭末尾の位置情報を付与して固定長のセルとし、
前記セルが前記交換部と同数溜まるたびに、前記セルを全ての前記交換部へひとつずつ分散し、
前記可変長のパケットとしてマルチキャストパケットを受信した場合、同一のマルチキャスト先を含む連続する前記マルチキャストパケットまでをセル分割し、
前記セルが複数の前記交換部と同数溜まっていなくても、前記セル各々を異なる前記交換部へ一つずつ分散する
セル分散型スイッチファブリック。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット交換装置内部で用いられるスイッチファブリックに関し、特に、独立動作する複数のスイッチの実効交換容量低下を防ぐ技術に関するものである。
【背景技術】
【０００２】
ルータなどのネットワーク転送装置では、装置内部の機能ブロック間で可変長のパケット交換を行うためにスイッチファブリックが利用される。大容量回線（高速回線）の交換を行う方法の一つに，交換部として要求回線速度の１／Ｍの速度のポートを備える比較的低速なスイッチＬＳＩをＭ個用意し、並列利用する分散型スイッチファブリック（パラレルスイッチ）がある。
【０００３】
従来の分散型スイッチファブリック技術として、特許文献１に示されるように、複数のＡＴＭ（Asynchronous Transfer Mode）スイッチを並列利用するシステムがある。このシステムでは、もともと固定長のＡＴＭセルをシステム内のＡＴＭスイッチの数と等しい数のサブセルに分割するため、複数のＡＴＭスイッチ全てに有効なセルを流すことができる。ゆえに、スイッチファブリックの実効交換容量を最大交換容量と同等まで利用することが可能である。ところが、イーサネット（登録商標）等の可変長パケットを扱う場合には、パケット長によってはサブセルの中に有効でない部分が大量に発生するためスイッチファブリックの実効交換容量が低下してしまう。また、全ＡＴＭスイッチを完全同期させる必要があるため、小粒度のパケットを大容量回線で流す場合に、処理が困難である。
【０００４】
特許文献２では、データストリームを所定の長さLを持つ複数のデータブロックに分割し、更にｍ個のサブデータブロックに分解（ビットスライス）して複数のＡＴＭスイッチに並列的に送信する方法が開示されている。しかしながら、この方法を利用しても、分解するサブデータブロックの数がＡＴＭスイッチの数と同じでないと実効交換容量が低下してしまう。また、同じであったとしても、元のデータブロックがLより十分小さいか、Lより若干大きい場合、長さをLに揃えるためのパディングによって実効交換容量が低下してしまう。
【０００５】
特許文献３では、同一のパケットから生成したセルには、宛先番号、送信元番号、セル分割番号の他、同一のタイムスタンプを付加し、複数の交換部へセルを分散している。交換部ではタイムスタンプの古いものを優先して選択し、整列部では、同一のフローに属するセル、パケットをタイムスタンプの値が古いものから順に順序復元を行う方法が開示されている。この方法によれば、非同期動作の交換部を任意の数だけ利用して分散型スイッチファブリックを構成できるが、パケット長によってはスイッチファブリックの実効交換容量が低下してしまう。
【０００６】
【特許文献１】特開平５−３２７７７７号公報
【特許文献２】特開平６−１８７３１１号公報
【特許文献３】ＷＯ０２／４３３２９（Ａ１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
これらの従来例に存在する実効交換容量低下問題は、スイッチ分割損とパケット分割損に起因する問題として説明することができる。
【０００８】
まず、発明の前提となる分散型スイッチファブリックでは、図１に示すように、スイッチファブリックの入力にあたるN個の分散部１００それぞれにおいて、可変長パケットをそのまま、もしくは可変長パケットを固定長に分割したセルをM個の各交換部２００へ分散してスイッチングし、N個ある整列部３００のうち対応する宛先で、セルを送信順番通りに並べ直してパケットを復元して出力するか、送信順番通りにパケットを並べ直して出力することで所望の大容量回線の交換を実現する。
【０００９】
また、前提となる可変長のパケットと固定長のセルの関係を図２に示す。一般に、スイッチファブリックを内蔵するルータなどのパケット転送装置は、受信したパケット１０の内容を解析して宛先やパケット長、優先度などを含む解析情報１１を生成する。そして、解析情報１１を含むパケット２０を、指定された固定長に分割しセルのペイロード３２とする。固定長に満たない場合は、例えば最後のセルのペイロードに値ゼロを必要量パディングして固定長にする。そして、各セルペイロード３２にセルヘッダ３１を付与して固定長のセル３０とする。
【００１０】
セルヘッダ３１は、セル３０を分散部１００から、いずれかの交換部２００を経由して宛先の整列部３００まで通過させた後、元通りの順番で解析情報１１を含むパケット２０を復元するために必要な情報を含んでいる。
【００１１】
ここで、図１中のスイッチファブリックがN=４、M=４、すなわち、分散部１００と整列部３００が４個ずつ、また、交換部２００も４個であると想定し、セルペイロード長より若干小さい大きさのパケットが分散部１００に入力されている場合を考える。各パケットは、セルペイロード長で指定される固定長に満たない部分にパディングが行われ固定長のセルペイロードとなる。
【００１２】
図３に宛先１、宛先２、宛先３、宛先4行きのパケットが1パケットずつ順番に入力された場合をパターン４０として示す。図３中のDx−yのxは宛先、yは宛先xへのy番目のパケットを示すものとする。
【００１３】
まず、４個の交換部２００−１〜４を同期動作させる場合について説明する。セル化されたパケットは、到着順に、各交換部２００へ順次送信される。また、前記パターン４０から生成されたセルが４個の交換部２００−１〜４へ分散送信される様子を図３のパターン５０として示す。この例では、４個の交換部２００−１〜４は同期動作することを前提としているため、タイミング合わせのために４個の交換部のうち、３個の交換部には無効な情報を運ぶダミーセル５２を含ませる必要がある。このダミーセル部分はスイッチ分割損として観測され、スイッチファブリックの実効交換容量が低下してしまう。
【００１４】
スイッチ分割損を具体的に示すために、図４に同期式のセル分散型スイッチファブリックにおけるパケット長とスループットの関係図を示す。横軸はパケット長（バイト）を、縦軸はスループット（Gbps：Giga bit per second）をそれぞれ示す。図４の例では、入力回線として１００Gbps相当のイーサネットを想定しており、その回線実効速度５００と、イーサネットパケットを交換するためのセル分散型スイッチファブリックのコア実効速度５１０の相関関係を示す。ここで、回線実効速度５００とは、ネットワーク回線上を流れるデータのうち、有効なパケットがどの程度含まれているかを意味し、パケット長によって変化する値である。次のように算出することができる。
【００１５】
回線実効速度５００＝(パケット長/(ROUNDUP((パケット長＋プリアンブル長)/４)×４＋最小インターフレームギャップ長))×回線速度
尚、ROUNDUPとは、算出した値の小数点以下を切り上げることを意味する。ここで、プリアンブル長は８バイト、最小インターフレームギャップ長は１２バイト、回線速度は１００Gbpsとすると、
回線実効速度５００＝(パケット長/(ROUNDUP((パケット長＋8)/4)×4＋12))×100Gbps
となる。また、コア実効速度５１０とは、ＬＳＩチップ内(コア)の配線上を流れるデータのうち、有効なパケットがどの程度含まれるかを意味し、分散部１００や整列部３００では、次式によって算出される値である。回線実効速度と同様に、パケット長によって変化する値である。
【００１６】
コア実効速度５１０＝(パケット長/(ROUNDUP((パケット長−FCS長＋解析情報長)/セルペイロード長)×1セルあたりの処理サイクル数))×コアの動作周波数
ここで、FCSとはFrame Check Sequenceであり、イーサネットでは4バイト、また解析情報長は３２バイト、セルペイロード長を１２８バイト、１セルあたりの処理サイクル数を４サイクル、コアの動作周波数を６００MHzとすると、
コア実効速度５１０＝(パケット長/(ROUNDUP((パケット長−4＋32)/128)×4))×600MHz
となる。尚、交換部２００のコア実効速度は、交換部２００をセル分散型スイッチファブリック全体で４個使う場合には、前記の４分の１の値でよい。４個の交換部２００を並列に利用することで、セル分散型スイッチファブリックの交換部部分全体のコア実効速度は前記の分散部１００や整列部３００のコア実行速度と同じ値になる。
【００１７】
セル分散型スイッチファブリックのコア実効速度５１０の値が回線実効速度を下回っている領域５１１が、スイッチ分割損の悪影響を受けているパケット長領域であり、前記領域においては交換容量が不足するためパケットロスが発生してしまう。
【００１８】
次に、４個の交換部２００−１〜４を非同期動作させる場合について図５を用いて説明する。尚、図５中のDx−yのxは宛先、yは宛先xへのy番目のパケットを示すものとする。また、図５中のSa−bのaは送信元、bは送信元aからのb番目のパケット番号を示すものとする。各交換部２００を非同期動作させる場合、各交換部は他の交換部と独立して入力セルの出力調停をできるため、分散部１００に対して図５のパターン４０の入力（図３のパターン４０の入力と同じ）があっても、分散部１００は、パターン５５に示すように、ダミーセルを挿入せずに全交換部２００−１〜４へセルを配信することができる。
【００１９】
しかし、ここで問題となるのは、全分散部１００−１〜４で図５のパターン４０の入力があった場合、いずれの分散部１００でも、宛先１行きのセルは交換部１へ、宛先２行きのセルは交換部２へ、宛先３行きのセルは交換部３へ、宛先４行きのセルは交換部４へと割り当てられる状況が発生しうることである。
【００２０】
この時、あるタイミングで宛先１に相当する整列部１におけるセルの到着状況を観測すると、図５のパターン６０に示すように、全ての分散部１００−１〜４いずれからも交換部１だけを通過してセルが到着するように見える。
【００２１】
この状態が続くと特定の交換部２００の当該宛先が輻輳するため、分散部１００がロードバランスをとって他の交換部２００を利用する方法が考えられる。しかし、分散部１００同士はお互いの瞬間的な状況を同じ瞬間に物理的に知ることはできないため、他の分散部１００が一斉に輻輳していない別の同じ交換部２００を選択することがありえる。この場合、やはり図４と同様のスイッチ分割損に起因する実効交換容量低下が発生しうる。
【００２２】
尚、実装コストは上昇してしまうが、整列部に大きなバッファメモリを備えればやがてはパターン６１に示すように全交換部２００−１〜４をセルが通過している状況を作り出せる可能性がある。しかし、最終的には整列部３００で送信元毎にセル順番を整列してからパケット復元をしなければならないので、分散部１００から整列部３００までのレイテンシが交換部２００の数に比例して大きくなってしまう。つまり、実効交換容量が高くても、遅延が非常に大きいスイッチファブリックになってしまい問題となる。
【００２３】
次に、図７を用いてパケット分割損の問題について説明する。図７は、分散部１００において宛先毎に分類した３個のパケット２０があり、それらのパケット長がセルペイロード長４０１より若干大きい場合を示している。この時、１パケットから２セルが生成されるが、２個目のセルはその大部分が有効なデータではなく、パディングである。セル中のパディングの占める割合が大きいほど、セル分散型スイッチファブリックにおける実効交換容量は低下してしまう。この実効交換容量の低下をパケット分割損と呼ぶ。
【００２４】
パケット分割損を具体的に示すために、図８にセル分散型スイッチファブリックにおけるパケット長とスループットの関係図を示す。各交換部２００を非同期動作させている点を除けば、それ以外の前提条件及び図の見方は図４と同様である。コア実効速度５１０が回線実効速度５００を下回っている領域５１１が、パケット分割損の悪影響を受けているパケット長領域であり、前記領域においては交換容量が不足するためパケットロスが発生してしまう。
【００２５】
前記のパケット分割損の発生を避けるための一つの方法は、セルペイロード長を小さくすることである。具体例として、図７のセルペイロード長４０１の４分の１の大きさである３２バイトのセルペイロード長４００を利用した場合のパケット分割の様子を図９に示す。セルペイロード長が短くなるほど、パディング領域が小さくなるため実効交換容量を向上させることができる。図９に相当する場合のセル分散型スイッチファブリックにおけるパケット長とスループットの関係図を図１０に示す。前提条件としてセルペイロード長が３２バイトである以外は、残りの条件及び図の見方は図８と同様である。ここでは、コア実効速度５１０が回線実効速度５００を下回っている領域５１１が存在しないため、交換容量が不足することはない。
【００２６】
しかしながら、セルペイロード長を小さくする場合、扱う回線が高速であると事実上、実現が困難である問題が発生する。例えば、セルペイロード長を３２バイトとした場合、図１０の条件下では、セル分散型スイッチファブリックの分散部１００や整列部３００の各部で１セルを処理するのにかけられる時間は、わずか１．５nsだけである。これは、仮に論理の動作周波数を６６６ＭＨzと仮定すると、わずか１サイクルでしかない。特に、分散部１００の重要な処理の一つのスケジューリングや整列部３００の重要な処理の一つのセル順番の整列等の複雑な操作を１サイクルで行うのは一般に非常に困難である。すなわち、単純にセルペイロード長を小さくする方法は採用が困難であると言えるため現実的ではない。
【００２７】
以上のように、従来の分散型スイッチファブリックでは、スイッチ分割損とパケット分割損の存在により、スイッチファブリックの実効交換容量が低下してしまう問題が存在することを説明した。また、これらの問題は、単純なスケジューリングやセルペイロード長の縮小だけでは対応できない問題であることも説明した。
【００２８】
以上の点を鑑み、本発明では、可変長パケットを交換するセル分散型スイッチファブリックの実効交換容量低下を防ぐことが可能なスイッチファブリックを提供することを課題とする。
【課題を解決するための手段】
【００２９】
上記の課題を解決するため、本発明は、スイッチファブリックの入力にあたる複数の分散部と、スイッチファブリックの出力にあたる複数の整列部と、それぞれが非同期に、前記分散部から前記整列部へのデータ交換を行う複数の交換部とを備え、前記分散部は、入力される可変長のパケットを宛先毎に分類し第一の分割長単位で揃える機構と、第一の分割長単位の２倍以上の整数倍である第二の分割長単位で固定長のセルペイロードに分割し、前記セルペイロードにセルヘッダとして少なくとも宛先情報と送信元識別子と整理番号とパケット先頭末尾の位置情報を付与して固定長のセルとする機構と、前記セルが交換部と同数溜まるたびに、セルを全交換部へひとつずつ分散する機構を有し、前記整列部は、複数の前記交換部を介して受信したセルの送信元識別子によってセルを分類し、整理番号を元に順番整列する機構と、セルのパケット先頭末尾の位置情報によってパケットを復元する機構と、復元済みのパケットを出力する機構とを有するセル分散型スイッチファブリックを提供する。
【００３０】
また、本発明は、複数の分散部と、複数の整列部と、それぞれが非同期に、分散部から整列部へのデータ交換を行う複数の交換部とを備え、分散部は、入力される可変長のパケットを宛先毎に分類し固定長のセルペイロードに分割し、セルペイロード各々にセルヘッダとして少なくとも宛先情報と送信元識別子と整理番号とパケット先頭末尾の位置情報を付与して固定長のセルとする機構と、セルが交換部と同数溜まるたびに、セルを全交換部へひとつずつ分散する機構を有し、整列部は、複数の交換部を介して受信したセルの送信元識別子によってセルを分類し、整理番号を元に順番整列する機構と、セルのパケット先頭末尾の位置情報によってパケットを復元する機構と、復元済みのパケットを出力する機構とを有するセル分散型スイッチファブリックを提供する。
【発明の効果】
【００３１】
本発明によると、可変長パケットを交換する場合でも、スイッチ分割損、更にはパケット分割損を必要最小限に抑えることができる。このため、従来方法よりも実効交換容量の低下の少ないセル分散型スイッチファブリックを構成可能となる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明を実施するための最良の形態の詳細な内容を図面に基づいて説明する。
【実施例１】
【００３３】
第一の実施例として、図１にセル分散型スイッチファブリックを用いたパケット転送装置の一構成例を示す。このパケット転送装置は、N本の入力回線に対し、可変長パケットを解析し宛先検索等の結果を付与するN個の入力側ネットワークプロセッサ６００（６００−１〜N）、解析情報つきの可変長パケットを受信し固定長セルに分割送信するN個の分散部１００（１００−１〜N）、それぞれが独立にセルをスイッチングするＭ個の交換部２００（２００−１〜Ｍ）、セルからパケットを分散部１００の送信順番通りに復元するＮ個の整列部３００（３００−１〜Ｎ）、パケットに必要なヘッダ修正等を加えるN個の出力側ネットワークプロセッサ６１０（６１０−１〜N）を備える（Ｎ、Ｍは整数）。
【００３４】
このうち、分散部１００、交換部２００、整列部３００で構成される部分が本実施例の対象とするスイッチファブリックである。別の構成例では、分散部１００が入力側ネットワークプロセッサ６００の一部に、また、整列部３００が出力側ネットワークプロセッサ６１０の一部に含まれることがあるが、本質的な差異ではない。
【００３５】
次に、本実施例におけるスイッチ分割損とパケット分割損を必要最小限に抑える方法を、図６に示すリンクヘッダつきセルと各部位の関係図、図１１に示すパケットとセルペイロード長の相関関係図と、図１３に示す分散部１００内部の構成例のブロック図、図１４に示す整列部３００内部の構成例のブロック図、図１５に示す交換部２００内部の構成例のブロック図とともに説明する。
【００３６】
まず、図６が示す内容に関して説明する。図６は図１のセル分散型スイッチファブリックを別の視点で見た図であり、説明しやすくするためにネットワープロセッサや分散部、整列部は１入出力回線だけを図示している。ここで、入力側ネットワークプロセッサ６００−１と出力側ネットワークプロセッサ６１０−１は好適には同一ＬＳＩ上に実装される。別ＬＳＩである場合は、互いに近接するように実装される。同様に、分散部１００と整列部３００も好適には同一ＬＳＩ上に実装される。別ＬＳＩである場合は、互いに近接するように実装される。入力側ネットワークプロセッサ６００−１と分散部１００−１の間、及び、出力側ネットワークプロセッサ６１０−１と整列部３００−１の間ではパケット単位の転送を行うが、場合によっては、パケットをセル単位に分割してから元のパケットと同じ順番で送っても良い（セル単位としても、論理的にはパケット単位の転送となっている）。いずれにしてもパケット２０もしくはセル３０に対して、リンクヘッダ７０を付与して両デバイス間の転送を行うことを図６は示している。
【００３７】
ここで、リンクヘッダ７０とは、デバイス間（すなわちリンク上）でデータを転送するためのヘッダ情報であり、含まれるセルの内容を示したり、デバイスのバックプレッシャ情報などを伝達したりするために利用することができる。同様に、分散部１００と各交換部２００の間、及び、各交換部２００と整列部３００の間ではセル単位でデータを転送するが、このセル３０もデバイス間ではリンクヘッダ７０を付与した形となる。本実施例では、リンクヘッダ７０によって各デバイスのバックプレッシャ情報を伝達する方法を分散部１００や整列部３００などの詳細構成の中で説明する。なお、バックプレッシャ情報の伝達のため、各部間にバックプレッシャ専用線を設ける構成をとることもできる。
【００３８】
次に、図１１が示すパケットとセルペイロード長の相関関係に関して説明する。分散部１００は、受信する様々な宛先を含むパケット２０Aを分散部１００によってバッファリングし、宛先毎に分類したパケット２０Bをパケットアライン長４１０毎に揃え、更にセルペイロード長４１１によって分割しセルペイロードとする。そして、交換部数長４１２に相当するセルペイロードが溜まるたびに、交換部の数と同数のセルを生成して出力する。
【００３９】
セルペイロード長４１１は、パケットアライン長４１０を整数倍（ただし２以上）した値であるため、（セルペイロード長４１１）＝（（パケットアライン長４１０）とKの積）（Kは２以上の整数）という関係がある。また、交換部数長４１２は、交換部２００の数をMとすると、（交換部数長４１２）＝（（セルペイロード長４１１）とMの積）という関係がある。
【００４０】
ここで、セルペイロード長４１１は、パケットアライン長４１０を整数倍（ただし２以上）した値であるため、分割後のセルペイロードには複数のパケット２０Bが含まれうる。整列部３００でセルからパケットを復元する処理を複雑化させないため、また、分散部１００が備えるパケット保持用のメモリを肥大化させないために、１セルに含まれるパケット数は最大でも２程度が望ましい。すなわち、パケットアライン長４１０やセルペイロード長４１１は、極端に大きな値をとらない方が良い。
【００４１】
好ましい例を挙げると、標準的なサイズ（６４バイトから１５１８バイト）のイーサネットパケットを扱い、入力側ネットワークプロセッサ６００で生成する解析情報が３２バイトである場合、パケットアライン長４１０を３２バイト、セルペイロード長４１１を１２８バイト（パケットアライン長４１０の４倍）とすると、１セルには最大でも２パケットまでしか含まれない。
【００４２】
パケットアライン長４１０にパケット先頭を揃える操作、セルペイロード長４１１でセル分割する操作は、様々な実装方法が考えられるため、その一実施例を図１３に示す。構成の前提となる分散部１００は、パケット受信部１１０、バックプレッシャ生成回路１１２、バックプレッシャ抽出回路１１３、宛先毎及びマルチキャスト（ＭＣ）用の複数のＶＯＱ（Virtual Output Queue）群１２０、ＶＯＱ調停器１２６、セレクタ１２７、セル生成部１３０、セル振分部１４０を有する。以下順次これらブロックの機能動作を説明する。
【００４３】
分散部１００のパケット受信部１１０は、パケット（パケット２０もしくはセル３０）を受信するとリンクヘッダ７０と受信パケット２０A（図１１参照）に分離する。リンクヘッダ７０は、バックプレッシャ抽出回路１１３に渡され、出力側ネットワークプロセッサ６１０のバックプレッシャ情報１４４を抽出して、同一ＬＳＩ上に実装されている、もしくは、近傍に実装されているペアとなる整列部３００（図６参照）へ伝達する。
【００４４】
また、パケット受信部１１０は、パケットアライン長分割回路１１１を備え、受信パケット２０Aをパケットアライン長４１０単位で分割し、対応する宛先のＶＯＱ１２０へ記録する。つまり、ＶＯＱ１２０は、パケットアライン長単位のデータを記録する。セルペイロード長４１１分相当のパケット分割データが溜まると一つのセルペイロードとなる。この操作により、一つのセルペイロードの中に複数のパケットを含めることができる。
【００４５】
図１３から明らかなように、各ＶＯＱ１２０は、ＶＯＱの本体でありセルペイロードを保持するＦＩＦＯキュー１２１とセル数カウンタ１２２、交換部空き状況検出器１２３、タイマー１２４、出力要求生成回路１２５を備える。セル数カウンタ１２２は、当該ＶＯＱに保持されているセルの数をカウントする。また、交換部空き状況検出器１２３は、整列部３００経由で送られてくる交換部２００の宛先毎のバックプレッシャ情報１４２のうち、宛先が当該ＶＯＱに相当するものを取り込み、当該宛先がセルを受信する領域が残っているか否か検出する。通常は、セル数カウンタ１２２の値が、交換部数長４１２に達しており、なおかつ、交換部空き状況検出器１２３がバックプレッシャ情報１４２に基づき、全ての交換部２００の該当する宛先にセルを受信する空き領域があることを検出した場合に、出力要求生成回路１２５は、ＶＯＱの出力調停要求をＶＯＱ調停器１２６へ送信する。
【００４６】
ＶＯＱ調停器１２６は、要求のあったＶＯＱ１２０のいずれか一つを選択してセレクタ１２７を固定し、該当するＶＯＱ１２０から、交換部数長４１２と同数のセルペイロードをセル生成部１３０へ送信する。
【００４７】
そして、セル生成部１３０は、受信したセルペイロードにセルヘッダを付与してセルを生成する。セルヘッダとして付与する情報としては、図１２に示すように、最低限、宛先情報１３１と送信元識別子１３２と整理番号１３３とパケット先頭末尾の位置情報１３４が存在する。それ以外の情報はその他１３５として示している。宛先情報１３１は、スイッチファブリックのどの宛先に対してセルを転送すべきかを示す情報であり、例えば宛先ビットマップとして表現できる。送信元識別子１３２とは、宛先でどの送信元（分散部１００）からセルが転送されてきたか区別するために利用する情報であり、例えば分散部１００を区別する固有の番号である。パケット先頭末尾の位置情報１３４とは、パケットの先頭がセルペイロードの中をパケットアライン長４１０単位で分割した場合にどこに位置するか、また、パケット末尾がセルペイロードの中をパケットアライン長４１０単位で分割した場合にどこに位置するか、を意味する。また、各セルには送信すべき交換部２００を示す交換部番号も付与するが、交換部番号はセル振分部１４０が認識できればよいため、分散部１００内部の信号としてだけ存在すればよく、セルヘッダに含める必要はない。
【００４８】
ここで、パケットアライン長４１０にパケット先頭を揃える操作、セルペイロード長４１１でセル分割する操作の別の実施例を説明する。別の方法では、パケットアライン長分割回路１１１内に１セルペイロード分のバッファをＶＯＱ１２０内部の各ＶＯＱと同数備える。このバッファへの記録単位はパケットアライン長４１０単位である。そして、これらバッファのうちセルペイロード長４１１分溜まったバッファから、順にＶＯＱ１２０の対応するＶＯＱへパケットアライン長４１０単位ではなく、セルペイロード長４１１単位でセルペイロードを移動する。この場合、ＶＯＱ１２０は、書込みも読出しもセルペイロード長４１１単位となる。（先の実施例では、ＶＯＱ１２０への書込みはパケットアライン長４１０単位、読出しはセルペイロード長単位４１１である。）
尚、前述のパケットアライン長４１０にパケット先頭を揃える操作、セルペイロード長４１１でセル分割する操作の実現方法自体は実装上の違いであり、本質的な違いではない。また、前述の方法を変形した実現方法もとりうることに注意されたい。
【００４９】
さて、図１３のセル振分部１４０を有する分散部１００から出力するセル３０には、リンクヘッダ７０として、交換部２００へ伝達する整列部３００の送信元毎のバックプレッシャ１４３をセル３０に付与し、各セルを指定の交換部番号に従って交換部２００へ送信する。セル生成部１３０が与える交換部番号を、ＶＯＱから一度に取り出すM個のセルに対して互いに異なる値とすることで、全交換部２００−１〜Mに対して均等にセル分散を行うことができる。
【００５０】
尚、既にＶＯＱにいくつかのセルペイロードが溜まっている状態で、対応する宛先の後続パケットが到着しない状況がありうる。ネットワーク上ではこのような状態が永遠に続くことは通常ありえないが、この状況が続くと、ＶＯＱに溜まっているセルペイロードを含むパケットがスイッチファブリックから永久に出力されなくなってしまう。
【００５１】
このような状況を避けるために、各ＶＯＱ１２０に内蔵するタイマー１２４を利用する。タイマー１２４はＶＯＱに何もない状態でセルペイロードが記録された時、及び、ＶＯＱからセルペイロードが読み出された際にＶＯＱにセルペイロードが残っている時に初期状態に戻してスタートさせる。そして、タイマー１２４が指定の値に達した場合、交換部空き状況検出器１２３が全ての交換部２００の該当する宛先にセルを受信する空き領域があることを検出していれば、ＶＯＱのセルペイロードが交換部数長４１２分溜まっていなくても、出力要求生成回路１２５は、ＶＯＱの出力調停要求をＶＯＱ調停器１２６へ送信する。
【００５２】
そして、前記の出力調停要求が勝利すれば、溜まっているセルペイロード数に相当する数の交換部２００へ１セルずつ分散送信する。この操作によって、適切なタイムアウト設定により、ＶＯＱに溜まっているパケットの末尾部分に相当するセルペイロードを宛先の整列部３００へ向けて送信することができる。尚、ＶＯＱが空になればタイマー１２４を初期状態に戻して停止させる。
【００５３】
また、これまでの説明は宛先が一つであるユニキャストパケットに対して非常に効率よく動作する。宛先が複数あるマルチキャストパケットの場合、分散部１００のパケット受信部１１０が宛先毎のＶＯＱ１２０へ記録する前に、対応する全てのユニキャストパケットに分解すれば、前述の手法をそのまま利用できる。
【００５４】
もしくは、マルチキャストパケットの場合、連続する同一宛先のマルチキャストパケットまでをパケットアライン長４１０とセルペイロード長４１１を利用してセルペイロード化し、交換部数単位でセル分散を行う。この時、分散部１００は、該当セルが交換部数に満たない場合でも分散してよい。これは、ユニキャストの場合のタイムアウト処理と類似の手段で実現できる。
【００５５】
これらのマルチキャストパケットの扱いによれば、ユニキャストパケットの場合よりも実効交換容量は低下しうるが、マルチキャストパケットの全体に占める割合は一般に少ないとすれば、十分許容範囲内である。
【００５６】
尚、分散部１００のバックプレッシャ生成回路１１２は、ＶＯＱ１２０群の輻輳具合を検出し、分散部１００のＶＯＱ毎のバックプレッシャ情報１４１を生成し、同一ＬＳＩ上に実装されている、もしくは、近傍に実装されているペアとなる整列部３００へ伝達する。このバックプレッシャ情報１４１は、最終的には整列部３００、出力側ネットワークプロセッサ６０を経て入力側ネットワークプロセッサ５０へ伝達され、入力側ネットワークプロセッサ５０内部のＶＯＱの出力調停に利用される。
【００５７】
次に本実施例における交換部２００の構成の一例について図１５を用いて説明する。各交換部２００−１〜Mは、それぞれがN個の受信ポートとN個の出力ポートをもち、それぞれの交換部２００が互いに独立して動作するため、スイッチファブリック全体で見ると非同期型の交換部を備えるセル分散型スイッチファブリックとなる。
【００５８】
各交換部２００は受信したセルをセル３０とリンクヘッダ７０（LH#1、LH#2、LH#3、LH#4）に分離し、セル３０部分をスイッチング回路２１０に、リンクヘッダ７０をバックプレッシャ抽出回路２１１にそれぞれ取り込む。バックプレッシャ抽出回路２１１は、リンクヘッダ７０に含まれる、分散部１００経由で到着する各整列部３００の送信元毎のバックプレッシャ情報（送信元#1、送信元#2、送信元#3、送信元#4）を認識し、スイッチング回路２１０へ送る。尚、このスイッチング回路２１０では、同一の送信元から送られてきたセル３０は、後続の同一送信元からのセル３０に追い越されないように制御する。
【００５９】
スイッチング回路２１０は、受信したセル３０のセルヘッダが含む宛先情報１３１を参照して宛先となる整列部３００毎にセル３０を一旦集める。その後、バックプレッシャ抽出回路２１１から送られてくる整列部３００の送信元毎のバックプレッシャ情報を調べ、バックプレッシャのない送信元のセルの中から一つを選んで送信する。尚、交換部２００はバックプレッシャ生成回路２１２を備え、スイッチング回路２１０の宛先毎の輻輳度合いを検出して、宛先毎のバックプレッシャ情報を生成し、出力用のリンクヘッダ７０を生成し、セル３０の送信の際に付与する。
【００６０】
宛先の整列部３００には、複数の交換部２００からセルが到着する。同一の交換部２００から到着するセルは、任意の一つの送信元だけに着目すると順番が揃ったままである。しかし、異なる交換部２００の間での任意の一つの送信元に関する順番は保証されないため、整列部３００はセル順序を適切に並べ直してからパケットを復元する必要がある。
【００６１】
図１４に本実施例における整列部３００内部の一構成例をブロック図で示す。整列部３００は、セル順番整列部３１０、バックプレッシャ抽出回路３１１、バックプレッシャ生成回路３１２、送信元毎のＦＩＦＯキューを備えるパケット復元部３２０、パケット送信部３３０で構成する。
【００６２】
整列部３００はセルを受信するとリンクヘッダ７０をバックプレッシャ抽出回路３１１へ、セル３０をセル順番整列部３１０へそれぞれ渡す。
【００６３】
バックプレッシャ抽出回路３１１は、リンクヘッダ７０から、上述した交換部２００の宛先毎のバックプレッシャ情報１４２（宛先#1、宛先#2、宛先#3 - - - 宛先#N）を抽出し、同一ＬＳＩ上に実装されている、もしくは、近傍に実装されているペアとなる分散部１００へ伝達する。
【００６４】
また、バックプレッシャ生成回路３１２は、セル順番整列部３１０、及び、パケット復元部３２０の内部論理やメモリの利用状況を参照して送信元に対応するバックプレッシャ情報１４３（送信元#1、送信元#2、送信元#3 - - - 送信元#N）を生成し、同一ＬＳＩ上に実装されている、もしくは、近傍に実装されているペアとなる分散部１００経由で交換部２００へ伝達する。
【００６５】
セル順番整列部３１０は、各交換部２００からセル３０を受信し、送信元毎にセルの順番を分散部１００での送信順番通りに整列し、パケット復元部３２０の中の対応するＦＩＦＯキューへセルを送る。具体的には、図１２に示したセルヘッダに含まれる送信元識別子１３２によって送信元毎にセルを分類し、その中で期待すべき整理番号１３３を持つセルを選択することによってセル順番を整列する。
【００６６】
パケット復元部３２０の各ＦＩＦＯキューは、読出し時はパケットアライン長４１０単位であるが、記録時はセル単位、すなわちセルペイロード長４１１単位である。このため、パケット復元部３２０への記録を行うまでの処理を担うセル順番整列部３１０では、複雑なセルの順番整列処理に対して十分な処理時間を確保することができる。
【００６７】
パケット復元部３２０の各ＦＩＦＯキューは、受信したセルのヘッダのパケット先頭末尾の位置情報１３４を利用して、セルをパケットアライン長４１０単位に切り出すことで、元のパケットを復元する。
【００６８】
その後、パケット送信部３３０は、パケット復元部３２０のＦＩＦＯキューのうち、パケットを復元できているＦＩＦＯキューの一つを選ぶ。同一ＬＳＩ上に実装されている、もしくは、近傍に実装されているペアとなる分散部１００から送信されてくる、入力側ネットワークプロセッサ６００を経由した出力側ネットワークプロセッサ６１０のバックプレッシャ情報１４４を参照して、出力側ネットワークプロセッサが受け付け可能な状態であることを確認する。そして、当該パケット２０に、分散部１００のＶＯＱのバックプレッシャ情報１４１（宛先#1宛先#2、宛先#3、宛先#4）をリンクヘッダ７０として付与して外部へ出力する。物理的には、パケット２０をセル３０として分割していても良い。
【００６９】
以上説明した本実施例の分散部１００から交換部２００を経て整列部３００の操作により、セル分散型スイッチファブリックでパケットを所望の宛先へ実効交換容量の低下を最小限に抑えながら効率的に転送することが可能となる。
【００７０】
より具体的には、図８に示すパケット長とスループットの関係を示すグラフにおいて、丸印５１１部分に示すようなパケット長のパケットが存在しないのと同等の効果をあげることができる。すなわち、コア実効速度５１０が回線実効速度５００を下回る領域のパケット長が存在しないのと同等の効果をあげることができる。
【実施例２】
【００７１】
実施例１では、セル分散型スイッチファブリックにおけるパケット分割損とスイッチ分割損の両方を最小限に抑止するための方法を詳細に示した。ここで、スイッチファブリックが扱う回線速度や論理動作周波数によっては、スイッチ分割損だけを抑止すればよい可能性がある。よって、実施例２としてスイッチ分割損だけを最小限に抑止する方法について説明する。
【００７２】
実施例２は、実施例１に対して少量の変更を加えるだけで実現可能である。具体的には、実施例１では、パケットアライン長４１０を２以上の整数倍した値のセルペイロード長４１１としてパケット分割損を防いだ。よって、パケットアライン長４１０とセルペイロード長４１１を同一の値とすれば実施例１で説明したパケット分割損部分を省いた形にできる。例えば、図１３の分散部１００の説明では、パケット受信部１１０内のパケットアライン長分割回路１１１を必要としたが、実施例２では、このパケットアライン長分割回路１１１が不要となる。すなわち、各ＶＯＱ１２０への書込み単位はセルペイロード長４１１となる。すなわち、パケット長アライン回路１１１が存在しないため、セルペイロードに複数のパケットが含まれることはない。その他の変更は一切加える必要がなく、容易にスイッチ分割損だけを最小限に抑止するセル分散型スイッチファブリックが実現できる。
【００７３】
以上、各種の実施例によるセル分散型スイッチファブリックについて詳細な説明を行った。なお上述の説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能であることは言うまでもない。
【００７４】
上述してきた本発明によるセル分散型スイッチファブリックは、例えば、大容量回線を利用したデータ交換が必要なシステムで利用することができる。ルータやスイッチに代表されるパケット装置内のスイッチファブリックに最も適する。この他、サーバやストレージ機器の装置内のスイッチファブリック等での利用が考えられる。
【図面の簡単な説明】
【００７５】
【図１】第一の実施例に係るセル分散型スイッチファブリックの構成を示すブロック図である。
【図２】従来例における可変長パケットから固定長セルを生成する様子を示す模式図である。
【図３】従来例におけるパケットとセルペイロード長の関係例を示す図である。
【図４】従来例におけるパケット長とスループットの相関関係例を示す図である。
【図５】従来例におけるパケットとセルペイロード長の関係例を示す図である。
【図６】第一の実施例に係る図１構成の見方を変えたブロックとリンクヘッダつきセルの関係を示す図である。
【図７】従来例におけるパケット分割損が大きい場合のパケットとセルペイロード長の関係例を示す図である
【図８】従来例におけるセルペイロード長が大きい場合のパケット長とスループットの相関関係例を示す図である。
【図９】従来例におけるセルペイロード長が小さい場合のパケットとセルペイロード長の関係例を示す図である。
【図１０】従来例におけるセルペイロード長が小さい場合のパケット長とスループットの相関関係例を示す図である。
【図１１】第一の実施例におけるパケットとセルペイロード長の相関関係例を示す図である。
【図１２】第一の実施例のセルヘッダの構成例を示す図である。
【図１３】第一の実施例の分散部の構成例を示すブロック図である。
【図１４】第一の実施例の整列部の構成例を示すブロック図である。
【図１５】第一の実施例の交換部の構成例を示すブロック図である。
【符号の説明】
【００７６】
１００…分散部
２００…交換部
３００…整列部
１０…パケット
１１…解析情報
２０…解析情報を含むパケット
３０…セル
３１…セルヘッダ
３２…セルペイロード
４１０…パケットアライン長
４１１…セルペイロード長
４１２…交換部数長
１１０…パケット受信部
１２０…ＶＯＱ
１３０…セル生成部
１４０…セル振分部
３１０…セル順番整列部
３２０…パケット復元部
３３０…パケット送信部
５００…回線実効速度
５１０…コア論理実効速度
５１１…スループット低下領域。
【図１】
0005028316.tif 000002
【図２】
0005028316.tif 000003
【図３】
0005028316.tif 000004
【図４】
0005028316.tif 000005
【図５】
0005028316.tif 000006
【図６】
0005028316.tif 000007
【図７】
0005028316.tif 000008
【図８】
0005028316.tif 000009
【図９】
0005028316.tif 000010
【図１０】
0005028316.tif 000011
【図１１】
0005028316.tif 000012
【図１２】
0005028316.tif 000013
【図１３】
0005028316.tif 000014
【図１４】
0005028316.tif 000015
【図１５】
0005028316.tif 000016