Internet DRAFT - draft-hoeneisen-sip-proxy-supported

draft-hoeneisen-sip-proxy-supported





Internet Engineering Task Force                             Bernie Hoeneisen
Internet Draft                                                Markus Isomaki
draft-hoeneisen-sip-proxy-supported-00.txt                    Krisztian Kiss
Expires: January 2002                                                  Nokia
                                                                   July 2001
                                                                  


                  The SIP Proxy-Supported header field



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 document is an individual submission to the IETF. Comments
   should be directed to the authors.



Abstract

   The Session Initiation Protocol (SIP) provides a mechanism that
   allows a User Agent Client (UAC) to request that a particular
   protocol extension has to be used to process the request. The User
   Agent Server (UAS) declines the request if it does not support the
   extension. Recently also means have been defined for the User Agent
   Server (UAS) to determine which extensions are supported by the User
   Agent Client (UAC). Furthermore there are also means for requiring 
   proxy servers to understand certain features.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 1]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



   However, there is currently no way for a User Agent (UA) to determine
   Which extensions are supported by all the intermediate proxy servers
   that remain in the signaling path for subsequent requests within a
   particular call leg. Knowing about proxy-supported extensions would 
   allow the UA to tailor its subsequent requests accordingly.

   This document defines a SIP extension that allows UACs to indicate in
   a request set of extensions. All the intermediate proxy servers, which
   insert themselves into the Record-Route, have to indicate their support
   for the extension requested by the UAC. This information then can be
   used when deciding which features to use for SUBSEQUENT requests.

   Features determined by this extension can be e.g. new methods, which
   require special handling in proxy servers.


1 Introduction

   The Session Initiation Protocol (SIP) [1][2] defines the Require
   and Proxy-Require request header fields that indicate to the UAS
   and proxy server, respectively, that it should only process the
   request, if it supports the features enumerated. The features are
   listed in the headers as option tags. A UAS or proxy, respectively,
   must understand the option tags in order to process a
   request. Recently also means have been defined to allow UAS to
   determine which extensions are supported by the UAC (Supported
   header field) [3][2]. However, currently SIP provides no mechanism
   for User Agents to determine the capabilities of the intermediate
   proxy servers to be used for subsequent requests. In this scenario
   a UA wants to use a certain extension in a subsequent request, but
   the UA needs to determine first if all the intermediate proxy
   servers have the support for it. As certain subsequent requests
   cannot be processed correctly in the intermediate proxy servers
   without understanding the extension, the UA needs a way to
   determine which extensions are supported by the intermediate proxy
   servers.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 2]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



   The main differences between the Proxy-Require [1][2] and the
   herein defined Proxy-Supported mechanism are that the
   Proxy-Supported allows a request to go through, even if an
   intermediate proxy server does not support an extension indicated;
   i.e. no 420 Bad Extension is sent as with Proxy-Require. The
   extensions indicated in Proxy-Supported do not apply to the request
   carrying it, but only to subsequent requests within the same call
   leg, and are thus relevant only to record-routing proxies. Even if
   some of the record-routing proxies do not support all the
   enumerated extensions, e.g. session initiation can continue,
   although without the unsupported extensions.

   This document defines an extension to SIP that enables the ability
   for UACs to indicate which extensions are supported by all
   record-routing proxy servers within a call leg. This is done
   through a new header field, called Proxy-Supported and an extension
   parameter used in the Record-Route header field. Similarly to the
   Supported header defined in [3][2], the Proxy-Supported header
   field, inserted by the UAC, contains a list of option tags. Every
   record-routing proxy server in the signalling path removes option
   tags, which it does not support, from the list in the
   Proxy-Supported header field. The features indicated by the tags
   still remaining in the header after UAS has processed it are thus
   supported by the whole "signaling path". As UAS mirrors the header
   in responses, UAC will learn this information as well.

   However, there are some backwards compatibility issues with
   record-routing proxy servers and UASs that do not know how to treat
   the Proxy-Supported header field. This problem is solved in a way
   that every record-routing proxy server understanding
   Proxy-Supported extension indicates this in Record-Route
   parameter. The lack of the parameter leads to the deletion of
   Proxy-Supported header in the next proxy-server (or UAS)
   understanding it. If UAS does not implement Proxy-Supported
   extension, it will not mirror the header field in responses. The
   lack of the header field in responses indicates to the UAC that it
   cannot use any of the listed extensions.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 3]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



   An example utilization of the extension can be found in [6], where
   an alternative way of providing reliable provisional responses
   compared to [7] is described. The solution is based on a new
   method, which proxies need to handle with special rules.


2 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 [4]
   and indicate requirement levels for compliant implementations.


3 Extension Syntax

