以下、実施の形態について、図面を参照しながら具体的に説明する。
以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、より好ましい形態を構成する任意の構成要素として説明される。
(実施の形態1)
本実施の形態において、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信を可能とする通信装置及び通信システムについて説明する。
図1は、本実施の形態に係る通信装置10を含む通信システム1の構成を示す模式図である。
図1に示されるように、通信システム1は、通信装置10と、端末20と、USB機器30とを備える。通信装置10と端末20とは、無線通信の通信リンクLにより接続されている。通信リンクLの通信規格は、フレームを連結するフレームアグリゲーション機能(単にアグリゲーション機能ともいう)に対応した無線通信規格であり、例えばIEEE802.11n、ac又はadである。また、通信装置10とUSB機器30とは、USBケーブルCにより接続されている。
端末20は、USB機器30を利用するホストデバイスである。端末20は、通信リンクLを通じて、通信装置10との間で通信(例えばIP通信)を行う。端末20は、通信装置10を介してUSB機器30と通信するときには、USB機器30との間で行うUSB通信のデータをIPパケットにカプセル化したUSB/IP通信を行う。端末20は、パーソナルコンピュータ、タブレット端末、及び、スマートフォンなどである。
USB機器30は、端末20に利用されるUSB機器である。USB機器30は、表示装置、HID(Human Interface Device)(具体的にはキーボード及びマウスなど)、オーディオ装置、プリンタ及びストレージ機器などの、USBインタフェースを有する周辺機器である。
通信装置10は、端末20がUSB機器30を利用できるようにする通信装置である。通信装置10は、端末20との間で通信リンクLを通じてUSB/IP通信を行う。また、通信装置10は、USB機器30との間でUSBケーブルCを通じてUSB通信を行う。通信装置10は、端末20とUSB機器30との間で通信を中継する中継装置として機能する。
このように、端末20は、直接にUSB機器30に接続されているのではなく、通信装置10を介してUSB機器30に接続されている。そして、端末20と通信装置10との間で行うUSB/IP通信と、通信装置10とUSB機器30との間で行うUSB通信とを、通信装置10が相互に変換して中継することで端末20とUSB機器30との通信が実現する。この通信により、端末20が通信装置10を介してUSB機器30を利用できる。
通信装置10の機能の詳細について説明する。
図1に示されるように、通信装置10は、USBモジュール11と、判定部12と、NW(Network)通信部13と、NWモジュール14と、バッファ15と、送信制御部16とを備える。
USBモジュール11は、USB通信のデータを送受信するインタフェース装置である。USBモジュール11は、USBケーブルCによりUSB機器30に接続され、USB通信のデータを送受信する。USBモジュール11は、具体的には、USBケーブルCに接続されるUSBコネクタ、及び、信号の送受信回路などを含む。なお、USB通信は、USBケーブルCの代わりに、電波による無線通信(Wireless USB)によりなされてもよい。USBモジュール11が受信するデータには、「WRITE」及び「READ」のいずれかのデータ方向を示す情報が付与されている。「WRITE」のデータ方向は、端末20からUSB機器30へデータを書き込むための命令を送信したことに応じて、USB機器30が送信するデータに付与されるデータ方向である。また、「READ」のデータ方向は、端末20からUSB機器30へデータを読み込むための命令を送信したことに応じて、USB機器30が送信するデータに付与されるデータ方向である。
判定部12は、USBモジュール11によりUSB機器30から受信したデータについて、所定の条件が満たされるか否かを判定する処理部である。所定の条件は、データサイズに関する条件、又は、データ内容に関する条件などを含む。所定の条件については、後で詳しく説明する。判定部12は、プロセッサがメモリを用いて所定のプログラムを実行することで実現されてもよいし、専用ハードウェアにより実現されてもよい。
NW通信部13は、USB/IP通信を介して端末20にUSB機器30を利用させるための処理を行う処理部である。NW通信部13は、端末20とやりとりするUSB/IP通信のデータと、USB機器30とやりとりするUSB通信のデータとを相互に中継することで、端末20とUSB機器30との間のデータの送受信を成立させる。
具体的には、NW通信部13は、端末20との間でTCP(Transmission Control Protocol)セッションを確立し維持する。そして、このTCPセッションを通じて端末20からUSB/IP通信のデータを受信すると、受信したデータをデカプセル化することでUSB通信のデータを取り出し、USB機器30に送信する。また、USB機器30からUSB通信のデータを受信すると、受信したデータをIPパケットにカプセル化することでUSB/IP通信のデータを生成してTCPセッションを通じて端末20に送信する。NW通信部13は、カプセル化及びデカプセル化を用いて、USB/IP通信のデータとUSB通信のデータとを相互に変換しながら中継する。NW通信部13は、プロセッサがメモリを用いて所定のプログラムを実行することで実現されてもよいし、専用ハードウェアにより実現されてもよい。
NWモジュール14は、端末20と電波による無線通信を行う無線通信モジュールである。NWモジュール14は、アンテナ及び無線通信回路などを含む。NWモジュール14は、端末20との間で無線の通信リンクLを確立し、通信リンクLを通じてUSB/IP通信のデータを含むフレームを送受信する。無線通信の通信規格は、アグリゲーション機能に対応した無線通信規格であり、例えばIEEE802.11n、ac又はadである。
バッファ15は、NWモジュール14により送信するフレームを、その送信前に一時的に格納する送信待ちバッファであり、メモリなどの記憶装置により実現される。バッファ15へのフレームの格納、及び、バッファ15からのフレームの取り出しは、送信制御部16によりなされる。
送信制御部16は、NWモジュール14によるフレームの送信を制御する制御装置である。送信制御部16は、USB/IP通信のデータをNW通信部13から取得すると、そのデータをフレームに含めてバッファ15に格納する。このとき、USB/IP通信のデータのデータサイズが、1フレームに含められる最大サイズを超えている場合には、送信制御部16は、USB/IP通信のデータを分割して複数のフレームに含めてバッファ15に格納する。
また、送信制御部16は、原則として、アグリゲーションのための送信待ちを解除する所定タイミングでバッファ15に格納されている1以上のフレームを取り出し、取り出した1以上のフレームをアグリゲートして端末20に送信する。
そして、送信制御部16は、フレーム単位でアグリゲーション機能を適用するか、又は、適用しない(つまり適用を制限又は禁止する)か、を制御する。ここで、アグリゲーション機能とは、フレームをアグリゲートするアグリゲート機能と、アグリゲートの対象になるフレームを所定時間待つ機能である送信待ち機能とを含む。
ここで、アグリゲーションのための送信待ちを解除する所定タイミングとは、例えば、バッファ15に格納されたフレームの合計のデータサイズがフレームアグリゲーション機能における連結フレームの最大サイズを超えたタイミング、及び、予め定められた周期で到来するタイミング(言い換えれば、アグリゲーションのタイムアウト時間が超過したタイミング)を含む。
具体的には、送信制御部16は、USBモジュール11が受信したデータが所定の条件を満たすと判定部12が判定した場合に、アグリゲーションのための送信待ちをせずに、NWモジュール14によりデータを端末20に送信する。ここで、「アグリゲーションのための送信待ちをしない」という語は、少なくとも送信待ちをしないということを意味し、具体的には、(a)アグリゲーション機能を適用しないこと、又は、(b)アグリゲート機能と送信待ち機能とのうちの送信待ち機能のみを適用しないことを意味する。制御の詳細については後で詳しく説明する。
図2は、本実施の形態に係る判定部12による判定に利用される条件を示す説明図である。図2には、USB機器30から受信するデータのデータサイズ又はデータ内容などについての条件と、条件を満たすデータを含むフレームに対して行う動作とを対応付ける対応表が示されている。
図2に示される条件は、データサイズ、データ方向、データ内容、USB機器種別、及び、同時利用機器の項目を含む。また、図2に示される動作は、アグリゲーション機能の適用の項目を含む。なお、図2において、「―」は、ワイルドカードを示しており、内容が何であってもよいことを示している。
データサイズは、USB機器30から受信したデータのデータサイズについての条件を示す項目である。
データ方向は、USB機器30から受信したデータに付与されたデータ方向についての条件を示す項目である。データ方向には、「WRITE」及び「READ」がある。
データ内容は、USB機器30から受信したデータのデータ内容についての条件を示す項目である。データ内容は、例えば、USB機器30の動作を制御するための制御データ(例えば「SCSI STATUS」)であること、又は、受信したデータが分割されて複数のフレームに含められる場合における、データの終端を含むこと、などがある。
USB機器種別は、USB機器30の種別についての条件を示す項目である。USB機器種別には、例えば、ストレージ、オーディオ又はHIDなどがある。
同時利用機器は、USB機器30からデータを受信したときに、端末20が通信装置10を用いて同時に利用している機器についての条件を示す項目である。同時利用機器は、例えば、ディスプレイ又はストレージなどがある。同時利用機器がないことを条件とする場合もある。
アグリゲーション機能の適用の項目は、USB機器30から受信したデータが条件を満たす場合に、当該データを含むフレームを送信するときにアグリゲーション機能を適用するか否か、つまり、当該データを含むフレームをアグリゲートして送信するか否かを示す項目である。「有効」は、アグリゲーション機能を適用する、つまり、アグリゲートすることを示し、「無効」は、アグリゲーション機能を適用しない、つまり、アグリゲートしないことを示す。
例えば、図2に示される上から1番目の行は、USB機器30から受信したデータのデータ方向が「WRITE」であるという条件が満たされる場合には、NWモジュール14は、当該データを含むフレームをアグリゲーション機能を適用せずに送信するという動作をすることを示している。
また、例えば、図2に示される上から2番目の行は、USB機器30から受信したデータのデータサイズが13byteであること、データ方向が「READ」であること、データ内容が「SCSI STATUS」であること、及び、USB機器種別が「ストレージ」であること、のすべての条件が満たされる場合には、NWモジュール14は、当該データを含むフレームをアグリゲーション機能を適用せずに送信するという動作をすることを示している。
また、例えば、図2に示される5番目の行は、USB機器種別が「HID」であること、及び、同時利用機器が「ストレージ」であること、の両方の条件が満たされる場合には、NWモジュール14が、当該データを含むフレームをアグリゲーション機能を適用して送信するという動作をすることを示している。
また、例えば、図2に示される9番目の行は、データ内容が、データの終端を含むという条件が満たされる場合には、NWモジュール14が、当該データを含むフレームをアグリゲーション機能を適用せずに送信するという動作をすることを示している。この条件を満たすのは、USBモジュール11により受信したデータが分割されて複数のフレームに含められる場合に、上記データの終端を含むフレームである。
なお、図2に示される対応表の条件に含まれるデータサイズ、データ方向、データ内容、USB機器種別などは、ユーザにより任意に動的に設定され得る。例えば、ユーザは、USB機器種別とデータ内容とを条件として設定することで、さまざまな規格で定められたデータ方向又はデータサイズのデータに適合する条件を作成することができる。
なお、図2に示される対応表には、少なくともデータサイズに関する条件が含まれることを要し、さらに、動作には、データサイズに関する条件を満たすデータを含むフレームをアグリゲーション機能を適用せずに送信するという動作が含まれることを要する。具体的には、対応表には、少なくとも2番目、3番目、4番目又は8番目のいずれかの条件及び動作が含まれることを要する。通信装置10が、少なくともデータサイズに関する条件に基づいて高い即時性を要するデータの通信を他から区別し、アグリゲーション機能を適用せずに送信することによって、即時性が高い通信を実現するためである。なお、上記の「少なくともデータサイズに関する条件」を「即時性が高い通信を示す条件」ともいう。
なお、判定部12は、即時性が高い通信を示す条件として、データサイズが所定値に等しいこと、又は、データサイズが所定値以下であること、をデータサイズに関する条件として用いて判定をしてもよい。
また、判定部12は、USBモジュール11により受信したデータについて、さらにデータ内容に関する条件が満たされるか否かを判定してもよい。言い換えれば、判定部12は、USBモジュール11により受信したデータについて、データ内容に関するさらなる追加条件が満たされるか否かを判定してもよい。
なお、判定部12は、USBモジュール11により受信したデータが所定の制御データを含むことをデータ内容に関する条件として用いて判定をしてもよい。
また、判定部12は、USBモジュール11により受信したデータが分割されて複数のフレームに含められる場合には、フレームに含まれているデータの一部が、データの終端を含むこと、をデータ内容に関する条件として用いて判定をしてもよい。
なお、判定部12は、USB機器30から受信したデータが、図2に示される複数の条件を満たすか否かを判定する際には、例えば、図2における上から下への順序で順番に判定するようにしてもよい。その際、条件を満たす場合には条件を満たした時点で判定を終えるようにし、条件を満たさない場合にはその1つ下の行の条件を満たすか否かを判定するようにする。このようにすることで、複数の条件それぞれの優先順位を考慮して判定を行うことができる利点がある。
以上のように構成された通信装置10の処理について説明する。
図3は、本実施の形態に係る通信装置10の処理を示すフロー図である。図3に示される処理は、USBモジュール11がUSB機器30からデータを受信したときに行われる処理である。
ステップS101において、USBモジュール11は、USB機器30からデータを受信する。
ステップS102において、判定部12は、ステップS101でUSBモジュール11により受信したデータが、少なくともデータサイズに関する条件を満たすか否かを判定する。この条件は、即時性が高い通信を示す条件であり、具体的には、図2に示される対応表の2番目、3番目、4番目又は8番目の条件が上記条件に該当する。上記データが上記条件を満たすと判定した場合(ステップS102でYes)にはステップS103に進み、そうでない場合(ステップS102でNo)にはステップS111に進む。
ステップS103において、判定部12は、ステップS101でUSBモジュール11により受信したデータをNW通信部13に提供する。NW通信部13は、提供されたデータをUSB/IP通信のデータに変換してNWモジュール14に提供する。NWモジュール14は、送信制御部16による制御によって、USB/IP通信のデータを含むフレームを生成し、アグリゲーションのための送信待ちをせずに端末20に送信する。ここで、送信待ちをせずに送信することは、図2の対応表において、即時性が高い通信を示す条件に対応する動作としてアグリゲーション機能の適用の項目が無効になっていることに応じてなされるものである。
ステップS111において、判定部12は、ステップS101でUSBモジュール11により受信したデータをNW通信部13に提供する。NW通信部13は、提供されたデータをUSB/IP通信のデータに変換してNWモジュール14に提供する。NWモジュール14は、送信制御部16による制御によって、USB/IP通信のデータを含むフレームを生成し、バッファ15に一旦格納したのち、アグリゲーション機能を適用して端末20に送信する。ここで、アグリゲーション機能を適用して送信することは、図2の対応表において、即時性が高い通信を示す条件を除く条件に対応する動作としてアグリゲーション機能の適用の項目が有効になっていることに応じてなされるものである。
ステップS103又はS111を終えたら、図3に示される一連の処理を終了する。
これにより、通信装置10は、原則としてはフレームアグリゲーションによる高速通信を行い、即時性が高い通信が必要である場合に限り、即時性が高い通信を可能とする。
以降において、本実施の形態に係る通信システム1における通信を、関連技術に係る通信システムにおける通信と比較しながら説明する。ここで、関連技術とは、一律にアグリゲーション機能を適用して通信を行う通信装置を含む通信システムをいう。なお、以降のシーケンス図において、図3のフロー図に示された処理が行われるところには、図3と同じ符号が付されている。
図4は、関連技術に係るアグリゲーションのための送信待ちをする場合の通信システムの第一のシーケンス図である。なお、関連技術の説明では、通信装置10と同等の機能を有する構成要素に、通信装置10におけるものと同じ名称を用いる。以降でも同様とする。
図4に示されるように、通信装置がUSB機器からデータを受信すると、NW通信部は、受信したデータを含むフレームを生成しバッファに格納する。そして、アグリゲーション機能に基づく送信待ちをしたうえで、バッファから上記フレームを取り出して端末に送信する。この送信待ちの間に、NWモジュール14が送信すべき他のフレームがNW通信部13からバッファに渡された場合には、渡された他のフレームが、バッファに格納されたフレームとアグリゲートされて送信される。
図5は、本実施の形態に係るアグリゲーションのための送信待ちをしない場合の通信システム1の第一のシーケンス図である。図5に示されるシーケンス図は、USBモジュール11から受信したデータが、即時性が高い通信を示す条件を満たす場合の通信システム1の通信シーケンスを示している。
図5に示されるように、通信装置10がUSB機器30からデータを受信し(S101)、受信したデータが即時性が高い通信を示す条件を満たすと判定された場合(S102でYes)には、送信待ちをせずに、フレームをNWモジュール14により端末20に送信する(S103)。
なお、受信したデータが即時性が高い通信を示す条件を満たさないと判定された場合(S102でNo)には、図4に示されるシーケンスと同様になる。
このように、通信装置10は、即時性が高い通信を示す条件を満たすか否かについての判定の結果に基づいて、フレームをアグリゲートするか否かを制御することによって、必要に応じて即時性の高い通信を実現する。すなわち、関連技術に係る通信装置では、送信待ちを行うために通信の即時性が損なわれるが、本実施の形態に係る通信装置10では、高い即時性を要するデータについての送信待ちを行わないので、即時性が高い通信が実現する。
次に、通信装置10がUSB機器30から受信したデータが、連結フレームの最大サイズより大きい場合の通信についての通信シーケンスについて説明する。
図6は、関連技術に係る通信システムの第二のシーケンス図である。図6に示されるシーケンス図は、通信装置がUSB機器から受信したデータが、連結フレームの最大サイズより大きい場合に、上記データを複数のフレームに分割して端末に送信する場合を示している。
図6に示されるように、通信装置がUSB機器からデータを受信し、そのデータが連結フレームの最大サイズより大きい場合には、そのデータを分割して複数のフレームに含めて端末に送信する。この場合、一般には、NWモジュールは、受信したデータを1フレームに収められるサイズに分割して複数のフレームを生成してバッファに格納する。送信制御部は、バッファの先頭から連結フレームの最大サイズの分のデータをとりだしてアグリゲートすることで連結フレームであるフレームF1を構成して端末に送信する。次に、送信制御部は、バッファに残っているフレームのうちの先頭から連結フレームの最大サイズの分のデータをとりだしてアグリゲートすることで連結フレームであるフレームF2を構成して端末に送信する。送信制御部は、その後も同じように連結フレーム(具体的にはフレームF5及びF6等)を構成して送信し、バッファに残っているフレームの合計サイズが連結フレームの最大サイズに満たない状態になる。送信制御部は、フレームF6の送信のあと、バッファに残っているフレームについて、送信待ちをしたうえでフレームF7として端末に送信する。この送信待ちの間に、NWモジュールが送信すべき他のフレームがNW通信部から渡された場合には、渡された他のフレームが、バッファに残っていたフレームとアグリゲートされてフレームF7として送信される。
図7は、本実施の形態に係るアグリゲーションのための送信待ちをしない場合の通信システム1の第二のシーケンス図である。図7に示されるシーケンス図は、USBモジュール11から受信したデータが連結フレームの最大サイズより大きい場合の通信システム1の通信シーケンスを示している。
図7に示されるように、通信装置10がUSB機器30からデータを受信すると(S101)、図6と同じように、連結フレームであるフレームF1〜F6が構成されて送信される(S111)。その後、送信制御部16は、バッファに残っているフレームに、データの終端を含むフレームが含まれていることから、図2に示される対応表の9番目の条件に相当するので、連結フレームであるフレームF7を構成し、送信待ちをせずに端末20に送信する(S103)。
このように、通信装置10は、USB機器30から受信したデータが連結フレームの最大サイズより大きい場合でも、即時性が高い通信を示す条件を満たすか否かについての判定の結果に基づいて、フレームをアグリゲートするか否かを制御することによって、必要に応じて即時性の高い通信を実現する。すなわち、関連技術に係る通信装置では、送信待ちを行うために通信の即時性が損なわれるが、本実施の形態に係る通信装置10では、高い即時性を要するデータについての送信待ちを行わないので、即時性が高い通信が実現する。
以上のように本実施の形態の通信装置は、原則としてはフレームアグリゲーションによる高速通信を行う。また、通信装置は、USB機器から受信したデータについて、少なくともデータサイズに関する条件を用いて高い即時性を要するデータの通信を他から区別し、そのデータを送信待ちをせずに送信することで即時性が高い通信を実現する。このように通信装置は、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信を実現する。
また、通信装置は、データサイズに関して、所定値に等しい、又は、所定値以下であることを、具体的な条件として用いて高い即時性を要するデータを他から区別する。よって、通信装置は、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信をより容易に実現する。
また、通信装置は、USB機器から受信したデータについて、さらにデータ内容に関する条件を用いて高い即時性を要するデータの通信を他から区別し、そのデータを送信待ちをせずに送信することで即時性が高い通信を実現する。このように通信装置は、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信をより適切に実現する。
また、通信装置は、データ内容に関して、データが所定の制御データを含むことを、具体的な条件として用いて高い即時性を要するデータを他から区別する。よって、通信装置は、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信をより容易に実現する。
また、通信装置は、データ内容に関して、フレームに含まれているデータの一部が、USB機器から受信したデータの終端を含むことを、具体的な条件として用いて高い即時性を要するデータを他から区別する。よって、通信装置は、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信をより容易に実現する。
また、通信装置は、高い即時性を要しないフレームを、アグリゲーション機能に基づいてアグリゲートして送信する。これにより、通信装置は、高い即時性を要しないフレームを高い帯域利用効率で送信する一方で、高い即時性を要しないフレームを高い帯域利用効率で送信することができる。
(実施の形態2)
本実施の形態において、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信を可能とする通信装置及び通信システムについて、さらに、アグリゲーションの際にフレームの優先度を考慮して、送信順序を決定する技術を説明する。ここで、フレームの優先度とは、当該フレームを端末に優先的に受信させることが望まれる度合いをいう。
本実施の形態の通信装置10及び通信システム1の構成は、原則として実施の形態1と同様である。実施の形態1と異なる点は、判定部12が判定に用いる条件に対応付けられる動作として、優先度を設定する動作が含まれている点である。また、判定部12及び送信制御部16が、設定された優先度に応じた処理を行う点である。これらの点について詳しく説明する。
判定部12は、実施の形態1における場合と同じように、USBモジュール11によりUSB機器30から受信したデータについて、所定の条件が満たされるか否かを判定する。そして、判定部12は、上記条件と、上記条件を満たすデータを含むフレームに付与する優先度との所定の対応付けを用いて、受信したデータを含むフレームに優先度を設定する。
送信制御部16は、受信したデータを含むフレームを生成する。また、送信制御部16は、受信したデータを含むフレームに対して判定部12が設定した優先度を当該フレームに付与してバッファに格納する。そして、送信制御部16は、より高い優先度が付与された1以上のフレームを優先的にバッファ15から取り出し、取り出した1以上のフレームをアグリゲートして端末20に送信する。送信制御部16は、アグリゲートする際には、より高い優先度が付与されたフレームを、より早く送信する順序でアグリゲートしてもよい。
図8は、本実施の形態に係る判定部12による判定に利用される条件を示す説明図である。図8には、図2と同様、USB機器30から受信するデータのデータサイズ又はデータ内容などについての条件と、条件を満たすデータを含むフレームに対して行う動作とを対応付ける対応表が示されている。図2と異なる点は、条件を満たすデータに対する動作として、当該データを含むフレームに付与する優先度が追加されている点である。
優先度の項目は、USB機器30から受信したデータが条件を満たす場合に、当該データを含むフレームに付与する優先度を示す項目である。優先度は、例えば2段階であり、「高」及び「低」のいずれかで表現される場合を例として説明するが、これに限られず、3段階以上あってもよい。なお、優先度が高いフレームを高優先フレームともいい、優先度が低いフレームを低優先フレームともいう。
図9は、実施の形態2に係るアグリゲートされたフレームの構造を示す説明図である。
一般に、アグリゲーション機能では、バッファ15に格納されたフレームは、格納された順序と同じ順序で取り出され、その順序でアグリゲートされる。
図9の(a)は、一般的なアグリゲーション機能で送信されるフレームの構造を示す説明図である。
例えば、送信制御部16は、原則として、低優先フレーム41、高優先フレーム42及び低優先フレーム43がこの順序でバッファ15に格納された場合には、格納された順序と同様に、低優先フレーム41、高優先フレーム42及び低優先フレーム43をこの順序で取り出してアグリゲートする。その後、送信制御部16は、アグリゲートしたフレームの先頭にヘッダ部40などを付してNWモジュール14から端末20に送信する。
図9の(b)は、送信制御部16がアグリゲーション機能で送信し得るフレームの構造を示す説明図である。
本実施の形態の送信制御部16は、アグリゲートする際には、より高い優先度が付与されたフレームを、より早く送信する順序でアグリゲートしてもよい。つまり、上記の順序でバッファ15にフレームが格納された場合に、送信制御部16は、高優先フレーム42、低優先フレーム41及び低優先フレーム43をこの順序で取り出してアグリゲートしてもよい。その後、送信制御部16は、アグリゲートしたフレームの先頭にヘッダ部40などを付してNWモジュール14から端末20に送信する。
このようにすることで、通信装置10は、より高い優先度が付与されたフレームをより早く端末20に受信させることができる。
図10は、本実施の形態に係る通信装置10の処理を示す第一のフロー図である。図10に示される処理は、USBモジュール11がUSB機器30からデータを受信したときに行われる処理である。
ステップS201において、USBモジュール11は、USB機器30からデータを受信する。
ステップS202において、判定部12は、ステップS201でUSBモジュール11により受信したデータが、少なくともデータサイズに関する条件を満たすか否かを判定する。上記データが上記条件を満たすと判定した場合(ステップS202でYes)にはステップS203に進み、そうでない場合(ステップS202でNo)にはステップS211に進む。
ステップS203において、判定部12は、データを含むフレームに付与する優先度を決定する。フレームに付与する優先度は、ステップS202でデータが満たす条件に、図8に示される対応づけによって対応付けられたものである。
ステップS204において、判定部12は、ステップS201でUSBモジュール11により受信したデータをNW通信部13に提供する。NW通信部13は、提供されたデータを含むフレームを生成し、フレームに優先度を付与してNWモジュール14に提供する。NWモジュール14は、提供されたフレームを、その優先度とともにバッファ15に格納する。
ステップS211において、判定部12は、ステップS201でUSBモジュール11により受信したデータをNW通信部13に提供する。NW通信部13は、提供されたデータを含むフレームを生成し、NWモジュール14に提供する。NWモジュール14は、提供されたフレームをバッファ15に格納する。
図11は、本実施の形態に係る通信装置10の処理を示す第二のフロー図である。図11に示される処理は、所定時間(例えば数ミリ秒)ごとに繰り返し行われる処理である。
ステップS301において、送信制御部16は、バッファ15にフレームが格納されているか否かを判定する。バッファ15にフレームが格納されている場合(ステップS301でYes)には、ステップS302に進み、そうでない場合(ステップS301でNo)には、ステップS301をもう一度実行する。つまり、送信制御部16は、バッファ15にフレームが格納されるまで、ステップS301で待機状態をとる。なお、送信制御部16は、所定時間(例えば数ミリ秒)ごとにステップS301を実行するよう制御する。
ステップS302において、送信制御部16は、バッファ15に格納されているフレームに優先度が付与されているか否かを判定する。バッファ15に複数のフレームが格納されている場合には、そのうちの少なくとも1つのフレームに優先度が付与されているか、そうでないかを判定する。優先度が付与されている場合にはステップS303に進み、そうでない場合にはステップS311に進む。
ステップS303において、送信制御部16は、バッファ15に格納されているフレームの中から、優先度がより高いフレームを、より優先的にバッファ15から取り出す。
ステップS304において、送信制御部16は、ステップS303でバッファ15から取り出したフレームを、優先度がより高いフレームがより早く送信される順序でアグリゲートする。
ステップS305において、送信制御部16は、ステップS304でアグリゲートしたフレームを端末20に送信する。この送信は、NWモジュール14により、例えばCSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)のアクセス制御方式に基づいてなされ得る。ステップS305の処理を終えたら、ステップS301に進む。
ステップS311において、送信制御部16は、アグリゲーションのための送信待ちを解除する所定タイミングが到来したか否かを判定する。上記条件が成立した場合(ステップS311でYes)にはステップS312に進み、そうでない場合(ステップS311でNo)にはステップS301に進む。
ステップS312において、送信制御部16は、バッファ15からフレームを取り出す。
ステップS313において、送信制御部16は、ステップS312で取り出したフレームをアグリゲートする。
ステップS314において、送信制御部16は、ステップS313でアグリゲートしたフレームを送信する。この送信は、NWモジュール14により、例えばCSMA/CAのアクセス制御方式に基づいてなされ得る。ステップS314の処理を終えたら、ステップS301に進む。
このように、通信装置10は、バッファ15に格納されているフレームに優先度が付与されている場合には、アグリゲーションのための送信待ちをせずに、上記フレームを端末20に送信する。
図12は、関連技術に係るアグリゲーションのための送信待ちをする場合の通信システム1の第三のシーケンス図である。図12に示されるシーケンス図は、通信装置がUSB機器Aからデータ1を受信し、USB機器Bからデータ2及び3を順次に受信し、これらのデータを端末に送信する場合を示している。ここで、データ1は、連結フレームの最大サイズより大きく、かつ、低優先である。また、データ2及び3は、連結フレームの最大サイズより小さく、かつ、高優先である。
図12に示されるように、通信装置がUSB機器からデータ1を受信すると、データ1を分割することで複数のデータを生成し、生成したデータを複数含むフレームF11〜F15によって端末に送信する。また、通信装置がデータ1を受信した後に、データ2及びデータ3を順次に受信すると、通信装置は、データ1の送信の後にデータ2及び3を送信する(フレームF15及びF16)。ここで、データ1の最後の残部のデータを含むフレームに、データ2の一部を含むフレームがアグリゲートされてもよい。また、アグリゲーション機能が有効であると、最後のフレームF16は、送信待ちを行ったうえで送信される。この送信待ちの間に、NWモジュールが送信すべき他のフレームがNW通信部から渡された場合には、渡された他のフレームが上記フレームとアグリゲートされて送信される。
図13は、本実施の形態に係るアグリゲーションのための送信待ちをしない場合の通信システム1のシーケンス図である。図13に示されるシーケンス図は、通信装置10がUSB機器30Aからデータ1を受信し、USB機器30Bからデータ2及び3を順次に受信し、これらのデータを端末20に送信する場合を示している。ここで、データ1は、連結フレームの最大サイズより大きく、即時性が高い通信を示す条件を満たし、かつ、低優先であるとする。また、データ2及び3は、連結フレームの最大サイズより小さく、即時性が高い通信を示す条件を満たし、かつ、高優先であるとする。
図13に示されるように、通信装置10がUSB機器30Aからデータを受信し(図10のS201に相当する。以下、図13の説明において記載されるステップは、図10又は図11におけるものである)、そのデータが即時性が高い通信を示す条件を満たすと判定された場合(S202でYes)には、データを分割して複数のフレームに含め、優先度を付与してバッファに格納する(ステップS204)。
そして、送信制御部16は、バッファ15に格納されたフレームの中から、より高い優先度が付与されたフレームを取り出す。具体的には、通信装置10がデータ1を受信してバッファ15に格納したすぐ後には、データ1が分割されたデータを含むフレームだけがバッファ15内に格納されているので、送信制御部16は、これらのフレームをアグリゲートすることで連結フレームであるフレームF21を構成して端末20に送信する。
次に、通信装置10がデータ2を受信すると、NW通信部13がデータ2を含むフレームを生成し、高い優先度を付与してバッファ15に格納する。送信制御部16は、データ2を含むフレームを優先的に取り出し(S303)、さらに、データ2を含むフレームがより早く送信される順序で、データ1の残部を含むフレームとアグリゲートして(S304)、フレームF22として送信する(S305)。
以下、同様に、送信制御部16は、データ1の一部だけを含むフレームF23を送信する。通信装置10がデータ3を受信したすぐ後には、送信制御部16は、データ3を含むフレームと、データ1の残部を含むフレームとをアグリゲートして、フレームF25として送信する。
その後、送信制御部16は、データ1の一部だけを含むフレームF26を送信し、データ1の残部だけをフレームF27を、送信待ちをすることなく端末20に送信する。
このように、通信装置10は、USB機器30から受信したデータが、連結フレームの最大サイズより大きい場合でも、即時性が高い通信を示す条件を満たすか否かについての判定の結果に基づいて、フレームをアグリゲートするか否かを制御することによって、必要に応じて即時性の高い通信を実現する。さらに、アグリゲートする際にも、フレームに付与された優先度に応じて、優先度が高いフレームをより優先的に端末20に送信することができる。
このような通信は、例えば、同時再生される映像データと音データとを含むコンテンツを端末20が受信しながら再生する場合に有用である。具体的には、USB機器30Aから映像データを受信し、USB機器30Bから音データを受信する場合、関連技術に係る通信装置であれば、映像データをすべて受信完了した後に音データを受信することになるので、音データを受信し始めるまでコンテンツの再生を開始することができない。
一方、本実施の形態の通信装置10によれば、映像データをすべて受信完了する前に音データの受信を開始することができるので、関連技術における場合よりも早くコンテンツの再生を開始することができる利点がある。
なお、上記では、優先度は、アグリゲーション機能を適用しないフレームだけについて付される場合を一例として説明したが、アグリゲーション機能を適用するフレームについても優先度を付与してもよい。言い換えれば、アグリゲーション機能の適用を有効(図8参照)とする場合にも、フレームに優先度を設定するようにしてもよい。例えば、図8の対応表において、5番目及び6番目の条件に対応付ける動作として、フレームに高い優先度を付与することとし、10番目の条件に対応付ける動作として、フレームに低い優先度を付与することとしてもよい。低優先度フレームと高優先フレームとの扱いは、上記のアグリゲーション機能の適用を無効とする場合と同様である。さらに、高優先フレームについては、アグリゲーションのための送信待ちを解除する所定タイミングが早く到来するようにしてもよい。
なお、USBのデータ転送方式(具体的には、コントロール転送、バルク転送、インタラプト転送、及び、アイソクロナス転送)を条件の項目に含めてもよい。ただし、データ転送方式だけを条件に用いることでは、本発明が解決しようとする課題は解決されない。例えば、USB機器30がストレージである場合には、一般にバルク転送が用いられる。この場合、その一連のデータのうちの最初及び最後には制御のためのメッセージが含まれ、それ以外の部分にはデータが含まれる。転送方式がバルク転送である場合に一律にアグリゲーション機能を適用しないことにすれば、データの高速転送というメリットが得られない。一方、一律にアグリゲーション機能を適用することにすれば、制御のためのメッセージがアグリゲーション機能の送信待ちによって待たされ、本来不要な待ち時間が挿入される。このように、USBのデータ転送方式だけを条件に用いるのでは、本発明が解決しようとする課題は解決されない。
以上のように本実施の形態の通信装置は、通信装置は、データ内容に関して、フレームに含まれているデータの一部が、USB機器から受信したデータの終端を含むことを、具体的な条件として用いて高い即時性を要するデータを他から区別する。よって、通信装置は、フレームアグリゲーションによる高速通信を行いながら、必要に応じて即時性が高い通信をより容易に実現する。
また、通信装置は、当該フレームの優先度、つまり、当該フレームを端末に優先的に受信させることが望まれる度合いを考慮して、連結フレームに含めるフレームを決定する。これにより、通信装置は、優先度が高いフレームが、優先度が低いフレームより後に到着した場合に、優先度が高いフレームを早く送信することで、優先度が低いフレームより早く端末に受信させることができる。
以上、本発明の通信装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。