(A)第1の実施形態
以下、本発明による中継装置及び通信システムの第1の実施形態を、図面を参照しながら詳述する。
(A−1)第1の実施形態の構成
図2は、この実施形態の通信システム1の全体構成を示すブロック図である。
第1の実施形態の通信システム1は、M個のGW20(20−1〜20−M)と、サーバ30とが配置されている。そして、それぞれのGW20の配下には、データ出力装置としてのGW20が1又は複数接続されている。図2では、各GW20には、それぞれN個のセンサ10(10−1〜10−N)が接続されているものとして図示しているが、各GW20に接続されるセンサ10の数は限定されないものである。また、図2において通信システム1には、センサ10も含まれる構成として図示しているが、本発明の通信システムにはセンサ10を含まない構成(GW20とサーバ30のみのシステムを販売)として実現する場合(例えば、GW20とサーバ30のみで通信システムを構築した後に、ユーザがGW20にセンサ10を接続する場合)や、場合等も含まれるものとする。
各GW20及びサーバ30は、ネットワークNに接続しており相互に通信することが可能な構成となっているものとする。この実施形態では、ネットワークNは、TCP/IP等により通信可能なIPネットワークであるものとして説明する。
各センサ10は、例えば、温度、湿度、ひずみ、加速度等を検知する種々のセンサ(いわゆるセンサネットワークを構成するセンサ)を適用することができる。センサ10は、所定のタイミングで検知結果のデータ(以下、「センサデータ」と呼ぶ)を上位のGW20に出力(供給)する。各センサ10がセンサデータを出力するタイミングは限定されないものであるが、この実施形態では、例えば、一定間隔(例えば、5秒間隔)で検知及びセンサデータの出力処理を行うものとする。センサ10とGW20との間の接続方式については限定されないものである。この実施形態では、センサ10とGW20との間は、例えば、RS232、RS485、RS422、USB等のシリーズのシリアルインタフェースを適用することができる。また、センサ10とGW20との間は、シリアルインタフェースに限らず、パラレルインタフェース(例えば、IEEE 1284等のインタフェース)や無線インタフェース(例えば、920MHz帯無線通信やBlueTooth(登録商標)等)を適用することができる。
サーバ30は、ネットワークNを介してGW20と通信し、各センサ10からのセンサデータを受信して処理する装置である。この実施形態では、サーバ30がセンサデータを受信(収集)し上位側(例えば、センサデータに基づく監視処理や統計的な処理等を行うアプリケーション)に引き渡すまでの構成を中心に説明する。
図2に示すように、この実施形態の例では、サーバ30は、エッジルータRを経由してネットワークNに接続する構成となっているものとする。すなわち、この実施形態では、各GW20から送出されたセンサデータのパケットは、エッジルータRを経由してサーバ30に供給されることになるものとする。したがって、通信システム1では、エッジルータRとサーバ30との間の通信路Cがボトルネックとなる可能性がある。例えば、エッジルータRが通信キャリアの設備であり、通信路Cが高速とはいえないディジタル専用回線(例えば、1Mbps以下のディジタル専用回線)であった場合、通信路Cがボトルネックとなり、サーバ30に流れ込むセンサデータの量によってはエッジルータRにセンサデータのパケットが滞留して輻輳状態になり得る。その場合、エッジルータRでセンサデータのパケットが長期間滞留したり廃棄されたりすることになる。なお、サーバ30と各GW20との間のネットワーク構成については、図2の構成に限定されないものである。すなわち、サーバ30と各GW20との間で輻輳が発生する可能性のある経路は、図2の例に限らず種々のパターンが考えられる。
次に、GW20(20−1〜20−M)の内部のハードウェア構成について、図3を用いて説明する。この実施形態では、各GW20は全て同じ構成であるものとして説明するが、接続するセンサ10の数等により基本的な構成を装置毎に変更するようにしてもよい。
図3に示すように、GW20は、制御部21、デバイス側IF部22、及びネットワーク側IF部23を有している。
制御部21は、GW20内の各構成要素を制御する機能を担っている。制御部21は、例えば、図示しないプロセッサ及びメモリ等を有するコンピュータにプログラム(実施形態に係る、通信処理プログラムを含む)をインストールすることにより構成することができる。なお、制御部21については、一部又は全部について専用の半導体チップ(例えば、ASIC:Application Specific Integrated Circuit)を用いて構成するようにしてもよい。この実施形態の制御部21は、ソフトウェア的には、後述するJAVA(登録商標)仮想マシン(以下、「JVM」とも表す)上のアプレットを用いて構成されているものとする。
デバイス側IF部22は、配下のセンサ10(10−1〜10−N)と接続するためのインタフェースを備えている。デバイス側インタフェース(以下、「IF」と呼ぶ)部22は、各センサ10(10−1〜10−N)と接続するためIF部24(24−1〜24−N)を備えている。図3に示すデバイス側IF部22では、各IF部24と各センサ10とは1対1(ポイントツーポイント)で接続された構成として図示しているが、マルチ接続の構成(IF部24から分岐したシリアルインタフェースを複数のセンサ10に接続する構成)としてもよいことは当然である。
デバイス側IF部22では、各IF部24は固定的に備える構成としてもよいが、脱着可能な図示しないインタフェースカード(脱着可能なモジュール型デバイス)を用いて、種々の組み合わせのインタフェースを適用可能とするようにしてもよい。また、デバイス側IF部22が備えるIF部24の数は、配下に接続するセンサ10の数に応じて変動することもあり得る。
ネットワーク側IF部23は、ネットワークNに接続するためのインタフェースである。ネットワーク側IF部23に適用されるインタフェースは、有線・無線に限定されず種々のインタフェースを適用することができる。ネットワーク側IF部23としては、例えば、種々の有線/無線LANインタフェースや、専用線用インタフェース(例えば、ディジタル専用回線に接続するためのインタフェース)や、携帯電話網に接続するための無線インタフェース(例えば、LTE(Long Term Evolution)等のネットワークインタフェース)を適用するようにしてもよい。
次に、サーバ30のハードウェア構成について図4を用いて説明する。
図4に示すように、サーバ30は、制御部31及びネットワークIF32を有している。
サーバ30は、ハードウェア的には、PCやワークステーション等のコンピュータ上にプログラムをインストールすることにより構築することができる。
制御部31は、例えば、図示しないプロセッサ及びメモリ等を有するコンピュータにプログラム(センサデータを受信して処理するプログラム)をインストールすることにより構成することができる。この実施形態の制御部31は、ソフトウェア的には、後述するJVM(JAVA仮想マシン)上のアプレットを用いて構成されているものとする。
次に、GW20とサーバ30の通信におけるソフトウェア的なアーキテクチャ(プラットフォーム)の構成について図5を用いて説明する。
図5に示すように、GW20及びサーバ30では、いずれもJVM上のアプレットを用いてセンサデータの送受信処理を行う構成となっているものとする。ただし、GW20及びサーバ30において、センサデータの送受信処理を行うソフトウェア(プログラム)の具体的な構成(採用するプラットフォームや、分散処理の構成等)については限定されないものである。
GW20の制御部21上では、図5に示すように、JVM200上で、GW向けのアプレット(以下、「GW−APL」と呼ぶ)201が動作する構成となっているものとする。また、GW20の制御部21上では、JVM200(GW−APL201)をTCP/IPの通信に対応させるドライバとしてのTCP/IP処理部202も動作しているものとする。
また、図5示すように、サーバ30の制御部31上においても、JVM300上で、サーバ30向けのアプレット(以下、「SV−APL」と呼ぶ)301が動作する構成となっているものとする。また、サーバ30の制御部31上では、JVM300(SV−APL301)をTCP/IPの通信に対応させるドライバとしてのTCP/IP処理部302も動作しているものとする。
この実施形態では、図5に示すように、GW−APL201及びSV−APL301のレイヤでは、MQTT(MQ Telemetry Transport)パケットを用いて、センサデータの送受信処理を行うものとする。なお、MQTTに替わって、HTTP(Hypertext Transfer Protocol)やCoAP(Constrained Application Protocol)等の他のIoT関連プロトコルが使用されても構わない。
そして、TCP/IP処理部202、302は、GW−APL201とSV−APL301との間のMQTTパケットをIPパケットにカプセリングして、GW20とサーバ30との間の通信経路を形成しているものとする。このとき、TCP/IP処理部202、302間のIP通信については、IPSec(Security Architecture for Internet Protocol)等の手順により暗号化処理が施されていることが、セキュリティ上は望ましい。
図5に示す通り、JVM200(GW−APL201)は、センサ10から出力されたセンサデータを取得する構成となっている。図5においては図示していないが、JVM200(GW−APL201)では、必要に応じて、デバイス側IF部22(IF部24)を介してセンサ10からセンサデータを取得するドライバ(例えば、当該IF部24に対応するシリアルインタフェースのドライバ)がインストールされているものとする。
次に、図5を用いて、GW−APL201とSV−APL301との間のセンサデータに関する通信経路について説明する。
まず、GW20のGW−APL201がセンサ10からセンサデータを取得し、サーバ30のSV−APL301に送信する際の経路について説明する。
GW−APL201は、サーバ30(SV−APL301)を宛先とし、ペイロードにセンサデータ(後述する付加情報を含む)を設定したMQTTパケットを生成して、TCP/IP処理部302に供給する。そして、TCP/IP処理部202は、供給されたMQTTパケットをIPパケットにカプセリングしてネットワークN上に送出する。そして、GW20のTCP/IP処理部202から送出されたセンサデータのIPパケットは、エッジルータR及び通信路Cを経由してサーバ30のTCP/IP処理部302に到達する。TCP/IP処理部302は、受信したセンサデータのIPパケットからセンサデータのMQTTパケットを抽出してJVM300(SV−APL301)に供給する。そして、SV−APL301は、供給されたMQTTパケットからセンサデータ(後述する付加情報を含む)を取得する。
次に、サーバ30のSV−APL301がセンサ10からセンサデータを受信したことのACK(確認応答信号)のパケットを、GW20のGW−APL201に送信する際の経路について説明する。
SV−APL301は、センサデータを受信すると、センサデータの送信元(送信元のGW20のGW−APL201)を宛先として、当該センサデータを受信したことを応答するACK(確認応答)のMQTTパケットを生成し、TCP/IP処理部302に供給する。そして、TCP/IP処理部302は、供給されたMQTTパケットをIPパケットにカプセリングしてネットワークN側に送出する。そして、サーバ30のTCP/IP処理部302から送出されたセンサデータのIPパケットは、通信路C及びエッジルータRを経由してネットワークN上に送出され、GW20のTCP/IP処理部202に到達する。TCP/IP処理部202は、受信したACKのIPパケットからACKのMQTTパケットを抽出してJVM200(GW−APL201)に供給する。そして、GW−APL201は、供給されたMQTTパケットからACK(ACKのメッセージ)を取得する。
次に、GW−APL201内部の機能的構成について図6を用いて説明する。
GW−APL201はJVM200上のアプレットであるが、機能的な構成(ソフトウェア/プログラムの機能的な構成)については図6のように示すことができる。
図6に示すように、GW−APL201は、制御処理部41、通信処理部42、センサデータ受信部43、センサデータパケット生成部44、及びデータ記憶部45を有している。
制御処理部41は、GW−APL201の全体動作を制御する機能(メインルーチンの機能)を担っている。
通信処理部42は、TCP/IP処理部202とMQTTパケットを送受信するインタフェースの機能を担っている。通信処理部42は、センサデータパケット生成部44から供給されたセンサデータのMQTTパケットをTCP/IP処理部302に供給する。また、通信処理部42は、TCP/IP処理部302から受信したACKのMQTTパケットを、制御処理部41に供給する。
センサデータ受信部43は、デバイス側IF部22(IF部24)に接続されたセンサ10から出力されたセンサデータを受信する機能を担っている。センサデータ受信部43は、例えば、センサ10からシリアルインタフェースとしてのIF部24を介して、一連のデータフレーム(シリアル信号の1つのデータ送信単位)が出力されると、当該データフレームをセンサデータとして取得し、センサデータパケット生成部44に供給する。
センサデータパケット生成部44は、センサデータ受信部43から供給されたセンサデータ(後述する付加情報を含む)をペイロードに設定したMQTTパケット(サーバ30のSV−APL301を宛先とするMQTTパケット)を生成して、通信処理部42に供給する。この実施形態では、センサデータパケット生成部44は、センサデータに付加情報を付加したデータをセンサデータパケットにセットするものとする。付加情報には当該センサデータの供給元のセンサ10の識別子(以下、「センサID」と呼ぶ)と、当該センサデータの観測時間(例えば、センサデータ受信部43が当該センサデータを受信した時刻)とが含まれるものとする。通信システム1では、各センサ10についてユニークとなるセンサIDが割り振られているものとする。なお、センサデータの付加情報の項目は上述の例に限定されない。また、サーバ30側で特に必要がなければ、GW20が送信するセンサデータに付加情報を付加する必要はない。
制御処理部41は、ACKパケットの受信状況に応じてサーバ30までの間の通信経路上の輻輳状態(以下、「通信輻輳状態」と呼ぶ)を判断し、その判断結果に応じて、センサデータパケット生成部44を制御する。この実施形態の制御処理部41は、センサデータパケットを送信してからACKパケットを受信するまでの応答時間に基づいて輻輳状態(輻輳の有無)を判断するものとする。
制御処理部41は、通信処理部42がセンサデータ(付加情報を含む)のMQTTパケットを送信してから、当該センサデータの送信に対して応答するACKのMQTTパケットが供給されるまでの時間を、所定のタイムアウト時間Tを限度としてタイマ計測(計時)する。具体的には、制御処理部41は、センサデータのMQTTパケットを送信した時点でタイマをセットし、タイムアウト時間T以内にACKパケットを受信しなかった場合タイムアウトを検知する。タイムアウト時間Tに設定する時間は限定されないものであるが、例えば、30秒程度の値を設定するようにしてもよい。
制御処理部41は、通信輻輳状態であると判断した場合、センサデータパケット生成部44を制御し、輻輳(サーバ30までの通信経路上の輻輳)を制御(軽減)する処理(以下、「輻輳制御処理」と呼ぶ)を開始させる。具体的には、制御処理部41は、輻輳制御処理として、センサデータを所定の方式で圧縮処理してからMQTTパケットに設定するようにセンサデータパケット生成部44を制御する処理を行う。また、制御処理部41は、通信輻輳状態から通常の状態(通信輻輳状態でない状態)に復帰したことを確認すると、輻輳制御処理を終了する制御(センサデータの圧縮処理を解除する制御)を行う。センサデータパケット生成部44で用いられる圧縮方式は限定されないものであり種々のデータ圧縮方式(例えば、ZIPやrar等)を適用することができる。
データ記憶部45は、制御処理部41が行う制御処理で用いられる種々の設定データ等が記憶されている領域である。第1の実施形態において、データ記憶部45には、センサデータを送信からACKを受信するまでのタイムアウト時間T等が格納されている。データ記憶部45には、予めタイムアウト時間Tを設定しておくようにしてもよいし、所定のタイミング(例えば、起動時や所定の期間ごとのタイミング)で、サーバ30等の外部装置から取得するようにしてもよい。
次に、SV−APL301内部の機能的構成について図7を用いて説明する。
SV−APL301はJVM300上のアプレットであるが、機能的な構成(ソフトウェア/プログラムの機能的な構成)については図7のように示すことができる。
図7に示すように、SV−APL301は、制御処理部51、通信処理部52、センサデータ抽出部53、センサデータ処理部54、及びデータ記憶部55を有している。
制御処理部51は、SV−APL301の全体動作を制御する機能(メインルーチンの機能)を担っている。また、制御処理部51は、オペレータの操作(例えば、GUI画面やコマンドラインを用いた操作)に応じて、各GW20に対する設定制御処理(例えば、タイムアウト時間T等の設定データの設定処理)に対応するようにしてもよい。
通信処理部52は、TCP/IP処理部302との間でMQTTパケットを送受信するインタフェースの機能を担っている。通信処理部52は、TCP/IP処理部302から受信したセンサデータのMQTTパケットを、センサデータ抽出部53に供給する。また、通信処理部52は、センサデータのMQTTパケットを受信すると、制御処理部51の制御に基づき、当該受信に応答するACKのMQTTパケットを生成して、センサデータのMQTTパケットの送信元に送信(返答)する処理を行う。
センサデータ抽出部53は、通信処理部52から供給されたセンサデータのMQTTパケットからセンサデータ(当該センサデータに付加された付加情報を含む)を抽出して、センサデータ処理部54に供給するものである。センサデータ抽出部53は、受信したMQTTパケットのペイロードが圧縮されている場合には、圧縮データを解凍(復元)してセンサデータを取得する。センサデータ抽出部53では、GW20側で用いられた圧縮方式に対応する解凍(復元)処理を行う。
センサデータ処理部54は、供給されたセンサデータについて所定の処理を行う。センサデータ処理部54がセンサデータを処理する内容については限定されないものである。センサデータ処理部54は、例えば、センサデータをリアルタイムに監視する処理(例えば、グラフの出力する処理や、異常等の検知結果を出力する処理)を行ったり、図示しない上位アプリケーション(例えば、リアルタイムにセンサデータを監視するアプリケーション)や上位装置に供給する処理を行うようにしてもよい。センサデータの処理(例えば、監視方式)の具体的な内容については、種々のセンサデータを処理するアプリケーションと同様の処理を適用することができるため、ここでは詳しい説明を省略する。
データ記憶部55は、制御処理部51が行う制御処理で用いられる種々の設定データ等が記憶されている領域である。
(A−2)第1の実施形態の動作
次に、以上のような構成を有する第1の実施形態の通信システム1の動作を説明する。
まず、GW20において、タイムアウト時間T等の設定データ(パラメータ)を、サーバ30から取得するとした場合の動作の例について図8を用いて説明する。
図8(a)では、GW20が起動時にサーバ30から設定データをダウンロードする例について示したシーケンス図である。
図8では、まず、GW20(GW−APL201)は起動すると(S111)、サーバ30(TCP/IP処理部202)と通信(例えば、センサデータと同じ経路で通信して設定データを要求する(S112)。
次に、サーバ30(SV−APL301)は、GW20からの設定データの要求を受付けると最新の設定データ(必要に応じて各GW20の固有データ)を返答する(S113)。
そして、GW20(GW−APL201)は、サーバ30(SV−APL301)から受信した設定データを記憶(データ記憶部45に記憶)する(S114)。
図8(b)では、サーバ30(SV−APL301)が、オペレータの操作に応じてGW20(GW−APL201)に設定データを設定する例について説明する。
図8(b)では、まず、サーバ30(SV−APL301)がオペレータの操作(例えば、GUI操作やコマンドラインによる操作)に応じて、指定されたGW20に対する設定データの入力を受付けて(S121)、指定されたGW20に送信する(S122)。なお、このとき、サーバ30(SV−APL301)は、同時に複数のGW20の設定を受付けるようにしてもよい。
そして、設定データを受信したGW20(GW−APL201)は、受信した設定データを記憶(データ記憶部45に記憶)する(S123)。
次に、通信システム1の全体の動作の例について図1のシーケンス図を用いて説明する。
図1のシーケンス図では、例として、GW20−1がセンサ10−1、10−2から取得したセンサデータを、サーバ30に送信する例について示している。
図1に示すとおり、ここでは、まず、センサ10−1がGW20−1にセンサデータを送信したものとする(S201)。
センサ10−1からセンサデータが供給されると、GW20−1(GW−APL201及びTCP/IP処理部302)は、当該センサデータをセットしたパケット(MQTTパケットをIPでカプセリングしたパケット)を生成して、サーバ30に送信する(S202)。この時点では、GW20−1(GW−APL201)は、輻輳制御処理を開始しておらず、圧縮(MQTTのペイロードを圧縮)していないセンサデータを送信したものとする。
次に、サーバ30(SV−APL301及びTCP/IP処理部302)は、GW20−1からのセンサデータのパケットを受信すると、当該パケット(MQTTパケットをIPでカプセリングしたパケット)からセンサデータを抽出して、ACKパケットを返信する(S203)。そして、ここでは、GW20−1(GW−APL201)で、センサデータパケットを送信(ステップS202で送信)してからタイムアウト時間T以内にACLパケットが受信されたものとする。
そして、その後、センサ10−2がGW20−1にセンサデータを送信したものとする(S204)。
センサ10−2からセンサデータが供給されると、GW20−1は、当該センサデータをセットしたパケットを生成して、サーバ30に送信する(S205)。この時点では、GW20−1(GW−APL201)は、輻輳制御処理を開始していないため、圧縮していないセンサデータを送信する。
そして、その後、サーバ30(SV−APL301及びTCP/IP処理部302)は、GW20−1からのセンサデータのパケットを受信してACKパケットを返答する処理を行ったものとする(S206)。しかしながら、ここでは、GW20−1とGW20−1との間の通信経路上の輻輳(例えば、エッジルータRとサーバ30との間の通信路Cがボトルネックになったことに起因するエッジルータR上の輻輳)により、タイムアウト時間Tが経過するまでの間に、GW20−1(GW−APL201)に当該ACKパケットは到達しなかったものとする。
そうすると、GW20−1(GW−APL201)において、タイムアウトが発生し、通信輻輳状態が検知され、輻輳制御処理が開始されることになる(S207)。GW20−1(GW−APL201)は、輻輳制御処理が継続している間は、センサデータのパケットを生成する際に、センサデータを圧縮してMQTTパケットのペイロードに挿入することになる。
そして、その後、センサ10−1がGW20−1にセンサデータを送信したものとする(S208)。
センサ10−1からセンサデータが供給されると、GW20−1は、当該センサデータをセットしたパケットを生成して、サーバ30に送信する(S209)。この時点では、GW20−1(GW−APL201)は、輻輳制御処理を開始(継続)しているため、センサデータを圧縮してMQTTのペイロードに挿入したパケットが送信されることになる。
そして、この時点においても未だ、GW20−1とGW20−1との間の通信経路上の輻輳が解消されておらず、タイムアウト時間Tが経過するまでの間に、GW20−1(GW−APL201)に当該ACKパケットは到達しなかったものとする(S210))。したがって、この時点でもGW20−1(GW−APL201)は、輻輳制御処理を解除せずに継続することになる。
例えば、エッジルータRとサーバ30との間の通信路Cがボトルネックになったことに起因するエッジルータR上の輻輳が発生した場合を想定する。そして、各GW20−1〜20−Mが輻輳制御処理を開始して、センサデータを圧縮して送信するため、通信路C上のトラヒックは徐々に低減してゆき、通信輻輳状態が解消した状態(タイムアウト時間T以内にACKパケットがGW20に到達できる状態)となると、各GW20(GW−APL201)は、輻輳制御処理を終了(センサデータの圧縮処理を解除)することになる。
ここでは、ステップS210の後のタイミングで、通信路C上のトラヒックは徐々に低減して、通信輻輳状態が解消した状態となったものとする。
そして、通信輻輳状態が解消した後、センサ10−2からセンサデータがGW20−1(GW−APL201)に供給されたものとする(S211)。
センサ10−2からセンサデータが供給されると、GW20−1は、当該センサデータをセットしたパケットを生成して、サーバ30に送信する(S212)。この時点では、通信輻輳状態が解消していたとしても、GW20−1(GW−APL201)は、未だ輻輳制御処理を継続している状態である。したがって、この時点では、GW20−1(GW−APL201)は、センサデータを圧縮してMQTTのペイロードに挿入したパケットを送信することになる。
そして、サーバ30(SV−APL301及びTCP/IP処理部302)は、GW20−1からのセンサデータのパケットを受信すると、当該パケットからセンサデータを抽出して、ACKパケットを返信する(S213)。上述の通り、この時点では、通信輻輳状態が解消しているため、GW20−1(GW−APL201)でタイムアウト時間T以内にACKパケットが受信されたものとする。
そうすると、GW20−1(GW−APL201)では、通信輻輳状態の解消が検知され、輻輳制御処理が終了(圧縮処理を終了)することになる(S214)。以後、GW20−1(GW−APL201)は、輻輳制御処理が再開するまでの間は、センサデータのパケットを生成する際に、センサデータを圧縮せずにMQTTパケットのペイロードに挿入することになる。
そして、その後、センサ10−1からセンサデータがGW20−1(GW−APL201)に供給されたものとする(S215)。
センサ10−1からセンサデータが供給されると、GW20−1は、当該センサデータをセットしたパケットを生成して、サーバ30に送信する(S216)。この時点では、GW20−1(GW−APL201)は、輻輳制御処理を開始していないため、圧縮していないセンサデータを送信する。
そして、サーバ30(SV−APL301及びTCP/IP処理部302)は、GW20−1からのセンサデータのパケットを受信すると、当該パケットからセンサデータを抽出して、ACKパケットを返信する(S217)。
(A−3)第1の実施形態の効果
第1の実施形態によれば、以下のような効果を奏することができる。
第1の実施形態の通信システム1では、GW20が、ACKパケットの受信状況に基づいてサーバ30との間の通信輻輳状態の有無を検出し、通信輻輳状態を検出した場合には、輻輳制御処理として送信するセンサデータ(付加情報を含む)の圧縮を行う。これにより、第1の実施形態では、ネットワークNの構成(各GW20からサーバ30までの通信経路の構成)に依存せずに輻輳制御が可能となる。
(B)第2の実施形態
以下、本発明による中継装置及び通信システムの第2の実施形態を、図面を参照しながら詳述する。
(B−1)第2の実施形態の構成
第2の実施形態の通信システム1の構成についても、上述の図2〜図7を用いて示すことができる。以下では、第2の実施形態の通信システム1の構成について第1の実施形態の差異のみを説明する。
第1の実施形態のGW20を構成する制御処理部41は、通信輻輳状態(サーバ30までの通信経路上で輻輳が発生している状態)と判断した場合、輻輳制御処理として、センサデータパケット生成部44を制御し、センサーデータ(付加情報を含む)を圧縮して送信させる処理を行う。これに対して、第2の実施形態の制御処理部41は、通信輻輳状態と判断した場合、輻輳制御処理として、各GW20に設定された遅延時間αだけ時間をずらして(タイミングを遅らせて)センサデータのパケットを送出させるようにセンサデータパケット生成部44を制御する処理を行う。すなわち、第2の実施形態のGW20では、設定データ(データ記憶部45に記憶する設定データ)として、タイムアウト時間Tに加えて、遅延時間αを記憶しているものとする。
そして、第2の実施形態のセンサデータパケット生成部44は、生成したセンサデータパケットについて、制御処理部41の制御に従った遅延時間αだけ保留してから送信(通信処理部42に供給)する処理を行う。
また、この実施形態では、GW20−1〜20−Mに対して、それぞれ遅延時間α1〜αMが設定されているものとして説明する。遅延時間α1〜αMは全て異なる時間(各GW20について固有の時間)としてもよいし、通信システム1上のGW20を複数のグループに分けて各グループに固有の時間としてもよい。
これにより、第2の実施形態では、通信輻輳状態となった場合でも、各にGW20−1〜20−Mに固有の遅延時間α1〜αMを設定することにより、GW20−1〜20−Mからセンサデータパケットを送出させるタイミングを分散させ、通信輻輳状態を制御(軽減)することができる。
(B−2)第2の実施形態の動作
次に、以上のような構成を有する第2の実施形態の通信システム1の動作を説明する。
図9は、第2の実施形態の通信システム1の全体の動作の例について示したシーケンス図である。図9では、上述の図1と同一の動作には同一のステップ番号(符号)を付している。
図9では、ステップS209、S212が、ステップS209A、S212Aに置き換わっている点で上述の図1と異なっている。
以下では、第2の実施形態の動作について、第1の実施形態との差異を説明する。
上述の通り、第2の実施形態では、輻輳制御処理の内容だけが異なっているため、以下では第2の実施形態における輻輳制御処理を中心に説明する。
図9では、GW20−1(GW−APL201)において、ステップS207で輻輳制御処理を開始してから、ステップS214で輻輳制御処理が終了するまでの間、輻輳制御処理として、センサデータパケットを送信する際に、GW20−1に設定された遅延時間α1だけ遅延させる制御が行われる。具体的には、図9では、GW20(GW−APL201)で輻輳制御処理が継続している期間、ステップS209A、S212Aでセンサデータパケットを送信する際に、送信タイミングを遅延時間α1だけ遅延させる制御が行われる。
(B−3)第2の実施形態の効果
第2の実施形態によれば、以下のような効果を奏することができる。
第2の実施形態の通信システム1では、GW20が、ACKパケットの受信状況に基づいてサーバ30との間の通信輻輳状態の有無を検出し、通信輻輳状態を検出した場合には、各GW20が、センサデータのパケットを送信するタイミングを、固有の遅延時間α分だけ遅延させる処理を行う。これにより、第2の実施形態の通信システム1では、各GW20で通信輻輳状態が検出された場合、各GW20によるセンサデータのパケット送信のタイミングを分散させて、通信輻輳状態を軽減させることができる。これにより、第2の実施形態では、第1の実施形態と同様にネットワークNの構成(各GW20からサーバ30までの通信経路の構成)に依存せずに輻輳制御が可能となる。
(C)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(C−1)第2の実施形態において、各GW20で通信輻輳状態が検出された場合、各GW20に、センサデータのパケット送信タイミングを分散(遅延)させるだけでなく、第1の実施形態と同様にセンサデータの圧縮処理を実行させるようにしてもよい。
(C−2)上記の各実施形態において、GW20(GW−APL201)は、センサデータのパケットを送出してからタイムアウト時間Tを経過するまでの間にACKパケットが受信できない場合(タイムアウトが発生した場合)、通信輻輳状態と判断するが、一度のセンサパケットだけでなく複数のセンサパケットで連続してタイムアウトが発生した場合に輻輳状態を判断するようにしてもよい。例えば、GW20(GW−APL201)は、5回連続してタイムアウトが発生した場合(5回連続してセンサデータのパケットを送信しても1度もタイムアウト時間T以内にACKパケットを受信できない場合)に、通信輻輳状態を判断するようにしてもよい。
(C−3)上記の各実施形態の通信システムでは、データを出力するデータ出力装置としてセンサを適用する例について説明したが、本発明の通信システムにおけるデータ出力装置は、センサに限定されず、種々のデータ出力を行う端末を適用することができる。例えば、本発明の通信システムにおいて、IoTに対応した家電製品(例えば、種々のイベントデータを出力する冷蔵庫、エアコン、給湯器等)をデータ出力装置として適用するようにしてもよい。