3.1 Proxy-Supported Header Field

   This extension defines a new general header field, Proxy-Supported.
   The syntax for this header field is:

            Proxy-Supported  =  "Proxy-Supported" ":" 1#option-tag

   The BNF [5] for option-tag is given in RFC 2543 [1]. In principle,
   the Proxy-Supported general-header field enumerates all the
   capabilities supported by every intermediate proxy server, which
   insert itself to the Record-Route header field. The UAC, which
   consider support of certain features of subsequent requests in all
   intermediate record-routing proxy servers, MAY include this header
   field in requests. The UAS understanding Proxy-Supported MUST
   mirror this header field from the request to the response. Each
   proxy server, which understands the Proxy-Supported header field
   and inserts itself in the Record-Route header, MUST remove all
   option-tags, which it does not support. If no option-tag is left,
   the proxy server MUST remove the whole Proxy-Supported header
   field.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 4]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



   To ensure backwards compatibility, i.e. one or more proxy servers
   do not understand the Proxy-Supported header field, special means
   have to be applied. In principle each server (proxy and UAS)
   checks, whether the last record-routing proxy server supports the
   herein described feature.  Therefore, the usage of the
   proxy-supported extension parameter for the Record-Route header
   field is introduced in section 3.2 The following defines the entry
   for the Proxy-Supported as in Table 4/5 of [2]. Table 1 lists the
   places where the Proxy-Supported may appear:

                            where  proxy ACK BYE CAN INV OPT REG
            ____________________________________________________
            Proxy-Supported  gc(*)   mr   -   -   -   o   o   o

   (*) proxy servers MUST NOT insert this header field to its own responses

                    Table 1: Places of Proxy-Supported 


3.2 Proxy supported extension parameter for Record-Route 

   This extension defines a new extension parameter for Record-Route,
   called proxy-supported-param. The syntax for this extension
   parameter is:


       rr-param                =    generic-param | proxy-supported-param
       proxy-supported-param   =   "proxy-supported=" "yes"


   The proxy-supported extension parameter is used together with the
   Proxy-Supported header field. If the Proxy-Supported and at least
   one Record-Route header field are present in a request, every proxy
   server and finally the UAS, which understands the Proxy-Supported
   header field MUST check, whether the last proxy server, which
   inserted a Record-Route, supports this feature.


            If no Record-Route has been inserted so far, no checking
            is required.

   The checking is done as follows:

   If the topmost Record-Route header field does not contain the
   proxy-supported extension parameter, the Proxy-Supported header
   field is removed before further processing of the message.

   As long as the Proxy-Supported header field is present (and
   understood by the proxy server), a record-routing proxy server
   inserts a proxy-supported extension parameter in its own
   Record-Route entry of a request.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 5]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



4 Detailed Protocol Semantics

   In this section the detailed behavior required from user agent
   clients, user agent servers, and proxies are discussed in order to
   implement this extension.


4.1 UAC Behavior

   If the UAC wishes to determine and inform the UAS, whether all
   intermediate record-routing proxy server support one more features,
   it places the corresponding option tag(s) in a Proxy-Supported
   header field of the initial request.

   If any feature indicated in the Proxy-Supported header field in the
   request requires also support in the UAC (in addition to the
   intermediate proxy servers), a UAC MAY include the corresponding
   option-tags also in the Supported header field in the request.

            It is useful to indicate that this feature can be used in
            subsequent requests issued by the other UA.

   If a UAC wants to use such a feature in a subsequent request within
   the same call leg, it has to ensure, that the corresponding
   option-tag was present in the Proxy-Supported header field of the
   last response, from which the UAC uses the Record-Route entries to
   construct the Route header field. For details how to construct the
   Route header field see [2, section 16].

   If the feature requires also support in the UAS (in addition to the
   intermediate proxy servers), a UAC MUST ensure, that its support
   has been indicated in the Supported header field of the response.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 6]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



4.2 UAS Behavior

   If the Proxy-Supported and at least one Record-Route header field
   are present in a request, the UAS supporting the Proxy-Supported
   extension MUST check whether the last proxy server, which inserted
   a Record-Route, supports this feature as follows:

   If the topmost Record-Route header field does not contain the
   proxy-supported extension parameter, the Proxy-Supported header
   field is removed before further processing of the message.

   The rest of this discussion assumes, that the Proxy-Supported
   header field is still present, i.e. not removed by the above
   described checking.

   The Proxy-Supported header field MUST be mirrored from the request to
   every 2xx and 1xx (except 100 Trying) response. The UAS MAY mirror
   the Proxy-Supported header field also to other responses if this is
   considered useful. If any feature indicated in the Proxy-Supported
   header field in the response requires also support in the UAS (in
   addition to the intermediate proxy servers), a UAS MAY include the
   corresponding option-tags also in the Supported header field in the
   responses.

            It is useful to indicate that this feature can be used in
            subsequent requests issued by the UAC corresponding to
            this UAS.  If a UAS wants to use such a feature in a
            subsequent request, it has to ensure, that the
            corresponding option-tag was present in the
            Proxy-Supported header field of the initial request.

   If the feature requires also support in the UAC (in addition to the
   intermediate proxy servers), a UAS MUST ensure, that its support
   has been indicated in the Supported header field of the initial
   request.  UASs, which do not understand Proxy-Supported extension,
   silently discard the Proxy-Supported header and do not mirror it in
   responses.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 7]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



