draft-ietf-mmusic-sdp-comedia-00.txt | draft-ietf-mmusic-sdp-comedia-01.txt | |||
---|---|---|---|---|
INTERNET-DRAFT D. Yon | INTERNET-DRAFT D. Yon | |||
Document: draft-ietf-mmusic-sdp-comedia-00.txt Dialout.Net | Document: draft-ietf-mmusic-sdp-comedia-01.txt Dialout.Net | |||
Expires August 2001 February 2001 | Expires April 2002 October 2001 | |||
Connection-Oriented Media Transport in SDP | Connection-Oriented Media Transport in SDP | |||
<draft-ietf-mmusic-sdp-comedia-00.txt> | <draft-ietf-mmusic-sdp-comedia-01.txt> | |||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at line 36 | skipping to change at line 36 | |||
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. | |||
Copyright (C) The Internet Society (2001). All Rights Reserved. | Copyright (C) The Internet Society (2001). All Rights Reserved. | |||
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 three new protocol identifiers: TCP, TLS and | (SDP). It defines two new protocol identifiers: TCP and TLS. It | |||
SCTP. It also defines the syntax and semantics for an SDP | also defines the syntax and semantics for an SDP "direction" | |||
"direction" attribute that describes the connection setup procedure. | attribute that describes the connection setup procedure. | |||
Yon 1 | Yon 1 | |||
Introduction | Introduction | |||
The Session Description Protocol [SDP] provides a general-purpose | The Session Description Protocol [SDP] 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]) to maximize portability among transports. SDP | subset of [UTF-8]) 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 discover and | multimedia session with sufficient information to discover and | |||
participate in that session. Session descriptions may be sent using | participate in that session. Session descriptions may be sent using | |||
any number of existing application protocols for transport (e.g., | any number of existing application protocols for transport (e.g., | |||
SAP, SIP, RTSP, email, HTTP, etc.). | SAP, SIP, RTSP, email, HTTP, etc.). | |||
Terminology | ||||
In this document, the key words "MUST", "MUST NOT", "REQUIRED", | ||||
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | ||||
and "OPTIONAL" are to be interpreted as described in RFC 2119 [7] | ||||
and indicate requirement levels for compliant implementations. | ||||
Motivation | Motivation | |||
[SDP] describes two protocol identifiers: RTP/AVP and UDP, both of | [SDP] describes two protocol identifiers: RTP/AVP and UDP, both of | |||
which are unreliable, connectionless protocols, an appropriate | which are unreliable, connectionless protocols, an appropriate | |||
choice for multimedia streams. There are, however, applications for | choice for multimedia streams. There are, however, applications for | |||
which the connection-oriented transports such as TCP or SCTP is more | which the connection-oriented transports such as TCP are more | |||
appropriate, but [SDP] provides no way to describe a session that | appropriate, but [SDP] provides no way to describe a session that | |||
uses protocols other than RTP or UDP. | uses protocols other than RTP or UDP. | |||
Connection-oriented protocols introduce a new factor when describing | Connection-oriented protocols introduce a new factor when describing | |||
a session: not only must it be possible to express that a protocol | a session: not only must it be possible to express that a protocol | |||
will be based on this protocol, but it must also describe the | will be based on this protocol, but it must also describe the | |||
connection setup procedure. | connection setup procedure. | |||
1 Protocol Identifiers | 1 Protocol Identifiers | |||
1.1 TCP | 1.1 TCP | |||
The TCP protocol identifier is similar to the UDP protocol | The TCP protocol identifier is similar to the UDP protocol | |||
identifier in that it only describes the transport protocol without | identifier in that it only describes the transport protocol without | |||
any connotation as to the upper-layer protocol. An m= line that | any connotation as to the upper-layer protocol. An m= line that | |||
specifies TCP must further qualify the protocol using a fmt | specifies "TCP" MUST further qualify the protocol using a fmt | |||
identifier (see [SDP] Appendix B). | identifier (see [SDP] Appendix B). | |||
1.2 SCTP | 1.2 TLS | |||
The SCTP protocol identifier, like TCP above, only describes the | ||||
transport protocol without any connotation as to the upper-layer | ||||
protocol. An m= line that specifies SCTP indicates that media will | ||||
be transports using the SCTP protocol [SCTP], with an upper-layer | ||||
protocol specified by the fmt identifier. | ||||
1.3 TLS | ||||
The TLS protocol identifier specifies that the session will use the | The TLS protocol identifier specifies that the session will use the | |||
Transport Layer Security protocol [TLS] with an implied transport | Transport Layer Security protocol [TLS] with an implied transport | |||
protocol of TCP. To describe a media session that uses TLS over | protocol of TCP. To describe a media session that uses TLS over | |||
TCP, the protocol identifier TLS must be specified in the m= line. | TCP, the protocol identifier "TLS" must be specified in the m= line. | |||
An m= line that specifies TLS must further qualify the protocol | An m= line that specifies TLS MUST further qualify the protocol | |||
using a fmt identifier. | using a fmt identifier. | |||
Yon INTERNET-DRAFT û Expires August 2001 2 | Yon INTERNET-DRAFT û Expires January 2002 2 | |||
2 Direction Attribute | 2 Direction Attribute | |||
An important attribute of connection-oriented protocols is the setup | An important attribute of connection-oriented protocols is the setup | |||
procedure. One endpoint needs to initiate the connection and the | procedure. One endpoint needs to initiate the connection and the | |||
other endpoint needs to accept the connection. The direction | other endpoint needs to accept the connection. The direction | |||
attribute is used to describe these roles, and the syntax is as | attribute is used to describe these roles, and the syntax is as | |||
follows: | follows: | |||
a=direction:<role> <source-port> | a=direction:<role> [<source-address>] | |||
The <role> is one of the following: | The <role> is one of the following: | |||
passive: The endpoint will accept an incoming connection. | passive: The endpoint will accept an incoming connection. | |||
active: The endpoint will initiate an outgoing connection. | active: The endpoint will initiate an outgoing connection. | |||
both: The endpoint will both accept an incoming connection | both: The endpoint will both accept an incoming connection | |||
and will initiate an outgoing connection. | and will initiate an outgoing connection. | |||
The <source-port> is an optional value that may only be specified in | reuse: The endpoint will use the connection that has already | |||
the context of direction:active or direction:both. | been established with the opposite endpoint. | |||
The <source-address> is a sequence of values that describe the | ||||
address and port number from where the connection will originate, | ||||
and consists of the following values: | ||||
nettype addrtype unicast-address [port] | ||||
The <source-address> is an optional value that may be specified with | ||||
direction:active, direction:both, or direction:reuse. Within the | ||||
<source-address>, the source port number is RECOMMENDED but may be | ||||
omitted. | ||||
2.1 Semantics of direction:passive | 2.1 Semantics of direction:passive | |||
By specifying direction:passive, the endpoint indicates that the | By specifying direction:passive, the endpoint indicates that the | |||
port number specified in the m= line is available to accept a | port number specified in the m= line is available to accept a | |||
connection from the other endpoint. | connection from the other endpoint. The endpoint MUST NOT specify a | |||
<source-address> after direction:passive. | ||||
2.2 Semantics of direction:active | 2.2 Semantics of direction:active | |||
By specifying direction:active, the endpoint indicates that it will | By specifying direction:active, the endpoint indicates that it will | |||
initiate a connection to the port number on the m= line of the other | initiate a connection to the port number on the m= line of the other | |||
endpoint. The port number on its own m= line is irrelevant and is | endpoint. The port number on its own m= line is irrelevant, and the | |||
to be ignored by the other endpoint. Nevertheless, since the m= | opposite endpoint MUST NOT attempt to initiate a connection to the | |||
line must contain a valid port number, the endpoint specifying | port number specified there. Nevertheless, since the m= line must | |||
direction:active should specify a port number of 9 (the discard | contain a valid port number, the endpoint specifying | |||
port) on its m= line. The endpoint must not specify a port number | direction:active SHOULD specify a port number of 9 (the discard | |||
port) on its m= line. The endpoint MUST NOT specify a port number | ||||
of zero, as that carries other semantics in [SDP]. | of zero, as that carries other semantics in [SDP]. | |||
The endpoint may optionally specify the port number from which it | Yon INTERNET-DRAFT û Expires January 2002 3 | |||
will initiate the connection in the <source-port> position on the a= | The endpoint SHOULD specify the address and port number from which | |||
line. | it will initiate the connection in the <source-address> position on | |||
the a= line. | ||||
2.3 Semantics of direction:both | 2.3 Semantics of direction:both | |||
By specifying direction:both, the endpoint indicates that it will | By specifying direction:both, the endpoint indicates that it will | |||
both accept a TCP connection on the port number of its own m= line, | both accept a TCP connection on the port number of its own m= line, | |||
and that it will also initiate a connection to the port number on | and that it will also initiate a connection to the port number on | |||
the m= line of the other endpoint. As with direction:active, the | the m= line of the other endpoint. | |||
endpoint may optionally specify the port number from which it will | ||||
initiate the connection in the <source-port> position on the a= | As with direction:active, the endpoint SHOULD specify the address | |||
line. | and port number from which it will initiate the connection in the | |||
<source-address> position on the a= line. | ||||
Yon INTERNET-DRAFT û Expires August 2001 3 | ||||
Since this attribute describes behavior that is similar to | Since this attribute describes behavior that is similar to | |||
connectionless media descriptions in [SDP], it is the default value | connectionless media descriptions in [SDP], it is the default value | |||
for the direction attribute and is therefore optional. | for the direction attribute and is therefore optional. | |||
Endpoints may choose to specify direction:both for one or more of | Endpoints may choose to specify direction:both for one or more of | |||
the following reasons: | the following reasons: | |||
1) The endpoint has no preference as to whether it accepts or | 1) The endpoint has no preference as to whether it accepts or | |||
initiates the connection, and therefore is offering the remote | initiates the connection, and therefore is offering the remote | |||
endpoint a choice of connection setup procedures. | endpoint a choice of connection setup procedures. | |||
skipping to change at line 174 | skipping to change at line 187 | |||
prevent either endpoint from initiating or accepting the | prevent either endpoint from initiating or accepting the | |||
connection. Therefore both endpoints will attempt to initiate | connection. Therefore both endpoints will attempt to initiate | |||
a connection in hopes that at least one will succeed. | a connection in hopes that at least one will succeed. | |||
3) The endpoints intend to use two connections to transport the | 3) The endpoints intend to use two connections to transport the | |||
media, and one must be initiated by the remote endpoint and | media, and one must be initiated by the remote endpoint and | |||
the other must be initiated by the local endpoint. | the other must be initiated by the local endpoint. | |||
If one endpoint specifies either direction:active or | If one endpoint specifies either direction:active or | |||
direction:passive and the other specifies direction:both, both | direction:passive and the other specifies direction:both, both | |||
endpoints must behave as if the latter had specified the inverse | endpoints MUST behave as if the latter had specified the inverse | |||
direction of the former. For example, specifying direction:both | direction of the former. For example, specifying direction:both | |||
when the other endpoint specifies direction:active should cause both | when the other endpoint specifies direction:active SHALL cause both | |||
endpoints to behave as if the former had specified | endpoints to behave as if the former had specified | |||
direction:passive. Conversely, specifying direction:both when the | direction:passive. Conversely, specifying direction:both when the | |||
other endpoint specifies direction:passive should cause both | other endpoint specifies direction:passive SHALL cause both | |||
endpoints to behave as if the former had specified direction:active. | endpoints to behave as if the former had specified direction:active. | |||
If both endpoints specify direction:both then each endpoint must | If both endpoints specify direction:both then each endpoint MUST | |||
initiate a connection to the port number specified on the m= line of | initiate a connection to the port number specified on the m= line of | |||
the opposite endpoint. If only one connection succeeds, then that | the opposite endpoint. If a single connection is needed (case #1 or | |||
connection will be used to carry the media. If both connections | #2 above), there is one exception to this requirement: if an | |||
succeed but only one was needed (case #2 above), the following rules | endpoint receives the incoming connection from the opposite endpoint | |||
shall apply: | prior to initiating its own outbound connection, then that endpoint | |||
MAY use that connection rather than attempt to make an outbound | ||||
connection to the opposite endpoint. | ||||
Yon INTERNET-DRAFT û Expires January 2002 4 | ||||
If only one connection succeeds, then that connection will be used | ||||
to carry the media. Once it has transmitted data on this | ||||
connection, the initiating endpoint MUST NOT perform another | ||||
connection attempt to the accepting endpoint. This allows the | ||||
accepting endpoint to release or recycle the listening port for | ||||
another session once it has received data from the initiating | ||||
endpoint. | ||||
If both connections succeed but only one was needed (case #2 above), | ||||
the following rules SHALL apply: | ||||
a) Each endpoint MUST accept data from either connection. | a) Each endpoint MUST accept data from either connection. | |||
b) Once an endpoint has transmitted data to one of the | b) Once an endpoint has transmitted data to one of the | |||
connections, it MUST use that connection exclusively for | connections, it MUST use that connection exclusively for | |||
transmission. | transmission. | |||
c) Once an endpoint has transmitted AND received data, if one of | c) Once an endpoint has transmitted AND received data, if one of | |||
the connections is determined to be idle, the endpoint MAY | the connections is determined to be idle, the endpoint MAY | |||
close the idle connection. | close the idle connection. | |||
3 Source-Port Considerations | 2.4 Semantics of direction:reuse | |||
In the cases where the endpoint is initiating the connection, a | By specifying direction:reuse, the endpoint indicates that it is | |||
source port number may optionally be specified on the a= line by | changing the parameter(s) of an existing session on a previously | |||
that endpoint. In most environments, the source port number can be | established connection with the opposite endpoint. Therefore no new | |||
connections are to be created. This is intended for cases where | ||||
media types are added, removed, or changed during a session. For | ||||
example, an endpoint adding a video stream to an existing audio | ||||
session may elect to multiplex the new stream over the same | ||||
connection that is currently transporting the audio stream. | ||||
Yon INTERNET-DRAFT û Expires August 2001 4 | 2.5 Bidirectional versus Unidirectional Media | |||
determined by binding the socket before initiating the connect, as | ||||
shown in the sample C code below: | In traditional SDP transport types the flow is unidirectional. If | |||
the intent is for media to flow in both directions, both endpoints | ||||
must specify SDP that describes where to deliver the media and what | ||||
media type(s) to use. For example, if only Endpoint A presents SDP | ||||
then media can only flow towards Endpoint A, as Endpoint B has not | ||||
specified where and how to send media to it. | ||||
Because most connection-oriented media is inherently bi-directional, | ||||
endpoints may encounter a situation where only one side presented | ||||
SDP yet there is now a network path that can carry media in either | ||||
direction. In keeping with traditional SDP semantics, an endpoint | ||||
MUST NOT send data to the other endpoint unless it has specified SDP | ||||
information describing the type of media it can accept. | ||||
It is, however, perfectly acceptable for an endpoint to transmit | ||||
data on the same connection it is using to receive data, so long as | ||||
the other endpoint has advertised its willingness to accept data. | ||||
Likewise, it is perfectly acceptable for an endpoint to receive data | ||||
Yon INTERNET-DRAFT û Expires January 2002 5 | ||||
on the same connection it is using to transmit data to the | ||||
corresponding remote endpoint. In other words, for a bi-directional | ||||
application-level session, a connection may be used to send data in | ||||
both directions (contingent to rules outlined in Section 2.3) as | ||||
long as one side of the connection is attached to either of the | ||||
advertised SDP transport addresses. | ||||
3 Source-Address Considerations | ||||
In the cases where the endpoint is initiating the connection, it is | ||||
RECOMMENDED that a source address be specified on the a= line by | ||||
that endpoint. It is also RECOMMENDED that the source port be | ||||
included in the source address. In most environments, the source | ||||
port number can be determined by binding the socket before | ||||
initiating the connect, as shown in the sample C code below: | ||||
{ | { | |||
SOCKET s_id | SOCKET s_id | |||
SOCKADDR_IN cli_sin; | SOCKADDR_IN cli_sin; | |||
int namelen; | int namelen; | |||
// Create the socket | // Create the socket | |||
s_id = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); | s_id = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); | |||
// Bind the socket to any IP address and port | // Bind the socket to any IP address and port | |||
skipping to change at line 232 | skipping to change at line 298 | |||
bind(s_id,(SOCKADDR *)&cli_sin,sizeof(cli_sin)); | bind(s_id,(SOCKADDR *)&cli_sin,sizeof(cli_sin)); | |||
// Find the port number that was bound | // Find the port number that was bound | |||
namelen = sizeof(cli_sin); | namelen = sizeof(cli_sin); | |||
getsockname(s_id,(SOCKADDR *)&cli_sin,&namelen); | getsockname(s_id,(SOCKADDR *)&cli_sin,&namelen); | |||
// Print the port number | // Print the port number | |||
printf("Source Port = %d\n",ntohs(cli_sin.sin_port)); | printf("Source Port = %d\n",ntohs(cli_sin.sin_port)); | |||
} | } | |||
The motivation for specifying the source port is to allow topologies | If the source address is omitted, the receiver of the SDP packet | |||
where one or more endpoints use a single, fixed TCP port for | MUST NOT make any assumptions in regards to the address or port from | |||
incoming connections. Non-RTP protocols transported over TCP | where the connection will originate. In particular, the receiver | |||
commonly use this technique. By specifying the source port, an | MUST NOT assume that the address information listed on the c= line | |||
endpoint avoids a potential ambiguity when more than one session is | has any implication as to where the media connection originates. | |||
set up between two endpoints. | ||||
For example, consider two endpoints with IP addresses of 10.1.1.1 | NOTE: | |||
and 10.1.1.2. The endpoint at 10.1.1.1 signals the availability of | The motivation for specifying the source address is | |||
a session on TCP port 2393 (passive). Before the endpoint at | twofold. First, it aids Application-Level Proxies by | |||
10.1.1.2 has a chance to initiate the connection, events transpire | explicitly announcing the source of the outbound | |||
that cause the endpoint at 10.1.1.1 to signal the availability of a | connection. This allows, for example, a dynamic | |||
separate session that is also found at TCP port 2393 (passive). | firewall pinhole to be created that will allow the | |||
Shortly thereafter, both entities at 10.1.1.2 initiate connections | connection to pass. | |||
to 10.1.1.1 on port 2393. | ||||
The problem is this: how does the endpoint at 10.1.1.1 differentiate | Yon INTERNET-DRAFT û Expires January 2002 6 | |||
the two connections? To which entity at 10.1.1.2 does each | Second, it allows the passive endpoint to correlate | |||
connection correspond? By specifying the source port prior to | the incoming connection with the session being | |||
connecting, the entities at 10.1.1.2 can avoid this ambiguity, | negotiated. Note that great care must be taken when | |||
because now the endpoint at 10.1.1.1 can simply inspect the port | using the source address as a means to identify | |||
number from which the connection originated to determine which | incoming connections, as Network Address Translation | |||
entity has initiated the connection. | (NAT) can render the source address unreliable. In | |||
addition if the originating endpoint omits the source | ||||
port, the source address can be ambiguous if multiple, | ||||
logical endpoints share the same network address. | ||||
Therefore it is NOT RECOMMENDED that the source | ||||
address be used for this purpose unless the SDP occurs | ||||
in the context of a controlled network topology that | ||||
guarantees that the source address is both correct | ||||
(i.e., no NAT, or a NAT with an Application-Level | ||||
Proxy that rewrites the SDP) and unambiguous (i.e., | ||||
the source port is specified). | ||||
Caution must be exercised when designing systems that rely on this | 3.1 Source Address Timing Considerations | |||
feature, as not all environments are able to determine the source | ||||
port prior to initiating the connection. | ||||
Yon INTERNET-DRAFT û Expires August 2001 5 | When used in conjunction with a session signaling protocol such as | |||
SIP, there may be cases where an endpoint initiates a connection | ||||
prior to the opposite endpoint receiving the SDP that describe the | ||||
source address of the initiating endpoint. Therefore, an endpoint | ||||
that has advertised an address and port number with direction:both | ||||
or direction:passive MUST be ready to accept a connection on that | ||||
address and port immediately. If the accepting endpoint requires | ||||
the source address to identify the initiating endpoint, it MUST keep | ||||
the connection active and allow sufficient time for the source | ||||
address to arrive before discarding the connection. | ||||
4 Examples | 4 Examples | |||
What follows are a number of examples that show the most common | What follows are a number of examples that show the most common | |||
usage of the direction attribute combined with TCP-based media | usage of the direction attribute combined with TCP-based media | |||
descriptions. For the purpose of brevity, the main portion of the | descriptions. For the purpose of brevity, the main portion of the | |||
session description is omitted in the examples and is assumed to be | session description is omitted in the examples and is assumed to be | |||
the following: | the following: | |||
v=0 | v=0 | |||
o=Me <me@ietf.org> | o=me 2890844526 2890842807 IN IP4 10.1.1.2 | |||
e=Me <me@ietf.org> | ||||
s=Call me using TCP | s=Call me using TCP | |||
t=0 0 | t=0 0 | |||
4.1 Example: simple passive/active | 4.1 Example: simple passive/active | |||
An endpoint at 10.1.1.2 signals the availability of a T.38 fax | An endpoint at 10.1.1.2 signals the availability of a T.38 fax | |||
session at port 54111: | session at port 54111: | |||
c=IN IP4 10.1.1.2/127 | c=IN IP4 10.1.1.2 | |||
m=image 54111 TCP t38 | m=image 54111 TCP t38 | |||
a=direction:passive | a=direction:passive | |||
Yon INTERNET-DRAFT û Expires January 2002 7 | ||||
An endpoint at 10.1.1.1 receiving this description responds with the | An endpoint at 10.1.1.1 receiving this description responds with the | |||
following: | following: | |||
c=IN IP4 10.1.1.1/127 | c=IN IP4 10.1.1.1 | |||
m=image 9 TCP t38 | m=image 9 TCP t38 | |||
a=direction:active | a=direction:active | |||
The endpoint at 10.1.1.1 then initiates the TCP connection to port | The endpoint at 10.1.1.1 then initiates the TCP connection to port | |||
54111 at 10.1.1.2. Note that the TCP connection may originate from | 54111 at 10.1.1.2. Note that the TCP connection may originate from | |||
any port. The endpoint at 10.1.1.1 could have optionally committed | any address or port. The endpoint at 10.1.1.1 could have optionally | |||
to a source port with a simple modification: | committed to a source address with a simple modification: | |||
c=IN IP4 10.1.1.1/127 | c=IN IP4 10.1.1.1 | |||
m=image 9 TCP t38 | m=image 9 TCP t38 | |||
a=direction:active 1892 | a=direction:active IN IP4 10.1.1.1 1892 | |||
By adding the "1892" to the a= line, the endpoint at 10.1.1.1 must | By adding the source address to the a= line, the endpoint at | |||
now use a source port of 1892 when initiating the TCP connection to | 10.1.1.1 must now use a source port of 1892 when initiating the TCP | |||
port 54111 at 10.1.1.2. | connection to port 54111 at 10.1.1.2. | |||
4.2 Example: agnostic both | 4.2 Example: agnostic both | |||
An endpoint at 10.1.1.2 signals the availability of a T.38 fax | An endpoint at 10.1.1.2 signals the availability of a T.38 fax | |||
session at TCP port 54111, but is also willing to set up the media | session at TCP port 54111, but is also willing to set up the media | |||
stream by initiating the TCP connection: | stream by initiating the TCP connection: | |||
c=IN IP4 10.1.1.2/127 | c=IN IP4 10.1.1.2 | |||
m=image 54111 TCP t38 | m=image 54111 TCP t38 | |||
a=direction:both | a=direction:both | |||
The endpoint at 10.1.1.1 has three choices: | The endpoint at 10.1.1.1 has three choices: | |||
Yon INTERNET-DRAFT û Expires August 2001 6 | ||||
1) It can respond with either of the two direction:active | 1) It can respond with either of the two direction:active | |||
descriptions listed in the previous example. In this case the | descriptions listed in the previous example. In this case the | |||
endpoint at 10.1.1.1 must initiate a connection to port 54111 | endpoint at 10.1.1.1 must initiate a connection to port 54111 | |||
at 10.1.1.2. | at 10.1.1.2. | |||
2) It can respond with a description similar to the following: | 2) It can respond with a description similar to the following: | |||
c=IN IP4 10.1.1.1/127 | c=IN IP4 10.1.1.1 | |||
m=image 54321 TCP t38 | m=image 54321 TCP t38 | |||
a=direction:passive | a=direction:passive | |||
In this case the endpoint at 10.1.1.2 must initiate a | In this case the endpoint at 10.1.1.2 must initiate a | |||
connection to port 54321 at 10.1.1.1. | connection to port 54321 at 10.1.1.1. | |||
3) It can respond with a description that specifies | 3) It can respond with a description that specifies | |||
direction:both, which is covered in the next example. | direction:both, which is covered in the next example. | |||
4.3 Example: redundant both | 4.3 Example: redundant both | |||
An endpoint at 10.1.1.2 uses the same description as the previous | An endpoint at 10.1.1.2 uses the same description as the previous | |||
example: | example: | |||
c=IN IP4 10.1.1.2/127 | Yon INTERNET-DRAFT û Expires January 2002 8 | |||
c=IN IP4 10.1.1.2 | ||||
m=image 54111 TCP t38 | m=image 54111 TCP t38 | |||
a=direction:both | a=direction:both | |||
Unlike the previous example, the endpoint at 10.1.1.1 responds with | Unlike the previous example, the endpoint at 10.1.1.1 responds with | |||
the following description: | the following description: | |||
c=IN IP4 10.1.1.1/127 | c=IN IP4 10.1.1.1 | |||
m=image 54321 TCP t38 | m=image 54321 TCP t38 | |||
a=direction:both | a=direction:both | |||
This will cause the endpoint at 10.1.1.2 to initiate a connection to | This will cause the endpoint at 10.1.1.2 to initiate a connection to | |||
port 54321 at 10.1.1.1, and the endpoint at 10.1.1.1 to initiate a | port 54321 at 10.1.1.1, and the endpoint at 10.1.1.1 to initiate a | |||
connection to port 54111 at 10.1.1.2. Whichever TCP connection | connection to port 54111 at 10.1.1.2. Whichever TCP connection | |||
succeeds will be used. If both succeed, one of the connections may | succeeds will be used. If both succeed, one of the connections may | |||
be closed as an optimization, using the rules in section 2.3. | be closed as an optimization, using the rules in section 2.3. | |||
5 Security Considerations | 5 Security Considerations | |||
See [SDP] for security and other considerations specific to the | See [SDP] for security and other considerations specific to the | |||
Session Description Protocol in general. There are no new security | Session Description Protocol in general. There are no new security | |||
considerations introduced by these protocol identifiers and | considerations introduced by these protocol identifiers and | |||
attributes. | attributes. | |||
6 IANA Considerations | 6 IANA Considerations | |||
As recommended by [SDP] Appendix B, the direction attribute | As recommended by [SDP] Appendix B, the direction attribute | |||
described in this document should be registered with IANA, as should | described in this document should be registered with IANA, as should | |||
the TCP, TLS, and SCTP protocol identifiers. | the "TCP" and "TLS" protocol identifiers. | |||
Acknowledgements | Acknowledgements | |||
Yon INTERNET-DRAFT û Expires August 2001 7 | ||||
The author would like to thank Jonathan Rosenberg, Anders | The author would like to thank Jonathan Rosenberg, Anders | |||
Kristensen, and Robert Fairlie-Cuninghame for their valuable | Kristensen, Paul Kyzivat, and Robert Fairlie-Cuninghame for their | |||
insights. | valuable insights. | |||
Yon INTERNET-DRAFT û Expires August 2001 8 | Yon INTERNET-DRAFT û Expires January 2002 9 | |||
Appendix A: Direction Attribute Syntax | Appendix A: Direction Attribute Syntax | |||
This appendix provides an Augmented BNF [ABNF] grammar for | This appendix provides an Augmented BNF [ABNF] grammar for | |||
expressing the direction attribute for connection setup. It is | expressing the direction attribute for connection setup. It is | |||
intended as an extension to the grammar for the Session Description | intended as an extension to the grammar for the Session Description | |||
Protocol, as defined in [SDP]. Specifically, it describes the | Protocol, as defined in [SDP]. Specifically, it describes the | |||
syntax for the new "connection-setup" attribute field, which MAY be | syntax for the new "connection-setup" attribute field, which MAY be | |||
either a session-level or media-level attribute. | either a session-level or media-level attribute. | |||
connection-setup = "direction" ":" direction-spec | connection-setup = "direction" ":" direction-spec | |||
direction-spec = "passive" | qualified-direction | direction-spec = "passive" | qualified-direction | |||
qualified-direction = direction-ident | direction-ident port | qualified-direction = direction-ident | direction-ident source | |||
direction-ident = "both" | "active" | direction-ident = "both" | "active" | "reuse" | |||
source = nettype addrtype unicast-address | | ||||
nettype addrtype unicast-address port | ||||
References | References | |||
[ABNF] D. Crocker, P. Overell, "Augmented BNF for Syntax | [ABNF] D. Crocker, P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF," RFC 2234, November 1997 | Specifications: ABNF," RFC 2234, November 1997 | |||
[SCTP] Stewart et al, "Stream Control Transmission Protocol," | ||||
RFC 2960, October 2000 | ||||
[SDP] M. Handley, V. Jacobson, "SDP: Session Description | [SDP] M. Handley, V. Jacobson, "SDP: Session Description | |||
Protocol," RFC 2327, April 1998 | Protocol," RFC 2327, April 1998 | |||
[T38] International Telecommunication Union, "Procedures for | [T38] International Telecommunication Union, "Procedures for | |||
Real-Time Group 3 Facsimile Communications over IP | Real-Time Group 3 Facsimile Communications over IP | |||
Networks," Recommendation T.38, June 1998 | Networks," Recommendation T.38, June 1998 | |||
[TLS] T. Dierks, C. Allen, "The TLS Protocol," RFC 2246, | [TLS] T. Dierks, C. Allen, "The TLS Protocol," RFC 2246, | |||
January 1999 | January 1999 | |||
[UTF-8] F. Yergeau, "UTF-8, a transformation format of Unicode | [UTF-8] F. Yergeau, "UTF-8, a transformation format of Unicode | |||
and ISO 10646," RFC 2044, October 1996 | and ISO 10646," RFC 2044, October 1996 | |||
AuthorÆs Address | AuthorÆs Address | |||
David Yon | David Yon | |||
Dialout.Net, Inc. | Dialout.Net, Inc. | |||
402 Amherst St | One Indian Head Plaza | |||
Nashua, NH 03063 | Nashua, NH 03060 | |||
Phone: (603) 577-8708 | Phone: (603) 324-4100 | |||
EMail: yon@dialout.net | EMail: yon@dialout.net | |||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2001). All Rights Reserved. | Copyright (C) The Internet Society (2001). All Rights Reserved. | |||
Yon INTERNET-DRAFT û Expires August 2001 9 | Yon INTERNET-DRAFT û Expires January 2002 10 | |||
This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
kind, provided that the above copyright notice and this paragraph | kind, provided that the above copyright notice and this paragraph | |||
are included on all such copies and derivative works. However, this | are included on all such copies and derivative works. However, this | |||
document itself may not be modified in any way, such as by removing | document itself may not be modified in any way, such as by removing | |||
the copyright notice or references to the Internet Society or other | the copyright notice or references to the Internet Society or other | |||
Internet organizations, except as needed for the purpose of | Internet organizations, except as needed for the purpose of | |||
developing Internet standards in which case the procedures for | developing Internet standards in which case the procedures for | |||
skipping to change at line 455 | skipping to change at line 537 | |||
The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
This document and the information contained herein is provided on an | This document and the information contained herein is provided on an | |||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | |||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | |||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | |||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | |||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE." | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE." | |||
Yon INTERNET-DRAFT û Expires August 2001 10 | Yon INTERNET-DRAFT û Expires January 2002 11 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |