(57)【要約】【課題】重複データとループデータとを区別することを可能とするノード装置、データ中継方法、及び、プログラムを提供する。【解決手段】通信部１０は、リンクが存在する複数の隣接するノード装置１の内のいずれかの一つからデータフレームを受信する。データフレーム処理部３３は、受信したデータフレームのフレーム識別情報と重複データ識別情報との組合せと一致する登録がＦＩＤテーブルＴ１に無い場合には、受信したデータフレームを破棄し、一致する登録がＦＩＤテーブルＴ１に有る場合には、受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置１へ再送信する。【選択図】図２
2015037252.tif 000002
【特許請求の範囲】
【請求項１】
リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信する受信手段と、
前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルを格納する記憶手段と、
前記受信したデータフレームの最終宛先が自ノード装置か否かを判定する第１判定手段と、
前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が前記識別情報管理テーブルに有るか否かを判定する第２判定手段と、
前記第２判定手段により、前記登録が前記識別情報管理テーブルに有ると判定された場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定する第３判定手段と、
前記第３判定手段により一致しないと判定された場合には、前記受信したデータフレームを破棄する破棄手段と、
前記第３判定手段により一致すると判定された場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する再送信手段と、
を備える、
ことを特徴とするノード装置。
【請求項２】
自ノード装置は、中継専用の中継ノード装置であり、
前記重複データ識別情報は、前記データフレームが最初に経由した中継ノード装置を一意に識別可能な装置識別情報である、
ことを特徴とする請求項１に記載のノード装置。
【請求項３】
前記第２判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの前記フレーム識別情報と前記重複データ識別情報とを対応付けて前記識別情報管理テーブルに登録する登録手段を、さらに、備える、
ことを特徴とする請求項２に記載のノード装置。
【請求項４】
前記第２判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの前記重複データ識別情報が設定済であるか否かを判定する第４判定手段を、さらに、備え、
前記登録手段は、
前記第４判定手段により、設定済ではないと判定された場合には、前記受信したテータフレームの前記重複データ識別情報として自ノード装置の前記装置識別情報を設定すると共に、前記受信したデータフレームの前記フレーム識別情報と自ノード装置の前記装置識別情報とを対応付けて前記識別情報管理テーブルに登録する、
ことを特徴とする請求項３に記載のノード装置。
【請求項５】
前記重複データ識別情報は、前記重複するデータフレームを発行するノード装置を一意に識別可能な装置識別情報と、該ノード装置が前記重複するデータフレームを発行した回数を示す再送回数情報との組である、
ことを特徴とする請求項１に記載のノード装置。
【請求項６】
前記第２判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの前記フレーム識別情報と前記重複データ識別情報とを対応付けて前記識別情報管理テーブルに登録する登録手段を、さらに、備える、
ことを特徴とする請求項５に記載のノード装置。
【請求項７】
前記受信したデータフレームの最終宛先が自ノード装置である場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が前記識別情報管理テーブルに有るか否かを判定する第５判定手段と、
前記第５判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの少なくとも前記フレーム識別情報を前記識別情報管理テーブルに登録する第２登録手段と、
を、さらに、備え、
前記破棄手段は、前記第５判定手段により、前記登録が前記識別情報管理テーブルに有ると判定された場合に、前記受信したデータフレームを破棄する、
ことを特徴とする請求項１乃至６のいずれか一に記載のノード装置。
【請求項８】
送信したデータフレームの送信先の隣接するノード装置より、所定時間内に、該データフレームを受信した旨の受信通知を受信したか否か判定する第６判定手段を、さらに、備え、
前記再送信手段は、前記第６判定手段により、前記受信通知を受信できなかったと判定された場合に、前記送信したデータフレームを、送信先としていない隣接するノード装置へ再送信する、
ことを特徴とする請求項１乃至７のいずれか一に記載のノード装置。
【請求項９】
所定のタイミングで、前記再送信の日時を示す情報と前記再送信した隣接するノード装置を一意に識別可能な装置識別情報との組と、自ノード装置の前記装置識別情報とを含むリトライ情報を生成し、生成したリトライ情報を上位装置へ送信する通知手段を、さらに、備える、
ことを特徴とする請求項８に記載のノード装置。
【請求項１０】
リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信し、
前記受信したデータフレームの最終宛先が自ノード装置か否かを判定し、
前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が、前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルに、有るか否かを判定し、
前記登録が前記識別情報管理テーブルに有る場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致しない場合には、前記受信したデータフレームを破棄し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致する場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する、
ことを特徴とするデータ中継方法。
【請求項１１】
ノード装置のコンピュータに、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信し、
前記受信したデータフレームの最終宛先が自ノード装置か否かを判定し、
前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が、前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルに、有るか否かを判定し、
前記登録が前記識別情報管理テーブルに有る場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致しない場合には、前記受信したデータフレームを破棄し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致する場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する、
処理を実行させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノード装置、データ中継方法、及び、プログラムに関する。
【背景技術】
【０００２】
近年、複数の無線通信装置（以下、ノード装置という）が自律分散的に相互接続するアドホックネットワークの研究が進められている。アドホックネットワークの各ノード装置は、通信環境に応じて自立的にネットワークを構築する。
【０００３】
具体的には、アドホックネットワークでは、アクセスポイントは設置されず、各ノード装置が、隣接するノード装置（以下、隣接ノード装置という）から受信したデータフレームをネットワークトポロジに基づいて、他の隣接ノード装置に中継することで、データフレームを宛先のノード装置に伝送する。この際、各ノード装置は、伝送品質のより良い経路を選択してデータフレームを送信する。
【０００４】
ネットワーク環境は、その時々で変化するため、各ノード装置が、ネットワークトポロジに基づいて、フレームを送信したとしても、必ずしも、フレームが宛先のノード装置に伝送されるとは限らない。
【０００５】
例えば、ノード装置による隣接ノード装置へのデータフレームの送信が成功したにもかかわらず、何らかの理由（例えば、通信障害）で、該隣接ノード装置より返信されたＡＣＫ（ACKnowledgment）フレームが欠落してしまうことがある。
【０００６】
この場合、データフレームを送信したノード装置は、データフレームの送信が失敗したと判定し、他の隣接ノード装置へデータフレームを再送信する。その結果、複数の同一データフレーム（以下、重複データという）が、ネットワークを介して、伝送されてしまう。そのため、重複データの検出は非常に重要となる。
【０００７】
アドホックネットワークに関連する技術として、ノード装置が以前受信したデータフレームと同じデータフレームを受信したか否かを検出する方法が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１９５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１で提案されている方法では、以前受信したデータフレームと同じデータフレームであるとして検出されたデータフレームが、重複データなのか、それとも、ループしているデータフレーム（以下、ループデータという）なのかを区別することはできない。
【００１０】
ノード装置が、重複データをループデータと誤って認識してしまうと、適切な経路を誤った経路へと変更してしまう恐れがある。適切な経路が誤った経路へと変更されてしまうと、データフレームが、宛先のノード装置へ届かなくなってしまう恐れがある。そのため、重複データとループデータとを区別することは非常に重要である。
【００１１】
一つの側面では、本発明は、重複データとループデータとを区別することを可能とするノード装置、データ中継方法、及び、プログラムを提供することを課題とする。
【課題を解決するための手段】
【００１２】
一態様に係るノード装置は、リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信する受信手段と、前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルを格納する記憶手段と、前記受信したデータフレームの最終宛先が自ノード装置か否かを判定する第１判定手段と、前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が前記識別情報管理テーブルに有るか否かを判定する第２判定手段と、前記第２判定手段により、前記登録が前記識別情報管理テーブルに有ると判定された場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定する第３判定手段と、前記第３判定手段により一致しないと判定された場合には、前記受信したデータフレームを破棄する破棄手段と、前記第３判定手段により一致すると判定された場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する再送信手段と、を備える。
【発明の効果】
【００１３】
誤った経路変更によるネットワークの切断やノード装置の孤立が生じるのを防止することが可能となり、適切な経路を維持することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１におけるネットワークの概念図である。
【図２】実施形態１におけるネットワークを構成するノード装置の構成例を示す機能ブロック図である。
【図３】実施形態１におけるデータフレームのヘッダのフォーマット例を示す図である。
【図４】図３に示すフォーマット例における各フィールドの説明である。
【図５】実施形態１におけるＦＩＤテーブルの例を示す図である。
【図６】ルーティングテーブルの例を示す図である。
【図７】実施形態１における中継処理のフローを説明するためのフローチャートの例の一部である。
【図８】実施形態１における中継処理のフローを説明するためのフローチャートの例の他の一部である。
【図９】実施形態１におけるリトライ処理のフローを説明するためのフローチャートの例である。
【図１０】図１に示す例に対応するタイミングチャートである。
【図１１】図１０のタイミングチャートの各タイミングでの、ヘッダとＦＩＤテーブルの内容を示す図である。
【図１２】実施形態２におけるネットワークの概念図である。
【図１３】実施形態２におけるネットワークを構成するノード装置の構成例を示す機能ブロック図である。
【図１４】実施形態２におけるデータフレームのヘッダのフォーマット例を示す図である。
【図１５】図１４に示すフォーマット例における各フィールドの説明である。
【図１６】実施形態２におけるＦＩＤテーブルの例を示す図である。
【図１７】実施形態２におけるリトライ管理テーブルの例を示す図である。
【図１８】実施形態２における中継処理のフローを説明するためのフローチャートの例の一部である。
【図１９】実施形態２における中継処理のフローを説明するためのフローチャートの例の他の一部である。
【図２０】実施形態２におけるリトライ処理のフローを説明するためのフローチャートの例の一部である。
【図２１】実施形態２におけるリトライ処理のフローを説明するためのフローチャートの例の他の一部である。
【図２２】図１２に示す例に対応するタイミングチャートである。
【図２３】図２２のタイミングチャートの各タイミングでの、ヘッダとＦＩＤテーブルの内容を示す図である。
【図２４】図１２に示すネットワークにおける別の例に対応するタイミングチャートである。
【図２５】図２４のタイミングチャートの各タイミングでの、ヘッダとＦＩＤテーブルの内容を示す図である。
【図２６】実施形態３における中継処理のフローを説明するためのフローチャートの例の一部である。
【図２７】実施形態におけるノード装置のハードウェア構成の例を示す図である。
【発明を実施するための形態】
【００１５】
以下に本発明の実施の形態について図面を参照しながら詳細に説明する。
【００１６】
（実施形態１）
図１は、本実施形態１におけるネットワーク１００の構成例を示す図である。ネットワーク１００は、アドホックネットワークの一例であり、複数のノード装置１を含んで構成されている。ノード装置１間には、リンクが存在しており、図１では、リンクを実線で表している。
【００１７】
本実施形態１においては、ネットワーク１００を構成するノード装置１の種別は、少なくとも２つある。一つは「末梢ノード装置」であり、他の一つは、「中継ノード装置」である。
【００１８】
末梢ノード装置１は、例えば、電力メータなどの検針ノード装置や各種のセンサを具備するセンサノード装置などである。末梢ノード装置１は、データサーバの命令に従って、あるいは、自立的にセンサ等から情報を収集し、収集した情報（データフレーム）を、データサーバへ送信する装置である。
【００１９】
末梢ノード装置１は、図１においては、「Ｎｉ」（ｉ＝１，・・，１６）として示されている。「Ｎｉ」は、末梢ノード装置１を一意に識別可能なノードＩＤ（IDentification）である。
【００２０】
中継ノード装置１は、末梢ノード装置１と比較して、電波出力が強く伝送レートも高い中継専用のノード装置であり、末梢ノード装置１が送信したデータフレームを中継する。中継ノード装置１は、例えば、隣接する末梢ノード装置１間の距離が離れており、末梢ノード装置１のみでネットワーク１００を構成できないような場合に設置される。つまり、図１に例示するネットワーク１００としては、例えば、山間部など住宅が疎なエリアのネットワークが想定される。
【００２１】
中継ノード装置１は、図１においては、「Ｓｊ」（ｊ＝１，２，３）として示されている。「Ｓｊ」は、中継ノード装置１を一意に識別可能なノードＩＤである。
【００２２】
なお、本実施形態１においては、中継ノード装置１がデータフレームを他の中継ノード装置１へ送信する場合には、データフレームを受信した他の中継ノード装置１は、ＡＣＫフレームを返信しないように構成されている。
【００２３】
リンクは、無線リンクでもよく、有線リンクでもよい。例えば、図１を参照して、末梢ノード装置Ｎ１と末梢ノード装置Ｎ２とが、他のノード装置１による中継を経ることなく、直接、通信可能な場合に、「末梢ノード装置Ｎ１と末梢ノード装置Ｎ２との間にリンクが存在する」という。
【００２４】
リンクは、動的に変化し、例えば、天候や遮蔽物などの影響で、ノード装置１間にリンクが新たに確立されたり、今まで確立されていたリンクが消滅したりすることがある。また、例えば、ノード装置１が可動式であれば、ノード装置１間の距離の変動によってリンクの有無が変化することもある。また、例えば、ケーブルの接続替えにより、新たなリンクが確立されたり、今まで存在していたリンクが消滅したり、ケーブルの切断等の障害によってリンクが消滅することもある。
【００２５】
次に、図２を参照して、本実施形態１におけるノード装置１について説明する。
【００２６】
図２は、本実施形態１におけるネットワーク１００を構成するノード装置１の構成例を示す機能ブロック図である。
【００２７】
ノード装置１は、図２に示すように、通信部１０と、記憶部２０と、制御部３０と、を備えて構成されている。
【００２８】
通信部１０は、通信モジュールなどで構成され、他のノード装置１との間で通信を行う。例えば、通信部１０は、フレームを送受信する。
【００２９】
記憶部２０は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、フラッシュメモリなどで構成されている。記憶部２０は、制御部３０を構成する、例えば、ＭＰＵ（Micro-Processing Unit）のワークエリア、ノード装置１全体を制御するための動作プログラムなどの各種プログラムを格納するプログラムエリア、詳しくは後述のＦＩＤテーブルＴ１、ルーティングテーブルＴ２などの各種データを格納するデータエリアとして機能する。また、データエリアには、自ノードＩＤや自ノード装置１の属性情報（例えば、ノード装置の種別を示す情報）なども格納されている。
【００３０】
ここで、図３と図４を参照して、データフレーム処理部３３（詳しくは後述）により生成されるデータフレームのヘッダについて説明する。図３は、本実施形態１におけるデータフレームのヘッダのフォーマット例を示す図である。図４は、図３に示すフォーマット例における各フィールドの説明である。
【００３１】
本実施形態１におけるデータフレームのヘッダは、図３に示すように、ＬＤ（Local Destination）と、ＬＳ（Local Source）と、ＧＤ（Global Destination）と、ＧＳ（Global Source）と、ＦＩＤ（Frame IDentification）と、フレームタイプと、ＡＣＫフラグと、ＰａｔｈＩＤと、を含む。
【００３２】
ＬＤは、送信先となる隣接ノード装置１のノードＩＤであり、ＬＳとなるノード装置１のルート選択部３５（詳しくは後述）が、ルーティングテーブルＴ２を参照して、ＬＤを選択する。例えば、図１を参照して、末梢ノード装置Ｎ１により末梢ノード装置Ｎ２へ送信されたデータフレームのＬＤは、Ｎ２となる。
【００３３】
ＬＳは、送信元の隣接ノード装置１のノードＩＤであり、ＬＳとなるノード装置１のデータフレーム処理部３３が、「ＬＳ」フィールドに自ノードＩＤを格納する。例えば、図１を参照して、末梢ノード装置Ｎ１により末梢ノード装置Ｎ２へ送信されたデータフレームのＬＳは、Ｎ１となる。
【００３４】
ＧＤは、最終的な宛先となるノード装置１のノードＩＤである。ＧＳは、データフレームの発行元のノード装置（以下、発行元ノード装置ともいう）１のノードＩＤである。例えば、図１を参照して、末梢ノード装置Ｎ１により発行されたデータフレームが、末梢ノード装置Ｎ２、中継ノード装置Ｓ１、中継ノード装置Ｓ２、中継ノード装置Ｓ３の順番で中継され、最終的に末梢ノード装置Ｎ１６へと送信される場合、該データフレームのＧＤは、Ｎ１６であり、ＧＳは、Ｎ１である。
【００３５】
なお、以下では、末梢ノード装置Ｎ１により発行されたデータフレームが、末梢ノード装置Ｎ２、中継ノード装置Ｓ１、中継ノード装置Ｓ２、中継ノード装置Ｓ３の順番で中継され、最終的に末梢ノード装置Ｎ１６へと送信される場合、経路＜Ｎ１，Ｎ２，Ｓ１，Ｓ２，Ｓ３，Ｎ１６＞と表すこととする。
【００３６】
ＦＩＤは、フレームの発行元ノード装置１におけるフレームＩＤである。すなわち、発行元ノード装置１により生成されたＦＩＤが、ヘッダの「ＦＩＤ」フィールドに格納される。つまり、ＧＳとＦＩＤとを組合せることにより、フレームを一意に識別可能なフレーム識別情報となる。
【００３７】
フレームタイプは、フレームの種別を示す情報であり、データフレームにおいては、フレームの種別がデータフレームであることを示す情報が、「フレームタイプ」フィールドに格納される。フレームの種別としては、本実施形態１においては、少なくとも、ハローフレームと、データフレームと、ＡＣＫフレーム（以下、単に、ＡＣＫという）の３つが存在する。
【００３８】
ハローフレームは、ハローフレーム生成部３６（詳しくは後述）により生成され、自ノード装置１の存在を他のノード装置１に対して通知するためのフレームであり、経路作成に必要な情報を含んでいる。データフレームは、発行元ノード装置１（ＧＳ）が最終的な宛先となるノード装置１（ＧＤ）に伝達しようとしている情報を、ペイロードとして含むフレームである。ＡＣＫは、データフレームの送信先の隣接ノード装置１（ＬＤ）が、該データフレームを受信したことを、送信元のノード装置１（ＬＳ）へ通知するためのフレームである。
【００３９】
ＡＣＫフラグは、データフレームの受信に応答して、ＡＣＫをＬＳへ返信する必要があるか否かを示す情報（フラグ）である。例えば、「ＡＣＫフラグ」フィールドに格納されている値が“０”の場合には、ＡＣＫの返信が必要であることを示し、一方、“１”の場合には、ＡＣＫの返信が不必要であることを示す。なお、本実施形態１においては、ＡＣＫフラグの初期値は“０”である。すなわち、末梢ノード装置１がＧＳとしてデータフレームを生成する際、末梢ノード装置１のデータフレーム処理部３３は、ＡＣＫフラグの値を“０”に設定する。
【００４０】
ＰａｔｈＩＤは、データフレームが最初に経由する中継ノード装置（以下、第１中継ノード装置という）１のノードＩＤであり、第１中継ノード装置１のデータフレーム処理部３３が、「ＰａｔｈＩＤ」フィールドに自ノードＩＤを格納する。例えば、図１を参照して、データフレームの経路が、経路＜Ｎ１，Ｎ２，Ｓ１，Ｓ２，Ｓ３，Ｎ１６＞である場合には、第１中継ノード装置１は、中継ノード装置Ｓ１となることから、ＰａｔｈＩＤは、Ｓ１となる。
【００４１】
次に、図５と図６を参照して、記憶部２０のデータエリアに格納されている、ＦＩＤテーブルＴ１、ルーティングテーブルＴ２について、それぞれ、説明する。
【００４２】
図５は、本実施形態１におけるＦＩＤテーブルＴ１の例を示す図である。本実施形態１におけるＦＩＤテーブルＴ１は、データフレーム処理部３３により管理されており、図５に示すように、「ＧＳ」と「ＦＩＤ」と「ＰａｔｈＩＤ」とが対応付けられているテーブルである。
【００４３】
図６は、ルーティングテーブルＴ２の例を示す図である。ルーティングテーブルＴ２は、リンク管理部３２（詳しくは後述）により管理されており、データフレームを送信する隣接ノード装置１を選択するために必要となる情報をＧＤごとに管理しているテーブルである。例えば、ルーティングテーブルＴ２は、図６に示すように、「ＧＤ」ごとに、「ＬＤ候補」と「優先度」とが対応付けられているテーブルである。
【００４４】
なお、図６に例示するルーティングテーブルＴ２は、末梢ノード装置Ｎ１が格納するルーティングテーブルＴ２の例であり、優先度ｐ１の方が優先度ｐ２より高く設定されているものとする。
【００４５】
「ＬＤ候補」は、リンクが存在する隣接ノード装置１のノードＩＤである。「優先度」は、ＬＤ候補の中からＬＤを選択する際の優先度を示している。この優先度は、可変してもよく、例えば、データフレームの送信が成功したか否かに基づいて、リンク管理部３２が優先度を変更するように構成してもよい。また、例えば、隣接ノード装置１へ送信したデータフレームがループしたか否かに基づいて、リンク管理部３２が優先度を変更するように構成してもよい。
【００４６】
図２に戻り、制御部３０は、例えば、ＭＰＵなどで構成され、記憶部２０のプログラムエリアに格納されている動作プログラムを実行して、図２に示すように、フレーム種別特定部３１と、リンク管理部３２と、データフレーム処理部３３と、ＡＣＫ処理部３４と、ルート選択部３５と、ハローフレーム生成部３６としての機能を実現すると共に、ノード装置１全体を制御する制御処理や詳しくは後述の中継処理などの処理を実行する。
【００４７】
フレーム種別特定部３１は、通信部１０で受信したフレームの種別を特定する。具体的には、通信部１０は、フレームを受信すると、受信したフレームをフレーム種別特定部３１へ出力する。そして、フレーム種別特定部３１は、受信したフレームのヘッダを解析して、フレームタイプに基づいて、フレームの種別を特定する。
【００４８】
そして、フレーム種別特定部３１は、特定したフレームの種別がハローフレームの場合には、受信したフレームをリンク管理部３２へ出力し、特定したフレームの種別がデータフレームの場合には、受信したフレームをデータフレーム処理部３３へ出力し、特定したフレームの種別がＡＣＫの場合には、受信したフレームをＡＣＫ処理部３４へ出力する。
【００４９】
リンク管理部３２は、ルーティングテーブルＴ２の管理を行う。より具体的には、リンク管理部３２は、受信したフレームがハローフレームの場合に、受信したハローフレームを解析し、解析結果に基づいて、ルーティングテーブルＴ２の更新と生成を行う。また、リンク管理部３２は、ルート選択部３５よりルーティングテーブルＴ２の生成の指示が入力されると、例えば、過去に受信したハローフレームに基づいて、生成を指示されたＧＤに対応するルーティングテーブルＴ２を生成する。
【００５０】
また、リンク管理部３２は、ＡＣＫ処理部３４により通知されたデータフレームの送信が成功したか否かの判定の結果などに基づいて、ルーティングテーブルＴ２の優先度を変更する。例えば、リンク管理部３２は、データフレームの送信が失敗したと判定された場合には、データフレームの送信が失敗したと判定された「ＬＤ候補」に対応する優先度を最も低く設定する。
【００５１】
データフレーム処理部３３は、受信したデータフレームの処理を行う。より具体的には、データフレーム処理部３３は、まず、フレーム種別特定部３１よりデータフレームが入力されたか否かを判定することで、データフレームを受信したか否かを判定する。そして、データフレーム処理部３３は、データフレームを受信すると、受信したデータフレームのヘッダを解析し、ＬＤが自ノードＩＤと一致するか否かを判定する。そして、データフレーム処理部３３は、ＬＤが自ノードＩＤと一致しない場合には、受信したデータフレームを破棄し、ＬＤが自ノードＩＤと一致する場合には、ＡＣＫフラグに基づいて、ＡＣＫをＬＳへ返信する必要があるか否かを判定する。
【００５２】
ＡＣＫをＬＳへ返信する必要がある場合には、データフレーム処理部３３は、ＡＣＫ処理部３４に対して、ＡＣＫの生成を指示する。そして、データフレーム処理部３３は、ＧＤが自ノードＩＤと一致するか否かを判定する。すなわち、データフレーム処理部３３は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【００５３】
受信したデータフレームの最終的な宛先が自ノード装置１の場合には、データフレーム処理部３３は、受信したデータフレームを上位層へ出力する。データフレームの入力に応答して、上位層は、受信したデータフレームの処理を行う。
【００５４】
一方、受信したデータフレームの最終的な宛先が他のノード装置１の場合には、データフレーム処理部３３は、ヘッダとＦＩＤテーブルＴ１とを比較し、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。すなわち、データフレーム処理部３３は、同じデータフレームを既に受信したか否かを判定する。
【００５５】
ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあり、自ノード装置１が中継ノード装置１の場合には、データフレーム処理部３３は、更に、ヘッダのＰａｔｈＩＤが、ＧＤとＦＩＤとの組合せがヘッダのＧＤとＦＩＤとの組合せと一致する登録のＰａｔｈＩＤと一致するか否かを判定する。すなわち、ヘッダのＧＤとＦＩＤとＰａｔｈＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。
【００５６】
ヘッダのＧＤとＦＩＤとＰａｔｈＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にある場合には、データフレーム処理部３３は、受信したデータフレームはループデータであると判定する。一方、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるが、ＰａｔｈＩＤは一致しない場合には、データフレーム処理部３３は、受信したデータフレームは重複データであると判定する。このように、本実施形態１では、ループデータと重複データとを区別することが可能である。
【００５７】
そして、データフレーム処理部３３は、受信したデータフレームを重複データと判定した場合には、受信したデータを破棄し、ループデータと判定した場合には、ルート選択部３５に対して、ＬＤの再選択を指示する。この際、データフレーム処理部３３は、ループする旨とループデータを送信した際のＬＤとを、リンク管理部３２へ通知する。こうすることで、リンク管理部３２は、ルーティングテーブルＴ２の優先度を適切に変更することが可能となる。
【００５８】
一方、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあったとしても、自ノード装置１が末梢ノード装置１の場合には、受信したデータフレームがループデータなのか、それとも重複データなのかの判定を行うことはしない。すなわち、本実施形態１においては、ループデータと重複データとの区別は中継ノード装置１のみで実行される。末梢ノード装置１においては、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にある場合には、受信したデータフレームをループデータと判定して、ルート選択部３５に対して、ＬＤの再選択を指示する。
【００５９】
一方、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１に存在しない場合には、すなわち、初めて受信したデータフレームの場合には、データフレーム処理部３３は、ＦＩＤテーブルＴ１に登録処理を行う。
【００６０】
より具体的には、データフレーム処理部３３は、ヘッダのＰａｔｈＩＤがｎｕｌｌか否かを判定する。ヘッダのＰａｔｈＩＤがｎｕｌｌではない場合には、すなわち、受信したデータフレームがいずれかの中継ノード装置１を経由している場合には、データフレーム処理部３３は、ヘッダのＧＤとＦＩＤとＰａｔｈＩＤとを対応付けてＦＩＤテーブルＴ１に登録する。そして、データフレーム処理部３３は、受信したデータフレームの送信を行うために、ルート選択部３５に対して、ＬＤの選択を指示する。
【００６１】
また、ヘッダのＰａｔｈＩＤがｎｕｌｌであって、すなわち、受信したデータフレームが中継ノード装置１を経由していないデータフレームであって、自ノード装置１が末梢ノード装置１の場合には、データフレーム処理部３３は、ヘッダのＧＤとＦＩＤとＰａｔｈＩＤとを対応付けてＦＩＤテーブルＴ１に登録する。そして、データフレーム処理部３３は、受信したデータフレームの送信を行うために、ルート選択部３５に対して、ＬＤの選択を指示する。
【００６２】
一方、ヘッダのＰａｔｈＩＤがｎｕｌｌであって、自ノード装置１が中継ノード装置１の場合には、データフレーム処理部３３は、ヘッダのＰａｔｈＩＤに自ノードＩＤを設定すると共に、自ノードＩＤと、ヘッダのＧＤとＦＩＤと、を対応付けてＦＩＤテーブルＴ１に登録する。すなわち、処理対象のデータフレームが最初に経由する中継ノード装置１において、ヘッダのＰａｔｈＩＤの設定が行われる。そして、データフレーム処理部３３は、受信したデータフレームの送信を行うために、ルート選択部３５に対して、ＬＤの選択を指示する。
【００６３】
また、データフレーム処理部３３は、ルート選択部３５より選択されたＬＤが通知されると、データフレームの送信処理を行う。より具体的には、データフレーム処理部３３は、ルート選択部３５より選択されたＬＤが通知されると、ヘッダのＬＳに自ノードＩＤを設定すると共に、ヘッダのＬＤにルート選択部３５より選択されたＬＤを設定する。
【００６４】
この際、中継ノード装置１が他の中継ノード装置１へデータフレームを送信する場合であって、ＡＣＫフラグの値が“０”の場合には、データフレーム処理部３３は、ＡＣＫフラグの値を“１”に設定する。また、中継ノード装置１が末梢ノード装置１へデータフレームを送信する場合であって、ＡＣＫフラグの値が“１”の場合には、データフレーム処理部３３は、ＡＣＫフラグの値を“０”に設定する。こうすることで、中継ノード装置１が他の中継ノード装置１へデータフレームを送信する場合に、ＡＣＫの返信が不要となるように設定される。
【００６５】
また、この際、データフレーム処理部３３は、データフレームの再送（リトライ）に備えて、データフレームを記憶部２０のデータエリアに格納する。こうすることで、データフレームを再送する必要が生じた場合に、記憶部２０に格納されているデータフレームに基づいて、再送するためのデータフレームを複製することが可能となる。
【００６６】
そして、データフレーム処理部３３は、通信部１０を介して、設定したＬＤである隣接ノード装置１へデータフレームを送信する。
【００６７】
また、ＡＣＫ処理部３４よりデータフレームの送信の失敗が通知され、更に、ルート選択部３５より選択されたＬＤが通知されると、データフレーム処理部３３は、データフレームの再送を行う。より具体的には、データフレーム処理部３３は、記憶部２０のデータエリアに格納されている対応するデータフレームを複製し、複製したデータフレームのＬＤをルート選択部３５より選択されたＬＤへと変更する。そして、データフレーム処理部３３は、通信部１０を介して、変更後のＬＤである隣接ノード装置１へ複製したデータフレームを送信する。この際、ルート選択部３５により選択されたＬＤがＬＳの場合には、データフレーム処理部３３は、記憶部２０のデータエリアに格納されている対応するデータフレームを削除する。また、必要に応じて、ＡＣＫフラグの設定を変更する。
【００６８】
更に、データフレーム処理部３３は、上位層の要求に応答して、図３に例示するヘッダのデータフレームを生成し、通信部１０を介して、生成したデータフレームを他のノード装置１へ送信する。ただし、中継ノード装置１は、中継専用のノード装置であることから、データフレームの生成処理を行わない。つまり、中継ノード装置１は、自らＧＳとして振舞うことはない。
【００６９】
ＡＣＫ処理部３４は、ＡＣＫを送受信するための処理を行う。具体的には、ＡＣＫ処理部３４は、データフレーム処理部よりＡＣＫの生成指示を受けると、ＡＣＫを生成し、生成したＡＣＫをＬＳへ返信する。
【００７０】
また、ＡＣＫ処理部３４は、データフレームを送信後、所定時間内にＡＣＫを受信した場合には、データフレームの送信が成功したと判定し、記憶部２０のデータエリアに格納されている対応するデータフレームを削除する。
【００７１】
一方、所定時間内にＡＣＫを受信しなかった場合には、ＡＣＫ処理部３４は、データフレームの送信が失敗したと判定し、データフレーム処理部３３とルート選択部３５に対して、データフレームの送信が失敗した旨を通知する。
【００７２】
また、ＡＣＫ処理部３４は、データフレームの送信が成功したか否かの判定の結果を、リンク管理部３２へ通知する。こうすることで、リンク管理部３２は、データフレームの送信が成功したか否かに基づいて、ルーティングテーブルＴ２の優先度を変更することが可能となる。
【００７３】
ルート選択部３５は、受信したデータフレームを他のノード装置１へ送信する必要がある場合に、ルーティングテーブルＴ２を参照して、データフレームの送信先となる隣接ノード装置１、すなわち、ＬＤを選択する。そして、ルート選択部３５は、選択したＬＤをデータフレーム処理部３３へ通知する。
【００７４】
より具体的には、データフレーム処理部３３よりＬＤの選択を指示された場合、あるいは、ＡＣＫ処理部３４よりデータフレームの送信の失敗が通知された場合に、ルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定する。そして、ルート選択部３５は、ルーティングテーブルＴ２を特定できた場合には、特定したルーティングテーブルＴ２の優先度に基づいて、送信先の隣接ノード装置１、すなわち、ＬＤを選択する。
【００７５】
一方、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定できなかった場合には、ルート選択部３５は、リンク管理部３２に対し、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２の生成を指示する。そして、ルート選択部３５は、リンク管理部３２により生成されたルーティングテーブルＴ２の優先度に基づいて、送信先の隣接ノード装置１、すなわち、ＬＤを選択する。
【００７６】
例えば、送信対象のデータフレームがループデータではない場合には、すなわち、初めて受信したデータフレームの場合には、ルート選択部３５は、送信元の隣接ノード装置１（ＬＳ）を除いたＬＤ候補の中から、優先度が最も高いＬＤ候補を、ＬＤとして選択する。
【００７７】
また、例えば、送信対象のデータフレームがループデータの場合、あるいは、ＡＣＫ処理部３４よりデータフレームの送信の失敗が通知された場合には、ルート選択部３５は、送信元の隣接ノード装置１（ＬＳ）及び既に送信を試みた隣接ノード装置１を除いたＬＤ候補の中から、優先度が最も高いＬＤ候補を、ＬＤとして選択する。
【００７８】
この際、ＬＤを特定できなかった場合には、ルート選択部３５は、送信対象のデータフレームを送信元の隣接ノード装置１（ＬＳ）へ送り返すために、送信元の隣接ノード装置１（ＬＳ）をＬＤとして選択する。
【００７９】
ハローフレーム生成部３６は、ハローフレームを所定のタイミング（例えば、定期的に）で生成し、通信部１０を介して、生成したハローフレームを他のノード装置１へ送信する。
【００８０】
次に、図７と図８を参照して、本実施形態１における中継処理の流れについて説明する。図７と図８は、それぞれ、本実施形態１における中継処理のフローを説明するためのフローチャートの例の一部と、他の一部である。本中継処理は、データフレームの受信をトリガとして開始される。
【００８１】
データフレーム処理部３３は、データフレームを受信したか否かを判定する（ステップＳ００１）。データフレームを受信していないと判定した場合には（ステップＳ００１；ＮＯ）、データフレーム処理部３３は、更に、自ノード装置１がＧＳとして送信するデータフレームが有るか否かを判定する（ステップＳ１０１）。但し、中継ノード装置１が本中継処理を実行する場合には、上述したように、中継ノード装置１はＧＳとして機能しないため、ステップＳ１０１の処理は実行されない。そのため、ステップＳ００１の処理でＮＯと判定された場合には、ステップＳ００１の処理を繰り返して、データフレームの受信を待つ。
【００８２】
データフレーム処理部３３により、自ノード装置１がＧＳとして送信するデータフレームは無いと判定された場合には（ステップＳ１０１；ＮＯ）、処理はステップＳ００１の処理に戻り、前述の処理を繰り返す。一方、データフレーム処理部３３により、自ノード装置１がＧＳとして送信するデータフレームが有ると判定された場合には（ステップＳ１０１；ＹＥＳ）、処理は後述のステップＳ１０２の処理へと進む。
【００８３】
一方、ステップＳ００１の処理において、データフレームを受信したと判定した場合には（ステップＳ００１；ＹＥＳ）、データフレーム処理部３３は、受信したデータフレームのヘッダを解析し（ステップＳ００２）、ＬＤが自ノードＩＤと一致するか否かを判定する（ステップＳ００３）。
【００８４】
ＬＤが自ノードＩＤと一致しないと判定した場合には（ステップＳ００３；ＮＯ）、データフレーム処理部３３は、受信したデータフレームを破棄する（ステップＳ００４）。そして、処理はステップＳ００１の処理へと戻り、次のデータフレームの受信を待つ。
【００８５】
一方、ＬＤが自ノードＩＤと一致すると判定した場合には（ステップＳ００３；ＹＥＳ）、データフレーム処理部３３は、受信したデータフレームのＡＣＫフラグに基づいて、ＡＣＫをＬＳへ返信する必要があるか否かを判定する（ステップＳ００５）。
【００８６】
データフレーム処理部３３により、ＡＣＫをＬＳへ返信する必要はないと判定された場合には（ステップＳ００５；ＮＯ）、処理は後述のステップＳ００８の処理へと進む。一方、ＡＣＫをＬＳへ返信する必要があると判定した場合には（ステップＳ００５；ＹＥＳ）、データフレーム処理部３３は、ＡＣＫ処理部３４に対して、ＡＣＫの生成を指示する（ステップＳ００６）。
【００８７】
ＡＣＫの生成指示を受けたＡＣＫ処理部３４は、ＡＣＫを生成し、通信部１０を介して、送信元の隣接ノード装置１（ＬＳ）へ生成したＡＣＫを送信する（ステップＳ００７）。そして、データフレーム処理部３３は、ＧＤが自ノードＩＤと一致するか否かを判定する（ステップＳ００８）。すなわち、データフレーム処理部３３は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【００８８】
ＧＤが自ノードＩＤと一致すると判定した場合には（ステップＳ００８；ＹＥＳ）、データフレーム処理部３３は、受信したデータフレームを上位層へ出力し、データフレームの入力に応答して、上位層は、受信したデータフレームの処理を行う（ステップＳ００９）。
【００８９】
一方、ＧＤが自ノードＩＤと一致しないと判定した場合には（ステップＳ００８；ＮＯ）、データフレーム処理部３３は、ヘッダとＦＩＤテーブルＴ１とを比較し（ステップＳ０１０）、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する（ステップＳ０１１）。すなわち、データフレーム処理部３３は、同じデータフレームを既に受信したか否かを判定する。
【００９０】
ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあると判定した場合には（ステップＳ０１１；ＹＥＳ）、データフレーム処理部３３は、更に、記憶部２０のデータエリアに格納されている自ノード装置１の種別を示す情報に基づいて、自ノード装置１が中継ノード装置１であるか否かを判定する（ステップＳ０１２）。
【００９１】
データフレーム処理部３３により、自ノード装置１は中継ノード装置１ではないと判定された場合には（ステップＳ０１２；ＮＯ），処理は後述のステップＳ０１４の処理へと進む。これは、本実施形態１においては、ループデータと重複データとの区別は中継ノード装置１においてのみ実行されるように構成されているからである。
【００９２】
一方、自ノード装置１は中継ノード装置１であると判定した場合には（ステップＳ０１２；ＹＥＳ）、データフレーム処理部３３は、更に、ヘッダのＰａｔｈＩＤが、ＧＤとＦＩＤとの組合せがヘッダのＧＤとＦＩＤとの組合せと一致する登録のＰａｔｈＩＤと一致するか否かを判定する（ステップＳ０１３）。すなわち、データフレーム処理部３３は、ヘッダのＧＤとＦＩＤとＰａｔｈＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。
【００９３】
ＰａｔｈＩＤは一致しないと判定した場合には（ステップＳ０１３；ＮＯ）、すなわち、受信したデータフレームは重複データであると判定した場合には、データフレーム処理部３３は、受信したデータフレームを破棄する（ステップＳ００４）。
【００９４】
一方、ＰａｔｈＩＤも一致すると判定した場合には（ステップＳ０１３；ＹＥＳ）、すなわち、受信したデータフレームはループデータであると判定した場合には、データフレーム処理部３３は、ルート選択部３５に対して、ＬＤの再選択を指示する（ステップＳ０１４）。
【００９５】
ＬＤの再選択の指示を受けたルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定し（ステップＳ０１５）、送信対象のデータフレームを送信していない「ＬＤ候補」が有るか否かを判定する（ステップＳ０１６）。
【００９６】
ルート選択部３５により、送信対象のデータフレームを送信していない「ＬＤ候補」がまだ有ると判定された場合には（ステップＳ０１６；ＹＥＳ）、処理は後述のステップＳ１０７の処理へと進む。一方、送信対象のデータフレームを送信していない「ＬＤ候補」はもう無いと判定した場合には（ステップＳ０１６；ＮＯ）、ルート選択部３５は、ＬＳをＬＤとして選択し（ステップＳ０１７）、処理は後述のステップＳ１０８の処理へと進む。すなわち、送信元のノード装置１へ受信したデータフレームを送り返すための処理を行う。
【００９７】
ステップＳ０１１の処理において、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にないと判定した場合には（ステップＳ０１１；ＮＯ）、すなわち、初めて受信したデータフレームであると判定した場合には、データフレーム処理部３３は、ＦＩＤテーブルＴ１への登録処理を実行する。
【００９８】
具体的には、データフレーム処理部３３は、ヘッダのＰａｔｈＩＤがｎｕｌｌか否かを判定する（ステップＳ２０１）。ヘッダのＰａｔｈＩＤがｎｕｌｌではないと判定した場合には（ステップＳ２０１；ＮＯ）、すなわち、受信したデータフレームがいずれかの中継ノード装置１を既に経由している場合には、データフレーム処理部３３は、ヘッダのＧＤとＦＩＤとＰａｔｈＩＤとを対応付けてＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。そして、処理は後述のステップＳ１０２の処理へと進む。
【００９９】
一方、ヘッダのＰａｔｈＩＤはｎｕｌｌであると判定した場合には（ステップＳ２０１；ＹＥＳ）、すなわち、受信したデータフレームが中継ノード装置１を経由していないデータフレームである場合には、データフレーム処理部３３は、更に、記憶部２０のデータエリアに格納されている自ノード装置１の種別を示す情報に基づいて、自ノード装置１が中継ノード装置１であるか否かを判定する（ステップＳ２０２）。
【０１００】
自ノード装置１は末梢ノード装置１であると判定した場合には（ステップＳ２０２；ＮＯ）、処理はステップＳ３０１の処理へと進み、前述した処理を行う。
【０１０１】
一方、自ノード装置１は中継ノード装置１であると判定した場合には（ステップＳ２０２；ＹＥＳ）、データフレーム処理部３３は、ヘッダのＰａｔｈＩＤに自ノードＩＤを設定すると共に（ステップＳ２０３）、自ノードＩＤと、ヘッダのＧＤとＦＩＤと、を対応付けてＦＩＤテーブルＴ１に登録する（ステップＳ２０４）。すなわち、処理対象のデータフレームが最初に経由する中継ノード装置１において、ヘッダのＰａｔｈＩＤの設定が行われる。そして、処理は後述のステップＳ１０２の処理へと進む。
【０１０２】
ステップＳ１０２の処理では、データフレーム処理部３３は、ルート選択部３５に対し、ＬＤの選択を指示する（ステップＳ１０２）。
【０１０３】
ＬＤの選択指示を受けたルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定し（ステップＳ１０３）、ルーティングテーブルＴ２を特定できたか否かを判定する（ステップＳ１０４）。ルーティングテーブルＴ２を特定できなかったと判定した場合には（ステップＳ１０４；ＮＯ）、ルート選択部３５は、リンク管理部３２に対し、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２の生成を指示する（ステップＳ１０５）。
【０１０４】
ルーティングテーブルＴ２の生成指示を受けたリンク管理部３２は、生成を指示されたＧＤに対応するルーティングテーブルＴ２を生成する（ステップＳ１０６）。
【０１０５】
そして、ルート選択部３５は、ステップＳ０１５又はステップＳ１０３の処理で特定した、あるいは、ステップＳ１０６の処理で生成されたルーティングテーブルＴ２の優先度に基づいて、送信先の隣接ノード装置１、すなわち、ＬＤを選択する（ステップＳ１０７）。
【０１０６】
そして、ルート選択部３５は、データフレーム処理部３３に対し、選択したＬＤを通知する（ステップＳ１０８）。選択されたＬＤの通知を受けたデータフレーム処理部３３は、ヘッダの設定を行う（ステップＳ１０９）。
【０１０７】
そして、データフレーム処理部３３は、通信部１０を介して、設定したＬＤ、すなわちルート選択部３５により選択されたＬＤである隣接ノード装置１へデータフレームを送信する（ステップＳ１１０）。そして、処理はステップＳ００１の処理へと戻り、次にデータフレームの受信を待つ。
【０１０８】
次に、図９を参照して、本実施形態１におけるリトライ処理の流れについて説明する。図９は、本実施形態１におけるリトライ処理のフローを説明するためのフローチャートの例である。本リトライ処理は、中継処理におけるデータフレームの送信をトリガとして開始される。
【０１０９】
なお、本リトライ処理は、中継ノード装置１が他の中継ノード装置１へデータフレームを中継する場合には実行されない。本実施形態１においては、中継ノード装置１が他の中継ノード装置１へデータフレームを中継する場合には、ＡＣＫを返信しないように構成しているからである。
【０１１０】
データフレーム処理部３３によりデータフレームが送信されると、ＡＣＫ処理部３４は、タイマ（不図示）をスタートさせ（ステップＳ４０１）、該データフレームの送信先の隣接ノード装置１（ＬＤ）より返信されるＡＣＫを受信したか否かを判定する（ステップＳ４０２）。
【０１１１】
ＡＣＫを受信したと判定した場合には（ステップＳ４０２；ＹＥＳ）、ＡＣＫ処理部３４は、記憶部２０のデータエリアに格納されている対応するデータフレームを削除し（ステップＳ４０３）、データフレームの送信が成功したので、リトライ処理は終了する。
【０１１２】
一方、ＡＣＫをまだ受信していないと判定した場合には（ステップＳ４０２；ＮＯ）、ＡＣＫ処理部３４は、更に、タイムアウトしたか否かを判定する（ステップＳ５０１）。まだタイムアウトしていないと判定された場合には（ステップＳ５０１；ＮＯ）、処理はステップＳ４０２の処理へと戻り、前述の処理を繰り返す。
【０１１３】
一方、タイムアウトしたと判定した場合には（ステップＳ５０１；ＹＥＳ）、ＡＣＫ処理部３４は、データフレームの送信が失敗したと判定し、データフレーム処理部３３とルート選択部３５に対して、データフレームの送信が失敗した旨を通知する（ステップＳ５０２）。この際、ＡＣＫ処理部３４は、データフレームの送信が成功したか否かの判定の結果を、リンク管理部３２へ通知する。こうすることで、リンク管理部３２は、データフレームの送信が成功したか否かに基づいて、ルーティングテーブルＴ２の優先度を変更することが可能となる。
【０１１４】
データフレームの送信失敗の通知を受けたルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定し（ステップＳ５０３）、送信対象のデータフレームを送信していない「ＬＤ候補」が有るか否かを判定する（ステップＳ５０４）。
【０１１５】
送信対象のデータフレームを送信していない「ＬＤ候補」がまだ有ると判定した場合には（ステップＳ５０４；ＹＥＳ）、ルート選択部３５は、ＬＤを選択し（ステップＳ５０５）、選択したＬＤをデータフレーム処理部３３へ通知する（ステップＳ５０６）。
【０１１６】
ＡＣＫ処理部３４よりデータフレームの送信の失敗が通知され、更に、ルート選択部３５より選択されたＬＤが通知されると、データフレーム処理部３３は、記憶部２０のデータエリアに格納されている対応するデータフレームを複製し、複製したデータフレームのＬＤをルート選択部３５より選択されたＬＤへと変更する（ステップＳ５０７）。
【０１１７】
そして、データフレーム処理部３３は、通信部１０を介して、変更後のＬＤである隣接ノード装置１へ複製したデータフレームを送信し（ステップＳ５０８）、処理はステップＳ４０１の処理へと戻り、前述の処理を繰り返す。
【０１１８】
ステップＳ５０４の処理において、送信対象のデータフレームを送信していない「ＬＤ候補」はもう無いと判定した場合には（ステップＳ５０４；ＮＯ）、ルート選択部３５は、ＬＳをＬＤとして選択し（ステップＳ６０１）、選択したＬＤをデータフレーム処理部３３へ通知する（ステップＳ６０２）。
【０１１９】
ＡＣＫ処理部３４よりデータフレームの送信の失敗が通知され、更に、ルート選択部３５より選択されたＬＤが通知されると、データフレーム処理部３３は、記憶部２０のデータエリアに格納されている対応するデータフレームを複製し、複製したデータフレームのＬＤをルート選択部３５より選択されたＬＤへと変更する（ステップＳ６０３）。
【０１２０】
そして、データフレーム処理部３３は、通信部１０を介して、変更後のＬＤである隣接ノード装置１へ複製したデータフレームを送信し（ステップＳ６０４）、記憶部２０のデータエリアに格納されている対応するデータフレームを削除する（ステップＳ６０５）。こうして、データフレームは送信元の隣接ノード装置１（ＬＳ）へ送り返され、処理は終了する。
【０１２１】
次に、図１、図６乃至図１１を参照して、具体例に従って、本実施形態１における中継処理の流れについて説明する。図１０は、図１に示す例に対応するタイミングチャートである。但し、図中の丸付き番号は、必ずしも時系列順に付された番号ではなく、各タイミングを識別するために付した番号である。また、これらの番号は、図１と図１０と図１１において、対応付けられているものとする。図１１は、図１０のタイミングチャートの各タイミングでの、ヘッダとＦＩＤテーブルの内容を示す図である。
【０１２２】
なお、同時に複数の異なるデータフレームがネットワーク１００を介して、伝送され得るが、ここでは、一つのデータフレームの中継の流れに着眼して説明するものとする。また、本具体例においては、図１と図１０を参照して、中継ノード装置Ｓ１より送信されたデータフレームの方が、末梢ノード装置Ｎ４より送信されたデータフレームより早く中継ノード装置Ｓ２に到達するものとする。
【０１２３】
図１、図６、図１０を参照して、タイミング１において、末梢ノード装置Ｎ１はＧＳとして、ＧＤを末梢ノード装置Ｎ１６としたデータフレーム（ＦＩＤをＦＩＤ１とする）を生成し、優先度ｐ１＞優先度ｐ２であることから、生成したデータフレームを末梢ノード装置Ｎ２へ送信する。タイミング１におけるデータフレームのＧＳとＦＩＤとＰａｔｈＩＤは、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌである。
【０１２４】
図７を参照して、データフレームを受信した末梢ノード装置Ｎ２は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１になく（ステップＳ０１１；ＮＯ）、ヘッダのＰａｔｈＩＤもｎｕｌｌであり（ステップＳ２０１；ＹＥＳ）、末梢ノード装置Ｎ２であることから（ステップＳ２０２；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とＰａｔｈＩＤ（ｎｕｌｌ）とを対応付けて、図１１に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０１２５】
図１と図１０を参照して、タイミング１において、末梢ノード装置Ｎ２は中継ノード装置Ｓ１へデータフレームを送信する。タイミング１におけるデータフレームのＧＳとＦＩＤとＰａｔｈＩＤは、中継ノード装置１を経由していないことから、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌのままである。
【０１２６】
図７を参照して、データフレームを受信した中継ノード装置Ｓ１は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１になく（ステップＳ０１１；ＮＯ）、ヘッダのＰａｔｈＩＤもｎｕｌｌであり（ステップＳ２０１；ＹＥＳ）、中継ノード装置Ｓ１であることから（ステップＳ２０２；ＹＥＳ）、ヘッダのＰａｔｈＩＤに自ノードＩＤであるＳ１を設定する（ステップＳ２０３）。そして、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）と、ＰａｔｈＩＤ（Ｓ１）とを対応付けて、図１１に示すように、ＦＩＤテーブルＴ１に登録する（ステップ２０４）。
【０１２７】
図１と図１０を参照して、タイミング３において、中継ノード装置Ｓ１は中継ノード装置Ｓ２へデータフレームを送信する。タイミング３におけるデータフレームのＧＳとＦＩＤとＰａｔｈＩＤは、中継ノード装置Ｓ１を経由したことから、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、Ｓ１となる。
【０１２８】
図７を参照して、データフレームを受信した中継ノード装置Ｓ２は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１になく（ステップＳ０１１；ＮＯ）、ヘッダのＰａｔｈＩＤはＳ１であることから（ステップＳ２０１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とＰａｔｈＩＤ（Ｓ１）とを対応付けて、図１１に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０１２９】
図１と図１０を参照して、タイミング４において、例えば、通信障害のために、末梢ノード装置Ｎ２より末梢ノード装置Ｎ１へ返信されたＡＣＫが欠落したとする。
【０１３０】
図１と図１０を参照して、タイミング５において、末梢ノード装置Ｎ１は、ＡＣＫが受信できないことから、末梢ノード装置Ｎ２への送信が失敗したと判定し（図９のリトライ処理のステップＳ５０１；ＹＥＳ）、末梢ノード装置Ｎ３へデータフレームを再送（リトライ）する。オリジナルのデータフレームと再送されたデータフレームを区別するため、再送されたデータフレームを再送データフレームと称することとする。タイミング５における再送データフレームのＧＳとＦＩＤとＰａｔｈＩＤは、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌである。
【０１３１】
図７を参照して、再送データフレームを受信した末梢ノード装置Ｎ３は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１になく（ステップＳ０１１；ＮＯ）、ヘッダのＰａｔｈＩＤもｎｕｌｌであり（ステップＳ２０１；ＹＥＳ）、末梢ノード装置Ｎ３であることから（ステップＳ２０２；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とＰａｔｈＩＤ（ｎｕｌｌ）とを対応付けて、図１１に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０１３２】
図１と図１０を参照して、タイミング６において、末梢ノード装置Ｎ３は末梢ノード装置Ｎ４へ再送データフレームを送信する。タイミング６における再送データフレームのＧＳとＦＩＤとＰａｔｈＩＤは、中継ノード装置１を経由していないことから、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌのままである。
【０１３３】
図７を参照して、再送データフレームを受信した末梢ノード装置Ｎ４は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１になく（ステップＳ０１１；ＮＯ）、ヘッダのＰａｔｈＩＤもｎｕｌｌであり（ステップＳ２０１；ＹＥＳ）、末梢ノード装置Ｎ４であることから（ステップＳ２０２；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とＰａｔｈＩＤ（ｎｕｌｌ）とを対応付けて、図１１に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０１３４】
図１と図１０を参照して、タイミング７において、末梢ノード装置Ｎ４は中継ノード装置Ｓ２へ再送データフレームを送信する。タイミング７における再送データフレームのＧＳとＦＩＤとＰａｔｈＩＤは、中継ノード装置１を経由していないことから、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌのままである。
【０１３５】
図７と図８と図１１を参照して、再送データフレームを受信した中継ノード装置Ｓ２は、ＧＳとＦＩＤとの組合せが一致する登録が既にＦＩＤテーブルＴ１にあり（ステップＳ０１１；ＹＥＳ）、中継ノード装置Ｓ２であり（ステップＳ０１２；ＹＥＳ）、ヘッダのＰａｔｈＩＤ（ｎｕｌｌ）とＦＩＤテーブルＴ１のＰａｔｈＩＤ（Ｓ１）は一致しないことから（ステップＳ０１３；ＮＯ）、受信した再送データフレームを重複データと判定する。そして、中継ノード装置Ｓ２は、受信した再送データフレームを破棄する（ステップＳ００４）。このようにして、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０１３６】
図１と図１０を参照して、タイミング８において、中継ノード装置Ｓ２は中継ノード装置Ｓ３へデータフレームを送信する。タイミング８におけるデータフレームのＧＳとＦＩＤとＰａｔｈＩＤは、中継ノード装置Ｓ１を経由したオリジナルのデータフレームであることから、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、Ｓ１である。
【０１３７】
図７を参照して、データフレームを受信した中継ノード装置Ｓ３は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１になく（ステップＳ０１１；ＮＯ）、ヘッダのＰａｔｈＩＤはＳ１であることから（ステップＳ２０１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とＰａｔｈＩＤ（Ｓ１）とを対応付けて、図１１に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０１３８】
図１と図１０を参照して、タイミング９において、中継ノード装置Ｓ３はＧＤである末梢ノード装置Ｎ１６へデータフレームを送信する。タイミング９におけるデータフレームのＧＳとＦＩＤとＰａｔｈＩＤは、中継ノード装置Ｓ１を経由したオリジナルのデータフレームであることから、それぞれ、図１１に示すように、Ｎ１、ＦＩＤ１、Ｓ１である。
【０１３９】
図７を参照して、データフレームを受信した末梢ノード装置Ｎ１６は、ヘッダを解析し（ステップＳ００２）、ＧＤが自ノードＩＤであることから（ステップＳ００８；ＹＥＳ）、受信したデータフレームを上位層へ出力する。上位層は、受信したデータフレームを処理し（ステップＳ００９）、中継処理が終了することとなる。
【０１４０】
上記実施形態１によれば、中継ノード装置１は、データフレームを受信すると、ＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１に有るか否かを判定し、一致する登録がある場合に、ＰａｔｈＩＤに基づいて、受信したデータフレームがループデータか、それとも、重複データかを判定する。
【０１４１】
このように構成することで、重複データとループデータとを区別することが可能となる。これにより、重複データがループデータであると誤判定されることによる誤った経路変更を防止することが可能となる。したがって、誤った経路変更によるネットワークの切断やノード装置の孤立が生じるのを防止することが可能となり、適切な経路を維持することが可能となる。
【０１４２】
また、上記実施形態１によれば、中継ノード装置１は、受信したデータフレームが重複データである場合には、受信したデータフレームを他のノード装置１へ送信することなく破棄する。このように構成することで、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０１４３】
（実施形態２）
実施形態１においては、「ＧＳ」と「ＦＩＤ」と「ＰａｔｈＩＤ」とに基づいて、ループデータと重複データとを区別する方法について説明した。本実施形態２においては、「ＧＳ」と「ＦＩＤ」と「リトライＩＤ」と「リトライ回数」とに基づいて、ループデータと重複データとを区別する方法について説明する。
【０１４４】
図１２は、本実施形態２におけるネットワーク１００の概念図である。本実施形態２におけるネットワーク１００は、図１２に示すように、例えば、末梢ノード装置１のみで構成されている。このようなネットワーク１００としては、例えば、住宅が密集したエリアのネットワークが想定される。もちろん、末梢ノード装置１と中継ノード装置１とが混在するネットワーク１００においても、本実施形態２において説明するループデータと重複データとを区別する方法を適用することは可能である。
【０１４５】
図１３は、本実施形態２におけるネットワーク１００を構成するノード装置１の構成例を示す機能ブロック図である。本実施形態２におけるノード装置１の構成は、基本的には実施形態１の場合と同じである。但し、図１３に示すように、記憶部２０がリトライ管理テーブルＴ３を更に格納する点と、制御部３０がリトライカウンタ３７とリトライ通知部３８として更に機能する点で実施形態１の場合と異なっている。また、制御部３０の共通する機能部の一部（データフレーム処理部３３、ＡＣＫ処理部３４）が果たす役割が実施形態１の場合と若干異なっている。また、ヘッダのフォーマットとＦＩＤテーブルＴ１の構成も実施形態１の場合と異なっている。
【０１４６】
まず、図１４と図１５を参照して、本実施形態２におけるヘッダについて説明する。図１４は、本実施形態２におけるデータフレームのヘッダのフォーマット例を示す図である。図１５は、図１４に示すフォーマット例における各フィールドの説明である。
【０１４７】
本実施形態２におけるデータフレームのヘッダは、図１４に示すように、ＬＤと、ＬＳと、ＧＤと、ＧＳと、ＦＩＤと、フレームタイプと、リトライＩＤと、リトライ回数と、を含む。ＬＤと、ＬＳと、ＧＤと、ＧＳと、ＦＩＤと、フレームタイプは、実施形態１において説明したものと同じである。
【０１４８】
リトライＩＤは、データフレームを再送（リトライ）したノード装置１のノードＩＤである。リトライ回数は、リトライＩＤで特定されるノード装置１がデータフレームを再送（リトライ）した回数（リトライカウンタ３７のカウンタ値）である。
【０１４９】
次に、図１６と図１７を参照して、記憶部２０のデータエリアに格納されている、ＦＩＤテーブルＴ１とリトライ管理テーブルＴ３について説明する。なお、本実施形態２におけるルーティングテーブルＴ２は、実施形態１の場合と同じである。
【０１５０】
図１６は、本実施形態２におけるＦＩＤテーブルＴ１の例を示す図である。本実施形態２におけるＦＩＤテーブルＴ１は、データフレーム処理部３３により管理されており、図１６に示すように、「ＧＳ」と「ＦＩＤ」と「リトライＩＤ」と「リトライ回数」とが対応付けられているテーブルである。実施形態１の場合と同様に、データフレーム処理部３３は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１に無い場合に、ＦＩＤテーブルＴ１への登録処理を行う。
【０１５１】
図１７は、本実施形態２におけるリトライ管理テーブルＴ３の例を示す図である。なお、図１７に例示するリトライ管理テーブルＴ３は、末梢ノード装置Ｎ５が備えるリトライ管理テーブルＴ３の例である。
【０１５２】
リトライ管理テーブルＴ３は、データフレーム処理部３３により生成・管理され、リトライ通知部３８がリトライ情報（フレーム）を生成する際に、参照されるテーブルである。また、リトライ管理テーブルＴ３は、図１７に示すように、「発生日時」と「ＧＳ」と「ＦＩＤ」と「ＬＤ」とが対応付けられているテーブルである。
【０１５３】
「発生日時」欄には、データフレームを再送（リトライ）した日時を示す情報が格納される。「ＧＳ」欄には、リトライ対象となったデータフレームのＧＳが格納される。「ＦＤＩ」欄には、リトライ対象となったデータフレームのＦＩＤが格納される。「ＬＤ」欄には、リトライの際に選択されたＬＤが格納される。
【０１５４】
例えば、図１７（末梢ノード装置Ｎ５が備えるリトライ管理テーブルＴ３の例）を参照すると、日時ＤＴ１に、末梢ノード装置Ｎ１（ＧＳ）で発行されたＦＩＤ１のデータフレームが、末梢ノード装置Ｎ５において、末梢ノード装置Ｎ１１（ＬＤ）へ第一回目のリトライが実行されたことが分かる。
【０１５５】
図１３に戻り、データフレーム処理部３３は、受信したデータフレームの処理を行う。より具体的には、データフレーム処理部３３は、まず、フレーム種別特定部３１よりデータフレームが入力されたか否かを判定することで、データフレームを受信したか否かを判定する。そして、データフレーム処理部３３は、データフレームを受信すると、受信したデータフレームのヘッダを解析し、ＬＤが自ノードＩＤと一致するか否かを判定する。
【０１５６】
そして、データフレーム処理部３３は、ＬＤが自ノードＩＤと一致しない場合には、受信したデータフレームを破棄し、ＬＤが自ノードＩＤと一致する場合には、ＡＣＫ処理部３４に対して、ＡＣＫの生成を指示する。そして、データフレーム処理部３３は、ＧＤが自ノードＩＤと一致するか否かを判定する。すなわち、データフレーム処理部３３は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【０１５７】
受信したデータフレームの最終的な宛先が自ノード装置１の場合には、データフレーム処理部３３は、受信したデータフレームを上位層へ出力する。データフレームの入力に応答して、上位層は、受信したデータフレームの処理を行う。
【０１５８】
一方、受信したデータフレームの最終的な宛先が他のノード装置１の場合には、データフレーム処理部３３は、ヘッダとＦＩＤテーブルＴ１とを比較し、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。すなわち、データフレーム処理部３３は、同じデータフレームを既に受信したか否かを判定する。
【０１５９】
ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にある場合には、データフレーム処理部３３は、更に、ヘッダのリトライＩＤと自ノードＩＤとが一致するか否かを判定する。すなわち、データフレーム処理部３３は、受信したデータフレームが、自ノード装置１が再送したデータフレームか否かを判定する。
【０１６０】
自ノード装置１が再送したデータフレームではない場合には、データフレーム処理部３３は、更に、ヘッダのリトライＩＤとリトライ回数の組合せが、ＧＤとＦＩＤとの組合せがヘッダのＧＤとＦＩＤとの組合せと一致する登録のリトライＩＤとリトライ回数の組合せと一致するか否かを判定する。すなわち、ヘッダのＧＤとＦＩＤとリトライＩＤとリトライ回数との組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。
【０１６１】
ヘッダのＧＤとＦＩＤとリトライＩＤとリトライ回数との組合せと一致する登録がＦＩＤテーブルＴ１にある場合、あるいは、受信したデータレームが自ノード装置１により再送されたデータフレームである場合には、データフレーム処理部３３は、受信したデータフレームはループデータであると判定する。
【０１６２】
一方、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるが、リトライＩＤとリトライ回数の内の少なくとも一方が一致しない場合には、データフレーム処理部３３は、受信したデータフレームは重複データであると判定する。このように、本実施形態２では、ループデータと重複データとを区別することが可能である。
【０１６３】
そして、データフレーム処理部３３は、受信したデータフレームを重複データと判定した場合には、受信したデータを破棄し、ループデータと判定した場合には、ルート選択部３５に対して、ＬＤの再選択を指示する。この際、データフレーム処理部３３は、ループする旨とループデータを送信した際のＬＤとを、リンク管理部３２へ通知する。こうすることで、リンク管理部３２は、ルーティングテーブルＴ２の優先度を適切に変更することが可能となる。
【０１６４】
一方、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１に存在しない場合には、すなわち、初めて受信したデータフレームの場合には、データフレーム処理部３３は、ＦＩＤテーブルＴ１への登録処理を行う。
【０１６５】
より具体的には、データフレーム処理部３３は、ヘッダのＧＤとＦＩＤとリトライＩＤとリトライ回数とを対応付けてＦＩＤテーブルＴ１に登録する。そして、データフレーム処理部３３は、受信したデータフレームの送信を行うために、ルート選択部３５に対して、ＬＤの選択を指示する。
【０１６６】
また、データフレーム処理部３３は、ルート選択部３５より選択されたＬＤが通知されると、データフレームの送信処理を行う。より具体的には、データフレーム処理部３３は、ルート選択部３５より選択されたＬＤが通知されると、ヘッダのＬＳに自ノードＩＤを設定すると共に、ヘッダのＬＤにルート選択部３５より選択されたＬＤを設定する。
【０１６７】
この際、データフレーム処理部３３は、データフレームの再送（リトライ）に備えて、ヘッダ設定後のデータフレームを記憶部２０のデータエリアに格納する。こうすることで、データフレームを再送する必要が生じた場合に、記憶部２０に格納されているデータフレームに基づいて、再送するためのデータフレームを複製することが可能となる。
【０１６８】
そして、データフレーム処理部３３は、通信部１０を介して、設定したＬＤである隣接ノード装置１へデータフレームを送信する。
【０１６９】
また、ＡＣＫ処理部３４よりデータフレームの送信の失敗が通知され、更に、ルート選択部３５より選択されたＬＤが通知されると、データフレーム処理部３３は、データフレームの再送を行う。より具体的には、データフレーム処理部３３は、記憶部２０のデータエリアに格納されている対応するデータフレームを複製し、複製したデータフレームのＬＤをルート選択部３５より選択されたＬＤへと変更する。そして、データフレーム処理部３３は、通信部１０を介して、変更後のＬＤである隣接ノード装置１へ複製したデータフレームを送信する。
【０１７０】
この際、ルート選択部３５により選択されたＬＤがＬＳの場合には、データフレーム処理部３３は、記憶部２０のデータエリアに格納されている対応するデータフレームを削除する。ルート選択部３５により選択されたＬＤがＬＳではない場合には、すなわち、データフレームを再送（リトライ）する場合には、ヘッダのリトライＩＤに自ノードＩＤを設定すると共に、リトライ回数としてリトライカウンタ３７のカウンタ値を設定する。
【０１７１】
更に、データフレーム処理部３３は、上位層の要求に応答して、図１４に例示するヘッダのデータフレームを生成し、通信部１０を介して、生成したデータフレームを他のノード装置１へ送信する。
【０１７２】
また、本実施形態２においては、データフレーム処理部３３は、リトライ管理テーブルＴ３の生成と管理を行う。より具体的には、リトライ処理が発生した際に、データフレーム処理部３３は、リトライの発生日時を示す情報と、リトライ対象のデータフレームのＧＳとＦＩＤと、ルート選択部３５により通知されたＬＤと、を対応付けて、リトライ管理テーブルＴ３に登録する。
【０１７３】
ＡＣＫ処理部３４は、ＡＣＫを送受信するための処理を行う。具体的には、ＡＣＫ処理部３４は、データフレーム処理部よりＡＣＫの生成指示を受けると、ＡＣＫを生成し、生成したＡＣＫをＬＳへ返信する。
【０１７４】
また、ＡＣＫ処理部３４は、データフレームを送信後、所定時間内にＡＣＫを受信した場合には、データフレームの送信が成功したと判定し、記憶部２０のデータエリアに格納されている対応するデータフレームを削除する。
【０１７５】
一方、所定時間内にＡＣＫを受信しなかった場合には、ＡＣＫ処理部３４は、データフレームの送信が失敗したと判定し、データフレーム処理部３３とルート選択部３５に対して、データフレームの送信が失敗した旨を通知する。
【０１７６】
また、ＡＣＫ処理部３４は、データフレームの送信が成功したか否かの判定の結果を、リンク管理部３２へ通知する。こうすることで、リンク管理部３２は、データフレームの送信が成功したか否かに基づいて、ルーティングテーブルＴ２の優先度を変更することが可能となる。
【０１７７】
更に、ＡＣＫ処理部３４は、リトライカウンタ３７を制御する。具体的には、リトライ処理を開始する際に、リトライカウンタ３７を初期化し、所定時間内にＡＣＫを受信しなかった場合には、リトライカウンタ３７をインクリメントする。
【０１７８】
リトライカウンタ３７は、データフレームの再送（リトライ）回数を管理するためのカウンタであり、上述したように、ＡＣＫ処理部３４により制御されている。なお、カウンタ値の初期値は“０”とする。
【０１７９】
リトライ通知部３８は、リトライ管理テーブルＴ３を参照して、所定のタイミングで、リトライ情報（フレーム）を生成し、通信部１０を介して、例えば、管理サーバ（不図示）へ生成したリトライ情報を送信する。リトライ情報は、リトライ管理テーブルＴ３に登録されている情報（例えば、発生日時を示す情報とＬＤ）と、自ノードＩＤとを含む。所定のタイミングとしては、例えば、定期的、管理サーバからの要求時などが考えられる。
【０１８０】
次に、図１８と図１９を参照して、本実施形態２における中継処理の流れについて説明する。図１８と図１９は、それぞれ、本実施形態２における中継処理のフローを説明するためのフローチャートの例の一部と、他の一部である。本中継処理は、データフレームの受信をトリガとして開始される。
【０１８１】
なお、実施形態１の場合と同じ処理のステップには同一の符号を付している。ここでは、実施形態１の場合と異なる部分の処理を中心に説明する。
【０１８２】
ＬＤが自ノードＩＤと一致すると判定した場合には（ステップＳ００３；ＹＥＳ）、データフレーム処理部３３は、ＡＣＫ処理部３４に対して、ＡＣＫの生成を指示する（ステップＳ００６）。
【０１８３】
ＡＣＫの生成指示を受けたＡＣＫ処理部３４は、ＡＣＫを生成し、通信部１０を介して、送信元の隣接ノード装置１（ＬＳ）へ生成したＡＣＫを送信する（ステップＳ００７）。そして、データフレーム処理部３３は、ＧＤが自ノードＩＤと一致するか否かを判定する（ステップＳ００８）。すなわち、データフレーム処理部３３は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【０１８４】
ＧＤが自ノードＩＤと一致すると判定した場合には（ステップＳ００８；ＹＥＳ）、データフレーム処理部３３は、受信したデータフレームを上位層へ出力し、データフレームの入力に応答して、上位層は、受信したデータフレームの処理を行う（ステップＳ００９）。
【０１８５】
一方、ＧＤが自ノードＩＤと一致しないと判定した場合には（ステップＳ００８；ＮＯ）、データフレーム処理部３３は、ヘッダとＦＩＤテーブルＴ１とを比較し（ステップＳ０１０）、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する（ステップＳ０１１）。すなわち、データフレーム処理部３３は、同じデータフレームを既に受信したか否かを判定する。
【０１８６】
ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあると判定した場合には（ステップＳ０１１；ＹＥＳ）、データフレーム処理部３３は、更に、ヘッダのリトライＩＤと自ノードＩＤとが一致するか否かを判定する（ステップＳ７０１）。すなわち、データフレーム処理部３３は、受信したデータフレームが、自ノード装置１が再送したデータフレームか否かを判定する。
【０１８７】
データフレーム処理部３３により、ヘッダのリトライＩＤと自ノードＩＤとが一致すると判定された場合には（ステップＳ７０１；ＹＥＳ）、処理はステップＳ０１４の処理へと進む。
【０１８８】
一方、ヘッダのリトライＩＤと自ノードＩＤとが一致しないと判定した場合には（ステップＳ７０１；ＮＯ）、データフレーム処理部３３は、更に、ヘッダのリトライＩＤとリトライ回数との組合せが、ＧＤとＦＩＤとの組合せがヘッダのＧＤとＦＩＤとの組合せと一致する登録のリトライＩＤとリトライ回数との組合せと一致するか否かを判定する（ステップＳ７０２）。すなわち、ヘッダのＧＤとＦＩＤとリトライＩＤとリトライ回数との組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する。
【０１８９】
リトライＩＤとリトライ回数の内の少なくとも一方は一致しないと判定した場合には（ステップＳ７０２；ＮＯ）、すなわち、受信したデータフレームは重複データであると判定した場合には、データフレーム処理部３３は、受信したデータフレームを破棄する（ステップＳ００４）。
【０１９０】
一方、リトライＩＤとリトライ回数も一致すると判定した場合（ステップＳ７０２；ＹＥＳ）、あるいは、ヘッダのリトライＩＤと自ノードＩＤとが一致すると判定した場合には（ステップＳ７０１；ＹＥＳ）、すなわち、受信したデータフレームはループデータであると判定した場合には、データフレーム処理部３３は、ルート選択部３５に対して、ＬＤの再選択を指示する（ステップＳ０１４）。そして、処理は実施形態１において説明したステップＳ０１５以降の処理へと進む。
【０１９１】
ステップＳ０１１の処理において、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にないと判定した場合には（ステップＳ０１１；ＮＯ）、すなわち、初めて受信したデータフレームであると判定した場合には、データフレーム処理部３３は、ＦＩＤテーブルＴ１への登録処理を実行する。
【０１９２】
具体的には、データフレーム処理部３３は、ヘッダのＧＤとＦＩＤとリトライＩＤとリトライ回数とを対応付けてＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。そして、処理は実施形態１において説明したステップＳ１０２以降の処理へと進む。
【０１９３】
次に、図２０と図２１を参照して、本実施形態２におけるリトライ処理の流れについて説明する。図２０と図２１は、それぞれ、本実施形態２におけるリトライ処理のフローを説明するためのフローチャートの例の一部と、他の一部である。本リトライ処理は、中継処理におけるデータフレームの送信をトリガとして開始される。
【０１９４】
なお、実施形態１の場合と同じ処理のステップには同一の符号を付している。ここでは、実施形態１の場合と異なる部分の処理を中心に説明する。
【０１９５】
データフレーム処理部３３によりデータフレームが送信されると、ＡＣＫ処理部３４は、リトライカウンタ３７を初期化すると共に（ステップＳ８０１）、タイマ（不図示）をスタートさせる（ステップＳ４０１）。そして、ＡＣＫ処理部３４は、データフレームの送信先の隣接ノード装置１（ＬＤ）より返信されるＡＣＫを受信したか否かを判定する（ステップＳ４０２）。
【０１９６】
ＡＣＫを受信したと判定した場合には（ステップＳ４０２；ＹＥＳ）、ＡＣＫ処理部３４は、記憶部２０のデータエリアに格納されている対応するデータフレームを削除し（ステップＳ４０３）、データフレームの送信が成功したので、リトライ処理は終了する。
【０１９７】
一方、ＡＣＫをまだ受信していないと判定した場合には（ステップＳ４０２；ＮＯ）、ＡＣＫ処理部３４は、更に、タイムアウトしたか否かを判定する（ステップＳ５０１）。まだタイムアウトしていないと判定された場合には（ステップＳ５０１；ＮＯ）、処理はステップＳ４０２の処理へと戻り、前述の処理を繰り返す。
【０１９８】
一方、タイムアウトしたと判定した場合には（ステップＳ５０１；ＹＥＳ）、ＡＣＫ処理部３４は、データフレームの送信が失敗したと判定し、リトライカウンタ３７をインクリメントすると共に（ステップＳ８０２）、データフレーム処理部３３とルート選択部３５に対して、データフレームの送信が失敗した旨を通知する（ステップＳ５０２）。この際、ＡＣＫ処理部３４は、データフレームの送信が成功したか否かの判定の結果を、リンク管理部３２へ通知する。こうすることで、リンク管理部３２は、データフレームの送信が成功したか否かに基づいて、ルーティングテーブルＴ２の優先度を変更することが可能となる。
【０１９９】
データフレームの送信失敗の通知を受けたルート選択部３５は、送信対象のデータフレームのＧＤに対応するルーティングテーブルＴ２を特定し（ステップＳ５０３）、送信対象のデータフレームを送信していない「ＬＤ候補」が有るか否かを判定する（ステップＳ５０４）。
【０２００】
送信対象のデータフレームを送信していない「ＬＤ候補」がまだ有ると判定した場合には（ステップＳ５０４；ＹＥＳ）、ルート選択部３５は、ＬＤを選択し（ステップＳ５０５）、選択したＬＤをデータフレーム処理部３３へ通知する（ステップＳ５０６）。
【０２０１】
ＡＣＫ処理部３４よりデータフレームの送信の失敗が通知され、更に、ルート選択部３５より選択されたＬＤが通知されると、データフレーム処理部３３は、記憶部２０のデータエリアに格納されている対応するデータフレームを複製し、複製したデータフレームのＬＤをルート選択部３５より選択されたＬＤへと変更する（ステップＳ５０７）。
【０２０２】
更に、データフレーム処理部３３は、複製したデータフレームのリトライＩＤに自ノードＩＤを設定すると共に、リトライ回数としてリトライカウンタ３７のカウンタ値を設定する（ステップＳ８０３）。
【０２０３】
そして、データフレーム処理部３３は、通信部１０を介して、変更後のＬＤである隣接ノード装置１へ複製したデータフレームを送信し（ステップＳ５０８）、処理はステップＳ４０１の処理へと戻り、前述の処理を繰り返す。
【０２０４】
ステップＳ５０４の処理において、ルート選択部３５により、送信対象のデータフレームを送信していない「ＬＤ候補」はもう無いと判定された場合には（ステップＳ５０４；ＮＯ）、処理は実施形態１で説明したステップＳ６０１以降の処理へと進む。
【０２０５】
次に、図６、図１２、図１８乃至図２３を参照して、具体例に従って、本実施形態２における中継処理の流れについて説明する。図２２は、図１２に示す例に対応するタイミングチャートである。但し、図中の丸付き番号は、必ずしも時系列順に付された番号ではなく、各タイミングを識別するために付した番号である。また、これらの番号は、図１２と図２２と図２３において、対応付けられているものとする。図２３は、図２２のタイミングチャートの各タイミングでの、ヘッダとＦＩＤテーブルＴ１の内容を示す図である。
【０２０６】
なお、同時に複数の異なるデータフレームがネットワーク１００を介して、伝送され得るが、ここでは、一つのデータフレームの中継の流れに着眼して説明するものとする。また、本具体例においては、図１２と図２２を参照して、末梢ノード装置Ｎ１より末梢ノード装置Ｎ２へ送信されたオリジナルのデータフレームの方が、末梢ノード装置Ｎ１より末梢ノード装置Ｎ３へ再送されたデータフレームより早く、末梢ノード装置Ｎ３に到達するものとする。また、末梢ノード装置Ｎ５より末梢ノード装置Ｎ６へ送信されたオリジナルのデータフレームの方が、末梢ノード装置Ｎ５より末梢ノード装置Ｎ１１へ再送されたデータフレームより早く、末梢ノード装置Ｎ６に到達するものとする。
【０２０７】
図６、図１２、図２２を参照して、タイミング１において、末梢ノード装置Ｎ１はＧＳとして、ＧＤを末梢ノード装置Ｎ１９としたデータフレーム（ＦＩＤをＦＩＤ１とする）を生成し、優先度ｐ１＞優先度ｐ２であることから、生成したデータフレームを末梢ノード装置Ｎ２へ送信する。タイミング１におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌである。
【０２０８】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ２は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（ｎｕｌｌ）とリトライ回数（ｎｕｌｌ）とを対応付けて、図２３に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２０９】
図１２と図２２を参照して、タイミング２において、末梢ノード装置Ｎ２は末梢ノード装置Ｎ３へデータフレームを送信する。タイミング２におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、オリジナルのデータフレームであることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌのままである。
【０２１０】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ３は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（ｎｕｌｌ）とリトライ回数（ｎｕｌｌ）とを対応付けて、図２３に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２１１】
図１２と図２２を参照して、タイミング３において、例えば、通信障害のために、末梢ノード装置Ｎ２より末梢ノード装置Ｎ１へ返信されたＡＣＫが欠落したとする。
【０２１２】
図１２と図２２を参照して、タイミング４において、末梢ノード装置Ｎ１は、ＡＣＫが受信できないことから、末梢ノード装置Ｎ２への送信が失敗したと判定し（図２０のリトライ処理のステップＳ５０１；ＹＥＳ）、末梢ノード装置Ｎ３へデータフレームを再送（リトライ）する。タイミング４における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、末梢ノード装置Ｎ１における１回目の再送（リトライ）であることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、Ｎ１、“１”となる。
【０２１３】
また、末梢ノード装置Ｎ３のＦＩＤテーブルＴ１には、（Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌ）の登録があることから、図１８と図１９を参照して、末梢ノード装置Ｎ３のデータフレーム処理部３３は、ステップＳ０１１の処理でＹＥＳ、ステップＳ７０１の処理でＮＯ、ステップＳ７０２の処理でＮＯ、と判定する。つまり、末梢ノード装置Ｎ３は、受信した再送データフレームを重複データと判定し、受信した再送データフレームを破棄する（ステップＳ００４）。このようにして、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０２１４】
図１２と図２２を参照して、タイミング５において、末梢ノード装置Ｎ３は末梢ノード装置Ｎ４へデータフレームを送信する。タイミング５におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、オリジナルのデータフレームであることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌである。
【０２１５】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ４は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（ｎｕｌｌ）とリトライ回数（ｎｕｌｌ）とを対応付けて、図２３に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２１６】
図１２と図２２を参照して、タイミング６において、末梢ノード装置Ｎ４は末梢ノード装置Ｎ５へデータフレームを送信する。タイミング６におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、オリジナルのデータフレームであることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌである。
【０２１７】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ５は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（ｎｕｌｌ）とリトライ回数（ｎｕｌｌ）とを対応付けて、図２３に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２１８】
図１２と図２２を参照して、タイミング７において、末梢ノード装置Ｎ５は末梢ノード装置Ｎ６へデータフレームを送信する。タイミング７におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、オリジナルのデータフレームであることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌである。
【０２１９】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ６は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（ｎｕｌｌ）とリトライ回数（ｎｕｌｌ）とを対応付けて、図２３に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２２０】
図１２と図２２を参照して、タイミング８において、末梢ノード装置Ｎ６はＧＤである末梢ノード装置Ｎ１９へデータフレームを送信する。タイミング８におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、オリジナルのデータフレームであることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌである。
【０２２１】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ１９は、ヘッダを解析し（ステップＳ００２）、ＧＤが自ノードＩＤであることから（ステップＳ００８；ＹＥＳ）、受信したデータフレームを上位層へ出力する。上位層は、受信したデータフレームを処理する（ステップＳ００９）。
【０２２２】
図１２と図２２を参照して、タイミング９において、例えば、通信障害のために、末梢ノード装置Ｎ６より末梢ノード装置Ｎ５へ返信されたＡＣＫが欠落したとする。
【０２２３】
図１２と図２２を参照して、タイミング１０において、末梢ノード装置Ｎ５は、ＡＣＫが受信できないことから、末梢ノード装置Ｎ６への送信が失敗したと判定し（図２０のリトライ処理のステップＳ５０１；ＹＥＳ）、末梢ノード装置Ｎ１１へデータフレームを再送（リトライ）する。タイミング１０における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、末梢ノード装置Ｎ５における１回目の再送（リトライ）であることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、Ｎ５、“１”となる。
【０２２４】
図１８を参照して、再送データフレームを受信した末梢ノード装置Ｎ１１は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（Ｎ５）とリトライ回数（“１”）とを対応付けて、図２３に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２２５】
図１２と図２２を参照して、タイミング１１において、末梢ノード装置Ｎ１１は末梢ノード装置Ｎ６へ再送データフレームを送信する。タイミング１１におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、Ｎ５、“１”である。
【０２２６】
また、末梢ノード装置Ｎ６のＦＩＤテーブルＴ１には、（Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌ）の登録があることから、図１８と図１９を参照して、末梢ノード装置Ｎ６のデータフレーム処理部３３は、ステップＳ０１１の処理でＹＥＳ、ステップＳ７０１の処理でＮＯ、ステップＳ７０２の処理でＮＯ、と判定する。つまり、末梢ノード装置Ｎ３は、受信した再送データフレームを重複データと判定し、受信した再送データフレームを破棄する（ステップＳ００４）。このようにして、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０２２７】
次に、図６、図１２、図１８乃至図２１、図２４、図２５を参照して、別の具体例に従って、本実施形態２における中継処理の流れについて説明する。図２４は、図１２に示す例に対応する別のタイミングチャートである。但し、図中の丸付き番号は、必ずしも時系列順に付された番号ではなく、各タイミングを識別するために付した番号である。また、これらの番号は、図１２と図２４と図２５において、対応付けられているものとする。図２５は、図２４のタイミングチャートの各タイミングでの、ヘッダとＦＩＤテーブルＴ１の内容を示す図である。
【０２２８】
なお、同時に複数の異なるデータフレームがネットワーク１００を介して、伝送され得るが、ここでは、一つのデータフレームの中継の流れに着眼して説明するものとする。また、本具体例においては、図１２と図２４を参照して、末梢ノード装置Ｎ１より末梢ノード装置Ｎ３へ再送されたデータフレームの方が、末梢ノード装置Ｎ１より末梢ノード装置Ｎ２へ送信されたオリジナルのデータフレームより早く、末梢ノード装置Ｎ３に到達するものとする。また、末梢ノード装置Ｎ５より末梢ノード装置Ｎ６へ送信されたデータフレームの方が、末梢ノード装置Ｎ５より末梢ノード装置Ｎ１１へ再送されたデータフレームより早く、末梢ノード装置Ｎ６に到達するものとする。
【０２２９】
図６、図１２、図２４を参照して、タイミング１において、末梢ノード装置Ｎ１はＧＳとして、ＧＤを末梢ノード装置Ｎ１９としたデータフレーム（ＦＩＤをＦＩＤ１とする）を生成し、優先度ｐ１＞優先度ｐ２であることから、生成したデータフレームを末梢ノード装置Ｎ２へ送信する。タイミング１におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌである。
【０２３０】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ２は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信したデータフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（ｎｕｌｌ）とリトライ回数（ｎｕｌｌ）とを対応付けて、図２５に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２３１】
図１２と図２４を参照して、タイミング３において、例えば、通信障害のために、末梢ノード装置Ｎ２より末梢ノード装置Ｎ１へ返信されたＡＣＫが欠落したとする。
【０２３２】
図１２と図２４を参照して、タイミング４において、末梢ノード装置Ｎ１は、ＡＣＫが受信できないことから、末梢ノード装置Ｎ２への送信が失敗したと判定し（図２０のリトライ処理のステップＳ５０１；ＹＥＳ）、末梢ノード装置Ｎ３へデータフレームを再送（リトライ）する。タイミング４における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、末梢ノード装置Ｎ１における１回目の再送（リトライ）であることから、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、Ｎ１、“１”となる。
【０２３３】
図１８を参照して、再送データフレームを受信した末梢ノード装置Ｎ３は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（Ｎ１）とリトライ回数（“１”）とを対応付けて、図２５に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２３４】
図１２と図２４を参照して、タイミング２において、末梢ノード装置Ｎ２は末梢ノード装置Ｎ３へデータフレームを送信する。タイミング２におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、オリジナルのデータフレームであることから、それぞれ、図２３に示すように、Ｎ１、ＦＩＤ１、ｎｕｌｌ、ｎｕｌｌのままである。
【０２３５】
また、末梢ノード装置Ｎ３のＦＩＤテーブルＴ１には、（Ｎ１、ＦＩＤ１、Ｎ１、“１”）の登録があることから、図１８と図１９を参照して、末梢ノード装置Ｎ３のデータフレーム処理部３３は、ステップＳ０１１の処理でＹＥＳ、ステップＳ７０１の処理でＮＯ、ステップＳ７０２の処理でＮＯ、と判定する。つまり、末梢ノード装置Ｎ３は、受信したオリジナルのデータフレームを重複データと判定し、受信したオリジナルのデータフレームを破棄する（ステップＳ００４）。このようにして、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０２３６】
図１２と図２４を参照して、タイミング５において、末梢ノード装置Ｎ３は末梢ノード装置Ｎ４へ再送データフレームを送信する。タイミング５における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、Ｎ１、“１”である。
【０２３７】
図１８を参照して、再送データフレームを受信した末梢ノード装置Ｎ４は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（Ｎ１）とリトライ回数（“１”）とを対応付けて、図２５に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２３８】
図１２と図２４を参照して、タイミング６において、末梢ノード装置Ｎ４は末梢ノード装置Ｎ５へ再送データフレームを送信する。タイミング６における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、Ｎ、“１”である。
【０２３９】
図１８を参照して、再送データフレームを受信した末梢ノード装置Ｎ５は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（Ｎ１）とリトライ回数（“１”）とを対応付けて、図２５に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２４０】
図１２と図２４を参照して、タイミング７において、末梢ノード装置Ｎ５は末梢ノード装置Ｎ６へ再送データフレームを送信する。タイミング７における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、Ｎ１、“１”である。
【０２４１】
図１８を参照して、再送データフレームを受信した末梢ノード装置Ｎ６は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（Ｎ１）とリトライ回数（“１”）とを対応付けて、図２５に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２４２】
図１２と図２４を参照して、タイミング８において、末梢ノード装置Ｎ６はＧＤである末梢ノード装置Ｎ１９へ再送データフレームを送信する。タイミング８における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、Ｎ１、“１”である。
【０２４３】
図１８を参照して、データフレームを受信した末梢ノード装置Ｎ１９は、ヘッダを解析し（ステップＳ００２）、ＧＤが自ノードＩＤであることから（ステップＳ００８；ＹＥＳ）、受信したデータフレームを上位層へ出力する。上位層は、受信したデータフレームを処理する（ステップＳ００９）。
【０２４４】
図１２と図２４を参照して、タイミング９において、例えば、通信障害のために、末梢ノード装置Ｎ６より末梢ノード装置Ｎ５へ返信されたＡＣＫが欠落したとする。
【０２４５】
図１２と図２４を参照して、タイミング１０において、末梢ノード装置Ｎ５は、ＡＣＫが受信できないことから、末梢ノード装置Ｎ６への送信が失敗したと判定し（図２０のリトライ処理のステップＳ５０１；ＹＥＳ）、末梢ノード装置Ｎ１１へデータフレームを再送（リトライ）する。タイミング１０における再送データフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、末梢ノード装置Ｎ５における１回目の再送（リトライ）であることから、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、Ｎ５、“１”となる。
【０２４６】
図１８を参照して、再送データフレームを受信した末梢ノード装置Ｎ１１は、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１にないことから（ステップＳ０１１；ＮＯ）、受信した再送データフレームのＧＳ（Ｎ１）とＦＩＤ（ＦＩＤ１）とリトライＩＤ（Ｎ５）とリトライ回数（“１”）とを対応付けて、図２５に示すように、ＦＩＤテーブルＴ１に登録する（ステップＳ３０１）。
【０２４７】
図１２と図２４を参照して、タイミング１１において、末梢ノード装置Ｎ１１は末梢ノード装置Ｎ６へ再送データフレームを送信する。タイミング１１におけるデータフレームのＧＳとＦＩＤとリトライＩＤとリトライ回数は、それぞれ、図２５に示すように、Ｎ１、ＦＩＤ１、Ｎ５、“１”である。
【０２４８】
また、末梢ノード装置Ｎ６のＦＩＤテーブルＴ１には、（Ｎ１、ＦＩＤ１、Ｎ１、“１”）の登録があることから、図１８と図１９を参照して、末梢ノード装置Ｎ６のデータフレーム処理部３３は、ステップＳ０１１の処理でＹＥＳ、ステップＳ７０１の処理でＮＯ、ステップＳ７０２の処理でＮＯ、と判定する。つまり、末梢ノード装置Ｎ３は、受信した再送データフレーム（末梢ノード装置Ｎ５が再送した）を重複データと判定し、受信した再送データフレームを破棄する（ステップＳ００４）。このようにして、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０２４９】
上記実施形態２によれば、ノード装置１は、データフレームを受信すると、ＧＳとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１に有るか否かを判定し、一致する登録がある場合に、リトライＩＤとリトライ回数とに基づいて、受信したデータフレームがループデータか、それとも、重複データかを判定する。
【０２５０】
このように構成することで、重複データとループデータとを区別することが可能となる。これにより、重複データがループデータであると誤判定されることによる誤った経路変更を防止することが可能となる。したがって、誤った経路変更によるネットワークの切断やノード装置の孤立が生じるのを防止することが可能となり、適切な経路を維持することが可能となる。
【０２５１】
また、上記実施形態２によれば、ノード装置１は、受信したデータフレームが重複データである場合には、受信したデータフレームを他のノード装置１へ送信することなく破棄する。このように構成することで、ネットワーク全体におけるトラフィックの増加を抑制することが可能となる。
【０２５２】
また、上記実施形態２によれば、ノード装置１は、リトライ処理が発生した場合に、発生日時を示す情報などをリトライ管理テーブルＴ３に登録し、登録した情報と自ノードＩＤとを含むリトライ情報を管理サーバへ送信する。このように構成することで、ネットワーク１００の各リンクの通信品質に関する情報を収集することが可能となる。そして、収集したこれらの情報に基づいて、ネットワーク１００を適切に維持・管理することが可能となる。
【０２５３】
（実施形態３）
実施形態１と２においては、受信したデータフレームの最終的な宛先が自ノード装置１の場合、すなわち、ＧＤと自ノードＩＤとが一致する場合には、ノード装置１は、ＦＩＤテーブルＴ１への登録処理を行わないように構成した。本実施形態３においては、ＧＤと自ノードＩＤとが一致する場合であっても、ノード装置１は、ＦＩＤテーブルＴ１への登録処理を行うように構成する。本構成は、実施形態１と２のいずれにも適用可能である。
【０２５４】
ここで、図２６を参照して、本実施形態３における中継処理の流れについて説明する。図２６は、本実施形態３における中継処理のフローを説明するためのフローチャートの例の一部である。本中継処理は、データフレームの受信をトリガとして開始される。
【０２５５】
ステップＳ００８の処理において、データフレーム処理部３３は、ＧＤと自ノードＩＤとが一致するか否かを判定する（ステップＳ００８）。すなわち、データフレーム処理部３３は、受信したデータフレームの最終的な宛先が自ノード装置１か否かを判定する。
【０２５６】
データフレーム処理部３３により、ＧＤと自ノードＩＤとが一致しないと判定された場合には（ステップＳ００８；ＮＯ）、処理は実施形態１（又は２）において説明したステップＳ０１０以降の処理へと進む。
【０２５７】
一方、ＧＤと自ノードＩＤとが一致すると判定した場合には（ステップＳ００８；ＹＥＳ）、データフレーム処理部３３は、ヘッダとＦＩＤテーブルＴ１とを比較し（ステップＳ９０１）、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあるか否かを判定する（ステップＳ９０２）。すなわち、データフレーム処理部３３は、同じデータフレームを既に受信し、上位層で処理したか否かを判定する。
【０２５８】
ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にあると判定した場合には（ステップＳ９０２；ＹＥＳ）、すなわち、受信したデータフレームは上位層で処理済であると判定した場合には、データフレーム処理部３３は、受信したデータフレームを破棄する（ステップＳ００４）。
【０２５９】
一方、ＧＤとＦＩＤとの組合せが、ヘッダのＧＤとＦＩＤとの組合せと一致する登録がＦＩＤテーブルＴ１にないと判定した場合には（ステップＳ９０２；ＮＯ）、実施形態１に適用する場合には、ヘッダのＧＳとＦＩＤとＰａｔｈＩＤとを対応付けてＦＩＤテーブルＴ１へ登録する（ステップＳ９０３）。実施形態２に適用する場合には、ヘッダのＧＳとＦＩＤとリトライＩＤとリトライ回数とを対応付けてＦＩＤテーブルＴ１へ登録する（ステップＳ９０３）。
【０２６０】
そして、ステップＳ００９の処理へと移行して、データフレーム処理部３３は、受信したデータフレームを上位層へ出力し、データフレームの入力に応答して、上位層は、受信したデータフレームの処理を行う（ステップＳ００９）。
【０２６１】
上記実施形態３によれば、ノード装置１は、ＧＤが自ノードＩＤと一致するデータフレームを受信した際も、ヘッダとＦＩＤテーブルＴ１とを比較し、ＧＳとＦＩＤとの組合せが一致する登録がＦＩＤテーブルＴ１に有るか否かを判定する。そして、ＧＳとＦＩＤとの組合せが一致する登録がある場合には、ノード装置１は、受信したデータフレームを破棄し、ＧＳとＦＩＤとの組合せが一致する登録が無い場合に、ヘッダ情報をＦＩＤテーブルＴ１に登録すると共に、上位層でデータ処理を行う。このように構成することで、同じデータフレームの処理を繰り返し実行するのを防ぐことが可能となる。これにより、負荷を軽減することが可能となる。
【０２６２】
図２７は、各実施形態におけるノード装置１のハードウェア構成の例を示す図である。図２（又は図１３）に示すノード装置１は、例えば、図２７に示す各種ハードウェアにより実現されてもよい。図２７の例では、ノード装置１は、ＭＰＵ２０１、ＰＨＹ（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）などにより、これら図２（又は図１３）に示す制御部３０の各機能部が実現されてもよい。もちろん、ＭＰＵ２０１とハードウェア回路の双方により、これらの機能部が実現されてもよい。
【０２７６】
以上において、いくつかの実施形態について説明した。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態を成すことができることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【０２７７】
以上の実施形態１〜３を含む実施形態に関し、さらに以下の付記を開示する。
【０２７８】
（付記１）
リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信する受信手段と、
前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルを格納する記憶手段と、
前記受信したデータフレームの最終宛先が自ノード装置か否かを判定する第１判定手段と、
前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が前記識別情報管理テーブルに有るか否かを判定する第２判定手段と、
前記第２判定手段により、前記登録が前記識別情報管理テーブルに有ると判定された場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定する第３判定手段と、
前記第３判定手段により一致しないと判定された場合には、前記受信したデータフレームを破棄する破棄手段と、
前記第３判定手段により一致すると判定された場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する再送信手段と、
を備える、
ことを特徴とするノード装置。
（付記２）
自ノード装置は、中継専用の中継ノード装置であり、
前記重複データ識別情報は、前記データフレームが最初に経由した中継ノード装置を一意に識別可能な装置識別情報である、
ことを特徴とする付記１に記載のノード装置。
（付記３）
前記第２判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの前記フレーム識別情報と前記重複データ識別情報とを対応付けて前記識別情報管理テーブルに登録する登録手段を、さらに、備える、
ことを特徴とする付記２に記載のノード装置。
（付記４）
前記第２判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの前記重複データ識別情報が設定済であるか否かを判定する第４判定手段を、さらに、備え、
前記登録手段は、
前記第４判定手段により、設定済ではないと判定された場合には、前記受信したテータフレームの前記重複データ識別情報として自ノード装置の前記装置識別情報を設定すると共に、前記受信したデータフレームの前記フレーム識別情報と自ノード装置の前記装置識別情報とを対応付けて前記識別情報管理テーブルに登録する、
ことを特徴とする付記３に記載のノード装置。
（付記５）
前記重複データ識別情報は、前記重複するデータフレームを発行するノード装置を一意に識別可能な装置識別情報と、該ノード装置が前記重複するデータフレームを発行した回数を示す再送回数情報との組である、
ことを特徴とする付記１に記載のノード装置。
（付記６）
前記第２判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの前記フレーム識別情報と前記重複データ識別情報とを対応付けて前記識別情報管理テーブルに登録する登録手段を、さらに、備える、
ことを特徴とする付記５に記載のノード装置。
（付記７）
前記受信したデータフレームの最終宛先が自ノード装置である場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が前記識別情報管理テーブルに有るか否かを判定する第５判定手段と、
前記第５判定手段により、前記登録が前記識別情報管理テーブルには無いと判定された場合に、前記受信したデータフレームの少なくとも前記フレーム識別情報を前記識別情報管理テーブルに登録する第２登録手段と、
を、さらに、備え、
前記破棄手段は、前記第５判定手段により、前記登録が前記識別情報管理テーブルに有ると判定された場合に、前記受信したデータフレームを破棄する、
ことを特徴とする付記１乃至６のいずれか一に記載のノード装置。
（付記８）
送信したデータフレームの送信先の隣接するノード装置より、所定時間内に、該データフレームを受信した旨の受信通知を受信したか否か判定する第６判定手段を、さらに、備え、
前記再送信手段は、前記第６判定手段により、前記受信通知を受信できなかったと判定された場合に、前記送信したデータフレームを、送信先としていない隣接するノード装置へ再送信する、
ことを特徴とする付記１乃至７のいずれか一に記載のノード装置。
（付記９）
所定のタイミングで、前記再送信の日時を示す情報と前記再送信した隣接するノード装置を一意に識別可能な装置識別情報との組と、自ノード装置の前記装置識別情報とを含むリトライ情報を生成し、生成したリトライ情報を上位装置へ送信する通知手段を、さらに、備える、
ことを特徴とする付記８に記載のノード装置。
（付記１０）
リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信し、
前記受信したデータフレームの最終宛先が自ノード装置か否かを判定し、
前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が、前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルに、有るか否かを判定し、
前記登録が前記識別情報管理テーブルに有る場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致しない場合には、前記受信したデータフレームを破棄し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致する場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する、
ことを特徴とするデータ中継方法。
（付記１１）
ノード装置のコンピュータに、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信し、
前記受信したデータフレームの最終宛先が自ノード装置か否かを判定し、
前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が、前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルに、有るか否かを判定し、
前記登録が前記識別情報管理テーブルに有る場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致しない場合には、前記受信したデータフレームを破棄し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致する場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する、
処理を実行させる、
ことを特徴とするプログラム。
（付記１２）
ノード装置のコンピュータに、
リンクが存在する複数の隣接するノード装置の内のいずれかの一つからデータフレームを受信し、
前記受信したデータフレームの最終宛先が自ノード装置か否かを判定し、
前記受信したデータフレームの最終宛先が自ノード装置ではない場合に、前記受信したデータフレームの前記フレーム識別情報と一致する登録が、前記データフレームを一意に識別可能なフレーム識別情報と、同一の前記フレーム識別情報を有するデータフレームが重複して受信された場合に、前記重複するデータフレームの内で最初に受信したデータフレームを一意に識別可能な重複データ識別情報と、が対応付けられている識別情報管理テーブルに、有るか否かを判定し、
前記登録が前記識別情報管理テーブルに有る場合に、前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致するか否かを判定し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致しない場合には、前記受信したデータフレームを破棄し、
前記受信したデータフレームの重複データ識別情報と、前記登録に対応する重複データ識別情報とが一致する場合には、前記受信したデータフレームを、該データフレームの送信先としていない他の隣接するノード装置へ再送信する、
処理を実行させるプログラムを記憶した記録媒体。
【符号の説明】
【０２７９】
１００    ネットワーク
Ｎｉ      末梢ノード装置のノードＩＤ
Ｓｊ      中継ノード装置のノードＩＤ
１        ノード装置（末梢ノード装置、中継ノード装置）
１０      通信部
２０      記憶部
Ｔ１      ＦＩＤテーブル
Ｔ２      ルーティングテーブル
Ｔ３      リトライ管理テーブル
３０      制御部
３１      フレーム種別特定部
３２      リンク管理部
３３      データフレーム処理部
３４      ＡＣＫ処理部
３５      ルート選択部
３６      ハローフレーム生成部
３７      リトライカウンタ
３８      リトライ通知部
２０１    ＭＰＵ
２０２    ＰＨＹチップ
２０３    タイマＩＣ
２０４    ＤＲＡＭ
２０５    フラッシュメモリ
２０６    無線通信モジュール
２０７    読取装置
２０８    記録媒体
２０９    ＭＩＩ／ＭＤＩＯ
２１０    Ｉ２Ｃ／ＰＩＯバス
２１１    ＰＣＩバス
【図１】
2015037252.tif 000003
【図２】
2015037252.tif 000004
【図３】
2015037252.tif 000005
【図４】
2015037252.tif 000006
【図５】
2015037252.tif 000007
【図６】
2015037252.tif 000008
【図７】
2015037252.tif 000009
【図８】
2015037252.tif 000010
【図９】
2015037252.tif 000011
【図１０】
2015037252.tif 000012
【図１１】
2015037252.tif 000013
【図１２】
2015037252.tif 000014
【図１３】
2015037252.tif 000015
【図１４】
2015037252.tif 000016
【図１５】
2015037252.tif 000017
【図１６】
2015037252.tif 000018
【図１７】
2015037252.tif 000019
【図１８】
2015037252.tif 000020
【図１９】
2015037252.tif 000021
【図２０】
2015037252.tif 000022
【図２１】
2015037252.tif 000023
【図２２】
2015037252.tif 000024
【図２３】
2015037252.tif 000025
【図２４】
2015037252.tif 000026
【図２５】
2015037252.tif 000027
【図２６】
2015037252.tif 000028
【図２７】
2015037252.tif 000029