説明

通信装置

【課題】分散システムに属する機器間で発生した通信イベントに基づき、該通信イベントに関する情報を、一定の方法下での効率的な収集、検索に適するように生成することができる通信装置を提供すること。
【解決手段】通信制御部は、他の機器との間に発生した通信イベントに基づき、該通信イベントの相手方の装置識別子pを少なくとも含む、該通信イベントの属性Cを特定する。イベントエンコード部は、与えられた自装置識別子nと通信イベントの発生時刻tとから、与えられたセキュアハッシュ関数h()および与えられた定数aを用いて、キー値Kを、式K=h(n)+a・tに従い求め、かつ、自装置識別子nと発生時刻tと通信イベントの属性Cとを用いて、n,t,Cの組に1対1に対応するバリュー値Vを求める。送信部は、キー値Kとバリュー値Vとの組を外部ストレージ装置に送出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、他の機器との間で発生した通信イベントに基づき該通信イベントに関する情報を生成する通信装置に関する。
【背景技術】
【0002】
個々に特定の機能を有する様々な機器がネットワークを介して分散化されそれぞれに機能する分散システムの構築ないしは利用が始まっている(スマートグリッド、分散ビル管理システムなど)。このような分散システムでは、機器どうしがネットワークを介して必要な時に必要な情報通信を行う。通常、その通信に関わった機器は、機器どうしの間で発生した通信イベントに基づいて、そのイベントに関する一定の情報を生成しログとして残す。
【0003】
一方、このような分散システムでは、一般に、個別の機器を監視しているだけでは、システムの全体との関わりの把握が難しい。例えば、障害が発生した場合などは、障害が観測された機器から遡ってシステム中のどこを調査し、どのように対策をすればよいかというような追跡が、システムの規模の拡大に従って非常に複雑で著しく困難になる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−246065号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、分散システムに属する機器間で発生した通信イベントに基づき、該通信イベントに関する情報を、一定の方法下での効率的な収集、検索に適するように生成することができる通信装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
実施形態の通信装置は、通信制御部と、イベントエンコード部と、送出部とを持つ。通信制御部は、他の機器との間に発生した通信イベントに基づき、該通信イベントの相手方の装置識別子pを少なくとも含む、該通信イベントの属性Cを特定する。イベントエンコード部は、与えられた自装置識別子nと前記通信イベントの発生時刻tとから、与えられたセキュアハッシュ関数h()および与えられた定数aを用いて、キー値Kを、式K=h(n)+a・tに従い求め、かつ、前記自装置識別子nと前記発生時刻tと前記通信イベントの前記属性Cとを用いて、n,t,Cの組に1対1に対応するバリュー値Vを求める。送出部は、前記キー値Kと前記バリュー値Vとの組を外部ストレージ装置に送出する。
【図面の簡単な説明】
【0007】
【図1】実施形態の通信装置が配置、接続される関係を説明する装置関連図。
【図2】実施形態の通信装置の主要な内部構成を示すブロック図。
【図3】実施形態の通信装置が送出先とするストレージ装置(分散テーブル)におけるデータ構造を説明する概念図。
【発明を実施するための形態】
【0008】
以上を踏まえ、以下では実施形態の通信装置を図面を参照しながら説明する。まず、図1は、実施形態の通信装置が配置、接続される関係を説明している。
【0009】
通信装置N1、N2、N3、N4、(・・・)は、それぞれ、ネットワークを介して相互に通信できるように、このネットワークに接続されたノード装置である。例えば、ネットワークの全体としてスマートグリッドやマイクログリッドを想定する場合は、通信装置N1等は、例えば、発電機のコントローラ、太陽電池や風力発電などのパワーコンバータに搭載されたコントローラ、電気自動車やプラグインハイブリッド自動車の充電装置、ホームエネルギー管理システムの制御装置、商業ビルのエネルギー管理システムの制御装置、工業設備に関連する制御装置、電力系統監視装置、通信機能を具備する電力量計(スマートメータ)、スマートメータに対応する自動検針装置などの一部としてそれらに搭載された通信装置である。
【0010】
これらの通信装置N1等は、それらの装置どうしがネットワーク(例えばインターネット)を介して、装置の機能に応じたプロトコルを用い必要な時に必要な情報通信を行う。通常、その通信に関わった装置は、装置どうしの間で発生した通信イベントに基づいて、そのイベントに関する一定の情報を生成しログとして残す。
【0011】
図1では、例示として次のような通信イベントの発生を示している。すなわち、通信装置N1から同N2に、時刻t1で、ある通信イベント(サブスクライブ)が発生し、通信装置N1から同N3に、時刻t2で別の通信イベント(サブスクライブ)が発生し、さらに時刻t5でさらに別の通信イベント(アンサブスクライブ)が発生している。また、通信装置N2から同N4に、時刻t3でさらに別の通信イベント(サブスクライブ)が発生し、通信装置N3から同N4に、時刻t4でさらに別の通信イベント(サブスクライブ)が発生している。
【0012】
これにより、通信装置N1では、ログとして、「N1@t1 | Sd N2」「N1@t2 | Sd N3」「N1@t5 | uSd N3」が生成され保存される。通信N2、N3、N4についても、それぞれ、図1中に示すようにログが生成され保存される。ここで、ログの縦棒(|記号)の左側は、K(後述)およびV(後述)の双方に関係する要素であり、右側は主にVのみに関連する要素である。また、ログ中の“S”は、Subscribe(サブスクライブ)、“Sd”は、Subscribed(サブスクライブド:サブスクライブの受動形の略記法)であり、“uS”は、Unsubscribe(アンサブスクライブ)、“uSd”は、Unsubscribed(アンサブスクライブド:アンサブスクライブの受動形の略記法)である。この例では、通信装置N1が情報の発信元であり、通信装置N2、N3を介して、通信装置N4に情報が流れている。この場合、通信装置N4にとって、通信装置N1が発信元であることは何ら認識されていない。
【0013】
この実施形態は、通信イベントに関する情報を、情報の流れの、より下流になった通信装置から遡って事象の全容を容易に調査できるようにすること、特に、それに向くように通信イベントに関する情報をストレージ装置(分散テーブル)100に記録することを目的としている。ここで、ストレージ装置100は、put(key,value)の形式で書き込みを行い、get(key)→valueの形式で読み出しを行うことができるテーブルであることを想定する。分散テーブルとしては、分散ハッシュテーブルを用いることができるが、次の条件を満たす別の方式でもよい。
【0014】
すなわち、この分散テーブルは、put(key,value)で、データエントリvalueをキーkeyに登録することができ、このあと、データエントリvalueをキーkeyから取得するのに、get(key)→valueでなすことができ、かつ、データエントリvalueのリスト[value]をキー範囲[key1,key2)から取得するのに、getRange(key1,key2)→[value]でなすことができるものであればよい。
【0015】
図2は、実施形態の通信装置N1、N2、N3、N4、・・・(以下、代表して「通信装置N1」という)のそれぞれにおける、その主要な内部構成を示している。図2に示すように、この通信装置N1は、通信制御部11、出力管理メモリ12、入力管理メモリ13、時計14、イベントエンコーダ15、送出部16、分散テーブル管理部17を有する。
【0016】
通信制御部11は、他の機器(通信装置)と例えばインターネットで接続されており、この装置との間に発生した通信イベントに基づき、該通信イベントの相手方の装置識別子pを少なくとも含む、該通信イベントの属性Cを特定する。属性Cの例として、相手方の装置識別子pに加え、通信イベントの情報フローの方向d、通信イベントの通信識別子(セッション識別子)sの組を挙げることができる。属性Cとして、その通信イベントの発生時刻tを含めることにしてもよい。通信識別子sは、相手方との交換で相手方におけるものと同じものとして特定する。同じ相手方との複数の情報フローが発生した場合には、その都度、別の通信識別子sを交換、特定する。
【0017】
情報フローの方向dとは、その通信イベントにおいて関係する自身と相手方との間での情報の流れの方向である。この方向dについては、その通信イベントにおいて、一方がサーバ、他方がクライアントであると位置づけられるとしても、実質的な情報の流れで規定し、いずれも情報の発信元になり得るとして定義される。例えば、一方が検針サーバ、他方がスマートメータ(クライアント)である場合、スマートメータによる測定値の検針サーバへの送信は、クライアントが情報発信の側である。また、スマートメータが異常状態に陥り検針サーバにその通知を行う場合も同様である。逆に、検針サーバからスマートメータに対して負荷制御コマンドを送出する場合は、検針サーバが情報発信の側である。
【0018】
また、上記とは別の属性Cの例として、通信イベントの情報フローの方向dに代えて、次のものを用いるようにしてもよい。すなわち、dに代えて、この通信イベントが、通信イベントの相手方にサブスクライブして発生したもの、通信イベントの相手方からサブスクライブされて発生したもの、通信イベントの相手方にアンサブスクライブして発生したもの、および通信イベントの相手方からアンサブスクライブされて発生したものの4種のうちのいずれであるかを示す情報eを用いる。この場合は、通信装置N1が参加するネットワークが、いわゆるパブリッシュ-サブスクライブ(publish-subscribe)ネットワークである場合に好適に適用できる。
【0019】
通信制御部11は、自身が情報の発信元になった通信イベントの場合は、出力管理メモリ12に、その属性Cを含むログを記録し保存する。また、通信制御部11は、自身が情報の受け手となった通信イベントの場合は、入力管理メモリ13に、その属性Cを含むログを記録し保存する。これらは、通信装置(通信装置N1等)個々における通信イベント管理のためである。出力管理メモリ12、入力管理メモリ13は、これらのログ情報を格納可能なメモリである。通信制御部11は、また、特定した属性Cをイベントエンコーダ15に出力する。この出力は時刻tの情報を含む。
【0020】
時計14は、発生した通信イベントの発生時刻tを通信制御部11が特定するために時刻情報を提供する時計である。時刻tとしては、UNIX(登録商標)標準時間や、ある共通基準点からの経過秒数を用いることができる。
【0021】
イベントエンコーダ15は、与えられた自装置識別子nと、通信制御部11から渡された、通信イベントの発生時刻tとから、与えられたセキュアハッシュ関数h()および与えられた定数aを用いて、キー値Kを、式K=h(n)+a・tに従い求める。さらに、自装置識別子nと、通信制御部11から渡された、発生時刻tと通信イベントの属性Cとを用いて、n,t,Cの組に1対1に対応するバリュー値Vを求める。
【0022】
自装置識別子nとしては、例えば、IPネットワークであれば、IPv4アドレスまたはIPv6アドレスと、トランスポート層プロトコル(TCP/UDPなど)と、ポート番号とを組み合わせたものをセキュアハッシュ関数に通して得られたものを使用できる。あるいはこれに代えて、時刻や乱数から生成したUUID(universally unique identifier)等を使用することもできる。これらの事情は、説明が前後するが、通信制御部11が特定する、通信イベントの相手方の装置識別子pについても、相手方の装置においては同様である。
【0023】
イベントエンコーダ15に与えられたセキュアハッシュ関数h()としては、SHA−1などの公知のセキュアハッシュ関数h(k)→{x|x∈H}(ただしHはハッシュ値空間)を用いることができる。定数aは、時刻がどれだけ進めばハッシュ値であるキー値Kを、ハッシュ値空間H内でをどれだけ進ませるかを規定する定数である。定数aは、換言すると、特定の通信装置(N1、・・・)がストレージ装置100に送出する情報を、その分散テーブル内で適切に振り分けるためのパラメータとも言える。
【0024】
定数aについては、例えば、以下のように決めておくことができる。前提としてtは秒数で表わす。ハッシュ値空間Hのビット幅bは、セキュアハッシュ関数h(k)によって定まるが、仮にb=128ビットであるとして、1年(31536000秒)でハッシュ値空間Hを1周するようにバリュー値Vを振り分けるためには、aは、a=2128/31536000=1.08×1031になる。簡略的には、定数aとして、2のべき乗の数として、この場合、a=2103(=1031.0061)を用いるようにしてもよい。定数aとして2のべき乗の数を用いる場合、式K=h(n)+a・tにおいて演算a・tはビットシフトになり簡単になる。
【0025】
n,t,Cの組に1対1に対応するバリュー値Vを求めるには、例えば、与えられたリスト化関数list()を用いて、V=list(t,d,n,p,s)で求めればよい(dに代えてeを用いる場合には、V=list(t,e,n,p,s)を用いる)。ちなみに、このようなリスト化関数list()を用いた場合、逆関数であるアンリスト化関数unlist()を用いれば、Vを引数に用いてunlist(V)により、t,d,n,p,sの組(またはt,e,n,p,sの組)を求めることができる。
【0026】
イベントエンコード部15が求めたキー値Kおよびバリュー値Vは、イベントエンコード部15から送出部16に送られる。送出部16は、送られてきたK、Vの組をストレージ装置100に送出、登録する。なお、ストレージ装置100が分散ハッシュテーブルを利用している場合であっても、このテーブルでKに対してセキュアハッシュ化関数の適用を行うには及ばない。これは、すでにイベントエンコード部15でh(n)の演算がなされていて同様の効果を得ているため、および、連続した時系列の通信イベントに関する情報の検索容易化を図るためである。
【0027】
分散テーブル管理部17は、上記説明の動作とは直接に関係しないが、以下の機能を有している。すなわち、定期的にストレージ装置100の状況を確認し、利用可能な分散テーブルノードを確認する。ストレージ装置100が利用している分散テーブルが分散ハッシュテーブルで、例えばChordアルゴリズムを利用している場合であれば、ランダムな値をKにセットした探索を行い、再帰問い合わせにより利用可能なテーブルノードを学習しておく。
【0028】
次に図3は、実施形態の通信装置が送出先とするストレージ装置(分散テーブル)におけるデータ構造を概念的に説明している。同図において、通信イベントを表わす符号については図1と共通する。
【0029】
分散ハッシュテーブルをはじめとする分散テーブルにおいては、データの書き込みおよびアクセスが分散していることが、効率的に動作するための必須要件である。通常は、任意のキーに対してセキュアハッシュ関数を適用することにより、任意の分布を持つキー群に対してハッシュ値の分布を一様としてアクセスを分散させることができる。
【0030】
上記説明の実施形態においては、世界中の様々な装置が相互に通信を行う可能性があり、その場合、通信を行う装置の多様性は、通信自体の多様性に比べれば小さい。したがって、自装置識別子nをキーに用い、h(n)でハッシュ化してこれを分散ハッシュテーブルに書き込むと、特定のテーブルノードに書き込まなければならないデータ量が時間経過に従って線形に増大することになる。一方で、通信自体をキーにハッシュ化してこれを分散ハッシュテーブルに書き込むと、時系列に通信イベントが意味を有していてこれを利用(検索)しようとする場合に処理が非常に困難になってしまう。
【0031】
そこで、上記説明の実施形態においては、装置ごとの分散性をh(n)によって保証しつつ、近傍の時間の通信イベントに関する情報がテーブルノードの連続した領域に格納されかつ経時的に負荷分散がなされるように、キーとして、h(n)にa・tを加えたものを使用する。
【0032】
このようにすれば、例えば、通信装置N1、N2での通信イベントの発生については、概念的に、図3上段に示すようにテーブルに保存される。つまり、保存される場所の起点はh(n)であり、これが通信装置ごとに決定されるので、擬似的に、通信装置ごとに分散テーブルが存在するように見える。実際は、ひとつの分散テーブルをすべての通信装置が共有している(図3下段)。ストレージ装置(分散テーブル)100の利用については、以下で述べる適用例でさらに説明する。
【0033】
(適用例1)
分散システムとして、スマートグリッドを考える。このスマートグリッドに、電気自動車の充電装置が接続されている。また、太陽電池に搭載のコントローラも接続されている。スマートグリッドには、これら以外にも多数の装置が接続されており、これら間で通信イベントが発生するたびに、各装置が上記説明のようにストレージ装置(分散テーブル)100に対して、キー値K、バリュー値Vの組を送出、登録している。ここで、上記充電装置への給電が停止したとする。
【0034】
給電の停止に至るステップは、ここでは例えば、次のようなものであったとする。1.地域の太陽電池による発電量の低下。2.地域全体の電力供給量が不安定化することが、地域EMS(energy management system)により予測される。3.地域の充電装置運営会社に対する需給調整依頼。4.充電装置運営会社から充電装置への給電停止指示。
【0035】
このとき、4番目のステップの結果のみを観測した充電装置の側からは、給電停止の原因は釈然としない。そこで、充電装置(または電気自動車)に搭載されたEMSコンピュータが、充電装置の自装置識別子nを取得し、このnと事象の発生時刻tとから、K=h(n)+a・tを計算する。その上で、a・tの想定される誤差幅tdを考慮して、ストレージ装置(分散テーブル)100に対して、getRange(K−td,K+td)を実行する。なお、誤差幅tdに設定に当たっては、例えば、通信のやりとりによる遅延時間 + 時計のずれから来る時刻のずれ + 命令を受信してから事象が発生するまでの想定遅延時間、の計算で得た値を考慮する。
【0036】
ストレージ装置(分散テーブル)100への上記のような検索により、時刻t付近に存在する、充電装置に関連する通信イベントを、Vのリスト[V]の形で得ることができる。そして、それぞれのバリュー値Vを引数に用いて、例えばunlist(V)を実行することにより、t,d,n,p,sの組(またはt,e,n,p,sの組)を求めることができる。これらの情報には、通信イベントの相手方の装置識別子pが含まれているので、この例の場合であれば、装置識別子pにより充電装置運営会社の装置を調べればよいことが分かる。
【0037】
そこで、次に、充電装置運営会社の装置識別子pを新たに自装置識別子n−1と設定し、停止命令の発行時刻をt−1として、K−1=h(n−1)+a・t−1を計算し、ストレージ装置(分散テーブル)100に対して、getRange(K−1−td,K−1+td)を実行する。その後は上記説明と同様にして、地域EMSの装置に遡ることができる。
【0038】
以後は、同様に、充電装置(または電気自動車)に搭載されたEMSコンピュータがストレージ装置(分散テーブル)100に対して検索を行うことで、事象の原因を、根源の太陽電池に搭載のコントローラまで遡ることができる。これにより、充電装置の利用者に対して、例えば、天候の回復を待つべきか、特別料金を払って別の電力を買うべきか、現在の充電で充電を一旦停止するかの選択を提示することができる。
【0039】
(適用例2)
次に、分散システムの例として、分散ビル管理システムを考える。このようなシステムでは、各通信機器は、各ビルに設けられたセンサ、アクチュエータ、ビル情報管理システムなどにそれぞれその一部として搭載されている。
【0040】
分散ビル管理システムでは、一般に、複数のビルの動作環境を比較検討することにより、同種の設備であっても消費電力が突然上昇するなどといった現象から故障を予知したり、利用パターンの差異から省エネルギー行動の指針を作成したりするなどといった、統合ビルマネジメントあるいはESCO事業のような展開が考えられる。これにより、単なるビル管理の枠を超えたシステムが構築される。
【0041】
このような分散ビル管理システムでは、センシングされたデータがどのテナントのデータなのか、あるいは統合ビルマネジメントシステムの出力がどういったデータに基づくものなのかが見えにくくなる、という課題がある。また、これから派生して、本来データを混合してはならない(例えば契約上の理由)2つのテナントをもつビルマネジメント業者が、統合データを作成する際にどの統計値がどのテナント由来のものなのかを調べるのに手間がかかり、ヒューマンエラーが発生する余地がある、という課題もある。
【0042】
これに対して、上記説明の通信装置を分散ビル管理システムの各機器に搭載し、さらに中間の統合データを処理する計算装置(計算ノード、計算プロセス)にも上記説明の通信装置を搭載した場合を考えると以下の利点がある。すなわち、これらの装置間で発生した通信イベントが登録されているストレージ装置100に対して検索を行うことにより、どのデータがどの処理ルーチンを経由してどの結果に結びついているかを、容易に明らかにすることができる。
【0043】
例えば、互いに排他的なテナントAとテナントBとが存在する場合、この2者の平均消費電力データと、個別の消費電力データとが明らかな場合は、互いに他方のテナントの消費電力も知ることができてしまう。これは、消費電力データから事業活動の活発さが推定できるため望ましくない。
【0044】
そこで、統合ビルマネジメント業者は、ESCOアプリケーションの作成に当たり、排他的なテナントAとテナントB、それぞれに互いのデータを含んだ情報を与えないようにルールを設定したとする。このような場合、この業者は、データ出口の装置でストレージ装置100を検索し、センサやプロセスに搭載の通信装置が登録した通信イベントを、時間を遡って調べることにより、誤って排他的なテナントのデータを含む集計値が出力されていないかを容易に確認できる。
【0045】
なお、中間の統合データを処理する計算装置(計算ノード、計算プロセス)に、上記説明の通信装置を等価的に搭載するには、例えば、通信時のライブラリへの介入(dll hook等)などを用いた手法を採用することができる。また、この場合のストレージ装置100への登録、およびストレージ装置100に対する検索においては、公知のデータ来歴技術を適用し、より利便性を高めることができる。
【0046】
以上説明のように、実施形態の通信装置によれば、装置間の通信イベントに関する情報を効率的に収集できるようにこの情報を生成することができる。この結果、通信イベントの因果関係を容易に調べることが可能になり、多数の通信装置に対する動的な通信イベント情報管理ができる。分散システム上の情報トレーサビリティアプリケーションの構築も容易に可能になる。
【0047】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0048】
11…通信制御部、12…出力管理メモリ、13…入力管理メモリ、14…時計、15…イベントエンコーダ、16…送出部、17…分散テーブル管理部、N1,N2,N3,N4…通信装置(ノード)、100…ストレージ装置(分散テーブル)。

