RFC 7104
Duplication Grouping Semantics in the Session Description Protocol
RFC 7104: Duplication Grouping Semantics in SDP π
Internet Engineering Task Force (IETF) πΈ Authors: A. Begen (Cisco), Y. Cai (Microsoft), H. Ou (Cisco) π«Ά Category: Standards Track β¨ (this is an actual Internet Standards Track doc, so it's official, bestie π ) ISSN: 2070-1721 Date: January 2014 π Obsoletes/Updates: The title block doesn't list anything it obsoletes or updates π¦
Packet loss is a real problem for live multimedia, and it can come from congestion or from random network outages. It gets especially messy with IP multicast, because different receivers can see totally different loss patterns π. One way to recover from loss without making everyone wait forever is to duplicate the packets and send them down separate redundant streams. This doc defines how those redundant streams get grouped in the Session Description Protocol (SDP) π. It's meant to be used with the SDP Grouping Framework, and it also covers grouping at the Synchronization Source (SSRC) level for RTP streams that use SSRC multiplexing π.
Status of This Memo π
This is an Internet Standards Track document π₯.
It's a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). For more on Internet Standards, check out Section 2 of RFC 5741 π§.
You can find info about this document's current status, any errata, and how to send feedback at http://www.rfc-editor.org/info/rfc7104 π.
Copyright Notice βοΈ
Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved π.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the publication date. Please actually read these, because they spell out your rights and restrictions for this doc π. Any Code Components pulled out of this document must include the Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions. They're also provided without warranty, as described in the Simplified BSD License π«Ά.
Table of Contents π
1. Introduction ....................................................2
2. Requirements Notation ...........................................3
3. Duplication Grouping ............................................3
3.1. "DUP" Grouping Semantics ...................................3
3.2. Duplication Grouping for SSRC-Multiplexed RTP Streams ......3
3.3. SDP Offer/Answer Model Considerations ......................4
4. SDP Examples ....................................................5
4.1. Separate Source Addresses ..................................5
4.2. Separate Destination Addresses .............................6
4.3. Temporal Redundancy ........................................7
5. Security Considerations .........................................7
6. IANA Considerations .............................................8
7. Acknowledgments .................................................8
8. References ......................................................8
8.1. Normative References .......................................8
8.2. Informative References .....................................9
1. Introduction π¦
The Real-time Transport Protocol (RTP) [RFC3550] is everywhere right now for IPTV and other real-time multimedia sessions πΊ. A lot of these apps have huge numbers of receivers, and they lean on intra-domain UDP/IP multicast to get traffic around the network efficiently π.
That combo has been super successful, but there's one weakness π¬. As [RFC2354] pointed out, packet loss is unavoidable, even in a network that's carefully managed. The loss could come from congestion. It could also be an unplanned outage, like a flapping link, a link or interface failure, a software bug, or a maintenance person accidentally cutting the wrong fiber π. UDP/IP flows don't give you any way to detect loss or retransmit packets, so it's up to the RTP layer and the applications to detect loss and recover from it π« .
One technique for recovering from loss without making all the receivers wait forever is to duplicate the packets and send them in separate redundant streams β¨. People have implemented and deployed variations of this idea already [IC2011]. [RTP-DUP] explains how to do duplication for RTP streams without breaking RTP or RTP Control Protocol (RTCP) functionality π . In this document, we describe the semantics that the Session Description Protocol (SDP) [RFC4566] needs to support this technique π.
2. Requirements Notation π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] π§ .
3. Duplication Grouping π
3.1. "DUP" Grouping Semantics π
Each "a=group" line is used to show an association between the redundant streams. The streams listed on one "a=group" line are called a "Duplication Group" π«Ά.
Using the SDP Grouping Framework from [RFC5888], this document defines "DUP" as the grouping semantics for redundant streams β¨.
The "a=group:DUP" semantics MUST be used to group the redundant streams, except when the streams are specified in the same media description, i.e., in the same "m" line (see Section 3.2) π ββοΈ. In an "a=group:DUP" line, the order of the listed redundant streams doesn't strictly show the order of transmission. That said, it is RECOMMENDED that the stream listed first be sent first, with the other stream(s) being the (time-delayed) duplicate(s) π₯.
3.2. Duplication Grouping for SSRC-Multiplexed RTP Streams π
[RFC5576] defines an SDP media-level attribute called "ssrc-group" for grouping RTP streams that are SSRC multiplexed and carried in the same RTP session π§. The grouping is based on the SSRC identifiers. Since SSRC-multiplexed RTP streams are defined in the same "m" line, the "group" attribute can't be used π.
This section explains how duplication works with SSRC-multiplexed streams using the "ssrc-group" attribute [RFC5576] π.
The semantics of "DUP" for the "ssrc-group" attribute are the same as the ones defined for the "group" attribute, except that SSRC identifiers are used to designate the duplication grouping associations: a=ssrc-group:DUP *(SP ssrc-id) [RFC5576]. Same as above, the order of the listed redundant streams in an "a=ssrc-group:DUP" line doesn't necessarily show the order of transmission. But it is RECOMMENDED that the stream listed first be sent first, with the other stream(s) being the (time-delayed) duplicate(s) π.
3.3. SDP Offer/Answer Model Considerations π€
When you offer duplication grouping using SDP in an offer/answer model [RFC3264], the following considerations apply π.
A node that receives an offer from a sender may or may not understand line grouping. It's also possible that the node understands line grouping but doesn't understand the "DUP" semantics. From the offerer's point of view, these cases look exactly the same π€·ββοΈ.
When a node gets offered a session with the "DUP" grouping semantics but doesn't support line grouping or the duplication grouping semantics, per [RFC5888], the node responds to the offer in one of two ways: (1) with an answer that omits the grouping attribute, or (2) with a refusal to the request (e.g., "488 Not Acceptable Here" or "606 Not Acceptable in SIP") π ββοΈ.
In the first case, the original sender of the offer must send a new offer without any duplication grouping. In the second case, if the sender of the offer still wants to establish the session, it should retry the request with an offer that doesn't include the duplication grouping. This behavior is specified in [RFC5888] π« .
4. SDP Examples π
4.1. Separate Source Addresses πΈ
In this example, the redundant streams use the same IP destination address (232.252.0.1), but they're sourced from different addresses (198.51.100.1 and 198.51.100.2). So the receiving host needs to join both source-specific multicast (SSM) sessions separately π¦.
v=0
o=ali 1122334455 1122334466 IN IP4 dup.example.com
s=DUP Grouping Semantics
t=0 0
m=video 30000 RTP/AVP 100
c=IN IP4 233.252.0.1/127
a=source-filter:incl IN IP4 233.252.0.1 198.51.100.1 198.51.100.2
a=rtpmap:100 MP2T/90000
a=ssrc:1000 cname:ch1@example.com
a=ssrc:1010 cname:ch1@example.com
a=ssrc-group:DUP 1000 1010
a=mid:Ch1
Real-world SSRC values are random 32-bit numbers, so they can be way bigger than the ones in this example π’. Also, this SDP description doesn't use the "duplication-delay" attribute (defined in [DELAYED-DUP]), because the sender doesn't apply any delay between the redundant streams when it transmits π ββοΈ. Alternatively, one MAY explicitly insert an "a=duplication-delay:0" line before the "a=mid:Ch1" line for informational purposes π .
4.2. Separate Destination Addresses π
In this example, the redundant streams have different IP destination addresses. The example shows the same UDP port number and IP source address for each stream, but either or both could be different for the two streams π§.
v=0
o=ali 1122334455 1122334466 IN IP4 dup.example.com
s=DUP Grouping Semantics
t=0 0
a=group:DUP S1a S1b
m=video 30000 RTP/AVP 100
c=IN IP4 233.252.0.1/127
a=source-filter:incl IN IP4 233.252.0.1 198.51.100.1
a=rtpmap:100 MP2T/90000
a=mid:S1a
m=video 30000 RTP/AVP 101
c=IN IP4 233.252.0.2/127
a=source-filter:incl IN IP4 233.252.0.2 198.51.100.1
a=rtpmap:101 MP2T/90000
a=mid:S1b
Optionally, you could be more explicit and insert an "a=duplication-delay:0" line before the first "m" line π.
4.3. Temporal Redundancy β°
In this example, the redundant streams have the same IP source and destination addresses (i.e., they're transmitted in the same SSM session). Because the source and destination addresses match, the packets in both streams get routed over the same path π€οΈ. To protect against packet loss, the duplicate of an original packet is transmitted 50 milliseconds (ms) later, as indicated by the "duplication-delay" attribute (defined in [DELAYED-DUP]) β³.
v=0
o=ali 1122334455 1122334466 IN IP4 dup.example.com
s=Delayed Duplication
t=0 0
m=video 30000 RTP/AVP 100
c=IN IP4 233.252.0.1/127
a=source-filter:incl IN IP4 233.252.0.1 198.51.100.1
a=rtpmap:100 MP2T/90000
a=ssrc:1000 cname:ch1a@example.com
a=ssrc:1010 cname:ch1a@example.com
a=ssrc-group:DUP 1000 1010
a=duplication-delay:50
a=mid:Ch1
5. Security Considerations β¨
okay so bestie, the security section is where we get a little serious π«Ά but we're still gonna keep it cute! the big takeaway is that the general security considerations of [RFC4566] apply here too, no cap π
there's a weak threat for the receiver where somebody could mess with the duplication grouping so it points at relationships that don't actually exist π that could make the duplication mechanisms fail and/or make receivers mishandle the media streams. not it!! π
so to avoid that drama, the SDP description needs to be integrity protected AND have source authentication π one way to do that end-to-end is S/MIME [RFC5652] [RFC5751] when the SDP is carried in a signaling packet using MIME types (application/sdp). you could also use HTTPS [RFC2818] or the authentication method in the Session Announcement Protocol (SAP) [RFC2974]. and if you want confidentiality too, it can be super useful to use a secure, encrypted transport method to carry the SDP description π
6. IANA Considerations πΈ
okay this part is all about registering stuff with IANA, aka the Internet Assigned Numbers Authority, who keeps the official lists π
first up, this document registers the following semantics in the "Semantics for the "group" SDP Attribute" subregistry (under the "Session Description Protocol (SDP) Parameters" registry):
Semantics Token Reference
------------------------------------- ------ ---------
Duplication DUP [RFC7104]
and this document also registers the following semantics in the "Semantics for the "ssrc-group" SDP Attribute" subregistry under the "Session Description Protocol (SDP) Parameters" registry:
Token Semantics Reference
------- ----------------------------- ---------
DUP Duplication [RFC7104]
7. Acknowledgments π§
the authors wanna thank Colin Perkins, Bill Ver Steeg, Dave Oran, and Toerless Eckert for their input and suggestions π the people who helped make this happen are literally the real MVPs π
8. References π
8.1. Normative References π
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002.
- [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003.
- [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006.
- [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific Media Attributes in the Session Description Protocol (SDP)", RFC 5576, June 2009.
- [RFC5888] Camarillo, G. and H. Schulzrinne, "The Session Description Protocol (SDP) Grouping Framework", RFC 5888, June 2010.
8.2. Informative References π¦
- [DELAYED-DUP] Begen, A., Cai, Y., and H. Ou, "Delayed Duplication Attribute in the Session Description Protocol", Work in Progress, December 2013.
- [IC2011] Evans, J., Begen, A., Greengrass, J., and C. Filsfils, "Toward Lossless Video Transport, IEEE Internet Computing, vol. 15/6, pp. 48-57", November 2011.
- [RFC2354] Perkins, C. and O. Hodson, "Options for Repair of Streaming Media", RFC 2354, June 1998.
- [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
- [RFC2974] Handley, M., Perkins, C., and E. Whelan, "Session Announcement Protocol", RFC 2974, October 2000.
- [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, September 2009.
- [RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2 Message Specification", RFC 5751, January 2010.
- [RTP-DUP] Begen, A. and C. Perkins, "Duplicating RTP Streams", Work in Progress, October 2013.
Authors' Addresses π
Ali Begen
Cisco
181 Bay Street
Toronto, ON M5J 2T3
Canada
EMail: abegen@cisco.com
Yiqun Cai
Microsoft
1065 La Avenida
Mountain View, CA 94043
USA
EMail: yiqunc@microsoft.com
Heidi Ou
Cisco
170 W. Tasman Dr.
San Jose, CA 95134
USA
EMail: hou@cisco.com
π¦ where this page comes from
- ietf: rfc7104 2014-01
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms