Internet Engineering Task Force	
Internet Draft	                                               A. Idnani
Document: draft-idnani-sip-contact-timestamp-00.txt	        Motorola
Expires: March 2003	                                    October 2002


                  New Parameter for Contact Header

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.

Abstract
   
   This memo proposes a new parameter for the SIP Contact header This  
   memo identifies the need for the new parameter, and then goes ahead  
   and defines the new parameter, and the algorithm for using the new 
   parameter. It also presents an example flow demonstrating the use of 
   the new parameter. The new parameter being defined is an optional 
   parameter, and is not required to be supported by the SIP servers and 
   UAs to be interoperational.

Conventions used in this document

   The 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 [2].



Idnani	                 Expires - March 2003                   [Page 1]

Internet Draft	   New parameter for contact Header         October 2002

Table of Contents

   1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
   2. SIP Registrar  . . . . . . . . . . . . . . . . . . . . . . . 3
   3. Proxy UA . . . . . . . . . . . . . . . . . . . . . . . . . . 3
   4. Backward Compatibility . . . . . . . . . . . . . . . . . . . 4
   5. Call Flows . . . . . . . . . . . . . . . . . . . . . . . . . 4
   6. Security Considerations  . . . . . . . . . . . . . . . . . . 6
   7. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
   Author's Addresses  . . . . . . . . . . . . . . . . . . . . . . 7


1. Introduction

   This draft tries to solve a problem that occurs in any situation in 
   which a SIP User Agent acts as a gateway to a Non-SIP device.  In 
   particular, architectures in which SIP is used as the signaling   
   protocol within the core network of a system but the wireless mobile 
   devices that roam within the system are not SIP user agents 
   themselves.

   This draft introduces the concept of a "Proxy UA" which acts as a 
   gateway between the SIP core network and the SIP-unaware mobile. The 
   Proxy UA is responsible for running the UA call engine for all the 
   mobiles that it is serving, besides converting the call control 
   messages from SIP to legacy protocols and vice-versa.

   SIP uses contact addresses to tie a user?s address-of-record to 
   his/her location [1]. The contact addresses are centrally registered 
   with a SIP Registrar using a SIP REGISTER message. The 200 OK 
   response back from the SIP Registrar contains the list of all the 
   current Contact addresses for the user.

   Many a times when a mobile user moves from one service area to 
   another, his registration at the old service area is kept active by a 
   proxy UA in that area. This is because the old proxy UA has no way of 
   knowing (or atleast not fast enough way of knowing) that the user has 
   moved, and that there is now a new proxy UA for the user, which is 
   the correct proxy UA.

   This draft addresses the problem of stale registrations at the SIP 
   Proxy UA. It does not change the behavior of a SIP UA in any way. The 
   draft introduces a new parameter called "created", for the Contact 
   header. The parameter "created" will be maintained by the SIP 
   Registrar, and will contain a time stamp of when the Contact address 
   was first created, i.e. when the SIP REGISTER message containing a 
   Contact address and a new Call-ID was received.  This parameter along 

Idnani	                 Expires - March 2003                   [Page 2]

Internet Draft	   New parameter for contact Header         October 2002

   with the timestamp value will be passed back to the user / proxy UA 
   in a SIP 200 OK message.

2. SIP Registrar

   SIP Registrar is required to maintain a list of contact addresses. 
   When a SIP Registrar receives a SIP REGISTER message, it MUST get the 
   contact address from the message, and add it to the list of contact 
   addresses for the user if it?s a new contact address.

   This extension requires the SIP Registrar to also maintain a 
   timestamp when the contact address is a new contact address. If the 
   Call-ID of a SIP REGISTER is a new Call-ID, then the Contact address 
   in the SIP REGISTER message MUST be considered a new contact address, 
   and hence a new timestamp SHOULD be recorded for this contact 
   address. To keep things simple a SIP Registrar SHOULD get a new 
   timestamp when the CSeq of the SIP REGISTER message is "1 REGISTER". 
   This would signify a new Registration and hence new contact address, 
   and therefore a new timestamp.

   The SIP Registrar should return all the contact addresses in SIP 200 
   OK response for a SIP REGISTER request. The contact addresses SHOULD 
   carry a parameter called "created". The value of the parameter SHOULD 
   be set to the timestamp as stored at the SIP Registrar.

   e.g.
      Contact: userA@proxyUA1.visited.com;created=2002-03-18:12:24:31