4.3 Proxy Behavior for Requests

   The following discussion applies only for record-routing proxy
   servers (whereas other proxy servers behave as in [2]):

   If the Proxy-Supported and at least one Record-Route header field
   are present in a received request, a record-routing proxy server
   supporting Proxy-Supported extension MUST check, whether the last
   proxy server, which inserted a Record-Route, supports this feature
   as follows:

   If the topmost Record-Route header field does not contain the
   proxy-supported extension parameter, the Proxy-Supported header
   field is removed before further processing of the message.

   The rest of this discussion assumes, that the Proxy-Supported
   header field is still present, i.e. not removed by the above
   described checking.

   A record-routing proxy server MUST check for every option-tag
   listed in the Proxy-Supported header field, whether it supports the
   extension identified by it. Option-tags for extensions, which the
   proxy server does not support, MUST be removed from the
   Proxy-Supported header field. If no option-tag is left after
   removal, the proxy server MUST remove the whole Proxy-Supported
   header field.
   
   If the Proxy-Supported header field is still present, i.e. not removed
   by any of the above steps, a record-routing proxy server MUST
   insert a proxy-supported extension parameter in its own
   Record-Route entry placed into the request.

   Proxy servers, which do not understand Proxy-Supported extension,
   forward the request unmodified. The same applies to any proxy
   server that does not insert itself into the Record-Route header
   field. It is assumed that subsequent requests within a particular
   call leg are always routed strictly according to the Route header,
   i.e. no additional (stateful) proxies are traversed. If this is not
   the case, a proxy server or UA violating the rule MUST know the
   capabilities of the additional proxy servers beforehand or remove
   the Proxy-Supported header.



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 8]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



4.4 Proxy Behavior for Responses

   Concerning the Proxy-Supported extension, the proxy behavior for
   responses equals as it is described in [2]. A possible
   Proxy-Supported header field is forwarded downstream.

   Note: If the proxy server issues its own response, the
         Proxy-Supported header field MUST NOT be present in those
         responses.


5 Security Considerations

   This extension introduces no new security considerations beyond
   those discussed in RFC 2543 [1][2].


6 Acknowledgements

   The authors would like to thank Pekka Pessi for the comments on
   this document.

   
7 Author's Addresses

   Markus Isomaki
   Nokia Research Center
   Ruoholahti 1/B6
   P.O. Box 407
   FIN-00045 NOKIA GROUP

   email: markus.isomaki@nokia.com



Hoeneisen/Isomaki/Kiss        Internet Draft                       [Page 9]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



   Bernie Hoeneisen
   Nokia Networks
   Valimo 13B/3
   P.O. Box 314
   FIN-00045 NOKIA GROUP

   email: bernhard.honeisen@nokia.com


   Krisztian Kiss
   Nokia Research Center
   Visiokatu 1
   P.O. Box 100
   FIN-33721 TAMPERE

   email: krisztian.kiss@nokia.com


8 Bibliography

   [1] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg,
       "SIP: session initiation protocol", Request for Comments 2543,
       Internet Engineering Task Force, Mar. 1999.

   [2] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg,
       "SIP: session initiation protocol" (RFC2543bis-03), Internet
       Draft, Internet Engineering Task Force, May 2001.
       Work in progress.



Hoeneisen/Isomaki/Kiss        Internet Draft                      [Page 10]

Internet-Draft      The SIP Proxy-Supported header field          July 2001



   [3] J. Rosenberg and H. Schulzrinne, "The SIP supported header"
       Internet Draft, Internet Engineering Task Force, Mar. 2000.
       Work in progress.

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

   [5] Crocker, D. and Overell, P.(Editors), "Augmented BNF for Syntax
       Specifications: ABNF", RFC 2234, Internet Mail Consortium and
       Demon Internet Ltd., November 1997.


   [6] B. Hoeneisen, M. Isomaki, K. Kiss, "Simple Reliability of
       Provisional Responses in SIP" Internet Draft, Internet
       Engineering Task Force, July 2001.
       Work in progress.

   [7] H. Schulzrinne, J. Rosenberg, "Reliability of Provisional
       Responses in SIP", Internet Draft, Internet Engineering Task
       Force, March 2001.
       Work in progress





Hoeneisen/Isomaki/Kiss        Internet Draft                      [Page 11]