SOME/IP (Scalable service-Oriented MiddlewarE over IP) is the wire protocol used by ara::com's SOME/IP binding. Every SOME/IP message begins with an 8-byte header:
| Offset | Field | Size | Description |
|---|---|---|---|
| 0x00 | Service ID | 2 bytes | 16-bit identifier for the service interface |
| 0x02 | Method/Event ID | 2 bytes | 16-bit method or event ID (events have bit 15 set: 0x8000–0xFFFF) |
| 0x04 | Length | 4 bytes | Length of remaining message (header bytes 8–end + payload) |
| 0x08 | Client ID | 2 bytes | Identifies the calling client process |
| 0x0A | Session ID | 2 bytes | Increments per request, used to match request/response |
| 0x0C | Protocol Version | 1 byte | Always 0x01 |
| 0x0D | Interface Version | 1 byte | Major version of the ServiceInterface |
| 0x0E | Message Type | 1 byte | 0x00=REQUEST, 0x02=REQUEST_NO_RETURN, 0x80=NOTIFICATION, 0x40=RESPONSE |
| 0x0F | Return Code | 1 byte | 0x00=OK, 0x01=NOT_OK, 0x02=UNKNOWN_SERVICE, etc. |
Byte: 0 1 2 3 4 5 6 7
+----+----+----+----+----+----+----+----+
| Srv ID | Mth/Evt | Length |
+----+----+----+----+----+----+----+----+
Byte: 8 9 10 11 12 13 14 15
+----+----+----+----+----+----+----+----+
| Client |Session | PV | IV | MT | RC |
+----+----+----+----+----+----+----+----+
[ Payload (serialized application data) ]