Protocol Gateways¶
The opensomeip-gateways ecosystem provides bidirectional protocol bridges between SOME/IP and widely-used communication middlewares. Each gateway is an independent CMake target with its own dependencies, tests, and examples.
Repository
Gateway source code lives in the dedicated opensomeip-gateways repository.
Architecture Overview¶
graph LR
subgraph "Vehicle / ECU Network"
SOMEIP["OpenSOME/IP<br/>Core Stack"]
end
subgraph "opensomeip-gateways"
direction TB
GW_IOX["iceoryx2<br/>Gateway"]
GW_MQTT["MQTT<br/>Gateway"]
GW_GRPC["gRPC<br/>Gateway"]
GW_ROS2["ROS 2<br/>Gateway"]
GW_ZENOH["Zenoh<br/>Gateway"]
GW_DBUS["D-Bus<br/>Gateway"]
GW_DDS["DDS<br/>Gateway"]
end
subgraph "External Protocols"
IOX2["iceoryx2<br/>Zero-copy IPC"]
MQTT["MQTT Broker<br/>Cloud / IoT"]
GRPC["gRPC Services<br/>Cloud / Edge"]
ROS2["ROS 2 Nodes<br/>ADAS / Robotics"]
ZENOH["Zenoh Routers<br/>Edge-to-Cloud"]
DBUS["D-Bus<br/>Linux Services"]
DDS["DDS Domain<br/>AUTOSAR Adaptive"]
end
SOMEIP <--> GW_IOX <--> IOX2
SOMEIP <--> GW_MQTT <--> MQTT
SOMEIP <--> GW_GRPC <--> GRPC
SOMEIP <--> GW_ROS2 <--> ROS2
SOMEIP <--> GW_ZENOH <--> ZENOH
SOMEIP <--> GW_DBUS <--> DBUS
SOMEIP <--> GW_DDS <--> DDS
Gateway Catalog¶
| Gateway | Protocol | Tier | Key Use Case | Page |
|---|---|---|---|---|
| iceoryx2 | Zero-copy IPC | 1 | Intra-ECU / intra-SoC bridging | Details → |
| MQTT | MQTT 5.0 | 1 | Vehicle-to-cloud telemetry & commands | Details → |
| gRPC | HTTP/2 + Protobuf | 1 | Service-oriented cloud integration | Details → |
| ROS 2 | DDS (rmw) | 2 | ADAS / autonomous driving / robotics | Details → |
| Zenoh | Zenoh protocol | 2 | Edge-to-cloud pub/sub routing | Details → |
| D-Bus | Linux IPC | 2 | Linux system service integration | Details → |
| DDS | OMG DDS | 3 | AUTOSAR Adaptive / aerospace / defense | Details → |
Common Library¶
All gateways share a common foundation:
IGateway— Interface:start(),stop(),on_someip_message(), statsGatewayBase— Base class with service mapping, direction filtering, atomic counters, reusable UDP bridge listenerMessageTranslator— Topic naming, hex formatting, JSON envelope, opaque/typed payload conversionServiceMapping— Declarative per-service routing with direction and translation modeGatewayStats— Lock-free atomic counters for messages, bytes, errors, uptime
See Architecture for the full design.
Quick Start¶
git clone https://github.com/vtz/opensomeip-gateways.git
cd opensomeip-gateways
# Build with specific gateways enabled
cmake -B build -S . \
-DBUILD_GATEWAY_ICEORYX2=ON \
-DBUILD_GATEWAY_MQTT=ON \
-DBUILD_TESTS=ON
cmake --build build
ctest --test-dir build
Each gateway has its own BUILD_GATEWAY_<NAME> option (all OFF by default) and requires its protocol's SDK to be installed.
opensomeip APIs Used¶
Every gateway integrates with the opensomeip core stack through these APIs:
| API | Header | Usage |
|---|---|---|
| Message | someip/message.h |
SOME/IP message creation, serialization |
| Transport | transport/udp_transport.h |
UDP listener for inbound SOME/IP |
| Events | events/event_publisher.h |
Publish SOME/IP events toward the network |
| Events | events/event_subscriber.h |
Subscribe to SOME/IP event groups |
| RPC | rpc/rpc_client.h |
Send SOME/IP method calls |
| RPC | rpc/rpc_server.h |
Handle incoming SOME/IP method calls |
| Service Discovery | sd/sd_client.h |
Find SOME/IP services |
| Service Discovery | sd/sd_server.h |
Offer SOME/IP services |
| E2E Protection | e2e/e2e_protection.h |
End-to-end data integrity validation |
| Serialization | serialization/serializer.h |
Binary envelope encoding |
Contributing¶
See Adding a Gateway for how to implement a new protocol gateway.