【解決手段】中継装置は、複数の送信装置のうちの一の送信装置が、複数の受信装置のうちの一の受信装置に向けて対象データを送信したことに対し、受信装置が対象データを受信したことを示す受信通知が送信されないことを検知する場合、対象データを中継データ11に格納するオーバーヒア処理部21と、前回、所定の受信装置宛にアグリゲートした対象データの設定アグリゲート数を、乱数と閾値との比較に基づいて増減して、今回の設定アグリゲート数を算出する設定アグリゲート数算出部23と、所定の受信装置宛の各対象データの数が、今回の設定アグリゲート数になった場合、所定の受信装置宛の各対象データをアグリゲートしたデータを、所定の受信装置に向けて送信する中継部22を備える。
【発明を実施するための形態】
【0018】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。
【0019】
(通信システム)
図1を参照して、本発明の実施の形態に係る通信システム5を説明する。通信システム5は、複数の通信装置1を備え、各通信装置が網状に接続され、無線メッシュネットワークを構成する。
【0020】
図1に示す通信システム5は、第1の通信装置1a、第2の通信装置1b、第3の通信装置1cおよび第4の通信装置1dを備える。本発明の実施の形態において第1の通信装置1a、第2の通信装置1b、第3の通信装置1cおよび第4の通信装置1dを特に区別しない場合、単に通信装置1と記載する場合がある。また
図1は、4つの通信装置を備えるが、通信装置の数はこれに限るものではない。
【0021】
本発明の実施の形態において、各通信装置1は、各通信における役割に応じて、送信装置、受信装置または中継装置として機能する。各通信装置1は、対象データを送信する際は送信装置として機能する場合がある。また各通信装置1は、対象データの送信先となる際は受信装置として機能する場合がある。また各通信装置1は、送信装置および受信装置間の通信を中継する中継装置として機能する場合がある。ここで対象データは、送信装置が受信装置に向けて送信するリクエストまたは応答に係るデータであって、後述の代理通信の対象となるデータである。
【0022】
本発明の実施の形態に係る通信システム5は、例えば乗用車の内部などの限られた空間に設けられる。各通信装置1は、コントローラに設置されるとともに、例えば車のドア、ルームランプ、窓などの各設備に対応して設置され、各設備の状態をコントローラに送信したり、コントローラから各設備の状態を変更する指示を受信したりする。
【0023】
通信システム5は、アドホック方式で、各通信装置1間の無線通信を実現する。各通信装置1の位置、電波環境等により、各通信装置1は直接通信できない場合がある。本発明の実施の形態において第1の通信装置1aは、第2の通信装置1bおよび第3の通信装置1cと通信可能であるが、第4の通信装置1dと通信できない。第2の通信装置1bは、第1の通信装置1a、第3の通信装置1cおよび第4の通信装置1dと通信可能である。第3の通信装置1cは、第1の通信装置1a、第2の通信装置1bおよび第4の通信装置1dとは通信可能である。第4の通信装置1dは、第2の通信装置1bおよび第3の通信装置1cとは通信可能であるが、第1の通信装置1aと通信できない。
【0024】
このような状況において、第1の通信装置1aが、第4の通信装置1dに対象データの送信を試みる場合、第1の通信装置1aと第4の通信装置1dは直接に通信できない。従って第2の通信装置1b(または第3の通信装置1c)が、第1の通信装置1aに代わって通信する(代理通信)。具体的には、第1の通信装置1aが対象データを第4の通信装置1dに送信する際、下記の手順で通信が行われる。
【0025】
(1)オーバーヒア
第1の通信装置1aが対象データを第4の通信装置1dに向けて送信すると、第2の通信装置1bは、オーバーヒアを行う。オーバーヒアにおいて第2の通信装置1bは、第1の通信装置1aから第4の通信装置1d宛に対象データが送信されたことを検知する。さらに第2の通信装置1bは、対象データが送信された後、対象データに対する受信通知(Ack)が送信されなかったことを検知する。
【0026】
(2)代理通信
第2の通信装置1bは、オーバーヒアした後、代理通信を行う。代理通信において第2の通信装置1bは、その対象データを含む代理通信データを、第1の通信装置1aに代わって第4の通信装置1dに向けて送信する。代理通信した後、第2の通信装置1bは、第4の通信装置1dから代理通信データについての受信通知を待機する。第4の通信装置1dから受信通知を受信しない場合、第2の通信装置1bは、所定の時間間隔かつ所定回数、代理通信データの送信を繰り返しても良い。
【0027】
(3)代理通信の完了通知
第2の通信装置1bは、第4の通信装置1dに対象データを代理通信したことに対し、第4の通信装置1dから受信通知を受信すると、第1の通信装置1aに代理通信の完了通知を通知する。第1の通信装置1aは、代理通信の完了通知を受信すると、対象データが第4の通信装置1dに受信されたと認識する。これにより、送信元から送信先に対象データを送信する一連の通信が完了する。
【0028】
このような代理通信において第2の通信装置1bが送受信する代理通信に関するデータは、例えば
図2に示すように、リンクアドレスとして送信元アドレスP1および宛先アドレスP2、エンドアドレスとして送信元アドレスP3および宛先アドレスP4、種別P5およびデータP6を備える。代理通信に関するデータは、
図2に示す項目以外の項目を含んでも良い。
【0029】
リンクアドレスは、第2の通信装置1bが行う代理通信のデータについて、Link to Linkで直接接続する通信装置1のアドレスを特定する。エンドアドレスは、第2の通信装置1bが送信する代理通信データに対する対象データを送受信する、End to Endの通信装置1のアドレスが設定される。第2の通信装置1bが、第1の通信装置1aから第4の通信装置1dへの通信を代理通信する場合、リンクアドレスの送信元アドレスP1に第2の通信装置1bのアドレスが設定され、宛先アドレスP2に第4の通信装置1dのアドレスが設定される。エンドアドレスの送信元アドレスP3に第1の通信装置1aのアドレスが設定され、宛先アドレスP4に第4の通信装置1dのアドレスが設定される。種別P5には、代理通信または代理通信の完了通知等の、代理通信に関するデータ種別を設定する。データP6は、送信対象のデータ(ペイロード)であって、対象データが設定されたり、完了通知の旨が設定されたりする。データP6は固定長であっても良いし可変長であっても良い。可変長である場合、データ長を示す項目が設けられても良い。
【0030】
(通信方法)
図3を参照して、本発明の実施の形態に係る通信方法を説明する。
図3に示す例において、実線は通信可能であることを示し、破線は通信できないことを示す。
図3において、第2の通信装置1bが中継装置として機能する場合を説明する。
【0031】
ステップS1において第2の通信装置1bは、設定アグリゲート数を算出する。第2の通信装置1bは、例えば、所定の受信装置宛の対象データをアグリゲートした後、その所定の受信装置宛の対象データをアグリゲートするために中継データ(バッファ)に格納する際、設定アグリゲート数を算出する。第2の通信装置1bは、その所定の受信装置宛の対象データが、ステップS1で算出した設定アグリゲート数になると、対象データをアグリゲートして、受信装置に向けて送信する。
図3に示す例において第2の通信装置1bは、第4の通信装置1d宛の対象データに関する設定アグリゲート数を算出する。
【0032】
まず直接通信が成功する場合を説明する。ここでは、送信装置は、第1の通信装置1aであり、受信装置は、第3の通信装置1cである。
【0033】
ステップS2において、第1の通信装置1aが第3の通信装置1cへの第1の対象データの直接通信を試みる。このとき第2の通信装置1bは、ステップS2の通信を傍受し、ステップS3において第1の対象データを一時保存し、第1の対象データに関する受信通知(Ack)を、所定時間監視する。ステップS4において、所定時間内に第3の通信装置1cから第1の通信装置1aに第1の対象データに対する受信通知が送信されると、第2の通信装置1bは、その受信通知を検知し、ステップS5において、ステップS3で一時保存した第1の対象データを削除する。
【0034】
一方、直接通信が失敗し、代理通信を行う場合を説明する。ここでは、送信装置は、第1の通信装置1aであり、受信装置は、第4の通信装置1dである。第1の通信装置1aと第4の通信装置1dは直接通信できないので、第2の通信装置1bが、代理通信を行う中継装置となる。
【0035】
ステップS6において第1の通信装置1aは、第4の通信装置1dへの第2の対象データの直接通信を試みる。このとき第2の通信装置1bは、ステップS6の通信を傍受し、ステップS7において第2の対象データを一時保存し、第2の対象データに関する受信通知を所定時間監視する。ステップS6で試みた第2の対象データの直接通信は、第4の通信装置1dに送信されないので、ステップS8において、所定時間内に第4の通信装置1dから第1の通信装置1aに第2の対象データに対する受信通知が、送信されない。従って、第2の通信装置1bは、ステップS9において、ステップS7で一時保存した第2の対象データを中継データに格納し、第2の対象データの代理通信を待機する。
【0036】
第2の対象データは、送信条件を満たすまで中継データ内で待機する。この間、通信システム5において、複数の対象データの直接送信が試みられる。第2の通信装置1bは、オーバーヒアした際には、中継データに逐次、オーバーヒアした対象データを格納する。その結果、中継データに複数の対象データが格納される。中継データに格納された対象データの宛先は、複数存在しても良いし、ある宛先に送信される対象データが複数あっても良い。
【0037】
ステップS10において第2の通信装置1bは、中継データに格納した対象データについて所定の送信条件を満たすか否かを判定する。例えば第2の通信装置1bは、中継データに格納された対象データのうち、第4の通信装置1d宛の対象データの数が、ステップS1で算出した設定アグリゲート数に達するか否かを判定する。ステップS10の処理は、第2の通信装置1bが送信可能なタイミングで実行されても良い。
【0038】
第4の通信装置1d宛の対象データの数が、ステップS1で算出した設定アグリゲート数に達すると判定した場合、ステップS11において第2の通信装置1bは、第4の通信装置1d宛の対象データをアグリゲートして、代理通信する。その場合、第2の通信装置1bは、例えばリンクアドレスの送信元アドレスP1に、第2の通信装置1bのアドレスを設定し、宛先アドレスP2に、第4の通信装置1dのアドレスを設定する。第2の通信装置1bは、エンドアドレス、種別およびデータに、中継データに格納された各対象データに対応する値を設定する。各対象データのエンドアドレスが共通する場合、エンドアドレスを繰り返し設定しないなど、データの項目は適宜設定されても良い。
【0039】
ステップS12において、ステップS11に対する受信通知を受信すると、ステップS13において第2の通信装置1bは、代理通信した通信装置1に、代理通信が完了した旨の完了通知を送信する。ステップS11で代理通信した複数の対象データのエンドアドレスの送信元が複数ある場合、第2の通信装置1bは、それぞれの送信元の通信装置1に、代理通信の完了通知を送信する。
【0040】
(通信装置)
図4を参照して、本発明の実施の形態に係る通信装置1を説明する。
図4は、通信装置1が中継装置として機能する場合の構成を示し、通信装置1が送信装置または受信装置として機能する場合の構成は割愛する。通信装置1は、送信装置および受信装置と直接接続しても良いし、他の通信装置1を介して接続しても良い。
【0041】
通信装置1は、記憶装置10、処理装置20、通信制御装置30を備える一般的なコンピュータである。一般的な通信プログラム(中継プログラム)を実行することにより、
図4に示す機能を実現する。
【0042】
記憶装置10は、ROM(Read Only Memory)、RAM(Random access memory)、ハードディスク等であって、処理装置20が処理を実行するための入力データ、出力データおよび中間データなどの各種データを記憶する。処理装置20は、CPU(Central Processing Unit)であって、記憶装置10に記憶されたデータを読み書きしたり、通信制御装置30とデータを入出力したりして、通信装置1における処理を実行する。通信制御装置30は、通信装置1が、他の通信装置1と通信可能に接続するためのインタフェースである。
【0043】
記憶装置10は、通信プログラムを記憶するとともに、中継データ11および設定アグリゲート数データ12を記憶する。また記憶装置10は、通信装置1がオーバーヒアする際に傍受したデータも一時的に保存する。
【0044】
中継データ11は、通信装置1の代理通信の対象となる対象データ群であって、対象データのバッファである。中継データ11は、
図5に示すように、代理通信の対象となる対象データを順にスタックする。
図5は、対象データA、対象データB、対象データCの順で、通信装置1がオーバーヒアしたことを示す。
【0045】
中継データ11は、同じ受信装置に送信される各対象データが送信条件を満たすまで、代理通信の対象となる対象データを保持する。本発明の実施の形態において、送信条件は、設定アグリゲート数を満たす対象データが集まったか否か、および、中継データ11に対象データが格納されてから最大の待ち時間を経過したか否かのうち、いずれか早い方である。中継データ11は、各対象データの保持を開始してからの経過時間を保持する。この経過時間は、送信時間として設定された最大の待ち時間との比較に用いられる。また同時に複数の受信装置宛の対象データが送信条件と満たした場合、より経過時間の長い対象データを含む受信装置宛の対象データを送信するために、経過時間が用いられても良い。また、ある受信装置宛の対象データが、設定アグリゲート数を越えている場合に、設定アグリゲート数以内の対象データを選択する際に用いられても良い。
【0046】
設定アグリゲート数データ12は、中継部22が、複数の対象データをアグリゲートして送信する際に、アグリゲートされる対象データの数である。設定アグリゲート数は、宛先となる受信端末毎に設定される。
【0047】
処理装置20は、オーバーヒア処理部21、中継部22および設定アグリゲート数算出部23を備える。
【0048】
オーバーヒア処理部21は、複数の送信装置のうちの一の送信装置が、複数の受信装置のうちの一の受信装置に向けて対象データを送信したことに対し、受信装置がこの対象データを受信したことを示す受信通知が送信されないことを検知する場合、この対象データを中継データ11に格納する。オーバーヒア処理部21は、定期的または所定のタイミングで、通信が行われているか否かを問い合わせても良い。
【0049】
オーバーヒア処理部21は、複数の送信装置のうちの一の送信装置が、複数の受信装置のうちの一の受信装置に向けて対象データを送信した際に、その対象データを記憶装置10に一時保存する。オーバーヒア処理部21は、所定時間内に受信装置がこの対象データを受信したことを示す受信通知が送信されないことを検知すると、一時保存した対象データを中継データ11に格納し、代理通信に備える。
【0050】
図6を参照して、オーバーヒア処理部21の処理を説明する。
【0051】
まずステップS101において、オーバーヒア処理部21が通信システム5において対象データが送信されたことを検知すると、ステップS102において、その対象データに関する受信通知を、所定時間待機する。所定時間内に受信通知が送信されなかった場合、ステップS103において、ステップS101で検知した対象データを、中継データ11に格納して、処理を終了する。
【0052】
中継部22は、所定の受信装置宛の各対象データの数が、今回の設定アグリゲート数になった場合、所定の受信装置宛の各対象データをアグリゲートしたデータを、所定の受信装置に向けて送信する。設定アグリゲート数は、後述の設定アグリゲート数算出部23によって予め算出される。
【0053】
また中継部22は、中継データ11において、各対象データの保持を開始してからの経過時間が、最大の待ち時間を超えた場合、対象データの数が設定アグリゲート数を越えなくても、対象データを送信しても良い。このとき中継部22は、経過時間が最大の待ち時間を超えた対象データの宛先と同一の宛先を有する対象データを、アグリゲートして送信しても良い。
【0054】
図7を参照して、中継部22の処理を説明する。中継部22は、通信装置1が送信可能なタイミングで実行する。
【0055】
まずステップS201において中継部22は、中継データ11が有する対象データのうち、最大待ち時間を経過した対象データがあるか否かを判定する。最大待ち時間を経過した対象データがある場合、ステップS203において中継部22は、その対象データを送信する。このとき、その対象データと同じ受信装置宛のデータをアグリゲートして送信する。
【0056】
最大待ち時間を経過した対象データがない場合、ステップS202に進む。ステップS202において中継部22は、中継データ11が有する各対象データの宛先となる受信装置ごとの対象データの数が、設定アグリゲート数に達するか否かを判定する。設定アグリゲート数に達する受信装置がない場合、中継部22はステップS201に戻る。
【0057】
設定アグリゲート数に達する受信装置がある場合、ステップS203において中継部22は、設定アグリゲート数に達した受信装置宛の対象データをアグリゲートして、代理通信を行う。
【0058】
設定アグリゲート数算出部23は、前回、所定の受信装置宛にアグリゲートした対象データの設定アグリゲート数を、乱数と閾値との比較に基づいて増減して、今回の設定アグリゲート数を算出する。乱数は、所定の範囲内で算出した乱数であっても良いし、前回の設定アグリゲート数の算出に用いた乱数と、今回の設定アグリゲート数の算出に用いた乱数の加重移動平均であっても良い。閾値は、通信システム5における通信装置1の数、許容遅延時間などから予め設定される。これにより中継装置1は、中継装置のバッファに溜まっているデータを適切にアグリゲートすることができる。
【0059】
設定アグリゲート数算出部23は、乱数が、閾値に所定値を加算した値よりも大きい場合、前回の設定アグリゲート数を増やして今回の設定アグリゲート数を算出し、乱数が、閾値に所定値を減算した値よりも小さい場合、前回の設定アグリゲート数を減らして今回の設定アグリゲート数を算出し、乱数と閾値との差異が所定値以内の場合、前回の設定アグリゲート数を今回の設定アグリゲート数を算出する。この閾値に所定値を増減した範囲は、設定アグリゲート数を変更する必要がない、安定した状態とみなすことが可能な範囲である。算出した設定アグリゲート数は、宛先となる受信装置毎に算出され、中継部22によって参照される。これにより中継装置1は、乱数に基づいて設定アグリゲート数を適切に増減することができる。
【0060】
設定アグリゲート数算出部23は、式(1)により、対象データの今回の設定アグリゲート数を算出する。これにより中継装置1は、通信システム5の規模を考慮して、乱数に基づいて設定アグリゲート数を適切に増減することができる。
【0062】
なお式(1)で用いられる最小リンク往復時間は、通信装置1が送信データを送信してから、送信データに対する応答データを受信するまでの時間の最小時間である。最小リンク往復時間が大きいと考えられる環境においては、前回の設定アグリゲート数に対する増減数(感度)を増加させることにより、設定アグリゲート数を大きく変化させる。一方最小リンク往復時間が小さいと考えられる環境においては、感度を減少させることにより、設定アグリゲート数を安定的に変化させる。
【0063】
式(1)で用いられる中継装置数は、
図4に示す通信装置1が代理通信する対象データが経由する中継装置の数である。中継装置数が少ないと考えられる環境においては、感度を増加させることにより、設定アグリゲート数を大きく変化させる。一方中継装置数が少ないと考えられる環境においては、感度を減少させることにより、設定アグリゲート数を安定的に変化させる。
【0064】
また式(1)において、ηまたはεを用いて設定アグリゲート数を調節することも可能である。設定アグリゲート数算出部23はさらに、予め設定アグリゲート数の最大値と最小値を決めておき、式(1)により算出した設定アグリゲート数が、最大値と最小値の範囲内に収まるように調整する。
【0065】
本発明の実施の形態において設定アグリゲート数算出部23は、オーバーヒア処理部21がオーバーヒアすると、中継データ11に、オーバーヒアした対象データと同じ宛先の対象データがあるか否か判定する。同じ宛先の対象データがなく、オーバーヒアした対象データの宛先が、最初の宛先となる場合、設定アグリゲート数算出部23は、オーバーヒアした対象データの宛先について設定アグリゲート数を算出する。他の実施例として、中継部22が、所定の受信装置宛にデータを送信した後、その受信装置について設定アグリゲート数を算出しても良い。
【0066】
図8を参照して、設定アグリゲート数算出部23の処理を説明する。
図8に示す例では、設定アグリゲート数を1ずつ増減する場合を示す。
【0067】
まずステップS301において、設定アグリゲート数算出部23は、オーバーヒア処理部21によってオーバーヒアされた対象データの宛先が、中継データ11の対象データの宛先に含まれるか、判定する。オーバーヒアされた対象データの宛先が、中継データ11の対象データの宛先に含まれる場合、設定アグリゲート数は既に算出されているので、そのまま処理を終了する。
【0068】
中継データ11の対象データの宛先に、オーバーヒアされた対象データの宛先が含まれていない場合、ステップS302において設定アグリゲート数算出部23は、乱数を発生し、ステップS303において、乱数と閾値を比較する。
【0069】
ステップS302で発生した乱数が、閾値よりも所定値以上小さい場合、ステップS304において設定アグリゲート数算出部23は、前回の設定アグリゲート数から1つ減らした値を、今回の設定アグリゲート数に設定する。なお、前回の設定アグリゲート数が予め設定された最小値の場合、設定アグリゲート数算出部23は、前回の設定アグリゲート数(最小値)を、今回の設定アグリゲート数に設定する。
【0070】
ステップS302で発生した乱数と閾値との差分が所定値以内の場合、ステップS305において設定アグリゲート数算出部23は、前回の設定アグリゲート数を、今回の設定アグリゲート数に設定する。
【0071】
ステップS302で発生した乱数が、閾値よりも所定値以上大きい場合、ステップS306において設定アグリゲート数算出部23は、前回の設定アグリゲート数から1つ増やした値を、今回の設定アグリゲート数に設定する。なお、前回の設定アグリゲート数が予め設定された最大値の場合、設定アグリゲート数算出部23は、前回の設定アグリゲート数(最大値)を、今回の設定アグリゲート数に設定する。
【0072】
一般的に、対象データの過去の発生傾向に応じて、設定アグリゲート数を増減する方法が考えられる。しかしながらこの方法では、代理通信対象の対象データの数が急激に増減する状況において、設定アグリゲート数を即座に対応させることは困難である。その結果、中継装置において対象データが滞留するなど、中継装置において送信待ちの対象データが適切に処理されない場合がある。
【0073】
これに対し本発明の実施の形態に係る中継装置は、乱数と閾値との比較に基づいて、設定アグリゲート数を増減する。従って中継装置による代理通信対象の対象データの数が急激に増減する状況においても、中継装置は、設定アグリゲート数を過剰に変化させることなく、効率的に代理通信を行うことが可能になる。また対象データの数が急に増えた場合でも、送信待ちの対象データの数が設定アグリゲート数を満たした時点で受信装置に向けて送信することができるので、送信待ちの対象データの送信タイミングを、対象データの発生量に応じて可変とすることができる。また送信待ちの対象データが設定アグリゲート数に達しなくても、送信待ちを開始してから所定時間経過すると送信されるので、通信の遅延も生じにくい。
【0074】
このように本発明の実施の形態に係る中継装置は、中継装置の中継データに溜まっているデータを適切にアグリゲートすることができる。
【0075】
(実施例)
図9および
図10を参照して、通信システムの動作を説明する。
図9は、通信装置として機能するノード1ないしノード7の接続状態を示す。
図9において、ノード1ないしノード5は、ノード7と通信する場合、ノード6が中継装置として機能する。ここでは、ノード1ないしノード5が送信装置として機能し、ノード7が受信装置として機能し、ノード6が中継装置として機能する場合を説明する。なお、実施例においてノード6は、0ないし3の範囲の乱数を出力する。
【0076】
実施例において、ノード6の設定アグリゲート数の初期値は4であり、閾値は3である。また式(1)のη、N、R
minは、それぞれ、1である。式(1)において、乱数値*2が2以上4未満の場合、設定アグリゲート数は、前回の設定アグリゲート数が、今回の設定アグリゲート数として算出される。乱数値*2が4以上の場合、設定アグリゲート数は、前回の設定アグリゲート数に1加算した値が、今回の設定アグリゲート数として算出される。乱数値*2が2未満の場合、設定アグリゲート数は、前回の設定アグリゲート数に1減算した値が、今回の設定アグリゲート数として算出される。
【0077】
図10に示す時間T1ないしT6について、通信システムの動作を説明する。
図10において設定アグリゲート数は、その時間に適用するアグリゲート対象のデータ数であって、乱数値は、設定アグリゲート数を算出するために発行された乱数の値である。データ発生数は、その時間に発生したデータの数であって、実アグリゲート数は、実際にアグリゲートされ送信されたデータの数である。中継待機数は、送信されずに中継データに残ったデータの数である。
【0078】
(1)時間T1
時間T1において、乱数1.5が算出され、設定アグリゲート数は、初期値4から変わらない。時間T1において、4つのデータが発生した場合、実アグリゲート数は4となり、中継待機数は0となる。
【0079】
具体的には、ノード1が、ノード7へデータを送信する。このとき、電波環境、ノード間の距離等によって、ノード7へデータが送信されない。そこでノード6は、オーバーヒアによって、ノード1からノード7への通信の失敗を検知し、データを保存する。ノード6は、データを即座に中継せずに、他のデータとのアグリゲートを待機する。
【0080】
またノード6は、ここで保存したデータが、ノード7へ代理通信する最初のデータである場合、式(1)等により設定アグリゲート数を算出する。例えば乱数値が1.5の場合、前回の設定アグリゲート数である初期値4が、設定アグリゲート数として算出される。
【0081】
その後ノード2が、ノード7へのデータの送信を試みるが、ノード7へデータが送信されない。ノード6は、オーバーヒアによって、ノード2からノード7への通信の失敗を検知し、データを保存する。ここで、ノード6が保存するノード7宛のデータ数は2で、設定アグリゲート数4に満たないので、ノード6は、ノード7宛のデータを中継しない。
【0082】
ノード3が、ノード7へのデータの送信を試みるが、ノード7へデータが送信されない。ノード6は、オーバーヒアによって、ノード3からノード7への通信の失敗を検知し、データを保存する。ここで、ノード6が保存するノード7宛のデータ数は3で、設定アグリゲート数4に満たないので、ノード6は、ノード7宛のデータを中継しない。
【0083】
ノード4が、ノード7へのデータの送信を試みるが、ノード7へデータが送信されない。ノード6は、オーバーヒアによって、ノード4からノード7への通信の失敗を検知し、データを保存する。ここで、ノード6が保存するノード7宛のデータ数は4で、設定アグリゲート数4に達する。そこでノード6は、ノード7宛のデータをアグリゲートして、ノード7に送信する。
【0084】
このように、時間T1において、設定アグリゲート数4に対して、4つのデータが発生し、実アグリゲート数は4となる。その結果、中継待機数は0となる。
【0085】
(2)時間T2
時間T2において、乱数0.9が算出され、設定アグリゲート数は、前回の設定アグリゲート数4から3になる。時間T2において、1つのデータが発生し、後続のデータが発生することなく所定時間が経過した場合、実アグリゲート数は1となり、中継待機数は0となる。
【0086】
具体的には、ノード5が、ノード7へのデータの送信を試みるが、ノード7へデータが送信されない。ノード6は、オーバーヒアによって、ノード5からノード7への通信の失敗を検知し、データを保存する。ここで保存したデータが、ノード7へ代理通信する最初のデータであるので、ノード6は、式(1)等により設定アグリゲート数を算出する。例えば乱数値が0.9の場合、前回の設定アグリゲート数の4から1を減算した3が、設定アグリゲート数として算出される。
【0087】
ノード6は、その後暫くオーバーヒアすることなく所定時間が経過すると、設定アグリゲート数に満たないまま、データを中継する。
【0088】
このように時間T2において、設定アグリゲート数3に対して、1つのデータが発生し、実アグリゲート数は1となる。その結果、中継待機数は0となる。
【0089】
(3)時間T3
時間T3において、乱数0.8が算出され、設定アグリゲート数は、前回の設定アグリゲート数3から2になる。時間T3において、1つのデータが発生し、後続のデータが発生したまま所定時間が経過した場合、実アグリゲート数は1となり、中継待機数は0となる。
【0090】
(4)時間T4
時間T4において、乱数2.9が算出され、設定アグリゲート数は、前回の設定アグリゲート数2から3になる。時間T4において、4つのデータが発生した状態で、ノード6の送信タイミングが到達すると、ノード6は、設定アグリゲート数の上限の3つのデータをアグリゲートして送信する。その結果、時間T4において実アグリゲート数は3となり、中継待機数は1となる。
【0091】
(5)時間T5
時間T5において、乱数2.6が算出され、設定アグリゲート数は、前回の設定アグリゲート数3から4になる。時間T5において、中継待機数が1の状態で1つのデータが発生し、後続のデータが発生しないまま所定時間が経過した場合、実アグリゲート数は2となり、中継待機数は0となる。
【0092】
(6)時間T6
時間T6において、乱数0.8が算出され、設定アグリゲート数は、前回の設定アグリゲート数4から3になる。時間T6において、ノード6の送信タイミングが到達するまでに4つのデータが発生すると、ノード6は、設定アグリゲート数の上限の3つのデータをアグリゲートして送信する。その結果、時間T6において実アグリゲート数は3となり、中継待機数は1となる。
【0093】
対象データの過去の発生傾向に応じて、設定アグリゲート数を増減する一般的な方法では、例えば、
図10に示す時間T4においてデータ発生数が急に増えたとしても、時間T1ないしT3においてデータ発生数が少ないことから、設定アグリゲート数を増やすことが難しい。従って、時間T4以降において、中継待機数が増加し、データの滞留が発生する場合がある。
【0094】
これに対し本発明の実施の形態によれば、乱数によって設定アグリゲート数を決定するので、過去のデータ発生数の傾向にかかわらず、設定アグリゲート数を増やし、中継待機数を抑制することができる。
【0095】
(その他の実施の形態)
上記のように、本発明の実施の形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなる。
【0096】
例えば、シーケンス図またはフローチャートに示す処理の流れは一例であって、異なる順序で処理が行われても良い。
【0097】
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。