3. Proxy UA

   The proxy UA sends SIP REGISTER messages on behalf of a UA to the SIP 
   Registrar. When the proxy UA receives the SIP 200 OK response back 
   from the SIP Registrar,

   -  It SHOULD check the contact addresses, and see if there are any    
      more contact addresses than it had sent in the SIP REGISTER       
      message.

   -  If there are, it SHOULD check the timestamp on all the contact       
      addresses to see if there are any newer contact addresses as       
      compared to the ones that it had sent.

   -  If there are, and the proxy UA wants to remove itself as the       
      contact for the UA, then the proxy UA SHOULD send another SIP      
      REGISTER message to the SIP Registrar, with the Expires header       
      set to 0.

      Removing a contact address may be relevant where performance of 
      the system is critical. In such cases one might want to maintain       

Idnani	                 Expires - March 2003                   [Page 3]

Internet Draft	   New parameter for contact Header         October 2002

      very few contact address (one in many cases), so that the UAC or 
      a SIP server does not have to fork a SIP INVITE to too many 
      contact addresses. This reduces the network traffic, and helps in 
      trying only those contact addresses, where probability of finding 
      the user is higher.

   -  The remaining steps are same as for any other SIP Registration       
      refer [1]

4. Backward Compatibility

   The "created" parameter is an optional parameter. Any UA that does    
   not support the parameter can safely ignore the parameter. The    
   parameter does not change the current functionality of the SIP    
   Registrar and the UA, it only adds a new timestamping function on the   
   SIP Registrar. A proxy UA / UA that does not want to remove its    
   contact address from the Registrar, does not need to do so.

   The "created" parameter can be used in conjunction with other Contact   
   header parameters, without affecting their semantics.
 
5. Call Flows

   The following diagram illustrates a typical use of this extension. In   
   the following diagram Proxy UA 1 is the old proxy UA, and Proxy UA 2 
   is the new proxy UA.

   +-----------+          +-----------+         +---------------+
   | Proxy UA1 |          | Proxy UA1 |         | SIP Registrar |
   +-----------+          +-----------+         +---------------+
         |                      |                        |
         |                      |   F1 SIP REGISTER      |
         |                      |----------------------->|
         |                      |                        |
         |                      |   F2 200 OK            |
         |                      |<-----------------------|
         |                      |                        |
         | F3 SIP REGISTER      |                        |
         |----------------------|----------------------->|
         |                      |                        |
         | F4 200 OK            |                        |
         |<---------------------|------------------------|
         |                      |                        |
         | F5 SIP REGISTER      |                        |
         |----------------------|----------------------->|
         |                      |                        |
         | F4 200 OK            |                        |
         |<---------------------|------------------------|
         |                      |                        |

Idnani	                 Expires - March 2003                   [Page 4]

Internet Draft	   New parameter for contact Header         October 2002


   In the above call flow, when the user moves to a new service area,    
   the proxy UA (Proxy UA 2) in that area registers the contact address   
   with the SIP Registrar. After some time when the old proxy UA (Proxy   
   UA 1) sends a SIP REGISTER to renew the registration, it gets a 200    
   OK response back from the SIP Registrar containing both the old and    
   the new contact addresses. Proxy UA 1, looks at the contact    
   addresses, and realizes by looking at the timestamps on the contact    
   addresses that there is a new proxy UA for the user, so it    
   deregisters its contact address, by sending a SIP REGISTER message,   
   with the Expires value set to 0.  

   Message Details  

   F1 SIP REGISTER  
   
   REGISTER sip:registrar.home.com 
   Via: SIP/2.0/UDP proxyUA2.visited.com:5060 
   From:UserA <userA@home.com> 
   To: UserA <userA@home.com> 
   Call-ID: 123456@proxyUA2.visited.com 
   Cseq: 1 REGISTER 
   Contact: userA@proxyUA2.visited.com 
   Expires: 7200 
   Content-Length: 0  

   F2 200 OK  

   SIP/2.0 200 OK 
   Via: SIP/2.0/UDP registrar.home.com:5060 
   From:UserA <userA@home.com> 
   To: UserA <userA@home.com> 
   Call-ID: 123456@proxyUA2.visited.com 
   Cseq: 1 REGISTER 
   Contact: userA@proxyUA1.visited.com;created=2002-03-18:12:24:31 
   Contact: userA@proxyUA2.visited.com;created=2002-03-18:18:19:35 
   Content-Length:0
   
   F3 SIP REGISTER  

   REGISTER sip:registrar.home.com 
   Via: SIP/2.0/UDP proxyUA1.visited.com:5060 
   From:UserA <userA@home.com> 
   To: UserA <userA@home.com> 
   Call-ID: 63158@proxyUA1.visited.com 
   Cseq: 16 REGISTER 
   Contact: userA@proxyUA1.visited.com 
   Expires: 7200 
   Content-Length: 0  

