draft-ietf-mmusic-rfc4756bis-05.txt | draft-ietf-mmusic-rfc4756bis-06.txt | |||
---|---|---|---|---|
MMUSIC A. Begen | MMUSIC A. Begen | |||
Internet-Draft Cisco Systems | Internet-Draft Cisco | |||
Obsoletes: 4756 October 19, 2009 | Updates: 4756, 3388bis, 5576 February 11, 2010 | |||
(if approved) | ||||
Updates: 3388bis, 5576 | ||||
(if approved) | (if approved) | |||
Intended status: Standards Track | Intended status: Standards Track | |||
Expires: April 22, 2010 | Expires: August 15, 2010 | |||
Forward Error Correction Grouping Semantics in Session Description | Forward Error Correction Grouping Semantics in Session Description | |||
Protocol | Protocol | |||
draft-ietf-mmusic-rfc4756bis-05 | draft-ietf-mmusic-rfc4756bis-06 | |||
Abstract | ||||
The Session Description Protocol (SDP) supports grouping media lines. | ||||
SDP also has semantics defined for grouping the associated source and | ||||
Forward Error Correction (FEC)-based repair flows. However, the | ||||
semantics that was defined in RFC 4756 generally fail to provide the | ||||
specific grouping relationships between the source and repair flows | ||||
when there are more than one source and/or repair flows in the same | ||||
group. Furthermore, the existing semantics does not support | ||||
describing additive repair flows. This document addresses these | ||||
issues by introducing new FEC grouping semantics. SSRC-level | ||||
grouping semantics is also introduced in this document for Real-time | ||||
Transport Protocol (RTP) streams using SSRC multiplexing. | ||||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted to IETF in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at page 1, line 37 | skipping to change at page 1, line 49 | |||
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." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on April 22, 2010. | This Internet-Draft will expire on August 15, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2009 IETF Trust and the persons identified as the | Copyright (c) 2010 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 in effect on the date of | Provisions Relating to IETF Documents | |||
publication of this document (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | ||||
Abstract | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | ||||
The Session Description Protocol (SDP) supports grouping media lines. | described in the BSD License. | |||
SDP also has semantics defined for grouping the associated source and | ||||
Forward Error Correction (FEC)-based repair flows. However, the | ||||
semantics that was defined in RFC 4756 generally fail to provide the | ||||
specific grouping relationships between the source and repair flows | ||||
when there are more than one source and/or repair flows in the same | ||||
group. Furthermore, the existing semantics does not support | ||||
describing additive repair flows. This document addresses these | ||||
issues by introducing new FEC grouping semantics. SSRC-level | ||||
grouping semantics is also introduced in this document for Real-time | ||||
Transport Protocol (RTP) streams using SSRC multiplexing. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 5 | 2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Requirements and Changes from RFC 4756 . . . . . . . . . . . . 5 | 3. Requirements and Changes from RFC 4756 . . . . . . . . . . . . 5 | |||
3.1. Source and Repair Flow Association . . . . . . . . . . . . 5 | 3.1. Source and Repair Flow Association . . . . . . . . . . . . 5 | |||
3.2. Support for Additivity . . . . . . . . . . . . . . . . . . 6 | 3.2. Support for Additivity . . . . . . . . . . . . . . . . . . 6 | |||
4. FEC Grouping . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. FEC Grouping . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1. New Grouping Semantics . . . . . . . . . . . . . . . . . . 6 | 4.1. New Grouping Semantics . . . . . . . . . . . . . . . . . . 6 | |||
4.2. SDP Example . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.2. SDP Example . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.3. Grouping for SSRC-Multiplexed RTP Streams . . . . . . . . 8 | 4.3. Grouping for SSRC-Multiplexed RTP Streams . . . . . . . . 8 | |||
4.4. SDP Offer-Answer Model and Backward Compatibility | 4.4. SDP Offer-Answer Model and Backward Compatibility | |||
Considerations . . . . . . . . . . . . . . . . . . . . . . 9 | Considerations . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.5. ABNF Syntax . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.5. ABNF Syntax . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 11 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References . . . . . . . . . . . . . . . . . . . 13 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . . 12 | 8.2. Informative References . . . . . . . . . . . . . . . . . . 13 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 13 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
1. Introduction | 1. Introduction | |||
Any application that needs a reliable transmission over an unreliable | Any application that needs a reliable transmission over an unreliable | |||
packet network has to cope with packet losses. Forward Error | packet network has to cope with packet losses. Forward Error | |||
Correction (FEC) is an effective approach that provides reliable | Correction (FEC) is an effective approach that provides reliable | |||
transmission particularly in multicast and broadcast applications | transmission particularly in multicast and broadcast applications | |||
where the feedback from the receiver(s) is potentially limited. | where the feedback from the receiver(s) is potentially limited. | |||
In a nutshell, FEC groups source packets into blocks and applies | In a nutshell, FEC groups source packets into blocks and applies | |||
skipping to change at page 3, line 34 | skipping to change at page 3, line 34 | |||
where an exclusive OR (XOR) operation is applied to a group of | where an exclusive OR (XOR) operation is applied to a group of | |||
packets (i.e., source block) to generate a single repair packet. At | packets (i.e., source block) to generate a single repair packet. At | |||
the receiver side, this scheme provides a full recovery if only one | the receiver side, this scheme provides a full recovery if only one | |||
packet is lost within the source block and the repair packet is | packet is lost within the source block and the repair packet is | |||
received. There are various other ways of generating repair packets, | received. There are various other ways of generating repair packets, | |||
possibly with different loss-recovery capabilities. | possibly with different loss-recovery capabilities. | |||
The FEC Framework [I-D.ietf-fecframe-framework] outlines a general | The FEC Framework [I-D.ietf-fecframe-framework] outlines a general | |||
framework for using FEC codes in multimedia applications that stream | framework for using FEC codes in multimedia applications that stream | |||
audio, video or other types of multimedia content. The FEC Framework | audio, video or other types of multimedia content. The FEC Framework | |||
specification states that source and repair packets MUST be carried | specification states that source and repair packets must be carried | |||
in different streams, which are referred to as the source and repair | in different streams, which are referred to as the source and repair | |||
flows, respectively. At the receiver side, the receivers should know | flows, respectively. At the receiver side, the receivers should know | |||
which flows are the source flows and which flows are the repair | which flows are the source flows and which flows are the repair | |||
flows. The receivers should also know the exact association of the | flows. The receivers should also know the exact association of the | |||
source and repair flows so that they can use the correct data to | source and repair flows so that they can use the correct data to | |||
repair the original content in case there is a packet loss. | repair the original content in case there is a packet loss. | |||
Currently, SDP [RFC4566] uses [RFC3388] and [RFC4756] for this | Currently, SDP [RFC4566] uses [RFC3388] and [RFC4756] for this | |||
purpose. | purpose. | |||
In order to provide applications more flexibility, the FEC Framework | In order to provide applications more flexibility, the FEC Framework | |||
[I-D.ietf-fecframe-framework] allows a source flow to be protected by | [I-D.ietf-fecframe-framework] allows a source flow to be protected by | |||
multiple FEC schemes, each of which requires an instance of the FEC | multiple FEC schemes, each of which requires an instance of the FEC | |||
Framework. Thus, multiple instances of the FEC Framework MAY exist | Framework. Thus, multiple instances of the FEC Framework may exist | |||
at the sender and the receiver(s). Furthermore, within a single FEC | at the sender and the receiver(s). Furthermore, within a single FEC | |||
Framework instance, multiple source flows MAY be grouped and | Framework instance, multiple source flows may be grouped and | |||
protected by one or more repair flows. | protected by one or more repair flows. | |||
It should be noted that the FEC Framework requires the source and | It should be noted that the FEC Framework requires the source and | |||
repair packets to be carried in different streams. When Real-time | repair packets to be carried in different streams. When Real-time | |||
Transport Protocol (RTP) [RFC3550] is used to carry the source and | Transport Protocol (RTP) [RFC3550] is used to carry the source and | |||
repair streams, the FEC Framework recommends that each stream is | repair streams, the FEC Framework recommends that each stream is | |||
carried in its own RTP session. This provides flexibility in using | carried in its own RTP session. This provides flexibility in using | |||
FEC in a backward-compatible manner. However, in some scenarios, a | FEC in a backward-compatible manner. However, in some scenarios, a | |||
single RTP session may be desired to carry multiple RTP streams via | single RTP session may be desired to carry multiple RTP streams via | |||
SSRC multiplexing in order to reduce the port usage. For such | SSRC multiplexing in order to reduce the port usage. For such | |||
skipping to change at page 5, line 21 | skipping to change at page 5, line 21 | |||
SOURCE FLOWS | FEC FRAMEWORK INSTANCE #1 | SOURCE FLOWS | FEC FRAMEWORK INSTANCE #1 | |||
S3: Source Flow |---------| R3: Repair Flow | S3: Source Flow |---------| R3: Repair Flow | |||
| | | | |||
|---------| FEC FRAMEWORK INSTANCE #2 | |---------| FEC FRAMEWORK INSTANCE #2 | |||
| R4: Repair Flow | | R4: Repair Flow | |||
Figure 2: Example scenario with two FEC Framework instances, each | Figure 2: Example scenario with two FEC Framework instances, each | |||
with a single repair flow protecting the same source flow S3 | with a single repair flow protecting the same source flow S3 | |||
In summary, based on the FEC Framework [I-D.ietf-fecframe-framework], | In summary, based on the FEC Framework [I-D.ietf-fecframe-framework], | |||
the SDP grouping semantics for FEC MUST support the ability to | the SDP grouping semantics for FEC must support the ability to | |||
indicate that: | indicate that: | |||
1. A given source flow is protected by multiple different FEC | 1. A given source flow is protected by multiple different FEC | |||
schemes. | schemes. | |||
2. Multiple repair flows are associated with a given FEC scheme. | 2. Multiple repair flows are associated with a given FEC scheme. | |||
3. Multiple source flows are grouped prior to applying FEC | 3. Multiple source flows are grouped prior to applying FEC | |||
protection. | protection. | |||
skipping to change at page 6, line 14 | skipping to change at page 6, line 14 | |||
[I-D.ietf-mmusic-rfc3388bis] updates [RFC3388] to allow an "m" line | [I-D.ietf-mmusic-rfc3388bis] updates [RFC3388] to allow an "m" line | |||
identified by its 'mid' attribute to appear in more than one | identified by its 'mid' attribute to appear in more than one | |||
"a=group" line using the same semantics. With this change and other | "a=group" line using the same semantics. With this change and other | |||
required changes in the grouping semantics for FEC, a sender is | required changes in the grouping semantics for FEC, a sender is | |||
allowed to indicate the specific associations between the source and | allowed to indicate the specific associations between the source and | |||
repair flows, and a receiver can determine which repair flow(s) | repair flows, and a receiver can determine which repair flow(s) | |||
protect which source flow(s). | protect which source flow(s). | |||
This document introduces the changes required in the FEC grouping | This document introduces the changes required in the FEC grouping | |||
semantics and obsoletes [RFC4756]. | semantics and updates [RFC4756]. New implementations SHOULD use the | |||
new semantics introduced in this document whenever possible, but they | ||||
may need to use [RFC4756] semantics when backward compatibility is | ||||
desired, as described in Section 4.4. | ||||
3.2. Support for Additivity | 3.2. Support for Additivity | |||
The FEC Framework also supports additive repair flows. Additivity | The FEC Framework also supports additive repair flows. Additivity | |||
among the repair flows means that multiple repair flows may be | among the repair flows means that multiple repair flows may be | |||
decoded jointly to improve the recovery chances of the missing | decoded jointly to improve the recovery chances of the missing | |||
packets in a single or the same set of source flows. Additive repair | packets in a single or the same set of source flows. Additive repair | |||
flows can be generated by the same FEC scheme or different FEC | flows can be generated by the same FEC scheme or different FEC | |||
schemes. | schemes. | |||
skipping to change at page 7, line 4 | skipping to change at page 7, line 7 | |||
4.1. New Grouping Semantics | 4.1. New Grouping Semantics | |||
Each "a=group" line is used to indicate an association relationship | Each "a=group" line is used to indicate an association relationship | |||
between the source and repair flows. The flows included in one | between the source and repair flows. The flows included in one | |||
"a=group" line are called an FEC Group. If there are more than one | "a=group" line are called an FEC Group. If there are more than one | |||
repair flows included in an FEC group, they MUST be considered to be | repair flows included in an FEC group, they MUST be considered to be | |||
additive. Repair flows that are not additive MUST be indicated in | additive. Repair flows that are not additive MUST be indicated in | |||
separate FEC groups. However, if two (or more) repair flows are | separate FEC groups. However, if two (or more) repair flows are | |||
additive in an FEC group, it does not necessarily mean that these | additive in an FEC group, it does not necessarily mean that these | |||
repair flows will also be additive in any other FEC group. | repair flows will also be additive in any other FEC group. | |||
Generally, in order to express multiple relations between the source | Generally, in order to express multiple relations between the source | |||
and repair flows, each source and repair flow MAY appear in more than | and repair flows, each source and repair flow MAY appear in more than | |||
one FEC group. | one FEC group. | |||
By extending [I-D.ietf-mmusic-rfc3388bis] we define "FEC-XR" as the | By extending [I-D.ietf-mmusic-rfc3388bis] we define "FEC-FR" as the | |||
new grouping semantics that can support the features of the FEC | new grouping semantics that can support the features of the FEC | |||
Framework. | Framework. | |||
The "a=group:FEC-XR" semantics MUST always be used to associate the | The "a=group:FEC-FR" semantics MUST always be used to associate the | |||
source and repair flows except when the source and repair flows are | source and repair flows except when the source and repair flows are | |||
specified in the same media description, i.e., in the same "m" line. | specified in the same media description, i.e., in the same "m" line. | |||
Note that additivity is not necessarily a transitive relation. Thus, | ||||
each set of additive repair flows MUST be stated explicitly. | ||||
4.2. SDP Example | 4.2. SDP Example | |||
For the scenario sketched in Figure 1, we MUST write the following | For the scenario sketched in Figure 1, we need to write the following | |||
SDP: | SDP: | |||
v=0 | v=0 | |||
o=ali 1122334455 1122334466 IN IP4 fec.example.com | o=ali 1122334455 1122334466 IN IP4 fec.example.com | |||
s=New FEC Grouping Semantics | s=New FEC Grouping Semantics | |||
t=0 0 | t=0 0 | |||
a=group:FEC-XR S1 R1 | a=group:FEC-FR S1 R1 | |||
a=group:FEC-XR S1 S2 R2 | a=group:FEC-FR S1 S2 R2 | |||
m=video 30000 RTP/AVP 100 | m=video 30000 RTP/AVP 100 | |||
c=IN IP4 233.252.0.1/127 | c=IN IP4 233.252.0.1/127 | |||
a=rtpmap:100 MP2T/90000 | a=rtpmap:100 MP2T/90000 | |||
a=mid:S1 | a=mid:S1 | |||
m=video 30000 RTP/AVP 101 | m=video 30000 RTP/AVP 101 | |||
c=IN IP4 233.252.0.2/127 | c=IN IP4 233.252.0.2/127 | |||
a=rtpmap:101 MP2T/90000 | a=rtpmap:101 MP2T/90000 | |||
a=mid:S2 | a=mid:S2 | |||
m=application 30000 RTP/AVP 110 | m=application 30000 RTP/AVP 110 | |||
c=IN IP4 233.252.0.3/127 | c=IN IP4 233.252.0.3/127 | |||
skipping to change at page 7, line 49 | skipping to change at page 8, line 32 | |||
a=fmtp:110 L=5; D=10; repair-window=200000 | a=fmtp:110 L=5; D=10; repair-window=200000 | |||
a=mid:R1 | a=mid:R1 | |||
m=application 30000 RTP/AVP 111 | m=application 30000 RTP/AVP 111 | |||
c=IN IP4 233.252.0.4/127 | c=IN IP4 233.252.0.4/127 | |||
a=rtpmap:111 1d-interleaved-parityfec/90000 | a=rtpmap:111 1d-interleaved-parityfec/90000 | |||
a=fmtp:111 L=10; D=10; repair-window=400000 | a=fmtp:111 L=10; D=10; repair-window=400000 | |||
a=mid:R2 | a=mid:R2 | |||
In this example, the source and repair flows are carried in their own | In this example, the source and repair flows are carried in their own | |||
RTP sessions and the grouping is achieved through the "a=group: | RTP sessions and the grouping is achieved through the "a=group: | |||
FEC-XR" lines. | FEC-FR" lines. | |||
For the additivity issues, let us consider the scenario sketched in | For the additivity issues, let us consider the scenario sketched in | |||
Figure 3. Suppose that repair flows R5 and R6 are additive but | Figure 3. Suppose that repair flows R5 and R6 are additive but | |||
repair flow R7 is not additive with any of the other repair flows. | repair flow R7 is not additive with any of the other repair flows. | |||
In this case, we MUST write | In this case, we must write | |||
a=group:FEC-XR S4 R5 R6 | ||||
a=group:FEC-XR S4 R7 | ||||
If none of the repair flows are additive, we MUST write | a=group:FEC-FR S4 R5 R6 | |||
a=group:FEC-FR S4 R7 | ||||
a=group:FEC-XR S4 R5 | If none of the repair flows are additive, we must write | |||
a=group:FEC-XR S4 R6 | ||||
a=group:FEC-XR S4 R7 | ||||
Note that additivity is not necessarily a transitive relation. Thus, | a=group:FEC-FR S4 R5 | |||
each set of additive repair flows MUST be stated explicitly. | a=group:FEC-FR S4 R6 | |||
a=group:FEC-FR S4 R7 | ||||
4.3. Grouping for SSRC-Multiplexed RTP Streams | 4.3. Grouping for SSRC-Multiplexed RTP Streams | |||
[RFC5576] defines a grouping attribute, called 'ssrc-group', for the | [RFC5576] defines a grouping attribute, called 'ssrc-group', for the | |||
RTP streams that are SSRC multiplexed and carried in the same RTP | RTP streams that are SSRC multiplexed and carried in the same RTP | |||
session. The grouping is based on the Synchronization Source (SSRC) | session. The grouping is based on the Synchronization Source (SSRC) | |||
identifiers. Since SSRC-multiplexed RTP streams are defined in the | identifiers. Since SSRC-multiplexed RTP streams are defined in the | |||
same "m" line, the 'group' attribute cannot be used. | same "m" line, the 'group' attribute cannot be used. | |||
This document extends [RFC5576] in two ways. First, we define how | This document extends [RFC5576] in two ways. First, we define how | |||
FEC is applied to source and repair flows for SSRC-multiplexed | FEC is applied to source and repair flows for SSRC-multiplexed | |||
streams using the 'ssrc-group' attribute. We then specify how the | streams using the 'ssrc-group' attribute. We then specify how the | |||
additivity of the repair flows is expressed for the SSRC-multiplexed | additivity of the repair flows is expressed for the SSRC-multiplexed | |||
streams. | streams. | |||
Per [RFC3550], the SSRC identifiers for the RTP streams that are | Per [RFC3550], the SSRC identifiers for the RTP streams that are | |||
carried in the same RTP session MUST be unique. However, the SSRC | carried in the same RTP session MUST be unique. However, the SSRC | |||
identifiers are not guaranteed to be unique among different RTP | identifiers are not guaranteed to be unique among different RTP | |||
sessions. Thus, the 'ssrc-group' attribute MUST only be used at the | sessions. Thus, the 'ssrc-group' attribute MUST only be used at the | |||
media level [RFC5576]. The semantics of "FEC-XR" for the 'ssrc- | media level [RFC5576]. The semantics of "FEC-FR" for the 'ssrc- | |||
group' attribute is exactly the same as the one defined for the | group' attribute is exactly the same as the one defined for the | |||
'group' attribute. | 'group' attribute. | |||
Let us consider the following scenario where there are two source | Let us consider the following scenario where there are two source | |||
flows (e.g., one video and one audio) and a single repair flow that | flows (e.g., one video and one audio) and a single repair flow that | |||
protects only one of the source flows (e.g., video). Suppose that | protects only one of the source flows (e.g., video). Suppose that | |||
all these flows are separate RTP streams that are SSRC multiplexed in | all these flows are separate RTP streams that are SSRC multiplexed in | |||
the same RTP session. | the same RTP session. | |||
SOURCE FLOWS | FEC FRAMEWORK INSTANCE #1 | SOURCE FLOWS | FEC FRAMEWORK INSTANCE #1 | |||
skipping to change at page 9, line 27 | skipping to change at page 10, line 18 | |||
t=0 0 | t=0 0 | |||
m=video 30000 RTP/AVP 100 101 110 | m=video 30000 RTP/AVP 100 101 110 | |||
c=IN IP4 233.252.0.1/127 | c=IN IP4 233.252.0.1/127 | |||
a=rtpmap:100 JPEG/90000 | a=rtpmap:100 JPEG/90000 | |||
a=rtpmap:101 L16/32000/2 | a=rtpmap:101 L16/32000/2 | |||
a=rtpmap:110 1d-interleaved-parityfec/90000 | a=rtpmap:110 1d-interleaved-parityfec/90000 | |||
a=fmtp:110 L=5; D=10; repair-window=200000 | a=fmtp:110 L=5; D=10; repair-window=200000 | |||
a=ssrc:1000 cname:fec@example.com | a=ssrc:1000 cname:fec@example.com | |||
a=ssrc:1010 cname:fec@example.com | a=ssrc:1010 cname:fec@example.com | |||
a=ssrc:2110 cname:fec@example.com | a=ssrc:2110 cname:fec@example.com | |||
a=ssrc-group:FEC-XR 1000 2110 | a=ssrc-group:FEC-FR 1000 2110 | |||
a=mid:Group1 | a=mid:Group1 | |||
Note that in actual use, SSRC values, which are random 32-bit | Note that in actual use, SSRC values, which are random 32-bit | |||
numbers, may be much larger than the ones shown in this example. | numbers, may be much larger than the ones shown in this example. | |||
Also note that before receiving an RTP packet for each stream, the | Also note that before receiving an RTP packet for each stream, the | |||
receiver cannot know which SSRC identifier is associated with which | receiver cannot know which SSRC identifier is associated with which | |||
payload type. | payload type. | |||
The additivity of the repair flows is handled in the same way as | The additivity of the repair flows is handled in the same way as | |||
described in Section 4.2. In other words, the repair flows that are | described in Section 4.2. In other words, the repair flows that are | |||
skipping to change at page 9, line 49 | skipping to change at page 10, line 40 | |||
that are not additive MUST be indicated in separate "a=ssrc-group" | that are not additive MUST be indicated in separate "a=ssrc-group" | |||
lines. | lines. | |||
4.4. SDP Offer-Answer Model and Backward Compatibility Considerations | 4.4. SDP Offer-Answer Model and Backward Compatibility Considerations | |||
When offering FEC grouping using SDP in an Offer/Answer model | When offering FEC grouping using SDP in an Offer/Answer model | |||
[RFC3264], the following considerations apply. | [RFC3264], the following considerations apply. | |||
A node that is receiving an offer from a sender may or may not | A node that is receiving an offer from a sender may or may not | |||
understand line grouping. It is also possible that the node | understand line grouping. It is also possible that the node | |||
understands line grouping but it does not understand the "FEC-XR" | understands line grouping but it does not understand the "FEC-FR" | |||
semantics. From the viewpoint of the sender of the offer, these | semantics. From the viewpoint of the sender of the offer, these | |||
cases are indistinguishable. | cases are indistinguishable. | |||
When a node is offered a session with the "FEC-XR" grouping semantics | When a node is offered a session with the "FEC-FR" grouping semantics | |||
but it does not support line grouping or the FEC grouping semantics, | but it does not support line grouping or the FEC grouping semantics, | |||
the node SHOULD respond to the offer either: | the node SHOULD respond to the offer either: | |||
o With an answer that ignores the grouping attribute. | o With an answer that ignores the grouping attribute. | |||
In this case, the original sender of the offer MUST first check | In this case, the original sender of the offer MUST first check | |||
whether using the "FEC" grouping semantics will create any | whether using the "FEC" grouping semantics will create any | |||
ambiguity or not, while keeping its limitations in mind. If using | ambiguity or not, while keeping its limitations in mind. If using | |||
the "FEC" semantics rather than the "FEC-XR" semantics still | the "FEC" semantics rather than the "FEC-FR" semantics still | |||
provides an exact association among the source and repair flows, | provides an exact association among the source and repair flows, | |||
the sender of the offer MUST send a new offer using the "FEC" | the sender of the offer MUST send a new offer using the "FEC" | |||
semantics. However, if an exact association cannot be described, | semantics. However, if an exact association cannot be described, | |||
the sender MUST send a new offer without FEC. | the sender MUST send a new offer without FEC. | |||
o With a refusal to the request (e.g., 488 Not Acceptable Here or | o With a refusal to the request (e.g., 488 Not Acceptable Here or | |||
606 Not Acceptable in SIP). | 606 Not Acceptable in SIP). | |||
In this case, if the sender of the offer still wishes to establish | In this case, if the sender of the offer still wishes to establish | |||
the session, it MUST first check whether using the "FEC" grouping | the session, it MUST first check whether using the "FEC" grouping | |||
semantics will create any ambiguity or not, while keeping its | semantics will create any ambiguity or not, while keeping its | |||
limitations in mind. If using the "FEC" semantics rather than the | limitations in mind. If using the "FEC" semantics rather than the | |||
"FEC-XR" semantics still provides an exact association among the | "FEC-FR" semantics still provides an exact association among the | |||
source and repair flows, the sender of the offer SHOULD send a new | source and repair flows, the sender of the offer SHOULD send a new | |||
offer using the "FEC" semantics. However, if an exact association | offer using the "FEC" semantics. However, if an exact association | |||
cannot be described, the sender SHOULD send a new offer without | cannot be described, the sender SHOULD send a new offer without | |||
FEC. | FEC. | |||
Note that in both cases described above, when the sender of the offer | Note that in both cases described above, when the sender of the offer | |||
sends a new offer with the "FEC" semantics, and the node understands | sends a new offer with the "FEC" semantics, and the node understands | |||
it, the session will be established and the rules pertaining to | it, the session will be established and the rules pertaining to | |||
[RFC4756] will be valid. | [RFC4756] will apply. | |||
However, if the node does not understand the "FEC" semantics, it | However, if the node does not understand the "FEC" semantics, it | |||
SHOULD respond to the offer either (1) with an answer that ignores | SHOULD respond to the offer either (1) with an answer that ignores | |||
the grouping attribute, or (2) with a refusal to the request. In the | the grouping attribute, or (2) with a refusal to the request. In the | |||
first case, the sender MUST send a new offer without FEC. In the | first case, the sender MUST send a new offer without FEC. In the | |||
second case, if the sender of the offer still wishes to establish the | second case, if the sender of the offer still wishes to establish the | |||
session, it SHOULD retry the request with an offer without FEC. | session, it SHOULD retry the request with an offer without FEC. | |||
4.5. ABNF Syntax | 4.5. ABNF Syntax | |||
Note to the RFC Editor: In the following, please replace "XXXX" with | Note to the RFC Editor: In the following, please replace "XXXX" with | |||
the number of this document prior to publication as an RFC. | the number of this document prior to publication as an RFC. | |||
A new semantics ("FEC-XR") is defined for the 'group' attribute | A new semantics ("FEC-FR") is defined for the 'group' attribute | |||
[I-D.ietf-mmusic-rfc3388bis]. Its formatting in SDP is described by | [I-D.ietf-mmusic-rfc3388bis]. Its formatting in SDP is described by | |||
the following ABNF [RFC5234]: | the following ABNF [RFC5234]: | |||
group-attribute = "a=group:" semantics | group-attribute = "a=group:" semantics | |||
*(space identification-tag) | *(space identification-tag) | |||
semantics = "LS" / "FID" / | semantics = "LS" / "FID" / | |||
"FEC" / ; from [RFC4756] for backward | "FEC" / ; from [RFC4756] for backward | |||
; compatibility | ; compatibility | |||
"FEC-XR" ; from [RFCXXXX] | "FEC-FR" ; from [RFCXXXX] | |||
identification-tag = token | identification-tag = token | |||
The identification tags MUST be unique within an SDP session | The identification tags MUST be unique within an SDP session | |||
description. | description. | |||
5. Security Considerations | 5. Security Considerations | |||
There is a weak threat for the receiver that the FEC grouping can be | There is a weak threat for the receiver that the FEC grouping can be | |||
modified to indicate FEC relationships that do not exist. Such | modified to indicate FEC relationships that do not exist. Such | |||
skipping to change at page 11, line 37 | skipping to change at page 12, line 37 | |||
6. IANA Considerations | 6. IANA Considerations | |||
This document registers the following semantics with IANA in | This document registers the following semantics with IANA in | |||
Semantics for the 'group' SDP Attribute under SDP Parameters: | Semantics for the 'group' SDP Attribute under SDP Parameters: | |||
Note to the RFC Editor: In the following, please replace "XXXX" with | Note to the RFC Editor: In the following, please replace "XXXX" with | |||
the number of this document prior to publication as an RFC. | the number of this document prior to publication as an RFC. | |||
Semantics Token Reference | Semantics Token Reference | |||
--------------------------- ------ --------- | --------------------------- ------ --------- | |||
Forward Error Correction XR FEC-XR [RFCXXXX] | Forward Error Correction FR FEC-FR [RFCXXXX] | |||
This document also registers the following semantics with IANA in | This document also registers the following semantics with IANA in | |||
Semantics for the 'ssrc-group' SDP Attribute under SDP Parameters: | Semantics for the 'ssrc-group' SDP Attribute under SDP Parameters: | |||
Semantics Token Reference | Semantics Token Reference | |||
--------------------------- ------ --------- | --------------------------- ------ --------- | |||
Forward Error Correction XR FEC-XR [RFCXXXX] | Forward Error Correction FR FEC-FR [RFCXXXX] | |||
7. Acknowledgments | 7. Acknowledgments | |||
Some parts of this document are based on [RFC4756]. Thus, the author | Some parts of this document are based on [RFC4756]. Thus, the author | |||
would like to thank those who contributed to [RFC4756]. Also, thanks | would like to thank those who contributed to [RFC4756]. Also, thanks | |||
to Jonathan Lennox who has contributed to Section 4.3. | to Jonathan Lennox who has contributed to Section 4.3. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session | [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session | |||
Description Protocol", RFC 4566, July 2006. | Description Protocol", RFC 4566, July 2006. | |||
[I-D.ietf-mmusic-rfc3388bis] | [I-D.ietf-mmusic-rfc3388bis] | |||
Camarillo, G., "The SDP (Session Description Protocol) | Camarillo, G. and H. Schulzrinne, "The SDP (Session | |||
Grouping Framework", draft-ietf-mmusic-rfc3388bis-03 (work | Description Protocol) Grouping Framework", | |||
in progress), July 2009. | draft-ietf-mmusic-rfc3388bis-04 (work in progress), | |||
November 2009. | ||||
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | |||
with Session Description Protocol (SDP)", RFC 3264, | with Session Description Protocol (SDP)", RFC 3264, | |||
June 2002. | June 2002. | |||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Jacobson, "RTP: A Transport Protocol for Real-Time | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
Applications", STD 64, RFC 3550, July 2003. | Applications", STD 64, RFC 3550, July 2003. | |||
[RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific | [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific | |||
skipping to change at page 13, line 8 | skipping to change at page 14, line 8 | |||
[RFC4756] Li, A., "Forward Error Correction Grouping Semantics in | [RFC4756] Li, A., "Forward Error Correction Grouping Semantics in | |||
Session Description Protocol", RFC 4756, November 2006. | Session Description Protocol", RFC 4756, November 2006. | |||
[RFC3388] Camarillo, G., Eriksson, G., Holler, J., and H. | [RFC3388] Camarillo, G., Eriksson, G., Holler, J., and H. | |||
Schulzrinne, "Grouping of Media Lines in the Session | Schulzrinne, "Grouping of Media Lines in the Session | |||
Description Protocol (SDP)", RFC 3388, December 2002. | Description Protocol (SDP)", RFC 3388, December 2002. | |||
Author's Address | Author's Address | |||
Ali Begen | Ali Begen | |||
Cisco Systems | Cisco | |||
170 West Tasman Drive | 170 West Tasman Drive | |||
San Jose, CA 95134 | San Jose, CA 95134 | |||
USA | USA | |||
Email: abegen@cisco.com | Email: abegen@cisco.com | |||
End of changes. 36 change blocks. | ||||
72 lines changed or deleted | 76 lines changed or added | |||
This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |