まず、本明細書での用語について説明をする。
「フレーム」とは、プロトコルが扱うデータ単位のことを指す。「フレーム」には、例えば、「HELLOフレーム」、「データフレーム」が含まれるが、これらに限定はされない。
「HELLOフレーム」とは、制御情報を通信するための制御フレームの一種であり、ノード装置が、別のノード装置に対して互いの存在・状態の確認のために送出する特別なフレームのことを指す。なお、HELLOフレームを単に、HELLOと称する場合もある。
「データフレーム」とは、ネットワークが(スタートノードからゴールノードへと)伝送しようとするデータのことを指す。なお当然のことながらノード装置は、「HELLOフレーム」と「データフレーム」を識別するための適切な手段を有することができる。
「Local Destination(LD)」とは、或るノード装置を主体として観たときに、次にフレームを渡すべき隣接ノード装置を表すあて先ノードIDのことを指す。なお本明細書ではLDのことを、「ローカル宛先アドレス」と称することもある。
「Local Source(LS)」とは、LDへフレームを送るその直接の送り元となるノード装置を表したノードIDのことを指す。なお本明細書ではLSのことを、「ローカル差出アドレス」と称することもある。なお、着目しているノードを自ノードともいう。
「Global Destination(GD)」とは、データフレームのネットワークに跨った一連の伝播に関する最終的なあて先となるノードIDのことを指す。なお本明細書ではGDのことを、「グローバル宛先アドレス」と称することもある。
「Global Source(GS)」とは、データフレームのネットワークに跨った一連の伝播に関する最初の送り元であるノードIDのことを指す。なお本明細書ではGSのことを、「グローバル差出アドレス」と称することもある。
上述の通り、MTUが短い特小無線において、通常用いられる任意のアドレスを使用してデータ送信する方式では、上位アプリケーションで使用できるペイロード長が短くなる。そのため、大きなデータを送信する場合、複数に分割して送信しなければならず、網のトラフィックが増加する。また、上位アプリケーションで使用できるペイロード領域をより多く確保できるよう、48ビットのMACアドレスの替わりに、16ビット等のビットサイズのショートアドレスを使用することで、網のトラフィックを低減することが考えられる。ここで、アプリケーションとは、ノード内のアプリケーション層を指している。アプリケーションに対するGWの検出の通知情報は、End to End(GW(もしくはその先のサーバ)とノードA)間でノード情報やセンサ情報をやりとりするために必要な情報である。
以下では、まず、上述したように、通常用いられる任意のアドレスをショートアドレスに置き換えた場合のノード間及びノード−GW間(リンク間)のデータフレームの送信を、図1−図4を用いて説明する。
図1は、通常用いられる任意のアドレスを用いてノード間でのHELLOフレームの受け渡しによる経路構築が完了し、各ノードがアプリケーションに対して、GWの検出を通知した状態を示す。図1では、ノード間でのHELLOフレームの受け渡しによる経路構築が完了しているので、通常用いられる任意のアドレスを用いて、通常の手順にてデータフレームの送信が可能である。しかしながら、送信するデータフレームに対して、より長いペイロード長を確保するために、図1−図4では、ショートアドレスを用いることを想定する。各ノードに割り当てられるショートアドレスは、アドホックネットワークにおいて一意のアドレスであり、GW等の通信装置により管理されている。GW等の通信装置は、各ノードからのアドレス要求により、ショートアドレスを各ノードに送信する。
ノードが多数ある場合、それらのノードがアドレス要求をGWに対して一斉に行うとネットワークが輻輳するため、各ノードが自律的にアドレス要求を分散して行っている。その場合、図2で説明するように、ノードAよりノードB,Cに先にショートアドレスが割り振られることがある。
図2に示すように、ノードB,CがGWに対してアドレス要求/応答を行うと、GWからノードB,Cへショートアドレスが割り当てられる。その後、ノードCがショートアドレスを使用してGWに対してデータ送信を行う。
このとき、ノードAは未だショートアドレスを割り当てられていない状態である。
そのため、図3に示すように、ノードCからノードBに送信されたデータ(i)をノードBがGW宛に送信しようとしても、GW宛のLDのうち優先順位の高いノードAのショートアドレスを知らないため、ノードBはノードAに対してデータを送信できない。この場合、ノードBは、ノードAに送信できなかったため、また、他のノードに送信する経路がないため、及び図4に示すように、送信元であるノードCへデータフレーム(ii)を戻す。
この様に経路途中のノードAがショートアドレスを保持していないことを、データ送信元であるノードCは検知できないため、ショートアドレスによる経路構築ができていないにも関わらず、ノードCはデータ送信を行ってしまう。その結果、ノードCはネットワーク内に無駄なフレームを送信してしまう。
このように、ショートアドレスの割り振られる順番がランダムのため、自身のショートアドレスを割り振られた直後にデータ送信を行っても、経路途中のノードにショートアドレスが割り振られていない場合がある。この場合、最終宛先(GW)までフレームが到達できず、ネットワーク内に無駄なトラフィックが発生してしまう。
そこで、本実施形態では、自ノードは、隣接ノードとサーバ間での経路の構築が完了した旨の情報と、自身のショートアドレスを取得した場合に、ショートアドレスを用いてデータフレームを送信することにより、網内での無駄なトラフィックの発生を防止する。
そこで、以下に、本実施形態について詳述する。
図5は、本実施形態における無線通信システムの一例を示す。無線通信システム8は、サーバ装置7、複数のノード1,1a,・・・を含む。ノード装置は、隣接するノード装置間で無線通信することにより無線通信ネットワークを構築する。サーバ装置7は、無線通信ネットワークにおいて複数のノード装置1,1aのそれぞれを特定する所定サイズのアドレスを、複数のノード装置のそれぞれに送信する。サーバ装置7の一例として、GW12が挙げられる。
ノード装置1は、記憶部2、第1取得部3、通知部4、送信部5を含む。ノード装置1の一例として、ノード11が挙げられる。
記憶部2は、自ノードと隣接する隣接ノード装置から取得された隣接ノード装置についての構築完了判定情報を記憶する。構築完了判定情報は、目的とする送信先と、隣接ノード装置と、の間の経路であって、無線通信ネットワークにおいてノード装置を特定する所定サイズのアドレスによる経路が構築されたか否かを示す。記憶部2の一例としては、ルーティングテーブル35を格納する記憶部34が挙げられる。
第1取得部3は、サーバ装置7から、自ノード装置を特定する所定サイズのアドレスである第1アドレスを取得する。第1取得部3の一例としては、アドレス要求/応答処理27を行う制御部21が挙げられる。
通知部4は、隣接ノード装置についての構築完了判定情報が目的とする送信先と隣接ノード装置との間の所定サイズのアドレスによる経路が構築されたことを示すと共に、第1アドレスを取得した場合、次の処理を行う。すなわち、通知部4は、隣接する1つまたは複数のノード装置に、目的とする送信先と自ノード装置との間の所定サイズのアドレスによる経路が構築されたことを示す自ノード装置についての構築完了判定情報を送信する。通知部の一例としては、HELLO制御処理22を行う制御部21が挙げられる。
送信部5は、自ノード装置についての構築完了判定情報を送信した場合、第1アドレスを用いて、データフレームを送信する。送信部5の一例としては、ルーティング処理26を行う制御部21が挙げられる。
ノード装置1は、さらに、第2取得部6を含む。第2取得部6は、隣接ノード装置から、隣接ノード装置を特定する所定サイズのアドレスである第2アドレスを取得する。第2取得部6の一例としては、経路構築処理25を行う制御部21が挙げられる。このとき、送信部5は、データフレームのヘッダに含まれる、データフレームを次の送信先へ送信するために用いられる送信元フィールド及び送信先フィールドにそれぞれ、第1アドレス及び第2アドレスを設定する。
送信部5は、記憶部2を参照して、目的とする送信先との所定サイズのアドレスによる経路が構築された隣接ノード装置のうちのいずれかの隣接ノード装置を選択する。送信部5は、第1アドレス及び第2アドレスを用いて、選択した隣接ノード装置にデータフレームを送信する。
このように構成することにより、所定のサイズのアドレスを用いたデータフレームによるデータ送信の際の効率的な経路を構築して、データ送信を行うことができる。特に、所定のサイズのアドレスにショートアドレスを用いた場合、無線通信ネットワークで一回に送信できる最大のデータサイズに対するペイロードサイズの割合を高めたデータフレームによるデータ送信の際の効率的な経路を構築して、データ送信を行うことができる。
また、ノード装置は、自ノードのショートアドレスを取得し、隣接するノードから受信したHELLOフレームの経路構築フラグがONの場合、GW(GD)から自ノードまでのショートアドレスによる経路が構築されたと判断する。この場合、ノード装置は、HELLOフレームに経路構築フラグ=ONを付与してHELLOフレームを送信する。これをアドホックネットワーク全体に波及させることにより、データ送信の際に用いるショートアドレスによる経路を構築することができる。
図6は、本実施形態におけるアドホックネットワーク構成の一例を示す。インターネット13には、サーバ14、ゲートウェイ装置(GW)12a,12bが接続されている。GW12a,12bは、ネットワーク間の接続を中継する装置であり、通信プロトコルの異なるデータを相互に変換し、データを中継する。図1では、例えば、GWは、L3で用いられている通信プロトコルとアドホックプロトコルとを相互に変換して、通信を可能にする。なお、GW12a,12bを総称して、GW12と称する。GW12は、アドホックネットワークとのインターフェースには、無線アドホック通信技術を搭載した通信デバイスが用いられている。
ノード装置(以下、ノードという)11a〜11iは、無線アドホック通信技術を搭載した通信端末である。ここで、ノード11a〜11iを総称して、ノード11と称する。各ノード11では、隣接するノードとの間で経路情報やノード間リンクの通信品質情報等のノード情報を含むHELLOフレームの送受信を定期的に行う。Helloフレームとは、本実施形態にかかるノード11またはGW12が、別のノード装置11またはGW12に対して互いの存在・状態の確認のために送出するフレームのことを指す。Helloフレームは、ノード間、及びノード−GWとの間で形成される無線アドホックネットワークにおいて、送受信される。これにより、ノード11は、HELLOフレームの情報に応じて各経路の通信品質を計算し、その計算結果に基づいて、最終宛先までの複数の経路の構築及び最適な経路の確定を行う。
まず、GW12は、HELLOフレームの送信タイミングが到来した場合、自身が保持するノード情報(経路情報/ノード間リンクの通信品質情報)を含むHELLOフレームをブロードキャスト送信する。GW12に隣接するノード11は、GW12からのHELLOフレームを受信する。
ノード(例えば、ノード11a)は、GW12からのHELLOフレームを受信すると、そのノードが保持する経路情報テーブル(ルーティングテーブル)にGW12を登録する。それと共に、ノード(例えば、ノード11a)は、GW12からのHELLOフレームに含まれたノード情報であってGW12が保持しているそのノード情報を使用して、経路品質やノード間リンクの通信品質を計算する。ノード(例えば、ノード11a)は、その計算結果を経路情報テーブル(ルーティングテーブル)やリンク情報テーブル(リンクテーブル)に登録する。尚、ノード11は、GW12から受信したHELLOフレームの再ブロードキャスト(フラッディング)を行わない。
次に、各ノード(例えば、ノード11a)において、HELLOフレームの送信タイミングが到来した場合、そのノードが保持するノード情報を含むHELLOフレームをブロードキャスト送信する。ノードが送信するHELLOフレームには、GW12や他のノードについての情報が含まれる。
ノード(例えば、ノード11b)は、ノード(例えば、11a)からのHELLOフレームを受信して、ノード11aをルーティングテーブルに登録する。それと共に、ノード(例えば、ノード11b)は、GW宛の経路はノードa経由であること、その経路品質/リンク品質を計算し、その計算結果をルーティングテーブル/リンクテーブルに登録する。
他のノードについても、ノード11a同様に、それぞれのHELLOフレームの送信タイミングが到来したら、HELLOフレームをブロードキャスト送信する。各ノードでは、GW宛ての複数の経路が構築され、各経路での経路品質/リンク品質情報により、最終宛先(GW)までの最適経路が確定される。
このように、各ノードがHELLOフレームを交換することによりノード間で経路情報・品質情報が伝搬され、各ノードでは最終宛先までの経路が複数構築される。
図7は、本実施形態におけるHELLOフレームのフォーマットを示す。Helloフレームは、通信プロトコルに基づくヘッダと、データ部分を示すペイロードのデータ項目を含む。Helloフレームのヘッダは、「LD」、「LS」、「ショートアドレス」、「GD」、「経路構築フラグ」のフィールドを含む。
フィールド「LD」には、ローカル宛先アドレスが設定される。フィールド「LS」には、ローカル差し出しアドレス(LS)が設定される。「GD」には、グローバル宛先アドレスが設定される。ノードは、HELLOフレームのLDに、隣接するすべてのノード装置へのブロードキャストを表す特殊な値FFという所定の値を設定し、LSに自ノードのアドレスを設定する。
なお、ここでの「ブロードキャスト」は「隣接するすべてのノード装置へのブロードキャスト」であり、「ネットワーク全体へのフラッディング」ではないので注意されたい。
「ショートアドレス」は、例えば、16ビットのような、通常用いる任意のアドレスよりも小さいサイズのアドレスであり、アドホックネットワークにおいて、ノードを一意に識別する情報である。HELLOフレームを送信するノードにショートアドレスがGWより割り当てられている場合、そのHELLOフレームの「ショートアドレス」には、その割り当てられたショートアドレスが設定される。HELLOフレームを送信するノードにショートアドレスが割り当てられていない場合、そのHELLOフレームの「ショートアドレス」には、“0”(無効値)が設定される。なお、本実施形態では、ショートアドレスとして、16ビットのサイズを用いるが、これに限定されず、たとえば、アドホックネットワークのノード数に応じて、8ビットや32ビット等でもよい。
「経路構築フラグ」は、自ノードに隣接しているノードまでショートアドレスを用いた経路が構築していることを示すフラグである。経路構築フラグ=OFFは、隣接ノードまでショートアドレスを用いた経路が構築されていないことを示し、経路構築フラグ=ONは、隣接ノードまでショートアドレスを用いた経路が構築されていることを示す。
図8は、本実施形態におけるフレーム送受信に関する通信装置の機能ブロック図の一例である。通信装置20は、アドホックネットワークを構成する、無線アドホック通信技術を搭載した装置である。本実施形態では、通信装置20は、ノード11であるが、GW12において、アドホックネットワークとのインターフェースにも、通信装置20が用いられていてもよい。なお、以下では、通信装置20はノード装置であるとして説明する。
通信装置20は、制御部21、無線通信インターフェース(以下、「無線I/F」と称する)31、記憶部34を含む。記憶部34には、ルーティングテーブル35、リンクテーブル等が格納されている。また、記憶部34には、GW12より割り当てられたショートアドレスが格納される。
無線I/F31は、受信部32及び送信部33を含み、他のノードとの通信を行うための処理を行う。受信部32は、ノード11に送信されてきたフレームの信号を受信し、受信した信号をフレーム受信処理部24に出力する。
制御部21は、記憶部34等に格納したプログラムを読み出し、HELLO制御処理22、フレーム送信処理23、フレーム受信処理24、経路構築処理25、ルーティング処理26、アドレス要求/応答処理27を行う。
フレーム受信処理24は、受信部32から入力された信号を、ルーティング処理26及び経路構築処理25で処理できるフレームに変換する。フレーム受信処理24の変換で得られるフレームには、経路情報フレーム、経路情報フレーム以外の制御フレーム、ユーザデータを格納したデータフレームなどが含まれる。フレーム受信処理24は、得られたフレームをルーティング処理26及び経路構築処理25へ出力する。
アドレス要求/応答処理27は、GW12に対して自ノードに割り当てられるネットワークアドレス(単に「アドレス」と称する。)を要求するリクエストフレームを生成し、フレーム送信処理23を介して、そのリクエストフレームを送信する。ここで、アドレスとしては、通常用いられる任意のアドレス、ショートアドレスが挙げられる。そして、アドレス要求/応答処理27は、そのリクエストフレームに対する応答フレームをGW12から受信すると、応答フレームからアドレスを取得し、ルーティング処理26を介して、記憶部34に格納する。
アプリケーションプログラム(以下、「アプリケーション」と称する。)28は、OSI(Open Systems Interconnection)参照モデルでの第7層(アプリケーション層)において通信サービスを提供するプログラムである。アプリケーション28は、ノード11宛のフレームがルーティング処理26から入力されると、入力されたフレームを処理する。また、アプリケーション28は、アプリケーションプログラムの処理によって他のノード11に送信するデータフレームを生成することもできる。アプリケーション28は、生成したデータフレームをルーティング処理26に出力する。
ルーティング処理26は、入力されたフレームを、自ノード宛てのものか、ブロードキャスト送信のものかの判断を行い、自ノード宛てのものである場合には、フレーム振り分けの処理を行う。ルーティング処理26は、入力されたフレームに含まれているアドホックヘッダに基づいて、受信したHELLOフレームの送信元をルーティングテーブル35に登録する。ルーティング処理26は、ルーティングテーブル35やリンクテーブルに登録された情報を含むフレームを送信するように送信部33を制御する。
また、自ノードが自ノードのショートアドレスを受信すると共に、隣接するノードから、経路構築フラグにONが設定されたHELLOフレームを受信した場合、ルーティング処理26は、次の処理を行う。すなわち、ルーティング処理26は、データフレームのLSに自身のショートアドレスを設定し、LDに、ルーティングテーブルから検索されたGDに対応するLDのうち、経路構築フラグがONとなっている転送先のショートアドレスを設定する。ルーティング処理26は、そのショートアドレスを設定したデータフレームを送信するように送信部33を制御する。
経路構築処理25は、受信したHELLOフレームに含まれているノード情報を使用して経路品質やノード間リンクの通信品質を計算し、結果をルーティングテーブル35やリンクテーブルに登録する。また、経路構築処理25は、受信したHELLOフレームに隣接するノードのショートアドレスが設定されている場合、ルーティングテーブル35にそのショートアドレスを登録する。
HELLO制御処理22は、ルーティングテーブル35に登録された情報を用いて、HELLOフレームを生成し、フレーム送信処理部23を介して、HELLOフレームをブロードキャスト送信する。HELLO制御処理22は、ルーティングテーブル35に含まれている経路に関する情報を含むHELLOフレームを生成することができる。
また、自ノードが自ノードのショートアドレスを受信すると共に、隣接するノードから、経路構築フラグにONが設定されたHELLOフレームを受信した場合、HELLO制御処理22は、次の処理を行う。すなわち、HELLO制御処理22は、経路構築フラグにONが設定されたHELLOフレームを生成して、フレーム送信処理部23を介して、HELLOフレームをブロードキャスト送信する。これにより、自ノードは、GDから自ノードまでのショートアドレスによる経路の構築が完了したことを、隣接するノードに通知することができる。
フレーム送信処理部23は、送信部33を制御して、フレームの送信を行う。
図9は、本実施形態におけるルーティングテーブルの一例を示す。各ノードは、最終的な宛先ノード(GD)単位で管理される隣接ノードに対するルーティング情報を保持するルーティングテーブルを有する。
ルーティングテーブル35は、「GD」、「LD」、「経路構築フラグ」、「ショートアドレス」のデータ項目を含む。「GD」は、グローバル宛先アドレスを示す。「LD」は、ローカル宛先アドレスを示す。LDには、GD単位で、ローカル宛先ノードまでの複数経路のうち、受信強度(または通信品質)が良い順に所定の数(例えば、3つ)の経路(第1候補(LD1)、第2候補(LD2)、第3候補(LD3))が記憶されている。
「経路構築フラグ」は、GDから自ノードに隣接しているノード(LD)までショートアドレスを用いた経路が構築していることを示すフラグである。経路構築フラグ=OFFは、GDから隣接ノード(LD)までショートアドレスを用いた経路が構築されていないことを示す。経路構築フラグ=ONは、GDから隣接ノード(LD)までショートアドレスを用いた経路が構築されていることを示す。ルーティングテーブル35の経路構築フラグの値は、隣接ノードから受信したHELLOフレーム内の経路構築フラグの値に応じて、変更される。
「ショートアドレス」には、LDに設定された隣接ノードに対応するショートアドレスが格納される。なお、本実施形態では、隣接ノードに対応するショートアドレスをルーティングテーブルに登録したが、これに限定されず、ルーティングテーブルに登録されるLDと関係づけられていれば、別のテーブルでショートアドレスを管理しても良い。
図10は、本実施形態におけるGWのハードウェア構成の例を示す図である。GW12は、Micro Processing Unit(MPU)41、PHYsical layer(PHY)チップ42、タイマIC(Integrated Circuit)43、Dynamic Random access Memory(DRAM)44、フラッシュメモリ45、無線モジュール46を備える。MPU41、PHYチップ42、タイマIC43、DRAM44、フラッシュメモリ45、無線モジュール46は、データの入出力が可能になるようにバスにより接続されている。
MPU41は、フラッシュメモリ45に格納されたファームウェアなどのプログラムを読み込んで処理を行う。このとき、MPU41は、DRAM44をワーキングメモリとして使用できる。通信装置20がGW12として動作する場合、MPU41は制御部21として機能する。
PHYチップ42は、MPU41からの出力を、出力先の種類に応じた信号(つまり電気信号または光信号)に変換し、出力する。こうして、GW12はPHYチップを用いて外部ネットワークにデータを送信することができる。また、PHYチップ42は、ケーブルと有線LANポートを介して外部ネットワークから入力される電気信号または光信号を、論理信号に変換し、MPU41に出力することもできる。こうして、GW12はPHYチップ42を用いて外部ネットワークからデータを受信することができる。PHYチップ42はオプションであり、GW12は、PHYチップ42を介して回線による通信を行うことができる。例えば、レイヤ3(L3)ネットワークとアドホックネットワークとの間のゲートウェイとして動作するGW12は、L3ネットワーク中の通信装置とPHYチップ42を用いて通信することができる。タイマIC43は、タイマとして動作する。
無線モジュール46は、無線接続における物理層の処理を行うハードウェアである。無線モジュール46は、例えば、アンテナ、ADC(Analog-to-Digital Converter)、DAC(Digital-to-Analog Converter)、変調器、復調器、符号化器、復号器などを含む。
なお、ファームウェアなどのプログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、GW12にインストールされてもよい。または、プログラムは、ネットワークからPHYチップ42や無線モジュール46を介してダウンロードされることによりGW12にインストールされてもよい。また、実施形態に応じて、DRAM44やフラッシュメモリ45以外の他の種類の記憶装置が利用されてもよい。
図11は、本実施形態におけるノードのハードウェア構成の例を示す図である。ノード11は、Micro Processing Unit(MPU)51、タイマIC(Integrated Circuit)52、Dynamic Random access Memory(DRAM)53、フラッシュメモリ54、無線モジュール55を備える。MPU51、タイマIC52、DRAM53、フラッシュメモリ54、無線モジュール55は、データの入出力が可能になるようにバスにより接続されている。
MPU51は、フラッシュメモリ54に格納されたファームウェアなどのプログラムを読み込んで処理を行う。このとき、MPU51は、DRAM53をワーキングメモリとして使用できる。通信装置20がノード11として動作する場合、MPU51は制御部21として機能する。フラッシュメモリ54は、記憶部34として機能する。タイマIC43は、タイマとして動作する。
無線モジュール55は、無線接続における物理層の処理を行うハードウェアである。無線モジュール55は、例えば、アンテナ、ADC(Analog-to-Digital Converter)、DAC(Digital-to-Analog Converter)、変調器、復調器、符号化器、復号器などを含む。無線モジュール55は、無線I/F31として機能する。
なお、ファームウェアなどのプログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、ノード11にインストールされてもよい。または、プログラムは、ネットワークから無線モジュール55を介してダウンロードされることによりノード11にインストールされてもよい。また、実施形態に応じて、DRAM53やフラッシュメモリ54以外の他の種類の記憶装置が利用されてもよい。
図12−図17は、本実施形態におけるショートアドレスを用いたデータ送信の処理を説明するための図である。図12は、通常用いられる任意のアドレスを用いて、GW及びノードA〜CのHELLOフレームによる経路構築が完了した状態とする。
GWは、各ノードに、例えば16ビットのショートアドレスを割り当てる。このGWは、送信するHELLOフレームの経路構築フラグにONを設定し、GWのショートアドレス(例えば、ショートアドレス=10とする)を付与して、HELLOフレーム(1)を送信する。ノードA〜Cのそれぞれは、ショートアドレスを未取得状態で、且つルーティングテーブル35のLDの何れも経路構築フラグがOFFである。この場合、ノードA〜Cのそれぞれは、HELLOフレームの経路構築フラグをOFFにして送信する。このとき、ノードA〜Cはそれぞれ、ショートアドレスを保持していないため、ノードA〜Cから送信されるHELLOフレーム(2)(3)(4)のショートアドレスに、“0”(無効値)を設定する。
ノードAは、GWからのHELLOフレーム(1)を受信すると、自身のルーティングテーブルのLD1(=GW)の経路構築フラグをONに更新する。
それから、図13に示すように、ノードCはGWに対して、自身のショートアドレスを要求するためにアドレス要求(5)を送信し、GWからアドレス応答をもらう。これにより、ノードCは、自身のショートアドレス(=11)を取得できる。
ノードCは、ショートアドレスを取得すると、ルーティングテーブルのLD1〜3の経路構築フラグがいずれもOFFのため、GWまでのショートアドレスでの経路構築ができていないと判断する。この場合、ノードCは、送信するHELLOフレーム(6)に設定する経路構築フラグはOFFのままで送信する。ただし、ノードCは、自身のショートアドレスは取得できているので、自身のショートアドレスをHELLOフレームに付与する。
ノードCに続き、ノードAは、図14に示すように、GWに対するアドレス登録要求/応答(7)により、GWよりショートアドレス(=12)を取得する。
ノードAは、ショートアドレスを取得すると、既にルーティングテーブルのLD1(=GW)の経路構築フラグがONとなっているため、GWまでのショートアドレスによる経路構築ができていると判断する。この場合、ノードAは、ノードA内のアプリケーション28へGWの検出を通知する。
ノードAは、次回より送信するHELLOフレーム(8)に、自身のショートアドレスを付与し、経路構築フラグをONにして送信する。
ノードBは、ノードAが送信する経路構築フラグONのHELLOフレーム(8)を受信する。すると、ノードBは、自身のルーティングテーブルのLD1であるノードAの経路構築フラグをONにする。
ノードBは、ルーティングテーブルのLD1(=A)の経路構築フラグがONのため、GWまでのショートアドレスによる経路構築ができていると判断できる。しかしながら、ノードBは、図15に示すように、自身のショートアドレスを未だ取得できていないため、ノードBが送信するHELLOフレーム(9)の経路構築フラグをOFFのままで送信する。また、ノードBは、自身のショートアドレスを保持していないため、HELLOフレーム(9)のショートアドレスに0(無効値)を設定する。
続いてノードBは、図16に示すように、GWに対するアドレス要求・応答(10)により、GWより自身のショートアドレス(=13)を取得する。ノードBはショートアドレスを取得すると、既にルーティングテーブルのLD1(=A)の経路構築フラグがONとなっているため、ショートアドレスによるGWまでの経路構築済みであると判断し、ノードB内のアプリケーション28へGWの検出を通知する。
ノードBは、次回から送信するHELLOフレーム(11)に、自身のショートアドレスを設定し、経路構築フラグをONにして送信する。
ノードA,Cは、ノードBから、経路構築フラグがONになったHELLOフレームを受信すると、自身のルーティングテーブルにおいてLDとしてノードBが登録されているエントリに対応する経路構築フラグをONにする。
ノードCは、図17に示すように、ルーティングテーブルのLDのいずれかに1つ以上の経路構築フラグがONのノードを持っているため、GWまでのショートアドレスによる経路が構築されたと判断し、ノードC内のアプリケーション28へGWの検出を通知する。次回からノードCが送信するHELLOフレーム(12)の経路構築フラグはONとなる。
このようにショートアドレスでの経路構築済みかを判定するフラグをHELLOフレームに搭載し伝搬していくことで、最終宛先(GW)までの経路が、ショートアドレスによって経路構築済みであるかの判断ができる。ショートアドレスによる経路構築後にアプリケーション28へのGWの検出通知を行うことが可能となるため、経路未構築の宛先へのデータ送信を送信元で抑止できるようになり、トラフィックを低減することが可能となる。
図18は、本実施形態の適用前のデータフレームと適用後のデータフレームを説明するための図である。送信するデータフレームにおいて、通常使用されているサイズのアドレスの替わりに、ショートアドレスを使用する。これにより、データフレーム内において、上位アプリケーションで使用できるペイロード領域をより多く確保でき、網のトラフィックを低減できる。
例えば、通常使用されているデータフレームのLD,LS,GD,GSのサイズが8[Byte]で、ペイロードのサイズが96[Byte]とし、全フレーム長が最大128[byte]とする。LD,LSにショートアドレス(16[bit])を用いた場合、ペイロードのサイズは108[Byte]を確保することができる。この場合、本実施形態の適用前後のペイロードサイズの割合は、以下のようになる。
適用前:96/128=75.0%
適用後:108/128=84.4%
よって、本実施形態により、ペイロードサイズの割合は、84.4−75.0=9.4%の増加となる。
また、ショートアドレスを使った経路が構築された後に、GW検出を行うことで、最終宛先までの経路が構築された状態でデータ送信が行われる。そのため、無線区間内での無駄なトラフィックを抑制することができる。
このように、GWはHELLOフレームに自身のショートアドレス及びONが設定された経路構築フラグを付与して送信する。HELLOフレームを受信したノード装置は、自ノード装置のルーティングテーブルにて、対応するLDの経路構築フラグをONするとともに、自ノード装置のショートアドレスが割り当てられているか否かを確認する。自ノード装置のショートアドレスが割り当てられていない場合、そのノード装置は、GWに対し、ショートアドレス要求をしてGWから自ノード装置のショートアドレスを取得する。自ノード装置のショートアドレスが割り当てられている場合、そのノード装置は、HELLOフレームに自ノード装置のショートアドレス及び経路構築フラグ=ONを付与してHELLOフレームを送信する。
隣接するノード装置からのHELLOフレーム(経路構築フラグにONが設定されている)を受信したノード装置は、次の処理を行う。すなわち、そのノード装置は、自ノード装置のルーティングテーブルにて、対応するLDの経路構築フラグをONにするとともに、自ノード装置のショートアドレスが割り当てられているか否かを確認する。自ノード装置のショートアドレスが割り当てられていない場合、そのノード装置は、GWに対し、ショートアドレス要求をしてGWから自ノード装置のショートアドレスを取得する。自ノード装置のショートアドレスが割り当てられている場合、そのノード装置は、HELLOフレームに自ノード装置のショートアドレス及び経路構築フラグ=ONを付与してHELLOフレームを送信する。このとき、そのノード装置は、GWまでのLDのいずれかの経路構築フラグがONになっている場合、データフレームの通信を可能とする。
なお、本実施形態では、GDがGWである場合を例に説明したが、これに限定されず、ルーティングテーブルのGDに登録される装置であれば、限定されず、例えばいずれかのノードであってもよい。
以下、本実施形態の実施例について説明する。
(実施例1)
図19−図24は、本実施形態(実施例1)におけるノードA,B,Cが順にショートアドレスをアドレス要求した場合の例を説明するための図である。図19は、HELLOフレーム送受信によりネットワークが構築されている場合の各ノードのルーティングテーブルを示す。図19−図24を用いて、ノードAがショートアドレスによる経路構築済みとなるまでの流れを説明する。
図20において、GWは、HELLOフレームに、自身のショートアドレスと経路構築フラグ=ONを設定し、そのHELLOフレームを送信する(S1)。
ノードAは、GWから送信されたHELLOフレームを受信すると、GW宛のルーティングテーブルのLD1(=GW)の経路構築フラグをONに更新する(S2)。
ノードAはショートアドレス未取得状態のため、ショートアドレスを取得するために、GWに対してアドレス要求を行う(S3)。GWは、ノードAからのアドレス要求を受けて、アドレス応答をノードA宛に送信する(S4)。ノードAは、GWからのアドレス応答を受信し、そのアドレス応答に含まれるショートアドレスを取得する。ノードAは、取得したショートアドレスを記憶部に保持する(S5)。
ノードAは、自身のGW宛のルーティングテーブルのLDのいずれか1つ以上の経路構築フラグがONとなっており、且つショートアドレスを保持したため、ショートアドレスによるGWまでの経路構築ができたと判断する。この場合、ノードAは、図21に示すように、ノードA内のアプリケーション28へGWの検出を通知する(S6)。
ノードAは、次回から送信するHELLOフレームにショートアドレスを付与し、経路構築フラグをONにして送信する(S7)。
次に、図22を用いて、ノードAと同様にノードBがショートアドレスによる経路構築済みとなるまでの流れを示す。
ノードBは、S7でノードAが送信したHELLOフレームを受信すると、ノードBは自身のGW宛のルーティングテーブルのLD1(=A)の経路構築フラグをONにする(S8)。
ノードBは、ショートアドレス未取得状態のため、ショートアドレスを取得するために、GWに対してアドレス要求を実施する(S9)。GWは、ノードBからのアドレス要求を受けて、アドレス応答をノードB宛に送信する(S10)。
ノードBは、GWからのアドレス応答を受信し、そのアドレス応答に含まれるショートアドレスを取得する。ノードBは、取得したショートアドレスを記憶部に保持する(S11)。
ノードBは、自身のGW宛のルーティングテーブルのLDのいずれか1つ以上の経路構築フラグがONとなっており、且つショートアドレスを保持したため、ショートアドレスによる経路構築ができたと判断する。この場合、ノードBは、ノードB内のアプリケーション28へGWの検出を通知する(S12)。
ノードBは、次回から送信するHELLOフレームにショートアドレスを付与し、経路構築フラグをONにして、HELLOフレームを送信する(S13)。
続いて、図23、図24を用いて、ノードA,B同様にノードCがショートアドレスによる経路構築済みとなるまでの流れを示す。
ノードCは、S13でノードBが送信したHELLOフレームを受信すると、自身のGW宛のルーティングテーブルのLD1(=B)の経路構築フラグをONする(S14)。また、ノードAは、自身のGW宛のルーティングテーブルのLD2(=B)の経路構築フラグをONにする(S14)。
ノードCは、ショートアドレス未取得のため、ショートアドレスを取得するために、GWに対してアドレス要求を行う(S15)。GWは、ノードCからのアドレス要求を受けて、アドレス応答をノードC宛に送信する(S16)。
ノードCは、アドレス応答を受信し、そのアドレス応答に含まれるショートアドレスを取得する。ノードCは、取得したショートアドレスを記憶部に保持する(S17)。
ノードCは自身のGW宛のルーティングテーブルのLDのいずれか1つ以上の経路情報フラグがONになっており、且つショートアドレスを保持したため、ショートアドレスによる経路構築済みと判断する。この場合、ノードCは、ノードC内のアプリケーション28へGWの検出を通知する(S18)。
ノードCは、次回から送信するHELLOフレームにショートアドレスを付与し、経路構築フラグをONにして、HELLOフレームを送信する(S19)。
ノードBは、S19でノードCから送信された経路構築フラグONのHELLOフレームを受信すると、GW宛ルーティングテーブルのLD2(=C)の経路構築フラグをONにする(S20)。
S20の状態で、ノードCは、GWに対してデータフレームを送信する。このとき、ノードCは、GW宛ルーティングテーブルのLD1であるノードBにショートアドレスを使って、データフレームを送信する(S21)。
ノードBは、GWに対してそのデータフレームを転送する(S22)。このとき、ノードBは、GW宛ルーティングテーブルのLD1であるノードAにショートアドレスを使って、データフレームを転送する(S22)。
ノードAは、GWに対してそのデータフレームを転送する。このとき、ノードAはGW宛ルーティングテーブルのLD1であるGWにショートアドレスを使って、データフレームを転送する(S23)。
(実施例2)
実施例2では、ノードC、ノードA、ノードBが順にショートアドレスをアドレス要求し、それぞれのノードがショートアドレスによる経路構築済みとなる場合の例について説明する。
図25は、HELLOフレームの送受信によりネットワークが構築されている場合の各ノードのルーティングテーブルを示す。図25−図30を用いて、ノードCがショートアドレスを取得する流れを示す。
図26に示すように、GWは、HELLOフレームに、自身のショートアドレスと経路構築フラグ=ONを設定し、そのHELLOフレームを送信する(S31)。
ノードAは、S31で送信されたHELLOフレームを受信すると、GW宛のルーティングテーブルのLD1(=GW)の経路構築フラグをONに更新する(S32)。
ノードCは、ショートアドレス未取得状態のため、ショートアドレスを取得するために、GWに対してアドレス要求を行う(S33)。GWは、ノードCからのアドレス要求を受けて、アドレス応答をノードC宛に送信する(S34)。
ノードCは、GWからのアドレス応答を受信し、そのアドレス応答に含まれるショートアドレスを取得する。ノードCは、取得したショートアドレスを記憶部に保持する(S35)。
ノードCは、S35でショートアドレスを保持したため、次回から送信するHELLOフレームにショートアドレスを付与して送信する(S36)。ただし、ノードCにおいて、GW宛のルーティングテーブルのLDの何れの経路構築フラグはOFFであるため、GWまでのショートアドレスによる経路が構築されてない状態である。そのため、この時点では、ノードCは、ノードC内のアプリケーション28へのGWの検出通知を行わず、且つ自身が送信するHELLOフレームの経路構築フラグもOFFのままとなる。
次に、図27を用いて、ノードAがショートアドレスによる経路構築済みとなるまでの流れを示す。ノードAは、ショートアドレス未取得状態のため、ショートアドレスを取得するために、GWに対してアドレス要求を実施する(S37)。GWはノードAからのアドレス要求を受けて、アドレス応答をノードA宛に送信する(S38)。
ノードAは、GWからのアドレス応答を受信し、そのアドレス応答に含まれるショートアドレスを取得する。ノードAは、取得したショートアドレスを記憶部に保持する(S39)。
ノードAは、S32より自身のGW宛のルーティングテーブルのLDのいずれか1つ以上の経路構築フラグがONとなっており、且つショートアドレスを保持したため、ショートアドレスによる経路構築ができたと判断する。この場合、ノードAは、ノードA内のアプリケーション28へGWの検出を通知する(S40)。
ノードAは、次回から送信するHELLOフレームにショートアドレスを付与し、経路構築フラグをONにして送信する(S41)。
ノードBは、S41にてノードAが送信したHELLOフレームを受信すると、自身のGW宛のルーティングテーブルのLD1(=A)の経路構築フラグをONにする(S42)。
続いて、図28−図30を用いて、ノードBが同様にショートアドレスによる経路構築済みとなるまでの流れを示す。図28に示すように、ノードBは、ショートアドレス未取得のため、ショートアドレスを取得するために、GWに対してアドレス要求を行う(S43)。GWはノードBからのアドレス要求を受けて、アドレス応答をノードC宛に送信する(S44)。
ノードBはGWからのアドレス応答を受信し、そのアドレス応答に含まれるショートアドレスを取得する。ノードAは、取得したショートアドレスを記憶部に保持する(S45)。
ノードBは、自身のGW宛のルーティングテーブルのLDいずれか1つ以上の経路情報フラグがONになっており、且つショートアドレスを保持したため、ショートアドレスによる経路構築済みと判断する。この場合、ノードBは、ノードB内のアプリケーション28へGWの検出を通知する(S46)。
ノードBは、次回から送信するHELLOフレームにショートアドレスを付与し、経路構築フラグをONにして送信する(S47)。
ノードC及びノードAは、S47でノードBが送信したHELLOフレームを受信する。すると、ノードCは、自身のGW宛のルーティングテーブルのLD1(=B)の経路構築フラグをONにする。また、ノードAは、自身のGW宛のルーティングテーブルのLD2(=B)の経路構築フラグをONにする(S48)。
S48により、ノードCは、GW宛ルーティングテーブルの経路構築フラグがONとなり、且つ自身のショートアドレスを既に保持しているため、ノードCはGW宛のショートアドレスによる経路が構築されたと判断する。この場合、図29に示すように、ノードCは、アプリケーション28へGWの検出を通知する(S49)。
ノードCは、以降に送信するHELLOフレームの経路構築フラグをONにして送信する(S50)。
ノードBは、S50によるHELLOフレームを受信すると、GW宛のルーティングテーブルのLD2(=C)の経路構築フラグをONにする(S51)。
S51の状態で、ノードCは、GWに対してデータフレームを送信する。このとき、ノードCは、図30に示すように、GW宛ルーティングテーブルのLD1であるノードBへショートアドレスを使ってデータフレームを送信する(S52)。
ノードBは、GWに対してデータフレームを転送する。この場合、ノードBはGW宛ルーティングテーブルのLD1であるノードAへショートアドレスを使って、データフレームを転送する(S53)。
ノードAはGWに対してデータフレームを転送する。この場合、ノードAはGW宛ルーティングテーブルのLD1であるGWへショートアドレスを使って、データフレームを転送する(S54)。
(実施例3−1)
実施例3−1では、ショートアドレスにより経路構築されているノードがリブートし、保持していたショートアドレスがなくなった場合に経路切替えを行って、最終宛先(GD)までデータ送信を行う例について説明する。実施例3−1では、リブートしたノードが経路構築フラグOFFのHELLOフレームをまだ送信していない状態でデータフレームを送信する。
図31は、既にショートアドレスにより経路構築済みとなっているネットワークと各ノードのルーティングテーブルを示す。図32に、ノードAがリブートし、その後周囲のノードから送信されるHELLOフレームを受信することによりHELLOによる経路構築ができた状態を示す。ノードAはリブートすると、自身のショートアドレスは消去されたとする。
リブートしたノードAは、隣接するGW及びノードBが送信するHELLOフレームを受信し(S61−1,S61−2)、受信したHELLOフレームに基づく情報をルーティングテーブルに登録する。このとき受信するHELLOフレームの経路構築フラグはONであるため、ノードAは、GW宛のルーティングテーブルのLD1(=GW)及びLD2(=B)の経路フラグをONに更新する。ただし、ノードAは未だショートアドレスを持っていないため、ショートアドレスでの経路構築はできていない状態である。
図33に示すように、S61−1,S61−2の状態で、ノードCは、ショートアドレスを用いて、GWに対してデータフレームを送信する(S62)。このとき、ノードCは、GW宛ルーティングテーブルのLD1であるノードBをLDとして、データフレームを送信する。
ノードBは、GWへそのデータフレームを転送する。このとき、ノードBはショートアドレスによる経路構築済みのため、GW宛ルーティングテーブルのLD1であるノードAをLDとして、データフレームを転送する(S63)。しかしながら、ノードAは未だ自身のショートアドレスを持っていないため、ショートアドレスを使用したデータフレームを受信できない(S64)。
ノードBは、ノードA経由でデータフレームを転送できなかったので、経路切替えを行い、GW宛ルーティングテーブルのLD2であるノードDへデータフレームを転送する(S65)。
ノードDは、GWへそのデータフレームを転送する。このとき、ノードDは、GW宛ルーティングテーブルのLD1であるGWをLDとして、データフレームを送信する(S66)。
上記のように、ノードBから、ショートアドレスを保持していないノードAに対してデータフレームを送信した場合、ノードAはデータフレームを受信できず、ノードBからノードAへのデータ送信は失敗となってしまう。しかし、ノードBは経路の切替えを行い、ショートアドレスでの経路構築済みであるLD2のノードDへ送信することにより最終宛先までデータを到達させることが可能である。
(実施例3−2)
実施例3−2では、ショートアドレスにより経路構築されているノードがリブートし、保持していたショートアドレスがなくなった場合に経路切替えを行って、最終宛先(GD)までデータ送信を行う例を説明する。実施例3−2では、リブートしたノードが経路構築フラグOFFのHELLOフレームを送信した状態でデータ送信する。
図34に、本実施形態(実施例3−2)における、既にショートアドレスにより経路構築済みとなっているネットワークと各ノードのルーティングテーブルを示す。
図35−図36に、ノードAがリブートし、その後周囲のノードから送信されたHELLOフレームを受信することにより、HELLOによる経路構築を行って、データ送信を行う様子を示す。ノードAはリブートすると、自身のショートアドレスは消去されたとする。
図35に示すように、リブートしたノードAは、隣接するGW及びノードBが送信するHELLOフレームを受信し(S71−1,S71−2)、受信したHELLOフレームに基づく情報をルーティングテーブルに登録する。
ノードAは、このとき受信するHELLOフレームの経路構築フラグはONであるため、GW宛のルーティングテーブルのLD1(=GW)およびLD2(=B)の経路フラグをONに更新する。ただし、ノードAは未だショートアドレスを持っていないため、ショートアドレスでの経路構築はできていない状態である。
ノードAは、HELLOフレームを送信する(S72)。このとき、ノードAは未だショートアドレスによる経路構築済みでないため、送信するHELLOフレームの経路構築フラグはOFFである。
ノードBは、S72でノードAが送信したHELLOフレームを受信すると、HELLOフレームの経路構築フラグがOFFであるため、GW宛ルーティングテーブルのLD1(=A)の経路構築フラグをOFFに更新する(S73)。
図36に示すように、ノードCは、S73の状態でショートアドレスを用いて、GWに対してデータフレームを送信する。このとき、ノードCは、GW宛ルーティングテーブルのLD1であるノードBをLDとして、データフレームを送信する(S74)。
ノードBは、GWへデータフレームを転送する。このとき、ノードBは、ショートアドレスによる経路構築済みのため、GW宛ルーティングテーブルのLD1であるノードAをLDとして選択する。しかし、LD1の経路構築フラグがOFFのため、ノードBは、ショートアドレスによる経路が構築されていないと判断する。その結果、ノードA経由ではデータフレームの送信ができない(S75)。
ノードBは、LD1であるノードAに送信できないため、経路を切替えてデータフレームを転送する。このとき、ノードBは、GW宛ルーティングテーブルのLD2であるノードDにデータフレームを送信する(S76)。
ノードDは、GWへデータフレームを送信する。このとき、ノードDは、GW宛ルーティングテーブルのLD1であるGWをLDとしてデータフレームを送信する(S77)。
上記のように、ノードBは、自身のルーティングテーブルにおいて経路構築フラグOFFが設定されているノードAに対して、ショートアドレスを使用したデータ送信ができないため、ノードA経由のデータ送信は失敗となってしまう。しかし、ノードBは経路の切替えを行い、ショートアドレスでの経路構築済みであるLD2のノードDへ送信することにより最終宛先までデータを到達させることが可能である。
(実施例4)
実施例4では、転送ノードがリブート等によりショートアドレスを保持していない場合に、データ送信元のノードで経路切替えを行い、サーバなどの外部ネットワーク接続を行う別のGWに対してデータ送信する例を説明する。
図37に、本実施形態(実施例4)における、既にショートアドレスにより経路構築済みとなっているネットワークと各ノードのルーティングテーブルを示す。ノードCにおいて、サーバなどの外部ネットワーク接続を行うGWの第一候補としてGW1が設定され、第二候補としてGW2が設定されている。
図38、図39に、ノードAがリブートし、その後周囲のノードから送信されたHELLOフレームを受信することにより、HELLOによる経路構築を行って、データ送信を行う様子を示す。ノードAはリブートすると、自身のショートアドレスは消去されたとする。また、このときノードDは、未だショートアドレスを持ってない状態のためショートアドレスによる経路構築ができていない状態とする。
図38に示すように、実施例3−1と同様に、リブートしたノードAは、隣接するGW及びノードBが送信するHELLOフレームを受信し(S81−1,S81−2)、受信したHELLOフレームに基づく情報をルーティングテーブルに登録する。このとき受信するHELLOフレームの経路構築フラグはONであるため、ノードAは、GW宛のルーティングテーブルのLD1(=GW)およびLD2(=B)の経路フラグをONに更新する。ただし、ノードAは未だショートアドレスを持っていないため、ショートアドレスでの経路構築はできていない状態である。
図39に示すように、ノードCは、サーバなどの外部ネットワーク接続を行うGWの第一候補であるGW1に対してデータフレームを送信する。このとき、ノードCはGW1宛ルーティングテーブルよりLD1であるノードBに対してショートアドレスを使って、データフレームを送信する(S82)。
ノードBは、GW1へデータフレームを転送する。このとき、ノードBはGW1宛ルーティングテーブルよりLD1であるノードAに対してショートアドレスを使って、データフレームを転送する(S83)。しかしながら、ノードAは未だ自身のショートアドレスを持っていないため、ショートアドレスを使用したデータフレームの受信ができない(S84)。
ノードBは、ノードA経由でデータフレームを転送できなかったので、経路切替えを行い、GW宛ルーティングテーブルのLD2であるノードDへ経路を変更しようとする。しかし、ノードDはショートアドレスによる経路が未だ構築されていないため送信できない(S85)。ノードBは、ノードD経由でのデータフレーム転送が不可であったため、データフレームのローカル送信元(LD)であるノードCへ、データフレームを戻す(S86)。
ノードCは、GW1宛ルーティングテーブルの宛先がなくなったため、第一候補のGW1へのデータ送信が失敗と判断する。そこで、ノードCは、第二候補のGW2に宛先を変更して、ノードEへショートアドレスを使ってデータフレームを転送する(S87)。
ノードEは、GW2へデータフレームを転送する。このとき、ノードEはGW2宛ルーティングテーブルのLD1であるノードFへショートアドレスを使ってデータフレームを転送する(S88)。
ノードFは、GW2へデータフレームを転送する。このとき、ノードFはGW2宛ルーティングテーブルのLD1であるGW2へショートアドレスを使ってデータフレームを転送する(S89)。
図40は、本実施形態(実施例1〜4)における通信装置の全体処理のフローを示す。図40の処理を行う通信装置は、上述したように、本実施形態のアドホックネットワークの構成要素であって、無線アドホック通信技術を搭載した通信機器であり、例えば、ノード11、GW12等の機器である。
通信装置20の制御部21は、記憶部34等に格納したプログラムを読み出し、HELLO制御処理22、フレーム送信処理23、フレーム受信処理24、経路構築処理25、ルーティング処理26、アドレス要求/応答処理27を行う。具体的には、制御部21は、図40の処理を行う。
制御部21は、HELLOフレームの送信タイミングが到来したか否かを判定する(S101)。HELLOフレームの送信タイミングが到来した場合(S101で「Yes」)、制御部21は、HELLOフレーム生成・送信処理を行う(S112)。S112の詳細は、図41にて詳述する。
HELLOフレームの送信タイミングが到来していない場合(S101で「No」)、制御部21は、アドレス要求フレームの送信タイミングが到来したか否かを判定する(S102)。アドレス要求フレームの送信タイミングが到来した場合(S102で「Yes」)、制御部21は、GWに対するアドレス要求フレームを生成し(S108)、S110の処理へ進む。
アドレス要求フレームの送信タイミングが到来していない場合(S102で「No」)、制御部21は、自ノードにおいて、アプリケーション28によるデータフレームの送信要求が発生したか否かを判定する(S103)。
自ノードにおいて、データフレームの送信要求が発生した場合(S103で「Yes」)、制御部21は、ルーティングテーブルで該当GDの経路構築フラグがONで、且つ自ノードについてのショートアドレスを保持しているか否かを判定する(S104)。ルーティングテーブルで該当GDの経路構築フラグがONでない場合、または自ノードについてのショートアドレスを保持していない場合(S104で「No」)、本フローは終了する。
ルーティングテーブルで該当GDの経路構築フラグがONで、且つ自ノードについてのショートアドレスを保持している場合(S104で「Yes」)、制御部21は、アプリケーション28からデータフレームを生成し(S105)、S110の処理を行う。
自ノードにおいて、データフレームの送信要求が発生していない場合(S103で「No」)、制御部21は、無線I/F31からフレームを受信したか否かを判定する(S106)。無線I/F31からフレームを受信していない場合(S106で「No」)、本フローは終了する。
無線I/F31からフレームを受信した場合(S106で「Yes」)、フレームのヘッダ情報を参照して、制御部21は、受信したフレームを、種類に応じて、振り分ける(S107)。受信したフレームがHELLOフレームである場合、制御部21は、経路構築処理を行う(S109)。S109の詳細は、図42にて詳述する。
受信したフレームがデータフレームである場合、制御部21は、ルーティング処理を行う(S110)。S110の詳細は、図43にて詳述する。
受信したフレームがアドレス要求/応答フレームである場合、制御部21は、アドレス要求/応答受信処理を行う(S111)。S111の詳細は、図44にて詳述する。
図41は、本実施形態(実施例1〜4)におけるHELLOフレーム生成・送信処理(S112)の詳細フローを示す。HELLOフレーム生成・送信処理(S112)は、HELLO制御処理22に相当する。
通信装置20がGW12である場合(S112−1で「Yes」)、制御部21(GWのMPU41)は、HELLOフレームのショートアドレスフィールドに自装置の16ビットアドレスを設定する(S112−9)。制御部21は、HELLOフレームの経路構築フラグにONを設定し(S112−10)、S112−11の処理を行う。
通信装置20がノード11である場合(S112−1で「No」)、制御部21(ノードのMPU51)は、通信装置20が自身のショートアドレスを記憶部34に保持しているか否かを判定する(S112−2)。自装置が自身のショートアドレスを保持していない場合(S112−2で「No」)、制御部21は、HELLOフレームのショートアドレスフィールドに、「0」を設定し(S112−3)、後述するループ処理を実行する。
通信装置20が自身のショートアドレスを保持している場合(S112−2で「Yes」)、制御部21は、HELLOフレームのショートアドレスフィールドに、自装置の16ビットアドレスを設定し(S112−4)、後述するループ処理を実行する。
通信装置20が自身のショートアドレスを保持していない場合(S112−5で「No」)、制御部21は、HELLOフレームの経路構築フラグにOFFを設定する(S112−7)。通信装置20が自身のショートアドレスを保持している場合(S112−5で「Yes」)、制御部21は、対象となるGDについてのルーティングテーブルにおいて、いずれかのLDの経路構築フラグがONか否かを判定する(S112−6)。
対象となるGDについてのルーティングテーブルにおいて、全てのLDの経路構築フラグがOFFの場合(S112−6で「No」)、制御部21は、HELLOフレームの経路構築フラグにOFFを設定する(S112−7)。
対象となるGDについてのルーティングテーブルにおいて、いずれかのLDの経路構築フラグがONの場合(S112−6で「Yes」)、制御部21は、HELLOフレームの経路構築フラグにONを設定する(S112−8)。
ルーティングテーブルのGDのエントリ数分、S112−5〜S112−8のループ処理を繰り返す。
制御部21は、生成したHELLOフレームを、隣接するすべてのノードへブロードキャスト送信する(S112−11)。なお、ここでの「ブロードキャスト」は「隣接するすべてのノード装置へのブロードキャスト」であり、「ネットワーク全体へのフラッディング」ではないので注意されたい。
図42は、本実施形態(実施例1〜4)における経路構築処理(S109)の詳細フローを示す。経路構築処理(S109)は、経路構築処理25に相当する。
制御部21は、受信したHELLOフレームに有効なショートアドレスが設定されているか否かを判定する(S109−1)。受信したHELLOフレームに有効なショートアドレスが設定されている場合、つまり、HELLOフレームのショートアドレスフィールドに、16ビットのアドレス(0以外)が設定されている場合、制御部21は、次の処理を行う。すなわち、制御部21は、その16ビットのアドレス(ショートアドレス)を、ルーディングテーブル35に、対応するLDに関係づけて登録する(S109−2)。
制御部21は、HELLOフレームの経路構築フラグにONが設定されているか否かを判定する(S109−3)。HELLOフレームの経路構築フラグにOFFが設定されている場合(S109−3で「No」)、制御部21は、受信したHELLOフレームのLSをLDとするルーティングテーブル35を検索する。制御部21は、検索したルーティングテーブルにおいて該当エントリのLDの経路構築フラグをOFFに設定する(S109−4)。
HELLOフレームの経路構築フラグにONが設定されている場合(S109−3で「Yes」)、制御部21は、受信したHELLOフレームのLSをLDとするルーティングテーブル35を検索する。制御部21は、検索したルーティングテーブルにおいて該当エントリのLDの経路構築フラグをONに設定する(S109−5)。
制御部21は、GWが新規登録されたか否かを判定する(S109−6)。GWが新規登録された場合(S109−6で「Yes」)、制御部21は、アドレス要求するまでの待ち時間をランダムに設定する(S109−7)。
その後、制御部21は、通常のルーティング処理、アプリケーションへのGW検出通知処理、通常のHELLOフレーム受信処理等を行う(S109−8)。例えば、制御部21は、HELLOフレームに設定された情報に基づいて、各経路の通信品質を計算し、その計算結果に基づいて、最終宛先までの複数の経路を構築する。このとき、制御部21は、リンクテーブルの新規作成、更新、または削除、及びルーティングテーブルの新規作成、更新、または削除等を行う。
図43は、本実施形態(実施例1〜4)におけるルーティング処理(S110)の詳細フローを示す。ルーティング処理(S110)は、ルーティング処理26に相当する。
制御部21は、受信したフレームの送信先(GD)を参照して、受信したフレームが自装置宛てのフレームか否かを判定する(S110−1)。受信したフレームが自装置宛てのフレームである場合(S110−1で「Yes」)、制御部21は、そのデータフレームの受信を上位のアプリケーション28に通知する(S110−6)。
受信したフレームが自装置宛てのフレームでない場合(S110−1で「No」)、制御部21は、受信したフレームの送信先(GD)を用いて、ルーティングテーブルを検索する(S110−2)。
制御部21は、受信したフレームのヘッダ情報を参照して、その受信したフレームの種類を判定する(S110−3)。受信したフレームの種類がアドレス要求/応答フレームである場合、制御部21は、S110−2にて検索されたGDに対応するLDから転送先を選択する(例えば、LD1が転送先として選択される)。制御部21は、その転送先にアドレス要求/応答フレームを送信する(S110−4)。
受信したフレームの種類がデータフレームである場合、制御部21は、S110−2にて検索されたGDに対応するLDのうち、経路構築フラグがONに設定されているいずれかのLDを転送先として選択する。制御部21は、ルーティングテーブルからその選択された転送先(LD)のショートアドレス(16ビットアドレス)を取得する。また、制御部21は、自身のショートアドレス(16ビットアドレス)を記憶部34から取得する。制御部21は、受信したデータフレームのLDを、その選択された転送先(LD)のショートアドレス(16ビットアドレス)に置き換える。また、制御部21は、受信したデータフレームのLSを、自身のショートアドレス(16ビットアドレス)に置き換える。制御部21は、LDをその選択された転送先(LD)のショートアドレスで置換し、LSを自身のショートアドレスで置換したデータフレームを送信する(S110−5)。
なお、LDをその選択された転送先(LD)のショートアドレスで置換し、LSを自身のショートアドレスで置換したデータフレームの送信ができなかった場合、制御部21は、次の処理を行う。すなわち、制御部21は、S110−2にて検索されたGDに対応するLDのうち、経路構築フラグがONに設定されている次の候補(LD)を転送先として選択する。制御部21は、LDをその選択された転送先(LD)のショートアドレスで置換し、LSを自身のショートアドレスで置換したデータフレームを送信する。
また、S110−2にて検索されたGDに対応するLDのうち、経路構築フラグがONに設定されているLDがない場合、制御部21は、受信したデータフレームの送信元(GS)へ、そのデータフレームを送信する。送信元(GS)のノード装置は、予め登録してある他のGWへそのデータフレームを送信する。
図44は、本実施形態(実施例1〜4)におけるアドレス要求/応答受信処理(S111)の詳細フローを示す。アドレス要求/応答受信処理(S111)は、アドレス要求/応答処理27に相当する。
制御部21は、受信したフレームの送信先(GD)を参照して、受信したフレームが自装置宛てのフレームか否かを判定する(S111−1)。受信したフレームが自装置宛てのフレームでない場合(S111−1で「No」)、制御部21は、ルーティング処理を行う(S110)。
受信したフレームが自装置宛てのフレームである場合(S111−1で「Yes」)、制御部21は、受信したフレームのヘッダ情報を参照して、その受信したフレームの種類を判定する(S111−2)。受信したフレームがアドレス要求フレームである場合であって、自装置がGWである場合(S111−3で「Yes」)、制御部21は、受信したアドレス要求フレームから、そのフレームの送信元(GS)を取得する。制御部21は、その取得した送信元(GS)に対応するショートアドレス(16ビット)であって、アドホックネットワーク内において一意のアドレスを生成する。制御部21は、アドレス応答フレームを生成し、そのアドレス応答フレームに、生成したショートアドレスを設定し(S111−7)、ルーティング処理を行う(S110)。
受信したフレームがアドレス要求フレームである場合であって、自装置がGWでない場合(S111−3で「No」)、制御部21は、受信したアドレス要求フレームを破棄する(S111−5)。
受信したフレームがアドレス応答フレームである場合であって、自装置がノードである場合(S111−4で「Yes」)、制御部21は、次の処理を行う。すなわち、制御部21は、アドレス応答フレームに設定されたショートアドレス(16ビットアドレス)を取得し、記憶部34に格納する(S111−6)。受信したフレームがアドレス応答フレームである場合であって、自装置がノードでない場合(S111−4で「No」)、制御部21は、受信したアドレス応答フレームを破棄する(S111−5)。
上述したように、本実施形態では、通信装置20は、内部で自身のショートアドレスの取得状態、及び最終宛先までのショートアドレスによる経路構築状態を管理する。また、通信装置20は、送信するHELLOフレームに新たに設けた経路構築フラグにより、自身がショートアドレスを保持しており、且つショートアドレスによる経路構築済みであるかを周辺装置に対して通知することができる。
通信装置20は、経路構築フラグがONになっているHELLOフレームを受信すると、ルーティングテーブルのLD毎に新たに設けた経路構築フラグの対象LDのフラグをONにする。最終宛先(GW)までのLD1〜LD3のいずれかの経路構築フラグがONで、かつ自身がショートアドレスを保持したとき、アプリケーション28へGWの検出を通知する。また、通信装置20は、次回のHELLOから経路構築フラグをONにして送信することで、ショートアドレスによる経路構築済みであることを周辺装置へ伝搬していく。
本実施形態の一例としては、プロアクティブ型ルーティングプロトコルを用いたアドホックネットワークに適用される。このとき、アドホックネットワークを構成する端末(ノード)は、位置が固定された端末でもよいし、携帯電話、PDA(Personal Digital Assistants)あるいはノート型パーソナルコンピュタ(PC)のように頻繁に位置が移動されるような端末でもよい。
上記のようなネットワークにおいて、特小無線等のようにMTUが小さい規格に本実施形態を適用する場合、データフレームのヘッダ情報のアドレス情報を縮小させ、データペイロードを拡張することで、無線リソースを有効活用することが可能となる。ノードはHELLOフレームの受信によりGWを検出し、GWにアドレス要求を送信する。GWはアドレス要求の受信により、ショートアドレスを各ノードに割り振る。経路構築フラグにONが設定されたHELLOフレームを受信した通信装置は、ルーティングテーブルのLD毎に設けた経路構築フラグの対象LDのフラグをONに更新する。通信装置は、ショートアドレスを保持しており、且つショートアドレスによる経路構築済みの場合に、経路構築フラグにONを設定したHELLOフレームを周辺装置に対して通知する。通信装置は、最終宛先(GW)までのLDのいずれかの経路構築フラグがONで、かつ自身がショートアドレスを保持した後に、ショートアドレスを使用したデータ通信が可能となる。
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
上記実施形態に関し、更に以下の付記を開示する。
(付記1)
隣接するノード装置間で無線通信することにより無線通信ネットワークを構築するノード装置であって、
目的とする送信先と、自ノードと隣接する隣接ノード装置と、の間の経路であって、前記無線通信ネットワークにおいてノード装置を特定する所定サイズのアドレスによる該経路が構築されたか否かを示す構築完了判定情報であって、該隣接ノード装置から取得された該隣接ノード装置についての該構築完了判定情報を記憶する記憶部と、
自ノード装置を特定する前記所定サイズのアドレスである第1アドレスを取得する第1取得部と、
前記隣接ノード装置についての構築完了判定情報が前記目的とする送信先と該隣接ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示すと共に、前記第1アドレスを取得した場合、隣接する1つまたは複数のノード装置に、該目的とする送信先と自ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示す自ノード装置についての構築完了判定情報を送信する通知部と、
自ノード装置についての構築完了判定情報を送信した場合、該第1アドレスを用いて、データフレームを送信する送信部と、
を備えることを特徴とするノード装置。
(付記2)
前記ノード装置は、さらに、
前記隣接ノード装置から、該隣接ノード装置を特定する前記所定サイズのアドレスである第2アドレスを取得する第2取得部と、
を備え、
前記送信部は、前記データフレームのヘッダに含まれる、該データフレームを次の送信先へ送信するために用いられる送信元フィールド及び送信先フィールドにそれぞれ、前記第1アドレス及び前記第2アドレスを設定する
ことを特徴とする付記1に記載のノード装置。
(付記3)
前記送信部は、前記記憶部を参照して、前記目的とする送信先との前記所定サイズのアドレスによる経路が構築された隣接ノード装置のうちのいずれかの隣接ノード装置を選択し、前記第1アドレス及び前記第2アドレスを用いて、選択した該隣接ノード装置に前記データフレームを送信する
ことを特徴とする付記2に記載のノード装置。
(付記4)
隣接するノード装置間で無線通信することにより無線通信ネットワークを構築するノード装置に、
目的とする送信先と、自ノードと隣接する隣接ノード装置と、の間の経路であって、前記無線通信ネットワークにおいてノード装置を特定する所定サイズのアドレスによる該経路が構築されたか否かを示す構築完了判定情報であって、該隣接ノード装置から取得された該隣接ノード装置についての該構築完了判定情報を記憶部に記憶し、
自ノード装置を特定する前記所定サイズのアドレスである第1アドレスを取得し、
前記隣接ノード装置についての構築完了判定情報が前記目的とする送信先と該隣接ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示すと共に、前記第1アドレスを取得した場合、隣接する1つまたは複数のノード装置に、該目的とする送信先と自ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示す自ノード装置についての構築完了判定情報を送信し、
自ノード装置についての構築完了判定情報を送信した場合、該第1アドレスを用いて、データフレームを送信する
処理を実行させることを特徴とする制御プログラム。
(付記5)
前記ノード装置に、さらに、
前記隣接ノード装置から、該隣接ノード装置を特定する前記所定サイズのアドレスである第2アドレスを取得する処理を実行させ、
前記データフレームを送信する場合、前記データフレームのヘッダに含まれる、該データフレームを次の送信先へ送信するために用いられる送信元フィールド及び送信先フィールドにそれぞれ、前記第1アドレス及び前記第2アドレスを設定する
ことを特徴とする付記4に記載の制御プログラム。
(付記6)
前記データフレームを送信する場合、前記記憶部を参照して、前記目的とする送信先との前記所定サイズのアドレスによる経路が構築された隣接ノード装置のうちのいずれかの隣接ノード装置を選択し、前記第1アドレス及び前記第2アドレスを用いて、選択した該隣接ノード装置に前記データフレームを送信する
ことを特徴とする付記5に記載の制御プログラム。
(付記7)
隣接する装置間で無線通信することにより無線通信ネットワークを構築する複数のノード装置と、
前記無線通信ネットワークにおいて前記複数のノード装置のそれぞれを特定する所定サイズのアドレスを、前記複数のノード装置のそれぞれに送信するサーバ装置と、
を備え、
前記複数のノード装置のそれぞれは、
目的とする送信先と、自ノードと隣接する隣接ノード装置と、の間の経路であって、前記所定サイズのアドレスによる該経路が構築されたか否かを示す構築完了判定情報であって、該隣接ノード装置から取得された該隣接ノード装置についての該構築完了判定情報を記憶する記憶部と、
前記サーバ装置から、自ノード装置を特定する前記所定サイズのアドレスである第1アドレスを取得する第1取得部と、
前記隣接ノード装置についての構築完了判定情報が前記目的とする送信先と該隣接ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示すと共に、前記第1アドレスを取得した場合、隣接する1つまたは複数のノード装置に、該目的とする送信先と自ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示す自ノード装置についての構築完了判定情報を送信する通知部と、
自ノード装置についての構築完了判定情報を送信した場合、該第1アドレスを用いて、データフレームを送信する送信部と、
を備えることを特徴とする無線通信システム。
(付記8)
前記複数のノード装置のそれぞれは、さらに、
前記隣接ノード装置から、該隣接ノード装置を特定する前記所定サイズのアドレスである第2アドレスを取得する第2取得部と、
を備え、
前記送信部は、前記データフレームのヘッダに含まれる、該データフレームを次の送信先へ送信するために用いられる送信元フィールド及び送信先フィールドにそれぞれ、前記第1アドレス及び前記第2アドレスを設定する
ことを特徴とする付記7に記載の無線通信システム。
(付記9)
前記送信部は、前記記憶部を参照して、前記目的とする送信先との前記所定サイズのアドレスによる経路が構築された隣接ノード装置のうちのいずれかの隣接ノード装置を選択し、前記第1アドレス及び前記第2アドレスを用いて、選択した該隣接ノード装置に前記データフレームを送信する
ことを特徴とする付記7または8に記載の無線通信システム。
(付記10)
隣接するノード装置間で無線通信することにより無線通信ネットワークを構築するノード装置は、
目的とする送信先と、自ノードと隣接する隣接ノード装置と、の間の経路であって、前記無線通信ネットワークにおいてノード装置を特定する所定サイズのアドレスによる該経路が構築されたか否かを示す構築完了判定情報であって、該隣接ノード装置から取得された該隣接ノード装置についての該構築完了判定情報を記憶部に記憶し、
自ノード装置を特定する前記所定サイズのアドレスである第1アドレスを取得し、
前記隣接ノード装置についての構築完了判定情報が前記目的とする送信先と該隣接ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示すと共に、前記第1アドレスを取得した場合、隣接する1つまたは複数のノード装置に、該目的とする送信先と自ノード装置との間の前記所定サイズのアドレスによる経路が構築されたことを示す自ノード装置についての構築完了判定情報を送信し、
自ノード装置についての構築完了判定情報を送信した場合、該第1アドレスを用いて、データフレームを送信する
ことを特徴とするデータ通信方法。
(付記11)
前記ノード装置は、さらに、前記隣接ノード装置から、該隣接ノード装置を特定する前記所定サイズのアドレスである第2アドレスを取得し、
前記データフレームを送信する場合、前記データフレームのヘッダに含まれる、該データフレームを次の送信先へ送信するために用いられる送信元フィールド及び送信先フィールドにそれぞれ、前記第1アドレス及び前記第2アドレスを設定する
ことを特徴とする付記10に記載のデータ通信方法。
(付記12)
前記データフレームを送信する場合、前記記憶部を参照して、前記目的とする送信先との前記所定サイズのアドレスによる経路が構築された隣接ノード装置のうちのいずれかの隣接ノード装置を選択し、前記第1アドレス及び前記第2アドレスを用いて、選択した該隣接ノード装置に前記データフレームを送信する
ことを特徴とする付記11に記載のデータ通信方法。