Data Distribution Service

Data Distribution Service for Real-time Systemsは、CORBAに欠けていたデータ中心の出版-購読型仕様を求める声に応じて作成された分散システムの出版-購読型ミドルウェアの仕様である。それまでもいくつかの独自なDDSソリューションはあったが、2004年に主要DDSベンダー2社が共同でDDSの標準仕様を策定し、Object Management Groupがこれを承認したものである。 なお、通信プロトコルとしては[1]プロトコルを使用することが規定されている。

1. バージョン履歴
----------

[2] - DDS 1.4Beta 審議完了、近日ドキュメントの正式版がリリース。現在1.5に向けてRequest募集中。
[3] — DDS 1.2 
DDS 1.1
DDS 1.0DDS仕様では2種類のインターフェイスを規定している:

低レベルのDCPSは、適切な受領者への適切な情報の効率的な配信を目的としたものである。
オプションの高レベルなDLRLは、DDSをアプリケーション層に簡単に統合するためのインターフェイスである。これは元々CORBAベースアプリケーションの移植性を上げるために提唱された仕様であるが、現実にはCCM経由でDDS APIを使用する応用例が多いため、提唱ベンダー以外の製品では対応していない。Version 1.4ではDLRLはDDS-DLRLとして標準規格から分離された。今後"DDS"として呼ばれるのは従来の"DDS-DCPS"の部分のみとなる。

[4] - RTPS 2.3 現在審議中。リンク先はOMG会員のみアクセス可能
[5] - RTPS2.2 RTPSプロトコルの現行最新版
[6] Web Enabled DDS 1.0 Beta DDSとWebとの親和性を高める規格。また、QoSのXML定義についても記述。
[7] DDS-DLRL DDS Version 1.2まではDDS規格のextensionとされていた規格。DDS規格本体から分離された。
[8] - DDS-XTypesの次期版。現在審議中。リンク先はOMG会員のみアクセス可能
[9] - DDS-XTypes。Topic形式を変更可能にする拡張仕様
[10] - DDS-SECURITY 1.0 現在審議中。リンク先はOMG会員のみアクセス可能
[11] - DDS-SECURITY セキュア用拡張仕様。リンク先は6月にリリースされた仕様β版
[12] - DDS-PSM-Cxx C++ 2003対応API 1.1。 現在審議中。リンク先はOMG会員のみアクセス可能
[13] - DDS-PSM-Cxx C++ 1.0 2003 STL 対応API。
[14] - DDS API上に構築されたRPC。市場からの要求に従いベンダーが構築したものを叩き台に現在審議中。リンク先はOMG会員のみアクセス可能

2. アーキテクチャ
----------

2.1. DDS構成要素
------------

DDS Publisher データ配信を行うDDSオブジェクト。publisher は様々なデータを出版する。 DDS DataWriter アプリケーションが publisher と通信する際に使用するDDSオブジェクト。特定の型のデータオブジェクトを表す。 DDS Subscriber 出版されたデータを受信し、アプリケーションが利用できるようにするDDSオブジェクト。subscriber は様々なデータを受信してディスパッチする。 DDS DataReader subscriber に付属するDDSオブジェクトで、受信データにアプリケーションがアクセスできるようにする。

2.2. DDSモデル
-----------

DDS は複雑なコンピュータネットワークに関連したプログラミングを単純化するネットワーキングミドルウェアである。ノード間のデータ/イベント/コマンドの送受信を出版-購読型モデルで実装している。情報を生み出すノードは「トピック; topics」を生成し、「サンプル; samples」を出版する。DDS はそのトピックに興味があると宣言した全購読者がサンプルを受け取れるように働く。

DDS は転送に関わる雑事を全て引き受ける。メッセージのアドレッシング、データのマーシャリング、配布、フロー制御、再送などである。各ノードは publisher にも subscriber にもなれるし、同時に両方の役目を果たすこともできる。

DDS の出版-購読型モデルでは分散アプリケーションで複雑なネットワークプログラミングをしなくてもよい。

DDS は基本的な出版-購読型モデル以上の機構をサポートする。特に重要な利点は、DDSを通信に利用するアプリケーション群は完全に切り離されているという点である。アプリケーション間の相互作用について設計時に時間をかける必要はない。特に、あるアプリケーションが別のアプリケーションの情報を必要とすることはなく、場所も存在するか否かさえも知る必要がないのである。DDS は以下のようなメッセージ配信のあらゆる面を自動制御し、ユーザーアプリケーションがそれに関わる必要は全くない。

メッセージを受信すべき相手の決定
受信側がどこにあるか
メッセージを配信できないときに発生する事象このため、DDSに対してユーザーアプリケーションがQuality of Serviceパラメータを指定でき、自動検出機構の設定をしたり、メッセージ送受信時の動作を指定したりできる。このような機構は最初に設定されたらユーザー側が後で何かをする必要は無い。完全に匿名でのメッセージ交換を行うことで DDS は分散アプリケーションの設計を大幅に単純化し、モジュール化され良く構造化されたプログラム作成を可能としている。

DDS は publisher の二重化によるホットスワップも制御する。ホットスワップ中も subscriber は常に有効な高優先度データのサンプルを受け取る。障害から回復した一次 publisher への復旧も自動的に行われる。DDS は以下にあるようなベンダーから実装された製品が出ており、C、C++、JavaのAPIが利用可能である。

3. DDSプロバイダー実装
--------------

[15] — Real-Time Innovations, Inc. のCOTS リアルタイム DDS API。組み込みシステムを含む各種プラットフォーム用。派生品として"RTI Connext DDS Secure", "Connext DDS Micro", "Connext DDS Cert" が用意されている。
[16] 欧州一の軍需メーカー Thales で開発されていたDDS。その後Prismtechに売却された。DDS市場ではRTIに次ぐ製品。
[17] — Object Computing, Inc  のオープンソース DDS 実装。CORBA上に構築されたACE/TAOフレームワークに基づいている。
[18] — ADELE Team のオープンソース Javaベース DDS 実装。
[19] — MilSOFT の COTS DDS 実装。

4. 採用事例
-------

代表的なものとして、米海軍オープンアーキテクチャに採用され、その後OA毎米国防総省全体の調達規格に組み込まれた。この影響で旧西側同盟諸国を始めとする各国で軍用・民生用を問わずに採用されている。、カナダ航空管制システム、欧州航空管制システム、スゥエーデン SAAV 9LVなどに採用。

OACE、COTSでの実績をもとに、航空機器用ソフトウェア標準規格"FACE"の通信ミドルウェアにDDS採用されている。*[20]

相互接続・運用性、実効帯域幅の広さ、PnPなどの特性から、産業向けInternet of things "IIOT" の通信ミドルウェアとして有望視されている。*[21] *[22]

5. 関連項目
-------

ミドルウェア

6. 外部リンク
--------

[23]
[24]
[25] — DDSに関する一般情報、デモアプリケーション、技術文書など
[26]
[27]