背景
DDSについて調べたことをまとめておく。
リアルタイムおよび分散型システム間でデータを交換するための標準化された通信プロトコル。
DDSは、IoT(Internet of Things)や組み込みシステム、産業用自動化など、さまざまな領域で広く使用されている。
DDSは、リアルタイム性、信頼性、スケーラビリティに焦点を当てており、複数のデバイスやシステム間でデータを共有するための効率的で柔軟な手段を提供する。
通信仕様(概略)
Data Distribution Serviceというくらいなので、データ中心の通信サービスである。
Dataを更新するアプリケーションを「Publisher」、
Dataを参照するアプリケーションを「Subscriber」と呼び、
それぞれが、Topicと呼ばれるデータにアクセスする。
「Publisher」と「Subscriber」はお互いがどんなシステム上にあるのかを意識する必要がなく、
DDSのミドルウェアが高速に処理してくれる。
以下の図のようにグローバルなデータベースに各システムがアクセスするイメージだが、
実際はそんなデータベースなど存在せず、DDSの通信プロトコルに従いP2Pで通信する。
※やりたいことはSOME/IPとほぼ同じだと感じた。
セキュリティ
SOME/IPとの違い
以下はChatgptにDDSとSOME/IPとの違いを聞いてみた。
データ配信モデル:
DDS: DDSはパブリッシュ/サブスクライブモデルを使用しており、データの生産者(パブリッシャー)と消費者(サブスクライバー)が明確に分離されています。データが配信されると、サブスクライバーはそれを受信します。
SOME/IP: SOME/IPはクライアント/サーバーモデルを使用しており、クライアントがサーバーにリクエストを送信し、サーバーがそれに応答します。このモデルは、リクエスト/レスポンス型の通信に適しています。
メッセージ形式:
DDS: DDSは柔軟なデータ型をサポートし、構造化されたデータや非構造化データなど、さまざまな形式のメッセージを配信できます。
SOME/IP: SOME/IPは主にメソッド呼び出しや通知の形式を使用し、RPC(Remote Procedure Call)のようなメッセージングパターンに焦点を当てています。
リアルタイム性:
DDS: DDSはリアルタイム性が高く、データの配信や受信が遅延せず、予測可能な時間内で行われます。
SOME/IP: SOME/IPもリアルタイム性を重視していますが、DDSほど広範なリアルタイムアプリケーションには使用されません。
適用領域:
DDS: DDSは広範な領域で使用されており、IoT、自動車業界、航空宇宙などの分野で利用されています。
SOME/IP: SOME/IPは主に自動車業界で使用されており、車載システムやエレクトロニクスアーキテクチャの間で通信を行うために採用されています。
総括すると、DDSとSOME/IPはどちらも分散型システム間で通信を行うためのプロトコルですが、通信モデルやメッセージ形式、適用領域などにおいて異なる特性を持っています。
また、以下で性能評価がされていた。
この研究報告では、簡単にいうと
・SOME/IPは、ROM/RAM使用量が小さいが、パケットロス率が高い。
・DDSは、ROM/RAM使用量が大きいが、メッセージサイズが大きくても効率良く、かつパケットロス率は少なく高信頼な通信が可能。
つまり、SOME/IPではCPUリソースの乏しくても適用可能、
DDSはパフォーマンスの高いマシンで適用すると効率が良い。
ただ、システム上にあるECUがすべて同じ通信プロトコルを採用しないと意味ないので、
システム上にCPUリソースの乏しいECUがあるとSOME/IPを採用することになる?
テキトーに調べてみた結果、DDSは以下のようなシステムに適用事例があるらしい。
やっぱり大量生産するような車載システムでは、
コストを抑えるために末端CPUはリソース制限が厳しいと思うので、DDSは採用しないのでは?と思った。
AUTOSAR仕様になっているので、本当に採用する製品があるのか気になる。
Wikiより:
代表的なものとして、米海軍オープンアーキテクチャ(Naval Open Architecture: 略称OA)に採用され、その後OA毎米国防総省全体の調達規格(COTS)に組み込まれた。この影響で旧西側同盟諸国を始めとする各国で軍用・民生用を問わずに採用されている。(米海軍強襲揚陸艦 LPD-17を皮切りに米海軍個艦防衛システム"SSDS"、艦内ネットワーク"SWAN"、AEGISシステムを構成するレーダー・ソナー・FCS・各種兵装、"SWAN"を更新した"TSCEi"(Zumwalt DDG 1000等)、カナダ航空管制システム、欧州航空管制システム(西側でRTI Connext、東側でOpenSpliceが採用されている)、スゥエーデン SAAV 9LVなどに採用。
他の例:
戦艦
ダムのような大規模施設
金融システム
宇宙、航空システム
電車の線路切り替え機