SOME/IP Transport Protocol
Overview
RAPIDSEA supports SOME/IP Transport protocol as explained in the SOME/IP Protocol page. This module is used by both SOME/IP Clients and SOME/IP Servers when message payload size exceeds the single-frame limit. Messages smaller than 1400 bytes are directly transmitted via UDP socket communication. For payloads exceeding this limit, the SOME/IP layer delegates data to the TP layer. The TP layer then segments the data into smaller chunks (typically 1392 bytes each) and transmits them sequentially to the socket layer. On the receiver side, the socket delivers incoming segments to the SOME/IP layer.If the message is identified as a large payload, it is passed to the TP layer for reassembly before being returned to the application layer. The APIs provided by this module abstract the TP handling so that upper layers can seamlessly send and receive large messages.
The below diagram captures the block level diagram of the SOME/IP TP and how it interfaces with other modules.
Application Interface
The module ensures reliable transport of large payloads by providing mechanisms for: - Splitting outgoing messages into multiple transport PDUs. - Reassembling incoming segmented PDUs into a complete SOME/IP message. - Managing transmit and receive message buffers. - Queueing and releasing message buffers after use. - Registering user callbacks for transmission and reception events.The RAPIDSEA SOME/IP Transport protocol clearly defines API functions that are essential for the user to use/implement.
The below table captures the function that are to be called from the application logic.
Function |
Description |
|---|---|
rs_someip_tp_get_version_info |
To get the version information of SOME/IP TP module. |
rs_someip_tp_set_config |
To set TP configuration |
rs_someip_tp_open |
To initialize the SOME/IP Transport Protocol instance and configuration. |
rs_someip_tp_set_tx_msg_buf |
To set up the transmit message buffers for the SOME/IP TP communication. |
rs_someip_tp_set_rx_msg_buf |
To set up the receive message buffers for the SOME/IP TP communication |
rs_someip_tp_get_rx_assembled_msg_buf |
To get the fully assembled received message after segmentation reassembly |
rs_someip_tp_process |
To process the SOME/IP Transport Protocol state machine, including message, segmentation, reassembly, and transmit/receive handling. |
rs_someip_tp_close |
To close the SOME/IP Transport Protocol instance and release all allocated |
rs_someip_tp_transmit |
To initiate the transmission of a SOME/IP message using the Transport Protocol layer. Handles message segmentation and enqueues the message for sending. |
rs_someip_tp_rx_indication |
To indicate the reception of a SOME/IP message fragment or complete message to the Transport Protocol module for further processing or reassembly. |
SOME/IP TP Configuration Parameter:
Function |
Description |
|---|---|
tp_rx_timeout |
Timeout (in milliseconds) for receiving the next segment of a TP message. |
tp_tx_separation_time |
Minimum separation time (in microseconds) between consecutive TP segments during transmission. |
burst_size |
Maximum number of consecutive TP segments that can be sent in a single transmission burst before applying the separation delay |
Implementation Guide
Initialize instance using
rs_someip_tp_open.Configure TX and RX buffers via
rs_someip_tp_set_tx_msg_bufandrs_someip_tp_set_rx_msg_buf.Periodically call
rs_someip_tp_processfor internal state handling.Handle incoming PDUs via
rs_someip_tp_rx_indication.Release message buffers after transmission or reception using appropriate release APIs.
Close the instance using
rs_someip_tp_closeduring shutdown.
High level flow chart is depicted below:
The below diagram captures the Initialization of SOME/IP TP associated with the application layer.
The below diagram captures the high level sequence of operations associated with the SOME/IP stack layer.
SOME/IP TP Stack Memory Usage
Platform |
Memory |
Size |
|---|---|---|
Micro controller (iMXRT) |
ROM |
5KB |
Micro controller (iMXRT) |
RAM |
1KB |
SOME/IP TP Stack Memory Details
The SOME/IP Transport Protocol (SOME/IP-TP) layer is responsible for segmentation and reassembly of large SOME/IP messages that exceed the standard Ethernet MTU. It ensures reliable end-to-end data delivery for payloads that cannot fit within a single SOME/IP frame.
Each SOME/IP-TP instance allocates dedicated transmit (TX) and receive (RX) buffers to handle segmented message transfers. By default, a single TX or RX buffer is sized at approximately 5 KB. However, the total TP memory usage dynamically scales with the number of transmit and receive message contexts configured within the TP message manager.
The TP layer defines two key configuration parameters:
num_tx_msg– Number of TX messages supported by the TP instance.num_rx_msg– Number of RX messages supported by the TP instance.
Note
TP buffer size must always equal SOME/IP buffer size for consistent data flow.
Increasing message counts enables higher concurrency but increases RAM consumption.
Reducing these counts may limit simultaneous segmented transfers.
All memory used by TP is statically allocated during initialization, ensuring predictable runtime behavior.
As per Autosar, TCP is not applicable for SOMEIP Transport Protocol layer.
Dependency
This stack depends on the below RAPIDSEA interfaces that can be obtained or custom implemented.
SOME/IP TP Header Details
Documentation from the relevant header as follows:
Warning
doxygenfile: Cannot find file “rs_someip_tp.h