以下、図面を参照しつつ、本開示の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
[実施の形態1]
本実施の形態では、サブネットにおいて探索機器により目的ノードの探索処理(図1〜図19参照)が実施される。また、この探索処理では、IPアドレスの設定が誤っている被探索機器を目的ノードとして探索(発見)するために、ダミーのIPアドレスを用いた探索処理(図14〜図19参照)が実施される。
<通信ネットワーク1の概略構成>
図1は、実施の形態1に係る通信ネットワーク1の概略構成を説明するための図である。図1を参照して、通信ネットワーク1は、無線LANルーター302およびサブネット10を備える。無線LANルーター302は、インターネット等の外部のネットワーク900と接続する。ネットワーク900には、クラウドサーバ等のサーバ装置901が接続される。サーバ装置901は、ブラウザを有した端末902と通信する。端末902は、スマートフォン、タブレット端末、パーソナルコンピュータ等のブラウザを有した端末であれば何であってもよい。
サブネット10は、HEMSコントローラ100、複数のノード201,202,203…、およびスイッチングハブ300を備える。「ノード」とは、IPアドレスを持つ通信機器(IP対応機器)である。一般的に、ノードは、パーソナルコンピュータ、プリンタ、NAS(Network Attached Storage、ネットワークストレージともいう)、タブレット端末、AV(Audio Visual)機器、および白物家電等を含む。図1では、無線LANルーター302は、有線LAN803を介してHEMSコントローラ100、ノード202、およびスイッチングハブ300に接続され、また、無線LAN802を介してノード203に接続される。ノード201は、スイッチングハブ300に接続され、さらに、スイッチングハブ300を経由して無線LANルーター302に接続される。
無線LANルーター302に接続される複数のノード201,202,203,…のうちいくつかが、ECHONET Lite機器に相当する「ECHONET Liteノード」である。本実施の形態では、例えば、ノード202と203がECHONET Liteノードである。ノード201は電力モニタである。
HEMSコントローラ100は、通信ネットワーク1において制御装置として機能する。具体的には、HEMSコントローラ100は、複数のノード201,202,203,…と通信することにより、複数のノード201,202,203,…を制御する。
本実施の形態では、新規ノード209がサブネット10に参加し、またサブネット10に参加しているノード(以下、「既存ノード」とも称する)がサブネット10から離脱することがある。なお、新規ノード209がネットワークに参加した場合には、新規ノード209は既存ノードとして扱われる。
図1を参照して、無線LANルーター302、HEMSコントローラ100、および各ノードに関連して示される括弧内の数字(たとえば、192.168.11.1)は、当該機器またはノードのIPアドレスを表している。無線LANルーター302は、DHCP機能を有する。無線LANルーター302は、DHCP機能により、HEMSコントローラ100、および複数のノード202,203,…に対して、図示されるようなIPアドレスを自動的に付与する。付与されたIPアドレスは、各ノードが有する記憶部に格納されるとともに、HEMSコントローラ100では、後述する記憶部160に格納される。また、HEMSコントローラ100および各ノードは、固有の番号を示すMAC(Media Access Control)アドレスが予め設定(記憶)されたLANカード等のネットワークアダプタ(図示せず)を有する。ここでは、MACアドレスは、ノードまたはHEMSコントローラ100に「固有の識別情報」の一実施例であり、また、IPアドレスはノードまたはHEMSコントローラ100に割当てられる「可変の識別情報」の一実施例である。
図1を参照して、無線LANルーター302のサブネットマスクが255.255.255.0に設定されていたとする。無線LANルーター302によって付与されたIPアドレスから分かるように、IPアドレスのうちのネットワークアドレスとして使用される部分(たとえば“192.168.11.5”であれば“192.168.11”の部分)が共通であるノードの集合が1つのサブネット10(分割されたネットワーク)を構成している。
ノード201には、本来ならIPアドレスは“192.168.11.X”が割当てられるはずである。しかし、図1では、ノード201には、DHCPが無効に設定されており、静的なIPアドレス、例えば、 “192.168.100.100”が設定されているものとする。このIPアドレスは、無線LANルーター302が管理するサブネット10の範囲内ではない。従って、HEMSコントローラ100(探索機器)は、ノード201(被探索機器)との間で、通常の方法では、IPレベルのパケットを送受信することができない。
しかしながら、HEMSコントローラ100(探索機器)は、ノード201(被探索機器)から送信されるARP(Address Resolution Protocol)リクエストを受信できる。ARPリクエストは、MACレベルで送受信されるからである。したがって、HEMSコントローラ100は、ノード201を、起動ノードとして検出することができる。
本実施の形態では、ノード201にIPアドレスが誤って設定されている場合でも、HEMSコントローラ100は、ダミーのIPアドレスを用いて、IPレベルで、ノード201を探索することができる。
なお、本実施の形態では、HEMSコントローラ100は、サブネット10に存在する目的ノードを探索する主体である探索機器の一例であり、ノード201,202,203,…それぞれは、探索の対象となり得る被探索機器の一例である。また、本実施の形態においては、「起動ノード」とは、電源が入り起動中のノードをいう。また、本実施の形態では、“IPアドレスの誤った設定”とは、被探索機器に、サブネット10のサブネット体系に基づくIPアドレスとは異なるIPアドレスが設定されていることを示す。探索機器による探索処理および上述のダミーのIPアドレスを用いた探索処理の詳細については、後述する。
<HEMSコントローラの構成>
図2は、図1のHEMSコントローラ100のブロック図である。図2を参照して、HEMSコントローラ100は、CPU(Central Processing Unit)1101を備える。HEMSコントローラ100は、さらに、CPU1101に接続されたROM(Read Only Memory)1107、発光素子1103、高速通信インターフェイス1104、電源1105、時間(時刻)を測定するタイマ1106、RAM(Random Access Memory)1102、プッシュボタン1108、スライドスイッチ1109、およびリセットスイッチ(図示しない)を備える。
CPU1101は、HEMSコントローラ100の全体的な動作を制御する。CPU1101は、プッシュボタン1108およびスライドスイッチ1109からの入力を受け付ける。また、CPU1101は、発光素子1103に発光指示を出力する。
ROM1107はプログラムや変更不可なデータ等が格納される不揮発性のメモリデバイスである。RAM1102はプログラムがロードされ、プログラムのワークエリアやファイルシステム、変更可能なデータ等が格納される揮発性のメモリデバイスである。高速通信インターフェイス1104は、無線LANルーター302との間でEthernet(登録商標)を用いた通信を行なうインターフェイスである。電源1105は、HEMSコントローラ100の各部に電力を供給する。
<HEMSコントローラ100のソフトウェア構成>
図3は、図1のHEMSコントローラ100のソフトウェア構成を説明するための図である。図3を参照して、HEMSコントローラ100は、デバイス側アプリケーション110、ホスト側アプリケーション120、および上位層130を少なくとも備える。デバイス側アプリケーション110はUDP(User Datagram Protocol)ソケット111を含む。UDPソケット111は送信用と受信用に使用される。また、ホスト側アプリケーション120は、送信用のUDPソケット121、および送受信用のRAWソケット122を含む。また、ホスト側アプリケーション120は、RAM1102にノードリスト123(後述する)を記憶する。
デバイス側アプリケーション110は、HEMSコントローラ100自身が、ECHONET Liteにおけるコントローラクラスとして振る舞うためのアプリケーションである。デバイス側アプリケーション110は、ノード201,202,203,…から要求があれば、それらを受信して、当該要求に対して応答または通知を送信する。デバイス側アプリケーション110は、本実施の形態にとって必要ではない。
ホスト側アプリケーション120は、RAWソケット122を通じて、サブネット10に接続された起動ノードからパケットを受信する。ホスト側アプリケーション120は、ノードリスト123の情報を最新の状態に維持する。
ホスト側アプリケーション120は、さらに、上位層130(家電制御アプリケーション等)にAPI(Application Programming Interface)を提供する。ホスト側アプリケーション120は、上位層130からの指示を受けて、最新のECHONET Lite機器のリストなどを上位層130に返す。また、ホスト側アプリケーション120は、上位層130からの指示を受けて、ノードへ要求を送信する。また、ホスト側アプリケーション120は、通知または当該要求に対する応答を当該ノードから受信し、上位層130へ返す。
なお、上位層130としては、家電制御アプリケーション、家電制御CGI(Common Gateway Interface)などがある。これらは互いに独立である。各々が独立して、ホスト側アプリケーション120と通信する。家電制御アプリケーションは、サーバ装置901と通信することによって、端末902からのユーザ指示を間接的に受信することができる。
デバイス側アプリケーション110およびホスト側アプリケーション120の各々は、パケットを送信するときは送信先UDPポート番号を3610にする。送信元UDPポート番号は任意で良い。デバイス側アプリケーション110およびホスト側アプリケーション120の各々は、パケットを受信するときは、送信先UDPポート番号が3610であるパケットを処理する。
ホスト側アプリケーション120は、送信用にUDPソケット121を開く。なお、上述したように、ホスト側アプリケーション120は、UDPソケット121の送信元ポート番号を任意に設定する。
ホスト側アプリケーション120は、送受信用にRAWソケット122を開く。RAWソケット122を開くのは、パケットを受信すると同時に送信元MACアドレスも得るためである。RAWソケット122は、サブネット10上を伝送されるデータのうち、ネットワークインターフェイス“eth0”で受信できるデータをすべて受信する。ホスト側アプリケーション120は、受信した全てのデータの中から、UDP/IPかつ宛先UDPポート番号が3610であるデータを利用する。あるいは、後述するARPパケットまたは任意のIPパケットなどを利用する。
上記の構成を有したHEMSコントローラ100は、サブネット10上の目的ノードを制御するために、目的ノードを探索する。より詳しくは、HEMSコントローラ100は、探索要求パケットをマルチキャストあるいはブロードキャストでサブネット10に送信する。それに加えて、HEMSコントローラ100は、探索要求パケットをユニキャストでも送信する。ここで目的ノードとは、被探索機器のことである。図1の例で言えば、電力モニタ201、ECHONET Liteノード202、203が相当する。
本実施の形態では、HEMSコントローラ100は、サブネット10における起動ノードの最新の情報(後述するノード情報)を、ノードリスト123(詳細は後述する)によって管理する。HEMSコントローラ100は、探索要求パケットを送信する場合は、マルチキャストあるいはブロードキャストで送信するとともに、サブネット10上に起動しているノードのノード情報に基づき、当該ノード情報のIPアドレスを宛先アドレスとする探索要求パケットをユニキャストで送信する。これにより、マルチキャストあるいはブロードキャストが転送されないようなネットワーク環境であっても、HEMSコントローラ100は、目的ノードを見つけることができる。
(ノードリストの構成)
HEMSコントローラ100が有するノードリスト123には、サブネット10における「起動ノード」の情報を管理するためのノード情報が登録される。図4は、ノードリスト123の構成を説明するための図である。ノードリスト123は複数のノード情報を含むコンテナである。サブネット10で見つかった1つのノードにつき1つのノード情報がある。ノードリスト123の構成方法は、いろいろ考えられるが、目的とするノード情報を高速に検索できるようにハッシュテーブルの構成とするのが良い。可変長の配列(図4の例では、[0]から[22]まで23個の配列要素がある)と、配列要素のそれぞれはリンクリストで構成される。配列の長さは、ノード情報の個数が増えるに従って動的に拡張される。図4の構成は、ハッシュテーブルの構成としては一般的なものである。ノード情報は、当該ノードのMACアドレスとIPアドレスを少なくとも含む。
ノードリスト123からノード情報を読み出す時には、パケットを受信した送信元MACアドレスに基づき検索される。具体的には、当該MACアドレスから所定ハッシュ演算により算出されたハッシュ値が、ノードリスト123の配列の長さ(図4の例では、値23)で除算される。そして、ノードリスト123において、当該余りを示す値に対応した要素のリンクリストをたどっていき、当該MACアドレスに一致するMACアドレスを有したノード情報が読み出される。
ノード情報の書き込み時には、先ほどと同様に、パケットを受信した送信元のMACアドレスから算出されたハッシュ値が、ノードリスト123の配列の長さ(図4の例では、値23)で除算される。そして、ノードリスト123において、当該余りを示す値に対応した要素のリンクリストの先頭または最後に、当該ノード情報が登録される。
図5は、本実施の形態1に係るノード情報の構成の一例を示す図である。図5を参照して、ノード情報は、当該ノードのMACアドレス、IPアドレス、当該ノード情報をノードリスト123から削除すべき時刻、削除前ARP(Address Resolution Protocol)リクエスト送信済みフラグ、および探索要求パケット送信カウンタを少なくとも含む。
サブネット10においては、上述したようにノードが参加または離脱する可能性がある等、サブネット10の状態は変化する。この変化に追従するために、ノードリスト123からは起動が確認されないノード情報は削除されなければならない。ノード情報には、削除すべき時刻が含まれており、削除すべき時刻に到達すれば削除される。例えば、削除すべき時刻は、HEMSコントローラ100が、当該ノード情報のパケットを最後に(最近に)受信したときから、所定時間後(例えば15分経過後の)時刻とする。HEMSコントローラ100は、削除すべき時刻を、当該ノードからパケットを受信する毎に更新する。削除すべき時刻の設定方法の詳細は後述する。
削除前ARPリクエスト送信済みフラグは、HEMSコントローラ100がノード情報を削除する直前にARPリクエスト送信済みであるか否かを判断するために使われる。削除前ARPリクエスト送信済みフラグが0であれば、当該ノードのIPアドレスを探索IPアドレスにしてARPリクエストを送信する。その応答があれば、ノード情報は削除されない。削除前ARPリクエスト送信済みフラグの初期値は0とする。
探索要求パケット送信カウンタは、HEMSコントローラ100が、当該ノードが目的とするノードであるかどうかを調べるために探索要求パケットを送信した回数をカウントしたものである。探索要求パケットが届かない可能性もあるので、同一ノードに対して探索要求パケットを何度も送信することとする。探索要求パケット送信カウンタの初期値は0である。
<パケットの構成>
サブネット10上を伝送されるデータを説明する。本実施の形態では、伝送データはパケットの構成を有する。
図6は、ARPパケットの構成を示す図である。ARPリクエストまたはARPリプライは、図6のARPパケットの構成を有する。
図6を参照して、ARPパケットは、Ethernetヘッダ部と、ARPプロトコル部を含む。Ethernetヘッダ部は、宛先ノードのMACアドレス、送信元ノードのMACアドレス、および上位層プロトコルのタイプを含む。上位層がARPパケットである場合は、このプロトコルのタイプは“ARP”を示す。
ARPプロトコル部は、ネットワークの物理的な媒体(本実施の形態ではEthernet)の種類、ARPプロトコルで取り扱う上位のプロトコルの種類(本実施の形態ではIP)、物理層で利用されるアドレスの長さを示すハードウェアサイズ、および上位プロトコルで利用されるアドレスの長さを示すプロトコルサイズを含む。さらに、ARPの動作の種類を表すためのOPコード、送信者MACアドレス、送信者IPアドレス、探索MACアドレス、および探索IPアドレスを含む。OPコードには、ARP要求を表す“request”およびARP要求に対する応答を表す“reply”のいずれかがセットされる。
送信者MACアドレスおよび送信者IPアドレスは、ARPリクエストまたはARPリプライを送信したノード自身のMACアドレスおよびIPアドレスをそれぞれ示す。
ARPパケットがARPリクエストを示す場合には、探索MACアドレスには0にセットされ、探索IPアドレスには探索したいIPアドレスがセットされる。ARPパケットがARPリプライを示す場合には、探索MACアドレスおよび探索IPアドレスには、対応するARPリクエストの送信ノードのMACアドレスおよびIPアドレスがそれぞれセットされる。
図7は、任意のIPパケットの構成を示す図である。図7を参照して、任意のIPパケットは、Ethernetヘッダ部と、IPヘッダ部とペイロード部を含む。Ethernetヘッダ部は、宛先ノードのMACアドレス、送信元ノードのMACアドレス、および上位層プロトコルのタイプを含む。上位層がIPパケットである場合は、このプロトコルのタイプは“IP”を示す。
IPヘッダ部は、IPプロトコルのバージョンとIPヘッダ部分のサイズとを示すヘッダ長、サービスタイプ、パケット長、IPパケットに識別子、フラグとフラグメントオフセット、TTL(time to live)、上位層のプロトコル番号、および整合性検査のためのヘッダチェックサムを含む。上位層のプロトコル番号には、例えば、上位層がUDPパケットまたはDHCPパケットならば“17”が入る。IGMPパケットならば“2”が入る。
さらに、IPヘッダ部は、当該IPパケットの送信元ノードのIPアドレスを示す送信元IPアドレス、および当該IPパケットの宛先ノードのIPアドレスを含む。さらにペイロード部には、上位層の具体的なデータが含まれる。例えば、上位層がUDPパケットの場合ならばUDPヘッダ部が続く。
本実施の形態では、HEMSコントローラ100および各ノードは、パケットを受信した場合には、当該パケットのタイプに基づき、当該パケットはARPパケットであるかIPパケットであるかを判断することができる。
<MACアドレスとIPアドレスとの組が正しくない場合>
HEMSコントローラ100が、任意のIPパケットを受信したとき、その送信元MACアドレスと送信元IPアドレスとの組が正しくない可能性がある。
例えば、任意のIPパケットが、無線LANルーター302を超えたネットワーク(すなわち、サブネット10とは異なるネットワーク)から送信されたものである場合には、当該IPパケットの送信元IPアドレスには真の送信者のIPアドレスがセットされているが、送信元MACアドレスには、無線LANルーター302のMACアドレスがセットされている。
また、IPパケットがDHCPパケットである場合は、送信元IPアドレスは、一律に0.0.0.0にセットされている。このような場合は、送信元MACアドレスと送信元IPアドレスとの組が正しくないと言える。
<ノードリスト123の管理>
次に、HEMSコントローラ100によるノードリスト123の管理について説明する。ノードリスト123は初期状態で空であるが、ノードリスト123の管理処理によって、サブネット10における「起動ノード」の情報の追加または削除が行われる。
図9は、実施の形態1に係るノードリスト123からノード情報を削除するための処理を示すフローチャートである。
図10は、本実施の形態1に係るARPリクエストまたはARPリプライを受信した時のノードリスト123の情報更新の処理を示すフローチャートである。
図11は、本実施の形態1に係る任意のIPパケットを受信した時のノードリスト123の情報更新の処理を示すフローチャートである。
(ノード情報の削除処理)
図9を参照して、ノードリスト123からノード情報を削除する処理を説明する。図9の処理は定期的に(例えば250ms毎に)実行される。
まず、HEMSコントローラ100は、ノードリスト123から次のノード情報を取り出す(ステップS3)。次のノード情報がなければ(ステップS5でNO)、処理を終了する。次のノード情報があれば(ステップS5でYES)、HEMSコントローラ100は、当該ノードがタイムアウトされたか(削除すべき時刻になったか)否かを判断する(ステップS7)。
当該ノードがタイムアウトされていなければ(ステップS7でNO)、ステップS3に戻る。ノードリスト123から次のノード情報を取り出して、ステップS5以降の処理が同様に実行される。
当該ノードがタイムアウトされていれば(ステップS7でYES)、HEMSコントローラ100は、当該ノードの削除前ARPリクエスト送信済みフラグが“0”であるか否かを判断する(ステップS9)。
削除前ARPリクエスト送信済みフラグが“0”であるならば(ステップS9でYES)、HEMSコントローラ100は、当該ノードのIPアドレスを探索IPアドレスとするARPリクエストを送信する。ただし、当該ノードのIPアドレスが0.0.0.0のときは(一時的なIPアドレスなので)ARPリクエストを送信せずすぐに当該ノードのノード情報を削除する(ステップS11)。
HEMSコントローラ100は、上記のARPリクエストを送信した場合に、ノード情報のリクエスト送信済みフラグを“1”にセットし(ステップS13)、当該ノードの削除すべき時刻を10秒間だけ延長する(ステップS15)。その後、ステップS3に戻る。
ステップS9において、削除前ARPリクエスト送信済みフラグが“0”でないならば(ステップS9でNO)、HEMSコントローラ100は、ノードリスト123から当該ノードのノード情報を削除する(ステップS17)。その後、ステップS3に戻る。
このように、HEMSコントローラ100は、基本的には、各ノード情報の削除すべき時刻になれば当該ノード情報をノードリスト123から削除するが、削除する直前に当該ノードがまだ起動しているかどうかを確認するために(RAWソケット122を通じて)ARPリクエストを送信する。当該ノードからARPレスポンス(または任意のIPパケット)を10秒以内に受信できなければ当該ノード情報は削除される。当該ノードからARPレスポンス(または任意のIPパケット)を受信できれば当該ノード情報は削除されない。
(ノード情報の登録処理)
HEMSコントローラ100は、RAWソケット122を通じてパケットを受信したときに、送信元MACアドレスに基づきノードリスト123へノード情報を登録する。この対象となるパケットは、ARPリプライまたはARPリクエストのパケット、および任意のIPパケットである。
−ARPリプライ/ARPリクエスト受信時の登録処理−
まず、図10を参照してARPリプライまたはARPリクエストのパケットを受信した場合の登録処理を説明する。図10の処理は、ARPリクエストまたはARPリプライを受信する毎に実行される。また、HEMSコントローラ100により生成されたダミーのIPアドレスは、RAM1102に格納されている。
ただし、送信元MACアドレスと送信者MACアドレスとが一致しない場合もあるが、その場合は、HEMSコントローラ100は図10の処理を実施しない(重複IPアドレスを検出したときに、ルーターからもARPリプライが来ることがある)。従って、図10に記載された送信者MACアドレスは、送信元MACアドレスと同一の値である。
HEMSコントローラ100は、まず、受信されたパケットの内容に基づき、探索IPアドレスとしてダミーのIPアドレスが設定されたARPリクエスト(図17参照)を受信したかを判断する(ステップS18)。
HEMSコントローラ100は、受信されたパケットは、探索IPアドレスとしてダミーのIPアドレスが設定されたARPリクエストであると判断した場合(ステップ18でYES)、HEMSコントローラ100は、RAWソケット122を介して、ARPリプライ(図18参照)を送信する(ステップS19)。その後、処理は、ステップS20に移る。ステップS18〜S19の処理については、後述する図15のパスP3(ARPリプライ)に相当する。
一方、HEMSコントローラ100は、受信されたパケットは、探索IPアドレスとしてダミーのIPアドレスが設定されたARPリクエストではないと判断した場合(ステップ18でNO)、処理は、ステップS20に移行する。
ステップS20では、HEMSコントローラ100は、受信したパケット(ARPリクエストまたはARPリプライ)の送信者MACアドレスをキーに、ノードリスト123からノード情報を取り出す(ステップS20)。当該送信者MACアドレスに一致するノード情報があるか否かを判断する(ステップS21)。
当該送信者MACアドレスに一致するノード情報がなければ(ステップS21でNO)、HEMSコントローラ100は、ノード情報を新規作成する(ステップS22)。このノード情報のMACアドレスおよびIPアドレスとして、受信されたパケットの送信者MACアドレスと送信者IPアドレスがそれぞれセットされる。また、当該ノード情報のパケット送信カウンタは0(初期値)にセットされる。
HEMSコントローラ100は、新規作成されたノード情報を、ノードリスト123に追加して登録する(ステップS23)。また、HEMSコントローラ100は、受信した当該ノード情報の削除すべき時刻53に、現在時間よりも15分経過後の時刻をセットする。また、削除前ARPリクエスト送信済みフラグを0(初期値)にセットする(ステップS26)。
ステップS21において、当該送信者MACアドレスに一致するノード情報があれば(ステップS21でYES)、HEMSコントローラ100は、当該ノード情報のIPアドレスが、受信されたパケットの送信者IPアドレスと一致するか否かを判断する(ステップS24)。一致すると判断すると(ステップS24でYES)、ステップS26において、当該ノード情報について前述(ステップS26)と同様の処理が実行される。
当該ノード情報のIPアドレスが、受信されたパケットの送信者IPアドレスと一致しないならば(ステップS24でNO)、HEMSコントローラ100は、当該ノード情報のIPアドレスを送信者IPアドレスに更新する(ステップS25)。その後、ステップS26の処理が上述と同様に実行される。
図10の処理によって、HEMSコントローラ100は、ARPリクエストまたはARPリプライを受信する毎に当該ノードのノード情報の削除すべき時刻を、パケットを受信した時の時刻から15分後を示すように更新(時間を延長)する。
−任意のIPパケット受信時の登録処理−
次に、図11を参照して、任意のIPパケットを受信した場合の登録処理を説明する。HEMSコントローラ100は、任意のIPパケットを受信する毎に図11の処理を実行する。任意のIPパケットには、IGMPパケット、ICMP(Internet Control Message Protocolの略)パケット、DHCPパケット、UDPパケットおよびTCP(Transmission Control Protocolの略)パケットなどが含まれる。
図11を参照して、HEMSコントローラ100は、受信したIPパケットの送信元MACアドレスをキーに、ノードリスト123からノード情報を取り出す(ステップS30)。HEMSコントローラ100は、送信元MACアドレスに一致するノード情報があるか否かを判断する(ステップS31)。送信元MACアドレスに一致するノード情報があれば(ステップS31でYES)、HEMSコントローラ100は、図10のステップS26の処理と同様に、当該ノード情報の削除すべき時刻に、現在時刻よりも15分経過後の時刻をセットし、また、リクエスト送信済みフラグを0にセットする(ステップS35)。
送信元MACアドレスに一致するノード情報がなければ(ステップS31でNO)、HEMSコントローラ100は、ノード情報を新規に作成する(ステップS32)。HEMSコントローラ100は、このノード情報に、受信されたパケットの送信元MACアドレスをMACアドレスとしてセットするとともに、IPアドレスには0.0.0.0をセットする。また、パケット送信カウンタには0をセットする。
本実施の形態では、上記の“(MACアドレスとIPアドレスとの組が正しくない場合)”で説明したように、受信されたIPパケットの送信元MACアドレスと送信元IPアドレスとの組は常に正しいとは限らない。したがって、HEMSコントローラ100は、新規に作成したノード情報のIPアドレスに、上述のように 0.0.0.0を一時的に
セットする。
HEMSコントローラ100は、新規作成されたノード情報を、ノードリスト123に追加する(ステップS33)。
また、HEMSコントローラ100は、受信したIPパケットの送信元IPアドレスを、探索IPアドレスにセットしたARPリクエストを送信する(ステップS34)。なお、このとき、受信IPパケットの送信元IPアドレスが0.0.0.0を示す場合には、ARPリクエストを送信しない。その後、新規作成されたノード情報について、ステップS35の処理が実行される。
HEMSコントローラ100は、上記のステップS34においてARPリクエストを送信した後に、これに対するARPリプライを受信した場合には、図10のフローに従って、ステップS25の処理を実行することになる。これにより、当初0.0.0.0とセットされていたノード情報のIPアドレスが正しいIPアドレスに更新される。
このように、図11の場合も、図10と同様に、HEMSコントローラ100は、ノードから任意のIPパケットを受信する毎に、当該ノードのノード情報の削除すべき時刻を、パケットを受信した時刻の15分後を示すように更新(時間を延長)する。
上述の削除処理(図9参照)は、図10と図11で更新される削除すべき時刻に基づき実行されるから、起動ノードについては、起動が確認される間は、ノード情報は削除されることはない。したがって、図9〜図11の処理によって、サブネット10上の「起動ノード」に関する情報を最新の状態に維持することができる。図9〜図11の処理は、基本的には、パケットを受信したときに実行される処理である。「サブネット10上にある起動ノードの存在を受動的に検出する」というのはそれゆえのことである。
<目的ノードの探索処理>
次に、HEMSコントローラ100が目的ノードをサブネット10上で探索する処理を説明する。
本実施の形態では、HEMSコントローラ100は、サブネット10に探索要求パケットを送信し、それに対応する探索応答パケットを受信することにより、当該目的ノードを見つける。ここでは、目的ノードを見つけることを「探索に成功する」ともいう。
図12は、本実施の形態1に係る目的ノードを探索する処理のフローチャートである。HEMSコントローラ100は、図12の処理を一定間隔で(例えば、3分毎に)実行する。
図12を参照して、HEMSコントローラ100は、宛先IPアドレスをマルチキャスト・アドレスにセットした探索要求パケットを送信する(ステップS40)。マルチキャスト・アドレスとポート番号については、探索機器と被探索機器との間で予め定められている。
例えば、被探索機器がECHONET Lite(登録商標)機器である場合、マルチキャスト・アドレスは224.0.23.0に、また、ポート番号は3610とする。
他の例として、被探索機器がUPnP(Universal Plug and Play- Simple Service Discovery Protocol)デバイスである場合、マルチキャスト・アドレスは239.255.255.250に、また、ポート番号は1900とする。
本実施の形態では、サブネット10上の目的ノードを確実に探索するために、HEMSコントローラ100は、ノードリスト123の各ノード情報に基づいて探索要求パケットを生成して、ユニキャストで送信する(ステップS41とS42)。
具体的には、HEMSコントローラ100は、探索要求パケットの宛先IPアドレスを、ノードリスト123のノード情報から1つ選択する。この選択においては、ノードリスト123の各ノード情報から、探索要求パケット送信カウンタの値が最小であるノード情報を選択するのがよい。そのように選択したノード情報のMACアドレスおよびIPアドレスを、宛先MACアドレスおよび宛先IPアドレスにそれぞれセットして探索要求パケットを生成し、ユニキャストで送信する。
本実施の形態では、上述のステップS41におけるノード情報選択時に、IPアドレスが0.0.0.0であるノード情報を選択の対象から外す。これは、ステップS32(図11)でノード情報を新規作成した後、IPアドレスが更新されていない場合があるからである。
また、HEMSコントローラ100は、探索応答パケットを既に受信しているノードについても選択の対象から外す。これは、当該ノードについては既に探索に成功しているからであり、再度探索する必要はないからである。さらに、HEMSコントローラ100は、パケット送信カウンタが上限値(例えば、30回)に達しているノード情報も選択の対象から外す。これは、当該ノードに対して探索要求パケットを何度も繰り返し送信しているにもかかわらず、探索応答パケットを受信していないということは、当該ノードは目的とするノードではないと判断できるからである。ステップS41において、ノードリスト123で管理しているすべてのノード情報が、対象外である場合には、ステップS41にてユニキャストで送信する必要はない。
ノードリスト123の各ノード情報に基づいて探索要求パケットが生成されて、ユニキャストで送信される場合に(ステップS41とS42)、HEMSコントローラ100は、当該ノード情報の機器について、“ダミーのIPアドレスを用いた探索”を実施する(ステップS42a)。“ダミーのIPアドレスを用いた探索”の詳細は後述する。
HEMSコントローラ100は、選択されたノード情報のIPアドレスに基づいた探索要求パケットをユニキャストで送信したとき、当該ノード情報の探索要求パケット送信カウンタの値をインクリメントする(ステップS43)。
なお、上記の探索要求パケットの送信元MACアドレスおよび送信元IPアドレスには、HEMSコントローラ100が有するMACアドレスおよびIPアドレスがセットされる。
HEMSコントローラ100は、探索要求パケットに対する探索応答パケットを受信するために所定期間(例えば、5秒間)経過するまで待つ(ステップS44)。
探索応答パケットは、IPパケット(図7参照)の構成を有する。具体的には、探索応答パケットの送信元MACアドレスおよび送信元IPアドレスには、送信元ノードが有するMACアドレスおよびIPアドレスがそれぞれセットされている。
ステップS44で、HEMSコントローラ100は、複数個の探索応答パケットを受信する場合があり得る(探索要求パケットをマルチキャストで送信しているため)。したがって、探索要求パケットを送信してから所定期間(例えば、5秒間)は必ず待つようにする。この所定期間内に探索応答パケットを受信し、その内容が先に送信した探索要求パケットに対する応答であることを確認できれば、目的ノードを見つけることができたと判断する。この場合には、HEMSコントローラは、目的ノードのノード情報を別途管理する。この管理方法は、本発明の範囲ではないので説明を省略する。
<ダミーのIPアドレスを用いた探索>
本実施の形態では、探索機器(HEMSコントローラ100)は、被探索機器にIPアドレスが誤って設定されていると判断したときは、ダミーのIPアドレスを有した探索要求パケットを用いた探索を実施する(ステップS42a)。
ダミーのIPアドレスを用いた探索について、IPアドレスとして“192.168.100.100”(以下、アドレス(A)と称する)を有した起動ノードが発見された場合を想定して説明する。
HEMSコントローラ100は、ダミーのIPアドレスを用いた探索のために、アドレス(A)は、探索機器(HEMSコントローラ100)が属するサブネット10のサブネット体系のアドレスであるか否かを判断する。HEMSコントローラ100は、アドレス(A)が当該サブネット体系のアドレスはないと判断した場合、ダミーのIPアドレスを生成する。HEMSコントローラ100は、生成されたダミーのIPアドレスを用いて、当該起動ノードが目的ノードであるかを判断するための探索シーケンスを実施する。HEMSコントローラ100は、アドレス(A)が当該サブネット体系のアドレスであると判断した場合、通常の方法で、探索シーケンスを実施する。
a.アドレス判断処理
まず、アドレス(A)が、サブネット10のサブネット体系のアドレスであるかの判断処理について説明する。
HEMSコントローラ100は、探索機器(HEMSコントローラ100)のIPアドレスとサブネットマスクとから、アドレス(A)がサブネット体系のアドレスであるか否かを判断する。HEMSコントローラ100は、探索機器のIPアドレスとサブネットマスクを、プログラムにより取得することができる。
具体的には、探索機器のIPアドレス=192.168.11.5(以下、アドレス(B)と称する)、およびサブネットマスク=255.255.255.0(以下、サブネットマスク(C)と称する)が取得された場合、HEMSコントローラ100は、以下の演算に従いネットワークアドレスを取得する。
演算では、HEMSコントローラ100は、まず、アドレス(A)とサブネットマスク(C)との第1の論理積演算(ビットAND)を実施する。この演算により、アドレス“192.168.100.0”が算出される。また、HEMSコントローラ100は、アドレス(B)とサブネットマスク(C)との第2の論理積演算(ビットAND)を実施する。この演算により、アドレス“192.168.11.0”が算出される。HEMSコントローラ100は、第1および第2の論理積演算の各算出値を比較し、比較結果に基づき、第1の論理積演算の算出値が、第2の論理積演算の算出値とは異なっていると判断すれば、HEMSコントローラ100は、アドレス(A)は、探索機器(当該起動ノード)が属するサブネット体系のアドレスではないと判断する。
b.ダミーのIPアドレス生成処理
上記に述べたように、起動ノードのアドレス(A)(“192.168.100.100”)はサブネット体系のアドレスではないと判断された場合には、HEMSコントローラ100は、ダミーのIPアドレスを生成する。
HEMSコントローラ100は、アドレス(A)と同じサブネット体系であって、当該アドレス(A)とは異なるIPアドレスを生成する。ただし、生成されるべきIPアドレスは、他の起動ノードのIPアドレスと重複してはならない。
ダミーのIPアドレスの生成処理において、HEMSコントローラ100は、アドレス(A)と同じサブネット体系に対応したサブネットマスクを求めるために、まず、サブネットマスクにより示され得るアドレスの範囲が一番狭いサブネットマスクを仮定する。具体的には、HEMSコントローラ100は、図14のIPアドレスのサブネットマスク表の中から、アドレスの範囲が一番狭いサブネットマスク(クラスC、プレフィックス/30)、すなわちサブネットマスク“255.255.255.252”を取得する(サブネットマスクはプログラムにより取得される)。
HEMSコントローラ100は、サブネットマスク“255.255.255.252”を用いて、ダミーIPアドレスの候補を求める。ダミーIPアドレスの候補は、アドレス(A)の“192.168.100.100”とサブネットマスク“255.255.255.252”とを用いた以下の第3の論理積演算(ビットAND)を実施することにより算出される。第3の論理積演算は、2進数を用いて以下の式で示される。
11000000.10101000.01100100.01100100 (192.168.100.100)
11111111.11111111.11111111.11111100 (255.255.255.252)
-----------------------------------
11000000.10101000.01100100.01100100 (192.168.100.100)
上記の式の各値の下位2ビットはホスト部のビットを示す。したがって、HEMSコントローラ100が、生成可能なIPアドレスは、以下の4個(=2^2)ある。
11000000.10101000.01100100.01100100 (192.168.100.100)
11000000.10101000.01100100.01100101 (192.168.100.101)
11000000.10101000.01100100.01100110 (192.168.100.102)
11000000.10101000.01100100.01100111 (192.168.100.103)
HEMSコントローラ100は、第3の論理積演算により算出された複数のIPアドレス(上記の4個のIPアドレス)のうちから、予め定められた選択基準に従い、ダミーのIPアドレスを選択する。
この選択基準によれば、上記の複数のIPアドレスのうち、ホスト部のビットがすべて“1”であるIPアドレスおよびホスト部のビットがすべて“0”であるIPアドレスは、ダミーのIPアドレスとして選択されない。また、上記の複数のIPアドレスのうち、起動ノードの情報を管理するノードリスト123(後述する)に登録されたIPアドレスと一致するものも、ダミーのIPアドレスとして選択されない。例えば、上記の4個のIPアドレスのうち“192.168.100.101”がノードリスト123に既に登録されている場合には、“192.168.100.101”はダミーのIPアドレスとして選択されない。
したがって、HEMSコントローラ100は、上記の第3の論理積演算により算出された4個のIPアドレスのうち、選択基準に従い、“192.168.100.102”をダミーのIPアドレスとして選択する。
上記のサブネットマスク“255.255.255.252”により算出されたIPアドレスの範囲(上記の4個のIPアドレス)から、選択基準に従うIPアドレスが選択された場合には、当該IPアドレスはダミーのIPアドレスとして決定される。
一方、サブネットマスク“255.255.255.252”を用いて、選択基準に従うIPアドレスが、すなわちダミーのIPアドレスが決定されなかった場合には、HEMSコントローラ100は、新たなサブネットマスクを用いてダミーのIPアドレスを生成する。つまり、HEMSコントローラ100は、サブネットマスクにより示されるアドレスの範囲が2番目に狭いサブネットマスク(図14の表の(クラスC、プレフィックス/29)の“255.255.255.248”)を用いて、上述したダミーのIPアドレス生成の処理によって、ダミーのIPアドレスを生成する。
このように、HEMSコントローラ100は、サブネットマスクにより示されるアドレスの範囲が小さいものから順にサブネットマスクを切替えながら、上述の選択基準に従うIPアドレス(ダミーのIPアドレス)が取得されるまで、上記に述べたダミーのIPアドレス生成の処理を繰返す。これにより、IPアドレスが誤って設定されている被探索機器に対しては、当該被探索機器の誤って設定されたIPアドレスに近いダミーのIPアドレス(すなわち、誤って設定されたIPアドレスの値との差が小さい値のIPアドレス)が生成される。
c.探索シーケンス
図15は、本実施の形態におけるダミーのIPアドレスを用いた探索シーケンスを模式的に示す図である。図16〜図19は、図15の探索シーケンスで転送されるパケットの構成を説明する図である。図15に示された探索シーケンスの前提は、以下の通りである。
探索機器(HEMSコントローラ100)には、MACアドレスとして“MA1”が設定され、およびIPアドレスとして“IA1”(192.168.11.5)が設定されている。また、被探索機器(ノード201)には、MACアドレスとして“MA2”が設定され、IPアドレスとして“IA2”(192.168.100.100)が設定されている。探索機器は、起動ノードと判断された被探索機器のIPアドレス(192.168.100.100)は、探索機器が属するサブネット体系のアドレスではない(すなわち、誤って設定されたIPアドレスである)と判断する。探索機器は、当該判断結果に基づき、ダミーのIPアドレスとして“IA3”(192.168.100.102)を生成する。
探索機器は、あらかじめ、ARPパケットまたは任意のIPパケットを監視することによって、ノード201の存在を認識しているものとする。すなわち、探索機器は、ノード201を起動ノードとして検出できており、そのMACアドレス“MA2”とそのIPアドレス“IA2”を把握している。ただし、ノード201が本当に目的機器であるかどうかはまだ分からない。
探索機器は、起動ノード(被探索機器)が目的ノードであるかどうかを、探索要求パケット(図16参照)を送信し(図15のパスP1を参照)、被探索機器から探索応答パケット(図19参照)を受信する(図15のパスP4を参照)ことより判断する。
図15の探索シーケンスにより、探索機器が被探索機器を目的機器として検出に成功するには、被探索機器が、探索要求パケットを受信することができ、および探索機器が探索応答パケットを受信できることの両方が必要である。
−探索要求パケットの送信−
図15の探索要求パケットの送信を説明する。探索機器は、IPパケットである探索要求パケットを生成し、生成された探索要求パケットを送信する。探索要求パケットは、ノードリスト123のノード情報に基づき生成される。
探索機器は、探索要求パケットを、通常IPレベルのパケットとして送信する。このとき、探索機器は、宛先IPアドレスを、探索機器が属するサブネット体系のアドレスとは異なるアドレスであると判断すると、通常、デフォルト・ゲートウェイに探索要求パケットを転送しようとする。デフォルト・ゲートウェイは通常ルーターに設定されるので、この場合、探索機器は、探索要求パケットをルーターに転送しようとする。探索要求パケットがルーターに転送されてしまうと、ルーターにとって、当該探索要求パケットの宛先IPアドレスは管轄外であるため、探索要求パケットをLAN側に転送しない。従って、探索要求パケットは被探索機器へ届かない。
しかし、実施の形態1では、探索機器は、通常のIPレベルで探索要求パケットを送信せずに、RAWソケット122に、図16の探索要求パケットを生成させて、生成された探索要求パケットを送信させる。パケットが相手先に届くというのは、結局のところ、Ethernet(登録商標)のレベルでは、宛先MACアドレスが正しく設定されていれば良いのである。RAWソケットを使えば、直接、宛先MACアドレスを“MA2”に設定することで、デフォルト・ゲートウェイに転送されることなく、被探索機器(ノード201)にパケットを届けることができる。
図16を参照して、探索要求パケットの宛先MACアドレスには、ノードリスト123のノード情報から読出されたMACアドレス“MA2”が設定される。また、探索要求パケットの送信元IPアドレスには、ダミーのIPアドレス“IA3”が設定される。ダミーのIPアドレス“IA3”は、被探索機器と同じサブネット体系のアドレスを示す。本実施の形態では、探索要求パケットに、送信元IPアドレスとして、ダミーのIPアドレスが設定されることを、“偽装する”という。
上記の送信元IPアドレスを偽装する理由について説明する。本来なら、探索要求パケットの送信元IPドレスには“IA1”が設定されるべきである。しかし、送信元IPアドレスとして“IA1”が設定された場合には、被探索機器は、探索要求パケットを受信できるが、探索機器は、被探索機器から探索応答パケットを受信することができない。なぜなら、被探索機器は、探索要求パケットの送信元IPアドレスは、当該被探索機器が属するサブネットは異なるサブネット体系のアドレスであると判断し、判断結果に基づき、当該探索応答パケットをデフォルト・ゲートウェイに転送しようとする。しかし、サブネット10において、当該デフォルト・ゲートウェイは存在しないため、被探索機器は、探索応答パケットを送信することができない。
したがって、実施の形態1では、探索機器は、探索要求パケットの送信元IPアドレスを、被探索機器と同じサブネット体系のアドレス(ダミーのIPアドレス)に偽装する。これにより、被探索機器は探索応答パケットを送信することが可能となる。
−ARPリクエストの送信−
被探索機器は、図16の探索要求パケットを受信したとき、応答(図19の探索応答パケット)を探索機器に送信するために、まず、探索機器のMACアドレスを取得する必要がある。つまり、被探索機器は、受信した探索要求パケットの送信元IPアドレス“IA3”に対応したMACアドレスを取得していないので、被探索機器は、当該MACアドレスを取得するために、ARPリクエスト(図17参照)を用いてIPアドレス“IA3”の問い合わせを行なう。ARPリクエストは、通常、OS(オペレーティングシステム)レベルで送信されるARPパケットである。
-ARPリプライの送信-
探索機器は、RAWソケット122を介して、被探索機器からARPリクエストを受信すると、ARPリプライ(図18参照)を送信する。図10のステップS18〜S19に相当する。
具体的には、探索機器は、受信されたパケットが、当該パケットの内容に基づき、探索IPアドレスとしてIPアドレス“IA3”が設定されたARPリクエストであると判断したときは、ARPリプライ(図18参照)を返信する。
ARPリプライは、通常、OSレベルで送信されるものであるが、本実施の形態1で、ARPリプライはダミーのIPアドレスについての機器を探索するためのものであるから、探索機器においては、OSレベルはなく、専用のプログラムによってARPリプライが生成されて送信される。探索機器は、探索IPアドレス“IA3”のARPリクエストに対応してARPリプライを応答する。
−探索応答パケットの送信−
被探索機器は、探索機器からARPリプライを受信したとき、IPパケットである探索応答パケット(図19参照)を送信する。その探索応答パケットは、探索機器に届く。
探索機器は、被探索機器からの探索応答パケットが上述の探索要求パケットに対応したものであるかを判断する。
探索機器は、受信した探索応答パケットが、上述の探索要求パケットに対応したものであると判断すれば、当該被探索機器は目的ノードであると判断する。
d.探索シーケンスの具体例
図15の探索シーケンスを、具体例を挙げて説明する。この例では、サブネット10の無線LANルーター302のIPアドレスは“192.168.11.1”であり、探索機器(HEMSコントローラ100)のIPアドレスは“192.168.11.93”であり、および被探索機器(ノード201の電力モニタ)のIPアドレスは、誤って設定されたIPアドレス“192.168.100.100”である。
(ステップ1)まず、探索機器は、被探索機器に対して、探索要求パケット(図16参照)を送信する。図16を参照して、探索要求パケットは、宛先ノードのMACアドレス、送信元ノードのMACアドレス、および上位層プロトコルのタイプを含む。探索要求パケットはさらに、送信元ノードのIPアドレスを示す送信元IPアドレス、および宛先ノードのIPアドレスを含む。探索要求パケットはさらに具体的なデータであるペイロードを含む。
当該探索要求パケットの送信元IPアドレスは、本来ならば探索機器の本来のIPアドレス“192.168.11.93”が設定されるべきである。しかし、本来のIPアドレスが設定された場合には、当該探索要求パケットは被探索機器には届くが、探索機器は、被探索機器から対応の探索応答パケットを受信することができない。
探索機器は、探索応答パケットを受信できるようにするために、相手(被探索機器)と同じサブネットのアドレス体系となるダミーのIPアドレス(例えば、“192.168.100.101”)を生成する。探索機器は、生成されたダミーのIPアドレスを、送信元IPアドレスとして設定された探索要求パケットを、RAWソケット122を介して送信する。被探索機器は、上記のダミーのIPアドレスを有した探索要求パケットを受信する。
(ステップ2)被探索機器は、探索要求パケットを受信したとき、送信元IPアドレス(“192.168.100.101”)宛に、探索応答パケットを返信しようとする。探索応答パケットは、宛先のIPアドレスとハードウェアアドレス(MACアドレス)を必要とする。
被探索機器は、送信元IPアドレス(“192.168.100.101”)のハードウェアアドレスが分からないので、探索応答パケット送信の前に、ハードウェアアドレスを取得するために、ARPリクエスト(図17参照)を送信する。ARPリクエストは、探索要求パケットの送信元を問合わせるパケットである。
図17を参照して、ARPリクエストは、宛先ノードのMACアドレス、送信元ノードのMACアドレス、および上位層プロトコルのタイプを含む。さらに、ARPリクエストは、ARPの動作の種類を表すためのOPコード、送信者MACアドレス、送信者IPアドレス、探索MACアドレス、および探索IPアドレスを含む。
(ステップ3)探索機器は、被探索機器からのARPリクエストを受信する。探索機器は、受信されたARPリクエストの探索IPアドレスが、上記のダミーのIPアドレス(“192.168.100.101”)と一致していると判断したとき、ARPリプライ(図18参照)を送信する。ARPリプライは、探索機器が、ARPリクエストを受信したときに、ダミーのIPアドレスを送信元にした当該問合わせに対する応答を示す。ARPリプライのパケットの構造は、ARPリクエストの構造と同様であるので、説明は繰返さない。
被探索機器は、探索機器からのARPリプライを受信する。被探索機器は、受信されたARPリプライから、探索機器のハードウェアアドレスを取得する。探索機器は、上記のダミーのIPアドレスおよび取得されたハードウェアアドレスが設定された探索応答パケット(図19参照)を送信する。探索応答パケットの構造は、探索要求パケットの構造と同様であるので、説明は繰返さない。
(ステップ4)探索機器は、被探索機器から送信された探索応答パケットを受信する。これにより、探索機器は、当該探索機器が接続されたサブネット10において、IPアドレスが誤って設定された被探索機器(ノード201の電力センサ)が接続されていることを発見する。
図12のステップS42aでは、上記に述べた“ダミーのIPアドレスを用いた探索”が実施される。具体的には、HEMSコントローラ100は、まず、起動ノードのノード情報のIPアドレスについて、上述した“アドレス判断処理”を実施する。“アドレス判断処理”において、当該IPアドレスは、探索機器(HEMSコントローラ100)が属するサブネット10のサブネット体系のアドレスではないと判断された場合には、HEMSコントローラ100は、上述の“ダミーのIPアドレス生成処理”を実施する。
生成されたダミーのIPアドレスを用いた“探索シーケンス”(図15参照)が実施される。HEMSコントローラ100は、“探索シーケンス”により、当該起動ノードを、IPアドレスの設定が誤っている目的ノードとして発見する。
なお、ステップS42aの“探索シーケンス”で転送される探索要求パケット(図16参照)は、ステップS43でカウントされる。また、“探索シーケンス”で転送される探索応答パケット(図19参照)も、ステップS44におけるタイムアウトの測定対象として処理される。
[実施の形態2]
実施の形態2は、実施の形態1の変形例である。実施の形態1では、HEMSコントローラ100は、目的ノードの探索時に、マルチキャストで探索要求パケットを送信する(図12のステップS40参照)。これに対して、実施の形態2では、HEMSコントローラ100は、ブロードキャストで探索要求パケットを送信する。図13のステップS42においても、“ダミーのIPアドレスを用いた探索”(ステップS42a)が実施される。ステップS42aの処理は、図12に示されたものと同じであるから、説明は繰返さない。
なお、HEMSコントローラ100は、探索要求パケットをマルチキャストで送信するか、ブロードキャストで送信するかは、被探索機器によって使い分ける。探索機器と被探索機器との間で発見プロトコルが予め定められている。
なお、実施の形態2でも、探索要求パケットがブロードキャストで送信される点を除いた構成および機能については、実施の形態1と同様の構成および機能が実現されるので、それらの詳細説明は繰返さない。
図13は、本実施の形態2に係る目的ノードを探索する処理を示すフローチャートである。HEMSコントローラ100は、図13の処理を一定間隔(例えば、3分毎)で実行する。
図13を参照して、HEMSコントローラ100は、宛先IPアドレスがブロードキャスト・アドレスにセットされた探索要求パケットを送信する(ステップS40a)。
ブロードキャスト・アドレスについてはマルチキャスト・アドレスとは異なり特に取り決めはなくてもよいが、ポート番号については、探索機器と被探索機器との間で予め定められている。
例えば、被探索機器がシャープ株式会社製の電力モニタのノードである場合、HEMSコントローラ100は、宛先IPアドレスをブロードキャスト・アドレスに、宛先ポート番号を12132にセットした探索要求パケットをブロードキャストで送信する。
なお、ブロードキャスト・アドレスについては、IPアドレスの全ビットを1にした、リミテッド・ブロードキャスト・アドレス(255.255.255.255)と、IPアドレスのホスト部だけをすべて1にしたディレクティッド・ブロードキャスト・アドレスとがある。例えば、サブネット10の各ノードのIPアドレスが192.168.11.Xで、サブネットマスクが255.255.255.0であるとき、192.168.11.255となる。いずれにせよサブネット10の各ノードに届くことが期待できるので、どちらを使ってもよい。
実施の形態2でも、サブネット10上の目的ノードを確実に探索するために、HEMSコントローラ100は、ノードリスト123の各ノード情報のIPアドレスに基づいて探索要求パケットを生成して、ユニキャストで送信する(ステップS41とS42)。このユニキャスト送信においても、上述した“ダミーのIPアドレスを用いた探索”(ステップS42a)が実施される。
なお、図13のステップS41以降の処理は、図12で説明した処理と同様であるから、詳細説明は繰返さない。
[実施の形態3]
実施の形態3では、実施の形態1と2の変形例が示される。変形例では、HEMSコントローラ100は、サブネット10のサブネット体系のアドレスとは異なるアドレスが設定されている目的ノードが探索されたことを示す情報(図20参照)を出力する機能を有する。図20には、ダミーのIPアドレスを用いた探索シーケンス(図15参照)に基づく情報の出力例が示される。
HEMSコントローラ100は、上記の情報を、無線LANルーター302を介してサーバ装置901に送信する。サーバ装置901は、HEMSコントローラ100からの情報を記憶する。ユーザの端末902は、サーバ装置901と通信したとき、端末902のブラウジング機能により、サーバ装置901に記憶された情報を端末902の表示部などに表示する(図20参照)。
図20の情報では、“XY”は、HEMSコントローラ100とは異なるサブネット体系のIPアドレスを有した目的ノードの名称(例えば、電力モニタ、またはECHONET Liteノードであればそのクラス名など)を示す。また、図20の情報は、機器“XY”のMACアドレス“XX”を示しながら、当該機器“XY”のIPアドレス“ZZ”を、サブネット10のサブネット体系のIPアドレスに変更することを促すメッセージを含む。ユーザは、当該メッセージに従い、機器のIPアドレスを変更することができる。機器のIPアドレスが、サブネット10のサブネット体系のIPアドレスに変更された後は、HEMSコントローラ100は、当該機器(目的ノード)と、通常のIPレベルで通信することができる。なお、HEMSコントローラ100は、目的ノード(被探索機器)から受信したパケットの内容から、上記の“XY”、“XX”および“ZZ”の情報を取得することができる。
<HEMSコントローラの機能構成>
図8は、各実施の形態に係るHEMSコントローラ100の機能的構成を表す機能ブロック図である。図8を参照して、HEMSコントローラ100は、サブネット10上のパケットを送受信する通信部140、ノード情報管理部150、記憶部160、および探索部170を含む。通信部140は、高速通信インターフェイス1104を介して通信するRAWソケット122およびUDPソケット121の機能を含む。
ノード情報管理部150は、サブネット10上にある起動ノードの存在を受動的に検出する。具体的には、通信部140を介してパケットを受信する毎に、図10と図11に示すように、パケット送信元のノードに関する情報をノード情報としてノードリスト123により管理する。
探索部170は、通信部140を介して探索要求パケットを送信し、探索応答パケットを受信することによって目的ノードを探索する。探索部170は、図12に示すように、探索要求パケットを送信する際に、マルチキャストで送信するとともに、ノード情報管理部150により管理されるノード情報のアドレスを宛先にして、当該探索要求パケットをユニキャストで送信する。
探索部170は、探索要求パケットを送信する際に、上記のマルチキャストでの送信に代えて、図13に示すように、ブロードキャストで送信してもよい。
また、探索部170は、ダミー利用探索部171を有する。ダミー利用探索部171は、上述のステップS42aで示された“ダミーのIPアドレスを用いた探索”を実施する。
ノード情報管理部150は、図9に示すように、ノード情報が所定の時間更新されなければ、当該ノードが起動されているかどうかを確認するパケットを、通信部140を介して送信し、確認するパケットに呼応する応答の受信がなければノード情報を削除する。
<実施の形態の効果>
このように各実施の形態では、探索機器は、当該探索機器と同じサブネットに接続されながら、IPアドレスが誤って設定されている目的機器(被探索機器)を発見することができる。また、探索機器は、発見された目的機器のIPアドレスを正しいアドレスに変更するのを支援するための情報(図20参照)を、ユーザに提示することができる。
また、通信部140にてパケットを受信する毎に、パケット送信元のノードに関する情報をノード情報としてノードリスト123により管理する。これにより、無駄なトラフィックを発生させずに、サブネット10上に起動しているノードを受動的に検出できる。
また、HEMSコントローラ100がサブネット10上の目的ノードを探索する場合には、マルチキャストまたはブロードキャストの送信に加え、ノードリスト123のノード情報に基づく探索要求パケットをユニキャストで送信する。その結果、マルチキャスト・パケットまたはブロードキャスト・パケットが目的ノードに届かないようなネットワーク環境であっても、HEMSコントローラ100は、目的ノードを確実に見つけ出すことができる。
また、探索要求パケットは、ノードリスト123のノード情報に基づき生成されてサブネット10に送信されるから、HEMSコントローラ100は、当該探索要求パケットを起動しているノードに限定して送信することができる。従って、HEMSコントローラ100が目的ノード探索のために無駄なトラフィックを発生させることはない。
今回開示された実施の形態およびその変形例はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。