(57)【要約】【課題】特定条件下においてサイズの小さいパケットを優先的に処理するようにスケジューリングする通信装置を得ること。【解決手段】本発明は、各フローのパケットについて、所定のスケジューリングラウンドにおけるフローごとの送信データ量の合計値が規定値を超えた時点でスケジューリングラウンドにおけるフローのパケットに対する送信機会の付与を終了するパケットスケジューリングを行う通信装置であって、規定値と合計値の差に応じて、送信機会を与えるパケットのサイズを制限するスケジューリングを行うスケジューリング処理部１２と、スケジューリング処理部１２により送信機会が与えられたパケットを送信するパケット送信処理部１３と、を備える。【選択図】図１
2013239910.tif 000002
【特許請求の範囲】
【請求項１】
各フローのパケットについて、所定のスケジューリングラウンドにおけるフローごとの送信データ量の合計値が規定値を超えた時点で当該スケジューリングラウンドにおける当該フローのパケットに対する送信機会の付与を終了するパケットスケジューリングを行う通信装置であって、
前記規定値と前記合計値の差に応じて、送信機会を与えるパケットのサイズを制限するスケジューリングを行うスケジューリング手段と、
前記スケジューリング手段により送信機会が与えられたパケットを送信する送信手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記スケジューリング手段は、
前記規定値と前記合計値の差に基づいて、送信機会を与えるパケットのサイズの上限を設定することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記スケジューリングをＥＢＲＲに準拠したスケジューリングとし、
前記スケジューリング手段は、ＥＢＲＲにおけるＣｒｅｄｉｔ  Ｃｏｕｎｔｅｒの値をＣｉで表現した場合、Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒを用いたパケット送信可否判定において、０以下の閾値ＴＨを定義し、「（現在のＣｉ）−（判定対象パケットのパケット長）＞ＴＨ」が成立する場合に、判定対象パケットを送信することに決定することを特徴とする請求項１または２に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットデータ通信を行う通信装置に関し、特に、パケットを複数のフローに分類し、各フローに順番に送信機会を与えるよう、ある時点で送信するパケットを決定するパケットスケジューリングを行う通信装置に関する。
【背景技術】
【０００２】
パケットデータ通信を行う従来の通信装置において使用されているパケットスケジューリングアルゴリズムとして、Ｄｅｆｉｃｉｔ  Ｒｏｕｎｄ  Ｒｏｂｉｎ（ＤＲＲ）、Ｓｕｒｐｌｕｓ  Ｒｏｕｎｄ  Ｒｏｂｉｎ（ＳＲＲ）、Ｅｌｉｇｉｂｉｌｉｔｙ  Ｂａｓｅｄ  Ｒｏｕｎｄ  Ｒｏｂｉｎ（ＥＢＲＲ）などが存在する。これらのＤＲＲ、ＳＲＲおよびＥＢＲＲは、計算量がＯ(１)となる方式である。
【０００３】
例えば、上記方式のうち、ＥＢＲＲは、ＤＲＲやＳＲＲと異なり、ｑｕａｎｔｕｍ値（スケジューリングラウンド毎に各フローのＣｒｅｄｉｔ  Ｃｏｕｎｔｅｒに加算する値）が最大パケットサイズ未満の場合でも計算量がＯ(１)であるという特徴を持っている。なお、Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒは、フローごとに設定され、対応するフローのパケットが送信されるごとに、パケットのサイズが減算されて小さな値に更新される。Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒが０以下になると、そのスケジューリングラウンドでは、対応するフロー（パケット）の送信機会が与えられなくなる。ＥＢＲＲは、ｑｕａｎｔｕｍ値が最大パケットサイズ未満の場合でも計算量がＯ(１)となるように変形したＳＲＲと見なすことができる。ＥＢＲＲの詳細については下記の非特許文献１に記載されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｌ．Ｌｅｎｚｉｎｉ，  Ｅ．Ｍｉｎｇｏｚｚｉ  ａｎｄ  Ｇ．Ｓｔｅａ，  “Ｅｌｉｇｉｂｉｌｉｔｙ−Ｂａｓｅｄ  Ｒｏｕｎｄ  Ｒｏｂｉｎ  ｆｏｒ  Ｆａｉｒ  ａｎｄ  Ｅｆｆｉｃｉｅｎｔ  Ｐａｃｋｅｔ  Ｓｃｈｅｄｕｌｉｎｇ  ｉｎ  Ｗｏｒｍｈｏｌｅ  Ｓｗｉｔｃｈｉｎｇ  Ｎｅｔｗｏｒｋｓ”，  ＩＥＥＥ  ＴＲＡＮＳＡＣＴＩＯＮＳ  ＯＮ  ＰＡＲＡＬＬＥＬ  ＡＮＤ  ＤＩＳＴＲＩＢＵＴＥＤ  ＳＹＳＴＥＭＳ，  ＶＯＬ．１５，  Ｎｏ．３  ＭＡＲＣＨ  ２００４
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のＥＢＲＲを適用したパケットスケジューリングでは、同一スケジューリングラウンドで、送信可能状態（Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒが正の値）であるが送信待ちのパケットが存在していないフローが複数存在している状態で、これらのフローの送信すべきパケットを受け取った場合、スケジューラーは、パケットのサイズに関わらず、受け取った順番どおりに、送信機会を与える。よって、大きなパケットを小さなパケットよりも先に受け取り、大きなパケットから送信されることが有り得る。このため、大きなパケットの後に送信される小さなパケットの遅延時間が増加する。インターネットにおける小さなパケットの例として、ＴＣＰ  ＡＣＫやＶｏＩＰパケットが挙げられるが、概してより少ない遅延時間が好ましいパケットである。このように、優先的に処理して低遅延で送信するのが望ましいにもかかわらず、遅延時間が増大するおそれがあるという問題があった。
【０００６】
本発明は、上記に鑑みてなされたものであって、同一スケジューリングラウンドで、送信可能状態（Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒが正の値）であるが送信待ちのパケットが存在していないフローが複数存在している状態で、複数フローの送信パケットが発生した場合に、サイズの小さいパケットを優先的に処理するようにスケジューリングする通信装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、各フローのパケットについて、所定のスケジューリングラウンドにおけるフローごとの送信データ量の合計値が規定値を超えた時点で当該スケジューリングラウンドにおける当該フローのパケットに対する送信機会の付与を終了するパケットスケジューリングを行う通信装置であって、前記規定値と前記合計値の差に応じて、送信機会を与えるパケットのサイズを制限するスケジューリングを行うスケジューリング手段と、前記スケジューリング手段により送信機会が与えられたパケットを送信する送信手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、低遅延で送信するのが望ましい可能性の高いパケットである小さいサイズのパケットを優先的に送信する通信装置を実現できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明にかかる通信装置の要部構成例を示す図である。
【図２−１】図２−１は、スケジューリングアルゴリズムの一例を示す図である。
【図２−２】図２−２は、スケジューリングアルゴリズムの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明にかかる通信装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
ここでまず、ＥＢＲＲによるパケットスケジューリングについて説明する。ＥＢＲＲのパケットスケジューリング（以下、ＥＢＲＲスケジューリングと呼ぶ）は、パケットのフローを単位として行う。即ち、ＥＢＲＲスケジューリングでは、次に送信するパケットをどのフローの先頭パケットにするかを決定する。パケットのフローは、例えばパケットの送信元と送信先のアドレスの値により特定される。
【００１２】
ＥＢＲＲスケジューリングでは、フローｉに属するパケットを格納するキューをＱｕｅｕｅ［ｉ］、フローｉのパケットに対する送信可否判断に使用するＣｒｅｄｉｔ  ＣｏｕｎｔｅｒをＣｉ、１スケジューリングラウンドでのＣｉの増分値ｑｕａｎｔｕｍ値をＱｉとして管理する。
【００１３】
また、配列ＡｃｔｉｖｅＬｉｓｔ［］を管理する。ＡｃｔｉｖｅＬｉｓｔ［］のインデックスはスケジューリングラウンドに対応し、ＡｃｔｉｖｅＬｉｓｔ［］の要素は、インデックスが表わすスケジューリングラウンドでスケジューリング対象となるフローを格納するキューＱｕｅｕｅ［ｉ］のリストである。以下では、最大パケットサイズをＬ、配列ＡｃｔｉｖｅＬｉｓｔ［］のサイズをｑ、現在のスケジューリングラウンド（0,1,2,…）をＲＣと表わす。この場合、ｑ＝ｃｅｉｌ（Ｌ/(Ｑｉの最小値)）［ｃｅｉｌ(ｘ)はｘ以上の最小の整数を返す関数］となる。１スケジューリングラウンドでの処理は以下のとおりである。
【００１４】
i）ＡｃｔｉｖｅＬｉｓｔ［ＲＣ  ｍｏｄ  ｑ］から最初の要素（Ｑｕｅｕｅ[ｉ]）を取り出す。Ｑｕｅｕｅ［ｉ］の先頭から１パケットをデキューし送信する。Ｃｉをパケット長分減算する。よって、１スケジューリングラウンドにおけるＣｉの初期値とある時点のＣｉの差は、そのスケジューリングラウンドにおいてＱｕｅｕｅ［ｉ］から取り出して送信したパケットの総量（送信済みパケットのサイズの合計値）となる。
ii）もし、Ｃｉ＞０かつＱｕｅｕｅ［ｉ］が空でなければ、Ｑｕｅｕｅ［ｉ］をＡｃｔｉｖｅＬｉｓｔ［ＲＣ  ｍｏｄ  ｑ］の最後に追加する。もし、Ｃｉ≦０ならば、スケジューリングラウンド毎にＱｉをＣｉに加算することで、Ｃｉが０より大きくなるスケジューリングラウンドｒｃを見つける。つまり、ｒｃ＝ＲＣ＋ｆｌｏｏｒ（−Ｃｉ／Ｑｉ）＋１となる。なお、ｆｌｏｏｒ（ｘ）はｘ以下の最大の整数を返す関数である。ｒｃが見つかると、Ｑｕｅｕｅ［ｉ］の状態を確認し、空ではない場合、Ｑｕｅｕｅ［ｉ］をＡｃｔｉｖｅＬｉｓｔ［ｒｃ  ｍｏｄ  ｑ］の最後に追加し、ＣｉをスケジューリングラウンドｒｃでのＣｉの値に更新する。例えば、ｒｃ＝ＲＣ＋１、つまりｒｃが次のスケジューリングラウンドを示しているのであれば、ＣｉをＱｉに設定する（Ｃｉ＝Ｃｉ＋Ｑｉ）。ｒｃ＝ＲＣ＋２の場合には、Ｃｉ＝Ｃｉ＋２＊Ｑｉとする。これに対して、Ｑｕｅｕｅ［ｉ］が空の場合、Ｑｕｅｕｅ［ｉ］のパケットがスケジューリングラウンドｒｃ以降ならば送信可能であることを記録し、Ｃｉを更新する。
iii）スケジューリングラウンドＲＣにおいてフローｉのパケットを受信した場合（送信すべきフローｉのパケットが発生した場合）、Ｑｕｅｕｅ［ｉ］にパケットをエンキューする。もし、エンキューする前のＱｕｅｕｅ［ｉ］の状態が空であったならば、ｒｃをＱｕｅｕｅ［ｉ］内のパケットを送信可能なスケジューリングラウンドとすると、Ｑｕｅｕｅ［ｉ］をＡｃｔｉｖｅＬｉｓｔ［ｍａｘ（ｒｃ，ＲＣ）  ｍｏｄ  ｑ］の最後に追加する。
【００１５】
このように、ＥＢＲＲスケジューリングでは、Ｃｉ＞０の場合、Ｑｕｅｕｅ［ｉ］が空でなければ、Ｑｕｅｕｅ［ｉ］から次回デキューするパケットのサイズに関係なく、ＡｃｔｉｖｅＬｉｓｔ［ＲＣ  ｍｏｄ  ｑ］の最後にＱｕｅｕｅ［ｉ］を追加し、送信機会を与える。また、Ｃｉ＞０かつＱｕｅｕｅ［ｉ］が空の状態でパケットをエンキューすると、ＡｃｔｉｖｅＬｉｓｔ［ＲＣ  ｍｏｄ  ｑ］の最後にＱｕｅｕｅ［ｉ］を追加し、送信機会を与える。そのため、上述したような問題、すなわち、サイズの小さなパケットをサイズの大きなパケットよりも優先的に送信することができない。
【００１６】
実施の形態．
次に、本発明の実施の形態を説明する。なお、本実施の形態の説明で使用するパラメータ、変数等は、本願発明に特有のものを除いて、上述したＥＢＲＲスケジューリングの説明で使用したものと同じものとする。
【００１７】
図１は、本発明にかかる通信装置の要部構成例を示す図である。本実施の形態の通信装置は、パケット送信要求受付処理部１１、スケジューリング処理部１２、パケット送信処理部１３、タイマー部１４、Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒ格納部１５、Ｑｕａｎｔｕｍ値格納部１６、ＡｃｔｉｖｅＬｉｓｔ格納部１７、パケットデータ格納部１８、処理待ちパケット情報格納部１９およびキュー情報格納部２０を備える。パケット送信要求受付処理部１１、スケジューリング処理部１２およびパケット送信処理部１３は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の処理によりソフト的に実現される。
【００１８】
パケット送信要求受付処理部１１は、通信装置内の他機能ブロック（図示せず）からのパケット送信要求を受け付ける。また、パケット送信要求とともに受け取ったパケットをパケットデータ格納部１８に保存し、このパケットの情報（例えば、パケット長、パケットが属するフロー決定に必要なヘッダ情報、など）を処理待ちパケット情報格納部１９に格納する。なお、パケットが属するフロー決定に必要なヘッダ情報としては、送信先アドレス、送信元アドレス、データ種別、優先度、などが考えられる。これら以外の情報であっても構わない。
【００１９】
スケジューリング処理部１２は、パケットデータ格納部１８に格納されているパケットの送信順番を処理待ちパケット情報格納部１９に格納された情報（以下、送信パケット情報）に基づいて決定する処理（パケットスケジューリング）を行う。なお、パケットスケジューリング処理は、タイマー部１４から指示を受けると実行する。タイマー部１４からの指示は一定周期で行われる。
【００２０】
パケット送信処理部１３は、スケジューリング処理部１２から送信要求を受けると、送信要求の内容に従い、パケットをネットワークインタフェースへ送信する。
【００２１】
タイマー部１４は、スケジューリング処理部１２がパケットスケジューリング処理を実行する周期を管理するため、指定された時間が経過する毎に、スケジューリング処理部１２に対して通知信号を発行する。スケジューリング処理部１２の処理をＣＰＵが実行する構成の場合には、ＣＰＵへの割込を指定された時間が経過する毎に発生させる。通知信号の発行周期（割込み発生周期）は、スケジューリング処理部１２から予め指定された周期とする。
【００２２】
Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒ格納部１５は、スケジューリング処理部１２がパケットスケジューリングを行う際に使用する情報であるＣｉ（Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒ）を保持する。
【００２３】
Ｑｕａｎｔｕｍ値格納部１６は、スケジューリング処理部１２がパケットスケジューリングを行う際に使用する情報であるＱｉ（Ｑｕａｎｔｕｍ）を保持する。
【００２４】
ＡｃｔｉｖｅＬｉｓｔ格納部１７は、スケジューリング処理部１２がパケットスケジューリングを行う際に使用する情報であるＡｃｔｉｖｅＬｉｓｔ［］を保持する。
【００２５】
パケットデータ格納部１８は、パケット送信要求受付処理部１１が他機能ブロックから受け取ったパケットデータ（パケット送信処理部１３から送信されるパケットデータ本体）を保持する。
【００２６】
処理待ちパケット情報格納部１９は、パケット送信要求受付処理部１１が他機能ブロックから受け取ったパケットデータの情報を保持する。
【００２７】
キュー情報格納部２０は、スケジューリング処理部１２がパケットスケジューリングを行う際に使用する情報であるＱｕｅｕｅ［ｉ］を保持する。
【００２８】
本実施の形態の通信装置の動作、具体的には、パケット送信動作について、以下に説明する。
【００２９】
パケット送信動作では、まず、図示を省略した機能ブロックが、パケットスケジューリングを含むパケット送信処理を実行する処理ブロックに対してパケット送信要求を発行する。すると、パケット送信要求受付処理部１１がパケット送信要求を受け付け、パケットデータ格納部１８にパケットデータ本体を格納すると共に、処理待ちパケット情報格納部１９に当該パケットデータの情報（例えば、パケット長、パケットが属するフロー決定に必要なヘッダ情報）を送信パケット情報として格納する。
【００３０】
次に、定周期時間が経過したことをトリガに、タイマー部１４が、スケジューリング処理部１２に対してパケットスケジューリング処理の開始を指示する。すると、スケジューリング処理部１２は、最初に処理待ちパケット情報格納部１９にアクセスして送信パケット情報を読み出し、パケットスケジューリングを開始する。
【００３１】
ここで、スケジューリング処理部１２によるパケットスケジューリングについて説明する。このパケットスケジューリングは、上述したＥＢＲＲを一部修正し、改良したものである。具体的には、ＥＢＲＲのＣｒｅｄｉｔ  ＣｏｕｎｔｅｒであるＣｉを用いてのパケット送信可否判断方法を変更したものである。
【００３２】
ＥＢＲＲでは、スケジューリングラウンドの終了時にフローｉに送信待ちパケットが存在する場合にはＣｉの値は０以下になっているが、スケジューリング処理部１２によるパケットスケジューリングでは、スケジューリングラウンド終了時にフローｉに送信待ちパケットが存在していたとしても、Ｃｉが正になることを許す様にする。また、０以下の閾値ＴＨを定義する。
【００３３】
すなわち、ＥＢＲＲでは「Ｃｉ＞０」であればパケットを送信可能と判断するのに対して、本実施の形態のパケットスケジューリングでは、送信可否判断時点のＣｉとパケット長の差（Ｃｉ−パケット長）がＴＨよりも大きい場合（「Ｃｉ−パケット長＞ＴＨ」の場合）に送信可能と判断する。別の表現を用いれば、判定対象のパケットを送信した後のＣｉ（パケット送信に伴い更新された後のＣｉ）が閾値よりも大きくなる場合に送信可能と判断する。「Ｃｉ−パケット長≦ＴＨ」の場合には、スケジューリングラウンドごとに更新される（Ｑｉが足し込まれる）Ｃｉと送信するパケットのサイズ（長さ）の差がＴＨよりも大きくなるスケジューリングラウンドｒｃを特定し、特定したスケジューリングラウンドｒｃ（「Ｃｉ−パケット長＞ＴＨ」となるスケジューリングラウンド）で送信するよう、スケジューリングする。Ｏ（１）の計算量を保証するため（すなわち、ＡｃｔｉｖｅＬｉｓｔ［ＲＣ  ｍｏｄ  ｑ］にＱｕｅｕｅ［ｉ］が含まれる場合、Ｑｕｅｕｅ［ｉ］から少なくとも１つのパケットを送信可能とするため）、パケット受信時とパケットスケジューリングにおいて、どのスケジューリングラウンドでパケット送信が可能となるかの計算方法として、ＥＢＲＲによる計算方法とは異なる計算方法とする必要がある。スケジューリング処理部１２によるパケットスケジューリングで使用するスケジューリングアルゴリズムは、例えば、図２−１および図２−２のようにする。図２−１に含まれているＰａｃｋｅｔＡｒｒｉｖａｌ（ｐａｃｋｅｔ  ａ，Ｆｌｏｗ  ｉ）がパケット受信時の処理（どのスケジューリングラウンドでパケット送信が可能となるかの計算、Ｃｉの更新など）、図２−２に含まれているＥＢＲＲＳｃｈｅｄｕｌｅｒ１（）がパケットスケジューリング時の処理（どのスケジューリングラウンドでパケット送信が可能となるかの計算、Ｃｉの更新など）である。フローｉのパケットが送信可能となるスケジューリングラウンドをＥＣｉで表現している。
【００３４】
このように、スケジューリング処理部１２は、パケットスケジューリングを開始すると、まず、ＰａｃｋｅｔＡｒｒｉｖａｌ（ｐａｃｋｅｔ  ａ，Ｆｌｏｗ  ｉ）を実行し、次に、ＥＢＲＲＳｃｈｅｄｕｌｅｒ１（）を実行することによって、送信するパケットを決定する。
【００３５】
各フロー（フローｉ）のパケット送信が可能になるスケジューリングラウンドを上記のように決定するので、同一スケジューリングラウンドで、送信可能であるが（「Ｃｉ＞０」となっているが）送信待ちのパケットが存在していないフローが複数存在している状態において、これらのフローの送信パケットが発生した場合、発生した各送信パケットのうち、所定サイズよりも大きなサイズのパケット（「Ｃｉ−パケット長≦ＴＨ」となるパケット）は、次回以降のスケジューリングラウンドで送信するようにスケジューリングされる。従って、所定サイズ以下のパケットが所定サイズよりも大きいパケットに先行して送信されるスケジューリングを実現できる。この制御では、ＣｉがＴＨに近くなるにつれて、送信機会を与えるパケットのサイズが小さくなっていく。
【００３６】
スケジューリング処理部１２は、パケットスケジューリングが終了すると、送信対象となったパケットの送信をパケット送信処理部１３に要求する。パケットの送信要求を受けたパケット送信処理部１３は、送信要求が示すパケットをパケットデータ格納部１８から読み出し、通信インタフェース上に送信する。
【００３７】
このように、本実施の形態の通信装置において、パケットスケジューリングを行うスケジューリング処理部は、各スケジューリングラウンドにおいて、フローｉのパケットを送信するか否かの判定を、同一スケジューリングラウンドにおいて送信したフローｉのパケットのサイズに応じて値が更新されるカウンタＣｉと判定対象としているパケットのサイズの差、および所定の閾値に基づいて行うこととした。具体的には、Ｃｉと判定対象パケットのサイズの差が閾値よりも大きい場合に、当該パケットを送信することとした。これにより、Ｃｉが０に近づいた状態では、低遅延で送信するのが望ましい可能性の高いパケットである小さいサイズのパケットを先に送信することができる。
【産業上の利用可能性】
【００３８】
以上のように、本発明は、複数種類のフローのパケットを送信する通信装置として有用である。
【符号の説明】
【００３９】
１１  パケット送信要求受付処理部
１２  スケジューリング処理部
１３  パケット送信処理部
１４  タイマー部
１５  Ｃｒｅｄｉｔ  Ｃｏｕｎｔｅｒ格納部
１６  Ｑｕａｎｔｕｍ値格納部
１７  ＡｃｔｉｖｅＬｉｓｔ格納部
１８  パケットデータ格納部
１９  処理待ちパケット情報格納部
２０  キュー情報格納部
【図１】
2013239910.tif 000003
【図２−１】
2013239910.tif 000004
【図２−２】
2013239910.tif 000005