<?xml version='1.0'?>
<!DOCTYPE rfc SYSTEM 'rfcXXXX.dtd'>
<?rfc strict="yes" ?>
<?rfc toc="yes" ?>
<rfc ipr='full3978' docName='draft-worley-address-route-00'>

<front>
<title abbrev='Addressing and Routing'>
Addressing and Routing of Requests in SIP
</title>
<author initials='D.R.' surname='Worley' fullname='Dale R. Worley'>
   <organization abbrev='Bluesocket'>
       Pingtel Corp.
   </organization>
   <address>
       <postal>
           <street>10 North Ave.</street>
           <city>Burlington</city>
           <region>MA</region>
           <code>01803</code>
           <country>US</country>
       </postal>
       <phone>+1 781 229 0533 x173</phone>
       <email>dworley@pingtel.com</email>
       <uri>http://www.pingtel.com</uri>
   </address>
</author>
<date month='January' year='2008' />
<area>Transport</area>
<workgroup>SIP</workgroup>
<keyword>addressing, routing, request URI</keyword>
<abstract>
<t>
The current "request URI rewriting" technique of routing SIP requests
makes support of several desired uses of SIP problematic.
This document is to discuss these problems and suggest a direction in
which to proceed toward solutions.
</t>
</abstract>
</front>

<middle>

<section title='Introduction' anchor='intro'>

<t>
The problems surrounding "request URI rewriting" are common and are
likely to become more intense.
In the PSTN, there are a small number of fairly well-controlled ways
that calls can be forwarded, routed, and redirected.
SIP is more flexible, allowing nearly arbitrary address manipulation
by all SIP agents.  Quite a number of different rewriting operations
are present in the small-to-medium organization PBX system that the
author's company produces, and we can expect that as people become
more familiar with the possibilities, rewriting will become as
routinely complex as e-mail forwarding is now.
For example, a recent message to the IETF SIP mailing list contained
the following Received headers:
<figure>
<artwork><![CDATA[
Received: from localhost (dragon.ariadne.com [127.0.0.1])
        by dragon.ariadne.com (8.12.8/8.12.8) with ESMTP id
        m0AFA507018184 for <worley@localhost>; Thu, 10 Jan 2008
        10:10:05 -0500
Received: from mail.g.comcast.net [216.148.227.80] by localhost with
        POP3 (fetchmail-6.2.0) for worley@localhost (single-drop);
        Thu, 10 Jan 2008 10:10:05 -0500 (EST)
Received: from imta21.emeryville.ca.mail.comcast.net ([76.96.30.31])
        by sccrmxc16.comcast.net (sccrmxc16) with ESMTP id
        <20080110150359s1600jigc6e>; Thu, 10 Jan 2008 15:03:59 +0000
Received: from megatron.ietf.org ([156.154.16.145]) by
        IMTA21.emeryville.ca.mail.comcast.net with comcast id
        bT3y1Y00d37nXEc0M00000; Thu, 10 Jan 2008 15:03:59 +0000
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by
        megatron.ietf.org with esmtp (Exim 4.43) id 1JCywW-0008B8-3E;
        Thu, 10 Jan 2008 10:03:40 -0500
Received: from sip by megatron.ietf.org with local (Exim 4.43) id
        1JCywV-0008B1-40 for sip-confirm+ok@megatron.ietf.org; Thu,
        10 Jan 2008 10:03:39 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by
        megatron.ietf.org with esmtp (Exim 4.43) id 1JCywU-0008As-QR
        for sip@ietf.org; Thu, 10 Jan 2008 10:03:38 -0500
Received: from rtp-iport-2.cisco.com ([64.102.122.149]) by
        ietf-mx.ietf.org with esmtp (Exim 4.43) id 1JCywT-0000Gu-Vl
        for sip@ietf.org; Thu, 10 Jan 2008 10:03:38 -0500
Received: from rtp-dkim-1.cisco.com ([64.102.121.158]) by
        rtp-iport-2.cisco.com with ESMTP; 10 Jan 2008 10:03:38 -0500
Received: from rtp-core-2.cisco.com (rtp-core-2.cisco.com
        [64.102.124.13]) by rtp-dkim-1.cisco.com (8.12.11/8.12.11)
        with ESMTP id m0AF3bXs026778; Thu, 10 Jan 2008 10:03:37 -0500
Received: from xbh-rtp-211.amer.cisco.com (xbh-rtp-211.cisco.com
        [64.102.31.102]) by rtp-core-2.cisco.com (8.12.10/8.12.6)
        with ESMTP id m0AF3apm000195; Thu, 10 Jan 2008 15:03:37 GMT
Received: from xfe-rtp-202.amer.cisco.com ([64.102.31.21]) by
        xbh-rtp-211.amer.cisco.com with Microsoft
        SMTPSVC(6.0.3790.1830); Thu, 10 Jan 2008 10:03:31 -0500
Received: from [161.44.174.128] ([161.44.174.128]) by
        xfe-rtp-202.amer.cisco.com with Microsoft
        SMTPSVC(6.0.3790.1830); Thu, 10 Jan 2008 10:03:31 -0500
]]></artwork>
</figure>
That is 13 routing decisions that were considered important enough by
the SMTP agents to log the decision.
</t>

