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 
        • ContentInfo
          • MediaInfo(DASH Representation):  @repId, @contentType, @lang
            • ContentRating
          • AEAMedia
        • Payload: @codePoint, @formatId, @frag,@order,@srcFecPayloadId 
      • RepairFlow
        • FECParameters: @maximumDelay @overhead  @minBuffSize @fecOTI
          • ProtectedObject: @sessionDescription @tsi
          • SourceTOI: @x, @y

 

首先从组播地址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
<?xml version="1.0" encoding="UTF-8"?>
<FDT-Instance xmlns="urn:ietf:params:xml:ns:fdt"
    xmlns:afdt="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ATSC-FDT/1.0/"
    Expires="4294967295" afdt:efdtVersion="9">
  <File Content-Location="sls" TOI="458760" Content-Length="4641" Content-Type="multipart/related"/>
</FDT-Instance>

该例中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------

 

posted @ 2025-04-19 16:44  cyj2024  阅读(76)  评论(0)    收藏  举报