Optimize performance

Basic SOME/IP translation was designed to provide an updatable solution for integrating with AUTOSAR services. The primary challenge for the broker was to translate messages and RPC calls that were not known at compilation time. To address this, runtime updates assume dynamic additions or updates of SDV services, similar to how new unit types are introduced.

The solution for this dynamic translation is based on runtime type information (RTTI). The broker consumes configuration from all installed service bundles and performs reflection-based translation using data schemes from that configuration.

While RTTI-based translation offers flexibility, it is inherently slower than precompiled methods. To optimize heavily loaded data paths, use a technique that bypasses translation.

To support the consumption of large and frequent messages, SDV lets you bypass translation and forward SOME/IP formatted bytes to consumer service bundles.

The service bundle handles the SOME/IP formatted payload, which can either consume the payload or translate the payload to protobuf.

Specify message_translation_mode: INTERPRET_AS_BYTES for the event in a SOME/IP mapping file to bypass translation. See an example in samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl.

Translation method trade-offs

When choosing a translation method, consider these trade-offs:

  • System interaction: Other SDV services cannot interpret bytes forwarded in SOME/IP format without knowing the raw format details. For example, SDV Telemetry can't process individual fields of such messages.

  • Additional effort: Translating the raw payload in SOME/IP format requires additional effort from the service bundle developer.

Library generator

SDV provides an automated generator for translating the SOME/IP format. This generator creates libraries based on available message definitions and mappings for direct translation without reflection. Service bundles that consume forwarded SOME/IP bytes can use the generated libraries.

Recommendation: Use the generator only if your OEM identifies performance-critical events that cannot be translated within your project's performance requirements. In such cases, your OEM should already have both the protobuf definition and SOME/IP mapping used for RTTI-based translation. This same configuration can serve as input for the generator. For more details, see the README.md file in the core_services/tools/someip_translation_generator/ directory.