draft-ietf-mmusic-sdp-comedia-08.txt | draft-ietf-mmusic-sdp-comedia-09.txt | |||
---|---|---|---|---|
MMUSIC Working Group D. Yon | MMUSIC Working Group D. Yon | |||
Internet-Draft Dialout.Net, Inc | Internet-Draft Tactical Software, LLC | |||
Expires: January 14, 2005 G. Camarillo | Expires: March 30, 2005 G. Camarillo | |||
Ericsson | Ericsson | |||
July 16, 2004 | September 29, 2004 | |||
Connection-Oriented Media Transport in the Session Description | Connection-Oriented Media Transport in the Session Description | |||
Protocol (SDP) | Protocol (SDP) | |||
draft-ietf-mmusic-sdp-comedia-08.txt | draft-ietf-mmusic-sdp-comedia-09.txt | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, I certify that any applicable | This document is an Internet-Draft and is subject to all provisions | |||
patent or other IPR claims of which I am aware have been disclosed, | of section 3 of RFC 3667. By submitting this Internet-Draft, each | |||
and any of which I become aware will be disclosed, in accordance with | author represents that any applicable patent or other IPR claims of | |||
which he or she is aware have been or will be disclosed, and any of | ||||
which he or she become aware will be disclosed, in accordance with | ||||
RFC 3668. | RFC 3668. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that | |||
groups may also distribute working documents as Internet-Drafts. | other groups may also distribute working documents as | |||
Internet-Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at http:// | The list of current Internet-Drafts can be accessed at | |||
www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on January 14, 2005. | This Internet-Draft will expire on March 30, 2005. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2004). All Rights Reserved. | Copyright (C) The Internet Society (2004). | |||
Abstract | Abstract | |||
This document describes how to express media transport over | This document describes how to express media transport over | |||
connection-oriented protocols using the Session Description Protocol | connection-oriented protocols using the Session Description Protocol | |||
(SDP). It defines the SDP TCP protocol identifier, the SDP setup | (SDP). It defines the SDP TCP protocol identifier, the SDP setup | |||
attribute, which describes the connection setup procedure, and the | attribute, which describes the connection setup procedure, and the | |||
SDP connid attribute, which provides a connection identifier. | SDP connection attribute, which handles connection reestablishment. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Protocol Identifier . . . . . . . . . . . . . . . . . . . . . 3 | 3. Protocol Identifier . . . . . . . . . . . . . . . . . . . . . 3 | |||
4. Setup Attribute . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Setup Attribute . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4.1 The Setup Attribute in the Offer/answer Model . . . . . . 4 | 4.1 The Setup Attribute in the Offer/answer Model . . . . . . 4 | |||
5. The Connid Attribute . . . . . . . . . . . . . . . . . . . . . 5 | 5. The Connection Attribute . . . . . . . . . . . . . . . . . . . 5 | |||
5.1 Offerer Behaviour . . . . . . . . . . . . . . . . . . . . 6 | 5.1 Offerer Behaviour . . . . . . . . . . . . . . . . . . . . 6 | |||
5.2 Answerer Behaviour . . . . . . . . . . . . . . . . . . . . 7 | 5.2 Answerer Behaviour . . . . . . . . . . . . . . . . . . . . 7 | |||
6. Connection Management . . . . . . . . . . . . . . . . . . . . 7 | 6. Connection Management . . . . . . . . . . . . . . . . . . . . 7 | |||
6.1 Connection Establishment . . . . . . . . . . . . . . . . . 7 | ||||
6.2 Connection Reestablishment . . . . . . . . . . . . . . . . 8 | ||||
6.3 Connection Termination . . . . . . . . . . . . . . . . . . 8 | ||||
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
7.1 Passive/Active . . . . . . . . . . . . . . . . . . . . . . 8 | 7.1 Passive/Active . . . . . . . . . . . . . . . . . . . . . . 8 | |||
7.2 Passive/Active with Connection Reestablishment . . . . . . 9 | 7.2 Actpass/Passive . . . . . . . . . . . . . . . . . . . . . 9 | |||
7.3 Actpass/Passive . . . . . . . . . . . . . . . . . . . . . 9 | 7.3 Existing Connection Reuse . . . . . . . . . . . . . . . . 9 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 7.4 Existing Connection Refusal . . . . . . . . . . . . . . . 10 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | |||
11.1 Normative References . . . . . . . . . . . . . . . . . . . . 10 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
11.2 Informative References . . . . . . . . . . . . . . . . . . . 11 | 11.1 Normative References . . . . . . . . . . . . . . . . . . . . 12 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 11 | 11.2 Informative References . . . . . . . . . . . . . . . . . . . 12 | |||
Intellectual Property and Copyright Statements . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 13 | |||
Intellectual Property and Copyright Statements . . . . . . . . 14 | ||||
1. Introduction | 1. Introduction | |||
The Session Description Protocol [3] provides a general-purpose | The Session Description Protocol [4] provides a general-purpose | |||
format for describing multimedia sessions in announcements or | format for describing multimedia sessions in announcements or | |||
invitations. SDP uses an entirely textual data format (the US-ASCII | invitations. SDP uses an entirely textual data format (the US-ASCII | |||
subset of UTF-8 [10]) to maximize portability among transports. SDP | subset of UTF-8 [11]) to maximize portability among transports. SDP | |||
does not define a protocol, but only the syntax to describe a | does not define a protocol, but only the syntax to describe a | |||
multimedia session with sufficient information to participate in that | multimedia session with sufficient information to participate in that | |||
session. Session descriptions may be sent using arbitrary existing | session. Session descriptions may be sent using arbitrary existing | |||
application protocols for transport (e.g., SAP [8], SIP [9], RTSP | application protocols for transport (e.g., SAP [9], SIP [10], RTSP | |||
[5], email, HTTP [7], etc.). | [6], email, HTTP [8], etc.). | |||
SDP [3] defines two protocol identifiers: RTP/AVP and UDP, both of | SDP [4] defines two protocol identifiers: RTP/AVP and UDP, both of | |||
which represent unreliable connectionless protocols. While these | which represent unreliable connectionless protocols. While these | |||
transports are appropriate choices for multimedia streams, there are | transports are appropriate choices for multimedia streams, there are | |||
applications for which connection-oriented transports, such as TCP, | applications for which connection-oriented transports, such as TCP, | |||
are more appropriate. This document defines a new protocol | are more appropriate. This document defines a new protocol | |||
identifier, TCP, to describe TCP connetions in SDP. | identifier, TCP, to describe TCP connetions in SDP. | |||
Connection-oriented protocols introduce two new factor when | Connection-oriented protocols introduce two new factor when | |||
describing a session: how and when should end points perform the | describing a session: how and when should end points perform the | |||
connection setup procedure. This document defines two new attributes | connection setup procedure. This document defines two new attributes | |||
to describe connection setups: setup and connid. | to describe connection setups: setup and connection. | |||
2. Terminology | 2. Terminology | |||
In this document, the key words "MUST", "MUST NOT", "REQUIRED", | In this document, the key words "MUST", "MUST NOT", "REQUIRED", | |||
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT | "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT | |||
RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as | RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as | |||
described in BCP 14, RFC 2119 [2] and indicate requirement levels for | described in BCP 14, RFC 2119 [3] and indicate requirement levels for | |||
compliant implementations. | compliant implementations. | |||
3. Protocol Identifier | 3. Protocol Identifier | |||
The following is the ABNF for an m= line, as specified by RFC 2327 | The following is the ABNF for an m= line, as specified by RFC 2327 | |||
[3]. | [4]. | |||
media-field = "m=" media space port ["/" integer] | media-field = "m=" media space port ["/" integer] | |||
space proto 1*(space fmt) CRLF | space proto 1*(space fmt) CRLF | |||
This document defines a new value for the proto field: TCP. | This document defines a new value for the proto field: TCP. | |||
The TCP protocol identifier is similar to the UDP protocol identifier | The TCP protocol identifier is similar to the UDP protocol identifier | |||
in that it only describes the transport protocol, and not the | in that it only describes the transport protocol, and not the | |||
upper-layer protocol. An m= line that specifies "TCP" MUST further | upper-layer protocol. An m= line that specifies "TCP" MUST further | |||
qualify the application-layer protocol using an fmt identifier. Media | qualify the application-layer protocol using an fmt identifier. | |||
lines with the TCP protocol identifier are carried using TCP [1]. | Media described using an m= lines containing the TCP protocol | |||
identifier are carried using TCP [1]. | ||||
It is RECOMMENDED that documents defining new SDP protocol | It is RECOMMENDED that documents defining new SDP protocol | |||
identifiers that involve extra protocol layers between TCP and the | identifiers that involve extra protocol layers between TCP and the | |||
media itself (e.g., TLS [6] over TCP) start with the string "TCP/" | media itself (e.g., TLS [7] over TCP) start with the string "TCP/" | |||
(e.g., TCP/TLS). | (e.g., TCP/TLS). | |||
The following sections define the setup and the connid attributes. | The following sections define the setup and the connection | |||
While both attributes are applicable to m= lines that use the TCP | attributes. While both attributes are applicable to m= lines that | |||
protocol identifier, they are not limited to them. These attributes | use the TCP protocol identifier, they are not limited to them. These | |||
MAY be used in any m= line which uses a connection-oriented transport | attributes MAY be used in conjunction with any m= line which uses a | |||
protocol, even if the protocol identifier of the m= line is not TCP. | connection- oriented transport protocol, even if the protocol | |||
identifier of the m= line is not TCP. | ||||
4. Setup Attribute | 4. Setup Attribute | |||
The setup attribute indicates which of the end points should initiate | The setup attribute indicates which of the end points should initiate | |||
the connection establishment (e.g., send the initial TCP SYN). The | the connection establishment (e.g., send the initial TCP SYN). The | |||
setup attribute is charset-independent and can be a session-level or | setup attribute is charset-independent and can be a session-level or | |||
a media-level attribute. The following is the ABNF of the setup | a media-level attribute. The following is the ABNF of the setup | |||
attribute: | attribute: | |||
setup-attr = "a=setup:" role | setup-attr = "a=setup:" role | |||
skipping to change at page 4, line 40 | skipping to change at page 4, line 42 | |||
Passive: The endpoint will accept an incoming connection. | Passive: The endpoint will accept an incoming connection. | |||
ActPass: The endpoint is willing to accept an incoming connection | ActPass: The endpoint is willing to accept an incoming connection | |||
or to initiate an outgoing connection. | or to initiate an outgoing connection. | |||
Holdconn: The endpoint does not want the connection to be | Holdconn: The endpoint does not want the connection to be | |||
established for the time being. | established for the time being. | |||
4.1 The Setup Attribute in the Offer/answer Model | 4.1 The Setup Attribute in the Offer/answer Model | |||
The offer/answer model, defined in RFC 3264 [4], provides endpoints | The offer/answer model, defined in RFC 3264 [5], provides endpoints | |||
with a means to obtain shared view of a session. Some session | with a means to obtain shared view of a session. Some session | |||
parameters are negotiated (e.g., codecs to use), while others are | parameters are negotiated (e.g., codecs to use), while others are | |||
simply communicated from one endpoint to the other (e.g., IP | simply communicated from one endpoint to the other (e.g., IP | |||
addresses). The value of the setup attribute falls into the first | addresses). The value of the setup attribute falls into the first | |||
category. That is, both endpoints negotiate its value using the | category. That is, both endpoints negotiate its value using the | |||
offer/answer model. | offer/answer model. | |||
The negotiation of the value of the setup attribute takes places as | The negotiation of the value of the setup attribute takes places as | |||
follows. The offerer states which role or roles it is willing to | follows. The offerer states which role or roles it is willing to | |||
perform and the answerer, taking the offerer's willingness into | perform and the answerer, taking the offerer's willingness into | |||
consideration, chooses which roles both endpoints will actually | consideration, chooses which roles both endpoints will actually | |||
perform during connection establishment. The following are the values | perform during connection establishment. The following are the | |||
that the setup attribute can take in an offer/answer exchange: | values that the setup attribute can take in an offer/answer exchange: | |||
Offer Answer | Offer Answer | |||
________________ | ________________ | |||
active passive / holdconn | active passive / holdconn | |||
passive active / holdconn | passive active / holdconn | |||
actpass active / passive / holdconn | actpass active / passive / holdconn | |||
holdconn holdconn | holdconn holdconn | |||
The active endpoint SHOULD initiate a connection to the port number | The active endpoint SHOULD initiate a connection to the port number | |||
on the m= line of the other endpoint. The port number on its own m= | on the m= line of the other endpoint. The port number on its own m= | |||
skipping to change at page 5, line 40 | skipping to change at page 5, line 43 | |||
offer. That is, the offerer has no preference as to whether it | offer. That is, the offerer has no preference as to whether it | |||
accepts or initiates the connection and, so, is letting the answerer | accepts or initiates the connection and, so, is letting the answerer | |||
choose. | choose. | |||
A value of holdconn indicates that the connection should not be | A value of holdconn indicates that the connection should not be | |||
established for the time being. | established for the time being. | |||
The default value of the setup attribute in an offer/answer exchange | The default value of the setup attribute in an offer/answer exchange | |||
is active in the offer and passive in the answer. | is active in the offer and passive in the answer. | |||
5. The Connid Attribute | 5. The Connection Attribute | |||
The preceding description of the setup attribute has been in the | The preceding description of the setup attribute has been in the | |||
context of using SDP to initiate a session. Still, SDP may be | context of using SDP to initiate a session. Still, SDP may be | |||
exchanged between endpoints at various stages of a session to | exchanged between endpoints at various stages of a session to | |||
accomplish tasks such as terminating a session, redirecting media to | accomplish tasks such as terminating a session, redirecting media to | |||
a new endpoint, or renegotiating the media parameters for a session. | a new endpoint, or renegotiating the media parameters for a session. | |||
After the initial session has been established, it may be ambiguous | After the initial session has been established, it may be ambiguous | |||
as to whether subsequent SDP exchange represents a confirmation that | as to whether subsequent SDP exchange represents a confirmation that | |||
the endpoint is to continue using the current media connection | the endpoint is to continue using the current media connection | |||
unchanged, or is a request to make a new media connection. The | unchanged, or is a request to make a new media connection. The | |||
media-level connid attribute, which is charset-independent, is used | media-level connection attribute, which is charset-independent, is | |||
to disambiguate these two scenarios. The following is the ABNF of the | used to disambiguate these two scenarios. The following is the ABNF | |||
connid attribute: | of the connection attribute: | |||
connid = "a=connid:" connection-identifier | ||||
connection-identifier = token | ||||
The connid attribute provides an identifier for the transport-layer | connection-attr = "a=connection:" conn-value | |||
connection used by the m= line. Connid values are meaningful in the | conn-value = "new" / "existing" | |||
context of a particular m= line. So, different m= lines in the same | ||||
session description MAY have the same connid value. | ||||
5.1 Offerer Behaviour | 5.1 Offerer Behaviour | |||
Offerers and answerers use the connid attribute to decide whether a | Offerers and answerers use the connection attribute to decide whether | |||
new transport connection needs to be established or, on the other | a new transport connection needs to be established or, on the other | |||
hand, the existing transport connection should still be used. | hand, the existing transport connection should still be used. The | |||
connection value resulting from an offer/answer exchange is the | ||||
connection value in the answer. If the connection value in the | ||||
answer is "new", the end-points SHOULD establish a new connection. | ||||
If the connection value in the answer is "existing", the end-points | ||||
SHOULD continue using the exiting connection. | ||||
When an offerer generates an m= line which uses a connection-oriented | When an offerer generates an m= line which uses a connection-oriented | |||
transport, it SHOULD provide such an m= line with a connection | transport, it SHOULD provide a connection attribute for the m= line | |||
identifier using a connid attribute, unless the application using the | unless the application using the m= line has other means to deal with | |||
m= line has other means to deal with connection reestablishment. The | connection reestablishment. The connection attribute in an initial | |||
connid attribute in an initial offer (i.e., no transport connection | offer (i.e., no transport connection has been established yet) takes | |||
has been established yet) can take any value. This value identifies | the value of "new". | |||
the initial connection that the endpoints will attempt to establish. | ||||
After the initial offer/answer exchange, any of the endpoints can | After the initial offer/answer exchange, any of the endpoints can | |||
generate a new offer to change some characteristics of the session | generate a new offer to change some characteristics of the session | |||
(e.g., the direction attribute). If such an offerer wants to continue | (e.g., the direction attribute). If such an offerer wants to | |||
using the previously-established transport-layer connection for the | continue using the previously-established transport-layer connection | |||
m= line, the offerer MUST use the same connid value for the m= line. | for the m= line, the offerer MUST use use a connection value of | |||
If, on the other hand, the offerer wants to establish a new | "existing" for the m= line. If, on the other hand, the offerer wants | |||
transport-layer connection for the m= line, it MUST use a new connid | to establish a new transport-layer connection for the m= line, it | |||
value. This new connid value MUST be different from the current | MUST use a connection value of "new". | |||
connid value in use and SHOULD be different than any connid value | ||||
used previously in the same m= line. | ||||
The connid value in an offer is only compared with the connid | ||||
value currently in use. So, having a connid value different than | ||||
the one in use is enough to trigger the establishment of a new | ||||
connection. Still, it is recommended to use a value different than | ||||
all the previous ones used in the m= line to make debugging | ||||
easier. | ||||
Note that, according to the rules in this section, an offer that | Note that, according to the rules in this section, an offer that | |||
changes the transport address (IP address plus port number) of an | changes the transport address (IP address or port number) of an m= | |||
m= line will have a new connid value for this m= line. | line will have a connection value of "new". | |||
5.2 Answerer Behaviour | The default value of the connection attribute in an offer/answer | |||
exchange is "new". | ||||
The connid value for an m= line is negotiated using the offer/answer | 5.2 Answerer Behaviour | |||
model. The resulting connid value after an offer/answer exchange is | ||||
the connid value in the answer. | ||||
For an m= line, if the offer contains a new connid value (i.e., | The connection value for an m= line is negotiated using the offer/ | |||
different from the one in use) the answerer MUST use this value in | answer model. The resulting connection value after an offer/answer | |||
the answer. If the offer contains the connid value in use and the | exchange is the connection value in the answer. If the connection | |||
answerer wishes to continue using the existing transport-layer | value in the offer is "new", the answerer MUST also use a value of | |||
connection, the answerer MUST use this connid value in the answer. If | "new" in the answer. If the connection value in the offer is | |||
the offer contains the connid value in use but the answerer wishes to | "existing", the answerer uses a value of "existing" in the answer if | |||
establish a new transport-layer connection, the answerer MUST use a | it wishes to continue using the existing connection and a value of | |||
new connid value in the answer. | "new" if it wants a new connection to be established. | |||
If the connid value for an m= line resulting from an offer/answer | In some scenarios where third party call control [12] is used, an | |||
exchange is different than the connid in use so far, the endpoints | endpoint may receive an initial offer with a connection value of | |||
SHOULD establish a new transport-layer connection as indicated by the | "existing". Following the previous rules, such an answerer would | |||
setup attribute. If a previous connection is still up, the endpoint | use a connection value of "new" in the answer. | |||
responsible for establishing the new connection performing the active | ||||
role SHOULD close it as soon as the offer/answer exchange is | ||||
completed. It is up to the application to ensure proper data | ||||
synchornization between the two connections. | ||||
If the connid value for an m= line resulting from an offer/answer | If the connection value for an m= line resulting from an offer/answer | |||
exchange is the same as the connid in use so far, the endpoints | exchange is "new", the endpoints SHOULD establish a new | |||
SHOULD continue using the existing connection. | transport-layer connection as indicated by the setup attribute. If a | |||
previous connection is still up, the endpoints SHOULD close it as | ||||
soon as the offer/answer exchange is completed. It is up to the | ||||
application to ensure proper data synchornization between the two | ||||
connections. | ||||
In the past, it was proposed to use the presence of a media-level | If the connection value for an m= line resulting from an offer/answer | |||
SDP attribute as a flag to indicate that a new connection needed | exchange is "existing", the endpoints SHOULD continue using the | |||
to be established. It was decided not to follow the flag approach | existing connection. | |||
because an offerer whose intent was to signal "no changes" in a | ||||
session would need to issue a different offer than the previous | ||||
one (i.e., it would need to remove the flag from the m= line). By | ||||
using the connid attribute instead, an offerer signals "no | ||||
changes" in a session by issuing an identical offer to the one in | ||||
use. | ||||
6. Connection Management | 6. Connection Management | |||
This section addresses connection establishment, connection | ||||
reestablishment, and connection termination. | ||||
6.1 Connection Establishment | ||||
An endpoint that according to an offer/answer exchange is supposed to | An endpoint that according to an offer/answer exchange is supposed to | |||
initiate a new connection SHOULD initiate it as soon as the offer/ | initiate a new connection SHOULD initiate it as soon as it is able | |||
answer exchange is completed, even if the endpoint does not intend to | to, even if the endpoint does not intend to immediately begin sending | |||
immediately begin sending media to the remote endpoint. This allows | media to the remote endpoint. This allows media to flow from the | |||
media to flow from the remote endpoint if needed. | remote endpoint if needed. | |||
Typically, endpoints do not close the connection until the session | Note that some endpoints need to wait for some event to happen | |||
has expired, been explicitly terminated, or a new connid value has | before being able to establish the connection. For example, a | |||
been provided for the m= line. Additionaly, specific applications can | wireless terminal may need to set up a radio bearer before being | |||
describe further scenarios where an end-point may close a given | able to initiate a connection. | |||
connection. In case the session is explicitly terminated by one of | ||||
the endpoints (e.g., the endpoint sends a SIP [9] BYE), the end point | 6.2 Connection Reestablishment | |||
terminating the session is responsible for closing the | ||||
transport-connection. | ||||
If an endpoint determines that the transport-connection for an m= | If an endpoint determines that the transport-connection for an m= | |||
line has been closed and it should be reestablished, it SHOULD | line has been closed and it should be reestablished, it SHOULD | |||
perform a new offer/answer exchange using a new connid value for this | perform a new offer/answer exchange using a connection value of "new" | |||
m= line. | for this m= line. | |||
Note that the SDP direction attribute (e.g., a=sendonly) deals | Note that the SDP direction attribute (e.g., a=sendonly) deals | |||
with the media sent over the transport-connection, but has no | with the media sent over the transport-connection, but has no | |||
impact on the transport-connection itself. | impact on the transport-connection itself. | |||
6.3 Connection Termination | ||||
Typically, endpoints do not close the connection until the session | ||||
has expired, been explicitly terminated, or a new connection value | ||||
has been provided for the m= line. Additionaly, specific | ||||
applications can describe further scenarios where an end-point may | ||||
close a given connection. As soon as an end-point notices that it | ||||
needs to terminate a connection, it SHOULD do so. | ||||
While in TCP both end-points need to close a connection, other | ||||
connection-oriented transport protocols may not have the concept of | ||||
half-close connections. In this case, a connection would be | ||||
terminated as soon as one of the end-points closed it, making it | ||||
unnecessary for the other end-point to perform any further action to | ||||
terminate the connection. | ||||
In any case, individual applications may provide further | ||||
considerations on how to achieve a graceful connection termination. | ||||
For example, a file application using TCP receiving a FIN from the | ||||
remote endpoint may need to finish the ongoing transmission of a file | ||||
before sending its own FIN. | ||||
7. Examples | 7. Examples | |||
The following examples show the most common usage of the setup | The following examples show the most common usage of the setup | |||
attribute combined with TCP-based media descriptions. For the purpose | attribute combined with TCP-based media descriptions. For the | |||
of brevity, the main portion of the session description is omitted in | purpose of brevity, the main portion of the session description is | |||
the examples, which only show m= lines and their attributes | omitted in the examples, which only show m= lines and their | |||
(including c= lines). | attributes (including c= lines). | |||
7.1 Passive/Active | 7.1 Passive/Active | |||
An offerer at 192.0.2.2 signals its availability for a T.38 fax | An offerer at 192.0.2.2 signals its availability for a T.38 fax | |||
session at port 54111: | session at port 54111: | |||
m=image 54111 TCP t38 | m=image 54111 TCP t38 | |||
c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
a=setup:passive | a=setup:passive | |||
a=connid:1 | a=connection:new | |||
An answerer at 192.0.2.1 receiving this offer responds with the | An answerer at 192.0.2.1 receiving this offer responds with the | |||
following answer: | following answer: | |||
c=IN IP4 192.0.2.1 | ||||
m=image 9 TCP t38 | m=image 9 TCP t38 | |||
c=IN IP4 192.0.2.1 | ||||
a=setup:active | a=setup:active | |||
a=connid:1 | a=connection:new | |||
The endpoint at 192.0.2.1 then initiates the TCP connection to port | The endpoint at 192.0.2.1 then initiates the TCP connection to port | |||
54111 at 192.0.2.2. | 54111 at 192.0.2.2. | |||
7.2 Passive/Active with Connection Reestablishment | 7.2 Actpass/Passive | |||
Continuing the preceding example, consider the scenario where the TCP | ||||
connection fails and the endpoints wish to reestablish the connection | ||||
for the session. The endpoint at 192.0.2.2 signals this intent with | ||||
the following SDP: | ||||
m=image 54111 TCP t38 | ||||
c=IN IP4 192.0.2.2 | ||||
a=setup:passive | ||||
a=connid:2 | ||||
The new connid value informs the endpoint at 192.0.2.1 that this SDP | ||||
represents the intent to establish a new connection for media | ||||
transport, rather than continuing with the original connection. If | ||||
192.0.2.1 agrees to continue the session using a new connection, it | ||||
responds with: | ||||
m=image 9 TCP t38 | ||||
c=IN IP4 192.0.2.1 | ||||
a=setup:active | ||||
a=connid:2 | ||||
7.3 Actpass/Passive | ||||
In another example, an offerer at 192.0.2.2 signals its availability | In another example, an offerer at 192.0.2.2 signals its availability | |||
for a T.38 fax session at TCP port 54111. Additionally, this offerer | for a T.38 fax session at TCP port 54111. Additionally, this offerer | |||
is also willing to set up the media stream by initiating the TCP | is also willing to set up the media stream by initiating the TCP | |||
connection: | connection: | |||
m=image 54111 TCP t38 | m=image 54111 TCP t38 | |||
c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
a=setup:actpass | a=setup:actpass | |||
a=connid:3 | a=connection:new | |||
The endpoint at 192.0.2.1 responds with the following description: | The endpoint at 192.0.2.1 responds with the following description: | |||
m=image 54321 TCP t38 | m=image 54321 TCP t38 | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
a=setup:passive | a=setup:passive | |||
a=connid:3 | a=connection:new | |||
This will cause the offerer (at 192.0.2.2) to initiate a connection | This will cause the offerer (at 192.0.2.2) to initiate a connection | |||
to port 54321 at 192.0.2.1. | to port 54321 at 192.0.2.1. | |||
7.3 Existing Connection Reuse | ||||
Subsequent to the exchange in Section 7.2, another offer/answer | ||||
exchange is initiated in the opposite direction. The endpoint at | ||||
192.0.2.1 wishes to continue using the existing connection: | ||||
m=image 54321 TCP t38 | ||||
c=IN IP4 192.0.2.1 | ||||
a=setup:passive | ||||
a=connection:existing | ||||
The endpoint at 192.0.2.2 also wishes to use the existing connection | ||||
and responds with the following description: | ||||
m=image 9 TCP t38 | ||||
c=IN IP4 192.0.2.2 | ||||
a=setup:active | ||||
a=connection:existing | ||||
The existing connection from 192.0.2.2 to 192.0.2.1 will be reused. | ||||
Note that the endpoint at 192.0.2.2 uses setup:active in response | ||||
to the offer of setup:passive, and uses port 9 because it is | ||||
active. | ||||
7.4 Existing Connection Refusal | ||||
Subsequent to the exchange in Section 7.3, another offer/answer | ||||
exchange is initiated by the endpoint at 192.0.2.2, again wishing to | ||||
reuse the existing connection: | ||||
m=image 54111 TCP t38 | ||||
c=IN IP4 192.0.2.2 | ||||
a=setup:actpass | ||||
a=connection:existing | ||||
However, this time the answerer is unaware of the old connection and | ||||
so wishes to establish a new one. (This could be the result of a | ||||
transfer via 3pcc.) It is unable to act in the passive mode so | ||||
responds as active: | ||||
m=image 9 TCP t38 | ||||
c=IN IP4 192.0.2.3 | ||||
a=setup:active | ||||
a=connection:new | ||||
The endpoint at 192.0.2.3 then initiates the TCP connection to port | ||||
54111 at 192.0.2.2, and the endpoint at 192.0.2.2 closes the old | ||||
connection. | ||||
Note that the endpoint at 192.0.2.2, while specifying connection: | ||||
existing has reverted to setup:actpass and its real port number, | ||||
rather than repeating setup:active and port 9 from the previous | ||||
cycle. Had it not done this, this negotiation would have failed. | ||||
8. Security Considerations | 8. Security Considerations | |||
See RFC 2327 [3] for security and other considerations specific to | See RFC 2327 [4] for security and other considerations specific to | |||
the Session Description Protocol in general. | the Session Description Protocol in general. | |||
An attacker may attempt to modify the values of the connid and setup | An attacker may attempt to modify the values of the connection and | |||
attributes to have endpoints reestablish connections unnecesaryly or | setup attributes to have endpoints reestablish connections | |||
to keep them from establishing a connection. So, it is STRONGLY | unnecesaryly or to keep them from establishing a connection. So, it | |||
RECOMMENDED that integrity protection be applied to the SDP session | is STRONGLY RECOMMENDED that integrity protection be applied to the | |||
descriptions. For session descriptions carried in SIP [9], S/MIME is | SDP session descriptions. For session descriptions carried in SIP | |||
the natural choice to provide such end-to-end integrity protection, | [10], S/MIME is the natural choice to provide such end-to-end | |||
as described in RFC 3261 [9]. Other applications MAY use a different | integrity protection, as described in RFC 3261 [10]. Other | |||
form of integrity protection. | applications MAY use a different form of integrity protection. | |||
9. IANA Considerations | 9. IANA Considerations | |||
This document defines two session and media level SDP attributes: | This document defines two session and media level SDP attributes: | |||
setup and connid. Their formats are defined in Section 4 and Section | setup and connection. Their formats are defined in Section 4 and | |||
5 respectively. These two attributes should be registered by the IANA | Section 5 respectively. These two attributes should be registered by | |||
on | the IANA on | |||
http://www.iana.org/assignments/sdp-parameters | http://www.iana.org/assignments/sdp-parameters | |||
under "att-field (both session and media level)". | under "att-field (both session and media level)". | |||
This document defines a proto values: TCP. Its format is defined in | This document defines a proto value: TCP. Its format is defined in | |||
Section 3. This proto value should be registered by the IANA on | Section 3. This proto value should be registered by the IANA on | |||
http://www.iana.org/assignments/sdp-parameters | http://www.iana.org/assignments/sdp-parameters | |||
under "proto". | under "proto". | |||
Specifications defining new proto values, like this one, must define | ||||
the rules by which their media format (fmt) namespace is managed. | ||||
For the TCP protocol, new formats SHOULD have an associated MIME | ||||
registration. Use of an existing MIME subtype for the format is | ||||
encouraged. If no MIME subtype exists, it is RECOMMENDED that a | ||||
suitable one is registered through the IETF process [2] by production | ||||
of, or reference to, a standards-track RFC that defines the transport | ||||
protocol for the format. | ||||
10. Acknowledgements | 10. Acknowledgements | |||
Jonathan Rosenberg, Rohan Mahy, Anders Kristensen, Joerg Ott, Paul | Jonathan Rosenberg, Rohan Mahy, Anders Kristensen, Joerg Ott, Paul | |||
Kyzivat, Robert Fairlie-Cuninghame, Colin Perkins, and Christer | Kyzivat, Robert Fairlie-Cuninghame, Colin Perkins, and Christer | |||
Holmberg provided valuable insights and contributions. | Holmberg provided valuable insights and contributions. | |||
11. References | 11. References | |||
11.1 Normative References | 11.1 Normative References | |||
[1] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, | [1] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, | |||
September 1981. | September 1981. | |||
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [2] Freed, N., Klensin, J. and J. Postel, "Multipurpose Internet | |||
Mail Extensions (MIME) Part Four: Registration Procedures", BCP | ||||
13, RFC 2048, November 1996. | ||||
[3] Bradner, S., "Key words for use in RFCs to Indicate Requirement | ||||
Levels", BCP 14, RFC 2119, March 1997. | Levels", BCP 14, RFC 2119, March 1997. | |||
[3] Handley, M. and V. Jacobson, "SDP: Session Description | [4] Handley, M. and V. Jacobson, "SDP: Session Description | |||
Protocol", RFC 2327, April 1998. | Protocol", RFC 2327, April 1998. | |||
[4] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with | [5] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with | |||
Session Description Protocol (SDP)", RFC 3264, June 2002. | Session Description Protocol (SDP)", RFC 3264, June 2002. | |||
11.2 Informative References | 11.2 Informative References | |||
[5] Schulzrinne, H., Rao, A. and R. Lanphier, "Real Time Streaming | [6] Schulzrinne, H., Rao, A. and R. Lanphier, "Real Time Streaming | |||
Protocol (RTSP)", RFC 2326, April 1998. | Protocol (RTSP)", RFC 2326, April 1998. | |||
[6] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC | [7] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC | |||
2246, January 1999. | 2246, January 1999. | |||
[7] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., | [8] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., | |||
Leach, P. and T. Berners-Lee, "Hypertext Transfer Protocol -- | Leach, P. and T. Berners-Lee, "Hypertext Transfer Protocol -- | |||
HTTP/1.1", RFC 2616, June 1999. | HTTP/1.1", RFC 2616, June 1999. | |||
[8] Handley, M., Perkins, C. and E. Whelan, "Session Announcement | [9] Handley, M., Perkins, C. and E. Whelan, "Session Announcement | |||
Protocol", RFC 2974, October 2000. | Protocol", RFC 2974, October 2000. | |||
[9] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., | [10] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., | |||
Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: | Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: | |||
Session Initiation Protocol", RFC 3261, June 2002. | Session Initiation Protocol", RFC 3261, June 2002. | |||
[10] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD | [11] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD | |||
63, RFC 3629, November 2003. | 63, RFC 3629, November 2003. | |||
[12] Rosenberg, J., Peterson, J., Schulzrinne, H. and G. Camarillo, | ||||
"Best Current Practices for Third Party Call Control (3pcc) in | ||||
the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, April | ||||
2004. | ||||
Authors' Addresses | Authors' Addresses | |||
David Yon | David Yon | |||
Dialout.Net, Inc | Tactical Software, LLC | |||
One Indian Head Plaza | 670 N Commercial St | |||
Nashua, NH 03060 | Manchester, NH 03101 | |||
USA | USA | |||
EMail: yon@dialout.net | EMail: yon-comedia@rfdsoftware.com | |||
Gonzalo Camarillo | Gonzalo Camarillo | |||
Ericsson | Ericsson | |||
Hirsalantie 11 | Hirsalantie 11 | |||
Jorvas 02420 | Jorvas 02420 | |||
Finland | Finland | |||
EMail: Gonzalo.Camarillo@ericsson.com | EMail: Gonzalo.Camarillo@ericsson.com | |||
Intellectual Property Statement | Intellectual Property Statement | |||
The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
Intellectual Property Rights or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
might or might not be available; nor does it represent that it has | might or might not be available; nor does it represent that it has | |||
made any independent effort to identify any such rights. Information | made any independent effort to identify any such rights. Information | |||
on the IETF's procedures with respect to rights in IETF Documents can | on the procedures with respect to rights in RFC documents can be | |||
be found in BCP 78 and BCP 79. | found in BCP 78 and BCP 79. | |||
Copies of IPR disclosures made to the IETF Secretariat and any | Copies of IPR disclosures made to the IETF Secretariat and any | |||
assurances of licenses to be made available, or the result of an | assurances of licenses to be made available, or the result of an | |||
attempt made to obtain a general license or permission for the use of | attempt made to obtain a general license or permission for the use of | |||
such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
specification can be obtained from the IETF on-line IPR repository at | specification can be obtained from the IETF on-line IPR repository at | |||
http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |