Scalable service-Oriented MiddlewarE over IP (SOME/IP)

Overview

SOME/IP is an automotive middleware solution that can be used for control messages. It was designed from beginning on to fit devices of different sizes and different operating systems perfectly. This includes small devices like cameras, AUTOSAR devices, and up to head units or telematics devices. It was also made sure that SOME/IP supports features of the Infotainment domain as well as that of other domains in the vehicle, allowing SOME/IP to be used for MOST replacement scenarios as well as more traditional CAN scenarios.

While IT solutions often only support single middleware features (e.g. RPC or Publish/Subscribe), SOME/IP supports a wide range of middleware features:

Serialization

The SOME/IP serialization was designed to be highly efficient; i.e. it uses the minimal RAM and CPU resources. This is achieved by using a binary and non-descriptive format. Basically all parameters are written behind each other. The format of a message is very similar or many cases exactly the same as the in-memory representation of the message (packed struct).

SOME/IP can serialize the following basic datatypes (datatypes are encoded per default in network byte order/big endian but can also encoded in little endian):

SOME/IP can serialize the following complex datatypes:

The size of length and type fields is 32 bit (default) and be be configured to be 0, 8, 16, or 32 bit. All length and type fields are encoded in network byte order/big-endian.

Remote Procedure Call (RPC) and Messaging

SOME/IP services support the following messages:

Proprietary extension to the SOME/IP serialization

SOME/IP already supports a lot of flexibility in the serilization of messages, like adding parameters to messages or inside structs later.

A proprietary extension (wrongly called a TLV extension at first) was added to SOME/IP in later AUTOSAR releases to support even more flexibility. Basically parameters and/or struct members can be prefixed with an Data ID and Length Indication. While this makes the serialization much less efficient, it adds flexibility, like removing parameters from messages or reordering parameters later. To use this feature, APIs and applications need to support this too.

Due to the limited flexiblity and the high overhead, this extension is currently NOT widely used.

Keep in mind that not all SOME/IP implementation support this extension since its not part of the original SOME/IP.

AUTOSAR support

SOME/IP is the only known middleware that was designed to be integrated into AUTOSAR 4.x releases:

For AUTOSAR specifications see publications.

Open Source Tool support

Since Wireshark 3.2 SOME/IP support is public! Go and get it at Wireshark. Wireshark supports SOME/IP, SOME/IP-SD, SOME/IP-TP, and configurable SOME/IP payload dissection. In the following releases some important improvements were added, like TECMP support, if you capturing with that turned on.

A generator for payload dissection configs can be found here github.

Currently some more exciting features are added to Wireshark (release 3.6?) and the config generator. Stay tuned.