JP3431484B2 - パケット送出装置及びパケット送出方法 - Google Patents
パケット送出装置及びパケット送出方法Info
- Publication number
- JP3431484B2 JP3431484B2 JP04965298A JP4965298A JP3431484B2 JP 3431484 B2 JP3431484 B2 JP 3431484B2 JP 04965298 A JP04965298 A JP 04965298A JP 4965298 A JP4965298 A JP 4965298A JP 3431484 B2 JP3431484 B2 JP 3431484B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- group
- value
- round
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
【0001】
【発明の属する技術の分野】本発明は、パケット通信網
の構成要素の中で複数のグループに分類され出力を待つ
パケットをグループ毎の重みに基づいて公平に送出する
パケット送出装置及びパケット送出方法に関する。
の構成要素の中で複数のグループに分類され出力を待つ
パケットをグループ毎の重みに基づいて公平に送出する
パケット送出装置及びパケット送出方法に関する。
【0002】
【従来の技術】近年、情報通信の重要性が高まってい
る。特にインターネットと呼ばれるパケット通信網は、
World Wide Webを代表とする魅力的なア
プリケーションの登場により、ビジネスの世界でも個人
の娯楽としても世界中の多くの人を引き付けている。こ
のインターネットはその重要性の認識が広がるとともに
利用者が増加してきた。そして利用者が増えることによ
りその重要性がさらに増している。このように今日、多
くの企業や個人がインターネットを代表とするパケット
通信網の技術の発展を大きく期待している。
る。特にインターネットと呼ばれるパケット通信網は、
World Wide Webを代表とする魅力的なア
プリケーションの登場により、ビジネスの世界でも個人
の娯楽としても世界中の多くの人を引き付けている。こ
のインターネットはその重要性の認識が広がるとともに
利用者が増加してきた。そして利用者が増えることによ
りその重要性がさらに増している。このように今日、多
くの企業や個人がインターネットを代表とするパケット
通信網の技術の発展を大きく期待している。
【0003】パケット通信網の利点のひとつは、複数の
ユーザが物理回線を柔軟に共有できることである。この
利点を生かすために、物理回線容量をユーザ間で公平に
分け合うことを保証するパケット送出装置が提案されて
いる。
ユーザが物理回線を柔軟に共有できることである。この
利点を生かすために、物理回線容量をユーザ間で公平に
分け合うことを保証するパケット送出装置が提案されて
いる。
【0004】M.Shreedhar and G.V
arghese:“Efficient Fair Q
ueueing Using Deficit Rou
ndRobin”,pp231−242,SIGCOM
M ’95,1995.にて、DRR(Deficit
Round Robin)と呼ばれるパケット送出ア
ルゴリズムが示された。DRRは送出待ちパケットが存
在するフローの識別子をアクティブリストと呼ばれるキ
ューで管理する。フローとは、送信者アドレスや受信者
アドレスなどの組合せで識別されるパケットのグループ
である。アクティブリストの先頭からフロー識別子を取
り出し、そのフローのパケットを、フロー毎に定められ
た重みに基づいてまとめて送出する。具体的には、送出
するパケット長の合計がそのフローに設定された重み値
を越えない範囲でそのフローのパケットの送出を連続し
て行う。重み値いっぱいまで送出した後まだそのフロー
に出力待ちパケットが存在するなら、そのフロー識別子
をアクティブリストの末尾へ再び入れる。
arghese:“Efficient Fair Q
ueueing Using Deficit Rou
ndRobin”,pp231−242,SIGCOM
M ’95,1995.にて、DRR(Deficit
Round Robin)と呼ばれるパケット送出ア
ルゴリズムが示された。DRRは送出待ちパケットが存
在するフローの識別子をアクティブリストと呼ばれるキ
ューで管理する。フローとは、送信者アドレスや受信者
アドレスなどの組合せで識別されるパケットのグループ
である。アクティブリストの先頭からフロー識別子を取
り出し、そのフローのパケットを、フロー毎に定められ
た重みに基づいてまとめて送出する。具体的には、送出
するパケット長の合計がそのフローに設定された重み値
を越えない範囲でそのフローのパケットの送出を連続し
て行う。重み値いっぱいまで送出した後まだそのフロー
に出力待ちパケットが存在するなら、そのフロー識別子
をアクティブリストの末尾へ再び入れる。
【0005】DRRは、フロー毎に適当な重み値を設定
することで物理回線に送出するスループットをフロー毎
に所望の割合に設定することができる。重みが大きいほ
ど割り当てられるスループットの割合が大きくなる。
することで物理回線に送出するスループットをフロー毎
に所望の割合に設定することができる。重みが大きいほ
ど割り当てられるスループットの割合が大きくなる。
【0006】また、次にどのフローのパケットを出力す
べきかという決定をするためにはアクティブリストの先
頭のフロー識別子だけ参照すればよいため、フロー数が
多くなっても出力すべきパケットの選択に必要な処理量
が一定であり少ないという利点がある。
べきかという決定をするためにはアクティブリストの先
頭のフロー識別子だけ参照すればよいため、フロー数が
多くなっても出力すべきパケットの選択に必要な処理量
が一定であり少ないという利点がある。
【0007】しかしこの特徴を生かすため、DRRは重
みの大きさをフローに想定される最大パケット長以上の
値に設定する必要がある。この制約条件のため、小さな
スループットに設定したいフローが大きな最大パケット
長を持つほど大きな重み値を設定しなければならない。
大きな重みを設定するということは、ひとつのフローか
ら一時的にまとまった量のパケットがバースト的に出力
されるということになる。
みの大きさをフローに想定される最大パケット長以上の
値に設定する必要がある。この制約条件のため、小さな
スループットに設定したいフローが大きな最大パケット
長を持つほど大きな重み値を設定しなければならない。
大きな重みを設定するということは、ひとつのフローか
ら一時的にまとまった量のパケットがバースト的に出力
されるということになる。
【0008】結局、従来のパケット送出装置では、パケ
ット選択が容易である利点はあったが、短いパケットを
送出する際にも予想される最大パケット長を基準として
設定された重みを使用するためフロー毎のバースト性が
高くなってしまい、結果的にネットワーク内におけるパ
ケットのバッファ溢れが発生し易いという欠点があっ
た。
ット選択が容易である利点はあったが、短いパケットを
送出する際にも予想される最大パケット長を基準として
設定された重みを使用するためフロー毎のバースト性が
高くなってしまい、結果的にネットワーク内におけるパ
ケットのバッファ溢れが発生し易いという欠点があっ
た。
【0009】
【発明が解決しようとする課題】以上述べたように、従
来のパケット送出装置は、短いパケットを送出する際に
も予想される最大パケット長を基準として設定された重
みを使用するためフロー毎のバースト性が高くなってし
まい、結果的にネットワーク内におけるパケットのバッ
ファ溢れが発生し易いという問題点があった。
来のパケット送出装置は、短いパケットを送出する際に
も予想される最大パケット長を基準として設定された重
みを使用するためフロー毎のバースト性が高くなってし
まい、結果的にネットワーク内におけるパケットのバッ
ファ溢れが発生し易いという問題点があった。
【0010】本発明は、上記事情を考慮してなされたも
ので、送出するパケットの選択が容易である利点を持ち
つつ、各フローからのパケット送出を必要最小限のバー
ストに抑えることのできるパケット送出装置及びパケッ
ト送出方法を提供することを目的とする。
ので、送出するパケットの選択が容易である利点を持ち
つつ、各フローからのパケット送出を必要最小限のバー
ストに抑えることのできるパケット送出装置及びパケッ
ト送出方法を提供することを目的とする。
【0011】
【課題を解決するための手段】本発明(請求項1)は、
送出すべきパケットが存在するグループの識別子のリス
トに基づいてパケットを送出するパケット送出装置であ
って、リストに基づくパケット送出の各ラウンド(巡
回)において、各々のグループ毎の送出パケット量の重
みを考慮した累積値(実施形態におけるF)が、当該ラ
ウンドでのしきい値(実施形態におけるFmax)を越
えるまで、各々のグループからパケットを送出する手段
と、先行するラウンドの終了時点における各グループの
累積値(F)のうちの最大値を後続するラウンドでのし
きい値(Fmax)として設定する手段とを備えたこと
を特徴とする。
送出すべきパケットが存在するグループの識別子のリス
トに基づいてパケットを送出するパケット送出装置であ
って、リストに基づくパケット送出の各ラウンド(巡
回)において、各々のグループ毎の送出パケット量の重
みを考慮した累積値(実施形態におけるF)が、当該ラ
ウンドでのしきい値(実施形態におけるFmax)を越
えるまで、各々のグループからパケットを送出する手段
と、先行するラウンドの終了時点における各グループの
累積値(F)のうちの最大値を後続するラウンドでのし
きい値(Fmax)として設定する手段とを備えたこと
を特徴とする。
【0012】好ましくは、前記送出する手段は、1つの
パケットを送出するごとに、該パケットの属するグルー
プについて予め定められた重みで該パケットのパケット
長を割った値を、それまでの該グループの累積値に加算
して、新たな累積値を得るものであるようにしてもよ
い。
パケットを送出するごとに、該パケットの属するグルー
プについて予め定められた重みで該パケットのパケット
長を割った値を、それまでの該グループの累積値に加算
して、新たな累積値を得るものであるようにしてもよ
い。
【0013】好ましくは、前記送出する手段は、1つの
パケットを送出するごとに、該パケットの属するグルー
プの累積値を求め、求められた累積値が依然として当該
ラウンドでのしきい値以下であり、かつ、該グループに
依然として送出待ちのパケットが存在する場合には、続
けて該グループから1つのパケットを送出するものであ
るようにしてもよい。
パケットを送出するごとに、該パケットの属するグルー
プの累積値を求め、求められた累積値が依然として当該
ラウンドでのしきい値以下であり、かつ、該グループに
依然として送出待ちのパケットが存在する場合には、続
けて該グループから1つのパケットを送出するものであ
るようにしてもよい。
【0014】好ましくは、新たに送出すべきパケットが
発生し前記リストに前記識別子が入力されたグループの
累積値を、そのラウンドでのしきい値または該しきい値
より小さい所定の値に設定する手段をさらに備えるよう
にしてもよい。
発生し前記リストに前記識別子が入力されたグループの
累積値を、そのラウンドでのしきい値または該しきい値
より小さい所定の値に設定する手段をさらに備えるよう
にしてもよい。
【0015】好ましくは、所定のタイミングで前記累積
値および前記しきい値をそれらの関係を保ってより小さ
い値に変換する手段をさらに備えるようにしてもよい。
好ましくは、1つのパケットが序列を持つ複数のセルで
構成される場合に、該パケットを構成する最後のセルが
到着した時点で、該パケットが到着したものとして扱う
ための手段をさらに備えるようにしてもよい。
値および前記しきい値をそれらの関係を保ってより小さ
い値に変換する手段をさらに備えるようにしてもよい。
好ましくは、1つのパケットが序列を持つ複数のセルで
構成される場合に、該パケットを構成する最後のセルが
到着した時点で、該パケットが到着したものとして扱う
ための手段をさらに備えるようにしてもよい。
【0016】好ましくは、1つのパケットが序列を持つ
複数のセルで構成される場合に、予め定められたグルー
プに属するパケットを構成する最初のセルが到着した時
点で、該パケットが到着したものとして扱うための手段
と、前記最初のセルが到着したパケットを構成する最後
のセルを送出するまで、予め定められた他のグループに
属するパケットを送出させないための制御を行う手段と
をさらに備えるようにしてもよい。
複数のセルで構成される場合に、予め定められたグルー
プに属するパケットを構成する最初のセルが到着した時
点で、該パケットが到着したものとして扱うための手段
と、前記最初のセルが到着したパケットを構成する最後
のセルを送出するまで、予め定められた他のグループに
属するパケットを送出させないための制御を行う手段と
をさらに備えるようにしてもよい。
【0017】本発明(請求項8)は、入力されたパケッ
トをグループ毎に蓄積する手段と、送出すべきパケット
が存在するグループの識別子のリストを管理する手段
と、前記リストに基づいて、パケット送出すべきグルー
プを1つずつ繰り返し選択する手段と、選択されたグル
ープについて、1つパケットを送出するごとに、該グル
ープについて予め定められた重みで該パケットのパケッ
ト長を割った値をそれまでの該グループの累積値(実施
形態におけるF)に加算して新たな累積値(F)を求
め、求められた新たな累積値(F)が依然として当該時
点でのしきい値(実施形態におけるFmax)以下であ
る場合は、続けて該グループから1つのパケットを送出
する処理を繰り返す手段と、この手段による処理が、前
記リスト内に存在するすべての識別子に対して一通り実
行された場合に、当該時点における各グループの累積値
(F)のうちの最大値を新たなしきい値(Fmax)と
して設定する手段とを備えたことを特徴とする。
トをグループ毎に蓄積する手段と、送出すべきパケット
が存在するグループの識別子のリストを管理する手段
と、前記リストに基づいて、パケット送出すべきグルー
プを1つずつ繰り返し選択する手段と、選択されたグル
ープについて、1つパケットを送出するごとに、該グル
ープについて予め定められた重みで該パケットのパケッ
ト長を割った値をそれまでの該グループの累積値(実施
形態におけるF)に加算して新たな累積値(F)を求
め、求められた新たな累積値(F)が依然として当該時
点でのしきい値(実施形態におけるFmax)以下であ
る場合は、続けて該グループから1つのパケットを送出
する処理を繰り返す手段と、この手段による処理が、前
記リスト内に存在するすべての識別子に対して一通り実
行された場合に、当該時点における各グループの累積値
(F)のうちの最大値を新たなしきい値(Fmax)と
して設定する手段とを備えたことを特徴とする。
【0018】本発明(請求項9)は、送出すべきパケッ
トが存在するグループの識別子のリストに基づいてパケ
ットを送出するパケット送出装置におけるパケット送出
方法であって、リストに基づくパケット送出の各ラウン
ド(巡回)において、各々のグループ毎の送出パケット
量の重みを考慮した累積値(実施形態におけるF)が、
当該ラウンドでのしきい値(実施形態におけるFma
x)を越えるまで、各々のグループからパケットを送出
し、各ラウンドの終了時点における各グループの累積値
(F)のうちの最大値を次のラウンドでのしきい値(F
max)とすることを特徴とする。
トが存在するグループの識別子のリストに基づいてパケ
ットを送出するパケット送出装置におけるパケット送出
方法であって、リストに基づくパケット送出の各ラウン
ド(巡回)において、各々のグループ毎の送出パケット
量の重みを考慮した累積値(実施形態におけるF)が、
当該ラウンドでのしきい値(実施形態におけるFma
x)を越えるまで、各々のグループからパケットを送出
し、各ラウンドの終了時点における各グループの累積値
(F)のうちの最大値を次のラウンドでのしきい値(F
max)とすることを特徴とする。
【0019】本発明(請求項10)は、各ラウンド毎
に、送出すべきパケットが存在するグループの識別子の
リストに基づいてパケットを送出するパケット送出装置
におけるパケット送出方法であって、リストに基づいて
選択された1つのグループについて、1つパケットを送
出するごとに、該グループについて予め定められた重み
で該パケットのパケット長を割った値をそれまでの該グ
ループの累積値(実施形態におけるF)に加算して新た
な累積値(F)を求め、求められた新たな累積値(F)
が依然として当該ラウンドでのしきい値(実施形態にお
けるFmax)以下である場合は、続けて該グループか
ら1つのパケットを送出し、求められた累積値(F)が
当該ラウンドでのしきい値(Fmax)を越えた場合に
は、次のグループをリストに基づいて選択する処理を、
前記リスト内に存在するすべての識別子に対して実行す
るまで繰り返し、このラウンドの終了時点における各グ
ループの累積値(F)のうちの最大値を次のラウンドで
のしきい値(Fmax)とすることを特徴とする。
に、送出すべきパケットが存在するグループの識別子の
リストに基づいてパケットを送出するパケット送出装置
におけるパケット送出方法であって、リストに基づいて
選択された1つのグループについて、1つパケットを送
出するごとに、該グループについて予め定められた重み
で該パケットのパケット長を割った値をそれまでの該グ
ループの累積値(実施形態におけるF)に加算して新た
な累積値(F)を求め、求められた新たな累積値(F)
が依然として当該ラウンドでのしきい値(実施形態にお
けるFmax)以下である場合は、続けて該グループか
ら1つのパケットを送出し、求められた累積値(F)が
当該ラウンドでのしきい値(Fmax)を越えた場合に
は、次のグループをリストに基づいて選択する処理を、
前記リスト内に存在するすべての識別子に対して実行す
るまで繰り返し、このラウンドの終了時点における各グ
ループの累積値(F)のうちの最大値を次のラウンドで
のしきい値(Fmax)とすることを特徴とする。
【0020】本発明は、例えば、インターネット網のル
ータにおけるパケット送出スケジューラや、ATM通信
網のATMスイッチのセル送出スケジューラに適用でき
る。なお、装置に係る本発明は方法に係る発明としても
成立し、方法に係る本発明は装置に係る発明としても成
立する。
ータにおけるパケット送出スケジューラや、ATM通信
網のATMスイッチのセル送出スケジューラに適用でき
る。なお、装置に係る本発明は方法に係る発明としても
成立し、方法に係る本発明は装置に係る発明としても成
立する。
【0021】また、装置または方法に係る本発明は、コ
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
【0022】本発明によれば、パケット送出の各ラウン
ドにおいて、各々のグループ毎の送出パケット量の重み
を考慮した累積値が、当該ラウンドでのしきい値を越え
るまで、各々のグループからパケットを送出するととも
に、各ラウンドの終了時点における各グループの累積値
のうちの最大値を次のラウンドでのしきい値として設定
するので、送出するパケットの選択がグループ数、例え
ばフロー数、に依存せず容易に可能であり、かつ、その
時々で実際に送出しているパケット量と重みを用いて、
各グループが1ラウンドに送出できるパケット量を動的
に決定することができるため、各グループのパケット送
出を必要最小限のバーストに抑えることができる。
ドにおいて、各々のグループ毎の送出パケット量の重み
を考慮した累積値が、当該ラウンドでのしきい値を越え
るまで、各々のグループからパケットを送出するととも
に、各ラウンドの終了時点における各グループの累積値
のうちの最大値を次のラウンドでのしきい値として設定
するので、送出するパケットの選択がグループ数、例え
ばフロー数、に依存せず容易に可能であり、かつ、その
時々で実際に送出しているパケット量と重みを用いて、
各グループが1ラウンドに送出できるパケット量を動的
に決定することができるため、各グループのパケット送
出を必要最小限のバーストに抑えることができる。
【0023】
【発明の実施の形態】以下、図面を参照しながら発明の
実施の形態を説明する。図1は本発明を適用したパケッ
ト送出装置の一構成例である。本パケット送出装置は、
例えば、ATMスイッチやIPルータの場合、各ポート
の出力処理部分に相当する。もし、各ポートが複数のク
ラスの優先制御や帯域分割制御などを行っている場合に
は、そのうちの1つまたは複数のクラスのそれぞれにお
ける出力処理部分に相当する。
実施の形態を説明する。図1は本発明を適用したパケッ
ト送出装置の一構成例である。本パケット送出装置は、
例えば、ATMスイッチやIPルータの場合、各ポート
の出力処理部分に相当する。もし、各ポートが複数のク
ラスの優先制御や帯域分割制御などを行っている場合に
は、そのうちの1つまたは複数のクラスのそれぞれにお
ける出力処理部分に相当する。
【0024】まず、本パケット送出装置の基本的な構成
について説明する。図1に示されるように、本パケット
送出装置は、パケットをグループ毎に蓄積するグループ
毎パケットキュー(VQ)2と、出力待ちパケットの存
在するVQの識別子のリスト(SQ)4を管理するリス
ト管理部8と、リスト管理部8のSQの先頭にあるVQ
の識別子を参照し、該当するVQからパケットを後述す
る条件に応じた数量だけ(1つまたは複数のパケット
を)連続して出力させる、ことを繰り返し行うための、
セレクタ6とを有する。ここで、「連続して」の意味
は、同一SQで管理するパケットの中で連続してという
ことであり、複数のSQが優先制御などで組み合わせら
れている場合には、その間に他のSQからのパケットが
出力される場合もある。
について説明する。図1に示されるように、本パケット
送出装置は、パケットをグループ毎に蓄積するグループ
毎パケットキュー(VQ)2と、出力待ちパケットの存
在するVQの識別子のリスト(SQ)4を管理するリス
ト管理部8と、リスト管理部8のSQの先頭にあるVQ
の識別子を参照し、該当するVQからパケットを後述す
る条件に応じた数量だけ(1つまたは複数のパケット
を)連続して出力させる、ことを繰り返し行うための、
セレクタ6とを有する。ここで、「連続して」の意味
は、同一SQで管理するパケットの中で連続してという
ことであり、複数のSQが優先制御などで組み合わせら
れている場合には、その間に他のSQからのパケットが
出力される場合もある。
【0025】あるグループに対応するVQに送出待ちの
パケットが発生すると、リスト管理部8のSQにそのV
Qを示す識別子が入れられる。SQの先頭にあるVQの
識別子は、セレクタ6に参照された後にSQから取り出
されるとともに、まだその識別子により示されるVQ内
に送出待ちのパケットが存在する場合には、その識別子
はSQの末尾に再度、入れられる。
パケットが発生すると、リスト管理部8のSQにそのV
Qを示す識別子が入れられる。SQの先頭にあるVQの
識別子は、セレクタ6に参照された後にSQから取り出
されるとともに、まだその識別子により示されるVQ内
に送出待ちのパケットが存在する場合には、その識別子
はSQの末尾に再度、入れられる。
【0026】次に、図1のVQに関して説明する。前述
のように、VQは、グループ毎に分けられた、送出すべ
きパケットを蓄積するキューである。以下では、VQの
識別子をVCIと呼ぶことにする。ここでいうグループ
の分類は、例えば、仮想コネクション別、IPパケット
のフロー別、アプリケーション別、または品質クラス別
などである。
のように、VQは、グループ毎に分けられた、送出すべ
きパケットを蓄積するキューである。以下では、VQの
識別子をVCIと呼ぶことにする。ここでいうグループ
の分類は、例えば、仮想コネクション別、IPパケット
のフロー別、アプリケーション別、または品質クラス別
などである。
【0027】ところで、本パケット送出装置のパケット
キュー構成は、その用途に応じて種々の構成が考えられ
る。すなわち、(1)図1に例示したもののように、全
ての「VQ」を単純なFIFOキューにする構成の他
に、(2)一部の「VQ」は単純なFIFOキューであ
るが、他の「VQ」については、その「VQ」の中にさ
らに優先度や重みでスケジューリングされる複数のVQ
があるような階層構造を持つような構成、(3)全ての
「VQ」が階層構造を持つような構成が考えられる。
キュー構成は、その用途に応じて種々の構成が考えられ
る。すなわち、(1)図1に例示したもののように、全
ての「VQ」を単純なFIFOキューにする構成の他
に、(2)一部の「VQ」は単純なFIFOキューであ
るが、他の「VQ」については、その「VQ」の中にさ
らに優先度や重みでスケジューリングされる複数のVQ
があるような階層構造を持つような構成、(3)全ての
「VQ」が階層構造を持つような構成が考えられる。
【0028】上記の(2)や(3)において、階層構造
を持つ各VQについてそのキューの階層構造は2階層以
上あってもよい(例えば、「VQ」の中に優先度や重み
でスケジューリングされる複数の『VQ』があり、その
『VQ』の中にさらに優先度や重みでスケジューリング
される複数のVQがあるような構成であってもよい)。
もちろん、上記の(2)や(3)で階層構造を持つVQ
が複数ある場合に、階層構造を持つ全部のVQが同一の
階層構造を持つものであってもよいし、VQ毎に独自の
階層構造を持つものであってもよい。
を持つ各VQについてそのキューの階層構造は2階層以
上あってもよい(例えば、「VQ」の中に優先度や重み
でスケジューリングされる複数の『VQ』があり、その
『VQ』の中にさらに優先度や重みでスケジューリング
される複数のVQがあるような構成であってもよい)。
もちろん、上記の(2)や(3)で階層構造を持つVQ
が複数ある場合に、階層構造を持つ全部のVQが同一の
階層構造を持つものであってもよいし、VQ毎に独自の
階層構造を持つものであってもよい。
【0029】このパケットキューに階層構造を採用する
構成は、異なる性質や要求を持つグループ間で物理リン
クを共用するときに有効であり、そして、本発明(例え
ばその特徴的なスケジューリングアルゴリズム)は、こ
の各階層の重み付きスケジューリングをする部分にそれ
ぞれ適用することができる。例えば、図1のあるVQの
中に図1の構成が存在するような構成にすることが可能
である。
構成は、異なる性質や要求を持つグループ間で物理リン
クを共用するときに有効であり、そして、本発明(例え
ばその特徴的なスケジューリングアルゴリズム)は、こ
の各階層の重み付きスケジューリングをする部分にそれ
ぞれ適用することができる。例えば、図1のあるVQの
中に図1の構成が存在するような構成にすることが可能
である。
【0030】次に、図1のSQに関して説明する。前述
したように、パケットをどのVQから出力すべきかはS
Qにより指定される。SQは送出すべきパケットが存在
するVQのVCIのリストを管理し、VCIを順番にピ
ックアップすることでどのVQからパケットを出力すべ
きかを指示する。本発明はSQの具体的な実現方法に関
わらず有効に作用するが、SQは簡単にはDRRのアク
ティブリストのようにVCIのFIFOでよい。送出待
ちパケットがないアイドル状態のVQにパケットが到着
しアクティブ状態になった場合、SQの末尾にそのVC
Iをエンキューする。パケットの送出はSQの先頭のV
CIで示されるVQから行なう。今のVCIのパケット
送出を中断し次のVCIに進む場合にはSQの先頭のV
CIをFIFOからデキューし、SQの先頭を新しいV
CIにする。もし取り出したVCIのVQに送出すべき
パケットがまだ残っている場合には、再びSQの末尾に
そのVCIをエンキューしておく。
したように、パケットをどのVQから出力すべきかはS
Qにより指定される。SQは送出すべきパケットが存在
するVQのVCIのリストを管理し、VCIを順番にピ
ックアップすることでどのVQからパケットを出力すべ
きかを指示する。本発明はSQの具体的な実現方法に関
わらず有効に作用するが、SQは簡単にはDRRのアク
ティブリストのようにVCIのFIFOでよい。送出待
ちパケットがないアイドル状態のVQにパケットが到着
しアクティブ状態になった場合、SQの末尾にそのVC
Iをエンキューする。パケットの送出はSQの先頭のV
CIで示されるVQから行なう。今のVCIのパケット
送出を中断し次のVCIに進む場合にはSQの先頭のV
CIをFIFOからデキューし、SQの先頭を新しいV
CIにする。もし取り出したVCIのVQに送出すべき
パケットがまだ残っている場合には、再びSQの末尾に
そのVCIをエンキューしておく。
【0031】次に、以下で用いる一連の処理の単位、ラ
ウンドについて説明する。SQが管理する全てのVCI
を一通り指示する期間を、ここでは、「ラウンド(巡
回)」と呼ぶ。ラウンドは繰り返されるので、あるラウ
ンドの終了時点は次のラウンドの開始時点になる。ラウ
ンドの具体的な定義によらず本発明は有効に作用するの
で、その正確な定義(例えば、隣接するラウンドの区切
りの定義)は本発明では必ずしも重要ではないが、簡単
な例としては、ラウンドの開始時点でSQ内に蓄積され
ているVCIの数をカウンタに設定し、VCIを1つ処
理する毎にそのカウンタをデクリメントして、0になっ
た時点をラウンドの終りとすれば、容易にそのラウンド
の終了時点を判定できる。
ウンドについて説明する。SQが管理する全てのVCI
を一通り指示する期間を、ここでは、「ラウンド(巡
回)」と呼ぶ。ラウンドは繰り返されるので、あるラウ
ンドの終了時点は次のラウンドの開始時点になる。ラウ
ンドの具体的な定義によらず本発明は有効に作用するの
で、その正確な定義(例えば、隣接するラウンドの区切
りの定義)は本発明では必ずしも重要ではないが、簡単
な例としては、ラウンドの開始時点でSQ内に蓄積され
ているVCIの数をカウンタに設定し、VCIを1つ処
理する毎にそのカウンタをデクリメントして、0になっ
た時点をラウンドの終りとすれば、容易にそのラウンド
の終了時点を判定できる。
【0032】次に、以下で用いる変数FとFmaxにつ
いて説明する。本発明では、各VQ(すなわち各グルー
プ)のパケットを重みに基づいて公平に出力するため
に、VQ毎にFという変数を計算する。Fは各VQの送
出パケット量の重みを考慮した値(例えば、送出パケッ
ト量/重み)である。例えば、あるVQからパケットを
出力する毎に、そのパケットのパケット長を重みで割っ
た値をFに加算する。重みはVQ毎に予め定められるも
のとする。
いて説明する。本発明では、各VQ(すなわち各グルー
プ)のパケットを重みに基づいて公平に出力するため
に、VQ毎にFという変数を計算する。Fは各VQの送
出パケット量の重みを考慮した値(例えば、送出パケッ
ト量/重み)である。例えば、あるVQからパケットを
出力する毎に、そのパケットのパケット長を重みで割っ
た値をFに加算する。重みはVQ毎に予め定められるも
のとする。
【0033】本発明では、このFが各VQでなるべく同
じになるようにパケットを出力する。そのために、各ラ
ウンドで1つのしきい値Fmaxを定め、各VQのFが
Fmaxを越えるまでパケットを送出することが本発明
の特徴の1つである。
じになるようにパケットを出力する。そのために、各ラ
ウンドで1つのしきい値Fmaxを定め、各VQのFが
Fmaxを越えるまでパケットを送出することが本発明
の特徴の1つである。
【0034】本発明のもう1つの特徴は、各ラウンドの
開始時点(すなわち1つ前のラウンドの終了時点)にお
ける、各VQのFのうち最大のものを次のラウンドのF
maxとすることである。
開始時点(すなわち1つ前のラウンドの終了時点)にお
ける、各VQのFのうち最大のものを次のラウンドのF
maxとすることである。
【0035】これにより、たまたまどれかのVQから長
いパケットが送出されたときだけは各VQからの送出パ
ケットが多くなるものの、短いパケットしか送出されな
いときには各VQからのパケット出力は少しずつにな
る。つまり、各VQからのパケット送出のバースト性が
なるべく低く抑えられるように、動的にFmaxの値が
調整される。
いパケットが送出されたときだけは各VQからの送出パ
ケットが多くなるものの、短いパケットしか送出されな
いときには各VQからのパケット出力は少しずつにな
る。つまり、各VQからのパケット送出のバースト性が
なるべく低く抑えられるように、動的にFmaxの値が
調整される。
【0036】なお、パケットを出力させているあるVQ
のFが依然としてFmax以下であっても、そのVQが
空になった場合には、このVQの識別子をSQからデキ
ューして、次の処理に移る。
のFが依然としてFmax以下であっても、そのVQが
空になった場合には、このVQの識別子をSQからデキ
ューして、次の処理に移る。
【0037】また、あるVQにおいて、最後の出力待ち
パケットを出力した時点で、そのFがFmaxを越え、
かつ、そのFが当該ラウンドの終了時点での最大値とな
る場合も考えられるが、このような場合には、そのFを
次のラウンドのFmaxとしてもよいが、次のラウンド
でSQ内にVCIの存在するVQのFのうちの最大値を
Fmaxとしてもよい。
パケットを出力した時点で、そのFがFmaxを越え、
かつ、そのFが当該ラウンドの終了時点での最大値とな
る場合も考えられるが、このような場合には、そのFを
次のラウンドのFmaxとしてもよいが、次のラウンド
でSQ内にVCIの存在するVQのFのうちの最大値を
Fmaxとしてもよい。
【0038】また、非常に長いパケット(すなわちパケ
ット長/重みを非常に大きくするパケット)の送出(特
に特定のVQで非常に長いパケットが連続する場合)に
よるバーストの増大を回避するために、隣接するラウン
ドでのFmaxの増分の最大値dmaxを決めておき、
Fの値がFmax+dmaxを越えるならば、Fの値を
Fmaxを当該ラウンドのFmax+dmaxとするな
どの処理を行ってもよい。このようにすれば、公平性は
多少弱まることがあるが、バースト性がより小さくなる
利点がある。
ット長/重みを非常に大きくするパケット)の送出(特
に特定のVQで非常に長いパケットが連続する場合)に
よるバーストの増大を回避するために、隣接するラウン
ドでのFmaxの増分の最大値dmaxを決めておき、
Fの値がFmax+dmaxを越えるならば、Fの値を
Fmaxを当該ラウンドのFmax+dmaxとするな
どの処理を行ってもよい。このようにすれば、公平性は
多少弱まることがあるが、バースト性がより小さくなる
利点がある。
【0039】ここで、本発明を適用したパケット送出装
置の動作の一形態について、図2に例示したパケット送
出装置から送出されるパケットの送出順序の具体例を参
照しながら説明する。図2は、VQ[0]、VQ
[1]、VQ[2]の3つのVQに送出すべきパケット
が存在する場合の例である。図2の右のパケットから左
のパケットに向かって順に送出される。
置の動作の一形態について、図2に例示したパケット送
出装置から送出されるパケットの送出順序の具体例を参
照しながら説明する。図2は、VQ[0]、VQ
[1]、VQ[2]の3つのVQに送出すべきパケット
が存在する場合の例である。図2の右のパケットから左
のパケットに向かって順に送出される。
【0040】ラウンドrのFmaxをFmax(r)で
表す。VQ[0]〜VQ[2]のそれぞれのFをF
(0)〜F(2)で表す。VQ[0]〜VQ[2]のそ
れぞれの重みをW(0)〜W(2)で表す。
表す。VQ[0]〜VQ[2]のそれぞれのFをF
(0)〜F(2)で表す。VQ[0]〜VQ[2]のそ
れぞれの重みをW(0)〜W(2)で表す。
【0041】パケットpのパケット長をL(p)で表
す。この例ではラウンド0の開始時点のFmax(0)
およびF(0)〜F(2)の初期値を0とする。
す。この例ではラウンド0の開始時点のFmax(0)
およびF(0)〜F(2)の初期値を0とする。
【0042】また、各VQの重みW(0)〜W(2)は
適宜定められているものとする。すなわち、図2のパケ
ットを示す矩形の幅は、パケット長/重みに相当するも
のである。
適宜定められているものとする。すなわち、図2のパケ
ットを示す矩形の幅は、パケット長/重みに相当するも
のである。
【0043】また、ここでは説明の便宜上、VQ
[0]、VQ[1]、VQ[2]の順番でパケット出力
がなされるものとする。さて、ラウンド0では、Fma
x(0)=F(0)=F(1)=F(2)=0で、どの
VQのFもFmax(0)を越えていないが、1つずつ
パケットを出力したところで、どのVQのFもFmax
(0)を越えることになる。すなわち、VQ[0]から
1つのパケットp00が出力され、VQ[1]から1つ
のパケットp10が出力され、VQ[2]から1つのパ
ケットp20が出力され、これでこのラウンド0でのパ
ケット送出は終了し、次のラウンド1に移行する。
[0]、VQ[1]、VQ[2]の順番でパケット出力
がなされるものとする。さて、ラウンド0では、Fma
x(0)=F(0)=F(1)=F(2)=0で、どの
VQのFもFmax(0)を越えていないが、1つずつ
パケットを出力したところで、どのVQのFもFmax
(0)を越えることになる。すなわち、VQ[0]から
1つのパケットp00が出力され、VQ[1]から1つ
のパケットp10が出力され、VQ[2]から1つのパ
ケットp20が出力され、これでこのラウンド0でのパ
ケット送出は終了し、次のラウンド1に移行する。
【0044】この時点での各VQのFの値は、それぞ
れ、F(0)=L(p00)/W(0)、F(1)=L
(p10)/W(1)、F(1)=L(p20)/W
(2)である。ここで、F(1)〜F(3)のうちで最
も大きい値を有するものは、F(0)であるので、ラウ
ンド1では、Fmax(1)の値は、ラウンド0の終了
時点におけるFの最大値であるF(0)の値になる。
れ、F(0)=L(p00)/W(0)、F(1)=L
(p10)/W(1)、F(1)=L(p20)/W
(2)である。ここで、F(1)〜F(3)のうちで最
も大きい値を有するものは、F(0)であるので、ラウ
ンド1では、Fmax(1)の値は、ラウンド0の終了
時点におけるFの最大値であるF(0)の値になる。
【0045】ラウンド1では、まず、VQ[0]からパ
ケットp01が出力される。すると、F(0)=L(p
00)/W(0)+L(p01)/W(0)がFmax
(1)を越えるので、これでラウンド1でのVQ[0]
からのパケット送出は終りとなる。同様に、VQ[1]
から1つのパケットp11が出力され、VQ[2]から
1つのパケットp21が出力されると、すべてのVQの
FはFmax(1)を越え、次のラウンド2へ移行す
る。
ケットp01が出力される。すると、F(0)=L(p
00)/W(0)+L(p01)/W(0)がFmax
(1)を越えるので、これでラウンド1でのVQ[0]
からのパケット送出は終りとなる。同様に、VQ[1]
から1つのパケットp11が出力され、VQ[2]から
1つのパケットp21が出力されると、すべてのVQの
FはFmax(1)を越え、次のラウンド2へ移行す
る。
【0046】ラウンド2のFmax(2)は、ラウンド
1の終了時点でFが最も大きいVQ[0]のFの値にな
る。ラウンド2においては、まず、VQ[0]からは1
つのパケットp02が出力される。Fmaxを与えるこ
ととなったVQではF=Fmaxであるので、1つだけ
のパケット出力となる。
1の終了時点でFが最も大きいVQ[0]のFの値にな
る。ラウンド2においては、まず、VQ[0]からは1
つのパケットp02が出力される。Fmaxを与えるこ
ととなったVQではF=Fmaxであるので、1つだけ
のパケット出力となる。
【0047】次に、VQ[1]からパケットp12が出
力される。この場合、F(1)=L(p10)/W
(1)+L(p11)/W(1)+L(p12)/W
(1)が依然としてFmax(2)の値以下であるの
で、続けてVQ[1]からパケットp13が出力され
る。そして、この時点で、F(1)がFmax(2)を
越えるので、これでラウンド2でのVQ[1]からのパ
ケット送出は終りとなる。ここでは、最初に送出したp
12のパケット長が短かったためp13も送出すること
ができたことになる。
力される。この場合、F(1)=L(p10)/W
(1)+L(p11)/W(1)+L(p12)/W
(1)が依然としてFmax(2)の値以下であるの
で、続けてVQ[1]からパケットp13が出力され
る。そして、この時点で、F(1)がFmax(2)を
越えるので、これでラウンド2でのVQ[1]からのパ
ケット送出は終りとなる。ここでは、最初に送出したp
12のパケット長が短かったためp13も送出すること
ができたことになる。
【0048】そして、VQ[2]から1つのパケットp
22が出力されると、VQ[2]のFもFmax(2)
を越え、次のラウンド3へ移行する。ラウンド3のFm
ax(3)は、ラウンド2の終了時点でFが最も大きい
VQ[1]のFの値になる。
22が出力されると、VQ[2]のFもFmax(2)
を越え、次のラウンド3へ移行する。ラウンド3のFm
ax(3)は、ラウンド2の終了時点でFが最も大きい
VQ[1]のFの値になる。
【0049】以下、同様に、図2のようにして各VCか
らパケットが出力されていく。このように本発明は、実
際に送出されたパケット長に応じてFmaxの増加量を
調整するので、各VQからのパケット出力のバースト性
を可能な限り小さく抑える効果があることがわかる。
らパケットが出力されていく。このように本発明は、実
際に送出されたパケット長に応じてFmaxの増加量を
調整するので、各VQからのパケット出力のバースト性
を可能な限り小さく抑える効果があることがわかる。
【0050】例えば図2において、ラウンド2でVQ
[1]から出力されたパケットp13のパケット長が長
かったため、次のラウンドのFmax(3)とFmax
(2)の差は大きな値になっているが、ラウンド3で各
VQから送出されたパケット長が全て短かったため、次
のラウンド4では、max(4)とFmax(3)の差
は小さいことがわかる。すなわち、図2においては、長
いパケットが送出されたラウンドのFmaxと次のラウ
ンドのFmaxとの差だけが大きくなるり、バースト性
を最小限に抑えていることがわかる。
[1]から出力されたパケットp13のパケット長が長
かったため、次のラウンドのFmax(3)とFmax
(2)の差は大きな値になっているが、ラウンド3で各
VQから送出されたパケット長が全て短かったため、次
のラウンド4では、max(4)とFmax(3)の差
は小さいことがわかる。すなわち、図2においては、長
いパケットが送出されたラウンドのFmaxと次のラウ
ンドのFmaxとの差だけが大きくなるり、バースト性
を最小限に抑えていることがわかる。
【0051】これに対して、従来のDRRを用いた場
合、例えば図2では最も長いパケット(p13)の長さ
に相当する量ずつ毎回固定的にFmaxが増加するよう
なパケット送出制御を行うので、短いパケットしか到着
していないときでもパケットがバースト的に出力されて
しまうことになる。
合、例えば図2では最も長いパケット(p13)の長さ
に相当する量ずつ毎回固定的にFmaxが増加するよう
なパケット送出制御を行うので、短いパケットしか到着
していないときでもパケットがバースト的に出力されて
しまうことになる。
【0052】また、公平性という観点では、図2を参照
しても分かる通り、各ラウンドで各VQのFの値のFm
axとの差は必ず1パケット以内であることがわかる。
すなわち、本発明のパケット送出装置は1パケット以内
の誤差で公平であるということが言える。
しても分かる通り、各ラウンドで各VQのFの値のFm
axとの差は必ず1パケット以内であることがわかる。
すなわち、本発明のパケット送出装置は1パケット以内
の誤差で公平であるということが言える。
【0053】次に、各VQのFとFmaxの扱いに関し
て説明する。まず、各VQのFとFmaxの初期値につ
いては、すべてを0にしてもよいが、これに限定される
ものではなく、Fmaxの初期値を他の値に設定しても
よいし、また各VQのFをFmax以下の適当な値に設
定してもよい。
て説明する。まず、各VQのFとFmaxの初期値につ
いては、すべてを0にしてもよいが、これに限定される
ものではなく、Fmaxの初期値を他の値に設定しても
よいし、また各VQのFをFmax以下の適当な値に設
定してもよい。
【0054】次に、あるVQのFがFmaxや他のFに
比べて非常に小さい値にとどまることがあった場合に、
そのままその小さいFの値を用いてそのVQからパケッ
トを送出させると、一時的に1つのVQから大なきバー
ストとしてパケットが出力がされることになってしま
う。そこで、このような場合には、例えば、Fmaxと
の差が小さくなるようにFを修正するのが好ましい。例
えば、空のVQにパケットが到着したときに、そのVQ
のFをそのときのFmaxと比較し、Fの方が小さけれ
ばFをFmaxに修正する方法が考えられる。
比べて非常に小さい値にとどまることがあった場合に、
そのままその小さいFの値を用いてそのVQからパケッ
トを送出させると、一時的に1つのVQから大なきバー
ストとしてパケットが出力がされることになってしま
う。そこで、このような場合には、例えば、Fmaxと
の差が小さくなるようにFを修正するのが好ましい。例
えば、空のVQにパケットが到着したときに、そのVQ
のFをそのときのFmaxと比較し、Fの方が小さけれ
ばFをFmaxに修正する方法が考えられる。
【0055】次に、各VQのFやFmaxはパケット送
出とともに増大するが、各VQのFやFmaxの記憶の
ために割り当てられた記憶領域により表現できる最大値
にいずれかのFが達することが想定されないような場
合、例えば、該最大値にFが達する前に装置が初期化さ
れFとFmaxが初期値に戻るような場合には、各VQ
のFやFmaxはそのまま増大させても構わないが、そ
うでない場合には、各VQのFやFmaxが上記の最大
値を越えないように処理するのが好ましい。
出とともに増大するが、各VQのFやFmaxの記憶の
ために割り当てられた記憶領域により表現できる最大値
にいずれかのFが達することが想定されないような場
合、例えば、該最大値にFが達する前に装置が初期化さ
れFとFmaxが初期値に戻るような場合には、各VQ
のFやFmaxはそのまま増大させても構わないが、そ
うでない場合には、各VQのFやFmaxが上記の最大
値を越えないように処理するのが好ましい。
【0056】例えば、Fがその取り得る最大値を越える
ことになる場合には、最大値からの超過分をFに設定
し、かつ、超過フラグをonにして、超過フラグを考慮
してFmaxやFの計算を行うとともに、SQにVCI
が入っているVQのFの超過フラグがすべてonになっ
たならば、その超過フラグをすべてoffにする方法
(ただし、上記のようなFの値の修正も行うものとす
る)、あるラウンドの開始時点(もしくは終了時点)に
おいて、Fmaxがある一定の値を越えたならば、SQ
にVCIが入っているVQのFとFmaxのそれぞれか
ら同じ値を減じて処理する方法(ただし、上記のような
Fの値の修正も行うものとする)、あるラウンドの開始
時点(もしくは終了時点)において、すべてのVQのF
のうち0以外で最も小さい値(fminとする)を取る
ものを0にするように、すべてのVQのFとFmaxの
それぞれからfminを減ずる(ただし、下限を0とす
る)方法など、種々の方法が考えられる。
ことになる場合には、最大値からの超過分をFに設定
し、かつ、超過フラグをonにして、超過フラグを考慮
してFmaxやFの計算を行うとともに、SQにVCI
が入っているVQのFの超過フラグがすべてonになっ
たならば、その超過フラグをすべてoffにする方法
(ただし、上記のようなFの値の修正も行うものとす
る)、あるラウンドの開始時点(もしくは終了時点)に
おいて、Fmaxがある一定の値を越えたならば、SQ
にVCIが入っているVQのFとFmaxのそれぞれか
ら同じ値を減じて処理する方法(ただし、上記のような
Fの値の修正も行うものとする)、あるラウンドの開始
時点(もしくは終了時点)において、すべてのVQのF
のうち0以外で最も小さい値(fminとする)を取る
ものを0にするように、すべてのVQのFとFmaxの
それぞれからfminを減ずる(ただし、下限を0とす
る)方法など、種々の方法が考えられる。
【0057】なお、上記のFとFmaxのそれぞれから
同じ値を減じる操作は、例えば、各ラウンドにおいて、
SQからVCIをデキューする毎に、そのVQの更新後
のFの値からそのラウンドのFmaxを減じるようにす
れば簡単である。この場合、次のラウンドのFmaxは
減じた後のFの最大値となる。
同じ値を減じる操作は、例えば、各ラウンドにおいて、
SQからVCIをデキューする毎に、そのVQの更新後
のFの値からそのラウンドのFmaxを減じるようにす
れば簡単である。この場合、次のラウンドのFmaxは
減じた後のFの最大値となる。
【0058】次に、本実施形態のパケット送出装置の具
体的な2つのアルゴリズムの例を説明する。本アルゴリ
ズムは、例えば、セレクタの一部として実装されるか、
あるいはセレクタに対する制御部として実装される。
体的な2つのアルゴリズムの例を説明する。本アルゴリ
ズムは、例えば、セレクタの一部として実装されるか、
あるいはセレクタに対する制御部として実装される。
【0059】以下に、後に示すアルゴリズム中で使用す
る変数名とその意味をまとめておく。 vci : VQの識別子 F[vci] : 出力済みパケット量 Fmax : Fのしきい値。初期値は任意 Ftmp : Fmaxを決定するための変
数。初期値=0 Cnt : ラウンドの周期を計るカウン
タ。初期値=0 Weight[vci] : 重み。大きいほど大きな
帯域を獲得できる iWeight[vci] : 重みの逆数。小さいほ
ど大きな帯域を獲得できる pWeight[vci] : パケット数単位の重
み。pWmode以外のときは1 SQ_Len : SQのVCI数 PQ_Len[vci] : VQのパケット数 VQ_Len[vci] : VQのセル数 EoPi : 入力したセルがEnd of
Packetセル EoPo : 送出したセルがEnd of
Packetセル BoP[vci] : 次に到着するユーザセルはパケ
ットの先頭セル mode[vci] : vciのモード。vciのモ
ードには、例えば、次のCELL、CT、SFの各モー
ドがある CELL:セル単位スケジューリング CT:パケット単位スケジューリングでCut Thr
ough SF:パケット単位スケジューリングでStore a
ndForward pWmode : パケット数単位の重みを設定す
るモード。このモードでのみpWeightを1以上に
設定可能で、かつ、F,Fmax,Ftmp,Cnt,
iWeightを使用しない blockSQ_flag : SQがブロックしてい
るかどうかを示すフラグ blockSQ_start_time: SQがブロ
ックしはじめた時刻 blockVQ−flag[vci] : VQがブロ
ックしているかどうかを示すフラグ now : 現在時刻 time_th : ブロック時間の上限 まず、図3に、本パケット送出装置にパケットが到着し
たときのエンキュー動作のフローチャートの一例を示
す。
る変数名とその意味をまとめておく。 vci : VQの識別子 F[vci] : 出力済みパケット量 Fmax : Fのしきい値。初期値は任意 Ftmp : Fmaxを決定するための変
数。初期値=0 Cnt : ラウンドの周期を計るカウン
タ。初期値=0 Weight[vci] : 重み。大きいほど大きな
帯域を獲得できる iWeight[vci] : 重みの逆数。小さいほ
ど大きな帯域を獲得できる pWeight[vci] : パケット数単位の重
み。pWmode以外のときは1 SQ_Len : SQのVCI数 PQ_Len[vci] : VQのパケット数 VQ_Len[vci] : VQのセル数 EoPi : 入力したセルがEnd of
Packetセル EoPo : 送出したセルがEnd of
Packetセル BoP[vci] : 次に到着するユーザセルはパケ
ットの先頭セル mode[vci] : vciのモード。vciのモ
ードには、例えば、次のCELL、CT、SFの各モー
ドがある CELL:セル単位スケジューリング CT:パケット単位スケジューリングでCut Thr
ough SF:パケット単位スケジューリングでStore a
ndForward pWmode : パケット数単位の重みを設定す
るモード。このモードでのみpWeightを1以上に
設定可能で、かつ、F,Fmax,Ftmp,Cnt,
iWeightを使用しない blockSQ_flag : SQがブロックしてい
るかどうかを示すフラグ blockSQ_start_time: SQがブロ
ックしはじめた時刻 blockVQ−flag[vci] : VQがブロ
ックしているかどうかを示すフラグ now : 現在時刻 time_th : ブロック時間の上限 まず、図3に、本パケット送出装置にパケットが到着し
たときのエンキュー動作のフローチャートの一例を示
す。
【0060】このフローチャートは到着パケットの廃棄
判定の結果、パケットを廃棄しないと判定した場合に実
行する。まず、適切なVQを選びそのVQへパケットを
エンキューする(ステップS11)。
判定の結果、パケットを廃棄しないと判定した場合に実
行する。まず、適切なVQを選びそのVQへパケットを
エンキューする(ステップS11)。
【0061】次に、パケット入力処理を行なう。まず、
そのVQがアイドルからアクティブに変化したかどうか
を判定する(ステップS12)。そのために、VQ内の
パケット数を示す変数PQ_Len[vci]が1未満
かどうか、つまり0かどうかを判定する。
そのVQがアイドルからアクティブに変化したかどうか
を判定する(ステップS12)。そのために、VQ内の
パケット数を示す変数PQ_Len[vci]が1未満
かどうか、つまり0かどうかを判定する。
【0062】そのVQがアイドルからアクティブに変化
したと判定された場合には、新しいF[vci]の値
を、以前のF[vci]の値と現在のFmaxのうちの
大きな方に設定する(ステップS13)。
したと判定された場合には、新しいF[vci]の値
を、以前のF[vci]の値と現在のFmaxのうちの
大きな方に設定する(ステップS13)。
【0063】VQがアイドルからアクティブに変化した
と判定された場合には、さらにSQへvciをエンキュ
ーし、SQ内のVCI数であるSQ_Lenをインクリ
メントする(ステップS14,S15)。
と判定された場合には、さらにSQへvciをエンキュ
ーし、SQ内のVCI数であるSQ_Lenをインクリ
メントする(ステップS14,S15)。
【0064】最後に、PQ_Len[vci]をインク
リメントして(ステップS16)、エンキュー処理を終
了する。次に、図4に、本パケット送出装置からパケッ
トを送出するデキューのフローチャートの一例を示す。
リメントして(ステップS16)、エンキュー処理を終
了する。次に、図4に、本パケット送出装置からパケッ
トを送出するデキューのフローチャートの一例を示す。
【0065】このフローチャートは、このSQで管理し
ているVQが少なくともひとつはアクティブのとき、つ
まりSQ_Lenが0より大きいときに実行する。ま
ず、ラウンドの処理を行なう。
ているVQが少なくともひとつはアクティブのとき、つ
まりSQ_Lenが0より大きいときに実行する。ま
ず、ラウンドの処理を行なう。
【0066】カウンタCntの値が0かどうかをチェッ
クする(ステップS21)。もし0ならラウンドの終了
を意味し、それは同時に新たなラウンドの開始を意味す
る。新たなラウンドの開始のための処理は、具体的に
は、Fmaxに変数Ftmpの値を設定し、CntにS
Q_Lenの値を設定する(ステップS22)。SQ_
LenはSQ内のVCI数である。
クする(ステップS21)。もし0ならラウンドの終了
を意味し、それは同時に新たなラウンドの開始を意味す
る。新たなラウンドの開始のための処理は、具体的に
は、Fmaxに変数Ftmpの値を設定し、CntにS
Q_Lenの値を設定する(ステップS22)。SQ_
LenはSQ内のVCI数である。
【0067】次に、SQの先頭のVCI値をvciとす
ると、vciで示されるVQからパケットを出力する
(ステップS23)。パケットを出力すると、そのVQ
のFの値であるF[vci]に、(出力パケット長)/
Weight[vci]を加える(ステップS24)。
Weight[vci]はvciの重みであり、大きい
ほど大きな帯域を獲得できる。
ると、vciで示されるVQからパケットを出力する
(ステップS23)。パケットを出力すると、そのVQ
のFの値であるF[vci]に、(出力パケット長)/
Weight[vci]を加える(ステップS24)。
Weight[vci]はvciの重みであり、大きい
ほど大きな帯域を獲得できる。
【0068】続いて、パケット出力処理を行なう。ま
ず、加算で更新されたF[vci]の値をFmaxと比
較する(ステップS25)。もしF[vci]がまだF
maxの値以下ならば、次も同じVQからパケットを送
出すればよいため、その後の処理は簡単で、単にPQ_
Len[vci]をデクリメントすればよい(ステップ
S31)。
ず、加算で更新されたF[vci]の値をFmaxと比
較する(ステップS25)。もしF[vci]がまだF
maxの値以下ならば、次も同じVQからパケットを送
出すればよいため、その後の処理は簡単で、単にPQ_
Len[vci]をデクリメントすればよい(ステップ
S31)。
【0069】そうではなく、FmaxよりもF[vc
i]の方が大きくなっていれば次は違うVQからパケッ
トを出力する。このとき、SQの先頭のvciをSQか
らデキューし、またSQ_Lenをデクリメントし(ス
テップS26)、さらに、そのVQがまだアクティブ
(PQ_Len[vci]>1)ならば(ステップS2
7)、そのvciをSQの末尾へ再エンキューし、また
SQ_Lenをインクリメントする(ステップS2
8)。そして、Fの最大値を決定するための変数である
FtmpをF[vci]の値に更新し(ステップS2
9)、ラウンドの終了を判定するための変数Cntをデ
クリメントする(ステップS30)。最後に、PQ_L
en[vci]もデクリメントする(ステップS3
1)。
i]の方が大きくなっていれば次は違うVQからパケッ
トを出力する。このとき、SQの先頭のvciをSQか
らデキューし、またSQ_Lenをデクリメントし(ス
テップS26)、さらに、そのVQがまだアクティブ
(PQ_Len[vci]>1)ならば(ステップS2
7)、そのvciをSQの末尾へ再エンキューし、また
SQ_Lenをインクリメントする(ステップS2
8)。そして、Fの最大値を決定するための変数である
FtmpをF[vci]の値に更新し(ステップS2
9)、ラウンドの終了を判定するための変数Cntをデ
クリメントする(ステップS30)。最後に、PQ_L
en[vci]もデクリメントする(ステップS3
1)。
【0070】以上が本パケット送出装置の動作アルゴリ
ズムの一例である。このように、本実施形態では、送出
すべきパケットの属するVQの選択が単純なSQのエン
キューとデキュー操作で行なわれるので、扱うVQの数
によらず処理量が一定である。さらに、バースト性がな
るべく低くなるようにFmaxを動的に決定するため、
従来知られているDRR方式に比べてネットワークの廃
棄率特性がよくなることが期待できる。
ズムの一例である。このように、本実施形態では、送出
すべきパケットの属するVQの選択が単純なSQのエン
キューとデキュー操作で行なわれるので、扱うVQの数
によらず処理量が一定である。さらに、バースト性がな
るべく低くなるようにFmaxを動的に決定するため、
従来知られているDRR方式に比べてネットワークの廃
棄率特性がよくなることが期待できる。
【0071】次に、本発明をATM通信方式に応用した
場合の例を示す。エンキューのフローチャートの一例を
図5に、デキューのフローチャートの一例を図6と図7
に、そしてタイムアウト判定処理のフローチャートの一
例を図8にそれぞれ示す。
場合の例を示す。エンキューのフローチャートの一例を
図5に、デキューのフローチャートの一例を図6と図7
に、そしてタイムアウト判定処理のフローチャートの一
例を図8にそれぞれ示す。
【0072】ATM通信方式では、パケットをセルとい
う固定長短パケットに分割して転送する。パケットの分
割には、通常AAL5と呼ばれるサブレイヤ機能を用い
る。AAL5では、ATMセルのヘッダにパケットの分
割情報を入れる。具体的には、ユーザセルのヘッダに、
パケットの最後の部分を転送するセルかどうかを示す1
ビットの情報が書き込まれる。ここでは、パケットの最
後の部分を転送するセルをEoP(End of Pa
cket)セルと呼ぶ。また、最初の部分を転送するセ
ルをBoP(Begin of Packet)セルと
呼ぶ。
う固定長短パケットに分割して転送する。パケットの分
割には、通常AAL5と呼ばれるサブレイヤ機能を用い
る。AAL5では、ATMセルのヘッダにパケットの分
割情報を入れる。具体的には、ユーザセルのヘッダに、
パケットの最後の部分を転送するセルかどうかを示す1
ビットの情報が書き込まれる。ここでは、パケットの最
後の部分を転送するセルをEoP(End of Pa
cket)セルと呼ぶ。また、最初の部分を転送するセ
ルをBoP(Begin of Packet)セルと
呼ぶ。
【0073】ATM通信方式のパケット送出装置は、通
常はセルを単位としたスケジューリングを行なう。つま
り、セルが分割されたパケットのどの部分を転送するの
かに関わらず送出のスケジューリングを行なう。しか
し、場合によっては、パケットを単位としたスケジュー
リングが必要とされることがある。例えば、VCマージ
と呼ばれる機能が必要な場合である。VCマージは、V
Cのマルチポイント・ポイント接続またはマルチポイン
ト・マルチポイント接続を実現する方法の1つである。
この接続形態では、複数の入力リンクから到着したセル
が出力リンクのそれぞれへマージされる。AAL5で
は、本質的に1つのパケットを転送する複数のセルが、
別のパケットを転送する複数のセルと互いにインターリ
ーブして合流すると、元のパケットに分離できないとい
う問題点がある。マージを行なうATMスイッチで、各
入力リンクからのセルを別々のVQでバッファリング
し、パケットを単位として出力リンクへ送出すること
で、インターリーブを防ぐことができ、この問題を克服
できる。
常はセルを単位としたスケジューリングを行なう。つま
り、セルが分割されたパケットのどの部分を転送するの
かに関わらず送出のスケジューリングを行なう。しか
し、場合によっては、パケットを単位としたスケジュー
リングが必要とされることがある。例えば、VCマージ
と呼ばれる機能が必要な場合である。VCマージは、V
Cのマルチポイント・ポイント接続またはマルチポイン
ト・マルチポイント接続を実現する方法の1つである。
この接続形態では、複数の入力リンクから到着したセル
が出力リンクのそれぞれへマージされる。AAL5で
は、本質的に1つのパケットを転送する複数のセルが、
別のパケットを転送する複数のセルと互いにインターリ
ーブして合流すると、元のパケットに分離できないとい
う問題点がある。マージを行なうATMスイッチで、各
入力リンクからのセルを別々のVQでバッファリング
し、パケットを単位として出力リンクへ送出すること
で、インターリーブを防ぐことができ、この問題を克服
できる。
【0074】以下に説明するパケット送出装置は、パケ
ットを単位としてスケジューリングを行なうことを可能
とする。パケットを単位としたスケジューリングには2
通りの方式がある。Cut Through(CT)モ
ードとStore andForward(SF)モー
ドである。
ットを単位としてスケジューリングを行なうことを可能
とする。パケットを単位としたスケジューリングには2
通りの方式がある。Cut Through(CT)モ
ードとStore andForward(SF)モー
ドである。
【0075】CTモードは、BoPセルが到着すると直
ちにそのパケットを出力リンクへ転送することができる
モードである。ただし、そのパケットのEoPセルが到
着するまで同じVCにマージされる他の入力リンクから
のセルを出力リンクへ転送することができない。
ちにそのパケットを出力リンクへ転送することができる
モードである。ただし、そのパケットのEoPセルが到
着するまで同じVCにマージされる他の入力リンクから
のセルを出力リンクへ転送することができない。
【0076】その一方で、SFモードは、EoPセルが
到着するまでBoPセルの送出を開始しないモードであ
る。CTモードに比べてパケットの転送の遅延が大きく
なるが、送出を開始する1つのパケットを構成するセル
をEoPセルまで連続して出力することができ、他の入
力リンクから到着したセルの転送を妨げることが少ない
という利点がある。
到着するまでBoPセルの送出を開始しないモードであ
る。CTモードに比べてパケットの転送の遅延が大きく
なるが、送出を開始する1つのパケットを構成するセル
をEoPセルまで連続して出力することができ、他の入
力リンクから到着したセルの転送を妨げることが少ない
という利点がある。
【0077】CTモードでは、出力中のパケットのEo
Pセルが永遠に到着しない場合には、他の入力リンクか
らのパケットを永遠にブロックすることになってしまう
ため、タイマを用いてブロックしている時間の上限を決
め、それ以上はブロックしないようにする機構が必要で
ある。
Pセルが永遠に到着しない場合には、他の入力リンクか
らのパケットを永遠にブロックすることになってしまう
ため、タイマを用いてブロックしている時間の上限を決
め、それ以上はブロックしないようにする機構が必要で
ある。
【0078】まず、図5に、本パケット送出装置にセル
が到着したときのエンキュー動作のアルゴリズムの一例
を示す。このアルゴリズムは、到着セルの廃棄判定の結
果、パケットを廃棄しないと判定した場合に実行する。
が到着したときのエンキュー動作のアルゴリズムの一例
を示す。このアルゴリズムは、到着セルの廃棄判定の結
果、パケットを廃棄しないと判定した場合に実行する。
【0079】まず、適切なVQを選びそのVQへセルを
エンキューし、VQに蓄積しているセル数を数える変数
VQ_Len[vci]をインクリメントする(ステッ
プS41)。
エンキューし、VQに蓄積しているセル数を数える変数
VQ_Len[vci]をインクリメントする(ステッ
プS41)。
【0080】続いて、ブロッキングの処理を行なう。ま
ず、そのVQが他のVQをブロックしていないかどうか
をblockVQ_flag[vci]で確認する(ス
テップS42)。もしブロックしているなら、ブロック
を解除するために、blockVQ_flag[vc
i]とblockSQ_flagをfalse(偽)に
する(ステップS43)。
ず、そのVQが他のVQをブロックしていないかどうか
をblockVQ_flag[vci]で確認する(ス
テップS42)。もしブロックしているなら、ブロック
を解除するために、blockVQ_flag[vc
i]とblockSQ_flagをfalse(偽)に
する(ステップS43)。
【0081】そして、そのVQのモードと到着したセル
から、パケットの入力処理を行なうかどうかを判定する
(ステップS44)。VQのモードには、セルを単位に
スケジューリングを行なうCELLモード、パケットを
単位にCut Throughのスケジューリングを行
なうCTモード、そしてパケットを単位にStorea
nd Forwardのスケジューリングを行なうSF
モードがある。セルについては、パケットの先頭のセル
であるBoPセルかどうか、パケットの末尾のセルであ
るEoPセルかどうかを判定する必要がある。CELL
モードの場合には、1セル到着する毎にパケットが到着
したものとみなす。CTモードの場合には、BoPセル
が到着した場合にパケットが到着したものとみなす。そ
して、SFモードの場合には、EoPセルが到着した場
合にパケットが到着したものとみなす。
から、パケットの入力処理を行なうかどうかを判定する
(ステップS44)。VQのモードには、セルを単位に
スケジューリングを行なうCELLモード、パケットを
単位にCut Throughのスケジューリングを行
なうCTモード、そしてパケットを単位にStorea
nd Forwardのスケジューリングを行なうSF
モードがある。セルについては、パケットの先頭のセル
であるBoPセルかどうか、パケットの末尾のセルであ
るEoPセルかどうかを判定する必要がある。CELL
モードの場合には、1セル到着する毎にパケットが到着
したものとみなす。CTモードの場合には、BoPセル
が到着した場合にパケットが到着したものとみなす。そ
して、SFモードの場合には、EoPセルが到着した場
合にパケットが到着したものとみなす。
【0082】パケットが到着したとみなされる場合に
は、パケット入力処理を行なう。このパケット入力処理
はpWeight[vci]が1の場合は図3と同じで
ある。すなわち、まず、そのVQがアイドルからアクテ
ィブに変化したかどうかを判定する(ステップS4
5)。そのために、VQ内のパケット数を示す変数PQ
_Len[vci]が1未満かどうか、つまり0かどう
かを判定する。
は、パケット入力処理を行なう。このパケット入力処理
はpWeight[vci]が1の場合は図3と同じで
ある。すなわち、まず、そのVQがアイドルからアクテ
ィブに変化したかどうかを判定する(ステップS4
5)。そのために、VQ内のパケット数を示す変数PQ
_Len[vci]が1未満かどうか、つまり0かどう
かを判定する。
【0083】そのVQがアイドルからアクティブに変化
したと判定された場合には、新しいF[vci]の値
を、以前のF[vci]の値と現在のFmaxのうちの
大きな方に設定する(ステップS46)。
したと判定された場合には、新しいF[vci]の値
を、以前のF[vci]の値と現在のFmaxのうちの
大きな方に設定する(ステップS46)。
【0084】VQがアイドルからアクティブに変化した
と判定された場合には、さらにSQへvciをエンキュ
ーし、SQ内のVCI数であるSQ_Lenをインクリ
メントする(ステップS47,S48)。
と判定された場合には、さらにSQへvciをエンキュ
ーし、SQ内のVCI数であるSQ_Lenをインクリ
メントする(ステップS47,S48)。
【0085】また、いずれの場合にも、PQ_Len
[vci]をインクリメントする(ステップS49)。
そして、エンキューの最後に、もし到着セルがEoPセ
ルであったら、次に到着するユーザセルをBoPセルと
みなすようにするための、VQ毎のフラグBoP[vc
i]を設定する(ステップS50)。
[vci]をインクリメントする(ステップS49)。
そして、エンキューの最後に、もし到着セルがEoPセ
ルであったら、次に到着するユーザセルをBoPセルと
みなすようにするための、VQ毎のフラグBoP[vc
i]を設定する(ステップS50)。
【0086】次に、図6および図7は、本発明をATM
通信に適用した場合の本パケット送出装置からパケット
を送出するデキューのフローチャートの一例である。図
7は、図6に後続する部分である。
通信に適用した場合の本パケット送出装置からパケット
を送出するデキューのフローチャートの一例である。図
7は、図6に後続する部分である。
【0087】このSQで管理しているVQが少なくとも
1つはアクティブである場合、すなわちSQ_Lenが
0より大きく、かつ、blockSQ_flagがfa
lseである場合に、このフローチャートを実行する。
1つはアクティブである場合、すなわちSQ_Lenが
0より大きく、かつ、blockSQ_flagがfa
lseである場合に、このフローチャートを実行する。
【0088】まず、ラウンドの処理を行なう。この処理
は、図4と同じである。すなわち、カウンタCntの値
が0かどうかをチェックする(ステップS61)。
は、図4と同じである。すなわち、カウンタCntの値
が0かどうかをチェックする(ステップS61)。
【0089】もし0ならラウンドの終了を意味し、それ
は同時に新たなラウンドの開始を意味する。新たなラウ
ンドの開始のための処理は、具体的には、Fmaxに変
数Ftmpの値を設定し、CntにSQ_Lenの値を
設定する(ステップS62)。SQ_LenはSQ内の
VCI数である。
は同時に新たなラウンドの開始を意味する。新たなラウ
ンドの開始のための処理は、具体的には、Fmaxに変
数Ftmpの値を設定し、CntにSQ_Lenの値を
設定する(ステップS62)。SQ_LenはSQ内の
VCI数である。
【0090】次に、SQの先頭のvciをリードする
(ステップS63)。このステップではSQの先頭をリ
ードするだけでデキューはしない。続いて、タイムアウ
トに関する処理を行なう。
(ステップS63)。このステップではSQの先頭をリ
ードするだけでデキューはしない。続いて、タイムアウ
トに関する処理を行なう。
【0091】本実施形態では、タイムアウトしているこ
とをVQ_Len[vci]が0のときにデキュー処理
が行なわれていることで判定している(ステップS6
4)。もしタイムアウトしていると判定された場合に
は、次の処理を行う(ステップS65)。そのVQから
ダミーのEoPセルを送出する。そして、blockV
Q_flag[vci]をfalseにして、ブロック
が解除された設定にする。また、BoP[vci]をt
rue(真)にする。これは、次に到着するセルは今送
出したダミーのEoPセルに続くBoPセルとして扱う
べきだからである。また、今ダミーのEoPセルを送出
したためEoPoをtrueにする。
とをVQ_Len[vci]が0のときにデキュー処理
が行なわれていることで判定している(ステップS6
4)。もしタイムアウトしていると判定された場合に
は、次の処理を行う(ステップS65)。そのVQから
ダミーのEoPセルを送出する。そして、blockV
Q_flag[vci]をfalseにして、ブロック
が解除された設定にする。また、BoP[vci]をt
rue(真)にする。これは、次に到着するセルは今送
出したダミーのEoPセルに続くBoPセルとして扱う
べきだからである。また、今ダミーのEoPセルを送出
したためEoPoをtrueにする。
【0092】もしブロックしていないと判定された場合
には、次の処理を行う(ステップS66)。SQの先頭
のvciで示されるVQからセルを出力する。VQ内の
セル数を示すVQ_Len[vci]をデクリメント
し、出力したセルがEoPセルであったかどうかによっ
て、変数EoPoを設定する。
には、次の処理を行う(ステップS66)。SQの先頭
のvciで示されるVQからセルを出力する。VQ内の
セル数を示すVQ_Len[vci]をデクリメント
し、出力したセルがEoPセルであったかどうかによっ
て、変数EoPoを設定する。
【0093】いずれの場合にも、セルを送出すると、そ
のVQのFの値を更新する(ステップS67)。図4と
同じ計算式でもよいが、ここではATM通信ではセル長
が一定であることを利用し、また重みの逆数を計算に使
用して、1セル出力する度にF[vci]にiWeig
htを加算する例を示した。
のVQのFの値を更新する(ステップS67)。図4と
同じ計算式でもよいが、ここではATM通信ではセル長
が一定であることを利用し、また重みの逆数を計算に使
用して、1セル出力する度にF[vci]にiWeig
htを加算する例を示した。
【0094】図6の処理が終わると、図7の処理へ進
む。図7では、まず、パケット出力処理をするかどうか
を決定する。そのvciがCELLモードの場合か、ま
たは、CTモードかSFモードの場合で送出したセルが
EoPセルであった場合にはパケット出力処理を行なう
(ステップS68)。
む。図7では、まず、パケット出力処理をするかどうか
を決定する。そのvciがCELLモードの場合か、ま
たは、CTモードかSFモードの場合で送出したセルが
EoPセルであった場合にはパケット出力処理を行なう
(ステップS68)。
【0095】その内容は、pWeight[vci]を
1とすれば図4で説明した通りである。すなわち、ま
ず、pWmodeでなく、かつ、加算で更新されたF
[vci]がまだFmaxの値以下であるならば(ステ
ップS69)、次も同じVQからパケットを送出すれば
よいため、PQ_Len[vci]をデクリメントして
(ステップS31)、ここでの処理は終わりとなる。
1とすれば図4で説明した通りである。すなわち、ま
ず、pWmodeでなく、かつ、加算で更新されたF
[vci]がまだFmaxの値以下であるならば(ステ
ップS69)、次も同じVQからパケットを送出すれば
よいため、PQ_Len[vci]をデクリメントして
(ステップS31)、ここでの処理は終わりとなる。
【0096】そうではなく、FmaxよりもF[vc
i]の方が大きくなってるか、または、pWmodeで
あれば、次は違うVQからパケットを出力する。このと
き、SQの先頭のvciをSQからデキューし、またS
Q_Lenをデクリメントし(ステップS70)、さら
に、そのVQがまだアクティブ(PQ_Len[vc
i]>pWeight[vci])ならば(ステップS
71)、そのvciをSQの末尾へ再エンキューし、ま
たSQ_Lenをインクリメントする(ステップS7
2)。そして、Fの最大値を決定するための変数である
FtmpをF[vci]の値に更新し(ステップS7
3)、ラウンドの終了を判定するための変数Cntをデ
クリメントする(ステップS74)。最後に、PQ_L
en[vci]もデクリメントし(ステップS75)、
ここでの処理は終わりとなる。
i]の方が大きくなってるか、または、pWmodeで
あれば、次は違うVQからパケットを出力する。このと
き、SQの先頭のvciをSQからデキューし、またS
Q_Lenをデクリメントし(ステップS70)、さら
に、そのVQがまだアクティブ(PQ_Len[vc
i]>pWeight[vci])ならば(ステップS
71)、そのvciをSQの末尾へ再エンキューし、ま
たSQ_Lenをインクリメントする(ステップS7
2)。そして、Fの最大値を決定するための変数である
FtmpをF[vci]の値に更新し(ステップS7
3)、ラウンドの終了を判定するための変数Cntをデ
クリメントする(ステップS74)。最後に、PQ_L
en[vci]もデクリメントし(ステップS75)、
ここでの処理は終わりとなる。
【0097】その後、ブロッキング検出処理を行なう。
図7では、CTモードでPQ_Len[vci]が1、
つまりこのVQに送出すべきパケットが存在するとき
に、VQ_Len[vci]が0、つまりそのVQの送
出可能セル数が0であったら、ブロッキングが発生した
と判断する(ステップS76)。
図7では、CTモードでPQ_Len[vci]が1、
つまりこのVQに送出すべきパケットが存在するとき
に、VQ_Len[vci]が0、つまりそのVQの送
出可能セル数が0であったら、ブロッキングが発生した
と判断する(ステップS76)。
【0098】ブロッキングが発生したと判断されたなら
ば、SQがブロッキングしているかどうかのフラグbl
ockSQ_flagと、VQがブロッキングしている
かどうかのフラグblockVQ_flagの両方をt
rueにし、blockSQ_start_timeを
現在時刻nowにする(ステップS76)。
ば、SQがブロッキングしているかどうかのフラグbl
ockSQ_flagと、VQがブロッキングしている
かどうかのフラグblockVQ_flagの両方をt
rueにし、blockSQ_start_timeを
現在時刻nowにする(ステップS76)。
【0099】blockSQ_start_time
は、ブロッキングの始まった時刻であり、このフローチ
ャートのようにブロッキングが始まったときに値now
を設定する方法でもよいが、別の方法としてBoPセル
を出力したら値nowを設定する方法でもよい。
は、ブロッキングの始まった時刻であり、このフローチ
ャートのようにブロッキングが始まったときに値now
を設定する方法でもよいが、別の方法としてBoPセル
を出力したら値nowを設定する方法でもよい。
【0100】以上、デキュー処理について説明した。次
に、図8に、タイムアウト判定処理のフローチャートの
一例を示す。この処理は、タイムアウト時間の精度に応
じて適切な頻度で実行すればよく、これまでに説明した
図5のエンキュー処理や、図6および図7のデキュー処
理よりも実行回数を少なくしてよい。
に、図8に、タイムアウト判定処理のフローチャートの
一例を示す。この処理は、タイムアウト時間の精度に応
じて適切な頻度で実行すればよく、これまでに説明した
図5のエンキュー処理や、図6および図7のデキュー処
理よりも実行回数を少なくしてよい。
【0101】処理の内容は、まず、blockSQ_f
lagをみてSQが現在ブロックしているかどうかを検
査し、もしそうなら、blockSQ_start_t
imeと現在時刻の差を計算してしきい値time_t
hよりも大きくなっているかどうかを判定する(ステッ
プS81)。
lagをみてSQが現在ブロックしているかどうかを検
査し、もしそうなら、blockSQ_start_t
imeと現在時刻の差を計算してしきい値time_t
hよりも大きくなっているかどうかを判定する(ステッ
プS81)。
【0102】もし、タイムアウトしているなら、ダミー
のEoPセルを送出するためblockSQ_flag
をfalseにしてそのSQに送出すべきセルが待って
いるかのような設定をする(ステップS82)。
のEoPセルを送出するためblockSQ_flag
をfalseにしてそのSQに送出すべきセルが待って
いるかのような設定をする(ステップS82)。
【0103】図5、図7のフローチャートで使用するす
るpWeightは、パケット数単位の重みであり、Q
LWFQ(Y.Ohba:“QLWFQ:A Queu
eLenght Based Weightde Fa
ir QueueingAlgorithm in A
TM Networks”,Infocom‘97.)
と呼ばれるスケジューラで紹介されているセルの重み付
きスケジューリングの手法を実施するときに、1以上の
値を設定することがある。このQLWFQを実現する場
合には、図7にあるpWmodeをtrueにセットす
ればよい。このような設定でもCTモードやSFモード
のパケット単位のスケジューリング機能を実現すること
ができる。
るpWeightは、パケット数単位の重みであり、Q
LWFQ(Y.Ohba:“QLWFQ:A Queu
eLenght Based Weightde Fa
ir QueueingAlgorithm in A
TM Networks”,Infocom‘97.)
と呼ばれるスケジューラで紹介されているセルの重み付
きスケジューリングの手法を実施するときに、1以上の
値を設定することがある。このQLWFQを実現する場
合には、図7にあるpWmodeをtrueにセットす
ればよい。このような設定でもCTモードやSFモード
のパケット単位のスケジューリング機能を実現すること
ができる。
【0104】なお、図5〜図8はpWmodeを考慮し
たフローチャートになっているが、もちろん、pWmo
deを使用しない場合には、図5〜図8をpWmode
を考慮しないフローチャートに修正してもよい。
たフローチャートになっているが、もちろん、pWmo
deを使用しない場合には、図5〜図8をpWmode
を考慮しないフローチャートに修正してもよい。
【0105】なお、以上の各機能は、ソフトウェアとし
ても実現可能である。また、本実施形態は、コンピュー
タに所定の手順を実行させるための(あるいはコンピュ
ータを所定の手段として機能させるための、あるいはコ
ンピュータに所定の機能を実現させるための)プログラ
ムを記録したコンピュータ読取り可能な記録媒体として
実施することもできる。本発明は、上述した実施の形態
に限定されるものではなく、その技術的範囲において種
々変形して実施することができる。
ても実現可能である。また、本実施形態は、コンピュー
タに所定の手順を実行させるための(あるいはコンピュ
ータを所定の手段として機能させるための、あるいはコ
ンピュータに所定の機能を実現させるための)プログラ
ムを記録したコンピュータ読取り可能な記録媒体として
実施することもできる。本発明は、上述した実施の形態
に限定されるものではなく、その技術的範囲において種
々変形して実施することができる。
【0106】
【発明の効果】本発明によれば、送出するパケットの選
択がフロー数に依存せず容易に可能であり、かつ、その
時々で実際に送出しているパケット量と重みを用いて、
各フローが1ラウンドに送出できるパケット量を動的に
決定するため、各フローのパケット送出を必要最小限の
バーストに抑えることができる。
択がフロー数に依存せず容易に可能であり、かつ、その
時々で実際に送出しているパケット量と重みを用いて、
各フローが1ラウンドに送出できるパケット量を動的に
決定するため、各フローのパケット送出を必要最小限の
バーストに抑えることができる。
【図1】本発明の一実施形態に係るパケット送出装置の
構成例を示す図
構成例を示す図
【図2】同実施形態に係るパケット送出装置から送出さ
れるパケットの送出順序を説明するための図
れるパケットの送出順序を説明するための図
【図3】エンキュー動作の一例を示すフローチャート
【図4】デキュー動作の一例を示すフローチャート
【図5】ATM通信方式におけるエンキュー動作の一例
を示すフローチャート
を示すフローチャート
【図6】ATM通信方式におけるデキュー動作の一例を
示すフローチャート
示すフローチャート
【図7】ATM通信方式におけるデキュー動作の一例を
示すフローチャート
示すフローチャート
【図8】ATM通信方式におけるタイムアウト判定処理
の一例を示すフローチャート
の一例を示すフローチャート
2…グループ毎パケットキュー
4…識別子リスト
6…セレクタ
8…リスト管理部
Claims (10)
- 【請求項1】送出すべきパケットが存在するグループの
識別子のリストに基づいてパケットを送出するパケット
送出装置であって、 リストに基づくパケット送出の各ラウンドにおいて、各
々のグループ毎の送出パケット量の重みを考慮した累積
値が、当該ラウンドでのしきい値を越えるまで、各々の
グループからパケットを送出する手段と、 先行するラウンドの終了時点における各グループの累積
値のうちの最大値を後続するラウンドでのしきい値とし
て設定する手段とを備えたことを特徴とするパケット送
出装置。 - 【請求項2】前記送出する手段は、1つのパケットを送
出するごとに、該パケットの属するグループについて予
め定められた重みで該パケットのパケット長を割った値
を、それまでの該グループの累積値に加算して、新たな
累積値を得るものであることを特徴とする請求項1に記
載のパケット送出装置。 - 【請求項3】前記送出する手段は、 1つのパケットを送出するごとに、該パケットの属する
グループの累積値を求め、 求められた累積値が依然として当該ラウンドでのしきい
値以下であり、かつ、該グループに依然として送出待ち
のパケットが存在する場合には、続けて該グループから
1つのパケットを送出するものであることを特徴とする
請求項1または2に記載のパケット送出装置。 - 【請求項4】新たに送出すべきパケットが発生し前記リ
ストに前記識別子が入力されたグループの累積値を、そ
のラウンドでのしきい値または該しきい値より小さい所
定の値に設定する手段をさらに備えたことを特徴とする
請求項1ないし3のいずれか1項に記載のパケット送出
装置。 - 【請求項5】所定のタイミングで前記累積値および前記
しきい値をそれらの関係を保ってより小さい値に変換す
る手段をさらに備えたことを特徴とする請求項1ないし
4のいずれか1項に記載のパケット送出装置。 - 【請求項6】1つのパケットが序列を持つ複数のセルで
構成される場合に、該パケットを構成する最後のセルが
到着した時点で、該パケットが到着したものとして扱う
ための手段をさらに備えたことを特徴とする請求項1に
記載のパケット送出装置。 - 【請求項7】1つのパケットが序列を持つ複数のセルで
構成される場合に、予め定められたグループに属するパ
ケットを構成する最初のセルが到着した時点で、該パケ
ットが到着したものとして扱うための手段と、 前記最初のセルが到着したパケットを構成する最後のセ
ルを送出するまで、予め定められた他のグループに属す
るパケットを送出させないための制御を行う手段とをさ
らに備えたことを特徴とする請求項1に記載のパケット
送出装置。 - 【請求項8】入力されたパケットをグループ毎に蓄積す
る手段と、 送出すべきパケットが存在するグループの識別子のリス
トを管理する手段と、前記リストに基づいて、パケット
送出すべきグループを1つずつ繰り返し選択する手段
と、 選択されたグループについて、1つパケットを送出する
ごとに、該グループについて予め定められた重みで該パ
ケットのパケット長を割った値をそれまでの該グループ
の累積値に加算して新たな累積値を求め、求められた新
たな累積値が依然として当該時点でのしきい値以下であ
る場合は、続けて該グループから1つのパケットを送出
する処理を繰り返す手段と、 この手段による処理が、前記リスト内に存在するすべて
の識別子に対して一通り実行された場合に、当該時点に
おける各グループの累積値のうちの最大値を新たなしき
い値として設定する手段とを備えたことを特徴とするパ
ケット送出装置。 - 【請求項9】送出すべきパケットが存在するグループの
識別子のリストに基づいてパケットを送出するパケット
送出装置におけるパケット送出方法であって、 リストに基づくパケット送出の各ラウンドにおいて、各
々のグループ毎の送出パケット量の重みを考慮した累積
値が、当該ラウンドでのしきい値を越えるまで、各々の
グループからパケットを送出し、 各ラウンドの終了時点における各グループの累積値のう
ちの最大値を次のラウンドでのしきい値とすることを特
徴とするパケット送出方法。 - 【請求項10】各ラウンド毎に、送出すべきパケットが
存在するグループの識別子のリストに基づいてパケット
を送出するパケット送出装置におけるパケット送出方法
であって、 リストに基づいて選択された1つのグループについて、
1つパケットを送出するごとに、該グループについて予
め定められた重みで該パケットのパケット長を割った値
をそれまでの該グループの累積値に加算して新たな累積
値を求め、求められた新たな累積値が依然として当該ラ
ウンドでのしきい値以下である場合は、続けて該グルー
プから1つのパケットを送出し、求められた累積値が当
該ラウンドでのしきい値を越えた場合には、次のグルー
プをリストに基づいて選択する処理を、前記リスト内に
存在するすべての識別子に対して実行するまで繰り返
し、 このラウンドの終了時点における各グループの累積値の
うちの最大値を次のラウンドでのしきい値とすることを
特徴とするパケット送出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04965298A JP3431484B2 (ja) | 1998-03-02 | 1998-03-02 | パケット送出装置及びパケット送出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04965298A JP3431484B2 (ja) | 1998-03-02 | 1998-03-02 | パケット送出装置及びパケット送出方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11252097A JPH11252097A (ja) | 1999-09-17 |
JP3431484B2 true JP3431484B2 (ja) | 2003-07-28 |
Family
ID=12837132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04965298A Expired - Fee Related JP3431484B2 (ja) | 1998-03-02 | 1998-03-02 | パケット送出装置及びパケット送出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3431484B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352399A (zh) * | 2020-03-12 | 2020-06-30 | 沈寿娟 | 物联网智能联动控制方法、装置及控制中心 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3556557B2 (ja) * | 1999-12-22 | 2004-08-18 | 日本電信電話株式会社 | 競合制御装置 |
JP3705353B2 (ja) | 2001-05-22 | 2005-10-12 | 日本電気株式会社 | パケットスケジューリング装置及び方法 |
WO2008117428A1 (ja) | 2007-03-27 | 2008-10-02 | Fujitsu Limited | パケット中継装置、パケット中継装置におけるキュースケジュールの方法、およびそのプログラム |
JP5088237B2 (ja) * | 2008-05-28 | 2012-12-05 | 日本電気株式会社 | パケット通信装置及びそれに用いる帯域制御方法並びにそのプログラム |
-
1998
- 1998-03-02 JP JP04965298A patent/JP3431484B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352399A (zh) * | 2020-03-12 | 2020-06-30 | 沈寿娟 | 物联网智能联动控制方法、装置及控制中心 |
CN111352399B (zh) * | 2020-03-12 | 2020-12-11 | 秦皇岛艾科晟装备有限公司 | 物联网智能联动控制方法及物联网智能联动控制装置 |
Also Published As
Publication number | Publication date |
---|---|
JPH11252097A (ja) | 1999-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6934296B2 (en) | Packet transfer device and packet transfer method adaptive to a large number of input ports | |
US7317727B2 (en) | Method and systems for controlling ATM traffic using bandwidth allocation technology | |
JP3730846B2 (ja) | Atm通信装置およびatmセル転送制御方法 | |
EP1798915B1 (en) | Packet forwarding device avoiding packet loss of out of profile packets in the shaper by remarking and redirecting the packet to a lower priority queue | |
JP3435293B2 (ja) | パケットスケジューリング装置及びパケット転送方法 | |
JP3683133B2 (ja) | パケットスケジューリング装置 | |
JP2006262517A (ja) | ネットワークキングシステム | |
JP2001326688A (ja) | シェーピング装置 | |
US6246687B1 (en) | Network switching system supporting guaranteed data rates | |
CA2238795A1 (en) | Er information acceleration in abr traffic | |
JPH09149051A (ja) | パケット転送装置 | |
JP3431484B2 (ja) | パケット送出装置及びパケット送出方法 | |
Li et al. | On TCP performance in ATM networks with per-VC early packet discard mechanisms | |
JP4135007B2 (ja) | Atmセル転送装置 | |
Seckin et al. | Real-time transmission of multilayer video over ATM networks | |
JP2000183888A (ja) | Atmネットワ―ク上でのip通信のためのvcマ―ジ可能なラベル・スイッチング・ル―タ | |
JP3514215B2 (ja) | スケジューリング回路 | |
Huang et al. | Connection admission control for constant bit rate traffic at a multi‐buffer multiplexer using the oldest‐cell‐first discipline | |
Chen et al. | Hierarchical scheduling for multiple classes of applications in connection-oriented integrated-service networks | |
Kanhere et al. | Prioritized elastic round robin: an efficient and low-latency packet scheduler with improved fairness | |
Li et al. | A novel core‐stateless ABR‐like congestion avoidance scheme in IP networks | |
Chen | A performance evaluation of multiplexer scheduling algorithms | |
Kos et al. | Sub-Critical Deficit Round Robin | |
ElGili et al. | The effect of Queuing Mechanisms First in First out (FIFO), Priority Queuing (PQ) and Weighted Fair Queuing (WFQ) on network''s Routers and Applications | |
Lizambri et al. | TCP throughput and buffer management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090523 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |