【文献】
福原毅郎・川合裕司・増田直樹・笹瀬巌,センサネットワークにおける冗長ACK受信削減による低消費電力フラッディングアルゴリズム,電子情報通信学会論文誌 (J92−B) 第5号,日本,社団法人電子情報通信学会,2009年 5月 1日,pp.831-839
(58)【調査した分野】(Int.Cl.,DB名)
前記第一の通信装置および前記第二の通信装置を含む複数の通信装置は、自己分散型のネットワークを形成することを特徴とする請求項6または7のいずれか一項に記載のネットワークシステム。
【発明を実施するための形態】
【0012】
ネットワークの接続状態(トポロジー)に通信品質は左右される。したがって、再送処理の回数を設定する際には、トポロジーを考慮して再送回数を設定することが有効であることに、発明者らは気がついた。そこで、本実施例においては、各ノードは、ネットワーク全体のトポロジー状態を把握せずとも、実際のトポロジーに応じた再送回数を決定する。特に、本実施例では、アドホックネットワークのような自立分散型ネットワークにおけるデータパケット送信処理での再送回数の決定について、以下、図面を用いて説明する。
【0013】
図1は、実施の形態にかかるネットワークシステムの一実施例を示す説明図である。ネットワークシステムは、自立分散型のネットワークを形成するシステムである。また、本実施例におけるネットワークシステムは、複数の通信装置と、中継装置とを含む。さらに、ネットワークシステムは、ネットワークシステム全体を管理する管理装置を含んでも良い。
【0014】
図1におけるノードNa乃至NeおよびNX乃至NZは、通信装置の一例である。また、ゲートウェイGWは中継装置の一例である。サーバSは、管理装置の一例である。なお、各ノードを互いに区別する場合を除いて、ノードNと称する。
【0015】
ノードNは、無線通信機能を有するコンピュータである。例えば、PDAや携帯電話端末などである。また、ゲートウェイGWは、ノードNとサーバSとの通信を中継するコンピュータである。つまり、ゲートウェイGWは、アドホックネットワークNW1のプロトコル形式の情報と通常ネットワークNW2のプロトコル形式の情報の両方を送受信可能なコンピュータである。サーバSは、ノードNおよびゲートウェイGWを管理するコンピュータである。
【0016】
まず、
図1を用いて、自立分散型ネットワークの一種であるアドホックネットワークおよび、アドホックネットワークにおける通常のパケット通信について、説明する。
【0017】
ノードNは、アドホックネットワークNW1を利用した通信を行う。ノードNは、自ノードと直接通信可能な他のノードNへ、パケットを送信する。そして、他のノードNは、受信したパケットを、最終宛先へ向けて転送する。なお、パケットの送受信においては、各ノードNが生成したルーティング情報が参照される。ルーティング情報は、自ノードNと他のノードNとのハローパケット等のやりとりにより生成される情報であって、自ノードから各最終宛先への経路に関する情報を含む。詳細は後述する。
【0018】
このように、直接通信が可能なノード間でパケットの転送が繰り返されることで、パケットは、最終宛先へ到達する。例えば、ノードNがゲートウェイGWへデータを送信するときは、送信対象のデータを含むデータパケットが、1または複数回の転送によって、ゲートウェイGWまで届けられる。
【0019】
一方、サーバSとゲートウェイGWとはインターネット、LAN、WANなどの通常ネットワークNW2を介して接続されている。したがって、ゲートウェイGWは、アドホックネットワークNW1と通常ネットワークNW2との間で情報をプロトコル変換することにより、ノードNとサーバSとの間でデータの中継を行う。
【0020】
ここで、ノードNが最終宛先へのパケットの送信に失敗したことを検知した場合は、ノードNは、パケットの再送処理を実行する。再送処理は、所定の再送回数の範囲で、送信対象のデータを含むデータパケットを送信する処理である。ノードNは、バックトラックによりデータパケットが自ノードに戻ってきた場合や、データパケットに対する応答を要求するデータパケットであるにも関わらず最終宛先からの応答がなかった場合に、データパケットの送信に失敗したことを検知する。
【0021】
本実施例においては、ノードNは、自ノードと直接通信可能なノードのうちのひとつのノードに、データパケットの転送を依頼するが、所定回数の再送処理を繰り返しても、データパケットの送信が成功しない場合は、他のノードを選択する。なお、以下、自ノードと直接通信可能なノードを、隣接ノードと称する。ただし、隣接ノードは、自ノードと直接通信できればよく、必ずしも物理的に隣接関係にある必要はない。
【0022】
さらに、本実施例においては、各ノードNは、上述のデータパケットの送受信とは別に、アドホックネットワークNW1のトポロジーを把握するために、テストパケットを送受信する。テストパケットは、自ノードから最終宛先への経路を探索するためのパケットである。つまり、各ノードNは、テストパケットを利用して、自ノードからアドホックネットワークNW1の中の各最終宛先までの経路を探索する。
【0023】
テストパケットは、自ノードと直接通信が可能な隣接ノードに対して送信され、設定された最終宛先までの転送が試みられる。そして、各ノードNは、テストパケットに対する最終宛先からの応答を受信した場合に、テストパケットの送信先である隣接ノードを経由する経路が、最終宛先までの経路として存在することを把握できる。
【0024】
図1を用いて、ノードNdから最終宛先であるゲートウェイGWまでの経路を探索する処理について、説明する。経路探索処理において、ノードNdは、自ノードと通信可能なノードNbとNcとノードNYへ各々テストパケットを送信する。隣接ノードNb、Nc、NYは、各々、自ノードと直接通信可能な隣接ノードに対して、テストパケットを転送する。
【0025】
ただし、電波状態や、隣接ノードの有無によっては、テストパケットの転送が途中で失敗し、最終宛先までテストパケットが到達しない経路も存在する。最終宛先は、テストパケットを受信した場合、当該テストパケットに対する応答を送信する。
【0026】
例えば、ノードNdがノードNbへ送信したテストパケットが、最終宛先であるゲートウェイGWまで到達し、ゲートウェイGWにより受信された場合、ゲートウェイGWは、ノードNdを最終宛先とするテストパケットの応答を送信する。つまり、ゲートウェイGWは、テストパケットを受信するとともに、テストパケットに対する応答を送信する通信部を有する。
【0027】
そして、ノードNdは、当該応答を受信することで、自ノードからノードNbを経由することでゲートウェイGWまでパケットを送信することができることを把握する。ここで、いずれかの隣接ノードXを経由する事で、最終宛先までパケットを送信することができることを把握することを、隣接ノードXを経由する経路を把握すると称する。
【0028】
一方、ノードNdがノードNYへ送信したテストパケットは、ノードNYに対する隣接ノードNXまたはNZへ転送される。しかし、
図1の例では、テストパケットは、ノードNXまたはNZから、ノードNYへ戻ってくる。したがって、ノードNYを経由したテストパケットの転送は、ノードNdへのテストパケットの返却またはタイムアウトにより、失敗する。したがって、ノードNdは、ノードNYを経由するテストパケットに対して、ゲートウェイGWから応答を受信することはない。
【0029】
そして、各ノードNは、経路探索処理によって把握した経路の本数に応じて、再送処理の回数を決定する。つまり、経路探索処理によって把握した経路本数は、トポロジー状態を反映した情報であるため、経路本数に基づき再送回数を決定する事で、各ノードNは、トポロジー状態を反映した再送回数を決定することができる。例えば、ノードNは、経路の本数が多いほど、再送回数を少なく決定する。再送回数は、自ノードに対する隣接ノードの各々について、再送処理を繰り返す回数である。
【0030】
以上のように、各ノードNは、実際のトポロジー状態を反映した再送回数を決定することができる。したがって、実際のデータパケット通信において、各ノードの単位で見たときのネットワークの接続状態が異なるにも関わらず、一律に同じ回数の再送処理が繰り替えられることを防ぐことができる。
【0031】
例えば、あるノードが最終宛先まで多くの経路を有している場合には、必要以上にひとつの経路へデータパケットの再送が繰りかえされることを防ぐことができる。つまり、データパケットの送信がうまくいかない場合には、早期に経路を切り替えることで、無線リソースの無駄な消費を低減する。
【0032】
一方、あるノードから最終宛先までの経路が少ない場合には、再送回数を多くすることができる。つまり、最終宛先へパケットが到達する確率を向上させることができる。
【0033】
なお、
図1の例では、アドホックネットワークNW1内に1台のゲートウェイGWを設ける構成としたが、一つのアドホックネットワークNW1内に複数台のゲートウェイGWを設ける構成としてもよい。
【0034】
また、
図1ではアドホックネットワークNW1は一つであるが、複数のアドホックネットワークを含む場合もある。複数のアドホックネットワークを含む場合、複数のアドホックネットワークにはそれぞれ少なくとも一つのゲートウェイGWが含まれる。
【0035】
次に、通信装置の一例であるノードNの機能的構成について説明する。
図2は、ノードNの機能ブロック図である。
【0036】
ノードNは、通信部10、制御部11、記憶部12を含む。通信部10は、他の装置と通信を行う処理部である。例えば、通信部10は、他のノードとパケットの送受信を行う。なお、本実施例においては、ハローパケット、データパケット、テストパケットなどのパケットがやり取りされる。
【0037】
制御部11は、各種処理を制御する処理部である。制御部11は、探索部21、決定部22、送信制御部23、転送制御部24を含む。ノードNが、経路探索処理を実行する場合には、探索部21が動作する。また、ノードNが、再送回数決定処理を実行する場合には、決定部22が動作する。さらに、ノードNが、データパケットの送信処理を実行する場合には、送信制御部23が動作する。
【0038】
一方、ノードNが、他のノードNにおける経路探索処理に基づくテストパケットを受信した場合には、ノードNは、テストパケットの転送処理を実行する。ノードNが、テストパケットの転送処理を実行する場合には、転送制御部24が動作する。
【0039】
探索部21は、経路を探索する処理部である。例えば、探索部21は、テストパケットを生成する。さらに、探索部21は、通信部10によるテストパケットの送信を制御する。そして、探索部21は、通信部10が受信した応答の数を計数する。なお、応答の数は、本実施例においては、探索された経路の本数である。
【0040】
決定部22は、自ノードから各最終宛先までのデータパケット送信における再送回数を、ネットワークのトポロジーに応じて決定する。例えば、決定部22は、探索部21によって探索された経路の本数に応じて、再送回数を決定する。
【0041】
送信制御部23は、データパケットの送信を制御する処理部である。例えば、送信制御部23は、データパケットを生成する。また、送信制御部23は、データパケットの送信失敗を検知した場合には、決定部22により決定された再送回数の範囲で、データパケットの再送処理を実行する。
【0042】
転送制御部24は、自ノードに対する隣接ノードへ、テストパケットを転送する処理部である。例えば、転送制御部24は、通信部10が、他のノードからテストパケットを受信した場合に、自ノードに対する隣接ノードに対して、順次テストパケットを送信する。
【0043】
記憶部12は、各種情報を記憶する記憶部である。記憶部12は、リンク情報31、ルーティング情報32、探索経路情報33、参照情報34、転送記録情報35を記憶する。そして、記憶部12は、さらにデータバッファ領域36を備える。さらに、記憶部12は、暗号通信用の鍵情報などを記憶しても良い。
【0044】
リンク情報31は、自ノードと直接通信が可能な隣接ノードの情報を含む。例えば、リンク情報31は、リンクテーブルとして記憶部12に記憶される。なお、リンク情報は、従来の手法により、制御部11によって生成される。
【0045】
図3は、リンクテーブルのデータ構成例を示す図である。リンクテーブルは、隣接ノードと、隣接ノードのアドレス情報とを対応付けて記憶する。隣接ノードは、自ノードと直接通信が可能なノードを識別する情報である。アドレス情報は、対応する隣接ノードのアドレスに関する情報である。なお、リンクテーブルは、さらに、各隣接ノードと自ノードとの間の通信強度に関する情報を有してもよい。
【0046】
ルーティング情報32は、データパケットを送信する際の経路に関する情報を含む。例えば、ルーティング情報32は、ルーティングテーブルとして記憶部12に記憶される。なお、ルーティング情報32は、従来の手法により、制御部11によって生成される。
【0047】
図4は、ルーティングテーブルのデータ構成例を示す図である。最終宛先(Global Destination)ごとに、GDと、GDのアドレス情報、次の宛先LD(Local Destination)、LDのアドレス情報を対応付けて記憶する。さらに、本実施例においては、経路本数に応じて決定された再送回数が、最終宛先ごとにルーティングテーブルに記憶される。
【0048】
GDは、最終宛先となる装置を識別する情報である。GDのアドレス情報は、最終宛先のアドレスに関する情報である。再送回数は、対応する最終宛先に対するデータパケット送信処理における再送処理の回数である。LDは、自ノードから最終宛先までへのデータパケットの送信経路における次の宛先を識別する情報である。LDのアドレス情報は、次の宛先のアドレスに関する情報である。
【0049】
なお、リンクテーブルにリストアップされた複数の隣接ノード各々と自ノードとの間の通信強度や、自ノードから最終宛先までのホップ数などに応じて、各隣接ノードを経由する経路の優先度が算出される。本実施例においては、優先度が高い隣接ノードを、LDとして、所定個数ルーティングテーブルのLDに設定する。ルーティングテーブルは、さらに、優先度を各々のLDに対応付けて記憶しても良い。
【0050】
探索経路情報33は、経路探索により探索された経路に関する情報を含む。例えば、探索経路情報33は、探索経路テーブルとして記憶部12に記憶される。探索経路情報33は、一時的に生成される情報であってもよい。
【0051】
図5AおよびBは、探索経路テーブルのデータ構成例を示す図である。探索経路テーブルは、探索された経路にかかる隣接ノードと、隣接ノードのアドレス情報とを対応付けて記憶する。
【0052】
隣接ノードは、テストパケットに対する最終宛先からの応答を受信した場合に、当該テストパケットの送信先となった隣接ノードの情報である。アドレス情報は、対応する隣接ノードのアドレスに関する情報である。
【0053】
図5Aは、
図1におけるノードNcが最終宛先「GW」への経路探索処理を実行した結果、生成された探索経路テーブルの例である。ノードNcが、ノードNaをLDとして送信したテストパケットに対する応答を受信した場合に、隣接ノードとして「Na」、アドレス情報として「MAC(a)」が記憶される。
【0054】
ここで、テストパケットは、テストパケットを一意に識別するフレームIDを含む。そして、応答は、いずれのテストパケットに対応する応答であるかが判別可能となるように、フレームIDを含む。したがって、ノードNcは、各フレームIDに対応するテストパケットは、いずれのLDに対して送信したテストパケットであるかを、別途管理することで、いずれの隣接ノードを経由した経路が探索されたかを把握することができる。
【0055】
さらに、
図5Aの例では、ノードNcは、ノードNdをLDとして送信したテストパケットに対する応答を受信したため、探索経路テーブルには、隣接ノードとして「Nd」、アドレス情報「MAC(d)」のレコードも生成される。このように、
図5Aの探索経路テーブルは、ノードNcは、アドホックネットワークNW1において、2つの経路を探索したことを示している。
【0056】
図5Bは、ノードNYが最終宛先「GW」への経路探索処理を実行した場合の探索経路テーブルである。
図5Bは、ノードNYは、ノードNdを経由する経路が探索されたことを示す。このように、
図5Bの探索経路テーブルは、ノードNYは、アドホックネットワークNW1において、1つの経路を探索したことを示している。
【0057】
次に、参照情報34は、探索された経路の本数に応じた再送回数を決定するための情報を含む。例えば、参照情報34は、参照テーブルとして記憶部12に記憶される。経路の本数が少ないほど、大きな再送回数となる。また、経路の本数が多いほど、小さな再送回数となる。
【0058】
なお、参照情報34は、テーブルの代わりに、探索された経路の本数と、再送回数との関数であってもよい。関数は、例えば、反比例、負の傾きを有する比例などの関係を表す関数である。
【0059】
図6は、参照テーブルのデータ構成例を示す図である。参照テーブルは、探索経路本数と再送回数を対応付けて記憶する。なお、探索経路本数と再送回数との関係は、サーバSの管理者により設定される。例えば、
図6の例では、探索経路本数が「1」のときには、再送回数は「5」が設定されている。
【0060】
例えば、探索経路本数と再送回数との関係は、アドホックネットワークNW
1の規模や、SLA(Service Level Agreement)に応じて、設定されるとしてもよい。SLAにて規定されたネットワークにおいて確保すべき経路の本数に対して、再送回数のデフォルト値が設定される。
【0061】
そして、確保すべき本数よりも、探索された本数が多い場合は、再送回数をデフォルト値よりも小さな値に設定する。一方、確保すべき本数よりも、一時的にでも探索された経路の本数が小さい場合には、再送回数は、デフォルト値よりも大きな値に設定する。
【0062】
転送記録情報35は、テストパケットの転送に関する情報を含む。例えば、転送記録情報35は、テストパケットごとに、隣接ノード各々へテストパケットを転送したか否かを把握するための情報である。転送記録情報35は、転送記録テーブルとして記憶部12に記憶される。なお、転送記録テーブルは、テストパケットにかかる転送処理の過程で一時的に記憶されるとしてもよい。
【0063】
図7は、転送記録テーブルのデータ構成例を示す図である。転送記録テーブルは、テストパケットのGS(Global Source)のアドレス情報、LS(Local Source)のアドレス情報、フレームID、隣接ノード、フラグを対応付けて記憶する。転送記録テーブルは、GSとフレームIDの組み合わせごとに生成される。
【0064】
GSのアドレス情報は、経路探索処理を実行しているノード、つまり、テストパケットを生成したノードのアドレスに関する情報である。LSのアドレス情報は、当該テストパケットの送信元であるノードのアドレスに関する情報である。つまり、LSは、当該テストパケットが、GSからGDまで転送される経路に含まれる2ノード間の通信において、送信元となるノードである。
【0065】
フレームIDは、GSにおいて設定される情報であって、テストパケットを識別する情報である。隣接ノードは、自ノードに対する隣接ノードを識別する情報である。自ノードのリンク情報に基づいて、隣接ノードの情報が、転送記録テーブルに設定される。
【0066】
なお、
図7の例では、隣接ノードの情報は、ルーティングテーブルおよびリンクテーブルの両方から取得されても良い。この場合は、ノードNは、ルーティングテーブルを参照し、テストパケットにおける最終宛先に対応する隣接ノード(LD)を、転送記録テーブルの隣接ノードに設定する。そして、ノードNは、ルーティングテーブルから取得した隣接ノードから優先的にテストパケットを転送する。
【0067】
フラグは、各隣接ノードに対して、テストパケットの転送を行ったか否かを示す情報である。例えば、フラグ「1」は、転送を行ったことを示す。フラグ「0」は、転送を行っていないことを示す。
【0068】
図7は、ノードNdの転送記録テーブルであって、ノードNcからフレームID「F1」であるテストパケットを受信した場合の例である。ノードNdは、当該テストパケットを受信すると、GSであるノードNcとフレームID「F1」に関する転送記録テーブルを生成する。
【0069】
ノードNdは、GSのアドレスである「MAC(c)」、LSのアドレスである「MAC(c)」、フレームID「F1」を、転送記録テーブルに記憶する。なお、ここでは、ノードNdはノードNcの隣接ノードであって、ノードNcは、GSでありLSでもあるとする。
【0070】
自ノードNdの隣接ノードがノードNc、Nb、NYである場合には、隣接ノードにNc,Nb,NYを記憶する。そして、はじめは、各レコードのフラグを「0」に設定する。なお、転送処理が実行されることで、フラグは「1」に更新される。
図7では、ノードNbに対して転送処理が実行されたことを示している。なお、LSであるノードNcについては、あらかじめ、フラグが「1」に設定される。つまり、テストパケットが返却される場合を除き、テストパケットの転送先からは、LSである隣接ノードは除外される。
【0071】
データバッファ領域36は、データパケットを一時的に記憶する領域である。送信制御部23が、再送処理を実行する際に、データバッファ領域36に記憶されたデータパケットが再送される。
【0072】
ここで、
図8を用いて、テストパケットのデータ構成を説明する。
図8は、テストパケットのデータ構成例である。なお、テストパケットは、探索部21により生成される。
【0073】
テストパケットは、ヘッダデータ格納部81と、ペイロードデータ格納部82とを有する。ヘッダデータ格納部81には、ヘッダデータが格納される。ペイロードデータ格納部82には、ペイロードデータが格納される。
【0074】
ヘッダデータは、LSのアドレス情報、LDのアドレス情報、GSのアドレス情報、GDのアドレス情報、パケットタイプをあらわす情報を含む。パケットタイプは、当該パケットの種別を示す情報であって、テストパケットの場合は、テストパケットであることを示す情報となる。
【0075】
探索部21は、GSに、テストパケットを生成した自ノードのアドレスを設定する。また、探索部21は、GDに、経路の終点となる最終宛先のアドレスを設定する。また、LSは、2つのノード間の通信における送信元のアドレスが設定され、LDには送信先のアドレスが設定される。LSおよびLDは、テストパケットの転送の過程で書き換えられる。
【0076】
テストパケットにおけるペイロードデータは、制約情報、カウントID、フレームID、送信時間を含む情報である。制約情報は、テストパケットを生成するノードNに対する隣接ノードの情報である。カウントIDは、何本目の経路探索にかかるテストパケットであるかを示す情報である。フレームIDは、テストパケットを一意に識別する情報である。送信時間は、GSがテストパケットを送信した時間に関する情報である。
【0077】
例えば、ノードNcが、ゲートウェイGWを最終宛先とするテストパケットを、隣接ノードNdに対して、10:00:00に送信するとする。この場合、ヘッダデータ格納部81には、「LSのアドレス=ノードNcのアドレス」、「LDのアドレス=ノードNdのアドレス」、「GSのアドレス=ノードNcのアドレス」、「GDのアドレス=ゲートウェイGWのアドレス」、「パケットタイプ=テストパケット」を含むヘッダデータが設定される。
【0078】
さらに、ノードNcの隣接ノードが、ノードNa、ノードNe、ノードNdであり、テストパケットが1本目の経路を探索するテストパケットであり、フレームIDとしてF1が生成されたとする。この場合、ペイロードデータ格納部82には、「制約情報=ノードNa、ノードNe、ノードNd」、「カウントID=1」、「フレームID=F1」、「送信時刻=10:00:00」を含むペイロードデータが設定される。
【0079】
ここで、制約情報について、説明する。テストパケットを受信したノードは、制約情報を参照し、自ノードの隣接ノードのうち、制約情報に設定されたノード以外のノードへ、テストパケットを転送する。
【0080】
図1の例では、ノードNcからノードNeがテストパケットを受信した場合に、制約情報には、ノードNcの隣接ノードであるノードNa、ノードNd、ノードNeの情報が含まれている。したがって、ノードNeは、隣接ノードNaおよびNcのうち、制約情報に含まれるノードNaへはテストパケットを転送しない。
【0081】
ここで、ノードNeは、隣接ノードNcへの転送を検討することになるが、ノードNcはLSであって、転送記録テーブルにおけるフラグがあらかじめ「1」に設定されている。したがって、この場合は、ノードNcは、転送先となるノードがないとして、LSであるノードNcへテストパケットの返却を行う。
【0082】
したがって、本実施例に開示の経路探索によれば、
図1におけるノードNeを経由するノードNcからGWまでの経路は、経路探索処理によって探索されない。
【0083】
次に、ノードNにおける再送回数決定の処理を説明する。
図9は、再送回数決定処理のフローチャートである。
【0084】
決定部22は、再送回数決定処理を開始するか否かを判定する(Op.1)。例えば、決定部22は、所定時間が経過したか否かをもって、開始を判断する。また、自ノードと直接通信可能なノードに、新たなノードの存在を検知した場合や、ルーティングテーブルの更新を検知した場合に、決定部22は、再送回数決定処理の開始を判断する。
【0085】
再送回数決定処理を開始しないと判定した場合は(Op.1No)、決定部22は、開始判定まで待機する。一方、再送回数決定処理を開始すると判定した場合に(Op.1Yes)、決定部22は、最終宛先GDごとのチェックフラグをクリアする(Op.3)。
【0086】
チェックフラグは、ルーティングテーブルに記憶された最終宛先GDごとに設定されるフラグであって、再送回数を決定したか否かを示すフラグである。
図4のルーティングテーブルは、各GDに、チェックフラグを対応付けて記憶しても良い。さらに、決定部22は、通信頻度が高いGDや、重要なGDに限定して、チェックフラグをクリアすることで、再送回数決定処理の対象となるGDを限定することもできる。
【0087】
次に、決定部22は、未処理のGDのエントリを、ルーティングテーブルから取得する(Op.5)。つぎに、決定部22は、探索部21に対して経路探索処理を依頼する。なお、経路探索処理の依頼には、再送回数決定処理の処理対象となっているGDの情報が含まれる。
【0088】
そして、探索部21は、経路探索処理を実行する(Op.7)。詳細は後述する。探索部21による経路探索処理が終了すると、決定部22は、探索された経路本数に基づいて、処理対象のGDへのデータパケットの送信処理における再送回数を決定する(Op.9)。例えば、決定部22は、参照テーブルを参照することで、再送回数を決定する。なお、決定された再送回数は、ルーティングテーブルに記憶される。
【0089】
そして、決定部22は、処理対象のGDに対応するチェックフラグを、処理済を示す値に設定する(Op.11)。そして、決定部22は、Op.3においてチェックフラグをクリアしたGDのうち、未処理のGDが存在するかを判定する(Op.13)。
【0090】
未処理のGDが存在する場合は(Op.13Yes)、未処理のGDについて、決定部22はOp.5を実行する。一方、未処理のGDが残っていない場合は(Op.13NO)、決定部22は、再送回数決定処理を終了する。
【0091】
次に、経路探索処理について説明する。
図10は、経路探索処理のフローチャートである。
【0092】
探索部21は、決定部22から経路探索処理の依頼をうけると、再送回数決定処理の処理対象となっているGDまでの経路本数(i)を0に設定する(Op.21)。そして、探索部21は、リンクテーブルを参照して、自ノードに対する隣接ノードが存在するか否かを判定する(Op.23)。なお、隣接ノードの存在の判定は、リンクテーブルの変わりにルーティングテーブルを参照して行われても良い。
【0093】
隣接ノードが存在しない場合は(Op.23No)、探索部21は、Op.37へ処理を進める。一方、隣接ノードが存在する場合は(Op.23Yes)、探索部21は、テストパケットを生成する(Op.25)。
【0094】
また、再送回数決定処理と同様に、経路探索処理についても、探索部21は、リンクテーブルに登録された隣接ノードごとにチェックフラグを管理する。そして、探索部21は、チェックフラグが未処理であることを示す隣接ノードを、順次処理対象とする。
【0095】
Op.25において、探索部21は、カウントIDを生成する。カウントIDは、経路本数(i)に1を加算した値となる。さらに、探索部21は、テストパケットごとに一意のフレームIDもあわせて生成する。そして、探索部21は、リンクテーブルに登録された隣接ノードを含む制約情報を生成する。そして、生成したこれらの情報を含むテストパケットが生成される。
【0096】
また、探索部21は、ヘッダデータ格納部81に、GDのアドレスとして、再送回数決定処理の処理対象となっているGDのアドレスを設定する。また、探索部21は、GSのアドレスおよびLSのアドレスに、自ノードのアドレスを設定する。さらに、探索部21は、LDのアドレスに、経路探索処理の処理対象の隣接ノードのアドレスを設定する。
【0097】
次に、通信部10は、探索部21の制御の下、テストパケットをLDに対して送信する(Op.27)。そして、探索部21は、通信部10がGDから応答を受信したか否かを判定する(Op.29)。
【0098】
GDから応答を受信した場合は(Op.29Yes)、探索部21は、経路本数(i)をカウントアップする(Op.33)。つまり、探索部21は、経路本数(i)に1を加算する。そして、処理をOp.35へ進める。
【0099】
一方、応答を受信していない場合は(Op.29No)、探索部21は、テストパケットを送信してからの経過時間が、閾値以上であるかを判定する(Op.31)。すなわち、探索部21は、タイムアウトしたかを判定する。
【0100】
タイムアウトしていない場合は(Op.31No)、探索部21は処理Op.29を再び実行する。タイムアウトした場合(Op.31Yes)、または経路本数をカウントアップした場合(Op.33)は、探索部21は、処理対象の隣接ノードのチェックフラグを処理済へ更新するとともに、未処理の隣接ノードが存在するか否かを判定する(Op.35)。
【0101】
未処理の隣接ノードが存在する場合は(Op.35Yes)、探索部21は、Op.25を実行する。一方、未処理の隣接ノードが存在しない場合は(Op.35No)、探索部21は、決定部22に対して、経路本数を通知する(Op.37)。
【0102】
以上の処理によって、自ノードに対する隣接ノード各々を経由する最終宛先までの経路のうち、最終宛先から応答があった経路の本数に基づいて、再送回数が決定される。つまり、各ノードは、アドホックネットワークNW1のトポロジー状態を反映された再送回数を設定することができる。
【0103】
なお、各ノードは、全体のネットワークのトポロジーを把握することはないが、上記処理によって、自ノードから最終宛先までの経路の有無、さらには、経路の冗長性を把握することができる。したがって、経路の有無や、経路の冗長性に応じて再送回数を決定することで、トポロジー状態を反映した再送回数を自立的に決定することができる。
【0104】
ここで、ノードNにおけるデータパケットの送信処理について、説明する。送信制御部23は、ルーティングテーブルから取得した隣接ノードに対して、データパケットを送信する。なお、送信制御部23は、データバッファ領域36に、データパケットを一時的に格納する。そして、送信制御部23がデータパケットの送信失敗を検知した場合、データパケットの最終宛先に対応する再送回数を、ルーティングテーブルから取得する。
【0105】
そして、送信制御部23は、通信部10を制御することで、再送回数まで、データパケットの再送処理を繰り返す。再送回数の上限まで再送処理が繰り返されても、データパケットの送信が成功しない場合は、送信制御部23は、ルーティングテーブルを参照し、新たな隣接ノードをLDとするデータパケットの送信を、通信部10へ指示する。
【0106】
以上のように、本実施例により決定された再送回数に基づく再送処理によって、ネットワークの負荷軽減およびデータパケットの到達率の向上が期待できる。探索された経路が多い場合は、ある隣接ノードに対するデータパケットの再送回数をより小さく設定することで、データパケットの送信が失敗した場合、他の隣接ノードに対するデータパケットの送信に、早い段階で切り替えることができる。
【0107】
よって、ある隣接ノードを経由する経路に、なんらかの電波障害が発生したとしても、早い段階で、他の経路に切り替えて、データパケットの送信を試みることができる。例えば、デフォルト値よりも小さな値に再送回数を設定する事で、各ノードは、より早い段階での経路の切り替えを選択できる。
【0108】
一方、確認された経路が少ない場合は、ある隣接ノードに対するデータパケットの再送回数を大きく設定することで、データパケットが最終宛先へ到達する可能性を向上させることができる。例えば、デフォルト値よりも大きな値に再送回数を設定する事で、各ノードは、データパケットの到達率向上を図ることができる。
【0109】
次に、ノードNがテストパケットを転送する処理について説明する。
図11は、テストパケットの転送処理のフローチャートである。
【0110】
制御部11は、通信部10がテストパケットを受信したか否かを判定する(Op.41)。つまり、制御部11は、パケットタイプがテストパケットであることを示すパケットを受信したかを判定する。そして、制御部11は、テストパケットを受信したことを判定した場合には(Op.41Yes)、転送制御部24に転送処理の開始を依頼する。
【0111】
そして、転送制御部24は、受信したテストパケットにかかる転送処理が、初回であるか否かを判定する(Op.43)。つまり、転送制御部24は、受信したテストパケットに含まれるGSおよびフレームIDを有する転送記録テーブルが存在するか否かを判定する。
【0112】
受信したテストパケットにかかる転送処理が初回である場合には(Op.43Yes)、転送制御部24は、リンクテーブルやルーティングテーブルを参照し、転送記録テーブルを生成する(Op.45)。なお、転送記録テーブルにおけるフラグは、テストパケットを送信(転送)していないことを示す「0」に設定される。ただし、転送制御部24は、LSである隣接ノードについては、フラグを「1」に設定する。
【0113】
そして、転送制御部24は、転送記録テーブルを参照し、テストパケットを未送信であって、かつ制約情報に規定されたノード以外の隣接ノードがあるかを判定する(Op.47)。つまり、転送制御部24は、フラグが「0」であって、制約情報に規定されたノード以外の隣接ノードが、転送記録テーブルに存在するかを判定する。
【0114】
該当する隣接ノードがある場合には(Op.47Yes)、転送制御部24の制御の下、通信部10は、テストパケットを該当する隣接ノードへ転送する(Op.49)。なお、転送されるテストパケットは、LSのアドレスとして自ノードのアドレスを、LDのアドレスとして該当する隣接ノードのアドレスを含む。ここで、転送制御部24は、転送記録テーブルのフラグを、更新する。つまり、転送制御部24は、転送先の隣接ノードに対応するフラグを「1」に設定する。
【0115】
一方、該当する隣接ノードがない場合は(Op.47No)、転送処理部24の制御の下、通信部10は、受信したテストパケットに含まれるLSへ、テストパケットを転送する(Op.51)。つまり、通信部10は、転送先となるノードが存在しない場合は、テストパケットを、LSへ返却する。
【0116】
ここで、Op.41において受信したテストパケットが、他のノードにおける転送処理のOp.51によって返却されたテストパケットである場合について説明する。返却されたテストパケットに含まれるGSおよびフレームIDに対応する転送記録テーブルは、過去に自ノードから他ノードへテストパケットを転送した時点で作成されていることになる。したがって、Op.43の判定では否定判定がなされる。この場合は、Op.47へ処理を進める事で、他の隣接ノードへテストパケットを転送する。
【0117】
以上の処理によって、経路の本数を把握するためのテストパケットは、最終宛先へ向けて転送される。また、本実施例によれば、制約情報に基づいて、GSである再送回数決定処理を実行しているノードに対する隣接ノードへは、テストパケットは転送されないように制御することができる。
【0118】
図12は、通信装置100のハードウェア構成例である。なお、実施例におけるノードNは、通信装置100の一例である。通信装置100は、CPU(Central Processing Unit)101と、RAM(Random Access Memory)102と、フラッシュメモリ103と、インターフェース(I/F)104とを備える。さらに、通信装置100は、暗号化回路105と、センサ106を備えても良い。CPU101乃至センサ106は、バス107によってそれぞれ接続されている。
【0119】
CPU101は、通信装置100全体の制御を司る。CPU101は、RAM102にロードされたプログラムを実行することにより、制御部11として機能する。
【0120】
RAM102は、CPU101のワークエリアとして使用される。フラッシュメモリ103は、プログラムや、各種テーブル、センサが検出した情報、暗号鍵などの鍵情報を記憶する。なお、フラッシュメモリ103は、記憶装置15の一例である。プログラムには、例えば、フローチャートに示した通信装置100における各処理を実行させる為のプログラムが含まれる。また、一時的に生成されるテーブルや情報は、RAM102に記憶されてもよい。
【0121】
I/F104は、マルチホップ通信によりパケットを送受信する。I/F104は、通信部10として機能する。I/F104は、例えば、ネットワークカード(NIC)やネットワークアダプタなどの通信制御回路である。
【0122】
暗号化回路105は、データを暗号化する場合に暗号鍵によりデータを暗号化する回路である。例えば、パケットを暗号化して転送する場合は、暗号化回路105が機能する。暗号化をソフトウェアで実行する場合は、例えば、暗号化回路105に相当するプログラムをフラッシュメモリ103に記憶させておきCPU101がそれを実行することで、暗号化回路105は不要となる。
【0123】
センサ106は、センサ106固有のデータを検出する。たとえば、温度、湿度、水位、降水量、風量、音量、電力使用量、時間、時刻、加速度など、測定対象にあったデータを検出する。これら検出されたデータが、データパケットとして、例えばゲートウェイへ送られる。そして、サーバSは,ゲートウェイGW経由で収集したデータを収集および解析する。
【0124】
なお、
図12では、通信装置100がアドホックネットワークを構成するノードNである例を説明したが、通信装置100は、汎用コンピュータであってもよい。つまり、通信装置100は、CPU(Central Processing Unit)、ROM(Read Only Memory),RAM(Random Access Memory),通信装置、HDD(Hard Disk Drive)、入力装置、表示装置、媒体読取装置などを有するコンピュータであってもよい。なお、各部は、バスを介して相互に接続されている。
【0125】
以下に、変形例を示す。
(変形例1)
経路探索処理においては、テストパケットを利用する以外にも、データパケットの転送に対して、最終宛先から応答を受信した場合に、当該データパケットの送信先であった隣接ノードを経由する経路が確認されたとみなしてもよい。つまり、データパケットに応答を返却する旨の設定を行った場合、最終宛先は、データパケットを受信したことを示す応答を送信する。ノードNは、各データパケットのLDとなった隣接ノードを経由してゲートウェイにパケットを送信することができるということを、データパケットの転送に対する応答の受信によって確認することができる。
【0126】
(変形例2)
ある最終宛先に対する再送回数は、データパケットの重要度に応じて、設定されてもよい。例えば、重要なデータを含むデータパケットの送信処理においては、再送回数を増加させる制御を行っても良い。例えば、決定部22は、重要度に応じた参照情報を参照し、重要度に応じた再送回数を設定する。
【0127】
(変形例3)
経路探索処理を実行した結果、経路本数が規定の本数よりも少ない場合、ノードNは、ゲートウェイGWに対して、警告を行う警告パケットを送信しても良い。ノードNは、最終宛先までの経路本数が少なく、後のデータ通信において障害が発生する可能性を、警告することができる。例えば、サーバSの管理者は警告に基づき、電波強度の調節やノードの増加などを検討することができる。
【0128】
(変形例4)
上記実施例では、ルーティングテーブルには、あらかじめ規定された数の隣接ノードがLDとして格納されるとしたが、これに限られない。例えば、探索された経路本数に応じて、ルーティングテーブルに格納するLDの個数を変動させてもよい。
【0129】
例えば、ルーティングテーブルは、通常3つのLDを記憶するが、探索された経路本数が、3を超える場合は、探索された経路本数だけ、LDを記憶しても良い。さらに、探索された経路を構成する隣接ノードを、優先的にルーティングテーブルのLDに設定してもよい。