コンテンツにスキップ

トランスポートとフレーム処理

MissionWeaveProtocol 0.1 は、ランタイムを TLS 1.3 経由で認証された WebSocket にバインドします。輸送用品の組み立てと配送。個々の Signed Document 検証、Group 承認、永続的リプレイ、またはフェンシングに代わるものではありません。必要な TLS、WebSocket、JSON、JCS、スキーマ、および暗号仕様は MWP-FND-003 で列挙されています。

4 つのメッセージの HELLO 交換では、フレッシュ サーバー チャレンジと Organization に登録された Ed25519 キーが使用されます。プロトコルのバージョンをネゴシエートし、有効期間の短いセッション トークンと新しく発行された Session Epoch (MWP-IDN-007) を返します。

エポック n + 1 を発行すると、ランタイムごとにエポック n 以下でフェンスが作成されます。状態を変更するすべての Agent Command は現在のエポックと照合され、2 つのランタイムが 1 つの安定した Agent ID を同時に操作することはできません (MWP-IDN-008)。

サーバーは wss を提供します。 1 つの認証された接続で、1 つの Agent で使用されるすべてのグループを多重化できます。すべての WebSocket メッセージには、ローカル websocket-frame スキーマに準拠する UTF-8 JSON テキスト フレームが 1 つだけ含まれます。バイナリ フレームはプロトコル オブジェクトや Artifact コンテンツ (MWP-EVT-008) を伝送できません。

コア フレームのタイプは次のとおりです。

フレーム 目的
HELLO チャレンジ認証、バージョンネゴシエーション、セッション発行
SUBSCRIBE 承認された Group の選択および再生位置
COMMAND 構造化された移行に対する 1 つの署名付きリクエスト
EVENT 1 つの不変の受け入れられた事実
ACK 1 つ以上の耐久性のある連続カーソル
PING liveness とオプションの Presence
ERROR 機械可読な拒否または輸送ガイダンス

シーケンスの前にサブスクライブしてルーティングする

Section titled “シーケンスの前にサブスクライブしてルーティングする”

認証後、SUBSCRIBE には Group ID、Group ごとのリプレイ位置、およびオプションのアテンション フィルターが含まれます。サーバーは独自に Membership を強制し、不正な Group が存在するかどうかは開示しません (MWP-EVT-009)。

異なるグループからのイベントが交互に発生する場合があります。受信側は、シーケンス、カーソル、重複排除、またはキュー ロジックを適用する前に、Group ID によって各 Event をルーティングします。 Group ごとの順序のみが定義されています (MWP-EVT-010)。

活気、進歩、そしてプレッシャー

Section titled “活気、進歩、そしてプレッシャー”

ACK は永続的な進行状況を報告します。 PING は生存を証明し、プレゼンス レコードを保持する可能性があります。ピアはそのノンスをエコーし​​ます。サーバーは、制限付きバッファーと Group ごとのバックプレッシャーを使用し、可能であれば無関係なグループを切断するのではなく、BACKPRESSURE ガイダンスでオーバーロードされた Group を一時停止します (MWP-EVT-011)。

プレゼンスは、個別の永続署名なしで認証された PING 上で移動できますが、別の Group (MWP-IDN-006) を公開することはできません。ノイズの多い Group が他のものを飢えさせることはできません。ゲートウェイは、Group ごとのフロー制御と、可能な場合には独立したサブスクリプション カーソルを提供します (MWP-MSN-014)。

ACK は権威ある Event 履歴を削除する権限ではなく、PING またはプレゼンス更新は割り当ての承認またはリースの更新ではありません。受信者はイベントの重複を排除し、シーケンス ギャップを越えてカーソルを進めることはありません (MWP-WRK-029)。 ACK と再接続のリプレイでは、最も連続した耐久性のあるカーソルが使用され、切断時にイベントが再配信される可能性があります (MWP-WRK-030)。

ワイヤー境界でのエンコーディング

Section titled “ワイヤー境界でのエンコーディング”

ワイヤ JSON は任意のメンバー順序で到着する可能性がありますが、重複するメンバー名はスキーマ検証の前に拒否されます。すべての署名、コンテンツ由来の識別子、およびハッシュは、正確な RFC 8785 JCS 値モデルとバイト (MWP-EVT-012) を使用します。大規模なコンテンツは、バイナリまたは部分ストリーミング プロトコル フレームではなく、コンテンツ アドレス指定された Artifact 参照として送信されます。

ワイヤ拒否と保護された診断については、エラーと可観測性 に進みます。