(57)【要約】【課題】階層化が必要であるときのみに、経路を集約するアンカーノードを決定する。【解決手段】マルチホップネットワーク内のノードは、前記マルチホップネットワーク内のノードごとに、該ノードが通信経路を変更した変更頻度を取得する変更頻度取得手段と、前記変更頻度取得手段により取得された前記変更頻度に基づいて、前記マルチホップネットワーク内のノードのうち、経路変更を伴う変動ノードを特定する特定手段と、変動ノードと、該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードとして、前記特定手段により特定された前記変動ノードの周辺ノードのうち、いずれか1以上を、該アンカーノードに決定するアンカー決定手段と、を有する。【選択図】図３
2011029888.tif 000002
【特許請求の範囲】
【請求項１】
マルチホップネットワーク内のノードであって、
前記マルチホップネットワーク内のノードごとに、該ノードが通信経路を変更した変更頻度を取得する変更頻度取得手段と、
前記変更頻度取得手段により取得された前記変更頻度に基づいて、前記マルチホップネットワーク内のノードのうち、経路変更を伴う変動ノードを特定する特定手段と、
変動ノードと、該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードとして、前記特定手段により特定された前記変動ノードの周辺ノードのうち、いずれか1以上を、該アンカーノードに決定するアンカー決定手段と、
を有するノード。
【請求項２】
前記アンカー決定手段は、
前記周辺ノードを前記アンカーノードとすべきか否かの判断の指標となる指標値を算出する指標値算出手段と、
前記指標値算出手段により算出された前記指標値に基づいて、前記周辺ノードのうち、いずれか１以上を前記アンカーノードに決定するアンカーノード決定手段と、
を有する、請求項１に記載のノード。
【請求項３】
前記指標値は、前記アンカーノードと前記周辺ノードとの間のホップ数の統計量、又は、前記アンカーノードと前記変動ノードの隣接周辺ノードとの間のホップ数の統計量を含む、請求項２に記載のノード。
【請求項４】
前記指標値は、前記アンカーノード周辺のリンクの安定性と、前記アンカーノードと前記変動ノードとの間の通信頻度と、前記アンカーノードを設置するコストと、該変動ノードと通信中の相手ノードとの間のホップ数とのうち、いずれか１以上を含む、請求項２又は３に記載のノード。
【請求項５】
前記指標値算出手段は、自ノードをアンカーノードとする場合の前記指標値を算出し、
前記アンカー決定手段は、
前記指標値算出手段により算出された前記指標値に基づいて、自ノードを前記アンカーノードとすべきであるか否かを判断し、自ノードを該アンカーノードとすべきであれば、自ノードを該アンカーノードとする旨を通知するアンカー通知メッセージを送信するアンカー通知メッセージ送信手段と、
前記アンカー通知メッセージ送信手段により前記アンカー通知メッセージが送信されたならば、自ノードを前記アンカーノードに決定するアンカーノード確定手段と、
を有する請求項２乃至４のいずれか１項に記載のノード。
【請求項６】
前記指標値算出手段は、自ノードをアンカーノードとする場合の前記指標値を算出し、
前記アンカー決定手段は、
前記指標値算出手段により算出された前記指標値に基づいて、自ノードを前記アンカーノードとすべきであるか否かを判断し、自ノードを該アンカーノードとすべきであれば、自ノードを該アンカーノードとする旨を通知するアンカー通知メッセージを送信するアンカー通知メッセージ送信手段と、
他のノードからのアンカー通知メッセージの受信を受け付けるアンカー通知メッセージ受信手段と、
前記アンカー通知メッセージ送信手段により前記アンカー通知メッセージが送信されてから、所定期間内に、前記アンカー通知メッセージ受信手段により前記アンカー通知メッセージが受信されなければ、自ノードを前記アンカーノードに決定するアンカーノード確定手段と、
を有する、請求項２乃至４のいずれか１項に記載のノード。
【請求項７】
前記指標値算出手段は、前記前記変更頻度取得手段により前記更新頻度が取得されたとき、又は前記アンカー通知メッセージ受信手段により前記アンカー通知メッセージが受信されたとき、自ノードを前記アンカーノードとして前記指標値を算出する、請求項６に記載のノード。
【請求項８】
前記変更頻度取得手段は、
経路変更のための制御メッセージを受信する制御メッセージ受信手段と、
前記制御メッセージ受信手段により受信された制御メッセージに基づいて、変動ノードを同定し、該同定の結果と、該制御メッセージの受信履歴とに基づいて、前記変更頻度を算出する経路変更算出手段と、
を有する、請求項１乃至７のいずれか１項に記載のノード。
【請求項９】
前記制御メッセージには、経路変更を伴うノードを同定するための情報を含むトポロジ情報が付加されており、
前記変更頻度算出手段は、前記制御メッセージ受信手段により受信された制御メッセージに付加されたトポロジ情報に基づいて、変動ノードを同定する、請求項８に記載のノード。
【請求項１０】
前記トポロジ情報には、前記周辺ノードを同定するための情報が更に含まれ、
前記アンカー決定手段は、前記トポロジ情報に基づいて、前記周辺ノードを同定する、請求項９に記載のノード。
【請求項１１】
前記制御メッセージ受信手段は、前記制御メッセージとして、ＲＲＥＱ(Route Request)メッセージ、ＲＲＥＰ(Route Reply)メッセージ、又はＲＥＲＲ(Route Error)メッセージを受信する、請求項８乃至１０のいずれか１項に記載のノード。
【請求項１２】
前記制御メッセージ受信手段は、前記制御メッセージとして、ＴＣ(Topology Control)メッセージを受信する、請求項１１に記載のノード。
【請求項１３】
前記アンカー決定手段により前記アンカーノードが決定された後において、前記変動ノードと該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを、該アンカーノードへ送信する制御メッセージ送信手段を更に有する、請求項１乃至１２のいずれか１項に記載のノード。
【請求項１４】
前記アンカー決定手段により前記アンカーノードが決定された後に前記変更頻度取得手段により取得された前記変動ノードの前記変更頻度が、アンカーノード決定前における変更頻度より大きければ、前記アンカーノードを変更するアンカーノード変更手段を更に有する、請求項２乃至１３のいずれか１項に記載のノード。
【請求項１５】
前記アンカーノード変更手段は、前記アンカー決定手段により前記アンカーノードが決定された後に前記変更頻度取得手段により取得された前記変動ノードの前記変更頻度が、アンカーノード決定前における値より大きい場合、又は、前記指標値算出手段により算出された前記指標値に基づいて現在のアンカーノードよりも他のノードの方がアンカーノードとしてふさわしいと判断される場合、前記変動ノードに対応するアンカーノードを変更する、請求項１４に記載のノード。
【請求項１６】
前記アンカーノード変更手段は、
前記アンカー決定手段により前記アンカーノードが決定された後に前記指標値算出手段により算出された前記指標値に基づいて、現在のアンカーノードが、アンカーノードとしてふさわしくないと判断された場合、前記隣接周辺ノードのうち、いずれかのノードを新たなアンカーノードの候補である新アンカー候補ノードに決定する新アンカーノード決定手段と、
前記新アンカーノード決定手段により決定された前記新アンカー候補ノードへ、該ノードを新たなアンカーノードに設定することを要求する要求メッセージを送信する要求メッセージ送信手段と、
を更に有する、請求項１５に記載のノード。
【請求項１７】
前記アンカー決定手段は、
他のノードからの要求メッセージの受信を受け付ける要求メッセージ受信手段を更に有し、
前記指標値算出手段は、前記要求メッセージ受信手段により前記要求メッセージが受信されたとき、自ノードを前記アンカーノードとする場合の前記指標値を算出する、請求項１６に記載のノード。
【請求項１８】
経路の変動を生じさせる特性を示す経路特性変数を取得する特性変数取得手段を更に有し、
前記特定手段は、前記変更頻度に基づいて、特定した１以上の前記変動ノードを、前記特性変数取得手段により取得された前記経路特性変数に基づいて、グループ化する、請求項１乃至１７のいずれか１項に記載のノード。
【請求項１９】
前記変動ノードと該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信する、もしくは、データパケットを、経路変更を伴うノードに中継するノードを代表ノードとして、
前記特性変数取得手段により取得された前記経路特性変数に基づいて、前記グループ化されたノードのうち、いずれかを、前記代表ノードに決定する代表決定手段を更に有する、請求項１８に記載のノード。
【請求項２０】
前記代表ノード決定手段により決定された前記代表ノードを通知する代表通知メッセージを送信する代表通知メッセージ送信手段を更に有する、請求項１９に記載のノード。
【請求項２１】
前記アンカー決定手段により前記アンカーノードが決定された後に記変更頻度取得手段により取得された前記変動ノードの前記変更頻度が、あらかじめ設定した閾値を下回る場合、該アンカーノードの設定を解除するアンカー解除手段を更に有する、請求項１乃至２０のいずれか１項に記載のノード。
【請求項２２】
変更頻度取得手段が、マルチホップネットワーク内のノードごとに、該ノードが通信経路を変更した変更頻度を取得し、
特定手段が、前記変更頻度取得手段により取得された前記変更頻度に基づいて、前記マルチホップネットワーク内のノードのうち、変動ノードを特定し、
変動ノードと、該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードとして、
アンカー決定手段が、前記特定手段により抽出された前記変動ノードの周辺ノードのうち、いずれか1以上を、前記アンカーノードに決定するノードの制御方法。
【請求項２３】
コンピュータに、
マルチホップネットワーク内のノードごとに、該ノードが通信経路を変更した変更頻度を取得する変更頻度取得手順、
前記変更頻度取得手順で取得された前記変更頻度に基づいて、前記マルチホップネットワーク内のノードのうち、経路変更を伴う変動ノードを特定する特定手順、及び
変動ノードと、該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードとして、前記特定手順により特定された前記経路変更を伴うノードの周辺ノードのうち、いずれか1以上を、前記アンカーノードに決定するアンカー決定手順、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチホップネットワークに接続されるノード、ノードの制御方法、およびその方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
近年、３Ｇ（3rd Generation）ネットワークや無線ＬＡＮ(Local Area Network)の普及に伴い、エリア拡大等を目的としたマルチホップネットワークの構築に対する需要が増加してきている。
【０００３】
無線ネットワークの特徴として、リンクロス等によるリンク不安定性、ノード移動による接続ノードの変更が挙げられる。これらは、予測できない時間変動、空間変動を伴う。そこで重要となるのが、ルーティング技術である。
【０００４】
マルチホップネットワークに用いられるルーティング技術には、プロアクティブ型のルーティングプロトコルと、リアクティブ型のルーティングプロトコルとがある。
【０００５】
プロアクティブ型のプロトコルの代表例はＯＬＳＲ（Optimized Link State Routing）プロトコルである。ＯＬＳＲは、ＩＥＴＦ（Internet Engineering Task Force）により規定されたプロトコルであり、詳細は、非特許文献１に開示されている。
【０００６】
リアクティブ型のプロトコルの代表例は、ＡＯＤＶ（Ad hoc On-Demand Distance Vector）プロトコルやＤＳＲ（Dynamic Source Routing）プロトコルである。ＡＯＤＶやＤＳＲは、ＩＥＴＦにより規定されたプロトコルであり、これらの詳細は、それぞれ非特許文献２、３に開示されている。
【０００７】
プロアクティブ型のプロトコルでは、通信が行われる前に、ノードが予め経路情
報を交換しておく。具体的には、全ノードが、定期的にＨＥＬＬＯパケットの送受信を行い、隣接ノードとの接続確認を行なう。その結果得られたリンクステート情報をTopology Controlメッセージ（TC）に格納し、ネットワーク全体に定期的に通知する。TCに基づいて、各ノードは全ノードのリンクステート情報を更新し、ネットワーク全体のトポロジーを管理する。定期的にトポロジー情報が取得できるため、通信開始前に利用可能経路が決定できる。
【０００８】
このような方式では、各ノードが常時、最短な経路を保持できるので、パケット転送効率がよいというメリットがある。しかし、全ノードが定期的にネットワーク全体に制御パケットを送信して、リンクステート情報を通知する必要がある。このため、制御パケットの送受信により、制御トラヒックの帯域の一部が占有されるというデメリットがある。
【０００９】
一方、リアクティブ型のプロトコルでは、通信の必要性が生じてから、ノードが経路情報を交換する。具体的には、例えば、あるノードにおいてトラヒックが発生したとき、そのノードは、リクエストパケットをネットワークにブロードキャストして経路を検索する。そして、そのノードは、トラヒックの宛先ノードからのレスポンスパケットを受信することにより経路を確定する。
【００１０】
このような方式では、トラヒックが発生してから、クエリパケットを送信するので、通信開始までの遅延が生じるが、クエリパケットの送信頻度が少ないので、経路制御負荷が小さいというメリットがある。しかし、経路変更の増加に伴い、クエリパケットの増加により、経路制御負荷が増大してしまう。また、経路変更を伴う領域が局所的な場合であっても、制御パケットがフラッディングにより広範囲に送信されるため、経路変更を伴わない範囲に位置するノードにも余分な制御パケットが送信される。
【００１１】
これらは、ネットワークを構成する各ノードが対等な関係であり、各ノードが同じ機能・役割を持つ。これらのルーティングは、フラットルーティングと呼ばれる。これら、フラットルーティングプロトコルでは、経路変更増加に伴う制御パケットの送受信による、経路制御負荷が問題となる。経路制御負荷を軽減するため、非特許文献４では、大規模ネットワークのスケーラビリティに対応した階層型ルーティングプロトコルが提案されている。
【００１２】
このプロトコルでは、ネットワーク全体が複数のノードグループに階層化されており、各ノードグループの代表ノードが、グループ内の他のノードにパケットを転送する。
【００１３】
グループ間の通信は、代表ノードを介して行われるので、ネットワーク全体でのルーティングは、代表ノード間でのみ行われる。このため、スケーラビリティが確保される。
【００１４】
また、階層化を行うことにより、局所的な経路変更が煩雑に行われても、その経路変動は、上位のネットワークから隠蔽される。例えば、あるグループが移動することにより、そのグループ内の経路が変更される場合であっても、移動に伴う経路検索と確立とは、グループ内のノード間で行われる。このため、グループ外のノードは、その影響を受けなくて済む。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】T. Clausen, and P. Jacquet, “Optimized Link State Routing Protocol (OLSR)”, IETF RFC 3626, 2003.
【非特許文献２】C. Perkins, E. Belding-Royer, and S. Das, “Ad hoc On-Demand Distance Vector (AODV) Routing,” IETF RFC 3562, 2003.
【非特許文献３】David B. Johnson, David A. Maltz, and Yih-Chun Hu, “The Dynamic Source Routing protocol for mobile ad hoc networks (DSR)”. Internet draft (work inprogress), IETF, April 2003.
【非特許文献４】G. Pei, M. Gerla and X. Hong, LANMAR: Landmark Routing for Large Scale Wireless Ad Hoc Networks with Group Mobility, Proceedings of IEEE/ACM MobiHOC2000, Boston, MA, Aug. 2000.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、非特許文献４に記載のプロトコルでは、階層化を維持するための制御パケットのやり取りが行なわれる。経路変更が少ない場所や時間には、余計な制御負荷を伴うことになる。その場合には、フラットルーティングを用いる方が制御負荷を低減できる。
【００１７】
従って、経路変動の少ない場合には、フラットルーティングを用い、経路変動が増加してきた場合には、階層化ルーティングを行なうことが適切である。
【００１８】
本発明は、経路変動状況を検出し、階層化が必要であるときのみに、階層化を行うために、通常のフラットルーティングの制御メッセージから経路変動を伴うノードを特定する技術と、それら経路変動に伴う制御メッセージを受信し、経路を集約するアンカーノードを決定する技術を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明のノードは、マルチホップネットワーク内のノードであって、前記マルチホップネットワーク内のノードごとに、該ノードが通信経路を変更した変更頻度を取得する変更頻度取得手段と、前記変更頻度取得手段により取得された前記変更頻度に基づいて、前記マルチホップネットワーク内のノードのうち、経路変更を伴う変動ノードを特定する特定手段と、変動ノードと、該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードとして、前記特定手段により特定された前記変動ノードの周辺ノードのうち、いずれか1以上を、該アンカーノードに決定するアンカー決定手段と、を有する。
【００２０】
本発明のノードの制御方法は、変更頻度取得手段が、マルチホップネットワーク内のノードごとに、該ノードが通信経路を変更した変更頻度を取得し、特定手段が、前記変更頻度取得手段により取得された前記変更頻度に基づいて、前記マルチホップネットワーク内のノードのうち、変動ノードを特定し、変動ノードと、該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードとして、アンカー決定手段が、前記特定手段により抽出された前記変動ノードの周辺ノードのうち、いずれか1以上を、前記アンカーノードに決定するノードの制御方法である。
【００２１】
本発明のプログラムは、コンピュータに、マルチホップネットワーク内のノードごとに、該ノードが通信経路を変更した変更頻度を取得する変更頻度取得手順、前記変更頻度取得手順で取得された前記変更頻度に基づいて、前記マルチホップネットワーク内のノードのうち、経路変更を伴う変動ノードを特定する特定手順、及び変動ノードと、該変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードとして、前記特定手順により特定された前記経路変更を伴うノードの周辺ノードのうち、いずれか1以上を、前記アンカーノードに決定するアンカー決定手順、を実行させるためのプログラムである。
【発明の効果】
【００２２】
本発明によれば、ノードが、経路の変更頻度に基づいて経路変更を伴うノードを特定し、適切なノードをアンカーノードとし、そのアンカーノードが、変動ノードへの経路確立、データパケットの中継を行なう。従って、通信システムは、経路変動が多いときにのみ階層化を行なうことが可能となり、不要な制御負荷を低減できる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態の通信システムの一構成例を示す全体図である。
【図２】（ａ）本発明の第１の実施形態におけるＲＲＥＱメッセージフォーマットである。（ｂ）本発明の第１の実施形態におけるＲＲＥＰメッセージフォーマットである。
【図３】本発明の第１の実施形態のノードの一構成例を示すブロック図である。
【図４】本発明の第１の実施形態のアンカー通知メッセージのヘッダファーマットを示す図である。
【図５】本発明の第１の実施形態の計測情報の内容をまとめた表である。
【図６】本発明の第１の実施形態のノードの動作を示すフローチャートである。
【図７】本発明の第１の実施形態のアンカー通知メッセージ送信処理を示すフローチャートである。
【図８】本発明の第１の実施形態のアンカー通知メッセージ受信処理を示すフローチャートである。
【図９】本発明の第１の実施形態の経路変更処理を示すフローチャートである。
【図１０】本発明の第１の実施形態のノードの動作を示すシーケンス図である。
【図１１】本発明の第１の実施形態のノードの動作を示すシーケンス図である。
【図１２】本発明の第２の実施形態のノードの動作を示すシーケンス図である。
【図１３】本発明の第２の実施形態のノードの動作を示すシーケンス図である。
【図１４】本発明の第３の実施形態のノードの構成を示すブロック図である。
【図１５】本発明の第３の実施形態の特性情報の内容をまとめた表である。
【図１６】本発明の第３の実施形態のノードの動作を説明するための図である。
【図１７】本発明の第３の実施形態のアンカー通知メッセージ受信処理を示すフローチャートである。
【図１８】本発明の第４の実施形態のノードの動作を示すフローチャートである。
【図１９】本発明の第４の実施形態のノードの動作を示すシーケンス図である。
【図２０】本発明の第５の実施形態のノードの動作を示すフローチャートである。
【図２１】本発明の第５の実施形態のアンカー変更処理を示すフローチャートである。
【図２２】本発明の第５の実施形態のノードの動作を示すシーケンス図である。
【図２３】本発明の第６の実施形態のノードの動作を示すフローチャートである。
【図２４】本発明の第６の実施形態のアンカー解除処理を示すフローチャートである。
【発明を実施するための形態】
【００２４】
本発明を実施するための形態について図面を参照して詳細に説明する。
【００２５】
本発明は、パケット転送機能を持つ複数のノードから構成されるマルチホップネットワークにおいて、ネットワーク状況に応じて階層構造を構築することを特徴とする。以下の説明では、ネットワーク構成の例として無線マルチホップネットワークを用いて説明するが、これに限られない。例えば、無線に限らず有線ネットワークに適応することも可能である。
【００２６】
図１は、本実施形態の通信システム１の構成を示す全体図である。通信システム１は、無線マルチホップネットワークである。図１を参照すると通信システム１は、ノード１０〜２８を有する。
【００２７】
ノード１０〜２８は、アクセスポイントを介さずに、互いに通信することが可能な機器であり、例えば、移動体通信機器である。通信元のノードからの電波が直接には届かない範囲に、通信先のノードが位置する場合であっても、それらのノード間の各ノードがデータを中継することにより、各ノードは、互いに通信することができる。なお、本実施形態では、ノードの数は１９個であるが、図１に示す数に限らない。
【００２８】
本発明では、各ノードを４種類に分類し、それぞれを以下のように定義する。一つは変動ノードで、リンク状態の不安定性やノード移動等が原因で、経路変更が頻繁に行なわれ、その頻度が閾値を上回るノードである。それ以外のノードを”周辺ノード”と呼ぶ。周辺ノードのうち、変動ノードと1ホップで接続できるノードを”隣接周辺ノード”と呼ぶ。更に、周辺ノードのうち、経路を集約し、変動ノードの経路を確立するノードを”アンカーノード”とする。
【００２９】
図１の場合を例に挙げる。図１では、ノード２８周辺のリンク状態が不安定のため、経路切断が頻繁に起こり、ノード１０が送信元ノードとなり、宛先ノードとなるノード２８との通信を開始する場合を想定する。この例では、これら経路変動をともなうノード２８が変動ノードとなり、変動ノード２８と隣接するノード２４，２５，２６が隣接周辺ノードとなる。ノード２３、２７は２８とは隣接しない。アンカーノードの決定方法は実施形態１，２に記載される。
【００３０】
ノード間の経路の確立において、各ノードは、経路制御を行うための制御パケットを送受信する。この制御パケットに含まれる情報は、通信システム１で使用される通信プロトコルにより異なる。
【００３１】
本実施形態では、各ノードは、通信プロトコルとして、リアクティブ型の通信プロトコルを使用する。リアクティブ型のプロトコルは、例えば、ＡＯＤＶである。ＡＯＤＶにおいて、制御パケットは、ＲＲＥＱ（Route Request）メッセージ、ＲＲＥＰ（Route Reply）メッセージ、またはＲＥＲＲ(Route Error)メッセージなどを格納する。
【００３２】
また、本実施形態では、ＡＯＤＶに規定された制御パケット以外の制御メッセージとして、図９で後述する経路確認通知メッセージ、および経路切断通知メッセージ、アンカー通知メッセージも送受信される。
【００３３】
ＡＯＤＶにおける経路探索の手順について簡単に説明する。各ノードは、各ノードを宛先とした場合の経路が記載されたルーティングテーブルを参照する。
【００３４】
ルーティングテーブルにノード２８への経路が記載されていなければ、ノード１０は、ＲＲＥＱメッセージをブロードキャストする。
【００３５】
図２（ａ）は、ＲＲＥＱメッセージのフォーマットを示す図である。同図に示すように、ＲＲＥＱメッセージには、「Ｔｙｐｅ」、「Ｕ」、「ホップ数」、「ＲＲＥＱ−ＩＤ」、「送信先ＩＰアドレス」、「送信先シーケンス番号」、「送信元ＩＰアドレス」、および「送信元シーケンス番号」、「トポロジ情報」などのフィールドが設けられる。「トポロジ情報」のフィールドは、非特許文献２に規定されたパケットヘッダにおいて、本発明で更に追加したフィールドである。
【００３６】
「Ｔｙｐｅ」は、メッセージの種類を識別可能にするための番号である。ここでは、Ｔｙｐｅに「１」が設定されている。「Ｕ」は、送信元のルーティングテーブルに、送信先のシーケンス番号が記載されているか否かを示すフラグである。シーケンス番号は、メッセージの新旧を識別するための番号であり、各ノードは、固有のシーケンス番号を管理している。
【００３７】
「ＲＲＥＱ−ＩＤ」は、ＲＲＥＱメッセージの重複送信を避けるために発行される番号であり、ＲＲＥＱメッセージが発行されるたびにインクリメントされる。「ホップ数」は、制御パケットが、送信元のノードから送信先のノードへ到達するまでに転送される回数である。
【００３８】
「送信先ＩＰアドレス」は、送信先のノードのＩＰアドレスである。「送信先シーケンス番号」は、送信元が最後に知った送信先のシーケンス番号である。送信元のルーティングテーブルに記載されていなければ、「Ｕ」フラグが設定される。
【００３９】
「送信元ＩＰアドレス」は、送信元のノードのＩＰアドレスである。「送信元シーケンス番号」は、送信元のノード自身のシーケンス番号である。送信元のノードは、ループを避けるため、ＲＲＥＱメッセージ送信の直前に、自身のシーケンス番号をインクリメントする。
【００４０】
（トポロジ情報についての説明）
「トポロジ情報」は、制御メッセージを受信したノードが、経路変更を伴うノード(変動ノード)や、その隣接周辺ノードを特定するための情報である。その情報は２種類ある。一つは、現在経路修復の対象となっている経路切断ノード（変動ノード）である。
【００４１】
もう一つは、過去に制御パケットのやり取り、RREQメッセージ、RREPメッセージ, RERRメッセージにより取得した変動ノードとその隣接周辺ノードリストである。変動ノードとその経路切断とを検出した際、周辺ノードは経路修復の際に送信するRREQメッセージに、前記変動ノードとその隣接周辺ノードとのＩＰアドレスや識別番号を、トポロジ情報として制御メッセージに付加する。
【００４２】
ここで、送信元のノードは、ＲＲＥＱメッセージを格納するパケットヘッダ（不図示）にＴＴＬ(Time To Live)値を設定することもできる。ＴＴＬ値を設定することにより、送信元のノードは、送信元から送信先への転送ノード数を制限できる。
【００４３】
ノード１０からノード２８を宛先としてブロードキャストされたＲＲＥＱメッセージを、ノード１１が受信したとする。ノード１１は、自身のＩＰアドレスが「送信先ＩＰアドレス」と異なるので、このメッセージの「ホップ数」をインクリメントして送信元以外のノードへブロードキャスト（フラッディング）する。但し、ノード１１のルーティングテーブルにノード２８への経路が記載されていれば、ＲＲＥＰメッセージをノード１０へユニキャストする。
【００４４】
図２（ｂ）は、ＲＲＥＰメッセージのフォーマットを示す図である。同図に示すように、ＲＲＥＰメッセージには、「Ｔｙｐｅ」、「ホップ数」、「送信先ＩＰアドレス」、「送信先シーケンス番号」、および「送信元ＩＰアドレス」、「トポロジ情報」などのフィールドが設けられる。
【００４５】
「Ｔｙｐｅ」は、メッセージの種類を識別するための番号であり、「２」が設定される。「ホップ数」、「送信先ＩＰアドレス」、「送信先シーケンス番号」、および「送信元ＩＰアドレス」、「トポロジ情報」は、図２（ａ）に示したＲＲＥＱメッセージにおける同名のフィールドと同様である。
【００４６】
図１に戻り、ノード１０によりＲＲＥＱメッセージはフラッディングされる。RREQメッセージの転送経路のうちの一つはノード１０から転ノード１１、１６、２０、２４を経由して、ノード２８への経路である。同図における実線の矢印は、ノード１０、２８間のデータの転送経路を図示したものである。ノード２８は、到達したＲＲＥＱメッセージに応じて、経路確立のための応答メッセージであるＲＲＥＰメッセージを、２４、２０、１６、１１を経由してノード１０へユニキャストする。ノード２４、２０、１６、１１、１０は、受信したＲＲＥＰメッセージに基づいて、ルーティングテーブルを更新し、ノード１０、２８間の経路が確立する。
【００４７】
送信元ノード１０が、複数回ＲＲＥＰメッセージを受信した場合、ノード１０は、シーケンス番号の大きい経路を決定する。
【００４８】
また、経路確立後、ノード２８と２４間の経路が切断した場合の手順について説明する。経路切断を検出したノード２４は、以下の2通りの場合に、経路修復を行なう。一つは経路切断を検出した場合である。経路確立後に経路上のノードが接続確認のHelloメッセージを定期的に送信しあうことで、経路を確認するが、隣接ノードがHelloメッセージを一定期間受信しなかった場合経路切断とみなし、経路修復を開始する。もう一つはルーティングテーブルにエントリがあるものの使用されていない経路上に、データパケットが転送された場合である。
【００４９】
ＲＲＥＱメッセージを送信したノード２４が、対応するＲＲＥＰメッセージを所定期間内に受信できなかったとき、ノード２４はＲＥＲＲメッセージを生成する。そして、ノードは経路の切断によって影響を受けるノードへ、生成したＲＥＲＲメッセージを送信する。このＲＥＲＲメッセージにもホップ数、トポロジ情報のフィールドが新たに設けられる。
【００５０】
このようにしてノード移動や電波環境の変動が発生した場合、確立した経路が変更されることがある。以下に本実施形態における動作の説明を行う。図１において、ノード１０、２８間の経路が確立された後、ノード２８周辺の電波環境が悪化した場合を想定する。同図における点線で囲まれた部分は、電波環境が悪化した領域である。
【００５１】
この場合、ノード２８に隣接するノード２４は、ノード２８と通信する際に、ＲＲＥＱメッセージを新たに発行し、ノード２８への経路を探索する。新たな経路でＲＲＥＱメッセージが送信された場合、ノード２８は、変更後の経路を通知するＲＲＥＰメッセージを返信し、変更後の経路が確立する。ノード２４が、ＲＲＥＰメッセージを所定期間内に受信しなかった場合、ノード２４は、ＲＥＲＲメッセージを送信する。
【００５２】
このように、リンクが不安定で経路が変更されると、経路を変更したノード間において、ＲＲＥＱメッセージ、ＲＲＥＰメッセージ、またはＲＥＲＲメッセージが送受信される。これらのメッセージを格納した制御パケットのヘッダには、前述したように、「トポロジ情報」が付加されている。このため、制御パケットを受信したノードは、その制御パケット内の「トポロジ情報」から、経路変更を伴うノードや、隣接周辺ノード、その他の周辺ノードを特定することができ、アンカー決定のための指標も取得できる。これらのノードは、RREQを送信するノードが過去の履歴から、指標を取得して格納する。ノードは、指標の取得において、ＲＲＥＱメッセージ、ＲＲＥＰメッセージに記載されるメッセージ作成ノードからのホップ数を参照する。
【００５３】
図３は、ノード１０〜２８の一構成例を示すブロック図である。同図を参照すると、ノードは、通信機能部１０１、アンカ機能部１０２、およびルーティング機能部１０３を有する。
【００５４】
通信機能部１０１は、他のノードとの間で、制御パケットやデータパケットなどの各種のパケットを送受信する。
【００５５】
ルーティング機能部１０３は、ルーティングテーブル１０３１を有する。ルーティング機能部１０３は、ルーティングテーブル１０３１に基づくパケット転送機能をノードに提供する。
【００５６】
アンカ機能部１０２は、制御パケット監視部１０２１、変動ノード決定部１０２２、およびアンカ決定部１０２３を有する。
【００５７】
制御パケット監視部１０２１は、通信機能部１０１が送受信する制御パケットを監視する。制御パケット監視部１０２１は、制御パケットの受信履歴から、各ノードにおける経路変更の頻度を算出する。
【００５８】
ＡＯＤＶでは、前述したように、各ノードは経路を変更するとき、ＲＲＥＱメッセージ、ＲＲＥＰメッセージ、またはＲＥＲＲメッセージを送受信する。制御パケット監視部１０２１は、これらの制御メッセージを格納する制御パケットを監視し、制御パケットに格納される情報を蓄積しておく。そして、制御パケット監視部１０２１は、制御メッセージのフィールド情報から経路変更のあったノードを特定し、制御パケットの受信履歴から、そのノードにおける経路の変更頻度を算出する。また、自ノードから各ノードまでのホップ数の統計量（平均値、分散値等）を算出しておく。
【００５９】
制御パケット監視部１０２１は、ノードごとの経路の変更頻度と、ホップ数の統計量とを示す計測情報を作成する。
【００６０】
変動ノード決定部１０２２は、ノード群のうち、計測情報の示す変更頻度が閾値以上のノードを変動ノードとする。
【００６１】
変動ノード決定部１０２２は、制御パケット監視部１０２１により作成された計測情報に基づいて、変更頻度が閾値以上のノードである変動ノードを決定する。
【００６２】
本実施形態では、変動ノード以外の周辺ノードのうち、変動ノードと、変動ノードの隣接周辺ノードとの間で生じた経路変更に基づく制御メッセージを代表して受信し、変動ノードへの経路を集約するノードをアンカーノードと称する。
【００６３】
アンカ決定部１０２３は、計測情報の示すホップ数から、自ノードをアンカーノードとすべきか否かを判断するための指標となる指標値を算出する。アンカ決定部１０２３は、その指標値に基づいて、自ノードをアンカーノードにすべきか否かを判断する。
【００６４】
指標値について詳細に説明する。アンカ決定部１０２３は、計測情報の示す、ノードごとのホップ数の統計量に基づいて、下記の３つの指標値を算出する。
【００６５】
１つめの指標値は、自ノードと、変動ノードの隣接周辺ノードとの間の平均ホップ数である。この値を指標値とするのは、隣接周辺ノードからのホップ数が小さいほど、余分な制御パケットの転送範囲が限定され、ネットワーク全体に送信される制御パケット数が低減するためである。
【００６６】
２つめの指標値は、自ノードと、変動ノードの隣接周辺ノードとの間のホップ数の分散である。この値を指標値とするのは、アンカーノードを隣接周辺ノードから均等な距離（ホップ数）に位置づけることで、経路変動時の遅延変動などを抑制できるためである。
【００６７】
３つめの指標値は、自ノードがアンカーノードとなった場合の、自ノードと、送信元ノードとの間の平均ホップ数である。この値を指標値とするのは、グループ内とグループ周辺との間で送受信されるパケットに、自ノードを経由させることで、送受信ノード間のホップ数が増すことを防ぐためである。
【００６８】
アンカ決定部１０２３は、３つの指標値全てを算出する必要はなく、いずれか１つのみ、あるいは２つのみを算出してもよい。
【００６９】
アンカ決定部１０２３は、算出した指標値と、予め定めておいた目標値とを比較し、自ノードをアンカーノードとすべきか否かを判断する。
【００７０】
この目標値は固定とは限らず、各ノードは、ネットワーク状態やアプリケーションの要求等を考慮して動的に目標値を設定してもよい。
【００７１】
自ノードをアンカーノードとすべきであれば、アンカ決定部１０２３は、通信機能部１０１を介して、アンカー通知メッセージをフラッディングする。アンカー通知メッセージは、自ノードをアンカーノードとすることを各ノードへ通知するためのメッセージである。
【００７２】
図４は、アンカー通知メッセージのフォーマットの一例である。同図を参照すると、アンカー通知メッセージには、「送信元ＩＰアドレス」、「変動ノードリスト情報」、「隣接周辺ノードリスト情報」および「指標値情報」が格納される。
【００７３】
「送信元ＩＰアドレス」は、アンカー通知メッセージを転送したノードのＩＰアドレスである。ここではアンカーノードのＩＰアドレスである。アンカー通知メッセージはフラッディングされる。
【００７４】
「変動ノードリスト情報」は、変動ノードのリストを示す情報であり、例えば、各ノードに割り当てられた識別番号やＩＰアドレスのリストを示す情報である。「指標値情報」は、アンカーノードの候補が算出した各指標値を示す情報である。「隣接周辺ノードリスト」は、「変動ノードリスト情報」の示す変動ノードの隣接周辺ノードのリストである。
【００７５】
このように、アンカーノードの候補が、アンカー通知メッセージ内に、変動ノードのリストを格納して、フラッディングすることにより、ネットワーク内の各ノードは、ネットワーク内のどのノードが変動ノードであるかを知ることができる。
【００７６】
アンカー通知メッセージを受信したノードのうち、グループの周辺ノードは、それぞれ、自ノードをアンカーノードとした場合の指標値を算出する。周辺ノードは、アンカー通知メッセージに記載の指標値と、算出した指標値とを比較する。変動ノードは、比較結果から、自ノードの方をアンカーノードとすべきか否かを判断する。自ノードの方をアンカーノードとすべきであれば、そのノードは、アンカー通知メッセージを生成してフラッディングする。
【００７７】
アンカ決定部１０２３は、アンカー通知メッセージを各ノードへ送信してから、一定期間内に、他のノードからアンカー通知メッセージを受信したか否かを判断する。
【００７８】
期間内にアンカー通知メッセージを受信しない場合、アンカ決定部１０２３は、アンカー機能をオンにする。そして、ノード２０は、アンカーノードとしての動作を開始する。
【００７９】
期間内にアンカー通知メッセージを受信した場合、アンカ決定部１０２３は、アンカー機能をオフにする。この場合、変動ノードのグループ化は確定せず、制御パケット監視部１０２１は、制御パケットの監視を続行する。
【００８０】
このように、アンカー通知メッセージが格納する情報は、アンカーノードを決定するために用いられる。また、アンカー通知メッセージが格納する情報は、各ノードが、確定したアンカーノードを認識するために用いられる。
【００８１】
アンカーノードが決定された後の各ノードの動作について説明する。アンカー機能がオンとなった後、隣接周辺ノードは、変動ノードとの間のリンク変化をネットワーク全体に通知せず、アンカーノードのみに通知する。
【００８２】
詳細には、アンカー通知メッセージにより、自ノードが変動ノードであると判断した変動ノードは隣接周辺ノードに向けて、定期的に接続確認パケットを互いに送受信する。接続確認パケットを受信した隣接周辺ノードは、アンカーノードと経路を確立し、その接続状況をアンカーノードに通知する。また、接続確認後、一定期間、接続を確認するための接続確認パケットを受信しない場合、隣接周辺ノードは、経路切断を通知する経路切断通知パケットをアンカーノードへ送信する。経路切断通知パケットを受信したアンカーノードは、ルーティングテーブルから、通知された経路を削除する。
【００８３】
このように、アンカーノードは、変動ノードがどの隣接周辺ノードと接続しているかをトラックし、グループのリンク変化に基づく制御パケットを集約する。
【００８４】
また、アンカーノードは、変動ノード宛のパケットを変動ノードへ転送する。
【００８５】
図５は、制御パケット監視部１０２１が生成する計測情報の示す内容の一例である。同図を参照すると、計測情報には、「ノード識別番号」と、「隣接周辺ノード識別番号」と、「変更頻度」と、「ホップ数」とが対応付けて格納される。
【００８６】
「ノード識別番号」は、通信対象の各ノードを識別するための番号である。「隣接周辺ノード識別番号」は、変動ノードの隣接周辺ノードを識別するための番号である。「変更頻度」は、「ノード識別番号」に対応するノードが一定の周期内に、経路を更新した回数の平均値である。「ホップ数」は、「ノード識別番号」に対応するノードのホップ数の平均値である。
【００８７】
図５に記載される計測情報の取得手順について説明する。各ノードは図５に示される計測情報をもち、自身がアンカーになるか否かを判断する。ここでは図１の場合を例にして説明する。ノード２８は変動ノードであり、リンク切断が頻繁に起こるため、ノード２４と２５との間で、経路接続と切断が頻繁に繰り返される。
【００８８】
通信開始時に送信元ノード１０はRREQメッセージを送信する。RREQメッセージを受信したノードはノード１０をエントリに加え、RREQメッセージ内のホップ数に１足した値を計測情報のホップ数とする。例えば、ノード２８はRREQメッセージをノード２４を介して受信し、ノード２４を介してRREPメッセージを送信元ノード１０にユニキャストで送信する。この結果、ノード２４を経由した経路が確立する。
【００８９】
ノード２４がノード２８への経路切断を最初に検出した際に、ノード２４が保持する計測情報にノード識別番号２８がエントリされる。そして、RREQメッセージを送信して経路修復を行なう。このとき、ノード２４は、RREQメッセージのトポロジー情報フィールドで、現在経路切断の原因となった切断ノードとしてノード２８の識別番号を通知し、変動履歴のフィールドにはノード２８の隣接周辺ノードとして自ノード(ノード２４)の識別番号を通知する。RREQメッセージを受信したノードは、ノード２８と２４のエントリを計測情報に加える。計測情報においてノード１４に対応するホップ数は、RREQメッセージのヘッダに記載されるホップ数に1足した数とし、計測情報においてノード２８に対応するホップ数は、計測情報におけるノード２４に対応するホップ数に１を加えた値とする。そして、ノード２８の「隣接周辺ノード識別番号」として２４を記載する。ここでは計測周期を経過していないため、変更頻度は更新されない。変更頻度は、RREQメッセージを受信するノードが計算する。RREQメッセージに対するRREPメッセージがノード２８からノード２５を経由してノード２４に到達し、ノード２４の経路表が修正される。ノード２４が保持する計測情報の更新も行なわれる。ノード識別番号２８のエントリの隣接周辺ノードに２５が記載される。ノード２５のエントリも追加され、計測情報においてホップ数が１と記載される。
【００９０】
次にノード２５がノード２８からHelloメッセージを一定期間受信しなかったため、ノード２５は、経路切断を検出して再び経路修復のためにRREQメッセージを送信する。ここで、RREQメッセージに記載されるトポロジー情報は以下である。切断ノードとして２８、変更履歴情報として変動ノードを２８、その隣接周辺ノードを２５とする。このRREQメッセージを受信したノードは、計測情報にノード２５のエントリを追加し、そのエントリのホップ数にＲＲＥＱメッセージのホップ数の値に１足した値を記載する。そして、ノードは、計測情報において、ノード２８の「隣接周辺ノード識別番号」にノード２５を加える。RREQメッセージに対するRREPメッセージはノード２４を経由してノード２５に到着すると、ノード２５が保持する計測情報の中のノード２８の「隣接周辺ノード識別番号」にノード２４が加えられる。
【００９１】
ノード２５が次にRREQメッセージを送信する場合には、ノード２８の隣接周辺ノードとしてノード２４、２５が通知される。
【００９２】
経路切断が検出される度に上記手順が行なわれ、ホップ数は平均値が計算される。
【００９３】
指標値の算出方法の一例について説明する。ノード２０が、ノード１０、１６、２４、２５、２６、２８からの制御パケットを監視して、アンカーノードを決定する場合について考える。ノード２８の更新頻度が閾値以上であったので、ノード２０は、ノード２８を変動ノードにしたとする。この変動ノード２８の次ホップであるノード、２４、２５、２６が隣接周辺ノードとなる。
【００９４】
各ノードのホップ数（平均値）は、「３．０」、「２．０」、「１．０」、「１．０」、「２．０」、「２．０」、「２．８」であったとする。ノード２０は、これらのホップ数から、自ノードをアンカーノードとすべきか否かについて判断するために、上述した３つの指標値を算出する。
【００９５】
ノード２０は、１つめの指標値として、自ノードと隣接周辺ノードとの間のホップ数の平均値を算出する。自ノード２０と、隣接周辺ノード２４、２５、２６との間のホップ数は、「１．０」、「２．０」、「２．０」であるから、これらの平均値（指標値）は、約「１．６７」である。
【００９６】
ノード２０は、２つめの指標値として、自ノードと隣接周辺ノードとの間のホップ数の分散値を算出する。前述の各ホップ数（平均値）から、約「０．２８」の分散値（指標値）が算出される。
【００９７】
ノード２０は、３つめの指標値として、自ノードと送信元ノード間のホップ数の平均
値を算出する。送信元のノード１０のホップ数（平均値）は、「３．０」であるから、指標値は、「３．０」である。
【００９８】
ノード２０は、これらの指標値を目標値と比較し、自ノードをアンカーノードにすべきか否かを判断する。
【００９９】
続いて、各ノードの動作について説明する。図６は、各ノードの動作を示すフローチャートである。この動作は、ノードの電源が投入されたとき、または所定のアプリケーションがパケットを受信したときに開始する。同図を参照すると、ノードは、ネットワーク内で、いずれかのノードがアンカーノードに設定されているか否かを判断する（ステップＳ１）。
【０１００】
前述したように、アンカーの候補となるノードが、アンカーノード通知メッセージをフラッディングした後、所定期間内に、他のノードからアンカー通知メッセージがフラッディングされない場合は、アンカーノードが確定する。このため、各ノードは、アンカー通知メッセージを受信してから所定期間内に、他のノードからアンカー通知メッセージが送信されていなければ、アンカーノードが設定されていると判断できる。
【０１０１】
アンカーノードが設定されていれば（ステップＳ１：ＹＥＳ）、通信機能部１０１は、経路確認処理を実行する（ステップＳ１１）。
【０１０２】
アンカーノードが設定されていなければ（ステップＳ１：ＮＯ）、アンカ機能部１０２は、制御パケットの測定周期が経過したか否かを判断する（ステップＳ３）。
【０１０３】
測定周期が経過していなければ（ステップＳ３：ＮＯ）、アンカ機能部１０２は、ステップＳ１に戻る。周期が経過したのであれば（ステップＳ３：ＹＥＳ）、アンカ機能部１０２は、アンカー通知メッセージを受信したか否かを判断する（ステップＳ５）。
【０１０４】
アンカー通知メッセージを受信していなければ（ステップＳ５：ＮＯ）、アンカ機能部１０２は、アンカー通知メッセージ送信処理を行う（ステップＳ７）。
【０１０５】
アンカー通知メッセージを受信したのであれば（ステップＳ５：ＹＥＳ）、アンカ機能部１０２は、アンカー通知メッセージ受信処理を行う（ステップＳ９）。周期が経過していない場合（ステップＳ５：ＮＯ）、ステップＳ７、Ｓ９またはＳ１１の後、アンカ機能部１０２は、ステップＳ１に戻る。
【０１０６】
図７は、アンカー通知メッセージ送信処理を示すフローチャートである。同図を参照すると、制御パケット監視部１０２１は、制御パケットの受信履歴から、ノードｋにおける、経路の変更頻度（Ｎｋ）を算出する。測定周期内に複数のノードから制御パケットを受信した場合、制御パケット監視部１０２１は、それぞれのノードについて、変更頻度を算出する。また、既に確定したアンカーノードに集約される変動ノードの変更頻度は、計測対象外とする（ステップＳ７１）。
【０１０７】
変動ノード決定部１０２２は、算出した頻度（Ｎｋ）が、予め定めた閾値（Ｎｔ）より大きいノードが１以上あるか否かを判断する（ステップＳ７３）。
【０１０８】
変更頻度が閾値以上のノードがあれば（ステップＳ７３：ＹＥＳ）、変動ノード決定部１０２２は、そのノードを変動ノードとする（ステップＳ７５）。そして、アンカ決定部１０２３は、自ノードをアンカーノードとした場合の指標値を算出する（ステップＳ７７）。アンカ決定部１０２３は、算出した指標値と目標値とを比較し、自ノードをアンカーノードとすべきか否かを判断する（ステップＳ７９）。
【０１０９】
自ノードをアンカーノードとすべきであれば（ステップＳ７９：ＹＥＳ）、アンカ決定部１０２３は、自ノードをアンカー候補ノードとし、アンカー通知メッセージをフラッディングする（ステップＳ８１）。そして、アンカ決定部１０２３は、アンカー通知メッセージを送信してから所定期間内に、グループ内の他のノードから、アンカー通知メッセージを受信したか否かを判断する（ステップＳ８３）。
【０１１０】
所定期間内にアンカー通知メッセージを受信しなければ（ステップＳ８３：ＮＯ）、アンカ決定部１０２３は、アンカー機能をオンにする（ステップＳ８５）。
【０１１１】
自ノードをアンカーノードとすべきでない場合（ステップＳ７９：ＮＯ）、または所定期間内にアンカー通知メッセージを受信した場合（ステップＳ８３：ＹＥＳ）、アンカ決定部１０２３は、アンカー機能をオフとする（ステップＳ８７）。
【０１１２】
変更頻度が閾値以上のノードがない場合（ステップＳ７３：ＮＯ）、ステップＳ８５、またはＳ８７の後、アンカ決定部１０２３は、アンカー通知メッセージ送信処理を終了する。
【０１１３】
図８は、アンカー通知メッセージ受信処理を示すフローチャートである。同図を参照すると、アンカ決定部１０２３は、自ノードが、アンカー通知メッセージが通知したリストにおける周辺ノード、隣接周辺ノードであるか否かを判断する（ステップＳ９１）。
【０１１４】
自ノードが周辺ノード、隣接周辺ノードでなければ（ステップＳ９１：ＮＯ）、アンカ決定部１０２３は、所定期間内に、他のノードからアンカー通知メッセージを受信したか否かを判断する。所定期間内に、他のノードからアンカー通知メッセージを受信しなければ、アンカ決定部１０２３は、アンカーノード、変動ノードを確定して、ルーティングテーブル１０３１を更新する。更新後のルーティングテーブルにおいて、変動ノードへのデータパケット、制御パケットの送信先はアンカーノードとされる（ステップＳ９３）。
【０１１５】
自ノードが周辺ノードであれば（ステップＳ９１；ＹＥＳ）、ノードは、自ノードをアンカーノードとした場合の指標値を算出する（ステップＳ９５）。ノードは、アンカー通知メッセージで通知された指標値と、算出した指標値とを比較し、自ノードをアンカーノードとすべきか否かを判断する（ステップＳ９７）。
【０１１６】
自ノードをアンカーノードとすべきであれば（ステップＳ９７：ＹＥＳ）、ノードは、アンカー通知メッセージをフラッディングする（ステップＳ９９）。そして、ノードは、アンカー通知メッセージを送信してから所定期間内に、他のノードから、アンカー通知メッセージを受信したか否かを判断する（ステップＳ１０１）。
【０１１７】
所定期間内にアンカー通知メッセージを受信しなければ（ステップＳ１０１：ＮＯ）、ノードは、アンカー機能をオンにする（ステップＳ１０３）。
【０１１８】
自ノードをアンカーノードとすべきでない場合（ステップＳ９７：ＮＯ）、または所定期間内にアンカー通知メッセージを受信した場合（ステップＳ１０１：ＹＥＳ）、ノードは、経路確認パケットを、アンカー通知メッセージの送信元へ返信し、アンカー機能をオフとする（ステップＳ１０５）。ステップＳ９３、Ｓ１０３、またはＳ１０５の後、ノードは、アンカー通知メッセージ受信処理を終了する。
【０１１９】
図９は、経路確認処理を示すフローチャートである。同図を参照すると、ノードは、自ノードが変動ノードまたは、変動ノードの隣接周辺ノードであるか否かを判断する（ステップＳ１１１）。
【０１２０】
変動ノードまたは隣接周辺ノードであれば（ステップＳ１１１：ＹＥＳ）、ノードは、自ノードがアンカーノードであり、経路接続通知パケット、または経路切断通知パケットを受信したか否かを判断する（ステップＳ１１３）。
【０１２１】
アンカーノードが経路接続通知パケット、または経路切断通知パケットを受信したのであれば（ステップＳ１１３：ＹＥＳ）、ノードは、そのパケットに基づいてルーティングテーブル１０３１を更新する。例えば、ノードは、経路切断通知パケットの通知する経路をルーティングテーブル１０３１から削除する（ステップＳ１１５）。
【０１２２】
自ノードがアンカーノードでない場合、または経路接続通知パケット、経路切断通知パケットを受信していない場合（ステップＳ１１３：ＮＯ）、ノードは、経路確認パケットの送信周期が経過したか否かを判断する（ステップＳ１１７）。
【０１２３】
送信周期が経過したのであれば（ステップＳ１１７：ＹＥＳ）、送信周期内に、経路確認パケットを受信したか否かを判断する（ステップＳ１１９）。
【０１２４】
経路確認パケットを受信したのであれば（ステップＳ１１９：ＹＥＳ）、ノードは、経路確認パケットの示す経路が、既にアンカーノードに通知済の経路であるか否かを判断する（ステップＳ１２１）。既にアンカーノードに通知済の経路でなければ（ステップＳ１２１：ＮＯ）、ノードは、その経路を新たに通知するための経路接続通知パケットをアンカーノードに送信する（ステップＳ１２３）。
【０１２５】
経路確認通知パケットを受信していなければ（ステップＳ１１９：ＮＯ）、ノードは、切断された経路を通知する経路切断通知パケットをアンカーノードへ送信する（ステップＳ１２５）。
【０１２６】
自ノードが変動ノード、隣接周辺ノードのいずれでもでない場合（ステップＳ１１１：ＮＯ）、送信周期が経過していない場合（ステップＳ１１７：ＮＯ）、経路確認通知パケットの示す経路が既にアンカーノードに通知済であった場合（ステップＳ１２１：ＹＥＳ）、またはステップＳ１１５、Ｓ１２３、Ｓ１２５の後、ノードは、経路確認処理を終了する。
【０１２７】
図１０は、アンカー通知メッセージが生成される前における、各ノードの動作の一例を示すシーケンス図である。同図を参照すると、ノード１０は、ノード２８へ送信すべきデータが発生し、ルーティングテーブルにノード２８への記載がないときに、ＲＲＥＱメッセージを格納した制御パケットをネットワークにフラッディングする。
【０１２８】
このＲＲＥＱメッセージには、図２（ａ）に示したようにホップ数の記載があり、送信元のノード１０はホップ数を０にセットして次ノードへ送信する。ＲＲＥＱメッセージを受信したノードは、自ノードが宛先でなければ、そのホップ数に１を加えて次ホップに転送する（Ｔ１）。
【０１２９】
ＲＲＥＱメッセージを受信した、送信先のノード２８は、確立した経路に沿って、ＲＲＥＰメッセージを送信元のノード１０へ返信する。
【０１３０】
ＲＲＥＰメッセージを受信したノード１０は、自ノードのルーティングテーブル１０３１に、ノード２８への経路を書き込む。例えば、ノード２８宛のパケットが、ノード２５を経由せず、ノード１１、１６、２０、２４を経由して到達した場合、これらの転送ノードのＩＰアドレス、ホップ数などがルーティングテーブル１０３１に記載される（ステップＴ２）。
【０１３１】
ノード１０は、これらの転送ノードを経由して、データパケットを送信する（ステップＴ３）。
【０１３２】
また、データ転送中に、転送経路の途中のノード２４が、ノード２８との間のリンクの切断を検知した場合、ノード２４は、ＴＴＬ値でホップ数を限定したＲＲＥＱメッセージを送信する（ステップＴ４）。このＲＲＥＱメッセージは、ＴＴＬ値が０となるまで、転送される。
【０１３３】
ノード２８は、受信したＲＲＥＱメッセージに応じて、ＲＲＥＰメッセージを返信する（ステップＴ５）。ＲＲＥＰメッセージを受信したノード２４は、ノード２４への経路をルーティングテーブルに記載する。
【０１３４】
その後、変更後の経路上におけるノード２５がノード２８との間のリンクの切断を検知した場合、ノード２５により、ＲＲＥＱメッセージがフラッディングされる（ステップＴ６）。一定期間、ノード２５がＲＲＥＰメッセージを受信しないとき、ノード２５は、経路の切断が生じたと判断し、経路切断により影響を受けるノードへＲＲＥＲメッセージを送信する（ステップＴ７）。ステップＴ４〜Ｔ７が何度か繰り返されると、図１１で示す手順により、アンカーノードが決定される。
【０１３５】
各ノードは、これらのＲＲＥＱメッセージ、ＲＲＥＰメッセージ、またはＲＥＲＲメッセージを格納する制御パケットを監視し、経路の変更頻度を測定する。また、各ノードは、計測した制御パケットから取得したホップ数をアンカーノードの決定に用いる。
【０１３６】
図１１は、アンカー通知メッセージが生成された後における、各ノードの動作の一例を示すシーケンス図である。同図を参照すると、ノード２０は、ノード２８における経路の変更頻度が閾値以上であるので、これらのノードを変動ノードとし、自ノードをアンカーノードにすべきか否かを判断する。自ノードをアンカーノードにすべきと判断したとき、ノード２０は、自ノードをアンカーノードとし、アンカー通知メッセージを、フラッディングする（ステップＴ８）。
【０１３７】
なお、変更頻度が閾値以上のノードが２つ以上有る場合、ノードは、それらのノードをアンカーノードにアンカリングさせてもよいのは勿論である。
【０１３８】
周辺ノード（２４等）は、アンカー通知メッセージを受信したとき、自ノードをアンカーノードとすべきか否かを判断する。各周辺ノードは、自ノードをアンカーノードとすべきでないと判断したので、アンカー通知メッセージを期間内に送信せず、ノード２０がアンカーノードに確定する。ノード２８は、アンカーノードにアンカリングされる。
【０１３９】
変動ノード２８は、定期的に隣接周辺ノード２５へ経路確認パケットを送信する（ステップＴ９）。隣接周辺ノード２５は、経路確認パケットを送信周期内に受信し、経路確認パケットの示す経路がアンカーノード２０に通知済の経路でなければ、アンカーノード２０へ、その経路を通知する経路接続通知パケットを送信する（ステップＴ１０）。
【０１４０】
ノードグループの周辺のノード１０が、変動ノード２８と通信を開始する場合、ノード１０は、送信先をノード２８のアドレスに設定したＲＲＥＱメッセージをフラッディングする（ステップＴ１１）。
【０１４１】
アンカーノード２０は、ＲＲＥＱメッセージを受信したとき、ノード２８への経路を記載したＲＲＥＰメッセージを返信する（ステップＴ１３）。アンカーノード２８が返信できるのは、アンカーノード２０のルーティングテーブルには、変動ノード２８への経路が記載されているためである。
【０１４２】
ノード１０は、変動ノード２８へデータパケットを送信するときは、アンカーノード２０を経由して送信する（ステップＴ１３）。隣接周辺ノード２５、変動ノード２８間でリンクの切断が生じたとき、隣接周辺ノード２５は、経路切断通知パケットをアンカーノード２０へ送信する（ステップＴ１４）。アンカーノード２０は、経路切断通知パケットに応じて、変動ノード２８への経路を更新する。
【０１４３】
このように、隣接周辺ノードからの制御パケット（ＲＲＥＱパケット、経路確認通知パケット）はアンカーノードに集約される。また、変動ノードと隣接周辺ノードとの間で経路変更が煩雑に生じても、経路変更による制御パケット（経路切断通知パケット）はアンカーノードへ送信され、アンカーノード以外のノードへフラッディングされない。このため、通信システム１全体として、制御パケット数を削減することができる。
【０１４４】
なお、本実施形態では、各ノードは、自身がアンカー機能を担うか否かの指標値として、ホップ数の平均や分散を用いているが、ホップ数の統計量であれば、最大値や中央値などを用いてもよい。
【０１４５】
各ノードは、自ノードをアンカーノードとすべきか否かの判断の指標となる値であれば、ホップ数の統計量以外の値を指標値として算出してもよい。例えば、自ノード周辺のリンクの安定性、自ノードと各変動ノードとの間の通信速度、およびアプリケーションが要求する経路全体のホップ数のうち、いずれか１以上を指標値とすることが可能である。
【０１４６】
また、各ノードは、これらの指標値のほか、アンカーノード設置のためのコストも考慮できる。例えば、ノードは、アンカー機能をオンにした後に増加するアンカーノードの制御負荷などを指標値に含めて、アンカーノードの決定に用いることが可能である。
【０１４７】
本実施形態では、各ノードを移動体通信機器とし、無線のマルチホップネットワークに本発明を適用している。しかし、マルチホップネットワークであれば、有線ネットワークに本発明を適用してもよい。
【０１４８】
本実施形態では、各ノードは、通信プロトコルとしてＡＯＤＶを使用しているが、マルチホップネットワークで利用されるプロトコルであれば、他のプロトコルを使用してもよいのは勿論である。
【０１４９】
本実施形態では、同じグループ内に、アンカーノードを１つだけ設けることとしているが、グループ内にアンカーノードを複数設ける構成にすることもできる。具体的には、ノードが、アンカー通知メッセージを送信後、直ちにアンカー機能をオンとし、所定期間内にアンカー通知メッセージを他のノードから受信しても、アンカー機能をオフにしない構成とする。安定経路を提供できるアンカーノードを複数設けることにより、経路変更の頻度の高いノードが散在する場合であっても、１つしかアンカーノードを設けない構成と比較して、経路の安定性を向上させることができ、アンカーノードの処理負荷を下げることが出来る。
【０１５０】
本実施形態では、経路確認パケットの送信周期を一定の周期としている。しかし、各ノードは、この送信周期を、変更頻度に応じて変更してもよい。変更頻度の大きいノードほど、送信周期を短くすることにより、経路変動に伴う通信遅延、経路切断によるパケットロスを低減できる。
【０１５１】
本実施形態の制御パケット監視部１０２１は、本発明の変更頻度取得手段に相当し、本実施形態の変動ノード決定部１０２２が、本発明の特定手段に相当する。本実施形態のアンカ決定部１０２３が、本発明のアンカー決定手段に相当する。
【０１５２】
以上説明したように、本実施形態によれば、ノードが、経路の変更頻度に基づいて変動ノードを決定し、適切なノードをアンカーノードとし、階層化ルーティングを行なう。ノードは、経路変動が多いときにのみ階層化を行なうことが可能となり、不要な制御負荷を低減できる。
【０１５３】
また、通常のルータ機能を持ったノードがアンカー機能を担うので、アンカリングのための専用ノードを設置する必要がなく、専用ノードの設置コストを低減できる。
【０１５４】
ノードは、自ノードをアンカーノードにすべきと判断しても、直ちにアンカー機能をオンにせず、アンカー通知メッセージを送信し、他に、より適切なアンカー候補がないことを確認してからアンカーノードとなる。このため、周辺ノードのうち、最適のノードがアンカーノードに設定される。
【０１５５】
（第２の実施形態）
本実施形態の通信システムの構成は、リアクティブ型でなく、プロアクティブ型の通信プロトコルを使用する点で、第１の実施形態の通信システムと異なる。プロアクティブ型の通信プロトコルは、例えば、ＯＬＳＲである。なお、本実施形態のノードについて、図３で説明した構成と同様な構成の詳細な説明を省略し、第１の実施形態と異なる点について詳しく説明する。
【０１５６】
本実施形態のノードの構成を説明する。ＯＬＳＲにおける制御パケットには、ＨＥＬＬＯメッセージを格納するＨＥＬＬＯパケットや、ＴＣ（Topology Control）メッセージを格納するＴＣパケットなどがある。
【０１５７】
また、本実施形態では、ＯＬＳＲに規定された制御パケット以外の制御パケットとして、図１３で後述する接続確認パケット、経路接続通知パケット、および経路切断通知パケットも送受信される。
【０１５８】
ＯＬＳＲにおいては、各ノードは定期的にＨＥＬＬＯパケット等を送受信することにより、自ノードと隣接ノードとのリンク状態を確認する。ＨＥＬＬＯパケットの送受信により各ノードでトポロジ情報が生成される。このトポロジ情報を通知するＴＣパケットがネットワーク全体にフラッディングされることにより、各ノードは、ネットワーク全体のトポロジを把握し、ルーティングテーブルを作成する。
【０１５９】
本実施形態の制御パケット監視部１０２１は、制御パケットのうち、ＴＣパケットを監視し、ＴＣパケットから、各ノードの経路の変更頻度を求める。
【０１６０】
また、隣接周辺ノードと変動ノードとは、経路を確認するために、経路確認パケットの代わりに、接続確認パケットを送受信する。接続確認パケットを受信した隣接周辺ノードは、変動ノードとの間の経路切断の有無を判断し、アンカノードへ、経路接続通知パケット、または経路切断通知パケットを送信する。
【０１６１】
本実施形態のノードの動作を説明する。図１２および図１３は、本実施形態の通信システムにおけるノードの動作を示すシーケンス図である。
【０１６２】
図１２は、アンカー通知メッセージが生成される前における、各ノードの動作の一例を示すシーケンス図である。同図を参照すると、ネットワーク全体に、ＴＣパケットがフラッディングされる（ステップＴ２１）。
【０１６３】
各ノードは、ＴＣパケットからトポロジ情報を取得し、ルーティングテーブルを更新する。そして、ノード１０は、ルーティングテーブルに記載された経路で、ノード２８へデータパケットを送信する（ステップＴ２２）。
【０１６４】
図１３は、アンカー通知メッセージが生成された後における、各ノードの動作の一例を示すシーケンス図である。同図を参照すると、ノード２０は、ノード２８における経路の変更頻度が閾値以上であるので、このノードを変動ノードとし、自ノードをアンカーノードにすべきか否かを判断する。自ノードをアンカーノードにすべきと判断したとき、ノード２０は、自ノードをアンカーノードとし、アンカー通知パケットを、フラッディングする（ステップＴ２３）。
【０１６５】
ノード２０は、アンカー通知メッセージを期間内に送信しなかったので、ノード２０がアンカーノードに確定する。
【０１６６】
ＴＣパケットは、変動ノード２８を除く各ノード間で送受信される（ステップＴ２４）。アンカーノード２０は、自身のＴＣパケットに、変動ノード２８の情報を格納してフラッディングする。変動ノードであるノード２８は定期的に接続確認パケットを送信して、隣接周辺ノードに隣接状態を通知する（ステップＴ２５）。
【０１６７】
変動ノードであるノード２８から接続確認パケットを受信し、隣接状態を確認した隣接周辺ノード２５は、アンカーノード２０へ、経路接続通知パケットを定期的に送信する（ステップＴ２６）。
【０１６８】
ノード１０は、自身のルーティングテーブルを参照して、アンカーノード２０を経由して、変動ノード２８へデータパケットを送信する（ステップＴ２７）。
【０１６９】
ここで、隣接周辺ノード２５、変動ノード２８間のリンクが切断した場合、隣接周辺ノード２５は、経路切断通知パケットをアンカーノード２０へ送信する（ステップＴ２８）。
【０１７０】
アンカーノード２０は、経路切断通知パケットに応じて、自身のルーティングテーブルを更新する。
【０１７１】
変動ノード２８は定期的に接続確認パケットを送信する（ステップＴ２９）。
【０１７２】
変動ノードであるノード２８から接続確認パケットを受信したノード２４が新たに隣接周辺ノードとなる。隣接周辺ノード２４は、経路接続通知パケットを定期的にアンカーノード２０へ送信する（ステップＴ３０）。
【０１７３】
以上説明したように、本実施形態によれば、プロアクティブ型の通信プロトコルを使用する通信システムについても、本発明を適用できる。
【０１７４】
（第３の実施形態）
本実施形態の通信システムの構成は、ノードのアンカ機能部が、制御パケット監視部１０２１が経路特性抽出部１０２１Ａを有し、グループ決定部１０２２Ａが変動ノードを特定するとともに、変動ノードを特性情報に基づいてグルーピングする点で第１の実施形態と異なる。なお、本実施形態のノードについて、図３で説明した構成と同様な構成の詳細な説明を省略し、第１の実施形態と異なる点について詳しく説明する。
【０１７５】
本実施形態のノードの構成を説明する。図１４は、本実施形態のアンカ機能部１０２の構成を示すブロック図である。同図を参照すると、本実施形態のアンカ機能部は、制御パケット監視部１０２１が経路特性抽出部１０２１Ａを有し、変動ノード決定部１０２２の代わりにグループ決定部１０２２Ａを、有する点以外は第１の実施形態のアンカ機能部と同様である。
【０１７６】
経路特性抽出部１０２１Ａは、経路変動特性を示す特性情報を取得する。経路変動特性とは、経路の変動を生じさせる、通信システムの特質である。具体的には、各ノードの移動方向や移動速度、無線電波の不安定領域、経路変動時間スケール、または、これらの値の予測などである。
【０１７７】
ノードは、特性情報を、自身が保持するデータベースから抽出したり、他のノードから受信したりして取得する。例えば、各ノードは、ＧＰＳ（Global Positioning System）等で、自身の移動方向や移動速度を取得し、それらの値を示す特性情報を互いに送受信する。あるいは、ノードが、各ノードの移動方向や移動速度の履歴を保持しておき、その履歴から、現時点以降における各ノードの移動方向や移動速度を予測する。
【０１７８】
また、経路変動が繰り返し生じる場合、各ノードは、その間隔を変動時間スケールとして取得する。
【０１７９】
図１５は、特性情報の示す内容をまとめた表である。同図を参照すると、特性情報は、「ノード識別番号」、「移動方向」、および「移動速度」などを示す情報を格納する。「ノード識別番号」は、ノードを識別するための番号である。「移動方向」および「移動速度」は、測定された、ノードの移動方向や移動速度である。
【０１８０】
グループ決定部１０２２Ａは、計測情報に基づいて変動ノードを特定した後、特性情報に基づいて変動ノードをグルーピングする。
【０１８１】
例えば、図１６に示すように、グループ決定部１０２２は、移動方向や移動速度が近接するグループを同じグループにする。同図において、点線で囲まれた部分の内側のノード（２５、２８）は、移動方向、移動速度がほぼ同じノード群である。または、グループ決定部１０２２は、電波状態が不安定な領域にあるノード群を同じグループとする。あるいは、グループ決定部１０２２は、変動時間スケールが近接するノード群を、同じグループとする。
【０１８２】
図１７は、本実施形態のノードの動作を示すフローチャートである。同図を参照すると、本実施形態のノードの動作は、ステップＳ７５の代わりに、ステップＳ７４、Ｓ７５ａを実行する点以外は、第１の実施形態のノードの動作と同様である。
【０１８３】
変更頻度が閾値以上のノードがあれば（ステップＳ７３：ＹＥＳ）、経路特性抽出部１０２１Ａは、各ノードの経路特性を抽出し、特性情報を作成する（ステップＳ７４）。グループ決定部１０２２Ａは、計測情報の示す変更頻度に基づいて変動ノードを特定し、特性情報の示す経路変動特性に基づいて、各ノードを１以上のグループに分ける（ステップＳ７５ａ）。
【０１８４】
以上説明したように、本実施形態によれば、ノードが経路変動特性を考慮して、特定した変動ノードをグループ化するので、通信システムに経路変動を生じさせる要因があっても、その要因に応じて適切にグルーピングできる。この結果、最適な経路が決定され、転送効率が更に向上する。
【０１８５】
（第４の実施形態）：代表ノードを設置
本実施形態の通信システムの構成は、アンカ決定部１０２３が、アンカーノードのほか、特性情報に基づいて代表ノードを決定する点で第３の実施形態と異なる。代表ノードは、変動ノードへのパケット（制御パケット、もしくはデータパケット）を代表して中継するノードである。
【０１８６】
なお、本実施形態のノードについて、図１４で説明した構成と同様な構成の詳細な説明を省略し、第３の実施形態と異なる点について詳しく説明する。
【０１８７】
また、本実施形態では、ＯＬＳＲに規定された制御パケット以外の制御パケットとして、代表ノードを通知するための代表ノード通知メッセージも送受信される。
【０１８８】
本実施形態のアンカ決定部１０２３は、特性情報に基づいて、変動ノードの中のいずれかを代表ノードに決定する。
【０１８９】
例えば、アンカ決定部１０２３は、他の変動ノードと、移動方向や移動速度が最も近接するノードを代表ノードにする。
【０１９０】
図１８は、本実施形態のノードの動作を示すフローチャートである。同図を参照すると、本実施形態のノードの動作は、ステップＳ１１の後に、ステップＳ１２を更に実行する点以外は、第１の実施形態のノードの動作と同様である。
【０１９１】
経路確認処理の後、ノードは、特性情報の示す経路変動特性に基づいて代表ノードを決定し、代表ノードを通知する代表通知パケットをフラッディングする（ステップＳ１２）。
【０１９２】
図１９は、アンカー通知メッセージが生成された後における、各ノードの動作の一例を示すシーケンス図である。同図を参照すると、ノード２０は、ノード２５、２８を変動ノードとして、アンカー通知メッセージをフラッディングし（ステップＴ３１）、アンカー機能を担う。
【０１９３】
ＴＣパケットは、変動ノード２５、２８を除く各ノード間で送受信される（ステップＴ３２）。
【０１９４】
アンカーノード２０は、特性情報に基づいて、変動ノードのうち、２５をグループの代表ノードに決定し、代表ノード通知メッセージ（制御メッセージ）をフラッディングする（ステップＴ３３）。
【０１９５】
代表ノード２５に隣接したノード２４は、経路接続通知パケットをアンカーノード２０へ送信して、経路情報を通知する（ステップＴ３４）。
【０１９６】
変動ノード２８宛のデータパケットは、経路接続通知パケットおよび代表通知パケットの通知した内容に基づいて、周辺ノード２５、代表ノード２５を経由して転送される（ステップＴ３５）。
【０１９７】
以上説明したように、本実施形態によれば、ノードが、変動ノードの特性を考慮して代表ノードを決定するので、制御パケットの送受信を更に抑制できる。
【０１９８】
（第５の実施形態）：  アンカーノードの変更
本実施形態のノードの構成は、アンカーノードを設定した後であっても、経路のホップ数など通信特性に応じて、アンカーノードを変更する点で、第２の実施形態のノードと異なる。なお、本実施形態のノードについて、図３で説明した構成と同様な構成の詳細な説明を省略し、第２の実施形態と異なる点について詳しく説明する。
【０１９９】
本実施形態のノードの構成を説明する。本実施形態では、ノード１０は、自ノードをアンカーノードに設定した後に経路品質が低下した場合、経路品質が向上するような、新たなアンカーノードを検索する。そして、ノード１０は、検索したノードに対し、新たなアンカーノードとなるように要求するリクエストパケットを送信する。
【０２００】
リクエストパケットを受信したノードは、指標値に基づいて、自ノードがアンカーノードとなるべきか否かを判断する。自ノードがアンカーノードになるべきであれば、そのノードは、アンカー通知メッセージをフラッディングする。
【０２０１】
図２０は、本実施形態のノード１０の動作を示すフローチャートである。同図を参照すると、本実施形態のノード１０の動作は、経路確認処理（ステップＳ１１）を実行した後、アンカー変更処理（ステップＳ１４）、およびリクエストパケット受信処理（ステップＳ１５）を実行する以外は、第１の実施形態のノードの動作と同様である。
【０２０２】
リクエストパケット等受信処理は、アンカー通知メッセージの代わりに、リクエストパケットを受信したときに、自ノードをアンカーノードとするべきか否かを判断する以外は、図８に示したアンカー通知メッセージ受信処理と同様の処理である。
【０２０３】
図２１は、アンカー変更処理を示すフローチャートである。同図を参照すると、アンカ機能部１０２は、自ノードがアンカーノードであり、且つ、測定周期が経過したか否かを判断する（ステップＳ１４１）。
【０２０４】
アンカ機能部１０２は、送信ノードと自ノードとの間の経路の平均ホップ数、または、自ノードと周辺ノードとの間の平均ホップ数が、アンカーノード設定前の値より、増加したか否かを判断する（ステップＳ１４２）。
【０２０５】
いずれかの平均ホップ数が増加した場合（ステップＳ１４２：ＹＥＳ）、アンカ機能部１０２は、制御パケット数が抑制されるような、新たなアンカーノードの候補を計測情報に記載のノードの中から、検索する（ステップＳ１４３）。
【０２０６】
アンカ機能部１０２は、アンカーノード変更前の指標値をリクエストパケットに格納し、検索したノードへ送信する（ステップＳ１４４）。そして、ノード１０は、所定期間内に、そのノードからアンカー通知メッセージを受信したか否かを判断する（ステップＳ１４５）。
【０２０７】
期間内にアンカー通知メッセージを受信しなければ（ステップＳ１４５：ＮＯ）、アンカ機能部１０２は、ステップＳ１４３に戻る。
【０２０８】
期間内にアンカー通知メッセージを受信したのであれば（ステップＳ１４５：ＹＥＳ）、アンカ機能部１０２は、アンカー機能をオフにする。そして、ノード１０は、アンカー解除を通知するアンカー解除パケットをフラッディングする（ステップＳ１４６）。
【０２０９】
アンカーノードでない場合、測定周期が経過していない場合（ステップＳ１４１：ＮＯ）、平均ホップ数が増加していない場合（ステップＳ１４２：ＮＯ）、またはステップＳ１４６の後、アンカ機能部１０２は、アンカー変更処理を終了する。
【０２１０】
ここで、アンカーノードの検索回数が上限値を超えていたり、全てのアンカーノードを検索したりした場合、アンカ機能部１０２は、ステップＳ１４５においてアンカー通知パケットを受信しなくても、アンカー機能をオフにする構成としてもよい。
【０２１１】
図２２は、アンカー通知メッセージが生成された後における、各ノードの動作の一例を示すシーケンス図である。同図を参照すると、ノード２０は、ノード２８を変動ノードとして、アンカー通知メッセージをフラッディングし（ステップＴ４１）、アンカー機能を担う。
【０２１２】
ＴＣパケットは、変動ノード２８を除く各ノード間で送受信される（ステップＴ４２）。
【０２１３】
アンカーノード２０は、平均ホップ数も減少したので、経路制御負荷が抑制されるような、新たなアンカーノードの候補を検索する。ノード１６を検索したので、ノード２０は、ノード１６へリクエストパケットを送信する（ステップＴ４３）。
【０２１４】
ノード１６は、リクエストパケットを受信し、自ノードが新たなアンカーノードになるべきと判断して、アンカー通知メッセージをフラッディングする（ステップＴ４４）。
【０２１５】
アンカー通知メッセージを受信したノード２０は、アンカー機能をオフにし、アンカー解除を通知するアンカー解除パケットをフラッディングする（ステップＴ４５）。一方、ノード１６は、所定期間内にアンカー通知メッセージを受信しなかったので、新たなアンカーノードとして動作を開始する。
【０２１６】
隣接周辺ノード２５は、新たなアンカーノード１６へ、経路接続通知パケットを定期的に送信する（ステップＴ４６）。
【０２１７】
ノード１０は、自身のルーティングテーブルを参照して、新たなアンカーノード１６を経由して、変動ノード２８へデータパケットを送信する（ステップＴ４７）。
【０２１８】
尚、アンカー変更に際し、アンカー機能動作中のノードが新しいアンカー候補を検索していたが、ノードグループの周辺ノードが自律的に判断してアンカー通知パケットを送信してもよい。
【０２１９】
以上説明したように、本実施形態によれば、ノードが、アンカーノードとなった後も、経路の通信品質に応じて、アンカーノードを変更するので、より品質の高い経路を提供でき、転送効率が向上する。
【０２２０】
（第６の実施形態）
本実施形態のノード１０の構成は、アンカーノードを設定した後に経路変動が減少すれば、アンカー機能をオフにする点で第１の実施形態のノードと異なる。なお、本実施形態のノードについて、図３で説明した構成と同様な構成の詳細な説明を省略し、第１の実施形態と異なる点について詳しく説明する。
【０２２１】
本実施形態のノードの動作について、図２３、図２４を参照して説明する。
【０２２２】
図２３は、本実施形態のノード１０の動作を示すフローチャートである。同図を参照すると、本実施形態のノードの動作は、ステップＳ１７、Ｓ１９を更に実行する以外は、第４の実施形態のノードと同様である。
【０２２３】
ステップＳ７またはＳ９の後、ノードは、自ノードのアンカー機能をオンとしているか否かを判断する（ステップＳ１７）。
【０２２４】
アンカー機能をオンとしていれば（ステップＳ１７：ＹＥＳ）、ノードは、アンカー解除処理を実行する（ステップＳ１９）。
【０２２５】
図２４は、アンカー解除処理を示すフローチャートである。同図を参照すると、ノードは、アンカーノードとなったとき、または前回測定したときから、経路品質を示すパラメータの測定周期が経過したか否かを判断する（ステップＳ１９１）。
【０２２６】
測定周期が経過したのであれば（ステップＳ１９１：ＹＥＳ）、ノードは、制御パケットから、変動ノードの経路変更の頻度を測定し、その値から経路が安定しているか否かを判断する（ステップＳ１９３）。例えば、ノードは、経路の変更頻度が、所定の閾値を下回っていれば、経路が安定していると判断する。変動ノードが複数である場合、ノードは、変更頻度の平均値と、閾値を比較する。
【０２２７】
経路が安定していれば（ステップＳ１９３：ＹＥＳ）、ノードは、アンカー機能をオフにする。そして、ノードは、アンカー解除を通知するアンカー解除パケットをフラッディングする（ステップＳ１９５）。測定周期が経過していない場合（ステップＳ１９１：ＮＯ）、または経路が安定していない場合（ステップＳ１９３：ＮＯ）、ノードは、ステップＳ１に戻る。
【０２２８】
以上説明したように、本実施形態によれば、経路変動に応じて、アンカー機能をオンオフするので、通信品質を維持しつつ、アンカー設置のコスト、例えば電力消費や設置費用を低減できる。
【符号の説明】
【０２２９】
１    通信システム
１０〜２８    ノード
１０１    通信機能部
１０２    アンカ機能部
１０３    ルーティング機能部
１０２１    制御パケット監視部
１０２１Ａ    経路特性抽出部
１０２２    変動ノード決定部
１０２２Ａ    グループ決定部
１０２３    アンカ決定部
１０３１    ルーティングテーブル
【図１】
2011029888.tif 000003
【図２】
2011029888.tif 000004
【図３】
2011029888.tif 000005
【図４】
2011029888.tif 000006
【図５】
2011029888.tif 000007
【図６】
2011029888.tif 000008
【図７】
2011029888.tif 000009
【図８】
2011029888.tif 000010
【図９】
2011029888.tif 000011
【図１０】
2011029888.tif 000012
【図１１】
2011029888.tif 000013
【図１２】
2011029888.tif 000014
【図１３】
2011029888.tif 000015
【図１４】
2011029888.tif 000016
【図１５】
2011029888.tif 000017
【図１６】
2011029888.tif 000018
【図１７】
2011029888.tif 000019
【図１８】
2011029888.tif 000020
【図１９】
2011029888.tif 000021
【図２０】
2011029888.tif 000022
【図２１】
2011029888.tif 000023
【図２２】
2011029888.tif 000024
【図２３】
2011029888.tif 000025
【図２４】
2011029888.tif 000026