本実施形態の通信装置は、ユーザー端末の状態変化の検出に応じて状態変化を通知する通知パケットを送信する通知ソフトウェアを実行するユーザー端末と接続する。通信装置は、ユーザー端末とネットワークとの間でパケットを転送する複数のパケット転送部、および、通知ソフトウェアからの通知パケットの受信に応答して、状態変化に応じた複数のパケット転送部の負荷及び負荷の変動量に基づいて複数のパケット転送部の予測負荷を求め、求めた予測負荷に応じて複数のパケット転送部の各パケット転送部を、パケットを転送するアクティブモードとパケットの転送動作をしない省電力モードであるスタンバイモードに選択的に制御するモード制御部を有する。以下、通信装置の具体例としてパケット転送装置とも言えるホームゲートウェイを取り上げ、具体的に説明する。
図1は、SoC300を用いたホームゲートウェイの利用形態を示す図である。SoC300は、ホームゲートウェイ等のネットワーク装置に搭載されるLSI(Large Scale Integration)であり、パケット転送や、ホームゲートウェイ等のアプリケーションの実行、インターフェースの制御を行う。ホームゲートウェイ100は、WAN(Wide Area Network)ポート110とLAN(Local Area Network)ポート111を備える。ホームゲートウェイ100は、LANポートを介して、ネットワーク機器と接続し、ローカルネットワーク(家庭内LAN)を形成する。ネットワーク機器とは、例えば、家庭内LANに接続したパーソナルコンピュータ(以下PC)101、IP電話102、および無線LANで接続したノートパソコン103や携帯電話端末などである。また、ホームゲートウェイ100は、WANポート110を介してネットワーク(たとえば、インターネット網104)とも接続される。ホームゲートウェイ100は、家庭内LANとネットワーク(インターネット網104)との間で送受信される通信パケットの中継および経路制御を実行する。ここでは、SoC300をホームゲートウェイ100に用いた例を説明するが、SoC300は、ルータ、無線アクセスポイント、テザリング機能等を有する携帯端末などの通信装置にも適用可能である。
通知ソフトウェアについて説明する。通知ソフトウェアは、ユーザーが利用する端末(例えばPC101やノートパソコン103)上で動作し、ユーザー端末の状態変化(ユーザーの操作内容、毎日の所定時刻や所定周期で起動されるプログラムの実行開始、終了など)を監視することで、既定のアクションの発生を検出し、検出内容を通知する。ここで検出するアクションとは、予め通知ソフトウェアに登録されたユーザーの操作内容や監視しているユーザー端末の状態変化そのものであり、例えば「ブラウザ起動」、「ブラウザ最大化」といったパケット転送の開始または終了の前後に発生するアクションである。アクションの種類については、通知ソフトウェアに予め登録されているが、ユーザーが自身の利用形態に応じて固有のアクションを追加しても良い。また、ユーザーが一覧表の各アクションの有効/無効を設定しても良い。通知ソフトウェアによる検出内容の通知先はホームゲートウェイ100である。
図2は、通知ソフトウェアの動作フローチャートである。通知ソフトウェアは、ユーザー端末の状態変化(マウスのクリック、キーボードの押下、タッチパネルへのタッチなどの操作やプログラムの実行開始、終了など)を待ち受ける(S201:No)。ユーザー端末の状態変化を検出したならば(ステップS201:Yes)、この状態変化が、既定のアクションに対応するかどうかを判定する。アクションに対応しないならば(S202:No)、S201に戻る。アクションに対応するならば(S202:Yes)、対応するアクションを、固有のパケットフォーマットを用いてホームゲートウェイ100へ通知し(S203)、S201に戻る。対応するアクションの通知をアクション通知と呼ぶ。アクション通知には、ユーザー端末の状態変化に対応するアクションの種類を識別する情報を少なくとも含む。
ここでは、独立した1つのソフトウェアとして通知ソフトウェアをユーザー端末上で動作させることを想定するが、他のアプリケーションに組み込む形態で実装しても良い。例えば、ウェブブラウザの機能を拡張するアドオン形式のソフトウェアとして実装しても良いし、携帯電話端末のテレビ電話アプリケーションに組み込んでも良いし、ビデオレコーダーの動画のストリーミング転送用アプリケーションに組み込んでも良い。
図3は、パケット転送装置に搭載するSoC300のハードウェア構成を示すブロック図である。SoC300は、CPU301、メモリコントローラ302、インターフェース用コントローラ303、パケット転送エンジン304、制御回路306、および通信部307を有し、これらの回路はシステムバス310で接続される。SoC300の外部には、メモリコントローラ302を介して記憶部320が接続される。
CPU301は、プログラムに従って、ホームゲートウェイ等のアプリケーションの制御を行う。プログラムやプログラムで使用する設定値等は記憶部320に格納されており、メモリコントローラ302は、記憶部320へのリード/ライトを制御する。記憶部320はSoC300の外部に接続したメモリに配置することを想定するが、SoC300の内部に記憶部を設けても良い。
パケット転送エンジン304はパケット転送処理専用の回路である。パケット転送処理に特化した設計により、高速なパケット処理を実現する。本実施例では、パケット転送エンジン304は、内部に複数のエンジン(パケット転送部)305を有する。パケット転送エンジン304は、複数のエンジン305を並列動作させ、処理を分担することで高い処理能力を実現する。一方で、動作するエンジン(パケット転送部)の数が増えるほど消費電力が増加する。エンジン305が動作している状態をアクティブモード、動作を停止し、クロックの停止や電源供給の停止によって消費電力を低減している状態をスタンバイモード(省電力モード)と呼ぶ。なお、エンジン305は、本実施例では4個であるが、2個以上であればよい。
通信部307は、LANポートおよびWANポートから送受信されるパケットに対して、通信インターフェースのプロトコルに基づいて通信制御する。通信部307は、例えば、イーサネット(登録商標)であればIEEE802.3に基づいて送受信を制御する。また、ホームゲートウェイ100に接続したユーザー端末からアクション通知のパケットを受信したならば、通信部307は、そのパケットを制御回路306へ転送するようにエンジン305を動作させる。すなわち、通信部307は、前述の固有のフォーマットのパケットの検出に応答して、そのパケットが制御回路306へ転送されるように経路制御する。制御回路306は、パケット転送エンジン304の動作を制御する回路である。
図4を参照して、制御回路306について説明する。制御回路306は、使用率監視部401、通知受信部402、モード制御部403を有する。通知受信部402は、エンジン305からのアクション通知を受信し、使用率監視部401、モード制御部403に転送する。
使用率監視部401は、パケット転送エンジン304の負荷、すなわち使用率を監視する回路である。使用率とは、単位時間あたりの、エンジン305の回路が処理を実行している時間の割合を表し、パケット転送エンジン304の使用率は、エンジン305の使用率の平均値とする。例えば、4つのエンジン305のうち3つがアクティブモードで動作しており、使用率がそれぞれ30[%]、50[%]、60[%]とする。スタンバイモードであるエンジン305は使用率0[%]である。このとき、パケット転送エンジン304の使用率は、(30+50+60+0)/4=35[%]となる。また、使用率監視部401は、通知受信部402からのアクション通知の受信を契機として、記憶部320内の学習情報テーブル600に学習情報を登録する。
モード制御部403は、使用率監視部401、記憶部320内の学習情報テーブル600および制御テーブル700を参照し、その内容に基づいてパケット転送エンジン304の制御内容を特定し、モード制御信号を各エンジン305へ出力する。モード制御信号とは、各エンジン305を、アクティブモードとスタンバイモードのいずれのモードで動作させるかを指示する信号である。
モード制御部403は2種類の制御を行う。1種類は、アクション通知の受信を契機として実行する、予測使用率に基づいた制御である。他の1種類は、アクション通知を待ち受ける通知待受時間が経過してもアクション通知を受信しない場合に実行する、現状の使用率に基づいた制御である。各々の制御動作については後述する。
図5は、パケット転送エンジン304の使用率の推移を示すグラフの例である。図5において、横軸が経過時間であり、縦軸がパケット転送エンジン304の使用率[%]である。使用率監視部401は所定の時間間隔でパケット転送エンジン304の使用率を算出する。また、使用率監視部401は、アクション通知を受信した場合、受信した時刻から所定時間(例えば3秒間)の使用率の変化量を算出する。使用率の変化量を計測する期間を、変化量計測期間と呼ぶ。使用率の変化量は、本実施形態ではアクション通知を受信したタイミングの使用率と、変化量計測期間内の使用率の平均値との差とするが、アクション通知を受信したタイミングの使用率と、所定時間経過後の使用率との差としても良い。使用率監視部401は、算出した使用率の変化量を、記憶部320の学習情報テーブル600へ格納する。図5では、4回のアクション通知A1、A2、A3、A4を受信し、各アクション通知受信後の使用率の変化量を算出している。また、使用率監視部401は、使用率を算出し続けても良いし、アクション通知の受信後のみ使用率の変化量を算出し、算出後は動作を停止しても良い。
図6に、学習情報テーブル600の一例を示す。使用率監視部401が算出した使用率の変化量を、アクション毎に過去100回分記録する。同一のアクションが100回以上発生した場合は最も古い記録を削除し、最新100回の記録のみ保存する。また100回の使用率の変化量の平均値を使用率平均変化率として記録する。なお、図6では説明のため各アクションの内容(「ブラウザ起動」等)を記載しているが、実装時にはアクションを識別するコードを記録すればよい。なお、ホームゲートウェイ100に複数のユーザー端末が接続された場合、各アクション通知の送信元IPアドレスから送信元端末を判別し、送信元端末毎に区別して記録しても良い(例えば「PC(A):ブラウザ起動」「PC(B):ブラウザ起動」等)。
図7は、制御テーブル700の一例を示す説明図である。制御テーブル700は、予測使用率とアクティブモード数とを対応させた表である。予測使用率とは、モード制御部403が算出する使用率の予測値であり、具体的には、現在の使用率と学習情報テーブル600から抽出した使用率平均変化率との和とする。また、予測使用率を、直近の所定時間(例えば1秒間)の使用率に、受信したアクションの使用率平均変化率を加えた値としても良い。予測使用率に基づき、対応するアクティブモード数に基づいてアクティブモードで動作させるエンジン305の数を決定する。
また、制御テーブル700の他の例として、図11のように予測使用率に応じてパケット転送エンジン304の動作周波数(動作周波数を所定の周波数より低くすると、所定の周波数による動作時に比べて省電力になる。)を制御するように構成しても良い。さらに、アクティブモード数と動作周波数を共に制御しても良い。このように、他の省電力手法や、それら複数の手法を組み合わせた省電力手法を適用し、予測使用率に応じて制御することは容易に実現可能である。
ここで、モード制御部403がアクション通知を受信した場合の動作例について説明する。モード制御部403が「ブラウザ起動」のアクション通知を受信したとする。モード制御部403は、アクション通知の受信を契機として、使用率監視部401から現状のパケット転送エンジン304の使用率を取得し、学習情報テーブル600から「ブラウザ起動」の使用率平均変化率を抽出する。そして、取得した値から予測使用率を算出する。次に、制御テーブル700を参照し、算出した予測使用率でのパケット転送エンジン304の制御内容(アクティブモード数や動作周波数)を決定する。そして、パケット転送エンジン304にモード制御信号を送出することで制御する。
以上の動作を、具体的な数値を用いて説明する。パケット転送エンジン304の使用率が35[%]で、学習情報テーブル600が図6の状態のときに、アクション「ブラウザ起動」が通知されたとする。モード制御部403は、学習情報テーブル600からアクション「ブラウザ起動」の使用率平均変化率である+28[%]を抽出する。予測使用率は現在の使用率と、使用率平均変化率との和であるから35[%]+28[%]=63[%]となる。そして、制御テーブル700から予測使用率70>X≧50%に該当するため、モード制御部403は制御テーブル700からアクティブモード数「3」を読み出す。
また、学習情報テーブル600から使用率平均変化率を抽出する際、閾値を設定し、使用率の変動に大きく影響しないアクションの通知を無視してもよい。例えば、使用率平均変化率の±10[%]を閾値として設定し、「ブラウザ非アクティブ化」の通知を無視することで、不要な動作モードの切り替えを回避することができる。
図8は、使用率監視部401がパケット転送エンジン304の使用率を算出する処理フローチャートである。使用率は、所定のサンプリング時間のうちアクティブモードであるエンジン(パケット転送部)305が処理を実行している時間の割合を表す。使用率監視部401は、所定の時間が経過するまで待ち受け(ステップS801:No)、所定の時間が経過したならば(S801:Yes)、各エンジン305の実行時間を検出する(S802)。そして、使用率監視部401は、検出された実行時間とS801の所定の時間に対する割合として、各エンジン305の使用率を算出し、エンジン305の数(本実施形態では4)で割り、パケット転送エンジン304の使用率を算出し(S803)、S801に戻る。これにより、使用率監視部401は、所定のサンプリング時間ごとに、パケット転送エンジン304の使用率を算出することができる。
図9は、モード制御部403がエンジン305(パケット転送部)を制御する処理フローチャートである。まず、モード制御部403は、通知受信部402からのアクション通知の転送を待ち受ける(S901:No、S902:No)。通知待受時間が経過した(制御タイミングに達した)ならば(S902:Yes)、現状の使用率に基づいた制御(S903以降)に移行する。アクション通知を受信した場合(S901:Yes)、受信したアクション通知に基づいた制御(ステップS906以降)に移行する。
現状の使用率に基づいた制御(S903以降)では、まずモード制御部403は使用率監視部401から最新の使用率(現在の使用率とは、最大で通知待受時間の時間差があり得る。)を取得する(S903)。次に、制御テーブル700を参照し、取得した最新の使用率を予測使用率として、この予測使用率に対応するエンジン305の数を抽出する(S904)。そして、抽出数のエンジン305をアクティブモードへ制御し(S905)、S901に戻る。
受信したアクション通知に基づいた制御(S906以降)では、まずモード制御部403は学習情報テーブル600を参照し、当該アクションの使用率平均変化率を抽出する(S906)。そして、使用率監視部401から最新の使用率を取得し、取得した最新の使用率にアクションの使用率平均変化率を加算し、予測使用率を算出する(S907)。次に、制御テーブル700を参照して、予測使用率に対応するエンジン305の数を抽出する(S908)。そして、抽出数のエンジン305をアクティブモードへ制御する(S909)。このあと、所定時間が経過するまで待ち受け(S910:No)、所定時間が経過したならば(S910:Yes)、S901に戻る。
なお、S905又はS909における、抽出数のエンジン305のアクティブモードへの制御は次のようにする。エンジン305の抽出数が3であるとする。S905又はS909の処理直前に、アクティブモードのエンジン305が2である場合、スタンバイモードのエンジン305一つをアクティブモードへモード切換する。逆に、S905又はS909の処理直前に、アクティブモードのエンジン305が4である場合、アクティブモードのエンジン305一つをスタンバイモードへモード切換する。
図10は、使用率監視部401が学習情報テーブル600を更新する処理フローチャートである。使用率監視部401は、通知受信部402からのアクション通知の転送を待ち受ける(S1001:No)。アクション通知を受信したならば(S1001:Yes)、使用率監視部401は各エンジン305の使用率を取得し、取得した使用率からパケット転送エンジン304の使用率を取得する(S1002)。そして、所定の変化量計測時間が経過するまでパケット転送エンジン304の使用率の取得を続ける(S1003:No)。所定時間が経過した場合(S1003:Yes)、アクション通知を受信したタイミングの使用率と、変化量計測期間内に取得した使用率の平均値との差によって使用率の変化量を算出する(S1004)。そして、算出した使用率の変化量を学習情報テーブル600に記録し、併せて学習情報テーブル600の使用率平均変化率項目を更新し(S1005)、S1001に戻る。
このように、本実施形態によれば、パケット転送部のパケット転送の負荷に応じた省電力モードへの移行制御、省電力モードからの復帰制御の動作モード制御ができる。すなわち、パケット転送の負荷を予測することでパケット転送の発生前に省電力モードを解除することができ、通信開始時の転送性能の劣化を防ぐことができる。また、パケット転送が発生しない場合には省電力モードへ移行することができ、消費電力を削減することができる。
具体的には、パケット転送装置のパケット転送エンジン304の使用率の上昇および低下を予測し、予測結果に基づいてアクティブモードのエンジン305の数を制御するため、スタンバイモードからアクティブモードへのエンジン305のモード切換に伴う通信開始時の転送性能の向上を図ることができる。また、パケット転送が発生しないと予測される場合には早急に省電力モード(スタンバイモード)へ移行することができる。また、パケット転送の発生を予測させるアクションに対し、過去の使用率の変化量の学習情報から、どの程度使用率が上昇するかといった上昇傾向を把握することができる。同様に、パケット転送の終了を予測させるアクションに対しても過去の学習情報から、使用率の低下傾向を把握することができる。したがって、予測される変化の傾向に応じてアクティブモードに切り替えるべきエンジン305の数を選択することができ、エンジン305の数を抑制しつつ対応可能なだけのパケット転送部(エンジン305)を用いてパケット転送することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。