|

(1) IQLの定義
当初インターネットアプリケーション層からOSI
7階層モデルのセション層とプレゼンテーション層を切り離して,プロトコルを定義する計画だったが,開発を進めるにつれ,開発内容・目的が上記の2層で定
義されている機能の範囲には収まらず,よりインターネットに相応しい切り分けが必要であると考え,インターネットのアプリケーション層の下に位置する独自
のレイヤIQL (Intelligence and Quality Layer) を定義した.
IQL上で定義した機能はインターネットアプリケーションが共通して必要とするものであり,現在のインターネットアーキテクチャのアプリケーション層で
個別に実装されている機能である.具体的には,IQL上の機能として,暗号化,認証,下位層通信媒体の管理単位として定義したJarad
(従来のセションに相当するものとして新たに命名) の管理を含ませた (圧縮,フォーマット変換は未実装).
また,IQLの下位層は基本的には従来のトランスポート層となるが,今後のインターネットの拡張を考え,あらゆる媒体 (レイヤ)
を下位層にもてるように,IQL内にIQ Media副層 (IQML)
を定義し,そこで通信媒体の抽象化を行なった.これは既存のトランスポート層や,データリンク層が提供するメディア抽象化の概念を拡張したものであり,読
み書きさえ可能であれば,あらゆる媒体をIQLの下位媒体として利用できるようにするための仮想レイヤである.
End-to-Endで実装し,かつアプリケーションに深く関連する機能をアプリケーション層の下にIQLとして定め,下位層すべてをIQ
Mediaとして抽象化したネットワークアーキテクチャが当開発の特徴である.
IQLを導入したインターネットアーキテクチャを図2.4.1 IQLを導入したインターネットアーキテクチャ
に示す.また,IQLを用いたサービスの構成を図2.4.2 IQLを用いたービスの構成図 に示す.
図 2.4.1 IQL を導入したインターネットアーキテクチャ
(2) YJPの開発
YJP (開発コード名) は本プロジェクトで開発,実装を行なったIQL上のプロトコルである.Windows (2000以降)
上のサービスとして実装した.データ変換,認証,IQ
Mediaをプラグイン形式で実装し,ユーザが自由に追加できるようにした.アプリケーションとの接続は名前つきパイプとラッピングしたDLLで提供す
る.ただし,ネットワークプロトコルとして公開できるまでにはさらに仕様を固める必要がある.
YJPではIQLのサービスアクセスポイントを名前つきパイプで実装し,名前つきパイプ上にAPIを定義した.実際にYJPを利用するアプリケーション
が名前付きパイプを管理するのは手間がかかるので,名前付きパイプをラッピングしたDLLを実装し,通常のAPIを使用する感覚でYJPを利用できるよう
にした.Windows標準のDLLで実装してあるため,DLLが利用可能な言語であればYJPを使用することができる.
図 2.4.2 IQL を用いたービスの構成図
プラグインは認証プラグイン,プレゼンテーションプラグイン,公開鍵暗号プラグイン,共通鍵暗号プラグイン,IQ
Mediaプラグインに分類される.認証プラグインはIQL間の認証機能を提供し,プレゼンテーションプラグインはデータ変換に関わる拡張機能を提供す
る.レイヤ上のデータ変換には,圧縮,暗号化など送受信双方でデータ変換を行なうものと,文字コード変換のように送信または受信の一方のみで行なうものと
の2種類があるが,同種のプラグインとした.IQ MediaプラグインはIQLのサブレイヤIQ
Mediaレイヤの実装であり,通信媒体のラッピングである.データの読み書きさえ可能であればあらゆる媒体をアプリケーションで利用できるようになる.
効率,遅延を無視するなら (実用性は別にして)
通常のファイルやマイクとスピーカーでもネットワークの通信媒体として利用可能となる.既存のアプリケーションプロトコルを利用したプラグインを作成すれ
ば,トネリングも容易に実装できる.プラグインによるMediaのこのような抽象化は今後新しい通信媒体,プロトコル上への対応を容易にする.
開発期間には,YJP用のAESによる共通鍵暗号プラグイン,RSAによる公開鍵暗号プラグイン,TCP用のIQ
Mediaプラグインを実装した.また,機能拡張が目的のプラグインではないが,ログメッセージなどの文字列を管理する関数群をプラグイン形式で実装し
た.メッセージの翻訳さえできれば,容易に複数の言語に対応可能である.今回は日本語のみ作成した.
YJPではIQ Mediaプラグインがコネクション型であるかどうかに関わらず通信コネクションの仮想化をJarad
(ルーン文字で約束を表すJaraと乗り物を表すRadを合成した造語)
という単位で行なう.これは従来の階層モデルのセションに当たるものであり,コネクションの状態を管理し,切断時の再接続をサポートする.アプリケーショ
ンはJarad IDによりJaradを制御する.
Jaradは実装できなかったが,Jaradのスリープ及びシリアライズの仕様を定義した.この機能により接続をデータとして保存しておき,通信が必要
なときに随時復元が可能となる.さらに,Jaradを複数まとめて管理する単位としてPort Townという概念を定義した.Port
Townはマルチキャストをインターネット上に実現するための機能である.
プレゼンテーション相当機能のデータ変換用にIDCF (IQL Data Conversion Format)
を定義した.これは既存のWebのMIMEと似たもので,今回の実装ではテキスト形式のみ定義した.今後,画像やXML等にも対応していく予定である.

|