(57)【要約】【課題】複数のキューを用いたデータ送信制御において、キューごとにデータ送信の遅延時間を安定させることを課題とする。【解決手段】本発明のデータ送信制御装置３は、外部からデータを受信するデータ受信部４と、受信したデータを送信先ごとに振り分けるデータ振分部５と、複数のキュー７を有し、送信先ごとに振り分けられたデータを、送信先ごとに対応したキュー７に格納する記憶部６と、複数のキュー７それぞれに格納されたデータを送信先に向けて外部に送信するデータ送信部８と、記憶部のキュー７それぞれに格納されたデータをデータ送信部から外部に送信する場合の送信レートを制御する制御部９と、を備える。制御部９は、キュー７ごとに、格納されたデータ量が多いほど送信レートを高くする。【選択図】図１
2010187129.tif 000002
【特許請求の範囲】
【請求項１】
外部からデータを受信するデータ受信部と、
前記受信したデータをこのデータの送信先ごとに振り分けるデータ振分部と、
複数のキューを有し、前記送信先ごとに振り分けられたデータを、前記送信先ごとに対応したキューに格納する記憶部と、
前記複数のキューそれぞれに格納されたデータを前記送信先に向けて外部に送信するデータ送信部と、
前記記憶部のキューそれぞれに格納されたデータを前記データ送信部から外部に送信する場合の単位時間当たりのデータ量である送信レートを制御する制御部と、を備え、
前記制御部は、
前記キューごとに、格納されたデータ量が多いほど前記送信レートを高くする
ことを特徴とするデータ送信制御装置。
【請求項２】
前記制御部は、
前記複数のキューそれぞれの送信レートを、予め定められた複数段階のいずれかの送信レートで制御しており、
前記複数のキューそれぞれに関し、前記送信レートが所定段階以上である時間が所定時間継続した場合、当該送信レートを１段階以上低くする
ことを特徴とする請求項１に記載のデータ送信制御装置。
【請求項３】
前記データは、パケット単位で送受信されており、
前記制御部は、前記キューごとに割り振られた帯域の大きさに比例した所定値であるクレジットの値に所定の係数を乗算した値を、前記キューそれぞれに対応するカウンタに加算して記憶し、前記カウンタに記憶された値の合計が当該キューにおいて次に送信するパケットのデータ量以上になったときに、当該キューにおける当該パケットを前記データ送信部から外部に送信するとともに、前記カウンタに記憶された値の合計から当該キューにおける当該パケットのデータ量を減算し、
前記所定の係数は、当該カウンタに対応するキューに格納されているパケットの総データ量に比例した係数である
ことを特徴とする請求項１または請求項２に記載のデータ送信制御装置。
【請求項４】
外部からデータを受信するデータ受信部と、
前記受信したデータをこのデータの送信先ごとに振り分けるデータ振分部と、
複数のキューを有し、前記送信先ごとに振り分けられたデータを、前記送信先ごとに対応したキューに格納する記憶部と、
前記複数のキューそれぞれに格納されたデータを前記送信先に向けて外部に送信するデータ送信部と、
前記記憶部のキューそれぞれに格納されたデータを前記データ送信部から外部に送信する場合の単位時間当たりのデータ量である送信レートを制御する制御部と、を備えるデータ送信制御装置によるデータ送信制御方法であって、
前記制御部は、
前記キューごとに、格納されたデータ量が多いほど前記送信レートを高くする
ことを特徴とするデータ送信制御方法。
【請求項５】
前記制御部は、
前記複数のキューそれぞれの送信レートを、予め定められた複数段階のいずれかの送信レートで制御しており、
前記複数のキューそれぞれに関し、前記送信レートが所定段階以上である時間が所定時間継続した場合、当該送信レートを１段階以上低くする
ことを特徴とする請求項４に記載のデータ送信制御方法。
【請求項６】
前記データは、パケット単位で送受信されており、
前記制御部は、前記キューごとに割り振られた帯域の大きさに比例した所定値であるクレジットの値に所定の係数を乗算した値を、前記キューそれぞれに対応するカウンタに加算して記憶し、前記カウンタに記憶された値の合計が当該キューにおいて次に送信するパケットのデータ量以上になったときに、当該キューにおける当該パケットを前記データ送信部から外部に送信するとともに、前記カウンタに記憶された値の合計から当該キューにおける当該パケットのデータ量を減算し、
前記所定の係数は、当該カウンタに対応するキューに格納されているパケットの総データ量に比例した係数である
ことを特徴とする請求項４または請求項５に記載のデータ送信制御方法。
【請求項７】
請求項４から請求項６のいずれか一項に記載のデータ送信制御方法をコンピュータに実行させるためのデータ送信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送信における遅延時間を安定させる技術に関する。
【背景技術】
【０００２】
近年、例えば、インターネットなどの通信ネットワークにおいて、ルータなどに帯域制御装置（データ送信制御装置）が用いられる。帯域制御装置では、例えば、複数のユーザそれぞれのデータが、別々のキューに格納される。そして、各キュー内のデータは、予め割り振られた帯域に応じた読出レート（読出速度）で順次読み出され、送信先に向けて送られる。
【０００３】
図１０および図１１を用いて、従来の帯域制御装置によるデータ送信制御方法について説明する。図１０は、従来の帯域制御装置におけるキューによるデータ管理を示す概念図である。また、図１１は、従来の帯域制御装置によるデータ送信制御方法の一例を示す説明図である。なお、各構成に付与した符号は、図１と整合をとったものである。
【０００４】
図１０に示すように、複数のキュー７それぞれにデータが格納され、それらのデータが所定の読出レート（ここでは、上から順に比が１：２：１）で読み出され、各送信先に送られる。データがパケット単位で送受信される場合に、どのキュー７のパケットから読み出して送信するかを決めるキューイング・アルゴリズムの一つとして、例えば、ＷＦＱ（Weighted Fair Queuing）がある。ＷＦＱは、データの多さ、大きさ、重要性などに応じてパケットを読み出すときの優先順位を変える技術であり、音声やビデオのストリーミングに優先的に順位を譲ることで安定したストリーミングを実現することができるなどの特徴がある。
【０００５】
例えば、図１１に示すように、端末Ａ（端末２の「Ａ」。以下同様）から端末Ｃに送信するデータと、端末Ｂから端末Ｄに送信するデータとが、ネットワーク上で同じ帯域制御装置（ルータ）を経由する場合について説明する。端末Ａから送信されたデータは、キュー７ａ（７）に一旦蓄積され、その後、読み出されて端末Ｃに送信される。端末Ｂから送信されたデータは、キュー７ｂ（７）に一旦蓄積され、その後、読み出されて端末Ｄに送信される。データはパケット単位で送受信される。
【０００６】
各キュー７に対応して、デフィシットカウンタＤＣ（以下、単に「ＤＣ」という。）が設けられている。制御部９０は、各キュー７に与えられている帯域（ここでは、キュー７ａとキュー７ｂの帯域比が１：２）に比例したクレジット（ＤＣに蓄積するための数値）を定期的に発行し、各ＤＣに蓄積する。つまり、ＤＣは、クレジットを受け取るごとにその分カウントアップする。
【０００７】
そして、ＤＣの値がキュー７の先頭パケット（次に読み出すパケット）のバイト数以上になったら、その先頭パケットは読み出されて送信され、それとともに、読み出されたパケットのバイト数だけＤＣの値が減算される。この方式の場合、例えば、キュー７ａとキュー７ｂの読出レートの比は、帯域比と同じく１：２となる。
【０００８】
前記した従来の方式では、読出レートを自由に割り振ることができるという特徴がある。しかし、通信には、固定の読出レートを申告できないサービスもある。例えば、ＩＰ（Internet Protocol）ネットワーク上で音声情報を伝達するサービスであるＶｏＩＰ(Voice over IP）や、ＩＰを利用してデジタルテレビ放送を配信するサービスであるＩＰＴＶ（IP Television）などである。
【０００９】
それらのサービスにおける通信では、帯域が常時変動する。例えば、ＩＰＴＶの場合、平均的帯域は算出できるが、シーンチェンジを繰り返す時間帯と、静止画に近い時間帯では、画像データの読出レートが大きく変わる。その瞬間的な読出レートは、キューへの蓄積パケット数に依存する。パケットが蓄積されているキューは、遅延状態（待ち状態）となっている。このような処理では、キューに蓄積するパケットの量が大きく変動するため、遅延時間は安定しない。
【００１０】
そのような場合の従来の通信技術としては、例えば、動画の配信サービスにおいて、サーバにアクセスしている人数から統計的に視聴予測を行い、その予測結果に応じて帯域を確保するものがある。また、通常、リクエストデータよりもレスポンスデータのほうが大きいことを利用してトラヒック量を予測し、ダイナミックに帯域を変化させて通信を制御するものもある。
【００１１】
さらに、特許文献１では、ユーザごとの帯域の不足や余剰を逐次計測し、ユーザ間での帯域の貸し借りをダイナミックに行う技術が開示されている。
これらの技術によれば、通信の高速化などの所定の効果を得ることができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００５−１９１２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかし、ネットワークを経由するか否かを問わず、特に双方向の通信においては、高速化だけでなく、遅延時間の安定化が望まれる場合がある。例えば、音声の双方向通信やテレビ会議、あるいは、ロボットや遠隔医療におけるフィードバック制御の場合などである。それらの場合、遅延時間が小さいことだけでなく、遅延時間が安定していることが重要である。具体的には、例えば、触覚センサを用いた遠隔手術の場合、遅延時間の平均値が小さいことだけでなく、遅延時間が安定していることが望まれる。
【００１４】
そこで、本発明は、複数のキューを用いたデータ送信制御において、キューごとにデータ送信の遅延時間を安定させることを課題とする。
【課題を解決するための手段】
【００１５】
前記課題を解決するために、本発明は、外部からデータを受信するデータ受信部と、受信したデータをこのデータの送信先ごとに振り分けるデータ振分部と、複数のキューを有し、送信先ごとに振り分けられたデータを、送信先ごとに対応したキューに格納する記憶部と、複数のキューそれぞれに格納されたデータを送信先に向けて外部に送信するデータ送信部と、記憶部のキューそれぞれに格納されたデータをデータ送信部から外部に送信する場合の単位時間当たりのデータ量である送信レートを制御する制御部と、を備えるデータ送信制御装置である。制御部は、キューごとに、格納されたデータ量が多いほど送信レートを高くする。
【００１６】
かかる発明によれば、キューごとに、格納されたデータ量が多いほど送信レートを高くすることで、キューごとにデータ送信の遅延時間を安定させることができる。
【００１７】
前記課題を解決するために、制御部は、複数のキューそれぞれの送信レートを、予め定められた複数段階のいずれかの送信レートで制御しており、複数のキューそれぞれに関し、送信レートが所定段階以上である時間が所定時間継続した場合、当該送信レートを１段階以上低くする。
【００１８】
かかる発明によれば、複数のキューそれぞれに関し、送信レートが所定段階以上である時間が所定時間継続した場合、当該送信レートを１段階以上低くすることで、遅延時間の安定化とともに、送信レートが高くなった状態の長時間継続の回避による通信の安定化を実現することができる。
【００１９】
前記課題を解決するために、データは、パケット単位で送受信されており、制御部は、キューごとに割り振られた帯域の大きさに比例した所定値であるクレジットの値に所定の係数を乗算した値を、キューそれぞれに対応するカウンタに加算して記憶し、カウンタに記憶された値の合計が当該キューにおいて次に送信するパケットのデータ量以上になったときに、当該キューにおける当該パケットをデータ送信部から外部に送信するとともに、カウンタに記憶された値の合計から当該キューにおける当該パケットのデータ量を減算する。なお、所定の係数は、当該カウンタに対応するキューに格納されているパケットの総データ量に比例した係数である。
【００２０】
かかる発明によれば、キューごとに、クレジットの値にパケットの総データ量に比例した所定の係数を乗算した値をカウンタに加算して記憶し、カウンタに記憶された値の合計が次に送信するパケットのデータ量以上になったときに当該パケットをデータ送信部から外部に送信することで、送信レートをダイナミックかつ細かく変更することができるので、キューごとのデータ送信の遅延時間をより一層安定させることができる。
【００２１】
前記課題を解決するために、本発明は、データ送信制御方法をコンピュータに実行させるためのデータ送信制御プログラムである。
【００２２】
かかる発明によれば、このデータ送信制御プログラムをインストールされたコンピュータは、このデータ送信制御プログラムに基づいた各機能を実現することができる。
【発明の効果】
【００２３】
本発明によれば、複数のキューを用いたデータ送信制御において、キューごとにデータ送信の遅延時間を安定させることができる。
【図面の簡単な説明】
【００２４】
【図１】本実施形態のデータ送信制御装置を含む全体構成図である。
【図２】本実施形態におけるキュー長と読出レートとの関係を示す概念図である。
【図３】第１の実施形態（第３の実施形態）におけるパケット送信の様子を示す説明図である。
【図４】第１の実施形態におけるパケット送信の処理の流れを示すフローチャートである。
【図５】第２の実施形態におけるパケット送信の様子を示す説明図である。
【図６】第２の実施形態におけるパケット送信の処理の流れを示すフローチャートである。
【図７】第３の実施形態におけるパケット送信の処理の流れを示すフローチャートである。
【図８】比較例における受信レート、送信レート、キュー長および遅延時間の変化の概観を示すグラフである。
【図９】第３の実施形態における受信レート、送信レート、キュー長および遅延時間の変化の概観を示すグラフである。
【図１０】従来の帯域制御装置におけるキューによるデータ管理を示す概念図である。
【図１１】従来の帯域制御装置によるデータ送信制御方法の一例を示す説明図である。
【発明を実施するための形態】
【００２５】
以下、本発明を実施するための形態（以下、実施形態という。）について、図面を参照（言及図以外も適宜参照）しながら説明する。なお、以下において、第１の実施形態、第２の実施形態、第３の実施形態について説明するが、「本実施形態」と記載した場合はそれらのすべての実施形態を含むものとする。
【００２６】
（第１の実施形態）
まず、本実施形態のデータ送信制御装置を含む全体構成について説明する。図１に示すように、インターネットなどのネットワーク１に、ルータの役割を果たすデータ送信制御装置３が複数台設けられている。ユーザが使用するコンピュータ装置である端末２は、データ送信制御装置３に接続され、他の端末２と通信可能になっている。
【００２７】
データ送信制御装置３は、データ受信部４、データ振分部５、記憶部６、データ送信部８および制御部９を備えて構成される。
データ受信部４は、外部（自身のデータ送信制御装置３が接続されたデータ送信制御装置３や端末２。以下同様）から送信先のあるデータを受信する手段であり、例えば、通信インターフェイスにより実現される。
【００２８】
データ振分部５は、データ受信部４が受信したデータを送信先ごとに振り分ける手段であり、例えば、ＣＰＵ（Central Processing Unit）により実現される。
記憶部６は、データを記憶する手段であり、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスクなどによって実現される。また、記憶部６は、データ振分部５によって送信先ごとに振り分けられたデータをそれぞれ格納する複数のキュー７を有する。
【００２９】
データ送信部８は、複数のキュー７それぞれに格納されたデータをそれぞれの送信先に向けて外部に送信する手段であり、例えば、通信インターフェイスにより実現される。
制御部９は、複数のキュー７それぞれに格納されたデータをデータ送信部８から外部に送信する場合の送信レート（単位時間当たりの送信データ量。読出レートと同じ。）を制御する手段であり、例えば、ＣＰＵにより実現される。制御部９は、キュー７ごとに、格納されたデータ量が多いほど、段階的あるいは連続的に送信レート（読出レート）を高くする制御を行う（詳細は後記）。
【００３０】
次に、本実施形態におけるキュー長と読出レートとの関係について説明する。図２に示すように、ここでは、説明を簡単にするために、キュー７の全体の長さを相対的に「３」とする（他図についても同様）。また、以下、「キュー長」とは、キュー７に格納されたデータの長さのことを指す。
【００３１】
本実施形態のコンセプトは、キュー長が長い場合は読出レートを上げ、キュー長が短い場合は読出レートを下げることである。図２の例では、キュー長が通常（「２」）のとき、読出レートは「２」となっており、そのときの遅延時間（データがキュー７に滞在している時間）は「キュー長（「２」）」÷「読出レート（「２」）」で「１」と考えることができる。
【００３２】
キュー長が短く（「１」）なると、読出レートを「１」とし、そのときの遅延時間は「キュー長（「１」）」÷「読出レート（「１」）」で、やはり「１」となる。
同様に、キュー長が長く（「３」）なると、読出レートを「３」とし、そのときの遅延時間は「キュー長（「３」）」÷「読出レート（「３」）」で、やはり「１」となる。
【００３３】
続いて、このコンセプトをＷＦＱに適用した場合について説明する。図３に示すように、端末Ａから端末Ｃに送信するデータがキュー７ａ（７）に格納されること、端末Ｂから端末Ｄに送信するデータがキュー７ｂ（７）に格納されること、キュー７ａとキュー７ｂの帯域比が１：２であること、キュー７の全体の長さを相対的に「３」とすること、各キュー７に対応してＤＣが設けられていること、制御部９が各キュー７に与えられている帯域に比例したクレジットを定期的に発行すること、ＤＣの値が先頭パケットのバイト数以上になったらその先頭パケットが読み出されるとともにＤＣから当該パケット長が減算されることなどは、図１１の場合と同様である。
【００３４】
次に、図３の例における制御部９の処理について説明する。なお、以下では１つのキュー７についての処理を説明するが、実際にはその処理がすべてのキュー７に対して順番に行われる。
図４に示すように、制御部９は、キュー７に対してクレジットを発行する（ステップＳ１０）。キュー７ａに対してであればクレジット「１０」を発行し、キュー７ｂに対してであればクレジット「２０」を発行する。
【００３５】
次に、制御部９は、キュー７におけるキュー長（「Ｋ」。パケットの総量）を調べる（ステップＳ２０）。
キュー長が「Ｋ≦１」を満たすとき（ステップＳ２０で「Ｋ≦１」）、制御部９は、「Ｘ＝１」を設定する（ステップＳ３０）。なお、「Ｘ」は、クレジットに乗算する係数であり、詳細は後記する。
【００３６】
キュー長が「１＜Ｋ≦２」を満たすとき（ステップＳ２０で「１＜Ｋ≦２」）、制御部９は、「Ｘ＝２」を設定する（ステップＳ４０）。
キュー長が「２＜Ｋ」を満たすとき（ステップＳ２０で「２＜Ｋ」）、制御部９は、「Ｘ＝３」を設定する（ステップＳ５０）。
【００３７】
続いて、制御部９は、「ＤＣ≧ＤＣｔｈ」の条件を満たすか否かを判定する（ステップＳ６０）。ここで、「ＤＣｔｈ」は、キュー７にパケットが長時間存在ないときにＤＣが増えすぎないようにするための閾値（上限値）であり、例えば、パケットの平均サイズの５倍程度の数値である。なお、ＤＣｔｈは、キュー７ごとに別々の値を設定してもよいし、同じ値を設定してもよい。
【００３８】
「ＤＣ≧ＤＣｔｈ」の条件を満たす場合（ステップＳ６０でＹｅｓ）、制御部９は、ＤＣの値をそのままとし（ステップＳ７０：「ＤＣ＝ＤＣ」）、ステップＳ９０に進む。なお、このステップＳ７０における「ＤＣ＝ＤＣ」では、実質的に何も処理しないが、ステップＳ８０との対比で理解を容易にするために記載している（以下同様）。
【００３９】
「ＤＣ≧ＤＣｔｈ」の条件を満たさない場合（ステップＳ６０でＮｏ）、制御部９は、ステップＳ１０で発行したクレジットに、ステップＳ３０，Ｓ４０，Ｓ５０で設定した「Ｘ」を乗算した値をＤＣに加算し（ステップＳ８０：「ＤＣ＝ＤＣ＋クレジット×Ｘ」）、ステップＳ９０に進む。このステップＳ８０の処理が第１の実施形態のポイントの１つである。ＤＣに対して、単にクレジットを加算するのではなく、クレジットに「Ｘ」を乗算した値を加算することで、図２で説明した「キュー長が長い場合は読出レートを上げ、キュー長が短い場合は読出レートを下げる」というコンセプトを実現できる。
【００４０】
次に、制御部９は、キュー７にパケットがあるか否かを判定し（ステップＳ９０）、パケットがない場合（Ｎｏ）はステップＳ１０に戻り、パケットがある場合（Ｙｅｓ）はステップＳ１００に進む。
【００４１】
続いて、制御部９は、「ＤＣ≧パケット長（先頭パケットの長さ）」の条件を満たすか否かを判定し（ステップＳ９０）、条件を満たさない場合（Ｎｏ）はステップＳ１０に戻り、条件を満たす場合（Ｙｅｓ）はステップＳ１１０に進む。
次に、制御部９は、先頭パケットをデータ送信部８から外部に送信するとともに、ＤＣから当該パケット長を減算し（ステップＳ１１０：「ＤＣ＝ＤＣ−パケット長」）、ステップＳ１０に戻る。
【００４２】
このように、キュー長に応じた所定の係数Ｘをクレジットに乗算してからＤＣに加算することで、読出レートをダイナミックに変更し、キューごとのデータ送信の遅延時間を安定させることができる。
【００４３】
（第２の実施形態）
次に、第２の実施形態について説明する。図５を図３と比較して参照すればわかるように、第２の実施形態は、第１の実施形態と比較して、各キュー７に対応して、ＤＣに加えて、ローンカウンタＬＣ（以下、単に「ＬＣ」という。）が設けられている点で相違している。なお、ＬＣは、読出レートが高くなった状態が長時間継続しないようにするための変数であり、初期値は例えばゼロである。ＬＣの処理の詳細については図６を参照して後記するが、概要を説明すると、読出レートが高いときにＬＣは順次加算され、読出レートが高くなった状態が長時間継続したとき、つまり、ＬＣが所定の閾値（上限値）ＬＣｔｈを超えたときに、強制的に読出レートを下げることで、通信を安定させることができる。
【００４４】
次に、図５の例における制御部９の処理について、図６を参照して説明する。なお、以下では１つのキュー７についての処理を説明するが、実際にはその処理がすべてのキュー７に対して順番に行われる。また、図４の処理と同じ処理については同じステップ番号を付与し（例えば「ステップＳ１０」）、重複説明を適宜省略する。
【００４５】
図６に示すように、制御部９は、キュー７に対してクレジットを発行する（ステップＳ１０）。
次に、制御部９は、キュー７におけるキュー長（「Ｋ」）を調べる（ステップＳ２１）。
【００４６】
キュー長が「Ｋ≦１」を満たすとき（ステップＳ２１で「Ｋ≦１」）、制御部９は、「Ｘ＝１」を設定する（ステップＳ３０）。
キュー長が「１＜Ｋ」を満たすとき（ステップＳ２１で「１＜Ｋ」）、制御部９は、「ＬＣ≧ＬＣｔｈ」の条件を満たすか否かを判定する（ステップＳ２２）。ここで、ＬＣｔｈは、読出レートが高くなった状態が長時間継続しないようにするための閾値（上限値）であり、例えば、パケットの平均サイズの１０倍程度の数値である。なお、ＬＣｔｈは、キュー７ごとに別々の値を設定してもよいし、同じ値を設定してもよい。
【００４７】
「ＬＣ≧ＬＣｔｈ」の条件を満たす場合（ステップＳ２２でＹｅｓ）、制御部９は、ステップＳ３０に進む。このように、キュー長が長くてもＬＣがＬＣｔｈ以上であれば読出レートを上げないことで、読出レートが高くなった状態の長時間継続を回避することができる。
【００４８】
「ＬＣ≧ＬＣｔｈ」の条件を満たさない場合（ステップＳ２２でＮｏ）、制御部９は、再び、キュー７におけるキュー長（「Ｋ」）を調べる（ステップＳ２３）。
キュー長が「１＜Ｋ≦２」を満たすとき（ステップＳ２３で「１＜Ｋ≦２」）、制御部９は、「Ｘ＝２」を設定する（ステップＳ４０）。
キュー長が「２＜Ｋ」を満たすとき（ステップＳ２３で「２＜Ｋ」）、制御部９は、「Ｘ＝３」を設定する（ステップＳ５０）。
【００４９】
続いて、制御部９は、「ＤＣ≧ＤＣｔｈ」の条件を満たすか否かを判定する（ステップＳ５１）。
「ＤＣ≧ＤＣｔｈ」の条件を満たす場合（ステップＳ５１でＹｅｓ）、制御部９は、ＤＣの値をそのままとし（ステップＳ５２：「ＤＣ＝ＤＣ」）、また、ステップＳ１０で発行したクレジットに、ステップＳ４０，Ｓ５０で設定した「Ｘ」を乗算した値をＬＣに加算し（ステップＳ５２：「ＬＣ＝ＬＣ＋クレジット×Ｘ」）、ステップＳ５４に進む。
【００５０】
「ＤＣ≧ＤＣｔｈ」の条件を満たさない場合（ステップＳ５１でＮｏ）、制御部９は、クレジットに「Ｘ」を乗算した値をＤＣに加算し（ステップＳ５３：「ＤＣ＝ＤＣ＋クレジット×Ｘ」）、また、クレジットに「Ｘ」を乗算した値をＬＣに加算し（ステップＳ５３：「ＬＣ＝ＬＣ＋クレジット×Ｘ」）、ステップＳ５４に進む。
【００５１】
続いて、制御部９は、「ＤＣ≧パケット長（先頭パケットの長さ）」の条件を満たすか否かを判定し（ステップＳ５４）、条件を満たさない場合（Ｎｏ）はステップＳ１０に戻り、条件を満たす場合（Ｙｅｓ）はステップＳ５５に進む。
次に、制御部９は、先頭パケットをデータ送信部８から外部に送信するとともに、ＤＣから当該パケット長を減算し（「ＤＣ＝ＤＣ−パケット長」）（ステップＳ５５）、ステップＳ１０に戻る。
【００５２】
ステップＳ３０の後、制御部９は、「ＤＣ≧ＤＣｔｈ」の条件を満たすか否かを判定する（ステップＳ６０）。
「ＤＣ≧ＤＣｔｈ」の条件を満たす場合（ステップＳ６０でＹｅｓ）、制御部９は、ＤＣの値をそのままとし（ステップＳ７０：「ＤＣ＝ＤＣ」）、ステップＳ９０に進む。
【００５３】
「ＤＣ≧ＤＣｔｈ」の条件を満たさない場合（ステップＳ６０でＮｏ）、制御部９は、クレジットをＤＣに加算し（ステップＳ８１：「ＤＣ＝ＤＣ＋クレジット」）、ステップＳ９０に進む。
【００５４】
次に、制御部９は、キュー７にパケットがあるか否かを判定し（ステップＳ９０）、パケットがない場合（Ｎｏ）はステップＳ１０に戻り、パケットがある場合（Ｙｅｓ）はステップＳ１００に進む。
【００５５】
続いて、制御部９は、「ＤＣ≧パケット長（先頭パケットの長さ）」の条件を満たすか否かを判定し（ステップＳ１００）、条件を満たさない場合（Ｎｏ）はステップＳ１０に戻り、条件を満たす場合（Ｙｅｓ）はステップＳ１１１に進む。
次に、制御部９は、先頭パケットをデータ送信部８から外部に送信するとともに、ＤＣから当該パケット長を減算し（「ＤＣ＝ＤＣ−パケット長」）、また、ＬＣから当該パケット長を減算し（「ＬＣ＝ＬＣ−パケット長」）（ステップＳ１１１）、ステップＳ１０に戻る。
【００５６】
このように、キュー長が長くて読出レートを上げている間はＬＣが増加し続け、ＬＣがＬＣｔｈ以上になったときはキュー長が長くても読出レートを下げるようにしたので、遅延時間の安定化とともに、読出レートが高くなった状態の長時間継続の回避による通信の安定化を実現することができる。
【００５７】
（第３の実施形態）
次に、第３の実施形態について説明する。第１の実施形態で３段階の読出レートを使い分けていたのに対し、第３の実施形態は、読出レートを連続的に変化させる点で相違している。
【００５８】
図３の例における制御部９の処理について説明する。なお、以下では１つのキュー７についての処理を説明するが、実際にはその処理がすべてのキュー７に対して順番に行われる。また、図４の処理と同じ処理については同じステップ番号を付与し（例えば「ステップＳ１０」）、重複説明を適宜省略する。
【００５９】
図７に示すように、制御部９は、キュー７に対してクレジットを発行する（ステップＳ１０）。
次に、制御部９は、キュー７におけるキュー長（パケットの総量）を「Ｋ」とし、キュー長に関する所定の規定値を「Ｋｔｈ」とし、「Ｘ＝Ｋ／Ｋｔｈ」を設定する（ステップＳ２１）。Ｋｔｈとしては、例えば、図２における通常のキュー長である「２」のような数値を適用すればよい。
【００６０】
ステップＳ６０〜Ｓ１１０は図４と同様なので説明を省略する。これらの処理により、例えば、キュー長が「０」であればクレジットはＤＣに加算されず、キュー長がＫｔｈの１．５倍であればクレジットの１．５倍の値がＤＣに加算される。
【００６１】
このように、クレジットに乗算する係数である「Ｘ」に「Ｋ／Ｋｔｈ」を採用することで読出レートをダイナミックかつ細かく変更することができるので、キューごとのデータ送信の遅延時間をより一層安定させることができる。なお、この「Ｘ＝Ｋ／Ｋｔｈ」は、第２の実施形態に適用してもよい。
【００６２】
図８に示すように、比較例（従来技術）の場合、受信レートが図のように変化するとき、送信レートは規定値未満のとき以外は規定値で一定に維持されるので、キュー長および遅延時間は受信レートの変化にほぼ連動する。
【００６３】
一方、図９に示すように、第３の実施形態の場合、受信レートが比較例のときと同じように変化するとき、送信レートは前記したようにキュー長が長くなると高くなるので受信レートにある程度連動する。それにより、キュー長も、比較例の場合に比べて緩やかな変化となる。そして、遅延時間は、前記コンセプトに従い一定となる。
【００６４】
なお、第１の実施形態および第２の実施形態の場合も、遅延時間が比較例の場合より格段に安定する。
【００６５】
また、本実施形態のデータ送信制御装置３は、コンピュータ装置に、前記した各処理のプログラムを実行させることで実現することができる。
【００６６】
以上で本実施形態の説明を終えるが、本発明の態様はこれらに限定されるものではない。
例えば、本発明は、ネットワークを経由しないロボットや遠隔医療におけるフィードバック制御の場合などにも適用することができる。
【００６７】
また、遅延時間の長さは、適用分野や場面に応じて、例えば、数ミリ秒〜数百ミリ秒程度の値になるように、各数値を設定することで調節できる。
さらに、データがパケット形式でない場合にも適用できる。
【００６８】
また、ＤＣやＬＣ、およびそれらを用いた処理は、本発明にとって必須ではなく、使用の有無を適宜選択すればよい。また、ＤＣやＬＣを使用する際に、ＤＣｔｈやＬＣｔｈの値は、映像通信や、遠隔医療におけるフィードバック制御など、適用場面に応じて適宜自由に設定すればよい。
【００６９】
さらに、制御部９は、ＣＰＵにより実現するものとしたが、それ以外に、ＦＰＧＡ（Field Programmable Gate Array）などのＬＳＩ（Large Scale Integration）などによって実現してもよい。つまり、制御部９の機能は、ソフトウェアで実現してもよいし、ハードウェアで実現してもよい。
その他、具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【００７０】
１      ネットワーク
２      端末
３      データ送信制御装置
４      データ受信部
５      データ振分部
６      記憶部
７      キュー
８      データ送信部
９      制御部
【図１】
2010187129.tif 000003
【図２】
2010187129.tif 000004
【図３】
2010187129.tif 000005
【図４】
2010187129.tif 000006
【図５】
2010187129.tif 000007
【図６】
2010187129.tif 000008
【図７】
2010187129.tif 000009
【図８】
2010187129.tif 000010
【図９】
2010187129.tif 000011
【図１０】
2010187129.tif 000012
【図１１】
2010187129.tif 000013