SOME/IP
IDs, types and codes
The fixed values of SOME/IP and SOME/IP-SD in one place, for reading traces and configurations.
Message Type
The Message Type field of the SOME/IP header.
| Value | Name | Use |
|---|---|---|
0x00 | REQUEST | method call that expects a response, even an empty one |
0x01 | REQUEST_NO_RETURN | fire&forget method call |
0x02 | NOTIFICATION | event or field notifier; also every SOME/IP-SD message |
0x80 | RESPONSE | response to a REQUEST, Return Code E_OK |
0x81 | ERROR | response to a REQUEST that failed; the Return Code says why (the Classic Platform SOME/IP transformer sends it without exception data) |
0x20 0x21 0x22 0xA0 0xA1 | TP_REQUEST … TP_ERROR | the same Message Types for a segment of SOME/IP TP: TP flag 0x20 added |
Return Code
The Return Code field of the SOME/IP header.
| Value | Name | Means |
|---|---|---|
0x00 | E_OK | no error; the only value allowed in a REQUEST or NOTIFICATION |
0x01 | E_NOT_OK | unspecified error |
0x02 | E_UNKNOWN_SERVICE | Service ID unknown |
0x03 | E_UNKNOWN_METHOD | Method ID unknown, service known |
0x04 | E_NOT_READY | service and method known, application not running |
0x05 | E_NOT_REACHABLE | used only inside the client, never sent |
0x06 | E_TIMEOUT | used only inside the client, never sent |
0x07 | E_WRONG_PROTOCOL_VERSION | Protocol Version not supported |
0x08 | E_WRONG_INTERFACE_VERSION | Interface Version does not match |
0x09 | E_MALFORMED_MESSAGE | payload cannot be deserialized |
0x0A | E_WRONG_MESSAGE_TYPE | unexpected Message Type |
0x0B–0x0F | E2E return codes (PRS) | repeated, wrong sequence, generic, not available, no new data; the Classic Platform transformer table lists only 0x0B E_E2E |
0x10–0x1F | reserved | future generic SOME/IP errors |
0x20–0x5E | service specific | in the Classic Platform: the ApplicationError of the ClientServerOperation + 0x1F |
Reserved IDs
| ID | Value | Meaning |
|---|---|---|
Service ID | 0x0000 | reserved |
| Service ID | 0xFF00–0xFF1F, 0xFF20–0xFF3F, 0xFF40–0xFF5F | testing at OEM, testing at Tier-1, ECU-internal (Tier-1) |
| Service ID | 0xFFFE | offering non-SOME/IP services (with the otherserv key in a Configuration option) |
| Service ID | 0xFFFF | SOME/IP and SOME/IP-SD special service (Magic Cookie, SOME/IP-SD message) |
Instance ID | 0x0000 / 0xFFFF | reserved / all instances |
Method ID or Event ID | 0x0000, 0x7FFF, 0x8000, 0xFFFF | reserved; a Method ID has the top bit 0, an Event ID 1 |
Eventgroup ID | 0x0000 / 0xFFFF | reserved / all eventgroups |
Message ID | 0xFFFF 8100 | SOME/IP-SD messages |
| Message ID | 0xFFFF 0000 / 0xFFFF 8000 | Magic Cookie client → server / server → client (TCP) |
Service Discovery
| Item | Value |
|---|---|
| Port | UDP 30490 by default, as source and destination |
| Header fields | Client ID 0, Session ID never 0, Protocol Version and Interface Version 1, Message Type 0x02 (NOTIFICATION), Return Code 0x00 |
| Flags | bit 7 reboot flag, bit 6 Unicast flag (always 1), bit 5 Explicit Initial Data Control flag (always 1) |
| Entry types | 0x00 FindService · 0x01 OfferService / StopOfferService (TTL 0) · 0x06 SubscribeEventgroup / StopSubscribeEventgroup (TTL 0) · 0x07 SubscribeEventgroupAck / SubscribeEventgroupNack (TTL 0) |
| Option types | 0x01 Configuration option · 0x02 Load Balancing option · 0x04 / 0x06 IPv4 / IPv6 Endpoint option · 0x14 / 0x16 IPv4 / IPv6 Multicast option · 0x24 / 0x26 IPv4 / IPv6 SD Endpoint option |
| L4-Proto in options | 0x06 TCP, 0x11 UDP |
TTL | seconds, 24 bit; 0xFFFFFF = until the next reboot; 0 = stop (StopOfferService, StopSubscribeEventgroup, SubscribeEventgroupNack) |
| Wildcards in a FindService | Instance ID 0xFFFF, major version 0xFF, minor version 0xFFFFFFFF |
| Configuration option keys | hostname, instancename, servicename, otherserv |
SOME/IP TP
| SOME/IP TP header | 4 bytes after the 16-byte SOME/IP header: Offset (upper 28 bits, unit 16 bytes), 3 reserved bits, More Segments flag |
| Segment size | multiple of 16 bytes except the last; at most 1392 bytes of payload for UDP |
| UDP payload limit | 1400 bytes of SOME/IP payload without segmentation |
Source: SOME/IP Protocol Specification, R20-11, sections 4.1.2, 4.2.1, 4.2.6; SOME/IP-SD Protocol Specification, R20-11, sections 4.1.2, 4.1.7 and 5; SOME/IP Transformer, R20-11, section 7.3.4.