Internet DRAFT - draft-bjorkner-sip-serviceroute

draft-bjorkner-sip-serviceroute





Internet Engineering Task Force                             J.Bjorkner, 
INTERNET-DRAFT                                             H.Gustafsson 
Document: draft-bjorkner-sip-serviceroute-00.txt                 Hotsip 
Expires January 13 2001                                September 1 2001 
                                                                        
                     Service Route Header extension 
 
 
STATUS OF THIS MEMO 
 
    
   This document is an Internet-Draft and is in full conformance with 
   all provisions of Section 10 of RFC2026 [1].  
    
   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 document proposes a SIP header extension to allow for a UAC or 
   outbound proxy to determine a request path through an initial set of 
   downstream SIP proxies, i.e. a loose route mechanism. This is useful 
   in scenarios of distributed service execution if for example a UA is 
   located in a visited network and want have originating services 
   executed in the user's home network. 
    
   This solution is also applicable in the scenarios required by 3GPP 
   in conjunction with the proposed path header.  
    
1. 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]. 
    
    
    
    
    
    
  
J.Bjorkner,H.Gustafsson                                              1 

Internet Draft                service route          September 2001 
 
 
2. Introduction 
    
   Routing services located in SIP proxies could be distributed over 
   the network in specialized SIP servers executing a particular 
   service. This means that a call can get routed through several SIP 
   servers during call setup to invoke the set of services that a 
   caller is subscribing for. For example a concept of service brokers 
   may be used to manage a set of distributed routing services for the 
   service providers. The service broker has the knowledge of which 
   services a user is subscribing for. The broker has the knowledge of 
   where to execute the services and where the services are configured. 
   Thereby a single point of configuration towards the customers can be 
   achieved in an environment of distributed service execution. The 
   proposed extension can also be utilized by a UAC to indicate a route 
   path to be followed for a request. This may be useful if a user is 
   located in a visited network and have to use an outbound proxy in 
   that network but still wants to be able to invoke his outbound 
   services in his outbound proxy in his home domain. 
    
   Previous proposals [3] have let the SIP application server set up 
   separate signaling legs towards the different services that a user 
   subscribes for, and the control have been returned to the 
   application server after each service has been executed. i.e. the 
   services have been executed in parallel. This proposal allows for 
   (not mandates) a model where several services can be executed in 
   serial, and the only centralized point in the service chain is the 
   service broker that has references to the services to be executed, 
   but hands off the control to the service servers themselves after 
   the initial service lookup. This model is useful in the scenario 
   when a customer is subscribing for services from several application 
   service providers, or in a wireless environment when he has roamed 
   to another network but still wants to have the services he is 
   subscribing for in the home network executed there.  
    
   The routing of a SIP request through a chain of proxies without 
   affecting the original request URI, also called loose routing, is of 
   interest for the 3GPP work where a route set is returned in a path 
   header in the response of a SIP registration. The proposal in this 
   document is also applicable to solve this problem. 
    
   The functionality stated above could be achieved by the introduction 
   of a new SIP header, service-route:. The service route has almost 
   the same semantics as the route header but with the purpose to 
   indicate which SIP application servers to traverse in a signaling 
   path. How it works will be described in the sections below. The main 
   difference is that a hop caused by a service route header doesn't 
   change the request URI of the request, as opposed for the route 
   header. In the case of using the route header, the request URI will 
   be replaced by the SIP URL in the route header.  This allows the 
   creation of services that have to modify the request URI before 
   forwarding the request. 
    

    J.Bjorkner,H.Gustafsson         Expires March 1 2002        [2] 
 

Internet Draft                service route          September 2001 
 
 
   The concept of service route have been implemented and tested with 
   successful results. 
    
3. Problem Statement 
    
   Routing services is a quite common service offered in communication 
   networks. Examples of traditional routing services for telephony are 
   800-number, private number plans and call barring services. Those 
   among new services, such as presence based routing services and 
   services giving value to other communication means than voice such 
   as gaming, video and instant messaging, could be deployed using a 
   SIP based infrastructure in a more efficient way than traditional 
   technology. This is one of the reasons why SIP has gained so much in 
   popularity recently. A lot of people talk about SIP's advantages to 
   open up the networks by allowing the service providers to integrate 
   services from several vendors into a complete offering to the end 
   users, either by hosting the services themselves or resell the 
   service from application service providers. This document proposes 
   an extension to SIP that simplifies the integration of several SIP 
   services by using a distributed service execution model by 
   introducing a new SIP header. 
    
   The underlying model is that the end is associated with an entity in 
   the network that has the knowledge of the different routing services 
   that the user is subscribing for.  For example could this be a 
   special outbound proxy, called a service broker. The service broker 
   also uses a database to keep track of which services a particular 
   user is subscribing for. The service broker could in many ways be 
   viewed as an ordinary SIP proxy since its basic purpose is to 
   forward incoming SIP messages to the application servers providing 
   the services. The proposed header extension also works without a 
   service broker entity in the network if the execution path could be 
   communicated out to the sip UA by some means. Those means could for 
   example be static UA configuration or dynamic configuration using 
   the proposed 3GPP path header. 
    
   The main idea is that all originating requests will get routed 
   through the application servers implementing the services that a 
   user subscribes for. If a user is subscribing for several services, 
   it is desired to be able to have those services called in serial to 
   avoid unnecessary state keeping in the network, i.e. the original 
   request contains necessary information for the downstream proxies to 
   use for next hop routing decisions. 
    
   The problem with this approach rises when there are several services 
   to be executed. The service broker or UAC will forward the request 
   to the first application in the service chain and forgets about the 
   request. But how should this server know which application server 
   that is next in the execution path? A first idea would be to 
   indicate this using the route header. The problem with this approach 
   is the semantics of the route header. A proxy is assumed to copy the 
   SIP URI in the route header to the request URI before forwarding the 
   request to the host indicated in the route header. This could cause 
    J.Bjorkner,H.Gustafsson         Expires March 1 2002        [3] 
 

