Skip to content

vtz/opensomeip-gateways

Repository files navigation

OpenSOME/IP Gateways

License C++17 CMake

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

Overview

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  │
              └───────────┘  └───────────┘  └───────────┘

Design Principles

  • 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 IGateway base 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

Available Gateways

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

Quick Start

Prerequisites

  • 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)

Build a Specific Gateway

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

Using CMake Presets

# 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

Integration in Your Project

# In your CMakeLists.txt
add_subdirectory(vendor/opensomeip-gateways)
target_link_libraries(your_app PRIVATE opensomeip-gateway-mqtt)

Architecture

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.

Project Structure

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

Documentation

Related Projects

License

OpenSOME/IP Gateways is licensed under the Apache License 2.0 — see LICENSE for details.

Support & Community


OpenSOME/IP Gateways — Bridging automotive SOME/IP with the world.

About

Protocol gateways for OpenSOME/IP: bridges between SOME/IP and gRPC, MQTT, iceoryx2, ROS2, Zenoh, D-Bus, and DDS

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages