Transport Protocol Requirements

This section defines Software Low-Level Requirements (SW-LLR) for the SOME/IP Transport Protocol (SOME/IP-TP) module. SOME/IP-TP enables transport of large messages over UDP by segmentation and reassembly.

Overview

The Transport Protocol module handles:

  1. Segmentation of large messages for transmission

  2. TP header generation and parsing

  3. Reassembly of segmented messages

  4. Timeout and error handling

Segmentation Requirements

Segment Calculation

Requirement: Calculate Segment Count REQ_TP_001
status: implemented
priority: high
satisfies: feat_req_someiptp_760, feat_req_someiptp_764, feat_req_someiptp_759

The software shall calculate the number of segments required as the ceiling of (payload size / maximum segment size).

Rationale: Determines how many segments are needed for the message.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Maximum Segment Payload Size REQ_TP_002
status: implemented
priority: high
satisfies: feat_req_someiptp_773

The software shall use a maximum segment payload size of 1392 bytes (87 x 16 bytes) to fit within UDP/IP limits and maintain alignment.

Rationale: Maximum aligned size within UDP payload limit.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Segment Alignment REQ_TP_003
status: implemented
priority: high
satisfies: feat_req_someiptp_772

The software shall ensure all segments except the last have a payload size that is a multiple of 16 bytes.

Rationale: Offset field alignment requirement.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Last Segment Size REQ_TP_004
status: implemented
priority: high
satisfies: feat_req_someiptp_772

The software shall allow the last segment to have any size from 1 byte to the maximum segment size.

Rationale: Last segment contains remaining data.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Preserve Original Message Fields REQ_TP_005
status: implemented
priority: high
satisfies: feat_req_someiptp_762, feat_req_someiptp_774

The software shall preserve the original message’s Message ID and Request ID in all segment headers.

Rationale: Enables reassembly of related segments.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Same Session ID for All Segments REQ_TP_006
status: implemented
priority: high
satisfies: feat_req_someiptp_763

The software shall use the same Session ID for all segments of an original message.

Rationale: Session ID identifies the original message.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Set TP Flag in Message Type REQ_TP_007
status: implemented
priority: high
satisfies: feat_req_someiptp_765

The software shall set the TP flag (bit 5, value 0x20) in the Message Type field for all segments.

Rationale: TP flag identifies segmented messages.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Preserve Base Message Type REQ_TP_008
status: implemented
priority: high
satisfies: feat_req_someiptp_765, feat_req_someiptp_774

The software shall preserve the original Message Type and add the TP flag (e.g., REQUEST 0x00 becomes TP_REQUEST 0x20).

Rationale: Maintains message semantics during reassembly.

Code Location: src/tp/tp_segmenter.cpp

Segmentation Error Handling

Requirement: Error - Message Too Large REQ_TP_001_E01
status: implemented
priority: high

The software shall return an error when the original message size exceeds the configured maximum TP message size.

Rationale: Prevents excessive memory allocation.

Error Handling: Return MESSAGE_TOO_LARGE error code.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Error - Segment Creation Failure REQ_TP_001_E02
status: implemented
priority: high

The software shall return an error when memory allocation for a segment fails.

Rationale: Graceful handling of memory exhaustion.

Error Handling: Return RESOURCE_EXHAUSTED error code.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Error - Empty Message Segmentation REQ_TP_001_E03
status: implemented
priority: medium

The software shall handle segmentation requests for empty payloads by returning a single segment with zero payload.

Rationale: Edge case handling for empty messages.

Error Handling: Return single zero-length segment.

Code Location: src/tp/tp_segmenter.cpp

TP Header Requirements

Header Structure

Requirement: TP Header Position REQ_TP_010
status: implemented
priority: high
satisfies: feat_req_someiptp_766

The software shall place the 4-byte TP header immediately after the SOME/IP header (starting at byte 16 of the message).

Rationale: TP header precedes segment payload.

Code Location: src/tp/tp_segmenter.cpp

Requirement: TP Header Size REQ_TP_011
status: implemented
priority: high
satisfies: feat_req_someiptp_766

The software shall use a TP header size of exactly 4 bytes.

Rationale: Fixed header size per specification.

