以下、本発明の一実施の形態について、図面を参照して詳細に説明する。
図1は、本発明の一実施の形態に係る通信装置を配置した無線PANの構成を示すシステム構成図である。
図1において、無線PAN100は、第1のノード200−1、第2のノード200−2を有する。第1のノード200−1および第2のノード200−2は、相互に無線IP通信が可能となっており、これらの間には無線通信路300が形成されている。また、第1のノード200−1と第2のノード200−2の通信に関する部分は、同一の構成を採っている。
第1のノード200−1と第2のノード200−2は、たとえば、テレビジョンとハードディスクレコーダであり、テレビジョンで受信する映像データをハードディスクレコーダへ転送することによって、映像データを記録するものである。映像データは無線通信路300により伝送されるため、ハードディスクレコーダの設置場所をより自由に選択することが可能となっている。
以下、各ノード200の構成および動作について説明する。説明の対象となるノード以外のノードを、「他ノード」というものとする。
図2は、本実施の形態に係る通信装置としてのノード200の構成を示すブロック図である。
図2において、ノード200は、通信部210、DHCPサーバ部220、DHCPサーバ初期設定部230、自律割当部240、DHCPアドレス取得部250、PAN指定判定部260、統括割当部270、アプリケーション部280、およびアプリケーション通信部290を有する。
通信部210は、無線によるIP通信を行うためのネットワークインタフェースであり、自装置のIPアドレスなどのIP通信に必要なパラメータが設定される。
DHCPサーバ部220は、DHCPクライアントとして動作する他ノードからの要求に応じてアドレス割り当てを行う。具体的には、DHCPサーバ部220は、通信部210でDHCPREQUESTメッセージが受信されると、通信部210を介して、そのメッセージの送信元に対しIPアドレスを割り当てる。
DHCPサーバ初期設定部230は、自装置の周囲にDHCPサーバが存在しない場合に、自装置をDHCPサーバとして機能させるために、DHCPサーバ部220に対して初期設定を行う。
自律割当部240は、自装置に対するアドレス割り当てにおいて、APIPAの動作を実施する。具体的には、自律割当部240は、自装置に対するアドレス割り当てを行うとともに、統括割当部270および通信部210を介して、割り当てたIPアドレスが他ノードで既に使用されているか否かの確認を行う。
DHCPアドレス取得部250は、自装置に対するアドレス割り当てにおいて、DHCPクライアントとして、DHCPサーバとして動作する他ノード200にIPアドレスの割り当てを要求する。具体的には、DHCPアドレス取得部250は、統括割当部270および通信部210を介して、DHCPREQUESTメッセージを送出するなどして、DHCPサーバとして動作する他ノード200からIPアドレスを取得し、取得したIPアドレスを自装置に対して割り当てる。
PAN指定判定部260は、DHCPアドレス取得部250が取得したIPアドレスと、周囲のノードのIPアドレスとの比較を行い、両者が重複する可能性があるか否かを判定する。具体的には、PAN指定判定部260は、通信部210で受信されたIPパケットの送信元IPアドレスを取得し、DHCPアドレス取得部250が取得したIPアドレスとの比較を行い、一致する場合には、当該IPアドレスに対する処理を行う。
統括割当部270は、自装置の各部を統括するとともに、自装置に対するアドレス割り当てに用いる手法を選択する。
アプリケーション部280は、IP通信を使用するアプリケーションソフトウェアであり、たとえば、通信部210を介して、映像データを送受信する機能を有している。また、アプリケーション部280は、IP通信を行う場合にはアプリケーション通信部290を使用して、通信部210を制御する。
アプリケーション通信部290は、DHCPアドレス取得部250の状況をアプリケーション部280に通知するともに、アプリケーション通信部290からの指示に応じて通信部210を制御する。
また、ノード200は、図示しないが、CPU(central processing unit)、制御プログラムを格納したROM(read only memory)などの記憶媒体、RAM(random access memory)などの作業用メモリ、および通信回路などでも実現できる。CPUが制御プログラムを実行することで、上記した各部の機能は実現される。
ノード200は、初期状態ではDHCPクライアントとして動作し、周囲の状況に応じて、DHCPサーバとして動作するモードに切り替わる。統括割当部270は、他の各部との連携により、ノード200の動作状態の制御および切り替えを行う。以下、ノード200の各部の動作について詳細に説明を行う。
図3は、ノード200の動作状態の遷移を示すフローチャートである。
ノード200は、初期状態では、電源が投入されていない電源OFF状態1000にある。この状態で電源が投入されると、ノード200は、DHCPクライアントとして動作するDHCPクライアント動作状態2000へ遷移する。
DHCPクライアント動作状態2000において、ノード200は、まず、DHCPを用いて、DHCPサーバとして動作する他ノードからのIPアドレスの取得を試みる。そして、IPアドレスの取得が成功した場合には、そのままDHCPクライアント動作状態2000を継続し、クライアント初期設定処理と、仮設定解除判定処理とを実行する。
クライアント初期設定処理は、サーバから取得したIPアドレスを、自装置に設定する処理である。仮設定解除判定処理は、自装置のIPアドレスの設定が仮設定であった場合に、DHCPサーバから受信するパケットを基に仮設定の解除を判定する処理である。これらクライアント初期設定処理および仮設定解除判定処理については、後にそれぞれ図11および図12を参照して詳しく説明する。
一方、ノードからのIPアドレスの取得が失敗した場合には、ノード200は、DHCPサーバとして動作するDHCPサーバ動作状態3000のへ遷移する。
DHCPサーバ動作状態3000において、ノード200は、サーバ初期設定処理と、IPアドレス割当処理とを実行する。
サーバ初期設定処理は、自装置のIPアドレスやアドレスプールを設定する処理である。IPアドレス割当処理は、DHCPクライアントとして動作する他ノードからの要求に応じてIPアドレスの割り当てを行う処理である。これらサーバ初期設定処理およびIPアドレス割当処理についても、後にそれぞれ図4および図10を参照して詳しく説明する。
DHCPサーバとして動作するノード200は、サーバ初期設定処理と並行してIPアドレス割当処理を実行することにより、サーバ初期設定処理が完了する前に、DHCPクライアントとして動作する他ノード200に対してアドレス割り当てを行うことを可能にする。ただし、アドレス割り当ての対象となるノード200に対して、そのアドレス割り当てが仮設定であることを通知する。
なお、DHCPクライアント動作状態2000あるいはDHCPサーバ動作状態3000にあるときに、ノード200の電源が落とされたり、ノード200の通信機能のリセット操作が行われた場合には、電源OFF状態1000へ戻ることになる。したがって、一旦DHCPサーバとしての動作を開始したものの、同一無線PAN100内の他ノード200にDHCPサーバ機能を移したい場合には、双方の電源を落とし、DHCPサーバとして機能させたい側のノード200に先に電源を投入するようにすればよい。また、このような電源遮断と電源投入のタイミングを、自動で制御するようにしてもよい。
図4は、図3のDHCPサーバ動作状態3000において実行されるサーバ初期設定処理の流れを示すフローチャートである。
ステップS3110において、DHCPサーバ初期設定部230は、統括割当部270からの要求に応じて、アドレスプールを生成するとともに、生成したアドレスプールの最初のIPアドレスを、自装置のIPアドレスに決定する。
図5は、図1に示す無線PAN100におけるIPアドレスの体系の一例およびIPアドレスの一例を示す説明図である。
無線PAN100において、各ノード200は、通信プロトコルとして、IPv4(IP version 4)を採用している。そして、各ノード200は、IPアドレス310を、ネットワークアドレス301、PAN指定部302、およびノード指定部303の、3つのビット列に分けて扱う。PAN指定部302とノード指定部303を設定しているのは、ノード間でIPアドレスが重複して割り当てられた場合に、このことを検出し易くするためである。これについては、後に詳しく説明する。ここでは、IPアドレス310の一例を、8ビットごとの10進表記311、2進表記312、および下位16ビットをPAN指定部302とノード指定部303で区切った10進表記313で記述している。
ネットワークアドレス301は、同一の無線PAN100に属するすべてのノード200に共通であり、所与の値が割り当てられるビット列である。ネットワークアドレス301が同一のノード同士は、通信が可能となっている。ここでは、ネットワークアドレス301は、16ビットであり、たとえば10進表記313で「192.168」が指定される。ネットマスクはネットワークアドレス301のビット数と対応しており、ここでは「255.255.0.0」となる。
無線PAN100における無線インタフェースの到達距離は、比較的短い。このため、比較的近い距離で、複数の無線PAN100が形成され、ノード200の移動によって、これら複数の無線PAN100の無線通信エリアが重なり合うことがある。すると、異なる無線PAN100に属するはずのノード200同士が、接続し無線通信を行ってしまう可能性がある。この場合に、異なった場所で構成された無線PAN100のノード200同士が通信を開始した時に、ネットワークアドレス301が異なると、ルーティング設定などを変更する必要が生じる可能性がある。したがって、本実施の形態では、全ての無線PAN100のノード200に、共通のネットワークアドレスを使用している。
PAN指定部302は、IPアドレス310において、無線PAN100を指定するためのビット列である。ここでは、PAN指定部302は、12ビットであり、たとえば10進表記313で「32」が指定される。したがって、2の12乗(=4,096)個の無線PAN100を指定することができる。
ノード指定部303は、IPアドレス310において、ノード200を指定するためのビット列である。ここでは、ノード指定部303は、4ビットであり、たとえば10進表記313で「1」が指定される。このように、ノード指定部303のビット数は少ないため、同一の無線PAN100におけるIPアドレス310の重複を、容易に検出することができる。
なお、ネットワークアドレス301、PAN指定部302、およびノード指定部303のそれぞれの配置およびビット長は、上記内容に限定されるものではない。また、IPv6(IP version 6)など、他の通信プロトコルのアドレスを適用してもよい。さらに、「10.x.x.x」のようなクラスAのプライベートアドレスを用いることも可能である。この場合は、PAN指定部302とノード指定部303を合わせて24ビット取ることができる。
図6は、DHCPサーバ初期設定部230が生成するアドレスプールの構成の一例を示す説明図である。アドレスプール350は、IPアドレス310、割当状態351、およびMAC(media access control)アドレス352をそれぞれ記述する複数のフィールドにより構成される。ここでは、IPアドレス310のネットワークアドレスおよびPAN指定部の値が、図5と同様である場合を図示している。
ネットワークアドレス301とPAN指定部302が同じであるIPアドレスは、「192.168.1.0〜192.168.1.15」である。したがって、これらのIPアドレス310のうち、ノード200に割り当てることができないブロードキャストアドレス「192.168.1.0」を除いた、「192.168.1.1〜192.168.1.15」が、IPアドレス310のフィールドに記述される。
割当状態351には、対応するIPアドレス310の割り当て状態を示す情報が記述される。「空き」は、対応するIPアドレス310が、いずれのノード200にも割り当てが行われていないことを示す。「予約中」は、対応するIPアドレス310が、いずれかのノード200に予約されているが、割り当ては完了していないことを示す。「使用中」は、いずれかのノード200に割り当てされており、使用されていることを示す。
MACアドレス352には、対応するIPアドレス310が予約あるいは割り当てられているノード200のMACアドレスが記述される。
DHCPサーバとして機能するノード200ごとにPAN指定302の値が異なれば、それぞれのアドレスプール350の間でIPアドレス310は重複しない。また、PAN指定部302の値は、DHCPサーバとして機能するノード200のIPアドレス310にも使用される。したがって、DHCPサーバとして機能するノード200のIPアドレス310のPAN指定部302を比較するだけで、それぞれのアドレスプール350に記述されるIPアドレス310が重複しているか否かを判定することができる。
図4のステップS3110において、DHCPサーバ初期設定部230は、乱数で図5に示すPAN指定部302の値を選択決定し、所与のネットワークアドレス301と組み合わせて、図6に示すアドレスプール350を生成し、DHCPサーバ部220に保持させる。そして、DHCPサーバ初期設定部230は、生成したアドレスプール350の最初のIPアドレスを、自装置のIPアドレスに決定する。そして、DHCPサーバ初期設定部230は、決定したIPアドレス(以下「仮サーバアドレス」という)を、統括割当部270を介して、通信部210に設定する。すなわち、仮サーバアドレスを、自装置に対して割り当てる。
次に、ステップS3120において、自律割当部240は、仮サーバアドレスが周囲のノードで使用されていないことを確認するための要求である状況確認のARP Probeメッセージを、統括割当部270および通信部210を介してブロードキャスト出力する。
図7は、状況確認のARP Probeメッセージの構成を示す説明図である。
ARPで使用されるパケットは、メッセージの種類を記述するための「Opcode」フィールド401を有している。また、ARPで使用されるパケットは、送信元のハードウェアアドレスを記述するための「sender hardware address」フィールド402、送信元のIPアドレスを記述するための「sender IP address」フィールド403、処理の対象となるハードウェアアドレスを記述するための「target hardware address」フィールド404、および処理の対象となるIPアドレスを記述するための「target IP address」フィールド405とを有している。
状況確認のARP Probeメッセージ410の場合、図7に示すように、「Opcode」フィールド401に、ARP要求であることを示す値「1」が記述される。また、「sender hardware address」フィールド402に、自装置のMACアドレスが記述され、「sender IP address」フィールド403および「target hardware address」フィールド404には、それぞれ値「0」が記述される。そして、「target IP address」フィールド405には、ステップS3110で決定した仮サーバアドレスが記述される。
図4のステップS3130において、自律割当部240は、ステップS3120で出力した状況確認のARP Probeメッセージに対する応答が入力されるのを監視する。
各ノード200は、自装置に既にIPアドレスが割り当てられているとき、そのIPアドレスと同一のIPアドレスが「target IP address」フィールド405に記述された状況確認のARP Probeメッセージ410を受信すると、IPアドレスの重複を示すARP応答をブロードキャスト出力するようになっている。具体的には、ARP Probeメッセージ410の「sender IP address」フィールド403の記述と一致するIPアドレスが割り当てられ、状況確認のARP Probeメッセージ410の「sender hardware address」フィールド402の記述と異なるMACアドレスを有するノード200から、ARP応答が出力される。
図8は、ARP応答の構成を示す説明図であり、図7に対応するものである。
ARP応答420の場合、「Opcode」フィールド401に、ARP要求に対する応答であることを示す値「2」が記述される。また、状況確認のARP Probeメッセージ410とは異なり、「sender IP address」フィールド403に、ARP応答420の送信元のIPアドレスが記述される。また、「sender hardware address」フィールド402には、ARP応答420の送信元のMACアドレスが記述される。
図4のステップ3120で、状況確認のARP Probeメッセージ410を出力したノード200は、他ノード200から図8に示すARP応答420を受信すると、ARP応答420の「sender IP address」フィールド403の記述に含まれる他ノードのIPアドレス310のPAN指定部302の値と、自装置に割り当てられたIPアドレス310のPAN指定部302の値とを比較する。一致する場合には、直接には通信できないものの、ステップS3110で決定した仮サーバアドレスと同一のIPアドレスを使用するノード200が周囲に存在していることになる。
したがって、自律割当部240は、タイムアウトになる前に状況確認のARP応答420の入力があった場合には、ステップS3110へ戻り、自装置のIPアドレスの選択をやり直す。タイムアウトになった場合には、ステップS3140へ進む。タイムアウトの時間としては、たとえば1秒が設定される。
ステップS3140において、自律割当部240は、IPアドレスの状況確認において、3回以上連続してタイムアウトとなったか否かを判断する。3回未満の場合には(S3140:NO)、ステップS3120へ戻り、状況確認のARP Probeメッセージ410を再び出力する。タイムアウトが3回以上となった場合には(S3140:YES)、ステップS3110で決定した仮サーバアドレスと同一のIPアドレスを使用するノードは周囲に存在しないとして、仮サーバアドレスを自装置で使用するIPアドレスとして選択し、ステップS3150へ進む。
ステップS3150において、自律割当部240は、仮サーバアドレスを自装置で利用することを通知する使用要求のARP Probeメッセージ(ARP Announcement)を生成し、統括割当部270および通信部210を介して出力する。
図9は、使用要求のARP Probeメッセージの構成を示す説明図であり、図7に対応するものである。
使用要求のARP Probeメッセージ430の場合、「Opcode」フィールド401に、ARP要求であることを示す値「1」が記述される。また、状況確認のARP Probeメッセージ410とは異なり、「sender IP address」フィールド403に、使用要求のARP Probeメッセージ430の送信元のIPアドレスが記述される。また、「target IP address」フィールド405には、使用要求のARP Probeメッセージ430の送信元で使用することが決定されたIPアドレスが記述される。
図4のステップS3160において、自律割当部240は、3回以上連続して図9に示す使用要求のARP Probeメッセージ430を出力したか否かを判断する。自律割当部240は、3回未満の場合には(S3160:NO)、ステップS3150へ戻り、使用要求のARP Probeメッセージ430を再び出力する。使用要求のARP Probeメッセージ430の出力回数が3回以上となった場合には(S3160:YES)、ノード200は、自装置のIPアドレスを確定し、一連の処理を終了する。
このようにして、DHCPサーバ動作を開始したノード200は、サーバ初期設定処理を終了し、アドレスプールと自装置のIPアドレスの設定が完了する。
ノード200は、サーバ初期設定処理のうち、ステップS3110の処理が完了し、アドレスプールを生成した時点で、上記したIPアドレス割当処理を開始する。
図10は、図3のDHCPサーバ動作状態3000において実行されるIPアドレス割当処理の流れを示すフローチャートである。DHCPサーバとして機能するノード200を検索するノード200は、従来技術で説明したように、DHCPDISCOVERメッセージをブロードキャスト出力する。
ステップS3210において、通信部210は、DHCPクライアントとして動作する他ノード200から、DHCPDISCOVERメッセージが入力されると、DHCPサーバ部220に対し、そのDHCPDISCOVERメッセージを通知する。
次に、ステップS3220において、DHCPサーバ部220は、通知されたDHCPDISCOVERメッセージに対して、図4のステップS3110で生成されたアドレスプール350から、割り当ての対象となるIPアドレス310を選択する。ただし、このとき、DHCPサーバ部220は、割当状態351が「空き」となっているIPアドレス310を選択する。そして、DHCPサーバ部220は、選択したIPアドレス310の割当状態351を、「予約中」に書き替えるとともに、通信部210から通知されたDHCPDISCOVERメッセージに含まれるMACアドレスを、対応するMACアドレス352のフィールドに記述する。
次に、ステップS3230において、統括割当部270は、自装置が既に使用要求のARP Probeメッセージ430を出力しているか、つまり自装置のアドレスプールが確定したか否かを判断する。具体的には、統括割当部270は、自律割当部240の状態を監視し、自装置が実行する上記IPアドレス割当処理が、既に図4のS3150の処理に到達しているか否かを判断する。まだ自律割当部240が使用要求のARP Probeメッセージ430を出力していない場合には(S3230:NO)、ステップS3240へ進む。
ステップS3240において、統括割当部270は、DHCPサーバ部220に対し、ステップS3220で行ったIPアドレス310の設定が仮のものであることを示す仮設定フラグを、DHCPOFFERメッセージに設定させる。DHCPOFFERメッセージは、DHCPDISCOVERメッセージに対する応答として、ステップS3220で選択したIPアドレス310を格納して当該IPアドレス310を提示するための信号である。
DHCPOFFERメッセージに仮設定フラグを設定するのは、IPアドレス割当処理が、図4のステップS3110へ戻り、アドレスプールが変更されて別のIPアドレスを提示し直す可能性があるためである。すなわち、仮設定フラグは、DHCPOFFERメッセージの受け取り側に対して、割り当てを行うIPアドレスが仮のものであることを通知するためである。仮設定フラグは、たとえばDHCPのフラグフィールドや、IPのオプションフィールドを使用すればよい。
次に、ステップS3250において、DHCPサーバ部220は、通信部210を介して、DHCPOFFERメッセージをブロードキャスト出力する。
一方、自装置から使用要求のARP Probeメッセージ430を既に出力している場合には(S3230:YES)、IPアドレス割当処理は図4のステップS3110へ戻らない。したがって、アドレスプール350は確定していることから、DHCPサーバ部220は、仮設定フラグの設定は行わずに、そのままステップS3250へ進み、DHCPOFFERメッセージを出力する。
ステップS3260において、DHCPサーバ部220は、ステップS3250で出力したDHCPOFFERメッセージに対する応答として、DHCPREQUESTメッセージが通信部210で受信されるのを監視する。DHCPREQUESTメッセージは、DHCPOFFERメッセージを受け取ったノード200が、そのDHCPOFFERメッセージが提示するIPアドレスを使用することを要求するための信号である。また、DHCPREQUESTメッセージには、要求先として選択されたノード200のIPアドレスである選択サーバIPアドレスが含まれている。ここで監視の対象となるのは、自装置のIPアドレスが、選択サーバIPアドレスとして指定され、かつ使用を要求するIPアドレスの割当状態351が「予約中」のものである。
DHCPサーバ部220は、タイムアウトになる前に該当するDHCPREQUESTメッセージが自装置に到着した場合には(S3260:YES)、ステップS3270へ進む。一方、該当するDHCPREQUESTメッセージが自装置に到着しないままタイムアウトになった場合には(S3260:NO)、ステップS3280へ進む。
ステップS3270において、DHCPサーバ部220は、アドレスプール350のうち、DHCPREQUESTメッセージが使用を要求するIPアドレス310に対応する割当状態351を、「予約中」から「使用中」へと書き替える。
次に、ステップS3290において、統括割当部270は、再び、自装置が既に使用要求のARP Probeメッセージ430を出力しているかを判断する。まだ自律割当部240が使用要求のARP Probeメッセージ430を出力していない場合には(S3290:NO)、ステップS3300へ進む。
ステップS3300において、統括割当部270は、DHCPサーバ部220に対して、仮設定フラグを、今度はDHCPACKメッセージに設定させる。DHCPACKメッセージは、周囲のノード200に対して、IPアドレス310の割り当てが成功したことを通知する信号であり、その割り当ての対象となるIPアドレス310を格納している。
次に、ステップS3310において、DHCPサーバ部220は、通信部210を介して、DHCPACKメッセージをブロードキャスト出力する。
そして、ステップS3320において、DHCPサーバ部220は、自装置のDHCPサーバ動作を終了するか否かを判断する。DHCPサーバ動作を継続する場合には(S3320:NO)、再びステップS3210へ戻り、新たなDHCPDISCOVERメッセージがクライアントとして動作する他ノード200から入力されるのを監視する。ユーザ操作により無線通信の停止が指示されるなどして、DHCPサーバ動作を終了する場合には(S3320:YES)、一連の処理を終了する。
一方、ステップS3280では、DHCPOFFERメッセージを出力したものの、対応するDHCPREQUESTメッセージが到着しないことから、DHCPサーバ部220は、ノード200に対して提示したIPアドレス310の解放を設定する。すなわち、DHCPサーバ部220は、アドレスプール350のうち、ステップS3220で選択したIPアドレス310の割当状態351を、「予約中」から「空き」に書き替える。そして、ステップS3320へ進む。
また、ステップS3270を終えた段階で、自装置から使用要求のARP Probeメッセージ430を既に出力している場合は(S3290:YES)、アドレスプール350は確定していることから、仮設定フラグの設定は行わずに、そのままステップS3310へ進み、DHCPACKメッセージを出力する。
このようにして、ノード200は、DHCPサーバ動作の状態にあるときに、クライアントとして動作する他ノード200からの要求に応じて、アドレス割り当てを行う。また、そのアドレス割り当てを行う段階でアドレスプールがまだ確定していない場合には、アドレス割り当てが仮のものであることを通知する。したがって、アドレス割り当てを受ける側では、DHCPサーバ動作を開始したノード200が初期設定を完了していないような早い段階で、DHCPクライアントとして動作するための初期設定を開始し、IP通信を開始することができる。なお、統括割当部270は、自装置のアドレスプールが確定した時点で、ステップS3230、S3240、S3290、S3300の処理を省略するようにしてもよい。
図11は、図3のDHCPクライアント動作状態2000において実行されるクライアント初期設定処理の流れを示すフローチャートである。
ステップS2110において、統括割当部270は、DHCPアドレス取得部250に対してDHCPDISCOVERメッセージを生成させ、通信部210を介してブロードキャスト出力し、DHCPサーバの検索を行う。
ステップS2120において、統括割当部270は、ステップS2110でDHCPDISCOVERメッセージに対する応答として、DHCPOFFERメッセージが通信部210で受信されるのを一定時間監視する。このDHCPOFFERメッセージは、DHCPサーバとして動作する他ノード200が、図10に示すIPアドレス割当処理を行うとき、図10のステップS3250で出力するものである。すなわち、DHCPOFFERメッセージが自装置に到着する場合には、通信可能範囲内にDHCPサーバとして機能する他ノード200が存在している。
統括割当部270は、DHCPOFFERメッセージが自装置に到着した場合には(図11、S2120:YES)、DHCPアドレス取得部250に対してDHCPOFFERメッセージを渡し、ステップS2130へ進む。そして、統括割当部270は、自装置のDHCPクライアント動作状態を継続させる。このとき、通信可能範囲内にDHCPサーバとして機能する他ノード200が複数存在している場合には、複数のDHCPOFFERメッセージが到着する。
一方、該当するDHCPOFFERメッセージが到着しないままタイムアウトになった場合には(S2120:NO)、ステップS3100へ進む。そして、統括割当部270は、通信可能範囲内にDHCPサーバとして機能する他ノード200が存在していないものとして、自装置を図3のDHCPサーバ動作状態3000に遷移させる。そして、ノード200は、図4および図10で説明したサーバ初期設定処理およびIPアドレス割当処理を実行する。
ステップS2130において、DHCPアドレス取得部250は、入力されたそれぞれのDHCPOFFERメッセージから、提示されるIPアドレス310を取得するとともに、各DHCPOFFERメッセージに仮設定フラグが設定されているか否かを判別する。この仮設定フラグは、DHCPサーバとして動作する他ノード200が、図10のステップS3240で設定するものである。すなわち、仮設定フラグが設定されているか否かによって、そのDHCPOFFERメッセージで提示されるIPアドレスが、後で変更される可能性があるか否かを判断することができる。
仮設定フラグが設定されているDHCPOFFERメッセージについては、(S2130:YES)、ステップS2140へ進む。仮設定フラグが設定されていないDHCPOFFERメッセージについては、(S2130:NO)、ステップS2140を経ることなく、ステップS2140の次のステップS2150へ進む。
ステップS2140において、DHCPアドレス取得部250は、該当するIPアドレスに対して、内部的に仮設定フラグを立てる。
ステップS2150において、DHCPアドレス取得部250は、DHCPOFFERメッセージによって提示されたIPアドレスの中から、自装置で使用することを要求するIPアドレスを選択する。このとき、DHCPアドレス取得部250は、仮設定フラグが立っていないIPアドレスが存在する場合には、仮設定フラグが立っていないIPアドレスの中から選択を行う。また、DHCPアドレス取得部250は、提示されたIPアドレスが複数である場合には、例えば最初に提示されたDHCPOFFERメッセージの相手先から提示されたIPアドレスを、優先的に選択する。
次に、ステップS2160において、DHCPアドレス取得部250は、DHCPREQUESTメッセージを生成し、統括割当部270および通信部210を介してブロードキャスト出力する。このとき、DHCPアドレス取得部250は、DHCPREQUESTメッセージに、ステップS2150で選択したIPアドレスを、要求IPアドレスとして指定するとともに、当該IPアドレスを提示したノード200のIPアドレスを、選択サーバIPアドレスとして指定する。
次に、ステップS2170において、DHCPアドレス取得部250は、ステップS2160で送出したDHCPREQUESTメッセージに対する応答として、DHCPACKメッセージを受信する。このDHCPACKメッセージは、DHCPサーバとして動作する他のノード200が、図10のステップS3310で出力するものである。
次に、ステップS2180において、DHCPアドレス取得部250は、入力されたDHCPACKメッセージに仮設定フラグが設定されているか否かを判別する。この仮設定フラグは、DHCPサーバとして動作する他ノード200が、図10のステップS3300で設定するものである。すなわち、仮設定フラグが設定されている場合には、そのDHCPACKメッセージによって割り当てられるIPアドレスは、後で変更される可能性があるということが分かる。仮設定フラグが設定されている場合には、(S2180:YES)、ステップS2190へ進む。仮設定フラグが設定されていない場合には、(S2180:NO)、ステップS2190を経ることなく、ステップS2190の次のステップS2200へ進む。
ステップS2190において、DHCPアドレス取得部250は、ステップS2140と同様に、該当するIPアドレスに対して、内部的に仮設定フラグを立てる。ただし、既に該当するIPアドレスに仮設定フラグが立っている場合には、そのままとする。
ステップS2200において、DHCPアドレス取得部250は、ステップS2150で選択し、ステップS2170で自装置に割り当てられたIPアドレスを、統括割当部270を介して通信部210に設定する。通信部210は、IPアドレスの設定に対応して、ネットマスク、デフォルトのゲートウェイのアドレス、DNS(domain name system)サーバのアドレスなど、DHCPで取得できる各種情報を取得し、自装置に設定する。そして、一連の処理を終了する。
このようにして、ノード200は、DHCPクライアントとして、IP通信が可能な状態となる。なお、ステップS2130とステップS2180の2段階で仮設定の有無をチェックするため、複数のサーバから提示される複数のIPアドレスの中に仮設定ではないIPアドレスが存在している場合に、迅速にこれを選択することができる。
ただし、自装置に割り当てられたIPアドレスが仮設定の場合、そのIPアドレスは変更される可能性があるだけでなく、他のノード200と重複して設定されている可能性がある。
そこで、アプリケーション通信部290は、DHCPアドレス取得部250に仮設定フラグが立っているか否かを監視し、仮設定フラグが立っている状態にあるときには、これをアプリケーション部280に通知する。アプリケーション部280は、この通知を受けると、重要な情報の送信を差し控えるなどして、自己が行う通信を制限したり、アプリケーション通信部290に、通信部210に対して受信を制限させるなどの制御を行わせる。
一方で、DHCPサーバがアドレスプールを確定した場合には、自装置に割り当てられたIPアドレスも確定される。このとき、上記した通信の制限は、速やかに解除されるべきである。そこで、DHCPクライアントとして動作するノード200は、図11のステップS2120でDHCPOFFERメッセージによりIPアドレスの提示を受けた時点で、仮設定指定を適宜解除して通常のIP通信を開始するための仮設定解除判定処理を開始する。
図12は、図3のDHCPクライアント動作状態2000において実行される仮設定解除判定処理の流れを示すフローチャートである。
ステップS2310において、通信部210は、他ノード200から自装置宛てに送信されるIPパケットを入力する。
ステップS2320において、統括割当部270は、受信したIPパケットの送信元がDHCPサーバであるか否かを判断する。具体的には、統括割当部270は、IPパケットの宛先IPアドレス310からノード指定部303に記述された値を抽出し、抽出した値が「1」であるか否かを判別する。IPパケットの送信元がDHCPサーバである場合には(S2320:YES)、ステップS2330へ進む。
ステップS2330において、統括割当部270は、自装置に割り当てられたIPアドレス310に対して仮設定フラグが設定されているか否かを判別する。仮設定フラグが設定されている場合には(S2330:YES)、ステップS2340へ進む。仮設定フラグが設定されていない場合には(S2330:NO)、仮設定の解除の判定を行う必要が無いため、そのまま処理を終了する。
ステップS2340において、統括割当部270は、受信したIPパケットに、仮設定フラグが設定されているか否かを判別する。本実施の形態では、上記したように、DHCPOFFERメッセージおよびDHCPACKメッセージに設定することが可能となっている。仮設定フラグが設定されていない場合には(S2340:NO)、ステップS2350へ進む。
ステップS2350において、PAN指定判定部260は、受信したIPパケットの送信元IPアドレス310のPAN指定部302に記述された値を抽出する。そして、PAN指定判定部260は、受信したIPパケットから抽出した値と、DHCPアドレス取得部250が図11のステップS2200でDHCPによって取得したIPアドレス310のPAN指定部302に記述された値とを比較する。これらの値が一致する場合には(S2350:YES)、ステップS2360へ進む。
ステップS2360において、PAN指定判定部260は、DHCPサーバとして動作し、自装置に対してIPアドレスを提示した他ノード200が、アドレスプールを確定してIP通信を開始したものとして、DHCPアドレス取得部250に対して、対応する仮設定フラグを削除させる。そして、一連の処理を終了する。
また、受信したIPパケットの送信元がDHCPサーバではない場合や(S2320:NO)、受信したIPパケットに仮設定フラグが設定されている場合(S2340:YES)、および受信したIPパケットの送信元アドレスと自装置で取得したIPアドレス310とでPAN指定部302の値が異なる場合は(S2350:NO)、ステップS2310へ戻る。
このようにして、ノード200は、DHCPクライアントとして動作するとき、DHCPサーバとして動作する他ノード200から割り当てられたIPアドレスが仮設定であったとしても、その他ノード200から自装置宛てのIPパケットを受信したときに、この仮設定を速やかに解除することができる。
たとえば、あるノード200から、仮設定フラグが立てられたDHCPOFFERメッセージを受信した後、仮設定フラグが立てられていないDHCPACKメッセージを受信した場合、DHCPACKメッセージを受信した時点で仮設定指定が解除されることになる。
なお、たとえば、DHCPACKメッセージの後、DHCPサーバとして機能するノード200から、特にパケットが送られてこない場合もある。そこで、このような場合には、能動的にIPアドレスの仮設定の解除の可否を問い合わせ、適宜IPアドレスの取得を再試行する異常系処理を行うことが望ましい。この異常系処理としては、たとえば、仮設定が解除されないまま所定の時間が経過してタイムアウトとなった場合に、自装置のIPアドレスを問い合わせるARP要求を出力するようにし、ARP応答が受信されないままタイムアウトになった場合には、IPアドレスの仮設定が継続しているものとして、再びクライアント初期設定処理を実行しなおすようにすればよい。
また、このような事態を避けるために、統括割当部270は、自装置がDHCPサーバとして動作する際には、自装置のアドレスプールが確定した時点で、アドレス割り当てを行った他ノード200に対して、仮設定フラグの設定されていないパケットを送るようにしてもよい。
さらに、本実施の形態においては、PAN指定判定部260を仮設定の削除の判定時に用いるが、移動して無線PAN100エリア内に進入した他の装置と自装置のIPアドレスが重複する可能性を判定する場合にも使用することは可能である。
以下、図1に示す無線PAN100における各ノード200の起動タイミングの具体例を用いて、各ノード200の動作および信号の様子について説明する。
図13は、図1に示す無線PAN100の各ノード200が初期設定を行う際の、各ノード200の動作および信号の様子の一例を示すシーケンス図である。ここでは、第1のノード200−1が先に電源投入され、その直後の第1のノード200−1の初期設定が完了していない段階で、第2のノード200−2が電源投入された場合の例を図示している。
ステップS5100において、時刻t0に、第1のノード200−1は電源オン(ON)状態となり、第2のノード200−2は電源オフ(OFF)状態のままであったとする。
ステップS5200において、第1のノード200−1は、時刻t0の直後に、DHCPDISCOVERメッセージをブロードキャスト出力する(図11のステップS2110)。ただし、この時点で、第2のノード200−2はOFF状態であるため、第1のノード200−1に応答は返ってこない(図11のステップS2120:NO)。
ステップS5300において、第1のノード200−1は、DHCPサーバ動作状態に入る(図11のステップS3100)。
ステップS5400において、ステップS5300で第1のノード200−1がDHCPサーバ動作状態に入った直後に、第2のノード200−2がON状態になったとする。
ステップS5500において、第2のノード200−2は、DHCPDISCOVERメッセージをブロードキャスト出力する(図11のステップS2110)。
ステップS5600において、第1のノード200−1は、既にサーバ初期設定処理およびIPアドレス割当処理を開始していることから、第2のノード200−2からのDHCPDISCOVERメッセージの入力に対応して、割り当ての対象となるIPアドレスを選択する(図10のステップS3220)。そして、第1のノード200−1は、DHCPOFFERメッセージを送出する(図10のステップS3250)。
ここでは、第1のノード200−1は、図6に示すアドレスプール350を生成し、自装置の仮サーバアドレスとして「192.168.1.1」を、第2のノード200−2のIPアドレスとして「192.168.1.2」を、それぞれ選択したものとする。
また、この時点で、第1のノード200−1のサーバ初期設定処理が、図4のステップS3120に到達していなかったとする(図10のステップS3230:NO)。この場合、上記したように、第1のノード200−1は、送出するDHCPOFFERメッセージに、仮設定フラグを設定する(図10のステップS3240)。したがって、第2のノード200−2には、仮設定フラグが立てられたIPアドレス「192.168.1.2」が提供される(図11のステップS2140)。
ステップS5700において、第1のノード200−1は、サーバ初期設定処理を継続し、状況確認のARP Probeメッセージ410を出力する(図4のステップS3120)。ただし、この時点で第2のノード200−2は、提供されたIPアドレスを使用することを決定していないため、第1のノード200−1に応答は返ってこない。なお、第2のノード200−2が提供されたIPアドレスを使用することを既に決定していたとしても、第1のノード200−1とは異なるIPアドレスであるため、やはり応答は返ってこない。
ステップS5800において、第2のノード200−2は、クライアント初期設定処理を継続し、DHCPREQUESTメッセージを出力する(図11のステップS2160)。
ステップS5900において、第1のノード200−1は、ステップS5800のDHCPREQUESTメッセージに対する応答として、DHCPACKメッセージを出力する(図10のステップS3310)。これにより、第2のノード200−2は、IPアドレス「192.168.1.2」が割り当てられ、IP通信が可能な状態となる。
この時点で、第1のノード200−1が、図4に示すサーバ初期設定処理において、状況確認のARP Probeメッセージ410をまだ1回しか出力していなかったとする(図10のステップS3230:NO)。この場合、上記したように、第1のノード200−1は、送出するDHCPACKメッセージに仮設定フラグを設定する(図10のステップS3300)。したがって、第2のノード200−2のIPアドレスには、仮設定フラグが立てられたままとなる(図11のステップS2190)。
ステップS6000において、第1のノード200−1は、サーバ初期設定処理を継続し、状況確認のARP Probeメッセージ410をさらに2回出力する(図4のステップS3120)。ただし、第2のノード200−2には第1のノード200−1とは異なるIPアドレスが割り当てられているため、第1のノード200−1に応答は返ってこない(図4のステップS3140:YES)。
ステップS6100において、第1のノード200−1は、使用要求のARP Probeメッセージ430を出力し(図4のステップS3140)、やがてサーバ初期設定処理を終了する。また、第2のノード200−2は、IPアドレスに仮設定フラグが立っているものの、やがてクライアント初期設定処理を終了する。
この結果、第1のノード200−1のサーバ初期設定処理および第2のノード200−2のクライアント初期設定処理が終了した後の時刻t1には、第1のノード200−1は、DHCPサーバとして動作し、第2のノード200−2は、DHCPクライアントとして動作する。
従来技術では、正常に通信を行うためには、いずれかのノードがDHCPサーバ動作状態になってから他のノードをON状態にしなければならないが、本実施の形態のノード200では、第1のノード200−1がDHCPサーバ動作状態になる前に、第2のノード200−2をON状態としている。すなわち、本実施の形態では、複数のノード200に立て続けに電源を投入しても、各ノード200がサーバ機能とクライアント機能とを適切に選択でき、正常に通信を行うことが可能であることが分かる。また、DHCPサーバとして動作するノード200がアドレスプールを確定する前に、DHCPクライアントとして動作するノード200は、IPアドレスを取得し、IP通信を開始することができる。すなわち、2つ目以降に電源が投入されたノード200は、電源投入後、速やかにIP通信を開始することができる。
以上説明したように、本実施の形態によれば、ノードは、IPアドレスの割り当てを行うDHCPサーバとして動作する他ノードが通信範囲内に存在しないとき、DHCPサーバ動作状態に遷移する。そして、ノードは、DHCPサーバとして動作するための初期設定処理と並行して、DHCPクライアントとして動作する他ノードからの要求に応じてアドレス割り当てを行う処理を実行する。これにより、最初に電源投入が行われたノード200は、完全にサーバとしての機能を開始していなくても、DHCPクライアントとして動作する他ノードに対して、IPアドレスを割り当てることができる。すなわち、複数のノードに立て続けに電源の投入を行っても、各ノードでサーバ機能とクライアント機能とを適切に選択することができ、無線PAN全体の立ち上がりを高速化することができる。
ただし、DHCPサーバ動作状態に遷移したノードは、自装置に割り当てたIPアドレスと同一のアドレスが他ノードに既に割り当てられていないと判断する前、つまり自装置のアドレスプールを確定する前に、アドレス割り当てを行う場合には、その割り当て先に対して、アドレス割り当てが仮のものであることを通知する。すなわち、DHCPサーバ動作状態に遷移したノードは、自己が割り当てたIPアドレスが変更される可能性があることを、その割り当て先に通知する。これにより、アドレス割り当てを受ける側では、割り当てられたIPアドレスが他のノード200と重複していたり、変更される可能性があるということを知ることができ、重要度の高い情報の送信を禁止するというように、通信に適切な制限を加えることができる。
また、IPアドレスを、ネットワークアドレスと、PAN指定部と、ノード指定部とに分け、ノード200ごとに、ネットワークアドレスとPAN指定部とを共通にしてアドレスプールを生成する。これにより、DHCPサーバごとに異なるPAN指定部を設定することで、簡単にDHCPサーバ間でアドレスプールのIPアドレスの重複が発生しないようにすることができる。
さらに、DHCPサーバ及び周囲のデバイスでは、原則としてネットワークアドレスとPAN指定部が共通であることを利用して、PAN指定部を比較することにより、IPアドレスのチェックを行う。これにより、より簡単にDHCPサーバ間におけるIPアドレスやアドレスプールの重複の有無を判定することができ、IPアドレスのチェックの処理を高速化することができる。
なお、相互に無線通信を行うことができない環境下で立ち上がった複数のノードに、同一のIPアドレスが割り当てられ、ノードの移動によって、後で相互に無線通信を行うことができるようになる場合も考えられる。この場合には、DHCPサーバは、図12のステップS2350と同様に、自装置のIPアドレスのPAN指定部と、受信データの送信元のIPアドレスのPAN指定部とを比較することにより、自装置と同じアドレスプールを持つDHCPサーバの有無を調査することができる。具体的には、自己のアドレスプールに登録されていないMACアドレスを有するノードからデータを受信したときに、その送信元のIPアドレスのPAN指定部が、自装置のIPアドレスのPAN指定部と一致する場合には、自装置と同じアドレスプールを持つDHCPサーバが存在すると判断できる。この場合には、再び図4に示すサーバ初期設定処理を実行するようにすればよい。
また、以上説明した実施の形態では、本発明をテレビジョンおよびハードディスクレコーダに適用した例を説明したが、固定電話機、携帯電話機、ビデオデッキ、スピーカ、ゲーム機器など、他の各種電子機器に対して適用できることは勿論である。特に、たとえば、現金決済など、個人情報が含まれた重要な通信を行う可能性がある電子機器では、仮設定の間は重要な情報の送信は抑止することができる。また、仮設定の間は、重要な情報の送信を抑止する一方で、ウエブ(web)アクセスやストリーミングなど、IPアドレスの変更による途切れや情報の流出がある程度許容されるような通信については通常通り行う、というように、通信の可否を適切に使い分けることができる。すなわち、PANの立ち上がりの高速化と、安全性の確保とを、両立させることができる。