Protocol gateways for OpenSOME/IP — bidirectional bridges between SOME/IP and widely-used communication middlewares for automotive, IoT, robotics, and cloud applications.
Keywords: SOME/IP, gateway, bridge, protocol translation, automotive middleware, iceoryx2, MQTT, gRPC, ROS2, Zenoh, D-Bus, DDS, vehicle-to-cloud, IPC, SOA
Modern vehicle architectures need to bridge in-vehicle SOME/IP networks with cloud services, local high-performance IPC, robotics stacks, and IoT infrastructure. OpenSOME/IP Gateways provides standardized, open-source protocol bridges that keep the core opensomeip library lean while offering first-class integration with external ecosystems.
┌─────────────────┐
│ opensomeip │
│ (core stack) │
└───────┬─────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ iceoryx2 │ │ MQTT │ │ gRPC │ ...
│ gateway │ │ gateway │ │ gateway │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ Zero-copy │ │ Cloud │ │ Backend │
│ local IPC │ │ Broker │ │ Services │
└───────────┘ └───────────┘ └───────────┘
- Independent gateways — each gateway builds and deploys independently; no cross-gateway dependencies
- Dependency isolation — external dependencies (Paho, gRPC, iceoryx2, etc.) stay within their gateway
- Common patterns — shared
IGatewaybase class, YAML configuration, consistent lifecycle - Bidirectional — every gateway supports both SOME/IP → external and external → SOME/IP directions
- Production-oriented — TLS, reconnect, buffering, metrics where applicable
| Gateway | Protocol | Status | Use Case |
|---|---|---|---|
| gateway-iceoryx2 | Eclipse iceoryx2 | 🟡 Initial | Zero-copy local IPC for intra-ECU communication |
| gateway-mqtt | MQTT 5.0/3.1.1 | 🟡 Initial | Vehicle-to-cloud telemetry, fleet management, IoT |
| gateway-grpc | gRPC | 🟡 Initial | Service-oriented cloud/backend integration |
| gateway-ros2 | ROS2 | 🟡 Initial | Autonomous driving, robotics, ADAS |
| gateway-zenoh | Eclipse Zenoh | 🟡 Initial | Edge-to-cloud pub/sub, location-transparent comms |
| gateway-dbus | D-Bus | 🟡 Initial | Linux automotive platforms (AGL), system services |
| gateway-dds | OMG DDS | 🟡 Initial | AUTOSAR Adaptive, defense, aerospace |
- C++17-compatible compiler (GCC 9+, Clang 10+)
- CMake 3.20+
- opensomeip source tree at
../some-ip(sibling directory) or installed system-wide - Gateway-specific dependencies (see each gateway's README)
git clone https://github.com/vtz/opensomeip-gateways.git
cd opensomeip-gateways
# Build with the MQTT gateway enabled
mkdir build && cd build
cmake .. -DBUILD_GATEWAY_MQTT=ON
make -j$(nproc)
# Run tests
ctest --output-on-failure# Build a specific gateway
cmake --preset mqtt
cmake --build --preset mqtt
# Build all gateways (requires all dependencies)
cmake --preset all-gateways
cmake --build --preset all-gateways# In your CMakeLists.txt
add_subdirectory(vendor/opensomeip-gateways)
target_link_libraries(your_app PRIVATE opensomeip-gateway-mqtt)Every gateway follows the same architectural pattern:
┌────────────────────────────────────────────────────────┐
│ Gateway Process │
│ │
│ ┌─────────────────┐ ┌──────────────────────┐ │
│ │ SOME/IP Side │ │ External Protocol │ │
│ │ (opensomeip) │ │ Side │ │
│ │ - Transport │ │ - Protocol client │ │
│ │ - SD │◄───────►│ - Pub/sub or RPC │ │
│ │ - RPC │ Trans- │ - Discovery │ │
│ │ - Events │ lation │ - Security │ │
│ └─────────────────┘ Layer └──────────────────────┘ │
│ ▲ │
│ │ │
│ ┌───────┴───────┐ │
│ │ Configuration │ │
│ │ (YAML) │ │
│ └───────────────┘ │
└────────────────────────────────────────────────────────┘
See docs/architecture/gateway-architecture.md for the detailed design.
opensomeip-gateways/
├── CMakeLists.txt # Root build configuration
├── CMakePresets.json # Build presets per gateway
├── README.md # This file
├── LICENSE # Apache 2.0
├── CONTRIBUTING.md # Contribution guidelines
├── CHANGELOG.md # Version history
├── VERSION # Semantic version (0.1.0)
├── common/ # Shared gateway utilities
│ ├── include/opensomeip/gateway/
│ │ ├── gateway_base.h # IGateway abstract base
│ │ ├── config.h # YAML configuration utilities
│ │ └── translator.h # Payload translation helpers
│ └── src/
├── gateway-iceoryx2/ # SOME/IP ↔ iceoryx2
├── gateway-mqtt/ # SOME/IP ↔ MQTT
├── gateway-grpc/ # SOME/IP ↔ gRPC
├── gateway-ros2/ # SOME/IP ↔ ROS2
├── gateway-zenoh/ # SOME/IP ↔ Zenoh
├── gateway-dbus/ # SOME/IP ↔ D-Bus
├── gateway-dds/ # SOME/IP ↔ DDS
├── docs/ # Documentation
│ ├── architecture/
│ ├── BUILD.md
│ ├── CODING_GUIDELINES.md
│ └── ADDING_A_GATEWAY.md
├── examples/ # Cross-gateway examples
└── scripts/ # Development scripts
- Build Guide — detailed build instructions for each platform and gateway
- Architecture — gateway design patterns and common infrastructure
- Adding a Gateway — step-by-step guide for contributors
- Coding Guidelines — C++17 coding standards
- Contributing — development workflow and PR process
- opensomeip — Core SOME/IP protocol stack (C++17)
- Eclipse iceoryx2 — Zero-copy IPC
- Eclipse Zenoh — Edge-to-cloud pub/sub
- Eclipse Paho — MQTT client libraries
- gRPC — High-performance RPC
- ROS2 — Robot Operating System
- Eclipse Cyclone DDS — DDS implementation
OpenSOME/IP Gateways is licensed under the Apache License 2.0 — see LICENSE for details.
- Core stack: github.com/vtz/opensomeip
- Issues: Bug reports and feature requests on GitHub Issues
- Discussions: Technical questions on GitHub Discussions
OpenSOME/IP Gateways — Bridging automotive SOME/IP with the world.