Code Location: src/tp/tp_segmenter.cpp

Offset Field

Requirement: Offset Field Position REQ_TP_012
status: implemented
priority: high
satisfies: feat_req_someiptp_766, feat_req_someiptp_768

The software shall place the Offset value in the upper 28 bits (bits 31-4) of the 4-byte TP header.

Rationale: Offset field structure per specification.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Offset Value Calculation REQ_TP_013
status: implemented
priority: high
satisfies: feat_req_someiptp_767, feat_req_someiptp_768

The software shall calculate the Offset field value as the segment’s byte offset in the original payload divided by 16.

Rationale: Offset field represents 16-byte blocks.

Code Location: src/tp/tp_segmenter.cpp

Requirement: First Segment Offset REQ_TP_014
status: implemented
priority: high
satisfies: feat_req_someiptp_767

The software shall set the Offset field to 0 for the first segment.

Rationale: First segment starts at offset 0.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Offset 16-Byte Alignment REQ_TP_015
status: implemented
priority: high
satisfies: feat_req_someiptp_768

The software shall ensure Offset field values always represent offsets that are multiples of 16 bytes.

Rationale: Lower 4 bits are implicitly zero.

Code Location: src/tp/tp_segmenter.cpp

Reserved Flags

Requirement: Reserved Flags Position REQ_TP_016
status: implemented
priority: medium
satisfies: feat_req_someiptp_769

The software shall place the Reserved flags in bits 3-1 of the TP header (3 bits).

Rationale: Reserved for future use.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Reserved Flags Value on Send REQ_TP_017
status: implemented
priority: medium
satisfies: feat_req_someiptp_769

The software shall set the Reserved flags to 0 when generating TP segments.

Rationale: Reserved bits must be zero per specification.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Reserved Flags Ignored on Receive REQ_TP_018
status: implemented
priority: medium
satisfies: feat_req_someiptp_769

The software shall ignore the Reserved flag values when parsing received TP segments.

Rationale: Forward compatibility with future use.

Code Location: src/tp/tp_reassembler.cpp

More Segments Flag

Requirement: More Segments Flag Position REQ_TP_019
status: implemented
priority: high
satisfies: feat_req_someiptp_770

The software shall place the More Segments flag in bit 0 (least significant bit) of the TP header.

Rationale: More Segments flag position per specification.

Code Location: src/tp/tp_segmenter.cpp

Requirement: More Segments Flag Set for Non-Last REQ_TP_020
status: implemented
priority: high
satisfies: feat_req_someiptp_770

The software shall set the More Segments flag to 1 for all segments except the last segment.

Rationale: Indicates more segments will follow.

Code Location: src/tp/tp_segmenter.cpp

Requirement: More Segments Flag Clear for Last REQ_TP_021
status: implemented
priority: high
satisfies: feat_req_someiptp_770

The software shall set the More Segments flag to 0 for the last segment of a message.

Rationale: Indicates this is the final segment.

Code Location: src/tp/tp_segmenter.cpp

Length Field in Segments

Requirement: Segment Length Field REQ_TP_022
status: implemented
priority: high
satisfies: feat_req_someiptp_771

The software shall set the SOME/IP Length field in each segment to cover the Request ID (8 bytes), TP header (4 bytes), and segment payload.

Rationale: Length field calculation per specification.

Code Location: src/tp/tp_segmenter.cpp

TP Header Error Handling

Requirement: Error - Invalid Offset Value REQ_TP_013_E01
status: implemented
priority: high

The software shall return an error when the calculated Offset would exceed the maximum value representable in 28 bits.

Rationale: Prevents offset field overflow.

Error Handling: Return MESSAGE_TOO_LARGE error code.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Error - Offset Not Aligned on Receive REQ_TP_015_E01
status: implemented
priority: medium

The software shall reject and discard TP segments whose offset is not aligned to the required 16-byte boundary.

Rationale: Misaligned offsets indicate protocol violations and must be treated as errors per REQ_TP_082_E03 and REQ_TP_082.

Error Handling: Discard segment, log offset value and expected alignment.

Code Location: src/tp/tp_reassembler.cpp (parse_tp_header validation)

Reassembly Requirements

Buffer Management

