Internet DRAFT - draft-shen-rmt-bb-fec-srrscode

draft-shen-rmt-bb-fec-srrscode



Reliable Multicast Transport                                    B. Shen 
Internet Draft                                                 Broadcom 
Intended status: Standards Track                            E. Stauffer 
Expires: May 2013                                              Broadcom 
                                                                K. Rath 
                                                               Broadcom 
                                                       November 14,2012 
 
                                      
    Systematic Rate-independent Reed-Solomon (SR-RS) Erasure Correction 
                                  Scheme  
                   draft-shen-rmt-bb-fec-srrscode-01.txt 


Status of this Memo 

   This Internet-Draft is submitted in full conformance with the 
   provisions of BCP 78 and BCP 79.  

   Internet-Drafts are working documents of the Internet Engineering 
   Task Force (IETF), its areas, and its working groups.  Note that 
   other groups may also distribute working documents as Internet-
   Drafts. 

   Internet-Drafts are draft documents valid for a maximum of six 
   months and may be updated, replaced, or obsoleted by other documents 
   at any time.  It is inappropriate to use Internet-Drafts as 
   reference material or to cite them other than as "work in progress." 

   The list of current Internet-Drafts can be accessed at 
   http://www.ietf.org/ietf/1id-abstracts.txt 

   The list of Internet-Draft Shadow Directories can be accessed at 
   http://www.ietf.org/shadow.html 

   This Internet-Draft will expire on May 16, 2013. 

