From 3cedbe3b7186467606589c2dd3aa9769aacefcf3 Mon Sep 17 00:00:00 2001 From: Peter Saint-Andre Date: Tue, 17 Apr 2007 21:07:57 +0000 Subject: [PATCH] 0.6 git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@763 4b5297f7-1745-476d-ba37-a9c6900126ab --- xep-0177.xml | 44 +++++++++++++++++++++++++++++++-- xep-0180.xml | 69 +++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 97 insertions(+), 16 deletions(-) diff --git a/xep-0177.xml b/xep-0177.xml index b35c7133..72392265 100644 --- a/xep-0177.xml +++ b/xep-0177.xml @@ -26,6 +26,12 @@ &scottlu; &hildjj; &seanegan; + + 0.6 + 2007-04-17 + psa +

Specified Jingle conformance, including definition of transport type as lossy; added section on service discovery.

+
0.5 2007-03-23 @@ -58,7 +64,7 @@ -

&xep0166; defines a framework for negotiating and managing out-of-band data sessions over XMPP. In order to provide a flexible framework, the base Jingle specification defines neither data transport methods nor content formats, leaving that up to separate specifications. The current document defines a transport method for establishing and managing data between XMPP entities using a raw User Datagram Protocol (UDP) connection (see &rfc0768;).

+

&xep0166; defines a framework for negotiating and managing out-of-band data sessions over XMPP. In order to provide a flexible framework, the base Jingle specification defines neither data transport methods nor content formats, leaving that up to separate specifications. The current document defines a transport method for establishing and managing data between XMPP entities using a raw User Datagram Protocol (UDP) connection (see &rfc0768;). This "raw-udp" method results in a lossy transport method suitable for use in media applications where some packet loss is tolerable (e.g., audio and video).

The Jingle transport method defined herein is designed to meet the following requirements:

@@ -69,6 +75,15 @@

Note: The Raw UDP transport does not provide traversal of Network Address Translators (NATs) and is provided only for the purpose of specifying the IP address and port that an entity considers most likely to succeed without the need for NAT traversal. This is also helpful for bootstrapping of Jingle implementation by developers working on a local network. If NAT traversal is needed, &xep0176; SHOULD be used.

+ +

In accordance with Section 8 of XEP-0166, this document specifies the following information related to the Jingle Raw UDP transport type:

+
    +
  1. The transport negotiation process is defined in the Protocol Description section of this document.

  2. +
  3. The semantics of the &DESCRIPTION; element are defined in the Transport Initiation section of this document.

  4. +
  5. Successful negotiation of the Raw UDP method results in use of a lossy transport that is suitable for applications where some packet loss is tolerable, such as audio and video.

  6. +
  7. If multiple components are to be communicated over the transport, the first component shall be associated with the port in the transport initiation stanza and the second component (e.g., for RTCP) shall be associated with a UDP port that is one number higher than the specified port (e.g., if the specified port is 13540 then the port for the second component shall be 13541).

  8. +
+

In order for the initiator in a Jingle exchange to start the negotiation, it MUST send a Jingle "session-initiate" stanza as described in XEP-0166. This stanza MUST include at least one content type. If the initiator wishes to negotiate the Raw UDP transport for a given content type, it MUST include a &TRANSPORT; child element qualified by the 'http://www.xmpp.org/extensions/xep-0177.html#ns' namespace (see Protocol Namespaces), which MUST This is required to avoid a round trip and help expedite the negotiation. include the initiator's Raw UDP candidate via the 'ip', 'port', 'generation', and 'name' attributes of the &CANDIDATE; element.

@@ -121,7 +136,7 @@

These are done simultaneously in order to ensure that a connection can be made, since the initiator's Raw UDP candidate may not result in success.

-

The responder MUST immediately attempt to send data to the IP and port specified in the initiation request. Because delivery of UDP data is not necessarily acknowledged, the data can be sent using &rfc0862;; if the data is echoed back, the recipient would then send a Jingle "content-accept" (or "session-accept") action to the initiator.

+

The responder MUST immediately attempt to send data to the IP and port specified in the initiation request. Because delivery of UDP data is not acknowledged, the data SHOULD be sent using the echo protocol (&rfc0862;) over the IP address and port specified in the Raw UDP candidate; if the data is echoed back, the recipient would then send a Jingle "content-accept" (or "session-accept") action to the initiator.

+ +

If an entity supports the Jingle Raw UDP transport, it MUST return a feature of "http://www.xmpp.org/extensions/xep-0177.html#ns" &NSNOTE; in response to &xep0030; information requests.

+ + + + ]]> + + + ... + + ... + + + ]]> +
+

In order to secure the data stream that is negotiated via the Jingle ICE transport, implementations SHOULD use encryption methods appropriate to the transport method and media being exchanged (for details regarding audio and video exchanges via RTP, refer to XEP-0167 and XEP-0180).

@@ -210,6 +249,7 @@ raw-udp A method for exchanging data over a raw UDP connection. + lossy XEP-0176 ]]> diff --git a/xep-0180.xml b/xep-0180.xml index 40bea3e8..bb2b3236 100644 --- a/xep-0180.xml +++ b/xep-0180.xml @@ -27,6 +27,12 @@ Chen Milton.Chen@vseelab.com + + 0.6 + 2007-04-17 + psa +

Specified Jingle conformance, including the need to use a lossy transport and the process of sending and receiving video content.

+
0.5 2007-03-23 @@ -65,7 +71,7 @@ -

&xep0166; can be used to initiate and negotiate a wide range of peer-to-peer sessions. One session type of interest is video exchange. This document specifies a format for describing Jingle video sessions, where the media exchange occurs using the Real-time Transport Protocol (see &rfc3550;).

+

&xep0166; can be used to initiate and negotiate a wide range of peer-to-peer sessions. One session type of interest is video exchange. This document specifies a format for describing Jingle video sessions, where the media exchange occurs using the Real-time Transport Protocol (see &rfc3550;). Such sessions require the use of a lossy transport method such as &xep0177; or the "ice-udp" method specified in &xep0176;.

@@ -77,6 +83,22 @@ + +

In accordance with Section 8 of XEP-0166, this document specifies the following information related to the Jingle Video via RTP application type:

+
    +
  1. The content negotiation process is defined in the Negotiating a Jingle Video Session section of this document.

  2. +
  3. The semantics of the &DESCRIPTION; element are defined in the Content Description Format section of this document.

  4. +
  5. A mapping of Jingle semantics to the Session Description Protocol is provided in the Mapping to Session Description Protocol section of this document.

  6. +
  7. A Jingle video session MUST use a lossy transport method such as &xep0177; or the "ice-udp" method specified in &xep0176;.

  8. +
  9. +

    Content is to be sent and received as follows:

    +
      +
    • Outbound video content shall be encoded into RTP packets and each packet shall be sent individually over the transport. Each inbound packet received over the transport is an RTP packet.

    • +
    +
  10. +
+
+

A Jingle video session is described by one or more encodings contained within a wrapper &DESCRIPTION; element. In the language of RFC 4566 these encodings are payload-types; therefore, each <payload-type/> child element specifies an encoding that can be used for the video stream. Such encodings are often used in the context of the Real-time Transfer Protocol (RTP; see RFC 3550) but may be used in other contexts as well. The most common encodings for the Audio/Video Profile (AVP) of RTP are listed in &rfc3551; (these "static" types are reserved from payload ID 0 through payload ID 95), although other encodings are allowed (these "dynamic" types use payload IDs 96 to 127) in accordance with the dynamic assignment rules described in Section 3 of RFC 3551. The &PAYLOADTYPE; element's 'id' attribute is REQUIRED and its 'name' attribute is RECOMMENDED. The encodings SHOULD be provided in order of preference.

When the initiator sends a session-initiate stanza to the receiver, the &DESCRIPTION; element includes all of the payload types that the initiator can receive for Jingle video (each one encapsulated in a separate &PAYLOADTYPE; element):

+ action='session-initiate' initiator='romeo@montague.net/orchard' @@ -158,14 +183,17 @@ - + ]]>

Upon receiving the session-initiate stanza, the receiver determines whether it can provisionally accept the session and proceed with the negotiation. The general Jingle error cases are specified in XEP-0166. In addition, the receiver must determine if it supports any of the payload types advertised by the initiator; if it does not, it MUST reject the session by sending a <unsupported-codecs/> error:

+ @@ -174,11 +202,17 @@ ]]>

If there is no error, the receiver provisionally accepts the session:

+ ]]>

The receiver then should send a list of the payload types that it can receive via a Jingle "content-accept" (or "session-accept") action. The list that the receiver sends MAY include any payload types (not a subset of the payload types sent by the initiator) but SHOULD retain the ID numbers and order specified by the initiator.

+ action='content-accept' initiator='romeo@montague.net/orchard' @@ -193,18 +227,24 @@ - + ]]>

The initiator acknowledges the 'content-accept' with an empty IQ result:

+ ]]>

After successful transport negotiation (not shown here), the receiver then accepts the session:

+ - +

And the initiator acknowledges session acceptance:

+ ]]>
@@ -330,6 +373,7 @@ bitrate=384000;buffer=2000;config=4e291800 video-rtp Jingle sessions that support video exchange via the Real-time Transport Protocol + lossy XEP-0180 ]]> @@ -383,8 +427,5 @@ bitrate=384000;buffer=2000;config=4e291800 ]]> - -

To follow.

-