(57)【要約】  センサー中継ノード１０３において、ルーティング制御部１００３は、ＷａｉｔＮｏ．を含む同期要求フレーム又はヘルスフレームを受信すると、ＷａｉｔＮｏ．をインクリメントして自ノードＷａｉｔＮｏ．としてＷａｉｔＮｏ．制御部１００４に記憶する。ルーティング制御部１００３は、自ノードＷａｉｔＮｏ．を含むフレームをさらに隣接するノード装置に転送する。ルーティング制御部１００３は、自ノード装置宛て以外の通信フレームを受信すると、受信フレーム中のＷａｉｔＮｏ．を、自ノードＷａｉｔＮｏ．および隣接ノードのＷａｉｔＮｏ．と比較することにより、出力通信ポートを決定する。受信フレーム中のＷａｉｔＮｏ．が自ノードＷａｉｔＮｏ．より大きいときは、大きなＷａｉｔＮｏ．の送信先に送信し、大きなＷａｉｔＮｏ．のノード装置がない場合には、ループとして受信フレームを送信元に返送する。これにより、ループ回避ができる。
2012039040.tif 000002
【特許請求の範囲】
【請求項１】
複数のノード装置を含むネットワークにおけるルーティング方法であって、
前記ノード装置は、ウエイト番号を含む第１のフレームを受信すると、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶し、
前記ノード装置は、前記自ウエイト番号を含む第１のフレームを送出し、
前記ノード装置は、あて先のノード装置のウエイト番号を含む第２のフレームを受信すると、前記第２のフレーム中のウエイト番号と前記自ウエイト番号を比較し、
前記第２のフレーム中のウエイト番号が前記自ウエイト番号よりも大きければ、前記自ウエイト番号よりも大きなウエイト番号の送信先に前記第２のフレームを送出し、前記大きなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送し、
第２のフレーム中のウエイト番号が前記自ウエイト番号よりも小さければ、前記自ウエイト番号よりも小さなウエイト番号の送信先に前記第２のフレームを送出し、前記小さなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送する、
ことを特徴とするルーティング方法。
【請求項２】
前記ノード装置は、前記第２のフレーム中のウエイト番号と前記自ウエイト番号との比較において、前記第２のフレーム中のウエイト番号が前記自ノードのウエイト番号と同じである場合に、受信するかまたはループとして前記第２のフレームを送信元のノード装置に返送する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項３】
前記ノード装置は、前記第１のフレームを受信したときに、受信した前記第１のフレーム中のウエイト番号を受信時の通信ポートに対応付けて通信ポートウエイト番号として記憶し、
前記第２のフレームの送出先を、前記通信ポートウエイト番号により決定する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項４】
前記ノード装置は、前記第１のフレームを受信したときに、前記自ウエイト番号が前記第１のフレーム中のウエイト番号よりも大きい場合に、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項５】
前記ノード装置は、通信障害を検出した場合において、
前記自ウエイト番号が他のどの隣接するノード装置のウエイト番号よりも以下である場合に、前記自ウエイト番号を初期化し、
前記自ウエイト番号が通信可能な他のいずれかの隣接するノード装置のウエイト番号よりも大きい場合に、前記隣接するノード装置のウエイト番号をインクリメントして前記自ウエイト番号として記憶し、
その後、前記自ウエイト番号を含む第１のフレームとしてヘルスフレームを送出する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項６】
前記ノード装置は、通信障害が検出された場合において、前記第１のフレームとしてウエイト番号が初期化されたヘルスフレームを受信し、
前記自ウエイト番号が他のどの隣接するノード装置のウエイト番号よりも以下である場合に、前記自ウエイト番号を初期化し、
前記自ウエイト番号が通信可能な他のいずれかの隣接するノード装置のウエイト番号よりも大きい場合に、前記隣接するノード装置のウエイト番号をインクリメントして前記自ウエイト番号として記憶し、
その後、前記自ウエイト番号を含む第１のフレームとしてヘルスフレームを送出する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項７】
前記ノード装置は、前記削除通知フレームを受信した場合に、前記自ウエイト番号を初期化する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項８】
前記ノード装置は、前記第２のフレーム中のウエイト番号と前記自ウエイト番号との比較において、同じウエイト番号の送信先が複数存在する場合に、前記複数の送信先に接続される各通信ポートのポート番号の大きさに基づいて決定した送信先に、前記第２のフレームを送出する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項９】
前記第１のフレームは、前記ノード装置に対して基幹中継ノードから前記ノード装置に対して同報送信される同期要求フレームである、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項１０】
前記第１のフレームは、前記ノード装置間で定期的に送受信されてヘルスチェックを行うヘルスフレームである、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項１１】
複数のノード装置を含むネットワークにおけるルーティング方法であって、
前記ノード装置は、ウエイト番号を含む第１のフレームを受信すると、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶し、
前記ノード装置は、前記自ウエイト番号を含む第１のフレームを送出し、
前記ノード装置は、あて先のノード装置のウエイト番号を含む第２のフレームを受信すると、前記第２のフレーム中のウエイト番号と前記自ウエイト番号を比較することにより、前記受信した第２のフレームを送出すべきノード装置をループの有無を含めて決定し、前記決定したノード装置に前記第２のフレームを送出する、
ことを特徴とするルーティング方法。
【請求項１２】
ネットワークを構成するノード装置であって、
ウエイト番号を含む第１のフレームを受信すると、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶し、前記自ウエイト番号を含む第１のフレームを送出するウエイト番号制御部と、
あて先のノード装置のウエイト番号を含む第２のフレームを受信すると、前記第２のフレーム中のウエイト番号と前記自ウエイト番号を比較し、
前記第２のフレーム中のウエイト番号が前記自ウエイト番号よりも大きければ、前記自ウエイト番号よりも大きなウエイト番号の送信先に前記第２のフレームを送出し、前記大きなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送し、
第２のフレーム中のウエイト番号が前記自ウエイト番号よりも小さければ、前記自ウエイト番号よりも小さなウエイト番号の送信先に前記第２のフレームを送出し、前記小さなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送する、ルーティング制御部と、
を含むことを特徴とするノード装置。
【請求項１３】
前記ルーティング制御部は、前記第２のフレーム中のウエイト番号と前記自ウエイト番号との比較において、前記第２のフレーム中のウエイト番号が前記自ノードのウエイト番号と同じである場合に、受信するかまたはループとして前記第２のフレームを送信元のノード装置に返送する、
ことを特徴とする請求項１２に記載のノード装置。
【請求項１４】
前記ウエイト番号制御部は、前記第１のフレームを受信したときに、受信した前記第１のフレーム中のウエイト番号を受信時の通信ポートに対応付けて通信ポートウエイト番号として記憶し、
前記第２のフレームの送出先を、前記通信ポートウエイト番号により決定する、
ことを特徴とする請求項１２に記載のノード装置。
【請求項１５】
前記ルーティング制御部は、前記ノード装置がループとされたことを記憶し、ループとされたノード装置に送信されないようにルーティングする、
ことを特徴とする請求項１２記載のノード装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、有線アドホックルーティングプロトコルを用いたセンサーネットワークに係り、特にそのルーティング方法及びノード装置に関する。
【背景技術】
【０００２】
自律分散型ネットワークとして、アドホックネットワークが知られている。
アドホックネットワークでは、大規模ネットワークが自律的に形成され、障害発生時にも通信が維持される。また、アドホックネットワークは、有線、無線を問わず、様々な通信メディアに適用可能である。【０００３】
アドホックネットワークは、例えばセンサーネットワークへ応用されている。有線式のセンサーネットワークでは、各ノード装置が有線で複数のノード装置に接続されており、有線によりデータ通信および電源の供給が行われる。有線式の利点として、センサーを土中、水中や構造物などへ埋め込むことが可能である点や、切断などの検出が可能である点が挙げられる。【０００４】
アドホックネットワークを構築するためには、最適な経路を選択するための技術、障害発生時の制御技術、などが必要となる。
アドホックネットワークにおけるルーティング制御としては、従来、次のような技術が知られている。すなわち、アドホックネットワークの各通信ノードを構成するセンサーは、センサーノードとしての機能と中継ノードとしての機能を持つ。各ノードは隣接ノード情報、宛て先アドレス、送り元アドレス及びフレームシーケンス番号を基にルーティング処理を行う。フレームを受信したノードは、受信フレームと、自己が保持する宛て先テーブルの内容を比較し、受信ポートと異なる送信ポートを選択して送信する。このとき、送信で使用可能な通信ポートが複数ある場合には、番号の小さい順または大きい順などの条件により選択が行われる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３６８７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の方法でアドホックネットワークのルーティングを行うと、必ずしも最短のホップ数でルートを確定することができず、冗長なルートを確定することがあるという課題があった。【０００７】
そこで本発明の１つの側面では、ルート確定時に最短ルートを決定可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
態様の一例では、複数のノード装置を含むネットワークにおけるルーティング方法であって、前記ノード装置は、ウエイト番号を含む第１のフレームを受信すると、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶し、前記ノード装置は、前記自ウエイト番号を含む第１のフレームを送出し、前記ノード装置は、前記ウエイト番号を含む第２のフレームを受信すると、前記第２のフレーム中のウエイト番号と前記自ウエイト番号を比較し、前記第２のフレーム中のウエイト番号が前記自ウエイト番号よりも大きければ、前記自ウエイト番号よりも大きなウエイト番号の送信先に前記第２のフレームを送出し、前記大きなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送し、前記第２のフレーム中のウエイト番号が前記自ウエイト番号よりも小さければ、前記自ウエイト番号よりも小さなウエイト番号の送信先に前記第２のフレームを送出し、前記小さなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送する、ことを特徴とするルーティング方法を提供する。
【発明の効果】
【０００９】
アドホックネットワークにおいて、ループ回避をして、最短ルートを決定できるので送信時間を短縮できる。
【図面の簡単な説明】
【００１０】
【図１】アドホックネットワークのシステム構成図である。
【図２】経路とホップ数の関係を説明する図である。
【図３】通常考えられるルーティング方式におけるフレームのデータ構成図である。
【図４】ＰＳテーブル（宛先テーブル）のデータ構成図である。
【図５】通常考えられるルーティング方式におけるFIDテーブルのデータ構成図である。
【図６】通常考えられるルーティング方式による経路決定例の説明図（その１）である。
【図７】通常考えられるルーティング方式による経路決定例の説明図（その２）である。
【図８】通常考えられるルーティング方式による経路決定例の説明図（その３）である。
【図９】通常考えられるルーティング方式による各センサー中継ノードの各テーブルの状態遷移表を示す図である。
【図１０】本実施形態におけるセンサー中継ノード１０３の機能ブロック図である。
【図１１】ＷａｉｔＮｏ．テーブルのデータ構成図である。
【図１２】本実施形態のルーティング方式におけるフレームのデータ構成図である。
【図１３】各センサー中継ノード１０３におけるフレーム受信時の全体制御を示すフローチャートである。
【図１４】同期要求によるＷａｉｔＮｏ．更新処理を示すフローチャートである。
【図１５】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０１付与）である。
【図１６】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０２付与）である。
【図１７】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０３付与）である。
【図１８】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０４付与）である。
【図１９】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０５付与）である。
【図２０】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０６付与）である。
【図２１】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０７付与）である。
【図２２】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０８付与）である。
【図２３】同期要求によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．付与完了）である。
【図２４】本実施形態のルーティング方式におけるFIDテーブルのデータ構成図である。
【図２５】ルーティング処理を示すフローチャート（その１）である。
【図２６】ルーティング処理を示すフローチャート（その２）である。
【図２７】ルーティング処理の説明図（ループ制御）である。
【図２８】ルーティング処理の説明図（やり直し送信）である。
【図２９】ルーティング処理の説明図（ルートの確立）である。
【図３０】本実施形態のルーティング方式による各センサー中継ノードの各テーブルの状態遷移表を示す図である。
【図３１】ルーティング処理の説明図（中間のセンサーＩＤ＝７へ送信）である。
【図３２】ルーティング処理の説明図（基幹中継ノード１０２への送信）である。
【図３３】ヘルス情報によるＷａｉｔＮｏ．更新処理を示すフローチャートである。
【図３４】ヘルス情報によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０１付与）である。
【図３５】ヘルス情報によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０２付与）である。
【図３６】ヘルス情報によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．＝０ｘ０３付与）である。
【図３７】ヘルス情報によるＷａｉｔＮｏ．更新処理の説明図（ＷａｉｔＮｏ．確定状態）である。
【図３８】回線断検出時のセンサー中継ノード１０３の動作を示すフローチャートである。
【図３９】回線断発生時のヘルス情報によるＷａｉｔＮｏ．初期化処理を示すフローチャートである。
【図４０】回線断発生時の削除通知によるＷａｉｔＮｏ．初期化処理を示すフローチャートである。
【図４１】回線断時WaitNo.初期化処理の説明図その１（ヘルス情報利用による例１）である。
【図４２】回線断時WaitNo.初期化処理の説明図その２（ヘルス情報利用による例１）である。
【図４３】回線断時WaitNo.再構築処理の説明図その１（ヘルス情報利用による例１）である。
【図４４】回線断時WaitNo.再構築処理の説明図その２（ヘルス情報利用による例１）である。
【図４５】回線断時WaitNo.初期化処理の説明図その１（ヘルス情報利用による例２）である。
【図４６】回線断時WaitNo.初期化処理の説明図その２（ヘルス情報利用による例２）である。
【図４７】回線断時WaitNo.初期化処理の説明図（削除通知利用による例２）である。
【図４８】回線断時WaitNo.再構築処理の説明図（ヘルス情報利用による例２）である。
【図４９】回線断時WaitNo.再構築処理の説明図（同期要求利用による例２）である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
以下の説明では、まず、アドホックネットワークの構成と基本的なルーティング方式について説明し、その基本方式の課題について明らかにした上で、実施形態の具体的な内容について説明する。
【００１２】
図１は、アドホックネットワークのシステム構成図である。
センサー中継ノード群１００は、ノード装置であるセンサー中継ノード１０３同士が直接または他のノードを経由して、相互に有線の通信回線により接続されるアドホックネットワークを構成する。
【００１３】
アドホックネットワークが例えばサーバデータセンターの空調制御による省エネ管理を行なうための環境監視システムに適用される場合には、センサー中継ノード１０３は例えば、データセンター各所に設置される温度センサー、風速センサーなどである。また、アドホックネットワークが例えばビルの省エネ、セキュリティ管理を行なうための施設管理・制御システムに適用される場合には、センサー中継ノード１０３は例えば、部屋の状態を検知する照度センサー、温度センサー、人感センサーなどである。あるいは、アドホックネットワークが例えば電力会社における発電・配電の最適化管理を行なうための点検業務システムに適用される場合には、センサー中継ノード１０３は、例えば検針メーターである。さらには、アドホックネットワークが例えば橋梁なのでの老朽化に対する健全性確認を行なうための構造物モニタリングシステムに適用される場合には、センサー中継ノード１０３は例えば、構造物の状態を検知する加速度センサー、ひずみセンサー、監視カメラなどである。
【００１４】
図１では、Ｎｏ．１からＮｏ．２０までの２０台のセンサー中継ノード１０３が相互に接続された構成が示されている。センサー中継ノード１０３同士は、有線アドホックルーティングプロトコルの通信方式に従って自律的な通信を行う。
【００１５】
１つのセンサー中継ノード１０３と他のセンサー中継ノード１０３がケーブルにより直接接続されている場合、２つのセンサー中継ノード１０３が「隣接している」という。また、１つのセンサー中継ノード１０３に隣接している他のセンサー中継ノード１０３を「隣接ノード」ということがある。なお、センサー中継ノード１０３自身のことを「自ノード」ということがある。
【００１６】
基幹中継ノード１０２は、各センサー中継ノード１０３が収集したセンサー情報を、例えばＬＡＮ（ローカルエリアネットワーク）を介して接続される監視・制御サーバー１０１に中継するゲートウェイ装置として機能する。また、監視・制御サーバー１０１から各センサー中継ノード１０３又は自分自身に通知される各種制御情報を、各センサー中継ノード１０３又は自分自身に中継する。言い換えれば、センサー中継ノード１０３は、ＬＡＮの通信プロトコルと有線アドホックルーティングプロトコルとの変換を行う機能を有する。
【００１７】
監視・制御サーバー１０１は、各センサー中継ノード１０３が収集したセンサー情報を監視し、センサー情報を表示したりまたはセンサー情報の異常を検知して警報を表示したりする機能を有する。また、監視・制御サーバー１０１は、各センサー中継ノード１０３を制御する機能を有する。
【００１８】
アドホックネットワークでは、有線接続された各センサー中継ノード１０３が収集したセンサー情報が、基幹中継ノード１０２を介して監視・制御サーバー１０１に収集されて集中的に監視または制御される。これにより、センサー情報の効率的な収集、監視を行なうことが可能となる。
【００１９】
ここで、センサー中継ノード群１００を構成するアドホックネットワークにおいては、センサー中継ノード１０３や通信回線における障害発生に備えるための技術や最適な通信を行うための技術が必要となる。このためには、監視・制御サーバー１０１の指示で基幹中継ノード１０２が目的のセンサー中継ノード１０３と通信するために、各センサー中継ノード１０３が通信の最適な経路を自律的に選択し、障害発生時に経路を自律的に変更し修復する経路制御が重要である。
【００２０】
一般的に、基幹中継ノード１０２と目的のセンサー中継ノード１０３との間で最適な経路を決定するためには、通信データであるフレームが目的のセンサー中継ノード１０３から基幹中継ノード１０２まで（またはその逆に）転送される間に中継されるセンサー中継ノード１０３の数が最も少なくなるようにすればよい。フレームが目的の中継ノードに転送されるときのセンサー中継ノード１０３の中継数は、ホップ数と呼ばれる。ホップ数が少なければ、転送にかかる時間も少なくなるし、使用される通信回線のトラヒックも少なくなる。
【００２１】
図２は、例えば目的のノードをＮｏ．２０のセンサー中継ノード１０３とした場合における、基幹中継ノード１０２からＮｏ．２０のセンサー中継ノード１０３までの経路とホップ数の関係を説明する図である。例えば、破線で示される経路が決定された場合、基幹中継ノード１０２から送信されたフレームは、基幹中継ノード１０２→Ｎｏ．１→Ｎｏ．５→Ｎｏ．９→Ｎｏ．１３→Ｎｏ．１４→Ｎｏ．１８→Ｎｏ．１９→Ｎｏ．１５→Ｎｏ．１１→Ｎｏ．１０→Ｎｏ．６→Ｎｏ．２→Ｎｏ．３→Ｎｏ．４→Ｎｏ．８→Ｎｏ．１２→Ｎｏ．１６→Ｎｏ．２０の順に転送され、ホップ数は１８となる。したがって、破線で示される経路は冗長なホップ数による経路である。一方、実線で示される最短経路が決定された場合、基幹中継ノード１０２から送信されたフレームは、基幹中継ノード１０２→Ｎｏ．１→Ｎｏ．５→Ｎｏ．６→Ｎｏ．１０→Ｎｏ．１１→Ｎｏ．１５→Ｎｏ．１６→Ｎｏ．２０の順に転送され、ホップ数は８となる。したがって、実線で示される経路は最適なホップ数による経路である。
【００２２】
このように、最適な経路を決定するためには、いかにしてホップ数が少ない経路を選択するかということが重要である。なお、図２の各センサー中継ノード１０３に接続される通信ラインの入力部または出力部に表示される括弧付き数字、[1][2][3]及び(1)(2)(3)等は、各センサー中継ノード１０３におけるポート番号を示す。
【００２３】
アドホックネットワークにおける経路決定のための基本的なルーティング方式としては、次のような方式を考えることができる。
各センサー中継ノード１０３は、ネットワーク内に構成された全ノードの位置情報は持たない。各センサー中継ノード１０３は、隣接するセンサー中継ノード１０３の情報と、宛先アドレスと送信元アドレス、及びフレームシーケンス番号であるフレーム識別ＩＤ（ＦＩＤ：Ｆｒａｍｅ  ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）をもとに、各ポートの使用／未使用／ループ／未接続の４種類の状態を管理する。これにより、センサー中継ノード１０３は、ルーティング処理を実行する。
【００２４】
通常考えられるルーティング方式では例えば、図３に示されるフレーム、図４に示されるＰＳ（Ｐｏｒｔ  Ｓｔａｔｕｓ）テーブル（宛先テーブル）、図５に示されるＦＩＤ（Ｆｒａｍｅ  ＩＤ）テーブル（ループ監視テーブル）等が用いられる。
【００２５】
図１のセンサー中継ノード１０３同士、またはセンサー中継ノード１０３と基幹中継ノード１０２間を接続する有線の通信回線は、例えばイーサネットプロトコルによる物理回線として構成される。ここで、イーサネットは登録商標である。この場合、フレームのデータ構成として図３に示される構成が採用される。
【００２６】
図３（ａ）および（ｂ）に示されるように、通常フレームもヘルスフレームも、ＭＡＣヘッダ３０１、ＭＡＣデータ３０２、およびＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）３０３とによって、イーサネットフレームが形成される。さらに、イーサネットフレームのＭＡＣデータ３０２の部分には、アドホックヘッダ３０２−１とデータ３０２−２が設定される。この２つのデータによって、アドホックフレームが形成される。すなわち、アドホックフレームがイーサネットフレームのＭＡＣデータ３０２の部分に設定される。このデータ構成により、従来からあるイーサネットプロトコルの物理回線によってセンサー中継ノード１０３間を相互接続することにより、このイーサネット回線を使ってアドホック通信のためのアドホックフレームを伝送することが可能となる。
【００２７】
ＭＡＣヘッダ３０１、アドホックヘッダ３０２−１、およびＦＣＳ３０３は、図３（ａ）の通常フレームと図３（ｂ）のヘルスフレームとで同じデータ構成を有する。ここで、通常フレームとは、通常の通信データや制御データを伝送するためのフレームである。ヘルスフレームとは、図１の各センサー中継ノード１０３または基幹中継ノード１０２が、周囲のセンサー中継ノード１０３または基幹中継ノード１０２に対して、自身が正常動作していることを知らせるために一斉同報（ブロードキャスト）するフレームである。ヘルスフレームはＤＡＴＡ部分がオブジェクトＩＤ（７Ｂｙｔｅ）のみで構成される。ＤＳＴ
ＩＤ＝ＡＬＬ“０”、ＳＲＣ  ＩＤは自ノードオブジェクトＩＤとする。
【００２８】
ＭＡＣヘッダ３０１は、ＤＳＴ  ＩＤ（ＤｅＳＴｉｎａｔｉｏｎ  ＩＤ）フィールド、ＳＲＣ  ＩＤ（Ｓｏｕｒｃｅ  ＩＤ）フィールド、およびＴＹＰＥフィールドとから構成される。ＤＳＴ  ＩＤフィールドには、宛先のセンサー中継ノード１０３の宛先ノード番号に対応する６バイトのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスが設定される。ＳＲＣ  ＩＤフィールドには、送信元のセンサー中継ノード１０３の送信元ノード番号に対応する６バイトのＭＡＣアドレスが設定される。ＴＹＰＥフィールドには、２バイトの上位プロトコル識別番号が設定され、現状では０ｘ８８４７の値が設定される。なお、「０ｘ」は、それに続く数値が１６進数であることを示す。
【００２９】
アドホックヘッダ３０２−１は、ＫＩＮＤフィールド、ＦＩＤフィールド、ＴＴＬフィールド、およびＬｅｎｇｔｈフィールドとから構成される。ＫＩＮＤフィールドには、アドホックフレームの種別を表す２バイトのデータが設定される。ＫＩＮＤフィールドに設定される値として、０ｘ００００は、ＩＰｖ６フレームを示す。なお、この値は、本実施形態では使用されない。０ｘ０００１は、ヘルスフレームを示す。０ｘ０００２は、ヘルスフレームを要求するフレームであることを示すヘルスフレーム要求フレームを示す。０ｘ０００３は、経路を探索するためのフレームであることを示す経路探索フレームを示す。０ｘ０００４は、経路探索フレームの応答有りコマンドを示す。０ｘ０００６は、時刻同期コマンドを示す。このコマンドは、同報（ブロードキャスト）送信される。０ｘ０１０４は、応答無しコマンドを示す。０ｘ０１０５は、自立メッセージを表す。このメッセージは、ＤＩ通知である場合のみ、応答（ＡＣＫ）がある。ＦＩＤ（Ｆｒａｍｅ  ＩＤ）フィールドには、例えばシーケンシャル番号である２バイトのフレーム識別ＩＤが設定される。ＴＴＬ（Ｔｉｍｅ  Ｔｏ  Ｌｉｖｅ）フィールドには、アドホックフレームがアドホックネットワークの中に存在することができる上限時間を示す２バイトのデータが設定される。このフィールド値は、アドホックフレームの送信元ノードにて設定され、目的ノードまでの経路上の全てのホップ上のセンサー中継ノード１０３（図１）によって減らされる。アドホックフレームがその目的ノードに到着する前にＴＴＬフィールドの値がゼロになったならば、そのアドホックフレームは破棄される。このフィールドは、配達不能のアドホックフレームがアドホックネットワークを循環し続ける状況と最終的にはそのような不滅のフレームによるシステムの輻輳を回避することである。Ｌｅｎｇｔｈフィールドには、それに続くデータ３０２−２のデータ長を示す２バイトの値が設定される。
【００３０】
データ３０２−２は、７バイトから１５００バイトまでの可変データ長を有する。アドホックフレームがヘルスフレームである場合には、データ３０２−２には、送信元ノードである自ノードのＭＡＣアドレスであるオブジェクト（Ｏｂｊｅｃｔ）ＩＤのみが設定される。なお、アドホックヘッダ３０２−１のＳＲＣ  ＩＤフィールドには、自ノードのＭＡＣアドレスが設定され、ＤＳＴ  ＩＤフィールドには、同報（ブロードキャスト）を示すオール“０”値が設定される。
ＦＣＳ３０３は、ＭＡＣヘッダ３０１およびＭＡＣデータ３０２の部分のデータの誤り検出および訂正をするための冗長符号である。
【００３１】
図４は、通常考えられるルーティング方式において、図１の各センサー中継ノード１０３または基幹中継ノード１０２が管理するＰＳテーブル（宛先テーブル）のデータ構成図である。
【００３２】
このテーブルには、自ノードが中継したフレームのＤＳＴ  ＩＤ（宛先ＩＤ）（図３）毎に、自ノードの各ポートの状態が格納される。すなわち、ＰＳテーブルの各エントリは、ＤＳＴ  ＩＤフィールド、Ｐ１，Ｐ２，Ｐ３の各フィールド、およびタイマーフィールドとから構成される。
【００３３】
ＤＳＴ  ＩＤフィールドには、自ノードが中継したフレームのＭＡＣヘッダ３０１内のＤＳＴ  ＩＤフィールド（図３）に設定されていたＭＡＣアドレスである６バイトのＤＳＴ  ＩＤ（宛先ＩＤ）が設定される。
【００３４】
Ｐ１，Ｐ２，Ｐ３の各フィールドには、自ノードの＃１，＃２，＃３の３つの有線アドホックネットワークポートの各状態を示す２ビットのデータ設定される。この２ビットデータ値は、“００”であるときに未使用状態（状態“Ｅ”：Ｅｍｐｔｙ）を示し、“０１”であるときに使用状態（状態“Ｕ”：Ｕｓｅｄ）を示し、“１０”であるときにループ状態（状態“Ｌ”：Ｌｏｏｐ）を示し、“１１”であるときにリンク断状態（状態“Ｒ”：Ｒｅｓｅｒｖｅ）を示す。
【００３５】
タイマーフィールドには、それが含まれるＤＳＴ  ＩＤのエントリーを保存する残り時間または経過時間を示す８ビットのデータが設定される。
センサー中継ノード１０３が、受信したフレームを中継しようとするとき、このＰＳテーブル上で、受信したフレームのＤＳＴ  ＩＤと同じＤＳＴ  ＩＤを有するエントリを参照することにより、受信したフレームを送信するポートを選択する。
【００３６】
図５は、通常考えられるルーティング方式において、図１の各センサー中継ノード１０３または基幹中継ノード１０２が管理するＦＩＤテーブルのデータ構成図である。このテーブルは、ループ監視テーブルとして機能する。
【００３７】
このテーブルには、自ノードが中継したフレームのＳＲＣ  ＩＤ（送信元ＩＤ）（図３））毎に、自ノードの各ポートのループ状態が設定される。すなわち、ＦＩＤテーブルの各エントリは、ＳＲＣ  ＩＤフィールド、ＦＩＤフィールド、ＲｘＰｏｒｔフィールド、Ｐ１，Ｐ２，Ｐ３の各フィールド、およびタイマーフィールドとから構成される。
【００３８】
ＳＲＣ  ＩＤフィールドには、自ノードが中継したフレームのＭＡＣヘッダ３０１内のＳＲＣ  ＩＤフィールド（図３）に設定されていたＭＡＣアドレスである６バイトのＳＲＣ  ＩＤ（送信元ＩＤ）が設定される。
【００３９】
ＦＩＤフィールドには、２バイトのフレーム識別ＩＤが設定される。ＦＩＤは、送信元の基幹中継ノード１０２またはセンサー中継ノード１０３が、送信するフレームに割り当てた、フレームを一意に識別する２バイトのフレーム識別ＩＤである。ＦＩＤは、例えばシーケンシャル番号でもよい。
【００４０】
ＲｘＰｏｒｔフィールドには、それが含まれるエントリに対応するフレームが最初に受信された受信ポート（受信Ｐｏｒｔ）を示す２ビットのデータが設定される。
Ｐ１，Ｐ２，Ｐ３の各フィールドには、自ノードの１，２，３番目の３つの有線アドホックネットワークポートの各ポート状態を示す２ビットのデータ設定設定される。この２ビットデータ値は、“００”であるときに未送信ポート状態（状態“Ｅ”：Ｅｍｐｔｙ）を示し、“０１”であるときに送信中ポート状態（状態“Ｕ”：Ｕｓｅｄ）を示し、“１０”であるときにループポート状態（状態“Ｌ”：Ｌｏｏｐ）を示す。“１１”は予約状態（状態“Ｒ”：Ｒｅｓｅｒｖｅ）値である。
【００４１】
Ｐｉ（ｉは１，２，３のうちいずれか）に設定された「Ｕ」状態は、次の２つの条件が成立するときに発生する。
（１）自ノードが、１組のＳＲＣ  ＩＤおよびＦＩＤが割り当てられたフレームを、かつて中継したことがある。
（２）その中継の際に、自ノード内での送信先ポートとしてＰｉに対応するｉ番目のポートが使われた。
【００４２】
Ｐｉ（ｉは１，２，３のうちいずれか）に設定された「Ｅ」状態は、次のような意味である。すなわち、自ノードが１組のＳＲＣ  ＩＤおよびＦＩＤが割り当てられたフレームをかつて中継したときの送信先ポートがｉ番目のポートでなければ、Ｐｉの状態は「Ｅ」である。
【００４３】
Ｐｉ（ｉは１，２，３のうちいずれか）に設定された「Ｌ」状態は、次の２つの条件が成立するときに発生するループ状態である。
（１）自ノードが、１組のＳＲＣ  ＩＤおよびＦＩＤが割り当てられたフレームを、かつてｉ番目のポートを送信先ポートとして中継したことがある。
（２）中継後に当該フレームが再度自ノードで受信された。なお、図４のＰＳテーブルにおいては、「Ｕ」状態と「Ｅ」状態は「送信可能である」つまり「送信先ポートとして選択可能である」という意味では共通である。しかし、ＦＩＤテーブルでは、「Ｕ」状態と「Ｅ」状態は次のように峻別される。すなわち、ＦＩＤテーブルにおける「Ｕ」状態は、仮に今後ループが検出されることがあれば、「送信不可」を意味する「Ｌ」状態に遷移させる対象を示している。それに対し、ＦＩＤテーブルにおける「Ｅ」状態は、仮に今後ループが検出されることがあっても、当該ループの検出の時点では依然として送信先ポートとして選択可能であることを示す。
【００４４】
タイマーフィールドには、それが含まれるＳＲＣ  ＩＤのエントリーを保存する残り時間または経過時間を示す８ビットのデータが設定される。
【００４５】
図３のフレーム構成と、図４のＰＳテーブルと、図５のＦＩＤテーブルに基づいて通常考えられるルーティング方式について、以下に説明する。
通常、フレームを受信したセンサー中継ノード１０３は、受信したフレームとＰＳテーブルの登録内容とを比較して、受信ポートとは異なるポートへ、受信したフレームを送信して中継する。このとき、フレームのＭＡＣヘッダ３０１に設定されているＤＳＴ  ＩＤフィールド値に対応して、使用可能ポートすなわち「未使用状態」のポートが複数存在する場合には、若番もしくは老番の番号を有するポートから順に、送信ポートが決定される。
【００４６】
通常考えられるルーティング方式による具体的な経路決定の動作について、図６から図８の経路決定例の説明図と、図９に示される各センサー中継ノード１０３の各ポートの状態遷移を示す表とに基づいて説明する。
【００４７】
まず、図６において、基幹中継ノード１０２から送信されたフレームは、ＤＳＴ  ＩＤ（宛先アドレス）：１９２．１６３．１．２０、ＳＲＣ  ＩＤ（送信元アドレス）：１９２．１６３．１．６４、ＦＩＤ：０ｘ００１を有する。破線は基幹中継ノード１０２からセンサー中継ノード１０３（Ｎｏ．２０）への経路を示す。
【００４８】
基幹中継ノード１０２から送信された上記フレームは、その基幹中継ノード１０２に接続されているＮｏ．１のセンサー中継ノード１０３に転送される。Ｎｏ．１のセンサー中継ノード１０３は１番ポートで基幹中継ノード１０２に接続されている。このため、基幹中継ノード１０２から送信されたフレームは、Ｎｏ．１のセンサー中継ノード１０３において、１番ポートで受信される。Ｎｏ．１のセンサー中継ノード１０３は、１番の受信ポート以外で「未使用状態」のポートのうち若番の２番ポートに出力する（図中Ｓ１）。
【００４９】
この結果、フレームは、Ｎｏ．１のセンサー中継ノード１０３の２番ポートに接続されているＮｏ．５のセンサー中継ノード１０３の１番ポートで受信される。Ｎｏ．５のセンサー中継ノード１０３は、１番の受信ポート以外で「未使用状態」のポートのうち若番の２番ポートに出力する（図中Ｓ２）。
【００５０】
この結果、フレームは、Ｎｏ．５のセンサー中継ノード１０３の２番ポートに接続されているＮｏ．９のセンサー中継ノード１０３の１番ポートで受信される。Ｎｏ．９のセンサー中継ノード１０３は、１番の受信ポート以外で「未使用状態」のポートのうち若番の２番ポートに出力する（図中Ｓ３）。
【００５１】
この結果、フレームは、Ｎｏ．９のセンサー中継ノード１０３の２番ポートに接続されているＮｏ．１３のセンサー中継ノード１０３の１番ポートで受信される。Ｎｏ．１３のセンサー中継ノード１０３は、１番の受信ポート以外で「未使用状態」のポートのうち若番の２番ポートに出力する（図中Ｓ４）。
【００５２】
上述のＳ１からＳ４の状態遷移において、Ｎｏ．１，５，９，１３の各センサー中継ノード１０３は、フレームを受信したときに、以下の動作を実行する。すなわち、各センサー中継ノード１０３は、受信フレームに設定されているＤＳＴ  ＩＤ（図３（ａ））が設定されたエントリを生成する。また、そのエントリにおいて、Ｐ１，Ｐ２，Ｐ３のうち出力ポート番号に対応するフィールドの状態を「使用状態」とし、タイマーフィールドに所定のタイムアウト値を設定する（以上、図４）。また、Ｓ１からＳ４の状態遷移において、Ｎｏ．１，５，９，１３の各センサー中継ノード１０３は、フレームを受信したときに、以下の動作を実行する。すなわち、各センサー中継ノード１０３は、受信フレームに設定されているＳＲＣ  ＩＤおよびＦＩＤ（図３（ａ））と、ＲｘＰｏｒｔ＝受信ポートの番号が設定されたエントリを生成する。また、そのエントリにおいて、Ｐ１，Ｐ２，Ｐ３のうち出力ポート番号に対応するフィールドの状態を「送信中ポート」状態とし、タイマーフィールドに所定のタイムアウト値を設定する（以上、図５）。そして、各センサー中継ノード１０３は、このＦＩＤテーブルを用いて、戻りフレームの有無を監視する。すなわち、各センサー中継ノード１０３は、タイマーフィールドに設定されているタイムアウト時間内にフレームが戻ってきたポートおよび受信ポート自身に戻して送信する操作を行ったポートは、「ループポート」状態として、以後使用不可とする制御を行う。上述のＳ１からＳ４の状態遷移では、Ｎｏ．１，５，９，１３のいずれのセンサー中継ノード１０３においても、「ループポート」状態となったポートは存在しない。
【００５３】
次に、図７の状態に移行し、Ｎｏ．１３のセンサー中継ノード１０３の２番ポートから送信されたフレームは、上記２番ポートに接続されているＮｏ．１７のセンサー中継ノード１０３の１番ポートで受信される。Ｎｏ．１７のセンサー中継ノード１０３は、１番の受信ポート以外の２番および３番ポートはリンク断状態であることを認識する。この結果、Ｎｏ．１７のセンサー中継ノード１０３は、ＰＳテーブルに、受信フレームと同じＤＳＴ  ＩＤが登録されたエントリを生成し、そのエントリ中の受信ポートである１番ポートに対応するＰ１フィールドに「ループ状態」を設定する。また、Ｎｏ．１７のセンサー中継ノード１０３は、ＦＩＤテーブルに、受信フレームと同じＳＲＣ  ＩＤおよびＦＩＤが登録されたエントリを生成し、そのエントリ中の受信ポートである１番ポートに対応するＰ１フィールドに「ループポート」状態を設定する。そして、Ｎｏ．１７のセンサー中継ノード１０３は、１番ポートで受信したフレームをそのまま１番ポートに戻して送信する（図中Ｓ５）。
【００５４】
この結果、フレームは、Ｎｏ．１７のセンサー中継ノード１０３の１番ポートに接続されているＮｏ．１３のセンサー中継ノード１０３の２番ポートで受信される。Ｎｏ．１３のセンサー中継ノード１０３は、ＦＩＤテーブルの受信フレームと同じＳＲＣ  ＩＤおよびＦＩＤが登録されているエントリで、Ｐ１，Ｐ２，Ｐ３のうち「送信中ポート」状態となっている２番ポートでフレームが受信されたことを認識する。これにより、Ｎｏ．１３のセンサー中継ノード１０３は、ＦＩＤテーブルの上記エントリで、２番ポートに対応するＰ２フィールドに「ループポート状態」を設定する。また、Ｎｏ．１３のセンサー中継ノード１０３は、ＰＳテーブルの受信フレームと同じＤＳＴ  ＩＤが登録されているエントリで、上記２番ポートに対応するＰ２フィールドに「ループ状態」を設定する。そして、Ｎｏ．１３のセンサー中継ノード１０３は、ＦＩＤテーブルの上記エントリのＲｘＰｏｒｔフィールドに設定されている１番の受信ポートと「ループポート」状態であるＰ２フィールドに対応する２番ポート以外のポートを選択する。かつ、ＰＳテーブル上の上記エントリで、「未使用状態」であるＰ３に対応する３番ポートを選択する。そして、Ｎｏ．１３のセンサー中継ノード１０３は、その３番ポートに、受信フレームを出力する（図中Ｓ６）。
この結果、フレームは、Ｎｏ．１３のセンサー中継ノード１０３の３番ポートに接続されているＮｏ．１４のセンサー中継ノード１０３の３番ポートで受信される。
【００５５】
これ以後、図８の状態に移行し、Ｎｏ．１４，１８，１９，１５，１１，１０，６，２，３，４，８，１２，１６の各センサー中継ノード１０３では、図６のＮｏ．１，５，９の場合と同様の制御が実行される。すなわち、各センサー中継ノード１０３は、各受信ポート以外で「未使用状態」のポートのうち若番のポートに、受信フレームを順次出力する（図中Ｓ７からＳ１９までの状態遷移）。
以上の制御処理により、図８の実線の決定経路として示されるように、基幹中継ノード１０２からＮｏ．２０のセンサー中継ノード１０３までの経路が確定する。
【００５６】
図９は、以上の図６から図８までの制御動作における各センサー中継ノード１０３でのＰＳテーブルおよびＦＩＤテーブルの状態遷移表を示す図である。以下の説明において、「エントリＳ１」と表記した場合には、図９の表の左端のＮｏ．フィールドの値が「Ｓ１」である行を示すものとする。エントリＳ２〜Ｓ１９においても同様である。また、図４に例示されるＰＳテーブルおよび図５に例示されるＦＩＤテーブルのＰ１，Ｐ２，Ｐ３フィールドは、図９中では「Ｐｏｒｔ１」「Ｐｏｒｔ２」「Ｐｏｒｔ３」と表記する。さらに、図４に例示されるＰＳテーブルに設定される「未使用状態」「使用状態」「ループ状態」「リンク断状態」はそれぞれ、図９中では「未使用」「使用」「ループ」「リンク断」と表記する。また、図５に例示されるＦＩＤテーブルに設定される「未送信ポート」「送信中ポート」「ループポート」「ｒｅｓｅｒｖｅ」の各状態は、図９中では「未送信」「送信中」「ループ」「Ｒｅｓｅｒｖｅ」と表記する。
【００５７】
図６のＳ１，Ｓ２，Ｓ３の状態遷移に従って、Ｎｏ．１，５，９の各センサー中継ノード１０３の各ＰＳテーブル（図４）に、次のような各エントリＳ１，Ｓ２，Ｓ３が登録される。すなわち、ＰＳテーブルの各エントリＳ１，Ｓ２，Ｓ３において、ＤＳＴ  ＩＤフィールドに、受信フレームのＤＳＴ  ＩＤフィールド（図３（ａ））から抽出されたＮｏ．２０のセンサー中継ノード１０３の宛先アドレスが登録される。また、ＰＳテーブルの各エントリＳ１，Ｓ２，Ｓ３において、各センサー中継ノード１０３における出力ポートである２番ポートに対応するＰ２（Ｐｏｒｔ２）フィールドに「使用」が登録される。さらに、Ｎｏ．１，５の各センサー中継ノード１０３においては、上記ＰＳテーブルの各エントリＳ１，Ｓ２のＰ１（Ｐｏｒｔ１）およびＰ３（Ｐｏｒｔ３）フィールドには、「未使用」が登録される。また、Ｎｏ．９のセンサー中継ノード１０３においては、上記ＰＳテーブルのエントリＳ３のＰ１（Ｐｏｒｔ１）フィールドには、「未使用」が登録され、Ｐ３（Ｐｏｒｔ３）フィールドには、他のノードは接続されていないため、「リンク断」が登録される。
【００５８】
一方、図６のＳ１，Ｓ２，Ｓ３の状態遷移に従って、Ｎｏ．１，５，９の各センサー中継ノード１０３の各ＦＩＤテーブル（図５）に、次のような各エントリＳ１，Ｓ２，Ｓ３が登録される。すなわち、ＦＩＤテーブルの各エントリＳ１，Ｓ２，Ｓ３において、ＳＲＣ  ＩＤフィールドに、受信フレームのＳＲＣ  ＩＤフィールド（図３（ａ））から抽出された基幹中継ノード１０２の送信元アドレスが登録される。また、ＦＩＤテーブルの各エントリＳ１，Ｓ２，Ｓ３において、ＦＩＤフィールドに、受信フレームのＦＩＤフィールド（図３（ａ））から抽出されたＦＩＤ：０ｘ０００１が登録される。また、ＦＩＤテーブルの各エントリＳ１，Ｓ２，Ｓ３において、ＲｘＰｏｒｔフィールドに、各センサー中継ノード１０３における受信ポートである１番ポートに対応するポート番号Ｐｏｒｔ１が登録される。また、ＦＩＤテーブルの各エントリＳ１，Ｓ２，Ｓ３において、各センサー中継ノード１０３における出力ポートである２番ポートに対応するＰ２（Ｐｏｒｔ２）フィールドに「送信中」が登録される。さらに、Ｎｏ．１，５の各センサー中継ノード１０３においては、上記ＦＩＤテーブルの各エントリＳ１，Ｓ２のＰ１（Ｐｏｒｔ１）およびＰ３（Ｐｏｒｔ３）フィールドには、「未送信」が登録される。また、Ｎｏ．９のセンサー中継ノード１０３においては、上記ＦＩＤテーブルのエントリＳ３のＰ１（Ｐｏｒｔ１）フィールドには、「未送信」が登録され、Ｐ３（Ｐｏｒｔ３）フィールドには、他のノードは接続されていないため、「Ｒｅｓｅｒｅ」が登録される。
【００５９】
また、図６のＳ４の状態遷移に従って、Ｎｏ．１３のセンサー中継ノード１０３のＰＳテーブルおよびＦＩＤテーブルのエントリＳ４には、Ｎｏ．１やＮｏ．５のセンサー中継ノード１０３のエントリＳ１やＳ２と同様の状態が、ひとまず登録される。
【００６０】
次に、図７のＳ５の状態遷移に従って、Ｎｏ．１７のセンサー中継ノード１０３のＰＳテーブル（図４）には、次のようなエントリＳ５が登録される。すなわち、ＰＳテーブルのエントリＳ５において、ＤＳＴ  ＩＤフィールドに、受信フレームのＤＳＴ  ＩＤフィールド（図３（ａ））から抽出されたＮｏ．２０のセンサー中継ノード１０３の宛先アドレスが登録される。また、ＰＳテーブルのエントリＳ５において、２番、３番ポートには他のノードは接続されていないため（図７）、Ｐ２（Ｐｏｒｔ２）およびＰ３（Ｐｏｒｔ３）フィールドには「リンク断」が登録される。また、ＰＳテーブルのエントリＳ５において、受信ポートである１番ポートに対応するＰ１フィールドに「ループ」状態が設定される。
【００６１】
一方、図６のＳ５の状態遷移に従って、Ｎｏ．１７のセンサー中継ノード１０３のＦＩＤテーブル（図５）に、次のようなエントリＳ５が登録される。すなわち、ＦＩＤテーブルのエントリＳ５において、ＳＲＣ  ＩＤフィールドに、受信フレームのＳＲＣ  ＩＤフィールド（図３（ａ））から抽出された基幹中継ノード１０２の送信元アドレスが登録される。また、ＦＩＤテーブルのエントリＳ５において、ＦＩＤフィールドに、受信フレームのＦＩＤフィールド（図３（ａ））から抽出されたＦＩＤ：０ｘ０００１が登録される。また、ＦＩＤテーブルのエントリＳ５において、ＲｘＰｏｒｔフィールドに、Ｎｏ．１７のセンサー中継ノード１０３における受信ポートである１番ポートに対応するポート番号Ｐｏｒｔ１が登録される。また、ＦＩＤテーブルのエントリＳ５において、２番、３番ポートには他のノードは接続されていないため、Ｐ２（Ｐｏｒｔ２）およびＰ３（Ｐｏｒｔ３）フィールドには「Ｒｅｓｅｒｖｅ」が登録される。また、ＦＩＤテーブルのエントリＳ５において、受信ポートである１番ポートに対応するＰ１フィールドに「ループポート」状態が設定される。
【００６２】
その後、図７のＳ６の状態遷移に従って、Ｎｏ．１３のセンサー中継ノード１０３にフレームが戻される。この結果、Ｎｏ．１３のセンサー中継ノード１０３のＰＳテーブルとＦＩＤテーブルの状態は、図９のエントリＳ４の状態からエントリＳ６の状態に変化する。すなわち、ＰＳテーブルの受信フレームと同じＤＳＴ  ＩＤが登録されているエントリＳ６（＝エントリＳ４）において、２番ポートにおいてループが検出されたため、Ｐ２（Ｐｏｒｔ２）フィールドの状態が「使用」状態から「ループ」状態に更新される。また、３番ポートが新たな出力ポートとなったため、Ｐ３（Ｐｏｒｔ３）フィールドの状態が「未使用」状態から「使用」状態に更新される。一方、ＦＩＤテーブルの受信フレームと同じＳＲＣ  ＩＤおよびＦＩＤが登録されているエントリＳ６（＝エントリＳ４）において、２番ポートにおいてループが検出されたため、Ｐ２（Ｐｏｒｔ２）フィールドの状態が「送信中」状態から「ループポート」状態に更新される。また、３番ポートが新たな出力ポートとなったため、Ｐ３（Ｐｏｒｔ３）フィールドの状態が「未送信」状態から「送信中」状態に更新される。
【００６３】
以後、図８のＳ７からＳ１９の状態遷移に従い、Ｎｏ．１４，１８，１９，１５，１１，１０，６，２，３，４，８，１２，１６の各センサー中継ノード１０３のＰＳテーブルとＦＩＤテーブルの状態も、図６の状態遷移Ｓ１からＳ３の場合と同様に更新されてゆく。
【００６４】
以上説明したアドホックネットワークにおいて通常考えられるルーティング方式においては、各センサー中継ノード１０３が、リンク断やループ状態を検出しながら、基本的に未使用状態の若番ポート（または老番ポート）を順次選択してゆく。この結果、自律的に基幹中継ノード１０２から目的のセンサー中継ノード１０３までの経路が決定される。
【００６５】
基幹中継ノード１０２から目的のセンサー中継ノード１０３までいったん経路が決定されると、基幹中継ノード１０２から同じ目的のセンサー中継ノード１０３に向けて送信されたフレームは、決定された同じ経路をたどって転送されてゆく。この場合、各フレームには、同じ目的のセンサー中継ノード１０３に対応するＤＳＴ  ＩＤが設定され、送信のシーケンシャル番号であるＦＩＤとして０ｘ０００１から順次インクリメントされた値が設定される（図３（ａ））。このフレームを受信した各センサー中継ノード１０３は、受信フレームのＤＳＴ  ＩＤフィールドに設定されたＤＳＴ  ＩＤに対応するエントリがＰＳテーブル（図４）に存在することを検出する。この結果、センサー中継ノード１０３は、ＰＳテーブルの上記エントリのＰ１，Ｐ２，Ｐ３フィールドのうち、「使用状態」が設定されているフィールドに対応するポートに、受信フレームを出力する。なお、受信フレームに設定されているＳＲＣ  ＩＤおよびＦＩＤ毎に、ＦＩＤテーブル（図５）に新たなエントリが生成されて、前述したループ監視制御が実施される。以上のようにして、基幹中継ノード１０２から目的のセンサー中継ノード１０３までの通信では、決定された同じ経路が使用されることになる。
【００６６】
しかしながら、通常考えられるルーティング方式では、前述した図２を参照すると理解されるように、最終的に決定した図２の破線で示される経路のホップ数は１８であり、これは最適と考えられるホップ数８の最短経路に比較して、かなり冗長な経路となってしまっている。本来は、図２のＮｏ．５のセンサー中継ノード１０３において、出力ポートとして、２番ポートではなく３番ポートが選択されて、Ｎｏ．６のセンサー中継ノード１０３に中継されるのが理想であるが、通常考えられるルーティング方式ではそのように制御することができない。
【００６７】
すなわち、以上説明したアドホックネットワークにおいて通常考えられるルーティング方式においては、各センサー中継ノード１０３のポートの接続関係によって、経路が冗長となってしまうという課題がある。
【００６８】
そこで、以下に説明する実施形態では、各センサー中継ノード１０３毎に基準となるノード装置（本実施形態ではゲートウェイである基幹中継ノード１０２）からの中継数またはホップ数に対応する情報として、ウエイト番号（以降、「ＷａｉｔＮｏ．」と表記する）を持たせ、これを用いてルーティングを行うことで、経路が冗長となることを解決する。
【００６９】
図１０は、本実施形態におけるセンサー中継ノード１０３のブロック図である。
複数Ｐ１〜Ｐｎ（例えばＰ１，Ｐ２，Ｐ３の３ポート）の有線アドホックネットワークポート１０１６は、他のセンサー中継ノード１０３または基幹中継ノード１０２との間で送受信されるアドホックフレームをカプセル化したイーサネットフレームのデータを終端し、送受信フレームの符号化または復号を行う。有線アドホックネットワークポート１０１７は、送信フレームを一時保持するバッファメモリを備える。以後、単に「ポート」または「受信ポート」などと言う場合は、本実施形態による有線アドホックネットワークポート１０１６を意味するものとする。
【００７０】
汎用ポート１０１７は、例えばＬＡＮ（ローカルエリアネットワーク）を終端するポートである。
アドホックルーティング制御デバイス１００１は、例えばＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）として構成される。そして、１００１は、受信フレーム制御部１０１０、送信フレーム制御部１０１１、ルーティング制御部１００３（ＷａｉｔＮｏ．制御部１００４を含む）、ＰＳテーブル１００５、ＦＩＤテーブル１００６、フレーム処理部１００９、ＣＰＵインタフェース１００７（レジスタ１００８を含む）、汎用ポート制御部１０１２等を備える。また、ルーティング制御部１００３は、ＷａｉｔＮｏ．を制御するウエイト番号制御部としての機能と、そのようなＷａｉｔＮｏ．を含む制御フレームを隣接ノード装置に転送するウエイト番号送信部としの機能を併せ持つ。
【００７１】
アドホックルーティング制御デバイス１００１内の受信フレーム制御部１０１０は、有線アドホックネットワークポート１０１６にて受信されるフレームデータを受信する処理を実行する。
【００７２】
受信されたフレームデータが自ノードで処理すべきデータである場合、受信フレーム制御部１０１０にて受信フレームから取り出されたセンサー制御情報等は、ＣＰＵインタフェース１００７内のレジスタ１００８に保持された後、ＣＰＵインタフェース１００７からＣＰＵ（中央演算処理装置）１００２に転送される。
【００７３】
受信されたフレームデータが自ノードで処理すべきデータではない場合、受信フレーム制御部１０１０で受信されたフレームデータは、ルーティング制御部１００３に引き渡される。
【００７４】
ルーティング制御部１００３は、受信フレーム制御部１０１０で受信されたフレームデータに対して、送信側のポートを選択して送信フレーム制御部１０１１に引き渡す。このとき、ルーティング制御部１００３は、ＰＳテーブル１００５上のポート状態、ＦＩＤテーブル１００６上のＦＩＤ、およびＷａｉｔＮｏ．制御部１００４が管理するＷａｉｔＮｏ．に基づいて、受信フレームに対してルーティングを実行し、出力ポートを選択する。
【００７５】
ＷａｉｔＮｏ．制御部１００４は、自センサー中継ノード１０３のＷａｉｔＮｏ．と、自センサー中継ノード１０３の各ポートに接続される隣接するセンサー中継ノード１０３のＷａｉｔＮｏ．を決定し保持する。
【００７６】
フレーム処理部１００９は、ルーティング制御部１００３が受信フレーム制御部１０１０から受信しルーティング処理を実行したフレームを、送信フレーム制御部１０１１に引き渡す。このとき、フレーム処理部１００９は、ルーティング制御部１００３でのルーティング処理結果に基づいて必要に応じてフレーム内のＷａｉｔＮｏ．を書き換える。また、フレーム処理部１００９は、ＣＰＵインタフェース１００７から引き渡されたセンサー情報に基づいて送信フレームを生成し、送信フレーム制御部１０１１に引き渡す。
【００７７】
送信フレーム制御部１０１１は、ルーティング制御部１００３から指定された有線アドホックネットワークポート１０１６に対して、フレーム処理部１００９から引き渡されたフレームを出力し送信させる。
【００７８】
ＣＰＵ１００２は、自ノードのセンサー情報を制御し、ＦＰＧＡインタフェース１０１３、ＤＩ／ＤＯインタフェース１０１４、センサーインタフェース１０１５を備える。ＦＰＧＡインタフェース１０１３は、アドホックルーティング制御デバイス１００１内のＣＰＵインタフェース１００７との間で、センサー情報およびセンサー制御情報等の送受信を行う。センサーインタフェース１０１５には、複数のセンサー装置が接続される各センサー接続ポート１０１９が接続され、センサー情報およびセンサー制御情報等の受信または送信を行う。センサー装置としては、温度センサー、風速センサー、照度センサー、人感センサー、電力検針メーター、加速度センサー、ひずみセンサー、監視カメラなどが接続される。また、センサーインタフェース１０１５には、各種センサー情報やセンサー制御情報を記憶するためのＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０１８が接続される。ＤＩ／ＤＯインタフェース１０１４には、データ入力／データ出力端子であるＤＩ／ＤＯ端子が接続される。センサー接続ポート１０１９に接続されたセンサー装置にて検出された各種センサー情報は、センサー接続ポート１０１９からＣＰＵ１００２内のセンサーインタフェース１０１５に送られる。そして、このセンサー情報は、ＣＰＵ１００２にて処理された後、ＦＰＧＡインタフェース１０１３からアドホックルーティング制御デバイス１００１内のＣＰＵインタフェース１００７に送信される。ＣＰＵインタフェース１００７は、レジスタ１００８に随時記憶等を行いながら、受信したセンサー情報を、フレーム処理部１００９に出力する。一方、アドホックルーティング制御デバイス１００１内の受信フレーム制御部１０１０にて受信されたセンサー制御情報等は、ＣＰＵインタフェース１００７内のレジスタ１００８に記憶等されながら、ＣＰＵ１００２内のＦＰＧＡインタフェース１０１３に送信される。ＣＰＵ１００２は、ＦＰＧＡインタフェース１０１３で受信したセンサー制御情報に基づいて、センサーインタフェース１０１５およびセンサー接続ポート１０１９を介して、指定されたセンサー装置を制御する。
【００７９】
本実施形態は、基幹中継ノード１０２からのホップ数あるいは中継数に相当するルーティング情報であるＷａｉｔＮｏ．を用いることで、最適化されたルートの検出・構築を可能とするルーティング方式を提供する。また、このＷａｉｔＮｏ．により、アドホックネットワークへのセンサー中継ノード１０３の追加・削除を自動制御することで、自律的に迅速かつ最小ホップ数を有する最適経路の決定を可能とするルーティング方式を提供する。
【００８０】
図１１は、図１０のルーティング制御部１００３内のＷａｉｔＮｏ．制御部１００４が管理するＷａｉｔＮｏ．テーブルのデータ構成図である。図１０に示される各センサー中継ノード１０３のＷａｉｔＮｏ．制御部１００４は、ＷａｉｔＮｏ．テーブルとして、自ノードに設定されているＷａｉｔＮｏ．である自ノードＷａｉｔＮｏ．を保持する。また、ＷａｉｔＮｏ．制御部１００４は、ＷａｉｔＮｏ．テーブルとして、自ノードＷａｉｔＮｏ．を決定したセンサー中継ノード１０３が接続されているポート番号を示すマスターＰｏｒｔを保持する。また、ＷａｉｔＮｏ．制御部１００４は、ＷａｉｔＮｏ．テーブルとして、ポートＰ１の接続先のウエイト番号Ｐ１ＷａｉｔＮｏ．、ポートＰ２の接続先のウエイト番号Ｐ２ＷａｉｔＮｏ．、ポートＰ３の接続先のウエイト番号Ｐ３ＷａｉｔＮｏ．を保持する。これらのＷａｉｔＮｏ．は、図１０の有線アドホックネットワークポート１０１６の例えばＰ１，Ｐ２，Ｐ３の各ポートに接続されている隣接するセンサー中継ノード１０３から通知されているＷａｉｔＮｏ．である。すなわち、通信ポート対応のウエイト番号としての意味を持つ。さらに、ＷａｉｔＮｏ．制御部１００４は、ＷａｉｔＮｏ．テーブルとして、Ｐ１ＷａｉｔＮｏ．，Ｐ２ＷａｉｔＮｏ．，Ｐ３ＷａｉｔＮｏ．の各ＷａｉｔＮｏ．に対応する各タイマー値を保持する。これらのタイマー値は、Ｐ１，Ｐ２，Ｐ３の各ポートが同期要求フレームまたはヘルスフレームを定期的に受信できるか否かを監視するために設定される（後述する図３８のステップＳ３８０２）。
【００８１】
図１２は、本実施形態のルーティング方式におけるフレームのデータ構成図である。図１２において、図３に示した通常考えられるルーティング方式におけるフレームのデータ構成の場合と同じデータ構成部分には同じ番号を付してある。
【００８２】
図１２の（ａ）および（ｂ）はそれぞれ、図３の（ａ）および（ｂ）に対応し、（ａ）は通常フレームのデータ構成を、（ｂ）はヘルスフレームのデータ構成をそれぞれ示している。また、図１２の（ｃ）は、本実施形態で用いられる同期要求フレームのデータ構成を示している。図１２の（ｄ）は、同期要求フレームに対してセンサー中継ノード１０３が返信する同期要求応答フレームおよび各センサー中継ノード１０３が自ノードの状態を通知するために送信する自ノード状態通知フレームのデータ構成を示している。加えて、図１２の（ｅ）は、図１２（ａ）の通常フレームの別の実施形態を示す図である。すなわち図１２の通常フレームとしてＤＳＴ  ＩＤ（宛先）の一部として送信先Ｗａｉｔ  Ｎｏ．を割り振り、別の通常フレームＳＲＣ  ＩＤ（送り元）の一部として送信元Ｗａｉｔ  Ｎｏ．を割り振っても良い。  
【００８３】
図１２（ａ）および（ｂ）のデータ構成が図３（ａ）および（ｂ）のデータ構成と異なる部分は、ＭＡＣデータ３０２の一部として、アドホックヘッダ３０２−１とデータ３０２−２に加えて、２バイトのＷａｉｔＮｏ．フィールド１２０１が設けられて伝送される点である。図１２（ｃ）の同期要求フレーム、（ｄ）の同期要求応答フレームおよび自ノード状態通知フレームについても同様に、ＷａｉｔＮｏ．フィールド１２０１が設けられる。そして、図１２（ａ）の通常フレーム、図１２（ｄ）の同期要求応答フレームおよび自ノード状態通知フレームにおいては、ＷａｉｔＮｏ．フィールド１２０１には、送信先のＷａｉｔＮｏ．が設定されて伝送される。一方、図１２（ｂ）のヘルスフレーム、図１２（ｃ）の同期要求フレームにおいては、ＷａｉｔＮｏ．フィールド１２０１には、送信元のＷａｉｔＮｏ．が設定されて伝送される。
【００８４】
図１２（ｂ）のヘルスフレームおよび（ｃ）の同期要求フレームは、同報（ブロードキャスト）を行うためのフレームであり、ＤＳＴ  ＩＤフィールドには、同報（ブロードキャスト）を示すオール“０”値が設定される。  なお、ＷａｉｔＮｏ．フィールド１２０１を設ける代わりに、図１２（ｅ）に示されるように、ＭＡＣヘッダ３０１内のＤＳＴ  ＩＤフィールドを６バイトから４バイトに減らし、残った２バイトを送信先ＷａｉｔＮｏ．１２０２に割り当ててもよい。同様に、ＭＡＣヘッダ３０１内のＳＲＣ  ＩＤフィールドを６バイトから４バイトに減らし、残った２バイトを送信元ＷａｉｔＮｏ．１２０２に割り当ててもよい。
【００８５】
図１２で、アドホックヘッダ３０２−１内のＫＩＮＤフィールドに設定する値でＷａｉｔＮｏ．付与フレームであるか否かを判定するようにし、各センサー中継ノード１０３は、この判定に応じてＷａｉｔＮｏ．の更新処理を実行するように構成することができる。このような構成が採用されることにより、ＷａｉｔＮｏ．が付与されない図３（ａ）または（ｂ）のような従来フレームも問題なく通信することが可能となり、ＷａｉｔＮｏ．の使い分けによりネットワークの輻輳回避（処理低減）に有効な方式となる。
【００８６】
図１１のＷａｉｔＮｏ．テーブルおよび図１１のフレームのデータ構成により、本実施形態による各センサー中継ノード１０３のルーティング制御部１００３（図１０）は、以下のようなルーティング処理を実行する。
【００８７】
まず、ルーティング制御部１００３は、ＷａｉｔＮｏ．を含む同期要求信号を受信すると、受信したＷａｉｔＮｏ．をインクリメントして自ノードＷａｉｔＮｏ．とし、それを図１１に例示されるＷａｉｔＮｏ．テーブルに保持する。なお、図１のセンサー中継ノード群１００において、同じＷａｉｔＮｏ．を持つセンサー中継ノード１０３は複数存在することができる。
【００８８】
各センサー中継ノード１０３は、フレームを送信するときに自ノードＷａｉｔＮｏ．も情報として添付する。フレームを受信したセンサー中継ノード１０３は、フレーム中のＷａｉｔＮｏ．と自ノードＷａｉｔＮｏ．とを比較する。自ノードＷａｉｔＮｏ．が受信フレームのＷａｉｔＮｏ．よりも大きい場合には、自ノードＷａｉｔＮｏ．よりも大きいＷａｉｔＮｏ．を有するセンサー中継ノード１０３にフレームを送信する。自ノードＷａｉｔＮｏ．よりも大きいＷａｉｔＮｏ．を有するセンサー中継ノード１０３が無い場合には、ループ状態として受信元のセンサー中継ノード１０３に戻す。自ノードＷａｉｔＮｏ．が受信フレームのＷａｉｔＮｏ．よりも小さい場合には、自ノードＷａｉｔＮｏ．よりも小さいＷａｉｔＮｏ．を有するセンサー中継ノード１０３にフレームを送信する。自ノードＷａｉｔＮｏ．よりも小さいＷａｉｔＮｏ．を有するセンサー中継ノード１０３が無い場合には、ループ状態として受信元のセンサー中継ノード１０３に戻す。
【００８９】
ＷａｉｔＮｏ．には、フレーム内に含まれる時刻同期情報により重み付けを行うことで、番号を付与していく。なお、ＷａｉｔＮｏ．の初期値は、ユーザが指定可能である。
【００９０】
なお、ＷａｉｔＮｏ．は、同期要求フレーム（図１２（ｃ））の定期送信、もしくはヘルスフレーム（図１２（ｂ））の定期送信に付随させて送信することとする。そして、各センサー中継ノード１０３は、同期要求フレームまたはヘルスフレームが、設定された監視時間内に受信されない場合は、自ノードＷａｉｔＮｏ．を一旦初期値へ戻し、別ポートからの同期要求フレームまたはヘルスフレームに従うこととする。
【００９１】
図１３は、各センサー中継ノード１０３におけるフレーム受信時の全体制御を示すフローチャートである。このフローチャートは、図１０のアドホックルーティング制御デバイス１００１として構成されるＦＰＧＡの処理機能として実装される。あるいは、アドホックルーティング制御デバイス１００１が中央演算処理装置とメモリを含むプロセッサとして構成される場合には、中央演算処理装置がメモリに記憶された制御プログラムを実行する動作として実装される。
【００９２】
図１３において、図１０のアドホックルーティング制御デバイス１００１は、受信フレーム制御部１０１０によるフレーム受信を検知すると、受信フレームのアドホックヘッダ３０２−１内のＫＩＮＤフィールドの値をチェックする（ステップＳ１３０１）。ＫＩＮＤフィールドの値は、図３で説明した値をとり得る。
【００９３】
上記ＫＩＮＤフィールド値のチェックにより、ステップＳ１３０２、Ｓ１３０３、Ｓ１３０４、Ｓ１３０５にて、受信フレームが、同期要求フレーム、ヘルスフレーム、削除通知フレーム、自ノード宛フレームの何れであるかが判定される。
【００９４】
そして、受信フレームが同期要求フレームである場合には、ステップＳ１３０２の判定がＹＥＳとなって、図１０のルーティング制御部１００３にて、同期要求によるＷａｉｔＮｏ．更新処理が実行される。この処理の詳細は、図１４のフローチャート、および図１５から図２３までの説明図を使って後述する。
【００９５】
受信フレームがヘルスフレームなら、ステップＳ１３０２の判定がＮＯ、Ｓ１３０３の判定がＹＥＳとなる。この結果、図１０のルーティング制御部１００３によって、ヘルス情報によるＷａｉｔＮｏ．更新処理が実行される。この処理の詳細は、図３３のフローチャート、および図３４から図４１までの説明図を使って後述する。
【００９６】
受信フレームが、削除通知フレームである場合には、ステップＳ１３０２およびＳ１３０３の判定がＮＯ、Ｓ１３０４の判定がＹＥＳとなる。この結果、図１０のルーティング制御部１００３によって、ＷａｉｔＮｏ．更新処理の第３の実施形態である、回線断発生時の削除通知によるＷａｉｔＮｏ．更新処理が実行される。この処理の詳細は、図４３のフローチャート、および図４４の説明図を使って後述する。
【００９７】
受信フレームが、自ノード宛てのフレームである場合には、ステップＳ１３０２，Ｓ１３０３、およびＳ１３０４の判定がＮＯ、Ｓ１３０５の判定がＹＥＳとなる。この結果、図１０のアドホックルーティング制御デバイス１００１によって、通常のフレーム受信処理が実行される。この処理では、前述したように、図１０のアドホックルーティング制御デバイス１００１内の受信フレーム制御部１０１０で受信されたフレームデータから取り出されたセンサー制御情報等は、ＣＰＵインタフェース１００７内のレジスタ１００８に保持される。その後、そのセンサー制御情報等は、アドホックルーティング制御デバイス１００１内のＣＰＵインタフェース１００７からＣＰＵ１００２に転送される。ＣＰＵ１００２は、ＦＰＧＡインタフェース１０１３で受信したセンサー制御情報等に基づいて、センサーインタフェース１０１５およびセンサー接続ポート１０１９を介して、指定されたセンサ装置を制御する。
【００９８】
受信フレームが、同期要求フレームでも、ヘルスフレームでも、削除通知フレームでも、自ノード宛てのフレームでもない場合には、ステップＳ１３０２，Ｓ１３０３，Ｓ１３０４，Ｓ１３０５の判定がＮＯとなる。この結果、図１０のルーティング制御部１００３によって、ルーティング処理が実行される。この処理の詳細は、図２４のＦＩＤテーブル１００６のデータ構成図、図２５、図２６のフローチャート、および図２７から図３２までの説明図を使って後述する。
【００９９】
なお、図１０の受信フレーム制御部１０１０が複数の有線アドホックネットワークポート１０１６からのフレーム受信を検知した場合には、アドホックルーティング制御デバイス１００１は、図１３に示されるフレーム受信処理を、若番ポートから順に処理する。
【０１００】
図１３のステップＳ１３０２，Ｓ１３０３，Ｓ１３０４の各判定がＹＥＳとなることにより実行される各ＷａｉｔＮｏ．更新処理は、図１０のルーティング制御部１００３に同時に実装されてもよいし、いずれか１つ以上のＷａｉｔＮｏ．更新処理が選択的に実装されてもよい。
【０１０１】
図１４は、図１２のステップＳ１３０２で受信フレームが同期要求フレームであると判定された場合に実行される同期要求によるＷａｉｔＮｏ．更新処理を示すフローチャートである。このフローチャートは、図１３の場合と同様に、図１０のアドホックルーティング制御デバイス１００１として構成されるＦＰＧＡの処理機能として実装される。あるいは、アドホックルーティング制御デバイス１００１が中央演算処理装置とメモリを含むプロセッサとして構成される場合には、中央演算処理装置がメモリに記憶された制御プログラムを実行する動作として実装される。以下、このフローチャートの処理について、説明する。
【０１０２】
まず、図１０のルーティング制御部１００３は、ＷａｉｔＮｏ．制御部１００４が管理する図１１に例示されるＷａｉｔＮｏ．テーブルにアクセスする。そして、ポートＰ１，Ｐ２，またはＰ３のＷａｉｔＮｏ．のうち、受信フレームが受信された受信ポートに対応するＷａｉｔＮｏ．を、受信フレームに設定されている送信元ＷａｉｔＮｏ．（図１２（ｃ）の１２０１）に更新する（ステップＳ１４０１）。
【０１０３】
これと共に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブルにおいてＷａｉｔＮｏ．を更新したポートに対応するタイマー値をリスタートさせる（ステップＳ１４０２）。これにより、該当するポートでは、新たに設定されたタイマー値に対応する時間分だけ、新たに同期要求フレームが受信されるか否かが監視されることになる（後述する図３８のステップＳ３８０２）。
【０１０４】
次に、ルーティング制御部１００３は、受信フレームが既に受信されたフレームであるか否かを判定する（ステップＳ１４０３）。この判定は、ルーティング制御部１００３が、従来と同様に、受信フレームに設定されているＳＲＣ  ＩＤおよびＦＩＤ（図１２（ｃ））と同じＳＲＣ  ＩＤおよびＦＩＤを有するエントリが、図１０のＦＩＤテーブル１００６に登録されているか否かを判定する処理として行なわれる。本実施形態のルーティング方式におけるＦＩＤテーブル１００６の構成については、後述するが（図２４）、ＳＲＣ  ＩＤとＦＩＤを含む構成は、従来と同じである。
【０１０５】
受信フレームが既に受信されたフレームでステップＳ１４０３の判定がＹＥＳなら、ルーティング制御部１００３は、同じ同期要求フレームについて重複して処理する必要はないため、受信フレームを破棄する（ステップＳ１４１１）。そして、ルーティング制御部１００３は、図１４の同期要求によるＷａｉｔＮｏ．更新処理を終了し、アドホックルーティング制御デバイス１００１によるフレーム受信の検知処理にもどる。
【０１０６】
受信フレームが初めて受信されたフレームでステップＳ１４０３の判定がＮＯなら、ルーティング制御部１００３は、受信フレーム中の送信元ＷａｉｔＮｏ．（図１２（ｃ）の１２０１）の値が、初期値（０ｘＦＦ）に等しいか否かを判定する（ステップＳ１４０４）。
【０１０７】
受信フレーム中の送信元ＷａｉｔＮｏ．の値が初期値に等しくステップＳ１４０４の判定がＹＥＳなら、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル内の自ノードＷａｉｔＮｏ．（図１１）を初期値（０ｘＦＦ）に更新する（ステップＳ１４０５）。その後、ルーティング制御部１００３は、後述するステップＳ１４０９の処理に移行する。
【０１０８】
受信フレーム中の送信元ＷａｉｔＮｏ．の値が初期値に等しくなくステップＳ１４０４の判定がＮＯなら、ルーティング制御部１００３は、次の処理を実行する。すなわち、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル内の自ノードＷａｉｔＮｏ．の値が受信フレーム中の送信元ＷａｉｔＮｏ．に＋１した値よりも大きいか否かを判定する（ステップＳ１４０６）。
【０１０９】
自ノードＷａｉｔＮｏ．の値が送信元ＷａｉｔＮｏ．＋１よりも大きくなくステップＳ１４０６の判定がＮＯなら、ルーティング制御部１００３は、ステップＳ１４１１の処理に移行し、その同期要求フレームをそのまま廃棄する。この状態は例えば、自ノードが送信した同期要求フレームが、次のセンサー中継ノード１０３で＋１されて、再び自ノードに戻ってきた場合に相当する。このような場合には、自ノードでは、その同期要求フレームは処理する必要がないため、ＷａｉｔＮｏ．テーブルは更新されずに廃棄される。
【０１１０】
自ノードＷａｉｔＮｏ．の値が送信元ＷａｉｔＮｏ．＋１よりも大きくステップＳ１４０６の判定がＹＥＳなら、ルーティング制御部１００３は、次の処理を実行する。すなわち、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル内の自ノードＷａｉｔＮｏ．（図１１）の値を、受信フレーム中の送信元ＷａｉｔＮｏ．に＋１した値に更新する（ステップＳ１４０７）。
【０１１１】
さらに、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル内のマスターＰｏｒｔ（図１１）の値を、受信フレームが受信された有線アドホックネットワークポート１０１６のポート番号に更新する（ステップＳ１４０８）。
【０１１２】
ステップＳ１４０８またはＳ１４０５でＷａｉｔＮｏ．テーブルの内容が更新された場合に、以下の制御動作が実行される。
すなわち、ルーティング制御部１００３からの制御によりフレーム処理部１００９が、同期要求フレーム中の送信元ＷａｉｔＮｏ．の値を、ＷａｉｔＮｏ．テーブル中の自ノードＷａｉｔＮｏ．の値に差し替える。そして、フレーム処理部１００９は、送信フレーム制御部１０１１を制御して、その同期要求フレームを、全ての有線アドホックネットワークポート１０１６から送信させる（ステップＳ１４０９）。
【０１１３】
これと共に、ルーティング制御部１００３からの制御によりフレーム処理部１００９は、送信フレーム制御部１０１１を制御して、基幹中継ノード１０２に向けて、同期要求応答フレームを送信させる（ステップＳ１４１０）。同期要求応答フレームは、図１２（ｄ）に示されるデータフォーマットを有する。この同期要求応答フレームにおいて、ＤＳＴ
ＩＤには、基幹中継ノード１０２のアドレスが設定される。ＳＲＣ  ＩＤには、自ノードのアドレスが設定される。また、ＭＡＣデータ３０２に、受信フレームに設定されていた送信元ＷａｉｔＮｏ．が送信先ＷａｉｔＮｏ．１２０１として設定される。これに加えて、同期要求応答フレームでは、ＭＡＣデータ３０２に、自ノードのＷａｉｔＮｏ．テーブル１００７に設定された自ノードＷａｉｔＮｏ．が２バイトの送信元ＷａｉｔＮｏ．として設定される。ルーティング制御部１００３は、図１０のＰＳテーブル１００５において、ＤＳＴ  ＩＤとして基幹中継ノード１０２のＤＳＴ  ＩＤが設定されたエントリ中のＰ１，Ｐ２，Ｐ３フィールドのうち、「使用状態」（図４）が設定されているフィールドを検出する。そして、ルーティング制御部１００３は、図１０の送信フレーム制御部１０１１に対して、上記検出したフィールドに対応する有線アドホックネットワークポート１０１６への同期要求応答フレームの出力を指示する。この処理により、図１の基幹中継ノード１０２は、各センサー中継ノード１０３から同期要求応答フレームを受け取ることにより、各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルに設定された自ノードＷａｉｔＮｏ．を把握することができる。基幹中継ノード１０２は、特には図示しないテーブルに、各センサー中継ノード１０３の自ノードＷａｉｔＮｏ．を保持して管理する。
【０１１４】
その後、ルーティング制御部１００３は、図１４の同期要求によるＷａｉｔＮｏ．更新処理を終了し、アドホックルーティング制御デバイス１００１によるフレーム受信の検知処理にもどる。
【０１１５】
以上説明した同期要求によるＷａｉｔＮｏ．更新処理により、図１において、基幹中継ノード１０２から送信されたＷａｉｔＮｏ．が、センサー中継ノード群１００中の各センサー中継ノード１０３に順次伝達されてゆく。このとき、各センサー中継ノード１０３において、同期要求フレーム中の送信元ＷａｉｔＮｏ．（図１２（ｃ）の１２０１）の値が＋１ずつ増やされてゆく。そして、その増やされたＷａｉｔＮｏ．が、各センサー中継ノード１０３の図１０に示されるＷａｉｔＮｏ．制御部１００４内のＷａｉｔＮｏ．テーブルに、自ノードＷａｉｔＮｏ．として設定される。さらに、その増やされたＷａｉｔＮｏ．を有する同期要求フレームが、隣接するセンサー中継ノード１０３に転送されてゆく。このようにして、図１の各センサー中継ノード１０３には、実質的に、基幹中継ノード１０２からのホップ数に対応するＷａｉｔＮｏ．値が、自ノードＷａｉｔＮｏ．として設定される。
【０１１６】
図１５から図２３は、上述した同期要求によるＷａｉｔＮｏ．更新処理の具体例を示す説明図である。以下、これらの説明図を使って、同期要求によるＷａｉｔＮｏ．更新処理の具体的処理について説明する。
【０１１７】
まず、図１５において、基幹中継ノード１０２は、送信元ＷａｉｔＮｏ．値として０ｘ００（ホップ数＝０に対応する）が設定された同期要求フレームを送信する。この同期要求フレームは、図１２（ｃ）に示されるデータフォーマットを有する。そして、ＤＳＴ  ＩＤにはオール“０”が設定され、ＳＲＣ  ＩＤには基幹中継ノード１０２のアドレスが設定される。また、ＫＩＮＤフィールドには、同期要求コマンド（時刻同期コマンド）を示す値０ｘ０００６が設定される（図３）。そして、送信元ＷａｉｔＮｏ．に、上記値０ｘ００が設定される。
【０１１８】
この同期要求フレームは、まず基幹中継ノード１０２に接続されているＩＤ＝１を有する最初のセンサー中継ノード１０３で受信される。なお、このＩＤ＝１は、センサー中継ノード１０３を表す模式的なアドレス値である。他のＩＤ＝２から２０についても同様である。この結果、ＩＤ＝１のセンサー中継ノード１０３のＷａｉｔＮｏ．制御部１００４（図１０）内のＷａｉｔＮｏ．テーブル（図１１）において、自ノードＷａｉｔＮｏ．として、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．に＋１した値０ｘ０１が設定される。これは、基幹中継ノード１０２からＩＤ＝１のセンサー中継ノード１０３までの最短ホップ数が１であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１１９】
また、同期要求フレームの受信には、図１４のステップＳ１４０１が実行される。これにより、ＩＤ＝１のセンサー中継ノード１０３のＷａｉｔＮｏ．テーブル（図１１）中のＰ１，Ｐ２，Ｐ３のＷａｉｔＮｏ．のうち、同期要求フレームの受信ポートに対応するＷａｉｔＮｏ．が、同期要求フレーム中の送信元ＷａｉｔＮｏ．＝０ｘ００に更新される。この結果、ホップ数が減る方向に隣接する基幹中継ノード１０２に設定された自ノードＷａｉｔＮｏ．を、ＷａｉｔＮｏ．テーブル上で把握することができる。
【０１２０】
続いて、ＩＤ＝１のセンサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０１が新たに送信元ＷａｉｔＮｏ．（図１２（ｃ）の１２０１）として設定された同期要求フレームが出力される。この状態は、図１６に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１２１】
また、図１６に示されるように、ＩＤ＝１のセンサー中継ノード１０３から基幹中継ノード１０２へは、自ノードＷａｉｔＮｏ．＝０ｘ０１を送信元ＷａｉｔＮｏ．（図１２（ｄ））として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝１のセンサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０１に設定されたことを認識する。
【０１２２】
次に、ＩＤ＝１のセンサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０１を有する同期要求フレームは、ＩＤ＝２とＩＤ＝５の各センサー中継ノード１０３で受信される。この結果、ＩＤ＝２とＩＤ＝５の各センサー中継ノード１０３のＷａｉｔＮｏ．制御部１００４（図１０）内のＷａｉｔＮｏ．テーブル（図１１）において、自ノードＷａｉｔＮｏ．として、次のような値が設定される。すなわち、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．＝０ｘ０１に＋１した値０ｘ０２が設定される。これは、基幹中継ノード１０２からＩＤ＝２とＩＤ＝５の各センサー中継ノード１０３までの最短ホップ数が２であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１２３】
続いて、ＩＤ＝２とＩＤ＝５の各センサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０２が新たに送信元ＷａｉｔＮｏ．として設定された同期要求フレームが出力される。この状態は、図１７に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１２４】
また、図１７に示されるように、ＩＤ＝２とＩＤ＝５の各センサー中継ノード１０３から基幹中継ノード１０２に向けて、自ノードＷａｉｔＮｏ．＝０ｘ０２を送信元ＷａｉｔＮｏ．として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝２とＩＤ＝５の各センサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０２に設定されたことを認識する。
【０１２５】
なお、ＩＤ＝２とＩＤ＝５の各センサー中継ノード１０３から新たに送信された送信元ＷａｉｔＮｏ．＝０ｘ０２が設定された各同期要求フレームは、ＩＤ＝１のセンサー中継ノード１０３にも届く。しかしこの場合、ＩＤ＝１の自ノードＷａｉｔＮｏ．＝０ｘ０１は受信された各同期要求フレームの送信元ＷａｉｔＮｏ．＝０ｘ０２となるため、図１４のステップＳ１４０６の判定がＮＯとなって、その同期要求フレームはステップＳ１４１１で廃棄される。ただし、上記各同期要求フレームの受信時に図１４のステップＳ１４０１が実行される。これにより、ＷａｉｔＮｏ．テーブル（図１１）中のＰ１，Ｐ２，Ｐ３のＷａｉｔＮｏ．のうち、各同期要求フレームが受信された受信ポートに対応するＷａｉｔＮｏ．が、同期要求フレーム中の送信元ＷａｉｔＮｏ．に更新される。この結果、基幹中継ノード１０２からみてＷａｉｔＮｏ．が増える方向に隣接するセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．を、ＷａｉｔＮｏ．テーブル上で検知することができる。
【０１２６】
次に、ＩＤ＝２とＩＤ＝５のセンサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０２を有する同期要求フレームは、ＩＤ＝３，６，９の各センサー中継ノード１０３で受信される。この結果、ＩＤ＝３，６，９の各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．として、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．＝０ｘ０２に＋１した値０ｘ０３が設定される。これは、基幹中継ノード１０２からＩＤ＝３，６，９の各センサー中継ノード１０３までの最短ホップ数が３であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１２７】
また、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が減る方向に隣接するセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として検知できる。
【０１２８】
続いて、ＩＤ＝３，６，９の各センサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０３が新たに送信元ＷａｉｔＮｏ．として設定された同期要求フレームが出力される。この状態は、図１８に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１２９】
また、図１８に示されるように、ＩＤ＝３，６，９の各センサー中継ノード１０３から基幹中継ノード１０２に向けて、自ノードＷａｉｔＮｏ．＝０ｘ０３を送信元ＷａｉｔＮｏ．として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝３，６，９の各センサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０３に設定されたことを認識する。
【０１３０】
次に、ＩＤ＝３，６，９の各センサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０３を有する同期要求フレームは、ＩＤ＝４，７，１０，１３の各センサー中継ノード１０３で受信される。この結果、ＩＤ＝４，７，１０，１３の各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．として、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．＝０ｘ０３に＋１した値０ｘ０４が設定される。これは、基幹中継ノード１０２からＩＤ＝４，７，１０，１３の各センサー中継ノード１０３までの最短ホップ数が４であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１３１】
なお、ＩＤ＝２，５の各センサー中継ノード１０３にも上記同期要求フレームが戻されるが、前述したように、これらは各ノードにて廃棄される。ただし、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が増える方向に隣接する各センサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として検知できる。
【０１３２】
続いて、ＩＤ＝４，７，１０，１３の各センサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０４が新たに送信元ＷａｉｔＮｏ．として設定された同期要求フレームが出力される。この状態は、図１９に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１３３】
また、図１９には図示しないが、ＩＤ＝４，７，１０，１３の各センサー中継ノード１０３から基幹中継ノード１０２に向けて、自ノードＷａｉｔＮｏ．＝０ｘ０４を送信元ＷａｉｔＮｏ．として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝４，７，１０，１３の各センサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０４に設定されたことを認識する。
【０１３４】
次に、ＩＤ＝４，７，１０，１３の各センサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０４を有する同期要求フレームは、ＩＤ＝８，１１，１４，１７の各センサー中継ノード１０３で受信される。この結果、ＩＤ＝８，１１，１４，１７の各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．として、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．＝０ｘ０４に＋１した値０ｘ０５が設定される。これは、基幹中継ノード１０２からＩＤ＝８，１１，１４，１７の各センサー中継ノード１０３までの最短ホップ数が５であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１３５】
また、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が減る方向に隣接するセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として検知できる。
【０１３６】
なお、ＩＤ＝３，６，９の各センサー中継ノード１０３にも上記同期要求フレームが戻されるが、前述したように、これらは各ノードにて廃棄される。ただし、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が増える方向に隣接する各センサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として検知できる。
【０１３７】
続いて、ＩＤ＝８，１１，１４，１７の各センサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０５が新たに送信元ＷａｉｔＮｏ．として設定された同期要求フレームが出力される。この状態は、図２０に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１３８】
また、図２０には図示しないが、ＩＤ＝８，１１，１４，１７の各センサー中継ノード１０３から基幹中継ノード１０２に向けて、自ノードＷａｉｔＮｏ．＝０ｘ０５を送信元ＷａｉｔＮｏ．として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝８，１１，１４，１７の各センサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０５に設定されたことを認識する。
【０１３９】
次に、ＩＤ＝８，１１，１４，１７の各センサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０５を有する同期要求フレームは、ＩＤ＝１２，１５，１８の各センサー中継ノード１０３で受信される。この結果、ＩＤ＝１２，１５，１８の各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．として、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．＝０ｘ０５に＋１した値０ｘ０６が設定される。これは、基幹中継ノード１０２からＩＤ＝１２，１５，１８の各センサー中継ノード１０３までの最短ホップ数が６であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１４０】
また、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が減る方向に隣接するセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として取得される。
【０１４１】
なお、ＩＤ＝７，１０，１３の各センサー中継ノード１０３にも上記同期要求フレームが戻されるが、前述したように、これらは各ノードにて廃棄される。ただし、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が増える方向に隣接する各センサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として把握できる。
【０１４２】
続いて、ＩＤ＝１２，１５，１８の各センサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０６が新たに送信元ＷａｉｔＮｏ．として設定された同期要求フレームが出力される。この状態は、図２１に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１４３】
また、図２１には図示しないが、ＩＤ＝１２，１５，１８の各センサー中継ノード１０３から基幹中継ノード１０２に向けて、自ノードＷａｉｔＮｏ．＝０ｘ０６を送信元ＷａｉｔＮｏ．として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝１２，１５，１８の各センサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０６に設定されたことを認識する。
【０１４４】
次に、ＩＤ＝１２，１５，１８の各センサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０６を有する同期要求フレームは、ＩＤ＝１６，１９の各センサー中継ノード１０３で受信される。この結果、ＩＤ＝１６，１９の各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．として、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．＝０ｘ０６に＋１した値０ｘ０７が設定される。これは、基幹中継ノード１０２からＩＤ＝１６，１９の各センサー中継ノード１０３までの最短ホップ数が７であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１４５】
また、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が減る方向に隣接するセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として取得される。
【０１４６】
なお、ＩＤ＝８，１１，１４の各センサー中継ノード１０３にも上記同期要求フレームが戻されるが、前述したように、これらは各ノードにて廃棄される。ただし、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が増える方向に隣接する各センサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として把握できる。
【０１４７】
続いて、ＩＤ＝１６，１９の各センサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０７が新たに送信元ＷａｉｔＮｏ．として設定された同期要求フレームが出力される。この状態は、図２２に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１４８】
また、図２２には図示しないが、ＩＤ＝１６，１９の各センサー中継ノード１０３から基幹中継ノード１０２に向けて、自ノードＷａｉｔＮｏ．＝０ｘ０７を送信元ＷａｉｔＮｏ．として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝１６，１９の各センサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０７に設定されたことを認識する。
【０１４９】
次に、ＩＤ＝１６，１９の各センサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０７を有する同期要求フレームは、ＩＤ＝２０のセンサー中継ノード１０３で受信される。この結果、ＩＤ＝２０のセンサー中継ノード１０３のＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．として、同期要求フレームに設定されている送信元ＷａｉｔＮｏ．＝０ｘ０７に＋１した値０ｘ０８が設定される。これは、基幹中継ノード１０２からＩＤ＝２０のセンサー中継ノード１０３までの最短ホップ数が８であることに対応している。この処理は、図１４のステップＳ１４０７によって行なわれる。
【０１５０】
また、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が減る方向に隣接するセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として取得される。
【０１５１】
なお、ＩＤ＝１２，１５，１８の各センサー中継ノード１０３にも上記同期要求フレームが戻されるが、前述したように、これらは各ノードにて廃棄される。ただし、図１４のステップＳ１４０１の実行により、基幹中継ノード１０２からみてＷａｉｔＮｏ．が増える方向に隣接する各センサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として検知できる。
【０１５２】
最後に、ＩＤ＝２０のセンサー中継ノード１０３内の全ての有線アドホックネットワークポート１０１６に、自ノードＷａｉｔＮｏ．の値０ｘ０８が新たに送信元ＷａｉｔＮｏ．として設定された同期要求フレームが出力される。この状態は、図２２に示される。この処理は、図１４のステップＳ１４０９によって行なわれる。
【０１５３】
また、図２２には図示しないが、ＩＤ＝２０のセンサー中継ノード１０３から基幹中継ノード１０２に向けて、自ノードＷａｉｔＮｏ．＝０ｘ０８を送信元ＷａｉｔＮｏ．として有する同期要求応答フレームが返信される。この処理は、図１４のステップＳ１４１０によって行なわれる。これにより、基幹中継ノード１０２は、ＩＤ＝２０のセンサー中継ノード１０３のＷａｉｔＮｏ．が０ｘ０８に設定されたことを認識する。
【０１５４】
ＩＤ＝２０のセンサー中継ノード１０３の各ポートから送信された送信元ＷａｉｔＮｏ．＝０ｘ０８を有する同期要求フレームは、ＩＤ＝１６のセンサー中継ノード１０３においてのみ受信されるが、前述したように、この同期要求フレームは廃棄される。ただし、図１４のステップＳ１４０１が実行される。これにより、基幹中継ノード１０２からみてＷａｉｔＮｏ．が増える方向に隣接するＩＤ＝２０のセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルの該当ポートのＷａｉｔＮｏ．として検知できる。
【０１５５】
以上のようにして、基幹中継ノード１０２から送信された送信元ＷａｉｔＮｏ．＝０ｘ００を有する同期要求フレームが、センサー中継ノード群１００中の各センサー中継ノード１０３に順次伝達されてゆく。このとき、各センサー中継ノード１０３において、同期要求フレーム中の送信元ＷａｉｔＮｏ．（図１２（ｃ）の１２０１）の値が＋１ずつ増やされてゆく。そして、その増やされたＷａｉｔＮｏ．が、各センサー中継ノード１０３の図１０に示されるＷａｉｔＮｏ．制御部１００４内のＷａｉｔＮｏ．テーブルに、自ノードＷａｉｔＮｏ．として設定される。さらに、その増やされたＷａｉｔＮｏ．を有する同期要求フレームが、隣接するセンサー中継ノード１０３に転送される。
【０１５６】
この結果、図２３に示されるように、各センサー中継ノード１０３のＷａｉｔＮｏ．テーブル（図１１）には、実質的に、基幹中継ノード１０２からの最短ホップ数に対応するＷａｉｔＮｏ．値が、自ノードＷａｉｔＮｏ．として設定される。
【０１５７】
また、図１４のステップ１４０１の実行により、各センサー中継ノード１０３の各有線アドホックネットワークポート１０１６毎に、それらが接続される隣接するセンサー中継ノード１０３に設定された自ノードＷａｉｔＮｏ．を検知することができる。そして、これらの隣接ノードの自ノードＷａｉｔＮｏ．が、各センサー中継ノード１０３のＷａｉｔＮｏ．テーブル（図１１）で管理される。
【０１５８】
次に、ルーティング処理について説明する。
受信フレームが、同期要求フレームでも、ヘルスフレームでも、削除通知フレームでも、自ノード宛てのフレームでもない場合には、図１３のステップＳ１３０２，Ｓ１３０３，Ｓ１３０４，Ｓ１３０５の判定がＮＯとなる。この結果、図１０のルーティング制御部１００３によって、ルーティング処理が実行される。この処理について、図２４のＦＩＤテーブル１００６のデータ構成図、図２５、図２６のフローチャート、および図２７から図３２までの説明図を使って説明する。
【０１５９】
まず、図２４は、本実施形態のルーティング方式におけるＦＩＤテーブル１００６（図１０）のデータ構成図である。図２４において、図５に示した通常考えられるルーティング方式におけるＦＩＤテーブルのデータ構成の場合と同じデータ構成部分には同じ番号を付してある。
【０１６０】
図２４のデータ構成が図５のデータ構成と異なる部分は、Ｌｏｏｐフラグが付加されている点である。このＬｏｏｐフラグは、それが含まれるエントリが宛先とする経路は、自ノードの接続先には無いことを示すフラグである。このフラグが“ＯＮ”状態を示しているときには、このエントリが宛先とする経路は、自ノードの接続先には無いことを示す。このフラグが“ＯＦＦ”状態を示しているときには、このエントリが宛先とする経路は、自ノードの接続先に存在する可能性が有ることを示す。
【０１６１】
上述のＬｏｏｐフラグは、後述するＷａｉｔＮｏ．によるルーティング制御と組み合わせられることにより、最短ホップ数の経路が選択されるようにルーティング処理を実行するのに使用される。
【０１６２】
図２５及び図２６は、図１３のステップＳ１３０５の判定がＮＯとなる結果実行されるルーティング処理すなわち、中継ノード１０３にＷａｉｔＮｏ．付与が完了し、そのＷａｉｔＮｏ．に基づいて、ループを回避しながらルーティングする処理を示すフローチャートである。このフローチャートは、図１３の場合と同様に、図１０のアドホックルーティング制御デバイス１００１として行なわれるＦＰＧＡの処理機能として実装される。あるいは、アドホックルーティング制御デバイス１００１が中央演算処理装置とメモリを含むプロセッサとして行なわれる場合には、中央演算処理装置がメモリに記憶された制御プログラムを実行する動作として実装される。以下、このフローチャートの処理について、説明する。
【０１６３】
まず、図２５において、ルーティング制御部１００３は、受信フレームから、ＳＲＣ  ＩＤとＦＩＤを取り出す（図１２（ａ））。そして、ルーティング制御部１００３は、ＳＲＣ  ＩＤとＦＩＤとによって、ＦＩＤテーブル１００６（図１０、図２４）を検索する。これにより、ルーティング制御部１００３は、ＦＩＤテーブル１００６上で上記ＳＲＣ
ＩＤとＦＩＤが一致するエントリが登録されているか否かを判定する（ステップＳ２５０１）。
【０１６４】
ＦＩＤテーブル１００６にもし該当するエントリが登録されておらずステップＳ２５０１の判定がＮＯならば、ルーティング制御部１００３は、ＰＳテーブル１００５を検索する。より具体的には、ルーティング制御部１００３はまず、受信フレームから、ＤＳＴ  ＩＤを取り出す（図１２（ａ））。そして、ルーティング制御部１００３は、ＤＳＴ  ＩＤによって、ＰＳテーブル１００５（図１０、図４）を検索する。これにより、ルーティング制御部１００３は、ＰＳテーブル１００５上で上記ＤＳＴ  ＩＤが一致するエントリが登録されているか否かを判定する（ステップＳ２５０２）。
【０１６５】
ＰＳテーブル１００５上に該当するエントリが存在しステップＳ２５０２の判定がＹＥＳならば、ルーティング制御部１００３は、次の処理を実行する。すなわち、ルーティング制御部１００３は、受信フレームから、ＳＲＣ  ＩＤとＦＩＤを取り出す。そして、ルーティング制御部１００３は、ＦＩＤテーブル１００６上で、そのＳＲＣ  ＩＤとＦＩＤを含むエントリを生成する。また、ルーティング制御部１００３は、ＰＳテーブル１００５上の該当するエントリから、Ｐ１，Ｐ２，Ｐ３フィールドのうち「使用状態」が登録されているポート番号を抽出する。そして、ルーティング制御部１００３は、ＦＩＤテーブル１００６上で生成したエントリのＰ１，Ｐ２，Ｐ３フィールドのうち、上記ポート番号に対応するフィールドに「送信中ポート」状態を設定する（以上、ステップＳ２５１２）。
【０１６６】
その後、ルーティング制御部１００３は、図１０の送信フレーム制御部１０１１に、上記ポート番号に対応する有線アドホックネットワークポート１０１６への送信を指示する。これと共に、ルーティング制御部１００３は、受信フレームを図１０のフレーム処理部１００９に引き渡す。フレーム処理部１００９は、送信フレーム制御部１０１１を制御して、上記受信フレームを上記有線アドホックネットワークポート１０１６へ出力させる（ステップＳ２５１３）。
【０１６７】
ＰＳテーブル１００５上に該当するエントリが存在せずステップＳ２５０２の判定がＮＯならば、ルーティング制御部１００３は、次の処理を実行する。すなわち、ルーティング制御部１００３は、送信フレーム制御部１０１１に問い合わせて、受信フレームを受信したポート以外に、リンク断とはなっていない有線アドホックネットワークポート１０１６があるか否かを判定する（ステップＳ２５０８）。
【０１６８】
リンク断でないポートがありステップＳ２５０８の判定がＹＥＳなら、ルーティング制御部１００３は、受信フレームに設定されている送信先ＷａｉｔＮｏ．（図１２（ａ）の１２０１）が、初期値（０ｘＦＦ）であるか否かを判定する（ステップＳ２５０９）。
【０１６９】
受信フレームの送信先ＷａｉｔＮｏ．が初期値ではなくステップＳ２５０９の判定がＮＯなら、ルーティング制御部１００３は、図２６のフローチャートの処理を実行する。この処理については、後述する。
【０１７０】
受信フレームの送信先ＷａｉｔＮｏ．が初期値でステップＳ２５０９の判定がＹＥＳなら、ルーティング制御部１００３は、ＷａｉｔＮｏ．を用いたルーティング処理は実行せずに、通常考えられるルーティング処理を実行する。すなわち、ルーティング制御部１００３は、ステップＳ２５０８で判定されたポートが複数ある場合には、若番（若しくは老番等と条件を統一させる）のポートを選択する（ステップＳ２５１０）。次に、ルーティング制御部１００３はまず、受信フレームからＤＳＴ  ＩＤ（図１２（ａ））を抽出する。続いて、図１０のＰＳテーブル１００５上で、上記ＤＳＴ  ＩＤが設定されたエントリを生成する。そして、ルーティング制御部１００３は、そのエントリのＰ１，Ｐ２，Ｐ３フィールドのうち、ステップＳ２５０８およびＳ２５１０で選択された１つのポートに対応するフィールドに「使用中状態」を設定する（ステップＳ２５１１）。さらに、ルーティング制御部１００３は、受信フレームから、ＳＲＣ  ＩＤとＦＩＤを取り出す。そして、ルーティング制御部１００３は、ＦＩＤテーブル１００６上で、そのＳＲＣ  ＩＤとＦＩＤを含むエントリを生成する。また、ルーティング制御部１００３は、ＦＩＤテーブル１００６上で生成したエントリのＰ１，Ｐ２，Ｐ３フィールドのうち、上記選択されたポートに対応するフィールドに「送信中ポート」状態を設定する（ステップＳ２５１２）。
【０１７１】
リンク断でないポートがなくステップＳ２５０８の判定がＮＯなら、ルーティング制御部１００３は、受信フレームを、それが受信されたポートに送信して戻す（ステップＳ２５１４）。
【０１７２】
一方、ＦＩＤテーブル１００６にもし該当するエントリが登録されておりステップＳ２５０１の判定がＹＥＳなら、一度受信して送信したフレームが、再び戻ってきたということになる。この場合、ルーティング制御部１００３は、ＦＩＤテーブル１００６上の該当するエントリにおいて、Ｐ１，Ｐ２，Ｐ３フィールドのうち「送信中ポート」状態となっているフィールドに「ループポート」状態を設定する（ステップＳ２５０２）（図２４）。
【０１７３】
続いて、ルーティング制御部１００３は、受信フレームからＤＳＴ  ＩＤ（図１２（ａ））を抽出する。次に、ルーティング制御部１００３は、ＰＳテーブル１００５上で上記ＤＳＴ  ＩＤと同じＤＳＴ  ＩＤが登録されているエントリを検索する。そして、ルーティング制御部１００３は、そのエントリのＰ１，Ｐ２，Ｐ３フィールドのうち「使用状態」となっているフィールドに「ループ状態」を設定する（ステップＳ２５０３）（図４）。
【０１７４】
次に、ルーティング制御部１００３は、ＰＳテーブル１００５上の該当するエントリを検索することにより、Ｐ１，Ｐ２，Ｐ３フィールドのうち「未使用状態」が設定されているフィールドに対応する未使用ポートがあるか否かを判定する（ステップＳ２５０４）。
【０１７５】
未使用ポートがあってステップＳ２５０４の判定がＹＥＳならば、ルーティング制御部１００３は、その未使用ポートを選択して送信処理を行うための、前述した、ステップＳ２５０９〜Ｓ２５１２と、必要な場合に図２６のフローチャートの処理を実行する。
【０１７６】
一方、未使用ポートがなくステップＳ２５０４の判定がＮＯならば、ルーティング制御部１００３は、次の制御を実行する。すなわち、ルーティング制御部１００３は、ＦＩＤテーブル１００６から、受信フレームのＳＲＣ  ＩＤ（図１２（ａ））と一致するＳＲＣ
ＩＤを有するエントリのＲｘＰｏｒｔ（受信ポート）（図２４）を検出する（ステップＳ２５０５）。そして、ルーティング制御部１００３は、抽出された最初の受信ポートに、受信フレームを戻して送信する（ステップＳ２５０６）。
【０１７７】
図２６は、ループ状態である場合も含めて新たなポートを選択し受信フレームを中継するときに、受信フレームの送信先ＷａｉｔＮｏ．（図１２（ａ）の１２０１）として、初期値（０ｘＦＦ）以外の値が設定されている場合の制御を示すフローチャートである。
【０１７８】
まず、基幹中継ノード１０２は、前述した図１４のフローチャートに基づいて図２３に例示したように各センサー中継ノード１０３にＷａｉｔＮｏ．が設定されているときには、次のような制御動作を実行する。すなわち、基幹中継ノード１０２は、センサー中継ノード群１００内の目的とするセンサー中継ノード１０３にデータを送信するときに、目的のセンサー中継ノード１０３から通知され保持しているＷａｉｔＮｏ．を認識する。そして、基幹中継ノード１０２は、そのＷａｉｔＮｏ．が送信先ＷａｉｔＮｏ．（図１２（ａ）の１２０１）として設定され、ＤＳＴ  ＩＤとして目的のセンサー中継ノード１０３のアドレスが設定されたフレームを生成して送信する。
【０１７９】
この場合には、各センサー中継ノード１０３のルーティング制御部１００３でのルーティング処理において、新たなポートの選択が必要となった場合に、図２５のステップＳ２５０９の判定がＮＯとなる。この結果、図２６のフローチャートの制御処理が実行される。
【０１８０】
図２６のフローチャートのルーティング処理アルゴリズムは、以下の通りである。
【０１８１】
（１）受信フレームの送信先ＷａｉｔＮｏ．＞自ノードＷａｉｔＮｏ．
自ノードＷａｉｔＮｏ．よりも老番のＷａｉｔＮｏ．が設定されている
未使用ポートを選択して、受信フレームを送信。
該当するポートが無い場合には、ＦＩＤテーブル１００６に
Ｌｏｏｐフラグを設定して受信ポートに返送
【０１８２】
（２）受信フレームの送信先ＷａｉｔＮｏ．＜自ノードＷａｉｔＮｏ．
自ノードＷａｉｔＮｏ．よりも若番のＷａｉｔＮｏ．が設定されている
未使用ポートを選択して、受信フレームを送信。
該当するポートが無い場合には、ＦＩＤテーブル１００６に
Ｌｏｏｐフラグを設定して受信ポートに返送
【０１８３】
（３）受信フレームの送信先ＷａｉｔＮｏ．＝自ノードＷａｉｔＮｏ．
自ノードＩＤと一致すれば受信する。自ノードＩＤと一致しない場合は
ＦＩＤテーブル１００６にＬｏｏｐフラグを設定して受信ポートに返送
【０１８４】
より具体的には、以下の通りである。
まず、ルーティング制御部１００３は、受信フレーム内の送信先ＷａｉｔＮｏ．が、ＷａｉｔＮｏ．制御部１００４内のＷａｉｔＮｏ．テーブルに設定されている自ノードＷａｉｔＮｏ．（図１１）よりも大きいか否かを判定する（ステップＳ２６０１）。これは、上述の（１）の条件判断に対応する。
【０１８５】
ステップＳ２６０１の判定がＹＥＳなら、ルーティング制御部１００３は、現在未使用となっているポートに対応するＷａｉｔＮｏ．を、ＷａｉｔＮｏ．テーブル（図１１）から抽出する。そして、ルーティング制御部１００３は、上記未使用ポートのＷａｉｔＮｏ．が上記自ノードＷａｉｔＮｏ．よりも大きいか否かを判定する（ステップＳ２６０２）。
【０１８６】
ステップＳ２６０２の判定がＹＥＳの場合には、ルーティング制御部１００３は、次の制御を実行する。すなわち、ルーティング制御部１００３は、自ノードＷａｉｔＮｏ．よりも老番のＷａｉｔＮｏ．が設定されている上記未使用ポートを選択して送信処理を行うための、前述した図２５のステップＳ２５１０〜Ｓ２５１２の処理を実行する。
ステップＳ２６０２の判定がＮＯの場合には、ルーティング制御部１００３は、ＦＩＤテーブル１００６のＬｏｏｐフラグが“ＯＮ”となっているか否かを判定する（ステップＳ２６０５）。
【０１８７】
Ｌｏｏｐフラグが“ＯＮ”でステップＳ２６０５の判定がＹＥＳならば、受信フレームが送信されるべきセンサー中継ノード１０３は、自ノードの接続先には存在しない。このため、ルーティング制御部１００３は、受信フレームを、それが受信されたポートに返送する（ステップＳ２６０６）。
【０１８８】
一方、Ｌｏｏｐフラグが“ＯＦＦ”でステップＳ２６０５の判定がＮＯならば、ルーティング制御部１００３は、ＦＩＤテーブル１００６のＬｏｏｐフラグを“ＯＮ”にする（ステップＳ２６０７）。その後、ルーティング制御部１００３は、ＦＩＤテーブル１００６から、受信フレームのＳＲＣ  ＩＤ（図１２（ａ））と一致するＳＲＣ  ＩＤを有するエントリのＲｘＰｏｒｔ（受信ポート）（図２４）を検出する（ステップＳ２６０８）。そして、ルーティング制御部１００３は、抽出された最初の受信ポートに、受信フレームを戻して送信する（ステップＳ２６０８）。
【０１８９】
次に、ステップＳ２６０１の判定がＮＯの場合には、ルーティング制御部１００３は、受信フレーム内の送信先ＷａｉｔＮｏ．が、ＷａｉｔＮｏ．テーブルに設定されている自ノードＷａｉｔＮｏ．（図１１）よりも小さいか否かを判定する（ステップＳ２６０３）。これは、上述の（２）の条件判断に対応する。
【０１９０】
ステップＳ２６０３の判定がＹＥＳなら、ルーティング制御部１００３は、現在未使用となっているポートに対応するＷａｉｔＮｏ．を、ＷａｉｔＮｏ．テーブル（図１１）から抽出する。そして、ルーティング制御部１００３は、上記未使用ポートのＷａｉｔＮｏ．が上記自ノードＷａｉｔＮｏ．よりも小さいか否かを判定する（ステップＳ２６０４）。
【０１９１】
ステップＳ２６０４の判定がＹＥＳの場合には、ルーティング制御部１００３は、次の制御を実行する。すなわち、ルーティング制御部１００３は、自ノードＷａｉｔＮｏ．よりも若番のＷａｉｔＮｏ．が設定されている上記未使用ポートを選択して送信処理を行うための、前述した図２５のステップＳ２５１０〜Ｓ２５１２の処理を実行する。
【０１９２】
ステップＳ２６０４の判定がＮＯの場合には、ルーティング制御部１００３は、ＦＩＤテーブル１００６のＬｏｏｐフラグを判定した上で、受信フレームをそれに対応する受信ポートに返送するためのステップＳ２６０５〜Ｓ２６０９の処理を実行する。
【０１９３】
また、ステップＳ２６０３の判定がＮＯの場合、すなわち受信フレーム内の送信先ＷａｉｔＮｏ．と自ノードＷａｉｔＮｏ．が等しい場合は、前述した（３）の条件に対応する。この場合にも、ルーティング制御部１００３は、ＦＩＤテーブル１００６のＬｏｏｐフラグを判定した上で、受信フレームをそれに対応する受信ポートに返送するためのステップＳ２６０５〜Ｓ２６０９の処理を実行する。
【０１９４】
以上説明した図２５および図２６のフローチャートで示されるルーティング処理により、ルーティング制御部１００３は、次のような制御を実行することになる。すなわち、ルーティング制御部１００３は、受信フレーム内の送信先ＷａｉｔＮｏ．と、自ノードのＷａｉｔＮｏ．テーブルに登録されている自ノードＷａｉｔＮｏ．とポート毎の接続先ノードのＷａｉｔＮｏ．とに基づいて、最短ホップ数の経路選択が可能となる。
【０１９５】
図２７から図２９は、上述のルーティング処理の具体例の説明図である。なお、図２７から図２９に示される構成は、図１に示されるシステム構成を基本としている。
まず、基幹中継ノード１０２は、各センサー中継ノード１０３のＷａｉｔＮｏ．を把握している（図１４のステップＳ１４１０）。そして、基幹中継ノード１０２は、ＩＤ＝２０のセンサー中継ノード１０３にフレームを送信する場合、フレーム内に送信先ＷａｉｔＮｏ．（図１２（ａ）の１２０１）＝０ｘ０８を組み込んで送信する。０ｘ０８は、前述した図１４のフローチャートで示される同期要求によるＷａｉｔＮｏ．更新処理により、ＩＤ＝２０のセンサー中継ノード１０３に設定されたＷａｉｔＮｏ．である。
【０１９６】
図中、各センサー中継ノード１０３に接続される通信ラインの入力部または出力部に表示される括弧付き数字、［１］［２］［３］等は、各センサー中継ノード１０３におけるポート番号を示す。各ポート番号に並んで表示される数字０１〜０８等は、ＷａｉｔＮｏ．テーブル（図１１）に登録されている各ポート番号が示すポートのＷａｉｔＮｏ．を示す。Ｓ１，Ｓ２，Ｓ３，・・・等は、処理順を示す。
【０１９７】
図２７において、Ｓ１からＳ４までは、ＩＤ＝１，５，９，１３の各センサー中継ノード１０３では、老番ＷａｉｔＮｏ．のポートが選択されて、受信フレームが転送される。この処理は、図２６のステップＳ２６０２の判定がＹＥＳとなる制御で行なわれる。
【０１９８】
ＩＤ＝１７のセンサー中継ノード１０３では、行き先が無いため、受信フレームは、ＩＤ＝１３のセンサー中継ノード１０３へ戻される（Ｓ５のＬｏｏｐ１の表記）。このノードでは、別の老番ＷａｉｔＮｏ．のポートがあるので、受信フレームはＩＤ＝１４のセンサー中継ノード１０３に送信される（Ｓ６）。この処理は、図２５のＳ２５０１→Ｓ２５０２→Ｓ２５０３→Ｓ２５０４→Ｓ２５０９→図２６のＳ２６０１→Ｓ２６０２→図２５のＳ２５１０→Ｓ２５１１→Ｓ２５１２→Ｓ２５１３の制御で行なわれる。
【０１９９】
その後、Ｓ７，Ｓ８では、老番ＷａｉｔＮｏ．のポートが選択されて、ＩＤ＝１８，１９の各センサー中継ノード１０３の順に中継される。そして、ＩＤ＝１９のセンサー中継ノード１０３での処理で行き先が無いため、受信フレームは、ＩＤ＝１８のセンサー中継ノード１０３へ戻される（Ｓ９）。
【０２００】
その後、Ｓ１０，Ｓ１１，Ｓ１２，Ｓ１３では、ＩＤ＝１８，１４，１３，９の各センサー中継ノード１０３で次々にＬｏｏｐ状態が検出される（Ｌｏｏｐ２〜６の表記）。この処理は、図２５のステップＳ２５０１→Ｓ２５０２→Ｓ２５０３→Ｓ２５０４→Ｓ２５０５→Ｓ２５０６の制御で行なわれる。
【０２０１】
この結果、受信フレームは、ＩＤ＝５のセンサー中継ノード１０３まで戻される。ＩＤ＝５のセンサー中継ノード１０３では、別の老番ＷａｉｔＮｏ．のポートがあるので、受信フレームはＩＤ＝６のセンサー中継ノード１０３に送信される（Ｓ１４）。
【０２０２】
図２８に移行して、Ｓ１５，Ｓ１６で老番ＷａｉｔＮｏ．が選択されることにより、受信フレームはＩＤ＝１０，１４の各センサー中継ノード１０３に転送される。しかし、ＩＤ＝１４のセンサー中継ノード１０３での処理で行き先が無いため、受信フレームは、ＩＤ＝１０のセンサー中継ノード１０３へ戻される（Ｓ１７のＬｏｏｐ４として表記）。
【０２０３】
ＩＤ＝１０のセンサー中継ノード１０３では、別の老番ＷａｉｔＮｏ．のポートがあるので、受信フレームはＩＤ＝１１のセンサー中継ノード１０３に送信される（Ｓ１８）。
その後、Ｓ１９，Ｓ２０で老番ＷａｉｔＮｏ．が選択されることにより、受信フレームはＩＤ＝１５，１９の各センサー中継ノード１０３に転送される。しかし、ＩＤ＝１９のセンサー中継ノード１０３での処理で行き先が再び無いため、受信フレームは、ＩＤ＝１５のセンサー中継ノード１０３へ戻される（Ｓ２１のＬｏｏｐ２として表記）。
【０２０４】
ＩＤ＝１５のセンサー中継ノード１０３では、別の老番ＷａｉｔＮｏ．のポートがあるので、受信フレームはＩＤ＝１６のセンサー中継ノード１０３に送信される（Ｓ２２）。
最後に、Ｓ２３で老番ＷａｉｔＮｏ．が選択されることにより、受信フレームはＩＤ＝２０のセンサー中継ノード１０３に転送され、そこで受信される。
【０２０５】
以上のルーティング処理の結果、基幹中継ノード１０２からＩＤ＝２０のセンサー中継ノード１０３への経路は、図２９の破線で示される経路として決定される。すなわち、基幹中継ノード１０２→ＩＤ＝１→ＩＤ＝５→ＩＤ＝６→ＩＤ＝１０→ＩＤ＝１１→ＩＤ＝１５→ＩＤ＝１６→ＩＤ＝２０の各センサー中継ノード１０３で中継される経路である。図２９と前述した図２とを比較すると理解されるように、上述のルーティング処理によって決定された経路は、基幹中継ノード１０２からＩＤ＝２０のセンサー中継ノード１０３までの間で、最短ホップ数となる最適経路となっていることがわかる。
【０２０６】
図１４に示される同期要求によるＷａｉｔＮｏ．更新処理により、図２３に示されるように、各センサー中継ノード１０３には、実質的に、基幹中継ノード１０２からの最短ホップ数に対応するＷａｉｔＮｏ．値が設定される。そして、図２５，図２６に示されるルーティング処理により、各センサー中継ノード１０３は、受信フレームに設定されている目的のセンサー中継ノード１０３に対応する送信先ＷａｉｔＮｏ．に達するまで、次のような制御を行う。すなわち、各センサー中継ノード１０３は、常に自ノードＷａｉｔＮｏ．よりも老番のＷａｉｔＮｏ．を有する隣接ノードが接続されるポートに受信フレームを出力するように、自律的に動作する。この制御は、各センサー中継ノード１０３に、自ノードＷａｉｔＮｏ．とポート毎の接続先ノードのＷａｉｔＮｏ．を記憶するＷａｉｔＮｏ．テーブルを設けたことにより可能となる。また、各センサー中継ノード１０３は、ＦＩＤテーブル１００６内のＬｏｏｐフラグを用いることにより、ホップ数が冗長にならないように制御しながら、適切なループ抑制処理を行なうことができる。
【０２０７】
なお、最初のフレームの送信時には、図２７および図２８として示したように、最適な経路決定に到るまで経路の選択動作が繰り返される。しかし、図２９に示されるように一旦最適経路が決定すれば、その経路情報は最適経路上の各センサー中継ノード１０３のＰＳテーブル１００５（図４）に、ＩＤ＝２０のセンサー中継ノード１０３のＤＳＴ  ＩＤが登録されたエントリとして記憶される。経路上の各センサー中継ノード１０３は、２番目以降の受信フレームを受信したときには、受信フレームのＤＳＴ  ＩＤに対応するＰＳテーブル１００５上のエントリを検索する。そして、そのエントリにおいて「使用状態」が設定されているポートを順次選択して、受信フレームの出力処理を実行すればよい。
【０２０８】
図３０は、以上の図２７から図２９までの制御動作における各センサー中継ノード１０３でのＰＳテーブルおよびＦＩＤテーブルの状態遷移表を示す図である。以下の説明において、「エントリＳ１」と表記した場合には、図３０の表の左端のＮｏ．フィールドの値が「Ｓ１」である行を示すものとする。エントリＳ２〜Ｓ２３においても同様である。また、図４に例示されるＰＳテーブルおよび図２３に例示されるＦＩＤテーブルのＰ１，Ｐ２，Ｐ３フィールドは、図３０中では「Ｐｏｒｔ１」「Ｐｏｒｔ２」「Ｐｏｒｔ３」と表記する。さらに、図４に例示されるＰＳテーブルに設定される「未使用状態」「使用状態」「ループ状態」「リンク断状態」はそれぞれ、図３０中では「未使用」「使用」「ループ」「リンク断」と表記する。また、図２４に例示されるＦＩＤテーブルに設定される「未送信ポート」「送信中ポート」「ループポート」「ｒｅｓｅｒｖｅ」の各状態は、図９中では「未送信」「送信中」「ループ」「Ｒｅｓｅｒｖｅ」と表記する。
【０２０９】
図２７のＳ１〜Ｓ４の状態遷移に従って、ＩＤ＝１，５，９，１３の各センサー中継ノード１０３の各ＰＳテーブル１００５（図４）に、次のような各エントリＳ１〜Ｓ４が登録されてゆく。すなわち、ＰＳテーブル１００５の各エントリＳ１〜Ｓ４において、ＤＳＴ  ＩＤフィールドに、受信フレームのＤＳＴ  ＩＤフィールド（図１２（ａ））から抽出されたＩＤ＝２０のセンサー中継ノード１０３の宛先アドレスが登録される。また、ＰＳテーブル１００５の各エントリＳ１〜Ｓ４において、各センサー中継ノード１０３における出力ポートである２番ポートに対応するＰ２（Ｐｏｒｔ２）フィールドに「使用」が登録される。さらに、ＩＤ＝１，５，１３の各センサー中継ノード１０３においては、上記ＰＳテーブルの各エントリＳ１，Ｓ２，Ｓ４のＰ１（Ｐｏｒｔ１）およびＰ３（Ｐｏｒｔ３）フィールドには、「未使用」が登録される。また、ＩＤ＝９のセンサー中継ノード１０３においては、上記ＰＳテーブルのエントリＳ３のＰ１（Ｐｏｒｔ１）フィールドには、「未使用」が登録され、Ｐ３（Ｐｏｒｔ３）フィールドには、他のノードは接続されていないため、「リンク断」が登録される。
【０２１０】
一方、図２７のＳ１〜Ｓ４の状態遷移に従って、ＩＤ＝１，５，９，１３の各センサー中継ノード１０３の各ＦＩＤテーブル（図２４）に、次のような各エントリＳ１〜Ｓ４が登録されてゆく。すなわち、ＦＩＤテーブルの各エントリＳ１〜Ｓ４において、ＳＲＣ  ＩＤフィールドに、受信フレームのＳＲＣ  ＩＤフィールド（図１２（ａ））から抽出された基幹中継ノード１０２の送信元アドレスが登録される。また、ＦＩＤテーブルの各エントリＳ１〜Ｓ４において、ＦＩＤフィールドに、受信フレームのＦＩＤフィールド（図１２（ａ））から抽出されたＦＩＤ：０ｘ０００１が登録される。また、ＦＩＤテーブルの各エントリＳ１〜Ｓ４において、ＲｘＰｏｒｔフィールドに、各センサー中継ノード１０３における受信ポートである１番ポートに対応するポート番号Ｐｏｒｔ１が登録される。また、ＦＩＤテーブルの各エントリＳ１〜Ｓ４において、各センサー中継ノード１０３における出力ポートである２番ポートに対応するＰ２（Ｐｏｒｔ２）フィールドに「送信中」が登録される。さらに、ＩＤ＝１，５，１３の各センサー中継ノード１０３においては、上記ＦＩＤテーブルの各エントリＳ１，Ｓ２，Ｓ４のＰ１（Ｐｏｒｔ１）およびＰ３（Ｐｏｒｔ３）フィールドには、「未送信」が登録される。また、ＩＤ＝９のセンサー中継ノード１０３においては、上記ＦＩＤテーブルのエントリＳ３のＰ１（Ｐｏｒｔ１）フィールドには、「未送信」が登録され、Ｐ３（Ｐｏｒｔ３）フィールドには、他のノードは接続されていないため、「Ｒｅｓｅｒｅ」が登録される。
【０２１１】
図２７のＳ５の状態遷移においては、ＩＤ＝１７のセンサー中継ノード１０３では、Ｐ２（Ｐｏｒｔ２）およびＰ３（Ｐｏｒｔ３）がリンク断となっている。そこで、自ノードからは目的のＩＤ＝２０のセンサー中継ノード１０３には行き着けないことを示すために、ＩＤ＝１７のセンサー中継ノード１０３のＦＩＤテーブル１００６のエントリＳ５に、Ｌｏｏｐフラグ＝“ＯＮ”が設定される。同様に、図２７のＳ９〜Ｓ１３，Ｓ１７，Ｓ２１の各状態遷移においても、各センサー中継ノード１０３では、いずれかのポートがリンク断となっていたり、出力可能な老番ＷａｉｔＮｏ．ポートが存在しない。そこで、これらのセンサー中継ノード１０３のＦＩＤテーブル１００６の各エントリにも、Ｌｏｏｐフラグ＝“ＯＮ”が設定される。その他の転送可能なポートが残っているセンサー中継ノード１０３では、ＦＩＤテーブル１００６の各エントリには、Ｌｏｏｐフラグ＝“ＯＦＦ”が設定される。
【０２１２】
図２７のＳ５の状態遷移では、Ｎｏ．１３のセンサー中継ノード１０３にフレームが戻される。この結果、Ｎｏ．１３のセンサー中継ノード１０３のＰＳテーブルとＦＩＤテーブルの状態は、図３０のエントリＳ４の状態からエントリＳ６の状態に変化する。すなわち、ＰＳテーブルの受信フレームと同じＤＳＴ  ＩＤが登録されているエントリＳ６（＝エントリＳ４）において、２番ポートにおいてループが検出されたため、Ｐ２（Ｐｏｒｔ２）フィールドの状態が「使用」状態から「ループ」状態に更新される。また、３番ポートが新たな出力ポートとなったため、Ｐ３（Ｐｏｒｔ３）フィールドの状態が「未使用」状態から「使用」状態に更新される。一方、ＦＩＤテーブル１００６の受信フレームと同じＳＲＣ  ＩＤおよびＦＩＤが登録されているエントリＳ６（＝エントリＳ４）において、２番ポートにおいてループが検出されたため、Ｐ２（Ｐｏｒｔ２）フィールドの状態が「送信中」状態から「ループポート」状態に更新される。また、３番ポートが新たな出力ポートとなったため、Ｐ３（Ｐｏｒｔ３）フィールドの状態が「未送信」状態から「送信中」状態に更新される。
【０２１３】
以上説明した状態遷移以外の場合でも、上記と同様の要領で、ＰＳテーブル１００５およびＦＩＤテーブル１００６の内容が更新されてゆく。
図３０から理解されるように、リンク断ポートが存在したり老番ＷａｉｔＮｏ．ポートが無かったりすることで、目的のセンサー中継ノード１０３への転送が不可能なセンサー中継ノード１０３では、ＦＩＤテーブル１００６のＬｏｏｐフラグが“ＯＮ”にされる。これにより、ループ状態が回避されると共に、冗長なホップ数を有する経路の選択も回避される。
【０２１４】
図３１は、基幹中継ノード１０２からセンサー中継ノード群１００の途中のＩＤ＝７のセンサー中継ノード１０３へのフレーム送信が行われる場合のルーティング処理の説明図である。
【０２１５】
Ｓ４，Ｓ８では、ＩＤ＝１３または１０の各センサー中継ノード１０３において、受信フレームの送信先ＷａｉｔＮｏ．＝ＷａｉｔＮｏ．テーブル上の自ノードＷａｉｔＮｏ．＝０ｘ０４となる。また、自ノードのアドレスは、受信フレームのＤＳＴ  ＩＤとは異なる。このため、図１３のステップＳ１３０５の判定がＮＯとなった後、図２６のステップＳ２６０１→Ｓ２６０３→Ｓ２６０５〜Ｓ２６０９となって、受信フレームが受信ポートに戻される。
【０２１６】
これを含む状態遷移Ｓ４〜Ｓ１０により、受信フレームは、ＩＤ＝１のセンサー中継ノード１０３まで戻される。
その後は、Ｓ１１，Ｓ１２，Ｓ１３では、ＩＤ＝１，２，３の各センサー中継ノード１０３では、老番ＷａｉｔＮｏ．のポートが選択されて、受信フレームが転送される。この処理は、図２６のステップＳ２６０２の判定がＹＥＳとなる制御で行なわれる。
【０２１７】
なお、Ｓ１２では、ＩＤ＝２のセンサー中継ノード１０３で、老番ＷａｉｔＮｏ．のポートが２ポートあるため、図２５のステップＳ２５１０に従って、若番ポートが選択され、受信フレームがＩＤ＝３のセンサー中継ノード１０３に転送される。
【０２１８】
Ｓ１４では、ＩＤ＝４のセンサー中継ノード１０３において、受信フレームの送信先ＷａｉｔＮｏ．＝ＷａｉｔＮｏ．テーブル上の自ノードＷａｉｔＮｏ．＝０ｘ０４となる。また、自ノードのアドレスは、受信フレームのＤＳＴ  ＩＤとは異なる。このため、図１３のステップＳ１３０５の判定がＮＯとなった後、図２６のステップＳ２６０１→Ｓ２６０３→Ｓ２６０５〜Ｓ２６０９となって、受信フレームが受信ポートに戻される。
【０２１９】
Ｓ１５では、ＩＤ＝３のセンサー中継ノード１０３において、別の老番ＷａｉｔＮｏ．のポートが選択されて、受信フレームがＩＤ＝７の目的のセンサー中継ノード１０３に到達し、そこで受信される。
【０２２０】
以上のルーティング処理の結果、太実線で示される最短ホップ数の経路が確立する。
図３２は、ＩＤ＝２０のセンサー中継ノード１０３から基幹中継ノード１０２へのフレーム送信の例の説明図である。
【０２２１】
本実施形態では、基幹中継ノード１０２とセンサー中継ノード１０３とのデータ通信が主に実行されるため、センサー中継ノード１０３から自ノードより若番ＷａｉｔＮｏ．を有するノードへの送信は、基幹中継ノード１０２への送信となる。
【０２２２】
ＩＤ＝２０のセンサー中継ノード１０３から送信されたフレームには、ＤＳＴ  ＩＤとして基幹中継ノード１０２のアドレスが設定され、送信先ＷａｉｔＮｏ．として基幹中継ノード１０２のＷａｉｔＮｏ．＝０ｘ００が設定される（図１２（ａ））。
【０２２３】
ＩＤ＝２０のセンサー中継ノード１０３から送信されたフレームは、ＩＤ＝１２，８，４，３，２，１の各センサー中継ノード１０３において、次の制御が実行される。すなわち、各自ノードのＷａｉｔＮｏ．テーブルに設定されている各自ノードＷａｉｔＮｏ．＝０ｘ０６，０ｘ０５，０ｘ０４，０ｘ０３，０ｘ０２，０ｘ０１が、受信フレームに設定されている送信先ＷａｉｔＮｏ．＝０ｘ００と比較される。この結果、常に受信フレームの送信先ＷａｉｔＮｏ．のほうが小さくなる。この場合には、各センサー中継ノード１０３は、自ノードＷａｉｔＮｏ．より若番のＷａｉｔＮｏ．が設定されているポートに、受信フレームを出力する。これは、図２６のＳ２６０１→Ｓ２６０３→Ｓ２６０４→図２５のＳ２５１０→Ｓ２５１１→Ｓ２５１２→Ｓ２５１３の制御により行なわれる。
【０２２４】
上述のルーティング処理の結果、センサー中継ノード１０３から基幹中継ノード１０２へのフレーム送信においても、最短ホップ数での経路が確立されることになる。
図３３は、図１２のステップＳ１３０３で受信フレームがヘルスフレームであると判定された場合に実行されるヘルス情報によるＷａｉｔＮｏ．更新処理を示すフローチャートである。
まず、図１０のルーティング制御部１００３は、ＷａｉｔＮｏ．制御部１００４が管理する図１１に例示されるＷａｉｔＮｏ．テーブルにアクセスする。そして、Ｐ１，Ｐ２，またはＰ３のＷａｉｔＮｏ．のうち、受信フレームが受信された受信ポートに対応するＷａｉｔＮｏ．を、受信フレームに設定されている送信元ＷａｉｔＮｏ．（図１２（ｂ）の１２０１）に更新する（ステップＳ３３０１）。
【０２２５】
これと共に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブルにおいてＷａｉｔＮｏ．を更新したポートに対応するタイマー値をリスタートさせる（ステップＳ３３０２）。これにより、該当するポートでは、新たに設定されたタイマー値に対応する時間分だけ、新たにヘルスフレームが受信されるか否かが監視されることになる（後述する図３８のステップＳ３８０２）。
【０２２６】
次に、ルーティング制御部１００３は、受信フレーム中の送信元ＷａｉｔＮｏ．（図１２（ｂ）の１２０１）の値が、初期値（０ｘＦＦ）に等しいか否かを判定する（ステップＳ３３０３）。
【０２２７】
受信フレーム中の送信元ＷａｉｔＮｏ．の値が初期値に等しくステップＳ３３０３の判定がＹＥＳなら、ルーティング制御部１００３は、図４５のフローチャートで示される回線断発生自のヘルス情報によるＷａｉｔＮｏ．更新処理を実行する。この処理については、後述する。
【０２２８】
受信フレーム中の送信元ＷａｉｔＮｏ．の値が初期値に等しくなくステップＳ３３０３の判定がＮＯなら、ルーティング制御部１００３は、次の処理を実行する。すなわち、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル内の自ノードＷａｉｔＮｏ．の値が受信フレーム中の送信元ＷａｉｔＮｏ．に＋１した値よりも大きいか否かを判定する（ステップＳ３３０４）。
【０２２９】
自ノードＷａｉｔＮｏ．の値が送信元ＷａｉｔＮｏ．＋１よりも大きくなくステップＳ３３０４の判定がＮＯなら、ルーティング制御部１００３は、受信フレームを無視して、そのまま図３３のヘルス情報によるＷａｉｔＮｏ．更新処理を終了する。そして、アドホックルーティング制御デバイス１００１によるフレーム受信の検知処理にもどる。
【０２３０】
自ノードＷａｉｔＮｏ．の値が送信元ＷａｉｔＮｏ．＋１よりも大きくステップＳ３３０４の判定がＹＥＳなら、ルーティング制御部１００３は、次の処理を実行する。すなわち、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル内の自ノードＷａｉｔＮｏ．（図１１）の値を、受信フレーム中の送信元ＷａｉｔＮｏ．に＋１した値に更新する（ステップＳ３３０５）。
【０２３１】
さらに、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル内のマスターＰｏｒｔ（図１１）の値を、受信フレームが受信された有線アドホックネットワークポート１０１６のポート番号に更新する（ステップＳ３３０６）。
【０２３２】
次に、ルーティング制御部１００３からの制御によりフレーム処理部１００９は、ヘルスフレーム中の送信元ＷａｉｔＮｏ．の値を、ＷａｉｔＮｏ．テーブル中の自ノードＷａｉｔＮｏ．の値に設定する。そして、フレーム処理部１００９は、送信フレーム制御部１０１１を制御して、そのヘルスフレームを、全ての有線アドホックネットワークポート１０１６から送信させる（ステップＳ３３０７）。
【０２３３】
これと共に、ルーティング制御部１００３からの制御によりフレーム処理部１００９は、送信フレーム制御部１０１１を制御して、基幹中継ノード１０２に向けて、自ノード状態通知フレームを送信させる（ステップＳ３３０８）。自ノード状態通知フレームは、図１２（ｄ）に示されるデータフォーマットを有する。この自ノード状態通知フレームにおいて、ＤＳＴ  ＩＤには、基幹中継ノード１０２のアドレスが設定される。ＳＲＣ  ＩＤには、自ノードのアドレスが設定される。また、ＭＡＣデータ３０２に、受信フレームに設定されていた送信元ＷａｉｔＮｏ．が送信先ＷａｉｔＮｏ．１２０１として設定される。これに加えて、自ノード状態通知フレームでは、ＭＡＣデータ３０２に、自ノードのＷａｉｔＮｏ．テーブル１００７に格納された自ノードＷａｉｔＮｏ．が２バイトの送信元ＷａｉｔＮｏ．として設定される。ルーティング制御部１００３は、図１０のＰＳテーブル１００５において、ＤＳＴ  ＩＤとして基幹中継ノード１０２のＤＳＴ  ＩＤが設定されたエントリ中のＰ１，Ｐ２，Ｐ３フィールドのうち、「使用状態」（図４）が設定されているフィールドを検出する。そして、ルーティング制御部１００３は、図１０の送信フレーム制御部１０１１に対して、上記検出したフィールドに対応する有線アドホックネットワークポート１０１６への自ノード状態通知フレームの出力を指示する。この処理により、図１の基幹中継ノード１０２は、各センサー中継ノード１０３から自ノード状態通知フレームを受け取ることにより、各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルに設定された自ノードＷａｉｔＮｏ．を検知することができる。基幹中継ノード１０２は、特には図示しないテーブルに、各センサー中継ノード１０３の自ノードＷａｉｔＮｏ．を保持して管理する。
【０２３４】
その後、ルーティング制御部１００３は、図３３のヘルス情報によるＷａｉｔＮｏ．更新処理を終了し、アドホックルーティング制御デバイス１００１によるフレーム受信の検知処理にもどる。
【０２３５】
以上説明したヘルス情報によるＷａｉｔＮｏ．更新処理により、前述した図１４のフローチャートで示される同期要求によるＷａｉｔＮｏ．更新処理の場合と同様の制御が行なわれる。すなわち、図１において、基幹中継ノード１０２から送信されたＷａｉｔＮｏ．が、センサー中継ノード群１００中の各センサー中継ノード１０３に順次伝達される。このとき、各センサー中継ノード１０３において、同期要求フレーム中の送信元ＷａｉｔＮｏ．（図１２（ｃ）の１２０１）の値が＋１ずつ増やされる。そして、その増やされたＷａｉｔＮｏ．が、各センサー中継ノード１０３の図１０に示されるＷａｉｔＮｏ．制御部１００４内のＷａｉｔＮｏ．テーブルに、自ノードＷａｉｔＮｏ．として設定される。さらに、その増やされたＷａｉｔＮｏ．を有する同期要求フレームが、隣接するセンサー中継ノード１０３に転送される。このようにして、図１の各センサー中継ノード１０３には、実質的に、基幹中継ノード１０２からのホップ数に対応するＷａｉｔＮｏ．値が、自ノードＷａｉｔＮｏ．として設定される。
【０２３６】
図３４から図３７は、上述したヘルス情報によるＷａｉｔＮｏ．更新処理の具体例を示す説明図である。以下、これらの説明図を使って、ヘルス情報によるＷａｉｔＮｏ．更新処理の具体的処理について説明する。なお、図３４から図３７に示される構成は、図１に示されるシステム構成を基本としている。
【０２３７】
まず、図３４において、状態遷移Ｓ１として、起動時、各センサー中継ノード１０３は、送信元ＷａｉｔＮｏ．＝０ｘＦＦ（図１２（ｂ）の１２０１）が設定されたヘルスフレームを、各自ノードの全ての有線アドホックネットワークポート１０１６（図１０）から送信する。
【０２３８】
状態遷移Ｓ２において、基幹中継ノード１０２は、送信元ＷａｉｔＮｏ．＝０ｘ００が設定されたヘルスフレームを、ＩＤ＝１のセンサー中継ノード１０３に送信する。
状態遷移Ｓ３において、送信元ＷａｉｔＮｏ．＝０ｘ００が設定されたヘルスフレームを受信したＩＤ＝１のセンサー中継ノード１０３では、次の制御を実行する。すなわち、自ノードのＷａｉｔＮｏ．制御部１００４（図１０）内のＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．を、０ｘＦＦから、上記送信元ＷａｉｔＮｏ．＝０ｘ００に＋１した値０ｘ０１に変更する。
【０２３９】
次に、図３５において、状態遷移Ｓ１，Ｓ２は、図３４の場合と同様である。ヘルスフレームは、各センサー中継ノード１０３から隣接ノードに向けて、定期的に送信される。
状態遷移Ｓ４において、ＩＤ＝１のセンサー中継ノード１０３は、自ノードの全ポートからＩＤ＝２，３の各センサー中継ノード１０３に向けて、送信元ＷａｉｔＮｏ．＝０ｘ０１が設定されたヘルスフレームを送信する。
【０２４０】
状態遷移Ｓ５において、ＩＤ＝１のセンサー中継ノード１０３からヘルスフレームを受信したＩＤ＝２，３の各センサー中継ノード１０３では、次の制御を実行する。すなわち、自ノードのＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．を、０ｘＦＦから、上記送信元ＷａｉｔＮｏ．＝０ｘ０１に＋１した値０ｘ０２に変更する。
【０２４１】
次に、図３６において、状態遷移Ｓ１，Ｓ２，Ｓ４は、図３４，図３５の場合と同様である。
状態遷移Ｓ６において、ＩＤ＝２，３の各センサー中継ノード１０３は、自ノードの全ポートからＩＤ＝４，５の各センサー中継ノード１０３に向けて、送信元ＷａｉｔＮｏ．＝０ｘ０２が設定されたヘルスフレームを送信する。
【０２４２】
状態遷移Ｓ７において、ＩＤ＝２，３のセンサー中継ノード１０３からヘルスフレームを受信したＩＤ＝４，５の各センサー中継ノード１０３では、次の制御を実行する。すなわち、自ノードのＷａｉｔＮｏ．テーブルにおいて、自ノードＷａｉｔＮｏ．を、０ｘＦＦから、上記送信元ＷａｉｔＮｏ．＝０ｘ０２に＋１した値０ｘ０３に変更する。
【０２４３】
次に、図３７において、状態遷移Ｓ１，Ｓ２，Ｓ４，Ｓ６は、図３４，図３５、図３６の場合と同様である。
状態遷移Ｓ８において、ＩＤ＝４，５の各センサー中継ノード１０３は、自ノードの全ポートからＩＤ＝２，３，４，５の各センサー中継ノード１０３に向けて、送信元ＷａｉｔＮｏ．＝０ｘ０３が設定されたヘルスフレームを送信する。ＩＤ＝４，５のセンサー中継ノード１０３からヘルスフレームを受信した各センサー中継ノード１０３では、受信フレームの送信先ＷａｉｔＮｏ．が自ノードＷａｉｔＮｏ．よりも大きい。このため、図３３のステップＳ３３０４の判定がＮＯとなることにより、これらのヘルスフレームは無視される。
【０２４４】
以上のようにして、ヘルスフレームの定期送信により、各センサー中継ノード１０３に、基幹中継ノード１０２からの最短ホップ数に対応したＷａｉｔＮｏ．が設定される。
次に、アドホックネットワークにおいて回線断が発生したときのＷａｉｔＮｏ．の初期化や再構築の処理について、以下に説明する。
【０２４５】
図３８は、回線断検出時のセンサー中継ノード１０３の動作を示すフローチャートである。以下、このフローチャートの処理について、説明する。
ルーティング制御部１００３は、監視処理として、ステップＳ３８０１とＳ３８０２の各処理を繰り返し実行している。
【０２４６】
まず、アドホックルーティング制御デバイス１００１内のルーティング制御部１００３は、図１０の各有線アドホックネットワークポート１０１６による隣接ノードとの接続において、物理レベル障害が検出されたか否かを判定する（ステップＳ３８０１）。
【０２４７】
物理レベル障害が検出されずステップＳ３８０１の判定がＮＯなら、ルーティング制御部１００３は、同期要求フレームまたはヘルスフレームが定期的に受信されているか否かを示すタイマータイムアウトを判定する（ステップＳ３８０２）。この判定は具体的には例えば、ルーティング制御部１００３が、図１０のＷａｉｔＮｏ．制御部１００４内のＷａｉｔＮｏ．テーブル上の各ポート毎のタイマー値を監視する動作として行なわれる。
【０２４８】
定期フレーム受信のタイマータイムアウトが発生しておらずステップＳ３８０２の判定もＮＯなら、ルーティング制御部１００３は、ステップＳ３８０１の判定とＳ３８０２の判定を繰り返し実行する。
【０２４９】
物理レベル障害の検出または定期フレーム受信のタイマータイムアウトの発生のいずれかの事象が発生しステップＳ３８０１またはＳ３８０２の判定がＹＥＳとなると、ルーティング制御部１００３は、以下の回線断処理を実行する。
【０２５０】
まず、ルーティング制御部１００３は、基幹中継ノード１０２に、削除通知フレームを送信する（ステップＳ３８０３）。これにより、基幹中継ノード１０２は、当該センサー中継ノード１０３での回線断の発生を認識することが可能となる。
【０２５１】
次に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブルで、自ノードＷａｉｔＮｏ．が、受信ポート以外のいずれかの他ポートに接続されている隣接ノードのＷａｉｔＮｏ．より大きいか否かを判定する（ステップＳ３８０４）。
【０２５２】
回線断により自ノードＷａｉｔＮｏ．がどの他ポート接続ＷａｉｔＮｏ．よりも大きくはなくステップＳ３８０４の判定がＮＯならば、ルーティング制御部１００３は、以下の動作を実行する。すなわち、ルーティング制御部１００３はまず、ＷａｉｔＮｏ．テーブル上の自ノードＷａｉｔＮｏ．を、初期値（０ｘＦＦ）に更新する（ステップＳ３８０７）。次に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル上のマスターＰｏｒｔを、初期値（未使用）に更新する（ステップＳ３８０８）。その後、ステップＳ３８０９の処理に移行する。
【０２５３】
一方、回線断により自ノードＷａｉｔＮｏ．がいずれかの他ポート接続ＷａｉｔＮｏ．よりは大きくステップＳ３８０４の判定がＹＥＳならば、ルーティング制御部１００３は、以下の動作を実行する。すなわち、ルーティング制御部１００３はまず、若番ＷａｉｔＮｏ．の受信ポートに設定されたＷａｉｔＮｏ．を＋１し、その値によって、ＷａｉｔＮｏ．テーブル上の自ノードＷａｉｔＮｏ．を更新する（ステップＳ３８０５）。次に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブルにおいて、マスターＰｏｒｔを、若番ＷａｉｔＮｏ．の受信ポート番号に更新する（ステップＳ３８０６）。その後、ステップＳ３８０９の処理に移行する。
【０２５４】
上述のステップＳ３８０５とＳ３８０６またはステップＳ３８０７とＳ３８０８の処理の後、ルーティング制御部１００３は、以下の制御を実行する。すなわち、ルーティング制御部１００３は、自ノードのＷａｉｔＮｏ．テーブルの状態が変化した後に、ヘルスフレームを送信しているか否かを判定する（ステップＳ３８０９）。そして、ヘルスフレームを未送信なら、ルーティング制御部１００３からの指示に従いフレーム処理部１００９は、送信フレーム制御部１０１１に対し、全ての有線アドホックネットワークポート１０１６からヘルスフレームを送信させる（ステップＳ３８１０）。
【０２５５】
次に、ルーティング制御部１００３からの制御によりフレーム処理部１００９は、送信フレーム制御部１０１１を制御して、基幹中継ノード１０２に向けて、自ノード状態通知フレームを送信させる（ステップＳ３８１１）。この自ノード状態通知フレームには、送信元ＷａｉｔＮｏ．としてＷａｉｔＮｏ．テーブル内で更新された自ノードＷａｉｔＮｏ．が設定される（図１２（ｄ））。これにより、基幹中継ノード１０２は、センサー中継ノード１０３において自ノードＷａｉｔＮｏ．が更新されたことを知ることができる。
【０２５６】
次に、ルーティング制御部１００３は、隣接ノードからヘルスフレームを全て受信したか否かを判定する（ステップＳ３８１２）。
ステップＳ３８１２の判定がＮＯなら、ルーティング制御部１００３は、隣接するセンサー中継ノード１０３からのヘルスフレームの受信を待って、再度ステップＳ３８０４からＳ３８１２までの処理を実行し、自ノードの状態を更新する（ステップＳ３８１３）。
【０２５７】
ステップＳ３８１２の判定がＹＥＳになると、ルーティング制御部１００３は、ステップＳ３８０１とＳ３８０２の監視処理に戻る。
以上の図３８に示されるフローチャートの制御処理により、センサー中継ノード１０３は、回線断の発生時に、隣接ノードの状況に合わせて、自ノードＷａｉｔＮｏ．を自律的に更新することが可能となる。
【０２５８】
図３９は、前述したヘルス情報によるＷａｉｔＮｏ．更新処理（図３３）において、他ノードから初期化されたＷａｉｔＮｏ．をヘルスフレームで受信したときに実行される、回線断発生時のヘルス情報によるＷａｉｔＮｏ．初期化処理を示すフローチャートである。以下、このフローチャートの処理について、説明する。
【０２５９】
受信されたヘルスフレーム内の送信元ＷａｉｔＮｏ．（図１２（ｂ）の１２０１）が初期値（０ｘＦＦ）であると判定され前述した図３３のステップＳ３３０３の判定がＹＥＳになると、図３９のフローチャートの処理が実行される。
【０２６０】
ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブルで、自ノードＷａｉｔＮｏ．が、受信ポート以外のいずれかの他ポートに接続されている隣接ノードのＷａｉｔＮｏ．より大きいか否かを判定する（ステップＳ３９０１）。
【０２６１】
他ノードからの回線断を示すヘルス情報により自ノードＷａｉｔＮｏ．がどの他ポート接続ＷａｉｔＮｏ．よりも大きくはなくステップＳ３９０１の判定がＮＯならば、ルーティング制御部１００３は、以下の動作を実行する。すなわち、ルーティング制御部１００３はまず、ＷａｉｔＮｏ．テーブル上の自ノードＷａｉｔＮｏ．を、初期値（０ｘＦＦ）に更新する（ステップＳ３９０２）。次に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル上のマスターＰｏｒｔを、初期値（未使用）に更新する（ステップＳ３９０３）。その後、ステップＳ３９０６の処理に移行する。
【０２６２】
他ノードからの回線断を示すヘルス情報により自ノードＷａｉｔＮｏ．がいずれかの他ポート接続ＷａｉｔＮｏ．より大きくなっておりステップＳ３９０１の判定がＹＥＳならば、ルーティング制御部１００３は、以下の動作を実行する。すなわち、ルーティング制御部１００３はまず、若番ＷａｉｔＮｏ．の受信ポートに設定されたＷａｉｔＮｏ．を＋１し、その値によって、ＷａｉｔＮｏ．テーブル上の自ノードＷａｉｔＮｏ．を更新する（ステップＳ３９０４）。次に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブルにおいて、マスターＰｏｒｔを、若番ＷａｉｔＮｏ．の受信ポート番号に更新する（ステップＳ３９０５）。その後、ステップＳ３９０６の処理に移行する。
【０２６３】
上述のステップＳ３９０２とＳ３９０３またはステップＳ３９０４とＳ３９０５の処理の後、ルーティング制御部１００３は、以下の制御を実行する。すなわち、ルーティング制御部１００３からの指示に従いフレーム処理部１００９は、送信フレーム制御部１０１１に対し、全ての有線アドホックネットワークポート１０１６からヘルスフレームを送信させる（ステップＳ３９０６）。
【０２６４】
次に、ルーティング制御部１００３からの制御によりフレーム処理部１００９は、送信フレーム制御部１０１１を制御して、基幹中継ノード１０２に向けて、自ノード状態通知フレームを送信させる（ステップＳ３９０７）。この自ノード状態通知フレームには、送信元ＷａｉｔＮｏ．としてＷａｉｔＮｏ．テーブル内で更新された自ノードＷａｉｔＮｏ．が設定される（図１２（ｄ））。これにより、基幹中継ノード１０２は、センサー中継ノード１０３において自ノードＷａｉｔＮｏ．が更新されたことを知ることができる。
【０２６５】
以上のようにして、ルーティング制御部１００３は、隣接ノードからヘルスフレームによって回線断の発生を通知されたときに、隣接ノードの状況に合わせて、自ノードＷａｉｔＮｏ．を自律的に更新することが可能となる。
【０２６６】
図４０は、前述した図１３のステップＳ１３０４にて削除通知フレームの受信が検知された場合に実行される、回線断発生時の削除通知によるＷａｉｔＮｏ．初期化処理を示す動作フローチャートである。このフローチャートも、図１０のアドホックルーティング制御デバイス１００１として構成されるＦＰＧＡの処理機能として実装される。あるいは、アドホックルーティング制御デバイス１００１が中央演算処理装置とメモリを含むプロセッサとして構成される場合には、中央演算処理装置がメモリに記憶された制御プログラムを実行する動作として実装される。以下、このフローチャートの処理について、説明する。
【０２６７】
まず、ルーティング制御部１００３は、受信された削除通知フレームが、既に受信されたフレームであるか否かを判定する（ステップＳ４００１）。この判定は、ルーティング制御部１００３が、受信フレームに設定されているＳＲＣ  ＩＤおよびＦＩＤと同じＳＲＣ  ＩＤおよびＦＩＤを有するエントリが、図１０のＦＩＤテーブル１００６（図２４）に登録されているか否かを判定する処理として行なわれる。
【０２６８】
受信フレームが既に受信されたフレームでステップＳ４００１の判定がＹＥＳなら、ルーティング制御部１００３は、同じ削除通知フレームについて重複して処理する必要はないため、受信フレームを破棄する（ステップＳ４００６）。そして、ルーティング制御部１００３は、図４０の削除通知によるＷａｉｔＮｏ．初期化処理を終了し、アドホックルーティング制御デバイス１００１によるフレーム受信の検知処理にもどる。
【０２６９】
受信フレームが初めて受信されたフレームでステップＳ４００１の判定がＮＯなら、ルーティング制御部１００３はまず、ＷａｉｔＮｏ．テーブル上の自ノードＷａｉｔＮｏ．を、初期値（０ｘＦＦ）に更新する（ステップＳ４００２）。次に、ルーティング制御部１００３は、ＷａｉｔＮｏ．テーブル上のマスターＰｏｒｔを、初期値（未使用）に更新する（ステップＳ４００３）。
【０２７０】
その後、ルーティング制御部１００３は、以下の制御を実行する。すなわち、ルーティング制御部１００３からの指示に従いフレーム処理部１００９は、送信フレーム制御部１０１１に対し、全ての有線アドホックネットワークポート１０１６からヘルスフレームを送信させる（ステップＳ４００４）。
【０２７１】
次に、ルーティング制御部１００３からの制御によりフレーム処理部１００９は、送信フレーム制御部１０１１を制御して、基幹中継ノード１０２に向けて、自ノード状態通知フレームを送信させる（ステップＳ４００５）。この自ノード状態通知フレームには、送信元ＷａｉｔＮｏ．としてＷａｉｔＮｏ．テーブル内で更新された自ノードＷａｉｔＮｏ．が設定される（図１２（ｄ））。これにより、基幹中継ノード１０２は、センサー中継ノード１０３において自ノードＷａｉｔＮｏ．が更新されたことを知ることができる。
【０２７２】
そして、ルーティング制御部１００３は、図４０の削除通知によるＷａｉｔＮｏ．初期化処理を終了し、アドホックルーティング制御デバイス１００１によるフレーム受信の検知処理にもどる。
【０２７３】
以上のようにして、ルーティング制御部１００３は、隣接ノードからヘルスフレームによって回線断の発生を通知されたときに、隣接ノードの状況に合わせて、自ノードＷａｉｔＮｏ．を自律的に更新することが可能となる。
【０２７４】
図４１から図４４は、回線断時に、ヘルス情報を利用してＷａｉｔＮｏ．の初期化と再構築を行う例１の説明図である。この例１は、図３４から図３７に示される例と同じ例である。
【０２７５】
まず、図４１において、ＩＤ＝１のセンサー中継ノード１０３とＩＤ＝２のセンサー中継ノード１０３の間の通信回線が切断したとする。状態遷移Ｓ２，Ｓ４，Ｓ６，Ｓ８は、図３４ないし図３７の場合と同じである。
【０２７６】
図４１から図４２において、状態遷移Ｓ９で、ＩＤ＝２のセンサー中継ノード１０３は、例えば図３８のステップＳ３８０１により、回線障害を検出する。これにより、ＩＤ＝２のセンサー中継ノード１０３は、自身のＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．を０ｘ０２から０ｘＦＦに初期化する。この処理は、図３８のステップＳ３８０４→Ｓ３８０７の制御により行なわれる。
【０２７７】
次に、状態遷移Ｓ１０で、ＩＤ＝２のセンサー中継ノード１０３は、初期化されたＷａｉｔＮｏ．を送信元ＷａｉｔＮｏ．として含むヘルスフレーム（図１２（ｂ））を、ＩＤ＝４，５の隣接する各センサー中継ノード１０３に送信する。この処理は、図３８のステップＳ３８０９→Ｓ３８１０の制御により行なわれる。
【０２７８】
この結果、ＩＤ＝５のセンサー中継ノード１０３は、図３３のステップＳ３３０３の判定がＹＥＳになった後、図３９のステップＳ３９０１で、受信ポート以外の他ポートで若番ＷａｉｔＮｏ．のポートがないため、その判定がＮＯとなる。この結果、ステップＳ３９０２により、ＩＤ＝５のセンサー中継ノード１０３でも、ＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．が０ｘＦＦに初期化される。
【０２７９】
一方、ＩＤ＝４のセンサー中継ノード１０３は、図３３のステップＳ３３０３の判定がＹＥＳになった後、図３９のステップＳ３９０１で、受信ポート以外の他ポートで若番ＷａｉｔＮｏ．のポートがあるため、その判定がＹＥＳとなる。この結果、ステップＳ３９０４により、ＩＤ＝４のセンサー中継ノード１０３で、ＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．が、ＩＤ＝３のセンサー中継ノード１０３のＷａｉｔＮｏ．＝０ｘ０２に＋１して得られる同じ値０ｘ０３に維持される。
【０２８０】
以上のような初期化処理に続いて、ＷａｉｔＮｏ．の再構築処理が実行される。
図４２から図４３に移り、状態遷移Ｓ８にて、ＩＤ＝４のセンサー中継ノード１０３から送信されるヘルスフレームにより、ＩＤ＝２と５の各センサー中継ノード１０３において、ＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．が、０ｘ０４に更新される。この処理は、図３３のステップＳ３３０３→Ｓ３３０４→Ｓ３３０５の制御として行なわれる。
【０２８１】
以上のようにして、図４１→図４４として示されるように、ＩＤ＝１のセンサー中継ノード１０３とＩＤ＝２のセンサー中継ノード１０３の間で回線断が発生しても、ＩＤ＝２，５の各センサー中継ノード１０３のＷａｉｔＮｏ．を自動的に初期設定し続いて再構築することが可能となる。
【０２８２】
図４４の状態遷移Ｓ１２において、ＩＤ＝５のセンサー中継ノード１０３から、再構築されたＷａｉｔＮｏ．を送信元ＷａｉｔＮｏ．として含むヘルスフレーム（図１２（ｂ））が、隣接ノードに送信される。この処理は、図３３のステップＳ３３０７の制御として行なわれれる。
【０２８３】
なお、図４４での再構築完了後も、各センサー中継ノード１０３は、図３８のステップＳ３８０１とＳ３８０２の処理の繰返しにより、各ポートの障害検知とヘルスフレームの定期的受信を監視するで、新たな障害発生等に備えることが可能となる。
【０２８４】
また、回線断の箇所が復旧した場合においても、上述したのと同様のＷａｉｔＮｏ．の初期設定および再構築の制御が実行されることにより、最短ホップ数の経路の再構築を行うことが可能となる。
【０２８５】
図４５および図４６は、回線断時に、ヘルス情報を利用してＷａｉｔＮｏ．の初期化を行う例２の説明図である。この例２は、図１のシステム構成と同じである。
まず、図４５において、状態遷移Ｓ１において、回線断が発生する。
【０２８６】
その結果、状態遷移Ｓ２で、ＷａｉｔＮｏ．＝０ｘ０３であるセンサー中継ノード１０３は、例えば図３８のステップＳ３８０１により、回線障害を検出する。これにより、上記センサー中継ノード１０３は、自身のＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．を０ｘ０３から０ｘＦＦに初期化する。この処理は、図３８のステップＳ３８０４→Ｓ３８０７の制御により行なわれる。続いて、上記センサー中継ノード１０３は、初期化されたＷａｉｔＮｏ．を送信元ＷａｉｔＮｏ．として含むヘルスフレーム（図１２（ｂ））を、ＷａｉｔＮｏ．＝０ｘ０４を有する隣接する各センサー中継ノード１０３に送信する。この処理は、図３８のステップＳ３８０９→Ｓ３８１０の制御により行なわれる。
【０２８７】
この結果、図４６として示されるように、ＷａｉｔＮｏ．＝０ｘ０４を有する各センサー中継ノード１０３は、図３３のステップＳ３３０３の判定がＹＥＳになった後、図３９のステップＳ３９０１で、受信ポート以外の他ポートで若番ＷａｉｔＮｏ．のポートがないため、その判定がＮＯとなる。この結果、ステップＳ３９０２により、上記各センサー中継ノード１０３で、ＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．が０ｘＦＦに初期化される。
【０２８８】
さらに、状態遷移Ｓ３で、ＷａｉｔＮｏ．＝０ｘ０５や０ｘ０６を有するセンサー中継ノード１０３でも、自ノードよりも若番ＷａｉｔＮｏ．の隣接ノードが初期化され、初期化されたＷａｉｔＮｏ．がヘルスフレームにより送信されてくる。この結果、上記と同様にして、各センサー中継ノード１０３で、ＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．が０ｘＦＦに初期化される。
【０２８９】
各センサー中継ノード１０３での回線断の検知やＷａｉｔＮｏ．テーブルにおける自ノードＷａｉｔＮｏ．の更新は、削除通知フレームや自ノード状態通知フレームにより、図４６の太実線で示されるように、随時基幹中継ノード１０２に通知される。この処理は、例えば図３８のステップＳ３８０３やＳ３８１１、あるいは図３９のステップＳ３９０７の制御により行なわれる。
【０２９０】
図４７は、回線断時に、削除通知を利用してＷａｉｔＮｏ．の初期化を行う例２の説明図である。この例２は、図１のシステム構成と同じである。
まず、図４７において、状態遷移Ｓ１において、回線断が発生する。
【０２９１】
状態遷移Ｓ２で、回線断が発生した両端のセンサー中継ノード１０３は、例えば図３８のステップＳ３８０１により、回線障害を検出する。これにより、上記センサー中継ノード１０３は、自身のＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．を０ｘＦＦに初期化する。この処理は、図３８のステップＳ３８０４→Ｓ３８０７の制御により行なわれる。続いて、上記各センサー中継ノード１０３は、初期化されたＷａｉｔＮｏ．を送信元ＷａｉｔＮｏ．として含む削除通知フレームを、隣接する各センサー中継ノード１０３に送信する。この処理は、図３８には示していないが、図３８のステップＳ３８０９→Ｓ３８１０の制御に相当する制御として、削除通知フレームの送信を実行すればよい。この結果、隣接する各センサー中継ノード１０３は、図４０のステップＳ４００２により、上記各センサー中継ノード１０３で、ＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．が０ｘＦＦに初期化される。
【０２９２】
これらのセンサー中継ノード１０３は、状態遷移Ｓ３として、さらに隣接ノードに、初期化されたＷａｉｔＮｏ．を含む削除通知フレームを送信する。この処理は、図４０のステップＳ４００４により行なわれる。これにより、条件によってセンサー中継ノード群１００全体について、各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．を自律的に初期化することが可能となる。
【０２９３】
図４８は、回線断時に、ヘルス情報を利用してＷａｉｔＮｏ．の再構築を行う例２の説明図である。この例２は、図１のシステム構成と同じである。
図４６に示される初期化処理により、図４８の破線４８０１で囲まれた範囲のセンサー中継ノード１０３において、ＷａｉｔＮｏ．テーブルの自ノードＷａｉｔＮｏ．が初期化されているとする。この場合、状態遷移Ｓ４において、隣接するＷａｉｔＮｏ．＝０ｘ０５と０ｘ０７を有するセンサー中継ノード１０３からのヘルスフレームの送信により、破線４８０１の範囲の各センサー中継ノード１０３のＷａｉｔＮｏ．が順次更新され、再構築される。この処理は、図３３のステップＳ３３０３→Ｓ３３０４→Ｓ３３０５の制御により行なわれる。
【０２９４】
図４９は、回線断時に、同期要求を利用してＷａｉｔＮｏ．の再構築を行う例２の説明図である。この例２は、図１のシステム構成と同じである。
図４７に示される初期化処理によりセンサー中継ノード群１００全体において、各センサー中継ノード１０３のＷａｉｔＮｏ．が初期化されているとする。この場合、状態遷移Ｓ１において、削除通知フレームや自ノード状態通知フレームを受け取った基幹中継ノード１０２は、時刻同期要求等のブロードキャストフレームを送信する。この結果、同期要求フレームを受信した各センサー中継ノード１０３で、前述した図１４のフローチャートの制御処理が実行されることにより、各センサー中継ノード１０３のＷａｉｔＮｏ．テーブルで、自ノードＷａｉｔＮｏ．が再構築させることが可能となる。
【０２９５】
以上説明した実施形態では、各センサー中継ノード１０３毎にＷａｉｔＮｏ．を持たせ、これを用いてルーティングを行うことで、経路が冗長となることが解決される。
より具体的には、本実施形態では、基幹中継ノード１０２からのホップ数に相当するルーティング情報であるＷａｉｔＮｏ．を用いることで、最適化されたルートの検出・構築を可能とするルーティング方式が構築される。また、このＷａｉｔＮｏ．により、アドホックネットワークへのセンサー中継ノード１０３の追加・削除を自動制御することで、自律的に迅速かつ最小ホップ数を有する最適経路の決定を可能とするルーティング方式が提供される。
【０２９６】
本実施形態によるＷａｉｔＮｏ．更新処理では、基幹中継ノード１０２から送信されたＷａｉｔＮｏ．が、センサー中継ノード群１００中の各センサー中継ノード１０３に順次伝達されてゆく。このとき、各センサー中継ノード１０３において、同期要求フレームまたはヘルスフレーム中の送信元ＷａｉｔＮｏ．の値が＋１ずつ増やされてゆく。そして、その増やされたＷａｉｔＮｏ．が、各センサー中継ノード１０３に自ノードＷａｉｔＮｏ．として設定され、さらに、その新たなＷａｉｔＮｏ．を有する同期要求フレーム又はヘルスフレームが、隣接するセンサー中継ノード１０３に転送されてゆく。このようにして、図１の各センサー中継ノード１０３には、実質的に、基幹中継ノード１０２からのホップ数に対応するＷａｉｔＮｏ．値を、自ノードＷａｉｔＮｏ．として設定することができる。
【０２９７】
また、本実施形態によるＷａｉｔＮｏ．更新処理では、同期要求フレームまたはヘルスフレームが受信される毎に、受信ポートに対応する隣接ノードのＷａｉｔＮｏ．がＷａｉｔＮｏ．テーブルに保持される。これにより、ホップ数が減る方向及び増加する方向の両方で、隣接ノードのＷａｉｔＮｏ．を把握することが可能となり、これに基づいて最短ホップ数の経路決定が行なわれる。
【０２９８】
また、本実施形態では、センサー中継ノード１０３は、回線断の発生時に、隣接ノードの状況に合わせて、自ノードＷａｉｔＮｏ．を自律的に更新することが可能となる。また、ルーティング制御部１００３は、隣接ノードからヘルスフレームによって回線断の発生を通知されたときに、隣接ノードの状況に合わせて、自ノードＷａｉｔＮｏ．を自律的に更新することが可能となる。これにより、回線断の発生時に、経路の自動的な再構築が可能となる。
【０２９９】
さらに、再構築完了後も、各センサー中継ノード１０３は、各ポートの障害検知とヘルスフレームの定期的受信を監視するで、新たな障害発生等に備えることが可能となる。
また、回線断の箇所が復旧した場合においても、ＷａｉｔＮｏ．の初期設定および再構築の制御が実行されることにより、最短ホップ数の経路の再構築を行うことが可能となる。
【０３００】
本実施形態において、図１２の構成は、ＭＡＣヘッダ３０１、ＭＡＣデータ３０２、およびＦＣＳ３０３からなるイーサネットフレームにアドホックヘッダ３０２−１、ＷａｉｔＮｏ．１２０１、およびデータ３０２−２からなるアドホックフレームが設定された構成を有する。すなわち、本実施形態では、イーサネットプロトコルのもとでアドホックフレームが通信される構成が採用されている。しかし、本発明はこのフレーム構成に限られるものではない。すなわち、センサー中継ノード１０３同士およびセンサー中継ノード１０３と基幹中継ノードが、アドホック通信プロトコルに基づいてアドホックフレームを直接通信するようなフレーム構成が採用されてもよい。
【０３０１】
また、前記実施形態では、wait NO. は、基幹中継ノードからセンサー中継ノードに向かって、インクリメントされるように付与したが、デクリメントされるように付与しても良い。その場合には、基幹中継ノードから目的のセンサー中継ノードにフレームを送信する場合、各センサー中継ノードは老番wait NO.ノードではなくて、若番wait NO.ノードを選択する。
【０３０２】
また、センサー中継ノードから、基幹中継ノードへフレームを送信する場合、基幹中継ノードからそのセンサー中継ノードへのフレーム送信時に決定された最適経路をそのまま逆にたどって送信するようにしてもよい。
【０３０３】
本実施形態は、サーバールームの空調管理やビル・セキュリティ管理、システム、ビルや橋等の構造物のゆがみ/たわみ等の振動チェック、及び、無線アドホックでの運用不可箇所の中継網構築等に利用することができる。
【符号の説明】
【０３０４】
１００  センサー中継ノード群
１０１  監視・制御サーバー
１０２  基幹中継ノード
１０３  センサー中継ノード
３０１  ＭＡＣヘッダ
３０２  ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）データ
３０２−１  アドホックヘッダ
３０２−２  データ
３０３  ＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）
１００１  アドホックルーティング制御デバイス
１００２  ＣＰＵ（中央演算処理装置）
１００３  ルーティング制御部
１００４  ＷａｉｔＮｏ．制御部
１００５  ＰＳテーブル
１００６  ＦＩＤテーブル
１００７  ＣＰＵインタフェース
１００８  レジスタ
１００９  フレーム処理部
１０１０  受信フレーム制御部
１０１１  送信フレーム制御部
１０１２  汎用ポート制御部
１０１３  ＦＰＧＡインタフェース
１０１４  ＤＩ／ＤＯインタフェース
１０１５  センサーインタフェース
１０１６  有線アドホックネットワークポート
１０１７  汎用ポート
１０１８  ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
１０１９  センサー接続ポート
１０２０  ＤＩ／ＤＯ端子
１２０１  送信元ＷａｉｔＮｏ．／送信先ＷａｉｔＮｏ．
【図１】
2012039040.tif 000003
【図２】
2012039040.tif 000004
【図３】
2012039040.tif 000005
【図４】
2012039040.tif 000006
【図５】
2012039040.tif 000007
【図６】
2012039040.tif 000008
【図７】
2012039040.tif 000009
【図８】
2012039040.tif 000010
【図９】
2012039040.tif 000011
【図１０】
2012039040.tif 000012
【図１１】
2012039040.tif 000013
【図１２】
2012039040.tif 000014
【図１３】
2012039040.tif 000015
【図１４】
2012039040.tif 000016
【図１５】
2012039040.tif 000017
【図１６】
2012039040.tif 000018
【図１７】
2012039040.tif 000019
【図１８】
2012039040.tif 000020
【図１９】
2012039040.tif 000021
【図２０】
2012039040.tif 000022
【図２１】
2012039040.tif 000023
【図２２】
2012039040.tif 000024
【図２３】
2012039040.tif 000025
【図２４】
2012039040.tif 000026
【図２５】
2012039040.tif 000027
【図２６】
2012039040.tif 000028
【図２７】
2012039040.tif 000029
【図２８】
2012039040.tif 000030
【図２９】
2012039040.tif 000031
【図３０】
2012039040.tif 000032
【図３１】
2012039040.tif 000033
【図３２】
2012039040.tif 000034
【図３３】
2012039040.tif 000035
【図３４】
2012039040.tif 000036
【図３５】
2012039040.tif 000037
【図３６】
2012039040.tif 000038
【図３７】
2012039040.tif 000039
【図３８】
2012039040.tif 000040
【図３９】
2012039040.tif 000041
【図４０】
2012039040.tif 000042
【図４１】
2012039040.tif 000043
【図４２】
2012039040.tif 000044
【図４３】
2012039040.tif 000045
【図４４】
2012039040.tif 000046
【図４５】
2012039040.tif 000047
【図４６】
2012039040.tif 000048
【図４７】
2012039040.tif 000049
【図４８】
2012039040.tif 000050
【図４９】
2012039040.tif 000051
【手続補正書】
【提出日】平成24年11月1日(2012.11.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のノード装置を含むネットワークにおけるルーティング方法であって、
前記ノード装置は、ウエイト番号を含む第１のフレームを受信すると、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶し、
前記ノード装置は、前記自ウエイト番号を含む第１のフレームを送出し、
前記ノード装置は、あて先のノード装置のウエイト番号を含む第２のフレームを受信すると、前記第２のフレーム中のウエイト番号と前記自ウエイト番号を比較し、
前記第２のフレーム中のウエイト番号が前記自ウエイト番号よりも大きければ、前記自ウエイト番号よりも大きなウエイト番号の送信先に前記第２のフレームを送出し、前記大きなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送し、
第２のフレーム中のウエイト番号が前記自ウエイト番号よりも小さければ、前記自ウエイト番号よりも小さなウエイト番号の送信先に前記第２のフレームを送出し、前記小さなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送する、
ことを特徴とするルーティング方法。
【請求項２】
前記ノード装置は、前記第２のフレーム中のウエイト番号と前記自ウエイト番号との比較において、前記第２のフレーム中のウエイト番号が前記自ノードのウエイト番号と同じである場合に、受信するかまたはループとして前記第２のフレームを送信元のノード装置に返送する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項３】
前記ノード装置は、前記第１のフレームを受信したときに、受信した前記第１のフレーム中のウエイト番号を受信時の通信ポートに対応付けて通信ポートウエイト番号として記憶し、
前記第２のフレームの送出先を、前記通信ポートウエイト番号により決定する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項４】
前記ノード装置は、通信障害が検出された場合において、前記第１のフレームとしてウエイト番号が初期化されたヘルスフレームを受信し、
前記自ウエイト番号が他のどの隣接するノード装置のウエイト番号よりも以下である場合に、前記自ウエイト番号を初期化し、
前記自ウエイト番号が通信可能な他のいずれかの隣接するノード装置のウエイト番号よりも大きい場合に、前記隣接するノード装置のウエイト番号をインクリメントして前記自ウエイト番号として記憶し、
その後、前記自ウエイト番号を含む第１のフレームとしてヘルスフレームを送出する、
ことを特徴とする請求項１に記載のルーティング方法。
【請求項５】
複数のノード装置を含むネットワークにおけるルーティング方法であって、
前記ノード装置は、ウエイト番号を含む第１のフレームを受信すると、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶し、
前記ノード装置は、前記自ウエイト番号を含む第１のフレームを送出し、
前記ノード装置は、あて先のノード装置のウエイト番号を含む第２のフレームを受信すると、前記第２のフレーム中のウエイト番号と前記自ウエイト番号を比較することにより、前記受信した第２のフレームを送出すべきノード装置をループの有無を含めて決定し、前記決定したノード装置に前記第２のフレームを送出する、
ことを特徴とするルーティング方法。
【請求項６】
ネットワークを構成するノード装置であって、
ウエイト番号を含む第１のフレームを受信すると、受信した前記第１のフレーム中のウエイト番号をインクリメントして自ウエイト番号として記憶し、前記自ウエイト番号を含む第１のフレームを送出するウエイト番号制御部と、
あて先のノード装置のウエイト番号を含む第２のフレームを受信すると、前記第２のフレーム中のウエイト番号と前記自ウエイト番号を比較し、
前記第２のフレーム中のウエイト番号が前記自ウエイト番号よりも大きければ、前記自ウエイト番号よりも大きなウエイト番号の送信先に前記第２のフレームを送出し、前記大きなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送し、
第２のフレーム中のウエイト番号が前記自ウエイト番号よりも小さければ、前記自ウエイト番号よりも小さなウエイト番号の送信先に前記第２のフレームを送出し、前記小さなウエイト番号の送信先がない場合にはループとして前記第２のフレームを送信元のノード装置に返送する、ルーティング制御部と、
を含むことを特徴とするノード装置。
【国際調査報告】
2012039040.tif 000052
2012039040.tif 000053