Requirement: Allocate Reassembly Buffer REQ_TP_030
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_782

The software shall allocate a reassembly buffer when the first segment of a new message is received.

Rationale: Buffer needed to store incoming segments.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Buffer Identification REQ_TP_031
status: implemented
priority: high
satisfies: feat_req_someiptp_781, feat_req_someiptp_794

The software shall identify each reassembly buffer by the combination of source endpoint, Message ID, and Session ID.

Rationale: Enables concurrent reassembly of multiple messages.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Buffer Size Estimation REQ_TP_032
status: implemented
priority: high
satisfies: feat_req_someiptp_787

The software shall estimate the initial buffer size based on the first segment’s offset and whether it’s the last segment.

Rationale: Efficient memory allocation.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Buffer Resize on Final Segment REQ_TP_033
status: implemented
priority: high
satisfies: feat_req_someiptp_770, feat_req_someiptp_783

The software shall resize the reassembly buffer when the last segment is received and the total message size is determined.

Rationale: Accurate final buffer size.

Code Location: src/tp/tp_reassembler.cpp

Segment Storage

Requirement: Store Segment by Offset REQ_TP_034
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_789

The software shall store each segment’s payload at the buffer position indicated by the segment’s Offset field.

Rationale: Correct placement for reassembly.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Track Received Segments REQ_TP_035
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_789

The software shall track which byte ranges have been received to detect missing segments.

Rationale: Enables gap detection for complete reassembly.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Detect Duplicate Segments REQ_TP_036
status: implemented
priority: high
satisfies: feat_req_someiptp_780

The software shall detect segments with the same offset as previously received segments and handle appropriately (ignore or compare).

Rationale: Network may deliver duplicates.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Detect Overlapping Segments REQ_TP_037
status: implemented
priority: high
satisfies: feat_req_someiptp_780

The software shall detect segments that partially overlap with previously received segments.

Rationale: Overlapping segments indicate protocol error.

Error Handling: Log warning; discard new segment.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Handle Out-of-Order Segments REQ_TP_038
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_789, feat_req_someiptp_790

The software shall handle segments received out of order by placing each segment at its correct offset position.

Rationale: UDP may deliver segments out of order.

Code Location: src/tp/tp_reassembler.cpp

Completion Detection

Requirement: Complete on Last Segment with No Gaps REQ_TP_039
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_783

The software shall complete reassembly when the last segment (More Segments = 0) is received and all preceding data is present.

Rationale: All data must be received for complete message.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Delayed Completion for Out-of-Order Last REQ_TP_040
status: implemented
priority: high
satisfies: feat_req_someiptp_774

The software shall not complete reassembly if the last segment arrives before all preceding segments, waiting until all gaps are filled.

Rationale: Must have all data before completion.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Deliver Reassembled Message REQ_TP_041
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_783

The software shall deliver the reassembled message to the application layer when reassembly is complete.

Rationale: Provides complete message to application.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Release Buffer After Delivery REQ_TP_042
status: implemented
priority: high
satisfies: feat_req_someiptp_774

The software shall release the reassembly buffer after the complete message has been delivered to the application.

Rationale: Frees memory for other operations.

Code Location: src/tp/tp_reassembler.cpp

Reassembly Error Handling

Requirement: Error - Missing Segments at Completion REQ_TP_039_E01
status: implemented
priority: high

The software shall report an error if all segments are not received within the timeout period after the last segment is received.

Rationale: Incomplete message cannot be processed.

Error Handling: Return SEQUENCE_ERROR error code.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - Buffer Overflow on Large Message REQ_TP_030_E01
status: implemented
priority: high

The software shall return an error when the estimated or actual message size exceeds the configured maximum.

Rationale: Prevents excessive memory allocation.

Error Handling: Return MESSAGE_TOO_LARGE error code.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - Total Length Inconsistency REQ_TP_043
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_792

The software shall discard the reassembly buffer if the implied total message length changes between segments.

Rationale: Inconsistent segments indicate error or attack.

Error Handling: Discard buffer; return MALFORMED_MESSAGE error.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - Maximum Concurrent Transfers REQ_TP_030_E02
status: implemented
priority: medium

The software shall return an error when the maximum number of concurrent reassembly operations is exceeded.

