zerodds-opcua-bridge

OMG DDS-OPCUA Gateway 1.0 daemon: opc.tcp server + client + Part-14 UADP PubSub over zerodds-dcps.

The OMG DDS-OPCUA Gateway 1.0 (formal/2020-01-01) as a running daemon, zerodds-opcua-bridged, on zerodds-dcps. The four library crates (zerodds-opcua-gateway, -uacp, -server, -pubsub) implement the type system, the opc.tcp framing and SecureChannel, the Part 4 Client/Server service set and the Part 14 (UADP) PubSub wire stack. This crate is the process that runs them: an opc.tcp server exposing DDS topics, an OPC UA client bridging foreign servers into DDS, and Part 14 PubSub publishers and subscribers over UDP multicast — configured from one YAML file.

Safety classification: STANDARD.

Modules

  • dynamic_type — zerodds_types::dynamic::DynamicType → zerodds_opcua_gateway::dds_to_ua::walker::DdsType.
  • dynamic_value — DynamicData ↔ a flat, path-named Variant list (flatten/unflatten), the shape both the AddressSpace's leaves and a Part 14 DataSet's fields need.
  • idl — compiles an operator-supplied .idl file and builds the SerializedTypeSupport a topic needs.
  • dds_bridge — the DDS-side port: participant, topic, reader and writer registration against a zerodds-dcps runtime.
  • address_space_build — Gateway 1.0 §9.3 AddressSpace materialization.
  • ua_client — the client role of Gateway 1.0 §8 against foreign servers.
  • pubsub_glue — the Part 14 UADP Publisher/Subscriber wiring.
  • daemon — the process itself: CLI, YAML config, SIGHUP/SIGTERM, systemd Type=notify, Prometheus metrics.

Quickstart

cargo build -p zerodds-opcua-bridge --bin zerodds-opcua-bridged --features crypto
# opcua-bridged.yaml
domain: 0
opcua:
  idl: ["robotics.idl"]
  gateway_config: "gateway.xml"   # Spec §10 XML
  server:
    bind: "0.0.0.0:4840"
zerodds-opcua-bridged --config opcua-bridged.yaml

Feature flags

Feature Default Purpose
std ✅ The crate's non-daemon conversion modules.
daemon ✅ Everything: the reflective type layer, the DDS port, the AddressSpace/PubSub glue, the process itself.
crypto ❌ Secured SecureChannel SecurityPolicies (basic256sha256/aes128_sha256_rsaoaep/aes256_sha256_rsapss); pulls rsa/pem/rand.
ring-backend ✅ Crypto backend that the ACL layer of zerodds-bridge-security pulls in.
aws-lc ❌ Alternative to ring-backend.
rt ❌ Passes zerodds-dcps/rt real-time scheduling through.

Position

Specification

docs/specs/zerodds-opcua-bridge-1.0.md — the full contract of the daemon.

zerodds-opcua-bridge

Daemon für OMG DDS-OPCUA Gateway 1.0: opc.tcp-Server, -Client und Part-14-UADP-PubSub über zerodds-dcps.

Das OMG DDS-OPCUA Gateway 1.0 (formal/2020-01-01) als laufender Daemon, zerodds-opcua-bridged, auf zerodds-dcps. Die vier Bibliotheks-Crates (zerodds-opcua-gateway, -uacp, -server, -pubsub) implementieren das Typsystem, die Rahmung von opc.tcp und den SecureChannel, die Dienste von Part 4 (Client/Server) und den PubSub-Stack von Part 14 (UADP). Diese Crate ist der Prozess, der sie ausführt: ein opc.tcp-Server, der DDS-Topics anbietet, ein OPC-UA-Client, der fremde Server nach DDS überbrückt, und PubSub-Publisher und -Subscriber nach Part 14 über UDP-Multicast — konfiguriert aus einer YAML-Datei.

Sicherheitseinstufung: STANDARD.

Module

  • dynamic_type — zerodds_types::dynamic::DynamicType → zerodds_opcua_gateway::dds_to_ua::walker::DdsType.
  • dynamic_value — DynamicData ↔ eine flache Liste von Variant-Werten mit Pfadnamen (flatten/unflatten), die Form, die sowohl die Blätter des AddressSpace als auch die Felder eines DataSet nach Part 14 brauchen.
  • idl — kompiliert eine vom Betreiber gelieferte .idl-Datei und baut den SerializedTypeSupport, den ein Topic braucht.
  • dds_bridge — der Anschluss auf der DDS-Seite: Registrierung von Participant, Topic, Reader und Writer gegen eine Laufzeit von zerodds-dcps.
  • address_space_build — Aufbau des AddressSpace nach Gateway 1.0 §9.3.
  • ua_client — die Client-Rolle aus Gateway 1.0 §8 gegenüber fremden Servern.
  • pubsub_glue — die Verdrahtung von Publisher und Subscriber nach Part 14 (UADP).
  • daemon — der Prozess selbst: CLI, YAML-Konfiguration, SIGHUP/SIGTERM, systemd Type=notify, Prometheus-Metriken.

Schnellstart

cargo build -p zerodds-opcua-bridge --bin zerodds-opcua-bridged --features crypto
# opcua-bridged.yaml
domain: 0
opcua:
  idl: ["robotics.idl"]
  gateway_config: "gateway.xml"   # Spec §10 XML
  server:
    bind: "0.0.0.0:4840"
zerodds-opcua-bridged --config opcua-bridged.yaml

Feature-Flags

Feature Default Zweck
std ✅ Die Umwandlungsmodule der Crate außerhalb von daemon.
daemon ✅ Alles: die reflektive Typschicht, der DDS-Anschluss, die Verbindung von AddressSpace und PubSub, der Prozess selbst.
crypto ❌ Gesicherte SecurityPolicies für den SecureChannel (basic256sha256/aes128_sha256_rsaoaep/aes256_sha256_rsapss); zieht rsa/pem/rand nach.
ring-backend ✅ Krypto-Backend, das die ACL-Schicht von zerodds-bridge-security einbindet.
aws-lc ❌ Alternative zu ring-backend.
rt ❌ Reicht die Echtzeitplanung von zerodds-dcps/rt durch.

Stellung

Spezifikation

docs/specs/zerodds-opcua-bridge-1.0.md — der vollständige Vertrag des Daemons.