1. Overview

本セクションでは、 iSCP の概要について説明します。

1.1. iSCP とは

intdash Stream Control Protocol (iSCP) は、ブローカーを介して時系列データを転送する ストリーミングプロトコルです。iSCP は大容量かつ高頻度なデータを効率良く伝送できるように設計されています。 iSCP は、以下のような特徴を備えています。

表 1 iSCP の特徴

特徴

説明

時刻の格納

データが発生した時刻を格納します。これにより、データの発生順序やタイミングを受信側で再生することができます。

型情報の格納

データに型情報を付与することができます。これにより、様々なフォーマットのデータを統一的に扱うことができます。

レイヤ構造

仕様がレイヤ構造になっており、各レイヤを個別に変更できます。これにより、トランスポートプロトコルやエンコーディングを差し替えることができます。

複数データの一括送信

時系列データを複数まとめて1メッセージとして伝送します。これにより、小さく高頻度データもオーバーヘッド少なく伝送することができます。

コネクションの再開

コネクションが切断された場合の再開シーケンスが定義されています。これにより、予期せず通信回線が切断された場合も、切断前のコネクションの状態を引き継いで素早く通信を再開することができます。

辞書化による効率向上

データの名称や型情報などデータに付随するメタ情報を事前に辞書化しておくことで、データの伝送効率を高めます。

QoS

QoSが定義されており、E2Eでの At Most Once または At Least Once 伝送を実現できます。

1.2. iSCP 2.0 のレイヤー構造

iSCP 2.0 プロトコルは、それぞれ個別の役割を持つ複数のレイヤーで構成されます。 このセクションでは、これらのレイヤーの役割について説明します。

iSCP 2.0 プロトコルを構成するレイヤーは以下の通りです。

+----------------------+
| 4. APP               | データフォーマット、上位アプリケーションとの連携
+----------------------+
| 3. WIRE              | メッセージの論理構造、メッセージの交換手順
+----------------------+
| 2. ENCODING          | メッセージのシリアライズ/デシリアライズ
+----------------------+
| 1. TRANSPORT         | シリアライズされたメッセージのトランスポートへの割付け
+----------------------+

iSCP の仕様の中心は WIRE層 のメッセージの論理構造と交換手順です。

ENCODING層やTRANSPORT層は、iSCP仕様では要件のみが規定されます。 具体的な仕様は、拡張仕様にて規定されます。 このレイヤー構造により、iSCPは、後からENCODING層やTRANSPORT層の仕様を、 追加したり差し替えたりすることができます。

同様に、上位のアプリケーションとの連携方法はAPP層の拡張仕様で規定されます。 これにより、iSCPと連携する上位アプリケーションも、 拡張仕様次第で様々なものと連携することができます。

1.3. 拡張仕様用レジストリ

本仕様の策定者である株式会社アプトポッドは、 本仕様の拡張として定義される仕様群において競合する可能性のある内容について、 競合を避けるための レジストリ を管理します。

具体的には、以下の内容についてレジストリを管理します。

  • 各メッセージの拡張フィールド

  • 結果コード