第3章 ハイエンドコンピューティング研究開発の動向
3.7 意味情報ルータとシェアードリンク
SIONetは、個々のエンティティが互いに助け合うことにより、ボランティア型のネットワークを構築する形態であり、それぞれが自律分散協調することにより、ネットワークを自己組織化する。例えば、図6は、エンティティ1がイベントプレースを生成している状況を表している。このとき、エンティティ2がエンティティ1に対して、イベントプレースへのJoin要求を行うと、図13に示すように、エンティティ2にSI-SWが生成され、さらに、SI-SW間にシェアードリンクが確立され、エンティティグループが形成される。このとき、イベントプレースの生成者であるエンティティ1がイベントプレースから退去すると、SI-SW間のシェアードリンクが解除され、以降は、エンティティ2のみでイベントプレースの構築・運営が継続される。ここで、シェアードリンクは、エンティティグループを形成するための仕組みであり、マルチホップの経路でもある。
図13
SIONetでは、目的に応じてエンティティを配置・組み合わせることにより、様々な形態のP2Pネットワークを構築することができる。また、異なる形態のP2Pネットワークをシームレスに連携させることもできる。これは、
などにより達成される。このように、単一の仕組みで様々な形態のP2Pネットワークを構築できる点がSIONetの特徴の一つである。
「シェアードリンク(共有リンク)」は、複数の異なるエンティティ間において、双方向のイベント共有を行うための概念である。例えば、図14に示すように、エンティティ2がエンティティ1に対して、シェアードリンク(SL:
Shared Link)の確立要求を行うことにより、図15に示すように、SI-SW2とSI-SW1との間にシェアードリンクが確立され、新たなエンティティグループが形成される。シェアードリンクの確立に成功したエンティティ2に対し、エンティティ1からイベントプレース名(グローバルエンティティ名)、当該イベントプレースにおけるイベント転送方式(ルーティング方式)、当該イベントプレースのディスクリプション(説明文)、プラグインされているSE情報、リンクトポロジー等のさまざまな情報が返却される。なお、後述するSI-Rによるフィルタ値の設定によって、SI-SW間に様々なイベントルーティング方式を動的に設定できる。以降において、SI-Rの役割、仕組みを詳述する。
3.7.1 シェアードリンクの確立
図14および図15を用いて、シェアードリンク確立までの仕組みを説明する。
@ | 図14において、エンティティ2がエンティティ1に対して、シェアードリンクの確立要求を発行した場合を考える。 | ||||
A | このとき、図15に示すように、エンティティ1は、SL1,2を確立するために、SI-R1,2を動的に生成するとともに、エンティティ2をシェアードリンクの確立要求元であることを記憶する。厳密には、エンティティ2のエントリポイントとグローバルエンティティ名(SI-SW2)を記憶する。ここで、SI-Rは、意味情報に基づいて、SI-SW間のイベントルーティング(イベント転送)を行う「意味情報ルータ」である。 | ||||
B | SI-R1,2は、エンティティ2に対してイベント受信セッションの確立要求を行うことにより、SI-SW2に対してイベント受信セッションを確立する。さらに、自身が属するSI-SW1に対して、イベント送信のためのセッションを確立する。このようにSI-Rが確立する送受信セッションの組み合せをシェアードリンクと呼ぶ。 | ||||
C | これにより、SL1,2が確立され、例えば、SE4がSI-SW2に対して送出したイベントが、SI-R1,2を介して、SI-SW1へも送出される。 | ||||
D | このとき、SI-R1,2がSI-SW2に対して登録するフィルタの設定値により、イベントの転送方式を動的に制御できる。例えば、
|
||||
E | AからDの手順は、シェアードリンクの確立要求元であるエンティティ2においても同様に行われる。すなわち、エンティティ2は、エンティティ1(SI-SW1)をシェアードリンクの確立要求先として記憶するとともに、SL2,1を確立するために、SI-R2,1を動的に生成し、以降の処理を同様に行う。これにより、SI-SW1とSI-SW2の間に、双方向のシェアードリンクが確立され、エンティティ間でイベントを互いに共有することが可能になる。なお、SI-Rがフィルタの登録を行わないことにより、片方向のシェアードリンクを確立すること、すなわち、SI-Rを発火させないことができる。 |
図14
図15
3.7.2 イベントパスの確立
イベント転送(イベントルーティング)のための経路選択情報(SI-Rがイベント共有のために登録するフィルタの集合)を「イベントパス」と呼ぶ。[5]例えば、図15において、SE3がSI-SW2に対してフィルタを登録した場合を考える。このとき、SI-R2,1はSE3が登録したフィルタを、受信セッションを介してSI-SW1に登録する。同様に、SI-R1,3は当該フィルタを、受信セッションを介してSI-SW3に登録する。このようにSE3によるフィルタ登録をトリガに、SI-Rが登録したフィルタがシェアードリンクに基づいて、伝言ゲームのように順次隣接するSI-Rに波及することにより、イベントパスが確立される。これを「イベントパスの設定、もしくは波及」と呼ぶ。
「語彙概念によるイベントルーティング」のためのイベントパスを確立するためには、SE3がSI-SW2に対して登録したフィルタにおいて、SI-R2,1は、イベントタイプのみ(照合条件は常に真)をSI-SW1へのフィルタとして設定する。すなわち、SE3がフィルタ登録した照合条件を活用しない。つまり、イベントタイプのみを活用することにより、例えば、SE1がイベント送信したとき、イベントタイプのみをSI-SW1において照合し、その結果、SI-R2,1が発火すると、SI-R2,1は当該イベントをSI-SW2へと送出し、意味情報との照合をSI-SW2において行う。
一方、「語彙によるイベントルーティング」のためのイベントパス確立に際しては、SI-R2,1は、SE3が登録したフィルタ値を、そのままSI-SW1へのフィルタ値として設定する。すなわち、SE3がフィルタ登録したイベントタイプと意味情報の両者をSI-R2,1がSI-SW1へとフィルタ登録し、SI-SW1において完全なフィルタリングを行う形態である。
そのため、語彙によるイベントルーティング方式では、無駄なイベント転送が全く発生しないが、ルーティングのためのイベントパス設定オーバヘッドが膨大になるため、フィルタ登録数に比べてイベント送出数が十分大きい場合に有効な方式である。一方、イベントタイプに基づくルーティング方式は、前述の2方式の折衷案的な位置付けにある。すなわち、フィルタ登録数とイベント送出数が同程度の場合、もしくは、フィルタ登録数とイベント送出数の比率を予測できないような利用形態において有効である。これらの仕組みにより、意味情報に基づく、イベントのマルチホップ通信が実現される。なお、イベントプレースの生成時、もしくは、SEからのフィルタ登録時に、イベントルーティング方式を指定できる。
イベントパスの設定要求はイベントプレース内のすべてのSI-Rに対して波及するが、TTL値により、その波及範囲を制限することができる。図16を用いて簡単に説明する。ここでは説明の便宜上、語彙概念ルーティングのためのイベントパス確立を前提とする。また、各エンティティは、同じ語彙概念をアドバタイズ(フィルタ登録)するものとする。図16(a)において、エンティティ2(厳密には、エンティティ2に属するSI-R)がイベントパスの設定要求を開始する。ここでは、TTL値を2としたため、エンティティ1、エンティティ3、そしてエンティティ4に対してのみイベントパスの設定要求が波及し、その結果、図16(b)に示すようにイベントパスが確立される。同様に、エンティティ11がイベントパスの設定要求を開始することにより、エンティティ10、およびエンティティ9に対してイベントパスが確立される。そのため、エンティティ2とエンティティ11の間では、イベントの共有が行われない。つまり、エンティティ2から生起したイベントでは、エンティティ5〜11は連鎖反応しない。そのためエンティティ5〜11へはイベントが転送されないことになる。
しかしながら、図16(b)に示すように、エンティティ5がイベントパスの設定要求を開始することにより、エンティティ4、エンティティ5、エンティティ6、エンティティ7、そしてエンティティ9に対してイベントパスが確立される。結果的に、図16(c)に示すように、エンティティ8を除く、イベントプレース内のすべてのエンティティに対してイベントパスが確立される。このように、当該語彙概念が当該イベントプレースにおいて、使用頻度の高いもの(評判が高い、流行しているもの)であるならば、最終的に、イベントプレース内にイベントパスの確立が行き渡ることになる。その逆で、あまり流行していない語彙概念は、いずれ淘汰されることになり、これにより緩やかな連鎖反応を実現できる。なお、イベントパス上の数字は、その多重度を示している。[6]
図16
分散オブジェクト技術の観点から、イベントパスを以下のように解釈することもできる。世界中に超分散しているエンティティは、エンティティ間でなんらかの「相関関係」を有する。相関関係を与えるものとしては、エンティティ名、グループ名、属性(位置、興味、評判、流行、サービス)など様々なプロパティがある。エンティティは、相関関係に基づいて、エンティティ間の結びつきを持ち分散協調する。SIONetでは、この相関関係を語彙概念と語彙により表現し、シェアードリンクに基づいて、イベントパスとして設定する。また、相関関係の強弱が、語彙概念の汎化・特化、イベントパスの多重度などに相当する。すなわち、SIONetでは、イベントパスにより、エンティティ間の相関関係を動的に制御・管理している。これこそが、フィルタによる連鎖反応の制御である。そのため、エンティティは固定的なエンティティ識別子を有していない。例えば、IPアドレスは、位置に基づいたエンティティの固定的な識別子であるが、SIONetでは、これの代わりに、エンティティプロパティを語彙概念・語彙として記述したものをエンティティ識別子として用いる。エンティティは、これらをフィルタとしてSI-SWに登録することにより、エンティティのプロパティ(エンティティ識別子)を宣言するとともに、自身のプロパティをシェアードリンクに基づいてアドバタイズする。これがイベントパスの波及に相当する。これにより、イベントパスが確立される。そのため、エンティティの匿名性、プライバシーが保証される。すなわち、誰がフィルタを登録したかを隠蔽するとともに、物理的なID(例えば、IPアドレス)を漏洩しない。
これまでの説明から明らかなように、SI-Rは、イベント送信とイベント受信の両者の側面を持つネットワークエンティティであり、一般のサービスエンティティと本質的な違いはない。SIONetでは、SI-RのようなSIONetの制御に用いられるエンティティを、サービスエンティティと特に区別して、ネットワークエンティティと呼ぶ。SIONetにおいては、サービスエンティティ、ネットワークエンティティのすべての内部エンティティを共通の内部エンティティとして扱い、さらに、イベント送出とイベント受信、すなわち刺激と発火の連鎖反応という単純かつ一貫性のある共通ロジックに従って自律動作させることにより、すべてのエンティティが自律分散協調可能な超分散・超疎結合アーキテクチャを提供する。
3.7.3 シェアードリンクの解除と再確立
イベントプレースに参加しているエンティティが、障害に陥ったり、イベントプレースから退去する場合など、様々な理由により当該エンティティがネットワークの運営に関わることができないケースにおいては、残されたエンティティが自己組織化することによりネットワークサービスを継続できることが必要になる。
SIONetでは、このようなケースにおいては、SI-SW間において確立されているシェアードリンクを解除し、さらにシェアードリンクの再確立を行う。以下に、その仕組みを紹介する。
図17において、シェアードリンク確立要求の先頭数字は、それらの要求順序を示している。つまり、エンティティ2からエンティティ1へシェアードリンクの確立要求を行う。次にエンティティ3からエンティティ2へシェアードリンクの確立要求を行う。最後に、エンティティ4からエンティティ2へシェアードリンクの確立要求を行う。なお、ここで、「各エンティティは、同一イベントプレース内においてシェアードリンクの確立要求を高々1回しかできないが、無制限に確立要求を受け付けることが可能なリンクトポロジーに基づいて、シェアードリンクの確立を行う」リンク確立手法を提案する。これにより、シェアードリンクで結合されたエンティティ間に、ループが発生しないことが保証される。すなわち、この手法を用いることにより、隣接エンティティ間のリンク再確立のみで開リンクトポロジーを簡単に実現できる。
図17
この確立要求が順次成功したとき、前述した手順で各SI-SW間にシェアードリンクが確立される。このとき、例えば、エンティティ2は、自身が確立要求を行ったエンティティ1と、自身への確立を受け付けたエンティティ3,
エンティティ4のリストを保持している。
この状況において、例えば、エンティティ2の退去、減設などが行われる場合、エンティティ2はSI-SW2に対して確立されているシェアードリンクの解除要求を発行し、シェアードリンクの解除を行う。その後、各エンティティは新たなシェアードリンクの確立を行う。以下に手順を示す。
(1) | エンティティ2が退去する場合を考える。 |
(2) | エンティティ2は、自身のシェアードリンクを解除する旨を、1ホップのエンティティ (エンティティ1, エンティティ3, エンティティ4)に対して通知する。これは、イベントのTTL値を1にしてイベント送出を行うことにより可能になる。なお、このとき、自身へのシェアードリンク確立を受け付けたエンティティ(エンティティ3, エンティティ4)に対しては、自身に代わる新たなシェアードリンクの確立要求先として、自身が確立要求を行ったエンティティ1を教える。なお、自身が確立要求を行ったエンティティが存在しない場合には、自身への確立要求元エンティティ(1ホップ先のエンティティ)の中から任意のエンティティを選択して、これを自身に代わるシェアードリンクの確立要求先とする。その後、エンティティ2は、自身が確立したシェアードリンク(SL2,1, SL2,3, SL2,4)を解除するために、その旨をSI-R2,1, SI-R2,3, SI-R2,4に通知する。これらのSI-Rは、これを契機にSI-SWへのセッションを解除する。 |
(3) | 一方、エンティティ3、エンティティ4は、自身がSI-SW2に対して確立していたシェアードリンク(SL3,2, SL4,2)をすべて解除し、新たなエンティティ(エンティティ1)に対してシェアードリンクの確立要求を行い、シェアードリンクを再確立する。なお、エンティティ1は、SL1,2を解除し、エンティティ3、エンティティ4からの確立要求を待つ。上述したように、シェアードリンクの確立処理、再確立処理は、隣接するエンティティ間においてのみ行われ、他のエンティティには影響を与えない。すなわち、全てのエンティティに対するリンクの再構築を必要としない。 |
(4) | なお、エンティティの退去や減設などの正当な手順を踏んだシェアードリンクの解除要求ばかりでなく、エンティティの障害、電源断、セッション(物理的な通信路)の障害などに起因して、シェアードリンクを再確立しなければならないケースがある。しかし、このようなケースにおいては、シェアードリンクの再確立時に必要となる代わりのエンティティを教授できない可能性がある。SIONetでは、このような状況に対応するために、各エンティティはnホップ(nは任意)のイベントを送出することにより、代わりの確立要求先エンティティの把握を行っている。なお、SIONetでは、TTL値とホップ属性を用いることにより、さらにきめ細かなホップ制御が可能である。代表的なホップ属性には以下のものがある。 @ シェアードリンクの確立要求先エンティティのみをホップ対象とする。 A シェアードリンクの確立要求元エンティティのみをホップ対象とする。 B すべてのエンティティをホップ対象とする。 |
例えば、@のホップ属性を指定した場合の、イベントの流れを図18の破線で示している。図18において、( i /j )は各エンティティにおいて記憶している、シェアードリンクの確立情報である。 iはエンティティがシェアードリンクの確立要求を行った先のエンティティを示しており、一方、jはエンティティがシェアードリンクの確立要求を受け付けたエンティティを示している。例えば、エンティティ3の( 2/5,6 )は、エンティティ3がエンティティ2に対して確立要求を行い、エンティティ5およびエンティティ6から確立要求を受け付けていることを表している。各エンティティがシェアードリンクの確立情報を保持することにより、例えば、エンティティ3が他のエンティティに対して、更なるシェアードリンクの確立要求を行った場合、その要求をエラーとしてリジェクトすることができる。これにより、前述した開リンクトポロジーの一貫性を保証している。この状況において、エンティティ6が3ホップで@のホップ属性を持つイベントを送出することにより、エンティティ1とエンティティ2の存在を知ることが可能になり、これらがエンティティ3障害時の代替エンティティとなる。
図18
3.7.4 イベントパスのキャッシング
表1は、図22においてサービスエンティティがフィルタを登録したときに、SI-Rが設定するイベントパス(イベントルーティング情報)がどのように更新・管理されるかを示したものである。
表1において、SE i+は、サービスエンティティiが、フィルタ登録したことを意味している。一方、SE i-は、サービスエンティティが当該フィルタを解除したことを意味している。また、表中の数字は、SI-Rが保持しているイベントパス管理のためのカウンタ値であり、SI-RがSI-SWに対して、イベントパス設定のためのフィルタ登録を行っている回数を示している。このような管理は、イベントタイプ毎に行われる。但し、SI-RからSI-SWに対する実際のフィルタ登録は、カウンタ値が0から1へインクリメントされたときに行われるだけであり、たとえば、1から2へ遷移する場合には、フィルタ登録は行わずに、フィルタ登録が要求された旨のみをカウンタで記憶している。同様に、サービスエンティティがフィルタ解除を行った場合には、イベントパスの更新のために、カウンタをデクリメントするが、SI-RからSI-SWに対する実際のフィルタ解除は、カウンタ値が0になったときに始めて行われる。これにより、イベントパスの設定要求や解除要求が、順次、自律的に波及(伝播)していく回数を必要最低限に抑止したキャッシングが可能になり、イベントパス制御のオーバヘッドを低減することができる。
Table1
図22
なお、説明を簡略化するために、片方向のシェアードリンクのみを表中に示した、実際には、双方向のシェアードリンクにおいて同様のイベントパス管理が行われる。
以下に、簡単に説明する。
@ | 初期値において、当該イベントタイプに対するイベントパスは確立されていないことを示している。 |
A | SE3がフィルタを登録することにより、イベントパスの設定要求が順次、自律的に波及し、その結果、SI-R3,2がSI-SW2にフィルタを登録し、同様に、SI-R2,1とSI-R2,4がそれぞれSI-SWにフィルタ登録することによりイベントパスが設定される。このとき、該当のSI-Rはそれぞれカウンタをインクリメントする。 |
B | さらに、SE5がフィルタを登録すると、SI-R5,3を介して、イベントパスの設定要求がSI-R3,2に対して波及するが、SI-R3,2は、既に当該イベントタイプに関するイベントを転送するためのフィルタを登録済み(カウンタ値が1)であるため、カウンタを単に2にインクリメントするだけで、更なるフィルタ登録は行わない。そのため、SI-R2,1とSI-R2,4に対して、イベントパスの設定要求が波及しないため、両者のカウンタには変更が生じない。 |
C | 同様の考え方で、表1に示すように、表中のカウンタ値が更新される。 |
3.7.5 イベントプレース
イベントプレースは以下の目的から考案されたグルーピングの概念である。
@ | イベントの転送範囲:刺激と発火に基づく連鎖反応の波及範囲を制限する。 |
A | イベントルーティングの対象範囲:シェアードリンクにより接続されているエンティティの集合である。イベントプレースごとに、リンクトポロジーやイベントルーティング方式を選択できる。 |
B | 意味情報体系の一意性が保証される空間:取り扱うイベントタイプの爆発的な増大を抑止することができる。 |
一般的に、サービスごとに必要とされる意味情報体系(語彙概念や語彙)が異なる。たとえば、証券サービス、医療サービスなどサービス種別ごとにイベントプレースを構築することができる。