TOC 
Network Working GroupJ. Hildebrand
Internet-DraftJabber, Inc.
Expires: August 22, 2003February 21, 2003

TINS: A Transport for Initiating and Negotiating Sessions using SDPng over XMPP
draft-hildebrand-xmpp-sdpng-00

Status of this Memo

This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026.

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 August 22, 2003.

Copyright Notice

Copyright (C) The Internet Society (2003). All Rights Reserved.

Abstract

This document describes a method of initiating and negotiating media sessions by using SDPng on top of the eXtensible Messaging and Presence Protocol (XMPP) as the signalling protocol.



 TOC 

Table of Contents




 TOC 

1. Introduction

The MMUSIC WG has defined an XML format for Session Description and Capability Negotiation (SDPng[1]). Given the availability of a native XML transport in the form of the Extensible Messaging and Presence Protocol (XMPP[2]), it may be valuable to explore how to build a framework for media stream/session initiation and negotiation over XMPP. This document explores such a framework, with SDPng over XMPP providing a semantics for signalling call setup that is similar to the semantics alternatively provided by the Session Initiation Protocol (SIP[3]).

1.1 Terminology

This document inherits terminology defined in SDPng[1] and in XMPP Core[2].

The capitalized key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119[4].

1.2 Discussion Venue

The author welcomes discussion and comments related to the topics presented in this document. The preferred forum is the <xmppwg@jabber.org> mailing list, for which archives and subscription information are available at <http://www.jabber.org/cgi-bin/mailman/listinfo/xmppwg/>.

1.3 Intellectual Property Notice

This document is in full compliance with all provisions of Section 10 of RFC 2026.



 TOC 

2. Stanza Flow Overview

The following is an example flow of XMPP stanzas to initiate a call. The from addresses will usually be added by the XMPP server, but are shown for clarity.

Step 1: A sends an invite to B:

<message from='A@example.com/work' to='B@example.com'>
  <thread>1234@hostA.example.com</thread>
  <body>This message contains a TINS invite, 
        but your client does not support TINS.</body>
  <tins method='INVITE'
    xmlns='http://www.jabber.org/protocol/tins'>

    <def xmlns='http://www.iana.org/sdpng'>
      <codec name="audio-basic" encoding="PCMU"
        sampling="8000" channels="1" 
        xmlns='http://www.iana.org/sdpng/audio'/>
      <pt name="rtp-avp-0" pt="0" format="audio-basic"
        xmlns='http://www.iana.org/sdpng/rtp'/>
    </def>

    <cfg xmlns='http://www.iana.org/sdpng'>
      <component name="interactive-audio" media="audio">
        <alt name="AVP-audio-0">
          <session format="rtp-avp-0"
		    xmlns='http://www.iana.org/sdpng/rtp'>
            <udp role="receive" endpoint="A" addr="192.168.1.1"
	            rtp-port="7800"/>
          </session>
        </alt>
      </component>
    </cfg>

    <conf xmlns='http://www.iana.org/sdpng'>
      <owner user="A@example.com" id="98765432" version="1" nettype="IN"
             addrtype="IP4" addr="192.168.1.1"/>
      <session name="SDPng questions"/>

      <info name="interactive-audio" function="voice">
        Telephony media stream
      <info>
    </conf>
  </tins>
</message>
          

Step 2: B tells A that it is trying:

<message from='B@example.com/laptop' to='A@example.com/work'>
  <thread>1234@hostA.example.com</thread>
  <tins method='result' code='100' reason='Trying'
    xmlns='http://www.jabber.org/protocol/tins'/>
</message>
          

Step 3: B tells A that it is ringing:

<message from='B@example.com/laptop' to='A@example.com/work'>
  <thread>1234@hostA.example.com</thread>
  <tins method='result' code='180' reason='Ringing'
    xmlns='http://www.jabber.org/protocol/tins'/>
</message>
          

Step 4: B sends A updated description:

<message from='B@example.com/laptop' to='A@example.com/work'>
  <thread>1234@hostA.example.com</thread>
  <tins method='result' code='200' reason='OK'
    xmlns='http://www.jabber.org/protocol/tins'>

    <def xmlns='http://www.iana.org/sdpng'>
      <codec name="audio-basic" encoding="PCMU"
        sampling="8000" channels="1"
  	    xmlns='http://www.iana.org/sdpng/audio'/>
      <pt name="rtp-avp-0" pt="0" format="audio-basic"
        xmlns='http://www.iana.org/sdpng/rtp'/>
    </def>

    <cfg xmlns='http://www.iana.org/sdpng'>
      <component name="interactive-audio" media="audio">
        <alt name="AVP-audio-0">
          <session format="rtp-avp-0" 
            xmlns='http://www.iana.org/sdpng/rtp'>
            <udp role="receive" endpoint="A" addr="192.168.1.1"
	          rtp-port="7800"/>
            <udp role="receive" endpoint="B" addr="192.168.1.2"
	          rtp-port="9410"/>
          </session>
        </alt>
      </component>
    </cfg>
  </t:tins>
</message>
          

Step 5: A sends an ACKnowldgement:

<message to='B@example.com/laptop' from='A@example.com/work'>
  <thread>1234@hostA.example.com</thread>
  <tins method='ACK'
    xmlns='http://www.jabber.org/protocol/tins'/>
</message>
          

Step 6: B hangs up:

<message from='B@example.com/laptop' to='A@example.com/work'>
  <thread>1234@hostA.example.com</thread>
  <tins method='BYE'
    xmlns='http://www.jabber.org/protocol/tins'/>
</message>
          

Step 7: A acknowledges the hang up:

<message to='B@example.com/laptop' from='A@example.com/work'>
  <thread>1234@hostA.example.com</thread>
  <tins method='result' code='200' reason='OK'
    xmlns='http://www.jabber.org/protocol/tins'/>
</message>
          


 TOC 

3. Transactions

The <thread/> element from XMPP is used to group TINS messages together into a shared context. A unique thread value MUST be used for each transaction. An example of a transaction might be a single voice call.



 TOC 

4. TINS Methods

The following methods can be used in a TINS message.

4.1 INVITE

Invite the target user to an out-of-band session. The content inside the <tins/> element MAY be SDPng descriptions of the connection types offered. If a session is already established for this transaction, the new INVITE serves as a renegotiation of session parameters.

4.2 ACK

The initiator tells the invitee that an out-of-band session has been established.

4.3 BYE

Either side of the conversation decides to terminate the transaction. This message SHOULD cause all resources associated with this transaction to be freed, and any associated network connections to be terminated.



 TOC 

5. Results

In reply to each of the method messages, the receiver sends 0 or more replies, with the method set to 'result'. Result codes are as specified in RFC 3261, section 21.



 TOC 

6. Security Considerations

TINS is subject to the same security considerations as XMPP, particularly with regard to authentication and channel encryption.

This document does not describe how the media protocols (e.g. RTP) traverse firewalls and NATs.

There is no general-purpose way to ensure that media protocol connections are associated with the in-band TINS conversation.



 TOC 

7. IANA Considerations

None



 TOC 

References

[1] Ott, J., Bormann, C. and D. Kutscher, "Session Description and Capability Negotiation", draft-ietf-mmusic-sdpng-05 (work in progress), July 2002.
[2] Saint-Andre, P. and J. Miller, "XMPP Core (draft-ietf-xmpp-core-03, work in progress)", February 2003.
[3] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.
[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[5] Internet Assigned Numbers Authority, "Internet Assigned Numbers Authority", January 1998.


 TOC 

Author's Address

  Joe Hildebrand
  Jabber, Inc.
EMail:  jhildebrand@jabber.com
URI:  http://www.jabber.com/


 TOC 

Full Copyright Statement

Acknowledgement