Rationale: Resource management for memory-constrained systems.

Error Handling: Return RESOURCE_EXHAUSTED error code.

Code Location: src/tp/tp_reassembler.cpp

Timeout Handling

Timer Management

Requirement: Start Reassembly Timer REQ_TP_050
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_796

The software shall start a reassembly timer when the first segment of a new message is received.

Rationale: Limits time for reassembly completion.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Configurable Timeout Value REQ_TP_051
status: implemented
priority: high
satisfies: feat_req_someiptp_774

The software shall use a configurable reassembly timeout value, with a default of 5000 milliseconds.

Rationale: Allows tuning for different network conditions.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Timer Reset on Segment (Optional) REQ_TP_052
status: implemented
priority: medium
satisfies: feat_req_someiptp_774

The software shall optionally reset the reassembly timer when each segment is received, if configured.

Rationale: Allows for slow but steady segment arrival.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Timer Expiry Detection REQ_TP_053
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_796

The software shall detect when the reassembly timer expires for any active reassembly operation.

Rationale: Triggers timeout handling.

Code Location: src/tp/tp_reassembler.cpp

Timeout Actions

Requirement: Discard Buffer on Timeout REQ_TP_054
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_796

The software shall discard all received segments for a reassembly operation when the timeout expires.

Rationale: Incomplete message is not useful.

Error Handling: Discard buffer and free memory.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Release Buffer Resources on Timeout REQ_TP_055
status: implemented
priority: high
satisfies: feat_req_someiptp_774

The software shall release all memory associated with the reassembly buffer when the timeout expires.

Rationale: Prevents memory leaks.

Error Handling: Free buffer and tracking structures.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Report Timeout Error REQ_TP_056
status: implemented
priority: high
satisfies: feat_req_someiptp_774, feat_req_someiptp_792

The software shall report a timeout error to the application layer when reassembly fails due to timeout.

Rationale: Application may need to take corrective action.

Error Handling: Invoke error callback with REASSEMBLY_TIMEOUT.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Log Timeout Details REQ_TP_057
status: implemented
priority: medium
satisfies: feat_req_someiptp_774

The software shall log timeout details including Message ID, Session ID, and number of segments received.

Rationale: Diagnostics for troubleshooting.

Error Handling: Log at WARNING level.

Code Location: src/tp/tp_reassembler.cpp

Timer Error Handling

Requirement: Error - Timer Creation Failure REQ_TP_050_E01
status: implemented
priority: high

The software shall handle timer creation failures by using a fallback polling mechanism or rejecting the segment.

Rationale: Graceful degradation on resource exhaustion.

Error Handling: Log error; use fallback or reject.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - Timer Already Active REQ_TP_050_E02
status: implemented
priority: low

The software shall prevent creation of duplicate timers for the same reassembly operation.

Rationale: Prevents timer leak.

Error Handling: Reuse existing timer.

Code Location: src/tp/tp_reassembler.cpp

Statistics and Monitoring

Requirement: Track Segmentation Statistics REQ_TP_060
status: implemented
priority: medium
satisfies: feat_req_someiptp_774, feat_req_someiptp_801

The software shall track statistics for segmentation operations, including messages segmented and segments sent.

Rationale: Monitoring and diagnostics.

Code Location: src/tp/tp_manager.cpp

Requirement: Track Reassembly Statistics REQ_TP_061
status: implemented
priority: medium
satisfies: feat_req_someiptp_774, feat_req_someiptp_801

The software shall track statistics for reassembly operations, including messages reassembled and segments received.

Rationale: Monitoring and diagnostics.

Code Location: src/tp/tp_manager.cpp

Requirement: Track Error Statistics REQ_TP_062
status: implemented
priority: medium
satisfies: feat_req_someiptp_774, feat_req_someiptp_792

The software shall track error statistics including timeouts, retransmissions, and malformed segments.

Rationale: Error rate monitoring.

Code Location: src/tp/tp_manager.cpp

Requirement: Query Active Reassemblies REQ_TP_063
status: implemented
priority: low
satisfies: feat_req_someiptp_774

The software shall provide a method to query the number of active reassembly operations.

Rationale: Resource monitoring.