Copyright Notice 

   Copyright (c) 2012 IETF Trust and the persons identified as the 
   document authors. All rights reserved. 

   This document is subject to BCP 78 and the IETF Trust's Legal 
   Provisions Relating to IETF Documents 
   (http://trustee.ietf.org/license-info) in effect on the date of 
   publication of this document. Please review these documents 
   carefully, as they describe your rights and restrictions with 
   respect to this document. Code Components extracted from this 
 
 
 
Shen, et al.             Expires May 16, 2013                  [Page 1] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   document must include Simplified BSD License text as described in 
   Section 4.e of the Trust Legal Provisions and are provided without 
   warranty as described in the Simplified BSD License. 

Abstract 

   This document specifies a systematic rate-independent Reed-Solomon 
   (SR-RS) Erasure correction scheme. The two properties, systematic 
   and  rate-independent,  are  fulfilled  by  Lagrange  polynomial 
   interpolation. When the number of output symbols is fixed this 
   scheme essentially generates a Reed-Solomon (RS) code. Therefore, 
   based on the MDS (maximum distance separable) property of RS code, 
   this erasure correction scheme is optimal (ideal). Also in this 
   document, a two-step fast recovering (decoding) algorithm using fast 
   Walsh-Hadamard  transform  is  presented  for  the  proposed  erasure 
   correction  scheme.  This  algorithm  achieves  the  time  complexity 
   O(n*log2(n)), or linear if  penalization implementation, such as 
   multi-core processor, is allowed. 


Contents 
   1. Introduction...................................................3 
   2. Source file segmentation.......................................3 
      2.1. Transmit block............................................4 
         2.1.1. Working Blocks.......................................4 
      2.2. Parameter Selection.......................................4 
      2.3. Overview of systematic rate-independent encoding  ........5 
      2.4. Parameters and functions used in SR-RS encoding...........6 
      2.5. SR-RS encoding............................................7 
   3. SR-RS decoder..................................................8 
      3.1. Overview of SR-RS decoding................................8 
      3.2. SR-RS decoding principle..................................9 
      3.3. A realization of the decoding principle: two-step SR-RS 
      decoding (informative)........................................10 
      3.4. Fast decoding (informative)..............................11 
         3.4.1. Hadamard matrices...................................11 
         3.4.2. Walsh-Hadamard transform............................11 
         3.4.3. Fast Walsh-Hadamard transform.......................12 
         3.4.4. Fast SR-RS decoding using fast WHT..................13 
   4. Protocol IEs..................................................15 
      4.1. FEC Payload IEs..........................................15 
      4.2. Common...................................................15 
      4.3. Scheme Specific..........................................16 
   5. Conventions used in this document.............................16 
   6. Security Considerations.......................................17 
   7. IANA Considerations...........................................17 
 
 
Shen, et al.             Expires May 16, 2013                  [Page 2] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   8. References....................................................17 
      8.1. Normative References.....................................17 
      8.2. Informative References...................................17 
   9. Acknowledgments...............................................17 
    

    
1. Introduction 

   This document specifies and explains a systematic rate-independent 
   Reed-Solomon (SR-RS) Erasure correction scheme. The two properties, 
   systematic  and  rate-independent,  are  fulfilled  by  Lagrange 
   polynomial interpolation. When the number of output symbols is fixed 
   this  scheme  essentially  generates  a  Reed-Solomon  (RS)  code. 
   Therefore, based on the MDS (maximum distance separable) property of 
   RS code [3], this erasure correction scheme is optimal (ideal), i.e. 
   when the number of un-erased packets is equal to the number of 
   source packets, the entire source packets can be recovered.   

   Previously,  a  Reed-Solomon  (RS)  code  scheme  for  the  reliable 
   delivery of data objects on the packet erasure channel was proposed 
   by Network Working Group RFC5510. In RFC5510, the systematic encoder 
   uses a generator matrix which is a multiplication of an inverse of a 
   square  Vandermonde  matrix  and  another  rectangular  Vandermonde 
   matrix. Using this scheme, adding an extra repair symbol requires 
   generating a new matrix inverse and a new rectangular Vandermond 
   matrix. The decoding method suggested in RFC5510 requires matrix 
   inversion and matrix multiplication. To speed up this decoding 
   processing, RFC5510 refers [4]  where FFT over real filed is 
   applied. Unfortunately, it is well known [5] that the real field FFT 
   method described in [4]  cannot be properly operated over the 
   working field of RS codes used in RFC 5510. 

   Also  in  this  document,  a  two-step  fast  recovering  (decoding) 
   algorithm using fast Walsh-Hadamard transform is presented for the 
   proposed erasure correction scheme. This algorithm achieves the time 
   complexity O(n*log2(n)), or linear if  penalization implementation, 
   such as multi-core processor or using hardware acceleration, is 
   allowed. 
    
2. Source file segmentation 

   In order to encode large files within the working memory constraint, 
   the source file may need to be segmented into transmit blocks and 
   working blocks. 


 
 
Shen, et al.             Expires May 16, 2013                  [Page 3] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

2.1. Transmit block 

   Given a source file of size F bytes and a transmit symbol size of T 
   bytes, the file can be divided into ceil(F/T) transmit symbols.  A 
   source transmit block is a collection of KL or KS of these transmit 
   symbols.  KL and KS may be different if the total number of source 
   transmit blocks does not evenly divide the number of transmit 
   symbols required to represent the file.  The number of source 
   transmit blocks with KL transmit symbols and the number of source 
   transmit blocks with KS transmit symbols are communicated to the 
   decoder using parameters ZL and ZS, respectively.  After encoding, a 
   transmit block consists of a source transmit block and a repair 
   transmit block. 

   The transmit blocks are ordered such that the first ZL transmit 
   block are encoded from source transmit blocks of size KL transmit 
   symbols. The remaining ZS transmit blocks are encoded from source 
   transmit blocks are of size KS transmit symbols.  The parameters KS 
   and KL are related to ZS and ZL via  

  (1)            KS = ceil( (F/T-ZL) / (ZL+ZS) ), KL=KS+1. 

2.1.1. Working Blocks 

   In order to satisfy the working memory requirement, the transmit 
   symbols can be further subdivided into working symbols of size TW 
   bytes.    A  transmit  symbol  therefore  consists  of  T/TW  working 
   symbols.  A source working block is then a collection of working 
   symbols selected such that an entire source working block can fit 
   into the working memory.  The ith source working block in a transmit
   block consists of the ith working symbol of a transmit symbol.  
   Additionally, a source working block is to be sized such the size of 
   the working symbols remain a multiple of the byte alignment factor, 
   AL.  The KL (or KS) transmit symbols of a source transmit block can 
   be viewed as a collection of working symbols or equivalently as a 
   collection of source working blocks.  

   After encoding, a working block consists of a source working block 
   and a repair working block.  The receiver attempts to decode on a 
   subset of the source and repair working symbols in a working block.   

2.2. Parameter Selection 

   The code requires F, T, ZS, and TW. F is the total file size in 
   Bytes.    T  is  the  transmit  symbol  size  in  bytes,  and  it  is 
   RECOMMENDED that it be equal to the packet payload size.  The number 

 
 
Shen, et al.             Expires May 16, 2013                  [Page 4] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   of transmit blocks ZS with KS transmit symbols (the number of 
   working blocks with KS working symbols) MUST be chosen such that  

  (2)                          KL<=(2^16)*R 

   where KL is computed in (1) and   is  the code rate for the worst
   performing link in a sector. (Note: the restriction of 2 R is due to 
   the using of 16-bit symbol RS code in the correction scheme of this 
   document.  This number will be extended to (2^32)*R if 32-bit symbol 
   RS code is used.) The working symbols size in bytes, TW, MUST be 
   chosen small enough such that KL*TW is less than or equal to the 
   working memory requirement. Additionally, TW MUST be chosen to be a 
   multiple of the byte alignment factor AL and TW MUST be a divisor of 
   T.  The byte alignment, AL, is to be chosen based on the protocol 
   and the typical machine architectures, a value of 4 (bytes) is 
   Systematic rate-independent RS (SR-RS) encoder 

2.3. Overview of systematic rate-independent encoding  

   Figure  1  shows  a  general  block  diagram  of  (systematic  rate-
   independent) SR-RS encoding scheme. The scheme takes a K source 
   working symbols as input, where K=KL or KS. Since AL=4, every 
   working symbol has even number of bytes, say 2*S bytes. Define an RS 
   symbol a unit of bytes. Then a working symbol contains S RS symbols. 
   All the first RS symbols in K source working symbols are grouped 
   together becoming the first RS information stream, see Figure 1, and 
   all the second RS symbols in the K source working symbols becomes 
   the second RS information stream, etc. Together there are S RS 
   information  streams.  The  SR-RS  encoding  scheme  works  on  every 
   information streams individually, or in parallel. The scheme then 
   generates encoded working symbols, with the first K output symbols 
   being the source working symbols. Furthermore, this encoding scheme 
   can generate as many as working symbols needed as long as the number 
   of the symbols does not exceed 2^16. Therefore, we can say this 
   scheme is systematic and rate independent. A detailed description of 
   this encoding scheme will be described in the next two sections. 

    

    

    

    

    

 
 
Shen, et al.             Expires May 16, 2013                  [Page 5] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   <-------   a working symbol     ----------> 
   +-----------------------------------------+   ^ 
   |RS symbol| RS symbol | ...   | RS symbol |   | 
   +-----------------------------------------+   | 
   |RS symbol| RS symbol | ...   | RS symbol |   | 
   +-----------------------------------------+  K source working     
                           ...                  symbols 
   +-----------------------------------------+   | 
   |RS symbol| RS symbol | ...   | RS symbol |   |  
   +-----------------------------------------+   V 
        |          |                   |         
        V          V                   V         
   +-----------------------------------------+   
   |             SR-RS Encoder               |   
   +-----------------------------------------+   
        |          |                   |         
        V          V                   V          
   +-----------------------------------------+    
   |RS symbol| RS symbol | ...   | RS symbol |  Output working 
   +-----------------------------------------+  symbol   
 
 
                         Figure 1  SR-RS encoding 

2.4. Parameters and functions used in SR-RS encoding 

   o  RS symbols is a unit of 2 bytes, or 16 bits.  

   o  a ^ i denotes the operation a raised to the power i for any 
      production  

   o  i + j denotes the sum of two integers i and j. 

   o  i * j denotes the product of two integers i and j.  

   o  XOR(u, v)  denotes, for equal-length bit strings u and v, the 
      bitwise exclusive-or of u and v. 

   o  GF(2^{16}) denotes a character 2 16-bit finite (Galois) field 
      with 2^{16}=65536 elements. Elements of GF(2^{16}) can be 
      considered as RS symbols. 

   o  RS[i] denotes, for an integer i  in {0,1,...,2^16-1}, RS symbol 
      (i_0,i_1,...,i_15), where i_j is a binary symbol and   

                i=i_0+2*i_1+(2^2)*i_2+...+(2^15)*i_{15}.  

 
 
Shen, et al.             Expires May 16, 2013                  [Page 6] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

      Thus, GF(2^{16})= {RS[i],i=0,1,...,65535} with the arithmetic 
      operations defined in the following. 

   o  P(x)=1+x+x^3+x^{12}+x^{16}: primitive polynomial for GF(2^{16}} 

   o  alpha, alpha_i, beta,beta_i gamma, gamma_i represent RS symbols, 
      i.e. element in GF(2^{16})  

   o  XOR{alpha_i: i=1,...,n} = XOR(XOR(alpha_1,...,alpha_{n-1}),alpha_n)  

   o  poly(alpha) denotes, for a RS symbol alpha =(a_0,a_1,...,a_15),  

      a binary polynomial a_0+a_1x+...+a_{15}x^{15}. 

   o  prod(alpha, beta) denotes, for two RS symbols alpha and beta, the 
      RS symbol gamma such that poly (gamma) = (poly(a)*poly(b)) mod 
      P(x) 

   o  prod{alpha_i : i=1,...,n} denotes prod(prod(alpha_1,...,alpha_{n-
      1}),alpha_n). 

   o  alpha^2= prod(alpha,alpha), alpha^m =prod(alpha, alpha^{m-1}) 

   o  inv(alpha) denotes, for a RS symbol alpha, an inverse of alpha. 
      inv(alpha) is also an RS symbol satisfying  
      prod(inv(alpha),alpha)=1=RS[1].  

   o  div(alpha, beta) denotes, for a RS symbols alpha and a non-zero 
      RS symbol beta , prod(alpha, inv(beta)). 

   o  A location product function is defined by  

  (3)       LP(i, L) = prod(XOR(RS[i],RS[t]): t in L )            

      where L is a sub-set of integers  

   o  A\B denotes, for two sub-sets A and B, the set {a| a is in A but 
      a is not in B}.   

2.5. SR-RS encoding 

   Input to the SR-RS encoding scheme is a source working block 
   containing K source working symbols,  
    
           (alpha_{0,j},alpha_{1,j},...,alpha_{S-1,j}), j=0,1,...,K-1. 
      
 
 
Shen, et al.             Expires May 16, 2013                  [Page 7] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   The  i-th  encoded  working  symbol  is  generated  by  the  encoding 
   function 

  (4)        Enc(s,i)=XOR{prod(alpha_{s,j},D(i,j)): j=0,...,K-1}   

   where D(i,j)=div(LP(i,{0,...,K-1}\{j}), LP(j,{0,...,K-1}\{j})), LP(i,L) 
   is defined in (3) . Since it only depends on the K source working 
   symbols and it can generate up to 2^16=65536 working symbols, this 
   encoding function is a rate-independent. 

   Moreover, since 

   (Enc(0,i),...,Enc(S-1,i)=(alpha_{0,j},...,alpha_{S-1,j})for j=0,1,...,K-1, 

   the encoding (4) is systematic.  

   Replacing RS[i] by a valuable x in (4) results, for s=0,...,S-1, a 
   polynomial f_{E,s}(x). Thus, given a number K-1<N<65537, the vector 

       (Enc(s,0),...,Enc(s,N-1)=(f_{E,s}(RS[0]),...,f_{E,s}(RS[N-1])) 

   is an RS codeword of length N(see [3] for the definition of RS 
   code). Therefore, the encoder (4) generates an MDS code, an ideal 
   erasure recovering code. 

   It should be noted that the integer iin the encoding function of (4)
   is limited to 2^16=65536. In order to extend the encoding function 
   to integers in the range beyond 2^16=65536, 32-bit RS symbol  should 
   be considered.  

3. SR-RS decoder 

3.1. Overview of SR-RS decoding 

   It is shown in Section 2.5.  that the code generated by SR-RS 
   encoding scheme is idea for erasure channel. Thus, if a source 
   working block has K working symbols, then as soon as K encoded 
   working symbols are received, all K source working symbols can be 
   recovered. Figure 2 presents a general diagram of an SR-RS decoding 
   scheme we proposed. When the K received Symbol IDs (SIDs) are all 
   source SIDs, then there is no need to operate further decoding, 
   otherwise those K SIDs are either all repair SIDs or a combination 
   of source SIDs and repair SIDs. The proposed SR-RS decoding is 
   operated in two procedures, see Figure 2. The first procedure, 
   called location function evaluating (generating), takes the received 
   K SIDs to generate a location function. The second procedure takes 

 
 
Shen, et al.             Expires May 16, 2013                  [Page 8] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   the location function (or location evaluation values) and the K 
   received values of working symbols to produce the values of K source 
   working symbols. We call the second procedure source symbol recovery 
   engine. To produce the entire working block, one has to operate the 
   second procedure S times. However, if parallel implementation is 
   allowed, S recover engines can work in parallel.  

     +-----------------+       +--------+ +--------+   +--------+ 
     |1st received SID |       |1st K RS| |2nd K RS|   |Sth K RS| 
     +-----------------+       |symbol  | |symbol  |...|symbol  | 
     |2st received SID |       |stream  | |stream  |   |stream  | 
     +-----------------+       +--------+ +--------+   +--------+ 
             ...                   |          |            | 
     +-----------------+           |          |            | 
     |kth received SID |           |          |            | 
     +-----------------+           |          |            | 
              |                    |          |            | 
              V                    V          V            V 
   +---------------------+    +-----------------------------------+ 
   |  Location function  |    |          Source symbol            | 
   | Generator/Evaluator |--> |         Recovery Engine           |        
   +---------------------+    +-----------------------------------+ 
                                               | 
                                               V 
                                    K source working symbols 
    
                         Figure 2  SR-RS decoding 

   By applying the fast Walsh-Hadamard transform on both procedures, a 
   fast decoding can be achieved. 

3.2. SR-RS decoding principle 

   Input to a SR-RS decoding scheme is 

  o A set of SIDs of the received K working symbols: L={u_0,...,u_{K-
     1}}. 
  o The working symbol corresponding to SID u_i: 
     (gamma_{0,1},...,gamma_{S-1}), where i=0,1,...,K-1. 

   The  i-th  decoded  working  symbol  is  generated  by  the  decoding 
   function  

  (5)       Dec(s,i)=XOR{prod(gamma_{s,j},D(i,u_j)):j=0,...,K-1} 
 
 
Shen, et al.             Expires May 16, 2013                  [Page 9] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   where   D(i,u_j)=div(LP(i,L\{u_j}),   LP(u_j,L\{u_j}),   LP(i,L)   is 
   defined in (3).  

   Replacing RS[i] by a valuable x in (5) results, for s=0,...,S-1, a 
   polynomial f_{D,s}(x). Evaluating f_{D,s}(x) at location set L we 
   obtain  

         f_{D,s}(RS[u_1])=gamma_{i,s}=f_{E,s}(RS[u_i]), i=0,...,K-1 

   where the polynomial f_{E,s} is defined in Section 2.5.  This proves 
   that the two degree less than or equal to K polynomials f_{E,s} and
   f_{D,s} are the same. Therefore, the decoded K working symbols  

           (Dec(0,0),...,Dec(S-1,0)),...,(Dec(0,K-1),...,Dec(S-1,K-1)) 

   are the source working symbols. This proves the SR-RS decoding is 
   optimal (ideal). 

3.3. A realization of the decoding principle: two-step SR-RS decoding 
    (informative) 

   This section provides one of the realization method on the decoding 
   principle defined in 3.2.  Let the input to the decoding as defined 
   in Section 3.2.  Define an extended locator product function 

  (6)     LPE(i)= LP(i,L\{i}) if i is in L, LP(i,L) otherwise. 

   and an evaluation function:  

  (7)              Psi(i,s)=div(gamma_{s,i},LPE(i))                  
   The decoding principle defined Section 3.2. can then be carried out 
   in the following two steps decoding: 

   Step 1. Evaluate LPE(i) at i=0,...,K-1 as well as at i in L; 

   Step 2:  

     Step 2.1. Compute Psi(u_i,s) for i=0,...,K-1 and s=0,...,S-1.  

     Step 2.2. Compute and output, for k in {0,...,K-1}\L and s=0,...,S-1. 

   Dec(s,k)=prod(LPE(k),XOR{div(Psi(u_j,s),RS[k]+RS[u_j]):j=0,...,K-1}). 

 
 
Shen, et al.             Expires May 16, 2013                 [Page 10] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

3.4. Fast decoding (informative) 

   This section presents a low complexity method for the decoding 
   procedure in Section 3.3.  

3.4.1. Hadamard matrices 

  o Initialize: define 0 order a Hadamard matrix H_0=1  

  o Inductively define the order v Hadamard matrix a 2^v by 2^v matrix 
     H_v, for v>0, has the (i,j)-th entry h_v(I,j), for i, j =0,...,2^v-
     1, such that  

     h_v(i,j)=h_{v-1}(i,j) for i,j = 0,1,...,2^{v-1}-1 

     h_v(i,j+2^{v-1})= h_{v-1}(i,j) for i,j = 0,1,...,2^{v-1}-1 

     h_v(i+2^{v-1},j)= h_{v-1}(i,j) for i,j = 0,1,...,2^{v-1}-1 

     h_v(i+2^{v-1},j+2^{v-1})= -h_{v-1}(i,j) for i,j = 0,1,...,2^{v-1}-1 

     Picture-wise , we have 

                      +--                --+ 
                      | H_{v-1}    H_{v-1} | 
                H_v = |                    | 
                      | H_{v-1}  - H_{v-1} | 
                      +--                --+ 

3.4.2. Walsh-Hadamard transform 

   Denote a dimension v binary vector space by  

   GF^v(2)={X : X=(x_0,...,x_{v-1}),x_i is either 0 or 1 for i=0,...,v-1}. 

   Define an order "<" on GF^v(2) by  

                    X=(x_0,...,x_{v-1})<Y=(y_0,...,y_{v-1}) 

                              if and only if 

         x_0+2*x_1+...+2^{v-1}*x_{v-1}<y_0+2*y_1+...+2^{v-1}*y_{v-1}. 

   Then GF^v(2) can be enumerated by  

            GF^v(2)={X_0,...,X_{2^v-1}} with X_0<X_2<...<X_{2^v-1}. 
 
 
Shen, et al.             Expires May 16, 2013                 [Page 11] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   Let f be a function from GF^v(2) to the integer ring Z. Denote  

  (8)            [f] =(f(X_0),f(X_1),...,f(X_{2^v-1})).   

   Walsh-Hadamard transform (WHT) on f is defined by  

                            WH(f)=[f]*H_v, 

   Where * is the vector multiplication.                          

   Let F be a vector in Z^v, then the inverse Walsh-Hadamard transform 
   (IWHT) is defined by                                                        

                         IWH(F)=(1/2^v)*(F * H_v). 

   Then IWH(WH(f))=[f]. 

   Before we state a crucial property of WHT, let us introduce two 
   operations: 

  o Component-wise product "x" in the dimension v integer space Z^n by 
     (a_0,...,a_{n-1})x(b_0,...,b_{n-1})=(a_0*b_0,...,a_{n-1}*b_{n-1}).  

  o Convolution product of two GF^v(2) to Z functions, f1 and f2 by
         conv(f1,f2)(y) = sum{f1(x)*f2(XOR(y, x)): x in GF^v(2)},  

     where sum means add all the values f1(x)*f2(XOR(y,x) for x in 
     GF^v(2).   

   A crucial property of WH transform is  

  (9)               WH(conv(f1,f2))=WH(f1) x WH(f2)   

              i.e. [conv(f1,f2)]=IWH(WH(f1)x WH(f2)). 

3.4.3. Fast Walsh-Hadamard transform 
   A fast Walsh-Hadamard transform (FWHT) algorithm on a function f can 
   be presented as follows: 

   Step 1. Initialize: (F_{0,0},F_{0,1},...,F_{0,2^v-1})=[f] (see (8) for 
   the definition of [f]) 

   Step 2. For i=1,...,v, inductively generate a size I vector 

 
 
Shen, et al.             Expires May 16, 2013                 [Page 12] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

        F_{i,j}=(F_{i-1,2j}+F_{i-1,2j+1}, F_{i-1,2j}-F_{i-1,2j+1}), 
   for j=0,...,2^{v-i}-1; 
   Step 3. Output WHT(f)=F_{v,0}. 
    
   In Step 2, the time complexity for everyiis V=2^v. Since the 
   algorithm needs such computations, the total time complexity is 
   v*2^v=V*log2(V). If parallel operation is allowed in implementation, 
   then the time complexity can be reduced. The lowest complexity for a 
   penalization implementation is log2(V). 
3.4.4. Fast SR-RS decoding using fast WHT 

   The two steps SR-RS decoding in Section 3.3. can be speed up by 
   applying the fast WHT reviewed in Section 3.4.3. In fact, one can 
   use the algorithm in [6] [6]to carry this task. In this section, we 
   explain that algorithm within the content of this document.  

   Let SID set of all K received working symbols be  

                   L = {u_0,...,u_{K-1}}, with u_0 <...<u_{K-1} 

   Let v be the smallest number such that u_{K-1}<2^v+1. Denote              

 (10)                           V=2^v  

   By (2), we have V<2^{16}+1. The following notation and functions 
   will be used to describe the fast decoding. 

     o Denote X and Y the vector in space GF^v(2). 

     o Denote theata = RS[2], we have {theat^n | n=0,...,2^{16}-2} = 
        {RS[i]| i=0,...,2^{16}-1}\{0}= GF(2^{16}) 

     o Exp_GF(i)=theata^i, i=0,...,2^{16}-2 

     o Log_GF(theat^i)=i, i=0,...,2^{16}-2 

     o EXT(X) denotes, for X=(x_0,...,x_{v-1}) in GF^v(2), the element    
        (x_0,...,X_{v-1},0,...,0). Obviously, XOR(EXT(X),EXT(Y))= 
        EXT(XOR(X,Y)).                                

     o SHT(RS[i]) denotes, for RS[i]=(i_0,...,i_{v-1},...,i_{15}), GF^v(2) 
        element (i_0,...,i_{v-1}). 

     o Log(X)=log_GF(EXT(X)) for X in GF^v(2). 
 
 
Shen, et al.             Expires May 16, 2013                 [Page 13] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

     o X_L(X), for X in GF^v(2), equals to 1 if X is in L, 0 
        otherwise. 

     o I(X)=1/EXT(X) for X in GF^v(2).  

     o Sum{a: a in a integer set A} denotes the summation of all the 
        integers in the set A  

   Furthermore,(6) can be written in the domain of GF^v(2) as 

      LPE(X)= prod{ prod(Exp_GF( X_L(X)*Log(XOR(X,Y))): y in GF^(2)} 

   Since EXT(SHT(RS[i]))=RS[i] with i<2^v and since GF^v(2)={SHT(RS[i]) 
   |-1<i<2^v} we have  

              LPE(X)= LP(i,L\{i}) if X=SHT(RS[i]) and i in L, 

            LPE(X)= LP(i,L) if X=SHT(RS[i]) but i is not in L. 

   Moreover, Log_GF(LPE(X))=conv(X_L, Log)(X). Therefore, LPE(X) can be 
   evaluated using FWHT in(9). Basically this is Step 1 of two-step 
   decoding in Section 3.3.   

   Suppose the set of all S received RS symbols of SID u_i is  

                         {gamma_{s,i} |s=0,...,S-1}. 

   After computing Psi(u_i,s) defined (7), a major calculation left to 
   the two-step decoding in Section 3.3. is 

 (11)       XOR{prod(Psi(u,s),I(XOR(RS[i],RS[u]))):u is in L}               

   Since  both  Psi(u,s)  and  I(XOR(RS[i],RS[u]))are  elements  in 
   GF(2^{16}), they can be represented by a binary linear combinations 
   of GF(2^{16}) elements,theat,tehat^2,...,tehat^{15},i.e. 

               Psi = XOR{prod(Psi_i,theat^i): i=0,1...,15} and 

                   I = XOR{prod(I_i,theat^i): i=0,1...,15} 

   where Psi_i and I_i are binary numbers. Then calculation of (11) can 
   be  transform  to  the  computation  of  conv(Psi_i,I_j)(X)  for 
   i+j=0,...,30, which can be implemented using FWHT. We refer to [6]for 
   a more detailed computation procedure of (11) . 



 
 
Shen, et al.             Expires May 16, 2013                 [Page 14] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

4. Protocol IEs 

   This section describes IEs that are used by the FEC.  All fields are 
   big-endian. 

   The value of the FEC Encoding ID MUST be 8, as assigned by IANA (see 
   Section 7). 

4.1. FEC Payload IEs 

   The FEC payload ID is a 4-byte field defined as follows: 

   [0:7] TBN, (8 bits, unsigned integer): A non-negative integer 
   identifier indicating the transmit block number. 

   [8:31] SID , (24 bits, unsigned integer): A non-negative integer 
   identifier indicating the transmit symbols in the packet.  SID 0 to 
   K-1 indicate systematic symbols. 

   The FEC Payload ID is shown in Figure 3. 

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |      TBN      |                       SID                     | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
             Figure 3  FEC Payload ID format 

    
4.2. Common 

   The Common FEC Object Transmission Information elements used by this 
   FEC Scheme are: 

   [0:39] Transfer Length (F), (40 bits, unsigned integer): A non-
   negative integer.  This is the transfer length of the object in 
   bytes. 

   [40:47] are reserved. 

   [48:63] Transmit Symbol Size (T), (16 bits, unsigned integer): A 
   positive integer that is less than 2^16.  This is the size of a 
   transmit symbol in units of bytes. 

   The encoded Common FEC Object Transmission Information format is 
   shown in Figure 4. 

 
 
Shen, et al.             Expires May 16, 2013                 [Page 15] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

    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 (F)                      | 
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |               |    Reserved   |           Symbol Size (T)     | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
             Figure 4  Encoded Common FEC IE for SR-RS FEC Scheme 

4.3. Scheme Specific 

   The following parameters are carried in the Scheme-Specific FEC 
   Object Transmission Information element for this FEC Scheme: 

   [0:7] ZL: The number of transmit blocks with KL working symbols (and 
   the number of working blocks with KL working symbols). (8 bits, 
   unsigned integer) 

   [8:15] ZS: The number of transmit blocks with KS working symbols 
   (and the number ofworking blocks with KS working symbols). (8 bits, 
   unsigned integer) 

   [16:30] TW: The working symbol size in bytes (15 bits, unsigned 
   integer) 

   The encoded Specific FEC Object Transmission Information format is 
   shown in Figure 5. 

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |      ZL       |       ZS      |           TW                |M| 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
             Figure 5  FEC Payload ID format 

5. Conventions used in this document 

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 
   document are to be interpreted as described in RFC-2119 [RFC2119].  

   In this document, these words will appear with that interpretation   
   only when in ALL CAPS. Lower case uses of these words are not to be    
   interpreted as carrying RFC-2119 significance. 



 
 
Shen, et al.             Expires May 16, 2013                 [Page 16] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

6. Security Considerations 

   Users could potentially be subject to a denial of service attack if 
   a single erroneous packet is injected into the delivery stream.  
   Therefore, it is RECOMMENDED that source authentication and 
   integrity checking are applied to the file or data object before 
   delivering decoded data to applications.  The hashing methodology of 
   SHA-256 is an example [2]. 

7. IANA Considerations 

   Values of FEC Encoding IDs and FEC Instance IDs are subject to IANA 
   registration.  For general guidelines on IANA considerations as they 
   apply to this document, see [RFC5052].  IANA is requested to assign 
   a value under the ietf:rmt:fec:encoding name-space to "SR-RS Code" 
   as the FEC Encoding ID value associated with this specification, 
   preferably the value 8. 

8. References 

8.1. Normative References 

   [1]   Bradner, S., "Key words for use in RFCs to Indicate 
         Requirement Levels", BCP 14, RFC 2119, March 1997. 

   [2]   "Secure Hash Standard", National Institute of Standards              
         and Technology FIPS PUB 180-3, October 2008. 

8.2. Informative References 

   [3]   F.J. McWilliams and N.J.A. Sloane, The Theory of Error-
         Correcting Codes, North-Holland Mathematical Library, 1998 

   [4]    I. Gohberg and V. Olshevsky, "Fast algorithms with 
         preprocessing for matrix-vector multiplication problems," J. 
         Complexity, vol. 10, 1994 
   [5]   S. Gao, "A new algorithm for decoding reed-Solomon codes," In 
         Communications, Information and Network Security, V.Bhargava, 
         H.V.Poor, V.Tarokh, and S.Yoon, Vol. 2003 (2002), pp. 55-68  
   [6]   Frederic Didier, "Efficient erasure decoding of Reed-Solomon 
         codes," arXiv: 0901.1886v1 [cs.IT], 2009 
          
9. Acknowledgments 

   This document was prepared using 2-Word-v2.0.template.dot. 


 
 
Shen, et al.             Expires May 16, 2013                 [Page 17] 

Internet-Draft      SR-RS Erasure Correction Scheme       November 2012 
    

   Authors' Addresses 

   BZ(Bazhong) Shen 
   Broadcom 
   5300 California Ave. 
   Irvine, CA 92617 
 
   Email: bzshen@broadcom.com 
    

   Erik Stauffer 
   Broadcom 
   190 Mathilda Place 
   Sunnyvale, Ca 94086 
       
   Email: eriks@broadcom.com 
 

   Kamlesh Rath 
   Broadcom 
   190 Mathilda Place 
   Sunnyvale, Ca 94086 
    
   Email: krath@broadcom.com 
 






















 
 
Shen, et al.             Expires May 16, 2013                 [Page 18]