Internet Draft                service route          September 2001 
 
 
   problems for some application servers that want to modify the URI 
   and have that forwarded to the next hop. Either the semantics of 
   route be broken, which seems to be a bad idea since there exist a 
   lot of confusion already today among implementers how to use it, or 
   an alternative solution to the problem has to be found. This 
   document describes an alternate solution to the problem, the 
   service-route: header. 
    
   In this model, the application servers can be viewed as operators 
   operating on the incoming SIP requests. Each operator has access to 
   the incoming request and can perform some logic to be applied on the 
   incoming request. Each application server can then either return a 
   response to the incoming request upstream or modify the request URI 
   before forwarding the request downstream to the rest of the 
   application servers. A complete service offered to the end user is 
   built up from a set of operators operating on the SIP request. 
   In this model, it is also possible to allow the end user to have 
   subscriptions of services offered by different application service 
   providers where the user id for the service execution context is 
   different among the different application service providers. In this 
   situation, the user name is used for a particular application server 
   carried as a parameter to the service-route header. 
    
4. Definition of Service-route header 
    
                  Where Proxy ACK BYE CAN INV OPT REG 
   Service-Route    R     ar   -   -   -   o   o   o 
    
   A UAC or proxy that inserts the service-route header MUST also 
   insert a proxy-require header requiring that all downstream proxies 
   support this extension, called "service-route". Otherwise the proxy 
   in the chain that doesn't support the extension will break the 
   routing path. 
    
4.1. Semantics 
    
   The service-route header is used to carry information to an 
   application server about where to route the request for the next 
   hop, independent of the request URI of the request. The service-
   route header could also contain parameters to be used for service 
   execution, such as a user-id for execution of the service. 
   The service-route headers build up a list describing a path to be 
   taken through several application servers, similar to the route 
   headers. The difference is that the receiving server, not the 
   sending server as in the case of route headers, removes the next hop 
   server from the list. This allows us to transport parameters that 
   could be used for service execution using those headers. A list of 
   service-route headers could either be inserted to a request by a 
   UAC, or by an application broker proxy that is used as an outbound 
   proxy for a UAC. 
    
   The service-route header should only be inserted by the first 
   request in a call leg. In the case where the same path has to be 
    J.Bjorkner,H.Gustafsson         Expires March 1 2002        [4] 
 

Internet Draft                service route          September 2001 
 
 
   traversed by subsequent requests in the same call leg, those proxies 
   MUST insert record-route headers into the first request. If it 
   happens that a request contains both service-route headers and route 
   headers, the route headers MUST be used for request routing.  In 
   this case the last route header points to a UAS, which MUST ignore 
   the set of service-route headers. 
    
4.2. Syntax 
    
   The service-route header determines the path to be taken by a SIP 
   request for routing through a set of SIP application servers. A SIP 
   proxy with service-route support or UAC adds multiple service route 
   headers to a request to indicate a path to be taken by the request. 
   Since this is a loose route mechanism any proxy MAY in this route 
   break the chain by returning a final response upstream. 
    
   When a proxy with service-route support receives a request, the 
   first of the service route headers is checked. If this matches the 
   receiving application server, the entry is removed. 
    
   It then performs some service execution, and MAY modify the request 
   URI of the incoming request. The request is checked for any more 
   service route headers. If such is present it then forwards the 
   request to the host indicated in this entry without modifying the 
   request URI. In the case of no more service route headers, the 
   request is forwarded to the host indicated in the request URI and 
   the proxy-require requirement for service-route SHOULD be removed. 
    
   Service-Route = "Service-Route" ":" 1# (name-addr) 
    
