(57)【要約】【課題】パケットの欠落を防ぎ、また、スループットの低下を防止することができる通信装置を得ること。【解決手段】通信機能を有するデバイス２２０とデバイス２２０を制御するデバイスドライバ１０４を備える通信装置であって、デバイスドライバ１０４が、接続の確立した通信の通信方式が所定の方式であるか否かを判断し、所定の方式である場合には、さらに、送信するデータがＴＣＰプロトコルを用いるか否かを判定し、送信データがＴＣＰプロトコルを用いると判定した場合には、前記ウィンドウサイズを所定の値に書き換える。【選択図】        図１
2009071360.tif 000002
【特許請求の範囲】
【請求項１】
通信機能を有するデバイスと前記デバイスを制御するデバイスドライバを備える通信装置であって、
前記デバイスドライバが、接続の確立した通信の通信方式が所定の方式であるか否かを判断し、所定の方式である場合には、さらに、送信するデータがＴＣＰプロトコルを用いるか否かを判定し、送信データがＴＣＰプロトコルを用いると判定した場合には、前記ウィンドウサイズを所定の値に書き換えることを特徴とする通信装置。
【請求項２】
前記デバイスは、
リアルタイムオペレーティングシステム上でファームウェアを実行することによってデバイスを動作させるデバイス制御手段、
を備えることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記デバイスドライバは、さらに、送信データのＴＣＰヘッダに含まれるウィンドウサイズを前記所定の値と比較し、前記ウィンドウサイズが所定の値を超える場合に前記ウィンドウサイズを前記所定の値に書き換えることを特徴とする請求項１または２に記載の通信装置。
【請求項４】
伝送レートごとに設定した所定の閾値を前記伝送レートに対応づけて保持し、
前記デバイスドライバは、接続中の通信の伝送レートを検知して、検知した伝送レートに対応する前記所定の閾値を選択し、前記選択した所定の閾値を前記所定の値とすることを特徴とする請求項１、２または３に記載の通信装置。
【請求項５】
前記判定を送信データのＩＰヘッダに含まれる上位プロトコルを示す領域の値に基づいて行うことを特徴とする請求項１〜４のいずれか１つに記載の通信装置。
【請求項６】
前記デバイスドライバが、ウィンドウサイズを所定の値に書き換えを行う際に、書き換え前のウィンドウサイズと送信データに含まれるチェックサムの値と書き換え後のウィンドウサイズとに基づいて書き換え後の送信データのチェックサムの再計算を行い、送信データのチェックサムを再計算後のチェックサムに書き換えることを特徴とする請求項１〜５のいずれか１つに記載の通信装置。
【請求項７】
前記通信機能を無線ＬＡＮ通信機能とすることを特徴とする請求項１〜６のいずれか１つに記載の通信装置。
【請求項８】
前記所定の方式をＷＰＡによる暗号化を行う通信方式とすることを特徴とする請求項７に記載の通信装置。
【請求項９】
前記所定の方式であるかの判断を、ＷＰＡの暗号鍵が発行されたか否かに基づいて行うことを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記通信機能を有線ＬＡＮ通信機能とすることを特徴とする請求項１〜６のいずれか１つに記載の通信装置。
【請求項１１】
通信機能を有するデバイスと前記デバイスを制御するデバイスドライバを備える通信装置における通信方法であって、
前記デバイスドライバが、接続の確立した通信の通信方式が所定の方式であるか否かを判断する通信方式判断ステップと、
前記通信方式が前記所定の方式である場合には、さらに、送信するデータがＴＣＰプロトコルを用いるか否かを判定するＴＣＰ判定ステップと、
前記ＴＣＰ判定ステップで、送信データがＴＣＰプロトコルを用いると判定した場合には、前記ウィンドウサイズを所定の値に書き換えるウィンドウサイズ書き換えステップと、
を含むことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、受信処理レートが伝送レートを上回る可能性のある通信システムにおける通信装置および通信方法に関する。
【背景技術】
【０００２】
無線ＬＡＮ（Local  Area  Network）の標準規格の策定を行うＩＥＥＥ（The  Institute  of  Electrical  and  Electronic  Engineers）８０２．１１タスクグループの１つであるＴＧｉ(task  group  i)が、セキュリティを改善する規格の策定を進めている。その規格が、ＩＥＥＥ８０２．１１ｉとして２００４年６月に承認された。ＩＥＥＥ８０２．１１ｉのうち、確定済みの部分について、Ｗｉ−Ｆｉ（Wireless  Fidelity）  Allianceが、２００２年１０月に先行リリースしたものが、ＷＰＡ(Ｗｉ−Ｆｉ  Protected  Access)である。
【０００３】
ＷＰＡでは、認証方式としてＩＥＥＥ８０２．１ｘが標準採用されている。ＩＥＥＥ８０２．１ｘの認証方式を採用する通信システムは、一般に、サプリカント（無線ＬＡＮ端末），認証装置（アクセスポイント），認証サーバー（ＲＡＤＩＵＳサーバー）の３つで構成される。また、ＷＰＡには、ＷＰＡ−ＰＳＫ（Pre  Shared  Key）とよばれるモードがあり、ＷＰＡ−ＰＳＫでは、上記の３つのうち、認証サーバーを設置しない。
【０００４】
以下の説明では、構成が簡易なＷＰＡ−ＰＳＫを採用する場合を例にとり、また、暗号化方式として、ＴＫＩＰ（Temporal  Key  Integrity  Protocol）を採用する場合について説明する。
【０００５】
図５は、ＷＰＡ−ＰＳＫの認証方式の手順の一例を示すチャートである。まず、サプリカントは、スキャンを行い、アクセスポイントからのビーコン信号を検出する（ステップＳ１０１）。アクセスポイントから送信されるビーコン信号には、アクセスポイントを特定するための、ＢＳＳＩＤ（Basic  Service  Set  Identifier），ＳＳＩＤ（Service  Set  Identifier）などの情報、および、そのアクセスポイントがＷＰＡによる認証を必要としていることを示す情報要素（Information  Element：ＩＥ）が含まれている。
【０００６】
そして、サプリカントは、ビーコン信号中のＢＳＳＩＤとＳＳＩＤに基づいてアクセスポイントを特定し、そのアクセスポイントとの接続をおこなうためのプローブ要求信号を送出する（ステップＳ１０２）。その後、図５に示す通り、サプリカントとアクセスポイントとの間で、プローブ応答信号（ステップＳ１０３），オーセンティケーション要求信号（ステップＳ１０４），オーセンティケーション応答信号（ステップＳ１０５），アソシエーション要求信号（ステップＳ１０６），アソシエーション応答信号（ステップＳ１０７）という一連の信号の送受信をおこなう。
【０００７】
サプリカントは、ＷＰＡサプリカント・アプリケーションを搭載し、このアプリケーションによって、前述のＩＥを解析する。そして、ＩＥを解析した結果、ＷＰＡの認証を必要とすることを示すものであった場合には、オペレーションシステムを介し、ユーザーに対し、８−６３文字のＰＳＫ（Pre  Shared  Key）をキ−ボード入力するよう促す。そして、サプリカントは、ＰＳＫがあらかじめ設定されたＰＳＫと一致するかを判断する。このＰＳＫは、事前にアクセスポイント側で設定されサプリカントが保持している。入力されたＰＳＫとあらかじめ設定されたＰＳＫが一致しなければ、その後の認証は成功しない。
【０００８】
そして、ＰＳＫが一致した場合、メッセージ１〜４（ステップＳ１０８〜Ｓ１１１）として４ウェイハンドシェークによる鍵配送を行う。図６は、４ウェイハンドシェークによる鍵配送手順の一例を示すチャートである。図６に示すように、まず、アクセスポイントがＡＮｏｎｃｅ(認証する側が送信するナンス)をメッセージ１としてサプリカントに送信し（ステップＳ２０１）、サプリカントはメッセージ２として、ＳＮｏｎｃｅ（サプリカント側が送信するナンス）とＭＩＣ(Message  Integrity  Check)用鍵を送信する（ステップＳ２０２）。そして、サプリカント、アクセスポイントは、それぞれＰＳＫ、ＡＮｏｎｃｅおよびＳＮｏｃｅに基づいてＰＴＫ（Pairwise  Transient  Key）を算出する（ステップＳ２０３）。
【０００９】
そして、アクセスポイントはメッセージ３としてＭＩＣ用鍵を送信し（ステップＳ２０４）、サプリカントがメッセージ４としてＭＩＣ用鍵を送信する（ステップＳ２０５）。そして、サプリカントおよびアクセスポイントは、それぞれメッセージ１〜４までにやりとりした情報に基づいて暗号化用の鍵の算出の基になるＴＫ（Temporary  Key）を作成する（ステップＳ２０６）。この４ウェイハンドシェークは、ＩＥＥＥ８０２．１１ｉに規定されている鍵配送手順である。
【００１０】
その後、送信側（図６の例ではサプリカント）は、データフレームごとに異なる初期化ベクタ（ＩＶ：Initialization  Vector）を送信し（ステップＳ２０７）、サプリカントおよびアクセスポイントは、それぞれステップＳ２０６で生成したＴＫとＩＶを混合させることによって、データフレームを暗号化または復号化する際に用いる暗号鍵を生成する（ステップＳ２０８）。なお、ＩＶはデータフレームヘッダ中にそのまま付加するため、受信側（図６の例ではアクセスポイント）では、データフレームヘッダからＩＶを取り出した後、送信側と同様に、ＴＫとＩＶを混合させることにより、データフレームを暗号化または復号化する際に用いる暗号鍵を生成する。
【００１１】
この方式では、データフレームごとに異なるＩＶを用いるため、暗号鍵はデータフレームごとに異なるものとなる。このため、大量のデータフレームを収集したとしても、暗号鍵の解読が困難になり、暗号強度を高めることになる。また、受信側では、受信したデータフレームを復号した後、データフレーム全体の１フレームごとに、受信データをもとにハッシュ関数によって計算した値と、ＭＩＣ値を比較する。そして、両者が一致しているかどうかを調べることにより、データフレームが、改ざんまたは破壊されていないかなどのチェックをおこなう。
【００１２】
しかし、上記方式では、受信データをもとにハッシュ関数によって計算した値とＭＩＣ値との比較を際に、受信データの１バイトずつハッシュ関数を用いた計算を行うため、特にこの計算をソフトウェア上で行う場合、計算に要する時間が長くなってしまう。そのため、ＩＥＥＥ８０２．１１ａ／ｇの最大伝送レート５４［Ｍｂｐｓ］などの速度でデータを受信した場合に、データフレーム受信間隔の時間内に、上記の計算を含む受信処理を終えることができなくなることが起こりうる。その場合、デバイス内のバッファ上に受信データフレームが残っている状態で、新しいデータフレームを受信するためメモリ上のデータの上書きが発生し、メモリ上に残っていた受信データフレームは破壊されてしまう。その結果、受信側の上位層がＴＣＰ（Transmission  Control  Protocol）である場合には、期待したシーケンス番号を持つデータフレームを受信できず、期待したデータフレームを受け取ったことを示すＡＣＫ（Acknowledge）信号を送出することができない。このため、送信側は、期待したＡＣＫ信号が一定時間内に受信側から届かないためデータフレームを再送する。このことによって、全体としてのスループットが低下してしまう。
【００１３】
通信装置の状況に応じてスループットを制御するための従来技術としては、たとえば、ウィンドウサイズを調整する手法がある（下記特許文献１および特許文献２参照）。下記特許文献１では、通信方式の切替時のパケットロスを防ぐために、通信方式の切替時に強制的にウィンドウサイズを一時的にゼロにし、切り替え終了後に元の値に戻すという手法が開示されている。また、下記特許文献２では、ルーターが、音声パケットの欠落率を自動的に測定し、所定以上の欠落率を感知したらＩＰ電話優先モードへの切り替えを実施し、その切り替えを検知したら、ウィンドウサイズを調整するという手法が開示されている。
【００１４】
【特許文献１】特開２００６−１８０４１３号公報
【特許文献２】特開２００５−２８６５３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記従来のＷＰＡ−ＰＳＫ方式では、上述のように計算処理の時間が長いため、伝送レートによっては、受信側で受信処理が間に合わず受信データの上書きが発生する場合がある。このため、結果として通信システムのスループットが低下する可能性がある、という問題があった。
【００１６】
一方、上記特許文献１の技術では、通信方式の切替に対してはパケットロスを防ぐことができるが、受信処理に時間がかかる場合についての対応については触れられていない。また、上記特許文献２の技術では、パケットの欠落率に基づいてウィンドウサイズを調整しているため、パケット欠落を未然に防ぐことはできない。このため、上記特許文献１および特許文献２の技術では、受信処理に時間がかかる場合（受信処理レートが伝送レートを上回る）に、パケットの欠落が発生する前にウィンドウサイズを調整しスループットを低下させないようにすることができない、という問題があった。
【００１７】
本発明は、上記に鑑みてなされたものであって、受信処理レートが伝送レートを上回る可能性のある通信システムにおいて、パケットの欠落を防ぎ、また、スループットの低下を防止することができる通信装置および通信方法を得ることを目的とする。
【課題を解決するための手段】
【００１８】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、通信機能を有するデバイスと前記デバイスを制御するデバイスドライバを備える通信装置であって、前記デバイスドライバが、接続の確立した通信の通信方式が所定の方式であるか否かを判断し、所定の方式である場合には、さらに、送信するデータがＴＣＰプロトコルを用いるか否かを判定し、送信データがＴＣＰプロトコルを用いると判定した場合には、前記ウィンドウサイズを所定の値に書き換えることを特徴とする。
【００１９】
また、請求項２にかかる発明は、前記デバイスは、リアルタイムオペレーションシステム上でファームウェアを実行することによってデバイスを動作させるデバイス制御手段、
を備えることを特徴とする。
【００２０】
また、請求項３にかかる発明は、前記デバイスドライバは、さらに、送信データのＴＣＰヘッダに含まれるウィンドウサイズを前記所定の値と比較し、前記ウィンドウサイズを所定の値を超える場合に前記ウィンドウサイズを前記所定の値に書き換えることを特徴とする。
【００２１】
また、請求項４にかかる発明は、伝送レートごとに設定した所定の閾値を前記伝送レートに対応づけて保持し、前記デバイスドライバは、接続中の通信の伝送レートを検知して、検知した伝送レートに対応する前記所定の閾値を選択し、前記選択した所定の閾値を前記所定の値とすることを特徴とする。
【００２２】
また、請求項５にかかる発明は、前記判定を送信データのＩＰヘッダに含まれる上位プロトコルを示す領域の値に基づいて行うことを特徴とする。
【００２３】
また、請求項６にかかる発明は、前記デバイスドライバが、ウィンドウサイズを所定の値に書き換えを行う際に、書き換え前のウィンドウサイズと送信データに含まれるチェックサムの値と書き換え後のウィンドウサイズとに基づいて書き換え後の送信データのチェックサムの再計算を行い、送信データのチェックサムを再計算後のチェックサムに書き換えることを特徴とする。
【００２４】
また、請求項７にかかる発明は、前記通信機能を無線ＬＡＮ通信機能とすることを特徴とする。
【００２５】
また、請求項８にかかる発明は、前記所定の方式をＷＰＡによる暗号化を行う通信方式とすることを特徴とする。
【００２６】
また、請求項９にかかる発明は、前記所定の方式であるかの判断を、ＷＰＡの暗号鍵が発行されたか否かに基づいて行うことを特徴とする。
【００２７】
また、請求項１０にかかる発明は、前記通信機能を有線ＬＡＮ通信機能とすることを特徴とする。
【００２８】
また、請求項１１にかかる発明は、通信機能を有するデバイスと前記デバイスを制御するデバイスドライバを備える通信装置における通信方法であって、前記デバイスドライバが、接続の確立した通信の通信方式が所定の方式であるか否かを判断する通信方式判断ステップと、前記通信方式が前記所定の方式である場合には、さらに、送信するデータがＴＣＰプロトコルを用いるか否かを判定するＴＣＰ判定ステップと、前記ＴＣＰ判定ステップで、送信データがＴＣＰプロトコルを用いると判定した場合には、前記ウィンドウサイズを所定の値に書き換えるウィンドウサイズ書き換えステップと、を含むことを特徴とする。
【発明の効果】
【００２９】
請求項１にかかる発明によれば、デバイスドライバが、接続の確立した通信の通信方式が所定の方式であり、かつ、ＴＣＰプロトコルを用いる通信であると判定した場合には、ウィンドウサイズを所定の値に書き換えるようにしたので、高負荷の受信処理を行う通信方式の場合でも、受信処理遅延による受信バッファ上書きを防ぐようにウィンドウサイズを調整することができ、パケットロスを防ぐとともにスループットの低下を防ぐ、という効果を奏する。
【００３０】
また、請求項２にかかる発明によれば、リアルタイムオペレーションシステム上でファームウェアを実行することによってデバイスを動作させるようにしたので、リアルタイムオペレーティングシステムに対応して迅速に受信処理を行うことができる、という効果を奏する。
【００３１】
また、請求項３にかかる発明によれば、デバイスドライバが、さらに、送信データのＴＣＰヘッダに含まれるウィンドウサイズが所定の値を超える場合にウィンドウサイズを所定の値に書き換えるようにしたので、ウィンドウサイズの書き換えの頻度を低減させることができ、処理負荷を低減させることができる、という効果を奏する。
【００３２】
また、請求項４にかかる発明によれば、デバイスドライバが、接続中の通信の伝送レートに対応する所定の閾値を選択して、その選択した所定の閾値にウィンドウサイズを書き換えるようにしたので、伝送レートに応じた適切なスループットの調整を行うことができる、という効果を奏する。
【００３３】
また、請求項５にかかる発明によれば、送信データのＩＰヘッダに含まれる上位プロトコルを示す領域の値に基づいてＴＣＰプロトコルを用いる通信であるかを判定するようにしたので、簡易な処理で判定を行うことができる、という効果を奏する。
【００３４】
また、請求項６にかかる発明によれば、デバイスドライバが、ウィンドウサイズの書き換えを行う際に、変更する情報に関係する情報に部分のみに基づいてチェックサムの再計算を行うようにしたので、チェックサムの計算を効率的に行うことができる、という効果を奏する。
【００３５】
また、請求項７にかかる発明によれば、通信機能を無線ＬＡＮ通信機能としたので、無線ＬＡＮシステムにおいて、受信処理遅延による受信バッファ上書きを防ぐようにウィンドウサイズを調整することができ、パケットロスを防ぐとともにスループットの低下を防ぐ、という効果を奏する。
【００３６】
また、請求項８にかかる発明によれば、所定の方式をＷＰＡによる暗号化を行う通信方式としたので、ＷＰＡにより高負荷な復号処理を行う場合にも、受信処理遅延による受信バッファ上書きを防ぐようにウィンドウサイズを調整することができ、パケットロスを防ぐとともにスループットの低下を防ぐ、という効果を奏する。
【００３７】
また、請求項９にかかる発明によれば、所定の方式であるかの判断を、ＷＰＡの暗号鍵が発行されたか否かに基づいて行うようにしたので、簡易な処理で判断することができる、という効果を奏する。
【００３８】
また、請求項１０にかかる発明によれば、通信機能を有線ＬＡＮ通信機能としたので、有線ＬＡＮシステムにおいて、受信処理遅延による受信バッファ上書きを防ぐようにウィンドウサイズを調整することができ、パケットロスを防ぐとともにスループットの低下を防ぐ、という効果を奏する。
【００３９】
また、請求項１１にかかる発明によれば、接続の確立した通信の通信方式が所定の方式であり、かつ、ＴＣＰプロトコルを用いる通信であると判定した場合には、ウィンドウサイズを所定の値に書き換えるようにしたので、高負荷の受信処理を行う通信方式の場合でも、受信処理遅延による受信バッファ上書きを防ぐようにウィンドウサイズを調整することができ、パケットロスを防ぐとともにスループットの低下を防ぐ、という効果を奏する。
【発明を実施するための最良の形態】
【００４０】
以下に添付図面を参照して、この発明にかかる通信装置および通信方法の最良な実施の形態を詳細に説明する。
【００４１】
（実施の形態）
図１は、本発明の実施の形態にかかるサプリカント（無線ＬＡＮ端末）１０の構成例を示す図である。本実施の形態では、本発明にかかる通信装置の一例としてサプリカント１０を例にして説明する。本実施の形態のサプリカント１０は、サプリカント本体１００と、サプリカント本体１００に搭載される無線ＬＡＮデバイス搭載ボード２００と、サプリカント本体１００と無線ＬＡＮデバイス搭載ボード２００を接続するＰＣＩ（Peripheral  Components  Interconnect）インタフェース３００を備えている。
【００４２】
また、図１に示すように、本実施の形態の無線ＬＡＮデバイス搭載ボード２００は、デバイス２２０とアンテナ２０９で構成される。また、デバイス２２０は、ＭＡＣ（Media  Access  Control）回路２０１と、ＤＭＡ回路２０２と、ベースバンド・プロセッサ２０３と、周波数変換回路２０４と、コントロールＲＡＭ（Random  Access  Memory）２０５と、インタフェース（Ｉ／Ｆ）レジスタ２０６と、サブＣＰＵ（Central  Processing  Unit）２０７と、ＲＡＭ２０８と、で構成される。
【００４３】
ＭＡＣ回路２０１は、ＭＡＣヘッダの追加および削除，暗号化および復号化を行う。ベースバンド・プロセッサ２０３は、データ送信時には、ＭＡＣ回路２０１からのディジタルデータをＤ／Ａ（Digital-Analog）変換してアナログデータを生成して周波数変換回路２０４に渡す。また、ベースバンド・プロセッサ２０３は、受信時には、周波数変換回路２０４からの入力されるアナログデータをＡ／Ｄ（Analog-Digital）変換することによりディジタルデータを生成してＭＡＣ回路２０１に渡す。
【００４４】
周波数変換回路２０４は、データ送信時には、ベースバンド・プロセッサ２０３のアナログ信号の周波数を、２．４［ＧＨｚ］，５［ＧＨｚ］などの無線の電波の周波数に変換しアンテナ２０９に送出する。また、周波数変換回路２０４は、アンテナ２０９経由で受信した、２．４［ＧＨｚ］，５［ＧＨｚ］などの無線の電波を周波数変換して、ベースバンド・プロセッサ２０３に渡す。アンテナ２０９は、周波数変換回路２０４から受け取った信号を空中に電波として送出し、また、通信相手等から受信した電波を周波数変換回路２０４に渡す。
【００４５】
ＲＡＭ２０８内には、リアルタイムオペレーティングシステム２１０と、リアルタイムオペレーティングシステム２１０上で動作し、ＭＡＣ回路２０１を動作させるソフトウェア、すなわちファームウェア２１１と、が展開される。サブＣＰＵ２０７は、デバイス２２０を動作させるためのデバイス制御手段であり、ファームウェア２１１とリアルタイムオペレーティングシステム２１０をＲＡＭ２０８から読み出し、リアルタイムオペレーティングシステム２１０を実行するとともに、ファームウェア２１１をリアルタイムオペレーティングシステム２１０上で実行する。
【００４６】
また、サプリカント本体１００は、メインＣＰＵ１０１と、オペレーティングシステム１０２と、ＷＰＡサプリカント・アプリケーション１０３と、デバイスドライバ１０４と、で構成される。ＷＰＡサプリカント・アプリケーション１０３は、メインＣＰＵおよびオペレーティングシステム１０２で動作する。ＷＰＡサプリカント・アプリケーション１０３は、送信データを生成すると、デバイスドライバ１０４に送出する。デバイスドライバ１０４は、受け取った送信データに所定の処理を行い、処理後のデータをＰＣＩインタフェース３００経由で、ＤＭＡ（Direct  Memory  Access）転送により、無線ＬＡＮデバイス搭載ボード２００に送る。また、デバイスドライバ１０４は、無線ＬＡＮデバイス搭載ボート２００からＰＣＩインタフェース３００経由でデータを受信し、所定の処理を行った後に、ＷＰＡアプリカント・アプリケーション１０３に渡す。
【００４７】
コントロールＲＡＭ２０５は、デバイスドライバ１０４とファームウェア２１１の両方からアクセスが可能なＲＡＭ領域である。たとえば、スキャンまたは接続などの動作をデバイス２２０に実施させたい場合には、デバイスドライバ１０４は、各動作に対応するコマンドおよび各コマンドに付随する情報を、ＰＣＩインタフェース３００経由でコントロールＲＡＭ２０５に書き込む。ファームウェア２１１は、コントロールＲＡＭ２０５に書き込まれたコマンドおよびコマンドに付随する情報を読み出し、そのコマンドに対応する動作を実施する。
【００４８】
また、デバイス２２０側からメインＣＰＵ１０１への割り込みを発生させたい場合には、ファームウェア２１１が、インタフェースレジスタ２０６の中の、割り込みソースレジスタの発生させる割り込みの種類に対応したビットを“１”に設定する。そして、該当する割り込みマスクレジスタが“０”であれば、メインＣＰＵに対して割り込みがかかる。
【００４９】
また、ファームウェア２１１は、リアルタイムオペレーティングシステム２１０上で稼働しており、デバイス２２０のデータ受信割り込みや、デバイスドライバ１０４からコ
マンドを受けた際の割り込みに対応して、割り込みの発生した優先度の高いタスクを、優先的に実施することが可能である。
【００５０】
以下、データファイルの伝送方法の一つとして広く用いられているＦＴＰ(File  Transfer  Protocol)プロトコルによってＷＰＡモードで暗号化されたデータフレームを受信する場合を例にあげて、本実施の形態の動作について説明する。図２は、本実施の形態のデータフレーム送受信手順の一例を示すチャートである。
【００５１】
まず、アンテナ２０９が通信相手（たとえばアクセスポイント）からデータフレームを受信し（ステップＳ１）、ベースバンド・プロセッサ２０３は、アンテナ２０９，周波数変換回路２０４経由で入力されたデータフレームに周波数変換処理を行いディジタル信号化し、受信データが無線ＬＡＮのデータフレームであれば、ＭＡＣ回路２０１内の受信バッファにデータフレームを書き込む（ステップＳ２）。そして、ＭＡＣ回路２０１は、サブＣＰＵに対して割り込みを発生させる（ステップＳ３）。この割り込みが発生すると、サブＣＰＵ上のファームウェア２１１は、暗号化されたデータフレームを復号するために必要となる復号鍵を設定する（ステップＳ４）。なお、ＷＰＡの復号鍵の設定に必要な情報は、通信相手（たとえば、アクセスポイント）との間のたとえば、４ウェイハンドシェークなどのやりとりにより、既に入手されていることとする。
【００５２】
ＭＡＣ回路２０１は、ファームウェア２１１が設定した復号鍵を用いてベースバンド・プロセッサ２０３から送られたデータフレームを受信バッファから読み出して復号化を実施し、受信データとしてファームウェアに渡す（ステップＳ５）。ファームウェア２１１は、渡された受信データをハッシュ関数に入力して、ハッシュ値を求める。ファームウェア２１１は、ハッシュ値すなわち計算結果と、ＭＩＣとの値を比較し、一致しているかを調べることにより、受信したデータフレームが、改ざんまたは破壊されていない、完全なものであるかを調べる（ステップＳ６）。
【００５３】
そして、ファームウェア２１１は、ＤＭＡ回路２０２に対して、受信データをＰＣＩインタフェースを経由してＤＭＡ転送するよう指示し（ステップＳ６）、ＤＭＡ回路２０２は、この指示を受け取ると、ＭＡＣ回路２０１の受信バッファから受信データを読み出して、ＰＣＩインタフェース経由で、サプリカント１００にＤＭＡ転送する（ステップＳ７）。ＤＭＡ転送が完了すると、ＤＭＡ回路２０２は、サブＣＰＵに対して割り込みを発生させ、この割り込みを受けて、ファームウェア２１１が、インタフェースレジスタ２０６の該当する割り込ビットを“１”に設定することにより、メインＣＰＵ１０１割り込みを発生させる（ステップＳ８）。
【００５４】
メインＣＰＵ１０１は、この割り込みを受けて、デバイスドライバ１０４に処理実行を指示し、デバイスドライバは、この指示を受けるとＰＣＩインタフェース経由で受信したデータフレームに所定の処理を実施し、処理後のデータフレームをオペレーティングシステム１０２に渡す（ステップＳ９）。オペレーティングシステム１０２のＴＣＰ層は、データフレーム中のＴＣＰヘッダ中のシーケンス番号を解析し、待機するシーケンス番号と一致している場合には、そのデータフレームのサイズをもとに、次に待機すべきデータフレームのシーケンス番号を計算する。そして、計算したシーケンス番号をＴＣＰヘッダ中のＡＣＫ番号として書き込み、ＡＣＫフレームを生成する（ステップＳ１０）。
【００５５】
そして、オペレーティングシステム１０２は、ＡＣＫフレームをデバイスドライバ１０４に渡し（ステップＳ１０）、デバイスドライバ１０４が、そのフレームに所定の処理を行い、処理後のデータを割り込によりＤＭＡ転送するために必要な情報をコントロールＲＡＭ２０５に書き込む。サブＣＰＵ上のファームウェア２１１では、コントロールＲＡＭ２０５に書き込まれた情報によって、割り込みが発生し（ステップＳ１１）、この割り込みを受けて、ファームウェア２１１が、ＤＭＡ回路２０２に対して、ＰＣＩインタフェース３００経由のＤＭＡ転送を行うよう指示する（ステップＳ１２）。ＤＭＡ回路２０２は、この指示にしたがって、デバイスドライバ１０４からＡＣＫフレームをＰＣＩインタフェース３００経由でＤＭＡ転送し、ＤＭＡ転送が完了すると、サブＣＰＵに対して割り込みを発生させる（ステップＳ１３）。ファームウェア２１１は、この割り込みをうけて、ＤＭＡ転送されたＡＣＫフレームを構成するデータをハッシュ関数に入力し、得られた出力値をＭＩＣ値としてＡＣＫフレームに付加した後、ＭＡＣ回路２０１内の送信バッファにそのＡＣＫフレームを書き込む（ステップＳ１４）。
【００５６】
ＭＡＣ回路２０１は、送信バッファに書き込まれたＡＣＫフレームの暗号化を行い暗号化されたＡＣＫフレームをベースバンド・プロセッサ２０３へ渡し（ステップＳ１５）、暗号化されたフレームは、ベースバンド・プロセッサ２０３、周波数変換回路２０４、アンテナ２０９を経由して電波として通信相手に送信される（ステップＳ１６）。
【００５７】
このＡＣＫフレームを受信した通信相手は、ＴＣＰヘッダのＡＣＫ番号が、次に送信しようとするデータフレームのシーケンス番号と一致していれば、次のデータフレームを送信する。このように、送信側からデータフレームを送り、受信側ではデータを受信した後ＡＣＫフレームを返し、送信側はＡＣＫフレームを受信すると次のデータフレームを送信する。上記の例では、サプリカント１０が受信側である場合について説明したが、サプリカント１０側が送信側の場合には、同様にサプリカント１０側がデータフレームを生成して、通信相手に送信し、通信相手がデータを受信するとＡＣＫフレームを返し、サプリカント１０側がＡＣＫフレームを受信すると次のデータフレームを送信する。
【００５８】
以上の図２に示した一連のフローの繰り返しにより、ＦＴＰプロトコルでのデータ伝送が行われる。さらに、図２の一連のフローに加え、オペレーションシステムから渡されるイーサネット（登録商標）形式のデータフレーム中の、ＴＣＰヘッダ中のウィンドウサイズを用いて、送信側、受信側の間で、ウィンドウサイズを通知することによって、データ伝送効率を向上させている。なお、ウィンドウサイズは、受信側の端末のオペレーションシステムが、その端末におけるデータ用のバッファサイズなどをもとに決定する値であり、送信側は、ウィンドウサイズを超えない場合には、ＡＣＫフレームの受信をまたずに連続してデータフレームを送信することができる。図３は、イーサネット（登録商標）フレームのフォーマットを示す図である。ＴＣＰプロトコルを用いた通信では、図３のＴＣＰヘッダのウィンドウサイズを書き換えることにより送信側、受信側でウィンドウサイズの情報を通知する。
【００５９】
たとえば、受信側のウィンドウサイズが８０００バイトであり、送信側のデータフレームサイズが１０００バイトであると仮定すると、送信側は、受信側からのＡＣＫフレームが届くか否かにかかわらず、最大８フレームまで連続送信することが可能となる。このとき、受信側は、８フレームすべてに対してそれぞれＡＣＫフレームを返す必要はなく、８番目のデータフレームに対して、ＡＣＫフレームを返せば良いため、１フレームずつＡＣＫフレームにより確認する方法に比べて、伝送効率が向上する。
【００６０】
ところが、このように連続送信を行うことができることの副作用として、受信側が、受信したデータフレームの処理をおこなっている最中に、次のフレームを受信してしまう可能性があるという問題が発生する。ＷＰＡにより暗号化されたデータの受信処理など高負荷の処理を受信側で行う際に、１ビットあたりの受信処理時間が１ビット当たりの伝送時間を上回ることとこの問題が発生する。特に、サブＣＰＵ２０７は、メインＣＰＵ１０１に比べ、処理速度の低い場合が多く、また、特に、サブＣＰＵ２０７の上記のハッシュ関数の計算処理に時間がかかってしまうことが多い。このように、１ビットあたりの受信処理時間が１ビット当たりの伝送時間を上回ると、ＭＡＣ回路２０１内の受信バッファの受信処理中のデータフレームが、次に受信したデータフレームによって上書きされてしまい、データロスが発生してしまう。このロスを防ぐためには、ウィンドウサイズを小さくして、データが連続して送られてくるのを防ぐ方法が考えられる。しかし、この場合、暗号されていないデータまたは受信処理負荷の大きくない方式で暗号化されたデータに対しても小さいウィンドウサイズによる伝送が行われることになり伝送効率が悪化する。
【００６１】
このため、本実施の形態では、上記のようなデータロスの発生を防いで最適なウィンドウサイズを設定するために以下のようなウィンドウ制御処理を行う。図４は、本実施の形態のウィンドウサイズ制御フローの一例を示すフローチャートである。まず、デバイスドライバ１０４は、現在接続している通信の暗号化モードが、ＷＰＡであるか否かを判断する（ステップＳ２１）。たとえば、オペレーションシステムが、世界的に広く使用されている米マイクロソフト社のWindows（登録商標）である場合、Windows（登録商標）が、上述の４ウェイハンドシェークの後、デバイスドライバ１０４に対して暗号鍵を発行するので、デバイスドライバ１０４は、その暗号鍵が発行されたか否かによって、ＷＰＡによる接続か否かを判断する。現在接続している通信の暗号化モードがＷＰＡであると判断した場合（ステップＳ２１  Ｙｅｓ）には、デバイスドライバ１０４は、送信するデータフレームがＴＣＰプロトコルを用いているか否かを判断する（ステップＳ２２）。
【００６２】
図３に示すように、ＩＰヘッダの先頭から１０バイト目、すなわち、ＭＡＣヘッダの先頭から２４バイト目の情報がトランスポート層のプロトコルを表す。したがって、デバイスドライバ１０４は、ＭＡＣヘッダの先頭から２４バイト目の情報が、トランスポート層のプロトコルがＴＣＰであることを示す“０ｘ０６”であるか否かを調べることにより、ＴＣＰプロトコルを用いているか否かを判断する。
【００６３】
送信するデータフレームがＴＣＰプロトコルを用いていると判断した場合（ステップＳ２２  Ｙｅｓ）、デバイスドライバ１０４は、ＴＣＰヘッダの先頭から１５，１６バイト目、すなわち、ＭＡＣヘッダの先頭から４９，５０バイト目の情報をウィンドウサイズとして読み出し、そのウィンドウサイズが、ＷＰＡモードのウィンドウサイズの上限値として設定された値よりも大きいかどうかを判断する（ステップＳ２３）。なお、ＷＡＰモードのウィンドウサイズの上限値は、ＭＡＣ回路２０１の受信バッファの大きさを考慮した上で、受信処理の実験などにより、受信処理中のデータに対する上書きが発生しないような最適な値（たとえば、上書きが発生ない範囲でのウィンドウサイズの最大値）を求めて、設定しておくこととする。
【００６４】
ステップＳ２３で、ウィンドウサイズが、ＷＰＡモードのウィンドウサイズの上限値として設定された値よりも大きいと判断した場合（ステップＳ２３  Ｙｅｓ）、デバイスドライバ１０４は、ウィンドウサイズをＷＰＡモードのウィンドウサイズの上限値に書き換える（ステップＳ２４）。そして、以下に説明する手順によって、ＴＣＰヘッダ中のチェックサムを再計算する（ステップＳ２５）。
【００６５】
ＴＣＰヘッダの先頭から１５，１６バイト目、ＭＡＣヘッダの先頭から５１，５２バイト目がチェックサムの値である。チェックサムは、ＴＣＰヘッダとデータ部分で構成されるＴＣＰセグメントの完全性をチェックするために付加されるものである。オペレーションシステムは、まず、一時的にチェックサムを０にクリアした後、ＴＣＰセグメントを１６ビットごとのフィールドに分割し、１の補数和を計算した結果の１の補数（ビット反転したもの）を求めることによって求めた値を、チェックサムとして設定している。したがって、書き換え対象の１６ビットのフィールドの再計算前の値（もとのウィンドウサイズの値）をＦ１，再計算前のチェックサムをＣ１，書き換え対象の１６ビットのフィールド書き換え後の値（書き換えるべきウィンドウサイズ）の値をＦ２とすると、再計算後のチェックサムＣ２は、以下の式（１）で表すことができる。
Ｃ２＝[{(Ｃ１をビット反転したもの)と(Ｆ１をビット反転したもの)とＦ２}の１の補数和}をビット反転したもの]                      ・・・（１）
【００６６】
デバイスドライバ１０４は、上記（１）に従って、チェックサムを再計算し、送信するデータフレームのＴＣＰヘッダ中のチェックサムを再計算した値に更新し（ステップＳ２６）、処理を終了する。なお、本実施の形態では、式（１）に従って、チェックサムを再計算するようにしたが、これに限らず、書き換え後のウィンドウサイズの値を反映して再計算する方法であれば、どのような計算方法で行ってもよい。
【００６７】
また、ステップＳ２１で現在接続している通信の暗号化モードがＷＰＡでないと判断した場合（ステップＳ２１  Ｎｏ）、ステップＳ２２で送信するデータフレームがＴＣＰプロトコルを用いていないと判断した場合（ステップＳ２２  Ｎｏ）、および、ステップＳ２３でウィンドウサイズがＷＰＡモードのウィンドウサイズの上限値として設定された値以下であると判断した場合（ステップＳ２３  Ｎｏ）は、処理を終了する。
【００６８】
なお、本実施の形態では、ウィンドウサイズがＷＰＡモードのウィンドウサイズの上限値として設定された値よりも大きいと判断した場合にウィンドウサイズを更新するようにしているが、ステップＳ２３の判断を削除して、ステップＳ２２で送信するデータフレームがＴＣＰプロトコルを用いると判断した場合（ステップＳ２２  Ｙｅｓ）に、ステップＳ２４に進むようにしてもよい。
【００６９】
なお、本実施の形態では、ＷＰＡモードのウィンドウサイズの上限値として１つの値を用いるようにしたが、伝送レートごとにあらかじめウィンドウサイズの上限値を設定しておき、伝送レート（受信レート）を検知し、検知した伝送レートごとにその伝送レートに対応する上限値と比較し、送信するデータフレームから読み出したウィンドウサイズがその上限値を超える場合にその上限値に書き換えるようにしてもよい。
【００７０】
なお、本実施の形態では、ステップＳ２１でＷＰＡによる暗号化方式であるかを判断するようにしたが、これに限らず、たとえば他の要因により受信処理に時間のかかる通信であるか否かを判断するようにすればよい。たとえば、サブＣＰＵ２０７が処理能力の低いものであるが否かを判断するようにする、またはＷＰＡ以外の暗号化方式で処理時間のかかる方式であるか否かを判断する、などとしてもよい。その場合に、さらに、上記で説明したように伝送レートごとに上限値を設定して伝送レートごとの上限値を用いるようにしてもよい。
【００７１】
また、本実施の形態では無線ＬＡＮ通信システムについて説明したが、これに限らず、本実施の形態のウィンドウサイズ制御処理を有線ＬＡＮ通信システムに適用するようにしてもよい。
【００７２】
このように、本実施の形態では、ＷＰＡによる暗号化方式の通信であり、かつ、ＴＣＰプロトコルを用いた通信である場合に、サプリカント１０のデバイスドライバ１０４が、ＴＣＰヘッダのウィンドウサイズの値をあらかじめ設定した上限値と比較し、上限値を超える場合にウィンドウサイズを上限値に書き換えるようにした。このため、データ受信処理に時間がかかる場合でも、受信処理中のデータが上書きにより失われるのを防ぐことができる。したがって、ＴＣＰ層でのシーケンス番号の不整合によるデータの再送の発生を抑制することができ、システム全体としてのスループットを向上させることが可能となる。さらに、ＷＰＡによる暗号化方式の通信でない場合には、ウィンドウサイズの書き換えを行わないため、受信処理時間の短い通信に対しては高いスループットを維持することができる。
【００７３】
また、さらに、本実施の形態では、ウィンドウサイズおよびチェックサムの書き換えの処理を、全てデバイスドライバ１０４が行うため、ハードウェアやファームウェアの構成が変更した場合にも、デバイスドライバ１０４に設定しているウィンドウサイズの上限値などを再設定するだけで良いため、将来的なメンテナンスも用意であるという利点も持つ。
【産業上の利用可能性】
【００７４】
以上のように、本発明にかかる通信装置および通信方法は、受信処理レートが伝送レートを上回る可能性のある通信システムに有用であり、特に、ＷＰＡを用いた暗号化方式を採用する無線ＬＡＮ通信システムに適している。
【図面の簡単な説明】
【００７５】
【図１】実施の形態にかかるサプリカントの構成例を示す図である。
【図２】データフレーム送受信手順の一例を示すチャートである。
【図３】イーサネット（登録商標）フレームのフォーマットを示す図である。
【図４】ウィンドウサイズ制御フローの一例を示すフローチャートである。
【図５】ＷＰＡ−ＰＳＫの認証方式の手順の一例を示すチャートである。
【図６】４ウェイハンドシェークによる鍵配送手順の一例を示すチャートである。
【符号の説明】
【００７６】
１０  サプリカント
１００  サプリカント本体
１０１  メインＣＰＵ
１０２  オペレーティングシステム
１０３  ＷＰＡサプリカント・アプリケーション
１０４  デバイスドライバ
２００  無線ＬＡＮデバイス搭載ボード
２０１  ＭＡＣ回路
２０２  ＤＭＡ回路
２０３  ベースバンド・プロセッサ
２０４  周波数変換回路
２０５  コントロールＲＡＭ
２０６  Ｉ／Ｆレジスタ
２０７  サブＣＰＵ
２０８  ＲＡＭ
２０９  アンテナ
２１０  リアルタイムオペレーティングシステム
２１１  ファームウェア
２２０  デバイス
３００  ＰＣＩインタフェース
【図１】
2009071360.tif 000003
【図２】
2009071360.tif 000004
【図３】
2009071360.tif 000005
【図４】
2009071360.tif 000006
【図５】
2009071360.tif 000007
【図６】
2009071360.tif 000008