Code Location: src/tp/tp_manager.cpp

Sender Behavior

Requirement: Segment Only Configured Messages REQ_TP_070
status: implemented
priority: high
satisfies: feat_req_someiptp_788, feat_req_someiptp_775

The software shall segment only messages that are configured for SOME/IP-TP segmentation.

Rationale: Restricting segmentation to configured messages prevents unexpected bandwidth usage.

Code Location: src/tp/tp_segmenter.cpp (segment_message configuration check)

Requirement: Send Segments in Ascending Order REQ_TP_071
status: implemented
priority: high
satisfies: feat_req_someiptp_777

The software shall send segments in ascending offset order.

Rationale: Ascending offset order simplifies receiver buffer management.

Code Location: src/tp/tp_segmenter.cpp (create_multi_segments, ascending offset)

Requirement: Uniform Segment Size REQ_TP_072
status: implemented
priority: high
satisfies: feat_req_someiptp_778, feat_req_someiptp_779

All segments with More Segments Flag = 1 shall have the same size. The sender shall maximize segment size within specification limits.

Rationale: Uniform segment size maximizes throughput and simplifies flow control.

Code Location: src/tp/tp_segmenter.cpp (max_segment_size uniformity)

Requirement: No Overlapping or Duplicate Segments REQ_TP_073
status: implemented
priority: high
satisfies: feat_req_someiptp_780

The sender shall not send overlapping or duplicated segments.

Rationale: No overlapping segments prevents ambiguous data and simplifies reassembly.

Code Location: src/tp/tp_segmenter.cpp (sequential offset calculation)

Requirement: Configured Client IDs for TP REQ_TP_074
status: implemented
priority: medium
satisfies: feat_req_someiptp_786

The sender shall use only configured Client IDs for SOME/IP-TP messages.

Rationale: Client ID restrictions enable per-client traffic accounting and access control.

Code Location: src/tp/tp_segmenter.cpp, include/tp/tp_types.h

Requirement: Traffic Shaping for Segments REQ_TP_075
status: implemented
priority: medium
satisfies: feat_req_someiptp_801

ECUs using SOME/IP-TP shall implement traffic shaping to limit the rate of segments on the network.

Rationale: Traffic shaping prevents TP segments from overwhelming the network.

Code Location: src/tp/tp_segmenter.cpp, include/tp/tp_types.h (TpConfig)

Receiver Behavior Extensions

Requirement: Session ID Based Reassembly Detection REQ_TP_076
status: implemented
priority: high
satisfies: feat_req_someiptp_793, feat_req_someiptp_795, feat_req_someiptp_776

The receiver shall use the Session ID to detect new original messages. A segment with a different Session ID shall start a new reassembly.

Rationale: Session-based detection enables the receiver to handle concurrent messages from the same sender.

Code Location: src/tp/tp_reassembler.cpp (process_segment, session_id matching)

Requirement: Return Code from Last Segment REQ_TP_077
status: implemented
priority: medium
satisfies: feat_req_someiptp_784

The Return Code of the reassembled message shall be taken from the last segment received.

Rationale: Using the last segment’s return code ensures the overall result reflects the final processing state.

Code Location: src/tp/tp_reassembler.cpp (add_segment_to_buffer, last segment return code)

Requirement: Clear TP Flag After Reassembly REQ_TP_078
status: implemented
priority: high
satisfies: feat_req_someiptp_785

The Message Type passed to the application after reassembly shall have the TP Flag set to 0.

Rationale: Clearing the TP flag presents a clean non-segmented message to the application layer.

Code Location: src/tp/tp_reassembler.cpp (clear TP flag on completion)

Requirement: Cancel Reassembly on Resource Exhaustion REQ_TP_079
status: implemented
priority: high
satisfies: feat_req_someiptp_796

The receiver shall cancel desegmentation when resources are exhausted, consistent with REQ_TP_076_E01 (cancel the oldest incomplete reassembly).

Rationale: Cancellation on resource exhaustion prevents memory exhaustion from incomplete reassemblies.

Code Location: src/tp/tp_reassembler.cpp (cancel_reassembly)

Requirement: No Cross-Message Reordering REQ_TP_080
status: implemented
priority: medium
satisfies: feat_req_someiptp_802, feat_req_someiptp_803

