draft-ietf-mmusic-media-loopback-16.txt | draft-ietf-mmusic-media-loopback-17.txt | |||
---|---|---|---|---|
Internet Draft K. Hedayat | Internet Draft H. Kaplan (ed.) | |||
Expires: March 6, 2012 EXFO | Expires: August 12, 2012 Acme Packet | |||
K. Hedayat | ||||
EXFO | ||||
N. Venna | N. Venna | |||
Saperix | Saperix | |||
P. Jones | P. Jones | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
A. Roychowdhury | A. Roychowdhury | |||
Hughes Systique Corp. | Hughes Systique Corp. | |||
C. SivaChelvan | C. SivaChelvan | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
N. Stratton | N. Stratton | |||
BlinkMind, Inc. | BlinkMind, Inc. | |||
September 6, 2011 | March 10, 2012 | |||
An Extension to the Session Description Protocol (SDP) for Media | An Extension to the Session Description Protocol (SDP) for Media | |||
Loopback | Loopback | |||
draft-ietf-mmusic-media-loopback-16 | draft-ietf-mmusic-media-loopback-17 | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with | This Internet-Draft is submitted to IETF in full conformance with | |||
the provisions of BCP 78 and BCP 79. | the 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. The list of current Internet-Drafts is at | |||
http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six | Internet-Drafts are draft documents valid for a maximum of six | |||
months and may be updated, replaced, or obsoleted by other | months and may be updated, replaced, or obsoleted by other | |||
documents at any time. It is inappropriate to use Internet-Drafts | documents at any time. It is inappropriate to use Internet-Drafts | |||
as reference material or to cite them other than as "work in | as reference material or to cite them other than as "work in | |||
progress." | 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 March 6, 2012. | This Internet-Draft will expire on August 12, 2012. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2009 IETF Trust and the persons identified as the | ||||
Copyright (c) 2012 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | carefully, as they describe your rights and restrictions with | |||
respect to this document. Code Components extracted from this | respect to this document. Code Components extracted from this | |||
document must include Simplified BSD License text as described in | document must include Simplified BSD License text as described in | |||
Section 4.e of the Trust Legal Provisions and are provided without | Section 4.e of the Trust Legal Provisions and are provided without | |||
warranty as described in the BSD License. | warranty as described in the Simplified BSD License. | |||
Abstract | Abstract | |||
The wide deployment of Voice over IP (VoIP), Real-time Text and | The wide deployment of Voice over IP (VoIP), Text and Video over IP | |||
Video over IP services has introduced new challenges in managing | services has introduced new challenges in managing and maintaining | |||
and maintaining voice/real-time Text/video quality, reliability, | real-time voice/real-time Text/video quality, reliability, and | |||
and overall performance. In particular, media delivery is an area | overall performance. In particular, media delivery is an area that | |||
that needs attention. One method of meeting these challenges is | needs attention. One method of meeting these challenges is | |||
monitoring the media delivery performance by looping media back to | monitoring the media delivery performance by looping media back to | |||
the transmitter. This is typically referred to as "active | the transmitter. This is typically referred to as "active | |||
monitoring" of services. Media loopback is especially popular in | monitoring" of services. Media loopback is especially popular in | |||
ensuring the quality of transport to the edge of a given VoIP, | ensuring the quality of transport to the edge of a given VoIP, | |||
Real-time Text or Video over IP service. Today in networks that | Real-time Text or Video over IP service. Today in networks that | |||
deliver real-time media, short of running 'ping' and 'traceroute' | deliver real-time media, short of running 'ping' and 'traceroute' | |||
to the edge, service providers are left without the necessary tools | to the edge, service providers are left without the necessary tools | |||
to actively monitor, manage, and diagnose quality issues with their | to actively monitor, manage, and diagnose quality issues with their | |||
service. The extension defined herein adds new SDP media | service. The extension defined herein adds new SDP media | |||
attributes which enables establishment of media sessions where the | attributes which enables establishment of media sessions where the | |||
media is looped back to the transmitter. Such media sessions will | media is looped back to the transmitter. Such media sessions will | |||
serve as monitoring and troubleshooting tools by providing the | serve as monitoring and troubleshooting tools by providing the | |||
means for measurement of more advanced VoIP, Real-time Text and | means for measurement of more advanced VoIP, Real-time Text and | |||
Video over IP performance metrics. | Video over IP performance metrics. | |||
Table of Contents | Table of Contents | |||
1. Introduction .................................................. 3 | 1. Introduction..................................................3 | |||
1.1 Use Cases Supported ....................................... 4 | 1.1 Use Cases Supported.......................................4 | |||
2. Terminology ................................................... 6 | 2. Terminology...................................................5 | |||
3. Offering Entity Behavior ...................................... 6 | 3. Offering Entity Behavior......................................6 | |||
4. Answering Entity Behavior ..................................... 6 | 4. Answering Entity Behavior.....................................6 | |||
5. SDP Constructs Syntax ......................................... 6 | 5. SDP Constructs Syntax..............Error! Bookmark not defined. | |||
5.1 Loopback Type Attribute ................................... 6 | 5.1 Loopback Type Attribute...................................7 | |||
5.2 Loopback Mode Attribute ................................... 7 | 5.2 Loopback Mode Attribute...................................7 | |||
5.3 Generating the Offer for Loopback Session | 5.3 Generating the Offer for Loopback Session.................8 | |||
5.4 Generating the Answer for Loopback Session ................ 9 | 5.4 Generating the Answer for Loopback Session................9 | |||
5.5 Offerer Processing of the Answer ......................... 11 | 5.5 Offerer Processing of the Answer.........................11 | |||
5.6 Modifying the Session .................................... 11 | 5.6 Modifying the Session....................................11 | |||
5.7 Establishing Sessions Between Entities Behind NAT ........ 11 | 5.7 Establishing Sessions Between Entities Behind NAT........12 | |||
6. RTP Requirements ............................................. 11 | 6. RTP Requirements.............................................12 | |||
7. Payload formats for Packet loopback .......................... 12 | 7. Payload formats for Packet loopback..........................12 | |||
7.1 Encapsulated Payload format .............................. 12 | 7.1 Encapsulated Payload format..............................13 | |||
7.2 Direct loopback RTP payload format ....................... 15 | 7.2 Direct loopback RTP payload format.......................15 | |||
8. RTCP Requirements ............................................ 16 | 8. RTCP Requirements............................................16 | |||
9. Congestion Control ........................................... 16 | 9. Congestion Control...........................................17 | |||
10. Examples .................................................... 17 | 10. Examples....................................................17 | |||
10.1 Offer for specific media loopback type .................. 17 | 10.1 Offer for specific media loopback type..................17 | |||
10.2 Offer for choice of media loopback type ................. 17 | 10.2 Offer for choice of media loopback type.................18 | |||
10.3 Response to INVITE request rejecting loopback media ..... 18 | 10.3 Response to INVITE request rejecting loopback media.....19 | |||
11. Security Considerations ..................................... 19 | 11. Security Considerations.....................................19 | |||
12. Implementation Considerations ............................... 19 | 12. Implementation Considerations...............................20 | |||
13. IANA Considerations ......................................... 20 | 13. IANA Considerations.........................................20 | |||
13.1 SDP Attributes .......................................... 20 | 13.1 SDP Attributes..........................................20 | |||
13.2 MIME Types .............................................. 21 | 13.2 MIME Types..............................................21 | |||
14. Normative References ........................................ 30 | 14. Normative References........................................30 | |||
1. Introduction | 1. Introduction | |||
The overall quality, reliability, and performance of VoIP, | The overall quality, reliability, and performance of VoIP, | |||
Real-time Text and Video over IP services rely on the performance | Real-time Text and Video over IP services rely on the performance | |||
and quality of the media path. In order to assure the quality of | and quality of the media path. In order to assure the quality of | |||
the delivered media there is a need to monitor the performance of | the delivered media there is a need to monitor the performance of | |||
the media transport. One method of monitoring and managing the | the media transport. One method of monitoring and managing the | |||
overall quality of VoIP, Real-time Text and Video over IP Services | overall quality of real-time VoIP, Text and Video over IP Services | |||
is through monitoring the quality of the media in an active | is through monitoring the quality of the media in an active | |||
session. This type of "active monitoring" of services is a method | session. This type of "active monitoring" of services is a method | |||
of proactively managing the performance and quality of VoIP based | of proactively managing the performance and quality of VoIP based | |||
services. | services. | |||
The goal of active monitoring is to measure the media quality of a | The goal of active monitoring is to measure the media quality of a | |||
VoIP, Real-time Text or Video over IP session. A way to achieve | VoIP, Text or Video over IP session. A way to achieve this goal is | |||
to request an endpoint to loop media back to the other endpoint and | ||||
endpoint and to provide media statistics (e.g., RTCP and RTCP XR | to provide media statistics (e.g., RTCP and RTCP XR information). | |||
information). Another method involves deployment of special | Another method involves deployment of special endpoints that always | |||
endpoints that always loop incoming media back for sessions. | loop incoming media back for sessions. Although the latter method | |||
Although the latter method has been used and is functional, it does | has been used and is functional, it does not scale to support large | |||
not scale to support large networks and introduces new network | networks and introduces new network management challenges. | |||
management challenges. Further, it does not offer the granularity | Further, it does not offer the granularity of testing a specific | |||
of testing a specific endpoint that may be exhibiting problems. | endpoint that may be exhibiting problems. | |||
The extension defined in this memo introduces new SDP media | The extension defined in this memo introduces new SDP media | |||
attributes that enable establishment of media sessions where the | attributes that enable establishment of media sessions where the | |||
media is looped back to the transmitter. The offer/answer model | media is looped back to the transmitter. The offer/answer model | |||
[RFC3264] is used to establish a loopback connection. Furthermore, | [RFC3264] is used to establish a loopback connection. Furthermore, | |||
this extension provides guidelines on handling RTP [RFC3550], as | this extension provides guidelines on handling RTP [RFC3550], as | |||
well as usage of RTCP [RFC3550] and RTCP XR [RFC3611] for reporting | well as usage of RTCP [RFC3550] and RTCP XR [RFC3611] for reporting | |||
media related measurements. | media related measurements. | |||
1.1 Use Cases Supported | 1.1 Use Cases Supported | |||
As a matter of terminology in this document, packets flow from one | As a matter of terminology in this document, packets flow from one | |||
peer acting as a "loopback source", to the other peer acting as a | peer acting as a "loopback source", to the other peer acting as a | |||
"loopback mirror", which in turn returns packets to the loopback | "loopback mirror", which in turn returns packets to the loopback | |||
skipping to change at page 4, line 24 | skipping to change at page 4, line 27 | |||
"loopback mirror", which in turn returns packets to the loopback | "loopback mirror", which in turn returns packets to the loopback | |||
source. In advance of the session, the peers negotiate to determine | source. In advance of the session, the peers negotiate to determine | |||
which one acts in which role. The negotiation also includes details | which one acts in which role. The negotiation also includes details | |||
such as the type of loopback to be used. | such as the type of loopback to be used. | |||
This specification supports three use cases: "encapsulated packet | This specification supports three use cases: "encapsulated packet | |||
loopback", "direct loopback", and "media loopback". These are | loopback", "direct loopback", and "media loopback". These are | |||
distinguished by the treatment of incoming RTP packets at the | distinguished by the treatment of incoming RTP packets at the | |||
loopback mirror. | loopback mirror. | |||
As a supplement to these use cases, this specification also allows | ||||
the loopback source to request the loopback mirror to begin sending | ||||
a media stream to the loopback source, ending when the mirror | ||||
begins to receive packets from the source. This facility is needed | ||||
in some circumstances to establish the media path through | ||||
middleboxes lying between the peers. | ||||
1.1.1 Encapsulated Packet Loopback | 1.1.1 Encapsulated Packet Loopback | |||
In the encapsulated packet loopback case, the entire incoming RTP | In the encapsulated packet loopback case, the entire incoming RTP | |||
packet is encapsulated as payload within an outer payload type that | packet is encapsulated as payload within an outer payload type that | |||
is specific to this use case and specified below (Section 7.1). | is specific to this use case and specified below (Section 7.1). | |||
The encapsulated packet is returned to the loopback source. The | The encapsulated packet is returned to the loopback source. The | |||
loopback source can generate statistics for one-way path | loopback source can generate statistics for one-way path | |||
performance up to the RTP level for each direction of travel by | performance up to the RTP level for each direction of travel by | |||
examining sequence numbers and timestamps in the outer header and | examining sequence numbers and timestamps in the outer header and | |||
the encapsulated RTP packet payload. The loopback source can also | the encapsulated RTP packet payload. The loopback source can also | |||
skipping to change at page 6, line 5 | skipping to change at page 5, line 41 | |||
type. The packet is taken as close as possible to the analog level, | type. The packet is taken as close as possible to the analog level, | |||
then reencoded according to an outgoing format determined by | then reencoded according to an outgoing format determined by | |||
negotiation. The reencoded content is returned to the loopback | negotiation. The reencoded content is returned to the loopback | |||
source as an RTP packet with payload type corresponding to the | source as an RTP packet with payload type corresponding to the | |||
reencoding format. | reencoding format. | |||
This usage allows trouble-shooting at the codec level. The | This usage allows trouble-shooting at the codec level. The | |||
capability for path statistics is limited to what is available from | capability for path statistics is limited to what is available from | |||
RTCP reports. | RTCP reports. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | |||
this document are to be interpreted as described in RFC 2119. | this document are to be interpreted as described in RFC 2119. | |||
3. Offering Entity Behavior | SDP: Session Description Protocol, as defined in [RFC4566]. This | |||
document assumes the SDP offer/answer model is followed, per | ||||
[RFC3264], but does not assume any specific protocol for carrying | ||||
the SDP. | ||||
An offering entity compliant to this memo and attempting to | The following terms are borrowed from [RFC3264] definitions: offer, | |||
establish a media session with media loopback MUST include | offerer, answer, answerer, and agent. | |||
"loopback" media attributes for each individual media description | ||||
in the offer message. The offering entity MUST look for the | ||||
"loopback" media attributes in the media description(s) of the | ||||
response from the answering entity for confirmation that the | ||||
request is accepted. | ||||
4. Answering Entity Behavior | 3. SDP Offerer Behavior | |||
An answering entity compliant to this specification and receiving | An SDP offerer compliant to this memo and attempting to establish a | |||
an offer containing media descriptions with the "loopback" media | media session with media loopback MUST include "loopback" media | |||
attributes for each individual media description in the offer | ||||
message. The offerer MUST look for the "loopback" media attributes | ||||
in the media description(s) of the response from the answer for | ||||
confirmation that the request is accepted. | ||||
4. SDP Answerer Behavior | ||||
An SDP answerer compliant to this specification and receiving an | ||||
offer containing media descriptions with the "loopback" media | ||||
attributes MUST acknowledge the request by including the received | attributes MUST acknowledge the request by including the received | |||
"loopback" media attributes for each media description in its | "loopback" media attributes for each media description in its | |||
response if it agrees to do the loopback. If the answerer does not | asnwer if it agrees to do the loopback. If the answerer does not | |||
want to do loopback or wants to reject the "loopback" request for | want to do loopback or wants to reject the "loopback" request for | |||
specific media types, it MAY do so as defined in section 5.4.1 of | specific media types, it MAY do so as defined in section Error! | |||
this specification. | Reference source not found. of this specification. | |||
An answering entity that is not compliant to this specification and | An answerer MAY reject an offered stream (either with loopback- | |||
which receives an offer with the "loopback" media attributes MAY | source or loopback-mirror) if the loopback-type is not specified, | |||
ignore the attribute and treat the incoming offer as a normal | the specified loopback-type is not supported, or the endpoint | |||
request. | cannot honor the offer for any other reason. The loopback request | |||
MUST be rejected by setting the stream's media port number to zero | ||||
in the answer as defined in RFC 3264 [RFC3264], or by rejecting the | ||||
entire offer (e.g., by rejecting the session request entirely). | ||||
5. SDP Constructs Syntax | Note that an answerer that is not compliant to this specification | |||
and which receives an offer with the "loopback" media attributes | ||||
would ignore the attribute and treat the incoming offer as a normal | ||||
request. If the offerer does not wish to establish a "normal" RTP | ||||
session, it would need to terminate the session upon receiving such | ||||
an answer. | ||||
Two new media attributes are defined: one indicates the type of | 5. New SDP Attributes | |||
loopback and the other indicates the mode of the loopback. | ||||
5.1 Loopback Type Attribute | Three new SDP media-level attributes are defined: one indicates the | |||
type of loopback, and the other two define the mode of the | ||||
loopback. | ||||
The loopback type is a property media attribute with the following | 5.1 Loopback Type Attribute | |||
This specification defines a new 'loopback' attribute, which | ||||
indicates the type of loopack that the agent is able to do. The | ||||
loopback type is a property media attribute with the following | ||||
syntax: | syntax: | |||
a=loopback:<loopback-type> | a=loopback:<loopback-type> | |||
Following is the Augmented BNF [RFC5234] for loopback-type: | Following is the Augmented BNF [RFC5234] for loopback-type: | |||
Loopback-attr = "a=loopback:" | ||||
loopback-type = loopback-choice [1*SP loopback-choice] | loopback-type = loopback-choice [1*SP loopback-choice] | |||
loopback-choice = loopback-type-pkt / loopback-type-media | loopback-choice = loopback-type-pkt / loopback-type-media | |||
loopback-type-pkt = "rtp-pkt-loopback" | loopback-type-pkt = "rtp-pkt-loopback" | |||
loopback-type-media = "rtp-media-loopback" | loopback-type-media = "rtp-media-loopback" | |||
The loopback type is used to indicate the type of loopback. The | The loopback type is used to indicate the type of loopback. The | |||
loopback-type values are rtp-pkt-loopback, and rtp-media-loopback. | loopback-type values are rtp-pkt-loopback, and rtp-media-loopback. | |||
rtp-pkt-loopback: In this mode, the RTP packets are looped back to | rtp-pkt-loopback: In this mode, the RTP packets are looped back to | |||
the sender at a point before the encoder/decoder function in the | the sender at a point before the encoder/decoder function in the | |||
skipping to change at page 7, line 31 | skipping to change at page 7, line 47 | |||
such as packet loss concealment, MUST NOT be part of this type of | such as packet loss concealment, MUST NOT be part of this type of | |||
loopback path. In this mode the RTP packets are looped back with a | loopback path. In this mode the RTP packets are looped back with a | |||
new payload type and format. Section 7 describes the payload | new payload type and format. Section 7 describes the payload | |||
formats that MUST be used for this type of loopback. | formats that MUST be used for this type of loopback. | |||
rtp-media-loopback: This loopback is activated as close as possible | rtp-media-loopback: This loopback is activated as close as possible | |||
to the analog interface and after the decoder so that the RTP | to the analog interface and after the decoder so that the RTP | |||
packets are subsequently re-encoded prior to transmission back to | packets are subsequently re-encoded prior to transmission back to | |||
the sender. | the sender. | |||
5.2 Loopback Mode Attribute | 5.2 Loopback Mode Attribute | |||
The loopback mode is a value media attribute that is used to | The loopback mode defines two value media attributes that are used | |||
indicate the mode of the loopback. These attributes are additional | to indicate the mode of the loopback. These attributes are | |||
mode attributes like sendonly, recvonly, etc. The syntax of the | additional mode attributes like sendonly, recvonly, etc. The | |||
loopback mode media attribute is: | syntax of the loopback mode media attributes are based on the | |||
following: | ||||
a=<loopback-mode>:<fmt>... | a=<loopback-mode>:<fmt>... | |||
The loopback-mode values are loopback-source and loopback-mirror. | The loopback-mode values are 'loopback-source' and 'loopback- | |||
mirror'. | ||||
loopback-source: This attribute specifies that the entity that | loopback-source: This attribute specifies that the entity that | |||
generated the SDP is the media source and expects the receiver of | generated the SDP is the media source and expects the receiver of | |||
the SDP message to act as a loopback-mirror. | the SDP message to act as a loopback-mirror. | |||
loopback-mirror: This attribute specifies that the entity that | loopback-mirror: This attribute specifies that the entity that | |||
generated the SDP will mirror (echo) all received media back to the | generated the SDP will mirror (echo) all received media back to the | |||
sender of the RTP stream. No media is generated locally by the | sender of the RTP stream. No media is generated locally by the | |||
looping back entity for transmission in the mirrored stream. | looping back entity for transmission in the mirrored stream. | |||
skipping to change at page 8, line 16 | skipping to change at page 8, line 36 | |||
SDP is willing to send. When loopback-mode is specified as | SDP is willing to send. When loopback-mode is specified as | |||
loopback-mirror, the media format corresponds to the RTP payload | loopback-mirror, the media format corresponds to the RTP payload | |||
types the mirror is willing to receive. The "m=" line in the SDP | types the mirror is willing to receive. The "m=" line in the SDP | |||
MUST include all the payload types that will be used during the | MUST include all the payload types that will be used during the | |||
loopback session including those specified in the loopback-mode | loopback session including those specified in the loopback-mode | |||
attribute line. The complete payload space for the call is | attribute line. The complete payload space for the call is | |||
specified in the "m=" line and the rtpmap attribute is used to map | specified in the "m=" line and the rtpmap attribute is used to map | |||
from the payload type number to an encoding name denoting the | from the payload type number to an encoding name denoting the | |||
payload format to be used. | payload format to be used. | |||
5.3 Generating the Offer for Loopback Session | 5.3 Generating the Offer for Loopback Session | |||
If an offerer wishes to make a loopback request, it MUST include | If an offerer wishes to make a loopback request, it MUST include | |||
both the loopback-type and loopback-mode parameters in a valid SDP | both the loopback-type and loopback-mode attributes in a valid SDP | |||
offer: | offer: | |||
Example: m=audio 41352 RTP/AVP 0 8 100 | Example: m=audio 41352 RTP/AVP 0 8 100 | |||
a=loopback:rtp-media-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-source:0 8 100 | a=loopback-source:0 8 100 | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
a=rtpmap:8 pcma/8000 | a=rtpmap:8 pcma/8000 | |||
a=rtpmap:100 G7221/16000/1 | a=rtpmap:100 G7221/16000/1 | |||
Note: A loopback offer in a given media description MUST NOT | A loopback offer in a given media description MUST NOT contain the | |||
contain the standard mode attributes sendonly, recvonly, sendrecv, | standard mode attributes sendonly, recvonly, sendrecv, or inactive. | |||
or inactive. The loopback-mode attributes (loopback-source and | ||||
loopback-mirror) replace the standard attributes. | The loopback-mode attributes (loopback-source and loopback-mirror) | |||
replace the standard attributes. | ||||
The offerer may offer more than one loopback-type in the SDP offer. | The offerer may offer more than one loopback-type in the SDP offer. | |||
The port number and the address in the offer (m= line) indicate | The port number and the address in the offer (m/c= lines) indicate | |||
where the offerer would like to send and receive the media stream. | where the offerer would like to send and receive the media stream. | |||
The payload type numbers indicate the value of the payload the | The payload type numbers indicate the value of the payload the | |||
offerer expects to send and receive. If the offerer is the | offerer expects to send and receive. If the offerer is the | |||
loopback-source, the subset of payload types indicated in the | loopback-source, the subset of payload types indicated in the | |||
a=loopback-source line are the payload types for the codecs the | a=loopback-source line are the payload types for the codecs the | |||
offerer is willing to send. However, the answer might indicate a | offerer is willing to send. However, the answer might indicate a | |||
different payload type number for the same codec in the loopback- | different payload type number for the same codec in the loopback- | |||
mirror line. In that case, the offerer MUST send the payload type | mirror line. In that case, the offerer MUST send the payload type | |||
received in the answer. If the offerer is the loopback-mirror, the | received in the answer. If the offerer is the loopback-mirror, the | |||
subset of payload types indicated in the a=loopback-mirror line are | subset of payload types indicated in the a=loopback-mirror line are | |||
the payload types for the codecs the offerer is willing to receive. | the payload types for the codecs the offerer is willing to receive. | |||
If loopback-type is rtp-pkt-loopback, the loopback-mirror MUST send | If loopback-type is rtp-pkt-loopback, the loopback-mirror MUST send | |||
and the loopback-source MUST receive the looped back packets | and the loopback-source MUST receive the looped back packets | |||
encoded in one of the two payload formats (encapsulated RTP or | encoded in one of the two payload formats (encapsulated RTP or | |||
payload loopback) as defined in section 7. | direct loopback) as defined in section 7. | |||
Example: m=audio 41352 RTP/AVP 0 8 112 | Example: m=audio 41352 RTP/AVP 0 8 112 | |||
a=loopback:rtp-pkt-loopback | a=loopback:rtp-pkt-loopback | |||
a=loopback-source:0 8 | a=loopback-source:0 8 | |||
a=rtpmap:112 encaprtp/8000 | a=rtpmap:112 encaprtp/8000 | |||
Example: m=audio 41352 RTP/AVP 0 8 112 | Example: m=audio 41352 RTP/AVP 0 8 112 | |||
a=loopback:rtp-pkt-loopback | a=loopback:rtp-pkt-loopback | |||
a=loopback-source:0 8 | a=loopback-source:0 8 | |||
a=rtpmap:112 rtploopback/8000 | a=rtpmap:112 rtploopback/8000 | |||
5.4 Generating the Answer for Loopback Session | 5.4 Generating the Answer for Loopback Session | |||
As with the offer, a loopback answer in a given media description | As with the offer, an SDP answer for loopback MUST NOT contain the | |||
MUST NOT contain the standard mode attributes sendonly, recvonly, | standard mode attributes sendonly, recvonly, sendrecv, or inactive. | |||
sendrecv, or inactive. The loopback-mode attributes (loopbackThe | The port number and the address in the answer (m/c= lines) indicate | |||
port number and the address in the answer (m= line) indicate where | where the answerer would like to receive the media stream. The | |||
the answerer would like to receive the media stream. The payload | payload type numbers indicate the value of the payload types the | |||
type numbers indicate the value of the payload types the answerer | answerer expects to send and receive. The loopback-mode attributes | |||
expects to send and receive. If the offerer is the loopback- | (a=loopback-source or a=loopback-miror) MUST contain at least one | |||
source, the answerer MUST be a loopback-mirror and the subset of | codec the answerer is willing to send or receive depending on | |||
payload types indicated in the a=loopback-mirror line are the | whether it is the loopback-source or the loopback-mirror. In | |||
payload types for the codecs the answerer is willing to receive. | addition, the "m=" line MUST contain at least one codec that the | |||
Similarly, if the offerere is the loopback-mirror, the answerer | answerer is willing to send or receive depending on whether it is | |||
MUST be aloopback-source and the subset of payload types indicated | the loopback-mirror or the loopback-source. | |||
in the a=loopback-source line are the payload types for the codecs | ||||
the answerer is willing to send. | If the offerer is the loopback-source, the answerer MUST be a | |||
loopback-mirror and the subset of payload types indicated in the | ||||
a=loopback-mirror line are the payload types for the codecs the | ||||
answerer is willing to receive. Similarly, if the offerer is the | ||||
loopback-mirror, the answerer MUST be aloopback-source and the | ||||
subset of payload types indicated in the a=loopback-source line are | ||||
the payload types for the codecs the answerer is willing to send. | ||||
If an answerer wishes to accept the loopback request it MUST | If an answerer wishes to accept the loopback request it MUST | |||
include both the loopback mode and loopback type attribute in the | include both the loopback mode and loopback type attributes in the | |||
answer. When a stream is offered with the loopback-source | answer. When a stream is offered with the loopback-source | |||
attribute, the corresponding stream in the response MUST be | attribute, the corresponding stream in the response MUST be | |||
loopback-mirror and vice versa, provided that answerer is capable | loopback-mirror and vice versa, provided that answerer is capable | |||
of supporting the requested loopback-type. | of supporting the requested loopback-type. | |||
For example, if the offer contains the loopback-source attribute: | For example, if the offer contains the loopback-source attribute: | |||
m=audio 41352 RTP/AVP 0 8 | m=audio 41352 RTP/AVP 0 8 | |||
a=loopback:rtp-media-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-source:0 8 | a=loopback-source:0 8 | |||
skipping to change at page 11, line 5 | skipping to change at page 11, line 31 | |||
m=audio 41352 RTP/AVP 0 8 112 | m=audio 41352 RTP/AVP 0 8 112 | |||
a=loopback:rtp-pkt-loopback | a=loopback:rtp-pkt-loopback | |||
a=loopback-mirror:0 8 | a=loopback-mirror:0 8 | |||
a=rtpmap:112 encaprtp/8000 | a=rtpmap:112 encaprtp/8000 | |||
m=audio 41352 RTP/AVP 0 8 113 | m=audio 41352 RTP/AVP 0 8 113 | |||
a=loopback:rtp-pkt-loopback | a=loopback:rtp-pkt-loopback | |||
a=loopback-mirror:0 8 | a=loopback-mirror:0 8 | |||
a=rtpmap:113 rtploopback/8000 | a=rtpmap:113 rtploopback/8000 | |||
5.4.1 Rejecting the Loopback Offer | The previous examples used the 'encaprtp' and 'rtploopback' | |||
encoding names, which will be defined in sections 7.1.3 and 7.2.3. | ||||
An offered stream (either with loopback-source or loopback-mirror) | ||||
MAY be rejected if the loopback-type is not specified, the | ||||
specified loopback-type is not supported, or the endpoint cannot | ||||
honor the offer for any other reason. The Loopback request may be | ||||
rejected by setting the media port number to zero in the answer as | ||||
per RFC 3264 [RFC3264]. | ||||
5.5 Offerer Processing of the Answer | ||||
The answer to a loopback-source MUST be loopback-mirror. The | 5.5 Offerer Processing of the Answer | |||
answer to a loopback-mirror MUST be loopback-source. The | ||||
loopback-mode line MUST contain at least one codec the answerer is | ||||
willing to send or receive depending on whether it is the loopback- | ||||
source or the loopback-mirror. In addition, the "m=" line MUST | ||||
contain at least one codec that the answerer is willing to send or | ||||
receive depending on whether it is the loopback-mirror or the | ||||
loopback-source. | ||||
If the answer does not contain a=loopback-mirror or | If the received answer does not contain a=loopback-mirror or | |||
a=loopback-source, it is assumed that the loopback extensions are | a=loopback-source, it is assumed that the loopback extensions are | |||
not supported by the target UA. | not supported by the remote agent. This is not a protocol failure, | |||
and instead merely completes the SDP offer/answer exchange with | ||||
whatever normal rules apply; the offerer MAY decide to end the | ||||
established RTP session (if any) through normal means of the upper- | ||||
layer signaling protocol (e.g., by sending a SIP BYE). | ||||
5.6 Modifying the Session | 5.6 Modifying the Session | |||
At any point during the loopback session, either participant may | At any point during the loopback session, either participant MAY | |||
issue a new offer to modify the characteristics of the previous | issue a new offer to modify the characteristics of the previous | |||
session. In case of SIP this is defined in section 8 of RFC 3264 | session, as defined in section 8 of RFC 3264 [RFC3264]. This also | |||
[RFC3264]. This also includes transitioning from a normal media | includes transitioning from a normal media processing mode to | |||
processing mode to loopback mode, and vice a versa. | loopback mode, and vice a versa. | |||
5.7 Establishing Sessions Between Entities Behind NAT | 5.7 Establishing Sessions Between Entities Behind NAT | |||
ICE/STUN/TURN provide a general solution to establishing media | ICE/STUN/TURN provide a general solution to establishing media | |||
sessions between entities that are behind NATs. Loopback sessions | sessions between entities that are behind NATs. Loopback sessions | |||
that involve one or more end points behind NATs SHOULD use these | that involve one or more end points behind NATs SHOULD use these | |||
general solutions wherever possible. | general solutions wherever possible. | |||
6. RTP Requirements | 6. RTP Requirements | |||
A loopback-mirror that is compliant to this specification and | A loopback-mirror that is compliant to this specification and | |||
accepting a media with rtp-pkt-loopback loopback-type MUST loopback | accepting a media with rtp-pkt-loopback loopback-type MUST loopback | |||
the incoming RTP packets using either the encapsulated RTP payload | the incoming RTP packets using either the encapsulated RTP payload | |||
format or the direct loopback RTP payload format as defined in | format or the direct loopback RTP payload format as defined in | |||
section 7 of this specification. | section 7 of this specification. | |||
An answering entity that is compliant to this specification and | An answering entity that is compliant to this specification and | |||
accepting a media with the loopback type rtp-media-loopback MUST | accepting a media with the loopback type rtp-media-loopback MUST | |||
transmit all received media back to the sender. The incoming media | transmit all received media back to the sender, unless congestion | |||
MUST be treated as if it were to be played (e.g. the media stream | feedback or other lower-layer constraints prevent it from doing so. | |||
MAY receive treatment from PLC algorithms). The answering entity | The incoming media MUST be treated as if it were to be played (e.g. | |||
MUST re-generate all the RTP header fields as it would when | the media stream MAY receive treatment from PLC algorithms). The | |||
transmitting media. The answering entity MAY choose to encode the | answering entity MUST re-generate all the RTP header fields as it | |||
loopback media according to any of the media descriptions supported | would when transmitting media. The answering entity MAY choose to | |||
by the offering entity. Furthermore, in cases where the same media | encode the loopback media according to any of the media | |||
type is looped back, the answering entity MAY choose to preserve | descriptions supported by the offering entity. Furthermore, in | |||
number of frames/packet and bitrate of the encoded media according | cases where the same media type is looped back, the answering | |||
to the received media. | entity MAY choose to preserve number of frames/packet and bitrate | |||
of the encoded media according to the received media. | ||||
7. Payload formats for Packet loopback | 7. Payload formats for Packet loopback | |||
The payload formats described in this section MUST be used by a | The payload formats described in this section MUST be used by a | |||
loopback-mirror when rtp-pkt-loopback is the specified | loopback-mirror when rtp-pkt-loopback is the specified | |||
loopback-type. Two different formats are specified here - an | loopback-type. Two different formats are specified here - an | |||
encapsulated RTP payload format and a direct loopback RTP payload | encapsulated RTP payload format and a direct loopback RTP payload | |||
format. The encapsulated RTP payload format should be used when | format. The encapsulated RTP payload format should be used when | |||
the incoming RTP header information needs to be preserved during | the incoming RTP header information needs to be preserved during | |||
the loopback operation. This is useful in cases where loopback | the loopback operation. This is useful in cases where loopback | |||
source needs to measure performance metrics in both directions. | source needs to measure performance metrics in both directions. | |||
However, this comes at the expense of increased packet size as | However, this comes at the expense of increased packet size as | |||
skipping to change at page 12, line 48 | skipping to change at page 13, line 18 | |||
loopback-mirror. As described in RFC 3550 [RFC3550], sequence | loopback-mirror. As described in RFC 3550 [RFC3550], sequence | |||
numbers and timestamps in the RTP header are generated with initial | numbers and timestamps in the RTP header are generated with initial | |||
random values for security reasons. If this were not mandated and | random values for security reasons. If this were not mandated and | |||
the source payload is sequence number aware, the loopback-mirror | the source payload is sequence number aware, the loopback-mirror | |||
will be required to understand that payload format to generate | will be required to understand that payload format to generate | |||
looped back packets that do not violate RFC 3550 [RFC3550]. | looped back packets that do not violate RFC 3550 [RFC3550]. | |||
Requiring looped back packets to be in one of the two formats means | Requiring looped back packets to be in one of the two formats means | |||
loopback-mirror does not have to look into the actual payload | loopback-mirror does not have to look into the actual payload | |||
received before generating the loopback packets. | received before generating the loopback packets. | |||
7.1 Encapsulated Payload format | 7.1 Encapsulated Payload format | |||
A received RTP packet is encapsulated in the payload section of the | A received RTP packet is encapsulated in the payload section of the | |||
RTP packet generated by a loopback-mirror. Each received packet | RTP packet generated by a loopback-mirror. Each received packet | |||
MUST be encapsulated in a different packet, the encapsulated packet | MUST be encapsulated in a different packet, the encapsulated packet | |||
MUST be fragmented only if required (for example: due to MTU | MUST be fragmented only if required (for example: due to MTU | |||
limitations). | limitations). | |||
7.1.1 Usage of RTP Header fields | 7.1.1 Usage of RTP Header fields | |||
Payload Type (PT): The assignment of an RTP payload type for this | Payload Type (PT): The assignment of an RTP payload type for this | |||
packet format is outside the scope of this document; it is either | packet format is outside the scope of this document; it is either | |||
skipping to change at page 15, line 18 | skipping to change at page 15, line 31 | |||
negotiated using a mechanism like SDP. There is no static payload | negotiated using a mechanism like SDP. There is no static payload | |||
type assignment for the encapsulated stream, so dynamic payload | type assignment for the encapsulated stream, so dynamic payload | |||
type numbers MUST be used. The binding to the name is indicated by | type numbers MUST be used. The binding to the name is indicated by | |||
an rtpmap attribute. The name used in this binding is "encaprtp". | an rtpmap attribute. The name used in this binding is "encaprtp". | |||
The following is an example SDP fragment for encapsulated RTP. | The following is an example SDP fragment for encapsulated RTP. | |||
m=audio 41352 RTP/AVP 112 | m=audio 41352 RTP/AVP 112 | |||
a=rtpmap:112 encaprtp/8000 | a=rtpmap:112 encaprtp/8000 | |||
7.2 Direct loopback RTP payload format | 7.2 Direct loopback RTP payload format | |||
The direct loopback RTP payload format can be used in scenarios | The direct loopback RTP payload format can be used in scenarios | |||
where the 16 byte overhead of the encapsulated payload format is | where the 16 byte overhead of the encapsulated payload format is | |||
significant. This payload format MUST NOT be used in cases where | significant. This payload format MUST NOT be used in cases where | |||
the MTU on the loopback path will cause fragmentation of looped | the MTU on the loopback path will cause fragmentation of looped | |||
back RTP packets. When using this payload format, the receiver | back RTP packets. When using this payload format, the receiver | |||
MUST loop back each received packet in a separate RTP packet. | MUST loop back each received packet in a separate RTP packet. | |||
7.2.1 Usage of RTP Header fields | 7.2.1 Usage of RTP Header fields | |||
skipping to change at page 16, line 25 | skipping to change at page 16, line 41 | |||
type assignment for the stream, so dynamic payload type numbers | type assignment for the stream, so dynamic payload type numbers | |||
MUST be used. The binding to the name is indicated by an rtpmap | MUST be used. The binding to the name is indicated by an rtpmap | |||
attribute. The name used in this binding is "rtploopback". | attribute. The name used in this binding is "rtploopback". | |||
The following is an example SDP fragment for direct loopback RTP | The following is an example SDP fragment for direct loopback RTP | |||
format. | format. | |||
m=audio 41352 RTP/AVP 112 | m=audio 41352 RTP/AVP 112 | |||
a=rtpmap:112 rtploopback/8000 | a=rtpmap:112 rtploopback/8000 | |||
8. RTCP Requirements | 8. RTCP Requirements | |||
The use of the loopback attribute is intended for monitoring of | The use of the loopback attribute is intended for monitoring of | |||
media quality of the session. Consequently the media performance | media quality of the session. Consequently the media performance | |||
information should be exchanged between the offering and the | information should be exchanged between the offering and the | |||
answering entities. An offering or answering entity that is | answering entities. An offering or answering entity that is | |||
compliant to this specification SHOULD support RTCP per [RFC3550] | compliant to this specification SHOULD support RTCP per [RFC3550] | |||
and RTCP-XR per RFC 3611 [RFC3611]. Furthermore, if the client or | and RTCP-XR per RFC 3611 [RFC3611]. Furthermore, if the client or | |||
the server choose to support RTCP-XR, they SHOULD support RTCP-XR | the server choose to support RTCP-XR, they SHOULD support RTCP-XR | |||
Loss RLE report block, Duplicate RLE report block, Statistics | Loss RLE report block, Duplicate RLE report block, Statistics | |||
Summary report block, and VoIP Metric Reports Block per sections | Summary report block, and VoIP Metric Reports Block per sections | |||
4.1, 4.2, 4.6, and 4.7 of RFC 3611 [RFC3611]. The client and the | 4.1, 4.2, 4.6, and 4.7 of RFC 3611 [RFC3611]. The client and the | |||
server MAY support other RTCP-XR reporting blocks as defined by RFC | server MAY support other RTCP-XR reporting blocks as defined by RFC | |||
3611 [RFC3611]. | 3611 [RFC3611]. | |||
9. Congestion Control | 9. Congestion Control | |||
All the participants in a loopback session SHOULD implement | All the participants in a loopback session SHOULD implement | |||
congestion control mechanisms as defined by the RTP profile under | congestion control mechanisms as defined by the RTP profile under | |||
which the loopback mechanism is implemented. For audio video | which the loopback mechanism is implemented. For audio video | |||
profiles, implementations SHOULD conform to the mechanism defined | profiles, implementations SHOULD conform to the mechanism defined | |||
in Section 2 of RFC 3551. | in Section 2 of RFC 3551. | |||
10. Examples | 10. Examples | |||
This section provides examples for media descriptions using SDP for | This section provides examples for media descriptions using SDP for | |||
different scenarios. The examples are given for SIP-based | different scenarios. The examples are given for SIP-based | |||
transactions and are abbreviated and do not show the complete | transactions and are abbreviated and do not show the complete | |||
signaling for convenience. | signaling for convenience. | |||
10.1 Offer for specific media loopback type | 10.1 Offer for specific media loopback type | |||
A client sends an INVITE request with offer SDP which looks like: | An agent sends an SDP offer which looks like: | |||
v=0 | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | |||
s=Example | s=Example | |||
i=An example session | i=An example session | |||
e=alice@example.com | e=alice@example.com | |||
c=IN IP4 host.atlanta.example.com | c=IN IP4 host.atlanta.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 49170 RTP/AVP 0 | m=audio 49170 RTP/AVP 0 | |||
a=loopback:rtp-media-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-source:0 | a=loopback-source:0 | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
The client is offering to source the media and expects the server | The agent is offering to source the media and expects the answering | |||
to mirror the RTP stream per rtp-media-loopback loopback type. | agent to mirror the RTP stream per rtp-media-loopback loopback | |||
type. | ||||
A server sends a response with answer SDP which looks like: | An answering agent sends an SDP answer which looks like: | |||
v=0 | v=0 | |||
o=bob 2890844526 2890842807 IN IP4 host.biloxi.example.com | o=bob 1234567890 1122334455 IN IP4 host.biloxi.example.com | |||
s=Example | s=Example | |||
i=An example session | i=An example session | |||
e=bob@example.com | e=bob@example.com | |||
c=IN IP4 host.biloxi.example.com | c=IN IP4 host.biloxi.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 49270 RTP/AVP 0 | m=audio 49270 RTP/AVP 0 | |||
a=loopback:rtp-media-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-mirror:0 | a=loopback-mirror:0 | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
The server is accepting to mirror the media from the client at the | The answerer is accepting to mirror the media from the offerer at | |||
media level. | the media level. | |||
10.2 Offer for choice of media loopback type | 10.2 Offer for choice of media loopback type | |||
A client sends an INVITE request with offer SDP which looks like: | ||||
An agent sends an SDP offer which looks like: | ||||
v=0 | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | |||
s=Example | s=Example | |||
i=An example session | i=An example session | |||
e=alice@example.com | e=alice@example.com | |||
c=IN IP4 host.atlanta.example.com | c=IN IP4 host.atlanta.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 49170 RTP/AVP 0 112 113 | m=audio 49170 RTP/AVP 0 112 113 | |||
a=loopback:rtp-media-loopback rtp-pkt-loopback | a=loopback:rtp-media-loopback rtp-pkt-loopback | |||
a=loopback-source:0 | a=loopback-source:0 | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
a=rtpmap:112 encaprtp/8000 | a=rtpmap:112 encaprtp/8000 | |||
a=rtpmap:113 rtploopback/8000 | a=rtpmap:113 rtploopback/8000 | |||
The client is offering to source the media and expects the server | The offerer is offering to source the media and expects the | |||
to mirror the RTP stream at either the media or rtp level. | answerer to mirror the RTP stream at either the media or rtp level. | |||
A server sends a response with answer SDP which looks like: | An answering agent sends an SDP answer which looks like: | |||
v=0 | v=0 | |||
o=box 2890844526 2890842807 IN IP4 host.biloxi.example.com | o=box 1234567890 1122334455 IN IP4 host.biloxi.example.com | |||
s=Example | s=Example | |||
i=An example session | i=An example session | |||
e=bob@example.com | e=bob@example.com | |||
c=IN IP4 host.biloxi.example.com | c=IN IP4 host.biloxi.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 49270 RTP/AVP 0 112 | m=audio 49270 RTP/AVP 0 112 | |||
a=loopback:rtp-pkt-loopback | a=loopback:rtp-pkt-loopback | |||
a=loopback-mirror:0 | a=loopback-mirror:0 | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
a=rtpmap:112 encaprtp/8000 | a=rtpmap:112 encaprtp/8000 | |||
The server is accepting to mirror the media from the client at the | The answerer is accepting to mirror the media from the offerer at | |||
packet level using the encapsulated RTP payload format. | the packet level using the encapsulated RTP payload format. | |||
10.3 Response to INVITE request rejecting loopback media | 10.3 Answerer rejecting loopback media | |||
A client sends an INVITE request with offer SDP which looks like: | An agent sends an SDP offer which looks like: | |||
v=0 | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | |||
s=Example | s=Example | |||
i=An example session | i=An example session | |||
e=user@example.com | e=user@example.com | |||
c=IN IP4 host.atlanta.example.com | c=IN IP4 host.atlanta.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 49170 RTP/AVP 0 | m=audio 49170 RTP/AVP 0 | |||
a=loopback:rtp-media-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-source:0 | a=loopback-source:0 | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
The client is offering to source the media and expects the server | The offerer is offering to source the media and expects the | |||
to mirror the RTP stream at the media level. | answerer to mirror the RTP stream at the media level. | |||
A server sends a response with answer SDP which looks like: | An answering agent sends an SDP answer which looks like: | |||
v=0 | v=0 | |||
o=bob 2890844526 2890842807 IN IP4 host.biloxi.example.com | o=bob 1234567890 1122334455 IN IP4 host.biloxi.example.com | |||
s=Example | s=Example | |||
i=An example session | i=An example session | |||
e=user@example.com | e=user@example.com | |||
c=IN IP4 host.biloxi.example.com | c=IN IP4 host.biloxi.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 0 RTP/AVP 0 | m=audio 0 RTP/AVP 0 | |||
a=loopback:rtp-media-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-mirror:0 | a=loopback-mirror:0 | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
NOTE: Loopback request may be rejected by either not including the | 11. Security Considerations | |||
loopback mode attribute (for backward compatibility) or setting the | ||||
media port number to zero, or both, in the response. | ||||
11. Security Considerations | ||||
The security considerations of [RFC3261] and [RFC3264] apply. | The security considerations of [RFC3264] apply. Furthermore, given | |||
Furthermore, given that media loopback may be automated without the | that media loopback may be automated without the end user's | |||
end user's knowledge, the server of the media loopback should be | knowledge, the server of the media loopback should be aware of | |||
aware of denial of service attacks. It is recommended that sessions | denial of service attacks. It is recommended that sessions with | |||
with media loopback are authenticated and the frequency of such | media loopback are authenticated and the frequency of such sessions | |||
sessions is limited by the server. | is limited by the server. | |||
12. Implementation Considerations | 12. Implementation Considerations | |||
The media loopback approach described in this document is a | The media loopback approach described in this document is a | |||
complete solution that would work under all scenarios. However, it | complete solution that would work under all scenarios. However, it | |||
is believed that the solution may not be light-weight enough for | is believed that the solution may not be light-weight enough for | |||
the common case. In light of this concern, this section clarifies | the common case. In light of this concern, this section clarifies | |||
which features of the loopback proposal MUST be implemented for all | which features of the loopback proposal MUST be implemented for all | |||
implementations and which features MAY be deferred if the complete | implementations and which features MAY be deferred if the complete | |||
solution is not desired. | solution is not desired. | |||
All implementations MUST support the rtp-pkt-loopback option for | All implementations MUST support the rtp-pkt-loopback option for | |||
loopback-type attribute. In addition, for the loopback-mode | loopback-type attribute. In addition, for the loopback-mode | |||
attribute, all implementations of an offerer MUST at a minimum be | attribute, all implementations of an offerer MUST at a minimum be | |||
able to act as a loopback-source. All implementation MUST also at a | able to act as a loopback-source. All implementation MUST also at a | |||
minimum support the direct media loopback payload type. The rtp- | minimum support the direct media loopback payload type. The rtp- | |||
media-loopback attribute MAY be implemented in complete | media-loopback attribute MAY be implemented in complete | |||
implementations of this draft. | implementations of this draft. | |||
13. IANA Considerations | 13. IANA Considerations | |||
13.1 SDP Attributes | 13.1 SDP Attributes | |||
This document defines three new media-level SDP attributes. IANA | This document defines three new media-level SDP attributes. IANA | |||
has registered the following attributes: | has registered the following attributes: | |||
Contact name: Kaynam Hedayat | Contact name: Kaynam Hedayat | |||
<kaynam.hedayat@exfo.com>. | <kaynam.hedayat@exfo.com>. | |||
Attribute name: "loopback". | Attribute name: "loopback". | |||
Type of attribute: Media level. | Type of attribute: Media level. | |||
Subject to charset: No. | Subject to charset: No. | |||
Purpose of attribute: The 'loopback' attribute is used to | Purpose of attribute: The 'loopback' attribute is used to | |||
skipping to change at page 21, line 4 | skipping to change at page 21, line 15 | |||
as a loopback-mirror. | as a loopback-mirror. | |||
Allowed attribute values: The parameter to 'loopback-source' is | Allowed attribute values: The parameter to 'loopback-source' is | |||
a media format ("<fmt>") description | a media format ("<fmt>") description | |||
as defined in RFC 4566 Section 5.14. | as defined in RFC 4566 Section 5.14. | |||
Contact name: Kaynam Hedayat | Contact name: Kaynam Hedayat | |||
<kaynam.hedayat@exfo.com>. | <kaynam.hedayat@exfo.com>. | |||
Attribute name: "loopback-mirror". | Attribute name: "loopback-mirror". | |||
Type of attribute: Media level. | Type of attribute: Media level. | |||
Subject to charset: No. | Subject to charset: No. | |||
Purpose of attribute: The 'loopback-mirror' attribute | Purpose of attribute: The 'loopback-mirror' attribute | |||
specifies that the receiver will | specifies that the receiver will | |||
mirror (echo) all received media back | mirror (echo) all received media back | |||
to the sender of the RTP stream. | to the sender of the RTP stream. | |||
Allowed attribute values: The parameter to 'loopback-mirror' is | Allowed attribute values: The parameter to 'loopback-mirror' is | |||
a media format ("<fmt>") description | a media format ("<fmt>") description | |||
as defined in RFC 4566 Section 5.14. | as defined in RFC 4566 Section 5.14. | |||
13.2 MIME Types | 13.2 MIME Types | |||
The IANA has registered the following MIME types: | The IANA has registered the following MIME types: | |||
13.2.1 audio/encaprtp | 13.2.1 audio/encaprtp | |||
To: ietf-types@iana.org | To: ietf-types@iana.org | |||
Subject: Registration of media type audio/encaprtp | Subject: Registration of media type audio/encaprtp | |||
Type name: audio | Type name: audio | |||
skipping to change at page 30, line 13 | skipping to change at page 30, line 23 | |||
defined at this time. | defined at this time. | |||
Author: | Author: | |||
Kaynam Hedayat. | Kaynam Hedayat. | |||
Change controller: IETF Audio/Video Transport working | Change controller: IETF Audio/Video Transport working | |||
group delegated from the IESG. | group delegated from the IESG. | |||
14. Normative References | 14. Normative References | |||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., | ||||
Johnston, A., Peterson, J., Sparks, R., Handley, M. | ||||
and E. Schooler, "SIP: Session Initiation Protocol", | ||||
RFC 3261, June 2002. | ||||
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer | [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer | |||
Model with the Session Description Protocol (SDP)", | Model with the Session Description Protocol (SDP)", | |||
RFC 3264, June 2002. | RFC 3264, 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. | |||
[RFC3611] Almeroth, K., Caceres, R., Clark, A., Cole, R., | [RFC3611] Almeroth, K., Caceres, R., Clark, A., Cole, R., | |||
Duffield, N., Friedman, T., Hedayat, K., Sarac, K. | Duffield, N., Friedman, T., Hedayat, K., Sarac, K. | |||
skipping to change at page 31, line 13 | skipping to change at page 31, line 17 | |||
RFC 3551, July 2003. | RFC 3551, July 2003. | |||
[RFC4566] Handley, M., Jacobson, V., Perkins, C., "SDP: Session | [RFC4566] Handley, M., Jacobson, V., Perkins, C., "SDP: Session | |||
Description Protocol", RFC 4566, July 2006. | Description Protocol", RFC 4566, July 2006. | |||
[RFC4855] Casner, S., "Media Type Registration of RTP Payload | [RFC4855] Casner, S., "Media Type Registration of RTP Payload | |||
Formats", RFC 4855, February 2007. | Formats", RFC 4855, February 2007. | |||
Authors' Addresses | Authors' Addresses | |||
Hadriel Kaplan | ||||
Acme Packet | ||||
100 Crosby Drive | ||||
Bedford, MA 01730 | ||||
USA | ||||
EMail: hkaplan@acmepacket.com | ||||
URI: http://www.acmepacket.com | ||||
Kaynam Hedayat | Kaynam Hedayat | |||
EXFO | EXFO | |||
285 Mill Road | 285 Mill Road | |||
Chelmsford, MA 01824 | Chelmsford, MA 01824 | |||
US | US | |||
Phone: +1 978 367 5611 | Phone: +1 978 367 5611 | |||
EMail: kaynam.hedayat@exfo.com | EMail: kaynam.hedayat@exfo.com | |||
URI: http://www.exfo.com/ | URI: http://www.exfo.com/ | |||
End of changes. 80 change blocks. | ||||
202 lines changed or deleted | 220 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |