(57)【要約】【課題】ゲートウェイ装置とサーバが通信断になっても、ノード装置から送信されたフレームを他のゲートウェイ装置経由でサーバに送信することを目的とする。【解決手段】第一のゲートウェイ装置は、前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを受信し、受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信するし、前記ノード装置は、受信したデータの転送回数を該データごとに管理部に記憶し、受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する。【選択図】図７
2015095723.tif 000002
【特許請求の範囲】
【請求項１】
複数のゲートウェイ装置及びノード装置を含む通信システムであって、
前記複数のゲートウェイ装置の内の第一のゲートウェイ装置は、前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを受信する受信部と、受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信する送信部と、を有し、
前記ノード装置は、データを受信する受信部と、データの転送回数を該データごとに記憶する管理部と、受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する送信部と、を
有することを特徴とする通信システム。
【請求項２】
前記ノード装置は、受信したデータに含まれる転送回数が、前記受信したデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数よりも大きい場合、前記データを破棄する、
ことを特徴とする請求項１記載の通信システム。
【請求項３】
前記ノード装置は、受信したデータに含まれる転送回数が、前記受信したデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数よりも小さい場合、前記受信したデータに基づいて、前記管理部が記憶している情報を更新する、
ことを特徴とする請求項１又は２記載の通信システム。
【請求項４】
前記ノード装置は、受信したデータと同じ識別子を持つデータに関連する情報を削除し、前記データの情報を前記管理部に新規に登録する、
ことを特徴とする請求項１乃至３のうち何れか１項に記載の通信システム。
【請求項５】
前記ノード装置は、前記データを新たに生成するときに、前記データに含まれる前記転送回数を初期値に設定して、初期値に設定された前記データを送信する、
ことを特徴とする請求項１乃至４のうち何れか１項に記載の通信システム。
【請求項６】
前記第一のゲートウェイ装置は、前記データの前記宛先を前記第二のゲートウェイ装置に設定したときに、前記データに含まれる前記転送回数をインクリメントする、
ことを特徴とする請求項１乃至５のうち何れか１項に記載の通信システム。
【請求項７】
複数のゲートウェイ装置及びノード装置を含む通信システムにおける通信方法であって、
前記複数のゲートウェイ装置の内の第一のゲートウェイ装置は、
前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを受信し、
受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信し、
前記ノード装置は、
データを受信し、
データの転送回数を該データごとに管理部に記憶し、
受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する、
ことを特徴とする通信方法。
【請求項８】
複数のゲートウェイ装置及びノード装置を含む通信システムにおける通信プログラムであって、
前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを前記複数のゲートウェイ装置の内の第一のゲートウェイ装置が受信し、
前記第一のゲートウェイ装置が受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信し、
前記ノード装置がデータを受信し、
前記ノード装置がデータの転送回数を該データごとに管理部に記憶し、
前記ノード装置が受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する、
処理をコンピュータに実行させることを特徴とする通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信方法および通信プログラムに関する。
【背景技術】
【０００２】
アドホックネットワークでは、ノード装置同士が自律的にネットワークを形成する。自律的に通信を行うことにより、使用者が随時通信ルートを設定する必要がなく、サーバやルータ等の通信管理専用の通信端末やインフラを必要しない。
【０００３】
アドホックネットワークに参加するノード装置の１つにゲートウェイ装置（以下、ＧＷと略することもある）がある。ゲートウェイ装置は、サーバと通信する機能を有している。関連する技術として、アドホックネットワークシステムにおいて、ゲートウェイ機能を切り替える技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１９３３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ゲートウェイ装置は、ノード装置が送信したフレームを受信して、受信したフレームをサーバに送信する。ゲートウェイ装置とサーバとの間の通信が何らかの要因によって遮断された場合、ゲートウェイ装置はサーバと通信不能になる。この場合、ゲートウェイ装置は、ノード装置が送信したフレームをサーバに送信できなくなる。
【０００６】
このため、ゲートウェイ装置であった装置（元ゲートウェイ装置と称することもある）は、他のノード装置にデータを送信する。フレームは、別の経路を経由し、別のゲートウェイ装置からサーバに送信される。このときに、フレームが廃棄される可能性がある。
【０００７】
図１を参照して説明する。図１のアドホックネットワークは、ノード装置Ａ〜Ｄとゲートウェイ装置ＧＷ１およびＧＷ２とを有している。ただし、ゲートウェイ装置ＧＷ１は、サーバと通信不能になったため、元ゲートウェイ装置Ｆ−ＧＷ１となる。この元ゲートウェイ装置Ｆ−ＧＷ１は、サーバと通信することができない。
【０００８】
ゲートウェイ装置ＧＷ１が元ゲートウェイ装置Ｆ−ＧＷ１となったことを認識する前に、ノード装置Ａはゲートウェイ装置ＧＷ１のアドレス宛にフレームを送信する。ノード装置Ａが送信したフレームは、ノード装置Ｂおよびノード装置Ｄを経由して、元ゲートウェイ装置Ｆ−ＧＷ１に送信される。
【０００９】
このときには、ゲートウェイ装置ＧＷ１は元ゲートウェイ装置Ｆ−ＧＷ１に変化している。よって、元ゲートウェイ装置Ｆ−ＧＷ１は、サーバにフレームを送信できないため、元ゲートウェイ装置Ｆ−ＧＷ１は、ゲートウェイ装置ＧＷ２からサーバにフレームを送信するため、ノード装置Ｄにフレームを送信する。
【００１０】
ノード装置Ｄは、既に受信したフレームと同一のフレームを受信したため、経路ループが発生したと判定する。よって、ノード装置Ｄは、受信したフレームが今まで辿っていない経路にフレームを送信する。従って、ノード装置Ｄは、フレームをノード装置Ａに送信する。
【００１１】
ノード装置Ａは、自身が送信したフレームを受信する。従って、ノード装置Ａは、経路ループが発生したと判定する。このため、ノード装置Ａからノード装置Ｂまでの経路およびノード装置Ａからノード装置Ｄまでの経路を辿っているため、フレームは全ての経路を辿っていることになる。この時点で、ノード装置Ａは、フレームを廃棄する。従って、サーバに送信されるべきフレームが失われる。
【００１２】
フレームの廃棄を回避するために、元ゲートウェイ装置Ｆ−ＧＷ１が別のフレームを新たに生成し、送信することが考えられる。図２を参照して、説明する。元ゲートウェイ装置Ｆ−ＧＷ１は、ノード装置Ｄから受信したフレーム（本フレームと称することもある）とは別のフレーム（別フレームと称することもある）を生成する。
【００１３】
別フレームは、元ゲートウェイ装置Ｆ−ＧＷ１が受信した本フレームと同じ情報を有しているが、両者は異なるフレームである。元ゲートウェイ装置Ｆ−ＧＷ１は、別フレームをノード装置Ｄに送信する。ノード装置Ｄは、本フレームと別フレームとは異なるフレームであるため、フレームの廃棄は行われない。
【００１４】
ノード装置Ｄは、フレームを受信すると、自身の送受信バッファにフレームの情報をフレームごとに格納する。従って、図２では、ノード装置ＢおよびＤは、送受信バッファに本フレームと別フレームとを格納する。
【００１５】
従って、図１の場合と比較して、バッファの使用量は２倍になる。バッファがメモリにより実現される場合、メモリの使用量が２倍になる。このため、ノード装置のハードウェア資源の使用量が増大する。
【００１６】
本発明は、１つの側面では、ゲートウェイ装置とサーバが通信断になっても、ノード装置から送信されたフレームを他のゲートウェイ装置経由でサーバに送信することを目的とする。
【課題を解決するための手段】
【００１７】
１つの案では、通信システムは、複数のゲートウェイ装置及びノード装置を含む。前記複数のゲートウェイ装置の内の第一のゲートウェイ装置は、前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを受信する受信部と、受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信する送信部と、を有する。前記ノード装置は、データを受信する受信部と、データの転送回数を該データごとに記憶する管理部と、受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する送信部と、を有する。
【発明の効果】
【００１８】
ゲートウェイ装置とサーバが通信断になっても、ノード装置から送信されたフレームを他のゲートウェイ装置経由でサーバに送信することができる。
【図面の簡単な説明】
【００１９】
【図１】ゲートウェイ装置がサーバと通信不能になった場合の通信の一例を示す図である。
【図２】ゲートウェイ装置がサーバと通信不能になった場合の通信の他の一例を示す図である。
【図３】実施形態のアドホックネットワークの一例を示す図である。
【図４】図３のアドホックネットワークにおいて、ゲートウェイ装置のグループに分けられた一例を示す図である。
【図５】図４のアドホックネットワークにおける通信の一例を示す図である。
【図６】図４のアドホックネットワークにおいて、ゲートウェイ装置がサーバと通信不能になった場合の通信の一例を示す図である。
【図７】通信装置の機能ブロックの一例を示す図である。
【図８】フレーム管理テーブルおよびフレームフォーマットの一例を示す図である。
【図９】通信装置の受信処理の一例を示すフローチャートである。
【図１０】通信装置の送信処理の一例を示すフローチャートである。
【図１１】第１の具体例を説明する図である。
【図１２】第２の具体例を説明する図である。
【図１３】第３の具体例を説明する図である。
【図１４】第４の具体例のフレーム管理テーブルおよびフレームフォーマットの一例を示す図である。
【図１５】第５の具体例を説明する図である。
【図１６】第５の具体例のフレーム管理テーブルおよびフレームフォーマットの一例を示す図である。
【図１７】第６の具体例を説明する図である。
【図１８】第６の具体例のフレーム管理テーブルおよびフレームフォーマットの一例を示す図である。
【図１９】第７の具体例を説明する図である。
【図２０】第７の具体例のフレーム管理テーブルおよびフレームフォーマットの一例を示す図である。
【図２１】通信装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００２０】
＜アドホックネットワークの一例＞
図３を参照して、アドホックネットワークの一例を説明する。図３の一例に示すように、ノード装置Ａ〜Ｉとゲートウェイ装置ＧＷ１およびＧＷ２とがアドホックネットワークに参加している。アドホックネットワークに参加する装置は、図３の例には限定されない。ゲートウェイ装置ＧＷ１およびＧＷ２は、サーバと通信する機能を有している。
【００２１】
一例として、ノード装置Ａ〜Ｉはスマートメータを適用することができる。スマートメータは、電力やガス、水道等の使用量を計測する計測機器であり、通信機能を有している。計測した値は通信機能を利用して送信することができる。サーバとしては、一例として、情報を収集するサーバ等を適用することができる。
【００２２】
ゲートウェイ装置ＧＷ１およびＧＷ２は、ノード装置Ａ〜Ｉが送信したフレームをゲートウェイ装置ＧＷ１またはＧＷ２に送信する。フレームはノード装置が送信するデータの一例である。ゲートウェイ装置ＧＷ１およびＧＷ２は、受信したフレームをサーバに送信する。
【００２３】
ノード装置Ａ〜Ｉはそれぞれ隣接するノード装置と通信を行う。また、ノード装置とゲートウェイ装置との間でも通信が行われる。同様に、ゲートウェイ装置とサーバとの間でも通信が行われる。これらの通信は、無線通信であってもよいし、有線通信であってもよい。実施形態では、各装置の間の通信は無線通信により行われるものとする。
【００２４】
図３に一例として示すように、ノード装置Ａ〜Ｉとゲートウェイ装置ＧＷ１およびＧＷ２との間は、経路が構築されている。この経路を構築するために、Ｈｅｌｌｏフレームを各装置の間で送受信して、経路構築を行うことができる。Ｈｅｌｌｏフレームを送受信することで、ノード装置からゲートウェイ装置までの適切な経路を選択することができる。ノード装置からゲートウェイ装置まで最も早くフレームを送信するできる経路が、適切な経路の一例である。
【００２５】
図４を参照すると、ノード装置Ａ、Ｂ、Ｄ、ＥおよびＦは、ゲートウェイ装置ＧＷ１のグループに属している。ノード装置Ａ、Ｂ、Ｄ、ＥおよびＦは、隣接するノード装置を経由して、ゲートウェイ装置ＧＷ１にフレームを送信する。ゲートウェイ装置ＧＷ１は、受信したフレームをサーバに送信する。
【００２６】
ノード装置Ｃ、Ｇ、ＨおよびＩは、ゲートウェイ装置ＧＷ２のグループに属している。ノード装置Ｃ、Ｇ、ＨおよびＩは、隣接するノード装置を経由して、ゲートウェイ装置ＧＷ２にフレームを送信する。そして、ゲートウェイ装置ＧＷ２は、サーバにフレームを送信する。
【００２７】
図５は、ノード装置Ａがフレームを送信した場合の一例を示している。ノード装置Ａは、ゲートウェイ装置ＧＷ１宛てのフレームを生成する。ノード装置Ａは、ゲートウェイ装置ＧＷ１に隣接していない。従って、ノード装置Ａは、自身に隣接するノード装置Ｂにフレームを送信する。
【００２８】
ノード装置Ｂは、受信したフレームをゲートウェイ装置ＧＷ１に送信する。これにより、ノード装置Ａが生成したフレームはゲートウェイ装置ＧＷ１に送信される。ゲートウェイ装置ＧＷ１は、受信したフレームをサーバに送信する。従って、サーバはノード装置Ａから送信されたフレームを受信することができる。
【００２９】
上述したように、Ｈｅｌｌｏフレームを使用して、アドホックネットワークの経路構築を行った場合、各ノード装置は、適切な経路でフレームが送信する。図５の一例では、ノード装置Ａはノード装置Ｂを経由して、ゲートウェイ装置ＧＷ１にフレームを送信することが適切であることを認識する。
【００３０】
＜ゲートウェイ装置ＧＷ１とサーバとの間の通信が遮断された場合の説明＞
ゲートウェイ装置ＧＷ１は、ノード装置Ａ、Ｂ、Ｄ、ＥおよびＦから送信されたフレームをサーバに送信する。従って、ゲートウェイ装置ＧＷ１とサーバとの間は通信可能でなくてはならない。
【００３１】
ここで、図６に示すように、ゲートウェイ装置ＧＷ１とサーバとの間の通信が何らかの要因で遮断されたとする。このため、ゲートウェイ装置ＧＷ１は、ノード装置Ａ、Ｂ、Ｄ、ＥおよびＦから送信されたフレームをサーバに送信することができなくなる。つまり、ゲートウェイ装置ＧＷ１は、サーバにフレームを送信する機能を果たすことができなくなる。
【００３２】
ゲートウェイ装置は、サーバと通信できなくなったとしても、ノード装置として機能することはできる。サーバと通信できなくなったゲートウェイ装置を元ゲートウェイ装置と称する。従って、元ゲートウェイ装置は、他のノード装置にフレームを送信することはできる。サーバと通信できなくなったゲートウェイ装置ＧＷ１を元ゲートウェイ装置Ｆ−ＧＷ１とする。
【００３３】
実施形態では、元ゲートウェイ装置は、自身宛のフレームを受信した場合、フレームの宛先を別のゲートウェイ装置に変更する。フレームの宛先を別のゲートウェイ装置に変更することで、フレームは別のゲートウェイ装置に転送される。そして、別のゲートウェイ装置は、フレームをサーバに送信する。
【００３４】
元ゲートウェイ装置は、第一のゲートウェイ装置の一例である。ゲートウェイ装置のうち第一のゲートウェイ装置以外のゲートウェイ装置は、第二のゲートウェイ装置の一例である。
【００３５】
＜通信装置の構成＞
図７は、実施形態の通信装置１の一例を示す。通信装置１は、受信部１１と受信処理部１２とフレーム管理テーブル１３と送信処理部１４とルーティング機能部１５とルーティングテーブル１６と送信部１７とを備えている。ノード装置は通信装置の一例である。また、ゲートウェイ装置および元ゲートウェイ装置をノード装置に適用してもよい。
【００３６】
受信部１１は、他の通信装置１が送信したフレームを受信する。受信部１１は、受信したフレームを受信処理部１２に出力する。受信処理部１２は、受信したフレームに対して所定の処理を行う。また、受信処理部１２は、受信したフレームをルーティング機能部１５に出力する。受信処理部１２は、フレーム解析部２１と転送回数処理部２２とフレーム処理部２３とテーブル更新部２４とを備えている。
【００３７】
フレーム管理テーブル１３は、受信したフレームの情報を管理するテーブルである。図８（Ａ）にフレーム管理テーブルの一例を示す。フレーム管理テーブル１３は、ＧＳとＦＩＤと転送回数との３つの項目を有している。フレーム管理テーブル１３は、管理部の一例である。
【００３８】
ＧＳ（Global Source）はグローバル送信元アドレスを示す。グローバル送信元アドレスは、フレームを生成し、生成したフレームを送信したノード装置のアドレスを示す。ＦＩＤ（Flame ID)はフレーム識別子を示す。フレーム識別子は、自身のフレームを他のフレームと識別するための情報である。従って、各フレームは一意的なフレーム識別子を有する。転送回数は、フレームが転送された回数を示す。転送回数については後述する。
【００３９】
フレーム管理テーブル１３は、ＧＳとＦＩＤと転送回数と含むエントリを記憶している。エントリは、ＦＩＤとＧＳとの組ごとにフレーム管理テーブル１３に記憶される。１つのエントリに記憶される項目は、ＧＳとＦＩＤと転送回数との３つには限定されず、これ以外の項目を有していてもよい。
【００４０】
フレーム管理テーブル１３の各エントリの情報は、受信部１１が受信したフレームから得ることができる。図８（Ｂ）にフレームフォーマットの一例を示す。なお、フレームフォーマットは、図８（Ｂ）の６つの項目には限定されない。
【００４１】
ＧＤ(Global Destination)はグローバル宛先アドレスを示している。グローバル宛先アドレスはフレームの宛先のアドレスを示している。つまり、ＧＤはフレームの宛先を示している。通常は、ＧＤはゲートウェイ装置ＧＷ１またはＧＷ２のアドレスを示す。
【００４２】
ＬＤ（Local Destination)はローカル宛先アドレスを示している。ローカル宛先アドレスは、フレームの次の送信先を示している。ＬＤは、自身の通信装置１と隣接している通信装置のアドレスを示す。ＬＳ(Local Source)はローカル送信元アドレスを示す。ローカル送信元アドレスは、自身の通信装置１のアドレスを示す。
【００４３】
送信処理部１４は、上位機能ブロックより送信依頼されたデータに基づいて、フレームを生成する。上位機能ブロックは、通信装置１を制御する部位としてもよい。送信処理部１４がフレームを生成したときには、フレームのＧＳは自身の通信装置１となる。送信処理部１４は、生成したフレームをフレーム管理テーブル１３に登録する。送信処理部１４は、第３の処理部の一例である。
【００４４】
ルーティング機能部１５は、受信処理部１２または送信処理部１４からフレームを入力する。ルーティング機能部１５は、ルーティングテーブル１６を参照して、フレームにＬＤを設定する。ルーティングテーブル１６は、自身の通信装置１からＧＤまでの適切な経路を辿るＬＤを記憶している。
【００４５】
ルーティング機能部１５は、ルーティングテーブル１６を参照して、次のＬＤを決定する。また、ＬＳは自身の通信装置１になる。ルーティング機能部１５は、送信処理部１４が生成したフレームにＬＤおよびＬＳを設定して、送信部１７に出力する。
【００４６】
送信部１７は、ルーティング機能部１５から入力したフレームを送信する。このとき、送信部１７は、フレームのＬＤを参照して、ＬＤが示す通信装置にフレームを送信する。
【００４７】
次に、受信処理部１２の中身について説明する。フレーム解析部２１は、受信部１１が受信したフレームの情報の解析を行う。転送回数処理部２２は、所定条件下でフレームに対して所定の処理を行う。転送回数処理部２２は、第１の処理部の一例である。
【００４８】
フレーム処理部２３は、フレームに対して所定の処理を行う。フレーム処理部２３は、第２の処理部の一例である。テーブル更新部２４は、受信部１１が受信したフレームに応じて、フレーム管理テーブル１３の更新を行う。テーブル更新部２４は更新部の一例である。
【００４９】
＜通信装置の処理＞
次に、通信装置１の処理について説明する。図９は、通信装置１が行う受信処理の一例を示すフローチャートである。受信部１１は、隣接する他の通信装置からフレームを受信する。受信部１１は受信したフレームを受信処理部１２に出力する。
【００５０】
フレーム解析部２１は、受信したフレームを解析する。フレーム解析部２１は、受信したフレームからＧＳおよびＦＩＤを抽出する。フレーム処理部２３は、受信したフレームのＧＳおよびＦＩＤと一致するエントリがフレーム管理テーブル１３にあるか否かを判定する（ステップＳ１）。
【００５１】
フレーム管理テーブル１３に、受信したフレームのＧＳおよびＦＩＤと一致するエントリがある場合（ステップＳ１でＹＥＳ）、フレーム処理部２３は、当該エントリの転送回数をフレーム管理テーブル１３から取得する。以下、当該エントリの転送回数をフレーム管理テーブル１３の転送回数と称することもある。
【００５２】
次に、フレーム処理部２３は、受信したフレームの転送回数とフレーム管理テーブル１３の転送回数とを比較して、フレーム管理テーブル１３の転送回数が受信したフレームの転送回数よりも大きいか否かを判定する（ステップＳ２）。
【００５３】
フレーム管理テーブル１３の転送回数が受信フレームの転送回数よりも大きい場合（ステップＳ２でＹＥＳ）、フレーム処理部２３は、受信したフレームを廃棄する（ステップＳ３）。そして、通信装置１は受信処理を終了する。
【００５４】
一方、フレーム管理テーブル１３の転送回数が受信フレームの転送回数以下の場合（ステップＳ２でＮＯ）、フレーム処理部２３は受信したフレームを破棄しない。次に、フレーム処理部２３は、フレーム管理テーブル１３のエントリの転送回数と受信フレームの転送回数とが等しいか否かを判定する（ステップＳ４）。この判定で、等しくないと判定された場合には（ステップＳ４でＮＯ）、テーブル更新部２４は、フレーム管理テーブル１３のエントリを削除する。
【００５５】
そして、テーブル更新部２４は、受信したフレームの情報をフレーム管理テーブル１３に新規に登録する（ステップＳ５）。このとき、テーブル更新部２４は、ＦＩＤが示すエントリに、受信したフレームのＧＳ、ＦＩＤおよび転送回数をフレーム管理テーブル１３に登録する。つまり、テーブル更新部２４は、フレーム管理テーブル１３のエントリの更新を行う。
【００５６】
ステップＳ４において、ＮＯと判定された場合には、ステップＳ５の処理を行った後にルーティング処理が行われる（ステップＳ６）。また、フレーム管理テーブル１３のエントリの転送回数と受信フレームの転送回数とが等しいと判定された場合にも（ステップＳ４でＹＥＳ）、ルーティング処理が行われる（ステップＳ６）。この場合には、ルーティング処理を行う前に特別な処理は行われない。ルーティング処理を行うことで、通信装置１が受信したフレームを次の通信装置に送信することができる。これにより、受信処理が終了する。
【００５７】
次に、ステップＳ１でＮＯと判定された場合の処理について説明する。この場合、受信したフレームのＧＳおよびＦＩＤと一致するエントリはフレーム管理テーブル１３に存在していない。少なくとも、通信装置１は、ＦＩＤにより識別されるフレームを受信したことがない。
【００５８】
フレーム処理部２３は、自身の通信装置１が元ゲートウェイ装置であり、受信したフレームが自身の通信装置１宛てであるか否かを判定する（ステップＳ７）。自身の通信装置１が元ゲートウェイ装置であり、受信したフレームが自身の通信装置１宛てである場合（ステップＳ７でＹＥＳ）、フレーム処理部２３は、受信したフレームのＧＤを変更する。
【００５９】
つまり、フレーム処理部２３は、フレームのＧＤに別のゲートウェイ装置を設定する（ステップＳ８）。実施形態では、フレーム処理部２３は、フレームのＧＤにゲートウェイ装置ＧＷ２を設定する。
【００６０】
そして、転送回数処理部２２は、受信したフレームの転送回数をインクリメントする（ステップＳ９）。一方、自身が元ゲートウェイ装置でない場合、または受信したフレームが自身の通信装置１宛てでない場合には、ステップＳ８およびＳ９の処理は行われない。
【００６１】
テーブル更新部２４は、受信したフレームの情報をフレーム管理テーブル１３に新規に登録する（ステップＳ１０）。ステップＳ１０の処理が行われるのは、ステップＳ１でＮＯと判定された場合である。つまり、受信したフレームのＦＩＤおよびＧＳと同じエントリがフレーム管理テーブル１３に存在していない場合である。
【００６２】
よって、テーブル更新部２４は、フレーム管理テーブル１３に受信したフレームの情報を新規に登録する。実施形態では、テーブル更新部２４は、ＧＳとＦＩＤと転送回数との３つの項目をフレーム管理テーブル１３に登録する。
【００６３】
フレーム処理部２３は、受信したフレームが自身の通信装置１宛てであるか否かを判定する（ステップＳ１１）。受信したフレームが自身の通信装置１宛てであれば、受信処理部１２は、上位機能ブロックにその旨を通知する。
【００６４】
一方、受信したフレームが自身の通信装置１宛てでない場合には、次の通信装置に送信する必要がある。この場合には、ステップＳ６と同じルーティング処理が行われる（ステップＳ１３）。
【００６５】
次に、図１０を参照して、通信装置１がフレームを生成し、生成したフレームを送信する送信処理について説明する。通信装置１がサーバに情報を送信する場合、送信処理部１４は、フレームを生成する（ステップＳ２１）。
【００６６】
送信処理部１４がフレームを生成するとき、フレームのＧＳに自身のアドレスを設定する。また、送信処理部１４は、フレームのＧＤに上位機能ブロックより指定された宛先アドレスを設定する。つまり、送信処理部１４は、フレームのＧＤに最終的な宛先のアドレスを設定する。
【００６７】
送信処理部１４は、フレームのＦＩＤに今まで設定したことのない値を設定する。ＦＩＤはフレームを識別する識別子であるため、ＦＩＤは固有の値を有している必要がある。よって、送信処理部１４は、フレームのＦＩＤに今まで設定したことのない値を設定する。
【００６８】
送信処理部１４は、フレームの転送回数に初期値を設定する（ステップＳ２２）。基本的に、初期値は「０」になるが、「０」以外の値であってもよい。送信処理部１４は、送信するフレームの情報をフレーム管理テーブル１３に新規登録する（ステップＳ２３）。
【００６９】
ルーティング機能部１５は、生成したフレームにルーティング処理を行う（ステップＳ２４）。このルーティング処理は、図９のステップＳ６およびＳ１３と同じである。ルーティング機能部１５がルーティング処理を行うことにより、フレームにＬＤが設定される。送信部１７は、各種の値が設定されたフレームをＬＤ宛に送信する。以上により、送信処理が終了する。
【００７０】
＜第１の具体例＞
次に、図１１を参照して、第１の具体例について説明する。図１１の一例では、ノード装置Ａ〜Ｃとゲートウェイ装置ＧＷ１とゲートウェイ装置ＧＷ２とがアドホックネットワークに参加している。ただし、ゲートウェイ装置ＧＷ１は、サーバと通信不能になり、元ゲートウェイ装置Ｆ−ＧＷ１になったものとする。アドホックネットワークに参加しているこれらの装置は、通信装置１の一例である。
【００７１】
ノード装置Ａの送信処理部１４は、新たにフレームを生成する。フレームのＧＳはノード装置Ａのアドレスとなる。フレームのＧＤの候補としてはゲートウェイ装置ＧＷ１およびＧＷ２の２つがある。ノード装置Ａの上位機能ブロックは、ＧＤを決定する。一例として、ノード装置Ａの上位機能ブロックは、ゲートウェイ装置ＧＷ１をＧＤとして決定したものとする。また、一例として、フレーム処理部２３は、フレームのＦＩＤを「１０」と設定したものとする。
【００７２】
ノード装置Ａがフレームを送信した後、ゲートウェイ装置ＧＷ１とサーバとの間の通信が遮断されたとする。従って、ゲートウェイ装置ＧＷ１は、サーバと通信を行うことができず、各ノード装置Ａ〜Ｃから送信されたフレームをサーバに送信することができない。
【００７３】
従って、ゲートウェイ装置ＧＷ１は、元ゲートウェイ装置Ｆ−ＧＷ１となる。この元ゲートウェイ装置Ｆ−ＧＷ１は、サーバと通信することはできないが、ノード装置Ｂとフレームの通信を行うことはできる。元ゲートウェイ装置Ｆ−ＧＷ１はノード装置としてもよい。
【００７４】
ノード装置Ａが送信したフレームは、ノード装置Ｂが受信する。ノード装置Ｂのテーブル更新部２４は、フレーム管理テーブル１３に受信したフレームの情報を記憶する。ノード装置Ｂが受信したフレームは、ＧＳが「Ａ」である。また、ＦＩＤは「１０」であるものとする。転送回数は初期値の「０」になっている。よって、図１１（Ａ）に示すような情報がフレーム管理テーブル１３に記憶される。
【００７５】
ノード装置Ｂは、元ゲートウェイ装置Ｆ−ＧＷ１と隣接している。そして、フレームのＧＤはゲートウェイ装置ＧＷ１のアドレスとなっている。従って、ノード装置Ｂは、フレームを元ゲートウェイ装置Ｆ−ＧＷ１に送信する。ノード装置Ｂが送信したフレームを受信するのは、元ゲートウェイ装置Ｆ−ＧＷ１である。
【００７６】
元ゲートウェイ装置Ｆ−ＧＷ１は、フレームをサーバに送信できない。従って、元ゲートウェイ装置Ｆ−ＧＷ１は、フレームのＧＤをゲートウェイ装置ＧＷ２に変更する。元ゲートウェイ装置Ｆ−ＧＷ１は、もともとゲートウェイ装置ＧＷ１であったため、フレーム管理テーブル１３は、受信したフレームのＧＳおよびＦＩＤと一致するエントリを有していない。
【００７７】
従って、図９のステップＳ１はＮＯとなる。そして、元ゲートウェイ装置Ｆ−ＧＷ１は、自身が元ゲートウェイ装置であり、フレームのＧＤは自身宛であるため、ステップＳ７はＹＥＳとなる。よって、図９のステップＳ８において、元ゲートウェイ装置Ｆ−ＧＷ１は、フレームのＧＤを変更する。
【００７８】
これにより、フレームの宛先が変更される。つまり、ノード装置Ａが生成したフレームの宛先はゲートウェイ装置ＧＷ１であったが、元ゲートウェイ装置Ｆ−ＧＷ１により、フレームの宛先は他のゲートウェイ装置に変更される。
【００７９】
実施形態では、元ゲートウェイ装置Ｆ−ＧＷ１のフレーム処理部２３は、フレームの宛先をゲートウェイ装置ＧＷ２に変更するものとする。つまり、ゲートウェイ装置ＧＷ１が元ゲートウェイ装置Ｆ−ＧＷ１に変更したときに、元ゲートウェイ装置Ｆ−ＧＷ１はフレームの宛先を変更する。
【００８０】
ゲートウェイ装置ＧＷ１が元ゲートウェイ装置Ｆ−ＧＷ１に変更する要因としては、ゲートウェイ装置ＧＷ１がサーバと通信不能になったときが一例として挙げられる。または、ゲートウェイ装置ＧＷ１が単なるノード装置として機能するときに、ゲートウェイ装置ＧＷ１は元ゲートウェイ装置Ｆ−ＧＷ１に変化する。
【００８１】
元ゲートウェイ装置Ｆ−ＧＷ１の転送回数処理部２２は、ステップＳ９において、フレームの転送回数をインクリメントする。フレームの転送回数をインクリメントすることで、フレームの転送回数は初期値「０」から「１」になる。つまり、元ゲートウェイ装置Ｆ−ＧＷ１がフレームの宛先を変更したときに、フレームの転送回数はインクリメントされる。
【００８２】
元ゲートウェイ装置Ｆ−ＧＷ１は、ルーティングテーブル１６を参照して、フレームをノード装置Ｂに送信する。つまり、元ゲートウェイ装置Ｆ−ＧＷ１はノード装置Ｂにフレームを転送する。
【００８３】
図１１（Ａ）に示すように、ノード装置Ｂのフレーム管理テーブル１３のうちＦＩＤが「１０」となっているエントリの転送回数は「０」になっている。一方、フレームの転送回数は「１」になっている。よって、フレームの転送回数の方がフレーム管理テーブル１３のエントリの転送回数よりも大きいため、図９のステップＳ２の判定はＮＯとなる。
【００８４】
従って、図９のステップＳ２の判定がＹＥＳにならないため、フレームが破棄されることはない。フレームの転送回数とフレーム管理テーブル１３のエントリの転送回数とは等しくない。このため、ステップＳ４の判定もＮＯとなる。
【００８５】
よって、ノード装置Ｂのテーブル更新部２４は、フレーム管理テーブル１３のＦＩＤが「１０」のエントリを削除して、受信したフレームの情報に基づいて、ＦＩＤが「１０」のエントリを新規に登録する。つまり、テーブル更新部２４は、フレーム管理テーブル１３の更新を行う。このとき、ＧＳは「Ａ」、ＦＩＤは「１０」である。一方、転送回数は「１」になっている。従って、ノード装置Ｂのフレーム管理テーブル１３は、図１１（Ｂ）のようになる。
【００８６】
ノード装置Ｂのルーティングテーブル１６は、ＬＤはノード装置Ｃであることを示しているものとする。よって、フレームはノード装置Ｃに送信される。そして、ノード装置Ｃは隣接するゲートウェイ装置ＧＷ２にフレームを送信する。これにより、フレームは、ゲートウェイ装置ＧＷ２からサーバに送信される。
【００８７】
従って、ゲートウェイ装置ＧＷ１がサーバと通信できなくなったとしても、フレームが破棄されることはない。ノード装置Ａが送信したフレームは元ゲートウェイ装置Ｆ−ＧＷ１からゲートウェイ装置ＧＷ２に転送されるため、フレームをサーバに送信することができる。
【００８８】
また、ノード装置Ｂは、フレームの転送回数の比較を行い、フレーム管理テーブル１３のエントリを削除して、受信したフレームの情報を新規登録している。このため、フレーム管理テーブル１３が記憶する情報量が増大しない。従って、ハードウェアの使用量を抑制することができる。
【００８９】
＜第２の具体例＞
次に、図１２を参照して、第２の具体例について説明する。ノード装置Ａは、フレームを生成する。生成するフレームのＧＤはゲートウェイ装置ＧＷ１であり、ＦＩＤは「１０」であるとする。ノード装置Ａがフレームを生成するため、初期値は「０」である。
【００９０】
この時点では、ノード装置Ａは、ゲートウェイ装置ＧＷ１はサーバと通信可能であると認識していたとする。そして、その後、ゲートウェイ装置ＧＷ１はサーバと通信できなくなり、ゲートウェイ装置ＧＷ１は元ゲートウェイ装置Ｆ−ＧＷ１になる。
【００９１】
図１２（Ａ）に示すように、ノード装置Ａはノード装置Ｂにフレームを送信する。ノード装置Ｂは、フレーム管理テーブル１３に情報を記憶し、元ゲートウェイ装置Ｆ−ＧＷ１のアドレスにフレームを送信する。このときには、ゲートウェイ装置ＧＷ１は、サーバと通信不能になっており、ゲートウェイ装置ＧＷ１は元ゲートウェイ装置Ｆ−ＧＷ１に変化している。
【００９２】
従って、元ゲートウェイ装置Ｆ−ＧＷ１は、受信したフレームのＧＤをゲートウェイ装置ＧＷ２に変更する。これにより、フレームは元ゲートウェイ装置Ｆ−ＧＷ１からゲートウェイ装置ＧＷ２に転送される。そして、フレームの転送回数がインクリメントされて、フレームの転送回数は「１」になる。
【００９３】
ノード装置Ｂは、元ゲートウェイ装置Ｆ−ＧＷ１から送信されたフレームを受信する。第１の具体例で説明したように、ノード装置Ｂのフレーム管理テーブル１３のＦＩＤが「１０」のエントリは、転送回数が「０」になっている。一方、フレームの転送回数は「１」になっている。よって、図９のステップＳ９の判定はＮＯになるため、フレームは破棄されない。
【００９４】
ノード装置Ｂは、ノード装置Ｃにフレームを送信する。ノード装置Ｃのテーブル更新部２４は、受信したフレームのＧＳ、ＦＩＤおよび転送回数をフレーム管理テーブル１３に記憶する。従って、ノード装置Ｃのフレーム管理テーブル１３は図１２（Ａ）に示した値となる。
【００９５】
ノード装置Ｃのルーティングテーブル１６は、ＬＤがノード装置Ｄであると記憶している。つまり、ノード装置Ｃはフレームをノード装置Ｄに送信することが適切であることが分かる。従って、ノード装置Ｃはフレームをノード装置Ｄに送信する。
【００９６】
ノード装置Ｄはフレームを受信して、フレームの情報をフレーム管理テーブル１３に記憶する。そして、ノード装置Ｄはフレームをノード装置Ｅに送信する。ノード装置Ｅは、フレームの情報をフレーム管理テーブル１３に記憶する。そして、ノード装置Ｅは、自身に隣接するゲートウェイ装置ＧＷ２にフレームを送信する。
【００９７】
ここで、ノード装置Ｅが送信したフレームをゲートウェイ装置ＧＷ２が正常に受信した場合、ゲートウェイ装置ＧＷ２はノード装置Ｅに対して、正常な通信が行われたことを示す通知（Ａｃｋ：Ａｃｋｎｏｗｌｅｄｇｍｅｎｔ）をノード装置Ｅに送信する。Ａｃｋを受信することにより、ノード装置Ｅはフレームを正常に送信したことを認識する。なお、図１２の実線の矢印はフレームが送信されている状態を示し、破線の矢印はＡｃｋが送信されている状態を示している。図１３以降も同様である。
【００９８】
一方、ノード装置ＥがＡｃｋを受信しない場合には、ノード装置Ｅはフレームを正常に送信することができなかったと認識する。この場合、ノード装置Ｅは再びフレームを送信する。ただし、ノード装置Ｅは、ゲートウェイ装置ＧＷ２からＡｃｋを受信していないため、フレームの送信先を変更する。
【００９９】
図１２（Ｂ）に示すように、ノード装置Ｅは、まだ経路として選択していないノード装置Ｃにフレームを送信する。従って、ノード装置Ｃは再びフレームを受信する。このとき、ノード装置Ｃのフレーム管理テーブル１３の転送回数は「１」になっている。一方、ノード装置Ｃが受信したフレームの転送回数も「１」になっている。
【０１００】
よって、図９のステップＳ２の判定はＮＯとなり、受信フレームが破棄されることはない。また、図９のステップＳ４の判定はＹＥＳとなり、ステップＳ５の処理が行われることはない。
【０１０１】
従って、図１２（Ｂ）に示すように、ノード装置Ｃはノード装置Ｆにフレームを送信する。ノード装置Ｆは、自身に隣接しているゲートウェイ装置ＧＷ２にフレームを送信する。これにより、ゲートウェイ装置ＧＷ２はサーバにフレームを送信することができる。
【０１０２】
第２の具体例では、Ａｃｋが返信されなかったことにより、ノード装置Ｅはフレームの送信経路を切り替えている。ノード装置Ｃは、転送回数の判定を行うときに、フレーム管理テーブル１３のエントリの転送回数と受信したフレームの転送回数とが等しいため、フレームの廃棄は行わず、通常のルーティングを行う。これにより、ノード装置Ａが生成したフレームをサーバに送信することができる。
【０１０３】
＜第３の具体例＞
次に、図１３を参照して、第３の具体例について説明する。ノード装置Ａはフレームを生成する。フレームのＧＳは「Ａ」、ＦＩＤは「１０」、転送回数は初期値の「０」であるものとする。また、ノード装置Ａは、ゲートウェイ装置ＧＷ１とサーバとの間の通信が遮断されることを認識していないため、ゲートウェイ装置ＧＷ１をフレームのＧＤに設定する。
【０１０４】
ノード装置Ａは、ゲートウェイ装置ＧＷ１までの適切な経路として、ノード装置Ｂを選択する。従って、ノード装置Ａは、ノード装置Ｂにフレームを送信する。ノード装置Ｂは、フレームを受信したが、ノード装置ＡにＡｃｋが届かなかったものとする。
【０１０５】
ノード装置Ｂは、フレームの情報をフレーム管理テーブル１３に記憶し、元ゲートウェイ装置Ｆ−ＧＷ１にフレームを送信する。このときには、ゲートウェイ装置ＧＷ１は、サーバとの間の通信が遮断されているため、元ゲートウェイ装置Ｆ−ＧＷ１となっている。
【０１０６】
元ゲートウェイ装置Ｆ−ＧＷ１は、転送回数をインクリメントして、ノード装置Ｂにフレームを転送する。ノード装置Ｂのフレーム管理テーブル１３は、既にＦＩＤが「１０」のエントリの情報を記憶している。このエントリの転送回数は「０」になっている。
【０１０７】
一方、ノード装置Ｂが元ゲートウェイ装置Ｆ−ＧＷ１から受信したフレームの転送回数は「１」になっている。従って、図９のステップＳ２の判定はＮＯとなるため、フレームが廃棄されることはない。そして、図９のステップＳ４の判定もＮＯとなるため、ノード装置Ｂのテーブル更新部２４は、ＦＩＤが「１０」のエントリを削除して、受信したフレームに基づいて、新たに情報を記憶する。
【０１０８】
受信したフレームの転送回数は「１」になっているため、図１３（Ａ）に示されるように、ノード装置Ｂのフレーム管理テーブル１３のＦＩＤが「１０」のエントリの転送回数は「１」になっている。
【０１０９】
ノード装置Ｂは、フレームをノード装置Ｃに送信する。そして、ノード装置Ｃは、自身に隣接するゲートウェイ装置ＧＷ２にフレームを送信する。ゲートウェイ装置ＧＷ２は、フレームをサーバに送信する。これにより、ノード装置Ａが生成したフレームはサーバに送信される。
【０１１０】
上述したように、ノード装置Ａは、ノード装置Ｂに送信したフレームのＡｃｋを受信していない。ノード装置Ａは、Ａｃｋを受信しないときには、フレームを再送信する。ただし、ノード装置Ａは、フレームを送信してから所定時間経過後にＡｃｋを受信していないときに、フレームの再送信を行う。
【０１１１】
ノード装置Ａは、ノード装置ＢからのＡｃｋを受信していないため、ノード装置Ｂではなく、ノード装置Ｄにフレームを再送信する。ノード装置Ｄに再送信されるフレームは、ノード装置Ａがノード装置Ｂに送信したフレームと同じＧＳ、ＦＩＤおよび転送回数の値を有する。つまり、ＧＳは「Ａ」であり、ＦＩＤは「１０」であり、転送回数は初期値の「０」である。
【０１１２】
ノード装置Ｄは、フレーム管理テーブル１３に受信したフレームの情報を記憶し、ノード装置Ｅにフレームを送信する。ノード装置Ｅは、フレーム管理テーブル１３にフレームの情報を記憶し、ノード装置Ｆにフレームを送信する。ノード装置Ｆは、フレーム管理テーブル１３にフレームの情報を記憶し、ノード装置Ｂにフレームを送信する。
【０１１３】
ノード装置Ｆがノード装置Ｂに送信したフレームの転送回数は「０」である。一方、図１３（Ｂ）に示すように、ノード装置Ｂのフレーム管理テーブル１３のＦＩＤが「１０」のエントリには、既に「１」が記憶されている。
【０１１４】
ノード装置Ｂは、図９のステップＳ２の判定で、フレーム管理テーブル１３のエントリの転送回数と受信したフレームの転送回数とを比較する。フレーム管理テーブル１３の転送回数は「１」であり、受信したフレームの転送回数は「０」である。よって、図９のステップＳ２の判定はＹＥＳとなる。従って、受信フレームは廃棄される。
【０１１５】
ただし、上述したように、ノード装置Ａが生成したフレームは、ゲートウェイ装置ＧＷ２からサーバに送信されている。よって、ノード装置Ｂがノード装置Ｆから受信したフレームを廃棄したとしても、ノード装置Ａが生成したフレームはサーバに送信される。
【０１１６】
ノード装置Ｂがノード装置Ｆから受信したフレームは、廃棄される必要がある。既に、ノード装置Ａが生成したフレームはノード装置Ｃを経由して、ゲートウェイ装置ＧＷ２に送信されている。よって、ノード装置Ｂがノード装置Ｆから受信したフレーム（ノード装置Ａが再送信したフレーム）は不要になる。
【０１１７】
不要なフレームが存在していると、ネットワークにとって負担になる。よって、廃棄される必要がある。第３の具体例では、フレーム管理テーブル１３の転送回数と受信したフレームの転送回数とを比較して、フレームを廃棄しているため、ネットワークの負担を生じることはない。
【０１１８】
そして、ノード装置Ａが生成したフレームはサーバに送信される。また、フレーム管理テーブル１３は、ノード装置Ｆから送信されたフレームをフレーム管理テーブル１３に登録せず、廃棄するため、フレーム管理テーブルの情報量は増大しない。従って、ハードウェアの使用量を抑制することができる。
【０１１９】
＜第４の具体例＞
次に、第４の具体例について説明する。第４の具体例では、図５で示したアドホックネットワークの一例を使用して、フレーム管理テーブルおよびフレームフォーマットを説明する。図５を参照すると、ノード装置Ａがフレームを生成する。そして、ノード装置Ａは、ノード装置Ｂにフレームを送信する。
【０１２０】
第４の具体例では、ゲートウェイ装置ＧＷ１は、サーバとの間は通信可能になっている。従って、ノード装置Ｂがゲートウェイ装置ＧＷ１に送信したフレームは、ゲートウェイ装置ＧＷ１からサーバに送信される。
【０１２１】
図１４は、ノード装置ＡおよびＢのそれぞれにおけるフレーム管理テーブル１３およびフレームフォーマットを示している。ノード装置Ａの送信処理部１４は、ＦＩＤが「１」のフレームを生成する。生成したフレームのＧＳは「Ａ」、転送回数は初期値の「０」になる。従って、送信処理部１４は、図１４に示すような情報を記憶する。
【０１２２】
フレームのＧＤはゲートウェイ装置ＧＷ１となる。また、ルーティング機能部１５は、フレームのＬＤとしてノード装置Ｂを選択している。フレームのＬＳは「Ａ」である。よって、ノード装置Ａが送信するフレームのフレームフォーマットは、図１４に示すような情報になる。
【０１２３】
ノード装置Ｂは、ノード装置Ａから送信されたフレームの情報を記憶する。よって、ノード装置Ｂのフレーム管理テーブル１３は、図１４に示すような情報を記憶する。フレームのフレームフォーマットについては、ノード装置Ｂのルーティング機能部１５により、ＬＤが「ＧＷ１」となっている。ＬＳは「Ｂ」である。よって、ノード装置Ｂが送信するフレームのフレームフォーマットは、図１４に示すような情報になる。
【０１２４】
＜第５の具体例＞
次に、図１５および図１６を参照して、第５の具体例について説明する。図１５に示すように、ノード装置Ａ、Ｂ、Ｄ、Ｅ、Ｆはゲートウェイ装置ＧＷ１のグループのノード装置である。ただし、ゲートウェイ装置ＧＷ１は、サーバとの間の通信が遮断されているため、元ゲートウェイ装置Ｆ−ＧＷ１となっている。
【０１２５】
ノード装置Ｃ、Ｇ、ＨおよびＩはゲートウェイ装置ＧＷ２のグループである。ここで、ノード装置Ｂとノード装置Ｃとは異なるグループであるが、ノード装置Ｂとノード装置Ｃとの間で通信を行うことができる。
【０１２６】
ノード装置Ａは、フレームを生成する。フレームのＧＳは「Ａ」、ＦＩＤは「２」、転送回数は初期値の「０」である。また、ノード装置Ａは、元ゲートウェイ装置Ｆ−ＧＷ１とサーバとの間の通信が遮断されていることを認識していないため、ＧＤはゲートウェイ装置ＧＷ１となっている。なお、ゲートウェイ装置ＧＷ１と元ゲートウェイ装置Ｆ−ＧＷ１とは同じアドレスになる。
【０１２７】
ノード装置Ａは、生成したフレームをノード装置Ｂに送信する。ノード装置Ｂは、受信したフレームの情報をフレーム管理テーブル１３に記憶する。図１６に示すように、ノード装置Ｂのフレーム管理テーブル１３のＧＳは「Ａ」、ＦＩＤは「２」、転送回数は「０」となる。
【０１２８】
ノード装置Ｂは、フレームを元ゲートウェイ装置Ｆ−ＧＷ１に送信する。元ゲートウェイ装置Ｆ−ＧＷ１は、ゲートウェイ装置ＧＷ１から変化している。よって、フレームの転送回数をインクリメントし、ＧＤをゲートウェイ装置ＧＷ２に変更する。その後、元ゲートウェイ装置Ｆ−ＧＷ１は、ノード装置Ｂにフレームを転送する。
【０１２９】
ノード装置Ｂは、自身のフレーム管理テーブル１３が記憶している転送回数と元ゲートウェイ装置Ｆ−ＧＷ１から受信したフレームの転送回数とを比較する。図１６では、ノード装置Ｂが２つあるが、ハッチングがされている転送回数が比較の対象となる。
【０１３０】
フレーム管理テーブル１３の転送回数は「０」であり、フレームフォーマットの転送回数は「１」である。よって、図９のステップＳ２の判定はＮＯとなり、フレームが廃棄されることはない。また、図９のステップＳ４の判定もＮＯとなり、ノード装置Ｂのフレーム管理テーブル１３のＦＩＤが「２」のエントリは削除される。
【０１３１】
そして、フレームフォーマットに基づいて、テーブル更新部２４はフレーム管理テーブル１３を更新する。更新後のフレーム管理テーブル１３の各値は、ＧＳが「Ａ」、ＦＩＤが「２」、転送回数が「１」となる。
【０１３２】
ノード装置Ｂは、フレームをノード装置Ｃに送信する。ノード装置Ｃは、適切な経路として、ノード装置Ｇを選択する。従って、ノード装置Ｃはフレームをノード装置Ｇに送信する。ノード装置Ｇは、適切な経路として、ノード装置Ｈを選択する。従って、ノード装置Ｇは、ノード装置Ｈにフレームを送信する。
【０１３３】
ノード装置Ｈは隣接するゲートウェイ装置ＧＷ２にフレームを送信する。ゲートウェイ装置ＧＷ２はサーバと通信可能である。よって、ゲートウェイ装置ＧＷ２は、受信したフレームをサーバに送信する。従って、ノード装置Ａが生成したフレームはサーバに送信される。
【０１３４】
従って、ゲートウェイ装置ＧＷ１がサーバと通信することができなくなったとしても、ノード装置Ａが生成したフレームは破棄されることなく、サーバに送信することができる。また、ノード装置Ｂのフレーム管理テーブル１３の情報量が変化しないため、ハードウェア資源の増大を回避することができる。
【０１３５】
＜第６の具体例＞
次に、図１７および図１８を参照して、第６の具体例について説明する。図１７に示すように、ゲートウェイ装置ＧＷ１はサーバと通信ができなくなっている。また、ノード装置Ｈとゲートウェイ装置ＧＷ２との間の通信もできなくなっている。
【０１３６】
図１７に一例として示すアドホックネットワークは、図１５のアドホックネットワークと同一のネットワーク構成である。ノード装置Ａはフレームを生成する。フレームのＧＳは「Ａ」、ＦＩＤは「３」、転送回数は初期値の「０」である。
【０１３７】
また、ノード装置Ａは、元ゲートウェイ装置Ｆ−ＧＷ１とサーバとの間の通信が遮断されていることを認識していないため、ＧＤはゲートウェイ装置ＧＷ１となっている。なお、ゲートウェイ装置ＧＷ１と元ゲートウェイ装置Ｆ−ＧＷ１とは同じアドレスになる。
【０１３８】
ノード装置Ａは、生成したフレームをノード装置Ｂに送信する。ノード装置Ｂは、フレームを元ゲートウェイ装置Ｆ−ＧＷ１に送信する。元ゲートウェイ装置Ｆ−ＧＷ１は、フレームの転送回数をインクリメントして、ノード装置Ｂにフレームを転送する。
【０１３９】
ノード装置Ｂは、ノード装置Ｃにフレームを送信する。ノード装置Ｃは、受信したフレームの情報をフレーム管理テーブル１３に記憶する。フレームの転送回数はインクリメントされて「１」になっているため、フレーム管理テーブル１３は、ＧＳが「Ａ」、ＦＩＤが「３」、転送回数が「１」を記憶する。そして、ノード装置Ｃは、適切な経路として選択されたノード装置Ｇにフレームを送信する。
【０１４０】
ノード装置Ｇはノード装置Ｈにフレームを送信する。ノード装置Ｈは、ゲートウェイ装置ＧＷ２にフレームを送信する。ただし、ノード装置Ｈとゲートウェイ装置ＧＷ２との間は通信ができなくなっているため、ノード装置Ｈはフレームをノード装置Ｃに送信する。
【０１４１】
ノード装置Ｃはフレームを受信する。ノード装置Ｃは、自身のフレーム管理テーブル１３が記憶している転送回数と元ゲートウェイ装置Ｆ−ＧＷ１から受信したフレームの転送回数とを比較する。図１８では、ノード装置Ｃが２つあるが、ハッチングがされている転送回数が比較の対象となる。
【０１４２】
フレーム管理テーブル１３の転送回数は「１」であり、フレームフォーマットの転送回数も「１」である。よって、図９のステップＳ２の判定はＮＯとなり、フレームが廃棄されることはない。図９のステップＳ４の判定はＹＥＳとなり、ステップＳ５の処理は行われない。
【０１４３】
ノード装置Ｃは、フレームをノード装置Ｉに送信する。ノード装置Ｉは、ゲートウェイ装置ＧＷ２にフレームを送信する。ゲートウェイ装置ＧＷ２は、受信したフレームをサーバに送信する。従って、サーバは、ノード装置Ａが生成したフレームを受信する。
【０１４４】
従って、ゲートウェイ装置ＧＷ１がサーバと通信することができなくなり、ノード装置Ｈとゲートウェイ装置ＧＷ２との間の通信ができなくなったとしても、フレームが廃棄されることはない。これにより、ノード装置Ａが生成したフレームをサーバに送信することができる。
【０１４５】
＜第７の具体例＞
次に、図１９および図２０を参照して、第７の具体例について説明する。図１９に示すように、ゲートウェイ装置ＧＷ１はサーバと通信ができなくなっている。ノード装置Ｈとゲートウェイ装置ＧＷ２との間の通信もできなくなっている。
【０１４６】
図１９に一例として示すネットワーク構成は、図１５で示したネットワーク構成と同一である。図１９のネットワーク構成において、ノード装置Ａはフレームを生成する。フレームのＧＳは「Ａ」、ＦＩＤは「４」、転送回数は初期値の「０」である。
【０１４７】
また、ノード装置Ａは、元ゲートウェイ装置Ｆ−ＧＷ１とサーバとの間の通信が遮断されていることを認識していないため、ＧＤはゲートウェイ装置ＧＷ１となっている。なお、ゲートウェイ装置ＧＷ１と元ゲートウェイ装置Ｆ−ＧＷ１とは同じアドレスになる。
【０１４８】
ノード装置Ａは、生成したフレームをノード装置Ｂに送信する。このとき、ノード装置Ａはノード装置ＢからＡｃｋを受信しない。ノード装置Ａは、所定時間、ノード装置ＢからＡｃｋを受信しない場合、ノード装置Ｄにフレームを再送信する。
【０１４９】
最初にノード装置Ａからノード装置Ｂに送信されたフレームの情報は、ノード装置Ｂのフレーム管理テーブル１３に記憶される。その後、ノード装置Ｂは、元ゲートウェイ装置Ｆ−ＧＷ１にフレームを送信する。
【０１５０】
元ゲートウェイ装置Ｆ−ＧＷ１は、ゲートウェイ装置ＧＷ１から元ゲートウェイ装置Ｆ−ＧＷ１に変化しているため、フレームの転送回数をインクリメントして、フレームをノード装置Ｂに転送する。ノード装置Ｂは、フレーム管理テーブル１３の転送回数が「０」であり、フレームの転送回数が「１」であるため、フレームの廃棄は行わない。フレーム管理テーブル１３の転送回数とフレームの転送回数とは等しくないため、エントリの削除および新規登録を行う。
【０１５１】
ノード装置Ｂは、ノード装置Ｃにフレームを送信する。ノード装置Ｃは、適切な経路として、ノード装置Ｇにフレームを送信する。ノード装置Ｇは、ノード装置Ｈにフレームを送信する。
【０１５２】
ノード装置Ｈは、ゲートウェイ装置ＧＷ２にフレームを送信することができない。従って、ノード装置Ｈは、ノード装置Ｃにフレームを送信する。ノード装置Ｃはノード装置Ｉにフレームを送信する。ノード装置Ｉはゲートウェイ装置ＧＷ２にフレームを送信する。ゲートウェイ装置ＧＷ２は、受信したフレームをサーバに送信する。従って、サーバは、ノード装置Ａが生成したフレームを受信する。
【０１５３】
次に、ノード装置Ａがノード装置Ｄにフレームを再送信した場合について説明する。ノード装置Ａは、ノード装置ＢからＡｃｋを受信しないため、ＬＤが異なるフレームをノード装置Ｄに送信する。ノード装置Ｄは、ノード装置Ｅにフレームを送信する。ノード装置Ｅは、ノード装置Ｆにフレームを送信する。ノード装置Ｆは、ノード装置Ｂにフレームを送信する。
【０１５４】
図２０（Ａ）は、正常に送信されるフレーム（ノード装置Ａが最初に送信したフレーム）の経路におけるフレーム管理テーブルおよびフレームフォーマットを示している。図２０（Ｂ）は、廃棄されるフレーム（ノード装置Ａが再送信したフレーム）の経路におけるフレーム管理テーブルおよびフレームフォーマットを示している。
【０１５５】
図２０（Ａ）に示すように、ノード装置Ｂのフレーム管理テーブル１３は、転送回数が「１」になっている（図２０（Ａ）のハッチング部分）。一方、図２０（Ｂ）のうちＬＤがノード装置Ｂとなっているフレームフォーマットは、転送回数が「０」になっている（図２０（Ｂ）のハッチング部分）。
【０１５６】
従って、図８のステップＳ２の判定はＹＥＳになる。このため、別フレームは破棄される。ただし、本フレームは、ゲートウェイ装置ＧＷ２からサーバに送信されている。よって、ノード装置Ａが生成したフレームをサーバに送信することができる。
【０１５７】
＜通信装置のハードウェア構成＞
次に、通信装置１のハードウェア構成の一例について説明する。図２１に示すように、通信装置１は、バス３０に対して、プロセッサ３１とＲＡＭ（Random Access Memory）３２とＲＯＭ（Read Only Memory)３３と補助記憶装置３４と無線モジュール３５と可搬型記憶装置接続部３６とが接続されている。
【０１５８】
プロセッサ３１はＣＰＵ（Central Processing Unit)のような任意の処理回路である。プロセッサ３１はＲＡＭ３２に展開されたプログラムを実行する。ＲＯＭ３３はＲＡＭ３２に展開されるプログラムを記憶する不揮発性の記憶装置である。ＲＡＭ３２に展開されるプログラムは補助記憶装置３４に記憶されていてもよい。記憶装置の一例としては、フラッシュメモリやハードディスクドライブ等を適用することができる。
【０１５９】
無線モジュール３５は、通信装置１が他の通信装置と無線通信を行う機能を有する通信インタフェースである。無線モジュール３５を介して、ノード装置とノード装置との間の通信、およびノード装置とゲートウェイ装置との間の通信が行われる。
【０１６０】
可搬型記憶装置接続部３６は、可搬型記憶装置３７と接続可能に設けられている。可搬型記憶装置３７としては、可搬型のメモリや光学式ディスク（例えば、ＣＤ（Compact Disk)やＤＶＤ（Digital Video Disk)等）を適用することができる。
【０１６１】
ＲＡＭ３２、ＲＯＭ３３および補助記憶装置３４は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０１６２】
一例として、受信部１１および送信部１７は無線モジュール３５により実現されてもよい。受信処理部１２、送信処理部１４およびルーティング機能部１５はプロセッサ３１により実現されてもよい。フレーム管理テーブル１３およびルーティングテーブル１６は、補助記憶装置３４により実現されてもよい。
【０１６３】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１６４】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
複数のゲートウェイ装置及びノード装置を含む通信システムであって、
前記複数のゲートウェイ装置の内の第一のゲートウェイ装置は、前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを受信する受信部と、受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信する送信部と、を有し、
前記ノード装置は、データを受信する受信部と、データの転送回数を該データごとに記憶する管理部と、受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する送信部と、を
有することを特徴とする通信システム。
（付記２）
前記ノード装置は、受信したデータに含まれる転送回数が、前記受信したデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数よりも大きい場合、前記データを破棄する、
ことを特徴とする付記１記載の通信システム。
（付記３）
前記ノード装置は、受信したデータに含まれる転送回数が、前記受信したデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数よりも小さい場合、前記受信したデータに基づいて、前記管理部が記憶している情報を更新する、
ことを特徴とする付記１記載の通信システム。
（付記４）
前記ノード装置は、受信したデータと同じ識別子を持つデータに関連する情報を削除し、前記データの情報を前記管理部に新規に登録する、
ことを特徴とする付記１記載の通信システム。
（付記５）
前記ノード装置は、前記データを新たに生成するときに、前記データに含まれる前記転送回数を初期値に設定して、初期値に設定された前記データを送信する、
ことを特徴とする付記１記載の通信システム。
（付記６）
前記第一のゲートウェイ装置は、
前記データの前記宛先を前記第二のゲートウェイ装置に設定したときに、前記データに含まれる前記転送回数をインクリメントする、
ことを特徴とする付記１記載の通信システム。
（付記７）
前記第一のゲートウェイ装置はサーバと通信する機能を有し、且つ前記サーバとの通信が遮断されたノード装置であり、前記第二のゲートウェイ装置はサーバと通信する機能を有し、且つ前記サーバと通信可能なノード装置である、
付記１記載の通信システム。
（付記８）
複数のゲートウェイ装置及びノード装置を含む通信システムにおける通信方法であって、
前記複数のゲートウェイ装置の内の第一のゲートウェイ装置は、
前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを受信し、
受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信し、
前記ノード装置は、
データを受信し、
データの転送回数を該データごとに管理部に記憶し、
受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する、
ことを特徴とする通信方法。
（付記９）
複数のゲートウェイ装置及びノード装置を含む通信システムにおける通信プログラムであって、
前記ノード装置が送信した少なくとも宛先の情報と転送回数の情報とを含むデータを前記複数のゲートウェイ装置の内の第一のゲートウェイ装置が受信し、
前記第一のゲートウェイ装置が受信した前記データの前記宛先が該第一のゲートウェイ装置であって、かつ、サーバに前記データを送信できない場合、前記データの前記宛先を前記複数のゲートウェイ装置の内の該第一のゲートウェイ装置以外の第二のゲートウェイ装置に設定するとともに、前記データに含まれる前記転送回数を更新して、更新後のデータを前記ノード装置に送信し、
前記ノード装置がデータを受信し、
前記ノード装置がデータの転送回数を該データごとに管理部に記憶し、
前記ノード装置が受信した前記更新後のデータに含まれる転送回数が該更新後のデータに対応するデータであって前記管理部が記憶しているデータに含まれる転送回数以下の場合、前記受信したデータを前記設定された前記第二のゲートウェイ装置に向けて送信する、
処理をコンピュータに実行させることを特徴とする通信プログラム。
【符号の説明】
【０１６５】
１  通信装置
１１  受信部
１２  受信処理部
１３  フレーム管理テーブル
１４  送信処理部
１５  ルーティング機能部
１６  ルーティングテーブル
１７  送信部
２１  フレーム解析部
２２  転送回数処理部
２３  フレーム処理部
２４  テーブル更新部
３０  バス
３１  プロセッサ
３２  ＲＡＭ
３３  ＲＯＭ
３４  補助記憶装置
３５  無線モジュール
３６  可搬型記憶装置接続部
３７  可搬型記憶装置
【図１】
2015095723.tif 000003
【図２】
2015095723.tif 000004
【図３】
2015095723.tif 000005
【図４】
2015095723.tif 000006
【図５】
2015095723.tif 000007
【図６】
2015095723.tif 000008
【図７】
2015095723.tif 000009
【図８】
2015095723.tif 000010
【図９】
2015095723.tif 000011
【図１０】
2015095723.tif 000012
【図１１】
2015095723.tif 000013
【図１２】
2015095723.tif 000014
【図１３】
2015095723.tif 000015
【図１４】
2015095723.tif 000016
【図１５】
2015095723.tif 000017
【図１６】
2015095723.tif 000018
【図１７】
2015095723.tif 000019
【図１８】
2015095723.tif 000020
【図１９】
2015095723.tif 000021
【図２０】
2015095723.tif 000022
【図２１】
2015095723.tif 000023