idnits 2.17.1 draft-roca-nwcrg-rlc-fec-scheme-for-quic-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (February 4, 2019) is 1906 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- No issues found here. Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 nwcrg V. Roca 3 Internet-Draft INRIA 4 Intended status: Informational I. Swett 5 Expires: August 8, 2019 Google 6 M-J. Montpetit 7 Triangle Video 8 February 4, 2019 10 Sliding Window Random Linear Code (RLC) Forward Erasure Correction (FEC) 11 Schemes for QUIC 12 draft-roca-nwcrg-rlc-fec-scheme-for-quic-01 14 Abstract 16 This document specifies Sliding Window Random Linear Code (RLC) 17 Forward Erasure Correction (FEC) Schemes for the QUIC transport 18 protocol, in order to recover from packet losses. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on August 8, 2019. 37 Copyright Notice 39 Copyright (c) 2019 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (https://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 2. Definitions and Abbreviations . . . . . . . . . . . . . . . . 3 56 3. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 3.1. Source Symbols Mapping . . . . . . . . . . . . . . . . . 3 58 3.2. Pseudo-Random Number Generator (PRNG) . . . . . . . . . . 4 59 3.3. Coding Coefficients Generation Function . . . . . . . . . 4 60 4. Sliding Window RLC FEC Scheme over GF(2^^8) when Protecting a 61 Single QUIC Stream . . . . . . . . . . . . . . . . . . . . . 4 62 4.1. Formats and Codes . . . . . . . . . . . . . . . . . . . . 4 63 4.1.1. Configuration Information . . . . . . . . . . . . . . 4 64 4.1.2. REPAIR Frame Format . . . . . . . . . . . . . . . . . 5 65 4.1.3. Additional Procedures . . . . . . . . . . . . . . . . 6 66 4.2. FEC Code Specification . . . . . . . . . . . . . . . . . 6 67 4.2.1. Encoding Side . . . . . . . . . . . . . . . . . . . . 6 68 4.2.2. Decoding Side . . . . . . . . . . . . . . . . . . . . 6 69 5. Sliding Window RLC FEC Scheme over GF(2^^8) when Protecting 70 Several QUIC Streams . . . . . . . . . . . . . . . . . . . . 7 71 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 72 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 73 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 7 74 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 75 9.1. Normative References . . . . . . . . . . . . . . . . . . 7 76 9.2. Informative References . . . . . . . . . . . . . . . . . 8 77 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 79 1. Introduction 81 QUIC [QUIC-transport] is a new transport that aims at improving 82 network performance by enabling out of order delivery, partial 83 reliability, and methods of recovery besides retransmission, while 84 also improving security. This document specifies FEC schemes for 85 Sliding Window Random Linear Code (RLC) [RLC] to recover from lost 86 packets within a single QUIC stream or across several QUIC streams, 87 compliant with the FEC coding framework for QUIC [Coding4QUIC]. 89 The ability to add FEC coding in QUIC may be beneficial in several 90 situations: 92 o for a robust transmission of latency sensitive traffic, for 93 instance real-time flows, since it enables to recover packet 94 losses independently of the round trip time; 96 o for the transmission of contents to a large set of QUIC reception 97 endpoints, since the same repair frame may help recovering several 98 different packet losses at different receivers; 100 o for multipath communications, since repair traffic adds diversity. 102 2. Definitions and Abbreviations 104 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 105 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 106 document are to be interpreted as described in [RFC2119]. 108 Terms and definitions that apply to coding are available in 109 [nc-taxonomy]. More specifically, this document uses the following 110 definitions: 112 Packet versus Symbol: a Packet is the unit of data that is exchanged 113 over the network while a Symbol is the unit of data that is 114 manipulated during the encoding and decoding operations 116 Source Symbol: a unit of data originating from the source that is 117 used as input to encoding operations 119 Repair Symbol: a unit of data that is the result of a coding 120 operation 122 This document uses the following abbreviations: 124 E: size of an encoding symbol (i.e., source or repair symbol), 125 assumed fixed (in bytes) 127 3. Procedures 129 This section introduces the procedures that are used by these FEC 130 Schemes. 132 3.1. Source Symbols Mapping 134 The present FEC Scheme follows the source symbols mapping specified 135 in [Coding4QUIC]. Figure 1 illustrates this mapping. 137 < -E- > < -E- > < -E- > < -E- > 138 +-------+-------+-------+-------+ 139 |< -- Frame 1 -- >< ----- Frame | source symbols 0, 1, 2, 3 140 +-------+-------+-------+-------+ 141 | 2 ----- >< --- Frame 3 -- >< -| source symbols 4, 5, 6, 7 142 +-------+-------+----+--+-------+ 143 | Frame 4 - >< -F5- >| source symbols 8, 9 and 10 144 +-------+-------+----+ (incomplete) 146 Figure 1: Example of source symbol mapping, when the E value is 147 relatively small. 149 3.2. Pseudo-Random Number Generator (PRNG) 151 The RLC FEC Schemes defined in this document rely on the TinyMT32 152 PRNG defined in [RLC]. 154 3.3. Coding Coefficients Generation Function 156 The coding coefficients, used during the encoding process, are 157 generated at the RLC encoder by the generate_coding_coefficients() 158 function each time a new repair symbol needs to be produced. This 159 specification uses the generate_coding_coefficients() defined in 160 [RLC]. 162 4. Sliding Window RLC FEC Scheme over GF(2^^8) when Protecting a Single 163 QUIC Stream 165 This fully-specified FEC Scheme defines the Sliding Window Random 166 Linear Codes (RLC) over GF(2^^8) when protecting a single QUIC 167 stream. 169 4.1. Formats and Codes 171 4.1.1. Configuration Information 173 This section provides the RLC configuration information that needs to 174 be shared during QUIC negotiation between the QUIC sender and 175 receiver endpoints in order to synchronize them. 177 o FEC Encoding ID (8 bits): the value assigned to this fully 178 specified FEC Scheme MUST be XXXX, as assigned by IANA 179 (Section 7). This FEC Encoding ID is used during the QUIC 180 negotiation to uniquely identify the RLC FEC Scheme for QUIC; 182 o Encoding symbol size, E (in bytes) (16 bits): a non-negative 183 integer that indicates the size of each source and repair symbol, 184 in bytes. This element is required both by the QUIC sender 185 endpoint (RLC encoder) and the QUIC receiver endpoint(s) (RLC 186 decoder). 188 TODO: specify exact format, with binary encoding, to be carried 189 within the opaque 32-bit field during negotiation. 191 4.1.2. REPAIR Frame Format 193 The RLC FEC Scheme does not use any explicit Source FEC Payload ID, 194 meaning that QUIC STREAM frame format is not modified. 196 On the opposite, the RLC FEC Scheme requires QUIC REPAIR frames to 197 convey enough information. This section specifies the REPAIR frame 198 format specific to the RLC FEC Scheme and a single QUIC stream. Note 199 that the notion of REPAIR frame format is equivalent to the notion of 200 Repair FEC Payload ID in [RLC]. 202 0 1 2 3 203 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 204 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 205 | Stream ID (i) ... 206 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 207 | [Offset of First Source Symbol in EW (i)] ... 208 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 209 | [Length (i)] ... 210 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 211 | Repair_Key | DT |NSS (# src symb in ew) | 212 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 213 | Stream Data ... 214 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 216 Figure 2: REPAIR frame format when protecting a single QUIC stream. 218 More precisely, the REPAIR frame format is composed of the following 219 fields (Figure 2): 221 Stream ID (variable-size field): a variable-length integer 222 indicating the stream ID of the stream. See [QUIC-transport]. 223 The Stream ID for an RLC REPAIR frame MUST be equal to the Stream 224 ID used for the data stream it protects; 226 Offset of First Source Symbol in the Encoding Window (variable-size 227 field): 228 a variable-length integer specifying the byte offset in the stream 229 for the first source symbol of the encoding window. 231 Length (variable-size field): a variable-length integer specifying 232 the length of the Stream Data field in this REPAIR frame. This 233 length MUST be a non zero multiple of the source symbol size, E, 234 since a REPAIR frame contains one or more repair symbols for this 235 stream; 237 Repair_Key (16-bit field): this unsigned integer is used as a seed 238 by the coefficient generation function (Section 3.3) in order to 239 generate the desired number of coding coefficients. When a FEC 240 Repair Packet contains several repair symbols, this repair key 241 value is that of the first repair symbol. The remaining repair 242 keys can be deduced by incrementing by 1 this value, up to a 243 maximum value of 65535 after which it loops back to 0. 245 Density Threshold for the coding coefficients, DT (4-bit field): 246 this unsigned integer carries the Density Threshold (DT) used by 247 the coding coefficient generation function Section 3.3. More 248 precisely, it controls the probability of having a non zero coding 249 coefficient, which equals (DT+1) / 16. When a FEC Repair Packet 250 contains several repair symbols, the DT value applies to all of 251 them; 253 Number of Source Symbols in the encoding window, NSS (12-bit field): 255 this unsigned integer indicates the number of source symbols in 256 the encoding window when this repair symbol was generated. When a 257 FEC Repair Packet contains several repair symbols, this NSS value 258 applies to all of them; 260 Stream Data: data for this repair symbol(s). 262 4.1.3. Additional Procedures 264 4.2. FEC Code Specification 266 This RLC FEC Scheme relies on the FEC code specification defined in 267 [RLC]. 269 4.2.1. Encoding Side 271 [RLC] high level description of a Sliding Window RLC encoder also 272 applies here to this FEC Scheme. 274 4.2.2. Decoding Side 276 [RLC] high level description of a Sliding Window RLC decoder also 277 applies here to this FEC Scheme. 279 5. Sliding Window RLC FEC Scheme over GF(2^^8) when Protecting Several 280 QUIC Streams 282 This section focusses on the general case where FEC protection is 283 globally applied across two or more QUIC streams. 285 TODO 287 6. Security Considerations 289 TBD 291 7. IANA Considerations 293 This document registers two values in the "QUIC FEC Encoding IDs" 294 registry as follows: 296 o XXXX refers to the Sliding Window Random Linear Codes (RLC) over 297 GF(2^^8) FEC Scheme for a Single QUIC Stream, as defined in 298 Section 4 of this document. 300 o YYYY refers to the Sliding Window Random Linear Codes (RLC) over 301 GF(2^^8) FEC Scheme for a Several QUIC Stream, as defined in 302 Section 5 of this document. 304 8. Acknowledgments 306 TBD 308 9. References 310 9.1. Normative References 312 [Coding4QUIC] 313 Swett, I., Montpetit, M-J., and V. Roca, "Coding for 314 QUIC", Work in Progress, NWCRG draft-swett-nwcrg-coding- 315 for-quic (Work in Progress), February 2019, 316 . 319 [QUIC-transport] 320 Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based 321 Multiplexed and Secure Transport", draft-ietf-quic- 322 transport (Work in Progress) (work in progress), January 323 2019, . 326 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 327 Requirement Levels", BCP 14, RFC 2119, 328 DOI 10.17487/RFC2119, March 1997, 329 . 331 [RLC] Roca, V. and B. Teibi, "Sliding Window Random Linear Code 332 (RLC) Forward Erasure Correction (FEC) Scheme for 333 FECFRAME", Work in Progress, Transport Area Working Group 334 (TSVWG) draft-ietf-tsvwg-rlc-fec-scheme (Work in 335 Progress), February 2019, . 338 9.2. Informative References 340 [nc-taxonomy] 341 Roca (Ed.) et al., V., "Taxonomy of Coding Techniques for 342 Efficient Network Communications", Request For 343 Comments RFC 8406, June 2018, 344 . 347 Authors' Addresses 349 Vincent Roca 350 INRIA 351 Univ. Grenoble Alpes 352 France 354 Email: vincent.roca@inria.fr 356 Ian Swett 357 Google 358 Cambridge, MA 359 US 361 Email: ianswett@google.com 363 Marie-Jose Montpetit 364 Triangle Video 365 Boston, MA 366 US 368 Email: marie@mjmontpetit.com