【特許請求の範囲】
【請求項1】
他の機器との間に発生した通信イベントに基づき、該通信イベントの相手方の装置識別子pを少なくとも含む、該通信イベントの属性Cを特定する通信制御部と、
与えられた自装置識別子nと前記通信イベントの発生時刻tとから、与えられたセキュアハッシュ関数h()および与えられた定数aを用いて、キー値Kを、式K=h(n)+a・tに従い求め、かつ、前記自装置識別子nと前記発生時刻tと前記通信イベントの前記属性Cとを用いて、n,t,Cの組に1対1に対応するバリュー値Vを求めるイベントエンコード部と、
前記キー値Kと前記バリュー値Vとの組を外部ストレージ装置に送出する送出部と
を具備する通信装置。
【請求項2】
前記通信制御部が特定する、前記通信イベントの前記属性Cが、該通信イベントの相手方の前記装置識別子pのほかに、該通信イベントの情報フローの方向dと、該通信イベントの通信識別子sとを有し、
前記イベントエンコード部が求める前記バリュー値Vが、与えられたリスト化関数list()を用いて、V=list(t,d,n,p,s)で求められる
請求項1記載の装置。
【請求項3】
前記通信制御部が特定する、前記通信イベントの前記属性Cが、該通信イベントの相手方の前記装置識別子pのほかに、該通信イベントが、該通信イベントの相手方にサブスクライブして発生したもの、該通信イベントの相手方からサブスクライブされて発生したもの、該通信イベントの相手方にアンサブスクライブして発生したもの、および該通信イベントの相手方からアンサブスクライブされて発生したもののうちのいずれであるかを示す情報eと、該通信イベントの通信識別子sとを有し、
前記イベントエンコード部が求める前記バリュー値Vが、与えられたリスト化関数list()を用いて、V=list(t,e,n,p,s)で求められる
請求項1記載の装置。
【請求項4】
前記イベントエンコード部が用いる前記定数aが、2のべき乗の数値である請求項1記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2012−65165(P2012−65165A)
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2010−208044(P2010−208044)
【出願日】平成22年9月16日(2010.9.16)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】