| < draft-ietf-payload-flexible-fec-scheme-16.txt | draft-ietf-payload-flexible-fec-scheme-17.txt > | |||
|---|---|---|---|---|
| PAYLOAD M. Zanaty | PAYLOAD M. Zanaty | |||
| Internet-Draft Cisco | Internet-Draft Cisco | |||
| Intended status: Standards Track V. Singh | Intended status: Standards Track V. Singh | |||
| Expires: July 21, 2019 callstats.io | Expires: August 16, 2019 callstats.io | |||
| A. Begen | A. Begen | |||
| Networked Media | Networked Media | |||
| G. Mandyam | G. Mandyam | |||
| Qualcomm Inc. | Qualcomm Inc. | |||
| January 17, 2019 | February 12, 2019 | |||
| RTP Payload Format for Flexible Forward Error Correction (FEC) | RTP Payload Format for Flexible Forward Error Correction (FEC) | |||
| draft-ietf-payload-flexible-fec-scheme-16 | draft-ietf-payload-flexible-fec-scheme-17 | |||
| Abstract | Abstract | |||
| This document defines new RTP payload formats for the Forward Error | This document defines new RTP payload formats for the Forward Error | |||
| Correction (FEC) packets that are generated by the non-interleaved | Correction (FEC) packets that are generated by the non-interleaved | |||
| and interleaved parity codes from source media encapsulated in RTP. | and interleaved parity codes from source media encapsulated in RTP. | |||
| These parity codes are systematic codes, where a number of FEC repair | These parity codes are systematic codes, where a number of FEC repair | |||
| packets are generated from a set of source packets from one or more | packets are generated from a set of source packets from one or more | |||
| source RTP streams. These FEC repair packets are sent in a | source RTP streams. These FEC repair packets are sent in a | |||
| redundancy RTP stream separate from the source RTP stream(s) that | redundancy RTP stream separate from the source RTP stream(s) that | |||
| skipping to change at page 2, line 7 ¶ | skipping to change at page 2, line 7 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 21, 2019. | This Internet-Draft will expire on August 16, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Parity Codes . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Parity Codes . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.1.1. One-Dimensionsal (1-D) Non-interleaved (Row) FEC | 1.1.1. One-Dimensional (1-D) Non-interleaved (Row) FEC | |||
| Protection . . . . . . . . . . . . . . . . . . . . . 6 | Protection . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 1.1.2. 1-D Interleaved (Column) FEC Protection . . . . . . . 7 | 1.1.2. 1-D Interleaved (Column) FEC Protection . . . . . . . 7 | |||
| 1.1.3. Use Cases for 1-D FEC Protection . . . . . . . . . . 8 | 1.1.3. Use Cases for 1-D FEC Protection . . . . . . . . . . 8 | |||
| 1.1.4. Two-Dimensional (2-D) (Row and Column) FEC Protection 10 | 1.1.4. Two-Dimensional (2-D) (Row and Column) FEC Protection 10 | |||
| 1.1.5. FEC Overhead Considerations . . . . . . . . . . . . . 12 | 1.1.5. FEC Protection with Flexible Mask . . . . . . . . . . 12 | |||
| 1.1.6. FEC Overhead Considerations . . . . . . . . . . . . . 13 | ||||
| 2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 13 | 2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 13 | |||
| 3. Definitions and Notations . . . . . . . . . . . . . . . . . . 13 | 3. Definitions and Notations . . . . . . . . . . . . . . . . . . 13 | |||
| 3.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 13 | 3.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 3.2. Notations . . . . . . . . . . . . . . . . . . . . . . . . 14 | 3.2. Notations . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . 14 | 4. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.1. Source Packets . . . . . . . . . . . . . . . . . . . . . 14 | 4.1. Source Packets . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.2. FEC Repair Packets . . . . . . . . . . . . . . . . . . . 15 | 4.2. FEC Repair Packets . . . . . . . . . . . . . . . . . . . 15 | |||
| 4.2.1. RTP Header of FEC Repair Packets . . . . . . . . . . 16 | 4.2.1. RTP Header of FEC Repair Packets . . . . . . . . . . 16 | |||
| 4.2.2. FEC Header of FEC Repair Packets . . . . . . . . . . 17 | 4.2.2. FEC Header of FEC Repair Packets . . . . . . . . . . 17 | |||
| 5. Payload Format Parameters . . . . . . . . . . . . . . . . . . 25 | 5. Payload Format Parameters . . . . . . . . . . . . . . . . . . 25 | |||
| skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 28 ¶ | |||
| 7.1.2. Example SDP for Flexible FEC Protection with explicit | 7.1.2. Example SDP for Flexible FEC Protection with explicit | |||
| signalling in the SDP . . . . . . . . . . . . . . . . 44 | signalling in the SDP . . . . . . . . . . . . . . . . 44 | |||
| 7.2. On the Use of the RTP Stream Identifier Source | 7.2. On the Use of the RTP Stream Identifier Source | |||
| Description . . . . . . . . . . . . . . . . . . . . . . . 44 | Description . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 8. Congestion Control Considerations . . . . . . . . . . . . . . 45 | 8. Congestion Control Considerations . . . . . . . . . . . . . . 45 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 45 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 45 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 46 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 46 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 46 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 46 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 47 | 12.2. Informative References . . . . . . . . . . . . . . . . . 48 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 1. Introduction | 1. Introduction | |||
| This document defines new RTP payload formats for the Forward Error | This document defines new RTP payload formats for the Forward Error | |||
| Correction (FEC) that is generated by the non-interleaved and | Correction (FEC) that is generated by the non-interleaved and | |||
| interleaved parity codes from a source media encapsulated in RTP | interleaved parity codes from a source media encapsulated in RTP | |||
| [RFC3550]. The type of the source media protected by these parity | [RFC3550]. The type of the source media protected by these parity | |||
| codes can be audio, video, text or application. The FEC data are | codes can be audio, video, text or application. The FEC data are | |||
| generated according to the media type parameters, which are | generated according to the media type parameters, which are | |||
| skipping to change at page 6, line 13 ¶ | skipping to change at page 6, line 13 ¶ | |||
| recovery process to be useful. The repair window is defined as the | recovery process to be useful. The repair window is defined as the | |||
| time that spans a FEC block, which consists of the source packets and | time that spans a FEC block, which consists of the source packets and | |||
| the corresponding repair packets. At the receiver side, the FEC | the corresponding repair packets. At the receiver side, the FEC | |||
| decoder SHOULD buffer source and repair packets at least for the | decoder SHOULD buffer source and repair packets at least for the | |||
| duration of the repair window, to allow all the repair packets to | duration of the repair window, to allow all the repair packets to | |||
| arrive. The FEC decoder can start decoding the already received | arrive. The FEC decoder can start decoding the already received | |||
| packets sooner; however, it should not register a FEC decoding | packets sooner; however, it should not register a FEC decoding | |||
| failure until it waits at least for the duration of the repair | failure until it waits at least for the duration of the repair | |||
| window. | window. | |||
| 1.1.1. One-Dimensionsal (1-D) Non-interleaved (Row) FEC Protection | 1.1.1. One-Dimensional (1-D) Non-interleaved (Row) FEC Protection | |||
| Consider a group of D x L source packets that have sequence numbers | Consider a group of D x L source packets that have sequence numbers | |||
| starting from 1 running to D x L, and a repair packet is generated by | starting from 1 running to D x L, and a repair packet is generated by | |||
| applying the XOR operation to every L consecutive packets as sketched | applying the XOR operation to every L consecutive packets as sketched | |||
| in Figure 3. This process is referred to as 1-D non-interleaved FEC | in Figure 3. This process is referred to as 1-D non-interleaved FEC | |||
| protection. As a result of this process, D repair packets are | protection. As a result of this process, D repair packets are | |||
| generated, which are referred to as non-interleaved (or row) FEC | generated, which are referred to as non-interleaved (or row) FEC | |||
| repair packets. In general D and L represent values that describe | repair packets. In general D and L represent values that describe | |||
| how packets are grouped together from a depth and length perspective | how packets are grouped together from a depth and length perspective | |||
| (respectively) when interleaving all D x L source packets. | (respectively) when interleaving all D x L source packets. | |||
| skipping to change at page 12, line 32 ¶ | skipping to change at page 12, line 32 ¶ | |||
| +===+ +===+ +===+ +===+ | +===+ +===+ +===+ +===+ | |||
| |C_1| |C_2| |C_3| |C_4| | |C_1| |C_2| |C_3| |C_4| | |||
| +===+ +===+ +===+ +===+ | +===+ +===+ +===+ +===+ | |||
| Figure 8: Example scenario #2 where 2-D parity FEC protection fails | Figure 8: Example scenario #2 where 2-D parity FEC protection fails | |||
| error recovery | error recovery | |||
| 1.1.5. FEC Overhead Considerations | 1.1.5. FEC Protection with Flexible Mask | |||
| It is possible to define FEC protection for selected packets in the | ||||
| source stream. This would enable differential protection, i.e. | ||||
| application of FEC selectively to packets that require a higher level | ||||
| of reliability then the other packets in the source stream. The | ||||
| sender will be required to send a bitmap indicating the packets to be | ||||
| protected, i.e. a "mask", to the receiver. Since the mask can be | ||||
| modified during an RTP session ("flexible mask"), this kind of FEC | ||||
| protection can also be used to implement FEC dynamically (e.g. for | ||||
| adaptation to different types of traffic during the RTP session). | ||||
| 1.1.6. FEC Overhead Considerations | ||||
| The overhead is defined as the ratio of the number of bytes belonging | The overhead is defined as the ratio of the number of bytes belonging | |||
| to the repair packets to the number of bytes belonging to the | to the repair packets to the number of bytes belonging to the | |||
| protected source packets. | protected source packets. | |||
| Generally, repair packets are larger in size compared to the source | Generally, repair packets are larger in size compared to the source | |||
| packets. Also, not all the source packets are necessarily equal in | packets. Also, not all the source packets are necessarily equal in | |||
| size. However, assuming that each repair packet carries an equal | size. However, assuming that each repair packet carries an equal | |||
| number of bytes as carried by a source packet, the overhead for | number of bytes as carried by a source packet, the overhead for | |||
| different FEC protection methods can be computed as follows: | different FEC protection methods can be computed as follows: | |||
| skipping to change at page 14, line 16 ¶ | skipping to change at page 14, line 26 ¶ | |||
| L: Number of columns of the source block (length of each row). | L: Number of columns of the source block (length of each row). | |||
| D: Number of rows of the source block (depth of each column). | D: Number of rows of the source block (depth of each column). | |||
| bitmask: A 15-bit, 46-bit, or 110-bit mask indicating which source | bitmask: A 15-bit, 46-bit, or 110-bit mask indicating which source | |||
| packets are protected by a FEC repair packet. If the bit i in the | packets are protected by a FEC repair packet. If the bit i in the | |||
| mask is set to 1, the source packet number N + i is protected by | mask is set to 1, the source packet number N + i is protected by | |||
| this FEC repair packet, where N is the sequence number base | this FEC repair packet, where N is the sequence number base | |||
| indicated in the FEC repair packet. The most significant bit of | indicated in the FEC repair packet. The most significant bit of | |||
| the mask corresponds to i=0. The least signficant bit of the mask | the mask corresponds to i=0. The least significant bit of the | |||
| corresponds to i=14 in the 15-bit mask, i=45 in the 46-bit mask, | mask corresponds to i=14 in the 15-bit mask, i=45 in the 46-bit | |||
| or i=109 in the 110-bit mask. | mask, or i=109 in the 110-bit mask. | |||
| 4. Packet Formats | 4. Packet Formats | |||
| This section describes the formats of the source packets and defines | This section describes the formats of the source packets and defines | |||
| the formats of the FEC repair packets. | the formats of the FEC repair packets. | |||
| 4.1. Source Packets | 4.1. Source Packets | |||
| The source packets contain the information that identifies the source | The source packets contain the information that identifies the source | |||
| block and the position within the source block occupied by the | block and the position within the source block occupied by the | |||
| skipping to change at page 16, line 19 ¶ | skipping to change at page 16, line 21 ¶ | |||
| Version (V) 2 bits: This MUST be set to 2 (binary 10), as this | Version (V) 2 bits: This MUST be set to 2 (binary 10), as this | |||
| specification requires all source RTP packets and all FEC repair | specification requires all source RTP packets and all FEC repair | |||
| packets to use RTP version 2. The reason for this restriction is | packets to use RTP version 2. The reason for this restriction is | |||
| the first 2 bits of the FEC header contain other information (R | the first 2 bits of the FEC header contain other information (R | |||
| and F bits) rather than recovering the RTP version field. | and F bits) rather than recovering the RTP version field. | |||
| Padding (P) bit: Source packets can have optional RTP padding, | Padding (P) bit: Source packets can have optional RTP padding, | |||
| which can be recovered. FEC repair packets can have optional RTP | which can be recovered. FEC repair packets can have optional RTP | |||
| padding, which is independent of the RTP padding of the source | padding, which is independent of the RTP padding of the source | |||
| pakcets. | packets. | |||
| Extension (X) bit: Source packets can have optional RTP header | Extension (X) bit: Source packets can have optional RTP header | |||
| extensions, which can be recovered. FEC repair packets can have | extensions, which can be recovered. FEC repair packets can have | |||
| optional RTP header extensions, which are independent of the RTP | optional RTP header extensions, which are independent of the RTP | |||
| header extensions of the source packets. | header extensions of the source packets. | |||
| CSRC Count (CC) 4 bits, and CSRC List (CSRC_i) 32 bits each: | CSRC Count (CC) 4 bits, and CSRC List (CSRC_i) 32 bits each: | |||
| Source packets can have an optional CSRC list and count, which can | Source packets can have an optional CSRC list and count, which can | |||
| be recovered. FEC repair packets MUST use the CSRC list and count | be recovered. FEC repair packets MUST use the CSRC list and count | |||
| to specify the SSRC(s) of the source RTP stream(s) protected by | to specify the SSRC(s) of the source RTP stream(s) protected by | |||
| skipping to change at page 26, line 6 ¶ | skipping to change at page 26, line 6 ¶ | |||
| o D: indicates the number of rows of the source block that are | o D: indicates the number of rows of the source block that are | |||
| protected by this FEC block and it applies to all the source | protected by this FEC block and it applies to all the source | |||
| SSRCs. D is a positive integer. | SSRCs. D is a positive integer. | |||
| o ToP: indicates the type of protection applied by the sender: 0 for | o ToP: indicates the type of protection applied by the sender: 0 for | |||
| 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | |||
| protection, 2 for 2-D parity FEC protection, and 3 for | protection, 2 for 2-D parity FEC protection, and 3 for | |||
| retransmission. There can only be one value listed for ToP. The | retransmission. There can only be one value listed for ToP. The | |||
| absence of the ToP field means that all protection types are | absence of the ToP field means that all protection types are | |||
| allowed. | allowed. An offer that lists more than one ToP value MUST be | |||
| rejected. | ||||
| Note that both L and D in the optional parameters should follow the | Note that both L and D in the optional parameters should follow the | |||
| value pairings stated in Section 4.2.2.2 if included. | value pairings stated in Section 4.2.2.2 if included. | |||
| Encoding considerations: This media type is framed (See Section 4.8 | Encoding considerations: This media type is framed (See Section 4.8 | |||
| in the template document [RFC6838]) and contains binary data. | in the template document [RFC6838]) and contains binary data. | |||
| Security considerations: See Section 9 of [RFCXXXX]. | Security considerations: See Section 9 of [RFCXXXX]. | |||
| Interoperability considerations: None. | Interoperability considerations: None. | |||
| skipping to change at page 27, line 27 ¶ | skipping to change at page 27, line 29 ¶ | |||
| o D: indicates the number of rows of the source block that are | o D: indicates the number of rows of the source block that are | |||
| protected by this FEC block and it applies to all the source | protected by this FEC block and it applies to all the source | |||
| SSRCs. D is a positive integer. | SSRCs. D is a positive integer. | |||
| o ToP: indicates the type of protection applied by the sender: 0 for | o ToP: indicates the type of protection applied by the sender: 0 for | |||
| 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | |||
| protection, 2 for 2-D parity FEC protection, and 3 for | protection, 2 for 2-D parity FEC protection, and 3 for | |||
| retransmission. There can only be one value listed for ToP. The | retransmission. There can only be one value listed for ToP. The | |||
| absence of the ToP field means that all protection types are | absence of the ToP field means that all protection types are | |||
| allowed. | allowed. An offer that lists more than one ToP value MUST be | |||
| rejected. | ||||
| Note that both L and D in the optional parameters should follow the | Note that both L and D in the optional parameters should follow the | |||
| value pairings stated in Section 4.2.2.2 if included. | value pairings stated in Section 4.2.2.2 if included. | |||
| Encoding considerations: This media type is framed (See Section 4.8 | Encoding considerations: This media type is framed (See Section 4.8 | |||
| in the template document [RFC6838]) and contains binary data. | in the template document [RFC6838]) and contains binary data. | |||
| Security considerations: See Section 9 of [RFCXXXX]. | Security considerations: See Section 9 of [RFCXXXX]. | |||
| Interoperability considerations: None. | Interoperability considerations: None. | |||
| skipping to change at page 28, line 47 ¶ | skipping to change at page 28, line 51 ¶ | |||
| o D: indicates the number of rows of the source block that are | o D: indicates the number of rows of the source block that are | |||
| protected by this FEC block and it applies to all the source | protected by this FEC block and it applies to all the source | |||
| SSRCs. D is a positive integer. | SSRCs. D is a positive integer. | |||
| o ToP: indicates the type of protection applied by the sender: 0 for | o ToP: indicates the type of protection applied by the sender: 0 for | |||
| 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | |||
| protection, 2 for 2-D parity FEC protection, and 3 for | protection, 2 for 2-D parity FEC protection, and 3 for | |||
| retransmission. There can only be one value listed for ToP. The | retransmission. There can only be one value listed for ToP. The | |||
| absence of the ToP field means that all protection types are | absence of the ToP field means that all protection types are | |||
| allowed. | allowed. An offer that lists more than one ToP value MUST be | |||
| rejected. | ||||
| Note that both L and D in the optional parameters should follow the | Note that both L and D in the optional parameters should follow the | |||
| value pairings stated in Section 4.2.2.2 if included. | value pairings stated in Section 4.2.2.2 if included. | |||
| Encoding considerations: This media type is framed (See Section 4.8 | Encoding considerations: This media type is framed (See Section 4.8 | |||
| in the template document [RFC6838]) and contains binary data. | in the template document [RFC6838]) and contains binary data. | |||
| Security considerations: See Section 9 of [RFCXXXX]. | Security considerations: See Section 9 of [RFCXXXX]. | |||
| Interoperability considerations: None. | Interoperability considerations: None. | |||
| skipping to change at page 30, line 20 ¶ | skipping to change at page 30, line 24 ¶ | |||
| o D: indicates the number of rows of the source block that are | o D: indicates the number of rows of the source block that are | |||
| protected by this FEC block and it applies to all the source | protected by this FEC block and it applies to all the source | |||
| SSRCs. D is a positive integer. | SSRCs. D is a positive integer. | |||
| o ToP: indicates the type of protection applied by the sender: 0 for | o ToP: indicates the type of protection applied by the sender: 0 for | |||
| 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | 1-D interleaved FEC protection, 1 for 1-D non-interleaved FEC | |||
| protection, 2 for 2-D parity FEC protection, and 3 for | protection, 2 for 2-D parity FEC protection, and 3 for | |||
| retransmission. There can only be one value listed for ToP. The | retransmission. There can only be one value listed for ToP. The | |||
| absence of the ToP field means that all protection types are | absence of the ToP field means that all protection types are | |||
| allowed. | allowed. An offer that lists more than one ToP value MUST be | |||
| rejected. | ||||
| Note that both L and D in the optional parameters should follow the | Note that both L and D in the optional parameters should follow the | |||
| value pairings stated in Section 4.2.2.2 if included. | value pairings stated in Section 4.2.2.2 if included. | |||
| Encoding considerations: This media type is framed (See Section 4.8 | Encoding considerations: This media type is framed (See Section 4.8 | |||
| in the template document [RFC6838]) and contains binary data. | in the template document [RFC6838]) and contains binary data. | |||
| Security considerations: See Section 9 of [RFCXXXX]. | Security considerations: See Section 9 of [RFCXXXX]. | |||
| Interoperability considerations: None. | Interoperability considerations: None. | |||
| skipping to change at page 35, line 15 ¶ | skipping to change at page 35, line 15 ¶ | |||
| Note that the same algorithms are used by the 1-D parity codes, | Note that the same algorithms are used by the 1-D parity codes, | |||
| regardless of whether the FEC protection is applied over a column or | regardless of whether the FEC protection is applied over a column or | |||
| a row. The 2-D parity codes, on the other hand, usually require | a row. The 2-D parity codes, on the other hand, usually require | |||
| multiple iterations of the procedures described here. This iterative | multiple iterations of the procedures described here. This iterative | |||
| decoding algorithm is further explained in Section 6.3.4. | decoding algorithm is further explained in Section 6.3.4. | |||
| 6.3.1. Associating the Source and Repair Packets | 6.3.1. Associating the Source and Repair Packets | |||
| Before associating source and repair packets, the receiver must know | Before associating source and repair packets, the receiver must know | |||
| in which RTP sessions the source and repair respectively are being | in which RTP sessions the source and repair respectively are being | |||
| sent. After this is established by the reciever the first step is | sent. After this is established by the receiver the first step is | |||
| associating the source and repair packets. This association can be | associating the source and repair packets. This association can be | |||
| via flexible bitmasks, or fixed L and D offsets which can be in the | via flexible bitmasks, or fixed L and D offsets which can be in the | |||
| FEC header or signaled in SDP in optional payload format parameters | FEC header or signaled in SDP in optional payload format parameters | |||
| when L=D=0 in the FEC header. | when L=D=0 in the FEC header. | |||
| 6.3.1.1. Using Bitmasks | 6.3.1.1. Using Bitmasks | |||
| To use flexible bitmasks, the first two FEC header bits MUST have R=0 | To use flexible bitmasks, the first two FEC header bits MUST have R=0 | |||
| and F=0. A 15-bit, 46-bit, or 110-bit mask indicates which source | and F=0. A 15-bit, 46-bit, or 110-bit mask indicates which source | |||
| packets are protected by a FEC repair packet. If the bit i in the | packets are protected by a FEC repair packet. If the bit i in the | |||
| mask is set to 1, the source packet number N + i is protected by this | mask is set to 1, the source packet number N + i is protected by this | |||
| FEC repair packet, where N is the sequence number base indicated in | FEC repair packet, where N is the sequence number base indicated in | |||
| the FEC header. The most significant bit of the mask corresponds to | the FEC header. The most significant bit of the mask corresponds to | |||
| i=0. The least signficant bit of the mask corresponds to i=14 in the | i=0. The least significant bit of the mask corresponds to i=14 in | |||
| 15-bit mask, i=45 in the 46-bit mask, or i=109 in the 110-bit mask. | the 15-bit mask, i=45 in the 46-bit mask, or i=109 in the 110-bit | |||
| mask. | ||||
| The bitmasks are able to represent arbitrary protection patterns, for | The bitmasks are able to represent arbitrary protection patterns, for | |||
| example, 1-D interleaved, 1-D non-interleaved, 2-D. | example, 1-D interleaved, 1-D non-interleaved, 2-D. | |||
| 6.3.1.2. Using L and D Offsets | 6.3.1.2. Using L and D Offsets | |||
| Denote the set of the source packets associated with repair packet p* | Denote the set of the source packets associated with repair packet p* | |||
| by set T(p*). Note that in a source block whose size is L columns by | by set T(p*). Note that in a source block whose size is L columns by | |||
| D rows, set T includes D source packets plus one repair packet for | D rows, set T includes D source packets plus one repair packet for | |||
| the FEC protection applied over a column, and L source packets plus | the FEC protection applied over a column, and L source packets plus | |||
| skipping to change at page 43, line 14 ¶ | skipping to change at page 43, line 14 ¶ | |||
| o Clearly identify which SSRC's are associated with each source | o Clearly identify which SSRC's are associated with each source | |||
| block. | block. | |||
| o Clearly identify which repair packets correspond to which source | o Clearly identify which repair packets correspond to which source | |||
| blocks. | blocks. | |||
| o Make use of repair packets to recover source data associated with | o Make use of repair packets to recover source data associated with | |||
| specific SSRC's. | specific SSRC's. | |||
| This section provides several Sesssion Description Protocol (SDP) | This section provides several Session Description Protocol (SDP) | |||
| examples to demonstrate how these requirements can be met. | examples to demonstrate how these requirements can be met. | |||
| 7.1. SDP Examples | 7.1. SDP Examples | |||
| This section provides two SDP [RFC4566] examples. The examples use | This section provides two SDP [RFC4566] examples. The examples use | |||
| the FEC grouping semantics defined in [RFC5956]. | the FEC grouping semantics defined in [RFC5956]. | |||
| 7.1.1. Example SDP for Flexible FEC Protection with in-band SSRC | 7.1.1. Example SDP for Flexible FEC Protection with in-band SSRC | |||
| mapping | mapping | |||
| skipping to change at page 45, line 22 ¶ | skipping to change at page 45, line 22 ¶ | |||
| networks, FEC repair streams may consume a significant part of the | networks, FEC repair streams may consume a significant part of the | |||
| available bandwidth and consequently may congest the network. In | available bandwidth and consequently may congest the network. In | |||
| such cases, the applications MUST NOT arbitrarily increase the amount | such cases, the applications MUST NOT arbitrarily increase the amount | |||
| of FEC protection since doing so may lead to a congestion collapse. | of FEC protection since doing so may lead to a congestion collapse. | |||
| If desired, stronger FEC protection MAY be applied only after the | If desired, stronger FEC protection MAY be applied only after the | |||
| source rate has been reduced. | source rate has been reduced. | |||
| In a network-friendly implementation, an application should avoid | In a network-friendly implementation, an application should avoid | |||
| sending/receiving FEC repair streams if it knows that sending/ | sending/receiving FEC repair streams if it knows that sending/ | |||
| receiving those FEC repair streams would not help at all in | receiving those FEC repair streams would not help at all in | |||
| recovering the missing packets. It is RECOMMENDED that the amount | recovering the missing packets. Examples of where FEC would not be | |||
| and type (row, column, or both) of FEC protection is adjusted | beneficial are: (1) if the successful recovery rate as determined by | |||
| RTCP feedback is low (see [RFC5725] and [RFC7509]), and (2) the | ||||
| application has a smaller latency requirement than the repair window | ||||
| adopted by the FEC configuration based on the expected burst loss | ||||
| duration and the target FEC overhead. It is RECOMMENDED that the | ||||
| amount and type (row, column, or both) of FEC protection is adjusted | ||||
| dynamically based on the packet loss rate and burst loss length | dynamically based on the packet loss rate and burst loss length | |||
| observed by the applications. | observed by the applications. | |||
| In multicast scenarios, it may be difficult to optimize the FEC | In multicast scenarios, it may be difficult to optimize the FEC | |||
| protection per receiver. If there is a large variation among the | protection per receiver. If there is a large variation among the | |||
| levels of FEC protection needed by different receivers, it is | levels of FEC protection needed by different receivers, it is | |||
| RECOMMENDED that the sender offers multiple repair streams with | RECOMMENDED that the sender offers multiple repair streams with | |||
| different levels of FEC protection and the receivers join the | different levels of FEC protection and the receivers join the | |||
| corresponding multicast sessions to receive the repair stream(s) that | corresponding multicast sessions to receive the repair stream(s) that | |||
| is best for them. | is best for them. | |||
| skipping to change at page 46, line 7 ¶ | skipping to change at page 46, line 12 ¶ | |||
| of the payload. A suitable security mechanism for this RTP payload | of the payload. A suitable security mechanism for this RTP payload | |||
| format should provide confidentiality, integrity protection, and at | format should provide confidentiality, integrity protection, and at | |||
| least source authentication capable of determining if an RTP packet | least source authentication capable of determining if an RTP packet | |||
| is from a member of the RTP session. | is from a member of the RTP session. | |||
| Note that the appropriate mechanism to provide security to RTP and | Note that the appropriate mechanism to provide security to RTP and | |||
| payloads following this memo may vary. It is dependent on the | payloads following this memo may vary. It is dependent on the | |||
| application, transport and signaling protocol employed. Therefore, a | application, transport and signaling protocol employed. Therefore, a | |||
| single mechanism is not sufficient, although if suitable, using the | single mechanism is not sufficient, although if suitable, using the | |||
| Secure Real-time Transport Protocol (SRTP) [RFC3711] is recommended. | Secure Real-time Transport Protocol (SRTP) [RFC3711] is recommended. | |||
| Other mechanisms that may be used are IPsec [RFC4301] and Transport | Other mechanisms that may be used are IPsec [RFC4301] and Datagram | |||
| Layer Security (TLS, see [RFC8446]) (RTP over TCP); other | Transport Layer Security (DTLS, see [RFC6347]) (RTP over UDP); other | |||
| alternatives may exist. | alternatives may exist. | |||
| Given that FLEX FEC enables the protection of multiple source | Given that FLEX FEC enables the protection of multiple source | |||
| streams, there exists the possibility that multiple source buffers | streams, there exists the possibility that multiple source buffers | |||
| may be created that may not be used. An attacker could leverage | may be created that may not be used. An attacker could leverage | |||
| unused source buffers to as a means of occupying memory in a FLEX FEC | unused source buffers to as a means of occupying memory in a FLEX FEC | |||
| endpoint. Moreover the application source data may not be perfectly | endpoint. Moreover the application source data may not be perfectly | |||
| matched with FLEX FEC source partitioning. If this is the case, | matched with FLEX FEC source partitioning. If this is the case, | |||
| there is a possibility for unprotected source data if, for instance, | there is a possibility for unprotected source data if, for instance, | |||
| the FLEX FEC implementation discards data that does not fit perfectly | the FLEX FEC implementation discards data that does not fit perfectly | |||
| into its source processing requirements. | into its source processing requirements. | |||
| 10. IANA Considerations | 10. IANA Considerations | |||
| New media subtypes are subject to IANA registration. For the | New media subtypes are subject to IANA registration. For the | |||
| registration of the payload formats and their parameters introduced | registration of the payload formats and their parameters introduced | |||
| in this document, refer to Section 5. | in this document, refer to Section 5.1. | |||
| 11. Acknowledgments | 11. Acknowledgments | |||
| Some parts of this document are borrowed from [RFC5109]. Thus, the | Some parts of this document are borrowed from [RFC5109]. Thus, the | |||
| author would like to thank the editor of [RFC5109] and those who | author would like to thank the editor of [RFC5109] and those who | |||
| contributed to [RFC5109]. | contributed to [RFC5109]. | |||
| Thanks to Stephen Botzko , Bernard Aboba , Rasmus Brandt , Brian | Thanks to Stephen Botzko , Bernard Aboba , Rasmus Brandt , Brian | |||
| Baldino , Roni Even , Stefan Holmer , Jonathan Lennox , and Magnus | Baldino , Roni Even , Stefan Holmer , Jonathan Lennox , and Magnus | |||
| Westerlund for providing valuable feedback on earlier versions of | Westerlund for providing valuable feedback on earlier versions of | |||
| skipping to change at page 48, line 38 ¶ | skipping to change at page 48, line 45 ¶ | |||
| [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | |||
| "Extended RTP Profile for Real-time Transport Control | "Extended RTP Profile for Real-time Transport Control | |||
| Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | |||
| DOI 10.17487/RFC4585, July 2006, | DOI 10.17487/RFC4585, July 2006, | |||
| <https://www.rfc-editor.org/info/rfc4585>. | <https://www.rfc-editor.org/info/rfc4585>. | |||
| [RFC5109] Li, A., Ed., "RTP Payload Format for Generic Forward Error | [RFC5109] Li, A., Ed., "RTP Payload Format for Generic Forward Error | |||
| Correction", RFC 5109, DOI 10.17487/RFC5109, December | Correction", RFC 5109, DOI 10.17487/RFC5109, December | |||
| 2007, <https://www.rfc-editor.org/info/rfc5109>. | 2007, <https://www.rfc-editor.org/info/rfc5109>. | |||
| [RFC5725] Begen, A., Hsu, D., and M. Lague, "Post-Repair Loss RLE | ||||
| Report Block Type for RTP Control Protocol (RTCP) Extended | ||||
| Reports (XRs)", RFC 5725, DOI 10.17487/RFC5725, February | ||||
| 2010, <https://www.rfc-editor.org/info/rfc5725>. | ||||
| [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | ||||
| Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | ||||
| January 2012, <https://www.rfc-editor.org/info/rfc6347>. | ||||
| [RFC7509] Huang, R. and V. Singh, "RTP Control Protocol (RTCP) | ||||
| Extended Report (XR) for Post-Repair Loss Count Metrics", | ||||
| RFC 7509, DOI 10.17487/RFC7509, May 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7509>. | ||||
| [RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and | [RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and | |||
| B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms | B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms | |||
| for Real-Time Transport Protocol (RTP) Sources", RFC 7656, | for Real-Time Transport Protocol (RTP) Sources", RFC 7656, | |||
| DOI 10.17487/RFC7656, November 2015, | DOI 10.17487/RFC7656, November 2015, | |||
| <https://www.rfc-editor.org/info/rfc7656>. | <https://www.rfc-editor.org/info/rfc7656>. | |||
| [RFC7826] Schulzrinne, H., Rao, A., Lanphier, R., Westerlund, M., | [RFC7826] Schulzrinne, H., Rao, A., Lanphier, R., Westerlund, M., | |||
| and M. Stiemerling, Ed., "Real-Time Streaming Protocol | and M. Stiemerling, Ed., "Real-Time Streaming Protocol | |||
| Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December | Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December | |||
| 2016, <https://www.rfc-editor.org/info/rfc7826>. | 2016, <https://www.rfc-editor.org/info/rfc7826>. | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [SMPTE2022-1] | [SMPTE2022-1] | |||
| SMPTE 2022-1-2007, "Forward Error Correction for Real-Time | SMPTE 2022-1-2007, "Forward Error Correction for Real-Time | |||
| Video/Audio Transport over IP Networks", 2007. | Video/Audio Transport over IP Networks", 2007. | |||
| Authors' Addresses | Authors' Addresses | |||
| Mo Zanaty | Mo Zanaty | |||
| Cisco | Cisco | |||
| Raleigh, NC | Raleigh, NC | |||
| USA | USA | |||
| End of changes. 23 change blocks. | ||||
| 30 lines changed or deleted | 63 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||