(57)【要約】【課題】  スイッチファブリックの特定の宛先が混雑している輻輳状態では、高優先度のデータを低遅延または高スループットで通過させ、また特定の宛先が混雑していない非輻輳状態では優先度によらずスイッチの交換帯域を利用しつくす。【解決手段】  宛先毎に2個以上の優先度キューを持つ複数個の送信元ノードと、全入力に対し宛先毎に均等に出力を行うスイッチと、前記スイッチからデータを受信する複数個の宛先ノードにより構成するスイッチファブリックにおいて、送信元ノードが管理するスイッチの宛先毎の受信バッファ空き容量が、設定した輻輳閾値以下となったら当該宛先が輻輳しているとみなし、当該宛先に対し前記優先度キューからのデータ出力を優先度に応じて予め設定した帯域まで制限し、また前記宛先毎の受信バッファ空き容量が設定した輻輳解除閾値以上となったら当該宛先の輻輳が解除されたとみなし、前記の優先度に応じた帯域制限を解除する。【選択図】  図1
2008166888.tif 000002
【特許請求の範囲】
【請求項１】
宛先毎に2個以上の優先度別出力キューを持つ複数個の送信元ノードと、前記複数個の送信ノードから投入されたデータを、その宛先毎に均等に配信するスイッチと、前記スイッチからデータを受信する複数個の宛先ノードにより構成するスイッチファブリックにおける優先度帯域制御方法であって、
各送信元ノードは、
各々が管理するスイッチの宛先毎の受信バッファ空き容量が、設定した輻輳閾値以下となったら当該宛先が輻輳しているとみなし、当該宛先に対し、前記優先度別出力キューからのデータ出力を優先度に応じて予め設定した帯域まで制限し、
また、前記宛先毎の受信バッファ空き容量が設定した輻輳解除閾値以上となったら当該宛先の輻輳が解除されたとみなし、前記の優先度に応じた帯域制限を解除することを特徴とするスイッチの優先度帯域制御方法。
【請求項２】
宛先毎に2個以上の優先度別出力キューを持つ複数個の送信元ノードと、前記複数個の送信ノードから分割してそれぞれ投入されたデータを、その宛先毎に均等に配信する複数個のスイッチと、前記スイッチからデータを受信する複数個の宛先ノードとを持ち、全ての前記送信元ノードと全ての前記宛先ノードが、前記複数個のスイッチ全てに対し接続を持つスイッチファブリックにおける優先度帯域制御方法であって、
各送信元ノードは、
各々が管理するスイッチの宛先毎の受信バッファ空き容量が、設定した輻輳閾値以下となったら当該宛先が輻輳しているとみなし、当該宛先に対し、前記優先度別出力キューからのデータ出力を優先度に応じて予め設定した帯域まで制限し、
また、前記宛先毎の受信バッファ空き容量が設定した輻輳解除閾値以上となったら当該宛先の輻輳が解除されたとみなし、前記の優先度に応じた帯域制限を解除することを特徴とするスイッチの優先度帯域制御方法。
【請求項３】
請求項１に記載の優先度帯域制御方法において、ある送信元ノードからのデータが複数の宛先へ配信すべきマルチキャストデータである場合、当該宛先のうち少なくとも一つが輻輳状態にあれば、当該マルチキャストの全ての宛先に対し、前記優先度別出力キューからのデータ出力を優先度に応じて、予め設定した帯域まで制限することを特徴とするスイッチの優先度帯域制御方法。
【請求項４】
請求項１に記載の優先度帯域制御方法において、送信元ノードが管理するスイッチの宛先毎の受信バッファ空き容量を複数の宛先で共有する方法及びスイッチシステム。
【請求項５】
請求項１に記載の優先度帯域制御方法において、前記優先度別出力キューからのデータ出力を優先度に応じて予め設定した帯域まで制限している時に、送信元ノードから可変長データを固定長データに分割し、帯域制限にかからない量ずつだけ固定長データを出力することを特徴とするスイッチの優先度帯域制御方法。
【請求項６】
請求項１に記載の優先度帯域制御方法において、前記優先度別出力キューからのデータ出力を優先度に応じて予め設定した帯域まで制限している時に、送信元ノードから可変長データの先頭の取り出しに成功したら、スイッチの当該宛先の受信バッファ空き容量がある限り、可変長データを固定長データに分割し、帯域制限に拠らずデータを出力することを特徴とするスイッチの優先度帯域制御方法。
【請求項７】
請求項１に記載の優先度帯域制御方法において、ある送信元からある宛先への経路毎に複数個のスイッチデバイスでスイッチステージを構成し、送信元で管理するスイッチの宛先毎の受信バッファ空き容量は、送信元ノードに最も近いステージのスイッチの宛先毎に管理することを特徴とするスイッチの優先度帯域制御方法。    
【請求項８】
宛先毎に2個以上の優先度別出力キューを持つ複数個の送信元ノードと、
前記複数個の送信ノードから投入されたデータを、その宛先毎に均等に配信するスイッチと、
前記スイッチからデータを受信する複数個の宛先ノードにより構成するスイッチファブリック、及び、
前記スイッチファブリックの優先度帯域制御の有効化と無効化を、前記宛先ノードの輻輳状態を示す情報により切り替える優先度帯域制御手段を含むスイッチシステム。
【請求項９】
宛先毎に2個以上の優先度別出力キューを持つ複数個の送信元ノードと、
前記複数個の送信ノードから投入されたデータを、その宛先毎に均等に配信するスイッチと、前記スイッチからデータを受信する複数個の宛先ノードにより構成するスイッチファブリックにおける優先度帯域制御方法であって、
送信元に最も近いスイッチデバイスの受信バッファ空き容量の情報のみにより、優先度帯域制御の有効化と無効化を切り替えることを特徴とするスイッチの優先度帯域制御方法。
【請求項１０】
宛先毎に2個以上の優先度別出力キューを持つ複数個の送信元ノードと、
前記複数個の送信ノードから投入されたデータを、その宛先毎に均等に配信するスイッチと、前記スイッチからデータを受信する複数個の宛先ノードにより構成するスイッチファブリックにおいて、
優先度帯域制御を有効化した場合には、高優先度のデータの通過率を低優先度のデータの通過率より向上させ、
優先度帯域制御を無効化した場合には、優先度によらず一定のデータ通過率を維持することを特徴とするスイッチの優先度帯域制御方法。
【請求項１１】
宛先毎に2個以上の優先度別出力キューを持つ複数個の送信元ノードと、前記複数個の送信ノードから投入されたデータを、その宛先毎に均等に配信するスイッチと、前記スイッチからデータを受信する複数個の宛先ノードにより構成するスイッチファブリックにおける優先度帯域制御方法であって、
優先度帯域制御を有効化した場合には、高優先度のデータの通過遅延を低優先度のデータの通過遅延より小さくし、
優先度帯域制御を無効化した場合には、優先度によらず一定のデータ通過遅延を維持することを特徴とするスイッチの優先度帯域制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルータ、サーバ、ストレージ装置などにおいて、装置内部に有する複数の機能ブロックを動的に相互に接続するスイッチ技術に関する。特に、独立動作する複数のスイッチを利用し、データに付加された優先度情報により優先度帯域制御を実現するための技術に関する。
【背景技術】
【０００２】
【特許文献１】特開２００２−２４７０８０
【特許文献２】ＵＳ２００６０１０４２９８（Ａ１）
【０００３】
ルータなどのネットワーク転送装置やサーバ装置、複数のディスクアレイを接続するストレージ装置などでは、装置内部の機能ブロック間でデータ交換を行うためにスイッチファブリックが利用される。スイッチファブリックの交換帯域には限りがあるため、複数の入力データが同一宛先に集中する場合、優先度に応じたデータ通過を実現することが望まれている。すなわち、高優先度のデータを低遅延または高スループットで通過させることが望まれる。
【０００４】
一般に、ルータやスイッチと呼ばれるネットワーク転送装置では、ネットワークから、パケットまたはフレームと呼ばれるデータを受信すると当該データのヘッダ情報を利用して装置内における優先度を決定し、装置内での優先度情報をデータに付加する。例えば、音声データや映像データ、特定の経路を通過するデータ等を高優先度とし、それ以外のデータを低優先度としたりする。そして、付加した優先度情報を利用して、装置内のスイッチファブリックにおける当該データの扱いを変えることで優先度制御を実現する。
【０００５】
一般に、スイッチファブリックにおける優先度制御方法は、次の二通りに分類することができる。一つ目は、スイッチファブリックの送信元ノードにおいて、優先度による帯域制御機能を設ける方法である。この方法によれば、スイッチデバイスに対してデータを送信できる状態であっても優先度が低ければ、ある閾値条件を満たしていなければ出力を禁止する。つまり、スイッチファブリックへのデータ入力に対して優先度毎に出力制限を設けることで、高優先度データの低遅延化または高スループット化を実現できる。この技術の具体例として、特開２００２−２４７０８０が挙げられる。
【０００６】
二つ目は、スイッチファブリック内のスイッチデバイスに優先データ選択出力機能を設ける方法である。この方法によれば、スイッチデバイスにおいて、可変長のパケット単位、または、パケットを構成する固定長のセル単位で宛先毎にデータの出力調停を行う。優先度の高いデータを優先して選択出力することで、高優先度データの低遅延化または高スループット化を実現できる。
【０００７】
しかしながら、これらの従来手法には問題点がある。まず、一つ目の方法では、優先度によって利用可能な帯域を常に制限しているため、優先度の低いデータだけしか存在しない場合、スイッチファブリックがすいている非輻輳の状態でも低優先度のデータ出力が制限されてしまう。その結果として、スイッチファブリックの交換帯域を利用しきれない問題点がある。
【０００８】
また、スイッチファブリックが輻輳した場合に、どこで輻輳したかという情報をスイッチが送信側ノードへコマンドとして送信し、帯域制御を行う方法がＵＳ２００６０１０４２９８（Ａ１）に述べられているが、この場合、スイッチに特殊なコマンドを生成する仕組みが必要となる。また、コマンドが送信側ノードへ到着するまでにはある程度の時間がかかるため、即応性にやや欠ける。
【０００９】
また、二つ目の方法では、送信元ノードからスイッチデバイスに送信された低優先度データの一部がスイッチデバイス内に滞留しやすくなり、この現象が問題を引き起こしうる。例えば、スイッチデバイス内に優先度毎に独立したデータの一次保持領域を持たない場合、同一送信元からの後続の高優先度データが、先行の低優先度データによって進行を妨げられる問題が発生する。この問題を避けるためには、同一送信元毎に優先度毎に独立したデータの一次保持領域が必要であるが、これは優先度数に正比例してハードウェア量が増加するため、ハードウェアコストを上昇させてしまい、やはり問題が残る。
【００１０】
また、前記二つ目の方法では、目的とする交換容量の1／Ｋの交換容量のスイッチをＫ面分用意し、前記Ｋ面のスイッチ全てに対して、全ての送信元ノードと全ての宛先ノードとを接続し、入力データを各スイッチ面へ分散させ、並列動作させる分散型スイッチで可変長データを交換する場合においては問題が顕著である。一般に、ハードウェア構成を簡易にするために、スイッチファブリック内では可変長データを複数の固定長データに区切って送信し、宛先で元の可変長データに組み立てなおす操作が行われる。
【００１１】
ここで、スイッチデバイスに優先度データ選択出力機能があると、Ｋ面の中のいくつかのスイッチで高優先度データと低優先度データの衝突が発生したとき、低優先度のデータがスイッチデバイス内に残ってしまう。一方で、衝突の発生しなかったスイッチでは、低優先度のデータがそのまま通過するため、結果として、可変長データの一部だけがスイッチに滞留してしまう現象が発生する。この状況が続くと、送信元ノードは空いているスイッチ面を利用してどんどんデータを送信するため、後続の低優先度データが、先行の低優先度データを追い越す現象となる。特に、スイッチ面数が多い場合や、ノード数が多い場合には、この問題の影響が大きい。宛先ノードでは、元の可変長データを再現するために、それを構成する全ての固定長データの待ち合わせが必要であるが、前記のスイッチでのデータ滞留が頻発する状況では、滞留しているデータの待ち合わせを行うための論理やメモリを巨大化せざるを得なくなり、コスト的な問題を引き起こす。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
スイッチファブリックの特定の宛先が混雑している輻輳状態において、高優先度のデータを低遅延または高スループットで通過させることが課題である。同時に、スイッチファブリックの特定の宛先が混雑していない非輻輳状態において、優先度によらずスイッチの交換帯域を利用しつくすことが課題である。
【課題を解決するための手段】
【００１３】
本発明の代表的実施例に従えば、宛先毎に2個以上の優先度別出力キューを持つ複数個の送信元ノードと、全入力に対し宛先毎に均等に出力を行うスイッチと、前記スイッチからデータを受信する複数個の宛先ノードにより構成するスイッチファブリックにおいて、送信元ノードが管理するスイッチの宛先毎の受信バッファ空き容量が、設定した輻輳閾値以下となったら当該宛先が輻輳しているとみなし、当該宛先に対し、前記優先度別出力キューからのデータ出力を優先度に応じて予め設定した帯域まで制限し、また、前記宛先毎の受信バッファ空き容量が設定した輻輳解除閾値以上となったら当該宛先の輻輳が解除されたとみなし、前記の優先度に応じた帯域制限を解除する。
【発明の効果】
【００１４】
本発明を利用することにより、スイッチファブリックの特定の宛先が混雑している輻輳状態において、高優先度のデータを低遅延または高スループットで通過させることができる。同時に、スイッチファブリックの特定の宛先が混雑していない非輻輳状態において、優先度によらずスイッチの交換帯域を利用しつくすことができる。また、可能な限り小規模のハードウェア資源で、前記の優先度帯域制御の仕組みを提供できる。
【発明を実施するための最良の形態】
【００１５】
以下、より詳細な内容を添付図面に基づいて実施例で説明する。
【実施例１】
【００１６】
本発明における分散型スイッチ構成の一実施例を４ポートの小規模スイッチファブリックとして図２に示す。スイッチファブリックは、送信元ノード１００−０〜３、データ交換を行うスイッチ２００−１〜２、宛先ノード３００−０〜３により構成する。ここで、スイッチ２００は、優先度制御を行わず、全入力に対し宛先毎に均等に出力を行う非常にシンプルなスイッチとする。尚、ここでは、２面の分散型スイッチ２００を前提としているが、１面だけのスイッチ２００でも構わない。また、３面以上の分散型スイッチ２００でも構わない。
【００１７】
送信元ノード１００は、宛先毎及び優先度毎の仮想出力キュー（ＶＯＱ：Ｖｉｒｔｕａｌ  Ｏｕｔｐｕｔ  Ｑｕｅｕｅ）を持つ。ここでは、優先度は２クラスとし、高優先度ＱｏＳ１のＶＯＱ１１０〜１１３−Ａと低優先度ＱｏＳ０のＶＯＱ１１０〜１１３−Ｂを持つ。前記ＶＯＱ１１０〜１１３−Ａ、Ｂは優先度によらず、宛先毎に独立したクレジットをクレジットテーブル１２０に持つ。ここで、クレジットとは、スイッチ２００が送信元毎及び宛先毎に持つ受信バッファの空き容量を意味する。クレジットがある前記ＶＯＱ１１０〜１１３−Ａ、Ｂはデータをスイッチ２００へ送信することができる。
【００１８】
ここで、図３を利用して、スイッチファブリックの一般的なクレジット制御に関して説明する。図３は、送信元ノード１００−０が、宛先ノード３００−１へデータ４００を送信する例である。送信元ノード１００−０は、状態１において、スイッチ２００の自送信元用の宛先ノード３００−１の空きバッファ領域、すなわち、クレジットが残っているか調べる。クレジットが残っていれば、データ４００をスイッチ２００へ送信し、当該クレジットを減らし状態２へ移行する。次にスイッチ２００は、宛先ノード３００−１のクレジットが残っているか調べる。クレジットが残っていれば、データ４００を宛先ノード３００−１へ送信し、宛先ノード３００−１用のクレジットを減らす。更に、スイッチ２００では送信元１００−０用のバッファ領域が再び空くため、送信元ノード１００−０へ回復用のクレジット５００を返却する（状態３）。
【００１９】
以上のように、送信元１００は、スイッチ２００用の宛先のクレジットが残っている限り、当該宛先へのデータ送信が可能である。クレジットは、データがスイッチ２００を通過するたびに、スイッチ２００が当該データ送信元へ回復クレジットを返却することにより回復する。尚、スイッチ２００には、送信元毎に、このデータ送信からクレジット回復までにかかる時間（ＲＴＴ：Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）分以上のバッファ領域が必要であり、送信元１００は前記のバッファ容量に相当する分のクレジットを持つ。データが順調に流れている場合、送信元１００のクレジットは前記ＲＴＴ分消費された状態が続く。
【００２０】
また、図４を利用して、スイッチファブリックで輻輳が発生する状況に関して説明する。図４は、全ての送信元ノード１００−０〜３が、同一の宛先ノード３００−１へデータ４００−０〜３を送信する例である。送信元ノード１００−０〜３は、状態１において、スイッチ２００の自送信元用の宛先ノード３００−１の空きバッファ領域、すなわち、クレジットが残っているか調べる。クレジットが残っていれば、データ４００−０〜３をスイッチ２００へ送信し、当該クレジットを減らし状態２へ移行する。次にスイッチ２００は、宛先ノード３００−１のクレジットが残っているか調べる。クレジットが残っていれば、データ４００−０〜３のうち一つを選択し宛先ノード３００−１へ送信し、宛先ノード３００−１用のクレジットを減らす。この例では、送信元１００−３のデータ４００−３が選択されたため、スイッチ２００では送信元１００−３用のバッファ領域が再び空くため、送信元ノード１００−３へ回復用のクレジット５００を返却する（状態３）。
【００２１】
図４の状態が続くと、各送信元１００へは回復クレジット返却が滞るようになるため、各送信元はクレジット不足に陥り、データが送信できない状態が頻発し、スイッチファブリックの当該宛先は輻輳状態となる。以上、一般的なクレジット制御に関する説明を終える。
【００２２】
ここで、図１を用いて、本発明のスイッチファブリックにおける優先度制御方法に関して説明する。図１の状態１３０、状態１４０は、ともに、図２のＶＯＱのうち、あるひとつの宛先用の優先度毎のＶＯＱを示している。また、状態１３０は優先度帯域制御を無効化している状態、状態１４０は優先度帯域制御を有効化している状態を表現している。また、優先度帯域制御の有効化の有無に関わらず、複数の優先度のＶＯＱにデータがあれば、高優先度であるＶＯＱの出力を優先する。尚、ここでは、説明を簡単にするために、高優先度（ＱｏＳ１）ＶＯＱ１１９Ａと低優先度（ＱｏＳ０）ＶＯＱ１１９Ｂの二つだけとしている。
【００２３】
状態１３０では、優先度によってＶＯＱ１１９Ａ、１１９Ｂのデータ出力帯域を制限しない。このため、状態１３０では、ＶＯＱ１１９ＡとＶＯＱ１１９Ｂいずれのデータも、帯域を制限することなく出力可能である。図２のスイッチ２００において、宛先が輻輳していない場合においては、優先度によらずスイッチファブリックの交換帯域を利用しきることができるため、この状態１３０が望ましい。しかしながら、ある宛先が輻輳している場合、例えば、図２において、送信元０からは常に低優先度データを、送信元１からは常に高優先度データを宛先０へ送信した場合、スイッチ２００が全入力に対し宛先毎に均等にデータ出力するため、宛先０から観測すると、高優先度と低優先度のデータがスイッチ２００の交換帯域を均等に利用してしまう。このため、高優先度のデータを低遅延または高スループットで通過させることができなくなってしまう問題がある。
【００２４】
状態１４０では、優先度によってＶＯＱ１１９Ａ、１１９Ｂのデータ出力帯域を制限する。具体的には、ＶＯＱ１１９Ａのデータ出力帯域は制限せず、ＶＯＱ１１９Ｂのデータ出力帯域を制限する。より一般的には、最高優先度のＶＯＱのデータ出力帯域は制限せず、その他の低優先度のＶＯＱのデータ出力帯域を制限する。
【００２５】
図２のスイッチ２００において、宛先が輻輳している場合においては、前記宛先には高優先度のデータがスイッチファブリックの交換帯域を多く利用することができるため、この状態１４０が望ましい。注意すべき点は、図１の状態１４０を常に保つと、背景技術で説明したように、優先度の低いデータだけしか存在しない場合、ある宛先が非輻輳の状態でも低優先度のデータ出力が制限されてしまう。その結果、低優先度のデータだけが存在する場合、スイッチファブリックの交換帯域を利用しきれないという問題点がある。
【００２６】
そこで、本発明では、スイッチファブリックのある宛先が輻輳状態にあるか、または、輻輳状態が解除されたかを、当該宛先の残クレジット量を利用して検出し、優先度帯域制御の有効化と無効化を切り替える。この方法に関して図５〜図８を用いて説明する。
【００２７】
まず、図４で説明したように、各送信元ノード１００のクレジットテーブル１２０において宛先毎の残クレジットを観測することにより、輻輳の発生している宛先を検出することができる。図５は、クレジットテーブル１２０のある宛先の残クレジット量をグラフとして示した図である。残クレジット量に対し、ＲＴＴ閾値６２０、輻輳閾値６３０、輻輳解除閾値６４０、優先度毎の送出禁止閾値６０Ｘ（本例では、４レベルの優先度ＱｏＳＸを例として示しており、Ｘ＝０〜３である）を設ける。図５では、縦方向を残クレジット量とし、１クレジットをひとつの四角で表現し、上ほど値が大きいものとして以下の説明を行う。
【００２８】
ＲＴＴ閾値６２０とは、送信元ノード１００がスイッチ２００へデータ送信し、スイッチ２００から送信元ノード１００へ回復クレジットが届くまでにかかる時間に送信可能なデータ量に相当するクレジット数である。ただ一つの送信元ノード１００からある宛先ノード３００へのデータ送信が続く場合、残クレジット量は、ＲＴＴ閾値６２０と一致する。
【００２９】
輻輳閾値６３０とは、図５では、ＲＴＴ閾値６２０以下の値である。複数の送信元ノード１００から同時にある宛先ノード３００へのデータ送信が続く場合、残クレジット量は、輻輳閾値６３０を下回るため、輻輳が発生したとみなすことができる。従来技術のスイッチで輻輳検出を行う場合、スイッチに特殊なコマンドを生成する仕組みが必要であったり、また、コマンドが送信側ノードへ到着するまでにはある程度の時間がかかり即応性にややかけたりする問題があった。本発明によれば、送信元ノードで残クレジット参照によって輻輳状態の検出を行うため、スイッチには前記の特殊コマンドの実装は不要であるし、また、応答性も前記に比べて速いという利点がある。
【００３０】
輻輳が発生した場合、優先度毎に送出禁止閾値６０Ｘ（Ｘ＝０〜３）の設定を有効化する。各優先度のデータは、残クレジットが送出禁止閾値６０Ｘ（Ｘ＝０〜３）以上残っている場合に限りデータを出力することができる。Ｘの値が大きいほど優先度が高いとしたとき、Ｘの値が大きいほど送出禁止閾値６０Ｘは小さくする。少なくとも、最高優先度（ＱｏＳ３）の場合は、クレジットを全て使い切るまで送信可能であるべきであり、図５では残クレジット量を示すグラフの最下辺と一致させる。
【００３１】
輻輳解除閾値６４０とは、輻輳状態が解除されたとみなすための閾値である。当該宛先へのデータ転送が途切れ、スイッチ２００からの回復クレジット返却が続くと、残クレジット量は、輻輳解除閾値６４０を上回る。このとき、優先度毎の送出禁止閾値６０Ｘ（Ｘ＝０〜３）の設定を無効化する。一般に、輻輳解除閾値６４０は、優先度毎の送出禁止閾値６０Ｘ（Ｘ＝０〜３）のいずれよりも大きい値である。
【００３２】
次に、図５を簡易化し、優先度を２レベルだけとした図６と、図７のフローチャートによって、本発明の優先度帯域制御方法を説明する。図６の状態１０は、ある宛先のクレジットの全てが未使用の状態、つまり残クレジット量が８個の状態である。当該宛先に対しデータ送信を続けると、状態１１に示すように使用中クレジットが増加し、残クレジットが減少して行く。しかしここまでは、優先度帯域制限は無効であり、上記宛先へ送信すべきデータが来る毎に、図７のフローチャートでステップ７００→７０１→７０３と進む。ステップ７０４で当該宛先の残クレジットはまだ輻輳閾値６００を下回らないので、７１０に進んで完了する。つまり、毎回のデータがスイッチ２００へ送出され、それに対応して当該宛先のクレジットが削減される。
【００３３】
当該宛先へのデータ送信が続いている最中に、他の送信元も同一の宛先へデータ送信を行い始めると、当該送信元へのクレジット返却が滞るようになるため、図６の状態１２に示すように、残クレジット量が輻輳閾値６３０を下回る。この状態をトリガとして、当該宛先の優先度帯域制御を有効化する。図７のフローチャートでは、ステップ７０４から７０５へと進み、優先度帯域制限が有効化される。この制御状態の変更以降のデータについては、ステップ７０１から７０２に進むので、ステップ７０２の判定に応じてデータ送信可否が決まる。具体的には、その時の残クレジット量をデータの優先度に対して設定された送出禁止閾値と比較し、それ以上であればデータを送信してクレジットを削減する。つまり、当該送信元の当該宛先へのデータ送信には、優先度に応じた制限が加わる。図６の例では、低優先度のデータは、当該宛先の残クレジット量が、低優先度送出禁止閾値６００を越えるまで、つまり図６の状態１３になるまで、データ送信が禁止される。一方、高優先度のデータは、送出禁止閾値は最低値（残クレジットがEMPTY）に設定されているので、クレジットがある限り毎回送信される。
【００３４】
当該送信元のデータ出力が途切れ、当該宛先の回復クレジットが当該送信元に返却され続けると、輻輳解除閾値６４０を上回り、図６の状態１４となる。この状態をトリガとして、当該宛先の優先度帯域制御を無効化する。図８はこの輻輳回復過程での制御状態の変更動作を示すフローチャートである。ステップ８００で回復クレジットがスイッチ２００から返ると、ステップ８０１で当該宛先のクレジットが増加する。その結果、ステップ８０２の判定で当該宛先の残クレジット量が輻輳解除閾値６４０に達すると、ステップ８０３に進み、当該宛先の優先度帯域制御を無効化する。
【００３５】
ここで、本発明の優先度帯域制御の無効化と有効化を切り替えながら優先度帯域制御を行うための送信元ノード１００におけるＶＯＱ選択論理の一実施例を図９に示す。
【００３６】
送信元ノード１００では、優先度と宛先数の積で示される数のＶＯＱを持つ。各ＶＯＱからの出力調停要求を優先度毎にＶＯＱ調停器１７０〜１７３が集め、ラウンドロビン等のアルゴリズムに基づいてそれぞれ候補となるＶＯＱを選択する。
【００３７】
次に、ＱｏＳ調停器１８０により、選択された候補ＶＯＱの間で最も優先度の高いものを選択する。選択後に、残クレジットチェック器１９２により、選択されたＶＯＱの宛先の残クレジットをチェックする。残クレジットはクレジットテーブル１２０から読み出され、当該宛先の優先度帯域制御が有効化されていれば、優先度によって残クレジットを優先度送出禁止閾値で関連付けられる量だけ減らした値でチェックを行う。当該宛先の優先度帯域制御が無効化されていれば、クレジットテーブル１２０の読出し値をそのまま利用してチェックを行う。残クレジットチェック器１９２において、クレジットが残っていると判定されれば、選択されたＶＯＱは出力調停に勝利したことになり、クレジットが残っている限りデータ出力を行える。クレジットはスイッチから回復クレジットが返却されることで回復する（１５０）。
【００３８】
勝利ＶＯＱのデータを出力する毎に、クレジットテーブル１２０の当該宛先の残クレジットを削減し（１５１）、優先度毎のＶＯＱ調停器１７０〜１７３では、選択アルゴリズムの結果修正、例えば、ラウンドロビン制御であれば優先選択出力番号を一つずらすこと、を行う（１５２）。また、勝利ＶＯＱの読出しポインタを修正して、次のデータ読み出しに備える（１５３）。
【００３９】
ここで、これまでに説明を行った、送信元ノード１００のＶＯＱからのデータ出力と残クレジットの関係を図１０に示す。横軸は残クレジット量、縦軸はデータ出力の可否（上なら可、下なら不可）であり、横軸上には、図５で示した輻輳閾値６３０、輻輳解除閾値６４０、輻輳が発生した場合の優先度毎に送出禁止閾値６０Ｘ（優先度が４クラスの場合、Ｘ＝０〜３）の位置関係を示している。
【００４０】
非輻輳の場合、データの優先度に拠らず、残クレジットが１以上ある限り、ＶＯＱからデータ出力が可能である。すなわち、図１０中のＱｏＳ３と同じ制御状態となる。一方、一度、残クレジットが輻輳閾値６３０を下回ると、優先度帯域制御が有効化され、優先度毎の送出禁止閾値６００、６０１、６０２、６０３が有効となる。この状態では、データの優先度によって、図１０中のＱｏＳ０〜ＱｏＳ３の制御状態になる。すなわち、優先度Ｘの場合、残クレジットが優先度毎の送出禁止閾値６０Ｘを以上であればＶＯＱからデータ出力が可能であるが、下回ればデータ出力を抑止する。また、輻輳状態に突入した宛先に関しては、当該宛先のデータ出力が一旦終わり、残クレジットが輻輳解除閾値６４０を上回るまでは、優先度帯域制御を有効化したままである。
【００４１】
優先度毎の帯域優先度制御を無効化した場合、及び、有効化した場合、それぞれについて、スイッチファブリックの全入力の比率（１００％は隙間無く連続して送信元ノード１００へデータ入力することを示す）と交換帯域の一般的な関係を図１１に示す。尚、宛先は、ランダムであり、特定の宛先への偏りがある場合もあるものとする。
【００４２】
優先度帯域制御を無効化している場合は、入力レートが１００％に近づくにつれて、実効交換帯域、すなわちデータの通過率は減少していく。一方で、優先度帯域制御を有効化している場合は、複数の優先度が混じったデータが入力されていれば、優先度が高いデータの場合、入力レートが１００％に近づいても、ほぼ１００％に近い実効交換帯域、すなわちデータの通過率を維持できる。これは、言い換えると、優先度の低いデータの実効交換帯域を減少させることにより、優先度の高いデータの実効交換帯域を向上させている。優先度帯域制御の有効化、無効化の切り替え方は、図５〜図８及び図１０を利用して先に説明したとおりである。
【００４３】
また、優先度によるスイッチファブリックの通過遅延の様子を図１２に示す。優先度帯域制御を無効化している場合は、入力レートが１００％に近づくにつれて、遅延は増加していく。一方で、優先度帯域制御を有効化している場合は、複数の優先度が混じったデータが入力されていれば、優先度が高いデータの場合、入力レートが１００％に近づいても、ほぼ一定の通過遅延を維持できる。これは、言い換えると、優先度の低いデータの通過遅延を増加させることにより、優先度の高いデータの通過遅延を低下させている。
【００４４】
以上、本発明による優先度帯域制御の無効化と有効化を切り替えながら優先度帯域制御を行う方法に関して詳細な説明を行った。本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例２】
【００４５】
実施例１では、送信元ノード１００からの送信は、単一の宛先ノード３００へのユニキャストを想定していたが、複数の宛先ノード３００へのマルチキャストの場合でも同様の優先度帯域制御が可能であり、実施例２として説明する。
【００４６】
マルチキャストをサポートする場合、実施例１の送信元ノード１００のユニキャスト用ＶＯＱに加え、扱う優先度の数だけ、マルチキャスト専用ＶＯＱを用意する。
【００４７】
基本的な処理は、実施例１と同様であるが、送信元ノード１００でマルチキャストデータを選択する場合は、図２のクレジットテーブル１２０では、対応する全ての宛先の残クレジットを参照し、残クレジットがある場合にのみデータを出力することができる。この時、送信元ノード１００はマルチキャストであるという情報、すなわち、複数の宛先情報を付加してデータをスイッチ２００へ送信する。スイッチ２００は前記マルチキャスト情報に基づき、指定された全ての宛先ノード３００へデータをコピーして送信する。
【００４８】
尚、優先度帯域制御が、対応する宛先のうち一つでも有効化されている場合は、全ての宛先に対して優先度帯域制御が有効化されているものとみなして処理を行う。
【００４９】
本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例３】
【００５０】
実施例１、２では、図２において送信元ノード１００が管理するスイッチ２００の残クレジットを宛先毎に管理している。実施例３では、実施例１、２を前提とし、前記残クレジットを、複数の宛先で共有する方法に関して説明する。尚、本実施例のメリットは、ポート数の多いスイッチ２００を利用しても、比較的小規模の論理で優先度帯域制御が実現できる点である。
【００５１】
スイッチ２００の内部に、送信元ノード１００毎に各宛先に対して独立な受信バッファを設けると、ある宛先が輻輳しても、他の宛先はその影響を全く受けずにデータ送信が可能になる。しかしながら、スイッチ２００を構成するスイッチデバイスのチップ面積がポート数の二乗で巨大化してしまう問題がある。スイッチの巨大化を避ける方法として、スイッチ２００の受信バッファを共用する方法が挙げられる。
【００５２】
スイッチ２００の受信バッファを共有する方法には、一つ目として、複数の送信元ノード１００間でスイッチ２００の受信バッファを共有する方法、二つ目として、送信元ノード１００毎に複数の宛先間でスイッチ２００の受信バッファを共有する方法がある。一つ目の方法は、他の送信元ノード１００の送信状況によって受信バッファの空き容量、すなわち、残クレジット量が変わってしまい、制御が複雑化するため望ましくない。よって、ここでは、二つ目の方法に関して、スイッチファブリックの優先度帯域制御方法を説明する。
【００５３】
送信元ノード１００毎に複数の宛先間でスイッチ２００の受信バッファを共有する方法の場合、図２のクレジットテーブル１２０におけるクレジット管理は、個別の宛先毎ではなく、スイッチ２００の受信バッファを共有している宛先間で一つずつ管理する。例えば、スイッチ２００が８ポートのスイッチであり、出口ポートを全て独立に管理する場合は、クレジットテーブル１２０は、宛先毎、合計八つの残クレジットを管理する。一方、８ポートのスイッチ２００で、出口ポート０〜１、２〜３、４〜５、６〜７で受信バッファを共有する場合、クレジットテーブル１２０は、宛先０〜１で一つ、宛先２〜３で一つ、宛先４〜５で一つ、宛先６〜７で一つ、合計四つの残クレジットを管理する。
【００５４】
ある宛先の残クレジットが不足し、図５の輻輳閾値６３０を下回る場合、当該宛先及び、当該宛先と残クレジットを共有する他の宛先も一緒に優先度帯域制御の有効化を行う。優先度帯域制御の無効化は、当該宛先と残クレジットを共有する全ての宛先行きのデータの送信が途切れて、残クレジットが輻輳解除閾値６４０を上回る場合に行う。
【００５５】
本実施例は、図２において、特に、多ポートのスイッチ２００を利用する場合に適用しやすい。多ポートのスイッチであるほど、物理的な制約から、送信元及び宛先毎に完全に独立した受信バッファを搭載しにくくなるため、先に述べた、送信元ノード１００毎に複数の宛先間でスイッチ２００の受信バッファを共有する方法が有効であるためである。送信元ノード１００でのクレジットテーブル１２０の制御も、宛先を集約した分、制御論理が単純化され制御が容易になる。１ポートの輻輳の影響が、宛先を共有する他の出力ポートへも輻輳の影響を与え、スループットが低下するが、共有するポート数をある程度少なくすることによって、前記の悪影響は最小限に抑えることも可能である。
【００５６】
本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例４】
【００５７】
近年のルータやスイッチ（Ｌ２スイッチ、Ｌ３スイッチ等）などの多くのネットワーク転送装置では、転送データとして可変長のイーサネットフレーム（以後、パケットと呼ぶ）が利用されている。そして、スイッチファブリックを持つネットワーク転送装置は、装置内でパケットを固定長のセルに分割して転送することが多い。すなわち、スイッチファブリックへの入力データが、複数のデータで構成されているように見える。そこで、実施例４として、実施例１から実施例３までに関して、扱うデータがパケットである場合についての本発明の適用方法を示す。
【００５８】
実施例４では、図２の送信元ノード１００のＶＯＱは、データとしてパケットを管理する。そして、パケットをＶＯＱから読出し、スイッチ２００に送信する際に、１個以上のセルに分割する。クレジットテーブル１２０の残クレジットは、スイッチ２００に実際に送出したセルの数に応じて減少させる。
【００５９】
ここで、あるパケットをセルに分割してスイッチ２００に転送している最中に、当該宛先の残クレジットが図５の輻輳閾値６３０を下回ることがある。下回った時点で、実施例１から実施例３までで述べたように、当該宛先の優先度帯域制御を有効化するが、当該パケットは、まだ途中までしかセル化していない。この場合、当該パケットから生成されるセルに限って、ＱｏＳＸ送出禁止閾値６０Ｘ（Ｘ＝０〜３）の制限を受けずにそのまま送出してもよい。
【００６０】
また、優先度帯域制御が有効化されている間、ＶＯＱからの取り出しに成功したパケットは、ＱｏＳＸ送出禁止閾値６０Ｘ（Ｘ＝０〜３）の制限を受けずに全てをセル化して送出してもよい。もしくは、優先度帯域制御が有効化されている間、ＶＯＱからの取り出しに成功したパケットは、ＱｏＳＸ送出禁止閾値６０Ｘ（Ｘ＝０〜３）の制限を受けている分のセルは、一旦、送出を停止し、ＱｏＳＸ送出禁止閾値６０Ｘ（Ｘ＝０〜３）の制限を受けない分ずつだけ送出してもよい。
【００６１】
本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【実施例５】
【００６２】
実施例１から実施例４では、スイッチファブリックのスイッチ２００は、単段のスイッチを前提として記載した。しかしながら、扱うポート数を大きく増加させるためには、単一スイッチデバイスではなく、複数のスイッチデバイスでクロス網やベネス網など、３ステージ以上の多段結合網を構成する必要がある。この場合でも、実施例１から４に示した方法と同様の優先度帯域制御を実現でき、このための修正点を実施例５として説明する。
【００６３】
実施例５において、送信元ノード１００が扱うスイッチ２００の残クレジットは、送信元ノード１００に最も近いステージに位置するスイッチデバイスの空きバッファ容量を示す。２ステージ目以降のスイッチデバイスの空きバッファ容量は、送信元ノード１００では管理する必要がなく、一般にＮステージ目（Ｎは２以上の整数）のスイッチデバイスの残クレジットは、（Ｎ−１）ステージのスイッチデバイスが管理する。優先度待機制御の有効化、無効化、及びそれぞれの状態における送信元ノード１００における帯域制御方法も実施例１をそのまま実施すればよい。すなわち、複数ステージのスイッチデバイスで多段結合網を構成するスイッチシステムにて、その多段結合網のうち最も送信ノードに近いスイッチデバイスの宛先毎の受信バッファ空き容量として残クレジット量を管理し、その情報のみによって優先度帯域制御の有効化と無効化を切り換える。
【００６４】
本説明は、実施の一形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。
【産業上の利用可能性】
【００６５】
本発明による優先度帯域制御方法は、大容量回線を利用したデータ交換が必要なシステムで利用することができる。例えば、ルータやスイッチに代表されるネットワーク装置内のスイッチファブリックや、サーバやストレージ機器の装置内のスイッチファブリック等での利用が考えられる。
【図面の簡単な説明】
【００６６】
【図１】本発明の優先度帯域制御方法を示すブロック図。
【図２】本発明を適用するスイッチファブリックのブロック図。
【図３】従来のクレジット制御方法の例を示すブロック図。
【図４】従来のクレジット制御方法の例を示すブロック図。
【図５】本発明の残クレジット量による優先度帯域制御方法を示す説明図。
【図６】本発明の残クレジット量による優先度帯域制御方法を示す説明図。
【図７】本発明の優先度帯域制御の有効化方法及び帯域制限方法を示すフローチャート。
【図８】本発明の優先度帯域制御の無効化方法を示すフローチャート。
【図９】本発明の優先度帯域制御を実施する論理の一実施形態を示すブロック図。
【図１０】本発明の優先度帯域制御が有効化されている場合のデータ出力状況を示すグラフ。
【図１１】本発明の優先度帯域制御が有効化されている場合の交換帯域状況を示すグラフ。
【図１２】本発明の優先度帯域制御が有効化されている場合の通過遅延状況を示すグラフ。
【符号の説明】
【００６７】
１００：送信元ノード
２００：スイッチ
３００：宛先ノード
１１０：ＶＯＱ
１２０：クレジットテーブル
１３０：優先度帯域制御無効化状態
１４０：優先度帯域制御有効化状態
６００−６０３：ＱｏＳ０−３データ送出禁止閾値
６２０：ラウンドトリップタイム閾値
６３０：輻輳閾値
６４０：輻輳解除閾値。
【図１】
2008166888.tif 000003
【図２】
2008166888.tif 000004
【図３】
2008166888.tif 000005
【図４】
2008166888.tif 000006
【図５】
2008166888.tif 000007
【図６】
2008166888.tif 000008
【図７】
2008166888.tif 000009
【図８】
2008166888.tif 000010
【図９】
2008166888.tif 000011
【図１０】
2008166888.tif 000012
【図１１】
2008166888.tif 000013
【図１２】
2008166888.tif 000014