Skip to content

Protocol Specification

TamTunnel edited this page Jan 4, 2026 · 1 revision

Protocol Specification

Version 1.0.0

Overview

The SpaceComms Protocol enables peer-to-peer exchange of space traffic coordination data. This specification defines message formats, routing behavior, and session management for interoperable implementations.

Design Goals

  1. Interoperability: Clear message schemas enable independent implementations
  2. Extensibility: Versioned envelopes allow backward-compatible evolution
  3. Reliability: Acknowledged delivery with retry semantics
  4. Security: Authentication and encryption at transport and message levels

Protocol Transport

Transport Layer

SpaceComms uses HTTP/2 over TLS 1.3:

  • Endpoint: /spacecomms/v1/messages
  • Method: POST for all protocol messages
  • Content-Type: application/json
  • Connection: Long-lived with multiplexed streams

Message Envelope

All messages use a versioned envelope:

{
  "protocol_version": "1.0.0",
  "message_id": "msg-uuid-here",
  "timestamp": "2024-01-15T14:30:00.000Z",
  "source_node_id": "node-alpha-01",
  "message_type": "CDM_ANNOUNCE",
  "hop_count": 1,
  "ttl": 10,
  "payload": { ... }
}

Message Types

HELLO

Capability negotiation when establishing peer session.

{
  "protocol_version": "1.0.0",
  "message_id": "msg-hello-001",
  "timestamp": "2024-01-15T14:30:00.000Z",
  "source_node_id": "node-alpha-01",
  "message_type": "HELLO",
  "hop_count": 0,
  "ttl": 1,
  "payload": {
    "node_name": "Alpha Operations",
    "capabilities": ["CDM", "OBJECT_STATE", "MANEUVER"],
    "supported_versions": ["1.0.0"],
    "auth_token": "bearer-token-here"
  }
}

CDM_ANNOUNCE

Announce a Conjunction Data Message.

{
  "protocol_version": "1.0.0",
  "message_id": "msg-cdm-001",
  "timestamp": "2024-01-15T14:30:00.000Z",
  "source_node_id": "node-stm-provider",
  "message_type": "CDM_ANNOUNCE",
  "hop_count": 1,
  "ttl": 10,
  "payload": {
    "cdm": {
      "cdm_id": "CDM-2024-00001234",
      "creation_date": "2024-01-15T14:00:00.000Z",
      "originator": "STM-PROVIDER-A",
      "message_for": "OPERATOR-ALPHA",
      "tca": "2024-01-17T08:30:00.000Z",
      "miss_distance_m": 150.5,
      "collision_probability": 1.2e-4,
      "object1": { ... },
      "object2": { ... }
    }
  }
}

Routing Model

Peer Sessions

Nodes establish peer sessions via HELLO exchange:

  1. Initiator sends HELLO
  2. Responder validates and sends HELLO
  3. Both nodes enable message exchange
  4. HEARTBEAT maintains session health
  5. Session terminates on timeout or explicit close

Message Propagation

Messages propagate through the mesh:

  1. Node A originates CDM_ANNOUNCE (hop_count=0, ttl=10)
  2. Node A sends to peers B and C
  3. Node B receives, increments hop_count to 1
  4. Node B checks policies, decides to forward
  5. Node B sends to peers D and E (but not A)
  6. Process continues until ttl exhausted or no more peers

Loop Prevention:

  • message_id deduplication
  • hop_count tracking
  • ttl enforcement

Interoperability Expectations

To interoperate at the "basic" level, an independent implementation MUST:

  • Support the current protocol version and HELLO negotiation.
  • Implement core message types (HELLO, OBJECT_STATE_ANNOUNCE, CDM_ANNOUNCE, _WITHDRAW, HEARTBEAT).
  • Respect the JSON schema for CDMs.
  • Ignore unknown optional fields (forward compatibility).
  • Use the standard envelope format for all messages.

Conformance Levels

Level Role Capabilities
Level 0 Observer Read-only; subscribes to CDMs/Objects, maintains state, does not originate data.
Level 1 Producer/Consumer Originate CDMs/Object States, receive and forward messages, basic routing.
Level 2 Full Node Full routing logic, policy enforcement, mTLS security, history/query support.

Clone this wiki locally