以下に説明する実施形態及び変形例は、本開示の一例に過ぎず、本開示は、実施形態及び変形例に限定されることなく、以下の実施形態及び変形例以外であっても、本開示に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能である。
本開示の実施形態に係る通信システム1(以下、通信システム1という。)は、図1及び図2に示すように、それぞれに固有のアドレスを持つ複数の通信端末2を有する。これら複数の通信端末2は、通信媒体を介して相互にマルチホップ通信する。通信媒体は、例えば、電力線3である(図2参照)。ただし、通信媒体は電力線3に限定されない。通信媒体は、通信専用の電線(通信線)でもよい。あるいは、通信媒体は電波であってもよい。
[1.通信端末の構成]
複数の通信端末2はそれぞれ、制御部20、通信部21及び記憶部22を備える(図2参照)。通信部21は、自身以外の他の通信端末2の通信部21との間で、電力線搬送通信を行う通信モジュールである。通信部21は、交流電力を供給するための電力線3を伝送路(通信媒体)として用いて電力線搬送通信を行う。本実施形態における通信部21は、電力線搬送通信の方式として、G3-PLC(ITU-T(International Telecommunication Union Telecommunication Standardization Sector)G.9903参照)を採用している。G3-PLCでは、通信周波数帯域としてkHz帯が用いられ、変調方式として直交周波数分割多重(OFDM:Orthogonal Frequency Division Multiplexing)が用いられる。通信部21は、変調及び復調の機能を有しており、通信部21同士の間で、双方向にデータ伝送が可能である。
記憶部22は、例えば、フラッシュメモリなどの不揮発性の半導体メモリを有する。記憶部22は、マルチホップ通信に使用されるパラメータ、例えば、後述するネットワークアドレス、中継ルート、リンクコストなどを記憶している。
制御部20は、コンピュータシステムを主構成要素とする。コンピュータシステムは、ハードウェアとしてのプロセッサ及びメモリを主構成とする。コンピュータシステムのメモリに記録されたプログラムをプロセッサが実行することによって、制御部20としての機能が実現される。プログラムは、コンピュータシステムのメモリにあらかじめ記録されてもよく、電気通信回線を通じて提供されてもよく、コンピュータシステムで読み取り可能なメモリカード、光学ディスク、ハードディスクドライブ等の非一時的記録媒体に記録されて提供されてもよい。コンピュータシステムのプロセッサは、半導体集積回路(IC)又は大規模集積回路(LSI)を含む1ないし複数の電子回路で構成される。ここでいうIC又はLSI等の集積回路は、集積の度合いによって呼び方が異なっており、システムLSI、VLSI(Very Large Scale Integration)、又はULSI(Ultra Large Scale Integration)と呼ばれる集積回路を含む。さらに、LSIの製造後にプログラムされる、FPGA(Field-Programmable Gate Array)、又はLSI内部の接合関係の再構成若しくはLSI内部の回路区画の再構成が可能な論理デバイスについても、プロセッサとして採用することができる。複数の電子回路は、1つのチップに集約されていてもよいし、複数のチップに分散して設けられていてもよい。複数のチップは、1つの装置に集約されていてもよいし、複数の装置に分散して設けられていてもよい。ここでいうコンピュータシステムは、1以上のプロセッサ及び1以上のメモリを有するマイクロコントローラを含む。したがって、マイクロコントローラについても、半導体集積回路又は大規模集積回路を含む1ないし複数の電子回路で構成される。
また、制御部20は、従来技術で説明した国際標準規格ITU-T G.9905のマルチホップ通信プロトコル(CMSR)を実装している。つまり、本実施形態における通信端末2は、CMSRのコーディネータ(Coordinator)に相当する1台の親機M及びノード(Node)に相当する複数台の子機Sn(n=1、2、…)に区別される。なお、以下の説明において、親機Mが備える制御部20、通信部21及び記憶部22を、それぞれ制御部20M、通信部21M及び記憶部22Mと表記する場合がある(図2参照)。同様に子機Snが備える制御部20、通信部21及び記憶部22を、それぞれ制御部20S、通信部21S及び記憶部22Sと表記する場合がある(図2参照)。さらに、親機Mと各子機Snのそれぞれに割り当てられている固有のアドレス(ネットワークアドレス)を「M」、「S1」、「S2」、…、「Sn」と表記する。ただし、実際に親機Mと各子機Snのそれぞれに割り当てられているアドレスは、数ビットから十数ビットのビット列で構成されている。
[2.通信システムの構成]
通信システム1は、複数台のノード(親機Mと複数台の子機Sn)を有するメッシュタイプのコンピュータネットワークを構成している。制御部20が実装しているCMSRは、各ノード(親機M及び子機Sn)の間で定常的にリンク情報を交換してルート(中継ルート)を生成するプロアクティブ型のルーティングプロトコルである。CMSRにおいては、フラッディング(Flooding)を使用せず、各子機Snから親機Mまでのルートに限定して探索し、仮ルートコストが良好な少数ノードに限定してリンク品質情報を交換し、リンク品質の調査後は、大きな変化がある場合のみ再調査を行う。各ノードは、定期的にHELLOメッセージをブロードキャストし、隣接ノードとリンク品質情報を交換する。各ノードは、HELLOメッセージの受信時のリンクコストと、上位ルートコスト(子機Snの場合は親機Mまでのルートコスト)から算出した仮ルートコストが低い一つ以上のノードを優先リンクとして選択する。さらに、各ノードは、選択した優先リンクについて、受信方向のリンクコストをHELLOメッセージに格納して送受信することにより、双方向のリンクコストを把握する。そして、各ノードは、双方向のリンクコストを元に算出した正式ルートコストが最良のものをルート(中継ルート)に決定する。
図1は、通信システム1のネットワーク構成(ネットワーク・トポロジ)の一例を示している。図1において、各通信端末2(親機M及び子機Sn)は、CMSRによって決定された中継ルートに対応するリンクL1-L11で接続されている。例えば、親機Mは、子機S1、S7とそれぞれリンクL1、L7を介してパケットを送受信することができる。また、子機S2は、子機S1、S3、S5とそれぞれリンクL2、L3、L5を介してパケットを送受信することができる。ただし、図1に示したネットワーク・トポロジは恒久的なものではなく、上述したようにリンクコストに大きな変化が生じた場合には別のリンクが選択されることでネットワーク・トポロジも変化する。例えば、子機S5と子機S2の間のリンクL5のリンクコストが大きく悪化した場合、子機S5と子機S2の間のリンクL5に代えて、子機S5と子機S8の間のリンクL12が選択されることがある(図1参照)。
各通信端末2の記憶部22は、隣接テーブルとルートテーブルを記憶している。隣接テーブルには、隣接ノードのアドレス、すなわち、1ホップで通信可能な通信端末2のアドレス、及び当該隣接ノードの種別(親機M又は子機Sn)、リンクコスト、上位リンクコストなどが登録されている。また、ルートテーブルには、最終の送信先の通信端末2のアドレス、及び当該通信端末2までのルートコスト、ホップ数、中継する各通信端末2のアドレスとその順番などが登録されている。
例えば、親機Mの記憶部22Mの隣接テーブルには、子機S1、S2、S7のアドレス、リンクコストなどが記憶されている。また、親機Mの記憶部22Mのルートテーブルには、親機Mからそれぞれの子機Snまでの複数の中継ルート(下りの中継ルート)が記憶されている。例えば、親機Mから子機S4までの下りの中継ルートは、子機S1->子機S2->子機S3->子機S4であるから、ルートテーブルには、最終送信先の子機S4のアドレス(S4)、ホップ数(4)、ホップ先の子機S1、S2、S3の各アドレス(S1、S2、S3)が登録されている。また、親機Mから子機S8までの下りの中継ルートは、子機S7->子機S8であるから、ルートテーブルには、最終送信先の子機S8のアドレス(S8)、ホップ数(2)、ホップ先の子機S7のアドレス(S7)が登録されている。さらに、親機Mから子機S11までの下りの中継ルートは、子機S1->子機S2->子機S5->子機S6->子機S9->子機S10->子機S11の中継ルートと、子機S7->子機S8->子機S5->子機S6->子機S9->子機S10->子機S11の中継ルートの二つの中継ルートが存在する。したがって、ルートテーブルには、前者の中継ルートについて、最終送信先の子機S11のアドレス(S11)、ホップ数(7)、ホップ先の子機S1、S2、S5、S6、S9、S10の各アドレス(S1、S2、S5、S6、S9、S10)が登録されている。また、ルートテーブルには、後者の中継ルートについて、最終送信先の子機S11のアドレス(S11)、ホップ数(7)、ホップ先の子機S7、S8、S5、S6、S9、S10の各アドレス(S7、S8、S5、S6、S9、S10)が登録されている。ただし、図1に示したネットワーク・トポロジでは、親機Mの制御部20Mは、子機S11までの二つの下りの中継ルートのうち、子機S1、S2を経由する中継ルートをデフォルトの中継ルートに採用している。
一方、子機S3の記憶部22Sの隣接テーブルには、子機S1、S2、S4、S5のアドレス、リンクコストなどが登録されている。図1に示すネットワーク・トポロジでは、子機S2及び子機S4のリンクコストが子機S1及び子機S5のリンクコストよりも良好である。したがって、子機S3の制御部20Sは、子機S2とのリンクL3及び子機S4とのリンクL4を優先リンクに選択している。また、子機S3の記憶部22Sのルートテーブルには、子機S3から親機Mまでの中継ルート(上りの中継ルート)として、子機S3から見て上位の子機S2のアドレスが登録されている。
子機S2の記憶部22Sの隣接テーブルには、子機S1、S3、S5、S7、S8のアドレス、リンクコストなどが記憶されている。図1に示すネットワーク・トポロジでは、子機S1、子機S3及び子機S5のリンクコストが子機S7及び子機S8のリンクコストよりも良好である。したがって、子機S2の制御部20Sは、子機S1とのリンクL2、子機S3とのリンクL3及び子機S5とのリンクL5を優先リンクに選択している。また、子機S2の記憶部22Sのルートテーブルには、子機S2から親機Mまでの中継ルート(上りの中継ルート)として、子機S2から見て上位の子機S1のアドレスが登録されている。さらに、子機S2の記憶部22Sのルートテーブルには、親機Mから子機S11までの下りの中継ルートのうちで子機S2よりも下位の中継ルート、すなわち、ホップ先の各子機Si(i=5、6、9、10、11)のアドレス、ホップ数などが登録されている。なお、その他の子機S1、S4-S11についても、子機S2-S3と同様、CMSRで決定したアドレスなどのパラメータがそれぞれの記憶部22Sの隣接テーブル及びルートテーブルに登録されている。
[3.パケットフォーマットの説明]
通信システム1におけるパケットのフォーマットを図3A-図3Cに示す。パケットは、少なくとも、送信元アドレス、送信先アドレス、中継ルート、メッセージ(データ)のそれぞれのフィールドを有している。送信元アドレスのフィールドには、当該パケットの送信元の通信端末2のアドレスが格納される。送信先アドレスのフィールドには、当該パケットの最終送信先の通信端末2のアドレスが格納される。中継ルートのフィールドには、送信元アドレスから送信先アドレスまでの中継ルートに含まれる全ての通信端末2のアドレスが、ホップされる順番通りに格納される(図3C参照)。メッセージのフィールドには、様々なデータ、例えば、スマートメータのような計測装置で計測される電力の計測値、及び後述するルートエラーメッセージなどが格納される。
[4.通信システムにおけるマルチホップ通信の説明]
ここで、通信システム1におけるマルチホップ通信の手順について具体例を挙げて説明する。例えば、子機S8から子機S4に宛ててパケットを送信する場合を例示する。
送信元の子機S8の制御部20Sは、送信元アドレスのフィールドに自己のアドレス(S8)を格納し、送信先アドレスのフィールドに子機S4のアドレス(S4)を格納したパケットP(84)を生成する。また、子機S8の制御部20Sは、生成したパケットP(84)の中継ルートのフィールドに、子機S7のアドレス(S7)を格納する。ここで、子機S8の記憶部22Sのルートテーブルに、子機S8から親機Mへの上りの中継ルートとして、子機S8から見て上位の子機S7のアドレスが登録されている。そのため、子機S8の制御部20Sは、記憶部22Sのルートテーブルを参照し、上りの中継ルートに含まれる子機S7のアドレス(S7)を選択して中継ルートのフィールドに当該アドレス(S7)を格納する。さらに、子機S8の制御部20Sは、送信しようとするデータをパケットP(84)のメッセージのフィールドに格納する(図3A参照)。そして、子機S8の制御部20Sは、通信部21Sを制御して、生成したパケットP(84)を子機S7に宛てて送信(ユニキャスト)する(図4参照)。
子機S7の制御部20Sは、子機S8から送信されたパケットP(84)を通信部21Sで受信する。子機S7の制御部20Sは、受信したパケットP(84)の送信先アドレス(子機S4のアドレス)が自己のアドレスに一致しないことを確認すると、記憶部22Sの隣接テーブル及びルートテーブルを参照する。子機S7の記憶部22Sの隣接テーブル及びルートテーブルには、それぞれ親機Mのアドレス(M)が登録されている。したがって、子機S7の制御部20Sは、パケットP(84)の中継ルートのフィールドに親機Mのアドレス(M)を格納する(図3B参照)。そして、子機S7の制御部20Sは、通信部21Sを制御してパケットP(84)を親機Mに宛てて送信(ユニキャスト)する(図4参照)。
親機Mの制御部20Mは、子機S7から送信されたパケットP(84)を通信部21Mで受信する。親機Mの制御部20Mは、受信したパケットP(84)の送信先アドレス(子機S4のアドレス)が自己のアドレスに一致しないことを確認すると、記憶部22Mのルートテーブルを参照して子機S4への中継ルートを読み出す。親機Mから子機S4への下りの中継ルートは、既に説明したように、子機S1->子機S2->子機S3->子機S4である。したがって、親機Mの制御部20Mは、パケットP(84)の中継ルートのフィールドに、ルートテーブルから読み出した子機S4への中継ルート、すなわち、ホップ先の子機S1、S2、S3の各アドレス(S1、S2、S3)をホップ順に格納する(図3C参照)。そして、親機Mの制御部20Mは、通信部21Mを制御してパケットP(84)を最初のホップ先である子機S1に宛てて送信(ユニキャスト)する(図4参照)。
子機S1の制御部20Sは、親機Mから送信されたパケットP(84)を通信部21Sで受信する。子機S1の制御部20Sは、受信したパケットP(84)の送信先アドレス(子機S4のアドレス)が自己のアドレスに一致しないことを確認すると、パケットP(84)の中継ルートを参照し、次の中継先(ホップ先)のアドレス(S2)を取得する。そして、子機S1の制御部20Sは、通信部21Sを制御してパケットP(84)を次のホップ先である子機S2に宛てて送信(ユニキャスト)する(図4参照)。
子機S2の制御部20Sは、子機S1から送信されたパケットP(84)を通信部21Sで受信する。子機S2の制御部20Sは、受信したパケットP(84)の送信先アドレス(子機S4のアドレス)が自己のアドレスに一致しないことを確認すると、パケットP(84)の中継ルートを参照し、次の中継先(ホップ先)のアドレス(S3)を取得する。そして、子機S2の制御部20Sは、通信部21Sを制御してパケットP(84)を次のホップ先である子機S3に宛てて送信(ユニキャスト)する(図4参照)。
子機S3の制御部20Sは、子機S2から送信されたパケットP(84)を通信部21Sで受信する。子機S3の制御部20Sは、受信したパケットP(84)の送信先アドレス(子機S4のアドレス)が記憶部22Sの隣接テーブルに登録されていることを確認すると、通信部21Sを制御してパケットP(84)を送信先である子機S4に宛てて送信(ユニキャスト)する(図4参照)。このようにして、子機S8から子機S4に対して、パケットP(84)がマルチホップ通信される。
[5.親機を経由しないマルチホップ通信の説明]
次に、親機Mを経由しないマルチホップ通信の手順について、子機S4から子機S11にパケットP(411)を送信する場合を例にして説明する。
送信元の子機S4の制御部20Sは、送信元アドレスのフィールドに自己のアドレス(S4)を格納し、送信先アドレスのフィールドに子機S11のアドレス(S11)を格納したパケットP(411)を生成する。また、子機S4の制御部20Sは、生成したパケットP(411)の中継ルートのフィールドに、子機S3のアドレス(S3)を格納する。ここで、子機S4の記憶部22Sのルートテーブルに、子機S4から親機Mへの上りの中継ルートとして、子機S4から見て上位の子機S3のアドレスが登録されている。そのため、子機S4の制御部20Sは、記憶部22Sのルートテーブルを参照し、上りの中継ルートに含まれる子機S3のアドレス(S3)を選択して中継ルートのフィールドに当該アドレス(S3)を格納する。さらに、子機S4の制御部20Sは、送信しようとするデータをパケットP(411)のメッセージのフィールドに格納する。そして、子機S4の制御部20Sは、通信部21Sを制御して、生成したパケットP(411)を子機S3に宛てて送信(ユニキャスト)する(図5参照)。
子機S3の制御部20Sは、子機S4から送信されたパケットP(411)を通信部21Sで受信する。子機S3の制御部20Sは、受信したパケットP(411)の送信先アドレス(子機S11のアドレス)が自己のアドレスに一致しないことを確認すると、記憶部22Sのルートテーブルを参照する。子機S3の記憶部22Sのルートテーブルに、子機S3から親機Mへの上りの中継ルートとして、子機S3から見て上位の子機S2のアドレスが登録されている。そのため、子機S3の制御部20Sは、記憶部22Sのルートテーブルを参照し、上りの中継ルートに含まれる子機S2のアドレス(S2)を選択して中継ルートのフィールドに当該アドレス(S2)を格納する。そして、子機S3の制御部20Sは、通信部21Sを制御してパケットP(411)を子機S2に宛てて送信(ユニキャスト)する(図5参照)。
子機S2の制御部20Sは、子機S3から送信されたパケットP(411)を通信部21Sで受信する。子機S2の制御部20Sは、受信したパケットP(411)の送信先アドレス(子機S11のアドレス)が自己のアドレスに一致しないことを確認すると、記憶部22Sのルートテーブルを参照する。ここで、既に説明したように、子機S2の記憶部22Sのルートテーブルには、子機S2から親機Mへの上りの中継ルートだけでなく、子機S2から子機S11までの下りの中継ルートが登録されている。そして、子機S2の制御部20Sは、通信トラフィックの抑制を図るため、親機Mを経由しない前記下りの中継ルートを選択してルートテーブルから読み出す。子機S2の制御部20Sは、パケットP(411)の中継ルートのフィールドに、ルートテーブルから読み出した子機S11への中継ルート、すなわち、ホップ先の子機S5、S6、S9、S10の各アドレス(S5、S6、S9、S10)をホップ順に格納する(図6参照)。そして、子機S2の制御部20Sは、通信部21Sを制御してパケットP(411)を最初のホップ先である子機S5に宛てて送信(ユニキャスト)する(図5参照)。しかして、中継ルートの各子機S5、S6、S9、S10が、上位の子機S2、S5、S6、S9から受信するパケットP(411)を順次ユニキャストすることにより、送信先の子機S11がパケットP(411)を受信する(図5参照)。
[6.通信エラーが生じたときの通信システムの動作の説明(1)]
次に、マルチホップ通信の途中で通信エラー(中継の失敗)が生じた場合の通信システム1の動作について説明する。なお、以下の説明では、子機S4から子機S11に送信されたパケットP(411)が、子機S10と子機S11の間の通信エラーによって子機S11に届かなかった場合を想定する。
本実施形態における通信端末2は、通信部21でパケットを受信した場合、送信元の通信端末2に対して、肯定応答(ACK:ACKnowledgement)のメッセージを格納したパケット(ACKパケット)を返信する。また、通信端末2では、パケットの送信から一定時間内に送信先の通信端末2からACKパケットを受信しなければ、制御部20が通信部21を制御してパケットを再送させ、再送回数がしきい値を超えた場合に通信エラーと判断する。
子機S10の制御部20Sは、下位の子機S11にパケットP(411)を送信できなかったと判断すると、通信エラーの発生を通知するためのパケット(通知用のパケット)を生成する。通知用のパケットP(104)は、図8に示すように、送信元アドレスのフィールドに自己のアドレス(S10)が格納され、送信先アドレスのフィールドに、通信エラーが生じたパケットP(411)の送信元の子機S4のアドレス(S4)が格納される。また、通知用のパケットP(104)のメッセージのフィールドには、通信エラーのメッセージが格納される。通信エラーのメッセージは、例えば、通信エラーを示す符号「NG」と、通信エラーが生じたリンクで接続されている二つの子機S10、S11のアドレスで構成される(図8参照)。
ここで、子機S10の制御部20Sは、通信エラーの生じたパケットP(411)の中継ルートのフィールドに格納されている中継ルートを読み出し、読み出した中継ルートの順番(ホップ順)を反転させた中継ルート(反転中継ルート)を生成する。そして、子機S10の制御部20Sは、生成した反転中継ルートを、通知用のパケットP(104)の中継ルートのフィールドに格納する(図8参照)。そして、子機S10の制御部20Sは、通信部21Sを制御して通知用のパケットP(104)を最初のホップ先である子機S9に宛てて送信(ユニキャスト)する(図7参照)。子機S10から送信された通知用のパケットP(104)は、中継ルートのフィールドに格納されている反転中継ルートに従って、子機S9、S6を経由して子機S5に到達する。なお、子機S5の制御部20Sは、通信部21Sで受信した通知用のパケットP(104)を、上位の通信端末2(子機S2)に送信(ユニキャスト)する(図7参照)。
子機S2の制御部20Sは、通知用のパケットP(104)の送信先アドレス(S4)に対応する中継ルートを、自己の記憶部22Sのルートテーブルから読み出し、読み出した中継ルートを通知用のパケットP(104)の中継ルートのフィールドに格納する。そして、子機S2の制御部20Sは、中継ルートに従って通知用のパケットP(104)を子機S3から子機S4に中継させる。
ここで、通知用のパケットP(104)を生成した子機S10、及び中継した各子機S9、S6、S5、S2、S3の各々の制御部20Sは、通知用のパケットP(104)のメッセージのフィールドに格納されている通信エラーのメッセージを記憶部22Sに記憶する。つまり、通信エラーが生じたパケットP(411)を中継した子機S3、S2、S5、S6、S9及びS10の各々の制御部20Sは、通信エラーが発生した二つの子機S10、S11のアドレスを取得してそれぞれの記憶部22Sに記憶する。
しかして、通信システム1は、通信エラーのメッセージを格納した通知用のパケットP(104)を反転中継ルートに従ってマルチホップ通信することにより、通信エラーの発生(中継の失敗)を各通信端末2(子機S9、S6、S5、S2、S3)に通知することができる。
また、子機S2の制御部20Sは、通知用のパケットP(104)を親機Mに中継してもかまわない。この場合、通信システム1は、通信エラーが生じた中継ルート(子機S10から子機S11へのリンクL11)を使用する可能性を有した通信端末2(子機S1及び親機M)にも通信エラー発生の情報を共有させることができる。
なお、子機Snの制御部20Sは、自己の記憶部22Sの隣接テーブルに登録されている子機Snのアドレス宛に通知用のパケットを送信してもかまわない。例えば、反転中継ルートに含まれる子機S5の制御部20Sは、隣接テーブルを参照し、優先リンクに選択していないリンクL12で接続される子機S8に対して、通知用のパケットP(104)を送信(ユニキャスト)してもかまわない。当該通知用のパケットP(104)は、マルチホップ通信によって子機S8から子機S7を介して親機Mに受信される。そして、親機Mは、受信した通知用のパケットP(104)を中継ルートを介して最終送信先の子機S4に送信する。
[7.通信エラーが生じたときの通信システムの動作の説明(2)]
ところで、通信エラーの生じた中継ルートが継続して使用された場合、送信先の通信端末2までパケットが到着しないために通信システム1の通信信頼性の低下を招くおそれがある。したがって、各通信端末2の制御部20は、通信エラーの発生した中継ルートを、記憶部22のルートテーブルに格納されている複数の中継ルートの中の選択候補から除外することが好ましい。
例えば、子機S2の制御部20Sは、子機S10から子機S11へのルートの通信エラーの通知を受け取った場合、所定の条件が満たされなければ、当該ルートを含む中継ルートを、パケットを中継する中継ルートの選択対象から除外することが好ましい。また、親機Mの制御部20Mも同様に、子機S10から子機S11へのルートの通信エラーの通知を受け取った場合、所定の条件が満たされなければ、当該ルートを含む中継ルートを、パケットを中継する中継ルートの選択対象から除外することが好ましい。所定の条件は、例えば、子機S2の記憶部22S及び親機Mの記憶部22Mのルートテーブルに登録されている当該中継ルートにおけるリンクコストが下限値以上であることが好ましい。つまり、当該中継ルートにおけるリンクコストが下限値未満である場合、子機S10から子機S11への中継の失敗が再発する可能性が高いと推定される。ゆえに、通信システム1は、当該中継ルートにおけるリンクコストが下限値未満である場合、子機S2の制御部20S(親機Mの制御部20M)が、当該中継ルートを選択対象から除外することによって、通信信頼性の低下を抑制することができる。ただし、上記条件はリンクコストに限定されない。例えば、上記条件は、通信エラーの発生回数が上限値未満であることでもよい。なお、通信端末2の制御部20は、通信エラーの生じた中継ルートを、自己の記憶部22のルートテーブルから削除してもかまわない。ただし、通信端末2の制御部20は、通信システム1がネットワーク・トポロジを再構成する際、削除された中継ルートにおけるリンクコストが下限値以上であれば、当該中継ルートを自己の記憶部22のルートテーブルに再度登録する場合もある。
[8.通信エラーが生じたときの通信システムの動作の説明(3)]
また、子機Snの制御部20Sは、通信エラーの生じた中継ルートに代わる中継ルート(以下、代替中継ルートと呼ぶ。)が自己の記憶部22Sのルートテーブルに登録されている場合、当該代替中継ルートを選択してパケットを中継させることが好ましい。つまり、子機Snの記憶部22Sのルートテーブルに複数の中継ルートの候補が登録されている場合、子機Snの制御部20Sは、除外した中継ルートを除く一つ以上の中継ルートの中からルートコストが最良の中継ルートを選択することが好ましい。子機Snの制御部20Sは、通信エラーの生じた中継ルートが格納されているパケットを受け取った場合、当該パケットの中継ルートのフィールドに代替中継ルートを格納して中継することが好ましい。なお、子機Snの制御部20Sは、記憶部22Sのルートテーブルに代替中継ルートが存在している場合、選択対象から除外した中継ルートを破棄して代替中継ルートを標準の中継ルートとしてルートテーブルに登録することが好ましい。
上述のように通信システム1は、子機Snの制御部20Sが代替中継ルートをパケットの中継ルートのフィールドに格納することにより、代替中継ルートを介して当該パケットを送信先の子機Sn(又は親機M)まで中継することができる。なお、子機Snの制御部20Sは、自己の記憶部22Sのルートテーブルに登録されている中継ルートの中に代替可能な中継ルートが存在しない場合、パケットを親機Mまで中継させるように通信部21Sを制御することが好ましい。つまり、子機Snに比べて、親機Mの記憶部22Mのルートテーブルに登録されている中継ルートの中に代替可能な中継ルートが存在する可能性が高いので、パケットが親機Mまで中継されることによって、送信先の子機Snまで届く確率が高くなる。なお、子機Snの制御部20Sは、記憶部22Sのルートテーブルに親機Mまでの中継ルートが登録されていない場合、隣接テーブルに登録されている上位の子機Snに宛ててパケットを送信することが好ましい。
[9.本開示の実施形態に係るプログラムの説明]
次に、本開示の実施形態に係るプログラムを説明する。本開示の実施形態に係るプログラム(以下、プログラムという。)は、通信端末2の制御部20が有するマイクロコンピュータシステムで実行されるプログラムである。
プログラムは、通信端末2の制御部20(特に子機Snの制御部20S)に、パケットの送信に失敗した場合、当該パケットの中継ルートのフィールドに格納されている中継ルートを読み出す処理を行わせる。また、プログラムは、通信端末2の制御部20に、読み出した中継ルートの順番(ホップ順)を反転させた中継ルート(反転中継ルート)を生成する処理、及び生成した反転中継ルートを通知用のパケットの中継ルートのフィールドに格納する処理を行わせる。なお、プログラムは、制御部20が有するコンピュータシステムのメモリにあらかじめ記録されてもよい。あるいは、プログラムは、電気通信回線を通じて提供されてもよく、コンピュータシステムで読み取り可能なメモリカード、光学ディスク、ハードディスクドライブ等の非一時的記録媒体に記録されて提供されてもよい。
[10.実施形態に係る通信システムの変形例の説明]
実施形態に係る通信システム1の変形例(以下、変形例の通信システム1という。)は、実施形態に係る通信システム1と共通の構成、すなわち、実施形態における親機M及び複数台の子機Snと共通の親機M及び複数台の子機Snを備えている(図1参照)。
変形例の通信システム1において、子機S2の制御部20Sは、例えば、子機S4から子機S11に宛てて送信されたパケットP(411)を通信部21Sで受信すると、以下のような新たな中継ルートを生成する。すなわち、子機S2の制御部20Sは、記憶部22Sのルートテーブルから読み出した、送信先の子機S11までの中継ルートの先頭に、送信元の子機S4までの中継ルートをつなげた新たな中継ルートを生成する。そして、子機S2の制御部20Sは、生成した新たな中継ルートを、パケットP(411)の中継ルートのフィールドに格納する(図9参照)。なお、子機S2から送信元の子機S4までの中継ルートは、子機S2の記憶部22Sのルートテーブルに登録されている。
そして、子機S2の制御部20Sは、中継ルートのフィールドに新たな中継ルートを格納したパケットP(411)を通信部21Sから子機S5に宛てて送信させる。子機S2から送信されたパケットP(411)は、実施形態で説明したように、子機S5、子機S6、子機S9及び子機S10を順番にホップして送信先の子機S11で受信される。ここで、子機S10から子機S11への通信が失敗したと仮定する。子機S10の制御部20Sは、通信エラーの生じたパケットP(411)の中継ルートのフィールドに格納されている中継ルート(S3、S2、S5、S6、S9、S10)を読み出して反転中継ルートを生成する。そして、子機S10の制御部20Sは、生成した反転中継ルート(S9、S6、S5、S2、S3)を、通知用のパケットP(104)の中継ルートのフィールドに格納する(図10参照)。そして、子機S10から送信された通知用のパケットP(104)は、反転中継ルートに従い、子機S9から子機S6、S5、S2、S3に順次中継されて子機S4で受信される。
あるいは、子機S2の制御部20Sは、子機S2から親機Mまでの中継ルート(S1、M)を元の中継ルートにつなげて新たな中継ルートを生成し、生成した新たな中継ルートをパケットP(411)の中継ルートのフィールドに格納してもかまわない(図11参照)。
そして、子機S10から子機S11への通信が失敗した場合、子機S10の制御部20Sは、通信エラーの生じたパケットP(411)の中継ルートのフィールドに格納されている中継ルート(S1、S2、S5、S6、S9、S10)を読み出して反転中継ルートを生成する。そして、子機S10の制御部20Sは、生成した反転中継ルート(S9、S6、S5、S2、S1)を、通知用のパケットP(104)の中継ルートのフィールドに格納する(図12参照)。そして、子機S10から送信された通知用のパケットP(104)は、反転中継ルートに従い、子機S9から子機S6、S5、S2、S1に順次中継されて親機Mで受信される。
しかして、通信システム1においては、ネットワーク・トポロジが随時変化する可能性がある。そこで、変形例の通信システム1は、送信元の子機Snからの中継ルート及び親機Mからの中継ルートをあらかじめパケットに格納するので、ネットワーク・トポロジが変化しても、元のパケットが中継されたルートを逆にたどって通知用のパケットを中継することができる。その結果、変形例の通信システム1は、実施形態に係る通信システム1に比べて、中継ルートの各子機Sn及び親機Mに対して通信エラー(中継の失敗)に関する情報を確実に知らせることができて通信信頼性の低下を抑制することができる。
なお、他の子機への中継ルートが記憶部22Sのルートテーブルに登録されていない子機S1、S3、S4、…のそれぞれの制御部20Sが、それぞれの隣接テーブルに登録されている子機S2、S3、S4、…のアドレスをパケットの中継ルートにあらかじめ格納してもかまわない。この場合においても、変形例の通信システム1は、中継ルートの各子機Sn及び親機Mに対して通信エラー(中継の失敗)に関する情報を確実に知らせることができて通信信頼性の低下を抑制することができる。
[11.本開示の別の実施形態に係る通信システムの説明]
本開示の別の実施形態に係る通信システム1(以下、第2の通信システム1という。)は、親機Mと複数台の子機Snを備えている(図1参照)。ただし、親機M及び複数台の子機Snは、初めに説明した実施形態に係る通信システム1(以下、第1の通信システム1という。)の親機M及び子機Snと共通の構成を有しているので、共通の構成に関する説明及び図示を省略する。
第2の通信システム1において、子機S2の記憶部22Sのルートテーブルには子機S11までの中継ルートが登録されていると仮定する。この場合、子機S2の制御部20Sは、例えば、子機S4から子機S11に宛てて送信されたパケットP(411)を通信部21Sで受信すると、パケットP(411)の中継ルートのフィールドに、以下のような中継ルートを格納する。すなわち、子機S2の制御部20Sは、記憶部22Sのルートテーブルから読み出した、送信先の子機S11までの中継ルートの先頭に、送信元の子機S4までの中継ルートをつなげた中継ルートをパケットP(411)の中継ルートのフィールドに格納する。なお、子機S2から送信元の子機S4までの中継ルートは、子機S2の記憶部22Sのルートテーブルに登録されている。あるいは、子機S2の制御部20Sは、送信先の子機S11までの中継ルートの先頭に、親機Mまでの中継ルートをつなげた中継ルートをパケットP(411)の中継ルートのフィールドに格納してもかまわない。子機S2の制御部20Sは、中継ルートのフィールドに上記いずれかの中継ルートを格納したパケットP(411)を通信部21Sから送信させる。
しかして、子機S5から子機S11までの中継ルートで通信エラーが発生した場合、通信エラーの発生を検知した子機(例えば、子機S10)の制御部20Sは、当該パケットの中継ルートのフィールドに格納されている中継ルートを読み出す。当該中継ルートは、送信元の子機S4から子機S2を経由して送信先の子機S11に至る中継ルート、又は親機Mから子機S2を経由して送信先の子機S11に至る中継ルートである。したがって、通信エラーのメッセージを送信する子機S10の制御部20Sは、読み出した中継ルートの反転中継ルートを生成し、生成した反転中継ルートを通知用のパケットの中継ルートのフィールドに格納する。
その結果、第2の通信システム1では、パケットの中継ルートに含まれる複数台の子機(例えば、子機S5、S6、S9及びS10)に対して、中継元である子機S2の上位の子機Sn及び親機Mの少なくとも一方からの中継ルートを知らせることができる。
[12.まとめ]
上述のように本開示の第1の態様に係る通信システム(1)は、それぞれに固有のアドレスを持つ複数の通信端末(2)を有し、複数の通信端末(2)が通信媒体(電力線3)を介してマルチホップ通信する通信システムである。複数の通信端末(2)はそれぞれ、複数の中継ルートを記憶する記憶部(22)と、通信媒体を介してパケットの送信及び受信を行う通信部(21)と、制御部(20)とを備える。制御部(20)は、記憶部(22)が記憶している複数の中継ルートの中から、送信先の通信端末(2)のアドレスが含まれている中継ルートを選択する。さらに、通信部(21)は、選択した中継ルートを経由してパケットを送信先の通信端末(2)に送信するように通信部(21)を制御する。パケットは、送信元の通信端末(2)のアドレスである送信元アドレス、送信先の通信端末(2)のアドレスである送信先アドレス、中継を行う一つ以上の通信端末(2)のアドレスの順番を規定した中継ルート、及び一つ以上のメッセージを格納している。制御部(20)は、通信部(21)で受信するパケットに含まれる中継ルートを参照してパケットを中継するように通信部(21)を制御する。制御部(20)は、パケットの中継に失敗した場合、パケットの中継の失敗を通知するためのエラーメッセージを格納した通知用のパケットを送信するように通信部(21)を制御する。通知用のパケットは、中継に失敗したパケットに格納されている中継ルートの順番を反転した中継ルート(反転中継ルート)を格納している。
第1の態様に係る通信システム(1)は、通知用のパケットを、中継に失敗したパケットに格納されている中継ルートの順番を反転した中継ルートを介して中継することにより、上位の通信端末(2)に中継の失敗を通知できる。
本開示の第2の態様に係る通信システム(1)は、第1の態様との組合せにより実現され得る。第2の態様に係る通信システム(1)において、制御部(20)は、通信部(21)で通知用のパケットを受信した場合、所定の条件が満たされなければ、中継に失敗した通信端末を含む一つ以上の中継ルートを、複数の中継ルートの中の選択候補から除外することが好ましい。
第2の態様に係る通信システム(1)は、中継に失敗した通信端末を含む一つ以上の中継ルート、すなわち、中継に失敗した元のパケットの中継ルートを選択候補から除外することにより、通信信頼性の低下を抑制することができる。
本開示の第3の態様に係る通信システム(1)は、第2の態様との組合せにより実現され得る。第3の態様に係る通信システム(1)において、所定の条件は、中継に失敗した通信端末を含む一つ以上の中継ルートの通信品質が下限値以上であるという条件を含むことが好ましい。
第3の態様に係る通信システム(1)は、中継に失敗した元の中継ルートの通信品質(元の中継ルートにおけるリンクコスト)が下限値未満であるときに当該中継ルートを選択対象から除外することによって、通信信頼性の低下を更に抑制することができる。
本開示の第4の態様に係る通信システム(1)は、第1-第3の態様のいずれかとの組合せにより実現され得る。第4の態様に係る通信システム(1)において、複数の通信端末(2)の中の一つは親機(M)であり、複数の通信端末(2)の中の親機(M)以外の複数の通信端末(2)はそれぞれ子機(Sn)であることが好ましい。親機(M)の記憶部(22M)は、親機(M)からそれぞれの子機(Sn)までパケットを中継させるための複数の中継ルートを記憶していることが好ましい。複数の子機(Sn)のそれぞれの記憶部(22S)は、子機(Sn)から親機(M)までパケットを中継させるための少なくとも一つの中継ルートを記憶していることが好ましい。少なくとも一つの子機(S2)の記憶部(22S)は、親機(M)を経由せずにパケットを中継させるための少なくとも一つの中継ルートを記憶していることが好ましい。
第4の態様に係る通信システム(1)は、原則として子機(Sn)間の通信を親機(M)経由で行い、親機(M)を経由せずにパケットを中継する中継ルートを記憶している子機(S2)については、当該中継ルートを介して子機(Sn)間の通信を行う。その結果、第4の態様に係る通信システム(1)は、全てのパケットが親機(M)を経由して送受信される場合に比べて、親機(M)の通信トラフィックの削減を図ることができる。
本開示の第5の態様に係る通信システム(1)は、第4の態様との組合せにより実現され得る。第5の態様に係る通信システム(1)において、複数の子機(Sn)のそれぞれの制御部(20S)は、親機(M)を経由せずにパケットを中継させるための少なくとも一つの中継ルートを記憶部(22S)に記憶している場合、通信部(21S)で受信するパケットに、親機(M)までパケットを中継させるための中継ルート、又はパケットの送信元である子機(S4)を含む中継ルートを格納して通信部(21S)から送信させることが好ましい。
第5の態様に係る通信システム(1)は、元のパケットが中継されたルートを逆にたどって通知用のパケットを中継することができる。その結果、第5の態様に係る通信システム(1)は、中継ルートの各子機(Sn)及び親機(M)に対して通信エラー(中継の失敗)に関する情報を確実に知らせることができて通信信頼性の低下を抑制することができる。
本開示の第6の態様に係る通信システム(1)は、第4の態様との組合せにより実現され得る。第6の態様に係る通信システム(1)において、複数の子機(Sn)のそれぞれの制御部(20S)は、通信部(21S)でパケットを受信した場合、パケットに格納されている中継ルートに、親機(M)までパケットを中継させるための中継ルートと、パケットの送信元である子機(Sn)を含む中継ルートのいずれか一方をパケットに格納して通信部(21S)から送信させることが好ましい。
第6の態様に係る通信システム(1)は、中継ルートの各子機(Sn)及び親機(M)に対して通信エラー(中継の失敗)に関する情報を確実に知らせることができて通信信頼性の低下を抑制することができる。
本開示の第7の態様に係る通信システム(1)は、第4-第6の態様のいずれかとの組合せにより実現され得る。第7の態様に係る通信システム(1)において、複数の子機(Sn)のそれぞれの制御部(20S)は、通知用のパケットを受信した後に別のパケットを中継する場合、パケットの中継に失敗した通信端末を含む、いずれかの中継ルートの代替となる中継ルートを、記憶部(22S)に記憶している複数の中継ルートの中から選択し、選択した中継ルートをパケットに格納することが好ましい。
第7の態様に係る通信システム(1)は、代替の中継ルートでパケットを中継することにより、通信不能となる状況を回避して通信信頼性の向上を図ることができる。
本開示の第8の態様に係る通信システム(1)は、第7の態様との組合せにより実現され得る。第8の態様に係る通信システム(1)において、複数の子機(Sn)のそれぞれの制御部(20S)は、記憶部(22S)に記憶している複数の中継ルートの中にパケットの中継に失敗した中継ルートの代替となる中継ルートが存在しない場合、別のパケットを親機(M)まで中継させるように通信部(21S)を制御することが好ましい。
第8の態様に係る通信システム(1)は、代替の中継ルートが存在しない場合でも、親機(M)を経由してパケットを中継することにより、通信不能となる状況を回避して通信信頼性の向上を図ることができる。
本開示の第9の態様に係る通信システム(1)は、第8の態様との組合せにより実現され得る。第9の態様に係る通信システム(1)において、複数の子機(Sn)のそれぞれの制御部(20S)は、別のパケットを親機(M)まで中継させる場合、複数の子機(Sn)の中で隣接する子機(Sn)に別のパケットを送信させるように通信部(21S)を制御することが好ましい。
第9の態様に係る通信システム(1)は、代替となる中継ルートが存在しない場合に、子機(Sn)から親機(M)に別のパケットを送信することにより、通信不能となる状況を回避して通信信頼性の向上を図ることができる。
本開示の第10の態様に係る通信システム(1)は、第7-第9のいずれかの態様との組合せにより実現され得る。第10の態様に係る通信システム(1)において、複数の子機(Sn)のそれぞれの制御部(20S)は、パケットの中継に失敗した中継ルートの代替となる中継ルートを通常使用する中継ルートとして記憶部(22S)に記憶させることが好ましい。
第10の態様に係る通信システム(1)は、代替となる中継ルートを通常使用する中継ルートとすることにより、通信信頼性の更なる向上を図ることができる。
本開示の第11の態様に係る通信システム(1)は、第4-第10の態様のいずれかとの組合せにより実現され得る。第11の態様に係る通信システム(1)において、複数の子機(Sn)の制御部(20S)は、通信部(21S)で受信するパケットに送信元アドレスから送信先アドレスまでの中継ルートが格納されている場合、中継ルートに従ってパケットを中継するように通信部(21S)を制御することが好ましい。複数の子機(Sn)の制御部(20S)は、通信部(21S)で受信するパケットに送信元アドレスから送信先アドレスまでの中継ルートが格納されていない場合、隣接する子機(Sn)を介して親機(M)に対してパケットを中継するように通信部(21S)を制御することが好ましい。
第11の態様に係る通信システム(1)は、親機(M)の通信トラフィックの削減を図りつつ通信信頼性の向上を図ることができる。
本開示の第12の態様に係る通信システム(1)は、第4-第11の態様のいずれかとの組合せにより実現され得る。第12の態様に係る通信システム(1)において、複数の子機(Sn)の制御部(20S)は、通信部(21S)で通知用のパケットを受信した場合、通知用のパケットに格納されている送信元アドレス、送信先アドレス及び中継ルートの少なくとも一つを記憶部(22S)に記憶させることが好ましい。
第12の態様に係る通信システム(1)は、通知用のパケットを中継した各子機(Sn)の記憶部(22S)に、中継を失敗した子機(Sn)に関する情報が記憶されるので、中継に失敗した中継ルートが使用され続けることを回避して通信信頼性の向上を図ることができる。
本開示の第13の態様に係る通信システム(1)は、それぞれに固有のアドレスを持つ複数の通信端末(2)を有し、複数の通信端末(2)が通信媒体(電力線3)を介してマルチホップ通信する通信システムである。複数の通信端末(2)はそれぞれ、複数の中継ルートを記憶する記憶部(22)と、通信媒体を介してパケットの送信及び受信を行う通信部(21)と、制御部(20)とを備える。制御部(20)は、記憶部(22)が記憶している複数の中継ルートの中から、送信先の通信端末のアドレスが含まれている中継ルートを選択し、選択した中継ルートを経由してパケットを送信先の通信端末(2)に送信するように通信部(21S)を制御する。パケットは、送信元の通信端末(2)のアドレスである送信元アドレス、送信先の通信端末(2)のアドレスである送信先アドレス、中継を行う一つ以上の通信端末(2)のアドレスの順番を規定した中継ルート、及び一つ以上のメッセージを格納している。制御部(20)は、通信部(21)で受信するパケットに含まれる中継ルートを参照してパケットを中継するように通信部(21)を制御する。複数の通信端末(2)の中の一つは親機(M)であり、複数の通信端末(2)の中の親機(M)以外の複数の通信端末(2)はそれぞれ子機(Sn)である。親機(M)の記憶部(22M)は、親機(M)からそれぞれの子機(Sn)までパケットを中継させるための複数の中継ルートを記憶している。複数の子機(Sn)のそれぞれの記憶部(22S)は、子機(Sn)から親機(M)までパケットを中継させるための少なくとも一つの中継ルートを記憶している。少なくとも一つの子機(Sn)の記憶部(22S)は、親機(M)を経由せずにパケットを中継させるための少なくとも一つの中継ルートを記憶している。複数の子機(Sn)のそれぞれの制御部(20S)は、親機(M)を経由せずにパケットを中継させるための少なくとも一つの中継ルートを記憶部(22S)に記憶している場合、通信部(21S)で受信するパケットに、子機(Sn)から親機(M)までパケットを中継させるための中継ルート、又はパケットの中継元である子機(Sn)を含む中継ルートを格納して通信部(21S)から送信させる。
第13の態様に係る通信システム(1)は、例えば、中継ルートに含まれる複数の子機(Sn)に対して中継の失敗を知らせる場合、中継を失敗したパケットに格納されている送信元の子機(Sn)からの中継ルート又は親機(M)からの中継ルートを逆にたどることができる。その結果、第13の態様に係る通信システム(1)は、中継ルートの各子機(Sn)又は親機(M)に対して中継の失敗に関する情報を確実に知らせることができて通信信頼性の低下を抑制することができる。
本開示の第14の態様に係る通信端末(2)は、第1-第13の態様のいずれかの通信システム(1)が有する通信端末である。
第14の態様に係る通信端末(2)は、通知用のパケットを、中継に失敗したパケットに格納されている中継ルートの順番を反転した中継ルートを介して中継することにより、上位の通信端末(2)に中継の失敗を通知できる。
本開示の第15の態様に係るプログラムは、第1-第13の態様のいずれかの通信システム(1)が有する通信端末(2)の制御部(20)が行う処理をコンピュータシステム(制御部20)に実行させるためのプログラムである。
第15の態様に係るプログラムは、通知用のパケットを、中継に失敗したパケットに格納されている中継ルートの順番を反転した中継ルートを介して中継することにより、上位の通信端末(2)に中継の失敗を通知できる。