Idnani	                 Expires - March 2003                   [Page 5]

Internet Draft	   New parameter for contact Header         October 2002

 
   F4 200 OK  
   
   SIP/2.0 200 OK 
   Via: SIP/2.0/UDP registrar.home.com:5060 
   From:UserA <userA@home.com> 
   To: UserA <userA@home.com> 
   Call-ID: 63158@proxyUA1.visited.com 
   Cseq: 16 REGISTER 
   Contact: userA@proxyUA1.visited.com;created=2002-03-18:12:24:31 
   Contact: userA@proxyUA2.visited.com;created=2002-03-18:18:19:35 
   Content-Length:0

   F5 SIP REGISTER  
   
   REGISTER sip:registrar.home.com 
   Via: SIP/2.0/UDP proxyUA1.visited.com:5060 
   From:UserA <userA@home.com> 
   To: UserA <userA@home.com> 
   Call-ID: 63158@proxyUA1.visited.com 
   Cseq: 17 REGISTER 
   Contact: userA@proxyUA1.visited.com 
   Expires: 0 
   Content-Length: 0

   F6 200 OK  

   SIP/2.0 200 OK 
   Via: SIP/2.0/UDP registrar.home.com:5060 
   From:UserA <userA@home.com> 
   To: UserA <userA@home.com> 
   Call-ID: 63158@proxyUA1.visited.com 
   Cseq: 17 REGISTER 
   Contact: userA@proxyUA2.visited.com;created=2002-03-18:18:19:35 
   Content-Length:0

6. Security Considerations

   This draft does not introduce any new security threats.

7. References

   [1]	J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J.         
        Peterson, R. Sparks, M. Handley, and E. Schooler, "SIP: Session        
        Initiation Protocol", draft-ietf-sip-rfc2543bis-09 (work in         
        progress),February 2002

   [2]	S. Bradner, "Key words for use in RFCs to indicate requirement 
        levels," RFC 2119, Internet Engineering Task Force, Mar. 1997.

Idnani	                 Expires - March 2003                   [Page 6]

Internet Draft	   New parameter for contact Header         October 2002


Author's Addresses

   Ajaykumar Idnani
   Motorola
   1301 E Algonquin Road
   Schaumburg, IL 60196
   Email: Ajaykumar.idnani@motorola.com
 

   Full Copyright Statement

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

   This document and translations of it may be copied and furnished to 
   others, and derivative works that comment on or otherwise explain it 
   or assist in its implementation may be prepared, copied, published 
   and distributed, in whole or in part, without restriction of any 
   kind, provided that the above copyright notice and this paragraph 
   are included on all such copies and derivative works.  However, this 
   document itself may not be modified in any way, such as by removing 
   the copyright notice or references to the Internet Society or other 
   Internet organizations, except as needed for the purpose of 
   developing Internet standards in which case the procedures for 
   copyrights defined in the Internet Standards process must be 
   followed, or as required to translate it into languages other than 
   English.

   The limited permissions granted above are perpetual and will not be 
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an 
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 
   TASK FORCE DISCLAIMS 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.

   Notice Regarding Intellectual Property Rights

   The IETF has been notified of intellectual property rights claimed 
   in regard to some or all of the specification contained in this 
   document.  For more information consult the online list of claimed 
   rights






Idnani	                 Expires - March 2003                   [Page 7]