Extension Formats for Unidirectional Lightweight Encapsulation (ULE) and the Generic Stream Encapsulation (GSE)
Extracted elements (22)
PDU-Concat requires all concatenated PDUs to share a single common ULE Type (PDU-Concat-Type) rather than allowing mixed types. This constraint simplifies receiver design and reduces per-PDU transmission overhead, which is the primary motivation for using concatenation in the first place.
The PDU-Concat extension is designed specifically for cases where many small PDUs share the same NPA destination address, improving efficiency by eliminating duplicated MAC/encapsulation overhead and allowing non-addressed receivers to skip multiple PDUs in a single operation.
The TS-Concat extension is motivated by the need to carry MPEG-2 control plane signalling (PSI/SI) in GSE, which has no native TS Packet support. It provides a uniform mechanism usable across both ULE and GSE without requiring protocol-specific changes to either encapsulation.
A recommended ordering of Extension Headers within an SNDU is provided: TimeStamp first (link framing), then encryption extensions (entire payload), then PDU-Concat or TS-Concat (group of PDUs), then PDU-specific extensions last. This ordering is a guideline for optimizing receiver processing, not a strict requirement.
GSE and ULE share the same IANA ULE Next-Header Registry and use the same Type field semantics per RFC 4326, but differ in SNDU length calculation, absence of per-SNDU CRC in GSE (CRC-32 is only in the final fragment), and different header flag fields (S, E, LT in GSE vs. D in ULE).
When TS Packets are transported via TS-Concat across ULE/GSE, each PID value SHOULD uniquely identify a Stream within the TS Multiplex. A receiver must independently demultiplex each TS Stream and associate SI table information with the correct Stream to avoid conflicts with native TS Packets.
A Receiver MUST check the validity of the Length value prior to processing the TS-Concat payload. An invalid Length (one that does not yield an integral number of TS Packets when divided by 188) MUST result in discard of all encapsulated TS Packets and SHOULD be recorded as a TS-Concat size mismatch error.
All concatenated PDUs within a PDU-Concat SNDU MUST share a common ULE Type (PDU-Concat-Type). Recursive use of PDU-Concat type is not permitted. Unsupported Types MUST be discarded and the receiver SHOULD record a PDU-Type error.
An Encapsulator SHOULD specify a bounded, configurable PDU Packing Threshold for PDU-Concat; if additional PDUs are not received within that threshold, the Encapsulator MUST immediately send all queued PDUs.
NULL TS Packets SHOULD NOT be sent using the TS-Concat encapsulation. An Encapsulator SHOULD specify a bounded, configurable TS Packing Threshold; if no additional TS Packets arrive within that threshold, the Encapsulator MUST immediately send any queued TS Packets.
Systems unable to insert TimeStamps at 1-microsecond resolution MUST pad the unused least-significant bits with zero. Receivers MAY process or skip the TimeStamp Extension but MUST continue to process the remainder of the SNDU and forward the encapsulated PDU.
The most significant bit (R) of each PDU length prefix in PDU-Concat MUST be set to zero by the sender; Receivers MUST ignore its value. The length of each PDU MUST be less than 32758 bytes.
The Receiver MUST verify the Length of each PDU in a PDU-Concat SNDU and MUST ensure that the sum of all PDU lengths equals the Length in the SNDU base header. A Receiver SHOULD discard the whole SNDU on size inconsistency. A Receiver MUST NOT forward a partial PDU whose indicated length exceeds the remaining unprocessed bytes.
When a PDU-Concat SNDU includes an NPA destination address (D=0), the Receiver MUST associate the same NPA address with all PDUs in the SNDU payload and MUST forward that address with each PDU if required by the forwarding interface.
The MPEG-2 TS-Concat Extension Header (H-Type 0x0002) is a Mandatory Extension Header that transports one or more MPEG-2 TS Packets within a ULE or GSE SNDU. The number of TS Packets is determined from the remaining payload size after the extension header, computed as (Length-N-10+D*6) / 188 for ULE.
The PDU-Concat Extension Header (H-Type 0x0003) is a Mandatory Extension Header that enables a sequence of PDUs of a common ULE Type to be sent within a single SNDU payload. Each PDU is prefixed by a 16-bit length field (1 reserved bit R set to zero, 15-bit length); PDUs are not required to be 16- or 32-bit aligned.
The TimeStamp Extension Header (H-Type 257 decimal, HLEN=3) is an Optional Extension Header that adds a 32-bit microsecond-resolution timestamp to an SNDU, representing the number of 1-microsecond ticks past the hour in Universal Time when the PDU was encapsulated.
Three new Next-Header Type values were assigned in the IANA ULE Next-Header Registry: Type 2 (TS-Concat, Mandatory, Section 3.1), Type 3 (PDU-Concat, Mandatory, Section 3.2), and Type 257 (TimeStamp, Optional, HLEN=3, Section 3.3). GSE shares this same IANA registry.
An attacker with access to the link or layer-2 equipment could inject arbitrary TS Packets into a ULE or GSE stream and thereby modify MPEG-2 layer-2 signalling information transmitted via the TS-Concat extension. This attack vector is equivalent to directly attacking native TS Packet signalling; use of security mechanisms to protect MPEG-2 signalling is discussed in referenced security requirements work.
PDU-Concat SNDU format (D=0): 1-bit D, 15-bit Length, 16-bit Type (0x0003), 6-byte NPA address, 16-bit PDU-Concat-Type, then repeated (1-bit R, 15-bit PDU-x-Length, PDU-x-data) entries, followed by CRC-32. When D=1, the NPA address is absent and PDU-Concat-Type immediately follows the 4-byte base header.
TimeStamp Extension Header format: 8-bit HLEN (0x03), 8-bit H-Type (0x01), 16-bit TimeStamp HI, 16-bit TimeStamp LO, 16-bit Type field (next header or payload type). Total size is 8 bytes including the Type field; the 32-bit timestamp value is right-justified.
ULE TS-Concat SNDU format (D=0): 1-bit D flag, 15-bit Length, 16-bit Type (0x0002), 6-byte NPA address, followed by one or more 188-byte TS Packets, and a trailing 32-bit CRC-32. When D=1, the NPA address is absent and TS Packets follow directly after the 4-byte header.