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.

SOME/IP TP Block Diagram

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.

API Functions

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:

TP Configuration

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

  1. Initialize instance using rs_someip_tp_open.

  2. Configure TX and RX buffers via rs_someip_tp_set_tx_msg_buf and rs_someip_tp_set_rx_msg_buf.

  3. Periodically call rs_someip_tp_process for internal state handling.

  4. Handle incoming PDUs via rs_someip_tp_rx_indication.

  5. Release message buffers after transmission or reception using appropriate release APIs.

  6. Close the instance using rs_someip_tp_close during shutdown.

High level flow chart is depicted below:

SOME/IP TP Flow Diagram

The below diagram captures the Initialization of SOME/IP TP associated with the application layer.

SOME/IP Initialization Diagram

The below diagram captures the high level sequence of operations associated with the SOME/IP stack layer.

SOME/IP Sequence Diagram

SOME/IP TP Stack Memory Usage

ROM/RAM Consumption (Stack only)

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