5. Example 
    
   A UAC sends an INVITE through two service proxies. 
   [UAC] ->[out.operator.com] ->[other.com] ->[operator.com] ->[UAS] 
    
   Request sent from UAC and received in out.operator.com: 
    
   INVITE sip:hegu@operator.com SIP/2.0 
   Via: . . . 
   From: sip:jbj@operator.com;tag=42 
   To: sip:hegu@operator.com 
   Call-ID: . . . 
   Cseq: . . . 
   Contact: sip:jbj@212.28.214.227 
   Content-Length: . . . 
   Content-Type: application/sdp 
   Service-Route: sip:out.operator.com, sip:other.com 
   Proxy-Require: service-route 
    
   . . . 
    
    
    
    J.Bjorkner,H.Gustafsson         Expires March 1 2002        [5] 
 

Internet Draft                service route          September 2001 
 
 
    
   Request sent from out.operator.com and received in other.com: 
    
   INVITE sip:hegu@operator.com SIP/2.0 
   Via: . . ., . . . 
   From: sip:jbj@operator.com;tag=42 
   To: sip:hegu@operator.com 
   Call-ID: . . . 
   Cseq: . . . 
   Contact: sip:jbj@212.28.214.227 
   Content-Length: . . . 
   Content-Type: application/sdp 
   Service-Route: sip:other.com 
   Proxy-Require: service-route 
    
   . . . 
    
   Request sent from other.com and received in operator.com: 
    
   INVITE sip:hegu@operator.com SIP/2.0 
   Via: . . ., . . ., . . . 
   From: sip:jbj@operator.com;tag=42 
   To: sip:hegu@operator.com 
   Call-ID: . . . 
   Cseq: . . . 
   Contact: sip:jbj@212.28.214.227 
   Content-Length: . . . 
   Content-Type: application/sdp 
   Record-Route: sip:hegu@operator.com;maddr=other.com 
    
   . . . 
    
   Request sent from operator.com and received in UAS: 
    
   INVITE sip:hegu@212.28.214.228 SIP/2.0 
   Via: . . ., . . ., . . ., . . . 
   From: sip:jbj@operator.com;tag=42 
   To: sip:hegu@operator.com 
   Call-ID: . . . 
   Cseq: . . . 
   Contact: sip:jbj@212.28.214.227 
   Content-Length: . . . 
   Content-Type: application/sdp 
   Record-Route: sip:hegu@operator.com;maddr=other.com 
    
   . . . 
    
    
    
    
    
    
    
    J.Bjorkner,H.Gustafsson         Expires March 1 2002        [6] 
 

Internet Draft                service route          September 2001 
 
 
    
    
   Response sent from UAS to UAC according to the via headers. 
    
   SIP/2.0 200 OK 
   Via: . . ., . . ., . . ., . . . 
   From: sip:jbj@operator.com;tag=42 
   To: sip:hegu@operator.com;tag=11 
   Call-ID: . . . 
   Cseq: . . . 
   Content-Length: . . . 
   Content-Type: application/sdp 
   Record-Route: sip:hegu@operator.com;maddr=other.com 
   Contact: sip:hegu@212.28.214.228 
    
   . . . 
    
   ACK sent from UAC to UAS via the other.com proxy. (Following the 
   route): 
    
   ACK sip:hegu@operator.com;maddr=other.com SIP/2.0 
   Via: . . . 
   From: sip:jbj@operator.com;tag=42 
   To: sip:hegu@operator.com;tag=11 
   Call-ID: . . . 
   Cseq: . . . 
   Route: sip:hegu@212.28.214.228 
   Content-Length: . . . 
    
   . . . 
 
 
 
6. Open Issues 
    
   According to RFC2543bis3 a proxy MUST NOT add a proxy-require 
   header. What happens if a UAC that does not add proxy-require 
   receives a 420? 
   Even worse we would like to remove the proxy-require when all 
   service-route headers are consumed. 
 
 
 
10. Acknowledgments 
    
   Thanks to Hisham Khartabil and Johan Liseborn, Hotsip for review and 
   input.  






    J.Bjorkner,H.Gustafsson         Expires March 1 2002        [7] 
 

Internet Draft                service route          September 2001 
 
 
    
 
11. Author's Addresses 
    
   Jorgen Bjorkner 
   Hotsip AB 
   Barnhusgatan 16 
   SE-111 23 Stockholm 
   Sweden 
   Phone: +46 70 666 23 26 
   Email: Jorgen.Bjorkner@Hotsip.com 
    
   Henrik Gustafsson 
   Hotsip AB 
   Barnhusgatan 16 
   SE-111 23 Stockholm 
   Sweden 
   Phone: +46 70 364 65 68 
   Email: Henrik.Gustafsson@Hotsip.com 
    
12. Bibliography 
 
   1  Bradner, S., "The Internet Standards Process -- Revision 3", BCP 
      9, RFC 2026, October 1996. 
    
   2  Handley, M., et al., "SIP: Session Initiation Protocol", RFC 
      2543, March 1999 
    
   3  Rosenberg, J. et.al. "An Application Server Component 
      Architecture for SIP", http://search.ietf.org/internet-
      drafts/draft-rosenberg-sip-app-components-01.txt 






















    J.Bjorkner,H.Gustafsson         Expires March 1 2002        [8]