SOME/IP
Reception: from the wire to the SWC
On the way up, each module removes its own header, sorts the content by one more key, and drops what it cannot place. Follow the event BrakeEvent arriving at the brake ECU.
A series of checks
EthIf hands each received frame to its frame owner (the upper module registered for the frame type, here TcpIp for IPv4). SoAd picks the socket connection that best matches the sender's address and port, and its message acceptance filter (a check that the sender is a remote address this socket connection allows) drops messages from anyone else. It then reads the header ID (the first 32 bits of the SoAd PDU header, for SOME/IP the Message ID) and finds the socket route (the way of a received message from a socket connection up to a module). From module to module the data goes up by an RxIndication (the callback that tells the module above that a PDU has been received).
The routing group check is where Sd shows its power. A routing group works like a switch for a set of routes in SoAd, and Sd turns it on and off: the socket route for BrakeEvent is only enabled after the SubscribeEventgroupAck arrived. Until then, even a correctly addressed event is dropped.
One datagram, several messages
A single UDP datagram may carry several SOME/IP messages back to back. SoAd reads the length in each SoAd PDU header (for SOME/IP the Length field) to find where one message ends and the next begins, and passes each one up separately. If the rest of the datagram is shorter than a PDU header or than the length it gives, SoAd stops and ignores the rest. A stricter setting makes SoAd drop the whole datagram when the lengths do not add up exactly.
Try it
Step up through the stack and watch the headers come off.
The message at this point
Things to notice. The receiving SoAd removes the SoAd PDU header (Message ID and Length) and passes on only the rest; inside the ECU the Message ID survives only as the PDU ID of the I-PDU. The SOME/IP transformer is the first module that looks at versions; every module below sorts only by addresses and IDs.
Check yourself optional
New terms in this lesson
| Term | Meaning |
|---|---|
| frame owner | The upper module EthIf hands a received frame to, chosen by the frame type (TcpIp for IPv4) |
| message acceptance filter | SoAd check on reception: only messages from the remote address the socket connection allows are accepted |
| routing group | A set of routes in SoAd that is enabled or disabled as a whole; Sd controls it |
RxIndication | Callback to the module above: a PDU has been received, here is its data |
Source: R20-11 specifications of Ethernet Interface (frame owner), TCP/IP (7.6), Socket Adaptor (7.4–7.6, 7.9), RTE (4.10) and SOME/IP Protocol (4.2.1, several messages per datagram).