(57)【要約】【課題】重複データとループデータとを区別することを可能とするノード装置、データ中継方法、及び、プログラムを提供する。【解決手段】通信部１０は、リンクが存在する複数の隣接するノード装置１の内のいずれかの一つからデータフレームを受信する。データフレーム処理部３４は、受信したデータフレームのフレーム識別情報と一致する登録がＦＩＤテーブルＴ１に有り、受信したデータフレームのＨＴＬカウンタ値が示す転送回数が、その登録に対応するＨＴＬカウンタ値が示す転送回数より多い場合のみ、受信したデータフレームを、該データフレームの送信先として選択していない隣接するノード装置１へ再送信する。【選択図】図２
2015099982.tif 000002
【特許請求の範囲】
【請求項１】
転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置であって、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信する受信手段と、
前記データフレームを一意に識別可能なフレーム識別情報と、当該データフレームの前記転送回数情報と、が対応付けられているテーブルを格納する記憶手段と、
受信した前記データフレームの最終宛先が自ノード装置か否かを判定する第１判定手段と、
前記第１判定手段により、受信した前記データフレームの最終宛先が自ノード装置ではないと判定された場合に、受信した前記データフレームの前記フレーム識別情報と一致する登録が前記テーブルに有るか否かを判定する第２判定手段と、
前記第２判定手段により、前記登録が前記テーブルに有ると判定された場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定する第３判定手段と、
前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定された場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新するテーブル更新手段と、
前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定された場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントするデータフレーム更新手段と、
前記データフレーム更新手段により、前記転送回数がインクリメントされた後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する再送信手段と、
を備える、
ことを特徴とするノード装置。
【請求項２】
前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下であると判定された場合に、受信した前記データフレームを破棄する第１破棄手段を、更に、備える、
ことを特徴する請求項１に記載のノード装置。
【請求項３】
前記第２判定手段により、前記登録が前記テーブルには無いと判定された場合に、受信した前記データフレームの前記フレーム識別情報と前記転送回数情報とを対応付けて前記テーブルに登録する登録手段を、更に、備える、
ことを特徴とする請求項１又は２に記載のノード装置。
【請求項４】
受信した前記データフレームの最終宛先が自ノード装置である場合に、受信した前記データフレームの前記フレーム識別情報と一致する登録が前記テーブルに有るか否かを判定する第４判定手段と、
前記第４判定手段により、前記登録が前記テーブルには無いと判定された場合に、受信した前記データフレームの少なくとも前記フレーム識別情報を前記テーブルに登録する第２登録手段と、
前記第４判定手段により、前記登録が前記テーブルには無いと判定された場合のみ、受信した前記データフレームを上位層で処理させるために、前記上位層に出力する出力手段と、
を、更に、備える、
ことを特徴とする請求項１乃至３のいずれか一に記載のノード装置。
【請求項５】
前記第４判定手段により、前記登録が前記テーブルに有ると判定された場合に、受信した前記データフレームを破棄する第２破棄手段を、更に、備える、
ことを特徴とする請求項４に記載のノード装置。
【請求項６】
前記転送回数情報は、前記データフレームの前記転送回数を制限するためのカウンタのカウンタ値である、
ことを特徴とする請求項１乃至５のいずれか一に記載のノード装置。
【請求項７】
前記カウンタは、前記データフレームが転送されるたびに、インクリメント、又は、デクリメントされるカウンタであり、
前記データフレーム更新手段は、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントするために、受信した前記データフレームの前記カウンタをインクリメント、又は、デクリメントする、
ことを特徴とする請求項６に記載のノード装置。
【請求項８】
前記転送回数を１回とする前記データフレームを生成する生成手段と、
前記生成手段により生成された前記データフレームを送信する送信手段と、
を、更に、備える、
ことを特徴とする請求項１乃至７のいずれか一に記載のノード装置。
【請求項９】
前記受信手段により受信された前記データフレームは、暗号化されており、
暗号化されている前記データフレームを復号化する復号化手段を、更に、備え、
前記再送信手段は、前記データフレームを暗号化した後に、再送信する、
ことを特徴とする請求項１乃至７のいずれか一に記載のノード装置。
【請求項１０】
前記転送回数を１回とする前記データフレームを生成する生成手段と、
前記生成手段により生成された前記データフレームを暗号化する暗号化手段と、
前記暗号化手段により暗号化された前記データフレームを送信する送信手段と、
を、更に、備える、
ことを特徴とする請求項９に記載のノード装置。
【請求項１１】
転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置のデータ中継方法であって、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信し、
受信した前記データフレームの最終宛先が自ノード装置か否かを判定し、
受信した前記データフレームの最終宛先が自ノード装置ではないと判定した場合に、受信した前記データフレームの前記データフレームを一意に識別可能なフレーム識別情報と一致する登録が、前記データフレームの前記フレーム識別情報と当該データフレームの前記転送回数情報とが対応付けられているテーブルに、有るか否かを判定し、
前記登録が前記テーブルに有ると判定した場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントし、
前記転送回数をインクリメントした後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する、
ことを特徴とするデータ中継方法。
【請求項１２】
転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置のコンピュータに、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信し、
受信した前記データフレームの最終宛先が自ノード装置か否かを判定し、
受信した前記データフレームの最終宛先が自ノード装置ではないと判定した場合に、受信した前記データフレームの前記データフレームを一意に識別可能なフレーム識別情報と一致する登録が、前記データフレームの前記フレーム識別情報と当該データフレームの前記転送回数情報とが対応付けられているテーブルに、有るか否かを判定し、
前記登録が前記テーブルに有ると判定した場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントし、
前記転送回数をインクリメントした後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する、
処理を実行させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノード装置、データ中継方法、及び、プログラムに関する。
【背景技術】
【０００２】
近年、複数の通信装置（以下、ノード装置という）が自律分散的に相互接続するアドホックネットワークの研究が進められている（例えば、特許文献１を参照）。アドホックネットワークの各ノード装置は、通信環境に応じて自立的にネットワークを構築する。
【０００３】
具体的には、アドホックネットワークでは、アクセスポイントは設置されず、各ノード装置が、隣接するノード装置（以下、隣接ノード装置という）から受信したデータフレームをネットワークトポロジに基づいて、他の隣接ノード装置に中継することで、データフレームを宛先のノード装置に伝送する。この際、各ノード装置は、伝送品質のより良い経路を選択してデータフレームを送信する。
【０００４】
ネットワーク環境は、その時々で変化するため、各ノード装置が、ネットワークトポロジに基づいて、データフレームを送信したとしても、必ずしも、データフレームが宛先のノード装置に伝送されるとは限らない。
【０００５】
例えば、隣接ノード装置へ転送したデータフレームが、ループして戻ってくる場合がある。この場合、データフレームを転送したノード装置（ここでは、このノード装置のことを、中継ノード装置と称することとする）は、転送先として選択した隣接ノード装置を経由する経路は、正常な経路ではなくなったとして、経路の変更処理を行う。そして、中継ノード装置は、ループして戻ってきたデータフレーム（以下、ループデータという）を、他の隣接ノード装置へ再送信する。
【０００６】
また、ネットワーク環境には、データフレームなどのフレームの中継を妨害する不正なノード装置も存在している。このような不正なノード装置が、例えば、中継ノード装置により隣接ノード装置へ転送されたデータフレームを不正に受信し、受信したデータフレーム（以下、重複データという）を中継ノード装置に送信したとする。この場合、中継ノード装置は、隣接ノード装置へ転送したデータフレームがループして戻ってきたと誤判定し、この隣接ノード装置を経由する経路が正常であるにもかかわらず、誤って経路を変更してしまうこととなる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１９１２１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
このように、ノード装置が、重複データをループデータと誤って認識してしまうと、適切な経路を誤った経路へと変更してしまう恐れがある。適切な経路が誤った経路へと変更されてしまうと、データフレームが、宛先のノード装置へ届かなくなってしまう恐れがある。そのため、重複データとループデータとを区別することは非常に重要である。
【０００９】
一つの側面では、本発明は、重複データとループデータとを区別することを可能とするノード装置、データ中継方法、及び、プログラムを提供することを課題とする。
【課題を解決するための手段】
【００１０】
一態様に係るノード装置は、転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置であって、リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信する受信手段と、前記データフレームを一意に識別可能なフレーム識別情報と、当該データフレームの前記転送回数情報と、が対応付けられているテーブルを格納する記憶手段と、受信した前記データフレームの最終宛先が自ノード装置か否かを判定する第１判定手段と、前記第１判定手段により、受信した前記データフレームの最終宛先が自ノード装置ではないと判定された場合に、受信した前記データフレームの前記フレーム識別情報と一致する登録が前記テーブルに有るか否かを判定する第２判定手段と、前記第２判定手段により、前記登録が前記テーブルに有ると判定された場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定する第３判定手段と、前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定された場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新するテーブル更新手段と、前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定された場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントするデータフレーム更新手段と、前記データフレーム更新手段により、前記転送回数がインクリメントされた後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する再送信手段と、を備える。
【発明の効果】
【００１１】
誤った経路変更によるネットワークの切断やノード装置の孤立が生じるのを防止することが可能となり、適切な経路を維持することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】実施形態１におけるネットワークの構成例の一部を示す図である。
【図２】実施形態１におけるネットワークを構成するノード装置の構成例を示す機能ブロック図である。
【図３】実施形態１におけるデータフレームのヘッダのフォーマット例を示す図である。
【図４】図３に示すフォーマット例における各フィールドの説明である。
【図５】実施形態１におけるＦＩＤテーブルの例を示す図である。
【図６】ルーティングテーブルの例を示す図である。
【図７】実施形態１におけるフレーム種別特定処理のフローを説明するためのフローチャートの例である。
【図８】実施形態１における転送処理のフローを説明するためのフローチャートの例の一部である。
【図９】実施形態１における転送処理のフローを説明するためのフローチャートの例の他の一部である。
【図１０】実施形態１における具体例を説明するためのネットワークの構成例の一部を示す図である。
【図１１】図１０に示す例に対応するタイミングチャートである。
【図１２】図１１のタイミングチャートの各タイミングでの、ヘッダとノード装置Ｎ２のＦＩＤテーブルの内容を示す図である。
【図１３】図１０に示す例に対応する従来のタイミングチャートである。
【図１４】実施形態２における転送処理のフローを説明するためのフローチャートの例の一部である。
【図１５】実施形態２における転送処理のフローを説明するためのフローチャートの例の他の一部である。
【図１６】実施形態３における転送処理のフローを説明するためのフローチャートの例の一部である。
【図１７】実施形態におけるノード装置のハードウェア構成の例を示す図である。
【発明を実施するための形態】
【００１３】
以下に本発明の実施の形態について図面を参照しながら詳細に説明する。
【００１４】
（実施形態１）
図１は、本実施形態１におけるネットワーク１００の構成例の一部を示す図である。ネットワーク１００は、アドホックネットワークの一例であり、複数のノード装置１を含んで構成されている。ノード装置１間には、リンクが存在しており、図１では、リンクを実線で表している。
【００１５】
ノード装置１は、例えば、電力メータなどの検針ノード装置や各種のセンサを具備するセンサノード装置などである。ノード装置１がセンサノード装置の場合、ノード装置１は、データサーバの命令に従って、あるいは、自立的にセンサ等から情報を収集し、収集した情報（データフレーム）を、データサーバへ送信する。
【００１６】
ノード装置１は、図１においては、「Ｎｉ」（ｉ＝１，・・，７）として示されている。「Ｎｉ」は、ノード装置１を一意に識別可能なノードＩＤ（IDentification）である。
【００１７】
リンクは、無線リンクでも、有線リンクでもよい。例えば、図１を参照して、ノード装置Ｎ１とノード装置Ｎ２とが、他のノード装置１による中継を経ることなく、直接、通信可能な場合に、「ノード装置Ｎ１とノード装置Ｎ２との間にリンクが存在する」という。
【００１８】
リンクは、動的に変化し、例えば、天候や遮蔽物などの影響で、ノード装置１間にリンクが新たに確立されたり、今まで確立されていたリンクが消滅したりすることがある。また、例えば、ノード装置１が可動式であれば、ノード装置１間の距離の変動によってリンクの有無が変化することもある。また、例えば、ケーブルの接続替えにより、新たなリンクが確立されたり、今まで存在していたリンクが消滅したり、ケーブルの切断等の障害によってリンクが消滅することもある。
【００１９】
次に、図２を参照して、本実施形態１におけるノード装置１について説明する。図２は、本実施形態１におけるネットワーク１００を構成するノード装置１の構成例を示す機能ブロック図である。
【００２０】
ノード装置１は、図２に示すように、通信部１０と、記憶部２０と、制御部３０と、を備えて構成されている。
【００２１】
通信部１０は、通信モジュールなどで構成され、他のノード装置１との間で通信を行う。例えば、通信部１０は、データフレームなどのフレームを送受信する。通信部１０は、フレームを受信すると、受信したフレームを復号処理部３１（詳しくは後述）に出力する。
【００２２】
記憶部２０は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、フラッシュメモリなどで構成されている。記憶部２０は、制御部３０を構成する、例えば、ＭＰＵ（Micro-Processing Unit）のワークエリア、ノード装置１全体を制御するための動作プログラムなどの各種プログラムを格納するプログラムエリア、詳しくは後述のＦＩＤテーブルＴ１、ルーティングテーブルＴ２などの各種データを格納するデータエリアとして機能する。また、データエリアには、自ノードＩＤなども格納されている。
【００２３】
ここで、図３と図４を参照して、データフレーム処理部３４（詳しくは後述）により生成されるデータフレームのヘッダについて説明する。図３は、本実施形態１におけるデータフレームのヘッダのフォーマット例を示す図である。図４は、図３に示すフォーマット例における各フィールドの説明である。
【００２４】
本実施形態１におけるデータフレームのヘッダは、図３に示すように、ＬＤ（Local Destination）と、ＬＳ（Local Source）と、ＧＤ（Global Destination）と、ＧＳ（Global Source）と、ＦＩＤ（Frame IDentification）と、フレームタイプと、ＨＴＬ（Hop To Live）カウンタと、を含む。
【００２５】
ＬＤは、送信先となる隣接ノード装置１のノードＩＤであり、ＬＳとなるノード装置１のルート選択部３５（詳しくは後述）が、ルーティングテーブルＴ２を参照して、ＬＤを選択する。例えば、図１を参照して、ノード装置Ｎ１によりノード装置Ｎ２へ送信されたデータフレームのＬＤは、Ｎ２となる。
【００２６】
ＬＳは、送信元の隣接ノード装置１（受信側から見た場合）のノードＩＤであり、ＬＳとなるノード装置１のデータフレーム処理部３４が、「ＬＳ」フィールドに自ノードＩＤを格納する。例えば、図１を参照して、ノード装置Ｎ１によりノード装置Ｎ２へ送信されたデータフレームのＬＳは、Ｎ１となる。
【００２７】
ＧＤは、最終的な宛先となるノード装置１のノードＩＤである。ＧＳは、データフレームの発行元のノード装置（以下、発行元ノード装置ともいう）１のノードＩＤである。例えば、図１を参照して、ノード装置Ｎ１により発行されたデータフレームが、ノード装置Ｎ２、ノード装置Ｎ５の順番で中継され、最終的にノード装置Ｎ６へと送信される場合、該データフレームのＧＤは、Ｎ６であり、ＧＳは、Ｎ１である。
【００２８】
ＦＩＤは、フレームの発行元ノード装置１におけるフレームＩＤである。すなわち、発行元ノード装置１により生成されたＦＩＤが、ヘッダの「ＦＩＤ」フィールドに格納される。つまり、ＧＳとＦＩＤとを組合せることにより、フレームを一意に識別可能なフレーム識別情報となる。
【００２９】
フレームタイプは、フレームの種別を示す情報であり、データフレームにおいては、フレームの種別がデータフレームであることを示す情報が、「フレームタイプ」フィールドに格納される。フレームの種別としては、本実施形態１においては、少なくとも、ハローフレームと、データフレームの２つが存在する。
【００３０】
ハローフレームは、ハローフレーム生成部３６（詳しくは後述）により生成され、自ノード装置１の存在を他のノード装置１に対して通知するためのフレームであり、経路作成に必要な情報を含んでいる。データフレームは、発行元ノード装置１（ＧＳ）が最終的な宛先となるノード装置１（ＧＤ）に伝達しようとしている情報を、ペイロードとして含むフレームである。
【００３１】
ＨＴＬカウンタは、ホップ数を制限するためのカウンタであり、本実施形態１においては、カウンタ値が“０”となると転送処理を実行しないように構成されているものとする。ＨＴＬカウンタは、データフレームの発行元ノード装置１（ＧＳ）のデータフレーム処理部３４により初期値設定され、データフレームを転送する際に、転送元のノード装置１のデータフレーム処理部３４によりデクリメントされる。なお、本実施形態１においては、ＨＴＬカウンタの初期値は、“３０”とする。また、ＨＴＬカウンタに限定されるものではなく、データフレームの転送回数を管理可能なものであればよい。
【００３２】
次に、図５と図６を参照して、記憶部２０のデータエリアに格納されている、ＦＩＤテーブルＴ１、ルーティングテーブルＴ２について、それぞれ、説明する。
【００３３】
図５は、本実施形態１におけるＦＩＤテーブルＴ１の例を示す図である。本実施形態１におけるＦＩＤテーブルＴ１は、データフレーム処理部３４により管理されており、図５に示すように、「ＧＳ」と「ＦＩＤ」と「ＨＴＬカウンタ値」とが対応付けられているテーブルである。
【００３４】
図６は、ルーティングテーブルＴ２の例を示す図である。ルーティングテーブルＴ２は、リンク管理部３３（詳しくは後述）により管理されており、データフレームの転送先となる隣接ノード装置１を選択するために必要となる情報をＧＤごとに管理しているテーブルである。例えば、ルーティングテーブルＴ２は、図６に示すように、「ＧＤ」ごとに、「ＬＤ候補」と「優先度」とが対応付けられているテーブルである。
【００３５】
なお、図６に例示するルーティングテーブルＴ２は、図１に示すノード装置Ｎ２が格納するルーティングテーブルＴ２の例であり、優先度は、ｐ１＞ｐ２＞ｐ３＞・・・のように設定されているものとする。
【００３６】
「ＬＤ候補」は、リンクが存在する隣接ノード装置１のノードＩＤである。「優先度」は、ＬＤ候補の中からＬＤを選択する際の優先度を示している。この優先度は、可変してもよく、例えば、データフレームの送信が成功したか否かに基づいて、リンク管理部３３が優先度を変更するように構成してもよい。
【００３７】
図２に戻り、制御部３０は、例えば、ＭＰＵなどで構成され、記憶部２０のプログラムエリアに格納されている動作プログラムを実行して、図２に示すように、復号処理部３１と、フレーム種別特定部３２と、リンク管理部３３と、データフレーム処理部３４と、ルート選択部３５と、ハローフレーム生成部３６としての機能を実現すると共に、ノード装置１全体を制御する制御処理や詳しくは後述のフレーム種別特定処理、転送処理などの処理を実行する。
【００３８】
復号処理部３１は、所定の暗号アルゴリズムにしたがった暗号化（例えば、固定鍵、又は、ＬＤとＬＳとの共通鍵による暗号化）に対応した復号処理を実行する。具体的には、通信部１０は、フレームを受信すると、受信したフレームを復号処理部３１に出力する。復号処理部３１は、受信したフレームが暗号化されている場合には、復号処理を実行し、復号化されたフレームをフレーム種別特定部３２に出力する。一方、受信したフレームが暗号化されていない場合には、復号処理部３１は、復号処理を行うことなく、受信したフレームをフレーム種別特定部３２に出力する。
【００３９】
フレーム種別特定部３２は、通信部１０で受信したフレームの種別を特定する。具体的には、フレーム種別特定部３２は、復号処理部３１により必要に応じて復号化されたフレームのヘッダを解析して、フレームタイプに基づいて、フレームの種別を特定する。そして、フレーム種別特定部３２は、特定したフレームの種別がハローフレームの場合には、受信したフレームをリンク管理部３３に出力し、特定したフレームの種別がデータフレームの場合には、受信したフレームをデータフレーム処理部３４に出力する。
【００４０】
リンク管理部３３は、ルーティングテーブルＴ２の管理を行う。より具体的には、リンク管理部３３は、受信したフレームがハローフレームの場合に、受信したハローフレームを解析し、解析結果に基づいて、ルーティングテーブルＴ２の更新と生成を行う。また、リンク管理部３３は、ルート選択部３５よりルーティングテーブルＴ２の生成の指示が入力されると、例えば、過去に受信したハローフレームに基づいて、生成を指示されたＧＤに対応するルーティングテーブルＴ２を生成する。
【００４１】
また、リンク管理部３３は、データフレームの送信が成功したか否かに基づいて、ルーティングテーブルＴ２の優先度を変更する。例えば、リンク管理部３３は、データフレームの送信が失敗した場合、例えば、ループした場合には、データフレームの送信が失敗した「ＬＤ候補」に対応する優先度を最も低く設定する。
【００４２】
データフレーム処理部３４は、受信したデータフレームの処理を行う。より具体的には、まず、フレーム種別特定部３２よりデータフレームが入力されると、データフレーム処理部３４は、入力されたデータフレームのヘッダを解析し、ＬＤが自ノードＩＤと一致するか否かを判定する。そして、データフレーム処理部３４は、ＬＤが自ノードＩＤと一致しない場合には、受信したデータフレームを破棄する。
【００４３】
一方、ＬＤが自ノードＩＤと一致する場合には、データフレーム処理部３４は、更に、ＧＤが自ノードＩＤと一致するか否かを判定する。すなわち、データフレーム処理部３４は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【００４４】
受信したデータフレームの最終的な宛先が自ノード装置１の場合には、データフレーム処理部３４は、受信したデータフレームを上位層に出力する。データフレームの入力に応答して、上位層は、受信したデータフレームの処理を行う。
【００４５】
一方、受信したデータフレームの最終的な宛先が他のノード装置１の場合には、データフレーム処理部３４は、ヘッダとＦＩＤテーブルＴ１とを比較し、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。すなわち、データフレーム処理部３４は、同じデータフレームを既に受信したか否かを判定する。
【００４６】
ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあり、ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値以上の場合には、データフレーム処理部３４は、受信したデータフレームは、重複データであると判定する。すなわち、データフレーム処理部３４は、受信したデータフレームの転送回数が、そのエントリのＨＴＬカウンタ値が示す転送回数以下か否かを判定し、受信したデータフレームの転送回数が、そのエントリのＨＴＬカウンタ値が示す転送回数以下の場合に重複データであると判定する。
【００４７】
一方、ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値より小さい場合には、データフレーム処理部３４は、受信したデータフレームはループデータであると判定する。すなわち、データフレーム処理部３４は、受信したデータフレームの転送回数が、そのエントリのＨＴＬカウンタ値が示す転送回数より多い場合にループデータであると判定する。このように、本実施形態１では、ループデータと重複データとを区別することが可能である。
【００４８】
そして、データフレーム処理部３４は、受信したデータフレームを重複データと判定した場合には、受信したデータフレームを破棄し、ループデータと判定した場合には、ヘッダのＨＴＬカウンタ値でＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値を更新すると共に、ルート選択部３５に対して、ＬＤの再選択を指示する。この際、データフレーム処理部３４は、ループする旨とループデータを送信した際のＬＤとを、リンク管理部３３へ通知する。こうすることで、リンク管理部３３は、ルーティングテーブルＴ２の優先度を適切に変更することが可能となる。
【００４９】
一方、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１に存在しない場合には、すなわち、初めて受信したデータフレームの場合には、データフレーム処理部３４は、ＦＩＤテーブルＴ１への登録処理を行う。より具体的には、データフレーム処理部３４は、ヘッダのＧＳとＦＩＤとＨＴＬカウンタ値とを対応付けてＦＩＤテーブルＴ１に登録する。
【００５０】
そして、データフレーム処理部３４は、受信したデータフレームの送信を行うために、ルート選択部３５に対して、ＬＤの選択を指示する。
【００５１】
また、データフレーム処理部３４は、ルート選択部３５より選択されたＬＤが通知されると、データフレームの送信処理を行う。より具体的には、データフレーム処理部３４は、ルート選択部３５より選択されたＬＤが通知されると、ヘッダのＨＴＬカウンタをデクリメントし、ヘッダのＬＳに自ノードＩＤを設定すると共に、ヘッダのＬＤにルート選択部３５より選択されたＬＤを設定する。
【００５２】
そして、データフレーム処理部３４は、データフレームを所定の暗号アルゴリズムにしたがって暗号化（例えば、固定鍵、又は、ＬＤとＬＳとの共通鍵による暗号化）した後に、通信部１０を介して、設定したＬＤである隣接ノード装置１へ暗号化したデータフレームを送信する。
【００５３】
更に、データフレーム処理部３４は、上位層の要求に応答して、図３に例示するヘッダのデータフレームを生成する。この際、データフレーム処理部３４は、ＨＴＬカウンタを初期値設定する。また、データフレーム処理部３４は、所定の暗号アルゴリズムにしたがって、生成したデータフレームを暗号化し、通信部１０を介して、暗号化したデータフレームを他のノード装置１へ送信する。
【００５４】
ルート選択部３５は、受信したデータフレームを他のノード装置１へ送信する必要がある場合に、ルーティングテーブルＴ２を参照して、データフレームの送信先となる隣接ノード装置１、すなわち、ＬＤを選択する。そして、ルート選択部３５は、選択したＬＤをデータフレーム処理部３４へ通知する。
【００５５】
より具体的には、データフレーム処理部３４よりＬＤの選択を指示された場合に、ルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定する。そして、ルート選択部３５は、ルーティングテーブルＴ２を特定できた場合には、特定したルーティングテーブルＴ２の優先度に基づいて、送信先の隣接ノード装置１、すなわち、ＬＤを選択する。
【００５６】
一方、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定できなかった場合には、ルート選択部３５は、リンク管理部３３に対し、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２の生成を指示する。そして、ルート選択部３５は、リンク管理部３３により生成されたルーティングテーブルＴ２の優先度に基づいて、送信先の隣接ノード装置１、すなわち、ＬＤを選択する。
【００５７】
例えば、送信対象のデータフレームがループデータではない場合には、すなわち、初めて受信したデータフレームの場合には、ルート選択部３５は、送信元の隣接ノード装置１（ＬＳ）を除いたＬＤ候補の中から、優先度が最も高いＬＤ候補を、ＬＤとして選択する。
【００５８】
また、例えば、送信対象のデータフレームがループデータの場合には、ルート選択部３５は、送信元の隣接ノード装置１（ＬＳ）及び既に送信を試みた隣接ノード装置１を除いたＬＤ候補の中から、優先度が最も高いＬＤ候補を、ＬＤとして選択する。
【００５９】
この際、ＬＤを特定できなかった場合には、ルート選択部３５は、送信対象のデータフレームを送信元の隣接ノード装置１（ＬＳ）へ送り返すために、送信元の隣接ノード装置１（ＬＳ）をＬＤとして選択する。
【００６０】
ハローフレーム生成部３６は、ハローフレームを所定のタイミング（例えば、定期的に）で生成し、通信部１０を介して、生成したハローフレームを隣接ノード装置１へ送信する。
【００６１】
次に、図７を参照して、本実施形態１におけるフレーム種別特定処理の流れについて説明する。図７は、本実施形態１におけるフレーム種別特定処理のフローを説明するためのフローチャートの例である。本フレーム種別特定処理は、フレームの受信をトリガとして開始される。
【００６２】
復号処理部３１は、フレームを受信したか否かを判定する（ステップＳ００１）。復号処理部３１によりフレームを受信していないと判定された場合には（ステップＳ００１；ＮＯ）、処理はステップＳ００１の処理を繰り返し、フレームの受信を待つ。
【００６３】
一方、フレームを受信したと判定した場合には（ステップＳ００１；ＹＥＳ）、復号処理部３１は、受信したフレームを必要に応じて復号化し、その後、受信したフレームをフレーム種別特定部３２に出力する（ステップＳ００２）。そして、フレーム種別特定部３２は、必要に応じて復号化されたフレームのヘッダを解析し、フレームタイプに基づいて、フレームの種別を特定し（ステップＳ００３）、特定した種別がデータフレームか否かを判定する（ステップＳ００４）。
【００６４】
データフレームであると判定した場合には（ステップＳ００４；ＹＥＳ）、フレーム種別特定部３２は、受信したフレームをデータフレーム処理部３４に出力する（ステップＳ００５）。そして、データフレーム処理部３４は、受信したデータフレームの転送処理を行い（ステップＳ００６）、処理はステップＳ００１の処理へと戻り、前述の処理を繰り返す。
【００６５】
一方、データフレームではないと判定した場合には（ステップＳ００４；ＮＯ）、フレーム種別特定部３２は、更に、特定した種別がハローフレームか否かを判定する（ステップＳ００７）。
【００６６】
フレーム種別特定部３２によりハローフレームでもないと判定された場合には（ステップＳ００７；ＮＯ）、処理はステップＳ００１の処理へと戻り、前述の処理を繰り返す。
【００６７】
一方、ハローフレームであると判定した場合には（ステップＳ００７；ＹＥＳ）、フレーム種別特定部３２は、受信したフレームをリンク管理部３３に出力する（ステップＳ００８）。そして、リンク管理部３３は、ルーティングテーブルＴ２の生成や更新などの所定の経路管理処理を行い（ステップＳ００９）、処理はステップＳ００１の処理へと戻り、前述の処理を繰り返す。
【００６８】
次に、図８と図９を参照して、本実施形態１における転送処理の流れについて説明する。図８と図９は、それぞれ、本実施形態１における転送処理のフローを説明するためのフローチャートの例の一部と、他の一部である。本転送処理は、上述のフレーム種別特定処理のステップＳ００６の処理に対応する処理である。
【００６９】
データフレーム処理部３４は、受信したデータフレームのヘッダを解析し、ＬＤが自ノードＩＤと一致するか否かを判定する（ステップＳ１０１）。
【００７０】
ＬＤが自ノードＩＤと一致しないと判定した場合には（ステップＳ１０１；ＮＯ）、データフレーム処理部３４は、受信したデータフレームを破棄する（ステップＳ１０２）。そして、本処理は終了する。
【００７１】
一方、ＬＤが自ノードＩＤと一致すると判定した場合には（ステップＳ１０１；ＹＥＳ）、データフレーム処理部３４は、更に、ＧＤが自ノードＩＤと一致するか否かを判定する（ステップＳ１０３）。すなわち、データフレーム処理部３４は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【００７２】
ＧＤが自ノードＩＤと一致すると判定した場合には（ステップＳ１０３；ＹＥＳ）、データフレーム処理部３４は、受信したデータフレームを上位層に出力し、上位層は、データフレームの入力に応答して、受信したデータフレームの処理を行う（ステップＳ１０４）。そして、本処理は終了する。
【００７３】
一方、ＧＤが自ノードＩＤと一致しないと判定した場合には（ステップＳ１０３；ＮＯ）、データフレーム処理部３４は、ヘッダとＦＩＤテーブルＴ１とを比較し（ステップＳ１０５）、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する（ステップＳ１０６）。すなわち、データフレーム処理部３４は、同じデータフレームを既に受信したか否かを判定する。
【００７４】
ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあると判定した場合には（ステップＳ１０６；ＹＥＳ）、データフレーム処理部３４は、更に、ヘッダのＨＴＬカウンタ値が、ＧＳとＦＩＤとの組合せがヘッダのＧＳとＦＩＤとの組合せと一致するエントリのＨＴＬカウンタ値以上か否かを判定する（ステップＳ１０７）。
【００７５】
ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値以上であると判定した場合には（ステップＳ１０７；ＹＥＳ）、すなわち、受信したデータフレームは重複データであると判定した場合には、データフレーム処理部３４は、受信したデータフレームを破棄する（ステップＳ１０２）。そして、本処理は終了する。
【００７６】
一方、ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値より小さいと判定した場合には（ステップＳ１０７；ＮＯ）、すなわち、受信したデータフレームはループデータであると判定した場合には、データフレーム処理部３４は、ヘッダのＨＴＬカウンタ値でＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値を更新すると共に（ステップＳ１０８）、ルート選択部３５に対して、ＬＤの再選択を指示する（ステップＳ１０９）。
【００７７】
ＬＤの再選択の指示を受けたルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定し（ステップＳ１１０）、送信対象のデータフレームを送信していない「ＬＤ候補」が有るか否かを判定する（ステップＳ１１１）。
【００７８】
ルート選択部３５により、送信対象のデータフレームを送信していない「ＬＤ候補」がまだ有ると判定された場合には（ステップＳ１１１；ＹＥＳ）、処理は後述のステップＳ２０７の処理へと進む。一方、送信対象のデータフレームを送信していない「ＬＤ候補」はもう無いと判定した場合には（ステップＳ１１１；ＮＯ）、ルート選択部３５は、ＬＳをＬＤとして選択し（ステップＳ１１２）、処理は後述のステップＳ２０８の処理へと進む。すなわち、送信元の隣接ノード装置１へ受信したデータフレームを送り返すための処理を行う。
【００７９】
ここで、ステップＳ１０６の処理において、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にないと判定した場合には（ステップＳ１０６；ＮＯ）、すなわち、初めて受信したデータフレームであると判定した場合には、データフレーム処理部３４は、ヘッダのＧＳとＦＩＤとＨＴＬカウンタ値とを対応付けてＦＩＤテーブルＴ１に登録する（ステップＳ２０１）。
【００８０】
そして、データフレーム処理部３４は、ルート選択部３５に対し、ＬＤの選択を指示する（ステップＳ２０２）。
【００８１】
ＬＤの選択指示を受けたルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定し（ステップＳ２０３）、ルーティングテーブルＴ２を特定できたか否かを判定する（ステップＳ２０４）。ルーティングテーブルＴ２を特定できなかったと判定した場合には（ステップＳ２０４；ＮＯ）、ルート選択部３５は、リンク管理部３３に対し、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２の生成を指示する（ステップＳ２０５）。
【００８２】
ルーティングテーブルＴ２の生成指示を受けたリンク管理部３３は、生成を指示されたＧＤに対応するルーティングテーブルＴ２を生成する（ステップＳ２０６）。
【００８３】
そして、ルート選択部３５は、ステップＳ１１０又はステップＳ２０３の処理で特定した、あるいは、ステップＳ２０６の処理で生成されたルーティングテーブルＴ２の優先度に基づいて、送信先の隣接ノード装置１、すなわち、ＬＤを選択する（ステップＳ２０７）。
【００８４】
そして、ルート選択部３５は、データフレーム処理部３４に対し、選択したＬＤを通知する（ステップＳ２０８）。選択されたＬＤの通知を受けたデータフレーム処理部３４は、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ヘッダの設定を行う（ステップＳ２１０）。
【００８５】
そして、データフレーム処理部３４は、所定の暗号アルゴリズムにしたがって、データフレームを暗号化した後に、通信部１０を介して、設定したＬＤ、すなわち、ルート選択部３５により選択されたＬＤである隣接ノード装置１へ暗号化したデータフレームを送信する（ステップＳ２１１）。そして、本処理は終了する。
【００８６】
次に、図６、図８乃至図１２を参照して、具体例に従って、本実施形態１における転送処理の流れについて説明する。
【００８７】
図１０は、本実施形態１における具体例を説明するためのネットワーク１００の構成例の一部を示す図である。なお、図中のノード装置ＮＸは、本具体例において、ネットワーク１００とは関係の無いノード装置であり、不正にデータフレームを受信し、再送攻撃を行うノード装置である。図１１は、図１０に示す例に対応するタイミングチャートである。図１２は、図１１のタイミングチャートの各タイミングでの、ヘッダとノード装置Ｎ２のＦＩＤテーブルＴ１の内容を示す図である。
【００８８】
なお、同時に複数の異なるデータフレームがネットワーク１００を介して、伝送され得るが、ここでは、一つのデータフレームの中継の流れに着眼して説明するものとする。また、図１０などの図中の（）内の番号は、各タイミングを識別するために付した番号であり、これらの番号は、図１０乃至図１２において、対応付けられているものとする。また、本具体例においては、ノード装置Ｎ２から隣接ノード装置Ｎ７を経由する経路は正常な経路であるものとする。
【００８９】
図１０と図１１を参照して、タイミング（１）において、ノード装置Ｎ１はＧＳとして、ＧＤをＧＤ３、ＦＩＤをＦＩＤ１としたデータフレームを生成し、生成したデータフレームを暗号化した後に、ノード装置Ｎ２へ送信する。タイミング（１）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ２、“３０”である。
【００９０】
図８と図９を参照して、データフレームを受信したノード装置Ｎ２は、初めて受信したデータフレームであることから（ステップＳ１０６；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とＨＴＬカウンタ値（３０）とを対応付けて、図１２に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ２０１）。
【００９１】
そして、ノード装置Ｎ２は、ＧＤ３に対応するルーティングテーブルＴ１を特定する（ステップＳ２０３）。図６を参照して、ＧＤ３のＬＤ候補の内でノード装置Ｎ３の優先度が最も高いことから、ノード装置Ｎ２は、ノード装置Ｎ３をＬＤとして選択し（ステップＳ２０７）、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ノード装置Ｎ２は、ヘッダのＬＳをＮ２、ＬＤをＮ３とする（ステップＳ２１０）。
【００９２】
そして、図１０と図１１に示すように、タイミング（２）において、ノード装置Ｎ２は、ノードＮ３へ暗号化したデータフレームを送信する（ステップＳ２１１）。タイミング（２）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ３、“２９”となる。
【００９３】
図８と図９を参照して、データフレームを受信したノード装置Ｎ３は、初めて受信したデータフレームであることから（ステップＳ１０６；ＮＯ）、ヘッダ情報をＦＩＤテーブルＴ１に登録する（ステップＳ２０１）。本具体例においては、ノード装置Ｎ３は、データフレームの転送先としてノード装置Ｎ４を選択するものとすると、ノード装置Ｎ３は、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ヘッダのＬＳをＮ３、ＬＤをＮ４とする（ステップＳ２１０）。
【００９４】
そして、図１０と図１１に示すように、タイミング（３）において、ノード装置Ｎ３は、ノード装置Ｎ４へ暗号化したデータフレームを送信する。タイミング（３）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ４、“２８”となる。
【００９５】
図８と図９を参照して、データフレームを受信したノード装置Ｎ４は、初めて受信したデータフレームであることから（ステップＳ１０６；ＮＯ）、ヘッダ情報をＦＩＤテーブルＴ１に登録する（ステップＳ２０１）。本具体例においては、ノード装置Ｎ４は、データフレームの転送先としてノード装置Ｎ２を選択するものとすると、ノード装置Ｎ４は、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ヘッダのＬＳをＮ４、ＬＤをＮ２とする（ステップＳ２１０）。
【００９６】
そして、図１０と図１１に示すように、タイミング（４）において、ノード装置Ｎ４は、ノード装置Ｎ２へ暗号化したデータフレームを送信する。タイミング（４）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ２、“２７”となる。
【００９７】
図８と図９を参照して、データフレームを受信したノード装置Ｎ２は、ヘッダのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）との組合せは、ノード装置２のＦＩＤテーブルＴ１に登録されていることから（ステップＳ１０６；ＹＥＳ）、ヘッダのＨＴＬカウンタ値（２７）とＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（３０）とを比較する。この場合、ヘッダのＨＴＬカウンタ値（２７）は、ＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（３０）より小さいことから（ステップＳ１０７；ＮＯ）、ノード装置２は、受信したデータフレームは、ループデータであると判定する。
【００９８】
したがって、ノード装置２は、ヘッダのＨＴＬカウンタ値（２７）で、ＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（３０）を更新する（ステップＳ１０８）。図６を参照して、ＧＤ３のＬＤ候補の内で、ノード装置Ｎ５の優先度がノード装置Ｎ３の次に高いことから、ノード装置Ｎ２は、ノード装置Ｎ５をＬＤとして選択し（ステップＳ２０７）、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ノード装置Ｎ２は、ヘッダのＬＳをＮ２、ＬＤをＮ５とする（ステップＳ２１０）。
【００９９】
そして、図１０と図１１に示すように、タイミング（５）において、ノード装置Ｎ２は、ノード装置Ｎ５へ暗号化したデータフレームを送信する。タイミング（５）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ５、“２６”となる。
【０１００】
図８と図９を参照して、データフレームを受信したノード装置Ｎ５は、初めて受信したデータフレームであることから（ステップＳ１０６；ＮＯ）、ヘッダ情報をＦＩＤテーブルＴ１に登録する（ステップＳ２０１）。本具体例においては、ノード装置Ｎ５は、データフレームの転送先としてノード装置Ｎ６を選択するものとすると、ノード装置Ｎ５は、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ヘッダのＬＳをＮ５、ＬＤをＮ６とする（ステップＳ２１０）。
【０１０１】
そして、図１０と図１１に示すように、タイミング（６）において、ノード装置Ｎ５は、ノード装置Ｎ６へ暗号化したデータフレームを送信する。タイミング（６）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ６、“２５”となる。
【０１０２】
図８と図９を参照して、データフレームを受信したノード装置Ｎ６は、初めて受信したデータフレームであることから（ステップＳ１０６；ＮＯ）、ヘッダ情報をＦＩＤテーブルＴ１に登録する（ステップＳ２０１）。本具体例においては、ノード装置Ｎ６は、データフレームの転送先としてノード装置Ｎ２を選択するものとすると、ノード装置Ｎ６は、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ヘッダのＬＳをＮ６、ＬＤをＮ２とする（ステップＳ２１０）。
【０１０３】
そして、図１０と図１１に示すように、タイミング（７）において、ノード装置Ｎ６は、ノード装置Ｎ２へ暗号化したデータフレームを送信する。タイミング（７）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ２、“２４”となる。
【０１０４】
図８と図９を参照して、データフレームを受信したノード装置Ｎ２は、ヘッダのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）との組合せは、既に、ノード装置２のＦＩＤテーブルＴ１に登録されていることから（ステップＳ１０６；ＹＥＳ）、ヘッダのＨＴＬカウンタ値（２４）とＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（２７）とを比較する。この場合、ヘッダのＨＴＬカウンタ値（２４）は、ＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（２７）より小さいことから（ステップＳ１０７；ＮＯ）、ノード装置２は、受信したデータフレームは、ループデータであると判定する。
【０１０５】
したがって、ノード装置２は、ヘッダのＨＴＬカウンタ値（２４）で、ＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（２７）を更新する（ステップＳ１０８）。図６を参照して、ＧＤ３のＬＤ候補の内で、ノード装置Ｎ７の優先度がノード装置Ｎ５の次に高いことから、ノード装置Ｎ２は、ノード装置Ｎ７をＬＤとして選択し（ステップＳ２０７）、ヘッダのＨＴＬカウンタをデクリメントすると共に（ステップＳ２０９）、ノード装置Ｎ２は、ヘッダのＬＳをＮ２、ＬＤをＮ７とする（ステップＳ２１０）。
【０１０６】
そして、図１０と図１１に示すように、タイミング（８）において、ノード装置Ｎ２は、ノード装置Ｎ７へ暗号化したデータフレームを送信する。タイミング（８）におけるデータフレームのＧＳとＦＩＤとＬＤとＨＴＬカウンタ値は、それぞれ、図１２に示すように、Ｎ１、ＦＩＤ１、Ｎ７、“２３”となる。
【０１０７】
ここで、図１０と図１１を参照して、ネットワーク１００とは関係の無いノード装置ＮＸが、タイミング（４）でノード装置Ｎ４がノード装置Ｎ２宛に送信したデータフレームを不正に受信して、タイミング（９）で、不正に受信したデータフレーム（ＨＴＬカウンタ値＝２７）をノード装置Ｎ２に対して再送攻撃したとする。
【０１０８】
この場合、図８と図９を参照して、データフレーム（ＨＴＬカウンタ値＝２７）の再送攻撃を受けたノード装置Ｎ２は、ヘッダのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）との組合せは、既に、ノード装置２のＦＩＤテーブルＴ１に登録されていることから（ステップＳ１０６；ＹＥＳ）、ヘッダのＨＴＬカウンタ値（２７）とＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（２４）とを比較する。
【０１０９】
そして、比較の結果、ヘッダのＨＴＬカウンタ値（２７）は、ＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値（２４）以上であることから（ステップＳ１０７；ＹＥＳ）、ノード装置Ｎ２は、受信したデータフレームは重複データであると判定し、受信したデータフレームを破棄する（ステップＳ１０２）。
【０１１０】
このように、重複データをループデータとは区別して検出することで、ノード装置Ｎ２は、隣接ノード装置Ｎ７を経由するＧＤ３宛の経路を正常経路として管理することが可能となる。また、重複データを破棄することで、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０１１１】
次に、図１０と図１３を参照して、ＨＴＬカウンタ値をＦＩＤテーブルＴ１で管理していない従来における転送処理の流れについて説明する。図１３は、図１０に示す例に対応する従来のタイミングチャートである。なお、以下においては、タイミング（１）と（９）についてのみ説明することとする。
【０１１２】
図１０と図１３を参照して、タイミング（１）において、ノード装置Ｎ１はＧＳとして、ＧＤをＧＤ３、ＦＩＤをＦＩＤ１としたデータフレームを生成し、生成したデータフレームを暗号化した後に、ノード装置Ｎ２へ送信する。
【０１１３】
データフレームを受信したノード装置Ｎ２は、初めて受信したデータフレームであることから、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とを対応付けてＦＩＤテーブルＴ１に登録する。
【０１１４】
図１０と図１３を参照して、タイミング（９）において、ネットワーク１００とは関係の無いノード装置ＮＸが、タイミング（４）でノード装置Ｎ４がノード装置Ｎ２宛に送信したデータフレームを不正に受信して、不正に受信したデータフレームをノード装置Ｎ２に対して再送攻撃したとする。
【０１１５】
従来方式の場合、データフレームの再送攻撃を受けたノード装置Ｎ２は、ヘッダのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）との組合せは、既に、ノード装置２のＦＩＤテーブルＴ１に登録されていることから、受信したデータフレームはループデータであると判定してしまう。そのため、正常経路である隣接ノード装置Ｎ７を経由する経路を、誤って、変更してしまうこととなる。誤った経路変更は、ネットワークの切断やノード装置１の孤立を生じさせ、適切な経路の維持を困難とする。
【０１１６】
上記実施形態１によれば、ノード装置１は、データフレームを受信すると、ＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１に有るか否かを判定し、一致する登録がある場合には、更に、ヘッダのＨＴＬカウンタ値とＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値とを比較することで、受信したデータフレームがループデータか、それとも、重複データかを判定する。
【０１１７】
このように構成することで、再送攻撃による重複データとループデータとを区別することが可能となる。これにより、重複データがループデータであると誤判定されることによる誤った経路変更を防止することが可能となる。したがって、誤った経路変更によるネットワークの切断やノード装置の孤立が生じるのを防止することが可能となり、適切な経路を維持することが可能となる。
【０１１８】
また、上記実施形態１によれば、ノード装置１は、受信したデータフレームが重複データである場合には、受信したデータフレームを他のノード装置１へ送信することなく破棄する。このように構成することで、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０１１９】
また、上記実施形態１によれば、データフレームは暗号化されて送信される。したがって、データフレームが不正に受信されたとしても、ＨＴＬカウンタ値などが改竄されるのを防ぐことが可能である。
【０１２０】
（実施形態２）
実施形態１においては、ＨＴＬカウンタが、転送されるたびに、デクリメントされる場合を例に説明した。本実施形態２においては、ＨＴＬカウンタが、転送されるたびに、インクリメントされる場合について説明する。
【０１２１】
本実施形態２におけるノード装置１の構成は、基本的には実施形態１の場合と同じである。但し、制御部３０の共通する機能部の一部（データフレーム処理部３４）が果たす役割が実施形態１の場合と若干異なっている。また、本実施形態２においては、ＨＴＬカウンタ値が所定値、例えば、“３０”を超えると転送処理を実行しないように構成されているものとする。
【０１２２】
データフレーム処理部３４は、受信したデータフレームの処理を行う。より具体的には、まず、フレーム種別特定部３２よりデータフレームが入力されると、データフレーム処理部３４は、入力されたデータフレームのヘッダを解析し、ＬＤが自ノードＩＤと一致するか否かを判定する。そして、データフレーム処理部３４は、ＬＤが自ノードＩＤと一致しない場合には、受信したデータフレームを破棄する。
【０１２３】
一方、ＬＤが自ノードＩＤと一致する場合には、データフレーム処理部３４は、更に、ＧＤが自ノードＩＤと一致するか否かを判定する。すなわち、データフレーム処理部３４は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【０１２４】
受信したデータフレームの最終的な宛先が自ノード装置１の場合には、データフレーム処理部３４は、受信したデータフレームを上位層に出力する。データフレームの入力に応答して、上位層は、受信したデータフレームの処理を行う。
【０１２５】
一方、受信したデータフレームの最終的な宛先が他のノード装置１の場合には、データフレーム処理部３４は、ヘッダとＦＩＤテーブルＴ１とを比較し、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。すなわち、データフレーム処理部３４は、同じデータフレームを既に受信したか否かを判定する。
【０１２６】
ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあり、ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値以下の場合には、データフレーム処理部３４は、受信したデータフレームは、重複データであると判定する。すなわち、データフレーム処理部３４は、受信したデータフレームの転送回数が、そのエントリのＨＴＬカウンタ値が示す転送回数以下か否かを判定し、受信したデータフレームの転送回数が、そのエントリのＨＴＬカウンタ値が示す転送回数以下の場合に重複データであると判定する。
【０１２７】
一方、ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値より大きい場合には、データフレーム処理部３４は、受信したデータフレームはループデータであると判定する。すなわち、データフレーム処理部３４は、受信したデータフレームの転送回数が、そのエントリのＨＴＬカウンタ値が示す転送回数より多い場合にループデータであると判定する。
【０１２８】
そして、データフレーム処理部３４は、受信したデータフレームを重複データと判定した場合には、受信したデータを破棄し、ループデータと判定した場合には、ヘッダのＨＴＬカウンタ値でＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値を更新すると共に、ルート選択部３５に対して、ＬＤの再選択を指示する。この際、データフレーム処理部３４は、ループする旨とループデータを送信した際のＬＤとを、リンク管理部３３へ通知する。こうすることで、リンク管理部３３は、ルーティングテーブルＴ２の優先度を適切に変更することが可能となる。
【０１２９】
一方、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１に存在しない場合には、すなわち、初めて受信したデータフレームの場合には、データフレーム処理部３４は、ＦＩＤテーブルＴ１への登録処理を行う。より具体的には、データフレーム処理部３４は、ヘッダのＧＳとＦＩＤとＨＴＬカウンタ値とを対応付けてＦＩＤテーブルＴ１に登録する。
【０１３０】
そして、データフレーム処理部３４は、受信したデータフレームの送信を行うために、ルート選択部３５に対して、ＬＤの選択を指示する。
【０１３１】
また、データフレーム処理部３４は、ルート選択部３５より選択されたＬＤが通知されると、データフレームの送信処理を行う。より具体的には、データフレーム処理部３４は、ルート選択部３５より選択されたＬＤが通知されると、ヘッダのＨＴＬカウンタをインクリメントし、ヘッダのＬＳに自ノードＩＤを設定すると共に、ヘッダのＬＤにルート選択部３５より選択されたＬＤを設定する。
【０１３２】
そして、データフレーム処理部３４は、データフレームを所定の暗号アルゴリズムにしたがって暗号化（例えば、固定鍵、又は、ＬＤとＬＳとの共通鍵による暗号化）した後に、通信部１０を介して、設定したＬＤである隣接ノード装置１へ暗号化したデータフレームを送信する。
【０１３３】
更に、データフレーム処理部３４は、上位層の要求に応答して、図３に例示するヘッダのデータフレームを生成する。この際、データフレーム処理部３４は、ＨＴＬカウンタを初期値設定（本実施形態２においては、例えば、“１”を初期値とする。）する。また、データフレーム処理部３４は、所定の暗号アルゴリズムにしたがって、生成したデータフレームを暗号化し、通信部１０を介して、暗号化したデータフレームを他のノード装置１へ送信する。
【０１３４】
次に、図１４と図１５を参照して、本実施形態２における転送処理の流れについて説明する。図１４と図１５は、それぞれ、本実施形態２における転送処理のフローを説明するためのフローチャートの例の一部と、他の一部である。本転送処理は、実施形態１で説明したフレーム種別特定処理にステップＳ００６の処理に対応する処理である。
【０１３５】
なお、本実施形態２におけるフレーム種別特定処理は、実施形態１の場合と同じである。また、実施形態１の場合と同じ処理のステップには同一の符号を付している。ここでは、実施形態１の場合と異なる部分の処理を中心に説明する。
【０１３６】
データフレーム処理部３４は、ヘッダとＦＩＤテーブルＴ１とを比較し（ステップＳ１０５）、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する（ステップＳ１０６）。すなわち、データフレーム処理部３４は、同じデータフレームを既に受信したか否かを判定する。
【０１３７】
ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあると判定した場合には（ステップＳ１０６；ＹＥＳ）、データフレーム処理部３４は、更に、ヘッダのＨＴＬカウンタ値が、ＧＳとＦＩＤとの組合せがヘッダのＧＳとＦＩＤとの組合せと一致するエントリのＨＴＬカウンタ値以下か否かを判定する（ステップＳ１０７Ａ）。
【０１３８】
ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値以下であると判定した場合には（ステップＳ１０７Ａ；ＹＥＳ）、すなわち、受信したデータフレームは重複データであると判定した場合には、データフレーム処理部３４は、受信したデータフレームを破棄する（ステップＳ１０２）。そして、本処理は終了する。
【０１３９】
一方、ヘッダのＨＴＬカウンタ値が、そのエントリのＨＴＬカウンタ値より大きいと判定した場合には（ステップＳ１０７Ａ；ＮＯ）、すなわち、受信したデータフレームはループデータであると判定した場合には、データフレーム処理部３４は、ヘッダのＨＴＬカウンタ値でＦＩＤテーブルＴ１の対応するＨＴＬカウンタ値を更新すると共に（ステップＳ１０８）、ルート選択部３５に対して、ＬＤの再選択を指示する（ステップＳ１０９）。そして、処理は実施形態１で説明したステップＳ１１０の処理へと進む。
【０１４０】
ステップＳ１０６の処理において、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にないと判定した場合には（ステップＳ１０６；ＮＯ）、すなわち、初めて受信したデータフレームであると判定した場合には、データフレーム処理部３４は、ヘッダのＧＳとＦＩＤとＨＴＬカウンタ値とを対応付けてＦＩＤテーブルＴ１に登録する（ステップＳ２０１）。そして、処理は実施形態１で説明したステップＳ２０２の処理へと進む。
【０１４１】
ここで、ステップＳ２０８の処理において、ルート選択部３５は、データフレーム処理部３４に対し、選択したＬＤを通知する（ステップＳ２０８）。選択されたＬＤの通知を受けたデータフレーム処理部３４は、ヘッダのＨＴＬカウンタをインクリメントすると共に（ステップＳ２０９Ａ）、ヘッダの設定を行う（ステップＳ２１０）。
【０１４２】
そして、データフレーム処理部３４は、所定の暗号アルゴリズムにしたがって、データフレームを暗号化した後に、通信部１０を介して、設定したＬＤ、すなわちルート選択部３５により選択されたＬＤである隣接ノード装置１へ暗号化したデータフレームを送信する（ステップＳ２１１）。そして、本処理は終了する。
【０１４３】
（実施形態３）
実施形態１と２においては、受信したデータフレームの最終的な宛先が自ノード装置１の場合、すなわち、ＧＤと自ノードＩＤとが一致する場合には、ノード装置１は、ＦＩＤテーブルＴ１への登録処理を行わないように構成した。本実施形態３においては、ＧＤと自ノードＩＤとが一致する場合であっても、ノード装置１は、ＦＩＤテーブルＴ１への登録処理を行うように構成する。本構成は、実施形態１と２のいずれにも適用可能である。
【０１４４】
ここで、図１６を参照して、本実施形態３における転送処理の流れについて説明する。図１６は、本実施形態３における転送処理のフローを説明するためのフローチャートの例の一部である。本転送処理は、実施形態１で説明したフレーム種別特定処理にステップＳ００６の処理に対応する処理である。
【０１４５】
データフレーム処理部３４は、受信したデータフレームのヘッダを解析し、ＬＤが自ノードＩＤと一致するか否かを判定する（ステップＳ１０１）。ＬＤが自ノードＩＤと一致しないと判定した場合には（ステップＳ１０１；ＮＯ）、データフレーム処理部３４は、受信したデータフレームを破棄し（ステップＳ１０２）、本処理は終了する。
【０１４６】
一方、ＬＤが自ノードＩＤと一致すると判定した場合には（ステップＳ１０１；ＹＥＳ）、データフレーム処理部３４は、更に、ＧＤと自ノードＩＤとが一致するか否かを判定する（ステップＳ１０３）。すなわち、データフレーム処理部３４は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【０１４７】
データフレーム処理部３４により、ＧＤと自ノードＩＤとが一致しないと判定された場合には（ステップＳ１０３；ＮＯ）、処理は実施形態１（又は２）において説明したステップＳ１０５以降の処理へと進む。
【０１４８】
一方、ＧＤと自ノードＩＤとが一致すると判定した場合には（ステップＳ１０３；ＹＥＳ）、データフレーム処理部３４は、ヘッダとＦＩＤテーブルＴ１とを比較し（ステップＳ３０１）、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する（ステップＳ３０２）。すなわち、データフレーム処理部３４は、同じデータフレームを既に受信し、上位層で処理したか否かを判定する。
【０１４９】
ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあると判定した場合には（ステップＳ３０２；ＹＥＳ）、すなわち、受信したデータフレームは上位層で処理済であると判定した場合には、データフレーム処理部３４は、受信したデータフレームを破棄する（ステップＳ１０２）。
【０１５０】
一方、ＧＳとＦＩＤとの組合せが、ヘッダのＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にないと判定した場合には（ステップＳ３０２；ＮＯ）、データフレーム処理部３４は、少なくとも、ヘッダのＧＳとＦＩＤとを対応付けてＦＩＤテーブルＴ１へ登録する（ステップＳ３０３）。
【０１５１】
そして、データフレーム処理部３４は、受信したデータフレームを上位層に出力し、上位層は、データフレームの入力に応答して、受信したデータフレームの処理を行い（ステップＳ１０４）、本処理は終了する。
【０１５２】
上記実施形態３によれば、ノード装置１は、ＧＤが自ノードＩＤと一致するデータフレームを受信した際も、ヘッダとＦＩＤテーブルＴ１とを比較し、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１に有るか否かを判定する。そして、ＧＳとＦＩＤとの組合せが一致する登録がある場合には、ノード装置１は、受信したデータフレームを破棄し、ＧＳとＦＩＤとの組合せが一致する登録が無い場合に、ヘッダ情報をＦＩＤテーブルＴ１に登録すると共に、上位層でデータ処理を行う。このように構成することで、同じデータフレームの処理が繰り返し実行されるのを防ぐことが可能となる。これにより、負荷を軽減することが可能となる。
【０１５３】
図１７は、各実施形態におけるノード装置１のハードウェア構成の例を示す図である。図２に示すノード装置１は、例えば、図１７に示す各種ハードウェアにより実現されてもよい。図１７の例では、ノード装置１は、ＭＰＵ２０１、ＰＨＹ（PHYsical layer）チップ２０２、およびタイマＩＣ（Integrated Circuit）２０３を備える。また、ノード装置１は、ＤＲＡＭ（Dynamic Random Access Memory）２０４、フラッシュメモリ２０５、無線通信モジュール２０６、および読取装置２０７を備える。
【０１５４】
ＭＰＵ２０１とＰＨＹチップ２０２の間を接続する通信インタフェースは、ＭＩＩ／ＭＤＩＯ（Media Independent Interface or Management Data Input/Output）２０９である。ＭＩＩとＭＤＩＯはいずれも、物理層とＭＡＣ（Media Access Control sublayer）副層との間のインタフェースである。また、ＭＰＵ２０１とタイマＩＣ２０３は、Ｉ２Ｃ／ＰＩＯ（Inter-Integrated Circuit or Parallel Input/Output）バス２１０を介して、接続されている。そして、ＤＲＡＭ２０４とフラッシュメモリ２０５と無線通信モジュール２０６と読取装置２０７は、ＰＣＩ（Peripheral Component Interconnect）バス２１１を介して、ＭＰＵ２０１に接続されている。
【０１５５】
ＭＰＵ２０１は、不揮発性記憶装置の一種であるフラッシュメモリ２０５に格納された動作プログラムをＤＲＡＭ２０４にロードし、ＤＲＡＭ２０４をワーキングメモリとして使いながら各種処理を実行する。ＭＰＵ２０１は、動作プログラムを実行することで、図２に示す制御部３０の各機能部を実現することができる。
【０１５６】
なお、上記動作を実行するための動作プログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magnet Optical disk）などのコンピュータで読み取り可能な記録媒体２０８に記憶して配布し、これをノード装置１の読取装置２０７で読み取ってコンピュータにインストールすることにより、上述の処理を実行するように構成してもよい。さらに、インターネット上のサーバ装置が有するディスク装置等に動作プログラムを記憶しておき、ＰＨＹチップ２０２もしくは無線通信モジュール２０６を介して、ノード装置１のコンピュータに動作プログラムをダウンロード等するものとしてもよい。
【０１５７】
なお、実施形態に応じて、ＤＲＡＭ２０４やフラッシュメモリ２０５以外の他の種類の記憶装置が利用されてもよい。例えば、ノード装置１は、ＣＡＭ（Content Addressable Memory）、ＳＲＡＭ（Static Random Access Memory）、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの記憶装置を有してもよい。
【０１５８】
図２などに示すＦＩＤテーブルＴ１、ルーティングテーブルＴ２は、ＤＲＡＭ２０４、フラッシュメモリ２０５、あるいは不図示のその他の記憶装置により実現される。また、フラッシュメモリ２０５は、動作プログラムだけでなく、自ノードＩＤなども記憶している。
【０１５９】
ＰＨＹチップ２０２は、有線接続における物理層の処理を行う回路である。ネットワーク１００が無線ネットワークの場合には、ノード装置１はＰＨＹチップ２０２を備えなくてもよい。しかし、ノード装置１と外部ネットワークとの接続のために、ノード装置１はＰＨＹチップ２０２を備えていてもよい。
【０１６０】
例えば、ノード装置１は、イーサネット（登録商標）規格にしたがった有線ＬＡＮポートを備え、有線ＬＡＮポートに接続されたケーブルを介して外部ネットワークのゲートウェイ装置などに接続されていてもよい。
【０１６１】
その場合、ＭＰＵ２０１は、イーサネットフレームを生成し、ＭＩＩ／ＭＤＩＯ２０９を介してＰＨＹチップ２０２に出力することができる。そして、ＰＨＹチップ２０２は、ＭＰＵ２０１からの出力（すなわちイーサネットフレームを表す論理信号）を、ケーブルの種類に応じた信号（つまり電気信号または光信号）に変換し、ケーブルに出力する。こうして、ノード装置１はＰＨＹチップ２０２を用いて外部ネットワークにデータ（例えば、フレーム）を送信することができる。
【０１６２】
また、ＰＨＹチップ２０２は、ケーブルと有線ＬＡＮポートを介して外部ネットワークから入力される電気信号または光信号を、論理信号に変換し、ＭＩＩ／ＭＤＩＯ２０９を介してＭＰＵ２０１に出力することもできる。こうして、ノード装置１はＰＨＹチップ２０２を用いて外部ネットワークからデータ（例えば、フレーム）を受信することができる。
【０１６３】
タイマＩＣ２０３は、設定された時間が経過するまでカウントアップ動作を行い、設定された時間が経過すると割り込み信号を出力する回路である。
【０１６４】
無線通信モジュール２０６は、無線接続における物理層の処理を行うハードウェアである。無線通信モジュール２０６は、例えば、アンテナ、ＡＤＣ（Analog-to-Digital Converter）、ＤＡＣ（Digital-to-Analog Converter）、変調器、復調器、符号化器、復号器などを含む。
【０１６５】
なお、実施形態に応じて、ノード装置１のハードウェア構成は図１７とは異なっていてもよく、図１７に例示した規格・種類以外のその他のハードウェアをノード装置１に適用することもできる。
【０１６６】
例えば、図２に示す制御部３０の各機能部は、ハードウェア回路により実現されてもよい。具体的には、ＭＰＵ２０１の代わりに、ＦＰＧＡ（Field Programmable Gate Array）などのリコンフィギュラブル回路や、ＡＳＩＣ（Application Specific Integrated Circuit）などにより、これら図２に示す制御部３０の各機能部が実現されてもよい。もちろん、ＭＰＵ２０１とハードウェア回路の双方により、これらの機能部が実現されてもよい。
【０１６７】
以上において、いくつかの実施形態について説明した。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態を成すことができることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【０１６８】
以上の実施形態１〜３を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置であって、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信する受信手段と、
前記データフレームを一意に識別可能なフレーム識別情報と、当該データフレームの前記転送回数情報と、が対応付けられているテーブルを格納する記憶手段と、
受信した前記データフレームの最終宛先が自ノード装置か否かを判定する第１判定手段と、
前記第１判定手段により、受信した前記データフレームの最終宛先が自ノード装置ではないと判定された場合に、受信した前記データフレームの前記フレーム識別情報と一致する登録が前記テーブルに有るか否かを判定する第２判定手段と、
前記第２判定手段により、前記登録が前記テーブルに有ると判定された場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定する第３判定手段と、
前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定された場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新するテーブル更新手段と、
前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定された場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントするデータフレーム更新手段と、
前記データフレーム更新手段により、前記転送回数がインクリメントされた後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する再送信手段と、
を備える、
ことを特徴とするノード装置。
（付記２）
前記第３判定手段により、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下であると判定された場合に、受信した前記データフレームを破棄する第１破棄手段を、更に、備える、
ことを特徴する付記１に記載のノード装置。
（付記３）
前記第２判定手段により、前記登録が前記テーブルには無いと判定された場合に、受信した前記データフレームの前記フレーム識別情報と前記転送回数情報とを対応付けて前記テーブルに登録する登録手段を、更に、備える、
ことを特徴とする付記１又は２に記載のノード装置。
（付記４）
受信した前記データフレームの最終宛先が自ノード装置である場合に、受信した前記データフレームの前記フレーム識別情報と一致する登録が前記テーブルに有るか否かを判定する第４判定手段と、
前記第４判定手段により、前記登録が前記テーブルには無いと判定された場合に、受信した前記データフレームの少なくとも前記フレーム識別情報を前記テーブルに登録する第２登録手段と、
前記第４判定手段により、前記登録が前記テーブルには無いと判定された場合のみ、受信した前記データフレームを上位層で処理させるために、前記上位層に出力する出力手段と、
を、更に、備える、
ことを特徴とする付記１乃至３のいずれか一に記載のノード装置。
（付記５）
前記第４判定手段により、前記登録が前記テーブルに有ると判定された場合に、受信した前記データフレームを破棄する第２破棄手段を、更に、備える、
ことを特徴とする付記４に記載のノード装置。
（付記６）
前記転送回数情報は、前記データフレームの前記転送回数を制限するためのカウンタのカウンタ値である、
ことを特徴とする付記１乃至５のいずれか一に記載のノード装置。
（付記７）
前記カウンタは、前記データフレームが転送されるたびに、インクリメント、又は、デクリメントされるカウンタであり、
前記データフレーム更新手段は、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントするために、受信した前記データフレームの前記カウンタをインクリメント、又は、デクリメントする、
ことを特徴とする付記６に記載のノード装置。
（付記８）
前記転送回数を１回とする前記データフレームを生成する生成手段と、
前記生成手段により生成された前記データフレームを送信する送信手段と、
を、更に、備える、
ことを特徴とする付記１乃至７のいずれか一に記載のノード装置。
（付記９）
前記受信手段により受信された前記データフレームは、暗号化されており、
暗号化されている前記データフレームを復号化する復号化手段を、更に、備え、
前記再送信手段は、前記データフレームを暗号化した後に、再送信する、
ことを特徴とする付記１乃至７のいずれか一に記載のノード装置。
（付記１０）
前記転送回数を１回とする前記データフレームを生成する生成手段と、
前記生成手段により生成された前記データフレームを暗号化する暗号化手段と、
前記暗号化手段により暗号化された前記データフレームを送信する送信手段と、
を、更に、備える、
ことを特徴とする付記９に記載のノード装置。
（付記１１）
転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置のデータ中継方法であって、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信し、
受信した前記データフレームの最終宛先が自ノード装置か否かを判定し、
受信した前記データフレームの最終宛先が自ノード装置ではないと判定した場合に、受信した前記データフレームの前記データフレームを一意に識別可能なフレーム識別情報と一致する登録が、前記データフレームの前記フレーム識別情報と当該データフレームの前記転送回数情報とが対応付けられているテーブルに、有るか否かを判定し、
前記登録が前記テーブルに有ると判定した場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントし、
前記転送回数をインクリメントした後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する、
ことを特徴とするデータ中継方法。
（付記１２）
転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置のコンピュータに、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信し、
受信した前記データフレームの最終宛先が自ノード装置か否かを判定し、
受信した前記データフレームの最終宛先が自ノード装置ではないと判定した場合に、受信した前記データフレームの前記データフレームを一意に識別可能なフレーム識別情報と一致する登録が、前記データフレームの前記フレーム識別情報と当該データフレームの前記転送回数情報とが対応付けられているテーブルに、有るか否かを判定し、
前記登録が前記テーブルに有ると判定した場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントし、
前記転送回数をインクリメントした後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する、
処理を実行させる、
ことを特徴とするプログラム。
（付記１３）
転送された回数を示す転送回数情報を含むデータフレームを送信するノード装置のコンピュータに、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つから前記データフレームを受信し、
受信した前記データフレームの最終宛先が自ノード装置か否かを判定し、
受信した前記データフレームの最終宛先が自ノード装置ではないと判定した場合に、受信した前記データフレームの前記データフレームを一意に識別可能なフレーム識別情報と一致する登録が、前記データフレームの前記フレーム識別情報と当該データフレームの前記転送回数情報とが対応付けられているテーブルに、有るか否かを判定し、
前記登録が前記テーブルに有ると判定した場合に、受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数以下か否かを判定し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報で、前記テーブルの前記登録に対応する前記転送回数情報を更新し、
受信した前記データフレームの前記転送回数情報が示す転送回数が、前記登録に対応する前記転送回数情報が示す転送回数より多いと判定した場合のみ、受信した前記データフレームの前記転送回数情報が示す転送回数をインクリメントし、
前記転送回数をインクリメントした後の前記データフレームを、該データフレームの送信先として選択していない隣接するノード装置へ再送信する、
処理を実行させるプログラムを記憶した記録媒体。
【符号の説明】
【０１６９】
１００    ネットワーク
Ｎｉ      ノード装置のノードＩＤ
ＮＸ      再送攻撃を行うノード装置のノードＩＤ
１        ノード装置
１０      通信部
２０      記憶部
Ｔ１      ＦＩＤテーブル
Ｔ２      ルーティングテーブル
３０      制御部
３１      復号処理部
３２      フレーム種別特定部
３３      リンク管理部
３４      データフレーム処理部
３５      ルート選択部
３６      ハローフレーム生成部
２０１    ＭＰＵ
２０２    ＰＨＹチップ
２０３    タイマＩＣ
２０４    ＤＲＡＭ
２０５    フラッシュメモリ
２０６    無線通信モジュール
２０７    読取装置
２０８    記録媒体
２０９    ＭＩＩ／ＭＤＩＯ
２１０    Ｉ２Ｃ／ＰＩＯバス
２１１    ＰＣＩバス
【図１】
2015099982.tif 000003
【図２】
2015099982.tif 000004
【図３】
2015099982.tif 000005
【図４】
2015099982.tif 000006
【図５】
2015099982.tif 000007
【図６】
2015099982.tif 000008
【図７】
2015099982.tif 000009
【図８】
2015099982.tif 000010
【図９】
2015099982.tif 000011
【図１０】
2015099982.tif 000012
【図１１】
2015099982.tif 000013
【図１２】
2015099982.tif 000014
【図１３】
2015099982.tif 000015
【図１４】
2015099982.tif 000016
【図１５】
2015099982.tif 000017
【図１６】
2015099982.tif 000018
【図１７】
2015099982.tif 000019