Subject: [Rmt] FLUTE source blocking update

From: [email-masked]
Date: Wed, 5 Nov 2003 11:26:57 +0200

Hi All

Since draft-ietf-rmt-flute-02.txt last call a few typos have been corrected and clarifications made (some appeared in draft-ietf-rmt-flute-03.txt). The most important clarification (and only large one) is related to how to communicate the source blocking algorithm between sender and receiver. The need for this wasn't obvious until we did some interop on our implementations, so we're a little ahead of the game for an Experimental RFC. Since publishing the ID as 04 is not possible for a few days I'm pasting the relevant sections below in their (currently) final form to prewarn everyone before RMT next Tuesday.

The principle difference from -02 is that the algorithm is now specified (instead of a few details left hanging).

The principle difference from -03 is that the algorithm is different and has it's own section so is referred to from FEC ID 129 as well as 0, 128 and 130. -03 just let the last source block of a file be shorter than the previous ones, the new algorithm balances source block to all be as close to the same size as possible (and the wording is tightened up).

Comments and questions are always welcome!

Cheers, Rod.

---8<---

5.1.2 FEC Encoding ID specific formats for EXT_FTI

5.1.2.1 FEC Encoding IDs 0, 128, and 130

   FEC Encoding ID 0 is 'Compact No-Code FEC' (Fully-Specified) [8]. FEC
   Encoding ID 128 is 'Small Block, Large Block and Expandable FEC'
   (Under-Specified) [5]. FEC Encoding ID 130 is 'Compact FEC'
   (Under-Specified) [8]. For these FEC Encoding IDs, the FEC Encoding
   ID specific format of EXT_FTI is defined as follows.

    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
                                   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      General EXT_FTI format       |    Encoding Symbol Length     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Maximum Source Block Length                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Encoding Symbol Length, 16 bits:

   Length of encoding symbol in bytes.

   All encoding symbols of a file MUST be equal to this length, with the
   optional exception of the last source symbol of the last source block
   (so that redundant padding is not mandatory in this last symbol).
   This last source symbol MUST be logically padded out with zeroes when
   another encoding symbol is computed based on this source symbol to
   ensure the same interpretation of this encoding symbol value by the
   sender and receiver). However, this padding need not be actually sent
   with the data of the last source symbol.

   Maximum Source Block Length, 32 bits

   The maximum number of source symbols per source block.

   This EXT_FTI specification requires that an algorithm is known to
   both sender and receivers for determining the size of all source
   blocks within the file identified by the TOI (or within the FDT
   Instance identified by the TOI and the FDT Instance ID). The
   algorithm SHOULD be the same for all files using the same FEC
   Encoding ID within a session.

   Section 5.1.2.3 describes an algorithm that is RECOMMENDED for this
   use.

   For the FEC Encoding IDs 0, 128 and 130, this algorithm is the only
   well known way the receiver can determine the length of each source
   block. Thus, the algorithm does two things: (a) it tells the receiver
   the length of each particular source block as it is receiving packets
   for that source block - this is essential to all of these FEC
   schemes; and, (b) it provides the source block structure immediately
   to the receiver so that the receiver can determine where to save
   recovered source blocks at the beginning - this is an optimization
   which is essential for some implementations.

5.1.2.2 FEC Encoding ID 129

   Small Block Systematic FEC (Under-Specified). The FEC Encoding ID
   specific format of EXT_FTI is defined as follows.

    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
                                   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      General EXT_FTI format       |  Maximum Source Block Length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Max. Num. of Encoding Symbols |   Encoding Symbol Length      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Maximum Source Block Length, 16 bits:

   The maximum number of source symbols per source block.

   Maximum Number of Encoding Symbols, 16 bits:

   Maximum number of encoding symbols that can be generated for a source
   block.

   Encoding Symbol Length, 16 bits:

   Length of encoding symbol in bytes.

   All encoding symbols of a file MUST be equal to this length, with the
   optional exception of the last source symbol of the last source block
   (so that redundant padding is not mandatory in this last symbol).
   This last source symbol MUST be logically padded out with zeroes when
   another encoding symbol is computed based on this source symbol to
   ensure the same interpretation of this encoding symbol value by the
   sender and receiver). However, this padding need not be actually sent
   with the data of the last source symbol.

   This EXT_FTI specification requires that an algorithm is known to
   both sender and receivers for determining the size of all source
   blocks within the file identified by the TOI (or within the FDT

   Instance identified by the TOI and the FDT Instance ID). The
   algorithm SHOULD be the same for all files using the same FEC
   Encoding ID within a session.

   Section 5.1.2.3 describes an algorithm that is RECOMMENDED for this
   use. For FEC Encoding ID 129 the FEC Payload ID in each data packet
   already contains the source block length for the source block
   corresponding to the encoding symbol carried in the data packet.
   Thus, the algorithm for computing source blocks for FEC Encoding ID
   129 could be to just use the source block lengths carried in data
   packets within the FEC Payload ID.  However, it is still useful to
   use the algorithm described in Section 5.1.2.3 for implementations
   when it is useful for the receiver to compute the source block
   structure at the beginning of the reception of data packets for the
   file. If the algorithm described in Section 5.1.2.3 is used then it
   MUST be the case that the source block lengths that appear in data
   packets agree with the source block lengths calculated by the
   algorithm.

5.1.2.3 Algorithm for Computing Source Block Structure

   This algorithm computes a source block structure so that all source
   blocks are as close to being equal length as possible. A first number
   of source blocks are of the same larger length, and the remaining
   second number of source blocks are sent of the same smaller length.
   The total number of source blocks (N), the first number of source
   blocks (I), the second number of source blocks (N-I), the larger
   length (A_large) and the smaller length (A_small) are calculated
   thus,

      Inputs:
         B -- Maximum Source Block length, i.e., the maximum number of
              source symbols per source block
         F -- File length in bytes
         E -- Encoding Symbol Length in bytes

      Output:
         N -- The number of source blocks the file is partitioned into
              the number and lengths of source symbols in each of the N
              source blocks

      Algorithm:
      (a) The number of source symbols in the file is computed as
          T = F/E rounded up to the nearest integer.
      (b) The file is partitioned into N source blocks, where N = T/B
          rounded up to the nearest integer
      (c) The average length of a source block, A = T/N
          (this may be non-integer)
      (d) A_large = A rounded up to the nearest integer
          (it will always be the case that the value of A_large is at
          most B)
      (e) A_small = A rounded down to the nearest integer
          (if A is an integer A_small = A_large,
          and otherwise A_small = A_large - 1)
      (f) The fractional part of A, A_fraction = A - A_small
      (g) I = A_fraction * N
          (I is an integer between 0 and N-1)
      (h) Each of the first I source blocks consists of A_large source
          symbols, each source symbol is E bytes in length. Each of the
          remaining N-I source blocks consist of A_small source symbols,
          each source symbol is E bytes in length except that the last
          source symbol of the last source block is F-(((F-1)/E) rounded
          down to the nearest integer)*E bytes in length.

_______________________________________________
Rmt mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rmt