ATSC3.0 ROUTE Packet Format(LCT/ALC)
1. LCT(Layered Coding Transport) Building Block: https://www.rfc-editor.org/rfc/rfc5651
2. ALC(Asynchronous Layered Coding) Protocol Instantiation https://www.rfc-editor.org/rfc/rfc5775.html
3. RFC5445 Basic Forward Error Correction (FEC) Schemes https://www.rfc-editor.org/rfc/rfc5445
4. FLUTE(File Delivery over Unidirectional Transport: 2004年发布RFC-3926,2012年发布RFC6726. https://www.rfc-editor.org/rfc/rfc6726
4. ROUTE(Real-Time Object Delivery over Unidirectional Transport) https://www.atsc.org/wp-content/uploads/2025/01/A331-2024-04a-Signaling-Delivery-Sync-FEC.pdf
扩展:
- EXT_TIME in RFC5651-LCT
- EXT_FTI---FEC Object Transmission Information in RFC5775-ALC
- EXT_FDT--File Delivery Table in RFC6726-FLUTE
- EXT_CENC in RFC6726-FLUTE
- General EXT_FTI in RFC3926-FLUTE
- EXT_TOL Header -----Transport Object Length in ATSC-A331
- EXT_ROUTE_PRESENTATION_TIME for MDE Mode Operation in ATSC-A331
缩略词:
- ALC – Asynchronous Layered Coding
- AL-FEC – Application Layer Forward Error Correction
- BSID-- Broadcast Stream ID
- LCT – Layered Coding Transport
- LLS – Low Level Signaling
- BSID – Broadcast Stream ID
- MBMS – Multimedia Broadcast/Multicast Service
- NRT – Non-Real Time
- PI --Protocol instantiation
- PLP – Physical Layer Pipe
- ROUTE – Real-Time Object Delivery over Unidirectional Transport
- SLS – Service Layer Signaling
- SLT – Service List Table
- S-TSID – Service-based Transport Session Instance Description
- TSI-- Transport Session Identifier
- TOI-- Transmission Object Identifier
1 LCT(Layered Coding Transport) Building Block
https://www.rfc-editor.org/rfc/rfc5651
1.1 LCT Header in RFC5651
若不包含扩展,LCT头一般为16字节
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V | C |PSI|S| O |H|Res|A|B| HDR_LEN | Codepoint (CP)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Congestion Control Information (CCI, length = 32*(C+1) bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transport Session Identifier (TSI, length = 32*S+16*H bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transport Object Identifier (TOI, length = 32*O+16*H bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header Extensions (if applicable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Default LCT Header Format
- LCT version number (V): 4 bits, current is 1.
- Congestion control flag (C): 2 bits
- C=0 indicates the Congestion Control Information (CCI) field is 32 bits in length. C=1 indicates 64 bits in length.
- C=2 indicates 96 bits in length. C=3 indicates 128 bits in length.
- Protocol-Specific Indication (PSI): 2 bits
- Transport Session Identifier flag (S): 1 bit. This is the number of full 32-bit words in the TSI field. The TSI field is 32*S + 16*H bits in length, i.e., the length is either 0 bits, 16 bits, 32 bits, or 48 bits.
- Transport Object Identifier flag (O): 2 bits. This is the number of full 32-bit words in the TOI field. The TOIfield is 32*O + 16*H bits in length, i.e., the length is either 0 bits, 16, 32, 48, 64, 80, 96, or 112 bits.
- Half-word flag (H): 1 bit.
- Reserved (Res): 2 bits
- Close Session flag (A): 1 bit。 When a receiver receives a packet with A set to 1, the receiver SHOULD assume that no more packets will be sent to the session.
- Close Object flag (B): 1 bit
- LCT header length (HDR_LEN): 8 bits. Total length of the LCT header in units of 32-bit words
- Codepoint (CP): 8 bits. 由使用者定义The use of the CP field is similar to the Payload Type (PT) field in RTP headers as described in [RFC3550]
- Congestion Control Information (CCI): 32, 64, 96, or 128 bits
- Transport Session Identifier (TSI): 0, 16, 32, or 48 bits
- Transport Object Identifier (TOI): 0, 16, 32, 48, 64, 80, 96, or 112 bits
1.2 LCT Header Extensions in RFC5651
There are two formats for Header Extension fields:
- The first format is used for variable-length extensions, with Header Extension Type (HET) values between 0 and 127.
- The second format is used for fixed-length (one 32-bit word) extensions, using HET values from 127 to 255.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET (<=127) | HEL | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
. ..... Header Extension Content (HEC) .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET (>=128) | Header Extension Content (HEC) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Format of Additional Headers
- Header Extension Type (HET): 8 bits. 0 to 127 are used for variable-length Header Extensions. HET values from 128 to 255 are used for fixed-length 32-bit Header Extensions.
- Header Extension Length (HEL): 8 bits. The length of the whole Header Extension field, expressed in multiples of 32-bit words.
- Header Extension Content (HEC): variable length
RFC5661-LCT 定义了4个扩展:
- EXT_NOP, HET=0 No-Operation extension.
- EXT_AUTH, HET=1 Packet authentication extension.
- EXT_TIME, HET=2 Time Extension. This extension is used to carry several types of timing information. the value can be server's wall clock, or NTP time. It includes general purpose timing information, namely the Sender Current Time (SCT), Expected Residual Time (ERT), and Sender Last Change (SLC) time extensions
1.3 LCT EXT_TIME in RFC5651
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 2 | HEL >= 1 | | | | |res | PI-spec |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
... optional(SCT, ERT, SLC) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: LCT EXT_TIME Header Extension Format
第三字节的前4bit为flag: "SCT Hi", "SCT Low", "ERT", "SLC"
SCT-High: 32bit, SCT-Low: 32 bit, Expected Residual Time (ERT): 32bit , Sender Last Change (SLC):32bit
2. Asynchronous Layered Coding (ALC) Protocol Instantiation
https://www.rfc-editor.org/rfc/rfc5775.html
2.1 ALC Packet Format
ALC Packet Format= "LCT Header" + "FEC Payload Id" + "Encoding Symbols"
- "FEC Payload Id" is defined at RFC5052
- The TSI is scoped by the sender IP address, and the (sender IP address, TSI) pair MUST uniquely identify the session.
- The LCT header contains a Congestion Control Information (CCI) field that MUST be used to carry the CCI from the specified multiple rate congestion control protocol.至少须支持 "RFC3738 Wave and Equation Based Rate Control (WEBRC) Building Block"
- ALC 将PSI of LCT 的第一bit定义为Source Packet Indicator (SPI),第二bit仍为reserved
- SPI 为1 表示数据为FEC source data, 为0表示数据为repair data
- Session Description 不在ALC规范中定义
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V | C |PSI|S| O |H|Res|A|B| HDR_LEN | Codepoint (CP)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Congestion Control Information (CCI, length = 32*(C+1) bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transport Session Identifier (TSI, length = 32*S+16*H bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transport Object Identifier (TOI, length = 32*O+16*H bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header Extensions (if applicable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC Payload ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Default ALC Header Format(PSI divided to 'SPI' and Y)
2.2 EXT_FTI ( FEC Object Transmission Information)
主要包含:
- Maximum Source Block Length, i.e., the maximum number of source symbols per source block
- Transfer Length in octets
- Encoding Symbol Length in octets
在RFC5775-ALC中仅定义了EXT_FTI的类型值为64,但没有定义具格式,因为不同FEC Scheme格式不同
3. RFC5445 Basic Forward Error Correction (FEC) Schemes
https://www.rfc-editor.org/rfc/rfc5445
RFC5445描述了the Compact No-Code FEC Scheme, the Small Block, Large Block, and Expandable FEC Scheme, the Small Block Systematic FEC Scheme, and the Compact FEC Scheme.
3.1. Compact No-Code FEC Scheme
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Block Number | Encoding Symbol ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: FEC Payload ID Format for Compact No-Code FEC Scheme
-
FEC Encoding ID: zero (0)
-
Transfer-Length: a non-negative integer, less than 2^^48, indicating the length of the object in octets.
-
Encoding-Symbol-Length: a non-negative integer, less than 2^^16, indicating the length of each encoding symbol in octets.
-
Maximum-Source-Block-Length: a non-negative integer, less than 2^^32, indicating the maximum number of source symbols in a source block.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transfer Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encoding Symbol Length | Max. Source Block Length (MSB)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Max. Source Block Length (LSB)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Encoded Common FEC Object Transmission Information (OTI)
for Compact No-Code FEC Scheme
4. FLUTE - File Delivery over Unidirectional Transport
2004年发布RFC-3926,2012年发布RFC6726
https://www.rfc-editor.org/rfc/rfc6726
- The TOI value '0' is reserved for the delivery of File Delivery Table Instances which is identified by EXT_FDT( a new LCT Header Extension)
- FDT(File Delivery Table) Instance is a xml
- Each file delivery session MUST have an FDT that is local to the given session. The FDT MUST provide a file description entry mapped to a TOI for each file appearing within the session
- Any ALC/LCT packet carrying an FDT Instance MUST include EXT_FDT
- The expiration time is expressed within the FDT Instance payload as a UTF-8 decimal representation of a 32-bit unsigned integer, 1900-01-01 RFC5905-NTP
- 默认使用 Compact No-Code FEC Encoding ID 0 [RFC5445] for the sending of FDT Instances
- Delivering FEC Object Transmission Information 可以使用EXT_FTI 也可以使用FDT
-
"Transfer-Length" carries the "Transfer-Length" ObjectTransmission Information element defined in [RFC5052].
-
"FEC-OTI-FEC-Encoding-ID" carries the "FEC Encoding ID"
-
"FEC-OTI-FEC-Instance-ID" carries the "FEC Instance ID"
-
"FEC-OTI-Maximum-Source-Block-Length" carries the "Maximum-Source-Block-Length"
-
"FEC-OTI-Encoding-Symbol-Length" carries the "Encoding-Symbol-Length"
-
"FEC-OTI-Max-Number-of-Encoding-Symbols" carries the "Max-Number-of-Encoding-Symbols"
-
"FEC-OTI-Scheme-Specific-Info" carries the "encoded Scheme-specific FEC Object Transmission Information"
-
4.1 Structure of FDT Instance Packets
FDT Instances are carried in ALC packets with TOI = 0 and with a FDT Instance Header.
The FDT Instance Header (EXT_FDT) contains the FDT Instance ID that uniquely identifies FDT Instances within a file delivery session.
格式与ALC格式相同,也即ALC Packet Format= "LCT Header" + "FEC Payload Id" + "Encoding Symbols",只是包含了EXT_FDT, EXT_FTI扩展
4.2 EXT_FDT( FDT Instance Header)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 192 | V | FDT Instance ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.4.1 Figure 2: EXT_FDT Format
- Version of FLUTE (V), 4 bits, 当前为FLUTE version 2
- FDT Instance ID, 20 bits: 起始值为0
4.3 EXT_CENC(FDT Instance Content Encoding Header)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 193 | CENC | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.4.3 Figure 4: EXT_CENC Format
- Content Encoding Algorithm (CENC), 8 bits: 0-null, 1- ZLIB [RFC1950], 2-DEFLATE [RFC1951], and 3-GZIP [RFC1952]
- Reserved, 16 bits: MUST be set to all '0's.
4.4 General EXT_FTI format EXT_FTI(defined at RFC3926, not defined at RFC6726)
- Header Extension Type (HET), 8 bits: 64 as defined in [2].
- Header Extension Length (HEL), 8 bits: unit is 32-bit words.
- Transfer Length, 48 bits: The not-encoded file length in bytes
- FEC Instance ID, optional, 16 bits: It is only present if the value of FEC Encoding ID is in the range of 128-255. When the value of FEC Encoding ID is in the range of 0-127, this field is set to 0.
- FEC Encoding ID Specific Format: Different FEC encoding schemes will need different sets of encoding parameters. Thus, the structure and length of this field depends on FEC Encoding ID. The next sections specify structure of this field for FEC Encoding ID numbers 0, 128, 129, and 130.
In FLUTE, the FEC Encoding ID (8 bits) is carried in the Codepoint field of the ALC/LCT header.
4.4.1 General EXT_FTI format with FEC Encoding IDs 0, 128, and 130 in RFC3926-FLUTE
- FEC Encoding ID 0 is 'Compact No-Code FEC' (Fully-Specified).
- FEC Encoding ID 128 is 'Small Block, Large Block and Expandable FEC'(Under-Specified).
- FEC Encoding ID 130 is 'Compact FEC' (Under-Specified)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 64 | HEL | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| Transfer Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC Instance ID | Encoding Symbol Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Maximum Source Block Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
5.1.2.1 General EXT_FTI format with FEC Encoding IDs 0, 128, and 130
例如: HEL=4 *4=16 TransferLength(6byte)=1621753, FEC-Instance-ID(2byte)=0, Encoding-Symbol-Length(2byte)=1280,
Maximum-Source-Block-Length(4byte)=64
ATSC3.0 ROUTE Source Protocol采用此格式
4.4.2 General EXT_FTI format with FEC Encoding ID 129 in RFC3926-FLUTE
129: Small Block Systematic FEC (Under-Specified)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 64 | HEL | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| Transfer Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC Instance ID | Encoding Symbol Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Maximum Source Block Length | Max. Num. of Encoding Symbols |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
5.1.2.2 General EXT_FTI format with FEC Encoding ID 129
5. ROUTE(Real-Time Object Delivery over Unidirectional Transport)
https://www.atsc.org/wp-content/uploads/2025/01/A331-2024-04a-Signaling-Delivery-Sync-FEC.pdf
- Each ROUTE session shall be associated with an IP address/port combination.
- Each ROUTE session shall constitute one or more LCT channels. LCT channels are a subset of a ROUTE session.
- Within each transport session (i.e., LCT channel), one or more objects are carried, typically objects that are related, e.g. DASH Segments associated to one Representation.
- Each transport session (i.e., LCT channel) shall be uniquely identified by a unique Transport Session Identifier (TSI) value in the
LCT header. The TSI is scoped by the IP address of the sender, and the IP address of the sender together with the TSI shall uniquely identify the session. - EXT_TIME
5.1 ROUTE source protocol
The ROUTE source protocol is aligned with FLUTE as defined in RFC 6726 [31] as well as the extensions defined in MBMS [14], but also makes use of some principles of FCAST as defined in RFC 6968
- SPI(The MSB of the PSI) shall be set to 1 to indicate a source packet.
- As a simple new null FEC scheme with the following usage, The value of the source FEC Payload ID header shall be set to a direct address (start offset) corresponding to the starting byte position of the portion of the object carried in this packet using a 32-bit field.
- In a compatible manner to RFC 6330 [29] where the SBN and ESI defines the start offset together with the symbol size T.
- The session description information for the ROUTE session and child(ren) LCT channel(s)
is provided by the S-TSID fragment. - version-number 设置为1
- Congestion Control flag ( C ) field 应设置为0
- Protocol-Specific Indication ( PSI) 对source packets设置为'10',对repair packet设置为'00'.
- Half-word flag ( H ) –设置为0
- TSI flag, TOI flag 设置为1
- ROUTE限制每个LCT session只能有一个LCT channel, 并且发送端负责拥塞控制
"A.3.9 Basic ROUTE Sender Operation" said: ROUTE source delivery can be considered as a special case of the use of theCompact No-Code Scheme associated with FEC Encoding ID = 0 according to Sections 3.4.1 and3.4.2 of RFC 5445 [26], in which the encoding symbol size is exactly one byte.因此 EXT_FTI格式遵从"General EXT_FTI format with FEC Encoding IDs 0, 128, and 130 in RFC3926-FLUTE"
in "A.3.2.2.Source Flow Semantics" define:
- @srcFecPayloadId: unsignedByte, the ROUTE packet header "FEC Payload ID" in the packets carried by this source flow. default is 0.
- 0: The FEC Payload ID field is a 32-bit unsigned integer value that expresses the start offset in the object. Start offset is defined in Section A.3.5.
- 1~255: ATSC Reserved
A.3.5.1. FEC Payload ID for Source Flows
for the Compact No-Code FEC Scheme used in ROUTE source flows shall be a 32-bit unsigned integer value that expresses the start_offset, as an octet number corresponding to the first octet of the fragment of the delivery object carried in this packet. The start_offset field value represents the starting byte position, relative to the first byte of the delivery object
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| start_offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A331 Figure A.3.3 FEC Payload ID for Source Flows.
因此对于ROUTE-Dash对应的ALC/LCT packet format is
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V | C |PSI|S| O |H|Res|A|B| HDR_LEN | Codepoint (CP)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Congestion Control Information (CCI, length = 32*(C+1) bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transport Session Identifier (TSI, length = 32*S+16*H bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transport Object Identifier (TOI, length = 32*O+16*H bits) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header Extensions (if applicable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| start_offset (FEC Payload ID) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Default ALC Header Format(PSI divided to 'SPI' and Y)
A.3.5.2. FEC Payload ID for Repair Flows
In accordance with RFC6330(RaptorQ
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 66 | HEL | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, most significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, least significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A331 Figure A.3.5 12-byte EXT_ROUTE_PRESENTATION_TIME header
FEC Scheme for Object Delivery), the FEC Payload ID for the RaptorQ FEC Scheme
used for repair flows is composed of a Source Block Number (SBN) and an Encoding Symbol ID
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SBN | Encoding Symbol ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
RFC6330 Figure 1: FEC Payload ID Format
A.3.7 EXT_ROUTE_PRESENTATION_TIME for MDE Mode Operation
当EXT_ROUTE_PRESENTATION_TIME出现时,LCT定义的EXT_TIME也应同时出现,并且 SCT-High 及 SCT-Low 均为1
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 66 | HEL | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, most significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, least significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A331 Figure A.3.5 12-byte EXT_ROUTE_PRESENTATION_TIME header
1) Earliest MDE ROUTE presentation time: MDE data block with T-RAP ROUTE reception time plus ( EXT_ROUTE_PRESENTATION_TIME - SCT). Initial media request based on adjusted segment availability start time per Section 5.3.9.5.3 of [61].
A.3.8 EXT_TOL Header -----Transport Object Length
- The ROUTE receiver 使用 RFC5775-ALC中的EXT_FTI 或者 ATSC3.0新定义的EXT_TOL获取transfer length of the object
- EXT_TOL 为编码后的长度(比如gzip编码后的长度)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 194 | Transfer Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
0 1 2 3
A331 Figure A.3.6 24-bit format of EXT_TOL Header.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HET = 67 | HEL | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| Transfer Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A331 Figure A.3.7 48-bit format of EXT_TOL Header.
Table A.3.6 Defined Values of Codepoint Field of LCT Header
| Codepoint value (CP) | Semantics | @formatId | @frag | @order |
| 0 | ATSC Reserved (not used) | |||
| 1 | NRT- File Mode | 1 (File Mode) | 0 (arbitrary) | true |
| 2 | NRT – Entity Mode | 2 (Entity Mode) | 0 | true |
| 3 | NRT – Unsigned Package Mode | 3 (Unsigned Package Mode) | 0 | true |
| 4 | NRT – Signed Package Mode | 4 (Signed Package Mode) | 0 | true |
| 5 | New IS, timeline changed | 1 (File Mode) | 0 | true |
| 6 | New IS, timeline continued | 1 (File Mode) | 0 | true |
| 7 | Redundant IS | 1 (File Mode) | 0 | true |
| 8 | Media Segment, File Mode | 1 (File Mode) | 1 (sample) | true |
| 9 | Media Segment, Entity Mode | 2 (Entity Mode) | 1 | true |
S-TSID ( Service-based Transport Session Instance Description )
S-TSID
- RS (ROUTE session): @sIpAddr, @dIpAddr, @dPort
- LS (LCT channel): @tsi, @bw,@startTime, @endTime
- SrcFlow(Source flow): @rt,@minBuffSize
- EFDT(extended FDT instance)
- FDT-Instance: @Expires, @afdt:efdtVersion, @afdt:maxTransportSize, @afdt:fileTemplate
- fdt:File: @Content-Location, @TOI
- FDT-Instance: @Expires, @afdt:efdtVersion, @afdt:maxTransportSize, @afdt:fileTemplate
- ContentInfo
- MediaInfo(DASH Representation): @repId, @contentType, @lang
- ContentRating
- AEAMedia
- MediaInfo(DASH Representation): @repId, @contentType, @lang
- Payload: @codePoint, @formatId, @frag,@order,@srcFecPayloadId
- EFDT(extended FDT instance)
- RepairFlow
- FECParameters: @maximumDelay @overhead @minBuffSize @fecOTI
- ProtectedObject: @sessionDescription @tsi
- SourceTOI: @x, @y
- FECParameters: @maximumDelay @overhead @minBuffSize @fecOTI
- SrcFlow(Source flow): @rt,@minBuffSize
- LS (LCT channel): @tsi, @bw,@startTime, @endTime
首先从组播地址224.0.23.60:4937接收UDP数据包,并 解析LLS,LLS_table_id)=1时 为SLT/SLS
<?xml version="1.0" encoding="UTF-8"?>
<SLT xsi:schemaLocation="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/SLT/1.0/ SLT-1.0-20170922.xsd"
xmlns="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/SLT/1.0/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema" bsid="0">
<Service hidden="false" shortServiceName="2k" serviceCategory="1" minorChannelNo="10" majorChannelNo="1"
protected="0" sltSvcSeqNum="0" globalServiceID="urn:atsc:11111" serviceId="1">
<BroadcastSvcSignaling slsSourceIpAddress="192.168.1.6"
slsDestinationIpAddress="224.0.3.6" slsDestinationUdpPort="3001"
slsMinorProtocolVersion="0" slsMajorProtocolVersion="1" slsProtocol="2"/>
</Service>
</SLT>
- slsProtocol: 1-ROUTE, 2-MMTP
- serviceCategory : 1-Linear A/V Service; 2-Linear audio only Service; 3-App-Based Service; 4-ESG Service (program guide) ; 5-EA Service (emergency alert) ; 6-DRM Data Service (DRM Data)
示例 解析 {tsi=0, toi=0, codePoint=1(NRT, File Mode) }获取FDT-Instance信息
| LCT.version=1 SPI=0x2, headLen=6*4=24, codepoint:1(NRT, File Mode) TSI:0, TOI:0 EXT_FDT: type=192, FLUTE-version(4bit):2, FDT-Instance-ID(24bit):9 EXT_TOL: type=194(Transport Object Length), Transfer_length(24bit):319 Object_start_offset:0 |
|
该例中FDT-Instance 包含的File的TOI属性为458760, 因此解析 {tsi=0, toi=458760,Codepoint=3(NRT, Unsigned Package Mode)},得到的消息体示例
Content-Type: multipart/related; type="application/mbms-envelope+xml";
boundary="----separator----"
------separator----
Content-Type: application/mbms-envelope+xml
Content-Location: envelope.xml
<?xml version="1.0" encoding="UTF-8"?>
<metadataEnvelope xmlns="urn:3gpp:metadata:2005:MBMS:envelope">
<item metadataURI="mpd.xml" version="8" contentType="application/dash+xml"/>
<item metadataURI="stsid.xml" version="1" contentType="application/route-s-tsid+xml"/>
<item metadataURI="usbd.xml" version="0" contentType="application/route-usd+xml"/>
</metadataEnvelope>
------separator----
Content-Type: application/dash+xml
Content-Location: mpd.xml
.....real-mpd.xml.......
------separator----
Content-Type: application/route-s-tsid+xml
Content-Location: stsid.xml
<?xml version="1.0" encoding="UTF-8"?>
<S-TSID xmlns="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/"
xmlns:afdt="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ATSC-FDT/1.0/"
xmlns:fdt="urn:ietf:params:xml:ns:fdt">
<RS dIpAddr="224.0.24.1" dPort="3000">
<LS tsi="10" startTime="2022-01-07T16:58:27Z">
<SrcFlow rt="true">
<EFDT>
<FDT-Instance Expires="4294967295" afdt:efdtVersion="1"
afdt:maxTransportSize="2252250" afdt:fileTemplate="video-$TOI$.mp4v">
<fdt:File Content-Location="video-init.mp4" TOI="1"/>
</FDT-Instance>
</EFDT>
<ContentInfo><MediaInfo repId="Video1_" contentType="video"/></ContentInfo>
</SrcFlow>
</LS>
<LS tsi="20" startTime="2022-01-07T16:58:27Z">
<SrcFlow rt="true">
<EFDT>
<FDT-Instance Expires="4294967295" afdt:efdtVersion="1"
afdt:maxTransportSize="72072" afdt:fileTemplate="audio-$TOI$.mp4a">
<fdt:File Content-Location="audio-init.mp4" TOI="1"/>
</FDT-Instance>
</EFDT>
<ContentInfo>
<MediaInfo repId="audio1" contentType="audio"/>
</ContentInfo>
</SrcFlow>
</LS>
</RS>
</S-TSID>
------separator----
Content-Type: application/route-usd+xml
Content-Location: usbd.xml
<?xml version="1.0" encoding="UTF-8"?>
<BundleDescriptionROUTE xmlns="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/">
<UserServiceDescription serviceId="1">
<DeliveryMethod>
<BroadcastAppService>
<BasePattern>video-</BasePattern>
<BasePattern>audio-</BasePattern>
</BroadcastAppService>
</DeliveryMethod>
</UserServiceDescription>
</BundleDescriptionROUTE>
------separator------

浙公网安备 33010602011771号