(57)【特許請求の範囲】
【請求項１】
Ｎ本の入力回線のそれぞれに対応して設けられ、対応する前記入力回線を介して入力されるパケットを格納するＮ個の入力バッファ部と、
それぞれが他のスケジューリング結果を用いずに別々の時刻に対応するスケジューリング処理を行うことにより、前記Ｎ個の入力バッファ部のそれぞれに格納された前記パケットの送出先となるＭ本の出力回線のいずれかを決定するα個のスケジューラ部と、
前記Ｎ個の入力バッファ部のそれぞれから出力される前記パケットを、前記スケジューラ部によって決定された送出先となる前記出力回線に出力するスイッチ部と、を備え、
前記Ｎ個の入力バッファ部において前記α個のスケジューラ部によるスケジューリング処理の結果を所定の順番で使用し、
前記スケジューラ部によるスケジューリング処理は、前記Ｎ個の入力バッファ部から送られてくるスケジューリング要求通知に対応して行われており、
前記Ｎ個の入力バッファ部のそれぞれは、前記スケジューリング要求通知の送出先となる前記スケジューラ部を分散させるとともに、前記α個のスケジューラ部のそれぞれに送出した前記スケジューリング要求通知の内の未処理の数を管理しており、この数が所定数に達した前記スケジューラ部に対する前記スケジューリング要求通知の送出動作を、この数が前記所定数より少なくなるまで遅らせることを特徴とするパケットスイッチ。
【請求項２】
請求項１において、
前記スケジューラ部が前記スケジューリング処理に要する時間が、前記パケットの最小送出間隔のＬ倍であるときに、
Ｌ−αが１以上に設定されており、
前記Ｎ個の入力バッファ部において前記α個のスケジューラ部の全てのスケジューリング処理の結果を所定の順番で使用することを特徴とするパケットスイッチ。
【請求項３】
請求項１または２において、
前記スケジューラ部は、未使用回線を含む前記スケジューリング処理を行っており、実際に使用している前記入力回線および前記出力回線と前記未使用回線との間の読み替え処理を行うことにより、１回の前記スケジューリング処理によって複数のスケジューリング処理結果を得ることを特徴とするパケットスイッチ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力回線を介して入力されたパケットを複数の出力回線に振り分けて出力するパケットスイッチに関する。
【０００２】
【従来の技術】
一般家庭におけるインターネットユーザの増加やインターネットビジネスの成長を背景として、インターネットバックボンネットワークの大容量化および高品質化が求められている。現在のインターネットは、品質保証のないベストエフォート型通信が主流であるが、次世代のインターネットでは、ベストエフォート型通信に加えて、音声やビデオ等のリアルタイムデータ通信の提供が期待されている。このため、ネットワークノードは、様々なトラヒックを柔軟に収容可能なテラビットクラスのスイッチング容量を有し、様々な通信サービスに適したサービス品質ＱｏＳ（Quality of Service）を提供する必要がある。現在、テラビットクラスのスイッチング容量を有するノードを実現する手段としては、メモリアクセス速度の高速化が可能な入力バッファ型パケットスイッチが有望であると考えられている。
【０００３】
ところで、入力バッファ型パケットスイッチにおけるスケジューリングアルゴリズムは、従来から様々なものが提案されている。これらをスケジューリング機能の配備方法に着目して整理すると、インタフェースカード等にスケジューリング機能を分散して配備する方法と、専用のカード等にスケジューリング機能を集中して配備する方法とに大別することができる。
【０００４】
図２２および図２３は、従来の入力バッファ型パケットスイッチにおけるスケジューリング機能の配備状態を示す図である。図２２にはスケジューリング機能を分散して配備したパケットスイッチの構成が示されている。図２３にはスケジューリング機能を集中して配備したパケットスイッチの構成が示されている。
【０００５】
図２２に示すように、スケジューリング機能を分散配備した入力バッファ型パケットスイッチには、入力バッファ（ＢＵＦ）とともにスケジューラが備わったインタフェースカード１００が入力回線の数だけ設けられている。隣接するインタフェースカード１００内のスケジューラ同士を相互接続することにより、各スケジューラ間でスケジューリング情報の送受信（未確定回線の通知）が可能になり、全ての入力回線のスケジューリングが実施される。入力回線数が増減した場合には、入力回線数に合わせてインタフェースカード１００の数も増減させればよいため、図２２に示した構成を有する入力バッファ型パケットスイッチは、拡張性に優れるという利点を有する。
【０００６】
一方、図２３に示すように、スケジューリング機能を集中配備した入力バッファ型パケットスイッチは、全ての入力回線のスケジューラ機能部（ＳＣＨ）を一つのスケジューラカード１１０に集約しており、これによって全ての入力回線のスケジューリングが実施される。各スケジューラ機能部間を接続する配線の距離が短いため、この配線により生じる遅延が少なく、信号の遅延時間に起因する実装時の制約が少ないという利点がある。
【０００７】
【発明が解決しようとする課題】
ところで、スケジューリング機能を分散配備した従来の入力バッファ型パケットスイッチは、実装された各インタフェースカード１００に備わったスケジューラ間を相互接続する必要があるため、接続線の配線長による遅延量が多くなり、高速なパケットスイッチでは、実装時の制約が多いという問題があった。
【０００８】
また、スケジューリング機能部を集中配備した従来の入力バッファ型パケットスイッチは、実際に収容される入力回線数が少ない場合であっても、スケジューラカード１１０には、常に最大数のスケジューラ機能部を備えておく必要があり、しかも実装後はその数が固定であるため、無駄が多いとともに拡張性に欠けるという問題があった。
【０００９】
本発明は、このような点に鑑みて創作されたものであり、その目的は、実装時の制約が少なく、無駄な構成を低減でき、しかも拡張性を有するパケットスイッチを提供することにある。
【００１０】
【課題を解決するための手段】
上述した課題を解決するために、本発明のパケットスイッチは、Ｎ個の入力バッファ部とα個のスケジューラ部とスイッチ部とを備えている。Ｎ個の入力バッファ部は、Ｎ本の入力回線のそれぞれに対応して設けられ、対応する入力回線を介して入力されるパケットを格納する。α個のスケジューラ部は、それぞれが独立したスケジューリング処理を行うことにより、Ｎ個の入力バッファ部のそれぞれに格納されたパケットの送出先となるＭ本の出力回線のいずれかを決定する。スイッチ部は、Ｎ個の入力バッファ部のそれぞれから出力されるパケットを、スケジューラ部によって決定された送出先となる出力回線に出力する。上述したＮ個の入力バッファ部においてα個のスケジューラ部によるスケジューリング処理の結果を巡回的に使用する。複数のスケジューラ部は互いに独立してスケジューリング処理を行っているため、これらの間の競合制御等を行う必要がなく、このための信号線による信号の遅延等の問題もないことから、実装時の制約が大幅に緩和される。また、スケジューラ部は必要な数だけ用意すればよいため無駄な構成がなく、しかも後に追加することも可能であるため、拡張性に富んだパケットスイッチを実現することができる。
【００１１】
特に、上述したスケジューラ部によるスケジューリング処理は、Ｎ個の入力バッファ部から送られてくるスケジューリング要求通知に対応して行われており、Ｎ個の入力バッファ部のそれぞれは、スケジューリング要求通知の送出先となるスケジューラ部を分散させることが望ましい。スケジューリング要求通知の送出先となるスケジューラ部を分散させることにより、処理の負担がスケジューラ部間で偏ることを防止することができる。
【００１２】
また、上述した入力バッファ部は、Ｍ本の出力回線のそれぞれを送出先とするパケットを格納するＭ個のキューを有しており、これらＭ個のキューのそれぞれ毎にスケジューリング要求通知の送出先となるスケジューラ部を巡回させることが望ましい。スケジューリング要求通知の送出先となるスケジューラ部をキュー毎に巡回させることにより、各スケジューラ部に対するスケジューリング要求通知を分散させることができる。
【００１３】
また、上述した入力バッファ部は、入力回線毎にスケジューリング要求通知の送出先となるスケジューラ部を巡回させることが望ましい。スケジューリング要求通知の送出先となるスケジューラ部を入力回線毎に巡回させることにより、各スケジューラ部に対するスケジューリング要求通知を分散させることができる。
【００１４】
上述した入力バッファ部は、単位時間毎にスケジューリング要求通知の送出先となるスケジューラ部を巡回させることが望ましい。スケジューリング要求通知の送出先となるスケジューラ部を単位時間毎に巡回させることにより、各スケジューラ部に対するスケジューリング要求通知を分散させることができる。
【００１５】
また、上述した入力バッファ部は、α個のスケジューラ部のそれぞれについて未処理のスケジューリング要求通知の数を調べ、この数が少ないスケジューラ部に次のスケジューリング要求通知を送ることが望ましい。実際に送出されたスケジューリング要求通知の数が少ないスケジューラ部に優先的にスケジューリング要求通知を送ることにより、各スケジューラ部に対するスケジューリング要求通知を均等に分散させることができる。
【００１６】
また、上述した入力バッファ部は、α個のスケジューラ部のそれぞれに送出したスケジューリング要求通知の数を管理しており、この数が所定数に達したスケジューラ部に対するスケジューリング要求通知の送出動作を、この数が所定数より少なくなるまで遅らせることが望ましい。入力バッファ部にスケジューリング要求通知の数を管理する機能を分散させることにより、各スケジューラ部の処理負担を軽減することができる。
【００１７】
また、上述したスケジューラ部がスケジューリング処理に要する時間が、パケットの最小送出間隔のＬ倍であるときに、スケジューラ部の数αは、倍数Ｌ以上の値に設定されていることが望ましい。スケジューラ部の数αを倍数Ｌ以上に設定することにより、α個のスケジューラ部全体として遅延なくスケジューリング処理を行うことができる。
【００１８】
また、Ｌ−αが１以上に設定されており（すなわち、Ｌ個より多いスケジューラが備わっており）、Ｎ個の入力バッファ部においてα個のスケジューラ部の全てのスケジューリング処理の結果を巡回的に使用することが望ましい。処理の遅延を来さないために必要な数よりも多い数のスケジューラ部を備えることにより、その一部に障害が発生した場合であっても、残りのスケジューラ部によって正常にスケジューリング処理を継続することができる。
【００１９】
また、Ｌ−αが１以上に設定されている場合に、α−Ｌ個のスケジューラ部を冗長系として用いるとともに、この冗長系以外のスケジューラ部に障害が発生したときに、代わりに冗長系のスケジューラ部を用いることが望ましい。障害発生時に冗長系のスケジューラ部を用いてスケジューリング処理を行うことにより、遅延を来すことなく正常なスケジューリング処理を継続することができる。
【００２０】
また、入力回線の数Ｎと出力回線の数Ｍに応じて、スケジューラ部の数αおよびスケジューリング処理の時間を可変に設定することが望ましい。回線数が少ない場合にはスケジューラ部の数や処理時間を少なく設定し、反対に回線数が多い場合にはスケジューラ部の数や処理時間を多く設定すればよいため、スイッチ部に収容する回線数等に応じて無駄のない最適な構成を実現することができる。
【００２１】
また、上述したスケジューラ部は、未使用回線を含むスケジューリング処理を行っており、実際に使用している入力回線および出力回線と未使用回線との間の読み替え処理を行うことにより、１回のスケジューリング処理によって複数のスケジューリング処理結果を得ることが望ましい。スケジューラ部の数や処理時間を変更することなく、回線数の変更に対応することができ、拡張性に富んだパケットスイッチを実現することができる。
【００２２】
【発明の実施の形態】
以下、本発明を適用した一実施形態のパケットスイッチについて詳細に説明する。
図１は、本発明を適用した一実施形態のパケットスイッチの構成を示す図である。図１に示すように、本実施形態のパケットスイッチ１００は、スイッチ部（ＳＷ）１０、Ｎ個の入力バッファ部２０、α個のスケジューラ部３０を含んで構成されている。
【００２３】
スイッチ部１０は、Ｎ本の入力回線のいずれかから入力されたパケットをＭ本の出力回線のいずれかに出力する。本実施形態では、このスイッチ部１０は、内部にパケットを保持することができないバッファレスタイプのものが用いられている。Ｎ個の入力バッファ部２０のそれぞれは、スイッチ部１０に収容されたＮ本の入力回線のそれぞれに対応して設けられている。各入力バッファ部２０は、スイッチ部１０に収容されたＭ本の出力回線に対応したＭ個の論理キューＶＯＱ（Virtual Output Queue）を有しており、１対１に対応する入力回線を介して入力された到着パケットを、出力先となる出力回線に対応する論理キューＶＯＱに蓄積するとともに、いずれかのスケジューラ部３０から出力許可を示すグラント通知が送られてきたときに、このグラント通知で指定された論理キューＶＯＱの先頭パケットを読み出す。α個のスケジューラ部３０のそれぞれは、各入力回線を介して入力されたパケットの送出先となる出力回線を決定するスケジューリング処理を行う。このようにしてα個のスケジューラ部３０のそれぞれにおいてスケジューリング処理を並行して行うことにより、各スケジューラ部３０による処理負担を軽減することができる。本明細書では、このようにして複数のスケジューラ部３０によって並行して行うスケジューリング処理を「負荷分散スケジューリング処理」と称する。
【００２４】
図２は、入力バッファ部２０の詳細構成を示す図である。図２に示すように、入力バッファ部２０は、上述したＭ個の論理キューＶＯＱを含むパケットバッファ２２の他に、要求振り分け部２４および読み出し指示部２６を有している。要求振り分け部２４は、パケットバッファ２２内の各論理キューＶＯＱに蓄積されたパケットに対応するスケジューリング要求通知であるリクエスト通知を、α個のスケジューラ部３０のそれぞれに均等に分散させて送出する。読み出し指示部２６は、α個のスケジューラ部３０から送られてくるグラント通知の内容にしたがって、パケットの送出タイミングが到来したパケットバッファ２２内の論理キューＶＯＱに読み出し指示を与える。
【００２５】
図３は、スケジューラ部３０の詳細構成を示す図である。図３に示すように、スケジューラ部３０は、要求数管理部３２およびスケジューリング制御部３４を有している。要求数管理部３２は、入力回線と論理キューＶＯＱの組合せに対応するリクエスト通知が送られてきたときに、この組合せに対応するリクエスト数をインクリメントし、このリクエスト数をスケジューリング確定時にデクリメントする。スケジューリング制御部３４は、所定のスケジューリングアルゴリズムにしたがって、ある時刻Ｔに送出する各入力回線毎のパケットの出力先回線を決定する。具体的には、スケジューリング制御部３４は、入力回線のそれぞれについて、要求数管理部３２によってカウントされているリクエスト数が１以上の出力回線の中からいずれかを選択する。
【００２６】
本実施形態では、α個のスケジューラ部３０によって並列にスケジューリング処理が行われるため、１個のスケジューラ部によってスケジューリング処理を行う場合に比べて、各スケジューラ部３０は、α倍の時間をかけてスケジューリング処理を行うことができる。例えば、各入力回線を介して入力されたパケットを、対応する出力回線に送出するために必要な時間を「１パケット時間」とすると、各スケジューラ部３０は、Ｎ本の入力回線のそれぞれを介して入力されたパケットの送出先となる出力回線を決定するスケジューリング処理をαパケット時間以内に行えばよい。
【００２７】
本実施形態のパケットスイッチ１００はこのような構成を有しており、次にその動作をスケジューリング処理に着目して説明する。
（１）入力バッファ部２０の動作
（１ａ）対応する入力回線を介してパケットが入力された場合に、パケットバッファ２２は、このパケットの送出先となる出力回線に対応する論理キューＶＯＱにこのパケットを格納する。
【００２８】
（１ｂ）パケットバッファ２２内のいずれかの論理キューＶＯＱにパケットが格納されると、要求振り分け部２４は、このパケットに対応するスケジューリング処理を要求するリクエスト通知をいずれかのスケジューラ部３０に送る。このとき、リクエスト通知の送信先となるスケジューラ部３０を分散させる。
【００２９】
（１ｃ）いずれかのスケジューラ部３０から送信許可を示すグラント通知が送られてくると、読み出し指示部２６は、このグラント通知によって指定された論理キューＶＯＱの先頭のパケットを、この論理キューＶＯＱに１対１に対応する出力回線に向けて出力する動作をパケットバッファ２２に指示する。
【００３０】
（２）スケジューラ部３０の動作
α個のスケジューラ部３０の動作は互いに独立であり、各入力バッファ部２０から送られてくるリクエスト通知の数（リクエスト数）を論理キューＶＯＱ毎に管理する。したがって、各スケジューラ部３０は、自分宛てに送られてきたリクエスト通知の有無を基に、スケジューリング処理を実施する。また、スケジューリングアルゴリズムは、従来から用いられている各種の手法を採用することができる。以下では、ラウンドロビンを用いて、各出力回線毎に一つの論理キューＶＯＱを選択する場合の動作を説明する。
【００３１】
（２ａ）各入力バッファ部２０からリクエスト通知が送られてくると、要求数管理部３２は、リクエスト通知の内容を調べ、入力回線と論理キューＶＯＱの組合せ毎にリクエスト数をカウントする。
（２ｂ）スケジューリング制御部３４は、一の入力回線に着目し、送られてきたリクエスト通知によって指定されており、しかもそれまでのスケジューリング処理によって選択されていない（未確定の）論理キューＶＯＱの中から一つを選択する。この入力回線毎に論理キューＶＯＱを選択する処理は、全ての入力回線について一巡するまで順番に行われる。これにより、全ての入力回線のそれぞれに入力されたパケットの出力先となる出力回線が決定される。
【００３２】
（２ｃ）スケジューリング制御部３４は、入力回線毎に選択した論理キューＶＯＱを指定したグラント通知を、各入力バッファ部２０内の読み出し指示部２６に送る。
具体例１
図４は、負荷分散スケジューリング処理の具体例を示す図である。同図には、説明を簡略化するために、入力回線数、出力回線数、スケジューラ部３０の数αが全て２の場合に対応したスケジューリング処理の具体例が示されている。以下の説明および図４においては、２本の入力回線、２本の出力回線、各出力回線に対応した論理キューＶＯＱのそれぞれに通し番号＃０、＃１が付されており、これらの識別が行われている。また、２つのスケジューラ部３０の一方をスケジューラ部＃０（ＳＣＨ＃０）、他方をスケジューラ部＃１（ＳＣＨ＃１）とする。同様に、入力回線＃０、＃１のそれぞれに対応する２つの入力バッファ部２０の一方を入力バッファ部＃０、他方を入力バッファ部＃１とする。また、これらに含まれる各構成についても、「＃０」あるいは「＃１」を名称の後に付して、対応する入力回線を区別するものとする。
【００３３】
入力バッファ部の動作
一方の入力バッファ部＃０には、入力回線＃０を介して４つのパケット（１）、（２）、（３）、（４）が順番に入力される。この中で、第１、第２、第３パケット（１）、（２）、（３）は送出先として出力回線＃０が指定されており、第４パケット（４）のみが送出先として出力回線＃１が指定されているものとする。したがって、入力バッファ部＃０内のパケットバッファ＃０は、第１、第２、第３パケット（１）、（２）、（３）を論理キューＶＯＱ＃０に格納し、第４パケット（４）を論理キューＶＯＱ＃１に格納する。要求振り分け部＃０は、第１、第３、第４のパケット（１）、（３）、（４）が到着したときに、一方のスケジューラ部＃０にリクエスト通知を送るとともに、第２のパケット（２）が到着したときに、他方のスケジューラ部＃１にリクエスト通知を送る。このリクエスト通知には、入力回線番号、出力回線番号（論理キューＶＯＱの番号）、イネーブル等が含まれている。
【００３４】
また、他方の入力バッファ部＃１には、入力回線＃１を介して第５、第６のパケット（５）、（６）が順番に入力される。これら２つのパケット（５）、（６）は、両方とも送出先として出力回線＃１が指定されているものとする。したがって、入力バッファ部＃１内のパケットバッファ＃１は、これら第５および第６のパケット（５）、（６）を論理キューＶＯＱ＃１に格納する。要求振り分け部＃１は、第５のパケット（５）が到着したときに、一方のスケジューラ部＃０にリクエスト通知を送るとともに、第６のパケット（６）が到着したときに、他方のスケジューラ＃１にリクエスト通知を送る。
【００３５】
スケジューラ部の動作
スケジューラ部＃０、＃１は、独立して動作しており、それぞれに含まれる要求数管理部＃０、＃１によって、受信したリクエスト通知の数を論理キューＶＯＱ毎に管理する。また、スケジューラ部＃０、＃１は、それぞれの要求管理部＃０、＃１によって管理されるリクエスト数に基づいて、以下に示す負荷分散スケジューリング処理を実施する。なお、ラウンドロビンを用いたスケジューリング処理が、入力回線＃１、入力回線＃０の順番で行われるものとする。
【００３６】
例えば、スケジューラ部＃１内のスケジューリング制御部＃１は、まず入力回線＃１に対応する全ての論理キューＶＯＱについてリクエスト通知の有無を判定し、リクエスト通知が存在し、かつパケットの送出先が未確定の論理キューＶＯＱの中から、ラウンドロビンを用いて一つを選択する。図４に示した例では、入力回線＃１（ｉ＃１）については論理キューＶＯＱ＃１のみに対応するリクエスト通知が存在し、しかもこの論理キューＶＯＱ＃１は未確定状態にあるため、論理キューＶＯＱ＃１が選択される。
【００３７】
次に、スケジューラ部＃１内のスケジューリング制御部＃１は、上述した処理によって選択された論理キューＶＯＱ＃１を確定済みとし、入力回線番号を変えて次の入力回線＃０について同様のスケジューリング処理を実施する。図４に示した例では、入力回線＃０については論理キューＶＯＱ＃０、＃１のそれぞれに対応するリクエスト通知が存在し、この中で論理キューＶＯＱ＃１は確定済みであるため、論理キューＶＯＱ＃０が選択される。
【００３８】
このようにして、スケジューラ部＃１内のスケジューリング制御部＃１は、α（＝２）パケット時間内で、全ての入力回線分のスケジューリング処理を行う。同様にして、スケジューラ部＃０内のスケジューリング制御部＃０においても、αパケット時間内で、全ての入力回線分のスケジューリング処理が行われる。その結果、ある周期Ａにおけるスケジューラ＃０、＃１のスケジューリング結果が以下のように決定される。
【００３９】
0004072315.tif 000002
これらのα個（２個）の各スケジューラ部＃０、＃１の各スケジューリング結果は、全ての入力バッファ部＃０、＃１に対してグラント通知として送られる。入力バッファ部＃０、＃１内の読み出し指示部＃０、＃１は、１パケット時間毎に異なるスケジューラ部＃０、＃１のスケジューリング結果を巡回的に使用し、パケットの送出先として指定された出力回線に対応する論理キューＶＯＱの先頭からパケットを読み出す指示をパケットバッファ＃０、＃１に送る。
【００４０】
図４に示した例では、上述したスケジューリング処理が行われた周期Ａの次の周期Ｂにおいて、最初の１パケット時間（Ｔ＝ａ）では、スケジューラ部＃０のスケジューリング結果が使用される。すなわち、入力バッファ部＃０内の論理キューＶＯＱ＃１の先頭パケット（第４のパケット（４））が出力回線＃１に向けて送出される。
【００４１】
また、周期Ｂに含まれる次の１パケット時間（Ｔ＝ａ＋１）では、スケジューラ部＃１のスケジューリング結果が使用される。すなわち、入力バッファ部＃０内の論理キューＶＯＱ＃０の先頭パケット（第１のパケット（１））が出力回線＃０に向けて送出されるとともに、入力バッファ部＃１内の論理キューＶＯＱ＃１の先頭パケット（第５のパケット（５））が出力回線＃１に向けて送出される。
【００４２】
ここで、各入力バッファ部＃０、＃１から送られるリクエスト通知と、実際に送出されるパケットとの関係に着目すると、１対１になっていないことがわかる。例えば、入力バッファ部＃０に第１のパケット（１）が到着して論理キューＶＯＱ＃０に格納された際にリクエスト通知（１）がスケジューラ部＃０に送られるが、この第１のパケット（１）が実際に出力回線＃０に向けて送出されるのは、周期Ｂに含まれる後半の１パケット時間（Ｔ＝ａ＋１）のタイミングであり、しかもスケジューラ部＃１によるスケジューリング結果に基づいて送出される。これは、リクエスト通知を各スケジューラ部＃０、＃１に分散させたことによる同一論理キューＶＯＱ内でのパケットの追い越しの発生や、ＨＯＬ（Head Of Line）ブロッキング等の影響を回避するために、リクエスト通知とグラント通知との対応を考えず、送られてきたグラント通知に対して常に論理キューＶＯＱの先頭のパケットを読み出すようにしているためである。
【００４３】
具体例２
図５は、負荷分散スケジューリング処理の他の具体例を示す図である。例えば、入力回線数、出力回線数、スケジューラ部３０の数αが全て４の場合に対応したスケジューリング処理の具体例が示されている。また、図５において、ＳＣＨ＃０〜ＳＣＨ＃３は４つのスケジューラ部３０（スケジューラ部＃０〜＃３）のそれぞれを示している。また、「Scheduling  →  Result#0-1」は、スケジューリング処理によって「＃０−１」で特定されるスケジューリング結果が得られたことを示している。
【００４４】
図５に示す具体例では、４つのスケジューラ部＃０〜＃３が独立にスケジューリング処理を行っており、４パケット時間に相当する第１の周期（Ｔ＝０〜３）の最後に４つのスケジューリング結果（Result#0-1〜#3-1）が得られる。これらのスケジューリング結果に基づいて、次の４パケット時間に相当する第２の周期（Ｔ＝４〜７）におけるパケット送出が行われる。
【００４５】
具体的には、第２の周期の最初の１パケット時間（Ｔ＝４）において、スケジューラ部＃０（ＳＣＨ＃０）によるスケジューリング結果「Result#0-1」が用いられる。この結果、以下に示す内容でパケットの送出が実施される。なお、左の項は、パケットが入力される入力回線を示しており、右の項は、スケジューリング結果に基づいてこのパケットがどの出力回線に送出されたかを示している。
【００４６】
・入力回線＃０（ｉ＃０）  →  出力回線＃２（ｏ＃２）
・入力回線＃１（ｉ＃１）  →  出力回線＃０（ｏ＃０）
・入力回線＃２（ｉ＃２）  →  出力回線＃３（ｏ＃３）
・入力回線＃３（ｉ＃３）  →  出力回線＃１（ｏ＃１）
また、第２の周期の次の１パケット時間（Ｔ＝５）において、スケジューラ部＃１（ＳＣＨ＃１）によるスケジューリング結果「Result#1-1」が用いられる。この結果、以下に示す内容でパケットの送出が実施される。
【００４７】
・入力回線＃０（ｉ＃０）  →  出力回線＃２（ｏ＃２）
・入力回線＃１（ｉ＃１）  →  （未送出）
・入力回線＃２（ｉ＃２）  →  出力回線＃０（ｏ＃０）
・入力回線＃３（ｉ＃３）  →  出力回線＃３（ｏ＃３）
第２の周期の次の１パケット時間（Ｔ＝６）において、スケジューラ部＃２（ＳＣＨ＃２）によるスケジューリング結果「Result#2-1」が用いられる。この結果、以下に示す内容でパケットの送出が実施される。
【００４８】
・入力回線＃０（ｉ＃０）  →  （未送出）
・入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
・入力回線＃２（ｉ＃２）  →  出力回線＃０（ｏ＃０）
・入力回線＃３（ｉ＃３）  →  出力回線＃２（ｏ＃２）
第２の周期の最後の１パケット時間（Ｔ＝７）において、スケジューラ部＃３（ＳＣＨ＃３）によるスケジューリング結果「Result#3-1」が用いられる。この結果、以下に示す内容でパケットの送出が実施される。
【００４９】
・入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
・入力回線＃１（ｉ＃１）  →  出力回線＃２（ｏ＃２）
・入力回線＃２（ｉ＃２）  →  出力回線＃１（ｏ＃１）
・入力回線＃３（ｉ＃３）  →  出力回線＃３（ｏ＃３）
このように、４つのスケジューラ部＃０〜＃３のそれぞれが独立にスケジューリング処理を行うことにより、互いに競合する内容のスケジューリング結果が得られても、各スケジューラ部＃０〜＃３によるスケジューリング結果が用いられるタイミングが異なるため、特に不都合は生じない。このため、各スケジューラ部＃０〜＃３間の競合制御を行う接続線等が不要であり、この接続線によって生じる信号の遅延がなくなるため、実装時の制約が大幅に緩和される。また、スケジューラ部は必要な数だけ用意すればよいため無駄な構成がなく、しかも後に追加することも可能であるため、拡張性に富んだパケットスイッチ１００を実現することができる。
【００５０】
なお、上述した説明では、α個のスケジューラ部＃０、…、＃α−１のそれぞれにおいて得られたスケジューリング結果を各入力バッファ部に同時に送り、各入力バッファ部において、１パケット時間毎に異なるスケジューラ部によるスケジューリング結果を巡回的に用いるようにしたが、スケジューラ部からスケジューリング結果を送るタイミングを各スケジューラ部毎に１パケット時間ずらして順番に各入力バッファ部に送るようにしてもよい。
【００５１】
リクエスト通知の分散
ところで、上述したようにα個のスケジューラ部３０を用いて負荷分散スケジューリング処理を行うためには、各入力バッファ部２０から送出するリクエスト通知を全てのスケジューラ部３０に均等に分散させることが望ましい。
【００５２】
次に、入力バッファ部２０からスケジューラ部３０に送るリクエスト通知の分散方法について説明する。
論理キューＶＯＱ毎にリクエスト通知を分散させる場合
図６は、入力バッファ部２０内の論理キューＶＯＱ毎にリクエスト通知を分散させる場合の具体例を示す図である。なお、図６および以下に示す図７〜図９においては、４つの入力バッファ部２０（＃０〜＃３）および４つのスケジューラ部３０（＃０〜＃３）が備わっているものとする。
【００５３】
各入力バッファ部＃０〜＃３内の要求振り分け部＃０〜＃３は、論理キューＶＯＱ毎の振り分けポインタを有しており、入力回線を介してパケットが到着したときに、この振り分けポインタの値が示すスケジューラ部に対してリクエスト通知を送る。図６では入力バッファ部＃０、＃３内の丸付き数字によってポインタ値が示されている。
【００５４】
以下では、入力回線＃０に対応する入力バッファ部＃０内の要求振り分け部＃０に着目して具体的な動作を説明する。なお、初期状態において、入力回線＃０に対応する４つの論理キュー＃０〜＃３の各振り分けポインタの値が０、１、３、１に設定されているものとする。
【００５５】
Ｔ＝０において、送出先として出力回線＃３（ｏ＃３）が指定されたパケット（０＿１）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃３にこのパケットを格納する。また、要求振り分け部＃０は、論理キューＶＯＱ＃３に対応する振り分けポインタの値「１」を参照することにより、この値に対応するスケジューラ部＃１にリクエスト通知を送る。リクエスト通知送出後、論理キューＶＯＱ＃３に対応する振り分けポインタの値が更新されて「２」になる。
【００５６】
Ｔ＝１において、送出先として出力回線＃０（ｏ＃０）が指定されたパケット（０＿２）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃０にこのパケットを格納する。また、要求振り分け部＃０は、論理キューＶＯＱ＃０に対応する振り分けポインタの値「０」を参照することにより、この値に対応するスケジューラ部＃０にリクエスト通知を送る。リクエスト通知送出後、論理キューＶＯＱ＃０に対応する振り分けポインタの値が更新されて「１」になる。
【００５７】
Ｔ＝２において、送出先として出力回線＃３（ｏ＃３）が指定されたパケット（０＿３）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃３にこのパケットを格納する。また、要求振り分け部＃０は、Ｔ＝０において更新された論理キューＶＯＱ＃３の振り分けポインタの値「２」を参照することにより、この値に対応するスケジューラ部＃２にリクエスト通知を送る。リクエスト通知送出後、論理キューＶＯＱ＃３に対応する振り分けポインタの値が更新されて「３」になる。
【００５８】
Ｔ＝４において、送出先として出力回線＃０（ｏ＃０）が指定されたパケット（０＿４）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃０にこのパケットを格納する。また、要求振り分け部＃０は、Ｔ＝１において更新された論理キューＶＯＱ＃０の振り分けポインタの値「１」を参照することにより、この値に対応するスケジューラ部＃１にリクエスト通知を送る。リクエスト通知送出後、論理キューＶＯＱ＃０に対応する振り分けポインタの値が更新されて「２」になる。
【００５９】
このように、各入力バッファ部＃０〜＃３において、一つの論理キューＶＯＱに対応して生成されるリクエスト通知の送出先をα個のスケジューラ部＃０〜＃α−１に均等に分散させることにより、各入力バッファ部＃０〜＃Ｎ−１から送出されるリクエスト通知の送出先をスケジューラ部＃０〜＃α−１のそれぞれに分散させることができる。
【００６０】
入力回線毎にリクエスト通知を分散させる場合
図７は、入力回線毎にリクエスト通知を分散させる場合の具体例を示す図である。
各入力バッファ部＃０〜＃３内の要求振り分け部＃０〜＃３は、全ての論理キューＶＯＱに共通の振り分けポインタを有しており、入力回線を介してパケットが到着したときに、この振り分けポインタが示すスケジューラ部＃０〜＃３に対してリクエスト通知を送る。図７では入力バッファ部＃０、＃３内の丸付き数字によってポインタ値が示されている。
【００６１】
以下では、入力回線＃０に対応する入力バッファ部＃０内の要求振り分け部＃０に着目して具体的な動作を説明する。なお、初期状態において、入力回線＃０に対応する振り分けポインタの値が「０」に設定されているものとする。
Ｔ＝０において、送出先として出力回線＃３（ｏ＃３）が指定されたパケット（０＿１）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃３にこのパケットを格納する。また、要求振り分け部＃０は、共通の振り分けポインタの値「０」を参照することにより、この値に対応するスケジューラ部＃０にリクエスト通知を送る。リクエスト通知送出後、振り分けポインタの値が更新されて「１」になる。
【００６２】
Ｔ＝１において、送出先として出力回線＃０（ｏ＃０）が指定されたパケット（０＿２）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃０にこのパケットを格納する。また、要求振り分け部＃０は、Ｔ＝０において更新された振り分けポインタの値「１」を参照することにより、この値に対応するスケジューラ部＃１にリクエスト通知を送る。リクエスト通知送出後、振り分けポインタの値がさらに更新されて「２」になる。
【００６３】
Ｔ＝２以後についても同様であり、パケットが到着していずれかの論理キューＶＯＱに格納されると、共通の振り分けポインタの値が参照されてリクエスト通知の送出先となるスケジューラ部＃０〜＃３が決定される。
このように、各入力バッファ部＃０〜＃３において、各論理キューＶＯＱに対応して生成されるリクエスト通知の送出先を共通の振り分けポインタを用いてα個のスケジューラ部＃０〜＃α−１に均等に分散させることにより、各入力バッファ部＃０〜＃Ｎ−１から送出されるリクエスト通知の送出先をスケジューラ部＃０〜＃α−１に分散させることができる。
【００６４】
単位時間ごとにリクエスト通知を分散させる場合
図８は、単位時間毎にリクエスト通知を分散させる場合の具体例を示す図である。
各入力バッファ部＃０〜＃３内の要求振り分け部＃０〜＃３は、単位時間Ｔ毎（１パケット時間毎）に更新される振り分けポインタを有しており、入力回線を介してパケットが到着したときに、この振り分けポインタが示すスケジューラ部に対してリクエスト通知を送る。図８では入力バッファ部＃０、＃３内の丸付き数字によってポインタ値が示されている。
【００６５】
以下では、入力回線＃０に対応する入力バッファ部＃０内の要求振り分け部＃０に着目して具体的な動作を説明する。なお、Ｔ＝０に対応して振り分けポインタの値が「０」に設定されているものとする。
Ｔ＝０において、送信先として出力回線＃３（ｏ＃３）が指定されたパケット（０＿１）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃３にこのパケットを格納する。また、要求振り分け部＃０は、Ｔ＝０に対応する振り分けポインタの値「０」に基づいてスケジューラ部＃０にリクエスト通知を送る。
【００６６】
Ｔ＝１において、送出先として出力回線＃０（ｏ＃０）が指定されたパケット（０＿２）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃０にこのパケットを格納する。また、要求振り分け部＃０は、Ｔ＝１に対応する振り分けポインタの値「１」に基づいてスケジューラ部３０＃１にリクエスト通知を送る。
【００６７】
このようにして時間Ｔが経過する毎に振り分けポインタの値が巡回的に更新され、その値に対応するスケジューラ部＃０〜＃３のいずれかにリクエスト通知が送られる。したがって、Ｔ＝３において到着するパケットがない場合には、Ｔ＝３に対応する振り分けポインタの値「３」に基づいてスケジューラ部＃３にリクエスト通知が送られずに、次のＴ＝４において到着するパケット（０＿４）に対応するリクエスト通知は、Ｔ＝４に対応する振り分けポインタの値「０」に基づいてスケジューラ部＃０に送られる。
【００６８】
このように、各入力バッファ部＃０〜＃３において、各論理キューＶＯＱに対応して生成されるリクエスト通知の送出先を、パケットの到着時間Ｔに対応して更新される振り分けポインタを用いてα個のスケジューラ部＃０〜＃α−１に均等に分散させることにより、各入力バッファ部＃０〜＃Ｎ−１から送出されるリクエスト通知の送出先を各スケジューラ部＃０〜＃α−１に分散させることができる。
【００６９】
各スケジューラ部で管理しているリクエスト数を参照してリクエスト通知を分散させる場合
図９は、各スケジューラ部で管理しているリクエスト数を入力バッファ部２０が参照してリクエスト通知を分散させる場合の具体例を示す図である。
【００７０】
各入力バッファ部＃０〜＃３内の要求振り分け部＃０〜＃３は、パケットが到着したときに、このパケットと同じ入力回線および出力回線（論理キューＶＯＱ）の組合せに対応するリクエスト通知がスケジューラ部＃０〜＃３のそれぞれにいくつあるかを参照し、最もリクエスト数が少ないスケジューラ部をこの到着パケットに対応するリクエスト通知の送出先として決定する。図９に示した４つのスケジューラ部＃０〜＃３の右側には、入力回線＃０と論理キューＶＯＱとの組合せに対応するリクエスト数が示されている。以下では、入力バッファ部＃０内の要求振り分け部＃０に着目して具体的な動作を説明する。
【００７１】
Ｔ＝０において、送信先として出力回線＃３（ｏ＃３）が指定されたパケット（０＿１）が到着すると、パケットバッファ＃０は、論理キューＶＯＱ＃３にこのパケットを格納する。また、要求振り分け部＃０は、４つのスケジューラ部＃０〜＃３内の要求数管理部＃０〜＃３が保持している情報を取得することにより、入力回線＃０と送出先の出力回線＃３（論理キューＶＯＱ＃３）が同じリクエスト数がいくつあるかを調べ、このリクエスト数が最も少ないスケジューラ部３０を選択してリクエスト通知を送る。
【００７２】
Ｔ＝１以降についても同様であり、対応するリクエスト通知の数がその時点で最も少ないスケジューラ部＃０〜＃３を選択してリクエスト通知を送出する。
このように、各入力バッファ部＃０〜＃Ｎ−１において、全てのスケジューラ部＃０〜＃α−１で管理しているリクエスト数を取得し、最もリクエスト数が少ないスケジューラ部にリクエスト通知を送ることにより、各入力バッファ部＃０〜＃Ｎ−１から送出されるリクエスト通知をα個のスケジューラ部＃０〜＃α−１に均等に分散させることができる。
【００７３】
リクエスト数の管理機能の分散配備
次に、各スケジューラ部３０のみにおいてリクエスト数を管理するのではなく、スケジューラ部３０と入力バッファ部２０の両方にリクエスト数の管理機能を分散配備した場合のリクエスト振り分け方法について説明する。前提として、各スケジューラ部３０内の要求数管理部３２は、最低限必要な数だけリクエスト数を管理することができる要求管理機能を有しているものとする。また、各入力バッファ部２０内の要求振り分け部２４は、論理キューＶＯＱ毎に各スケジューラ部３０に送出されたリクエスト数を管理する機能（サブリクエストカウンタによって実現する）と、リクエスト未通知数を管理する機能（リクエストカウンタによって実現する）とを有しているものとする。
【００７４】
例えば、各スケジューラ部３０内の要求数管理部３２が、各論理キューＶＯＱ毎に２個のリクエスト通知を管理することができる機能を有するものとすると、入力バッファ部２０内の要求振り分け部２４からいずれかのスケジューラ部３０にリクエスト通知を送出する場合に、対応する論理キューＶＯＱのリクエスト数が２個未満のスケジューラ部３０を選択するようにする。全てのスケジューラ部３０がこの論理キューＶＯＱについて２個のリクエスト通知を有している場合には、入力バッファ部２０は、リクエスト通知の送出は行わずに、この論理キューＶＯＱに対応するリクエストカウンタをインクリメントし、リクエスト数が２未満になったときにリクエスト通知を送出する。
【００７５】
図１０〜図１４は、リクエスト数の管理機能を入力バッファ部２０とスケジューラ部３０に分散配備した場合の具体例を示す図である。これらの図では、説明を簡略化するために、入力回線＃０（ｉ＃０）に対応する入力バッファ部＃０において一つの論理キューＶＯＱ＃ａに着目した場合の具体例が示されている。なお、スケジューラ部３０の数を４とし、スケジューラ部３０側における要求管理数の最大値を２とする。
【００７６】
例えば、図１０に示すように、Ｔ＝ａにおける初期状態として、スケジューラ部＃０（ＳＣＨ＃０）には入力回線＃０、論理キューＶＯＱ＃ａに対応する１個のリクエスト通知が存在し、他のスケジューラ部＃１〜＃３（ＳＣＨ＃１〜ＳＣＨ＃３）にはそれぞれ２個のリクエスト通知が存在するものとする。
【００７７】
この状態において、新たにパケットが到着すると、要求振り分け部＃０は、リクエスト数が２未満であり、かつ最もリクエスト数が少ないスケジューラ部＃０（ＳＣＨ＃０）にリクエスト通知を送るとともに、スケジューラ部＃０に対応するサブリクエストカウンタの値を「２」に更新する。この結果、図１１に示すように、Ｔ＝ａ’において、全てのスケジューラ部＃０〜＃３に２個ずつのリクエスト通知が存在することになる。
【００７８】
次に、Ｔ＝ａ＋１において新たにパケットが到着しても、この時点で全てのスケジューラ部＃０〜＃３に２個ずつのリクエスト通知があるため、要求振り分け部＃０は、新たなリクエスト通知を送出することはせずに、未通知のリクエスト数を管理するために設けられているリクエストカウンタの値をインクリメントする（図１２）。
【００７９】
その後、スケジューラ部＃２から入力バッファ部＃０に対してグラント通知が送られてきて、入力バッファ部＃０内の論理キュー＃ａからパケットが読み出されて出力回線＃ａに送出されると、要求振り分け部＃０は、スケジューラ部＃２に対応するサブリクエストカウンタの値をデクリメントする。この結果、図１３に示すように、Ｔ＝ａ＋１’において、このサブリクエストカウンタの値が「１」に変更される。
【００８０】
次に、要求振り分け部＃０は、リクエストカウンタの値が１以上であり、しかもスケジューラ部＃２に対応するサブリクエストカウンタの値が２未満になったことを検出し、このスケジューラ部＃２に対してリクエスト通知を送る。また、リクエスト通知後（Ｔ＝ａ＋１”）、図１４に示すように、要求振り分け部＃０は、このスケジューラ部＃２に対応するサブリクエストカウンタの値を「２」にインクリメントするとともに、リクエストカウンタの値を「０」にデクリメントする。
【００８１】
このように、各入力バッファ部＃０〜＃３においてリクエスト数の管理を行うことにより、スケジューラ部＃０〜＃３のそれぞれでは少ないリクエスト数を管理するだけでスケジューリング処理を行うことができ、スケジューラ部＃０〜＃３における処理の負担を軽減することができる。
【００８２】
スケジューラ部の冗長構成
次に、必要数以上の数のスケジューラ部３０を備えた場合の冗長構成について説明する。
図１５は、冗長系のスケジューラ部３０を非固定にした場合の具体例を示す図である。例えば、各周期が４パケット時間に対応しており、スケジューラ部３０の数を「５」とした場合の具体例が示されている。
【００８３】
５つのスケジューラ部＃０〜＃４（ＳＣＨ＃０〜ＳＣＨ＃４）が正常に動作している場合には、それぞれにおいて独立にスケジューリング処理が行われ、全てのスケジューラ部＃０〜＃４のスケジューリング結果が巡回的に使用される。スケジューラ部＃０〜＃４のそれぞれは、４パケット時間で１回のスケジューリング処理を行うことが可能であるが、図１５に示した例では、５パケット時間毎に各スケジューラ部＃０〜＃４のスケジューリング結果が使用されることになる。
【００８４】
その後、周期Ｃにおいてスケジューラ部＃１（ＳＣＨ＃１）に障害が発生すると、各入力バッファ部２０では、次の周期Ｄからはこの障害が発生したスケジューラ部＃１によるスケジューリング結果は使用せずに、他の４つのスケジューラ部＃０、＃２〜＃４のスケジューリング結果のみを巡回的に使用する。
【００８５】
また、周期Ｅにおいてスケジューラ部＃１の障害が復旧した場合には、各入力バッファ部２０は、次の周期Ｆからは再び全てのスケジューラ部＃０〜＃４のスケジューリング結果を巡回的に使用する。
図１６は、冗長系のスケジューラ部３０を固定にした場合の動作例を示す図である。例えば、スケジューラ部＃４（ＳＣＨ＃４）は、冗長系（予備系）として備わったものであり、障害等が発生した場合にのみ使用される。
【００８６】
４つのスケジューラ部＃０〜＃３が正常に動作している場合には、それぞれにおいて独立にスケジューリング処理が行われ、４つのスケジューラ部＃０〜＃３のそれぞれのスケジューリング結果が巡回的に利移用される。この場合の動作は、冗長系のスケジューラ部＃４を有しない場合の動作と同じである。
【００８７】
次に、周期Ｃにおいてスケジューラ部＃１（ＳＣＨ＃１）に障害が発生すると、このスケジューラ部＃１の代わりに冗長系のスケジューラ部＃４が使用される。同じ機能を有するスケジューラ部＃１とスケジューラ部＃４とを入れ替えただけであるため、障害発生前と同様のスケジューリング処理を継続することができる。
【００８８】
また、周期Ｅにおいてスケジューラ部＃１の障害が復旧した場合には、再び冗長系のスケジューラ部＃４が待機状態になり、スケジューラ部＃１が使用されてスケジューリング処理が継続される。
このように、１つのスケジューラ部３０がスケジューリング処理に要するパケット時間数よりも多くのスケジューラ部３０を備えた冗長構成を採用することにより、障害が発生した場合であっても、この冗長分（図１５、図１６に示す例では１個）のスケジューラ部３０に代わりの処理を行わせることが可能になるため、遅延を来すことなくスケジューリング処理を継続することができる。
【００８９】
スケジューラ部の拡張性
次に、本実施形態のパケットスイッチ１００に収容される入力回線の数や出力回線の数に応じてスケジューラ部３０の数を変更する場合の拡張性について説明する。なお、以下では説明を簡略化するために、最大のスイッチ規模を４×４（入力回線数×出力回線数）とし、そのときのスケジューラ部３０の数を４、各スケジューラ部３０がスケジューリング処理に要する時間を４パケット時間（＝４Ｔｐ）とする。また、このようなスケジューラ部３０を用いてスイッチ規模が２×２のパケットスイッチのスケジューリング処理を行う場合を考えるものとする。
【００９０】
図１７は、最大規模４×４のパケットスイッチを構成した場合のスケジューリング処理の概要を示す図である。例えば、４個のスケジューラ部の中の一つに着目し、ラウンドロビンを用いてスケジューリング処理を行う場合の具体例が示されている。
【００９１】
最初の周期＃０において、入力回線＃０、＃１、＃２、＃３の順にスケジューリング処理が行われる。スケジューラ部＃０〜＃３のそれぞれがスケジューリング処理に必要な時間は４パケット時間（１τ）であるため、４パケット時間毎に各スケジューラ部によって１つのスケジューリング結果が得られる。図１７に示した例では、周期＃０において、以下に示すスケジューリング結果が得られる。
【００９２】
・入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
・入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
・入力回線＃２（ｉ＃２）  →  出力回線＃２（ｏ＃２）
・入力回線＃３（ｉ＃３）  →  出力回線＃３（ｏ＃３）
また、次の周期＃１において、入力回線＃１、＃２、＃３、＃０の順にスケジューリング処理が行われ、以下に示すスケジューリング結果が得られる。
【００９３】
・入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
・入力回線＃２（ｉ＃２）  →  出力回線＃３（ｏ＃３）
・入力回線＃３（ｉ＃３）  →  出力回線＃２（ｏ＃２）
・入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
周期＃２以降についても同様であり、スケジューリング処理の対象となる入力回線の処理順番を巡回させながら、各入力回線に対応する出力回線が各周期毎に決定される。
【００９４】
このように、パケットスイッチ全体では、４つのスケジューラ部＃０〜＃３によって４パケット時間毎に４つのスケジューリング結果が得られる。平均すると、１パケット時間毎に１つのスケジューリング結果が得られることになり、スループットの劣化がないことがわかる。
【００９５】
図１８は、２×２の小規模のパケットスイッチを構成した場合のスケジューリング処理の概要を示す図である。図１８には、図１７に示した最大構成時と同じスケジューラ部を２つ用いた場合の具体例が示されている。
最初の周期＃０において、入力回線＃０、＃１の順にスケジューリング処理が行われる。２つのスケジューラ部＃０、＃１のそれぞれは、４本の入力回線のそれぞれに対応する出力回線を決定する処理能力を有するが、図１８に示す例では、処理対象となる入力回線は２本であるため、４パケット時間（１τ）毎にこれら２本の入力回線に対するスケジューリング処理が実施され、以下に示すスケジューリング結果が得られる。
【００９６】
・入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
・入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
また、周期＃１において、入力回線＃１、＃０の順にスケジューリング処理が行われ、以下に示すスケジューリング結果が得られる。
【００９７】
・入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
・入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
周期＃２以降についても同様であり、スケジューリング処理の対象となる入力回線の処理順番を巡回させながら、各入力回線に対応する出力回線が各周期毎に決定される。
【００９８】
このように、入力回線数や出力回線数を減少させたことに伴ってスケジューラ部の数を減らしただけではスループットの低下を招くことになる。すなわち、２つのスケジューラ部＃０、＃１のそれぞれにおいてスケジューリング処理を行うために必要な時間は４パケット時間であることに変わりはなく、パケットスイッチ＃０、＃１の全体では、４パケット時間毎に２つのスケジューリング結果が得られることになる。したがって、４パケット時間の内の半分については、スケジューラ部＃０、＃１から入力バッファ部＃０、＃１のそれぞれに対してパケットの送出指示を行うことができず、スループットが半分に低下する。
【００９９】
図１９は、スループットの低下を防止した小規模のパケットスイッチにおけるスケジューリング処理の概要を示す図である。２×２のパケットスイッチにおいて２個のスケジューラ部によってスループットを低下させることなくスケジューリング処理を行うためには、図１９に示すように、スケジューラ部＃０、＃１のそれぞれにおけるスケジューリング処理の所要時間を２パケット時間に設定する。処理対象となる入力回線数や出力回線数のそれぞれが半分になっているため、この所要時間の変更は可能である。
【０１００】
最初の周期＃０の前半において、入力回線＃０、＃１の順にスケジューリング処理が行われ、以下に示すスケジューリング結果が得られる。
・入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
・入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
また、この周期＃０の後半において、入力回線＃１、＃０の順にスケジューリング処理が行われ、以下に示すスケジューリング結果が得られる。
【０１０１】
・入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
・入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
周期＃１以降についても同様であり、前半と後半のそれぞれにおいて別々にスケジューリング処理が行われる。これにより、パケットスイッチ全体では、２パケット時間毎に２つのスケジューリング結果が得られる。平均すると、１パケット時間毎に１つのスケジューリング結果が得られることになり、スループットの劣化がないことがわかる。
【０１０２】
図２０は、スループットの低下を防止した小規模のパケットスイッチにおけるスケジューリング処理の概要を示す図である。例えば、２個のスケジューラ部のそれれぞのスケジューリング時間は４パケット時間のままで、スループットを低下させることなくスケジューリング処理を行う場合の動作手順が示されている。
【０１０３】
具体的には、スケジューリング時間を変えない代わりに、各周期の中で複数のスケジューリング結果を導く方法が採用されている。すなわち、２×２の小規模スイッチの場合には、入力回線＃２、＃３と出力回線＃２、＃３に対するスケジューリング処理は行われないので、これらの未使用回線分の処理時間を利用して、１回のスケジューリング周期（１τ、４パケット時間）の中で２個のスケジューリング結果を導き出す。
【０１０４】
図２０において、下線が付された入力回線＃０、＃１（ｉ＃０、ｉ＃１）は、それぞれ入力回線＃２、＃３の変わりにスケジューリング処理が行われることを示している。また、出力回線＃０、＃１（ｏ＃０、ｏ＃１）は、スケジューリング結果としてパケットの初出先として出力回線＃２、＃３が得られた場合に、それぞれを入力回線＃０、＃１に置き換えたものであることを示している。
【０１０５】
最初の周期＃０において、入力回線＃０、＃１、＃２、＃３の順にスケジューリング処理が行われる。スケジューラ部＃０、＃１のそれぞれがスケジューリング処理に必要な時間は４パケット時間（１τ）であるため、４パケット時間毎に各スケジューラ部によって４本の入力回線＃０〜＃３に対応する１つのスケジューリング結果が得られる。ところで、上述したように、入力回線＃２、＃３は実際に存在せず、これらの代わりに入力回線＃０、＃１についてスケジューリング処理が行われるため、結果的に、スケジューラ部＃０、＃１のそれぞれは、４パケット時間毎に２つのスケジューリング結果を導き出すことになる。図２０に示した例では、周期＃０において、以下に示すスケジューリング結果が得られる。
【０１０６】
結果１：入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
結果１：入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
結果２：入力回線＃０（ｉ＃０）  →  出力回線＃０（ｏ＃０）
結果２：入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
また、次の周期＃１において、入力回線＃１、＃２、＃３、＃０の順にスケジューリング処理が行われ、以下に示すスケジューリング結果が得られる。
【０１０７】
結果１：入力回線＃１（ｉ＃１）  →  出力回線＃１（ｏ＃１）
結果２：入力回線＃０（ｉ＃０）  →  出力回線＃１（ｏ＃１）
結果２：入力回線＃１（ｉ＃１）  →  出力回線＃０（ｏ＃０）
結果１：入力回線＃０（ｉ＃０）  →  出力回線＃１（ｏ＃１）
このように、２つのスケジューラ部＃０、＃１のそれぞれは、４パケット時間の１周期の中で２つのスケジューリング結果を導き出しており、パケットスイッチ全体では、４パケット時間毎に２つのスケジューラ部＃０、＃１によって合計で４つのスケジューリング結果を得ることができる。平均すると、１パケット時間毎に１つのスケジューリング結果が得られることになり、スループットの劣化がないことがわかる。
【０１０８】
このように、本実施形態のパケットスイッチ１００では、入力回線数や出力回線数に応じたスケジューラ部の数を設定するとともに、各スケジューラ部におけるスケジューリング処理の所要時間を変更することにより、スループットの低下を招くことなく、最適なスケジューリング処理を行うことができる。したがって、無駄な構成を低減するとともに拡張性に優れたパケットスイッチを実現することができる。
【０１０９】
次に、各スケジューラ部によるスケジューリング所要時間に対応する１周期の中で、複数のスケジューリング結果を導き出すスケジューリング処理の具体例を説明する。
図２１は、１周期の中で複数のスケジューリング結果を導き出すスケジューリング処理の具体例を示す図であり、図２０に示した周期＃０におけるスケジューリング処理の内容が模式的に示されている。スケジューラ部＃０、＃１のそれぞれは、入力回線と論理キューＶＯＱの組み合わせに対応するリクエスト通知の有無を管理している。例えば、入力回線＃０については、出力回線＃０と出力回線＃１の両方に対するリクエスト通知が存在していることがわかる。この例では、２×２の小規模スイッチを想定しているため、入力回線＃２、＃３および出力回線＃２、＃３は使用されていない。このため、入力回線＃０、＃１のいずれかから出力回線＃２、＃３のいずれかにパケットを送出する旨の内容のリクエスト通知は存在しない。
【０１１０】
各スケジューラ部は、１周期の中で複数のスケジューリング結果を導き出すために、未使用回線に対応するスケジューリング処理を実施する。具体的には、入力回線＃２に対応する処理を行うブロックに入力回線＃０のリクエスト通知の内容をセットする。このとき、入力回線＃０と出力回線＃０とを組み合わせたリクエスト通知に対しては、入力回線＃２と出力回線＃２の組み合わせに変更した情報が代わりにセットされる。入力回線＃０と出力回線＃１とを組み合わせたリクエスト通知に対しては、入力回線＃２と出力回線＃３の組み合わせに変更した情報が代わりにセットされる。以下に、組合せを変更する場合の具体的な関係を示す。
【０１１１】
ｉ＃２−ｏ＃０  要求有無情報  ←  ｉ＃０−ｏ＃２  要求有無情報
ｉ＃２−ｏ＃１  要求有無情報  ←  ｉ＃０−ｏ＃３  要求有無情報
ｉ＃２−ｏ＃２  要求有無情報  ←  ｉ＃０−ｏ＃０  要求有無情報
ｉ＃２−ｏ＃３  要求有無情報  ←  ｉ＃０−ｏ＃１  要求有無情報
ｉ＃３−ｏ＃０  要求有無情報  ←  ｉ＃１−ｏ＃２  要求有無情報
ｉ＃３−ｏ＃１  要求有無情報  ←  ｉ＃１−ｏ＃３  要求有無情報
ｉ＃３−ｏ＃２  要求有無情報  ←  ｉ＃１−ｏ＃０  要求有無情報
ｉ＃３−ｏ＃３  要求有無情報  ←  ｉ＃１−ｏ＃１  要求有無情報
ここで、ｉ＃２等は入力回線番号を、ｏ＃０等は出力回線番号を、要求有無情報はリクエスト要求の有無を示す情報をそれぞれ示している。
【０１１２】
次に、図２１を参照しながら具体的なスケジューリング処理の手順を説明する。
第１のスケジューリング対象は入力回線＃０であり、これに対するスケジューリング処理は、未確定でしかもリクエスト通知が存在する出力回線の中から一つを選択することにより行われる。図２１に示した例では、出力回線＃０が選択される。このようにして選択された出力回線＃０は、確定済みとなって未確定情報に反映され、次のスケジューリング対象に対するスケジューリング処理に受け渡される。
【０１１３】
第２のスケジューリング対象は入力回線＃１であり、これに対するスケジューリング処理も、未確定でしかもリクエスト通知が存在する出力回線の中から一つを選択することにより行われる。図２１に示した例では、既に出力回線＃０が確定済みとなっており、出力回線＃１が選択される。このようにして選択された出力回線＃１は、確定済みとなって未確定情報に反映され、次のスケジューリング対象に対するスケジューリング処理に受け渡される。
【０１１４】
第３のスケジューリング対象は入力回線＃２である。上述したように、この入力回線＃２に対応して設定されている要求有無情報は、入力回線＃０に対応するものであるため、実際には入力回線＃０についてスケジューリング処理を行うことになる。入力回線＃２に対するスケジューリング処理も、未確定でしかもリクエスト通知が存在する出力回線の中から一つを選択することにより行われる。図２１に示した例では、この段階で、未確定でしかもリクエスト通知が存在する出力回線は、出力回線＃２と出力回線＃３であり、ここでは出力回線＃２が選択される。このようにして選択された出力回線＃２は、確定済みとなって未確定情報に反映され、次のスケジューリング対象に対するスケジューリング処理に反映される。
【０１１５】
なお、出力回線＃２は実際には未使用であり、このような未使用回線に対するスケジューリング処理においては、その結果選択された出力回線番号をそのまま入力バッファ部２０側に通知するのではなく、読み替え処理を行った後の出力回線番号が通知される。すなわち、入力回線＃２は入力回線＃０に、出力回線＃２は出力回線＃０に読み替えて通知が行われる。以下に、読み替え処理が行われる入力回線と出力回線の関係を示す。
【０１１６】
ｉ＃２−ｏ＃２  →  ｉ＃０−ｏ＃０
ｉ＃２−ｏ＃３  →  ｉ＃０−ｏ＃１
ｉ＃３−ｏ＃２  →  ｉ＃１−ｏ＃０
ｉ＃３−ｏ＃３  →  ｉ＃１−ｏ＃１
同様にして、第４のスケジューリング対象である入力回線＃３についてもスケジューリング処理が行われ、その結果出力回線＃３が選択される。入力回線＃３、出力回線＃３はともに未使用回線であるため、実際には、それぞれが入力回線＃１、出力回線＃１に読み替えられて入力バッファ部２０に通知される。
【０１１７】
このように、未使用回線を利用してスケジューリング処理を行うことにより、スケジューリング処理の１周期の中で複数の結果を得ることができる。
（付記１）Ｎ本の入力回線のそれぞれに対応して設けられ、対応する前記入力回線を介して入力されるパケットを格納するＮ個の入力バッファ部と、
それぞれが独立したスケジューリング処理を行うことにより、前記Ｎ個の入力バッファ部のそれぞれに格納された前記パケットの送出先となるＭ本の出力回線のいずれかを決定するα個のスケジューラ部と、
前記Ｎ個の入力バッファ部のそれぞれから出力される前記パケットを、前記スケジューラ部によって決定された送出先となる前記出力回線に出力するスイッチ部と、
を備え、前記Ｎ個の入力バッファ部において前記α個のスケジューラ部によるスケジューリング処理の結果を巡回的に使用することを特徴とするパケットスイッチ。
（付記２）付記１において、
前記スケジューラ部によるスケジューリング処理は、前記Ｎ個の入力バッファ部から送られてくるスケジューリング要求通知に対応して行われており、
前記Ｎ個の入力バッファ部のそれぞれは、前記スケジューリング要求通知の送出先となる前記スケジューラ部を分散させることを特徴とするパケットスイッチ。
（付記３）付記２において、
前記入力バッファ部は、前記Ｍ本の出力回線のそれぞれを送出先とするパケットを格納するＭ個のキューを有しており、これらＭ個のキューのそれぞれ毎に前記スケジューリング要求通知の送出先となる前記スケジューラ部を巡回させることを特徴とするパケットスイッチ。
（付記４）付記２において、
前記入力バッファ部は、前記入力回線毎に前記スケジューリング要求通知の送出先となる前記スケジューラ部を巡回させることを特徴とするパケットスイッチ。
（付記５）付記２において、
前記入力バッファ部は、単位時間毎に前記スケジューリング要求通知の送出先となる前記スケジューラ部を巡回させることを特徴とするパケットスイッチ。
（付記６）付記２において、
前記入力バッファ部は、前記α個のスケジューラ部のそれぞれについて未処理の前記スケジューリング要求通知の数を調べ、この数が少ない前記スケジューラ部に次の前記スケジューリング要求通知を送ることを特徴とするパケットスイッチ。
（付記７）付記２において、
前記入力バッファ部は、前記α個のスケジューラ部のそれぞれに送出した前記スケジューリング要求通知の数を管理しており、この数が所定数に達した前記スケジューラ部に対する前記スケジューリング要求通知の送出動作を、この数が前記所定数より少なくなるまで遅らせることを特徴とするパケットスイッチ。
（付記８）付記１〜７のいずれかにおいて、
前記スケジューラ部が前記スケジューリング処理に要する時間が、前記パケットの最小送出間隔のＬ倍であるときに、
前記スケジューラ部の数αは、前記倍数Ｌ以上の値に設定されていることを特徴とするパケットスイッチ。
（付記９）付記８において、
Ｌ−αが１以上に設定されており、
前記Ｎ個の入力バッファ部において前記α個のスケジューラ部の全てのスケジューリング処理の結果を巡回的に使用することを特徴とするパケットスイッチ。
（付記１０）付記８において、
Ｌ−αが１以上に設定されており、
Ｌ−α個の前記スケジューラ部を冗長系として用いるとともに、この冗長系以外の前記スケジューラ部に障害が発生したときに、代わりに冗長系の前記スケジューラ部を用いることを特徴とするパケットスイッチ。
（付記１１）付記１〜１０のいずれかにおいて、
前記入力回線の数Ｎと前記出力回線の数Ｍに応じて、前記スケジューラ部の数αおよび前記スケジューリング処理の時間を可変に設定することを特徴とするパケットスイッチ。
（付記１２）付記１〜１０のいずれかにおいて、
前記スケジューラ部は、未使用回線を含む前記スケジューリング処理を行っており、実際に使用している前記入力回線および前記出力回線と前記未使用回線との間の読み替え処理を行うことにより、１回の前記スケジューリング処理によって複数のスケジューリング処理結果を得ることを特徴とするパケットスイッチ。
【０１１８】
【発明の効果】
上述したように、本発明によれば、複数のスケジューラ部は互いに独立してスケジューリング処理を行っているため、これらの間の競合制御等を行う必要がなく、このための信号線による信号の遅延等の問題もないことから、実装時の制約が大幅に緩和される。また、スケジューラ部は必要な数だけ用意すればよいため無駄な構成がなく、しかも後に追加することも可能であるため、拡張性に富んだパケットスイッチを実現することができる。
【図面の簡単な説明】
【図１】一実施形態のパケットスイッチの構成図である。
【図２】入力バッファ部の詳細構成を示す図である。
【図３】スケジューラ部の詳細構成を示す図である。
【図４】負荷分散スケジューリング処理の具体例を示す図である。
【図５】負荷分散スケジューリング処理の他の具体例を示す図である。
【図６】論理キュー毎にリクエスト通知を分散させる場合の具体例を示す図である。
【図７】入力回線毎にリクエスト通知を分散させる場合の具体例を示す図である。
【図８】単位時間毎にリクエスト通知を分散させる場合の具体例を示す図である。
【図９】各スケジューラ部で管理しているリクエスト数を入力バッファ部が参照してリクエスト通知を分散させる場合の具体例を示す図である。
【図１０】リクエスト数の管理機能を入力バッファ部とスケジューラ部に分散配備した場合の具体例を示す図である。
【図１１】リクエスト数の管理機能を入力バッファ部とスケジューラ部に分散配備した場合の具体例を示す図である。
【図１２】リクエスト数の管理機能を入力バッファ部とスケジューラ部に分散配備した場合の具体例を示す図である。
【図１３】リクエスト数の管理機能を入力バッファ部とスケジューラ部に分散配備した場合の具体例を示す図である。
【図１４】リクエスト数の管理機能を入力バッファ部とスケジューラ部に分散配備した場合の具体例を示す図である。
【図１５】冗長系のスケジューラ部を非固定にした場合の具体例を示す図である。
【図１６】冗長系のスケジューラ部を固定にした場合の具体例を示す図である。
【図１７】最大規模４×４のパケットスイッチを構成した場合のスケジューリング処理の概要を示す図である。
【図１８】２×２の小規模のパケットスイッチを構成した場合のスケジューリング処理の概要を示す図である。
【図１９】スループットの低下を防止した小規模のパケットスイッチにおけるスケジューリング処理の概要を示す図である。
【図２０】スループットの低下を防止した小規模のパケットスイッチにおけるスケジューリング処理の概要を示す図である。
【図２１】１周期の中で複数のスケジューリング結果を導き出すスケジューリング処理の具体例を示す図である。
【図２２】スケジューリング機能を分散して配備した従来のパケットスイッチの構成図である。
【図２３】スケジューリング機能を集中して配備した従来のパケットスイッチの構成図である。
【符号の説明】
１０  スイッチ部（ＳＷ）
２０  入力バッファ部
２２  パケットバッファ
２４  要求振り分け部
２６  読み出し指示部
３０  スケジューラ部
３２  要求数管理部
３４  スケジューリング制御部
１００  パケットスイッチ
【図１】
0004072315.tif 000003
【図２】
0004072315.tif 000004
【図３】
0004072315.tif 000005
【図４】
0004072315.tif 000006
【図５】
0004072315.tif 000007
【図６】
0004072315.tif 000008
【図７】
0004072315.tif 000009
【図８】
0004072315.tif 000010
【図９】
0004072315.tif 000011
【図１０】
0004072315.tif 000012
【図１１】
0004072315.tif 000013
【図１２】
0004072315.tif 000014
【図１３】
0004072315.tif 000015
【図１４】
0004072315.tif 000016
【図１５】
0004072315.tif 000017
【図１６】
0004072315.tif 000018
【図１７】
0004072315.tif 000019
【図１８】
0004072315.tif 000020
【図１９】
0004072315.tif 000021
【図２０】
0004072315.tif 000022
【図２１】
0004072315.tif 000023
【図２２】
0004072315.tif 000024
【図２３】
0004072315.tif 000025