draft-ietf-mmusic-media-loopback-27.txt | rfc6849.txt | |||
---|---|---|---|---|
MMUSIC Working Group H. Kaplan (ed.) | ||||
Internet-Draft Acme Packet | ||||
Intended status: Proposed Standard K. Hedayat | ||||
Expires: July 14, 2013 EXFO | ||||
N. Venna | ||||
Saperix | ||||
P. Jones | ||||
Cisco Systems, Inc. | ||||
N. Stratton | ||||
BlinkMind, Inc. | ||||
January 14, 2013 | ||||
An Extension to the Session Description Protocol (SDP) | ||||
and Real-time Transport Protocol (RTP) for Media Loopback | ||||
draft-ietf-mmusic-media-loopback-27 | ||||
Status of this Memo | ||||
This Internet-Draft is submitted to IETF in full conformance with | ||||
the provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF), its areas, and its working groups. Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six | ||||
months and may be updated, replaced, or obsoleted by other | ||||
documents at any time. It is inappropriate to use Internet-Drafts | ||||
as reference material or to cite them other than as "work in | ||||
progress". | ||||
The list of current Internet-Drafts can be accessed at | Internet Engineering Task Force (IETF) H. Kaplan, Ed. | |||
http://www.ietf.org/1id-abstracts.html | Request for Comments: 6849 Acme Packet | |||
Category: Standards Track K. Hedayat | ||||
The list of Internet-Draft Shadow Directories can be accessed at | ISSN: 2070-1721 EXFO | |||
http://www.ietf.org/shadow.html. | N. Venna | |||
Saperix | ||||
P. Jones | ||||
Cisco Systems, Inc. | ||||
N. Stratton | ||||
BlinkMind, Inc. | ||||
February 2013 | ||||
This Internet-Draft will expire on July 14, 2013. | An Extension to the Session Description Protocol (SDP) | |||
and Real-time Transport Protocol (RTP) for Media Loopback | ||||
Copyright Notice | Abstract | |||
Copyright (c) 2012 IETF Trust and the persons identified as the | The wide deployment of Voice over IP (VoIP), real-time text, and | |||
document authors. All rights reserved. | Video over IP services has introduced new challenges in managing and | |||
maintaining real-time voice/text/video quality, reliability, and | ||||
overall performance. In particular, media delivery is an area that | ||||
needs attention. One method of meeting these challenges is | ||||
monitoring the media delivery performance by looping media back to | ||||
the transmitter. This is typically referred to as "active | ||||
monitoring" of services. Media loopback is especially popular in | ||||
ensuring the quality of transport to the edge of a given VoIP, real- | ||||
time text, or Video over IP service. Today, in networks that deliver | ||||
real-time media, short of running 'ping' and 'traceroute' to the | ||||
edge, administrators are left without the necessary tools to actively | ||||
monitor, manage, and diagnose quality issues with their service. The | ||||
extension defined herein adds new Session Description Protocol (SDP) | ||||
media types and attributes that enable establishment of media | ||||
sessions where the media is looped back to the transmitter. Such | ||||
media sessions will serve as monitoring and troubleshooting tools by | ||||
providing the means for measurement of more advanced VoIP, real-time | ||||
text, and Video over IP performance metrics. | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | Status of This Memo | |||
Provisions Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with | ||||
respect to this document. Code Components extracted from this | ||||
document must include Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
This document may contain material from IETF Documents or IETF | This is an Internet Standards Track document. | |||
Contributions published or made publicly available before November | ||||
10, 2008. The person(s) controlling the copyright in some of this | ||||
material may not have granted the IETF Trust the right to allow | ||||
modifications of such material outside the IETF Standards Process. | ||||
Without obtaining an adequate license from the person(s) | ||||
controlling the copyright in such materials, this document may not | ||||
be modified outside the IETF Standards Process, and derivative | ||||
works of it may not be created outside the IETF Standards Process, | ||||
except to format it for publication as an RFC or to translate it | ||||
into languages other than English. | ||||
Abstract | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | ||||
received public review and has been approved for publication by the | ||||
Internet Engineering Steering Group (IESG). Further information on | ||||
Internet Standards is available in Section 2 of RFC 5741. | ||||
The wide deployment of Voice over IP (VoIP), Text and Video over IP | Information about the current status of this document, any errata, | |||
services has introduced new challenges in managing and maintaining | and how to provide feedback on it may be obtained at | |||
real-time voice/text/video quality, reliability, and overall | http://www.rfc-editor.org/info/rfc6849. | |||
performance. In particular, media delivery is an area that needs | ||||
attention. One method of meeting these challenges is monitoring | ||||
the media delivery performance by looping media back to the | ||||
transmitter. This is typically referred to as "active monitoring" | ||||
of services. Media loopback is especially popular in ensuring the | ||||
quality of transport to the edge of a given VoIP, Real-time Text or | ||||
Video over IP service. Today in networks that deliver real-time | ||||
media, short of running 'ping' and 'traceroute' to the edge, | ||||
administrators are left without the necessary tools to actively | ||||
monitor, manage, and diagnose quality issues with their service. | ||||
The extension defined herein adds new SDP media types and | ||||
attributes, which enable establishment of media sessions where the | ||||
media is looped back to the transmitter. Such media sessions will | ||||
serve as monitoring and troubleshooting tools by providing the | ||||
means for measurement of more advanced VoIP, Real-time Text and | ||||
Video over IP performance metrics. | ||||
Table of Contents | Copyright Notice | |||
1. Introduction..................................................3 | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
1.1 Use Cases Supported.......................................4 | document authors. All rights reserved. | |||
2. Terminology...................................................6 | ||||
3. Overview of Operation.........................................6 | ||||
3.1 SDP Offerer Behavior......................................6 | ||||
3.2 SDP Answerer Behavior.....................................7 | ||||
4. New SDP Attributes............................................7 | ||||
4.1 Loopback Type Attribute...................................7 | ||||
4.2 Loopback Role Attributes: loopback-source and loopback- | ||||
mirror........................................................8 | ||||
5. Rules for Generating the SDP offer/answer.....................9 | ||||
5.1 Generating the SDP Offer for Loopback Session.............9 | ||||
5.2 Generating the SDP Answer for Loopback Session...........10 | ||||
5.3 Offerer Processing of the SDP Answer.....................12 | ||||
5.4 Modifying the Session....................................12 | ||||
5.5 Establishing Sessions Between Entities Behind NAT........12 | ||||
6. RTP Requirements.............................................13 | ||||
7. Payload formats for Packet loopback..........................13 | ||||
7.1 Encapsulated Payload format..............................14 | ||||
7.2 Direct loopback RTP payload format.......................16 | ||||
8. SRTP Behavior................................................17 | ||||
9. RTCP Requirements............................................18 | ||||
10. Congestion Control..........................................18 | ||||
11. Examples....................................................18 | ||||
11.1 Offer for specific media loopback type..................19 | ||||
11.2 Offer for choice of media loopback type.................19 | ||||
11.3 Answerer rejecting loopback media.......................20 | ||||
12. Security Considerations.....................................21 | ||||
13. Implementation Considerations...............................22 | ||||
14. IANA Considerations.........................................22 | ||||
14.1 SDP Attributes..........................................22 | ||||
14.2 Media Types.............................................23 | ||||
15. Acknowledgements............................................31 | ||||
16. Normative References........................................31 | ||||
17. Informative References......................................32 | ||||
1. Introduction | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with respect | ||||
to this document. Code Components extracted from this document must | ||||
include Simplified BSD License text as described in Section 4.e of | ||||
the Trust Legal Provisions and are provided without warranty as | ||||
described in the Simplified BSD License. | ||||
The overall quality, reliability, and performance of VoIP, | This document may contain material from IETF Documents or IETF | |||
Real-time Text and Video over IP services rely on the performance | Contributions published or made publicly available before November | |||
and quality of the media path. In order to assure the quality of | 10, 2008. The person(s) controlling the copyright in some of this | |||
the delivered media there is a need to monitor the performance of | material may not have granted the IETF Trust the right to allow | |||
the media transport. One method of monitoring and managing the | modifications of such material outside the IETF Standards Process. | |||
overall quality of real-time VoIP, Text and Video over IP Services | Without obtaining an adequate license from the person(s) controlling | |||
is through monitoring the quality of the media in an active | the copyright in such materials, this document may not be modified | |||
session. This type of "active monitoring" of services is a method | outside the IETF Standards Process, and derivative works of it may | |||
of proactively managing the performance and quality of VoIP based | not be created outside the IETF Standards Process, except to format | |||
services. | it for publication as an RFC or to translate it into languages other | |||
than English. | ||||
The goal of active monitoring is to measure the media quality of a | Table of Contents | |||
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 | ||||
to provide media statistics (e.g., RTCP and RTCP-XR information). | ||||
Another method involves deployment of special endpoints that always | ||||
loop incoming media back for all sessions. Although the latter | ||||
method has been used and is functional, it does not scale to | ||||
support large networks and introduces new network management | ||||
challenges. Further, it does not offer the granularity of testing | ||||
a specific endpoint that may be exhibiting problems. | ||||
The extension defined in this document introduces new SDP media | 1. Introduction ....................................................3 | |||
types and attributes that enable establishment of media sessions | 1.1. Use Cases Supported ........................................4 | |||
where the media is looped back to the transmitter. The SDP | 2. Terminology .....................................................6 | |||
offer/answer model [RFC3264] is used to establish a loopback | 3. Overview of Operation ...........................................6 | |||
connection. Furthermore, this extension provides guidelines on | 3.1. SDP Offerer Behavior .......................................6 | |||
handling RTP [RFC3550], as well as usage of RTP Control Protocol | 3.2. SDP Answerer Behavior ......................................7 | |||
(RTCP) [RFC3550] and RTCP Extended Reports (RTCP-XR) [RFC3611] for | 4. New SDP Attributes ..............................................7 | |||
reporting media related measurements. | 4.1. Loopback-Type Attribute ....................................7 | |||
4.2. Loopback-Role Attributes: loopback-source and | ||||
loopback-mirror ............................................8 | ||||
5. Rules for Generating the SDP Offer/Answer .......................9 | ||||
5.1. Generating the SDP Offer for Loopback Session ..............9 | ||||
5.2. Generating the SDP Answer for Loopback Session ............10 | ||||
5.3. Offerer Processing of the SDP Answer ......................12 | ||||
5.4. Modifying the Session .....................................12 | ||||
5.5. Establishing Sessions between Entities behind NATs ........12 | ||||
6. RTP Requirements ...............................................13 | ||||
7. Payload Formats for Packet Loopback ............................13 | ||||
7.1. Encapsulated Payload Format ...............................14 | ||||
7.2. Direct Loopback RTP Payload Format ........................16 | ||||
8. SRTP Behavior ..................................................17 | ||||
9. RTCP Requirements ..............................................18 | ||||
10. Congestion Control ............................................18 | ||||
11. Examples ......................................................18 | ||||
11.1. Offer for Specific Media Loopback Type ...................19 | ||||
11.2. Offer for Choice of Media Loopback Type ..................19 | ||||
11.3. Answerer Rejecting Loopback Media ........................20 | ||||
12. Security Considerations .......................................21 | ||||
13. Implementation Considerations .................................22 | ||||
14. IANA Considerations ...........................................22 | ||||
14.1. SDP Attributes ...........................................22 | ||||
14.2. Media Types ..............................................23 | ||||
15. Acknowledgements ..............................................31 | ||||
16. References ....................................................31 | ||||
16.1. Normative References .....................................31 | ||||
16.2. Informative References ...................................32 | ||||
1.1 Use Cases Supported | 1. Introduction | |||
As a matter of terminology in this document, packets flow from one | The overall quality, reliability, and performance of VoIP, real-time | |||
peer acting as a "loopback source", to the other peer acting as a | text, and Video over IP services rely on the performance and quality | |||
"loopback mirror", which in turn returns packets to the loopback | of the media path. In order to assure the quality of the delivered | |||
source. In advance of the session, the peers negotiate to determine | media, there is a need to monitor the performance of the media | |||
which one acts in which role, using the SDP offer/answer exchange. | transport. One method of monitoring and managing the overall quality | |||
The negotiation also includes details such as the type of loopback | of real-time VoIP, real-time text, and Video over IP services is | |||
to be used. | through monitoring the quality of the media in an active session. | |||
This type of "active monitoring" of services is a method of | ||||
proactively managing the performance and quality of VoIP-based | ||||
services. | ||||
This specification supports three use cases: "encapsulated packet | The goal of active monitoring is to measure the media quality of a | |||
loopback", "direct loopback", and "media loopback". These are | VoIP, real-time text, or Video over IP session. A way to achieve | |||
distinguished by the treatment of incoming RTP packets at the | this goal is to request an endpoint to loop media back to the other | |||
loopback mirror. | endpoint and to provide media statistics (e.g., RTP Control Protocol | |||
(RTCP) [RFC3550] and RTCP Extended Reports (RTCP-XR) [RFC3611] | ||||
information). Another method involves deployment of special | ||||
endpoints that always loop incoming media back for all sessions. | ||||
Although the latter method has been used and is functional, it does | ||||
not scale to support large networks and introduces new network | ||||
management challenges. Further, it does not offer the granularity of | ||||
testing a specific endpoint that may be exhibiting problems. | ||||
1.1.1 Encapsulated Packet Loopback | The extension defined in this document introduces new SDP media types | |||
and attributes that enable establishment of media sessions where the | ||||
media is looped back to the transmitter. The SDP offer/answer model | ||||
[RFC3264] is used to establish a loopback connection. Furthermore, | ||||
this extension provides guidelines on handling RTP [RFC3550], as well | ||||
as usage of RTCP [RFC3550] and RTCP-XR [RFC3611] for reporting media- | ||||
related measurements. | ||||
In the encapsulated packet loopback case, the entire incoming RTP | 1.1. Use Cases Supported | |||
packet is encapsulated as payload within an outer RTP packet that | ||||
is specific to this use case and specified in Section 7.1. The | ||||
encapsulated packet is returned to the loopback source. The | ||||
loopback source can generate statistics for one-way path | ||||
performance up to the RTP level for each direction of travel by | ||||
examining sequence numbers and timestamps in the encapsulating | ||||
outer RTP header and the encapsulated RTP packet payload. The | ||||
loopback source can also play back the returned media content for | ||||
evaluation. | ||||
Because the encapsulating RTP packet header extends the packet | As a matter of terminology in this document, packets flow from one | |||
size, it could encounter difficulties in an environment where the | peer acting as a "loopback source", to the other peer acting as a | |||
original RTP packet size is close to the path Maximum Transmission | "loopback mirror", which in turn returns packets to the loopback | |||
Unit (MTU) size. The encapsulating payload format therefore offers | source. In advance of the session, the peers negotiate to determine | |||
the possibility of RTP-level fragmentation of the returned packets. | which one acts in which role, using the SDP offer/answer exchange. | |||
The use of this facility could affect statistics derived for the | The negotiation also includes details such as the type of loopback to | |||
return path. In addition, the increased bit rate required in the | be used. | |||
return direction may affect these statistics more directly in a | ||||
restricted-bandwidth situation. | ||||
1.1.2 Direct Loopback | This specification supports three use cases: "encapsulated packet | |||
loopback", "direct loopback", and "media loopback". These are | ||||
distinguished by the treatment of incoming RTP packets at the | ||||
loopback mirror. | ||||
In the direct loopback case, the loopback mirror copies the payload | 1.1.1. Encapsulated Packet Loopback | |||
of the incoming RTP packet into a new RTP packet, using a payload | ||||
format specific to this use case and specified in Section 7.2. The | ||||
loopback mirror returns the new packet to the packet source. There | ||||
is no provision in this case for RTP-level fragmentation. | ||||
This use case has the advantage of keeping the packet size the same | In the encapsulated packet loopback case, the entire incoming RTP | |||
in both directions. The packet source can compute only two-way | packet is encapsulated as payload within an outer RTP packet that is | |||
path statistics from the direct loopback packet header, but can | specific to this use case and specified in Section 7.1. The | |||
play back the returned media content. | encapsulated packet is returned to the loopback source. The loopback | |||
source can generate statistics for one-way path performance up to the | ||||
RTP level for each direction of travel by examining sequence numbers | ||||
and timestamps in the encapsulating outer RTP header and the | ||||
encapsulated RTP packet payload. The loopback source can also play | ||||
back the returned media content for evaluation. | ||||
It has been suggested that the loopback source, knowing that the | Because the encapsulating RTP packet header extends the packet size, | |||
incoming packet will never be passed to a decoder, can store a | it could encounter difficulties in an environment where the original | |||
timestamp and sequence number inside the payload of the packet it | RTP packet size is close to the path Maximum Transmission Unit (MTU) | |||
sends to the mirror, then extract that information from the | size. The encapsulating payload format therefore offers the | |||
returned direct loopback packet and compute one-way path statistics | possibility of RTP-level fragmentation of the returned packets. The | |||
as in the previous case. Obviously, playout of returned content is | use of this facility could affect statistics derived for the return | |||
no longer possible if this is done. | path. In addition, the increased bit rate required in the return | |||
direction may affect these statistics more directly in a restricted- | ||||
bandwidth situation. | ||||
1.1.3 Media Loopback | 1.1.2. Direct Loopback | |||
In the media loopback case, the loopback mirror submits the | In the direct loopback case, the loopback mirror copies the payload | |||
incoming packet to a decoder appropriate to the incoming payload | of the incoming RTP packet into a new RTP packet, using a payload | |||
type. The packet is taken as close as possible to the analog level, | format specific to this use case and specified in Section 7.2. The | |||
then re-encoded according to an outgoing format determined by SDP | loopback mirror returns the new packet to the packet source. There | |||
negotiation. The reencoded content is returned to the loopback | is no provision in this case for RTP-level fragmentation. | |||
source as an RTP packet with payload type corresponding to the | ||||
reencoding format. | ||||
This usage allows trouble-shooting at the codec level. The | This use case has the advantage of keeping the packet size the same | |||
capability for path statistics is limited to what is available from | in both directions. The packet source can compute only two-way path | |||
RTCP reports. | statistics from the direct loopback packet header but can play back | |||
the returned media content. | ||||
2. Terminology | It has been suggested that the loopback source, knowing that the | |||
incoming packet will never be passed to a decoder, can store a | ||||
timestamp and sequence number inside the payload of the packet it | ||||
sends to the mirror, then extract that information from the returned | ||||
direct loopback packet and compute one-way path statistics as in the | ||||
previous case. Obviously, playout of returned content is no longer | ||||
possible if this is done. | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | 1.1.3. Media Loopback | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | ||||
this document are to be interpreted as described in RFC 2119 | ||||
[RFC2119]. | ||||
SDP: Session Description Protocol, as defined in [RFC4566]. This | In the media loopback case, the loopback mirror submits the incoming | |||
document assumes the SDP offer/answer model is followed, per | packet to a decoder appropriate to the incoming payload type. The | |||
[RFC3264], but does not assume any specific signaling protocol for | packet is taken as close as possible to the analog level, then | |||
carrying the SDP. | re-encoded according to an outgoing format determined by SDP | |||
negotiation. The re-encoded content is returned to the loopback | ||||
source as an RTP packet with payload type corresponding to the | ||||
re-encoding format. | ||||
The following terms are borrowed from [RFC3264] definitions: offer, | This usage allows troubleshooting at the codec level. The capability | |||
offerer, answer, answerer, and agent. | for path statistics is limited to what is available from RTCP | |||
reports. | ||||
3. Overview of Operation | 2. Terminology | |||
This document defines two loopback 'types', two 'roles', and two | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
encoding formats for loopback. For any given SDP offerer or | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
answerer pair, one side is the source of RTP packets, while the | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
other is the mirror looping packets/media back. Those define the | ||||
two loopback roles. As the mirror, two 'types' of loopback can be | ||||
performed: packet-level or media-level. When media-level is used, | ||||
there is no further choice of encoding format - there is only one | ||||
format: whatever is indicated for normal media, since the "looping" | ||||
is performed at the codec level. When packet-level looping is | ||||
performed, however, the mirror can either send back RTP in an | ||||
encapsulated format or direct-loopback format. The rest of this | ||||
document describes these loopback types, roles, and encoding | ||||
formats, and the SDP offer/answer rules for indicating them. | ||||
3.1 SDP Offerer Behavior | SDP: Session Description Protocol, as defined in [RFC4566]. This | |||
document assumes that the SDP offer/answer model is followed, | ||||
per [RFC3264], but does not assume any specific signaling | ||||
protocol for carrying the SDP. | ||||
An SDP offerer compliant to this specification and attempting to | The following terms are borrowed from [RFC3264] definitions: offer, | |||
establish a media session with media loopback will include | offerer, answer, answerer, and agent. | |||
"loopback" media attributes for each individual media description | ||||
in the offer message that it wishes to have looped back. Note that | ||||
the offerer may choose to only request loop back for some media | ||||
descriptions/streams but not others. For example it might wish to | ||||
request loopback for a video stream but not audio, or vice-versa. | ||||
The offerer will look for the "loopback" media attributes in the | 3. Overview of Operation | |||
media description(s) of the response from the SDP answer for | ||||
confirmation that the request is accepted. | ||||
3.2 SDP Answerer Behavior | This document defines two loopback 'types', two 'roles', and two | |||
encoding formats for loopback. For any given SDP offerer or answerer | ||||
pair, one side is the source of RTP packets, while the other is the | ||||
mirror looping packets/media back. Those define the two loopback | ||||
roles. As the mirror, two 'types' of loopback can be performed: | ||||
packet-level or media-level. When media-level is used, there is no | ||||
further choice of encoding format -- there is only one format: | ||||
whatever is indicated for normal media, since the "looping" is | ||||
performed at the codec level. When packet-level looping is | ||||
performed, however, the mirror can either send back RTP in an | ||||
encapsulated format or direct loopback format. The rest of this | ||||
document describes these loopback types, roles, and encoding formats, | ||||
and the SDP offer/answer rules for indicating them. | ||||
In order to accept a loopback offer (that is, an offer containing | 3.1. SDP Offerer Behavior | |||
"loopback" in the media description), an SDP answerer includes the | ||||
"loopback" media attribute in each media description for which it | ||||
desires loopback. | ||||
An answerer can reject an offered stream (either with loopback- | An SDP offerer compliant to this specification and attempting to | |||
source or loopback-mirror) if the loopback-type is not specified, | establish a media session with media loopback will include "loopback" | |||
the specified loopback-type is not supported, or the endpoint | media attributes for each individual media description in the offer | |||
cannot honor the offer for any other reason. The loopback request | message that it wishes to have looped back. Note that the offerer | |||
is rejected by setting the stream's media port number to zero in | may choose to only request loopback for some media | |||
the answer as defined in RFC 3264 [RFC3264], or by rejecting the | descriptions/streams but not others. For example, it might wish to | |||
entire offer (i.e., by rejecting the session request entirely). | request loopback for a video stream but not audio, or vice versa. | |||
Note that an answerer that is not compliant to this specification | The offerer will look for the "loopback" media attributes in the | |||
and which receives an offer with the "loopback" media attributes | media description(s) of the response from the SDP answer for | |||
would ignore the attributes and treat the incoming offer as a | confirmation that the request is accepted. | |||
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. | ||||
4. New SDP Attributes | 3.2. SDP Answerer Behavior | |||
Three new SDP media-level attributes are defined: one indicates the | In order to accept a loopback offer (that is, an offer containing | |||
type of loopback, and the other two define the role of the agent. | "loopback" in the media description), an SDP answerer includes the | |||
"loopback" media attribute in each media description for which it | ||||
desires loopback. | ||||
4.1 Loopback Type Attribute | An answerer can reject an offered stream (either with loopback-source | |||
or loopback-mirror) 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 is | ||||
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 (i.e., by rejecting the session request entirely). | ||||
This specification defines a new "loopback" attribute, which | Note that an answerer that is not compliant to this specification and | |||
indicates that the agent wishes to perform loopback, and the type | that receives an offer with the "loopback" media attributes would | |||
of loopack that the agent is able to do. The loopback-type is a | ignore the attributes and treat the incoming offer as a normal | |||
value media attribute [RFC4566] with the following syntax: | 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. | ||||
a=loopback:<loopback-type> | 4. New SDP Attributes | |||
Following is the Augmented BNF [RFC5234] for loopback-type: | Three new SDP media-level attributes are defined: one indicates the | |||
type of loopback, and the other two define the role of the agent. | ||||
attribute /= loopback-attr | 4.1. Loopback-Type Attribute | |||
; attribute defined in RFC 4566 | ||||
loopback-attr = "loopback:" SP loopback-type | This specification defines a new "loopback" attribute, which | |||
loopback-type = loopback-choice [1*SP loopback-choice] | indicates that the agent wishes to perform loopback, and the type of | |||
loopback-choice = loopback-type-pkt / loopback-type-media | loopback that the agent is able to do. The loopback-type is a value | |||
loopback-type-pkt = "rtp-pkt-loopback" | media attribute [RFC4566] with the following syntax: | |||
loopback-type-media = "rtp-media-loopback" | ||||
The loopback-type is used to indicate the type of loopback. The | a=loopback:<loopback-type> | |||
loopback-type values are rtp-pkt-loopback, and rtp-media-loopback. | ||||
rtp-pkt-loopback: In this mode, the RTP packets are looped back to | Following is the Augmented BNF [RFC5234] for loopback-type: | |||
the sender at a point before the encoder/decoder function in the | ||||
receive direction to a point after the encoder/decoder function in | ||||
the send direction. This effectively re-encapsulates the RTP | ||||
payload with the RTP/UDP/IP headers appropriate for sending it in | ||||
the reverse direction. Any type of encoding related functions, | ||||
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 | ||||
new payload type and format. Section 7 describes the payload | ||||
formats that are to be used for this type of loopback. This type | ||||
of loopback applies to the encapsulated and direct loopback use- | ||||
cases described in Section 1.1. | ||||
rtp-media-loopback: This loopback is activated as close as possible | attribute =/ loopback-attr | |||
to the analog interface and after the decoder so that the RTP | ; attribute defined in RFC 4566 | |||
packets are subsequently re-encoded prior to transmission back to | ||||
the sender. This type of loopback applies to the media loopback | ||||
use-case described in Section 1.1.3. | ||||
4.2 Loopback Role Attributes: loopback-source and loopback-mirror | loopback-attr = "loopback:" SP loopback-type | |||
loopback-type = loopback-choice [1*SP loopback-choice] | ||||
loopback-choice = loopback-type-pkt / loopback-type-media | ||||
loopback-type-pkt = "rtp-pkt-loopback" | ||||
loopback-type-media = "rtp-media-loopback" | ||||
The loopback-type is used to indicate the type of loopback. The | ||||
loopback-type values are rtp-pkt-loopback and rtp-media-loopback. | ||||
The loopback role defines two property media attributes [RFC4566] | rtp-pkt-loopback: In this mode, the RTP packets are looped back to | |||
that are used to indicate the role of the agent generating the SDP | the sender at a point before the encoder/decoder function in the | |||
offer or answer. The syntax of the two loopback role media | receive direction to a point after the encoder/decoder function in | |||
attributes are as follows: | the send direction. This effectively re-encapsulates the RTP | |||
payload with the RTP/UDP/IP headers appropriate for sending it in | ||||
the reverse direction. Any type of encoding-related functions, | ||||
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 new payload type and format. Section 7 describes the payload | ||||
formats that are to be used for this type of loopback. This type | ||||
of loopback applies to the encapsulated and direct loopback use | ||||
cases described in Section 1.1. | ||||
a=loopback-source | rtp-media-loopback: This loopback is activated as close as possible | |||
to the analog interface and after the decoder so that the RTP | ||||
packets are subsequently re-encoded prior to transmission back to | ||||
the sender. This type of loopback applies to the media loopback | ||||
use case described in Section 1.1.3. | ||||
and | 4.2. Loopback-Role Attributes: loopback-source and loopback-mirror | |||
a=loopback-mirror | The loopback role defines two property media attributes [RFC4566] | |||
that are used to indicate the role of the agent generating the SDP | ||||
offer or answer. The syntax of the two loopback-role media | ||||
attributes is as follows: | ||||
Following is the Augmented BNF [RFC5234] for loopback-type: | a=loopback-source | |||
attribute /= loopback-source / loopback-mirror | and | |||
; attribute defined in RFC 4566 | ||||
loopback-source = "loopback-source" | ||||
loopback-mirror = "loopback-mirror" | ||||
loopback-source: This attribute specifies that the entity that | a=loopback-mirror | |||
generated the SDP is the media source and expects the receiver of | ||||
the SDP message to act as a loopback-mirror. | ||||
loopback-mirror: This attribute specifies that the entity that | Following is the Augmented BNF [RFC5234] for loopback-source and | |||
generated the SDP will mirror (echo) all received media back to the | loopback-mirror: | |||
sender of the RTP stream. No media is generated locally by the | ||||
looping back entity for transmission in the mirrored stream. | ||||
The "m=" line in the SDP includes all the payload types that will | attribute =/ loopback-source / loopback-mirror | |||
be used during the loopback session. The complete payload space for | ; attribute defined in RFC 4566 | |||
the session is specified in the "m=" line and the rtpmap attribute | loopback-source = "loopback-source" | |||
is used to map from the payload type number to an encoding name | loopback-mirror = "loopback-mirror" | |||
denoting the payload format to be used. | ||||
5. Rules for Generating the SDP offer/answer | loopback-source: This attribute specifies that the entity that | |||
generated the SDP is the media source and expects the receiver of | ||||
the SDP message to act as a loopback mirror. | ||||
5.1 Generating the SDP Offer for Loopback Session | loopback-mirror: This attribute specifies that the entity that | |||
generated the SDP will mirror (echo) all received media back to | ||||
the sender of the RTP stream. No media is generated locally by | ||||
the looping-back entity for transmission in the mirrored stream. | ||||
If an offerer wishes to make a loopback request, it includes both | The "m=" line in the SDP includes all the payload types that will be | |||
the loopback-type and loopback-role attributes in a valid SDP | used during the loopback session. The complete payload space for the | |||
offer: | session is specified in the "m=" line, and the rtpmap attribute is | |||
used to map from the payload type number to an encoding name denoting | ||||
the payload format to be used. | ||||
Example: m=audio 41352 RTP/AVP 0 8 100 | 5. Rules for Generating the SDP Offer/Answer | |||
a=loopback:rtp-media-loopback | ||||
a=loopback-source | ||||
a=rtpmap:0 pcmu/8000 | ||||
a=rtpmap:8 pcma/8000 | ||||
a=rtpmap:100 G7221/16000/1 | ||||
Since media loopback requires bidirectional RTP, its normal | 5.1. Generating the SDP Offer for Loopback Session | |||
direction mode is "sendrecv"; the "sendrecv" direction attribute | ||||
MAY be encoded in SDP or not, as per Section 5.1 of [RFC3264], | ||||
since it is implied by default. If either the loopback source or | ||||
mirror wish to disable loopback use during a session, the direction | ||||
mode attribute "inactive" MUST be used as per [RFC3264]. The | ||||
direction mode attributes "recvonly" and "sendonly" are | ||||
incompatible with the loopback mechanism and MUST NOT be indicated | ||||
when generating an SDP Offer or Answer. When receiving an SDP | ||||
Offer or Answer, if "recvonly" or "sendonly" is indicated for | ||||
loopback, the SDP-receiving agent SHOULD treat it as a protocol | ||||
failure of the loopback negotiation and terminate the session | ||||
through its normal means (e.g., by sending a SIP BYE if SIP is | ||||
used), or reject the offending media stream. | ||||
The offerer may offer more than one loopback-type in the SDP offer. | If an offerer wishes to make a loopback request, it includes both the | |||
The port number and the address in the offer (m/c= lines) indicate | loopback-type and loopback-role attributes in a valid SDP offer: | |||
where the offerer would like to receive the media stream(s). The | ||||
payload type numbers indicate the value of the payload the offerer | ||||
expects to receive. However, the answer might indicate a subset of | ||||
payload type numbers from those given in the offer. In that case, | ||||
the offerer MUST only send the payload types received in the | ||||
answer, per normal SDP offer/answer rules. | ||||
If the offer indicates rtp-pkt-loopback support, the offer MUST | Example: m=audio 41352 RTP/AVP 0 8 100 | |||
also contain either an encapsulated or direct loopback encoding | a=loopback:rtp-media-loopback | |||
format encoding name, or both, as defined in Sections 7.1 and 7.2 | a=loopback-source | |||
of this document. If the offer only indicates rtp-media-loopback | a=rtpmap:0 pcmu/8000 | |||
support, then neither encapsulated nor direct loopback encoding | a=rtpmap:8 pcma/8000 | |||
formats apply and they MUST NOT be in the offer. | a=rtpmap:100 G7221/16000/1 | |||
If loopback-type is rtp-pkt-loopback, the loopback-mirror MUST send | Since media loopback requires bidirectional RTP, its normal direction | |||
and the loopback-source MUST receive the looped back packets | mode is "sendrecv"; the "sendrecv" direction attribute MAY be encoded | |||
encoded in one of the two payload formats (encapsulated RTP or | in SDP or not, as per Section 5.1 of [RFC3264], since it is implied | |||
direct loopback) as defined in Section 7. | by default. If either the loopback source or mirror wishes to | |||
disable loopback use during a session, the direction mode attribute | ||||
"inactive" MUST be used as per [RFC3264]. The direction mode | ||||
attributes "recvonly" and "sendonly" are incompatible with the | ||||
loopback mechanism and MUST NOT be indicated when generating an SDP | ||||
offer or answer. When receiving an SDP offer or answer, if | ||||
"recvonly" or "sendonly" is indicated for loopback, the SDP-receiving | ||||
agent SHOULD treat it as a protocol failure of the loopback | ||||
negotiation and terminate the session through its normal means (e.g., | ||||
by sending a SIP BYE if SIP is used) or reject the offending media | ||||
stream. | ||||
Example: m=audio 41352 RTP/AVP 0 8 112 | The offerer may offer more than one loopback-type in the SDP offer. | |||
a=loopback:rtp-pkt-loopback | The port number and the address in the offer (m/c= lines) indicate | |||
a=loopback-source | where the offerer would like to receive the media stream(s). The | |||
a=rtpmap:112 encaprtp/8000 | payload type numbers indicate the value of the payload the offerer | |||
expects to receive. However, the answer might indicate a subset of | ||||
payload type numbers from those given in the offer. In that case, | ||||
the offerer MUST only send the payload types received in the answer, | ||||
per normal SDP offer/answer rules. | ||||
Example: m=audio 41352 RTP/AVP 0 8 112 | If the offer indicates rtp-pkt-loopback support, the offer MUST also | |||
a=loopback:rtp-pkt-loopback | contain either an encapsulated or direct loopback encoding format | |||
a=loopback-source | encoding name, or both, as defined in Sections 7.1 and 7.2 of this | |||
a=rtpmap:112 rtploopback/8000 | document. If the offer only indicates rtp-media-loopback support, | |||
then neither encapsulated nor direct loopback encoding formats apply | ||||
and they MUST NOT be in the offer. | ||||
5.2 Generating the SDP Answer for Loopback Session | If loopback-type is rtp-pkt-loopback, the loopback mirror MUST send, | |||
and the loopback source MUST receive, the looped-back packets encoded | ||||
in one of the two payload formats (encapsulated RTP or direct | ||||
loopback) as defined in Section 7. | ||||
As with the offer, an SDP answer for loopback follows SDP | Example: m=audio 41352 RTP/AVP 0 8 112 | |||
offer/answer rules for the direction attribute, but directions of | a=loopback:rtp-pkt-loopback | |||
"sendonly" or "recvonly" do not apply for loopback operation. | a=loopback-source | |||
a=rtpmap:112 encaprtp/8000 | ||||
The port number and the address in the answer (m/c= lines) indicate | Example: m=audio 41352 RTP/AVP 0 8 112 | |||
where the answerer would like to receive the media stream. The | a=loopback:rtp-pkt-loopback | |||
payload type numbers indicate the value of the payload types the | a=loopback-source | |||
answerer expects to send and receive. | a=rtpmap:112 rtploopback/8000 | |||
An answerer includes both the loopback role and loopback type | 5.2. Generating the SDP Answer for Loopback Session | |||
attributes in the answer to indicate that it will accept the | ||||
loopback request. When a stream is offered with the loopback-source | ||||
attribute, the corresponding stream in the response will be | ||||
loopback-mirror and vice versa, provided the answerer is capable of | ||||
supporting the requested loopback-type. | ||||
For example, if the offer contains the loopback-source attribute: | As with the offer, an SDP answer for loopback follows SDP | |||
offer/answer rules for the direction attribute, but directions of | ||||
"sendonly" or "recvonly" do not apply for loopback operation. | ||||
m=audio 41352 RTP/AVP 0 8 | The port number and the address in the answer (m/c= lines) indicate | |||
a=loopback:rtp-media-loopback | where the answerer would like to receive the media stream. The | |||
a=loopback-source | payload type numbers indicate the value of the payload types the | |||
answerer expects to send and receive. | ||||
The answer that is capable of supporting the offer must contain the | An answerer includes both the loopback-role and loopback-type | |||
loopback-mirror attribute: | attributes in the answer to indicate that it will accept the loopback | |||
request. When a stream is offered with the loopback-source | ||||
attribute, the corresponding stream in the response will be | ||||
loopback-mirror and vice versa, provided the answerer is capable of | ||||
supporting the requested loopback-type. | ||||
m=audio 12345 RTP/AVP 0 8 | For example, if the offer contains the loopback-source attribute: | |||
a=loopback:rtp-media-loopback | ||||
a=loopback-mirror | ||||
If a stream is offered with multiple loopback type attributes, the | m=audio 41352 RTP/AVP 0 8 | |||
answer MUST include only one of the loopback types that are | a=loopback:rtp-media-loopback | |||
accepted by the answerer. The answerer SHOULD give preference to | a=loopback-source | |||
the first loopback-type in the SDP offer. | ||||
For example, if the offer contains: | The answer that is capable of supporting the offer must contain the | |||
loopback-mirror attribute: | ||||
m=audio 41352 RTP/AVP 0 8 112 | m=audio 12345 RTP/AVP 0 8 | |||
a=loopback:rtp-media-loopback rtp-pkt-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-source | a=loopback-mirror | |||
a=rtpmap:112 encaprtp/8000 | ||||
The answer that is capable of supporting the offer and chooses to | If a stream is offered with multiple loopback-type attributes, the | |||
loopback the media using the rtp-media-loopback type must contain: | answer MUST include only one of the loopback types that are accepted | |||
by the answerer. The answerer SHOULD give preference to the first | ||||
loopback-type in the SDP offer. | ||||
m=audio 12345 RTP/AVP 0 8 | For example, if the offer contains: | |||
a=loopback:rtp-media-loopback | ||||
a=loopback-mirror | ||||
As specified in Section 7, if the loopback-type is | m=audio 41352 RTP/AVP 0 8 112 | |||
rtp-pkt-loopback, either the encapsulated RTP payload format or | a=loopback:rtp-media-loopback rtp-pkt-loopback | |||
direct loopback RTP payload format MUST be used for looped back | a=loopback-source | |||
packets. | a=rtpmap:112 encaprtp/8000 | |||
For example, if the offer contains: | The answer that is capable of supporting the offer and chooses to | |||
loopback the media using the rtp-media-loopback type must contain: | ||||
m=audio 41352 RTP/AVP 0 8 112 113 | m=audio 12345 RTP/AVP 0 8 | |||
a=loopback:rtp-pkt-loopback | a=loopback:rtp-media-loopback | |||
a=loopback-source | a=loopback-mirror | |||
a=rtpmap:112 encaprtp/8000 | ||||
a=rtpmap:113 rtploopback/8000 | ||||
The answer that is capable of supporting the offer must contain one | As specified in Section 7, if the loopback-type is rtp-pkt-loopback, | |||
of the following: | either the encapsulated RTP payload format or direct loopback RTP | |||
payload format MUST be used for looped-back packets. | ||||
m=audio 12345 RTP/AVP 0 8 112 | For example, if the offer contains: | |||
a=loopback:rtp-pkt-loopback | ||||
a=loopback-mirror | ||||
a=rtpmap:112 encaprtp/8000 | ||||
m=audio 12345 RTP/AVP 0 8 113 | m=audio 41352 RTP/AVP 0 8 112 113 | |||
a=loopback:rtp-pkt-loopback | a=loopback:rtp-pkt-loopback | |||
a=loopback-mirror | a=loopback-source | |||
a=rtpmap:113 rtploopback/8000 | a=rtpmap:112 encaprtp/8000 | |||
a=rtpmap:113 rtploopback/8000 | ||||
The previous examples used the 'encaprtp' and 'rtploopback' | The answer that is capable of supporting the offer must contain one | |||
encoding names, which will be defined in Sections 7.1.3 and 7.2.3. | of the following: | |||
5.3 Offerer Processing of the SDP Answer | m=audio 12345 RTP/AVP 0 8 112 | |||
a=loopback:rtp-pkt-loopback | ||||
a=loopback-mirror | ||||
a=rtpmap:112 encaprtp/8000 | ||||
If the received SDP answer does not contain an a=loopback-mirror or | m=audio 12345 RTP/AVP 0 8 113 | |||
a=loopback-source attribute, it is assumed that the loopback | a=loopback:rtp-pkt-loopback | |||
extensions are not supported by the remote agent. This is not a | a=loopback-mirror | |||
protocol failure, and instead merely completes the SDP offer/answer | a=rtpmap:113 rtploopback/8000 | |||
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.4 Modifying the Session | The previous examples used the 'encaprtp' and 'rtploopback' encoding | |||
names, which will be defined in Sections 7.1.3 and 7.2.3. | ||||
At any point during the loopback session, either participant MAY | 5.3. Offerer Processing of the SDP Answer | |||
issue a new offer to modify the characteristics of the previous | ||||
session, as defined in Section 8 of RFC 3264 [RFC3264]. This also | ||||
includes transitioning from a normal media processing mode to | ||||
loopback mode, and vice versa. | ||||
5.5 Establishing Sessions Between Entities Behind NAT | If the received SDP answer does not contain an a=loopback-mirror or | |||
a=loopback-source attribute, it is assumed that the loopback | ||||
extensions are 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). | ||||
Interactive Connectivity Establishment (ICE) [RFC5245], Traversal | 5.4. Modifying the Session | |||
Using Relays around NAT (TURN) [RFC5766], and Session Traversal | ||||
Utilities for NAT (STUN) [RFC5389] provide a general solution to | ||||
establishing media sessions between entities that are behind | ||||
Network Address Translators (NATs). Loopback sessions that involve | ||||
one or more endpoints behind NATs can also use these general | ||||
solutions wherever possible. | ||||
If ICE is not supported, then in the case of loopback, the | At any point during the loopback session, either participant MAY | |||
mirroring entity will not send RTP packets, and therefore will not | issue a new offer to modify the characteristics of the previous | |||
automatically create the NAT pinhole in the way that other SIP | session, as defined in Section 8 of RFC 3264 [RFC3264]. This also | |||
sessions do. Therefore, if the mirroring entity is behind a NAT, | includes transitioning from a normal media processing mode to | |||
it MUST send some packets to the identified address/port(s) of the | loopback mode, and vice versa. | |||
peer, in order to open the NAT pinhole. Using ICE, this would be | ||||
accomplished with the STUN connectivity check process, or through a | ||||
TURN server connection. If ICE is not supported, either [RFC6263] | ||||
or Section 10 of ICE [RFC5245] can be followed to open the pinhole | ||||
and keep the NAT binding alive/refreshed. | ||||
Note that for any form of NAT traversal to function, symmetric | 5.5. Establishing Sessions between Entities behind NATs | |||
RTP/RTCP [RFC4961] MUST be used, unless the mirror can control the | ||||
NAT(s) in its path to create explicit pinholes. In other words | ||||
both agents MUST send packets from the source address and port they | ||||
receive packets on, unless some mechanism is used to avoid that | ||||
need (e.g., by using Port Control Protocol). | ||||
6. RTP Requirements | Interactive Connectivity Establishment (ICE) [RFC5245], Traversal | |||
Using Relays around NAT (TURN) [RFC5766], and Session Traversal | ||||
Utilities for NAT (STUN) [RFC5389] provide a general solution to | ||||
establishing media sessions between entities that are behind Network | ||||
Address Translators (NATs). Loopback sessions that involve one or | ||||
more endpoints behind NATs can also use these general solutions | ||||
wherever possible. | ||||
A loopback source MUST NOT send multiple source streams on the same | If ICE is not supported, then in the case of loopback, the mirroring | |||
5-tuple, since there is no means for the mirror to indicate which | entity will not send RTP packets and therefore will not automatically | |||
is which in its mirrored RTP packets. | create the NAT pinhole in the way that other SIP sessions do. | |||
Therefore, if the mirroring entity is behind a NAT, it MUST send some | ||||
packets to the identified address/port(s) of the peer, in order to | ||||
open the NAT pinhole. Using ICE, this would be accomplished with the | ||||
STUN connectivity check process or through a TURN server connection. | ||||
If ICE is not supported, either [RFC6263] or Section 10 of ICE | ||||
[RFC5245] can be followed to open the pinhole and keep the NAT | ||||
binding alive/refreshed. | ||||
A loopback mirror that is compliant to this specification and | Note that for any form of NAT traversal to function, symmetric | |||
accepts media with rtp-pkt-loopback loopback type loops back the | RTP/RTCP [RFC4961] MUST be used, unless the mirror can control the | |||
incoming RTP packets using either the encapsulated RTP payload | NAT(s) in its path to create explicit pinholes. In other words, both | |||
format or the direct loopback RTP payload format as defined in | agents MUST send packets from the source address and port they | |||
Section 7 of this specification. | receive packets on, unless some mechanism is used to avoid that need | |||
(e.g., by using the Port Control Protocol). | ||||
A device that is compliant to this specification and performing the | 6. RTP Requirements | |||
mirroring using the loopback type rtp-media-loopback MUST transmit | ||||
all received media back to the sender, unless congestion feedback | ||||
or other lower-layer constraints prevent it from doing so. The | ||||
incoming media is treated as if it were to be played; for example, | ||||
the media stream may receive treatment from Packet Loss Concealment | ||||
(PLC) algorithms. The mirroring entity re-generates all the RTP | ||||
header fields as it would when transmitting media. The mirroring | ||||
entity MAY choose to encode the loopback media according to any of | ||||
the media descriptions supported by the offering entity. | ||||
Furthermore, in cases where the same media type is looped back, the | ||||
mirroring entity can choose to preserve number of frames/packet and | ||||
bitrate of the encoded media according to the received media. | ||||
7. Payload formats for Packet loopback | A loopback source MUST NOT send multiple source streams on the same | |||
The payload formats described in this section MUST be used by a | 5-tuple, since there is no means for the mirror to indicate which is | |||
loopback-mirror when 'rtp-pkt-loopback' is the specified | which in its mirrored RTP packets. | |||
loopback-type. Two different formats are specified here - an | ||||
encapsulated RTP payload format and a direct loopback RTP payload | ||||
format. The encapsulated RTP payload format should be used when | ||||
the incoming RTP header information needs to be preserved during | ||||
the loopback operation. This is useful in cases where loopback | ||||
source needs to measure performance metrics in both directions. | ||||
However, this comes at the expense of increased packet size as | ||||
described in Section 7.1. The direct loopback RTP payload format | ||||
should be used when bandwidth requirements prevent the use of | ||||
encapsulated RTP payload format. | ||||
7.1 Encapsulated Payload format | A loopback mirror that is compliant to this specification and accepts | |||
media with the loopback type rtp-pkt-loopback loops back the incoming | ||||
RTP packets using either the encapsulated RTP payload format or the | ||||
direct loopback RTP payload format as defined in Section 7 of this | ||||
specification. | ||||
A received RTP packet is encapsulated in the payload section of the | A device that is compliant to this specification and performing the | |||
RTP packet generated by a loopback-mirror. Each received packet is | mirroring using the loopback type rtp-media-loopback MUST transmit | |||
encapsulated in a separate encapsulating RTP packet; the | all received media back to the sender, unless congestion feedback or | |||
encapsulated packet would be fragmented only if required (for | other lower-layer constraints prevent it from doing so. The incoming | |||
example: due to MTU limitations). | media is treated as if it were to be played; for example, the media | |||
stream may receive treatment from Packet Loss Concealment (PLC) | ||||
algorithms. The mirroring entity re-generates all the RTP header | ||||
fields as it would when transmitting media. The mirroring entity MAY | ||||
choose to encode the loopback media according to any of the media | ||||
descriptions supported by the offering entity. Furthermore, in cases | ||||
where the same media type is looped back, the mirroring entity can | ||||
choose to preserve the number of frames/packets and the bit rate of | ||||
the encoded media according to the received media. | ||||
7.1.1 Usage of RTP Header fields | 7. Payload Formats for Packet Loopback | |||
Payload Type (PT): The assignment of an RTP payload type for this | The payload formats described in this section MUST be used by a | |||
packet format is outside the scope of this document; it is either | loopback mirror when 'rtp-pkt-loopback' is the specified | |||
specified by the RTP profile under which this payload format is | loopback-type. Two different formats are specified here -- an | |||
used or more likely signaled dynamically out-of-band (e.g., using | encapsulated RTP payload format and a direct loopback RTP payload | |||
SDP; Section 7.1.3 defines the name binding). | format. The encapsulated RTP payload format should be used when the | |||
incoming RTP header information needs to be preserved during the | ||||
loopback operation. This is useful in cases where the loopback | ||||
source needs to measure performance metrics in both directions. | ||||
However, this comes at the expense of increased packet size as | ||||
described in Section 7.1. The direct loopback RTP payload format | ||||
should be used when bandwidth requirements prevent the use of the | ||||
encapsulated RTP payload format. | ||||
Marker (M) bit: If the received RTP packet is looped back in | 7.1. Encapsulated Payload Format | |||
multiple encapsulating RTP packets, the M bit is set to 1 in every | ||||
fragment except the last packet, otherwise it is set to 0. | ||||
Extension (X) bit: Defined by the RTP Profile used. | A received RTP packet is encapsulated in the payload section of the | |||
RTP packet generated by a loopback mirror. Each received packet is | ||||
encapsulated in a separate encapsulating RTP packet; the encapsulated | ||||
packet would be fragmented only if required (for example, due to MTU | ||||
limitations). | ||||
Sequence Number: The RTP sequence number SHOULD be generated by the | 7.1.1. Usage of RTP Header Fields | |||
loopback-mirror in the usual manner with a constant random offset | ||||
as described in RFC 3550 [RFC3550]. | ||||
Timestamp: The RTP timestamp denotes the sampling instant for when | Payload Type (PT): The assignment of an RTP payload type for this | |||
the loopback-mirror is transmitting this packet to the loopback- | packet format is outside the scope of this document; it is either | |||
source. The RTP timestamp MUST use the same clock rate as that of | specified by the RTP profile under which this payload format is | |||
the encapsulated packet. The initial value of the timestamp SHOULD | used or more likely signaled dynamically out-of-band (e.g., using | |||
be random for security reasons (see Section 5.1 of RFC 3550 | SDP; Section 7.1.3 defines the name binding). | |||
[RFC3550]). | ||||
SSRC: set as described in RFC 3550 [RFC3550]. | Marker (M) bit: If the received RTP packet is looped back in multiple | |||
encapsulating RTP packets, the M bit is set to 1 in every fragment | ||||
except the last packet; otherwise, it is set to 0. | ||||
CC and CSRC fields are used as described in RFC 3550 [RFC3550]. | Extension (X) bit: This bit is defined by the RTP profile used. | |||
7.1.2 RTP Payload Structure | Sequence Number: The RTP sequence number SHOULD be generated by the | |||
loopback mirror in the usual manner with a constant random offset | ||||
as described in RFC 3550 [RFC3550]. | ||||
The outer RTP header of the encapsulating packet is followed by the | Timestamp: The RTP timestamp denotes the sampling instant for when | |||
payload header defined in this section, after any header | the loopback mirror is transmitting this packet to the loopback | |||
extension(s). If the received RTP packet has to be looped back in | source. The RTP timestamp MUST use the same clock rate as that of | |||
multiple encapsulating packets due to fragmentation, the | the encapsulated packet. The initial value of the timestamp | |||
encapsulating RTP header in each packet is followed by the payload | SHOULD be random for security reasons (see Section 5.1 of RFC 3550 | |||
header defined in this section. The header is devised so that the | [RFC3550]). | |||
loopback-source can decode looped back packets in the presence of | ||||
moderate packet loss [RFC3550]. The RTP payload of the | ||||
encapsulating RTP packet starts with the payload header defined in | ||||
this section. | ||||
0 1 2 3 | Synchronization source (SSRC): This field is set as described in | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | RFC 3550 [RFC3550]. | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| receive timestamp | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| F | R | CC |M| PT | sequence number | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| transmit timestamp | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| synchronization source (SSRC) identifier | | ||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | ||||
| contributing source (CSRC) identifiers | | ||||
| .... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 1: Encapsulating RTP Packet Payload Header | ||||
The 12 octets after the receive timestamp are identical to the | The CSRC count (CC) and contributing source (CSRC) fields are used as | |||
encapsulated RTP header of the received packet except for the first | described in RFC 3550 [RFC3550]. | |||
2 bits of the first octet. In effect, the received RTP packet is | ||||
encapsulated by creating a new outer RTP header followed by 4 new | ||||
bytes of a receive timestamp, followed by the original received RTP | ||||
header and payload, except that the first two bits of the received | ||||
RTP header are overwritten as defined here. | ||||
Receive Timestamp: 32 bits | 7.1.2. RTP Payload Structure | |||
The Receive timestamp denotes the sampling instant for when the | The outer RTP header of the encapsulating packet is followed by the | |||
last octet of the received media packet that is being encapsulated | payload header defined in this section, after any header | |||
by the loopback-mirror is received from the loopback-source. The | extension(s). If the received RTP packet has to be looped back in | |||
same clock rate MUST be used by the loopback-source. The initial | multiple encapsulating packets due to fragmentation, the | |||
value of the timestamp SHOULD be random for security reasons (see | encapsulating RTP header in each packet is followed by the payload | |||
Section 5.1 of RFC 3550 [RFC3550]). | header defined in this section. The header is devised so that the | |||
loopback source can decode looped-back packets in the presence of | ||||
moderate packet loss [RFC3550]. The RTP payload of the encapsulating | ||||
RTP packet starts with the payload header defined in this section. | ||||
Fragmentation (F): 2 bits | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| receive timestamp | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| F | R | CC |M| PT | sequence number | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| transmit timestamp | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| synchronization source (SSRC) identifier | | ||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | ||||
| contributing source (CSRC) identifiers | | ||||
| .... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
First Fragment (00) /Last Fragment (01) /No Fragmentation(10)/ | Figure 1. Encapsulating RTP Packet Payload Header | |||
Intermediate Fragment (11). This field identifies how much of the | ||||
received packet is encapsulated in this packet by the loopback- | ||||
mirror. If the received packet is not fragmented, this field is | ||||
set to 10; otherwise the packet that contains the first fragments | ||||
sets this field to 00, the packet that contains the last fragment | ||||
sets this field to 01, all other packets set this field to 11. | ||||
7.1.3 Usage of SDP | The 12 octets after the receive timestamp are identical to the | |||
encapsulated RTP header of the received packet except for the first 2 | ||||
bits of the first octet. In effect, the received RTP packet is | ||||
encapsulated by creating a new outer RTP header followed by 4 new | ||||
bytes of a receive timestamp, followed by the original received RTP | ||||
header and payload, except that the first two bits of the received | ||||
RTP header are overwritten as defined here. | ||||
The payload type number for the encapsulated stream can be | Receive timestamp: 32 bits | |||
negotiated using SDP. There is no static payload type assignment | ||||
for the encapsulating stream, so dynamic payload type numbers MUST | ||||
be used. The binding to the name is indicated by an rtpmap | ||||
attribute. The name used in this binding is "encaprtp". | ||||
The following is an example SDP fragment for encapsulated RTP. | The receive timestamp denotes the sampling instant for when the last | |||
octet of the received media packet that is being encapsulated by the | ||||
loopback mirror is received from the loopback source. The same clock | ||||
rate MUST be used by the loopback source. The initial value of the | ||||
timestamp SHOULD be random for security reasons (see Section 5.1 of | ||||
RFC 3550 [RFC3550]). | ||||
m=audio 41352 RTP/AVP 112 | Fragmentation (F): 2 bits | |||
a=rtpmap:112 encaprtp/8000 | ||||
7.2 Direct loopback RTP payload format | Possible values are First Fragment (00), Last Fragment (01), | |||
No Fragmentation (10), or Intermediate Fragment (11). This field | ||||
identifies how much of the received packet is encapsulated in this | ||||
packet by the loopback mirror. If the received packet is not | ||||
fragmented, this field is set to 10; otherwise, the packet that | ||||
contains the first fragments sets this field to 00. The packet that | ||||
contains the last fragment sets this field to 01, and all other | ||||
packets set this field to 11. | ||||
The direct loopback RTP payload format can be used in scenarios | 7.1.3. Usage of SDP | |||
where the 16 byte overhead of the encapsulated payload format is of | ||||
concern, or simply due to local policy. When using this payload | ||||
format, the receiver loops back each received RTP packet payload | ||||
(not header) in a separate RTP packet. | ||||
Because a direct loopback format does not retain the original RTP | The payload type number for the encapsulated stream can be negotiated | |||
headers, there will be no indication of the original payload-type | using SDP. There is no static payload type assignment for the | |||
sent to the mirror, in looped-back packets. Therefore, the | encapsulating stream, so dynamic payload type numbers MUST be used. | |||
loopback source SHOULD only send one payload type per loopback RTP | The binding to the name is indicated by an rtpmap attribute. The | |||
session, if direct mode is used. | name used in this binding is "encaprtp". | |||
7.2.1 Usage of RTP Header fields | The following is an example SDP fragment for encapsulated RTP. | |||
Payload Type (PT): The assignment of an RTP payload type for the | m=audio 41352 RTP/AVP 112 | |||
encapsulating packet format is outside the scope of this document; | a=rtpmap:112 encaprtp/8000 | |||
it is either specified by the RTP profile under which this payload | ||||
format is used or more likely signaled dynamically out-of-band | ||||
(e.g., using SDP; Section 7.2.3 defines the name binding). | ||||
Marker (M) bit: Set to the value in the received packet. | 7.2. Direct Loopback RTP Payload Format | |||
Extension (X) bit: Defined by the RTP Profile used. | The direct loopback RTP payload format can be used in scenarios where | |||
the 16-byte overhead of the encapsulated payload format is of | ||||
concern, or simply due to local policy. When using this payload | ||||
format, the receiver loops back each received RTP packet payload (not | ||||
header) in a separate RTP packet. | ||||
Sequence Number: The RTP sequence number SHOULD be generated by the | Because a direct loopback format does not retain the original RTP | |||
loopback-mirror in the usual manner with a constant random offset, | headers, there will be no indication of the original payload-type | |||
as per [RFC3550]. | sent to the mirror, in looped-back packets. Therefore, the loopback | |||
source SHOULD only send one payload type per loopback RTP session if | ||||
direct mode is used. | ||||
Timestamp: The RTP timestamp denotes the sampling instant for when | 7.2.1. Usage of RTP Header Fields | |||
the loopback-mirror is transmitting this packet to the | ||||
loopback-source. The same clock rate MUST be used as that of the | ||||
received RTP packet. The initial value of the timestamp SHOULD be | ||||
random for security reasons (see Section 5.1 of RFC 3550 | ||||
[RFC3550]). | ||||
SSRC: set as described in RFC 3550 [RFC3550]. | Payload Type (PT): The assignment of an RTP payload type for the | |||
encapsulating packet format is outside the scope of this document; | ||||
it is either specified by the RTP profile under which this payload | ||||
format is used or more likely signaled dynamically out-of-band | ||||
(e.g., using SDP; Section 7.2.3 defines the name binding). | ||||
CC and CSRC fields are used as described in RFC 3550 [RFC3550]. | Marker (M) bit: This bit is set to the value in the received packet. | |||
7.2.2 RTP Payload Structure | Extension (X) bit: This bit is defined by the RTP profile used. | |||
This payload format does not define any payload specific headers. | Sequence Number: The RTP sequence number SHOULD be generated by the | |||
The loopback-mirror simply copies the RTP payload data from the | loopback mirror in the usual manner with a constant random offset, | |||
payload portion of the RTP packet received from the loopback- | as per [RFC3550]. | |||
source. | ||||
7.2.3 Usage of SDP | Timestamp: The RTP timestamp denotes the sampling instant for when | |||
the loopback mirror is transmitting this packet to the loopback | ||||
source. The same clock rate MUST be used as that of the received | ||||
RTP packet. The initial value of the timestamp SHOULD be random | ||||
for security reasons (see Section 5.1 of RFC 3550 [RFC3550]). | ||||
The payload type number for the payload loopback stream can be | SSRC: This field is set as described in RFC 3550 [RFC3550]. | |||
negotiated using a mechanism like SDP. There is no static payload | ||||
type assignment for the stream, so dynamic payload type numbers | ||||
MUST be used. The binding to the name is indicated by an rtpmap | ||||
attribute. The name used in this binding is "rtploopback". | ||||
The following is an example SDP fragment for direct loopback RTP | The CC and CSRC fields are used as described in RFC 3550 [RFC3550]. | |||
format. | ||||
m=audio 41352 RTP/AVP 112 | 7.2.2. RTP Payload Structure | |||
a=rtpmap:112 rtploopback/8000 | ||||
8. SRTP Behavior | This payload format does not define any payload-specific headers. | |||
The loopback mirror simply copies the RTP payload data from the | ||||
payload portion of the RTP packet received from the loopback source. | ||||
Secure RTP [RFC3711] MAY be used for loopback sessions. SRTP | 7.2.3. Usage of SDP | |||
operates at a lower logical layer than RTP, and thus if both sides | ||||
negotiate to use SRTP, each side uses its own key, performs | ||||
encryption/decryption, authentication, etc. Therefore the loopback | ||||
function on the mirror occurs after the SRTP packet has been | ||||
decrypted and authenticated, as a normal cleartext RTP packet | ||||
without an MKI or authentication tag; once the cleartext RTP packet | ||||
or payload is mirrored - either at the media-layer, direct packet- | ||||
layer, or encapsulated packet-layer - it is encrypted by the mirror | ||||
using its own key. | ||||
In order to provide the same level of protection to both forward | The payload type number for the payload loopback stream can be | |||
and reverse media flows (media to and from the mirror), if SRTP is | negotiated using a mechanism like SDP. There is no static payload | |||
used it MUST be used in both directions with the same properties. | type assignment for the stream, so dynamic payload type numbers MUST | |||
be used. The binding to the name is indicated by an rtpmap | ||||
attribute. The name used in this binding is "rtploopback". | ||||
9. RTCP Requirements | The following is an example SDP fragment for the direct loopback RTP | |||
format. | ||||
The use of the loopback attribute is intended for monitoring of | m=audio 41352 RTP/AVP 112 | |||
media quality of the session. Consequently the media performance | a=rtpmap:112 rtploopback/8000 | |||
information should be exchanged between the offering and the | ||||
answering entities. An offering or answering agent that is | ||||
compliant to this specification SHOULD support RTCP per [RFC3550] | ||||
and RTCP-XR per RFC 3611 [RFC3611]. Furthermore, if the offerer or | ||||
answerer choose to support RTCP-XR, they SHOULD support RTCP-XR | ||||
Loss Run Length Encoding (RLE) report block, Duplicate RLE report | ||||
block, Statistics Summary report block, and VoIP Metric Reports | ||||
Block per Sections 4.1, 4.2, 4.6, and 4.7 of RFC 3611 [RFC3611]. | ||||
The offerer and the answerer MAY support other RTCP-XR reporting | ||||
blocks as defined by RFC 3611 [RFC3611]. | ||||
10. Congestion Control | 8. SRTP Behavior | |||
All the participants in a media-level loopback session SHOULD | Secure RTP (SRTP) [RFC3711] MAY be used for loopback sessions. SRTP | |||
implement congestion control mechanisms as defined by the RTP | operates at a lower logical layer than RTP, and thus if both sides | |||
profile under which the loopback mechanism is implemented. For | negotiate to use SRTP, each side uses its own key and performs | |||
audio video profiles, implementations SHOULD conform to the | encryption/decryption, authentication, etc. Therefore, the loopback | |||
mechanism defined in Section 2 of RFC 3551 [RFC3551]. | function on the mirror occurs after the SRTP packet has been | |||
decrypted and authenticated, as a normal cleartext RTP packet without | ||||
a Master Key Identifier (MKI) or authentication tag; once the | ||||
cleartext RTP packet or payload is mirrored -- either at the media- | ||||
layer, direct packet-layer, or encapsulated packet-layer -- it is | ||||
encrypted by the mirror using its own key. | ||||
For packet-level loopback types, the loopback source SHOULD | In order to provide the same level of protection to both forward and | |||
implement congestion control. The mirror will simply reflect back | reverse media flows (media to and from the mirror), if SRTP is used | |||
the RTP packets it receives (either in encapsulated or direct | it MUST be used in both directions with the same properties. | |||
modes), therefore the source needs to control the congestion of | ||||
both forward and reverse paths by reducing its sending rate to the | ||||
mirror. This keeps the loopback mirror implementation simpler, and | ||||
provides more flexibility for the source performing a loopback | ||||
test. | ||||
11. Examples | 9. RTCP Requirements | |||
This section provides examples for media descriptions using SDP for | The use of the loopback attribute is intended for the monitoring of | |||
different scenarios. The examples are given for SIP-based | media quality of the session. Consequently, the media performance | |||
transactions and are abbreviated and do not show the complete | information should be exchanged between the offering and the | |||
signaling for convenience. | answering entities. An offering or answering agent that is compliant | |||
to this specification SHOULD support RTCP per [RFC3550] and RTCP-XR | ||||
per RFC 3611 [RFC3611]. Furthermore, if the offerer or answerer | ||||
chooses to support RTCP-XR, they SHOULD support the RTCP-XR Loss Run | ||||
Length Encoding (RLE) Report Block, Duplicate RLE Report Block, | ||||
Statistics Summary Report Block, and VoIP Metrics Report Block per | ||||
Sections 4.1, 4.2, 4.6, and 4.7 of RFC 3611 [RFC3611]. The offerer | ||||
and the answerer MAY support other RTCP-XR reporting blocks as | ||||
defined by RFC 3611 [RFC3611]. | ||||
11.1 Offer for specific media loopback type | 10. Congestion Control | |||
An agent sends an SDP offer which looks like: | All the participants in a media-level loopback session SHOULD | |||
implement congestion control mechanisms as defined by the RTP profile | ||||
under which the loopback mechanism is implemented. For audio/video | ||||
profiles, implementations SHOULD conform to the mechanism defined in | ||||
Section 2 of RFC 3551 [RFC3551]. | ||||
v=0 | For packet-level loopback types, the loopback source SHOULD implement | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | congestion control. The mirror will simply reflect back the RTP | |||
s=- | packets it receives (either in encapsulated or direct modes); | |||
c=IN IP4 host.atlanta.example.com | therefore, the source needs to control the congestion of both forward | |||
t=0 0 | and reverse paths by reducing its sending rate to the mirror. This | |||
m=audio 49170 RTP/AVP 0 | keeps the loopback mirror implementation simpler and provides more | |||
a=loopback:rtp-media-loopback | flexibility for the source performing a loopback test. | |||
a=loopback-source | ||||
a=rtpmap:0 pcmu/8000 | ||||
The agent is offering to source the media and expects the answering | 11. Examples | |||
agent to mirror the RTP stream per rtp-media-loopback loopback | ||||
type. | ||||
An answering agent sends an SDP answer which looks like: | This section provides examples for media descriptions using SDP for | |||
different scenarios. The examples are given for SIP-based | ||||
transactions; for convenience, they are abbreviated and do not show | ||||
the complete signaling. | ||||
v=0 | 11.1. Offer for Specific Media Loopback Type | |||
o=bob 1234567890 1122334455 IN IP4 host.biloxi.example.com | ||||
s=- | ||||
c=IN IP4 host.biloxi.example.com | ||||
t=0 0 | ||||
m=audio 49270 RTP/AVP 0 | ||||
a=loopback:rtp-media-loopback | ||||
a=loopback-mirror | ||||
a=rtpmap:0 pcmu/8000 | ||||
The answerer is accepting to mirror the media from the offerer at | An agent sends an SDP offer that looks like: | |||
the media level. | ||||
11.2 Offer for choice of media loopback type | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | ||||
s=- | ||||
c=IN IP4 host.atlanta.example.com | ||||
t=0 0 | ||||
m=audio 49170 RTP/AVP 0 | ||||
a=loopback:rtp-media-loopback | ||||
a=loopback-source | ||||
a=rtpmap:0 pcmu/8000 | ||||
An agent sends an SDP offer which looks like: | The agent is offering to source the media and expects the answering | |||
agent to mirror the RTP stream per the loopback type | ||||
rtp-media-loopback. | ||||
v=0 | An answering agent sends an SDP answer that looks like: | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | ||||
s=- | ||||
c=IN IP4 host.atlanta.example.com | ||||
t=0 0 | ||||
m=audio 49170 RTP/AVP 0 112 113 | ||||
a=loopback:rtp-media-loopback rtp-pkt-loopback | ||||
a=loopback-source | ||||
a=rtpmap:0 pcmu/8000 | ||||
a=rtpmap:112 encaprtp/8000 | ||||
a=rtpmap:113 rtploopback/8000 | ||||
The offerer is offering to source the media and expects the | v=0 | |||
answerer to mirror the RTP stream at either the media or rtp level. | o=bob 1234567890 1122334455 IN IP4 host.biloxi.example.com | |||
s=- | ||||
c=IN IP4 host.biloxi.example.com | ||||
t=0 0 | ||||
m=audio 49270 RTP/AVP 0 | ||||
a=loopback:rtp-media-loopback | ||||
a=loopback-mirror | ||||
a=rtpmap:0 pcmu/8000 | ||||
An answering agent sends an SDP answer which looks like: | The answerer agrees to mirror the media from the offerer at the media | |||
level. | ||||
v=0 | 11.2. Offer for Choice of Media Loopback Type | |||
o=box 1234567890 1122334455 IN IP4 host.biloxi.example.com | ||||
s=- | ||||
c=IN IP4 host.biloxi.example.com | ||||
t=0 0 | ||||
m=audio 49270 RTP/AVP 0 112 | ||||
a=loopback:rtp-pkt-loopback | ||||
a=loopback-mirror | ||||
a=rtpmap:0 pcmu/8000 | ||||
a=rtpmap:112 encaprtp/8000 | ||||
The answerer is accepting to mirror the media from the offerer at | An agent sends an SDP offer that looks like: | |||
the packet level using the encapsulated RTP payload format. | ||||
11.3 Answerer rejecting loopback media | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | ||||
s=- | ||||
c=IN IP4 host.atlanta.example.com | ||||
t=0 0 | ||||
m=audio 49170 RTP/AVP 0 112 113 | ||||
a=loopback:rtp-media-loopback rtp-pkt-loopback | ||||
a=loopback-source | ||||
a=rtpmap:0 pcmu/8000 | ||||
a=rtpmap:112 encaprtp/8000 | ||||
a=rtpmap:113 rtploopback/8000 | ||||
The offerer is offering to source the media and expects the answerer | ||||
to mirror the RTP stream at either the media or RTP level. | ||||
An agent sends an SDP offer which looks like: | An answering agent sends an SDP answer that looks like: | |||
v=0 | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | o=bob 1234567890 1122334455 IN IP4 host.biloxi.example.com | |||
s=- | s=- | |||
c=IN IP4 host.atlanta.example.com | c=IN IP4 host.biloxi.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 49170 RTP/AVP 0 | m=audio 49270 RTP/AVP 0 112 | |||
a=loopback:rtp-media-loopback | a=loopback:rtp-pkt-loopback | |||
a=loopback-source | a=loopback-mirror | |||
a=rtpmap:0 pcmu/8000 | a=rtpmap:0 pcmu/8000 | |||
a=rtpmap:112 encaprtp/8000 | ||||
The offerer is offering to source the media and expects the | The answerer agrees to mirror the media from the offerer at the | |||
answerer to mirror the RTP stream at the media level. | packet level using the encapsulated RTP payload format. | |||
An answering agent sends an SDP answer which looks like: | 11.3. Answerer Rejecting Loopback Media | |||
v=0 | An agent sends an SDP offer that looks like: | |||
o=bob 1234567890 1122334455 IN IP4 host.biloxi.example.com | ||||
s=- | ||||
c=IN IP4 host.biloxi.example.com | ||||
t=0 0 | ||||
m=audio 0 RTP/AVP 0 | ||||
a=rtpmap:0 pcmu/8000 | ||||
Note in this case the answerer did not indicate loopback support, | v=0 | |||
although it could have and still used a port number of 0 to | o=alice 2890844526 2890842807 IN IP4 host.atlanta.example.com | |||
indicate it does not wish to accept that media session. | s=- | |||
c=IN IP4 host.atlanta.example.com | ||||
t=0 0 | ||||
m=audio 49170 RTP/AVP 0 | ||||
a=loopback:rtp-media-loopback | ||||
a=loopback-source | ||||
a=rtpmap:0 pcmu/8000 | ||||
Alternatively, the answering agent could have simply rejected the | The offerer is offering to source the media and expects the answerer | |||
entire SDP offer through some higher-layer signaling protocol means | to mirror the RTP stream at the media level. | |||
(e.g., by rejecting the SIP INVITE request if the SDP offer was in | ||||
the INVITE). | ||||
12. Security Considerations | An answering agent sends an SDP answer that looks like: | |||
The security considerations of [RFC3264] and [RFC3550] apply. | v=0 | |||
o=bob 1234567890 1122334455 IN IP4 host.biloxi.example.com | ||||
s=- | ||||
c=IN IP4 host.biloxi.example.com | ||||
t=0 0 | ||||
m=audio 0 RTP/AVP 0 | ||||
a=rtpmap:0 pcmu/8000 | ||||
Note in this case that the answerer did not indicate loopback | ||||
support, although it could have and still used a port number of 0 to | ||||
indicate that it does not wish to accept that media session. | ||||
Given that media loopback may be automated without the end user's | Alternatively, the answering agent could have simply rejected the | |||
knowledge, the answerer of the media loopback should be aware of | entire SDP offer through some higher-layer signaling protocol means | |||
denial of service attacks. It is RECOMMENDED that session requests | (e.g., by rejecting the SIP INVITE request if the SDP offer was in | |||
for media loopback be authenticated and the frequency of such | the INVITE). | |||
sessions limited by the answerer. | ||||
If the higher-layer signaling protocol were not authenticated, a | 12. Security Considerations | |||
malicious attacker could create a session between two parties the | ||||
attacker wishes to target, with each party acting as the loopback- | ||||
mirror to the other, of rtp-pkt-loopback type. A few RTP packets | ||||
sent to either party would then infinitely loop among the two, as | ||||
fast as they could process them, consuming their resources and | ||||
network bandwidth. | ||||
Furthermore, media-loopback provides a means of attack indirection, | The security considerations of [RFC3264] and [RFC3550] apply. | |||
whereby a malicious attacker creates a loopback session as the | ||||
loopback-source, and uses the mirror to reflect the attacker's | ||||
packets against a target - perhaps a target the attacker could not | ||||
reach directly, such as one behind a firewall for example. Or the | ||||
attacker could initiate the session as the loopback-mirror, in the | ||||
hopes of making the peer generate media against another target. | ||||
If end-user devices such as mobile phones answer loopback requests | Given that media loopback may be automated without the end user's | |||
without authentication and without notifying the end-user, then an | knowledge, the answerer of the media loopback should be aware of | |||
attacker could cause the battery to drain, and possibly deny the | denial-of-service attacks. It is RECOMMENDED that session requests | |||
end-user normal phone service or cause network data usage fees. | for media loopback be authenticated and the frequency of such | |||
This could even occur naturally if a legitimate loopback session | sessions limited by the answerer. | |||
does not terminate properly and the end device does not have a | ||||
timeout mechanism for such. | ||||
For the reasons noted above, end user devices SHOULD provide a | If the higher-layer signaling protocol were not authenticated, a | |||
means of indicating to the human user that the device is in a | malicious attacker could create a session between two parties the | |||
loopback session, even if it is an authenticated session. Devices | attacker wishes to target, with each party acting as the loopback | |||
that answer or generate loopback sessions SHOULD either perform | mirror to the other, of the rtp-pkt-loopback type. A few RTP packets | |||
keepalive/refresh tests of the session state through some means, or | sent to either party would then infinitely loop among the two, as | |||
time out the session automatically. | fast as they could process them, consuming their resources and | |||
network bandwidth. | ||||
13. Implementation Considerations | Furthermore, media loopback provides a means of attack indirection, | |||
whereby a malicious attacker creates a loopback session as the | ||||
loopback source and uses the mirror to reflect the attacker's packets | ||||
against a target -- perhaps a target the attacker could not reach | ||||
directly, such as one behind a firewall, for example. Or, the | ||||
attacker could initiate the session as the loopback mirror, in the | ||||
hopes of making the peer generate media against another target. | ||||
The media loopback approach described in this document is a | If end-user devices such as mobile phones answer loopback requests | |||
complete solution that would work under all scenarios. However, it | without authentication and without notifying the end user, then an | |||
is possible that the solution may not be light-weight enough for | attacker could cause the battery to drain, and possibly deny the end | |||
some implementations. In light of this concern, this section | user normal phone service or cause network data usage fees. This | |||
clarifies which features of the loopback proposal MUST be | could even occur naturally if a legitimate loopback session does not | |||
implemented for all implementations and which features MAY be | terminate properly and the end device does not have a timeout | |||
deferred if the complete solution is not desired. | mechanism for such. | |||
All implementations MUST at least support the rtp-pkt-loopback mode | For the reasons noted above, end-user devices SHOULD provide a means | |||
for loopback-type, with direct media loopback payload encoding. In | of indicating to the human user that the device is in a loopback | |||
addition, for the loopback role, all implementations of an SDP | session, even if it is an authenticated session. Devices that answer | |||
offerer MUST at least be able to act as a loopback-source. These | or generate loopback sessions SHOULD either perform keepalive/refresh | |||
requirements are intended to provide a minimal level of | tests of the session state through some means or time out the session | |||
interoperability between different implementations. | automatically. | |||
14. IANA Considerations | 13. Implementation Considerations | |||
[Note to RFC Editor: Please replace "XXXX" with the appropriate RFC | The media loopback approach described in this document is a complete | |||
number on publication] | solution that would work under all scenarios. However, it is | |||
possible that the solution may not be lightweight enough for some | ||||
implementations. In light of this concern, this section clarifies | ||||
which features of the loopback proposal MUST be implemented for all | ||||
implementations and which features MAY be deferred if the complete | ||||
solution is not desired. | ||||
14.1 SDP Attributes | All implementations MUST at least support the rtp-pkt-loopback mode | |||
for loopback-type, with direct media loopback payload encoding. In | ||||
addition, for the loopback role, all implementations of an SDP | ||||
offerer MUST at least be able to act as a loopback source. These | ||||
requirements are intended to provide a minimal level of | ||||
interoperability between different implementations. | ||||
This document defines three new media-level SDP attributes. IANA | 14. IANA Considerations | |||
has registered the following attributes: | ||||
Contact name: Kaynam Hedayat | 14.1. SDP Attributes | |||
Email address: kaynam.hedayat@exfo.com | ||||
Telephone number: +1-978-367-5611 | ||||
Attribute name: loopback | ||||
Type of attribute: Media level. | ||||
Subject to charset: No. | ||||
Purpose of attribute: The 'loopback' attribute is used to | ||||
indicate the type of media loopback. | ||||
Allowed attribute values: The parameters to 'loopback' may be | ||||
one or more of "rtp-pkt-loopback" and | ||||
"rtp-media-loopback". See Section 5 | ||||
of RFC XXXX for syntax. | ||||
Contact name: Kaynam Hedayat | This document defines three new media-level SDP attributes. IANA has | |||
Email address: kaynam.hedayat@exfo.com | registered the following attributes. | |||
Telephone number: +1-978-367-5611 | ||||
Attribute name: loopback-source | ||||
Type of attribute: Media level. | ||||
Subject to charset: No. | ||||
Purpose of attribute: The 'loopback-source' attribute | ||||
specifies that the sender is the media | ||||
source and expects the receiver to act | ||||
as a loopback-mirror. | ||||
Allowed attribute values: None. | ||||
Contact name: Kaynam Hedayat | Contact name: Kaynam Hedayat | |||
Email address: kaynam.hedayat@exfo.com | Email address: kh274@cornell.edu | |||
Telephone number: +1-978-367-5611 | Telephone number: +1-617-899-3279 | |||
Attribute name: loopback-mirror | 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-mirror' attribute | Purpose of attribute: The 'loopback' attribute is used to | |||
specifies that the receiver will | indicate the type of media loopback. | |||
mirror (echo) all received media back | Allowed attribute values: The parameters for 'loopback' may be | |||
to the sender of the RTP stream. | one or more of "rtp-pkt-loopback" and | |||
Allowed attribute values: None. | "rtp-media-loopback". See Section 4 | |||
of RFC 6849 for syntax. | ||||
14.2 Media Types | Contact name: Kaynam Hedayat | |||
Email address: kh274@cornell.edu | ||||
Telephone number: +1-617-899-3279 | ||||
Attribute name: loopback-source | ||||
Type of attribute: Media level. | ||||
Subject to charset: No. | ||||
Purpose of attribute: The 'loopback-source' attribute | ||||
specifies that the sender is the media | ||||
source and expects the receiver to act | ||||
as a loopback mirror. | ||||
Allowed attribute values: N/A | ||||
The IANA has registered the following media types: | Contact name: Kaynam Hedayat | |||
Email address: kh274@cornell.edu | ||||
Telephone number: +1-617-899-3279 | ||||
Attribute name: loopback-mirror | ||||
Type of attribute: Media level. | ||||
Subject to charset: No. | ||||
Purpose of attribute: The 'loopback-mirror' attribute | ||||
specifies that the receiver will | ||||
mirror (echo) all received media back | ||||
to the sender of the RTP stream. | ||||
Allowed attribute values: N/A | ||||
14.2.1 audio/encaprtp | 14.2. Media Types | |||
To: ietf-types@iana.org | The IANA has registered the following media types. | |||
Subject: Registration of media type audio/encaprtp | 14.2.1. audio/encaprtp | |||
Type name: audio | To: ietf-types@iana.org | |||
Subtype name: encaprtp | Subject: Registration of media type audio/encaprtp | |||
Required parameters: | Type name: audio | |||
rate: RTP timestamp clock rate, which is equal to the | Subtype name: encaprtp | |||
sampling rate. The typical rate is 8000; other rates | ||||
may be specified. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | Required parameters: | |||
Encoding considerations: This media type is framed. | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Security considerations: See Section 12 of RFC XXXX. | Optional parameters: N/A | |||
Interoperability considerations: none | Encoding considerations: This media type is framed. | |||
Published specification: RFC XXXX. | Security considerations: See Section 12 of RFC 6849. | |||
Applications which use this media type: Applications wishing | Interoperability considerations: N/A | |||
to monitor and ensure the quality of transport to the | ||||
edge of a given VoIP Service. | ||||
Additional information: none | Published specification: RFC 6849. | |||
Contact: the authors of RFC XXXX. | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
VoIP service. | ||||
Intended usage: LIMITED USE | Additional information: N/A | |||
Restrictions on usage: This media type depends on RTP | Contact: the authors of RFC 6849. | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Intended usage: LIMITED USE | |||
Kaynam Hedayat. | ||||
Change controller: IETF PAYLOAD working | Restrictions on usage: This media type depends on RTP framing and | |||
group delegated from the IESG. | hence is only defined for transfer via RTP. Transfer within other | |||
framing protocols is not defined at this time. | ||||
14.2.2 video/encaprtp | Author: Kaynam Hedayat. | |||
To: ietf-types@iana.org | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
Subject: Registration of media type video/encaprtp | 14.2.2. video/encaprtp | |||
Type name: video | To: ietf-types@iana.org | |||
Subtype name: encaprtp | Subject: Registration of media type video/encaprtp | |||
Required parameters: | Type name: video | |||
rate: RTP timestamp clock rate, which is equal to the | Subtype name: encaprtp | |||
sampling rate. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | Required parameters: | |||
Encoding considerations: This media type is framed. | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Security considerations: See Section 12 of RFC XXXX. | Optional parameters: N/A | |||
Interoperability considerations: none | Encoding considerations: This media type is framed. | |||
Published specification: RFC XXXX. | Security considerations: See Section 12 of RFC 6849. | |||
Applications which use this media type: Applications wishing | Interoperability considerations: N/A | |||
to monitor and ensure the quality of transport to the | Published specification: RFC 6849. | |||
edge of a given Video Over IP Service. | ||||
Additional information: none | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
Video Over IP service. | ||||
Contact: the authors of RFC XXXX. | Additional information: N/A | |||
Intended usage: LIMITED USE | Contact: the authors of RFC 6849. | |||
Restrictions on usage: This media type depends on RTP | Intended usage: LIMITED USE | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Restrictions on usage: This media type depends on RTP framing and | |||
Kaynam Hedayat. | hence is only defined for transfer via RTP. Transfer within other | |||
framing protocols is not defined at this time. | ||||
Change controller: IETF PAYLOAD working | Author: Kaynam Hedayat. | |||
group delegated from the IESG. | ||||
14.2.3 text/encaprtp | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
To: ietf-types@iana.org | 14.2.3. text/encaprtp | |||
Subject: Registration of media type text/encaprtp | To: ietf-types@iana.org | |||
Type name: text | Subject: Registration of media type text/encaprtp | |||
Subtype name: encaprtp | Type name: text | |||
Required parameters: | Subtype name: encaprtp | |||
rate: RTP timestamp clock rate, which is equal to the | Required parameters: | |||
sampling rate. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Encoding considerations: This media type is framed. | Optional parameters: N/A | |||
Security considerations: See Section 12 of RFC XXXX. | Encoding considerations: This media type is framed. | |||
Interoperability considerations: none | Security considerations: See Section 12 of RFC 6849. | |||
Published specification: RFC XXXX. | Interoperability considerations: N/A | |||
Applications which use this media type: Applications wishing | Published specification: RFC 6849. | |||
to monitor and ensure the quality of transport to the | ||||
edge of a given Real-Time Text Service. | ||||
Additional information: none | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
real-time text service. | ||||
Contact: the authors of RFC XXXX. | Additional information: N/A | |||
Intended usage: LIMITED USE | Contact: the authors of RFC 6849. | |||
Restrictions on usage: This media type depends on RTP | Intended usage: LIMITED USE | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Restrictions on usage: This media type depends on RTP framing and | |||
Kaynam Hedayat. | hence is only defined for transfer via RTP. Transfer within other | |||
framing protocols is not defined at this time. | ||||
Change controller: IETF PAYLOAD working | Author: Kaynam Hedayat. | |||
group delegated from the IESG. | ||||
14.2.4 application/encaprtp | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
To: ietf-types@iana.org | 14.2.4. application/encaprtp | |||
Subject: Registration of media type | To: ietf-types@iana.org | |||
application/encaprtp | ||||
Type name: application | Subject: Registration of media type application/encaprtp | |||
Subtype name: encaprtp | Type name: application | |||
Required parameters: | Subtype name: encaprtp | |||
rate: RTP timestamp clock rate, which is equal to the | Required parameters: | |||
sampling rate. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Encoding considerations: This media type is framed. | Optional parameters: N/A | |||
Security considerations: See Section 12 of RFC XXXX. | Encoding considerations: This media type is framed. | |||
Interoperability considerations: none | Security considerations: See Section 12 of RFC 6849. | |||
Published specification: RFC XXXX. | Interoperability considerations: N/A | |||
Applications which use this media type: Applications wishing | Published specification: RFC 6849. | |||
to monitor and ensure the quality of transport to the | ||||
edge of a given Real-Time Application Service. | ||||
Additional information: none | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
real-time application service. | ||||
Contact: the authors of RFC XXXX. | Additional information: N/A | |||
Intended usage: LIMITED USE | Contact: the authors of RFC 6849. | |||
Restrictions on usage: This media type depends on RTP | Intended usage: LIMITED USE | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Restrictions on usage: This media type depends on RTP framing and | |||
Kaynam Hedayat. | hence is only defined for transfer via RTP. Transfer within other | |||
framing protocols is not defined at this time. | ||||
Change controller: IETF PAYLOAD working | Author: Kaynam Hedayat. | |||
group delegated from the IESG. | ||||
14.2.5 audio/rtploopback | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
To: ietf-types@iana.org | 14.2.5. audio/rtploopback | |||
Subject: Registration of media type audio/rtploopback | To: ietf-types@iana.org | |||
Type name: audio | Subject: Registration of media type audio/rtploopback | |||
Subtype name: rtploopback | Type name: audio | |||
Required parameters: | Subtype name: rtploopback | |||
rate:RTP timestamp clock rate, which is equal to the | Required parameters: | |||
sampling rate. The typical rate is 8000; other rates | ||||
may be specified. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Encoding considerations: This media type is framed. | Optional parameters: N/A | |||
Security considerations: See Section 12 of RFC XXXX. | Encoding considerations: This media type is framed. | |||
Interoperability considerations: none | Security considerations: See Section 12 of RFC 6849. | |||
Published specification: RFC XXXX. | Interoperability considerations: N/A | |||
Applications which use this media type: Applications wishing | Published specification: RFC 6849. | |||
to monitor and ensure the quality of transport to the | ||||
edge of a given VoIP Service. | ||||
Additional information: none | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
VoIP service. | ||||
Contact: the authors of RFC XXXX. | Additional information: N/A | |||
Intended usage: LIMITED USE | Contact: the authors of RFC 6849. | |||
Restrictions on usage: This media type depends on RTP | Intended usage: LIMITED USE | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Restrictions on usage: This media type depends on RTP framing and | |||
Kaynam Hedayat. | hence is only defined for transfer via RTP. Transfer within other | |||
framing protocols is not defined at this time. | ||||
Change controller: IETF PAYLOAD working | Author: Kaynam Hedayat. | |||
group delegated from the IESG. | ||||
14.2.6 video/rtploopback | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
To: ietf-types@iana.org | 14.2.6. video/rtploopback | |||
Subject: Registration of media type video/rtploopback | To: ietf-types@iana.org | |||
Type name: video | Subject: Registration of media type video/rtploopback | |||
Subtype name: rtploopback | Type name: video | |||
Required parameters: | Subtype name: rtploopback | |||
rate:RTP timestamp clock rate, which is equal to the | Required parameters: | |||
sampling rate. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Encoding considerations: This media type is framed. | Optional parameters: N/A | |||
Security considerations: See Section 12 of RFC XXXX. | Encoding considerations: This media type is framed. | |||
Interoperability considerations: none | Security considerations: See Section 12 of RFC 6849. | |||
Published specification: RFC XXXX. | ||||
Applications which use this media type: Applications wishing | Interoperability considerations: N/A | |||
to monitor and ensure the quality of transport to the | ||||
edge of a given Video Over IP Service. | ||||
Additional information: none | Published specification: RFC 6849. | |||
Contact: the authors of RFC XXXX. | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
Video Over IP service. | ||||
Intended usage: LIMITED USE | Additional information: N/A | |||
Restrictions on usage: This media type depends on RTP | Contact: the authors of RFC 6849. | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Intended usage: LIMITED USE | |||
Kaynam Hedayat. | Restrictions on usage: This media type depends on RTP framing and | |||
hence is only defined for transfer via RTP. Transfer within other | ||||
framing protocols is not defined at this time. | ||||
Change controller: IETF PAYLOAD working | Author: Kaynam Hedayat. | |||
group delegated from the IESG. | ||||
14.2.7 text/rtploopback | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
To: ietf-types@iana.org | 14.2.7. text/rtploopback | |||
Subject: Registration of media type text/rtploopback | To: ietf-types@iana.org | |||
Type name: text | Subject: Registration of media type text/rtploopback | |||
Subtype name: rtploopback | Type name: text | |||
Required parameters: | Subtype name: rtploopback | |||
rate:RTP timestamp clock rate, which is equal to the | Required parameters: | |||
sampling rate. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Encoding considerations: This media type is framed. | Optional parameters: N/A | |||
Security considerations: See Section 12 of RFC XXXX. | Encoding considerations: This media type is framed. | |||
Interoperability considerations: none | Security considerations: See Section 12 of RFC 6849. | |||
Published specification: RFC XXXX. | Interoperability considerations: N/A | |||
Applications which use this media type: Applications wishing | Published specification: RFC 6849. | |||
to monitor and ensure the quality of transport to the | ||||
edge of a given Real-Time Text Service. | ||||
Additional information: none | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
real-time text service. | ||||
Contact: the authors of RFC XXXX. | Additional information: N/A | |||
Intended usage: LIMITED USE | Contact: the authors of RFC 6849. | |||
Restrictions on usage: This media type depends on RTP | Intended usage: LIMITED USE | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Restrictions on usage: This media type depends on RTP framing and | |||
Kaynam Hedayat. | hence is only defined for transfer via RTP. Transfer within other | |||
framing protocols is not defined at this time. | ||||
Change controller: IETF PAYLOAD working | Author: Kaynam Hedayat. | |||
group delegated from the IESG. | ||||
14.2.8 application/rtploopback | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
To: ietf-types@iana.org | 14.2.8. application/rtploopback | |||
Subject: Registration of media type | To: ietf-types@iana.org | |||
application/rtploopback | ||||
Type name: application | Subject: Registration of media type application/rtploopback | |||
Subtype name: rtploopback | Type name: application | |||
Required parameters: | Subtype name: rtploopback | |||
rate:RTP timestamp clock rate, which is equal to the | Required parameters: | |||
sampling rate. This is specified by the loop back | ||||
source, and reflected by the mirror. | ||||
Optional parameters: none | rate: RTP timestamp clock rate, which is equal to the sampling | |||
rate. This is specified by the loopback source and reflected by | ||||
the mirror. | ||||
Encoding considerations: This media type is framed. | Optional parameters: N/A | |||
Security considerations: See Section 12 of RFC XXXX. | Encoding considerations: This media type is framed. | |||
Interoperability considerations: none | Security considerations: See Section 12 of RFC 6849. | |||
Published specification: RFC XXXX. | Interoperability considerations: N/A | |||
Applications which use this media type: Applications wishing | Published specification: RFC 6849. | |||
to monitor and ensure the quality of transport to the | ||||
edge of a given Real-Time Application Service. | ||||
Additional information: none | Applications that use this media type: Applications wishing to | |||
monitor and ensure the quality of transport to the edge of a given | ||||
real-time application service. | ||||
Contact: the authors of RFC XXXX. | Additional information: N/A | |||
Intended usage: LIMITED USE | Contact: the authors of RFC 6849. | |||
Restrictions on usage: This media type depends on RTP | Intended usage: LIMITED USE | |||
framing, and hence is only defined for transfer via | ||||
RTP. Transfer within other framing protocols is not | ||||
defined at this time. | ||||
Author: | Restrictions on usage: This media type depends on RTP framing and | |||
Kaynam Hedayat. | hence is only defined for transfer via RTP. Transfer within other | |||
framing protocols is not defined at this time. | ||||
Change controller: IETF PAYLOAD working | Author: Kaynam Hedayat. | |||
group delegated from the IESG. | ||||
15. Acknowledgements | Change controller: IETF PAYLOAD working group delegated from | |||
the IESG. | ||||
This document's editor would like to thank the original authors of | 15. Acknowledgements | |||
the document: Kaynam Hedayat, Nagarjuna Venna, Paul E. Jones, Arjun | ||||
Roychowdhury, Chelliah SivaChelvan, and Nathan Stratton. The | ||||
editor has made fairly insignificant changes in the end. Also, | ||||
we'd like to thank Magnus Westerlund, Miguel Garcia, Muthu Arul | ||||
Mozhi Perumal, Jeff Bernstein, Paul Kyzivat, Dave Oran, Flemming | ||||
Andreasen, Gunnar Hellstrom, Emil Ivov and Dan Wing for their | ||||
feedback, comments and suggestions. | ||||
16. Normative References | This document's editor would like to thank the original authors of | |||
the document: Kaynam Hedayat, Nagarjuna Venna, Paul E. Jones, Arjun | ||||
Roychowdhury, Chelliah SivaChelvan, and Nathan Stratton. The editor | ||||
has made fairly insignificant changes in the end. Also, we'd like to | ||||
thank Magnus Westerlund, Miguel Garcia, Muthu Arul Mozhi Perumal, | ||||
Jeff Bernstein, Paul Kyzivat, Dave Oran, Flemming Andreasen, Gunnar | ||||
Hellstrom, Emil Ivov, and Dan Wing for their feedback, comments, and | ||||
suggestions. | ||||
[RFC2119] Bradner, S.,"Key words for use in RFCs to Indicate | 16. References | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | ||||
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer | 16.1. Normative References | |||
Model with the Session Description Protocol (SDP)", | ||||
RFC 3264, June 2002. | ||||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R. and V. | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Jacobson, "RTP: A Transport Protocol for Real-Time | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
Applications", STD 64, RFC 3550, July 2003. | ||||
[RFC3551] Schulzrinne, H., Casner, S., "RTP Profile for Audio | [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | |||
and Video Conferences with Minimial Control", STD 65, | with Session Description Protocol (SDP)", RFC 3264, | |||
RFC 3551, July 2003. | June 2002. | |||
[RFC3611] Almeroth, K., Caceres, R., Clark, A., Cole, R., | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Duffield, N., Friedman, T., Hedayat, K., Sarac, K. | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
and M. Westerlund, "RTP Control Protocol Extended | Applications", STD 64, RFC 3550, July 2003. | |||
Reports (RTCP XR)", RFC 3611, November 2003. | ||||
[RFC3711] Baugher, M., et al, "The Secure Real-time Transport | [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and | |||
Protocol (SRTP)", RFC 3711, March 2004. | Video Conferences with Minimal Control", STD 65, | |||
RFC 3551, July 2003. | ||||
[RFC4566] Handley, M., Jacobson, V., Perkins, C., "SDP: Session | [RFC3611] Friedman, T., Ed., Caceres, R., Ed., and A. Clark, Ed., | |||
Description Protocol", RFC 4566, July 2006. | "RTP Control Protocol Extended Reports (RTCP XR)", | |||
RFC 3611, November 2003. | ||||
[RFC4961] Wing, D., "Symmetric RTP / RTP Control Protocol | [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. | |||
(RTCP)", RFC 4961, July 2007. | Norrman, "The Secure Real-time Transport Protocol | |||
(SRTP)", RFC 3711, March 2004. | ||||
[RFC5234] Crocker, P. Overell, "Augmented ABNF for Syntax | [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session | |||
Specification: ABNF", RFC 5234, October 2005. | Description Protocol", RFC 4566, July 2006. | |||
17. Informative References | [RFC4961] Wing, D., "Symmetric RTP / RTP Control Protocol (RTCP)", | |||
BCP 131, RFC 4961, July 2007. | ||||
[RFC5245] Rosenberg, J., "Interactive Connectivity | [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for | |||
Establishment (ICE): A Protocol for Network Address | Syntax Specifications: ABNF", STD 68, RFC 5234, | |||
Translator (NAT) Traversal for Offer/Answer | January 2008. | |||
Protocols", RFC 5245, April 2010. | ||||
[RFC6263] Marjou, X., Sollaud, A., "Application Mechanism for | 16.2. Informative References | |||
Keeping Alive the NAT Mappings Associated with RTP / | ||||
RTP Control Protocol (RTCP) Flows", RFC 6263, June | ||||
2011. | ||||
Authors' Addresses | [RFC5245] Rosenberg, J., "Interactive Connectivity Establishment | |||
(ICE): A Protocol for Network Address Translator (NAT) | ||||
Traversal for Offer/Answer Protocols", RFC 5245, | ||||
April 2010. | ||||
Hadriel Kaplan | [RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing, | |||
Acme Packet | "Session Traversal Utilities for NAT (STUN)", RFC 5389, | |||
100 Crosby Drive | October 2008. | |||
Bedford, MA 01730 | ||||
USA | ||||
EMail: hkaplan@acmepacket.com | [RFC5766] Mahy, R., Matthews, P., and J. Rosenberg, "Traversal | |||
URI: http://www.acmepacket.com | Using Relays around NAT (TURN): Relay Extensions to | |||
Kaynam Hedayat | Session Traversal Utilities for NAT (STUN)", RFC 5766, | |||
EXFO | April 2010. | |||
285 Mill Road | ||||
Chelmsford, MA 01824 | ||||
US | ||||
EMail: kaynam.hedayat@exfo.com | [RFC6263] Marjou, X. and A. Sollaud, "Application Mechanism for | |||
URI: http://www.exfo.com/ | Keeping Alive the NAT Mappings Associated with RTP / RTP | |||
Control Protocol (RTCP) Flows", RFC 6263, June 2011. | ||||
Nagarjuna Venna | Authors' Addresses | |||
Saperix | ||||
738 Main Street, #398 | ||||
Waltham, MA 02451 | ||||
US | ||||
EMail: vnagarjuna@saperix.com | Hadriel Kaplan (editor) | |||
URI: http://www.saperix.com/ | Acme Packet | |||
100 Crosby Drive | ||||
Bedford, MA 01730 | ||||
US | ||||
EMail: hkaplan@acmepacket.com | ||||
URI: http://www.acmepacket.com | ||||
Paul E. Jones | Kaynam Hedayat | |||
Cisco Systems, Inc. | EXFO | |||
7025 Kit Creek Rd. | 285 Mill Road | |||
Research Triangle Park, NC 27709 | Chelmsford, MA 01824 | |||
US | US | |||
EMail: kh274@cornell.edu | ||||
URI: http://www.exfo.com/ | ||||
EMail: paulej@packetizer.com | Nagarjuna Venna | |||
URI: http://www.cisco.com/ | Saperix | |||
c/o DogPatch Labs | ||||
One Cambridge Center, 6th Floor | ||||
Cambridge, MA 02142 | ||||
US | ||||
EMail: vnagarjuna@saperix.com | ||||
URI: http://www.saperix.com/ | ||||
Nathan Stratton | Paul E. Jones | |||
BlinkMind, Inc. | Cisco Systems, Inc. | |||
2027 Briarchester Dr. | 7025 Kit Creek Rd. | |||
Katy, TX 77450 | Research Triangle Park, NC 27709 | |||
US | ||||
EMail: paulej@packetizer.com | ||||
URI: http://www.cisco.com/ | ||||
EMail: nathan@robotics.net | Nathan Stratton | |||
URI: http://www.robotics.net/ | BlinkMind, Inc. | |||
2027 Briarchester Dr. | ||||
Katy, TX 77450 | ||||
US | ||||
EMail: nathan@robotics.net | ||||
URI: http://www.robotics.net/ | ||||
End of changes. 371 change blocks. | ||||
1153 lines changed or deleted | 1119 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/ |