(57)【要約】【課題】ネットワークトポロジの変化に迅速に追随可能なマルチキャスト通信を実現する通信システムを提供する。【解決手段】ノード１００は、自グループ情報と、隣接ノードグループ情報と、を含む通信メッセージを作成するユニキャスト経路制御部１１１およびマルチキャスト経路制御部１１４と、通信メッセージを発信するメッセージ発信部１１６と、隣接ノードから受信した通信メッセージの自グループ情報と隣接ノードグループ情報に基づいて、自グループに属する２ホップ先の全ノードにパケットを転送可能なように、自グループの隣接ノード中からＧ−ＭＰＲを選択するノード選択部１１８と、を備え、ユニキャスト経路制御部１１１にＧ−ＭＰＲの情報を含む通信メッセージを作成させ、ノード１００は、受信した通信メッセージのＧ−ＭＰＲの情報に基づいて、パケットをグループの隣接ノードに転送するパケット送信部１４８と、をさらに備える。【選択図】図１
2011061569.tif 000002
【特許請求の範囲】
【請求項１】
複数のノード間のマルチホップネットワークを形成する通信システムにおいて、
前記ノードは、
自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成する作成手段と、
作成された前記通信メッセージを発信する発信手段と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、自身が属する前記グループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択する転送ノード選択手段と、を備え、
前記ノードにおいて、
前記作成手段に、前記転送ノード選択手段により選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成させ、
前記発信手段に、前記作成手段により作成された前記通信メッセージを発信させ、
前記ノードは、
前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、マルチキャストするデータパケットを前記グループ用転送ノードに含まれる前記隣接ノードに転送する転送手段をさらに備える通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記ノードは、
マルチキャストの転送エントリを登録するマルチキャスト転送テーブルを記憶する転送テーブル記憶手段と、
前記隣接ノードから受信した前記通信メッセージに基づいて、前記隣接ノードから自身が前記グループ用転送ノードに指定されたか否かを判定するグループ用転送ノード判定手段と、
自身が前記グループ用転送ノードに指定されたと判定されたとき、前記マルチキャスト転送テーブルに、前記通信メッセージの送信元の前記隣接ノードを前記転送エントリに設定する設定手段と、をさらに備える通信システム。
【請求項３】
請求項２に記載の通信システムにおいて、
前記ノードは、
前記マルチキャスト転送テーブルを参照し、マルチキャストされたマルチキャストパケットの送信元のノードが前記転送エントリに含まれるか否か判定するエントリ判定手段を備え、
前記ノードの前記転送手段は、
前記マルチキャストパケットの送信元のノードが前記転送エントリに含まれない場合、受信した前記マルチキャストパケットを破棄し、
前記マルチキャストパケットの送信元のノードが前記転送エントリに含まれる場合、受信した前記マルチキャストパケットを前記同一のグループの隣接ノードに転送する通信システム。
【請求項４】
請求項１乃至３いずれかに記載の通信システムにおいて、
前記転送ノード選択手段は、重複する２ホップ先のノードが少ない隣接ノードを優先して前記グループ用転送ノードに選択する通信システム。
【請求項５】
請求項２乃至４いずれかに記載の通信システムにおいて、
前記同一のグループに属する前記隣接ノードが存在しない場合、異なるグループの前記隣接ノードを前記グループ用転送ノードに選択する第１選択手段と、
自身が属していないグループの前記グループ用転送ノードに選択されたノードにおいて、該グループの前記隣接ノードを前記グループ用転送ノードとして選択する第２選択手段と、
前記異なるグループの前記隣接ノードから、その隣接ノードが属する前記グループの前記グループ用転送ノードに選択された場合、その隣接ノードを前記転送エントリとして前記マルチキャスト転送テーブルに登録する登録手段と、をさらに備える通信システム。
【請求項６】
請求項１乃至５いずれかに記載の通信システムにおいて、
前記通信メッセージは、隣接ノード発見メッセージである通信システム。
【請求項７】
請求項１乃至６いずれかに記載の通信システムにおいて、
自身が送信するマルチキャストパケットに一意に識別可能な識別番号を設定する識別番号設定手段と、
前記自身が送信したマルチキャストパケットおよび前記隣接ノードから受信したマルチキャストパケットの前記識別情報をマルチキャスト重複判定テーブルに登録する識別番号登録手段と、
受信した前記マルチキャストパケットの前記識別情報が前記マルチキャスト重複判定テーブルに存在するかを判別する判別手段と、
受信した前記マルチキャストパケットの前記識別情報が前記マルチキャスト重複判定テーブルに存在すると判別されたとき、受信した前記マルチキャストパケットを破棄する破棄手段と、
をさらに備える通信システム。
【請求項８】
複数のノード間で形成されるマルチホップネットワーク内で、自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成する作成手段と、
作成された前記通信メッセージを発信する発信手段と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、自身が属するグループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択する転送ノード選択手段と、を備え、
前記作成手段に、前記転送ノード選択手段により選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成させ、
前記発信手段に、前記作成手段により作成された前記通信メッセージを発信させるノード。
【請求項９】
複数のノード間で形成されるマルチホップネットワーク内で、自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、自身が属するグループと同一のグループに属する前記隣接ノードの中から転送先として選択されたグループ用転送ノードを示す転送先ノード情報を含む通信メッセージを、前記隣接ノードから受信するメッセージ受信手段と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、自身がグループ用転送ノードであるか否かを判定する判定手段と、
自身が属する前記グループ宛のマルチキャストのデータパケットを受信するパケット受信手段と、
自身が前記グループ用転送ノードであると判定された場合、受信した前記データパケットを自身が属する前記グループの他の隣接ノードに転送する転送手段と、を備えるノード。
【請求項１０】
複数のノード間のマルチホップネットワークを形成する通信システムにおいて、
前記ノードが、自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成し、
前記ノードが、作成された前記通信メッセージを発信し、
前記ノードが、前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、自身が属する前記グループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択し、
前記ノードが、選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成し、
前記ノードが、作成された前記通信メッセージを発信し、
前記ノードが、前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、マルチキャストするデータパケットを前記グループ用転送ノードに含まれる前記隣接ノードに転送する通信制御方法。
【請求項１１】
複数のノード間のマルチホップネットワークを形成する通信システムにおいて、コンピュータに前記ノードを実現するためのプログラムであって、
ノード自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成する手順と、
作成された前記通信メッセージを発信する手順と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、前記ノード自身が属する前記グループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択する手順と、
選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成する手順と、
作成された前記通信メッセージを発信する手順と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、マルチキャストするデータパケットを前記グループ用転送ノードに含まれる前記隣接ノードに転送する手順と、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、ノード、通信制御方法、およびプログラムに関し、特に、複数のノード間のマルチホップネットワークを形成する通信システム、ノード、通信制御方法、およびプログラムに関する。
【背景技術】
【０００２】
基地局などを用いず通信装置同士のみで直接通信を行う無線マルチホップネットワークにおけるユニキャスト経路制御の一例が、非特許文献１に記載されている。非特許文献１で開示されているＯＬＳＲ（Optimized Link State Routing）について説明する。ＯＬＳＲでは、起動後にあらかじめ設定された送信間隔でＨｅｌｌｏメッセージを送信する。Ｈｅｌｌｏメッセージは転送されず、無線到達範囲内に存在する無線通信装置（以下、単にノード）のみが受信することができる。また、他のノードからＨｅｌｌｏメッセージを受信した場合、隣接ノードの情報を示す隣接ノードテーブルにＨｅｌｌｏメッセージの有効期間中その情報を保持する。
【０００３】
ノードが次回Ｈｅｌｌｏメッセージを送信する場合は、隣接ノードテーブルに記録されている全ノードのＩＰアドレスのリストを含める。隣接ノード情報の入ったＨｅｌｌｏを受信したノードは、ＭＰＲ（MultiPoint Relay）ノードの選択を行い、ＴＣ（Topology Control）メッセージの送信を行う。ＭＰＲノードとは、あるノードが送信した経路制御メッセージ（ＴＣメッセージ等）を、ネットワーク内の全ノードが受信できるように転送するための転送ノードである。
【０００４】
あるノードから見た場合、ＭＰＲノードの選択は、自分の２ホップ先に存在するノード全てをカバーするような隣接ノードの組を計算することで行われる。自身が選択したＭＰＲノードはＨｅｌｌｏメッセージによって隣接ノードに通知される。これにより隣接ノードは、自身をＭＰＲに選択したノードからＴＣパケットなどのネットワーク内の全ノードに通知が必要な制御メッセージを受信した場合、自分がそのメッセージを転送する必要があることを知ることができる。
【０００５】
ＴＣメッセージは、自分の持つリンク情報（通常は、選択したＭＰＲノードとの間のリンク）をネットワーク内の全ノードに通知するためのメッセージである。ＴＣメッセージはあらかじめ設定された間隔で送信され、上述のＭＰＲノードによって転送されネットワーク内の全ノードに通知される。
【０００６】
他のノードから受信したＴＣメッセージのリンク情報は、トポロジテーブルに保存される。各通信ノードは、トポロジテーブルに記録されたリンク情報からネットワークトポロジ（ネットワークのノード接続構成）グラフを作成し、各通信ノードまでの最短経路を計算する。その計算結果にしたがってユニキャスト通信転送経路を設定する。
【０００７】
非特許文献１のＯＬＳＲの仕組みを拡張し、無線マルチホップネットワーク上でマルチキャスト制御を行う方式が非特許文献２に開示されている（以下、Ｍ−ＯＬＳＲと呼ぶ）。Ｍ−ＯＬＳＲでは、マルチキャストパケットを送信する送信ノードは、パケット送信前にＳＯＵＲＣＥ＿ＣＬＡＩＭメッセージをネットワーク全体にフラッディングする。ＳＯＵＲＣＥ＿ＣＬＡＩＭメッセージを受信した受信ノードは、そのマルチキャストグループ宛パケットを受信するために、送信ノードへのユニキャスト経路上のＮｅｘｔ  Ｈｏｐノード（送信ノード宛パケットを転送するノード）へＣＯＮＦＩＲＭ＿ＰＡＲＥＮＴメッセージを送信する。
【０００８】
ＣＯＮＦＩＲＭ＿ＰＡＲＥＮＴメッセージを受信した中継ノードは、自身が該当するマルチキャストの受信者もしくは中継者でなければ、同様に送信ノードのＮｅｘｔ  Ｈｏｐに向けてＣＯＮＦＩＲＭ＿ＰＡＲＥＮＴメッセージを転送し、マルチキャスト転送テーブルを設定する。すでに受信者もしくは中継者であれば、マルチキャスト転送テーブルを設定し、ＣＯＮＦＩＲＭ＿ＰＡＲＥＮＴメッセージは転送しない。マルチキャスト転送テーブルを維持するため、送信ノードはＳＯＵＲＣＥ＿ＣＬＡＩＭを、受信ノード及び転送ノードはＣＯＮＦＩＲＭ＿ＰＡＲＥＮＴを定期的に送信する。一定時間メッセージを受信しなかった場合、送信ノードもしくは受信ノードが消滅したと判断し、マルチキャスト転送テーブルの該当エントリを削除する。
【０００９】
その他にも、無線マルチホップネットワークのためのマルチキャスト制御方式の一例として、非特許文献３に記載される様々な方式がある。非特許文献３によれば、マルチキャスト制御方式には大きく分けてツリー型方式とメッシュ型方式がある。ツリー型方式は、ある代表ノードを決定し、マルチキャストの送信者および受信者（メンバー）はその代表ノードに向かってＪｏｉｎを行い、マルチキャスト配信ツリーを構築する。メッシュ型方式の場合、各（送信ノード、受信ノード）ペア間にそれぞれ経路を構築する。前述のＭ−ＯＬＳＲもメッシュ型方式の一種である。
【００１０】
また、無線マルチホップネットワークのシステムの一例が特許文献１に記載されている。特許文献１の無線マルチホップネットワークは、Ｈｅｌｌｏメッセージを用いてＭＰＲが自身の所属グループを集約し、その所属グループの情報をネットワーク全体に知らせることで、各ＭＰＲ間でマルチキャストのツリーを構築する。これにより、送信ノードと受信ノードのそれぞれでツリーを作成した場合より、グループ毎にツリーを集約でき、マルチキャストのための制御メッセージ負荷を低減できる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−７１５７５号公報
【非特許文献】
【００１２】
【非特許文献１】ティー．  クラウセン  （Ｔ．  Ｃｌａｕｓｅｎ）、外１名編、「オプティマイズド  リンク  ステート  ルーティング  プロトコル  （Optimized Link State Routing Protocol  （ＯＬＳＲ））」、Request For Comments  （ＲＦＣ）  ３６２６、［ｏｎｌｉｎｅ］、２００３年１０月、インターネット技術タスクフォース（Internet Engineering Task Force：ＩＥＴＦ）、インターネット＜http://www.ietf.org/rfc/rfc3626.txt＞
【非特許文献２】アニス  ライティ  （Ａｎｉｓ  Ｌａｏｕｉｔｉ）、外５名、「マルチキャスト  オプティマイズド  リンク  ステート  ルーティング  （Multicast Optimized Link State Routing）」、リサーチ  レポート  （Research Report）  Ｎｏ．４７２１、（フランス）、［ｏｎｌｉｎｅ］、２００３年２月、フランス国立情報学自動制御研究所（Institut National de Recherche en Informatique et en Automatique：ＩＮＲＩＡ）、インターネット＜ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RR/RR-4721.pdf＞
【非特許文献３】カルロス  デ  モライス  コーデイロ（Ｃａｒｌｏｓ  ｄｅ  Ｍｏｒａｉｓ  Ｃｏｒｄｅｉｒｏ）、外２名、「マルチキャスト  オーバー  ワイヤレス  モバイル  アドホック  ネットワークス：プレゼント  アンド  フューチャー  ディレクションズ  （Multicast over Wireless Mobile Ad Hoc Networks:Present and Future Directions）」、アイトリプルイー  ネットワーク  （ＩＥＥＥ  Ｎｅｔｗｏｒｋ）、（米国）、アイトリプルイー  インク．  （ＩＥＥＥ：Institute of Electrical and Electronics Engineers, Inc.）、２００３年、１、２月号、ｐ．５２〜５９
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述した特許文献１に記載の無線マルチホップネットワーク、すなわち、マルチキャスト経路を設定するメッセージの伝達では、ユニキャスト経路が確立していることを前提としているため、ノードが移動してノード間の相対的な位置関係が変わることにより、ネットワークトポロジが変化した場合、まずユニキャスト経路を再構築し、その後マルチキャスト経路の再構築が行われる。そのため、マルチキャスト経路の修復に時間がかかり、通信の断絶時間が長くなってしまうという問題点があった。
【００１４】
本発明の目的は、上述した課題を解消し、ネットワークトポロジの変化に迅速に追随可能なマルチキャスト通信を実現する通信システム、ノード、通信制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明の通信システムは、
複数のノード間のマルチホップネットワークを形成する通信システムにおいて、
前記ノードは、
自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成する作成手段と、
作成された前記通信メッセージを発信する発信手段と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、自身が属する前記グループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択する転送ノード選択手段と、を備え、
前記ノードにおいて、
前記作成手段に、前記転送ノード選択手段により選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成させ、
前記発信手段に、前記作成手段により作成された前記通信メッセージを発信させ、
前記ノードは、
前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、マルチキャストするデータパケットを前記グループ用転送ノードに含まれる前記隣接ノードに転送する転送手段をさらに備える。
【００１６】
本発明の第１のノードは、複数のノード間で形成されるマルチホップネットワーク内で、自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成する作成手段と、
作成された前記通信メッセージを発信する発信手段と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、自身が属するグループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択する転送ノード選択手段と、を備え、
前記作成手段に、前記転送ノード選択手段により選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成させ、
前記発信手段に、前記作成手段により作成された前記通信メッセージを発信させる。
【００１７】
本発明の第２のノードは、複数のノード間で形成されるマルチホップネットワーク内で、自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、自身が属するグループと同一のグループに属する前記隣接ノードの中から転送先として選択されたグループ用転送ノードを示す転送先ノード情報を含む通信メッセージを、前記隣接ノードから受信するメッセージ受信手段と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、自身がグループ用転送ノードであるか否かを判定する判定手段と、
自身が属する前記グループ宛のマルチキャストのデータパケットを受信するパケット受信手段と、
自身が前記グループ用転送ノードであると判定された場合、受信した前記データパケットを自身が属する前記グループの他の隣接ノードに転送する転送手段と、を備える。
【００１８】
本発明の通信制御方法は、複数のノード間のマルチホップネットワークを形成する通信システムにおいて、
前記ノードが、自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成し、
前記ノードが、作成された前記通信メッセージを発信し、
前記ノードが、前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、自身が属する前記グループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択し、
前記ノードが、選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成し、
前記ノードが、作成された前記通信メッセージを発信し、
前記ノードが、前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、マルチキャストするデータパケットを前記グループ用転送ノードに含まれる前記隣接ノードに転送する。
【００１９】
本発明のコンピュータプログラムは、複数のノード間のマルチホップネットワークを形成する通信システムにおいて、コンピュータに前記ノードを実現するためのプログラムであって、
ノード自身が属するグループを示す第１グループ情報と、隣接する隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成する手順と、
作成された前記通信メッセージを発信する手順と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記第１グループ情報および前記第２グループ情報に基づいて、前記ノード自身が属する前記グループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、前記同一のグループに属する前記隣接ノードの中からグループ用転送ノードを選択する手順と、
選択された前記グループ用転送ノードを転送先ノード情報として含む前記通信メッセージを作成する手順と、
作成された前記通信メッセージを発信する手順と、
前記隣接ノードから受信した前記通信メッセージを参照し、前記転送先ノード情報に基づいて、マルチキャストするデータパケットを前記グループ用転送ノードに含まれる前記隣接ノードに転送する手順と、をコンピュータに実行させるためのプログラムである。
【００２０】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００２１】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００２２】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【００２３】
さらに、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【発明の効果】
【００２４】
本発明によれば、ネットワークトポロジの変化に迅速に追随可能なマルチキャスト通信を実現し、通信品質のよい通信システム、ノード、通信制御方法、およびプログラムが提供される。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態に係る通信システムの構成を示す機能ブロック図である。
【図２】本実施形態の通信システムが形成する無線マルチホップネットワークの構成の一例を示す図である。
【図３】本実施形態の通信システムにおける通信メッセージとして使用されるＨｅｌｌｏメッセージの構造の一例を示す図である。
【図４】本実施形態の通信システムが形成する無線マルチホップネットワークにおける隣接ノードと、２ホップ先ノードを説明するための図である。
【図５】本実施形態の通信システムにおける通信メッセージとして使用されるＨｅｌｌｏメッセージの構造の一例を示す図である。
【図６】本実施形態の通信システムが形成する無線マルチホップネットワークにおける選択されたＭＰＲ隣接ノードを説明するための図である。
【図７】本実施形態の通信システムにおける通信メッセージとして使用されるＨｅｌｌｏメッセージの構造の一例を示す図である。
【図８】本実施形態の通信システムが形成する無線マルチホップネットワークにおける選択されたＧ−ＭＰＲ隣接ノードを説明するための図である。
【図９】本実施形態の通信システムのノードのマルチキャスト経路構築処理の手順の一例を示すフローチャートである。
【図１０】本発明の実施の形態に係る通信システムが形成する無線マルチホップネットワークの一例を示す図である。
【図１１】本発明の実施の形態に係る通信システムのノードのパケット送信時の動作の一例を示すフローチャートである。
【図１２】本発明の実施の形態に係る通信システムのノードのパケット転送時の動作の一例を示すフローチャートである。
【図１３】本発明の実施の形態に係る通信システムが形成する無線マルチホップネットワークの一例を示す図である。
【発明を実施するための形態】
【００２６】
（第１の実施の形態）
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
これに限定されないが、本実施形態では、ユニキャストの経路制御は非特許文献１に開示されたＯＬＳＲで制御されているとし、本発明のマルチキャスト経路制御方式はＯＬＳＲプロトコルをベースとして拡張する。
【００２７】
図１は、本発明の実施の形態に係る通信システムの構成を示す機能ブロック図である。
本実施形態の通信システムは、複数のノード間のマルチホップネットワークを形成する通信システムにおいて、ノード１００は、自身が属するグループを示す第１グループ情報と、隣接ノードが属するグループを示す第２グループ情報と、を含むユニキャスト経路制御の通信メッセージを作成する作成部（ユニキャスト経路制御部１１１およびマルチキャスト経路制御部１１４）と、作成された通信メッセージを発信する発信部（Ｈｅｌｌｏメッセージ発信部１１６）と、隣接ノードから受信した通信メッセージを参照し、第１グループ情報および第２グループ情報に基づいて、自身が属するグループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、同一のグループに属する隣接ノードの中からグループ用転送ノードを選択する転送ノード選択部（Ｇ−ＭＰＲノード選択部１１８）と、を備え、ノード１００において、作成部に、転送ノード選択部により選択されたグループ用転送ノードを転送先ノード情報として含む通信メッセージを作成させ、発信部に、作成部により作成された通信メッセージを発信させ、ノード１００は、隣接ノードから受信した通信メッセージを参照し、転送先ノード情報に基づいて、マルチキャストするデータパケットをグループ用転送ノードに含まれる隣接ノードに転送する転送部（パケット送信部１４８）と、をさらに備える。
【００２８】
具体的には、本実施形態のネットワークシステムの各ノードは、たとえば、無線通信装置であり、携帯電話、無線ＬＡＮ（Local Area Network）端末、ＰＤＡ（Personal Digital Assistants）などである。あるいは、各ノードは、無線通信機能を有するセンサなどであってもよい。なお、本発明のネットワークシステムは、無線通信に限定するものではない。
なお、以下の各図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【００２９】
また、本実施形態の通信システムの各構成要素は、任意のコンピュータのＣＰＵ（Central Processing Unit）、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット、ネットワーク接続用インタフェースを中心にハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下説明する各図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
【００３０】
図２に、本実施形態の通信システムが形成する無線マルチホップネットワークの構成の一例を示す。本発明の対象とする無線マルチホップネットワークは、ノード１１〜３６の１８台で構成される。ノード１１〜１８はマルチキャストグループ１（図中、菱形）に、ノード２１〜２４はマルチキャストグループ２（図中、矩形）に、ノード３１〜３６はマルチキャストグループ３（図中、円形）にそれぞれ属しているとする。図中の点線は、点線で結ばれたノードどうしが無線によって直接双方向で通信可能なことを示している。
【００３１】
詳細には、図１に示すように、本実施形態の通信システムのノード１００は、アプリケーション１０１と、インタフェース部（Ｉ／Ｆ）１０２と、経路制御部１１０と、パケット処理部１４０と、を有している。アプリケーション１０１は、音声やメッセージなどのデータパケットを送受信処理するコンピュータプログラム等であり、たとえば、同一グループにデータパケットを同報配信する。
【００３２】
ここで、データパケットとして送受信されるデータは、たとえば、テキストデータ、数値データ、音声データ、画像データ、各種文書データ等、様々なデータとすることができる。
【００３３】
また、経路制御部１１０は、ノード１００におけるユニキャスト経路制御に加え、マルチキャスト経路制御を行うものであり、ユニキャスト経路制御部１１１と、グループ登録情報記憶部（図中、「グループ登録情報」と示す）１１２と、マルチキャスト経路制御部１１４と、Ｈｅｌｌｏメッセージ発信部１１６と、Ｇ−ＭＰＲノード選択部１１８と、Ｈｅｌｌｏメッセージ受信部１２０と、を有する。パケット処理部１４０は、他のノードから受信したパケットの転送処理やアプリケーション１０１から送受信されるパケットの送受信処理を行うものであり、パケット受信部１４２と、パケット転送判定部１４４と、マルチキャスト転送テーブル１４６と、パケット送信部１４８と、マルチキャスト重複判定テーブル（図中、「重複判定テーブル」と示す）１４９と、を有する。
【００３４】
インタフェース部１０２は、ネットワークに接続するためのインタフェース機能を有する。インタフェース部１０２は、本実施形態では、たとえば、無線ＬＡＮ規格のＩＥＥＥ８０２．１１や、Ｚｉｇｂｅｅ（登録商標）などの無線通信方式に準拠した通信を行う。
【００３５】
グループ登録情報記憶部１１２は、予め登録されるノード１００が属するグループを記憶する。各ノード１００は、複数のグループに属することもできる。本実施形態のマルチホップネットワーク内のすべてのノード１００は、予めグループが登録されているものとする。グループとは、本実施形態の通信システムの無線マルチホップネットワークで、マルチキャストで同じデータパケットを受信するノード群である。本実施形態の通信システムでは、図２に示すように、３つのグループが予め設定されている。
【００３６】
ここでは、マルチキャストグループ（以下、単にグループ）は、１〜２５５の２５５グループが存在し、それぞれのグループに対応するマルチキャストＩＰアドレスは、２３９．１９２．０．１〜２３９．１９２．０．２５５とする。ただし、本方式はＩＰｖ４（Internet Protocol Version 4）に限るものでなく、マルチキャストグループに対応するマルチキャストＩＰアドレスは、ＩＰｖ６マルチキャストアドレス  ｆｆ０８：：０００１〜ｆｆ０８：：００ｆｆでも良い。
【００３７】
また、各ノード１００はネットワーク内で一意に割り振られたノードＩＤと、ユニキャスト通信を行うためのネットワーク内で一意なユニキャストＩＰアドレスを持つ。ノードＩＤには、ユニキャストＩＰアドレスを用いても良い。以下の説明では簡単のため、ノードＩＤとユニキャストＩＰアドレスは同じであるとする。ここでは、ノードＸのノードＩＤ及びユニキャストＩＰアドレスは、１０．０．０．Ｘであるとする。例えば、ノード１１のノードＩＤとユニキャストＩＰアドレスはともに１０．０．０．１１とする。
【００３８】
ノード１００は、複数のノード間で形成されるマルチホップネットワーク内で、自身が属するグループを示す第１グループ情報と、隣接ノードが属するグループを示す第２グループ情報と、を含むユニキャスト経路制御の通信メッセージを作成する作成部（ユニキャスト経路制御部１１１およびマルチキャスト経路制御部１１４）と、作成された通信メッセージを発信する発信部（Ｈｅｌｌｏメッセージ発信部１１６）と、隣接ノードから受信した通信メッセージを参照し、第１グループ情報および第２グループ情報に基づいて、自身が属するグループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、同一のグループに属する隣接ノードの中からグループ用転送ノードを選択する転送ノード選択部（Ｇ−ＭＰＲノード選択部１１８）と、を備え、作成部に、転送ノード選択部により選択されたグループ用転送ノードを転送先ノード情報として含む通信メッセージを作成させ、発信部に、作成部により作成された通信メッセージを発信させる。
【００３９】
本実施形態において、通信メッセージとしては、ユニキャスト経路制御のＯＬＳＲにおける隣接ノードを発見するための隣接発見メッセージであるＨｅｌｌｏメッセージを用いることができる。また、他の通信制御プロトコルとしては、ＴＢＲＰＦ（Topology Broadcast Based on Reverse-Path Forwarding）プロトコル等でもよい。
【００４０】
また、Ｈｅｌｌｏメッセージの代わりに、ＴＣメッセージなどを用いた場合、各ノードが、自身の隣接ノードを判別する処理が必要となり、処理手順が煩雑になるので、Ｈｅｌｌｏメッセージが好ましい。
【００４１】
図３は、本実施形態の通信システムにおける通信メッセージとして使用されるＨｅｌｌｏメッセージの構造の一例を示す図である。Ｈｅｌｌｏメッセージ２００は、ユニキャスト経路制御のＯＬＳＲプロトコルのＨｅｌｌｏメッセージに、さらに、自身の属するグループを示す自身グループ情報２０２を含む。ＨＴｉｍｅおよびＷｉｌｌｉｎｇｎｅｓｓは、非特許文献１で開示されるとおり、Ｈｅｌｌｏメッセージの有効期間とＭＰＲに選択される優先度を表す。Ｗｉｌｌｉｎｇｎｅｓｓのあとに自身グループ情報２０２（４byteアライアメント）が入っている。ここでは、図２のノード１１が、起動時にマルチホップネットワークに発信するＨｅｌｌｏメッセージ２００の例が示されている。ノード１１は、グループ１に属しているので、グループ番号に「１」が記述されている。本実施形態では、説明を簡単にするために、各ノード１００は、１つのグループにのみ属している。他の例では、複数のグループに属すこともでき、その場合、属しているグループ数と、そのグループ番号が記述されることとなる。
【００４２】
図１に戻り、マルチキャスト経路制御部１１４は、ノード１００の起動時に、グループ登録情報記憶部１１２を参照し、自身の属するグループの自身グループ情報２０２をＨｅｌｌｏメッセージ２００（図３）に含めて作成するようユニキャスト経路制御部１１１に指示する。Ｈｅｌｌｏメッセージ発信部１１６は、ユニキャスト経路制御部１１１が作成したＨｅｌｌｏメッセージをインタフェース部１０２を介して、マルチホップネットワーク上に発信する。Ｈｅｌｌｏメッセージは、ユニキャスト経路制御方式に基づき、定期的に送信される。もしくは、グループ情報に変更があった場合、Ｈｅｌｌｏメッセージを送信してもよい。
【００４３】
Ｈｅｌｌｏメッセージ受信部１２０は、インタフェース部１０２を介して、他のノード１００が発信したＨｅｌｌｏメッセージを受信する。たとえば、図４のノード１２では、隣接ノード（直接無線で通信可能な範囲に存在するノード）であるノード１１、１３、１５、２２、２４、および３６（図中、二重線枠）から同様のマルチキャストグループ情報が入ったＨｅｌｌｏメッセージを受信する。
【００４４】
Ｇ−ＭＰＲノード選択部１１８は、Ｈｅｌｌｏメッセージ受信部１２０が受信したＨｅｌｌｏメッセージに基づいて、通常のユニキャスト経路制御のＨｅｌｌｏ受信処理（リンク生存監視、隣接ノード更新、２ホップ先ノード更新、ＭＰＲ選択等）を行う。
【００４５】
マルチキャスト経路制御部１１４は、他の隣接ノードからＨｅｌｌｏメッセージを受信した後、次のＨｅｌｌｏメッセージの送信タイミングを迎えると、Ｇ−ＭＰＲノード選択部１１８が更新した隣接ノードの情報に基づいて、図５に示すように、図３のＨｅｌｌｏメッセージに、隣接ノード（ＳＹＮ Neighbor）の隣接ノードＩＰアドレス２０４と、その隣接ノード（ＳＹＮ Neighbor）の隣接ノードグループ情報２０６と、を追加したＨｅｌｌｏメッセージ２００を作成するようユニキャスト経路制御部１１１に指示する。図５では、図４のノード１２のユニキャスト経路制御部１１１が作成するＨｅｌｌｏメッセージ２００の一例を示す。そして、Ｈｅｌｌｏメッセージ発信部１１６は、ユニキャスト経路制御部１１１が作成したＨｅｌｌｏメッセージをインタフェース部１０２を介して、マルチホップネットワーク上に発信する。他のノード１００も同様に隣接ノードのＩＰアドレス情報およびグループ情報を含めたＨｅｌｌｏメッセージをそれぞれ作成して送信する。
【００４６】
図５のＨｅｌｌｏメッセージ２００では、ユニキャスト経路制御用の情報（隣接ノードの隣接ノードＩＰアドレス２０４）に加え、自身グループ情報２０２と隣接ノードグループ情報２０６がマルチキャスト経路制御部１１４によって追加されている。
【００４７】
さらに、Ｈｅｌｌｏメッセージ受信部１２０が他の隣接ノードからＨｅｌｌｏメッセージを受信した後、ユニキャスト経路制御部１１１は、Ｇ−ＭＰＲノード選択部１１８によるＨｅｌｌｏ受信処理に基づいて、ＭＰＲ隣接ノードを選択して、選択されたＭＰＲ隣接ノードの情報を更新する。本実施形態では、このＭＰＲの選択は、非特許文献１に開示されるとおりに行うことができる。ＭＰＲはユニキャスト制御メッセージをネットワーク全体にフラッディングするために使われる転送ノードであるため、グループとは関係なく選択される。図６に、ノード１２が選択したユニキャスト経路制御用ＭＰＲを示す。全２ホップ先ノードをカバーするように、ノード１１、１３、２２、および３６がＭＰＲとして選択される。
【００４８】
図７に示すように、Ｈｅｌｌｏメッセージ２００は、図３のＨｅｌｌｏメッセージに、さらに、選択されたＭＰＲ隣接ノードの隣接ノードＩＰアドレス２１４と、そのＭＰＲ隣接ノードの隣接ノードグループ情報２１６とを含む。また、ＭＰＲに選択されなかった隣接ノードの隣接ノードＩＰアドレス２０４およびその隣接ノードの隣接ノードグループ情報２０６も含む。
【００４９】
Ｇ−ＭＰＲノード選択部１１８は、さらに、隣接ノードから受信したＨｅｌｌｏメッセージに含まれる、その隣接ノードが属するグループ情報を用いて、自身が属するグループ毎に、同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、同一のグループに属する隣接ノードの中からグループ用転送ノード（Ｇｒｏｕｐ  ＭＰＲ：以下、Ｇ−ＭＰＲ）を選択する。選択の方法はユニキャスト用ＭＰＲと同様である。異なるのは、対象とする隣接ノード、２ホップ先ノードの集合が自身と同じグループに属しているものだけである点である。
【００５０】
たとえば、上記実施形態の通信システムにおいて、Ｇ−ＭＰＲノード選択部１１８は、重複する２ホップ先のノードが少ない隣接ノードを優先してグループ用転送ノード（Ｇ−ＭＰＲ）に選択する。この構成によれば、転送先ノードが重複することによる干渉を避けることができ、通信品質が向上する。
【００５１】
たとえば、ノード１２は、自身が属するグループ１に属している隣接ノードおよび２ホップ先ノードを対象として、グループ１用のＧ−ＭＰＲを選択する。図８に、ノード１２においてＧ−ＭＰＲノード選択部１１８が選択したグループ１用転送ノードを示す。グループ１に属する隣接ノードは、ノード１１、１３、および１５の３ノード（図中、二重線で示す）である。グループ１に属する全２ホップ先ノード（ノード１４、１６、および１８（図中、破線で示す））をカバーするため、ノード１３およびノード１５が、グループ１用転送ノード（Ｇ−ＭＰＲ）に選択される。
【００５２】
そして、図１のマルチキャスト経路制御部１１４は、図７に示すように、Ｇ−ＭＰＲノード選択部１１８によって選択されたＧ−ＭＰＲの隣接ノードＩＰアドレス２２４をさらに含むＨｅｌｌｏメッセージ２００を作成するようユニキャスト経路制御部１１１に指示する。
【００５３】
Ｇ−ＭＰＲノード選択部１１８が、ユニキャスト経路制御用ＭＰＲおよびグループ１用Ｇ−ＭＰＲを選択した後、Ｈｅｌｌｏメッセージ発信部１１６が、次のＨｅｌｌｏメッセージ送信タイミングが来た時点で、その情報をＨｅｌｌｏメッセージ２００に載せて（図７）送信する。
【００５４】
本実施形態の通信システムにおいて、ノード１００は、マルチキャストの転送エントリを登録するマルチキャスト転送テーブル１４６を記憶する転送テーブル記憶部と、隣接ノードから受信した通信メッセージ（Ｈｅｌｌｏメッセージ）に基づいて、隣接ノードから自身がグループ用転送ノード（Ｇ−ＭＰＲ）に指定されたか否かを判定するグループ用転送ノード判定部（Ｇ−ＭＰＲノード選択部１１８）と、自身がグループ用転送ノード（Ｇ−ＭＰＲ）に指定されたと判定されたとき、マルチキャスト転送テーブル１４６に、通信メッセージ（Ｈｅｌｌｏメッセージ）の送信元の隣接ノードを転送エントリに設定する設定部（Ｇ−ＭＰＲノード選択部１１８）と、をさらに備える。
【００５５】
マルチキャスト転送テーブル１４６は、複数の転送エントリから成るテーブルであり、ノード１００の図示されない記憶装置に記憶される。Ｇ−ＭＰＲノード選択部１１８が、Ｇ−ＭＰＲを選択したとき、Ｇ−ＭＰＲに選択されたノードの転送エントリをマルチキャスト転送テーブル１４６に書き込む。
たとえば、図７の例では、ノード１２からグループ１のＧ−ＭＰＲに選択されたノード１３とノード１５は、下記の転送エントリをマルチキャスト転送テーブル１４６に登録する。
転送エントリ：＜Group 239.192.0.1,Upstream Node 10.0.0.12＞
【００５６】
また、ノード１００は、受信した通信メッセージを参照し、転送先ノード情報に基づいて、自身がグループ用転送ノードであるか否かを判定する判定部（Ｇ−ＭＰＲノード選択部１１８）と、自身が属するグループ宛のマルチキャストのデータパケットを受信するパケット受信部１４２と、自身がグループ用転送ノードであると判定された場合、受信したデータパケットを自身が属するグループの他の隣接ノードに転送する転送部（パケット送信部１４８）と、を備える。
【００５７】
また、本実施形態の通信システムにおいて、ノード１００は、マルチキャストパケットを受信するパケット受信部１４２と、マルチキャストパケットを受信したとき、受信したマルチキャストパケットが自身のグループと同一グループ宛か否かを判定するマルチキャスト判定部（パケット転送判定部１４４）と、マルチキャストパケットが自身のグループと同一グループ宛ではないと判定された場合、受信したマルチキャストパケットを破棄する破棄部（パケット転送判定部１４４）と、を備える。
【００５８】
また、ノード１００は、マルチキャスト転送テーブル１４６を参照し、マルチキャストパケットの送信元のノードが転送エントリに含まれるか否か判定するエントリ判定部（パケット転送判定部１４４）を備え、ノード１００の転送部（パケット転送判定部１４４）は、マルチキャストパケットの送信元のノードが転送エントリに含まれない場合、マルチキャストパケットを破棄し、マルチキャストパケットの送信元のノードが転送エントリに含まれる場合、受信したマルチキャストパケットを同一グループの隣接ノードに転送する。
【００５９】
パケット受信部１４２は、インタフェース部１０２を介してネットワーク上の他のノードからパケットを受信する。パケット転送判定部１４４は、パケット受信部１４２がパケットを受信したとき、該パケットの宛先であるアプリケーション１０１へパケットデータを引き渡し、さらに他ノードへの転送処理をパケット送信部１４８に指示する。このとき、パケット転送判定部１４４は、受信したパケットの種類に応じた処理を行う。すなわち、パケット転送判定部１４４は、まず、受信したパケットがユニキャストかマルチキャストパケットかを判別する。そして、パケット転送判定部１４４は、受信したパケットがユニキャストパケットの場合、ユニキャストテーブル（不図示）を参照し、他のノードにパケットを転送処理する。ユニキャストパケットの転送処理は、非特許文献１に記載された処理と同様であり、本発明の本質に関わらないので、詳細な説明は省略する。
【００６０】
一方、パケット転送判定部１４４は、受信したパケットがマルチキャストパケットの場合、自身のグループと同一のグループ宛か否かを判定する。そして、自身のグループと同一のグループ宛でないと判定された場合、受信したマルチキャストパケットを破棄する。一方、自身のグループと同一のグループ宛であると判定された場合、該グループ宛パケットの受信を希望するアプリケーション１０１にパケットデータを引き渡す。その後、マルチキャスト転送テーブル１４６を参照し、受信したマルチキャストパケットの送信元のノードが転送エントリに含まれるか否か判定する。そして、パケット転送判定部１４４は、マルチキャストパケットの送信元のノードが転送エントリに含まれない場合、マルチキャストパケットを破棄する。一方、パケット転送判定部１４４は、マルチキャストパケットの送信元のノードが転送エントリに含まれる場合、受信したマルチキャストパケットを同一のグループの隣接ノードに転送するよう、パケット送信部１４８に指示する。
【００６１】
パケット送信部１４８は、パケット受信部１４２が受信したパケットやアプリケーション１０１から配信指示されたパケットを、パケット転送判定部１４４からの指示にしたがい、他のノードにインタフェース部１０２を介して送信する。たとえば、パケット送信部１４８は、マルチキャストパケットをパケット転送判定部１４４からの指示に従い、転送エントリされている隣接ノードにインタフェース部１０２を介して転送することができる。なお、マルチキャスト重複判定テーブル１４９については後述する。
【００６２】
このように構成された本実施形態の通信システムの動作について、以下に説明する。
図９は、本実施形態の通信システムの動作の一例を示すフローチャートである。ここでは、本実施形態の通信システムのノードのマルチキャスト経路構築処理の手順の一例を示している。
【００６３】
本実施形態の通信制御方法は、複数のノード１００間のマルチホップネットワークを形成する通信システムにおいて、ノード１００が、自身が属するグループを示す第１グループ情報と、隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージ（Ｈｅｌｌｏメッセージ）を作成し（不図示）、ノード１００が、作成されたＨｅｌｌｏメッセージを発信し（不図示）、ノード１００が、隣接ノードから受信したＨｅｌｌｏメッセージを参照し、第１グループ情報および第２グループ情報に基づいて、自身が属するグループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、同一のグループに属する隣接ノードの中からグループ用転送ノードを選択し（ステップＳ７１３〜Ｓ７１７）、ノード１００が、選択されたグループ用転送ノードを転送先ノード情報として含む通信メッセージを作成し、ノード１００が、作成された通信メッセージを発信し、ノード１００が、隣接ノードから受信した通信メッセージを参照し、転送先ノード情報に基づいて、マルチキャストするデータパケットをグループ用転送ノードに含まれる隣接ノードに転送する（不図示）。
【００６４】
複数のノード間のマルチホップネットワークを形成する通信システムにおいて、各種の処理手順をＣＰＵが実行することにより、前述のようなノード１００の各種ユニットが各種機能として実現される。
本発明の実施の形態に係るコンピュータプログラムは、ノード自身が属するグループを示す第１グループ情報と、隣接ノードが属するグループを示す第２グループ情報と、を含む通信メッセージを作成する手順と、作成された通信メッセージを発信する手順と、隣接ノードから受信した通信メッセージを参照し、第１グループ情報および第２グループ情報に基づいて、ノード自身が属するグループと同一のグループに属する少なくとも２ホップ先のノードにパケットを転送可能なように、同一のグループに属する隣接ノードの中からグループ用転送ノードを選択する手順と、選択されたグループ用転送ノードを転送先ノード情報として含む通信メッセージを作成する手順と、作成された通信メッセージを発信する手順と、隣接ノードから受信した通信メッセージを参照し、転送先ノード情報に基づいて、マルチキャストするデータパケットをグループ用転送ノードに含まれる隣接ノードに転送する手順と、をコンピュータに実行させるように記述されている。
【００６５】
本実施形態のコンピュータプログラムは、コンピュータが読み取り可能な記録媒体に記録することができる。記録媒体は特に限定されない。
【００６６】
以下、本実施形態の通信システムのノードのマルチキャスト経路構築処理の手順の一例の詳細について図１乃至図９を用いて説明する。
まず、本実施形態のノード１００は、起動すると、ユニキャスト経路制御部１１１が作成した初期のＨｅｌｌｏメッセージとして、図３のＨｅｌｌｏメッセージ２００をＨｅｌｌｏメッセージ発信部１１６がインタフェース部１０２を介して発信する。そして、他のノードからのＨｅｌｌｏメッセージをインタフェース部１０２を介してＨｅｌｌｏメッセージ受信部１２０が受信することとなる（ステップＳ７０１）。
【００６７】
ノード１００において、Ｈｅｌｌｏメッセージ受信部１２０が、隣接ノードからＨｅｌｌｏメッセージを受信すると（ステップＳ７０１）、Ｇ−ＭＰＲノード選択部１１８が、通常のユニキャスト経路制御のＨｅｌｌｏ受信処理（リンク生存監視、隣接ノード更新、２ホップ先ノード更新、ＭＰＲ選択等）を行う（ステップＳ７０３）。なお、ノード１００の電源を切るなど、通信処理の終了要求を指示受付部（不図示）により受け付けた場合には、ノード１００の通信動作などを終了する（不図示）。一方、特に終了指示を受け付けない場合は、所定の間隔で、Ｈｅｌｌｏメッセージの発信処理を繰り返す（不図示）。
【００６８】
その後、Ｇ−ＭＰＲノード選択部１１８は、新たに自身がＧ−ＭＰＲとして選択されたかどうかをチェックする（ステップＳ７０５）。選択されている場合は（ステップＳ７０５のＹＥＳ）、Ｇ−ＭＰＲノード選択部１１８は、マルチキャスト転送テーブル１４６に転送エントリを追加する（ステップＳ７０７）。選択されていない場合は（ステップＳ７０５のＮＯ）、次のステップに進む。
【００６９】
また、Ｇ−ＭＰＲノード選択部１１８は、いままでＧ−ＭＰＲに選択されていたが選択されなくなった事象があるかどうかをチェックする（ステップＳ７０９）。ある場合は（ステップＳ７０９のＹＥＳ）、該当する転送エントリをマルチキャスト転送テーブル１４６から削除する（ステップＳ７１１）。ない場合（ステップＳ７０９のＮＯ）、次のステップに進む。その後、Ｇ−ＭＰＲノード選択部１１８は、自身が属するグループ毎に、ステップＳ７１５、およびステップＳ７１７のＧ−ＭＰＲの選択処理を繰り返す（ステップＳ７１３）。ステップＳ７１５では、該当するグループに属する隣接ノードと２ホップ先ノードを抽出する。これにより、マルチキャスト通信の経路が構築される。ステップＳ７１５の処理について、図１０を用いて詳しく説明する。
【００７０】
図１０に示すネットワークでは、ノード８１〜９２の７ノードで構成され、ノード８１〜８５はグループ８（図中、円形で示す）、ノード９１と９２はグループ９（図中、矩形で示す）に属しているとする。ノード８１におけるステップＳ７１５の処理を見ると、ノード８１のグループ８に属する隣接ノードはノード８２のみ、グループ８に属する２ホップ先ノードはノード８３と８５の２つである。しかし、ノード８５を隣接ノードとするノード９１はグループ８に属していないため、ノード８１は、どのグループ隣接ノードを選択してもノード８５をカバーすることはできない。こうしたカバーできない２ホップ先ノードはＧ−ＭＰＲの選択から除かれるべきである。
【００７１】
そのため、ステップＳ７１５の処理は、以下の（１）〜（２）の手順で行われる。
（１）  隣接ノードの中から同一グループのノードを抽出し、グループ隣接ノード（以下、「Ｇ−ＮＧＢ」と記す）とする
（２）  Ｇ−ＮＧＢの隣接ノードの中から、Ｇ−ＮＧＢに属しておらず同一グループのノードを抽出し、グループ２ホップ先ノード（Ｇ−２ｈｏｐ）とする
そのため、図１０ではノード８１のＧ−ＮＧＢはノード８２、Ｇ−２ｈｏｐはノード８３となる。
【００７２】
ステップＳ７１７では抽出したグループ隣接ノード（Ｇ−ＮＧＢ）とグループ２ホップ先ノード（Ｇ−２ｈｏｐ）を用いて、該当するグループのＧ−ＭＰＲを選択する。
【００７３】
マルチキャスト転送テーブルに登録後は、ノード１３とノード１５はノード１２からグループ１（２３９．１９２．０．１）を宛先とするマルチキャストパケットを受信した場合、自身がそのパケットを受信するとともにそのパケットを再転送する。
【００７４】
このようにして、本実施形態の通信システムでは、少なくとも２ホップ先のノードにパケットが転送できるように、効率よく、自身の属するグループに属している隣接ノードの中からＧ−ＭＰＲに選択して、マルチキャスト通信経路を構築できる。これにより、ユニキャスト経路の有無に関わらずマルチキャスト経路を計算することができ、したがって、ネットワークトポロジ変化時にユニキャスト経路と同等の速さでマルチキャスト経路を再構成することができ、通信不能時間を短縮でき、通信品質を向上できる。
【００７５】
たとえば、ノードの移動、あるいは、停止、故障などにより、ネットワーク構成に変更が生じた場合に、迅速にマルチキャスト通信経路を再構築できる。
また、ユニキャスト経路制御メッセージであるＨｅｌｌｏメッセージを使って、マルチキャスト情報を送信するので、マルチキャスト経路制御のための特別なメッセージが不要であり、マルチキャストのための制御メッセージ負荷を削減できる。これにより、ＶＨＦ（Very High Frequency）やＵＨＦ（Ultra High Frequency）などの帯域が狭い無線インタフェースを用いた無線マルチホップネットワークにも利用可能となる。
【００７６】
以上説明したように、本実施形態の通信システムによれば、ユニキャスト経路制御メッセージを使ってマルチキャスト転送ノードを選択することで、トポロジー変更をユニキャスト経路制御が検知した際、にマルチキャスト転送ノードも再選択することが可能となり、迅速なマルチキャスト経路の修復が可能となる。
【００７７】
これにより、本発明では制御負荷を抑えながらトポロジー変化時に通信不能時間が短いマルチキャスト経路制御が可能となる。
【００７８】
また、本実施形態の通信システムにおいて、自身が送信するマルチキャストパケットに一意に識別可能な識別番号（シーケンス番号）を設定する識別番号設定部（パケット転送判定部１４４）と、自身が送信したマルチキャストパケットおよび隣接ノードから受信したマルチキャストパケットの識別情報をマルチキャスト重複判定テーブル１４９に登録する識別番号登録部（パケット転送判定部１４４）と、受信したマルチキャストパケットの識別情報がマルチキャスト重複判定テーブル１４９に存在するかを判別する判別部（パケット転送判定部１４４）と、受信したマルチキャストパケットの識別情報がマルチキャスト重複判定テーブル１４９に存在すると判別されたとき、受信したマルチキャストパケットを破棄する破棄部（パケット転送判定部１４４）と、をさらに備えることができる。
【００７９】
すなわち、パケット転送判定部１４４は、さらに、自身が送信するマルチキャストパケットに一意に識別可能な識別番号（シーケンス番号）を設定し、その識別番号をマルチキャストパケットの識別情報に含め、自身が送信したマルチキャストパケットの識別情報をマルチキャスト重複判定テーブル１４９に登録する。そして、パケット転送判定部１４４は、受信したマルチキャストパケットの識別情報がマルチキャスト重複判定テーブル１４９に存在するかを判別し、受信したマルチキャストパケットの識別情報がマルチキャスト重複判定テーブル１４９に存在すると判別されたとき、受信したマルチキャストパケットを破棄する。さらに、パケット転送判定部１４４は、隣接ノードから受信したマルチキャストパケットの識別情報がマルチキャスト重複判定テーブル１４９に存在しないと判別されたとき、受信したマルチキャストパケットの識別情報をマルチキャスト重複判定テーブル１４９に登録する。
【００８０】
上述したように、単にマルチキャスト転送テーブルに従ってマルチキャストパケットを再転送するだけでは、パケットのループが発生してしまう。例えば、図８において、ノード１２はノード１５とノード１３をグループ１のＧ−ＭＰＲに選択する。一方、ノード１５はノード１２とノード１６をグループ１のＧ−ＭＰＲに選択する。この状態で、ノード１２がグループ１宛のパケットを送信したとする。ノード１５はそのパケットを受信すると、自身をＧ−ＭＰＲに選択しているノード１２からのパケットであるためパケットを転送する。
【００８１】
ノード１２は、ノード１５が転送したパケットを受け取ることになる。ノード１２は、自身をＧ−ＭＰＲに選択しているノード１５からのパケットであるため、そのパケットを転送してしまう。実際には、自分が転送したパケットが戻ってきただけなので転送する必要は無いが、マルチキャスト転送テーブルだけではその判断ができない。そのため、ノード１２とノード１５の間（ノード１５とノード１６の間、ノード１２とノード１３の間も同様）で際限無くパケットの転送が繰り返されてしまう。
【００８２】
また、ノード１４は、ノード１２が送信したマルチキャストパケットをノード１３とノード１５の両方から重複して受信してしまう。
【００８３】
この転送ループや重複受信を防止するため、一度送信または受信したパケットは一定時間記録しておき、同じパケットを２回以上受信した場合は破棄する仕組みがあればよい。
【００８４】
本実施例では、ＩＰｖ４ヘッダのＩＤフィールドにノード毎（もしくはマルチキャストグループ毎）に管理するシーケンス番号を入れ、パケットを送信する毎にシーケンス番号をインクリメントする。各ノードは、自身が送信したマルチキャストパケットもしくは、隣接ノードから受信したマルチキャストパケットについて、下記の識別情報を一定時間マルチキャスト重複判定テーブル１４９に記録する。マルチキャスト重複判定テーブル１４９は、複数の識別情報から成るテーブルであり、ノード１００の図示されない記憶装置に記憶される。
【００８５】
識別情報：＜送信者アドレス，宛先グループアドレス，シーケンス番号＞
【００８６】
もし隣接ノードから受信したマルチキャストパケットの識別情報が、マルチキャスト重複判定テーブル１４９に存在する場合、そのパケットは破棄する。
【００８７】
図１１に、自ノード１００上で動作するアプリケーションからマルチキャストパケットが送信された場合の処理フローを示す。アプリケーション（不図示）がマルチキャストパケットを送信すると（ステップＳ８０１）、ノード１００のパケット転送判定部１４４は、そのパケットにシーケンス番号を付与し（ステップＳ８０３）、シーケンス番号をインクリメントする（ステップＳ８０５）。そして、パケット転送判定部１４４が、パケットの識別情報をマルチキャスト重複判定テーブル１４９に記録し（ステップＳ８０７）、その後、パケット送信部（不図示）がインタフェース部１０２を介してパケットを送信する（ステップＳ８０９）。
【００８８】
図１２に、隣接ノードからマルチキャストパケットを受信した場合の処理フローを示す。まずステップ９０１で隣接ノードからマルチキャストパケットを受信すると（ステップＳ９０１）、判定部（パケット転送判定部１４４）が、そのパケットの識別情報がマルチキャスト重複判定テーブル１４９に存在するかどうかを調べる（ステップＳ９０３）。識別情報が存在する場合（ステップＳ９０３のＹＥＳ）、破棄部（パケット転送判定部１４４）が、パケットを破棄し（ステップＳ９０５）、処理を終了する。識別情報が存在しない場合（ステップＳ９０３のＮＯ）、識別番号登録部（パケット転送判定部１４４）が、識別情報をマルチキャスト重複判定テーブル１４９へ登録し（ステップＳ９０７）、自ノード上で動作するアプリケーションにパケット受信を通知する（ステップＳ９０９）。その後、パケット転送判定部１４４が、マルチキャスト転送テーブル１４６にＧｒｏｕｐ＝宛先グループアドレス、Ｕｐｓｔｒｅａｍ  Ｎｏｄｅ＝そのパケットを送信したノードであるような転送エントリが存在するかを調べる（ステップＳ９１１）。エントリが存在する場合は（ステップＳ９１１のＹＥＳ）、パケット送信部１４８が、パケットを転送し（ステップＳ９１３）、本処理を終了する。エントリが存在しない場合は（ステップＳ９１１のＮＯ）、本処理を終了する。
【００８９】
以上説明したように、本実施形態の通信システムによれば、転送ループや重複受信を防止することができる。
【００９０】
（第２の実施の形態）
以上が本発明の基本的な動作であるが、ネットワークの状況によっては図１３のノード８１のようにグループから孤立してしまうことがありうる。この場合、基本動作ではノード８１はグループ宛パケットの送受信ができなくなる。以下は、そうした孤立ノードを救済する方法について説明する。なお、ノードとグループの構成は図１０と同じとする。
【００９１】
本実施形態の通信システムは、同一のグループに属する隣接ノードが存在しない場合、異なるグループの隣接ノードをグループ用転送ノード（Ｇ−ＭＰＲ）に選択する第１選択部（Ｇ−ＭＰＲノード選択部１１８）と、自身が属していないグループのグループ用転送ノード（Ｇ−ＭＰＲ）に選択されたノード１００において、該グループの隣接ノードをグループ用転送ノード（Ｇ−ＭＰＲ）として選択する第２選択部（Ｇ−ＭＰＲノード選択部１１８）と、異なるグループの隣接ノードから自分が所属するグループのグループ用転送ノード（Ｇ−ＭＰＲ）に選択された場合、転送エントリをマルチキャスト転送テーブル１４６に登録する登録部（Ｇ−ＭＰＲノード選択部１１８）と、をさらに備える。
【００９２】
すなわち、Ｇ−ＭＰＲノード選択部１１８は、Ｈｅｌｌｏメッセージのグループ情報に基づいて以下の判断を行う。たとえば、Ｇ−ＭＰＲノード選択部１１８は、同一のグループに属する隣接ノードが存在しない場合、異なるグループの隣接ノードをグループ用転送ノード（Ｇ−ＭＰＲ）に選択し、所属していないグループのグループ用転送ノード（Ｇ−ＭＰＲ）に選択されたノード１００において、該グループの隣接ノードをグループ用転送ノード（Ｇ−ＭＰＲ）として選択する。そして、さらに、Ｇ−ＭＰＲノード選択部１１８は、異なるグループの隣接ノードから、その隣接ノードが属するグループのグループ用転送ノード（Ｇ−ＭＰＲ）に選択された場合、その隣接ノードを転送エントリとしてマルチキャスト転送テーブル１４６に登録する。
【００９３】
ノード８１は、自身にグループ隣接ノード（Ｇ−ＮＧＢ）が無い場合、同一グループの２ホップ先ノードを持つ異なるグループの隣接ノードをひとつ選択する。図１３の場合、ノード８１はノード８５を隣接ノードに持つノード９１か、もしくはノード８３を隣接ノードに持つノード９２を選択する。選択したノードに対して、ノード８１はそれをグループ８のＧ−ＭＰＲに選択し、Ｈｅｌｌｏメッセージにその情報を入れて送信する。ここでは、ノード９１を選択したとする。
【００９４】
ノード９１はノード８１のＨｅｌｌｏメッセージから自身がグループ８のＧ−ＭＰＲに選択されたことを認識する。その場合、自身の隣接ノードの中でグループ８に属するノードをひとつグループ８のＧ−ＭＰＲとして選択し、Ｈｅｌｌｏメッセージにその情報を入れて送信する。ここではノード９１はノード８５をＧ−ＭＰＲに選択したとする。ノード８５が、ノード９１のＨｅｌｌｏメッセージにより、グループ外のノード９１からＧ−ＭＰＲに選択されたことを認識した場合、ノード８５は強制的にそのノード９１をＧ−ＭＰＲに選択する。これらの操作により、以下の転送エントリが各ノードに設定され、ノード８１はノード９１を介してグループ８宛のパケットを送受信できるようになる。
【００９５】
ノード９１：
＜Ｇｒｏｕｐ＝２３９．１９２．０．８，Ｕｐｓｔｒｅａｍ  Ｎｏｄｅ＝１０．０．０．８１＞
＜Ｇｒｏｕｐ＝２３９．１９２．０．８，Ｕｐｓｔｒｅａｍ  Ｎｏｄｅ＝１０．０．０．８５＞
ノード８５：
＜Ｇｒｏｕｐ＝２３９．１９２．０．８，Ｕｐｓｔｒｅａｍ  Ｎｏｄｅ＝１０．０．０．９１＞
【００９６】
以上説明したように、本発明の実施の形態の通信システムによれば、自身が属するグループから孤立しているノードを救済し、マルチキャストパケットを転送することができる。
【００９７】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００９８】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００９９】
１００  ノード
１０１  アプリケーション
１０２  インタフェース部
１１０  経路制御部
１１１  ユニキャスト経路制御部
１１２  グループ登録情報記憶部
１１４  マルチキャスト経路制御部
１１６  Ｈｅｌｌｏメッセージ発信部
１１８  Ｇ−ＭＰＲノード選択部
１２０  Ｈｅｌｌｏメッセージ受信部
１４０  パケット処理部
１４２  パケット受信部
１４４  パケット転送判定部
１４６  マルチキャスト転送テーブル
１４８  パケット送信部
１４９  マルチキャスト重複判定テーブル
２００  Ｈｅｌｌｏメッセージ
２０２  自身グループ情報
２０４  隣接ノードＩＰアドレス
２０６  隣接ノードグループ情報
２１４  隣接ノードＩＰアドレス
２１６  隣接ノードグループ情報
２２４  隣接ノードＩＰアドレス
【図１】
2011061569.tif 000003
【図２】
2011061569.tif 000004
【図３】
2011061569.tif 000005
【図４】
2011061569.tif 000006
【図５】
2011061569.tif 000007
【図６】
2011061569.tif 000008
【図７】
2011061569.tif 000009
【図８】
2011061569.tif 000010
【図９】
2011061569.tif 000011
【図１０】
2011061569.tif 000012
【図１１】
2011061569.tif 000013
【図１２】
2011061569.tif 000014
【図１３】
2011061569.tif 000015