情報処理装置及び情報処理方法
【課題】端末固有の識別情報を含まないACKフレームが使用されるネットワークにおいて、ACKフレームの誤受信を防ぐ。
【解決手段】情報処理装置は、ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、ACK要求フレームを送信する送信部と、ACK要求フレームを受信した場合に、ACK要求フレームのシーケンス番号を含むACKフレームを生成する生成部と、ACKフレームとACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めてACKフレームを符号化する符号化部と、符号化されたACKフレームを受信する受信部と、符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めて、符号化されたACKフレームを復号化し、復号化されたACKフレームのシーケンス番号が記憶部に保持されていない場合に復号化されたACKフレームを破棄する復号化部と、を備える。
【解決手段】情報処理装置は、ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、ACK要求フレームを送信する送信部と、ACK要求フレームを受信した場合に、ACK要求フレームのシーケンス番号を含むACKフレームを生成する生成部と、ACKフレームとACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めてACKフレームを符号化する符号化部と、符号化されたACKフレームを受信する受信部と、符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めて、符号化されたACKフレームを復号化し、復号化されたACKフレームのシーケンス番号が記憶部に保持されていない場合に復号化されたACKフレームを破棄する復号化部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ACK応答の送信を行う情報処理装置に関する。
【背景技術】
【0002】
IEEE802.15.4は、PAN(Personal Area Network)と呼ばれる、IEE
Eが策定中の短距離無線ネットワーク規格である。IEEE802.15.4は、例えば、リモコンのような家電機器の制御やセンサーネットワークにおいて利用されている。IEEE802.15.4は、IEEE802.15.1を使用したブルートゥース(登録商標)等の近距離無線通信に比べると、伝送速度が低い。しかしながら、IEEE802.15.4は、1つのネットワークに多くのデバイスが参加できたり、煩雑な設定なしに機器の追加や削除が行えるアドホックネットワークに対応していたり、低消費電力であるといったメリットがある。
【0003】
図1は、IEEE802.15.4で規定されるフレームフォーマットを示す図である。IEEE802.15.4のフレームは、フレームコントロール,シーケンス番号,送信先PAN識別子,送信先アドレス,送信元PAN識別子,送信元アドレス,補助セキュリティヘッダ,フレームペイロード,FCS(Frame Check Sequence)のフィールドを含む。各フィールドのサイズは、図1に示される通りである。IEEE802.15.4では、2バイトの短縮アドレス、8バイトのIEEE拡長アドレスの2種類のMACアドレスがある。用いられるMACアドレスによって、送信先アドレスおよび送信元アドレスのフィールドの長さが変わる。そのため、2バイトの短縮アドレスを用いているのか、8バイトのIEEE拡張アドレスを用いているのかは、受信データフレームの送信元アドレスにより判定可能である。また、IEEE拡張アドレスは、IEEE802.3やIEEE802.11で用いられる6バイトのMACアドレスの上位3バイトと下位3バイトとの間に「FFEE」(16進数表記)の2バイトの固定値を挿入して作成される。
【0004】
また、フィールドの長さに0バイトが含まれているフィールドは、使用されない場合があるフィールドである。シーケンス番号は、IEEE802.15.4のネットワークに参加する各端末がデータフレームを送信する際に、各端末で設定され管理される番号である。
【0005】
図2は、IEEE802.15.4のフレームのフレームコントロールフィールドの各ビットの構成を示す図である。フレームコントロールフィールドは、2バイト、すなわち、16ビットで構成される。このうち、0−2ビット目はフレームタイプを示すフィールドである。フレームタイプには、例えば、ビーコン,データ,ACK,コマンド等がある。ACKフレームの場合には、このフレームタイプのフィールドの3ビットが「010」になる。3ビット目は、セキュリティの設定の有無を示すセキュリティフィールドである。4ビット目は、ペンディングデータの有無を示す。5ビット目は、ACKの返信の要求を示すACK要求フィールドである。ACKの返信を要求するデータフレームには、フレームコントロールのACK要求フィールドにフラグが立つ。以降、ACKの返信を要求するデータフレームを、ACK要求データフレームと称する。6ビット目は、フレームがPAN内部での通信であるのか、又は、複数のPANをまたぐ通信であるのかを示すPAN内部フィールドである。10−11ビット目は、受信アドレスの有無、および、受信アドレスが短縮アドレスであるが64ビットアドレスであるかを示す受信アドレスモードフィールドである。14−15ビット目は、送信アドレスの有無、および、送信アドレスが短縮アドレスであるが64ビットアドレスであるかを示す送信アドレスモードフィールドである。
【0006】
図3は、IEEE802.15.4におけるACKフレームのフォーマットを示す図である。IEEE802.15.4では、ACKフレームは、2バイトのフレームコントロールと、1バイトのシーケンス番号と、2バイトのFCSと、を含む合計5バイトの固定長のフレームである。ACKフレームの2バイトのフレームコントロールは、図2で説明されたように、「0100 0000 0000 0000」となる。
【0007】
ACKフレームには、送信元及び送信先のアドレスフィールド等の端末固有の情報を格納するフィールドもなく、また、このようなフィールドを付加することもできない。そのため、ACKの返信を必要とするデータを送信した端末は、返信されてきたACKフレームに含まれるシーケンス番号のみの参照により、送信したデータが送信先で正常に受信されたことを判断する。IEEE802.15.4では、端末がACKの返信を必要とするデータを受信すると、すぐにACKフレームを返信することが前提となっている。そのため、端末固有の情報がACKフレームに含まれていなくても、シーケンス番号の参照のみで、ACKの返信を必要とするデータを送信した端末は、送信したデータが送信先で正常に受信されたことを判断可能である。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−60850号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、日本において、950MHz帯においてIEEE802.15.4を使用する際には、ARIB STD−T96による制約を受ける。ARIB STD−T96は、950MHz帯を使用するテレメータ,テレコントロール,データ伝送用の無線設備に関する規格である。ARIB STD−T96では、ACKにもキャリアセンスが必須とされている。さらに、電波送出後100ms以上の休止時間を設けることも規定されている。そのため、端末がACKの返信が必要なデータを受信してからACKフレームを返信するまでに、10ms〜100ms程度の時間を要する可能性がある。
【0010】
ACKの返信を要するデータを送信した端末Aが、送信先の端末BからのACKの返信を待っている間に、他の端末Cに対するACKやデータの送信先の端末Bとは異なる端末Dから送信されたACKを受信する場合がある。このとき受信したACKのシーケンス番号と、端末Aが返信を待つACKに含まれるべきシーケンス番号とが同じである場合には、端末Bがデータを正常に受信したか否かにかかわらず、端末Aは端末Bが正常にデータを受信したと誤認識してしまうおそれがある。端末Aが誤認識してしまうと、端末Bに正常にデータが送信されず、再送が必要である場合でも、端末Aによる端末Bへのデータの再送が行われなくなってしまう。シーケンス番号が他の端末間の通信と重複することを、以降、シーケンス番号の衝突と称する。
【0011】
本発明の一態様は、端末固有の識別情報が含まれないACKフレームが使用されるネットワークにおいて、ACKフレームの誤受信を防ぐ情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の態様の一つは、情報処理装置である。この情報処理装置は、
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、
前記ACK要求フレームを送信する送信部と、
前記ACK要求フレームを受信した場合に、ACK要求フレームの送信元の端末固有の
識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成する生成部と、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化する符号化部と、
符号化されたACKフレームを受信する受信部と、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する復号化部と、
を備える。
【0013】
本発明の他の態様の一つは、上述した情報処理方法である。また、本発明の他の態様は、コンピュータを上記の情報処理装置として機能させる情報処理プログラム、及び当該情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体を含むことができる。コンピュータ等が読み取り可能な記録媒体には、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。コンピュータ等が読取可能な記録媒体には、例えば、CD(Compact Disc),DVD(Digital Versatile Disc)ディスク,ブルーレイディスク,USB(Universal Serial Bus)メモリ等の可搬型記録媒体,フラッシュメモリ等の半導体メモリ,ハードディスク等がある。
【発明の効果】
【0014】
開示の情報処理装置によれば、端末固有の情報が含まれないACKフレームが使用されるネットワークにおいて、ACKフレームの誤受信を防ぐことができる。
【図面の簡単な説明】
【0015】
【図1】IEEE802.15.4で規定されるフレームフォーマットを示す図である。
【図2】IEEE802.15.4のフレームのフレームコントロールフィールドの各ビットの構成を示す図である。
【図3】IEEE802.15.4におけるACKフレームのフォーマットを示す図である。
【図4】第1実施形態のネットワーク構成例を示す図である。
【図5】ネットワークにおける端末のハードウェア構成例を示す図である。
【図6】端末の機能ブロックの例を示す図である。
【図7】管理テーブルの一例を示す図である。
【図8】ACK受信端末におけるACK要求データフレームの送信処理のフローチャートの例である。
【図9】6バイト長のMACアドレスを管理する場合のACKフレームの符号化処理について説明するための図である。
【図10】ACK送信端末におけるACKフレームの送信処理のフローチャートの例である。
【図11】各端末1において6バイト長でMACアドレスを管理する場合のACKフレームの復号化処理について説明するための図である。
【図12】ACK受信端末におけるACKフレームの受信処理のフローチャートの例である。
【図13】シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図14】シーケンス番号103のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図15】シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図16】シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図17】FCS値を用いない場合のACKフレームの符号化処理の例を示す図である。
【図18】図17において符号化されたACKフレームを受信した端末におけるFCS値を用いない場合の復号化処理の例を示す図である。
【図19】図17において符号化されたACKフレームを受信した端末におけるFCS値を用いない場合の復号化処理の例を示す図である。
【発明を実施するための形態】
【0016】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【0017】
<第1実施形態>
図4は、第1実施形態のネットワーク構成例を示す図である。第1実施形態のネットワーク100は、950MHz帯のIEEE802.15.4によるメッシュ型の無線ネットワークである。図4中の円は、携帯端末,固定端末,無線基地局(GW)等の情報処理装置を示す。
【0018】
IEEE802.15.4を用いるネットワーク100では、図3に示されるように、ACKフレームの送信先アドレス等の各情報処理装置固有の情報を格納するフィールドが備えられていないACKフレームが用いられる。そのため、第1実施形態では、情報処理装置は、ACKフレームを送信する際に、ACKフレームの送信先となる情報処理装置固有の識別情報とチェックサム値とを用いてACKフレームを符号化する。これによって、ACKフレームの送信先となる情報処理装置固有の識別情報をACKフレームに付加することができる。情報処置装置の固有の識別情報は、例えば、MACアドレスである。チェックサム値は、例えば、CRC(Cyclic Redundancy Check)値,FCS値等である。
【0019】
この符号化されたACKフレームを受信した情報処理装置は、自身の固有の識別情報と予め保持していたチェックサム値を用いて、符号化とは逆の順番の処理で復号化する。ACKフレームの復号化に成功した場合には、受信したACKフレームが自身に宛てて送信されたことが判明する。また、ACKフレームの復号化に失敗した場合には、受信したACKが自身に宛てて送信されたものではないことが判明する。これによって、IEEE802.15.4のネットワークにおける情報処理装置でも、他の情報処理装置宛てのACKフレームを受信し、受信したACKフレームのシーケンス番号と自身が受信を待っているACKフレームのシーケンス番号とが同じ場合でも、自身宛てのACKでないことが判定できる。
【0020】
(装置構成)
図5は、ネットワーク100における端末1のハードウェア構成例を示す図である。端末1は、専用又は汎用のコンピュータである。具体的には、端末1は、例えば、通信機能付きの電力量計や水道メータ,ガスメータ等の計量機(スマートメータ),通信機能付きの家庭電化製品等である。
【0021】
端末1は、プロセッサ101,主記憶装置102,入力装置103,出力装置104,補助記憶装置105,アンテナ106,ネットワークインタフェース107,媒体駆動装置110を備え、これらがバス109により互いに接続されているコンピュータである。
【0022】
入力装置103は、例えば、入力ボタン,キーボード,マウス等のポインティングデバイス,スキャナ等である。入力装置103から入力されたデータは、プロセッサ101に出力される。
【0023】
ネットワークインタフェース107は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース107は、有線のネットワーク、又は、アンテナ106を通じて無線のネットワークと接続する。ネットワークインタフェース107は、例えば、NIC(Network Interface Card),無線LAN(Local Area Network)カード等である。ネットワークインタフェース107で受信されたデータ等は、プロセッサ101に出力される。
【0024】
主記憶装置102は、プロセッサ101に、補助記憶装置105に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。主記憶装置102は、例えば、RAM(Random Access Memory)のような半導体メモリである。
【0025】
補助記憶装置105は、情報処理プログラム105p,各種処理のための様々なプログラム,各プログラムの実行に際してプロセッサ101が使用するデータ等を格納する。補助記憶装置105は、例えば、EPROM(Erasable Programmable ROM)、又はハード
ディスクドライブ(Hard Disc Drive)である。
【0026】
媒体駆動装置110は、リムーバルメディア、すなわち可搬記録媒体111を駆動し、可搬記録媒体111に記録されたデータを読み出す。リムーバルメディアは、例えば、USBフラッシュメモリ,CD,又はDVDのような記録媒体である。
【0027】
プロセッサ101は、例えば、CPU(Central Processing Unit)や、DSP(Digital Signal Processor)である。プロセッサ101は、補助記憶装置105に保持された
OSや様々なアプリケーションプログラムを主記憶装置102にロードして実行することによって、様々な処理を実行する。なお、端末1に備えられるプロセッサは1つに限られず、端末1は、複数のプロセッサを備え、複数のプロセッサ間で処理を分散して行ってもよい。
【0028】
出力装置104は、プロセッサ101の処理の結果を出力する。出力装置104は、ディスプレイ,プリンタ等を含む。
【0029】
端末1は、携帯可能な端末であっても、固定された端末であってもよい。また、ネットワーク100には、端末の他に、基地局も含まれる。基地局のハードウェア構成は、図5に示されるハードウェア構成から、入力装置103,出力装置104等が排除された構成となる。以降、端末間での通信を例に説明するが、端末と基地局間の通信でも同様である。
【0030】
図6は、端末1の機能ブロックの例を示す図である。端末1では、プロセッサ101が、情報処理プログラム105pを実行することによって、フレーム受信処理部11,ACK生成部12,ACK復号化部13,ACK符号化部15,データ生成部16,経路制御部17,フレーム送信処理部18,再送処理部19として処理を実行する。また、主記憶装置102の記憶領域には、プロセッサ101による情報処理プログラム105pの実行を通じて、管理テーブル21が生成される。なお、端末1に複数のプロセッサが備えられている場合には、各プロセッサが、情報処理装置105pを実行することによって、フレーム受信処理部11,ACK生成部12,ACK復号化部13,ACK符号化部15,データ生成部16,経路制御部17,フレーム送信処理部18,再送処理部19のうちの少
なくとも1つとして処理を実行する。
【0031】
フレーム受信処理部11は、ネットワークインタフェース107を通じて受信されたフレームのヘッダをチェックし、適切な処理部に振り分ける。また、例えば、フレーム受信処理部11は、受信フレームのACK要求フィールドにフラグが立っている場合には(図2参照)、受信フレームがACK要求データフレームであることを判定し、ACK生成部12に出力する。例えば、第1実施形態では、フレーム受信処理部11は、受信フレームのフレーム長が5バイト長である場合には、受信フレームがACKフレームであると判定し、ACK復号化部13に出力する。
【0032】
データ生成部16は、端末1に備えられるアプリケーションからの要求に応じて送信するデータ(フレームのペイロード部分)を生成する。経路制御部17は、データ生成部16によって生成されたデータのルーティングを行う。フレーム送信処理部18は、経路制御部17によってルーティングされたデータにフレームヘッダを付加してカプセル化して、ネットワークインタフェース107を通じて送信する。また、データ生成部16によって生成されたデータがACKを必要とするデータである場合には、フレーム送信処理部18は、フレームヘッダのACK要求フィールド(図2参照)にフラグを立てて、フレームをACK要求データフレームとして再送処理部19に出力する。このとき、フレーム送信処理部18は、送信するACK要求データフレームに含まれるシーケンス番号と、このシーケンス番号でACKフレームを生成した場合のFCS値とを管理テーブル21(後述)に保持する。
【0033】
ACK生成部12は、フレーム受信処理部11からACK要求データフレームを受信すると、このACK要求データフレームの返信となるACKフレームを生成する。ACK生成部12は、ACK要求データフレームからシーケンス番号を読み出し、このシーケンス番号を含めてACKフレームを生成する(図3参照)。ACK生成部12は、生成したA
CKフレームをACK符号化部15に出力する。
【0034】
ACK符号化部15は、ACK生成部12から受信したACKフレームを符号化する。このACKの符号化処理の詳細については、後述される。ACK符号化部15は、ネットワークインタフェース107(アンテナ106)を通じて符号化されたACKフレームを出力する。
【0035】
ACK復号化部13は、フレーム受信処理部11から符号化されたACKフレームを受信し、ACKフレームを復号化する。ACKフレーム復号化処理の詳細については、後述される。ACK復号化部13は、復号化したACKフレームを再送処理部19に出力する。
【0036】
再送処理部19は、フレームの再送に係る処理を行う。再送処理部19は、フレーム送信処理部18からACK要求データフレームを受信すると、端末1の主記憶装置102の記憶領域内のバッファにACK要求データフレームを保持する。再送処理部19は、このACK要求データフレームをネットワークインタフェース107を通じて送信するとともに、再送タイマを開始する。再送タイマは、ACK要求データフレームに対応するACKフレームの所定の受信待ち時間を規定したタイマである。再送タイマが満了すると、再送処理部19は、バッファに保持したACK要求データフレームを再送する。所定回数ACK要求データフレームを再送してもACKフレームを受信しない場合には、再送処理部19は、バッファに保持されたACK要求データフレームを削除し、アプリケーションに再送失敗を送信する。ACK復号化部13から復号化されたACKフレームを受信すると、再送タイマを停止し、受信したACKフレームに対応するバッファに保持されたACK要求データフレームを削除し、再送処理を終了する。
【0037】
管理テーブル21は、送信したACK要求データフレームに対応して受信するべきACKフレームのシーケンス番号とFCS値とを保持するテーブルである。詳細は、後述される。
【0038】
(動作例)
以下、ACKフレームを送信する端末をACK送信端末,ACKフレームを受信する端末をACK受信端末と称する。なお、ACK送信端末及びACK受信端末の装置構成は、図5、図6において示される端末1の装置構成と同様である。すなわち、図5及び図6に示される端末1は、ACK受信端末としても、ACK送信端末としても動作する。
【0039】
ACKの送受信に係る処理は、次の3つに分けられる。
(1)ACK受信端末におけるACK要求データフレームの送信処理
(2)ACK送信端末におけるACKフレームの送信処理
(3)ACK受信端末におけるACKフレームの受信処理
以下、これら3つの処理について、具体的に説明する。
【0040】
(1)ACK受信端末におけるACK要求データフレームの送信処理
上述の説明のように、ACK受信端末は、ACK要求データフレームを送信する際に、フレームコントロールのACK要求フィールドにフラグを立てて送信する。8バイトのIEEE拡張アドレス又は6バイトのアドレスが用いられる場合には、ACK受信端末は、ACK要求データフレームに含まれるシーケンス番号でACKフレームを生成した場合に生成されるFCS値を算出し、このシーケンス番号とFCS値とを対応付けて管理テーブル21に格納する。
【0041】
図7は、管理テーブル21の一例を示す図である。管理テーブル21は、ACK要求データフレームに含まれるシーケンス番号と、返信として受信すべきACKフレームのFCS値とが対応付けられて保持される。ACKフレームのフレームコントロールフィールドの値は、0100 0000 0000 0000の固定値である。また、図3に示されるように、ACKフレームは、フレームコントロール、シーケンス番号、FCSのフィールドしか持たない。そのため、シーケンス番号が決まれば、ACK受信端末は、ACK要求データフレームの返信として受信すべきACKフレームのFCS値を求めることができる。なお、IEEE802.15.4においてFCE値は、CRC16−CCITTに基づき生成されることが規定されている。
【0042】
2バイトの短縮アドレスが用いられる場合には、管理テーブル21に、ACK要求データフレームに含まれるシーケンス番号と、返信として受信すべきACKフレームのFCS値とは保持されない。ただし、これに限られず、2バイトの短縮アドレスが用いられる場合でも、管理テーブル21に、ACK要求データフレームに含まれるシーケンス番号と、返信として受信すべきACKフレームのFCS値とが保持されてもよい。
【0043】
図8は、ACK受信端末におけるACK要求データフレームの送信処理のフローチャートの例である。図8に示されるフローチャートは、アプリケーションからACKの返信を必要とするデータの送信が指示されると開始される。また、図8に示されるフローチャートは、ACK受信端末のプロセッサ101が情報処理プログラム105pを実行することで行われる処理の一部である。
【0044】
OP1では、プロセッサ101は、シーケンス番号を取得する。このとき取得されるシーケンス番号は、データの送信を指示するアプリケーションにおいて初回のデータ送信である場合には、「0〜255」でランダムな値が設定される。シーケンス番号は、初回の
データ送信以降は、データ送信の度に1つずつ加算(インクリメント)された値となる。次に、処理がOP2に進む。
【0045】
OP2では、プロセッサ101は、使用するMACアドレスが2バイトであるか否かを判定する。この判定は、例えば、データの送信を指示するアプリケーションの設定又はネットワーク100のシステム構成の設定により判定される。使用するMACアドレスが2バイトの短縮アドレスである場合には(OP2:Yes)、処理がOP5に進む。使用するMACアドレスが2バイトの短縮アドレスでない、すなわち、8バイトの拡張アドレスである場合には(OP2:No)、処理がOP3に進む。
【0046】
OP3では、プロセッサ101は、OP2において取得したシーケンス番号でACKフレームを作成した場合のFCS値を求める。具体的には、プロセッサ101は、ACKフレームのフレームコントロール(0100 0000 0000 0000)と、OP2において取得したシーケンス番号とで、IEEE802.15.4のCRC16−CCITTに基づきFCS値を求める。次に処理がOP4に進む。
【0047】
OP4では、プロセッサ101は、OP2おいて取得したシーケンス番号と、OP3で求めたFCS値とを対応付けて、管理テーブル21に登録する。次に処理がOP5に進む。
【0048】
OP5では、プロセッサ101は、OP2において取得したシーケンス番号を用い、フレームコントロールフィールドのACK要求フィールドにフラグを立てて、ACK要求データフレームを生成する。次に処理がOP6に進む。
【0049】
OP6では、プロセッサ101は、OP5において生成したACK要求データフレームを、ネットワークインタフェース107(アンテナ106)を通じて送信する。ACK要求データフレームを送信すると、図8に示されるフローチャートが終了する。OP1−OP6の処理は、フレーム送信処理部18に相当する。
【0050】
なお、ACK要求データフレームを送信すると、ACK受信端末は、再送制御を開始する。具体的には、再送制御では、ACK受信端末のプロセッサ101は、再送タイマを開始し、再送タイマ満了前にACKフレームを受信しない場合には、ACK要求データフレームを再送する。再送時には、ACK受信端末のプロセッサ101は、図8のフローチャートを実行するのではなく、バッファに保持されたACK要求データフレームを送信する。所定回数ACK要求データフレームを再送してもACKフレームを受信しない場合には、ACK受信端末のプロセッサ101は、データ送信の失敗を判定する。
【0051】
(2)ACK送信端末におけるACKフレームの送信処理
ACKフレームの送信処理は、ACK送信端末がACK要求データフレームを受信してから、このACK要求データフレームに対するACKフレームを送信するまでの処理である。ACK送信端末は、ACK要求データフレームを受信すると、このACK要求データフレームに対するACKフレームを生成する。さらに、ACK送信端末は、生成したACKフレームを符号化して送信する。
【0052】
上述のように、IEEE802.15.4では、2バイトの短縮アドレスと、8バイトの拡張アドレスとが用いられる。また、8バイトの拡張アドレスは、6バイトのMACアドレスの上位3バイトと下位3バイトとの間に「FFFE」(16進数表記)の2バイトの固定値を挿入することによって作成される。したがって、第1実施形態では、端末1は、MACアドレスを6バイトのまま管理することも可能である。ただし、6バイトのままでMACアドレスを管理する場合には、システム間で予め6バイトのままでMACアドレ
スを管理するという設定を行う。
【0053】
ACKフレームの符号化処理は、ネットワーク100内の端末1において管理されるMACアドレス長(2バイト、6バイト、8バイト)によって異なる。ネットワーク100内の端末1において、6バイトのMACアドレスを管理する場合を中心に、以下説明を行う。
【0054】
図9は、6バイト長のMACアドレスを管理する場合のACKフレームの符号化処理について説明するための図である。図9では、MACアドレス00:11:22:33:44:55(16進数表記)のACK受信端末からシーケンス番号100のACK要求データフレームを受信したACK送信端末におけるACKフレームの符号化処理の例を示す。
【0055】
ACK送信端末のACK符号化部15は、まず、ACK生成部12によって生成されたACKフレームの上位3バイト(フレームコントロールとシーケンス番号)とACK要求データフレームの送信元MACアドレスの上位3バイトとで排他的論理和の演算を行う。これによって、ACK符号化部15は、排他的論理和の演算値0100 0000 0001 0001 0100 0110を得る。この処理を符号化処理1とする。また、ACK生成部12によって生成されたACKフレームを、正規ACKフレームと称する。また、正規ACKフレームに含まれるFCS値を正規FCS値と称する。
【0056】
次に、ACK符号化部15は、符号化処理1で求めた排他的論理和の演算値(3バイト)に対してCRC16−CCITTに基づいてFCS値1011 0100 0001 1011を求め、ACKフレームを生成する。このACKフレーム(5バイト)は、上位3バイトに符号化処理1で求めた演算値と、下位2バイトに符号化処理1で求めた演算値に対するFCS値とを含む。このACKフレームを符号化ACKフレーム1と称する。
【0057】
次に、ACK符号化部15は、符号化ACKフレーム1(5バイト)と、ACK要求データフレームの送信元MACアドレスの下位3バイトと、バッファされた正規FCS値(2バイト)とで、上位ビットから排他的論理和の演算を行う。この2つ目の処理を符号化処理2とする。また、符号化処理2で求めた排他的論理和の演算値(5バイト)を、符号化ACKフレーム2と称する。ACK符号化部15は、符号化ACKフレーム2をACKフレームとして送信する。
【0058】
上述のように、第1実施形態では、MACアドレスが6バイトの場合には、ACKフレーム長(5バイト)よりも大きいため、MACアドレスを上位3バイトと下位3バイトに分割し、2回に分けてACKフレームの符号化を行う。このとき、ACK受信端末のMACアドレスを用いることによって、ACKフレームにACK受信端末固有の識別情報を付加することができる。
【0059】
各端末において8バイトの拡張アドレスでMACアドレスが管理される場合には、符号化処理2において、ACK符号化部15は、送信元MACアドレスの下位5バイトと、符号化ACKフレーム1と、正規FCS値と、で上位ビットから排他的論理和の演算を行う。この排他的論理和の演算値(5バイト)が符号化ACKフレーム2として求められる。符号化処理1については、MACアドレスが6バイトで管理される場合と同様である。
【0060】
2バイトの短縮アドレスが用いられる場合には、ACKフレーム長よりもMACアドレス長が短いため、正規ACKフレームとMACアドレスとの上位ビットからの排他的論理和の演算値が求められて、ACKフレームが符号化される。この符号化処理では、シーケンス番号は符号化されず、正規ACKフレームのシーケンス番号が維持されるため、MACアドレスが2バイトの短縮アドレスである場合には、これ以上の処理は行われない。
【0061】
図10は、ACK送信端末におけるACKフレームの送信処理のフローチャートの例である。図10に示されるフローチャートは、ACK送信端末がACK要求データフレームを受信すると開始される。ACK要求データフレームの受信は、フレームコントロールフィールドのACK要求フィールドにフラグが立っていることで判定可能である。また、図10に示されるフローチャートは、ACK送信端末のプロセッサ101が情報処理プログラム105pを実行することで行われる処理の一部である。
【0062】
OP11では、プロセッサ101は、受信したACK要求データフレームに対応するACKフレームを生成する。具体的には、プロセッサ101は、受信したACK要求データフレームに含まれるシーケンス番号を読み出し、このシーケンス番号を含むACKフレーム(図3参照)を生成する。このACKフレームが正規ACKフレームである。プロセッサ101は、正規ACKフレームをバッファに保持する。次に処理がOP12に進む。
【0063】
OP12では、プロセッサ101は、受信したACK要求データフレームの送信元アドレスが2バイトの短縮アドレスであるか否かを判定する。受信したACK要求データフレームの送信元アドレスが2バイトの短縮アドレスである場合には(OP12:Yes)、処理がOP13に進む。受信したACK要求データフレームの送信元アドレスが2バイトの短縮アドレスでない、すなわち、8バイトの拡張アドレスである場合には(OP12:No)、処理がOP14に進む。
【0064】
OP13では、プロセッサ101は、バッファに保持される正規ACKフレームと、ACK要求データフレームの送信元MACアドレス(2バイト)とを読み出し、これらの排他的論理和を求める。次に処理がOP19に進む。
【0065】
OP14では、プロセッサ101は、バッファに保持される正規ACKフレームの上位3バイトと、受信したACK要求データフレームの送信元MACアドレスの上位3バイトとを読み出し、これらの排他的論理和の演算値(3バイト)を求める(符号化処理1)。次に、処理がOP15に進む。
【0066】
OP15では、プロセッサ101は、OP14において求めた演算値に対するFCS値を求め、これらを含むACKフレームを生成する。このACKフレームが符号化ACKフレーム1である。プロセッサ101は、生成した符号化ACKフレーム1をバッファに保持する。次に処理がOP16に進む。
【0067】
OP16では、プロセッサ101は、ネットワーク100内の各端末において、管理するMACアドレスとして、8バイトの拡張アドレスを使用しているか否かを判定する。この判定は、ACK送信端末の設定によって判定される。管理するMACアドレスとして、8バイトの拡張アドレスを使用している場合には(OP16:Yes)、処理がOP18に進む。管理するMACアドレスとして、8バイトの拡張アドレスを使用していない、すなわち、6バイトのMACアドレスを使用している場合には(OP16:No)、処理がOP17に進む。
【0068】
OP17では、プロセッサ101は、符号化ACKフレーム1,受信したACK要求データフレームの送信元MACアドレス(6バイト)の下位3バイト,正規FCS値を読み出し、これらの上位ビットからの排他的論理和の演算値を求める。この演算値が、符号化ACKフレーム2である。次に処理がOP19に進む。
【0069】
OP18では、プロセッサ101は、符号化ACKフレーム1,受信したACK要求データフレームの送信元MACアドレス(8バイト)の下位5バイト,正規FCS値を読み
出し、これらの上位ビットからの排他的論理和の演算値を求める。この演算値が符号?kACKフレーム2である。次に処理がOP19に進む。
【0070】
OP19では、プロセッサ101は、OP13,OP17,又はOP18のいずれかにおいて求めた排他的論理和の演算値をACKフレームとして送信する。その後、図10に示されるフローチャートが終了する。なお、図10に示されるフローチャートが終了すると、バッファに保持された情報(正規FCS値,符号化ACKフレーム1等)は削除される。
【0071】
ACK要求データフレームの受信に係る処理は、フレーム受信処理部11に相当する。OP11に係る処理は、ACK生成部12に相当する。OP12−OP19に係る処理は、ACK符号化部15に相当する。
【0072】
(3)ACK受信端末におけるACKフレームの受信処理
ACK受信端末は、プリアンブルから、5バイト長のフレームの受信を検出する。この5バイト長のフレームが符号化されたACKフレームである。ACK受信端末は、符号化されたACKフレームを復号化し、自身が送信したACK要求データフレームに対するACKであるか否かを判定する。
【0073】
ACKフレームの復号化処理も、ネットワーク100内の端末1において管理されるMACアドレス長(2バイト、6バイト、8バイト)によって異なる。ネットワーク100内の端末1において、6バイトのMACアドレスを管理する場合を中心に、以下説明を行う。
【0074】
図11は、各端末1において6バイト長でMACアドレスを管理する場合のACKフレームの復号化処理について説明するための図である。図11は、図9に対応している。すなわち、図11の例のACK受信端末は、図9の例におけるACK要求データフレームの送信元端末であり、図11は、図9において生成された符号化ACKフレーム2を受信した場合のACKフレームの復号化処理の例を示す。
【0075】
したがって、図11におけるACK受信端末のMACアドレス(00:11:22:33:44:55、16進数表記)は、図9におけるACK要求データフレームの送信元端末のMACアドレスと一致する。また、図11におけるACK要求端末の管理テーブル21に登録されるシーケンス番号(100)とFCS値(0110 1100 1100 1010)とは、図9におけるACK要求データフレーム及び正規ACKフレームのシーケンス番号と正規FCS値とに一致する。
【0076】
ACK受信端末のACK復号化部13は、受信フレーム(5バイト)と、自身のMACアドレスの下位3バイトと、管理テーブル21に保持するFCS値(2バイト)とで、上位ビットから排他的論理和の演算を行う。この処理を復号化処理1と称する。ACK復号化部13は、復号化処理1によって求めた排他的論理和の演算値の上位3バイトに対するFCS値(2バイト)を求める。ACK復号化部13は、復号化処理1において求めた排他的論理和の演算値の上位3バイトに対するFCS値が受信フレームの下位2バイト(FCSフィールドに相当)の値と一致するか否かを判定する。
【0077】
図11に示される例では、ACK受信端末は、受信したフレーム(図9における符号化ACKフレーム2)の正当な受信者である。図9の符号化処理2において受信したフレーム(符号化ACKフレーム2)の生成に用いられた正規FCS値と、図11の復号化処理1において用いられたACK受信端末の管理テーブル21に保持されるFCS値とは、一致する。また、図9の符号化処理2において符号化ACKフレーム2の生成に用いられた
ACK要求データフレームの送信元MACアドレスの下位3バイトと、図11の復号化処理1において用いられたACK受信端末のMACアドレスの下位3バイトとは、一致する。したがって、図11の復号化処理1によって、図9の符号化処理2が打ち消されることになる。そのため、受信したフレームは、図9の符号化処理2が実行される前の状態、すなわち、符号化ACKフレーム1と同じ状態になる。また、図9の符号化ACKフレーム1と符号化ACKフレーム2の下位2バイト(FCS値)は同じである。そのため、図11において、復号化処理1において求められた演算値の上位3バイトに対するFCS値は、受信フレーム(符号化ACKフレーム2)の下位2バイト(FCSフィールドに相当)の値に一致する。一致しない場合には、ACK復号化部13は、受信フレームは自身が送信したACK要求データフレームの返信としてのACKフレームではないことを判定し、受信フレームを破棄する。
【0078】
次に、ACK復号化部13は、復号化処理1において求めた演算値の上位3バイトと、ACK受信端末のMACアドレスの上位3バイトとで排他的論理和の演算を行う。この処理を、復号化処理2とする。ACK復号化部13は、復号化処理2において求められた排他的論理和の演算値に対するFCS値を求める。ACK復号化部13は、復号化処理2において求められた排他的論理和の演算値とこれに対するFCS値とを組み合わせることによって、ACKフレームを復号化する。ACK復号化部13は、復号化されたACKフレームのシーケンス番号とFCS値とが、管理テーブル21に登録されているか否か、及び、復号化されたACKフレームのフレームコントロールがACKを示すビット列であるか否かを判定する。
【0079】
上述の通り、図11の復号化処理1において求められた演算値の上位3バイトと、図9の符号化処理1において求められた演算値とは一致する。また、図9の符号化処理1において用いられたACK要求データフレームの送信元MACアドレスの上位3バイトと、図11の復号化処理において用いられるACK受信端末のMACアドレスの上位3バイトとは一致する。したがって、図11の復号化処理2によって、図9の符号化処理1が打ち消され、受信フレームは、図9における正規ACKフレームと同じ状態になる。管理テーブル21には、ACK受信端末が送信したACK要求データフレームのシーケンス番号と、このシーケンス番号でACKフレームが生成された場合のFCS値、すなわち、正規ACKフレームのシーケンス値とFCS値とが登録されている。そのため、図11において、復号化処理1及び復号化処理2によって復号化されたACKフレームのシーケンス番号とFCS値とは、管理テーブル21に登録されていることになる。復号化されたACKフレームのシーケンス番号とFCS値とが、管理テーブル21に登録されていない場合には、ACK復号化部13は、受信フレームを破棄する。また、図11において、復号化されたACKフレームのフレームコントロールは、0100 0000 0000 0000であって、ACKを示すビット列である。このため、図11の例では、受信フレームのACKフレームへの復号化は成功し、復号化されたACKフレームは、処理される。復号化されたACKフレームのフレームコントロールが、0100 0000 0000 0000でない場合には、ACK復号化部13は、受信フレームは自身が送信したACK要求データフレームの返信としてのACKフレームではないと判定する。すなわち、ACK復号化部13は、受信フレームのACKフレームへの復号化は失敗したと判定し、復号化されたフレーム及び受信フレームを破棄する。
【0080】
上述のようにして、ACK受信端末は、ACK符号化処理とは逆の処理を行うことによって符号化されたACKフレームを復号化する。また、管理テーブル21には、送信したACK要求データフレームのシーケンス番号と、このシーケンス番号を用いてACKを生成した場合のFCS値とが登録されている。したがって、復号化されたACKフレームに含まれるシーケンス番号とFCS値とが管理テーブル21に登録されていない場合には、ACK復号化部13は、受信フレームが送信したACK要求データフレームに対応するA
CKフレームではないことを判定する。これによって、ACK受信端末は、ACKフレームの誤受信を防ぐことができる。
【0081】
各端末において8バイトの拡張アドレスでMACアドレスが管理される場合には、復号化処理1において、ACK復号化部13は、受信したフレームと、自身のMACアドレスの下位5バイトと、管理テーブル21に保持されるFCS値と、で上位ビットから排他的論理和の演算を行う。復号化処理1以降の処理については、上述のMACアドレスが6バイトで管理される場合と同様である。
【0082】
2バイトの短縮アドレスが用いられる場合には、受信した符号化されたACKフレームは、正規ACKフレームとACK要求データフレームの送信元端末のMACアドレス(2バイト)との排他的論理和の演算値である。そのため、ACK復号化部13は、受信したフレームとACK受信端末のMACアドレス(2バイト)とで上位ビットから排他的論理和の演算を行うことで、ACKフレームの復号化を行う。ACK復号化部13は、復号化されたACKフレームのフレームコントロールフィールドがACKを示すビット列になっているか否かを判定する。復号化されたACKフレームのフレームコントロールフィールドがACKを示すビット列になっている場合には、ACK復号化部13は、ACKフレームの復号化の成功を判定する。復号化されたACKフレームのフレームコントロールフィールドがACKを示すビット列になっていない場合には、ACK復号化部13は、ACKフレームの復号化の失敗を判定し、受信フレーム及び復号化されたACKフレームを破棄する。また、ACK要求データフレームの送信処理の際に、管理テーブル21にシーケンス番号とFCS値とを保持している場合には、ACK復号化部13は、復号化されたACKフレームのシーケンス番号とFCS値とが管理テーブル21に保持されているか否かについても判定する。
【0083】
図12は、ACK受信端末におけるACKフレームの受信処理のフローチャートの例である。図12に示されるフローチャートは、ACK受信端末が5バイト長のフレームを受信すると開始される。5バイト長のフレームの受信は、プリアンブルに含まれるフレーム長フィールドによって判定可能である。この5バイト長のフレームは、符号化されたACKフレームである。また、図12に示されるフローチャートは、ACK受信端末のプロセッサ101が情報処理プログラム105pを実行することで行われる処理の一部である。
【0084】
OP31では、プロセッサ101は、使用するMACアドレス(または管理するアドレス)が2バイト,6バイト,8バイトのいずれであるかを判定する。2バイトの短縮アドレスを使用する場合には、処理がOP34に進む。6バイトのアドレスで管理している場合には、処理がOP32に進む。8バイトの拡張アドレスで管理している場合には、処理がOP33に進む。
【0085】
OP32では、プロセッサ101は、自身のMACアドレス(6バイト)の下位3バイトと、管理テーブル21に保持されるFCS値とを読みだす。次に処理がOP35に進む。
【0086】
OP33では、プロセッサ101は、自身のMACアドレス(8バイト)の下位5バイトと、管理テーブル21に保持されるFCS値とを読みだす。次に処理がOP35に進む。
【0087】
OP34では、プロセッサ101は、自身のMACアドレス(2バイト)を読みだす。次に処理がOP35に進む。
【0088】
OP35では、プロセッサ101は、OP32,OP33,OP34のいずれかにおい
て読みだした値と受信フレームとで上位ビットから排他的論理和の演算を行う。使用するMACアドレスが2バイトである場合には、プロセッサ101は、自身のMACアドレスと受信フレームとで上位ビットから排他的論理和の演算を行う。6バイトのMACアドレスで管理する場合には、プロセッサ101は、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値と、受信フレームとで上位ビットから排他的論理和の演算を行う。8バイトのMACアドレスで管理する場合には、自身のMACアドレスの下位5バイトと、管理テーブル21に保持されるFCS値と、受信フレームとで上位ビットから排他的論理和の演算を行う。次に処理がOP36に進む。
【0089】
OP36では、プロセッサ101は、2バイトの短縮アドレスを使用しているか否かを判定する。2バイトの短縮アドレスを使用している場合には(OP36:Yes)、処理がOP39に進む。2バイトの短縮アドレスを使用していない、すなわち、6バイトのMACアドレスまたは8バイトのMACアドレスで管理している場合には(OP36:No)、処理がOP37に進む。
【0090】
OP37では、プロセッサ101は、OP35において取得した排他的論理和の演算値の上位3バイトに対するFCS値を求め、このFCS値と受信フレームの下位2バイトとが一致するか否かを判定する。OP35において取得した排他的論理和の演算値の上位3バイトに対するFCS値と、受信フレームの下位2バイトと、が一致しない場合には、FCSエラーと判定される。FCSエラーの場合には(OP37:Yes)、処理がOP41に進む。FCSエラーでない場合には(OP37:No)、処理がOP38に進む。
【0091】
OP38では、プロセッサ101は、OP35において求めた演算値の上位3バイトと自身のMACアドレスの上位3バイトとで排他的論理和の演算を行う。次に処理がOP39に進む。
【0092】
OP39では、MACアドレスが6バイト長又は8バイト長である場合には、プロセッサ101は、OP38で求めた演算値に対するFCS値を求め、復号化されたACKフレームを生成する。復号化されたACKフレームのシーケンス番号とFCS値とが対応付けられて管理テーブル21に登録されているか否かを判定する。また、プロセッサ101は、復号化されたACKのフレームコントロールが、ACKを示すビット列(0100 0000 0000 0000)であるか否かを判定する。復号化されたACKフレームのシーケンス番号とFCS値とが対応付けられて管理テーブル21に登録されており、且つ、復号化されたACKのフレームコントロールが、ACKを示すビット列である場合には(OP39:Yes)、処理がOP40に進む。復号化されたACKフレームのシーケンス番号とFCS値とが対応付けられて管理テーブル21に登録されていない、または、復号化されたACKのフレームコントロールがACKを示すビット列でない場合には(OP39:No)、処理がOP41に進む。OP39では、MACアドレスが2バイトの短縮アドレスである場合には、プロセッサ101は、復号化されたACKのフレームコントロールが、ACKを示すビット列であるか否かを判定する。復号化されたACKのフレームコントロールが、ACKを示すビット列である場合には(OP39:Yes)、処理がOP40に進む。復号化されたACKのフレームコントロールがACKを示すビット列でない場合には(OP39:No)、処理がOP41に進む。
【0093】
OP40では、プロセッサ101は、受信フレームが自身が送信したACK要求データフレームに対応するACKフレームであること、すなわち、ACKフレームの復号化の成功を判定し、この復号化されたACKフレームの処理を行う。具体的には、プロセッサ101は、管理テーブル21から該当するシーケンス番号とFCS値との対応付けを削除する。また、プロセッサ101は、再送処理を終了する。その後、図12に示されるフローチャートが終了する。
【0094】
OP41では、プロセッサ101は、受信フレームが自身が送信したACK要求データフレームに対応するACKフレームでない、すなわち、ACKフレームの復号化の失敗を判定し、受信したフレーム、又は、受信したフレームと復号化されたACKフレームを破棄する。その後、図12に示されるフローチャートが終了する。OP31−OP41の処理は、ACK復号化部13の処理に相当する。また、5バイト長のフレームの受信の検出は、フレーム受信処理部11の処理に相当する。
【0095】
(受信対象外のACKフレームの復号化処理の具体例)
図13,図14,図15,図16は、ACKフレームの復号化処理の失敗例を示す図である。図13,図14,図15,図16は、いずれも図9のACKフレームの符号化処理によって符号化されたACKフレームを、ACK要求データフレームの送信元の端末(ACK受信端末)とは異なる端末が受信した場合のACKフレームの復号化処理の例である。また、図13−図16のいずれの例の端末も、ACK要求データフレームを送信し、ACKフレームの返信を待っている状態において、図9のACK送信端末から送信された符号化されたACKフレームを受信することを想定する。なお、図13−図16では、ネットワーク100内の各端末が6バイトのMACアドレスを管理している場合の例が示される。以下、ACK受信端末とは、図9のACK送信端末が受信するACK要求データフレームの送信元の端末であり、図11の例のACK受信端末を指す。
【0096】
図13は、ACKフレームの復号化処理の例2であり、シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図13の端末のMACアドレスは、00:11:21:33:44:55(16進数表記)である。図13の端末のMACアドレスは、図11のACK受信端末のMACアドレスと上位3バイトは異なり、下位3バイトが一致する。また、図13の端末の管理テーブル21には、図11のACK受信端末と同じく、シーケンス番号100とシーケンス番号100でACKフレームを生成した場合のFCS値(0110 1100 1100
1010)との対応付けが保持されている。また、図13の端末の管理テーブル21のシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致する。
【0097】
図13の復号化処理1において求められる、受信フレームと、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は1011 0100 0001 1011となる。図13の復号化処理1で用いられる端末のMACアドレスの下位3バイトと、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトとは一致する。また、図13の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値と、図9の符号化処理2で用いられる正規FCS値とは一致する。そのため、復号化処理1によって、受信フレームは、図9における復号化フレーム1と同じ状態になり、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとは一致する。
【0098】
次に、図13の復号化処理2において求められる、復号化処理1の演算値とこの演算値に対するFCS値とを含む復号化されたACKフレームのシーケンス番号は103、FCS値は0110 1111 1101 1010となる。図13の復号化処理2で用いられる端末のMACアドレスの上位3バイトと、図9の符号化処理1で用いられるACK要求データフレームの送信元端末のMACアドレスの上位3バイトとは一致しない。そのため、図13における受信フレームは、シーケンス番号100のACKフレームが符号化されたものであるものの、図13の端末において復号化されるとシーケンス番号が103となり、符号化前と異なる番号になってしまう。したがって、図13において求められる復
号化されたACKフレームのシーケンス番号とFCS値とは、管理テーブル21に登録されるシーケンス番号とFCS値とに一致しない。結果、図13の例では、受信フレームのACKフレームの復号化が失敗し、受信フレーム及び復号化されたACKフレームは破棄される。
【0099】
図14は、ACKフレームの復号化処理の例3であり、シーケンス番号103のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図14の端末のMACアドレスは、00:11:21:33:44:55(16進数表記)である。図14の端末のMACアドレスは、図9のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは異なり、下位3バイトが一致する。また、図14の端末の管理テーブル21には、シーケンス番号103とシーケンス番号103でACKフレームを生成した場合のFCS値(0100 1111 1101 1010)との対応付けが保持されている。図14における管理テーブル21に保持されるシーケンス番号とFCS値とは、図11のACK受信端末における管理テーブル21に保持されるシーケンス番号とFCS値とに一致しない。また、図14における管理テーブル21に保持されるシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致しない。
【0100】
図14の復号化処理1において求められる、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は0111 1100 0111 0011となる。図14の復号化処理1で用いられる端末のMACアドレスの下位3バイトと、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトとは一致する。一方、図14の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値と、図9の符号化処理2で用いられる正規FCS値とは一致しない。そのため、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとは一致しない。結果、図14の例では、受信フレームのACKフレームの復号化が失敗し、受信フレームは破棄される。
【0101】
図15は、ACKフレームの復号化処理の例4であり、シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図15の端末のMACアドレスは、00:11:22:33:44:56(16進数表記)である。図15の端末のMACアドレスは、図9のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは一致し、下位3バイトは異なる。また、図15の端末の管理テーブル21には、シーケンス番号100とシーケンス番号100でACKフレームを生成した場合のFCS値(0110 1100 1100 1010)との対応付けが保持されている。図15における管理テーブル21に保持されるシーケンス番号とFCS値とは、図11のACK受信端末における管理テーブル21に保持されるシーケンス番号とFCS値とに一致する。また、図15における管理テーブル21に保持されるシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致する。
【0102】
図15の復号化処理1において求められる、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は0100 0000 0001 0001 0100 0101となる。図15の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値と、図9の符号化処理2で用いられる正規FCS値とは一致する。一方、図15の復号化処理1で用いられる端末のMACアドレスの下位3バイトと、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトとは異なる。そのため、復号化処理1によって、受信フレームは、図9における復号化フレーム1と同じ状
態にはならず、図15の端末における復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとは一致しない。結果、図15の例では、受信フレームのACKフレームの復号化が失敗し、受信フレームは破棄される。
【0103】
図16は、ACKフレームの復号化処理の例5であり、シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図16の端末のMACアドレスは、11:11:11:33:44:55(16進数表記)であり。図16の端末のMACアドレスは、図9のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは異なり、下位3バイトが一致する。また、図16の端末の管理テーブル21には、シーケンス番号100とシーケンス番号100でACKフレームを生成した場合のFCS値(0110 1100 1100 1010)との対応付けが保持されている。図15における管理テーブル21に保持されるシーケンス番号とFCS値とは、図11のACK受信端末における管理テーブル21に保持されるシーケンス番号とFCS値とに一致する。また、図16における管理テーブル21に保持されるシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致する。
【0104】
図16の復号化処理1において求められる、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は1011 0100 0001 1011となる。図16の復号化処理1で用いられる端末のMACアドレスの下位3バイトは、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトに一致する。また、図16の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値は、図9の符号化処理2で用いられる正規FCS値に一致する。そのため、復号化処理1によって、受信フレームは、図9における復号化フレーム1と同じ状態になり、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとが一致する。
【0105】
次に、図16の復号化処理2において求められる、復号化処理1の演算値と自身のMACアドレスの上位3バイトとの排他的論理和の演算値は0101 0001 0000 0000 0101 0111となる。図16の復号化処理2で用いられる端末のMACアドレスの上位3バイトと、図9の符号化処理1で用いられるACK要求データフレームの送信元端末のMACアドレスの上位3バイトとは一致しない。そのため、図16の端末における復号化処理1及び復号化処理2を経ると、符号化処理2の演算値の上位2バイトが、ACKのフレームコントロール(0100 0000 0000 0000)とは異なるビット列になってしまう。また、図16において受信したフレームは、シーケンス番号100のACKフレームが符号化されたものであるものの、図16の端末において復号化されるとシーケンス番号が87と異なる番号になってしまう。したがって、結果、図16の例では、受信フレームのACKフレームの復号化が失敗し、受信フレーム及び復号化されたACKフレームは破棄される。
【0106】
6バイトのMACアドレスは、上位3バイトがベンダを識別するための番号であり、下位3バイトが個体を識別するための番号である。そのため、6バイトのMACアドレス全体では、端末固有の値となり他の端末と一致することはないが、上位3バイト又は下位3バイトが他の端末と一致することはある。図13−図16に示される例のように、第1実施形態によれば、ACK要求データフレームの送信元端末と符号化されたACKフレームの受信端末とが異なる端末であって、MACアドレスの上位3バイトまたは下位3バイトが一致する場合でも、ACKフレームの誤受信を防ぐことができる。
【0107】
(FCS値を用いないACKフレームの符号化処理及び復号化処理)
以下、ACKフレームの符号化処理及び復号化処理において、FCS値を用いない場合
について説明する。
【0108】
図17は、FCS値を用いない場合のACKフレームの符号化処理の例を示す図である。図17では、端末は、6バイト長のMACアドレスを管理する。図17は、図9と同様に、MACアドレス00:11:22:33:44:55(16進数表記)のACK受信端末からシーケンス番号100のACK要求データフレームを受信したACK送信端末におけるACKフレームの符号化処理の例を示す。
【0109】
符号化処理1では、ACK送信端末のACK符号化部15は、正規ACKフレームとACK要求データフレームの送信元MACアドレスの上位3バイトとで上位ビットから排他的論理和の演算を行う。次に、ACK符号化部15は、符号化処理1で求めた排他的論理和の演算値(3バイト)に対してFCS値を求め、符号化ACKフレーム1を生成する。
【0110】
次に、符号化処理2では、ACK符号化部15は、符号化ACKフレーム1(5バイト)と、ACK要求データフレームの送信元MACアドレスの下位3バイトと、上位ビットから排他的論理和の演算を行う。ACK符号化部15は、符号化処理2の演算値である符号化ACKフレーム2をACKフレームとして送信する。
【0111】
図18は、図17において符号化されたACKフレームを受信した端末におけるFCS値を用いない場合の復号化処理の例を示す図である。図18では、図17におけるACK要求データフレームの送信端末である端末がACK受信端末として、図17において符号化されたACKフレームを受信する。したがって、図18のACK受信端末のMACアドレスは、00:11:22:33:44:55(16進数表記)であり、管理テーブル21にはシーケンス番号100が保持されている。なお、図18の例はACKフレームの符号化及び復号化にFCS値が用いられない場合の例であるため、管理テーブル21には、シーケンス番号のみが保持されている。
【0112】
ACK受信端末のACK復号化部13は、復号化処理1において、受信フレーム(5バイト)と、自身のMACアドレスの下位3バイトとで、上位ビットから排他的論理和の演算を行う。ACK復号化部13は、復号化処理1によって求めた排他的論理和の演算値の上位3バイトに対するFCS値(2バイト)を求める。ACK符号化部13は、復号化処理1によって求めた排他的論理和の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとが一致するか否かを判定する。図17のACK送信端末において、符号化処理2で用いられたMACアドレスの下位3バイトと、図18のACK受信端末において復号化処理1で用いられるMACアドレスの下位3バイトとは一致する。そのため、図18の復号化処理2によって、受信フレームは図17の符号化ACKフレーム1と同じ状態となり、受信フレームの下位2バイトと復号化処理1における演算値の上位3バイトに対するFCS値とは一致する。
【0113】
復号化処理2では、ACK復号化部13は、復号化処理1における演算値と自身のMACアドレスの上位3バイトとを上位から排他的論理和の演算を行う。図17のACK送信端末において、符号化処理1で用いられたMACアドレスの上位3バイトと、図18のACK受信端末において復号化処理2で用いられるMACアドレスの上位3バイトとは一致する。したがって、復号化処理2によって、受信フレームは図17の正規ACKフレームと同じ状態となり、得られる演算値はシーケンス番号100を示し、このシーケンス番号100は管理テーブル21に登録されている。したがって、図18の例では、ACK受信端末におけるACKフレームの復号化が成功する。
【0114】
ACKフレームの符号化処理及び復号化処理にFCS値が用いられない場合でも、図18に示されるように、端末は、自身が送信したACK要求データフレームに対する符号化
されたACKフレームを復号化することができ、受信することができる。しかしながら、ACKフレームの符号化処理及び復号化処理にFCS値が用いられない場合には、次の図19に示す例のように、ACKフレームの誤受信が発生する場合がある。
【0115】
図19は、図17において符号化されたACKフレームを受信する端末におけるFCS値を用いない場合の復号化処理の例を示す図である。図19では、図17におけるACK要求データフレームの送信端末とは異なる端末が、図17においてACK送信端末によって符号化されたACKフレームを受信する。図19の端末のMACアドレスは、00:11:21:33:44:55(16進数表記)である。図19の端末のMACアドレスは、図17のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは異なり、下位3バイトは一致する。図19の端末の管理テーブル21にはシーケンス番号103が登録されている。図19の端末の管理テーブル21に保持されるシーケンス番号103は、図17のACK要求データフレームに含まれるシーケンス番号100とは一致しない。なお、図19では、復号化処理にFCS値を用いないため、管理テーブル21には、シーケンス番号のみが保持されている。
【0116】
図19の端末は、復号化処理1において、受信フレームと自身のMACアドレスの下位3バイトとで上位ビットから排他的論理和の演算を行う。この復号化処理1の演算値の上位3バイトに対するFCS値は1011 0100 0001 1011となる。図19の符号化処理1において用いられる端末のMACアドレスの下位3バイトは、図17の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトに一致する。そのため、復号化処理1によって、受信フレームは図17の符号化ACKフレーム1と同じ状態になり、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとが一致する。
【0117】
次に、図19の端末は、復号化処理2において、復号化処理1の演算値と自身のMACアドレスの上位3バイトとで上位ビットから排他的論理和の演算を行う。この復号化処理2の演算値は0100 0000 0000 0000 0110 0111となる。図19の復号化処理2で用いられる端末のMACアドレスの上位3バイトと、図17の符号化処理1で用いられるACK要求データフレームの送信元端末のMACアドレスの上位3バイトとは一致しない。しかしながら、図19における復号化処理2の演算値はシーケンス番号103を示し、図19の端末の管理テーブル21に保持されているシーケンス番号と一致する。そのため、結果として、図19では、ACKフレームの復号化が成功し、図19の端末はこの受信フレームをACKフレームとして処理してしまい、ACKフレームの誤受信が発生してしまう。
【0118】
FCS値を用いずにACKフレームを符号化及び復号化する場合には、図19の例のように、本来受信すべきではないACKフレームを誤受信してしまう可能性がある。FCS値を用いてACKフレームの符号化及び復号化を行うことによって、図19のようなACKフレームの誤受信を回避することができる(図14参照)。
【0119】
<第1実施形態の作用効果>
第1実施形態では、ACKフレームを送信する際に、ACK送信端末は、ACKフレームの送信先となるACK要求データフレームの送信元端末のMACアドレスを用いて符号化を行う。これによって、ACK要求データフレームの送信元端末の情報を有しないACKフレームに該ACK要求データフレームの送信元端末の情報を付加することができる。また、ACK要求データフレームの送信元端末(ACK受信端末)がACK送信端末によって符号化されたACKフレームを受信し、自身のMACアドレスを用いて復号化が成功した際に、自身が受信すべきACKフレームであるか否かを判定することができる。ACKフレームの復号化が失敗した場合には、ACK受信端末は、受信した符号化されたAC
Kフレームが自身が受信すべきACKフレームではないことを判定し、受信した符号化されたACKフレームを破棄する。したがって、第1実施形態によれば、IEEE802.15.4のネットワークにおいて、ACKフレーム誤受信を防ぐことができる。
【0120】
また、6バイト長又は8バイト長のMACアドレスを用いる場合には、ACKフレームの送信先となるACK要求データフレームの送信元端末のMACアドレスと、FCS値とを用いて符号化を行う。これによって、ACKフレームの誤受信をより確実に回避することができる。
【0121】
また、符号化された後もACKフレーム長は5バイトのままであるので、効率を変えることなく、通信を行うことができる。
【0122】
<その他>
第1実施形態では、IEEE802.15.4のネットワークについて説明した。これに限定されることなく、第1実施形態において説明された情報処理装置は、端末固有の情報が含まれないACKを用いる通信システムに適用可能である。
【0123】
第1実施形態では、符号化処理及び復号化処理において、ACKフレーム,MACアドレスの全部(2バイト長)又は一部(6バイト長又は8バイト長),FCS値で排他的論理和の演算を行う際には、上位ビットから行った。ただし、これに限られず、符号化処理と復号化処理とで排他的論理和を行う箇所が一致していればよい。
【符号の説明】
【0124】
1 端末
11 フレーム受信処理部
12 ACK生成部
13 ACK復号化部
15 ACK符号化部
16 データ生成部
17 経路制御部
18 フレーム送信処理部
19 再送処理部
21 管理テーブル
【技術分野】
【0001】
本発明は、ACK応答の送信を行う情報処理装置に関する。
【背景技術】
【0002】
IEEE802.15.4は、PAN(Personal Area Network)と呼ばれる、IEE
Eが策定中の短距離無線ネットワーク規格である。IEEE802.15.4は、例えば、リモコンのような家電機器の制御やセンサーネットワークにおいて利用されている。IEEE802.15.4は、IEEE802.15.1を使用したブルートゥース(登録商標)等の近距離無線通信に比べると、伝送速度が低い。しかしながら、IEEE802.15.4は、1つのネットワークに多くのデバイスが参加できたり、煩雑な設定なしに機器の追加や削除が行えるアドホックネットワークに対応していたり、低消費電力であるといったメリットがある。
【0003】
図1は、IEEE802.15.4で規定されるフレームフォーマットを示す図である。IEEE802.15.4のフレームは、フレームコントロール,シーケンス番号,送信先PAN識別子,送信先アドレス,送信元PAN識別子,送信元アドレス,補助セキュリティヘッダ,フレームペイロード,FCS(Frame Check Sequence)のフィールドを含む。各フィールドのサイズは、図1に示される通りである。IEEE802.15.4では、2バイトの短縮アドレス、8バイトのIEEE拡長アドレスの2種類のMACアドレスがある。用いられるMACアドレスによって、送信先アドレスおよび送信元アドレスのフィールドの長さが変わる。そのため、2バイトの短縮アドレスを用いているのか、8バイトのIEEE拡張アドレスを用いているのかは、受信データフレームの送信元アドレスにより判定可能である。また、IEEE拡張アドレスは、IEEE802.3やIEEE802.11で用いられる6バイトのMACアドレスの上位3バイトと下位3バイトとの間に「FFEE」(16進数表記)の2バイトの固定値を挿入して作成される。
【0004】
また、フィールドの長さに0バイトが含まれているフィールドは、使用されない場合があるフィールドである。シーケンス番号は、IEEE802.15.4のネットワークに参加する各端末がデータフレームを送信する際に、各端末で設定され管理される番号である。
【0005】
図2は、IEEE802.15.4のフレームのフレームコントロールフィールドの各ビットの構成を示す図である。フレームコントロールフィールドは、2バイト、すなわち、16ビットで構成される。このうち、0−2ビット目はフレームタイプを示すフィールドである。フレームタイプには、例えば、ビーコン,データ,ACK,コマンド等がある。ACKフレームの場合には、このフレームタイプのフィールドの3ビットが「010」になる。3ビット目は、セキュリティの設定の有無を示すセキュリティフィールドである。4ビット目は、ペンディングデータの有無を示す。5ビット目は、ACKの返信の要求を示すACK要求フィールドである。ACKの返信を要求するデータフレームには、フレームコントロールのACK要求フィールドにフラグが立つ。以降、ACKの返信を要求するデータフレームを、ACK要求データフレームと称する。6ビット目は、フレームがPAN内部での通信であるのか、又は、複数のPANをまたぐ通信であるのかを示すPAN内部フィールドである。10−11ビット目は、受信アドレスの有無、および、受信アドレスが短縮アドレスであるが64ビットアドレスであるかを示す受信アドレスモードフィールドである。14−15ビット目は、送信アドレスの有無、および、送信アドレスが短縮アドレスであるが64ビットアドレスであるかを示す送信アドレスモードフィールドである。
【0006】
図3は、IEEE802.15.4におけるACKフレームのフォーマットを示す図である。IEEE802.15.4では、ACKフレームは、2バイトのフレームコントロールと、1バイトのシーケンス番号と、2バイトのFCSと、を含む合計5バイトの固定長のフレームである。ACKフレームの2バイトのフレームコントロールは、図2で説明されたように、「0100 0000 0000 0000」となる。
【0007】
ACKフレームには、送信元及び送信先のアドレスフィールド等の端末固有の情報を格納するフィールドもなく、また、このようなフィールドを付加することもできない。そのため、ACKの返信を必要とするデータを送信した端末は、返信されてきたACKフレームに含まれるシーケンス番号のみの参照により、送信したデータが送信先で正常に受信されたことを判断する。IEEE802.15.4では、端末がACKの返信を必要とするデータを受信すると、すぐにACKフレームを返信することが前提となっている。そのため、端末固有の情報がACKフレームに含まれていなくても、シーケンス番号の参照のみで、ACKの返信を必要とするデータを送信した端末は、送信したデータが送信先で正常に受信されたことを判断可能である。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−60850号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、日本において、950MHz帯においてIEEE802.15.4を使用する際には、ARIB STD−T96による制約を受ける。ARIB STD−T96は、950MHz帯を使用するテレメータ,テレコントロール,データ伝送用の無線設備に関する規格である。ARIB STD−T96では、ACKにもキャリアセンスが必須とされている。さらに、電波送出後100ms以上の休止時間を設けることも規定されている。そのため、端末がACKの返信が必要なデータを受信してからACKフレームを返信するまでに、10ms〜100ms程度の時間を要する可能性がある。
【0010】
ACKの返信を要するデータを送信した端末Aが、送信先の端末BからのACKの返信を待っている間に、他の端末Cに対するACKやデータの送信先の端末Bとは異なる端末Dから送信されたACKを受信する場合がある。このとき受信したACKのシーケンス番号と、端末Aが返信を待つACKに含まれるべきシーケンス番号とが同じである場合には、端末Bがデータを正常に受信したか否かにかかわらず、端末Aは端末Bが正常にデータを受信したと誤認識してしまうおそれがある。端末Aが誤認識してしまうと、端末Bに正常にデータが送信されず、再送が必要である場合でも、端末Aによる端末Bへのデータの再送が行われなくなってしまう。シーケンス番号が他の端末間の通信と重複することを、以降、シーケンス番号の衝突と称する。
【0011】
本発明の一態様は、端末固有の識別情報が含まれないACKフレームが使用されるネットワークにおいて、ACKフレームの誤受信を防ぐ情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の態様の一つは、情報処理装置である。この情報処理装置は、
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、
前記ACK要求フレームを送信する送信部と、
前記ACK要求フレームを受信した場合に、ACK要求フレームの送信元の端末固有の
識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成する生成部と、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化する符号化部と、
符号化されたACKフレームを受信する受信部と、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する復号化部と、
を備える。
【0013】
本発明の他の態様の一つは、上述した情報処理方法である。また、本発明の他の態様は、コンピュータを上記の情報処理装置として機能させる情報処理プログラム、及び当該情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体を含むことができる。コンピュータ等が読み取り可能な記録媒体には、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。コンピュータ等が読取可能な記録媒体には、例えば、CD(Compact Disc),DVD(Digital Versatile Disc)ディスク,ブルーレイディスク,USB(Universal Serial Bus)メモリ等の可搬型記録媒体,フラッシュメモリ等の半導体メモリ,ハードディスク等がある。
【発明の効果】
【0014】
開示の情報処理装置によれば、端末固有の情報が含まれないACKフレームが使用されるネットワークにおいて、ACKフレームの誤受信を防ぐことができる。
【図面の簡単な説明】
【0015】
【図1】IEEE802.15.4で規定されるフレームフォーマットを示す図である。
【図2】IEEE802.15.4のフレームのフレームコントロールフィールドの各ビットの構成を示す図である。
【図3】IEEE802.15.4におけるACKフレームのフォーマットを示す図である。
【図4】第1実施形態のネットワーク構成例を示す図である。
【図5】ネットワークにおける端末のハードウェア構成例を示す図である。
【図6】端末の機能ブロックの例を示す図である。
【図7】管理テーブルの一例を示す図である。
【図8】ACK受信端末におけるACK要求データフレームの送信処理のフローチャートの例である。
【図9】6バイト長のMACアドレスを管理する場合のACKフレームの符号化処理について説明するための図である。
【図10】ACK送信端末におけるACKフレームの送信処理のフローチャートの例である。
【図11】各端末1において6バイト長でMACアドレスを管理する場合のACKフレームの復号化処理について説明するための図である。
【図12】ACK受信端末におけるACKフレームの受信処理のフローチャートの例である。
【図13】シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図14】シーケンス番号103のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図15】シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図16】シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。
【図17】FCS値を用いない場合のACKフレームの符号化処理の例を示す図である。
【図18】図17において符号化されたACKフレームを受信した端末におけるFCS値を用いない場合の復号化処理の例を示す図である。
【図19】図17において符号化されたACKフレームを受信した端末におけるFCS値を用いない場合の復号化処理の例を示す図である。
【発明を実施するための形態】
【0016】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【0017】
<第1実施形態>
図4は、第1実施形態のネットワーク構成例を示す図である。第1実施形態のネットワーク100は、950MHz帯のIEEE802.15.4によるメッシュ型の無線ネットワークである。図4中の円は、携帯端末,固定端末,無線基地局(GW)等の情報処理装置を示す。
【0018】
IEEE802.15.4を用いるネットワーク100では、図3に示されるように、ACKフレームの送信先アドレス等の各情報処理装置固有の情報を格納するフィールドが備えられていないACKフレームが用いられる。そのため、第1実施形態では、情報処理装置は、ACKフレームを送信する際に、ACKフレームの送信先となる情報処理装置固有の識別情報とチェックサム値とを用いてACKフレームを符号化する。これによって、ACKフレームの送信先となる情報処理装置固有の識別情報をACKフレームに付加することができる。情報処置装置の固有の識別情報は、例えば、MACアドレスである。チェックサム値は、例えば、CRC(Cyclic Redundancy Check)値,FCS値等である。
【0019】
この符号化されたACKフレームを受信した情報処理装置は、自身の固有の識別情報と予め保持していたチェックサム値を用いて、符号化とは逆の順番の処理で復号化する。ACKフレームの復号化に成功した場合には、受信したACKフレームが自身に宛てて送信されたことが判明する。また、ACKフレームの復号化に失敗した場合には、受信したACKが自身に宛てて送信されたものではないことが判明する。これによって、IEEE802.15.4のネットワークにおける情報処理装置でも、他の情報処理装置宛てのACKフレームを受信し、受信したACKフレームのシーケンス番号と自身が受信を待っているACKフレームのシーケンス番号とが同じ場合でも、自身宛てのACKでないことが判定できる。
【0020】
(装置構成)
図5は、ネットワーク100における端末1のハードウェア構成例を示す図である。端末1は、専用又は汎用のコンピュータである。具体的には、端末1は、例えば、通信機能付きの電力量計や水道メータ,ガスメータ等の計量機(スマートメータ),通信機能付きの家庭電化製品等である。
【0021】
端末1は、プロセッサ101,主記憶装置102,入力装置103,出力装置104,補助記憶装置105,アンテナ106,ネットワークインタフェース107,媒体駆動装置110を備え、これらがバス109により互いに接続されているコンピュータである。
【0022】
入力装置103は、例えば、入力ボタン,キーボード,マウス等のポインティングデバイス,スキャナ等である。入力装置103から入力されたデータは、プロセッサ101に出力される。
【0023】
ネットワークインタフェース107は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース107は、有線のネットワーク、又は、アンテナ106を通じて無線のネットワークと接続する。ネットワークインタフェース107は、例えば、NIC(Network Interface Card),無線LAN(Local Area Network)カード等である。ネットワークインタフェース107で受信されたデータ等は、プロセッサ101に出力される。
【0024】
主記憶装置102は、プロセッサ101に、補助記憶装置105に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。主記憶装置102は、例えば、RAM(Random Access Memory)のような半導体メモリである。
【0025】
補助記憶装置105は、情報処理プログラム105p,各種処理のための様々なプログラム,各プログラムの実行に際してプロセッサ101が使用するデータ等を格納する。補助記憶装置105は、例えば、EPROM(Erasable Programmable ROM)、又はハード
ディスクドライブ(Hard Disc Drive)である。
【0026】
媒体駆動装置110は、リムーバルメディア、すなわち可搬記録媒体111を駆動し、可搬記録媒体111に記録されたデータを読み出す。リムーバルメディアは、例えば、USBフラッシュメモリ,CD,又はDVDのような記録媒体である。
【0027】
プロセッサ101は、例えば、CPU(Central Processing Unit)や、DSP(Digital Signal Processor)である。プロセッサ101は、補助記憶装置105に保持された
OSや様々なアプリケーションプログラムを主記憶装置102にロードして実行することによって、様々な処理を実行する。なお、端末1に備えられるプロセッサは1つに限られず、端末1は、複数のプロセッサを備え、複数のプロセッサ間で処理を分散して行ってもよい。
【0028】
出力装置104は、プロセッサ101の処理の結果を出力する。出力装置104は、ディスプレイ,プリンタ等を含む。
【0029】
端末1は、携帯可能な端末であっても、固定された端末であってもよい。また、ネットワーク100には、端末の他に、基地局も含まれる。基地局のハードウェア構成は、図5に示されるハードウェア構成から、入力装置103,出力装置104等が排除された構成となる。以降、端末間での通信を例に説明するが、端末と基地局間の通信でも同様である。
【0030】
図6は、端末1の機能ブロックの例を示す図である。端末1では、プロセッサ101が、情報処理プログラム105pを実行することによって、フレーム受信処理部11,ACK生成部12,ACK復号化部13,ACK符号化部15,データ生成部16,経路制御部17,フレーム送信処理部18,再送処理部19として処理を実行する。また、主記憶装置102の記憶領域には、プロセッサ101による情報処理プログラム105pの実行を通じて、管理テーブル21が生成される。なお、端末1に複数のプロセッサが備えられている場合には、各プロセッサが、情報処理装置105pを実行することによって、フレーム受信処理部11,ACK生成部12,ACK復号化部13,ACK符号化部15,データ生成部16,経路制御部17,フレーム送信処理部18,再送処理部19のうちの少
なくとも1つとして処理を実行する。
【0031】
フレーム受信処理部11は、ネットワークインタフェース107を通じて受信されたフレームのヘッダをチェックし、適切な処理部に振り分ける。また、例えば、フレーム受信処理部11は、受信フレームのACK要求フィールドにフラグが立っている場合には(図2参照)、受信フレームがACK要求データフレームであることを判定し、ACK生成部12に出力する。例えば、第1実施形態では、フレーム受信処理部11は、受信フレームのフレーム長が5バイト長である場合には、受信フレームがACKフレームであると判定し、ACK復号化部13に出力する。
【0032】
データ生成部16は、端末1に備えられるアプリケーションからの要求に応じて送信するデータ(フレームのペイロード部分)を生成する。経路制御部17は、データ生成部16によって生成されたデータのルーティングを行う。フレーム送信処理部18は、経路制御部17によってルーティングされたデータにフレームヘッダを付加してカプセル化して、ネットワークインタフェース107を通じて送信する。また、データ生成部16によって生成されたデータがACKを必要とするデータである場合には、フレーム送信処理部18は、フレームヘッダのACK要求フィールド(図2参照)にフラグを立てて、フレームをACK要求データフレームとして再送処理部19に出力する。このとき、フレーム送信処理部18は、送信するACK要求データフレームに含まれるシーケンス番号と、このシーケンス番号でACKフレームを生成した場合のFCS値とを管理テーブル21(後述)に保持する。
【0033】
ACK生成部12は、フレーム受信処理部11からACK要求データフレームを受信すると、このACK要求データフレームの返信となるACKフレームを生成する。ACK生成部12は、ACK要求データフレームからシーケンス番号を読み出し、このシーケンス番号を含めてACKフレームを生成する(図3参照)。ACK生成部12は、生成したA
CKフレームをACK符号化部15に出力する。
【0034】
ACK符号化部15は、ACK生成部12から受信したACKフレームを符号化する。このACKの符号化処理の詳細については、後述される。ACK符号化部15は、ネットワークインタフェース107(アンテナ106)を通じて符号化されたACKフレームを出力する。
【0035】
ACK復号化部13は、フレーム受信処理部11から符号化されたACKフレームを受信し、ACKフレームを復号化する。ACKフレーム復号化処理の詳細については、後述される。ACK復号化部13は、復号化したACKフレームを再送処理部19に出力する。
【0036】
再送処理部19は、フレームの再送に係る処理を行う。再送処理部19は、フレーム送信処理部18からACK要求データフレームを受信すると、端末1の主記憶装置102の記憶領域内のバッファにACK要求データフレームを保持する。再送処理部19は、このACK要求データフレームをネットワークインタフェース107を通じて送信するとともに、再送タイマを開始する。再送タイマは、ACK要求データフレームに対応するACKフレームの所定の受信待ち時間を規定したタイマである。再送タイマが満了すると、再送処理部19は、バッファに保持したACK要求データフレームを再送する。所定回数ACK要求データフレームを再送してもACKフレームを受信しない場合には、再送処理部19は、バッファに保持されたACK要求データフレームを削除し、アプリケーションに再送失敗を送信する。ACK復号化部13から復号化されたACKフレームを受信すると、再送タイマを停止し、受信したACKフレームに対応するバッファに保持されたACK要求データフレームを削除し、再送処理を終了する。
【0037】
管理テーブル21は、送信したACK要求データフレームに対応して受信するべきACKフレームのシーケンス番号とFCS値とを保持するテーブルである。詳細は、後述される。
【0038】
(動作例)
以下、ACKフレームを送信する端末をACK送信端末,ACKフレームを受信する端末をACK受信端末と称する。なお、ACK送信端末及びACK受信端末の装置構成は、図5、図6において示される端末1の装置構成と同様である。すなわち、図5及び図6に示される端末1は、ACK受信端末としても、ACK送信端末としても動作する。
【0039】
ACKの送受信に係る処理は、次の3つに分けられる。
(1)ACK受信端末におけるACK要求データフレームの送信処理
(2)ACK送信端末におけるACKフレームの送信処理
(3)ACK受信端末におけるACKフレームの受信処理
以下、これら3つの処理について、具体的に説明する。
【0040】
(1)ACK受信端末におけるACK要求データフレームの送信処理
上述の説明のように、ACK受信端末は、ACK要求データフレームを送信する際に、フレームコントロールのACK要求フィールドにフラグを立てて送信する。8バイトのIEEE拡張アドレス又は6バイトのアドレスが用いられる場合には、ACK受信端末は、ACK要求データフレームに含まれるシーケンス番号でACKフレームを生成した場合に生成されるFCS値を算出し、このシーケンス番号とFCS値とを対応付けて管理テーブル21に格納する。
【0041】
図7は、管理テーブル21の一例を示す図である。管理テーブル21は、ACK要求データフレームに含まれるシーケンス番号と、返信として受信すべきACKフレームのFCS値とが対応付けられて保持される。ACKフレームのフレームコントロールフィールドの値は、0100 0000 0000 0000の固定値である。また、図3に示されるように、ACKフレームは、フレームコントロール、シーケンス番号、FCSのフィールドしか持たない。そのため、シーケンス番号が決まれば、ACK受信端末は、ACK要求データフレームの返信として受信すべきACKフレームのFCS値を求めることができる。なお、IEEE802.15.4においてFCE値は、CRC16−CCITTに基づき生成されることが規定されている。
【0042】
2バイトの短縮アドレスが用いられる場合には、管理テーブル21に、ACK要求データフレームに含まれるシーケンス番号と、返信として受信すべきACKフレームのFCS値とは保持されない。ただし、これに限られず、2バイトの短縮アドレスが用いられる場合でも、管理テーブル21に、ACK要求データフレームに含まれるシーケンス番号と、返信として受信すべきACKフレームのFCS値とが保持されてもよい。
【0043】
図8は、ACK受信端末におけるACK要求データフレームの送信処理のフローチャートの例である。図8に示されるフローチャートは、アプリケーションからACKの返信を必要とするデータの送信が指示されると開始される。また、図8に示されるフローチャートは、ACK受信端末のプロセッサ101が情報処理プログラム105pを実行することで行われる処理の一部である。
【0044】
OP1では、プロセッサ101は、シーケンス番号を取得する。このとき取得されるシーケンス番号は、データの送信を指示するアプリケーションにおいて初回のデータ送信である場合には、「0〜255」でランダムな値が設定される。シーケンス番号は、初回の
データ送信以降は、データ送信の度に1つずつ加算(インクリメント)された値となる。次に、処理がOP2に進む。
【0045】
OP2では、プロセッサ101は、使用するMACアドレスが2バイトであるか否かを判定する。この判定は、例えば、データの送信を指示するアプリケーションの設定又はネットワーク100のシステム構成の設定により判定される。使用するMACアドレスが2バイトの短縮アドレスである場合には(OP2:Yes)、処理がOP5に進む。使用するMACアドレスが2バイトの短縮アドレスでない、すなわち、8バイトの拡張アドレスである場合には(OP2:No)、処理がOP3に進む。
【0046】
OP3では、プロセッサ101は、OP2において取得したシーケンス番号でACKフレームを作成した場合のFCS値を求める。具体的には、プロセッサ101は、ACKフレームのフレームコントロール(0100 0000 0000 0000)と、OP2において取得したシーケンス番号とで、IEEE802.15.4のCRC16−CCITTに基づきFCS値を求める。次に処理がOP4に進む。
【0047】
OP4では、プロセッサ101は、OP2おいて取得したシーケンス番号と、OP3で求めたFCS値とを対応付けて、管理テーブル21に登録する。次に処理がOP5に進む。
【0048】
OP5では、プロセッサ101は、OP2において取得したシーケンス番号を用い、フレームコントロールフィールドのACK要求フィールドにフラグを立てて、ACK要求データフレームを生成する。次に処理がOP6に進む。
【0049】
OP6では、プロセッサ101は、OP5において生成したACK要求データフレームを、ネットワークインタフェース107(アンテナ106)を通じて送信する。ACK要求データフレームを送信すると、図8に示されるフローチャートが終了する。OP1−OP6の処理は、フレーム送信処理部18に相当する。
【0050】
なお、ACK要求データフレームを送信すると、ACK受信端末は、再送制御を開始する。具体的には、再送制御では、ACK受信端末のプロセッサ101は、再送タイマを開始し、再送タイマ満了前にACKフレームを受信しない場合には、ACK要求データフレームを再送する。再送時には、ACK受信端末のプロセッサ101は、図8のフローチャートを実行するのではなく、バッファに保持されたACK要求データフレームを送信する。所定回数ACK要求データフレームを再送してもACKフレームを受信しない場合には、ACK受信端末のプロセッサ101は、データ送信の失敗を判定する。
【0051】
(2)ACK送信端末におけるACKフレームの送信処理
ACKフレームの送信処理は、ACK送信端末がACK要求データフレームを受信してから、このACK要求データフレームに対するACKフレームを送信するまでの処理である。ACK送信端末は、ACK要求データフレームを受信すると、このACK要求データフレームに対するACKフレームを生成する。さらに、ACK送信端末は、生成したACKフレームを符号化して送信する。
【0052】
上述のように、IEEE802.15.4では、2バイトの短縮アドレスと、8バイトの拡張アドレスとが用いられる。また、8バイトの拡張アドレスは、6バイトのMACアドレスの上位3バイトと下位3バイトとの間に「FFFE」(16進数表記)の2バイトの固定値を挿入することによって作成される。したがって、第1実施形態では、端末1は、MACアドレスを6バイトのまま管理することも可能である。ただし、6バイトのままでMACアドレスを管理する場合には、システム間で予め6バイトのままでMACアドレ
スを管理するという設定を行う。
【0053】
ACKフレームの符号化処理は、ネットワーク100内の端末1において管理されるMACアドレス長(2バイト、6バイト、8バイト)によって異なる。ネットワーク100内の端末1において、6バイトのMACアドレスを管理する場合を中心に、以下説明を行う。
【0054】
図9は、6バイト長のMACアドレスを管理する場合のACKフレームの符号化処理について説明するための図である。図9では、MACアドレス00:11:22:33:44:55(16進数表記)のACK受信端末からシーケンス番号100のACK要求データフレームを受信したACK送信端末におけるACKフレームの符号化処理の例を示す。
【0055】
ACK送信端末のACK符号化部15は、まず、ACK生成部12によって生成されたACKフレームの上位3バイト(フレームコントロールとシーケンス番号)とACK要求データフレームの送信元MACアドレスの上位3バイトとで排他的論理和の演算を行う。これによって、ACK符号化部15は、排他的論理和の演算値0100 0000 0001 0001 0100 0110を得る。この処理を符号化処理1とする。また、ACK生成部12によって生成されたACKフレームを、正規ACKフレームと称する。また、正規ACKフレームに含まれるFCS値を正規FCS値と称する。
【0056】
次に、ACK符号化部15は、符号化処理1で求めた排他的論理和の演算値(3バイト)に対してCRC16−CCITTに基づいてFCS値1011 0100 0001 1011を求め、ACKフレームを生成する。このACKフレーム(5バイト)は、上位3バイトに符号化処理1で求めた演算値と、下位2バイトに符号化処理1で求めた演算値に対するFCS値とを含む。このACKフレームを符号化ACKフレーム1と称する。
【0057】
次に、ACK符号化部15は、符号化ACKフレーム1(5バイト)と、ACK要求データフレームの送信元MACアドレスの下位3バイトと、バッファされた正規FCS値(2バイト)とで、上位ビットから排他的論理和の演算を行う。この2つ目の処理を符号化処理2とする。また、符号化処理2で求めた排他的論理和の演算値(5バイト)を、符号化ACKフレーム2と称する。ACK符号化部15は、符号化ACKフレーム2をACKフレームとして送信する。
【0058】
上述のように、第1実施形態では、MACアドレスが6バイトの場合には、ACKフレーム長(5バイト)よりも大きいため、MACアドレスを上位3バイトと下位3バイトに分割し、2回に分けてACKフレームの符号化を行う。このとき、ACK受信端末のMACアドレスを用いることによって、ACKフレームにACK受信端末固有の識別情報を付加することができる。
【0059】
各端末において8バイトの拡張アドレスでMACアドレスが管理される場合には、符号化処理2において、ACK符号化部15は、送信元MACアドレスの下位5バイトと、符号化ACKフレーム1と、正規FCS値と、で上位ビットから排他的論理和の演算を行う。この排他的論理和の演算値(5バイト)が符号化ACKフレーム2として求められる。符号化処理1については、MACアドレスが6バイトで管理される場合と同様である。
【0060】
2バイトの短縮アドレスが用いられる場合には、ACKフレーム長よりもMACアドレス長が短いため、正規ACKフレームとMACアドレスとの上位ビットからの排他的論理和の演算値が求められて、ACKフレームが符号化される。この符号化処理では、シーケンス番号は符号化されず、正規ACKフレームのシーケンス番号が維持されるため、MACアドレスが2バイトの短縮アドレスである場合には、これ以上の処理は行われない。
【0061】
図10は、ACK送信端末におけるACKフレームの送信処理のフローチャートの例である。図10に示されるフローチャートは、ACK送信端末がACK要求データフレームを受信すると開始される。ACK要求データフレームの受信は、フレームコントロールフィールドのACK要求フィールドにフラグが立っていることで判定可能である。また、図10に示されるフローチャートは、ACK送信端末のプロセッサ101が情報処理プログラム105pを実行することで行われる処理の一部である。
【0062】
OP11では、プロセッサ101は、受信したACK要求データフレームに対応するACKフレームを生成する。具体的には、プロセッサ101は、受信したACK要求データフレームに含まれるシーケンス番号を読み出し、このシーケンス番号を含むACKフレーム(図3参照)を生成する。このACKフレームが正規ACKフレームである。プロセッサ101は、正規ACKフレームをバッファに保持する。次に処理がOP12に進む。
【0063】
OP12では、プロセッサ101は、受信したACK要求データフレームの送信元アドレスが2バイトの短縮アドレスであるか否かを判定する。受信したACK要求データフレームの送信元アドレスが2バイトの短縮アドレスである場合には(OP12:Yes)、処理がOP13に進む。受信したACK要求データフレームの送信元アドレスが2バイトの短縮アドレスでない、すなわち、8バイトの拡張アドレスである場合には(OP12:No)、処理がOP14に進む。
【0064】
OP13では、プロセッサ101は、バッファに保持される正規ACKフレームと、ACK要求データフレームの送信元MACアドレス(2バイト)とを読み出し、これらの排他的論理和を求める。次に処理がOP19に進む。
【0065】
OP14では、プロセッサ101は、バッファに保持される正規ACKフレームの上位3バイトと、受信したACK要求データフレームの送信元MACアドレスの上位3バイトとを読み出し、これらの排他的論理和の演算値(3バイト)を求める(符号化処理1)。次に、処理がOP15に進む。
【0066】
OP15では、プロセッサ101は、OP14において求めた演算値に対するFCS値を求め、これらを含むACKフレームを生成する。このACKフレームが符号化ACKフレーム1である。プロセッサ101は、生成した符号化ACKフレーム1をバッファに保持する。次に処理がOP16に進む。
【0067】
OP16では、プロセッサ101は、ネットワーク100内の各端末において、管理するMACアドレスとして、8バイトの拡張アドレスを使用しているか否かを判定する。この判定は、ACK送信端末の設定によって判定される。管理するMACアドレスとして、8バイトの拡張アドレスを使用している場合には(OP16:Yes)、処理がOP18に進む。管理するMACアドレスとして、8バイトの拡張アドレスを使用していない、すなわち、6バイトのMACアドレスを使用している場合には(OP16:No)、処理がOP17に進む。
【0068】
OP17では、プロセッサ101は、符号化ACKフレーム1,受信したACK要求データフレームの送信元MACアドレス(6バイト)の下位3バイト,正規FCS値を読み出し、これらの上位ビットからの排他的論理和の演算値を求める。この演算値が、符号化ACKフレーム2である。次に処理がOP19に進む。
【0069】
OP18では、プロセッサ101は、符号化ACKフレーム1,受信したACK要求データフレームの送信元MACアドレス(8バイト)の下位5バイト,正規FCS値を読み
出し、これらの上位ビットからの排他的論理和の演算値を求める。この演算値が符号?kACKフレーム2である。次に処理がOP19に進む。
【0070】
OP19では、プロセッサ101は、OP13,OP17,又はOP18のいずれかにおいて求めた排他的論理和の演算値をACKフレームとして送信する。その後、図10に示されるフローチャートが終了する。なお、図10に示されるフローチャートが終了すると、バッファに保持された情報(正規FCS値,符号化ACKフレーム1等)は削除される。
【0071】
ACK要求データフレームの受信に係る処理は、フレーム受信処理部11に相当する。OP11に係る処理は、ACK生成部12に相当する。OP12−OP19に係る処理は、ACK符号化部15に相当する。
【0072】
(3)ACK受信端末におけるACKフレームの受信処理
ACK受信端末は、プリアンブルから、5バイト長のフレームの受信を検出する。この5バイト長のフレームが符号化されたACKフレームである。ACK受信端末は、符号化されたACKフレームを復号化し、自身が送信したACK要求データフレームに対するACKであるか否かを判定する。
【0073】
ACKフレームの復号化処理も、ネットワーク100内の端末1において管理されるMACアドレス長(2バイト、6バイト、8バイト)によって異なる。ネットワーク100内の端末1において、6バイトのMACアドレスを管理する場合を中心に、以下説明を行う。
【0074】
図11は、各端末1において6バイト長でMACアドレスを管理する場合のACKフレームの復号化処理について説明するための図である。図11は、図9に対応している。すなわち、図11の例のACK受信端末は、図9の例におけるACK要求データフレームの送信元端末であり、図11は、図9において生成された符号化ACKフレーム2を受信した場合のACKフレームの復号化処理の例を示す。
【0075】
したがって、図11におけるACK受信端末のMACアドレス(00:11:22:33:44:55、16進数表記)は、図9におけるACK要求データフレームの送信元端末のMACアドレスと一致する。また、図11におけるACK要求端末の管理テーブル21に登録されるシーケンス番号(100)とFCS値(0110 1100 1100 1010)とは、図9におけるACK要求データフレーム及び正規ACKフレームのシーケンス番号と正規FCS値とに一致する。
【0076】
ACK受信端末のACK復号化部13は、受信フレーム(5バイト)と、自身のMACアドレスの下位3バイトと、管理テーブル21に保持するFCS値(2バイト)とで、上位ビットから排他的論理和の演算を行う。この処理を復号化処理1と称する。ACK復号化部13は、復号化処理1によって求めた排他的論理和の演算値の上位3バイトに対するFCS値(2バイト)を求める。ACK復号化部13は、復号化処理1において求めた排他的論理和の演算値の上位3バイトに対するFCS値が受信フレームの下位2バイト(FCSフィールドに相当)の値と一致するか否かを判定する。
【0077】
図11に示される例では、ACK受信端末は、受信したフレーム(図9における符号化ACKフレーム2)の正当な受信者である。図9の符号化処理2において受信したフレーム(符号化ACKフレーム2)の生成に用いられた正規FCS値と、図11の復号化処理1において用いられたACK受信端末の管理テーブル21に保持されるFCS値とは、一致する。また、図9の符号化処理2において符号化ACKフレーム2の生成に用いられた
ACK要求データフレームの送信元MACアドレスの下位3バイトと、図11の復号化処理1において用いられたACK受信端末のMACアドレスの下位3バイトとは、一致する。したがって、図11の復号化処理1によって、図9の符号化処理2が打ち消されることになる。そのため、受信したフレームは、図9の符号化処理2が実行される前の状態、すなわち、符号化ACKフレーム1と同じ状態になる。また、図9の符号化ACKフレーム1と符号化ACKフレーム2の下位2バイト(FCS値)は同じである。そのため、図11において、復号化処理1において求められた演算値の上位3バイトに対するFCS値は、受信フレーム(符号化ACKフレーム2)の下位2バイト(FCSフィールドに相当)の値に一致する。一致しない場合には、ACK復号化部13は、受信フレームは自身が送信したACK要求データフレームの返信としてのACKフレームではないことを判定し、受信フレームを破棄する。
【0078】
次に、ACK復号化部13は、復号化処理1において求めた演算値の上位3バイトと、ACK受信端末のMACアドレスの上位3バイトとで排他的論理和の演算を行う。この処理を、復号化処理2とする。ACK復号化部13は、復号化処理2において求められた排他的論理和の演算値に対するFCS値を求める。ACK復号化部13は、復号化処理2において求められた排他的論理和の演算値とこれに対するFCS値とを組み合わせることによって、ACKフレームを復号化する。ACK復号化部13は、復号化されたACKフレームのシーケンス番号とFCS値とが、管理テーブル21に登録されているか否か、及び、復号化されたACKフレームのフレームコントロールがACKを示すビット列であるか否かを判定する。
【0079】
上述の通り、図11の復号化処理1において求められた演算値の上位3バイトと、図9の符号化処理1において求められた演算値とは一致する。また、図9の符号化処理1において用いられたACK要求データフレームの送信元MACアドレスの上位3バイトと、図11の復号化処理において用いられるACK受信端末のMACアドレスの上位3バイトとは一致する。したがって、図11の復号化処理2によって、図9の符号化処理1が打ち消され、受信フレームは、図9における正規ACKフレームと同じ状態になる。管理テーブル21には、ACK受信端末が送信したACK要求データフレームのシーケンス番号と、このシーケンス番号でACKフレームが生成された場合のFCS値、すなわち、正規ACKフレームのシーケンス値とFCS値とが登録されている。そのため、図11において、復号化処理1及び復号化処理2によって復号化されたACKフレームのシーケンス番号とFCS値とは、管理テーブル21に登録されていることになる。復号化されたACKフレームのシーケンス番号とFCS値とが、管理テーブル21に登録されていない場合には、ACK復号化部13は、受信フレームを破棄する。また、図11において、復号化されたACKフレームのフレームコントロールは、0100 0000 0000 0000であって、ACKを示すビット列である。このため、図11の例では、受信フレームのACKフレームへの復号化は成功し、復号化されたACKフレームは、処理される。復号化されたACKフレームのフレームコントロールが、0100 0000 0000 0000でない場合には、ACK復号化部13は、受信フレームは自身が送信したACK要求データフレームの返信としてのACKフレームではないと判定する。すなわち、ACK復号化部13は、受信フレームのACKフレームへの復号化は失敗したと判定し、復号化されたフレーム及び受信フレームを破棄する。
【0080】
上述のようにして、ACK受信端末は、ACK符号化処理とは逆の処理を行うことによって符号化されたACKフレームを復号化する。また、管理テーブル21には、送信したACK要求データフレームのシーケンス番号と、このシーケンス番号を用いてACKを生成した場合のFCS値とが登録されている。したがって、復号化されたACKフレームに含まれるシーケンス番号とFCS値とが管理テーブル21に登録されていない場合には、ACK復号化部13は、受信フレームが送信したACK要求データフレームに対応するA
CKフレームではないことを判定する。これによって、ACK受信端末は、ACKフレームの誤受信を防ぐことができる。
【0081】
各端末において8バイトの拡張アドレスでMACアドレスが管理される場合には、復号化処理1において、ACK復号化部13は、受信したフレームと、自身のMACアドレスの下位5バイトと、管理テーブル21に保持されるFCS値と、で上位ビットから排他的論理和の演算を行う。復号化処理1以降の処理については、上述のMACアドレスが6バイトで管理される場合と同様である。
【0082】
2バイトの短縮アドレスが用いられる場合には、受信した符号化されたACKフレームは、正規ACKフレームとACK要求データフレームの送信元端末のMACアドレス(2バイト)との排他的論理和の演算値である。そのため、ACK復号化部13は、受信したフレームとACK受信端末のMACアドレス(2バイト)とで上位ビットから排他的論理和の演算を行うことで、ACKフレームの復号化を行う。ACK復号化部13は、復号化されたACKフレームのフレームコントロールフィールドがACKを示すビット列になっているか否かを判定する。復号化されたACKフレームのフレームコントロールフィールドがACKを示すビット列になっている場合には、ACK復号化部13は、ACKフレームの復号化の成功を判定する。復号化されたACKフレームのフレームコントロールフィールドがACKを示すビット列になっていない場合には、ACK復号化部13は、ACKフレームの復号化の失敗を判定し、受信フレーム及び復号化されたACKフレームを破棄する。また、ACK要求データフレームの送信処理の際に、管理テーブル21にシーケンス番号とFCS値とを保持している場合には、ACK復号化部13は、復号化されたACKフレームのシーケンス番号とFCS値とが管理テーブル21に保持されているか否かについても判定する。
【0083】
図12は、ACK受信端末におけるACKフレームの受信処理のフローチャートの例である。図12に示されるフローチャートは、ACK受信端末が5バイト長のフレームを受信すると開始される。5バイト長のフレームの受信は、プリアンブルに含まれるフレーム長フィールドによって判定可能である。この5バイト長のフレームは、符号化されたACKフレームである。また、図12に示されるフローチャートは、ACK受信端末のプロセッサ101が情報処理プログラム105pを実行することで行われる処理の一部である。
【0084】
OP31では、プロセッサ101は、使用するMACアドレス(または管理するアドレス)が2バイト,6バイト,8バイトのいずれであるかを判定する。2バイトの短縮アドレスを使用する場合には、処理がOP34に進む。6バイトのアドレスで管理している場合には、処理がOP32に進む。8バイトの拡張アドレスで管理している場合には、処理がOP33に進む。
【0085】
OP32では、プロセッサ101は、自身のMACアドレス(6バイト)の下位3バイトと、管理テーブル21に保持されるFCS値とを読みだす。次に処理がOP35に進む。
【0086】
OP33では、プロセッサ101は、自身のMACアドレス(8バイト)の下位5バイトと、管理テーブル21に保持されるFCS値とを読みだす。次に処理がOP35に進む。
【0087】
OP34では、プロセッサ101は、自身のMACアドレス(2バイト)を読みだす。次に処理がOP35に進む。
【0088】
OP35では、プロセッサ101は、OP32,OP33,OP34のいずれかにおい
て読みだした値と受信フレームとで上位ビットから排他的論理和の演算を行う。使用するMACアドレスが2バイトである場合には、プロセッサ101は、自身のMACアドレスと受信フレームとで上位ビットから排他的論理和の演算を行う。6バイトのMACアドレスで管理する場合には、プロセッサ101は、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値と、受信フレームとで上位ビットから排他的論理和の演算を行う。8バイトのMACアドレスで管理する場合には、自身のMACアドレスの下位5バイトと、管理テーブル21に保持されるFCS値と、受信フレームとで上位ビットから排他的論理和の演算を行う。次に処理がOP36に進む。
【0089】
OP36では、プロセッサ101は、2バイトの短縮アドレスを使用しているか否かを判定する。2バイトの短縮アドレスを使用している場合には(OP36:Yes)、処理がOP39に進む。2バイトの短縮アドレスを使用していない、すなわち、6バイトのMACアドレスまたは8バイトのMACアドレスで管理している場合には(OP36:No)、処理がOP37に進む。
【0090】
OP37では、プロセッサ101は、OP35において取得した排他的論理和の演算値の上位3バイトに対するFCS値を求め、このFCS値と受信フレームの下位2バイトとが一致するか否かを判定する。OP35において取得した排他的論理和の演算値の上位3バイトに対するFCS値と、受信フレームの下位2バイトと、が一致しない場合には、FCSエラーと判定される。FCSエラーの場合には(OP37:Yes)、処理がOP41に進む。FCSエラーでない場合には(OP37:No)、処理がOP38に進む。
【0091】
OP38では、プロセッサ101は、OP35において求めた演算値の上位3バイトと自身のMACアドレスの上位3バイトとで排他的論理和の演算を行う。次に処理がOP39に進む。
【0092】
OP39では、MACアドレスが6バイト長又は8バイト長である場合には、プロセッサ101は、OP38で求めた演算値に対するFCS値を求め、復号化されたACKフレームを生成する。復号化されたACKフレームのシーケンス番号とFCS値とが対応付けられて管理テーブル21に登録されているか否かを判定する。また、プロセッサ101は、復号化されたACKのフレームコントロールが、ACKを示すビット列(0100 0000 0000 0000)であるか否かを判定する。復号化されたACKフレームのシーケンス番号とFCS値とが対応付けられて管理テーブル21に登録されており、且つ、復号化されたACKのフレームコントロールが、ACKを示すビット列である場合には(OP39:Yes)、処理がOP40に進む。復号化されたACKフレームのシーケンス番号とFCS値とが対応付けられて管理テーブル21に登録されていない、または、復号化されたACKのフレームコントロールがACKを示すビット列でない場合には(OP39:No)、処理がOP41に進む。OP39では、MACアドレスが2バイトの短縮アドレスである場合には、プロセッサ101は、復号化されたACKのフレームコントロールが、ACKを示すビット列であるか否かを判定する。復号化されたACKのフレームコントロールが、ACKを示すビット列である場合には(OP39:Yes)、処理がOP40に進む。復号化されたACKのフレームコントロールがACKを示すビット列でない場合には(OP39:No)、処理がOP41に進む。
【0093】
OP40では、プロセッサ101は、受信フレームが自身が送信したACK要求データフレームに対応するACKフレームであること、すなわち、ACKフレームの復号化の成功を判定し、この復号化されたACKフレームの処理を行う。具体的には、プロセッサ101は、管理テーブル21から該当するシーケンス番号とFCS値との対応付けを削除する。また、プロセッサ101は、再送処理を終了する。その後、図12に示されるフローチャートが終了する。
【0094】
OP41では、プロセッサ101は、受信フレームが自身が送信したACK要求データフレームに対応するACKフレームでない、すなわち、ACKフレームの復号化の失敗を判定し、受信したフレーム、又は、受信したフレームと復号化されたACKフレームを破棄する。その後、図12に示されるフローチャートが終了する。OP31−OP41の処理は、ACK復号化部13の処理に相当する。また、5バイト長のフレームの受信の検出は、フレーム受信処理部11の処理に相当する。
【0095】
(受信対象外のACKフレームの復号化処理の具体例)
図13,図14,図15,図16は、ACKフレームの復号化処理の失敗例を示す図である。図13,図14,図15,図16は、いずれも図9のACKフレームの符号化処理によって符号化されたACKフレームを、ACK要求データフレームの送信元の端末(ACK受信端末)とは異なる端末が受信した場合のACKフレームの復号化処理の例である。また、図13−図16のいずれの例の端末も、ACK要求データフレームを送信し、ACKフレームの返信を待っている状態において、図9のACK送信端末から送信された符号化されたACKフレームを受信することを想定する。なお、図13−図16では、ネットワーク100内の各端末が6バイトのMACアドレスを管理している場合の例が示される。以下、ACK受信端末とは、図9のACK送信端末が受信するACK要求データフレームの送信元の端末であり、図11の例のACK受信端末を指す。
【0096】
図13は、ACKフレームの復号化処理の例2であり、シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図13の端末のMACアドレスは、00:11:21:33:44:55(16進数表記)である。図13の端末のMACアドレスは、図11のACK受信端末のMACアドレスと上位3バイトは異なり、下位3バイトが一致する。また、図13の端末の管理テーブル21には、図11のACK受信端末と同じく、シーケンス番号100とシーケンス番号100でACKフレームを生成した場合のFCS値(0110 1100 1100
1010)との対応付けが保持されている。また、図13の端末の管理テーブル21のシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致する。
【0097】
図13の復号化処理1において求められる、受信フレームと、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は1011 0100 0001 1011となる。図13の復号化処理1で用いられる端末のMACアドレスの下位3バイトと、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトとは一致する。また、図13の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値と、図9の符号化処理2で用いられる正規FCS値とは一致する。そのため、復号化処理1によって、受信フレームは、図9における復号化フレーム1と同じ状態になり、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとは一致する。
【0098】
次に、図13の復号化処理2において求められる、復号化処理1の演算値とこの演算値に対するFCS値とを含む復号化されたACKフレームのシーケンス番号は103、FCS値は0110 1111 1101 1010となる。図13の復号化処理2で用いられる端末のMACアドレスの上位3バイトと、図9の符号化処理1で用いられるACK要求データフレームの送信元端末のMACアドレスの上位3バイトとは一致しない。そのため、図13における受信フレームは、シーケンス番号100のACKフレームが符号化されたものであるものの、図13の端末において復号化されるとシーケンス番号が103となり、符号化前と異なる番号になってしまう。したがって、図13において求められる復
号化されたACKフレームのシーケンス番号とFCS値とは、管理テーブル21に登録されるシーケンス番号とFCS値とに一致しない。結果、図13の例では、受信フレームのACKフレームの復号化が失敗し、受信フレーム及び復号化されたACKフレームは破棄される。
【0099】
図14は、ACKフレームの復号化処理の例3であり、シーケンス番号103のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図14の端末のMACアドレスは、00:11:21:33:44:55(16進数表記)である。図14の端末のMACアドレスは、図9のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは異なり、下位3バイトが一致する。また、図14の端末の管理テーブル21には、シーケンス番号103とシーケンス番号103でACKフレームを生成した場合のFCS値(0100 1111 1101 1010)との対応付けが保持されている。図14における管理テーブル21に保持されるシーケンス番号とFCS値とは、図11のACK受信端末における管理テーブル21に保持されるシーケンス番号とFCS値とに一致しない。また、図14における管理テーブル21に保持されるシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致しない。
【0100】
図14の復号化処理1において求められる、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は0111 1100 0111 0011となる。図14の復号化処理1で用いられる端末のMACアドレスの下位3バイトと、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトとは一致する。一方、図14の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値と、図9の符号化処理2で用いられる正規FCS値とは一致しない。そのため、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとは一致しない。結果、図14の例では、受信フレームのACKフレームの復号化が失敗し、受信フレームは破棄される。
【0101】
図15は、ACKフレームの復号化処理の例4であり、シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図15の端末のMACアドレスは、00:11:22:33:44:56(16進数表記)である。図15の端末のMACアドレスは、図9のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは一致し、下位3バイトは異なる。また、図15の端末の管理テーブル21には、シーケンス番号100とシーケンス番号100でACKフレームを生成した場合のFCS値(0110 1100 1100 1010)との対応付けが保持されている。図15における管理テーブル21に保持されるシーケンス番号とFCS値とは、図11のACK受信端末における管理テーブル21に保持されるシーケンス番号とFCS値とに一致する。また、図15における管理テーブル21に保持されるシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致する。
【0102】
図15の復号化処理1において求められる、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は0100 0000 0001 0001 0100 0101となる。図15の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値と、図9の符号化処理2で用いられる正規FCS値とは一致する。一方、図15の復号化処理1で用いられる端末のMACアドレスの下位3バイトと、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトとは異なる。そのため、復号化処理1によって、受信フレームは、図9における復号化フレーム1と同じ状
態にはならず、図15の端末における復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとは一致しない。結果、図15の例では、受信フレームのACKフレームの復号化が失敗し、受信フレームは破棄される。
【0103】
図16は、ACKフレームの復号化処理の例5であり、シーケンス番号100のACK要求データフレームを送信した端末におけるACKフレームの復号化処理の例を示す図である。図16の端末のMACアドレスは、11:11:11:33:44:55(16進数表記)であり。図16の端末のMACアドレスは、図9のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは異なり、下位3バイトが一致する。また、図16の端末の管理テーブル21には、シーケンス番号100とシーケンス番号100でACKフレームを生成した場合のFCS値(0110 1100 1100 1010)との対応付けが保持されている。図15における管理テーブル21に保持されるシーケンス番号とFCS値とは、図11のACK受信端末における管理テーブル21に保持されるシーケンス番号とFCS値とに一致する。また、図16における管理テーブル21に保持されるシーケンス番号とFCS値とは、図9における正規フレームのシーケンス番号と正規FCS値とにも一致する。
【0104】
図16の復号化処理1において求められる、自身のMACアドレスの下位3バイトと、管理テーブル21に保持されるFCS値との排他的論理和の演算値の上位3バイトに対するFCS値は1011 0100 0001 1011となる。図16の復号化処理1で用いられる端末のMACアドレスの下位3バイトは、図9の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトに一致する。また、図16の復号化処理1で用いられる端末の管理テーブル21に保持されるFCS値は、図9の符号化処理2で用いられる正規FCS値に一致する。そのため、復号化処理1によって、受信フレームは、図9における復号化フレーム1と同じ状態になり、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとが一致する。
【0105】
次に、図16の復号化処理2において求められる、復号化処理1の演算値と自身のMACアドレスの上位3バイトとの排他的論理和の演算値は0101 0001 0000 0000 0101 0111となる。図16の復号化処理2で用いられる端末のMACアドレスの上位3バイトと、図9の符号化処理1で用いられるACK要求データフレームの送信元端末のMACアドレスの上位3バイトとは一致しない。そのため、図16の端末における復号化処理1及び復号化処理2を経ると、符号化処理2の演算値の上位2バイトが、ACKのフレームコントロール(0100 0000 0000 0000)とは異なるビット列になってしまう。また、図16において受信したフレームは、シーケンス番号100のACKフレームが符号化されたものであるものの、図16の端末において復号化されるとシーケンス番号が87と異なる番号になってしまう。したがって、結果、図16の例では、受信フレームのACKフレームの復号化が失敗し、受信フレーム及び復号化されたACKフレームは破棄される。
【0106】
6バイトのMACアドレスは、上位3バイトがベンダを識別するための番号であり、下位3バイトが個体を識別するための番号である。そのため、6バイトのMACアドレス全体では、端末固有の値となり他の端末と一致することはないが、上位3バイト又は下位3バイトが他の端末と一致することはある。図13−図16に示される例のように、第1実施形態によれば、ACK要求データフレームの送信元端末と符号化されたACKフレームの受信端末とが異なる端末であって、MACアドレスの上位3バイトまたは下位3バイトが一致する場合でも、ACKフレームの誤受信を防ぐことができる。
【0107】
(FCS値を用いないACKフレームの符号化処理及び復号化処理)
以下、ACKフレームの符号化処理及び復号化処理において、FCS値を用いない場合
について説明する。
【0108】
図17は、FCS値を用いない場合のACKフレームの符号化処理の例を示す図である。図17では、端末は、6バイト長のMACアドレスを管理する。図17は、図9と同様に、MACアドレス00:11:22:33:44:55(16進数表記)のACK受信端末からシーケンス番号100のACK要求データフレームを受信したACK送信端末におけるACKフレームの符号化処理の例を示す。
【0109】
符号化処理1では、ACK送信端末のACK符号化部15は、正規ACKフレームとACK要求データフレームの送信元MACアドレスの上位3バイトとで上位ビットから排他的論理和の演算を行う。次に、ACK符号化部15は、符号化処理1で求めた排他的論理和の演算値(3バイト)に対してFCS値を求め、符号化ACKフレーム1を生成する。
【0110】
次に、符号化処理2では、ACK符号化部15は、符号化ACKフレーム1(5バイト)と、ACK要求データフレームの送信元MACアドレスの下位3バイトと、上位ビットから排他的論理和の演算を行う。ACK符号化部15は、符号化処理2の演算値である符号化ACKフレーム2をACKフレームとして送信する。
【0111】
図18は、図17において符号化されたACKフレームを受信した端末におけるFCS値を用いない場合の復号化処理の例を示す図である。図18では、図17におけるACK要求データフレームの送信端末である端末がACK受信端末として、図17において符号化されたACKフレームを受信する。したがって、図18のACK受信端末のMACアドレスは、00:11:22:33:44:55(16進数表記)であり、管理テーブル21にはシーケンス番号100が保持されている。なお、図18の例はACKフレームの符号化及び復号化にFCS値が用いられない場合の例であるため、管理テーブル21には、シーケンス番号のみが保持されている。
【0112】
ACK受信端末のACK復号化部13は、復号化処理1において、受信フレーム(5バイト)と、自身のMACアドレスの下位3バイトとで、上位ビットから排他的論理和の演算を行う。ACK復号化部13は、復号化処理1によって求めた排他的論理和の演算値の上位3バイトに対するFCS値(2バイト)を求める。ACK符号化部13は、復号化処理1によって求めた排他的論理和の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとが一致するか否かを判定する。図17のACK送信端末において、符号化処理2で用いられたMACアドレスの下位3バイトと、図18のACK受信端末において復号化処理1で用いられるMACアドレスの下位3バイトとは一致する。そのため、図18の復号化処理2によって、受信フレームは図17の符号化ACKフレーム1と同じ状態となり、受信フレームの下位2バイトと復号化処理1における演算値の上位3バイトに対するFCS値とは一致する。
【0113】
復号化処理2では、ACK復号化部13は、復号化処理1における演算値と自身のMACアドレスの上位3バイトとを上位から排他的論理和の演算を行う。図17のACK送信端末において、符号化処理1で用いられたMACアドレスの上位3バイトと、図18のACK受信端末において復号化処理2で用いられるMACアドレスの上位3バイトとは一致する。したがって、復号化処理2によって、受信フレームは図17の正規ACKフレームと同じ状態となり、得られる演算値はシーケンス番号100を示し、このシーケンス番号100は管理テーブル21に登録されている。したがって、図18の例では、ACK受信端末におけるACKフレームの復号化が成功する。
【0114】
ACKフレームの符号化処理及び復号化処理にFCS値が用いられない場合でも、図18に示されるように、端末は、自身が送信したACK要求データフレームに対する符号化
されたACKフレームを復号化することができ、受信することができる。しかしながら、ACKフレームの符号化処理及び復号化処理にFCS値が用いられない場合には、次の図19に示す例のように、ACKフレームの誤受信が発生する場合がある。
【0115】
図19は、図17において符号化されたACKフレームを受信する端末におけるFCS値を用いない場合の復号化処理の例を示す図である。図19では、図17におけるACK要求データフレームの送信端末とは異なる端末が、図17においてACK送信端末によって符号化されたACKフレームを受信する。図19の端末のMACアドレスは、00:11:21:33:44:55(16進数表記)である。図19の端末のMACアドレスは、図17のACK要求データフレームの送信元端末のMACアドレスと上位3バイトは異なり、下位3バイトは一致する。図19の端末の管理テーブル21にはシーケンス番号103が登録されている。図19の端末の管理テーブル21に保持されるシーケンス番号103は、図17のACK要求データフレームに含まれるシーケンス番号100とは一致しない。なお、図19では、復号化処理にFCS値を用いないため、管理テーブル21には、シーケンス番号のみが保持されている。
【0116】
図19の端末は、復号化処理1において、受信フレームと自身のMACアドレスの下位3バイトとで上位ビットから排他的論理和の演算を行う。この復号化処理1の演算値の上位3バイトに対するFCS値は1011 0100 0001 1011となる。図19の符号化処理1において用いられる端末のMACアドレスの下位3バイトは、図17の符号化処理2で用いられるACK要求データフレームの送信元端末のMACアドレスの下位3バイトに一致する。そのため、復号化処理1によって、受信フレームは図17の符号化ACKフレーム1と同じ状態になり、復号化処理1の演算値の上位3バイトに対するFCS値と受信フレームの下位2バイトとが一致する。
【0117】
次に、図19の端末は、復号化処理2において、復号化処理1の演算値と自身のMACアドレスの上位3バイトとで上位ビットから排他的論理和の演算を行う。この復号化処理2の演算値は0100 0000 0000 0000 0110 0111となる。図19の復号化処理2で用いられる端末のMACアドレスの上位3バイトと、図17の符号化処理1で用いられるACK要求データフレームの送信元端末のMACアドレスの上位3バイトとは一致しない。しかしながら、図19における復号化処理2の演算値はシーケンス番号103を示し、図19の端末の管理テーブル21に保持されているシーケンス番号と一致する。そのため、結果として、図19では、ACKフレームの復号化が成功し、図19の端末はこの受信フレームをACKフレームとして処理してしまい、ACKフレームの誤受信が発生してしまう。
【0118】
FCS値を用いずにACKフレームを符号化及び復号化する場合には、図19の例のように、本来受信すべきではないACKフレームを誤受信してしまう可能性がある。FCS値を用いてACKフレームの符号化及び復号化を行うことによって、図19のようなACKフレームの誤受信を回避することができる(図14参照)。
【0119】
<第1実施形態の作用効果>
第1実施形態では、ACKフレームを送信する際に、ACK送信端末は、ACKフレームの送信先となるACK要求データフレームの送信元端末のMACアドレスを用いて符号化を行う。これによって、ACK要求データフレームの送信元端末の情報を有しないACKフレームに該ACK要求データフレームの送信元端末の情報を付加することができる。また、ACK要求データフレームの送信元端末(ACK受信端末)がACK送信端末によって符号化されたACKフレームを受信し、自身のMACアドレスを用いて復号化が成功した際に、自身が受信すべきACKフレームであるか否かを判定することができる。ACKフレームの復号化が失敗した場合には、ACK受信端末は、受信した符号化されたAC
Kフレームが自身が受信すべきACKフレームではないことを判定し、受信した符号化されたACKフレームを破棄する。したがって、第1実施形態によれば、IEEE802.15.4のネットワークにおいて、ACKフレーム誤受信を防ぐことができる。
【0120】
また、6バイト長又は8バイト長のMACアドレスを用いる場合には、ACKフレームの送信先となるACK要求データフレームの送信元端末のMACアドレスと、FCS値とを用いて符号化を行う。これによって、ACKフレームの誤受信をより確実に回避することができる。
【0121】
また、符号化された後もACKフレーム長は5バイトのままであるので、効率を変えることなく、通信を行うことができる。
【0122】
<その他>
第1実施形態では、IEEE802.15.4のネットワークについて説明した。これに限定されることなく、第1実施形態において説明された情報処理装置は、端末固有の情報が含まれないACKを用いる通信システムに適用可能である。
【0123】
第1実施形態では、符号化処理及び復号化処理において、ACKフレーム,MACアドレスの全部(2バイト長)又は一部(6バイト長又は8バイト長),FCS値で排他的論理和の演算を行う際には、上位ビットから行った。ただし、これに限られず、符号化処理と復号化処理とで排他的論理和を行う箇所が一致していればよい。
【符号の説明】
【0124】
1 端末
11 フレーム受信処理部
12 ACK生成部
13 ACK復号化部
15 ACK符号化部
16 データ生成部
17 経路制御部
18 フレーム送信処理部
19 再送処理部
21 管理テーブル
【特許請求の範囲】
【請求項1】
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、
前記ACK要求フレームを送信する送信部と、
前記ACK要求フレームを受信した場合に、ACK要求フレームの送信元の端末固有の識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成する生成部と、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化する符号化部と、
符号化されたACKフレームを受信する受信部と、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する復号化部と、
を備える情報処理装置。
【請求項2】
前記符号化部は、前記ACK要求フレームの送信元の端末固有の識別情報が前記ACKフレーム長よりも長い場合に、前記生成部によって生成されたACKフレームと、前記ACK要求フレームの送信元の端末固有の識別情報の一部と、前記ACK要求フレームの送信元の端末固有の識別情報の他の一部と、前記生成部によって生成されるACKフレームに含まれるチェックサムと、の排他的論理和の値を求めることによって前記ACKフレームを符号化する
請求項1に記載の情報処理装置。
【請求項3】
前記ACK要求フレームの送信元の端末固有の識別情報が前記ACKフレーム長よりも長い場合に、
前記記憶部は、前記ACK要求フレームのシーケンス番号と、該シーケンス番号でACKフレームを生成した場合のチェックサム値とを保持し、
前記復号化部は、前記受信部によって受信された符号化されたACKフレームと、前記自身の端末固有の識別情報の一部と、前記自身の端末固有の識別情報の他の一部と、前記記憶部に保持されるチェックサム値と、の排他的論理和の値を求めることによって前記符号化されたACKフレームを復号化する
請求項2に記載の情報処理装置。
【請求項4】
前記復号化部は、前記受信部によって受信された符号化されたACKフレームと、前記自身の端末固有の識別情報の前記一部と、前記記憶部に保持されるチェックサム値と、の排他的論理和の値に対するチェックサム値を求め、該チェックサム値が前記符号化されたフレームのチェックサム値に一致しない場合には、前記符号化されたACKフレームを破棄し、該チェックサム値が前記符号化されたフレームのチェックサム値に一致する場合には、前記排他的論理和の値と前記自身の固有の識別情報の前記他の一部との排他的論理和の値と該排他的論理和の値に対するチェックサム値を求めて前記符号化されたACKフレームを復号し、前記復号化されたACKフレームのシーケンス番号とFCS値との対応付けが前記記憶部に保持されていない場合には、前記復号化されたACKフレームを破棄する
請求項3に記載の情報処理装置。
【請求項5】
ACKの送信を要求するACK要求フレームを受信する受信部と、
前記ACK要求フレームを受信した場合に、前記ACK要求フレームの送信元の端末固有の識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成する生成部と、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化する符号化部と、
を備える情報処理装置。
【請求項6】
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、
前記ACK要求フレームを送信する送信部と、
符号化されたACKフレームを受信する受信部と、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する復号化部と、
を備える情報処理装置。
【請求項7】
情報処理装置が、
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部に保持し、
前記ACK要求フレームを送信し、
前記ACK要求フレームを受信した場合に、前記ACK要求フレームの送信元の端末固有の識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成し、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化し、
符号化されたACKフレームを受信し、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する、
情報処理方法。
【請求項1】
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、
前記ACK要求フレームを送信する送信部と、
前記ACK要求フレームを受信した場合に、ACK要求フレームの送信元の端末固有の識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成する生成部と、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化する符号化部と、
符号化されたACKフレームを受信する受信部と、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する復号化部と、
を備える情報処理装置。
【請求項2】
前記符号化部は、前記ACK要求フレームの送信元の端末固有の識別情報が前記ACKフレーム長よりも長い場合に、前記生成部によって生成されたACKフレームと、前記ACK要求フレームの送信元の端末固有の識別情報の一部と、前記ACK要求フレームの送信元の端末固有の識別情報の他の一部と、前記生成部によって生成されるACKフレームに含まれるチェックサムと、の排他的論理和の値を求めることによって前記ACKフレームを符号化する
請求項1に記載の情報処理装置。
【請求項3】
前記ACK要求フレームの送信元の端末固有の識別情報が前記ACKフレーム長よりも長い場合に、
前記記憶部は、前記ACK要求フレームのシーケンス番号と、該シーケンス番号でACKフレームを生成した場合のチェックサム値とを保持し、
前記復号化部は、前記受信部によって受信された符号化されたACKフレームと、前記自身の端末固有の識別情報の一部と、前記自身の端末固有の識別情報の他の一部と、前記記憶部に保持されるチェックサム値と、の排他的論理和の値を求めることによって前記符号化されたACKフレームを復号化する
請求項2に記載の情報処理装置。
【請求項4】
前記復号化部は、前記受信部によって受信された符号化されたACKフレームと、前記自身の端末固有の識別情報の前記一部と、前記記憶部に保持されるチェックサム値と、の排他的論理和の値に対するチェックサム値を求め、該チェックサム値が前記符号化されたフレームのチェックサム値に一致しない場合には、前記符号化されたACKフレームを破棄し、該チェックサム値が前記符号化されたフレームのチェックサム値に一致する場合には、前記排他的論理和の値と前記自身の固有の識別情報の前記他の一部との排他的論理和の値と該排他的論理和の値に対するチェックサム値を求めて前記符号化されたACKフレームを復号し、前記復号化されたACKフレームのシーケンス番号とFCS値との対応付けが前記記憶部に保持されていない場合には、前記復号化されたACKフレームを破棄する
請求項3に記載の情報処理装置。
【請求項5】
ACKの送信を要求するACK要求フレームを受信する受信部と、
前記ACK要求フレームを受信した場合に、前記ACK要求フレームの送信元の端末固有の識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成する生成部と、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化する符号化部と、
を備える情報処理装置。
【請求項6】
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部と、
前記ACK要求フレームを送信する送信部と、
符号化されたACKフレームを受信する受信部と、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する復号化部と、
を備える情報処理装置。
【請求項7】
情報処理装置が、
ACKの送信を要求するACK要求フレームのシーケンス番号を保持する記憶部に保持し、
前記ACK要求フレームを送信し、
前記ACK要求フレームを受信した場合に、前記ACK要求フレームの送信元の端末固有の識別情報を含まず、前記ACK要求フレームに含まれるシーケンス番号を含むACKフレームを生成し、
前記ACKフレームと前記ACK要求フレームの送信元の端末固有の識別情報との排他的論理和の値を求めることによって前記ACKフレームを符号化し、
符号化されたACKフレームを受信し、
前記符号化されたACKフレームと自身固有の識別情報との排他的論理和の値を求めることによって、前記符号化されたACKフレームを復号化し、復号化されたACKフレームに含まれるシーケンス番号が前記記憶部に保持されていない場合に前記復号化されたACKフレームを破棄する、
情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2013−17094(P2013−17094A)
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願番号】特願2011−149457(P2011−149457)
【出願日】平成23年7月5日(2011.7.5)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願日】平成23年7月5日(2011.7.5)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]