</section>

<section title='Problem Use Cases' anchor='use-cases'>

<t>
Jonathan's "UA Loose Routing I-D<xref target='ref-ualr'/> provides a
number of use cases or problems to be solved.
Many of these cases are fundamentally the same, so we here divide them
into groups.
</t>

<section title='"Where did this come from?"'>

<t>
In a number of situations, the UA that receives a request requires
more information about how the request was addressed to itself than is
provided by the request-URI.  (Or more than can be easily represented
in the request-URI by present techniques.)
</t>

</section>

<section title='Subaddressing'>

<t>
A number of situations are forms of subaddressing, where an
"authority" issues an AOR to a user or user agent, which in turn
wants to create a series of "subaddresses".  The subaddresses are
required to all route to the user agent, but the user agent desires to
be able to determine which subaddress was used in the original
request.
</t>

<t>
(We assume that the authority prescribes the method by which the
subaddresses are constructed from the AOR, but that the
authority has no knowledge of which specific subaddresses have been
constructed prior to their appearance in a request to be routed.)
</t>

</section>

<section title='Emergency Services'>

<t>
To quote from <xref target='ref-ualr'/>:
<list style='empty'>
<t>
A key requirement of systems supporting
emergency calling is that the SIP INVITE request for an emergency
call be 'marked' in some way that makes it clear that it is an
emergency call, so that it can receive priority treatment [7].
However, such a marking needs to be done in a way that it cannot be
abused by attackers seeking to get special treatment for non-
emergency calls.  The solution for this is that the marking needs to
be the target address of the request itself, which would
unambiguously identify an emergency services call taker as the target.
</t>
</list>
</t>

</section>

</section>

<section title='Routing vs. Redirection' anchor='rr'>

<t>
For a considerable time, many parties have proposed that the
operations which currently just rewrite the request-URI (which we
generically call "rewrites") be divided
into two classes.  One class, "routing", is conceived as not altering
the the fundamental identity of the target of the request, but only
adding information as to how to reach the target.
The prototypical example is when a request to an AOR is routed to the
AOR's contact address.
The other class, "redirection", is conceived as changing the identity
of the specified target.
A typical example is "call forwarding", where all requests to a
particular AOR are directed to another AOR.
</t>

<t>
Through the history of a request from its UAC to its UAS, it bears a
number of different request-URIs, the "sequence of rewrites".
The above distinction privileges a subset of these rewrites, the
request-URIs inserted by "redirections", as being of particular
significance (which they are).
</t>

</section>

<section title='The "UA Loose Routing" Proposal'>

<t>
The proposal of <xref target='ref-ualr'/> is essentially that
a request should bear as its request-URI the last redirection URI in
its history, on the assertion that URI contains the most useful information
about the addressing of the request.
Rewrites after the last redirection (which are necessarily routings)
would be carried in Route headers.
This mechanism requires no changes to the procedures of
RFC 3261<xref target='rfc3261'/> as long as any SIP agents which would
see the request after these Route headers are removed understand this
new mechanism.
(The SIP agents in question are the ultimate UAS for the request, and
any intermediarey proxies which should perform routing or
redirection.)
</t>

</section>

<section title='Security Considerations' anchor='security'>

<t>
Security issues have not been considered.
</t>

</section>

<section title='Revision History' anchor='revision'>

<section title='draft-worley-address-route-00' anchor='00'>

<t>
First version.
</t>

</section>

<!--
<section title='Changes from draft-worley-address-route-00 to draft-worley-address-route-01' anchor='00-01'>
</section>
-->

</section>

</middle>

<back>

<references title='Informative References'>

<reference anchor='ref-ualr'>
<!-- draft-rosenberg-sip-ua-loose-route-01 -->
    <front>
	<title>Applying Loose Routing to Session Initiation Protocol (SIP) User Agents (A)</title>
	<author initials='J.' surname='Rosenberg'><organization/></author>
	<date month='June' year='2007'/>
    </front>
    <seriesInfo name='I-D' value='draft-rosenberg-sip-ua-loose-route-01' />
    <format type='TXT'
            target='http://tools.ietf.org/html/draft-rosenberg-sip-ua-loose-route-01' />
</reference>

</references>

</back>

</rfc>

