draft-ietf-mmusic-sdp-comedia-10.txt | rfc4145.txt | |||
---|---|---|---|---|
MMUSIC Working Group D. Yon | ||||
Internet-Draft Tactical Software, LLC | Network Working Group D. Yon | |||
Expires: May 27, 2005 G. Camarillo | Request for Comments: 4145 Tactical Software, LLC | |||
Category: Standards Track G. Camarillo | ||||
Ericsson | Ericsson | |||
November 26, 2004 | September 2005 | |||
TCP-Based Media Transport in the Session Description Protocol (SDP) | TCP-Based Media Transport in the Session Description Protocol (SDP) | |||
draft-ietf-mmusic-sdp-comedia-10.txt | ||||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is subject to all provisions | This document specifies an Internet standards track protocol for the | |||
of section 3 of RFC 3667. By submitting this Internet-Draft, each | Internet community, and requests discussion and suggestions for | |||
author represents that any applicable patent or other IPR claims of | improvements. Please refer to the current edition of the "Internet | |||
which he or she is aware have been or will be disclosed, and any of | Official Protocol Standards" (STD 1) for the standardization state | |||
which he or she become aware will be disclosed, in accordance with | and status of this protocol. Distribution of this memo is unlimited. | |||
RFC 3668. | ||||
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 | ||||
http://www.ietf.org/ietf/1id-abstracts.txt. | ||||
The list of Internet-Draft Shadow Directories can be accessed at | ||||
http://www.ietf.org/shadow.html. | ||||
This Internet-Draft will expire on May 27, 2005. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2004). | Copyright (C) The Internet Society (2005). | |||
Abstract | Abstract | |||
This document describes how to express media transport over TCP using | This document describes how to express media transport over TCP using | |||
the Session Description Protocol (SDP). It defines the SDP 'TCP' | the Session Description Protocol (SDP). It defines the SDP 'TCP' | |||
protocol identifier, the SDP 'setup' attribute, which describes the | protocol identifier, the SDP 'setup' attribute, which describes the | |||
connection setup procedure, and the SDP 'connection' attribute, which | connection setup procedure, and the SDP 'connection' attribute, which | |||
handles connection reestablishment. | 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 Connection 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 . . . . . . . . . . . . . . . . . . . . 8 | 6. Connection Management . . . . . . . . . . . . . . . . . . . . 8 | |||
6.1 Connection Establishment . . . . . . . . . . . . . . . . . 8 | 6.1. Connection Establishment . . . . . . . . . . . . . . . . 8 | |||
6.2 Connection Reestablishment . . . . . . . . . . . . . . . . 8 | 6.2. Connection Reestablishment . . . . . . . . . . . . . . . 8 | |||
6.3 Connection Termination . . . . . . . . . . . . . . . . . . 8 | 6.3. Connection Termination . . . . . . . . . . . . . . . . . 8 | |||
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
7.1 Passive/Active . . . . . . . . . . . . . . . . . . . . . . 9 | 7.1. Passive/Active . . . . . . . . . . . . . . . . . . . . . 9 | |||
7.2 Actpass/Passive . . . . . . . . . . . . . . . . . . . . . 9 | 7.2. Actpass/Passive. . . . . . . . . . . . . . . . . . . . . 9 | |||
7.3 Existing Connection Reuse . . . . . . . . . . . . . . . . 10 | 7.3. Existing Connection Reuse. . . . . . . . . . . . . . . . 10 | |||
7.4 Existing Connection Refusal . . . . . . . . . . . . . . . 10 | 7.4. Existing Connection Refusal. . . . . . . . . . . . . . . 10 | |||
8. Other Connection-Oriented Transport Protocols . . . . . . . . 11 | 8. Other Connection-Oriented Transport Protocols. . . . . . . . . 11 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . 12 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
12.1 Normative References . . . . . . . . . . . . . . . . . . . . 12 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
12.2 Informative References . . . . . . . . . . . . . . . . . . . 13 | 12.2. Informative References . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
Intellectual Property and Copyright Statements . . . . . . . . 15 | ||||
1. Introduction | 1. Introduction | |||
The Session Description Protocol [4] 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 [11]) 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; it defines 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 [9], SIP [10], RTSP | application protocols for transport (e.g., SAP [9], SIP [10], RTSP | |||
[6], email, HTTP [8], etc.). | [6], email, HTTP [8], etc.). | |||
SDP [4] 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 TCP is more appropriate. This document | applications for which TCP is more appropriate. This document | |||
defines a new protocol identifier, 'TCP', to describe TCP connetions | defines a new protocol identifier, 'TCP', to describe TCP connections | |||
in SDP. | in SDP. | |||
TCP introduces two new factors when describing a session: how and | TCP introduces two new factors when describing a session: how and | |||
when should endpoints perform the TCP connection setup procedure. | when should endpoints perform the TCP connection setup procedure. | |||
This document defines two new attributes to describe TCP connection | This document defines two new attributes to describe TCP connection | |||
setups: 'setup' and '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 [3] and indicate requirement levels for | described in BCP 14, RFC 2119 [3], and they indicate requirement | |||
compliant implementations. | levels for 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 | |||
[4]. | [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'. | |||
skipping to change at page 4, line 28 | skipping to change at page 4, line 30 | |||
'active': The endpoint will initiate an outgoing connection. | 'active': The endpoint will initiate an outgoing connection. | |||
'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 | 'actpass': The endpoint is willing to accept an incoming | |||
connection or to initiate an outgoing connection. | 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 [5], 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 | perform during connection establishment. The following are the | |||
values that the 'setup' attribute can take in an offer/answer | values that the 'setup' attribute can take in an offer/answer | |||
exchange: | 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 | on the 'm' line of the other endpoint. The port number on its own | |||
'm' line is irrelevant, and the opposite endpoint MUST NOT attempt to | 'm' line is irrelevant, and the opposite endpoint MUST NOT attempt to | |||
initiate a connection to the port number specified there. | initiate a connection to the port number specified there. | |||
Nevertheless, since the 'm' line must contain a valid port number, | Nevertheless, since the 'm' line must contain a valid port number, | |||
the endpoint specifying using the value active SHOULD specify a port | the endpoint using the value 'active' SHOULD specify a port number of | |||
number of 9 (the discard port) on its 'm' line. The endpoint MUST | 9 (the discard port) on its 'm' line. The endpoint MUST NOT specify | |||
NOT specify a port number of zero, except to denote an 'm' line that | a port number of zero, except to denote an 'm' line that has been or | |||
has been or is being refused. | is being refused. | |||
The passive endpoint SHOULD be ready to accept a connection on the | The passive endpoint SHOULD be ready to accept a connection on the | |||
port number specified in the 'm' line. | port number specified in the 'm' line. | |||
A value of 'actpass' indicates that the offerer can either initiate a | A value of 'actpass' indicates that the offerer can either initiate a | |||
connection to the port number on the 'm' line in the answer or accept | connection to the port number on the 'm' line in the answer, or | |||
a connection on the port number specified in the 'm' line in the | accept a connection on the port number specified in the 'm' line in | |||
offer. That is, the offerer has no preference as to whether it | the 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 Connection Attribute | 5. The Connection Attribute | |||
The preceding description of the 'setup' attribute is placed in the | The preceding description of the 'setup' attribute is placed 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 | whether a subsequent SDP exchange represents a confirmation that the | |||
the endpoint is to continue using the current TCP connection | endpoint is to continue using the current TCP connection unchanged, | |||
unchanged, or is a request to make a new TCP connection. The | or is a request to make a new TCP connection. The media-level | |||
media-level 'connection' attribute, which is charset-independent, is | 'connection' attribute, which is charset-independent, is used to | |||
used to disambiguate these two scenarios. The following is the ABNF | disambiguate these two scenarios. The following is the ABNF of the | |||
of the connection attribute: | connection attribute: | |||
connection-attr = "a=connection:" conn-value | connection-attr = "a=connection:" conn-value | |||
conn-value = "new" / "existing" | conn-value = "new" / "existing" | |||
5.1 Offerer Behaviour | 5.1. Offerer Behaviour | |||
Offerers and answerers use the 'connection' attribute to decide | Offerers and answerers use the 'connection' attribute to decide | |||
whether a new transport connection needs to be established or, on the | whether a new transport connection needs to be established or, on the | |||
other hand, the existing TCP connection should still be used. When | other hand, the existing TCP connection should still be used. When | |||
an offerer generates an 'm' line which uses TCP, it SHOULD provide a | an offerer generates an 'm' line that uses TCP, it SHOULD provide a | |||
connection attribute for the 'm' line unless the application using | connection attribute for the 'm' line unless the application using | |||
the 'm' line has other means to deal with connection reestablishment. | the 'm' line has other means to deal with connection reestablishment. | |||
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 | (e.g., the direction attribute). If such an offerer wants to | |||
continue using the previously-established transport-layer connection | continue using the previously-established transport-layer connection | |||
for the 'm' line, the offerer MUST use a connection value of | for the 'm' line, the offerer MUST use a connection value of | |||
'existing' for the 'm' line. If, on the other hand, the offerer | 'existing' for the 'm' line. If, on the other hand, the offerer | |||
wants to establish a new transport-layer connection for the 'm' line, | wants to establish a new transport-layer connection for the 'm' line, | |||
it MUST use a connection value of 'new'. | it MUST use a connection value of 'new'. | |||
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 or port number) of an | changes the transport address (IP address or port number) of an | |||
'm' line will have a connection value of 'new'. The same way, the | 'm' line will have a connection value of 'new'. Similarly, the | |||
'connection' attribute in an initial offer (i.e., no transport | 'connection' attribute in an initial offer (i.e., no transport | |||
connection has been established yet) takes the value of 'new'. | connection has been established yet) takes the value of 'new'. | |||
The 'connection' value resulting from an offer/answer exchange is the | The 'connection' value resulting from an offer/answer exchange is the | |||
'connection' value in the answer. If the 'connection' value in the | 'connection' value in the answer. If the 'connection' value in the | |||
answer is 'new', the end-points SHOULD establish a new connection. | answer is 'new', the end-points SHOULD establish a new connection. | |||
If the connection value in the answer is 'existing', the end-points | If the connection value in the answer is 'existing', the end-points | |||
SHOULD continue using the exiting connection. | SHOULD continue using the exiting connection. | |||
Taking into consideration the rules in Section 5.2, the following are | Taking into consideration the rules in Section 5.2, the following are | |||
the values that the 'connetion' attribute can take in an offer/answer | the values that the 'connection' attribute can take in an | |||
exchange: | offer/answer exchange: | |||
Offer Answer | Offer Answer | |||
________________ | ________________ | |||
new new | new new | |||
existing existing / new | existing existing / new | |||
If the connection value resulting from an offer/answer exchange is | If the connection value resulting from an offer/answer exchange is | |||
'existing', the end-points continue using the existing connection. | 'existing', the end-points continue using the existing connection. | |||
Consequently, the port numbers, IP addresses, and 'setup' attributes | Consequently, the port numbers, IP addresses, and 'setup' attributes | |||
negotiated in the offer/answer exchange are ignored because there is | negotiated in the offer/answer exchange are ignored because there is | |||
no need to establish a new connection. | no need to establish a new connection. | |||
The previous rule implies that an offerer generating an offer with a | The previous rule implies that an offerer generating an offer with a | |||
connection value of 'existing' and a setup value of 'passive' needs | connection value of 'existing' and a setup value of 'passive' needs | |||
to be ready (i.e., needs to allocate resources) to receive a | to be ready (i.e., needs to allocate resources) to receive a | |||
connection request from the answerer just in case the answerer | connection request from the answerer just in case the answerer | |||
chooses a connection value of 'new' for the answer. However, if the | chooses a connection value of 'new' for the answer. However, if the | |||
answerer uses a connection value of 'existing' in the answer, the | answerer uses a connection value of 'existing' in the answer, the | |||
offerer would need to deallocate the previously allocated resources | offerer would need to deallocate the previously allocated resources | |||
which were never used because no connection request was received. | that were never used because no connection request was received. | |||
To avoid allocating resources unnecessary, offerers using a | To avoid allocating resources unnecessarily, offerers using a | |||
connection value of 'existing' in their offers may choose to use a | connection value of 'existing' in their offers may choose to use a | |||
setup value of 'holdconn'. Nevertheless, offerers using this | setup value of 'holdconn'. Nevertheless, offerers using this | |||
strategy should be aware that in the case the answerer chooses a | strategy should be aware that if the answerer chooses a connection | |||
connection value of 'new', a new offer/answer exchange (typically | value of 'new', a new offer/answer exchange (typically initiated by | |||
initiated by the previous offerer) with setup value different than | the previous offerer) with setup value different than 'holdconn' will | |||
'holdconn' will be needed to establish the new connection. This may, | be needed to establish the new connection. This may, of course, | |||
of course, cause delays in the application using the TCP connection. | cause delays in the application using the TCP connection. | |||
The default value of the connection attribute in both offers and | The default value of the connection attribute in both offers and | |||
answers is 'new'. | answers is 'new'. | |||
5.2 Answerer Behaviour | 5.2. Answerer Behaviour | |||
The connection value for an 'm' line is negotiated using the offer/ | The connection value for an 'm' line is negotiated using the offer/ | |||
answer model. The resulting connection value after an offer/answer | answer model. The resulting connection value after an offer/answer | |||
exchange is the connection value in the answer. If the connection | exchange is the connection value in the answer. If the connection | |||
value in the offer is 'new', the answerer MUST also use a value of | value in the offer is 'new', the answerer MUST also use a value of | |||
'new' in the answer. If the connection value in the offer is | 'new' in the answer. If the connection value in the offer is | |||
'existing', the answerer uses a value of 'existing' in the answer if | 'existing', the answerer uses a value of 'existing' in the answer if | |||
it wishes to continue using the existing connection and a value of | it wishes to continue using the existing connection and a value of | |||
'new' if it wants a new connection to be established. | 'new' if it wants a new connection to be established. | |||
In some scenarios where third party call control [12] is used, an | In some scenarios where third party call control [12] is used, an | |||
endpoint may receive an initial offer with a connection value of | endpoint may receive an initial offer with a connection value of | |||
'existing'. Following the previous rules, such an answerer would | 'existing'. Following the previous rules, such an answerer would | |||
use a connection value of 'new' in the answer. | use a connection value of 'new' in the answer. | |||
If the connection value for an 'm' line resulting from an offer/ | If the connection value for an 'm' line resulting from an offer/ | |||
answer exchange is 'new', the endpoints SHOULD establish a new TCP | answer exchange is 'new', the endpoints SHOULD establish a new TCP | |||
connection as indicated by the 'setup' attribute. If a previous TCP | connection as indicated by the 'setup' attribute. If a previous TCP | |||
connection is still up, the endpoints SHOULD close it as soon as the | 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 | offer/answer exchange is completed. It is up to the application to | |||
ensure proper data synchornization between the two TCP connections. | ensure proper data synchronization between the two TCP connections. | |||
If the connection value for an 'm' line resulting from an offer/ | If the connection value for an 'm' line resulting from an offer/ | |||
answer exchange is 'existing', the endpoints SHOULD continue using | answer exchange is 'existing', the endpoints SHOULD continue using | |||
the existing TCP connection. | the existing TCP connection. | |||
6. Connection Management | 6. Connection Management | |||
This section addresses connection establishment, connection | This section addresses connection establishment, connection | |||
reestablishment, and connection termination. | reestablishment, and connection termination. | |||
6.1 Connection Establishment | 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 TCP connection SHOULD initiate it as soon as it is | initiate a new TCP connection SHOULD initiate it as soon as it is | |||
able to, even if the endpoint does not intend to immediately begin | able to, even if the endpoint does not intend to immediately begin | |||
sending media to the remote endpoint. This allows media to flow from | sending media to the remote endpoint. This allows media to flow from | |||
the remote endpoint if needed. | the remote endpoint if needed. | |||
Note that some endpoints need to wait for some event to happen | Note that some endpoints need to wait for some event to happen | |||
before being able to establish the connection. For example, a | before being able to establish the connection. For example, a | |||
wireless terminal may need to set up a radio bearer before being | wireless terminal may need to set up a radio bearer before being | |||
able to initiate a TCP connection. | able to initiate a TCP connection. | |||
6.2 Connection Reestablishment | 6.2. Connection Reestablishment | |||
If an endpoint determines that the TCP for an 'm' line has been | If an endpoint determines that the TCP for an 'm' line has been | |||
closed and it should be reestablished, it SHOULD perform a new offer/ | closed and should be reestablished, it SHOULD perform a new offer/ | |||
answer exchange using a connection value of 'new' for this 'm' line. | answer exchange using a connection value of 'new' 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 TCP connection, but has no impact on | with the media sent over the TCP connection, but has no impact on | |||
the TCP connection itself. | the TCP connection itself. | |||
6.3 Connection Termination | 6.3. Connection Termination | |||
Typically, endpoints do not close the TCP connection until the | Typically, endpoints do not close the TCP connection until the | |||
session has expired, been explicitly terminated, or a new connection | session has expired, been explicitly terminated, or a new connection | |||
value has been provided for the 'm' line. Additionaly, specific | value has been provided for the 'm' line. Additionally, specific | |||
applications can describe further scenarios where an end-point may | applications can describe further scenarios where an end-point may | |||
close a given TCP connection (e.g., whenever a connection is in the | close a given TCP connection (e.g., whenever a connection is in the | |||
half-close state). As soon as an end-point notices that it needs to | half-close state). As soon as an end-point notices that it needs to | |||
terminate a TCP connection, it SHOULD do so. | terminate a TCP connection, it SHOULD do so. | |||
In any case, individual applications may provide further | In any case, individual applications may provide further | |||
considerations on how to achieve a graceful connection termination. | considerations on how to achieve a graceful connection termination. | |||
For example, a file application using TCP receiving a FIN from the | For example, a file application using TCP to receive a FIN from the | |||
remote endpoint may need to finish the ongoing transmission of a file | remote endpoint may need to finish the ongoing transmission of a file | |||
before sending its own FIN. | 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 | attribute combined with TCP-based media descriptions. For the | |||
purpose of brevity, the main portion of the session description is | purpose of brevity, the main portion of the session description is | |||
omitted in the examples, which only show 'm' lines and their | omitted in the examples, which only show 'm' lines and their | |||
attributes (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=connection:new | 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: | |||
m=image 9 TCP t38 | m=image 9 TCP t38 | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
a=setup:active | a=setup:active | |||
a=connection:new | 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 Actpass/Passive | 7.2. 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=connection:new | a=connection:new | |||
skipping to change at page 10, line 8 | skipping to change at page 10, line 8 | |||
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=connection:new | 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 | 7.3. Existing Connection Reuse | |||
Subsequent to the exchange in Section 7.2, another offer/answer | Subsequent to the exchange in Section 7.2, another offer/answer | |||
exchange is initiated in the opposite direction. The endpoint at | exchange is initiated in the opposite direction. The endpoint at | |||
192.0.2.1 wishes to continue using the existing connection: | 192.0.2.1 wishes to continue using the existing connection: | |||
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=connection:existing | a=connection:existing | |||
skipping to change at page 10, line 33 | skipping to change at page 10, line 33 | |||
c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
a=setup:active | a=setup:active | |||
a=connection:existing | a=connection:existing | |||
The existing connection from 192.0.2.2 to 192.0.2.1 will be reused. | 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 | 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 | response to the offer of 'setup:passive', and uses port 9 because | |||
it is active. | it is active. | |||
7.4 Existing Connection Refusal | 7.4. Existing Connection Refusal | |||
Subsequent to the exchange in Section 7.3, another offer/answer | 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 | exchange is initiated by the endpoint at 192.0.2.2, again wishing to | |||
reuse the existing connection: | reuse the existing 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:passive | a=setup:passive | |||
a=connection:existing | a=connection:existing | |||
However, this time the answerer is unaware of the old connection and | 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 | thus wishes to establish a new one. (This could be the result of a | |||
transfer via third-party call control.) It is unable to act in the | transfer via third-party call control.) It is unable to act in the | |||
'passive' mode so responds as 'active': | 'passive' mode and thus responds as 'active': | |||
m=image 9 TCP t38 | m=image 9 TCP t38 | |||
c=IN IP4 192.0.2.3 | c=IN IP4 192.0.2.3 | |||
a=setup:active | a=setup:active | |||
a=connection:new | a=connection:new | |||
The endpoint at 192.0.2.3 then initiates the TCP connection to port | 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 | 54111 at 192.0.2.2, and the endpoint at 192.0.2.2 closes the old | |||
connection. | connection. | |||
Note that the endpoint at 192.0.2.2, while using a connection | Note that the endpoint at 192.0.2.2, while using a connection | |||
value of 'existing' has used a setup value of 'passive'. Had it | value of 'existing', has used a setup value of 'passive'. Had it | |||
not done this and used a setup value of 'holdconn' instead | not done this and instead used a setup value of 'holdconn' | |||
(probably to avoid allocating resources as described in Section | (probably to avoid allocating resources as described in | |||
5.1), a new offer/answer exchange would have been needed in order | Section 5.1), a new offer/answer exchange would have been needed | |||
to establish the new connection. | in order to establish the new connection. | |||
8. Other Connection-Oriented Transport Protocols | 8. Other Connection-Oriented Transport Protocols | |||
This document specifies how to describe TCP-based media streams using | This document specifies how to describe TCP-based media streams using | |||
SDP. Still, some of the attributes defined here could possibly be | SDP. Still, some of the attributes defined here could possibly be | |||
used to describe media streams based on other connection-oriented | used to describe media streams based on other connection-oriented | |||
transport protocols as well. This section provides advice to authors | transport protocols as well. This section provides advice to authors | |||
of specifications of SDP extensions which deal with | of specifications of SDP extensions that deal with connection- | |||
connetion-oriented transport protocols other than TCP. | oriented transport protocols other than TCP. | |||
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 [7] 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 'setup' and the 'connection' attributes are specified in Section | The 'setup' and the 'connection' attributes are specified in | |||
4 and Section 5 respectively. While both attributes are applicable | Section 4 and Section 5 respectively. While both attributes are | |||
to 'm' lines that use the 'TCP' protocol identifier, they are general | applicable to 'm' lines that use the 'TCP' protocol identifier, they | |||
enough to be reused in 'm' lines with other connection-oriented | are general enough to be reused in 'm' lines with other connection- | |||
transport protocols. Therefore, it is recommended that the 'setup' | oriented transport protocols. Therefore, it is recommended that the | |||
and 'connection' attributes are reused, as long as it is possible, | 'setup' and 'connection' attributes are reused, as long as it is | |||
for new proto values associated with connection-oriented transport | possible, for new proto values associated with connection-oriented | |||
protocols. | transport protocols. | |||
Section 6 deals with TCP connection management. It should be noted | Section 6 deals with TCP connection management. It should be noted | |||
that while in TCP both end-points need to close a connection, other | that while in TCP both end-points need to close a connection, other | |||
connection-oriented transport protocols may not have the concept of | connection-oriented transport protocols may not have the concept of | |||
half-close connections. In such a case, a connection would be | half-close connections. In such a case, a connection would be | |||
terminated as soon as one of the end-points closed it, making it | 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 | unnecessary for the other end-point to perform any further action to | |||
terminate the connection. So, specifications dealing with such | terminate the connection. So, specifications dealing with such | |||
transport protocols may need to specify slightly different procedures | transport protocols may need to specify slightly different procedures | |||
regarding connection termination. | regarding connection termination. | |||
9. Security Considerations | 9. Security Considerations | |||
See RFC 2327 [4] 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 connection and | An attacker may attempt to modify the values of the connection and | |||
setup attributes to have endpoints reestablish connections | setup attributes in order to have endpoints reestablish connections | |||
unnecesaryly or to keep them from establishing a connection. So, it | unnecessarily or to keep them from establishing a connection. So, it | |||
is strongly RECOMMENDED that integrity protection be applied to the | is strongly RECOMMENDED that integrity protection be applied to the | |||
SDP session descriptions. For session descriptions carried in SIP | SDP session descriptions. For session descriptions carried in SIP | |||
[10], S/MIME is the natural choice to provide such end-to-end | [10], S/MIME is the natural choice to provide such end-to-end | |||
integrity protection, as described in RFC 3261 [10]. Other | integrity protection, as described in RFC 3261 [10]. Other | |||
applications MAY use a different form of integrity protection. | applications MAY use a different form of integrity protection. | |||
10. IANA Considerations | 10. IANA Considerations | |||
This document defines two session and media level SDP attributes: | This document defines two session- and media-level SDP attributes: | |||
setup and connection. Their formats are defined in Section 4 and | setup and connection. Their formats are defined in Section 4 and | |||
Section 5 respectively. These two attributes should be registered by | Section 5, respectively. These two attributes should be registered | |||
the IANA under "Session Description Protocol (SDP) Parameters" under | by the IANA under "Session Description Protocol (SDP) Parameters" | |||
"att-field (both session and media level)". | under "att-field (both session and media level)". | |||
This document defines a proto value: 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 under | Section 3. This proto value should be registered by the IANA under | |||
"Session Description Protocol (SDP) Parameters" under "proto". | "Session Description Protocol (SDP) Parameters" under "proto". | |||
The SDP specification, RFC2327, states that specifications defining | The SDP specification, RFC2327, states that specifications defining | |||
new proto values, like the TCP proto value defined in this RFC, must | new proto values, like the TCP proto value defined in this RFC, must | |||
define the rules by which their media format (fmt) namespace is | define the rules by which their media format (fmt) namespace is | |||
managed. For the TCP protocol, new formats SHOULD have an associated | managed. For the TCP protocol, new formats SHOULD have an associated | |||
MIME registration. Use of an existing MIME subtype for the format is | MIME registration. Use of an existing MIME subtype for the format is | |||
skipping to change at page 12, line 49 | skipping to change at page 13, line 7 | |||
protocol for the format. | protocol for the format. | |||
11. Acknowledgements | 11. 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. | |||
12. References | 12. References | |||
12.1 Normative References | 12.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] Freed, N., Klensin, J. and J. Postel, "Multipurpose Internet | [2] Freed, N., Klensin, J., and J. Postel, "Multipurpose Internet | |||
Mail Extensions (MIME) Part Four: Registration Procedures", BCP | Mail Extensions (MIME) Part Four: Registration Procedures", | |||
13, RFC 2048, November 1996. | BCP 13, RFC 2048, November 1996. | |||
[3] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [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. | |||
[4] 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. | |||
[5] 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. | |||
12.2 Informative References | 12.2. Informative References | |||
[6] 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. | |||
[7] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC | [7] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | |||
2246, January 1999. | RFC 2246, January 1999. | |||
[8] 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. | |||
[9] 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. | |||
[10] 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. | |||
[11] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD | [11] Yergeau, F., "UTF-8, a transformation format of ISO 10646", | |||
63, RFC 3629, November 2003. | STD 63, RFC 3629, November 2003. | |||
[12] Rosenberg, J., Peterson, J., Schulzrinne, H. and G. Camarillo, | [12] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. Camarillo, | |||
"Best Current Practices for Third Party Call Control (3pcc) in | "Best Current Practices for Third Party Call Control (3pcc) in | |||
the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, April | the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, | |||
2004. | April 2004. | |||
Authors' Addresses | Authors' Addresses | |||
David Yon | David Yon | |||
Tactical Software, LLC | Tactical Software, LLC | |||
670 N Commercial St | 1750 Elm St., Suite 803 | |||
Manchester, NH 03101 | Manchester, NH 03104 | |||
USA | USA | |||
EMail: yon-comedia@rfdsoftware.com | 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 | Full Copyright Statement | |||
Copyright (C) The Internet Society (2005). | ||||
This document is subject to the rights, licenses and restrictions | ||||
contained in BCP 78, and except as set forth therein, the authors | ||||
retain all their rights. | ||||
This document and the information contained herein are provided on an | ||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Intellectual Property | ||||
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 procedures with respect to rights in RFC documents can be | on the procedures with respect to rights in RFC documents can 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 | |||
rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
this standard. Please address the information to the IETF at | this standard. Please address the information to the IETF at ietf- | |||
ietf-ipr@ietf.org. | ipr@ietf.org. | |||
Disclaimer of Validity | ||||
This document and the information contained herein are provided on an | ||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Copyright Statement | ||||
Copyright (C) The Internet Society (2004). This document is subject | ||||
to the rights, licenses and restrictions contained in BCP 78, and | ||||
except as set forth therein, the authors retain all their rights. | ||||
Acknowledgment | Acknowledgement | |||
Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is currently provided by the | |||
Internet Society. | Internet Society. | |||
End of changes. 59 change blocks. | ||||
155 lines changed or deleted | 134 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/ |