(57)【特許請求の範囲】
【請求項１】
外部機器に接続されるインタフェース部を有し、トークンバケット方式で当該インタフェース部から入力されるデータを外部ネットワークへ送出する通信機器であって、
前記外部ネットワークから受信した情報を参照し、当該外部ネットワークにおける輻輳の発生の有無を判定する判定部と、
前記インタフェース部からのデータの入力スループットを検出するスループット検出部と、
前記判定部により前記輻輳の発生が無いと判定された場合、前記スループット検出部により検出された前記入力スループットの統計値に基づいて、前記トークンバケット方式におけるトークンレートを決定し、前記判定部により前記輻輳の発生が有ると判定された場合、当該判定直後の入力スループットに基づいて前記トークンレートを決定する決定部と、を備える通信機器。
【請求項２】
前記判定部は、前記外部ネットワークから受信したパケットのヘッダ情報を参照し、当該外部ネットワークにおける輻輳の発生を示すデータの有無を判定することにより、当該外部ネットワークにおける輻輳の発生の有無を判定する請求項１に記載の通信機器。
【請求項３】
前記決定部は、前記統計値として、前記入力スループットの指数平滑化平均値を算出する請求項１又は２に記載の通信機器。
【請求項４】
前記決定部は、前記判定部により前記輻輳の発生が有ると判定された場合、前記指数平滑化平均値を、当該判定直後の入力スループットに書き換える請求項３に記載の通信機器。
【請求項５】
前記決定部は、前記統計値として、所定期間における最大スループット又は最終スループットを算出する請求項１又は２に記載の通信機器。
【請求項６】
外部機器から入力されるデータを外部ネットワークへ出力する通信機器であって、
前記外部ネットワークにおける輻輳の発生の有無を判定する判定部と、
前記外部機器から入力されるデータの入力スループットを検出するスループット検出部と、
前記判定部により前記輻輳の発生が有ると判定された場合、当該判定直後の入力スループットに基づいてデータを外部ネットワークへ出力するスループットを制御する制御部と、を備える通信機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末に接続され、トークンバケット方式で当該端末からのデータパケットを外部ネットワークへ送出する通信機器に関する。
【背景技術】
【０００２】
従来、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の端末に接続されて無線通信を行う通信機器が知られている。また、このような通信機器において、ネットワークのリソースを使いすぎないように、通信速度（スループット）を制御するトークンバケットと呼ばれる方式がある。
【０００３】
トークンバケット機構は、入力されたパケットを蓄積するパケットバッファと、トークンを蓄積するトークンバッファ（トークンバケット）とを備える。トークンバッファに規定量のトークンが溜まるとパケットバッファからパケットが出力され、トークンバッファのトークンが減少する。このように、外部ネットワークへ出力されるパケットのスループットは、単位時間当たりにトークンバッファにトークンが補充される量（トークンレート）によって制御される。このトークンレートは、所定のパラメータとネットワーク環境によって動的に変化し、ネットワークが混雑している時は低く、空いている時は高く調整される。
【０００４】
例えば、特許文献１では、トークンの増減状態に基づく所定のタイミングで、パケットのスループットに基づいてトークンレートを算出する方法が提案されている。
【０００５】
また、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）の輻輳制御方法の１つにＥＣＮ（Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ）がある。ＥＣＮは、ルータが輻輳を検出し、輻輳情報をＴＣＰ送信者に通知することで、ＴＣＰ送信者が送信速度を制限して輻輳を回避する方法である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２２１５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、通信機器がトークンバケット方式を採用している場合、端末側（ＴＣＰ送信者）でＥＣＮによる輻輳回避処理が行われると、端末から通信機器へのパケットの入力スループットが低下する。しかしながら、特許文献１の方法によれば、トークンの増減状態に基づく所定のタイミングで計算を行い、また、計算結果も、輻輳回避による変化後の入力スループットそのものに基づくトークンレートとならない場合があった。
【０００８】
したがって、特許文献１の方法では、輻輳回避による入力スループットの低下がトークンレートへ反映されるまでに遅延が生じ、さらに、変化後の入力スループットそのものが利用されないことにより、出力スループットを十分に制御できなかった。
【０００９】
その結果、例えば、輻輳発生時にパケットバッファにパケットが溜まっていると、ＥＣＮによる輻輳回避とは関係なく、このパケットが送信され、輻輳状態の外部ネットワークにより破棄される場合があった。
【００１０】
本発明は、輻輳発生時にも、遅延なくデータパケットの出力スループットを制御できる通信機器を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る通信機器は、外部機器に接続されるインタフェース部を有し、トークンバケット方式で当該インタフェース部から入力されるデータを外部ネットワークへ送出する通信機器であって、前記外部ネットワークから受信した情報を参照し、当該外部ネットワークにおける輻輳の発生の有無を判定する判定部と、前記インタフェース部からのデータの入力スループットを検出するスループット検出部と、前記判定部により前記輻輳の発生が無いと判定された場合、前記スループット検出部により検出された前記入力スループットの統計値に基づいて、前記トークンバケット方式におけるトークンレートを決定し、前記判定部により前記輻輳の発生が有ると判定された場合、当該判定直後の入力スループットに基づいて前記トークンレートを決定する決定部と、を備える。
また、前記判定部は、前記外部ネットワークから受信したパケットのヘッダ情報を参照し、当該外部ネットワークにおける輻輳の発生を示すデータの有無を判定することにより、当該外部ネットワークにおける輻輳の発生の有無を判定することが好ましい。
【００１２】
また、前記決定部は、前記統計値として、前記入力スループットの指数平滑化平均値を算出することが好ましい。
また、前記決定部は、前記判定部により前記輻輳の発生が有ると判定された場合、前記指数平滑化平均値を、当該判定直後の入力スループットに書き換えることが好ましい。
【００１３】
また、前記決定部は、前記統計値として、所定期間における最大スループット又は最終スループットを算出することが好ましい。
【００１４】
本発明に係る通信機器は、外部機器から入力されるデータを外部ネットワークへ出力する通信機器であって、前記外部ネットワークにおける輻輳の発生の有無を判定する判定部と、前記外部機器から入力されるデータの入力スループットを検出するスループット検出部と、前記判定部により前記輻輳の発生が有ると判定された場合、当該判定直後の入力スループットに基づいてデータを外部ネットワークへ出力するスループットを制御する制御部と、を備える。
【発明の効果】
【００１５】
本発明によれば、輻輳発生時にも、遅延なくデータパケットの出力スループットを制御できる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るＰＣカードの機能構成を示すブロック図である。
【図２】本発明の実施形態に係るトークンバケット機構における上りデータフローの構成を示すブロック図である。
【図３】本発明の実施形態に係るＥＣＮによる輻輳制御のシーケンス図である。
【図４】本発明の実施形態に係る指数平滑化平均値の時間遷移の例を示す図である。
【図５】本発明の実施形態に係るスループットの監視処理を示すフローチャートである。
【図６】本発明の実施形態に係るトークンレートの決定処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態の一例について説明する。なお、本実施形態では、通信機器の一例として、ＰＣ２（端末）に接続されるＰＣカード１を説明する。なお、通信機器は、ＰＣカード１の他、携帯電話機、ＰＨＳ（登録商標；Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ  ｐｈｏｎｅ  Ｓｙｓｔｅｍ）、ＵＳＢ端末、車載通信モジュール、自動販売機用通信モジュール等、外部端末に接続されて無線データ通信機能を提供する様々な通信機器であってよい。
【００１８】
図１は、本実施形態に係るＰＣカード１の機能構成を示すブロック図である。
ＰＣカード１は、制御部１０と、記憶部２０と、インタフェース部３０と、通信部４０と、トークンバケット機構５０とを備える。
【００１９】
制御部１０は、ＰＣカード１の全体を制御しており、例えば、インタフェース部３０、通信部４０、トークンバケット機構５０等に対して所定の制御を行う。また、制御部１０は、インタフェース部３０や通信部４０等から入力を受け付けて、各種処理を実行する。そして、制御部１０は、処理実行の際には、記憶部２０を制御し、各種プログラム及びデータの読み出し、並びにデータの書き込みを行う。
【００２０】
さらに、制御部１０は、スループット検出部１１と、トークン検出部１２と、判定部１３と、決定部１４とを備える。そして、制御部１０は、通信状況に応じて、トークンバケット機構５０におけるトークンレートを決定し、ＰＣ２の通信速度を制御する。なお、制御部１０が備える各部の機能は後述する。
【００２１】
記憶部２０は、例えば、ワーキングメモリを含み、制御部１０による演算処理に利用される。また、本実施形態では、後述の処理を実行するプログラムや各種データ等が記憶される。なお、記憶部２０は、着脱可能な外部メモリを兼ねていてもよい。
【００２２】
インタフェース部３０は、ＰＣ２とデータパケットの送受信を行うインタフェースであり、ＰＣ２から受信したパケットをトークンバケット機構５０へ入力し、トークンバケット機構５０から出力されたパケットをＰＣ２へ送信する。
【００２３】
通信部４０は、所定の周波数帯（例えば、２ＧＨｚ帯や８００ＭＨｚ帯等）で外部装置（基地局）と通信を行う。そして、通信部４０は、アンテナ４１より受信した信号を復調処理し、処理後の信号をトークンバケット機構５０に供給し、また、トークンバケット機構５０から供給された信号を変調処理し、アンテナ４１から外部装置に送信する。
【００２４】
トークンバケット機構５０は、ＰＣ２から外部ネットワーク（基地局）への上りデータフローと、外部ネットワーク（基地局）からＰＣ２への下りデータフローとのパケットのスループットを制御する。
【００２５】
図２は、本実施形態に係るトークンバケット機構５０における上りデータフローの構成を示すブロック図である。
【００２６】
まず、ＰＣ２からの入力パケットは、パケットバッファ５１に蓄えられる。また、一定（例えば、３０ｍｓｅｃ）間隔で、トークンバッファ５２にトークンが追加される。
【００２７】
トークンバケット機構５０は、充分な量のトークンがトークンバッファ５２にあれば、パケットバッファ５１に蓄えられているパケットを外部ネットワークへ出力し、トークンバッファ５２のトークンを減少させる。また、トークンバッファ５２のトークンがなくなると、トークンが溜まるまでパケットは出力されず、パケットバッファ５１に溜まり続ける。
【００２８】
なお、トークンバケット機構５０における下りデータフローの構成も同様であり、図２の「ＰＣ２からの入力」は「ネットワークからの入力」と読み替えられ、「ネットワークへの出力」は「ＰＣ２への出力」と読み替えられる。
【００２９】
図１に戻り、本実施形態に係る制御部１０の各部の機能を詳述する。
スループット検出部１１は、インタフェース部３０を通過するＰＣ２からのデータパケットの、トークンバケット機構５０への入力スループットを検出する。そして、検出された入力スループットは、決定部１４へ通知される。
【００３０】
トークン検出部１２は、トークンバッファ５２に保持されているトークン量の推移を検出する。具体的には、トークン検出部１２は、トークンバッファ５２に保持されたトークンの増加が所定時間以上継続したこと、及びトークンの減少状態からトークンの枯渇状態へ遷移したことを検出する。そして、検出結果は、決定部１４へ通知される。
【００３１】
判定部１３は、通信部４０により外部ネットワークから受信したパケットのＴＣＰヘッダ（ヘッダ情報）を参照し、外部ネットワークにおける輻輳の発生を示すデータ（後述のＥＣＥフラグ）の有無を判定する。
【００３２】
ここで、ＥＣＮによる輻輳制御について説明する。
図３は、本実施形態に係るＥＣＮによる輻輳制御のシーケンス図である。この例では、ルータを介して、ＴＣＰ送信者（例えば、ＰＣ２）とＴＣＰ受信者とが通信を行っている。
【００３３】
ルータは、転送待ちのパケットを蓄積しておくバッファの使用量が一定の閾値を超えると、ネットワークが輻輳していると判断する。ルータは、ネットワークが輻輳していると判断すると、パケットのＩＰヘッダのＴｏＳフィールドに、輻輳を経験していることを示すＣＥフラグを立てて、パケットをＴＣＰ受信者へ転送する（ステップＳ１）。
【００３４】
ＴＣＰ受信者は、ＩＰヘッダにＣＥフラグが立っているパケットを受信した場合、ＴＣＰヘッダのＥＣＥ（ＥＣＮ−Ｅｃｈｏ）フラグを立ててＴＣＰ送信者に確認応答パケット（Ａｃｋ）を送信する。これは、ＴＣＰ送信者からＴＣＰヘッダのＣＷＲ（Ｃｏｎｇｅｓｔｉｏｎ  Ｗｉｎｄｏｗ  Ｒｅｄｕｃｅｄ）フラグが立っているパケットを受信するまで続けられる（ステップＳ２）。
【００３５】
ＴＣＰ送信者は、ＴＣＰヘッダにＥＣＥフラグが立っているパケットを受信した場合、輻輳が発生していると判断する。そして、ＴＣＰ送信者は、輻輳ウィンドウサイズをスロースタートの閾値まで減少させて送信レートを下げ、以降に送信するパケットのＴＣＰヘッダにＣＷＲフラグを立てて送信する（ステップＳ３）。
【００３６】
ＴＣＰ受信者は、ＴＣＰヘッダにＣＷＲフラグが立っているパケットを受信すると、確認応答パケットにＥＣＥフラグを立てることを停止する（ステップＳ４）。
【００３７】
判定部１３は、外部ネットワークにおける輻輳の発生を示すデータとして、ステップＳ２におけるＴＣＰヘッダのＥＣＥフラグの有無を判定する。
【００３８】
決定部１４は、判定部１３により輻輳の発生を示すデータとしてのＥＣＥフラグが無いと判定された場合、スループット検出部１１により検出された入力スループットの統計値に基づいてトークンバッファ５２のトークンレートを決定する。一方、決定部１４は、判定部１３によりＥＣＥフラグが有ると判定された場合、この判定直後の入力スループットに基づいてトークンレートを決定する。
【００３９】
具体的には、決定部１４は、例えば、以下の計算方法（１）又は（２）により、トークンレートを決定する。
【００４０】
（１）簡易計算の場合
決定部１４は、上記の統計値として、トークンの減少状態が終了した時点でのスループット、又はトークン減少状態での最大スループットを取得し、この取得したスループットに許容係数を乗じた値を、更新後のトークンレートとして決定する。
なお、入力スループットに対してトークンレートに許容する割合を許容係数と呼び、許容係数は、予め設定され、記憶部２０に記憶されているものとする。
【００４１】
また、決定部１４は、上記の統計値として、トークンの増加状態が始まった時点から一定時間が経過した時のスループット、又はこの間の最大スループットを取得し、この取得したスループットに許容係数を乗じた値を、更新後のトークンレートとして決定する。
【００４２】
ここで、判定部１３によりＥＣＥフラグが有ると判定された場合、判定された時点で、決定部１４は、この判定直後の入力スループットに許容係数を乗じた値を、更新後のトークンレートとして決定する。
【００４３】
（２）指数平滑化平均処理の場合
決定部１４は、トークンの減少状態中に定期的にサンプリングしたスループットに対して指数平滑化平均処理を行う。決定部１４は、トークンの減少状態が終了した時点で、指数平滑化平均処理後の最大値又は最後の値を上記の統計値として取得し、この取得した統計値に許容係数を乗じた値を、更新後のトークンレートとして決定する。
【００４４】
ここで、スループットのｎ番目のサンプル値Ｘｎが時刻ｔｎで得られたとすると、指数平滑化平均処理後の値Ａｎは、
Ａｎ＝（１−Ｃ）Ａｎ−１＋ＣＸｎ
Ｃ＝１−ｅｘｐ（−１／Ｔ）Δｔ
Δｔ＝ｔｎ−ｔｎ−１
として求められる。なお、Ｔは任意の定数である。
また、得られた指数平滑化平均値（Ａｎ）は、記憶部２０に記憶されることとしてよい。
【００４５】
また、決定部１４は、トークンの増加状態中に定期的にサンプリングしたスループットに対して指数平滑化平均処理を行う。決定部１４は、トークンの増加状態が始まった時点から一定時間が経過した時点で、指数平滑化平均処理後の最大値又は最後の値を上記の統計値として取得し、この取得した統計値に許容係数を乗じた値を、更新後のトークンレートとして決定する。
【００４６】
ここで、判定部１３によりＥＣＥフラグが有ると判定された場合、判定された時点で、決定部１４は、記憶部２０に記憶されている指数平滑化平均値（Ａｎ）を、この判定直後の入力スループットに書き換える。そして、決定部１４は、書き換えられた指数平滑化平均値（Ａｎ）に許容係数を乗じた値を、更新後のトークンレートとして決定する。
【００４７】
図４は、本実施形態に係る指数平滑化平均値の時間遷移の例を示す図である。
外部ネットワークに輻輳が発生していない場合には、指数平滑化平均値は、図中のＡで示される曲線を遷移する。この場合は、急激なスループットの変動があったとしても、過去のスループットがならされ、計算値は滑らかに変動する。
【００４８】
一方、外部ネットワークに輻輳が発生し、時刻ｔ１において判定部１３によりＥＣＥフラグが有ると判定された場合、指数平滑化平均値は、図中のＢで示される曲線を遷移する。この場合、指数平滑化平均値は時刻ｔ１で急激に変動するが、決定部１４は、輻輳回避のために変更された現在のスループットに対応したトークンレートを決定することができる。その後、曲線Ｂは、時間の経過と共に曲線Ａに漸近していく。
【００４９】
さらに、記憶部２０には、予め最大トークンレートと最小トークンレートとが記憶されていることが望ましい。この場合、決定部１４は、上述の（１）及び（２）のいずれの計算方法であっても、最大トークンレートを上回ったときには最大トークンレートを、最小トークンレートを下回ったときには最小トークンレートを、更新後のトークンレートとして決定する。
【００５０】
以下、指数平滑化平均スループットを用いた制御部１０の処理の流れを説明する。
図５は、本実施形態に係るスループットの監視処理を示すフローチャートである。
【００５１】
ステップＳ１において、制御部１０（スループット検出部１１）は、トークンバケット機構５０へのＰＣ２からの入力スループットを検出する。
【００５２】
ステップＳ２において、制御部１０（決定部１４）は、ステップＳ１で検出した入力スループットと、記憶部２０に記憶されている前回算出された値とを用いて、指数平滑化平均スループットを算出する。
【００５３】
ステップＳ３において、制御部１０は、ステップＳ１で検出された現在の入力スループット、及びステップＳ２で算出された指数平滑化平均スループットを、記憶部２０に記憶する。
【００５４】
ステップＳ４において、制御部１０は、通信の終了等、所定のイベントの有無を検出し、監視処理を終了するか否かを判定する。制御部１０は、この判定がＹＥＳの場合、処理を終了し、判定がＮＯの場合、処理をステップＳ１に戻して監視処理を継続する。
【００５５】
図６は、本実施形態に係るトークンレートの決定処理を示すフローチャートである。
ステップＳ１１において、制御部１０（判定部１３）は、通信部４０により外部ネットワークから受信したパケットのＴＣＰヘッダを参照し、ＥＣＥフラグの有無、すなわち輻輳を回避中であるか否かを判定する。制御部１０は、この判定がＹＥＳの場合、処理をステップＳ１２に移し、判定がＮＯの場合、処理をステップＳ１３に移す。
【００５６】
ステップＳ１２において、制御部１０（決定部１４）は、輻輳回避のためＰＣ２からの入力スループットが抑制されていると判断し、スループットの監視処理（図５）により記憶部２０に記憶されている指数平滑化平均スループットを、現在の入力スループットで書き換える。
【００５７】
ステップＳ１３において、制御部１０（決定部１４）は、トークンレートの決定タイミングであるか否かを判定する。具体的には、制御部１０は、トークン検出部１２により、トークンバッファ５２に保持されたトークンの増加が所定時間以上継続したこと、又はトークンの減少状態からトークンの枯渇状態へ遷移したことが検出されたか否かを判定する。制御部１０は、この判定がＹＥＳの場合、処理をステップＳ１４に移し、判定がＮＯの場合、処理をステップＳ１１に戻す。
【００５８】
ステップＳ１４において、制御部１０（決定部１４）は、記憶部２０に記憶されている指数平滑化平均スループットに基づいて、トークンレートを算出して決定する。
【００５９】
ステップＳ１５において、制御部１０は、通信の終了等、所定のイベントの有無を検出し、スループットの決定処理を終了するか否かを判定する。制御部１０は、この判定がＹＥＳの場合、処理を終了し、判定がＮＯの場合、処理をステップＳ１１に戻して処理を継続する。
【００６０】
以上のように、本実施形態によれば、ＥＣＮの輻輳回避動作がトークンバケット機構５０により遅延されるのを抑制できる。したがって、ＰＣカード１は、外部ネットワークに輻輳が発生した時にも、遅延なくデータパケットの出力スループットを制御できる。
【００６１】
また、ＰＣカード１は、指数平滑化平均スループットを利用する場合には、輻輳発生時にのみ、この指数平滑化平均スループットを現在の値にリセットしてトークンレートを決定する。その後、ＰＣカード１は、輻輳制御の完了を監視することなく、定期的に更新される指数平滑化平均スループットを用いて、通常のタイミングでトークンレートを決定することができる。
【００６２】
以上、好適な実施形態について説明したが、本発明は前述した実施形態に限定されることなく種々の形態で実施することができる。また、前述の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、前述のものに限定されない。
【００６３】
上述の実施形態では、トークンレートの決定処理において、輻輳を回避中であるか否かの判定（ステップＳ１１）を定常的に繰り返しているが、これには限られない。指数平滑化平均スループットを現在の値にリセット（ステップＳ１２）し、トークンレートを算出（ステップＳ１３）した後は、ステップＳ１３で次のタイミングとなるまでは、輻輳回避中の判定（ステップＳ１１）を省略してもよい。
【００６４】
また、上述の実施形態では、ＥＣＮの輻輳回避処理により入力スループットが変動した場合を説明したが、この他の原因で入力スループットが大きく変動する場合もある。制御部１０は、この入力スループットの変動量を監視し、所定の変動閾値を超える変動があった場合に、この変動のタイミングで、変動後の入力スループットに基づいてトークンレートを決定してもよい。このことにより、制御部１０は、入力スループットの変動を迅速にトークンレートへ反映できる。
【符号の説明】
【００６５】
１  ＰＣカード（通信機器）
２  ＰＣ（端末）
１０  制御部
１１  スループット検出部
１２  トークン検出部
１３  判定部
１４  決定部
２０  記憶部
３０  インタフェース部
４０  通信部
４１  アンテナ
５０  トークンバケット機構
５１  パケットバッファ
５２  トークンバッファ
【図１】
0005448793.tif 000002
【図２】
0005448793.tif 000003
【図３】
0005448793.tif 000004
【図４】
0005448793.tif 000005
【図５】
0005448793.tif 000006
【図６】
0005448793.tif 000007