(57)【要約】【課題】輻輳原因の通信ポートを推定してフロー制御を行いバッファ量と遅延の増大を防ぐ通信装置技術を提供すること。【解決手段】複数の入力側通信ポートと、複数の出力側通信ポートと、複数の出力キューと、コントローラを備え、入力側通信ポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させるステップＳ１と、初期停止の有効性を判定するステップＳ２と、効果があると判定された場合にフレーム送信停止を解除するか否かの再開判定を行うステップＳ３と、効果がないと判定された場合に停止ポート以外の中から次に送信停止を行うポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を追加停止させるステップＳ４と、再開すると判定された場合に、全停止ポートに停止した優先度を指定してフレーム送信を再開させるステップＳ５とを有する。【選択図】図１
2011019040.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力側通信ポートと、複数の出力側通信ポートと、複数の出力キューと、フローを制御するコントローラを備え、前記入力側通信ポートから受信したフレームを宛先通信ポートと優先度に応じて前記出力キューにバッファし、優先度が高い出力キューにバッファされたフレームから先に読み出して出力側通信ポートから送信する通信装置であって、
前記入力側通信ポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる初期停止を行う初期停止手段と、
該初期停止手段によって行った初期停止の有効性を判定する停止効果判定手段と、
該停止効果判定手段の判定により初期停止に効果があると判定された場合に、フレーム送信停止を解除するか否かの再開判定を行う再開判定手段と、
該停止効果判定手段の判定により初期停止に効果がないと判定された場合に、停止ポートではない入力側通信ポートの中から次に送信停止を行うポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる追加停止を行う追加停止手段と、
前記再開判定手段で再開すると判定された場合に、全停止ポートに停止した優先度を指定して送信再開メッセージを送信してフレーム送信を再開させる全停止ポート再開手段と、
を有することを特徴とする通信装置。
【請求項２】
複数の入力側通信ポートと、複数の出力側通信ポートと、複数の出力キューと、フローを制御するコントローラを備え、前記入力側通信ポートから受信したフレームを宛先通信ポートと優先度に応じて前記出力キューにバッファし、優先度が高い出力キューにバッファされたフレームから先に読み出して出力側通信ポートから送信する通信装置におけるコンピュータ制御によるフロー制御方法であって、
前記入力側通信ポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる初期停止を行う初期停止ステップＳ１と、
該初期停止ステップによって行った初期停止の有効性を判定する停止効果判定ステップＳ２と、
該停止効果判定ステップの判定により初期停止に効果があると判定された場合に、フレーム送信停止を解除するか否かの再開判定を行う再開判定ステップＳ３と、
該停止効果判定ステップの判定により初期停止に効果がないと判定された場合に、停止ポートではない入力側通信ポートの中から次に送信停止を行うポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる追加停止を行う追加停止ステップＳ４と、
前記再開判定ステップＳ３で再開すると判定された場合に、全停止ポートに停止した優先度を指定して送信再開メッセージを送信してフレーム送信を再開させる全停止ポート再開ステップＳ５と、
を有することを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項３】
請求項２記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、前記出力キューごとのバッファ量（キュー長）を測定する手段と、入力側通信ポートから入力するフレームの流量を測定する手段を備え、
前記初期停止ステップＳ１は、予め決められた平常時待機時間ｔ０の間待機するステップＳ１ａと、各入力側通信ポートの通信量を測定し、平常時待機時間ｔ０ごとに流量の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂと、各出力キューのキュー長ｑｎを測定するステップＳ１ｃと、そしてキュー長ｑｎと予め決められた停止閾値ｘ０の大小判定を行うステップＳ１ｄと、キュー長ｑｎが停止閾値ｘ０未満であった場合にステップＳ１ａに戻り、キュー長ｑｎが停止閾値ｘ０以上であった場合には、入力側通信ポートの中で流量が最大のポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、流量が最大のポートからのフレーム送信を停止させるステップＳ１ｅとからなり、
前記停止効果判定ステップＳ２は、当該出力キューのキュー長ｑｍを記憶するステップＳ２ａと、予め決められた再判定時間ｔ１待機するステップＳ２ｂと、当該出力キューのキュー長ｑｎを測定するステップＳ２ｃと、前記キュー長ｑｎと前記キュー長ｑｍの大小判定を行い、前記キュー長ｑｎが前記キュー長ｑｍ以上の場合には前記追加停止ステップＳ４へ移行し、前記キュー長ｑｎが前記キュー長ｑｍ未満の場合には前記再開判定ステップＳ３へ移行するステップＳ２ｄとからなり、
前記再開判定ステップＳ３は、前記キュー長ｑｎと前記キュー長ｑｍの差分Δの記憶を初期化するステップＳ３ａと、前記キュー長ｑｎと予め決められた再開閾値ｘ１の大小判定を行い、前記キュー長ｑｎが再開閾値ｘ１より小さい場合に前記全停止ポート再開ステップＳ５に移行し、前記キュー長ｑｎが再開閾値ｘ１以上であれば、予めフレーム送信を停止させる停止時間を指定していた場合には再度停止指示を行い前記停止効果判定ステップＳ２に移行するステップＳ３ｂとからなり、
前記追加停止ステップＳ４は、前記キュー長ｑｎと予め決められた追加停止閾値ｘ２の大小判定を行うステップＳ４ａと、前記キュー長ｑｎが追加停止閾値ｘ２より小さければキュー長差分（ｑｎ−ｑｍ）をΔとして記憶するステップＳ４ｂと、停止ポートから停止した優先度を指定して送信再開メッセージを送信するステップＳ４ｃと、入力側通信ポートの中で流量が前回停止ポートの次に大きいポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｄと、前記ステップＳ４ａにおいて前記キュー長ｑｎが追加停止閾値ｘ２以上の場合、ステップＳ４ａでキュー長ｑｎが追加停止閾値ｘ２以上との判定が連続２回目以降であるか否かの判定を行うステップＳ４ｅと、ステップＳ４ｅによる判定の結果、１回目であれば、停止ポートから停止した優先度を指定して送信再開メッセージを送信するステップＳ４ｆと、Δが０でなくかつ最小である入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信しフレーム送信を停止させるステップＳ４ｇと、ステップＳ４ｅによる判定の結果、２回目以降であれば、停止ポートではなく、Δが０でなくかつ最小の入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信しフレーム送信を停止させるステップＳ４ｈからなる
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項４】
請求項３記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、さらに前記フレームの流量からトークンバケツ方式を用いて前記入力側通信ポートごとのトークンを計算して記憶する手段を備え、
前記ステップＳ１ｂを、流量を観測し各入力側通信ポートのトークンを計算しソートするステップＳ１ｂａに変更し、前記ステップＳ１ｅを、入力側通信ポートの中でトークンが最少のポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅａに変更し、前記ステップＳ４ｄを、トークンが前回停止ポートの次に少ないポート停止するステップＳ４ｄｃに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項５】
請求項３記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、さらに、前記入力側通信ポートから入力するフレームの優先度ごとの流量を測定する手段を備え、
前記ステップＳ１ｂを、該優先度ごとの流量を測定する手段で測定した優先度ごとの流量を流量の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂｂに変更し、前記ステップＳ１ｅを、入力側通信ポートの中で当該出力キューの優先度に対応した流量が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｂに変更し、前記ステップＳ４ｄを、入力側通信ポートの中で、当該出力キューの優先度に対応した流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｄｂに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項６】
請求項５記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、さらに、前記流量からトークンバケツ方式を用いて前記入力側通信ポートごとの優先度ごとのトークンを計算して記憶する手段を備え、
前記ステップＳ１ｂｂを、流量を観測し各入力側通信ポートの優先度ごとのトークンを計算しソートするステップＳ１ｂｃに変更し、前記ステップＳ１ｅｂを、入力側通信ポートの中で当該出力キューの優先度に対応した優先度のトークンが最少のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｃに変更し、前記ステップＳ４ｄｂを、当該優先度に対応したトークンが前回停止ポートの次に少ないポート停止するステップＳ４ｄｃに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項７】
請求項３記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、さらに前記入力側通信ポートから入力するフレームの優先度ごと宛先前記出力側通信ポートごとの流量を測定する手段を備え、
前記ステップＳ１ｂを、各入力側通信ポートの優先度ごと、宛先通信ポートごとの通信量を測定し、流量の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂｄに変更し、前記ステップＳ１ｅを、入力側通信ポートの中で当該出力キューへの当該優先度の流量が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｄに変更し、前記ステップＳ３ａを行わず、前記ステップＳ４ａにおいてキュー長ｑｎが追加停止閾値ｘ２より小さい場合にはそのままステップ２へ移行し、キュー長ｑｎが追加停止閾値ｘ２以上ならばステップＳ４ｅを、入力側通信ポートの中で当該出力キューへの当該優先度の流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｅｄに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項８】
請求項７記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、前記入力側通信ポートから入力するフレームの優先度ごと宛先前記出力側通信ポートごとの流量を測定する手段と、前記流量からトークンバケツ方式を用いて前記入力側通信ポートごとの優先度ごと宛先前記出力側通信ポートごとのトークンを計算して記憶する手段とを備え、
前記ステップＳ１ｂｄを、流量を観測し各入力側通信ポートの優先度ごと宛先ポートごとのトークンを計算しソートするステップＳ１ｂｅに変更し、前記ステップＳ１ｅｄを、入力側通信ポートの中で当該出力キューの優先度に対応した優先度と宛先ポートのトークンが最少のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｅに変更し、前記ステップＳ４ｅｄを、当該優先度と当該宛先ポートに対応したトークンが前回停止ポートの次に少ないポート停止するステップＳ４ｅｅに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項９】
請求項３記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、前記キューごとのバッファ量を測定して記憶する手段と、前記入力側通信ポートから入力するフレームの優先度ごと宛先前記出力側通信ポートごとのフレーム数を測定する手段とを備え、
前記ステップＳ１ｂを、各入力側通信ポートの優先度ごと、宛先通信ポートごとの振り分けフレーム数を測定し、振り分け数の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂｆに変更し、前記ステップＳ１ｅを、入力側通信ポートの中で当該出力キューへの当該優先度の振り分け数が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｆに変更し、前記ステップＳ４ｄを、入力側通信ポートの中で、当該出力キューの優先度に対応した振り分け数が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｄｆに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項１０】
請求項３記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記ステップＳ１ｂを行わず、前記ステップＳ１ｅを、入力側通信ポート−ｋから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、一定の時間ｄｔ後に停止した優先度を指定して送信再開メッセージを送信し、再開時点でのキュー長と停止時点でのキュー長の差分Δｋを記憶するという手順を全入力側通信ポートに対して行うステップＳ１ｅｇに変更し、前記ステップＳ１ｅｇの結果から、式ｆｋ＝（Δ１＋Δ２＋・・・＋Δｎ−（ｎ−１）Δｋ）／（ｎ−１）を用いて（但し、ｎは入力側通信ポート数）、入力側通信ポートからの当該キューへの時間ｄｔ間の流量ｆｋを算出し、全入力側通信ポートの流量をソートし記憶するステップＳ１ｆｇに変更し、ｆｋ最大の入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｇｇに変更し、前記ステップＳ４ａを、非停止ポート、かつ、ｆｋ最大の入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ａｇに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項１１】
請求項３記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記コントローラは、前記出力キューごとのバッファ量（キュー長）を測定する手段に代えて前記出力キューごとのフレームの入出力時間を測定し記憶するキュー入出力時間測定手段を備え、
前記ステップＳ１ｃを、該キュー入出力時間測定手段を用いてキューに入力されてから出力されるまでの経過時間を算出し一定数のフレームで平均した値である平均キュー滞在時間を観測しｔｘとして記憶するステップＳ１ｃに変更し、前記ステップＳ１ｄを、平均キュー滞在時間ｔｘと予め決められた停止閾値ｙ０の大小関係を判定するステップＳ１ｄｈに変更し、平均キュー滞在時間ｔｘが停止閾値ｙ０以上でステップＳ１ｅへ、平均キュー滞在時間ｔｘが停止閾値ｙ０未満でステップＳ１ａへ移行させ、前記ステップＳ１ｅの次に、予め決められた再判定時間ｔ１間の平均キュー入力時間間隔を算出しｔｍとして記憶するステップＳ１ｆｈを設け、前記ステップＳ２ａを、平均キュー滞在時間を観測しｔｘとして記憶するステップＳ２ａｈに変更し、前記ステップＳ２ｃを、平均キュー入力時間間隔を算出しｔｎとして記憶するステップＳ２ｃｈに変更し、前記ステップＳ２ｄを、前記ステップＳ２ｃｈで算出した平均キュー入力時間間隔ｔｎとステップＳ１９６で以前に算出した平均キュー入力時間間隔（前回平均キュー入力時間間隔という）ｔｍの大小関係を判定するステップＳ２ｄｈに変更し、平均キュー入力時間間隔ｔｎが前回平均キュー入力時間間隔ｔｍより大きければステップＳ３へ移行し、平均キュー入力時間間隔ｔｎが前回平均キュー入力時間間隔ｔｍ以下ならばステップＳ４へ移行するようにし、前記ステップＳ３ａを、平均キュー滞在時間ｔｘと予め決められた再開閾値ｙ１の大小関係を判定するステップＳ３ａｈに変更し、平均キュー滞在時間ｔｘが再開閾値ｙ１より小さければステップＳ５へ移行し、平均キュー滞在時間ｔｘが再開閾値ｙ１以上ならばステップＳ２へ移行するようにし、さらに前記ステップＳ４ａを、平均キュー滞在時間ｔｘと予め決められた追加停止閾値ｙ２の大小関係を判定するステップＳ４ｄｈに変更し、平均キュー滞在時間ｔｘが追加停止閾値ｙ２より小さければステップＳ２へ移行し、平均キュー滞在時間ｔｘが追加停止閾値ｙ２以上の場合、前記ステップＳ４ｅを入力側通信ポートの中で、当該出力キューへの当該優先度の流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｅｈに変更した
ことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項１２】
請求項２から１１のいずれかに記載の通信装置におけるコンピュータ制御によるフロー制御方法において、
前記入力側通信ポートから送信停止メッセージを送信した履歴を記憶する手段を備え、
前記入力側通信ポートを停止ポートとして選択する際に、送信停止メッセージを送信した履歴を参照し、当該ポートが送信停止メッセージを送信してから一定の履歴数あるいは時間が経過していない場合には、当該通信ポートを除いて停止ポートを選択し直すことにより、特定のポートに停止処理が集中しないようにしたことを特徴とする通信装置におけるコンピュータ制御によるフロー制御方法。
【請求項１３】
コンピュータに、請求項２から１２のいずれかに記載のフロー制御方法における各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置におけるフロー制御技術に関し、特に、輻輳の原因となる通信ポートを推定してフロー制御を行うことによって通信装置におけるバッファ量と遅延時間の増大を防止することが可能な通信装置およびそのフロー制御方法、ならびにそのためのプログラムに関するものである。
【背景技術】
【０００２】
一般に、アクセスネットワークに接続される中継装置は、トラフィックの輻輳制御を行わないため、最悪のトラフィック条件下でもフレームロスが生じないようなバッファ設計が行われている。このため、従来は集線によりトラフィックが輻輳する可能性がある全ての装置において、最悪条件の発生を想定し、如何なる場合にもフレームロスが生じないような十分な容量を有するバッファを実装するようにしていた。
【０００３】
ところが、実際には最悪条件が発生する確率は非常に低く、ネットワーク全体としてみれば、通常はほとんどのバッファが空いている状況になっており、バッファリソースに無駄が生じている。このような無駄を回避する目的でバッファ量を削減するためには、最悪条件を発生させないためのフロー制御が必要である。
【０００４】
フロー制御技術に関する従来技術として、ＰＡＵＳＥ機能がＩＥＥＥ８０２．３に規定されている。このＰＡＵＳＥ機能によれば、全二重型イーサネット（登録商標）リンクにおけるフロー制御が可能である。ある装置に入力するトラフィックが一時的に増大し、バッファあふれによるフレームロスが発生する恐れがある場合には、全二重型リンクの相手側に対してＰＡＵＳＥフレームを送信することにより、ＰＡＵＳＥフレームを受信した相手側はデータフレームの送信を停止し、バッファあふれを防ぐことができる。また、ＰＡＵＳＥフレームはデータフレームの送信を抑えるが、ＭＡＣ制御フレーム（例えば、逆方向からのＰＡＵＳＥフレーム）の送信には影響を与えない（例えば、非特許文献１を参照）。
【０００５】
フロー制御技術に関する他の従来技術として、ＰＦＣ機能がＩＥＥＥ８０２．１に規定されている。このＰＦＣ機能によれば、全二重型イーサネット（登録商標）リンクにおけるフロー制御が可能である。ある装置に入力する特定優先度のトラフィックが一時的に増大し、バッファあふれによるフレームロスが発生する恐れがある場合には、全二重型リンクの相手側に対して、当該優先度を指定してＰＡＵＳＥフレームを送信することにより、ＰＡＵＳＥフレームを受信した相手側はデータフレームの送信を停止し、バッファあふれを防ぐことができる（例えば、非特許文献２を参照）。
【０００６】
ＰＡＵＳＥフレームを利用した従来技術として、各優先度のキューごとに蓄積されたデータ量が停止閾値を超えているか否かを判定し、優先クラス情報および停止時間を含むデータフレームの送信停止を通知するフロー制御メッセージを送信し、それを受信した装置は、受信してからフロー制御メッセージに含まれる停止時間が経過するまで、当該クラスキューに蓄積されているデータフレームの読み出しを停止するというフロー制御の方法がある（例えば、特許文献１を参照）。
【０００７】
また、従来技術として、出力ポートが１個の場合に、入力ポートごとのデータ入量を監視して、入力データ量の多い入力ポートに対して送信停止をかけることで、輻輳を起こしている原因であるユーザのトラフィックにのみ制限を行い、他のユーザからのトラフィック、あるいは優先させたいトラフィックを制限しない、というフロー制御方法がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−０２００２７号公報
【非特許文献】
【０００９】
【非特許文献１】ＩＥＥＥ Ｓｔｄ．８０２．３−２００５ Ａｎｎｅｘ３１Ｂ
【非特許文献２】ＩＥＥＥ Ｓｔｄ．８０２．１Ｑｂｂ／Ｄ０．２
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述した既存の従来技術を用いることで、バッファあふれによるフレームロスを防ぐことができるとともに、低優先トラフィックが輻輳しているような場合にも高優先トラフィックを短い遅延時間で転送することができる。また、出力ポートが１個の場合には輻輳の原因となっているトラフィックのみを停止し、他のトラフィックに影響を与えないフロー制御を行うことができる。
【００１１】
その一方で、フレームロスを防ぐためには、最大バースト×通信ポート数のバッファが最低限必要となる点、全通信ポートでＰＡＵＳＥタイミングが同期し遅延の増大が発生する恐れがある点、出力ポートが複数ある場合には輻輳の原因ではないトラフィックを停止させてしまう恐れがある点、などが課題となる。
【００１２】
例えば、特許文献１の方法において、複数の入力側通信ポートと出力側通信ポートを備えた装置では、輻輳が発生している通信ポートにおいて、輻輳原因となっている通信ポートを推定するアルゴリズムを持たないために、輻輳の原因となっていないトラフィックを停止させる恐れがあり、輻輳を効果的に制御することができずネットワーク全体としての利用効率が落ち、遅延が増大する可能性がある。
【００１３】
本発明は、上記課題を解消し、輻輳の原因となっている通信ポートを推定してフロー制御を行い、バッファ量と遅延の増大を防ぐことが可能な通信装置およびそのフロー制御方法、ならびにそのためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、上記目的を達成するために、次のような構成を採用した。
ａ）本発明に係る通信装置は、複数の入力側通信ポートと、複数の出力側通信ポートと、複数の出力キューと、フローを制御するコントローラを備え、前記入力側通信ポートから受信したフレームを宛先通信ポートと優先度に応じて前記出力キューにバッファし、優先度が高い出力キューにバッファされたフレームから先に読み出して出力側通信ポートから送信する通信装置であって、前記入力側通信ポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる初期停止を行う初期停止手段と、該初期停止手段によって行った初期停止の有効性を判定する停止効果判定手段と、該停止効果判定手段の判定により初期停止に効果があると判定された場合に、フレーム送信停止を解除するか否かの再開判定を行う再開判定手段と、該停止効果判定手段の判定により初期停止に効果がないと判定された場合に、停止ポートではない入力側通信ポートの中から次に送信停止を行うポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる追加停止を行う追加停止手段と、前記再開判定手段で再開すると判定された場合に、全停止ポートに停止した優先度を指定して送信再開メッセージを送信してフレーム送信を再開させる全停止ポート再開手段とを有することを特徴としている。
【００１５】
ｂ）本発明に係るフロー制御方法は、複数の入力側通信ポートと、複数の出力側通信ポートと、複数の出力キューと、フローを制御するコントローラを備え、前記入力側通信ポートから受信したフレームを宛先通信ポートと優先度に応じて前記出力キューにバッファし、優先度が高い出力キューにバッファされたフレームから先に読み出して出力側通信ポートから送信する通信装置におけるコンピュータ制御によるフロー制御方法であって、前記入力側通信ポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる初期停止を行う初期停止ステップＳ１と、該初期停止ステップによって行った初期停止の有効性を判定する停止効果判定ステップＳ２と、該停止効果判定ステップの判定により初期停止に効果があると判定された場合に、フレーム送信停止を解除するか否かの再開判定を行う再開判定ステップＳ３と、該停止効果判定ステップの判定により初期停止に効果がないと判定された場合に、停止ポートではない入力側通信ポートの中から次に送信停止を行うポートを選択し、当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる追加停止を行う追加停止ステップＳ４と、前記再開判定ステップＳ３で再開すると判定された場合に、全停止ポートに停止した優先度を指定して送信再開メッセージを送信してフレーム送信を再開させる全停止ポート再開ステップＳ５とを有することを特徴としている。
【００１６】
ｃ）また、上記ｂ）において、前記コントローラは、前記出力キューごとのバッファ量（キュー長）を測定する手段と、入力側通信ポートから入力するフレームの流量を測定する手段を備え、前記初期停止ステップＳ１は、予め決められた平常時待機時間ｔ０の間待機するステップＳ１ａと、各入力側通信ポートの通信量を測定し、平常時待機時間ｔ０ごとに流量の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂと、各出力キューのキュー長ｑｎを測定するステップＳ１ｃと、そしてキュー長ｑｎと予め決められた停止閾値ｘ０の大小判定を行うステップＳ１ｄと、キュー長ｑｎが停止閾値ｘ０未満であった場合にステップＳ１ａに戻り、キュー長ｑｎが停止閾値ｘ０以上であった場合には、入力側通信ポートの中で流量が最大のポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、流量が最大のポートからのフレーム送信を停止させるステップＳ１ｅとからなり、前記停止効果判定ステップＳ２は、当該出力キューのキュー長ｑｍを記憶するステップＳ２ａと、予め決められた再判定時間ｔ１待機するステップＳ２ｂと、当該出力キューのキュー長ｑｎを測定するステップＳ２ｃと、前記キュー長ｑｎと前記キュー長ｑｍの大小判定を行い、前記キュー長ｑｎが前記キュー長ｑｍ以上の場合には前記追加停止ステップＳ４へ移行し、前記キュー長ｑｎが前記キュー長ｑｍ未満の場合には前記再開判定ステップＳ３へ移行するステップＳ２ｄとからなり、前記再開判定ステップＳ３は、前記キュー長ｑｎと前記キュー長ｑｍの差分Δの記憶を初期化するステップＳ３ａと、前記キュー長ｑｎと予め決められた再開閾値ｘ１の大小判定を行い、前記キュー長ｑｎが再開閾値ｘ１より小さい場合に前記全停止ポート再開ステップＳ５に移行し、前記キュー長ｑｎが再開閾値ｘ１以上であれば、予めフレーム送信を停止させる停止時間を指定していた場合には再度停止指示を行い前記停止効果判定ステップＳ２に移行するステップＳ３ｂとからなり、前記追加停止ステップＳ４は、前記キュー長ｑｎと予め決められた追加停止閾値ｘ２の大小判定を行うステップＳ４ａと、前記キュー長ｑｎが追加停止閾値ｘ２より小さければキュー長差分（ｑｎ−ｑｍ）をΔとして記憶するステップＳ４ｂと、停止ポートから停止した優先度を指定して送信再開メッセージを送信するステップＳ４ｃと、入力側通信ポートの中で流量が前回停止ポートの次に大きいポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｄと、前記ステップＳ４ａにおいて前記キュー長ｑｎが追加停止閾値ｘ２以上の場合、ステップＳ４ａでキュー長ｑｎが追加停止閾値ｘ２以上との判定が連続２回目以降であるか否かの判定を行うステップＳ４ｅと、ステップＳ４ｅによる判定の結果、１回目であれば、停止ポートから停止した優先度を指定して送信再開メッセージを送信するステップＳ４ｆと、Δが０でなくかつ最小である入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信しフレーム送信を停止させるステップＳ４ｇと、ステップＳ４ｅによる判定の結果、２回目以降であれば、停止ポートではなく、Δが０でなくかつ最小の入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信しフレーム送信を停止させるステップＳ４ｈからなることを特徴としている。
【００１７】
ｄ）また、上記ｃ）において、前記コントローラは、さらに前記フレームの流量からトークンバケツ方式を用いて前記入力側通信ポートごとのトークンを計算して記憶する手段を備え、前記ステップＳ１ｂを、流量を観測し各入力側通信ポートのトークンを計算しソートするステップＳ１ｂａに変更し、前記ステップＳ１ｅを、入力側通信ポートの中でトークンが最少のポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅａに変更し、前記ステップＳ４ｄを、トークンが前回停止ポートの次に少ないポート停止するステップＳ４ｄｃに変更したことを特徴としている。
【００１８】
ｅ）また、上記ｃ）において、前記コントローラは、さらに、前記入力側通信ポートから入力するフレームの優先度ごとの流量を測定する手段を備え、前記ステップＳ１ｂを、該優先度ごとの流量を測定する手段で測定した優先度ごとの流量を流量の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂｂに変更し、前記ステップＳ１ｅを、入力側通信ポートの中で当該出力キューの優先度に対応した流量が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｂに変更し、前記ステップＳ４ｄを、入力側通信ポートの中で、当該出力キューの優先度に対応した流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｄｂに変更したことを特徴としている。
【００１９】
ｆ）また、上記ｅ）において、前記コントローラは、さらに、前記流量からトークンバケツ方式を用いて前記入力側通信ポートごとの優先度ごとのトークンを計算して記憶する手段を備え、前記ステップＳ１ｂｂを、流量を観測し各入力側通信ポートの優先度ごとのトークンを計算しソートするステップＳ１ｂｃに変更し、前記ステップＳ１ｅｂを、入力側通信ポートの中で当該出力キューの優先度に対応した優先度のトークンが最少のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｃに変更し、前記ステップＳ４ｄｂを、当該優先度に対応したトークンが前回停止ポートの次に少ないポート停止するステップＳ４ｄｃに変更したことを特徴としている。
【００２０】
ｇ）また、上記ｃ）において、前記コントローラは、さらに前記入力側通信ポートから入力するフレームの優先度ごと宛先前記出力側通信ポートごとの流量を測定する手段を備え、前記ステップＳ１ｂを、各入力側通信ポートの優先度ごと、宛先通信ポートごとの通信量を測定し、流量の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂｄに変更し、前記ステップＳ１ｅを、入力側通信ポートの中で当該出力キューへの当該優先度の流量が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｄに変更し、前記ステップＳ３ａを行わず、前記ステップＳ４ａにおいてキュー長ｑｎが追加停止閾値ｘ２より小さい場合にはそのままステップ２へ移行し、キュー長ｑｎが追加停止閾値ｘ２以上ならばステップＳ４ｅを、入力側通信ポートの中で当該出力キューへの当該優先度の流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｅｄに変更した
ことを特徴としている。
【００２１】
ｈ）また、上記ｇ）において、前記コントローラは、前記入力側通信ポートから入力するフレームの優先度ごと宛先前記出力側通信ポートごとの流量を測定する手段と、前記流量からトークンバケツ方式を用いて前記入力側通信ポートごとの優先度ごと宛先前記出力側通信ポートごとのトークンを計算して記憶する手段とを備え、前記ステップＳ１ｂｄを、流量を観測し各入力側通信ポートの優先度ごと宛先ポートごとのトークンを計算しソートするステップＳ１ｂｅに変更し、前記ステップＳ１ｅｄを、入力側通信ポートの中で当該出力キューの優先度に対応した優先度と宛先ポートのトークンが最少のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｅに変更し、前記ステップＳ４ｅｄを、当該優先度と当該宛先ポートに対応したトークンが前回停止ポートの次に少ないポート停止するステップＳ４ｅｅに変更したことを特徴としている。
【００２２】
ｉ）また、上記ｃ）において、前記コントローラは、前記キューごとのバッファ量を測定して記憶する手段と、前記入力側通信ポートから入力するフレームの優先度ごと宛先前記出力側通信ポートごとのフレーム数を測定する手段とを備え、前記ステップＳ１ｂを、各入力側通信ポートの優先度ごと、宛先通信ポートごとの振り分けフレーム数を測定し、振り分け数の多い順に各入力側通信ポートをソートし記憶するステップＳ１ｂｆに変更し、前記ステップＳ１ｅを、入力側通信ポートの中で当該出力キューへの当該優先度の振り分け数が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｅｆに変更し、前記ステップＳ４ｄを、入力側通信ポートの中で、当該出力キューの優先度に対応した振り分け数が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｄｆに変更したことを特徴としている。
【００２３】
ｊ）また、上記ｃ）において、前記ステップＳ１ｂを行わず、前記ステップＳ１ｅを、入力側通信ポート−ｋから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、一定の時間ｄｔ後に停止した優先度を指定して送信再開メッセージを送信し、再開時点でのキュー長と停止時点でのキュー長の差分Δｋを記憶するという手順を全入力側通信ポートに対して行うステップＳ１ｅｇに変更し、前記ステップＳ１ｅｇの結果から、式ｆｋ＝（Δ１＋Δ２＋・・・＋Δｎ−（ｎ−１）Δｋ）／（ｎ−１）を用いて（但し、ｎは入力側通信ポート数）、入力側通信ポートからの当該キューへの時間ｄｔ間の流量ｆｋを算出し、全入力側通信ポートの流量をソートし記憶するステップＳ１ｆｇに変更し、ｆｋ最大の入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１ｇｇに変更し、前記ステップＳ４ａを、非停止ポート、かつ、ｆｋ最大の入力側通信ポートから当該出力キューの優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ａｇに変更したことを特徴としている。
【００２４】
ｋ）また、上記ｃ）において、前記コントローラは、前記出力キューごとのバッファ量（キュー長）を測定する手段に代えて前記出力キューごとのフレームの入出力時間を測定し記憶するキュー入出力時間測定手段を備え、前記ステップＳ１ｃを、該キュー入出力時間測定手段を用いてキューに入力されてから出力されるまでの経過時間を算出し一定数のフレームで平均した値である平均キュー滞在時間を観測しｔｘとして記憶するステップＳ１ｃに変更し、前記ステップＳ１ｄを、平均キュー滞在時間ｔｘと予め決められた停止閾値ｙ０の大小関係を判定するステップＳ１ｄｈに変更し、平均キュー滞在時間ｔｘが停止閾値ｙ０以上でステップＳ１ｅへ、平均キュー滞在時間ｔｘが停止閾値ｙ０未満でステップＳ１ａへ移行させ、前記ステップＳ１ｅの次に、予め決められた再判定時間ｔ１間の平均キュー入力時間間隔を算出しｔｍとして記憶するステップＳ１ｆｈを設け、前記ステップＳ２ａを、平均キュー滞在時間を観測しｔｘとして記憶するステップＳ２ａｈに変更し、前記ステップＳ２ｃを、平均キュー入力時間間隔を算出しｔｎとして記憶するステップＳ２ｃｈに変更し、前記ステップＳ２ｄを、前記ステップＳ２ｃｈで算出した平均キュー入力時間間隔ｔｎとステップＳ１９６で以前に算出した平均キュー入力時間間隔（前回平均キュー入力時間間隔という）ｔｍの大小関係を判定するステップＳ２ｄｈに変更し、平均キュー入力時間間隔ｔｎが前回平均キュー入力時間間隔ｔｍより大きければステップＳ３へ移行し、平均キュー入力時間間隔ｔｎが前回平均キュー入力時間間隔ｔｍ以下ならばステップＳ４へ移行するようにし、前記ステップＳ３ａを、平均キュー滞在時間ｔｘと予め決められた再開閾値ｙ１の大小関係を判定するステップＳ３ａｈに変更し、平均キュー滞在時間ｔｘが再開閾値ｙ１より小さければステップＳ５へ移行し、平均キュー滞在時間ｔｘが再開閾値ｙ１以上ならばステップＳ２へ移行するようにし、さらに前記ステップＳ４ａを、平均キュー滞在時間ｔｘと予め決められた追加停止閾値ｙ２の大小関係を判定するステップＳ４ｄｈに変更し、平均キュー滞在時間ｔｘが追加停止閾値ｙ２より小さければステップＳ２へ移行し、平均キュー滞在時間ｔｘが追加停止閾値ｙ２以上の場合、前記ステップＳ４ｅを入力側通信ポートの中で、当該出力キューへの当該優先度の流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ４ｅｈに変更したことを特徴としている。
【００２５】
ｌ）また、上記ｂ）からｋ）のいずれかに記載の通信装置におけるコンピュータ制御によるフロー制御方法において、前記入力側通信ポートから送信停止メッセージを送信した履歴を記憶する手段を備え、前記入力側通信ポートを停止ポートとして選択する際に、送信停止メッセージを送信した履歴を参照し、当該ポートが送信停止メッセージを送信してから一定の履歴数あるいは時間が経過していない場合には、当該通信ポートを除いて停止ポートを選択し直すことにより、特定のポートに停止処理が集中しないようにしたことを特徴としている。
【００２６】
ｍ）本発明に係るプログラムは、コンピュータに、上記ｂ）からｌ）のいずれかに記載のフロー制御方法における各ステップを実行させるためのプログラムである。
【発明の効果】
【００２７】
本発明によれば、輻輳の原因となる通信ポートを適切に推定してフロー制御を行うことができ、通信装置におけるバッファ量と遅延時間の増大を防止することが可能な通信装置および通信装置におけるフロー制御方法、ならびにそのためのプログラムを実現できる。
【図面の簡単な説明】
【００２８】
【図１】本発明に係る通信装置における共通の処理フローである。
【図２】本発明の実施形態１に係る通信装置を用いたフロー制御の一例を示す構成図である。
【図３】本発明の実施形態１において、図１におけるステップＳ１の初期停止、ステップＳ２の停止効果判定（送信を停止させた効果を判定）、ステップＳ３の再開判定（送信を再開させるかを判定）、ステップＳ４の追加停止（追加で送信を停止）の詳細を示す図である。
【図４】本発明の実施の形態２を説明するための図である（処理フロー）。
【図５】本発明の実施の形態３を説明するための図である（構成図）。
【図６】本発明の実施の形態３を説明するための図である（処理フロー）。
【図７】本発明の実施の形態４を説明するための図である（処理フロー）。
【図８】本発明の実施の形態５を説明するための図である（構成図）。
【図９】本発明の実施の形態５を説明するための図である（処理フロー）。
【図１０】本発明の実施の形態６を説明するための図である（処理フロー）。
【図１１】本発明の実施の形態７を説明するための図である（構成図）。
【図１２】本発明の実施の形態７を説明するための図である（処理フロー）。
【図１３】本発明の実施の形態８を説明するための図である（構成図）。
【図１４】本発明の実施の形態８を説明するための図である（処理フロー）。
【図１５】本発明の実施の形態９を説明するための図である（構成図）。
【図１６】本発明の実施の形態９を説明するための図である（処理フロー）。
【図１７】本発明の実施の形態１０を説明するための図である（処理フロー）。
【発明を実施するための形態】
【００２９】
以下に、本発明の実施の形態について図面を参照して詳細に説明する。なお、本発明は、以下の記述により限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【実施例１】
【００３０】
以下、図１、２、３は、本発明の実施の形態１を説明するための図である。
図１は、本発明に係る通信装置における共通の処理フローである。図２は、本実施例に係る通信装置を用いたフロー制御の一例を示す構成図である。
【００３１】
図２において、１は本発明に係る通信装置、２は送信側通信ノード、３は受信側通信ノードである。通信装置１と送信側通信ノード２、受信側通信ノード３は、通信ポート（入力側通信ポートあるいは受信側通信ポート）１２と通信ポート（出力側通信ポートあるいは送信側通信ポート）１３を介してそれぞれ接続される。
【００３２】
通信装置１において、入力側通信ポート１２が送信側通信ノード２から受信したフレームは、振り分け部１４にて宛て先ポートと優先度に応じて出力キュー１６にキューイングされる。出力キューの数はいくつでもよい（図２は４つの場合を示す）。キュー読み出し部１８は、優先度が高いキューにキューイングされたフレームから先に読み出し、読み出されたフレームは出力側通信ポート１３から受信側通信ノード３に送信される。
【００３３】
コントローラ１１は、図１のフローチャートで示す処理（より詳細には、図３，４，６，７，９，１０，１２，１４，１６，１７のフローチャートに示す処理）を出力キュー１６ごとに行い、フロー制御を実行する。その際、処理の対象とする出力キュー１６を何らかの順番により１キューずつ選択してもよいし、全ての出力キュー１６において並列に処理してもよい。あるいは、一部のキューは１キューずつ処理し、他のキューは並列に処理してもよい。１５は流量を測定する流量測定部、１７はキュー長を測定するキュー長測定部である。
【００３４】
なお、図中、２，３，１２，１３，１５，１６，１７，１８などに付与されている−１，−２，−１１，−１２、−２１，−２２などの記号はそれぞれ複数の要素を区別するための記号であるが、以下では特に区別する必要がない場合は簡単化のために省略して説明する。
【００３５】
なお、コントローラ１１によって行う図１のフローチャートの処理（より詳細には、図３，４，６，７，９，１０，１２，１４，１６，１７のフローチャートに示す処理）は、通信装置１として機能するコンピュータのＣＰＵやメモリなどのハードウェアを用いて、各処理に対応するプログラムを実行することにより行われる。また、これら各処理に対応するプログラムは、インターネットなどのネットワークや、ＣＤ−ＲＯＭ、ＤＶＤ、ＦＤなどの記録媒体を介して市場に流通させることができることはいうまでもない。
【００３６】
次に、図１の各ステップにおける処理について説明する。
ステップＳ１において、入力側通信ポート１２を選択、当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる初期停止を行い、ステップＳ２に移行する。
【００３７】
なお、送信停止メッセージを送信する際には、どの場合でも、予めフレーム送信を停止させる停止時間を指定してもよい。なお、ここで、停止させるＶＬＡＮを同時に指定する場合も含むものとする。以降、送信停止メッセージを送信してフレーム送信を停止させている入力側通信ポート１２を「停止ポート」と呼ぶ。
【００３８】
ステップＳ２において、ステップ１で行った初期停止の有効性を判定する停止効果判定を行い、初期停止に効果があると判定した場合（ステップＳ２：Ｙ）にはステップＳ３へ、初期停止に効果がないと判定した場合（ステップＳ２：Ｎ）にはステップＳ４へ移行する。
【００３９】
初期停止に効果がある場合は、ステップＳ３において、フレーム送信停止を解除するか否かの再開判定を行い、再開すると判定した場合（ステップＳ３：Ｙ）にはステップＳ５へ、再開しないと判定した場合（ステップＳ３：Ｎ）にはステップＳ２へ移行する。
【００４０】
初期停止に効果がない場合は、ステップＳ４において、停止ポートではない入力側通信ポート１２の中から次に送信停止を行うポートを選択、当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信してフレーム送信を停止させる追加停止を行い、その後、ステップＳ２へ移行する。
【００４１】
ステップＳ５において、全停止ポートに停止した優先度を指定して送信再開メッセージを送信してフレーム送信を再開させ、その後、ステップＳ１へ移行する。
【００４２】
図３は、図１におけるステップＳ１の初期停止、ステップＳ２の停止効果判定（送信を停止させた効果を判定）、ステップＳ３の再開判定（送信を再開させるかを判定）、ステップＳ４の追加停止（追加で送信を停止）の本実施例における詳細を示す図である。
【００４３】
ステップＳ１（初期停止）では、同図に示すように、まず、予め決められた平常時待機時間ｔ０の間待機し（ステップＳ１１１）、流量測定部１５を用いて各入力側通信ポート１２の通信量を測定し、平常時待機時間ｔ０ごとに流量の多い順に各入力側通信ポート１２をソートし、記憶する（ステップＳ１１２）。
【００４４】
次に、キュー長測定部１７を用いて、各出力キュー１６のキュー長ｑｎを測定する（ステップＳ１１３）。そしてキュー長ｑｎと予め決められた停止閾値ｘ０の大小判定を行い（ステップＳ１１４）、キュー長ｑｎが停止閾値ｘ０未満であった場合にはステップＳ１に戻り、キュー長ｑｎが停止閾値ｘ０以上であった場合には、入力側通信ポート１２の中で流量が最大のポートから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、流量が最大のポートからのフレーム送信を停止させ（ステップＳ１１５）、次のステップＳ２へ移行する。
【００４５】
ステップＳ２（停止効果判定）では、同図に示すように、当該出力キュー１６のキュー長ｑｍを記憶し（ステップＳ２１１）、予め決められた再判定時間ｔ１待機した後に（ステップＳ２１２）、キュー長測定部１７を用いて当該出力キュー１６のキュー長ｑｎを測定する（ステップＳ２１３）。
【００４６】
次に、キュー長ｑｎとキュー長ｑｍの大小判定を行い（ステップＳ２１４）、キュー長ｑｎがキュー長ｑｍ以上の場合には（ステップＳ２１４：Ｎ）、これまでに送信停止を行ったポートが不適切であった（停止効果なし）と判断してステップＳ４へ移行し、キュー長ｑｎがキュー長ｑｍ未満の場合には（ステップＳ２１４：Ｙ）、送信停止を行ったポートが適切であった（停止効果あり）と判断してステップＳ３へ移行する。
【００４７】
ステップＳ３（再開判定）では、同図に示すように、まずキュー長差分Δ（＝ｑｎ−ｑｍ）の記憶を初期化し（Δ＝０：ステップＳ３１１）、キュー長ｑｎと予め決められた再開閾値ｘ１の大小判定を行い（ステップＳ３１２）、キュー長ｑｎが再開閾値ｘ１より小さい場合には（ステップＳ３１２：Ｙ）、キュー長が十分短くなったと判断し、送信を再開させるべくステップＳ５に移行し、キュー長ｑｎが再開閾値ｘ１以上であれば（ステップＳ３１２：Ｎ）、予めフレーム送信を停止させる停止時間を指定していた場合には再度停止指示を行い、ステップＳ２に移行する。なお、差分Δを、図３では直角三角形で示している（後述する図４，６，７，１２，１４も同様）。
【００４８】
ステップＳ４（追加停止）では、同図に示すように、まずキュー長ｑｎと予め決められた追加停止閾値ｘ２の大小判定を行い（ステップＳ４１１）、キュー長ｑｎが追加停止閾値ｘ２より小さければ、送信を停止させたポートの選択が不適切だったとして、キュー長差分（ｑｎ−ｑｍ）をΔとして記憶し（ステップＳ４１２）、停止ポートから停止した優先度を指定して送信再開メッセージを送信する（なお、追加停止閾値ｘ２は停止閾値ｘ０と同じでもよい）（ステップＳ４１３）。
【００４９】
次に、入力側通信ポート１２の中で、より送信を停止させる効果が大きいと考えられる、流量が前回停止ポートの次に大きいポートから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させ（ステップＳ４１４）、ステップＳ２へ移行する。
【００５０】
ステップＳ４１１においてキュー長ｑｎが追加停止閾値ｘ２以上であれば、ステップＳ４１１でキュー長ｑｎが追加停止閾値ｘ２以上との判定が連続２回目以降であるか否かの判定を行い（ステップＳ４１５）、１回目であれば、停止ポートから停止した優先度を指定して送信再開メッセージを送信し（ステップＳ４１６）、Δが０でなくかつ最小である入力側通信ポート１２から当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させ（ステップＳ４１７）、ステップＳ４１８へ移行する。
【００５１】
ステップＳ４１５において２回目以降であれば、停止ポートではなく、さらにΔが０でなくかつ最小の入力側通信ポート１２から当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させ（ステップＳ４１８）、ステップＳ２へ移行する。
【００５２】
本実施例によれば、上述した一連の処理により、当該出力キューへの流量が多いポートを判定し、送信を停止させることができる。
【実施例２】
【００５３】
図４は、本発明の実施の形態２を説明するための図である。実施の形態２においては、実施の形態１とほぼ同様の構成であるが、以下の点が異なる。
【００５４】
実施の形態２では、ステップＳ１１２に代わって、流量を観測し各入力側通信ポート１２のトークンを計算しソートするステップＳ１２２を行う。ステップＳ１１５に代わって、入力側通信ポート１２の中でトークンが最少のポートから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１２５を行う。ステップＳ４１４に代わって、トークンが前回停止ポートの次に少ないポート停止するステップＳ４２４を行う。
【００５５】
本実施例によれば、上述した処理により、トークンバケツ方式で、当該出力キューへの流量が多いポートを判定し、送信を停止させることができる。
【実施例３】
【００５６】
図５、６は、本発明の実施の形態３を説明するための図である。図５は構成図、図６は処理フロー図である。図５において、４は本発明の通信装置であり、図２とほぼ同様の構成であるが、流量測定部１５の手前に優先度別振り分け部１９が接続されている。
【００５７】
実施の形態３においては、実施の形態１とほぼ同様の構成であるが、以下の点が異なる。実施の形態３では、ステップＳ１１２に代わって、各入力側通信ポート１２の優先度別振り分け部１９によって振り分けられた優先度ごとの通信量を測定し、流量の多い順に各入力側通信ポート１２をソートし、記憶する（ステップＳ１３２）。
【００５８】
ステップＳ１１５に代わって、入力側通信ポート１２の中で当該出力キュー１６の優先度に対応した流量が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ１３５）。ステップＳ４１４に代わって、入力側通信ポート１２の中で、当該出力キュー１６の優先度に対応した流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ４３４）。
【００５９】
本実施例によれば、上述した処理により、当該出力キューへの流量が多いポートを判定し、送信を停止させることができる。
【実施例４】
【００６０】
図７は、本発明の実施の形態４を説明するための図である。実施の形態４においては、実施の形態３とほぼ同様の構成であるが、以下の点が異なる。
【００６１】
実施の形態４では、ステップＳ１３２に代わって、流量を観測し各入力側通信ポート１２の優先度ごとのトークンを計算しソートするステップＳ１４２を行う。ステップＳ１３５に代わって、入力側通信ポート１２の中で当該出力キュー１６の優先度に対応した優先度のトークンが最少のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１４５を行う。ステップＳ４３４に代わって、当該優先度に対応したトークンが前回停止ポートの次に少ないポート停止するステップＳ４４４を行う。
【００６２】
本実施例によれば、上述した処理により、トークンバケツ方式で、当該出力キューへの流量が多いポートを判定し、送信を停止させることができる。
【実施例５】
【００６３】
図８、９は、本発明の実施の形態５を説明するための図である。図８において、５は本発明の通信装置であり、図２とほぼ同様の構成であるが、振り分け部１４に代わって流量測定機能付き振り分け部５４を使用し、流量測定部１５を使用しない。実施の形態５においては、実施の形態１とほぼ同様の構成であるが、以下の点が異なる。
【００６４】
実施の形態５では、ステップＳ１１２に代わって、各入力側通信ポート１２の優先度ごと、宛先通信ポート１３ごとの通信量を測定し、流量の多い順に各入力側通信ポート１２をソートし、記憶する（ステップＳ１５２）。
【００６５】
ステップＳ１１５に代わって、入力側通信ポート１２の中で当該出力キュー１６への当該優先度の流量が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ１５５）。ステップＳ３１１を行わずにステップＳ３１２を行う。
【００６６】
ステップＳ４１１においてキュー長ｑｎが追加停止閾値ｘ２より小さい場合にはそのままステップ２へ移行し、キュー長ｑｎが追加停止閾値ｘ２以上ならばステップＳ４１５に代わって、入力側通信ポート１２の中で、当該出力キュー１６への当該優先度の流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ４５５）。
【００６７】
本実施例によれば、上述した処理により、当該出力キューへの流量が多いポートを確実に判定し、送信を停止させることができる。
【実施例６】
【００６８】
図１０は、本発明の実施の形態６を説明するための図である。実施の形態６においては、実施の形態５とほぼ同様の構成であるが、以下の点が異なる。
【００６９】
実施の形態６では、ステップＳ１５２に代わって、流量を観測し各入力側通信ポート１２の優先度ごと宛先ポートごとのトークンを計算しソートするステップＳ１６２を行う。ステップＳ１５５に代わって、入力側通信ポート１２の中で当該出力キュー１６の優先度に対応した優先度と宛先ポートのトークンが最少のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させるステップＳ１６５を行う。ステップＳ４５４に代わって、当該優先度と当該宛先ポートに対応したトークンが前回停止ポートの次に少ないポート停止するステップＳ４６４を行う。
【００７０】
本実施例に拠れば、上述した処理により、トークンバケツ方式で、当該出力キューへの流量が多いポートを判定し、送信を停止させることができる。
【実施例７】
【００７１】
図１１、１２は、本発明の実施の形態７を説明するための図である。図１１において、６は本発明の通信装置であり、図２とほぼ同様の構成であるが、振り分け部１４に代わって振り分け先測定機能付き振り分け部６４を使用し、流量測定部１５を使用しない。実施の形態７においては、実施の形態１とほぼ同様の構成であるが、以下の点が異なる。
【００７２】
実施の形態７では、ステップＳ１１２に代わって、各入力側通信ポート１２の優先度ごと、宛先通信ポート１３ごとの振り分けフレーム数を測定し、振り分け数の多い順に各入力側通信ポート１２をソートし、記憶する（ステップＳ１７２）。
【００７３】
ステップＳ１１５に代わって、入力側通信ポート１２の中で当該出力キュー１６への当該優先度の振り分け数が最大のポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ１７５）。ステップＳ４１４に代わって、入力側通信ポート１２の中で、当該出力キュー１６の優先度に対応した振り分け数が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ４７４）。
【００７４】
本実施例によれば、上述した処理により、振り分け数から当該出力キューへの流量が多いポートを予測し、送信を停止させることができる。また、振り分け部６４はフレーム数のカウント機能を具備すればよいので、構成を簡単にできるという利点もある。
【実施例８】
【００７５】
図１３、１４は、本発明の実施の形態８を説明するための図である。図１３において、７は本発明の通信装置であり、図２とほぼ同様の構成であるが、流量測定部１５を使用しない。実施の形態８においては、実施の形態１とほぼ同様の構成であるが、以下の点が異なる。
【００７６】
実施の形態８では、ステップＳ１１２を行わず、ステップＳ１１５に代わって入力側通信ポート１２−ｋから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、一定の時間ｄｔ後に停止した優先度を指定して送信再開メッセージを送信し、再開時点でのキュー長と停止時点でのキュー長の差分Δｋを記憶する、という手順を全入力側通信ポート１２に対して行う（ステップＳ１８５）。
【００７７】
通信装置７は１より大のｎの入力側通信ポート１２を備えるとすると、ステップＳ１８５の結果から、式ｆｋ＝（Δ１＋Δ２＋・・・＋Δｎ−（ｎ−１）Δｋ）／（ｎ−１）を用いて、入力側通信ポート１２−ｋからの当該キューへの時間ｄｔ間の流量ｆｋを算出し、全入力側通信ポート１２の流量をソートし記憶する（ステップＳ１８６）。
【００７８】
その後に、ｆｋ最大の入力側通信ポート１２−ｋから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ１８７）。ステップＳ４１１に代わって、非停止ポートかつ、ｆｋ最大の入力側通信ポート１２−ｋから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ４８１）ことで追加停止を行う。
【００７９】
本実施例によれば、上述した処理により、キュー長のみを観測しながら、当該出力キューへの流量が多いポートを推定し、送信を停止させることができる。
【実施例９】
【００８０】
図１５、１６は、本発明の実施の形態９を説明するための図である。図１５において、８は本発明の通信装置であり、図２とほぼ同様の構成であるが、キュー長測定部１７に代わって、キュー入出力時間測定部７９を使用する。実施の形態９においては、実施の形態１とほぼ同様の構成であるが、以下の点が異なる。
【００８１】
実施例９では、ステップＳ１１３に代わって、平均キュー滞在時間を観測しｔｘとして記憶する（ステップＳ１９３）。ここで、平均キュー滞在時間とは、任意のフレームに関して出力キュー７６に入力されてから出力されるまでの経過時間を算出し、一定数のフレームで平均した値を意味し、キュー入出力時間測定部７９を用いて、各フレームのキュー入力時間とキュー出力時間を記憶し、その差分を算出、一定数のフレームの平均値を算出することにより観測する。
【００８２】
ステップＳ１１４に代わって、平均キュー滞在時間ｔｘと予め決められた停止閾値ｙ０の大小関係を判定し（ステップＳ１９４）、平均キュー滞在時間ｔｘが停止閾値ｙ０以上でステップＳ１１５へ、平均キュー滞在時間ｔｘが停止閾値ｙ０未満でステップＳ１１１へ移行する。ステップＳ１１５の次に、予め決められた再判定時間ｔ１間の平均キュー入力時間間隔を算出しｔｍとして記憶する（ステップＳ１９６）。
【００８３】
平均キュー入力時間間隔とは、キューに任意のフレームが入力されてから次のフレームが入力されるまでの経過時間を算出し、一定数のフレームで平均した値を意味し、キュー入出力時間測定部７９を用いて、各フレームのキュー入力時間を記憶し、あるフレームと次のフレームのキュー入力時間の差分を算出、一定数のフレームの平均値を算出することにより観測する。
【００８４】
ステップＳ２１１に代わって、平均キュー滞在時間を観測しｔｘとして記憶する（ステップＳ２９１）。ステップＳ２１３に代わって、平均キュー入力時間間隔を算出しｔｎとして記憶する（ステップＳ２９３）。
【００８５】
ステップＳ２１４に代わって、ステップＳ２９３で算出した平均キュー入力時間間隔ｔｎとステップＳ１９６で以前に算出した平均キュー入力時間間隔（前回平均キュー入力時間間隔という）ｔｍの大小関係を判定し（ステップＳ２９４）、平均キュー入力時間間隔ｔｎが前回平均キュー入力時間間隔ｔｍより大きければステップＳ３へ移行し、平均キュー入力時間間隔ｔｎが前回平均キュー入力時間間隔ｔｍ以下ならばステップＳ４へ移行する。
【００８６】
ステップＳ３１１に代わって、平均キュー滞在時間ｔｘと予め決められた再開閾値ｙ１の大小関係を判定し（ステップＳ３９２）、平均キュー滞在時間ｔｘが再開閾値ｙ１より小さければステップＳ５へ移行し、平均キュー滞在時間ｔｘが再開閾値ｙ１以上ならばステップＳ２へ移行する。
【００８７】
ステップＳ４１１に代わって、平均キュー滞在時間ｔｘと予め決められた追加停止閾値ｙ２の大小関係を判定し（ステップＳ４９１）、平均キュー滞在時間ｔｘが追加停止閾値ｙ２より小さければステップＳ２へ移行し、平均キュー滞在時間ｔｘが追加停止閾値ｙ２以上ならば、ステップＳ４１５に代わって、入力側通信ポート１２の中で、当該出力キュー１６への当該優先度の流量が前回停止ポートの次に大きいポートから当該優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させる（ステップＳ４９５）。
【００８８】
本実施例によれば、上述した処理により、キュー長を観測する代わりに平均キュー滞在時間を観測して、フロー制御の必要性の有無を判定することができる。
【実施例１０】
【００８９】
図１７は、本発明の実施の形態１０を説明するための図である。実施の形態１０においては、実施の形態１とほぼ同様の構成であるが、以下の点が異なる。
【００９０】
実施例１０では、入力側通信ポートから送信停止メッセージを送信した履歴を記憶する手段を備え、ステップＳ１１５に代わって、入力側通信ポート１２の中で流量が最大のポートが、記憶している前回停止時の停止ポートであるか否かの判定を行い（ステップＳ１１０５）、前回停止ポートであれば、入力側通信ポート１２の中で流量が次に大きいポートから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させ（ステップＳ１１０６）、ステップＳ２へ移行する。
【００９１】
前回停止ポートでなければ、当該ポートから当該出力キュー１６の優先度に対応した優先度を指定して送信停止メッセージを送信し、フレーム送信を停止させ（ステップＳ１１０７）、ステップＳ２へ移行する。なお、ステップＳ１９６あるいはステップＳ１９７においてフレーム送信を停止させた入力側通信ポート１２を、前回停止ポートとして記憶する（ステップＳ１１０８）。
【００９２】
本実施例によれば、上述したように、停止処理の直前に公平化を期するために、入力側通信ポートを停止ポートとして選択する際に、送信停止メッセージを送信した履歴を参照し、当該ポートが送信停止メッセージを送信してから一定の履歴数あるいは時間が経過していない場合には、当該通信ポートを除いて停止ポートを選択し直すようにすることにより、特定のポートに停止処理が集中することを防止し、停止の公平化を図ることができる。
【符号の説明】
【００９３】
１：通信装置
２（２−１，２−２）：送信側通信ノード
３（３−１，３−２）：受信側通信ノード
１１：コントローラ
１２（１２−１，１２−２）：通信ポート（入力側通信ポートあるいは受信側通信ポート）
１３（１３−１，１３−２）：通信ポート（出力側通信ポートあるいは送信側通信ポート）
１４：振り分け部
１５（１５-１,１５-２,１５-１１,１５−１２，１５−２１，１５−２２）：流量測定部
１６（１６-１１,１６−１２，１６−２１，１６−２２），７６（７６−１１，７６−１２，７６−２２）：出力キュー
１７（１７-１１,１７−１２，１７−２１，１７−２２）：キュー長測定部
１８（１８−１，１８−２）：キュー読み出し部
１９（１９−１，１９−２）：振り分け部（優先度別）
５４：振り分け部（流量測定機能付き）
６４：振り分け部（振り分け先測定機能付き）
７９（７９−１１，７９−１２，７９−２１，７９−２２）：キュー入出力時間測定部
【図１】
2011019040.tif 000003
【図２】
2011019040.tif 000004
【図３】
2011019040.tif 000005
【図４】
2011019040.tif 000006
【図５】
2011019040.tif 000007
【図６】
2011019040.tif 000008
【図７】
2011019040.tif 000009
【図８】
2011019040.tif 000010
【図９】
2011019040.tif 000011
【図１０】
2011019040.tif 000012
【図１１】
2011019040.tif 000013
【図１２】
2011019040.tif 000014
【図１３】
2011019040.tif 000015
【図１４】
2011019040.tif 000016
【図１５】
2011019040.tif 000017
【図１６】
2011019040.tif 000018
【図１７】
2011019040.tif 000019