Reordering of segments from different original messages using the same buffer shall not be allowed.

Rationale: Isolating buffers by session prevents data corruption from interleaved segments.

Code Location: src/tp/tp_reassembler.cpp (session_id isolation per buffer)

Requirement: Overlapping Segment Handling REQ_TP_081
status: implemented
priority: medium
satisfies: feat_req_someiptp_810, feat_req_someiptp_797, feat_req_someiptp_820

The receiver may cancel reassembly when overlapping or duplicated segments change previously received bytes, if configurable.

Rationale: Detecting overlapping changes prevents silent data corruption.

Code Location: src/tp/tp_reassembler.cpp (add_segment_to_buffer overlap detection)

TP Informational References

Requirement: TP Error Handling REQ_TP_082
status: implemented
priority: high
satisfies: feat_req_someiptp_792, feat_req_someiptp_832

The software shall detect and handle obvious errors in received TP segments gracefully.

Rationale: Graceful error handling prevents crashes from malformed TP headers.

Code Location: src/tp/tp_reassembler.cpp (parse_tp_header validation)

Requirement: Error - Segment Size Exceeds Maximum REQ_TP_072_E01
status: implemented
priority: high

The software shall reject segments that exceed the configured maximum segment size.

Rationale: Oversized segments violate the TP protocol and may cause receiver buffer overflows.

Error Handling: Return SEGMENT_TOO_LARGE error code.

Code Location: src/tp/tp_segmenter.cpp

Requirement: Error - Reassembly Buffer Full REQ_TP_076_E01
status: implemented
priority: high

The software shall cancel the oldest incomplete reassembly when the reassembly buffer pool is full.

Rationale: Prevents memory exhaustion from many concurrent incomplete reassemblies.

Error Handling: Cancel oldest reassembly, log Message ID of cancelled reassembly.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - TP Message Type Mismatch REQ_TP_082_E01
status: implemented
priority: medium

The software shall reject TP segments whose Message Type differs from the first segment in the reassembly.

Rationale: Type mismatches indicate crossed message streams.

Error Handling: Discard segment, log type mismatch details.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - TP Segment With Wrong Protocol Version REQ_TP_082_E02
status: implemented
priority: medium

The software shall discard TP segments with unsupported Protocol Version.

Rationale: Protocol Version mismatch indicates incompatible TP implementation.

Error Handling: Discard segment, log version mismatch.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - Invalid TP Offset Alignment REQ_TP_082_E03
status: implemented
priority: medium

The software shall reject TP segments whose offset is not aligned to the required boundary.

Rationale: Misaligned offsets indicate protocol violations.

Error Handling: Discard segment, log offset value and expected alignment.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - TP Zero-Length Segment REQ_TP_082_E04
status: implemented
priority: high

The software shall discard TP segments with zero-length payload in multi-segment messages. A single-segment message with zero-length payload (as produced by the sender contract in REQ_TP_001_E03) shall be accepted.

Rationale: Zero-length segments in multi-segment messages carry no data and waste resources, but a single-segment zero-payload message is a valid edge case defined by the sender contract.

Error Handling: Discard zero-length segment in multi-segment context, log warning.

Code Location: src/tp/tp_reassembler.cpp

Requirement: Error - TP Reassembly Result Exceeds Maximum Message Size REQ_TP_076_E02
status: implemented
priority: high

The software shall cancel reassembly when the projected reassembled message would exceed the configured maximum message size.

Rationale: Prevents excessive memory allocation from crafted segment offsets.

Error Handling: Cancel reassembly, free buffer, log projected size.

Code Location: src/tp/tp_reassembler.cpp

Traceability

Implementation Files

  • include/tp/tp_types.h - TP type definitions

  • include/tp/tp_manager.h - TP manager interface

  • include/tp/tp_segmenter.h - Segmenter interface

  • include/tp/tp_reassembler.h - Reassembler interface

  • src/tp/tp_manager.cpp - TP manager implementation

  • src/tp/tp_segmenter.cpp - Segmenter implementation

  • src/tp/tp_reassembler.cpp - Reassembler implementation

Test Files

  • tests/test_tp.cpp - TP unit tests