[drinks] Some ideas on the Route Records

Otmar Lendl <lendl@nic.at> Tue, 03 August 2010 19:39 UTC

Return-Path: <lendl@nic.at>
X-Original-To: drinks@core3.amsl.com
Delivered-To: drinks@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CD9AA3A69C5 for <drinks@core3.amsl.com>; Tue, 3 Aug 2010 12:39:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.386
X-Spam-Level:
X-Spam-Status: No, score=-0.386 tagged_above=-999 required=5 tests=[AWL=0.555, BAYES_05=-1.11, HELO_EQ_AT=0.424, HOST_EQ_AT=0.745, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MDMjb192jjhR for <drinks@core3.amsl.com>; Tue, 3 Aug 2010 12:39:26 -0700 (PDT)
Received: from mail.bofh.priv.at (fardach.bofh.priv.at [88.198.34.164]) by core3.amsl.com (Postfix) with ESMTP id 966D53A69B7 for <drinks@ietf.org>; Tue, 3 Aug 2010 12:39:25 -0700 (PDT)
Received: from [10.0.0.1] (80-121-103-103.adsl.highway.telekom.at [80.121.103.103]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.bofh.priv.at (Postfix) with ESMTPSA id 746724C7E2 for <drinks@ietf.org>; Tue, 3 Aug 2010 21:39:53 +0200 (CEST)
Message-ID: <4C587088.5080201@nic.at>
Date: Tue, 03 Aug 2010 21:39:52 +0200
From: Otmar Lendl <lendl@nic.at>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.11) Gecko/20100711 Thunderbird/3.0.6
MIME-Version: 1.0
To: drinks@ietf.org
References: <4C46FA74.7030403@nic.at> <76AC5FEF83F1E64491446437EA81A61F7CF5048495@srvxchg> <4C57273A.9010901@nic.at>
In-Reply-To: <4C57273A.9010901@nic.at>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Subject: [drinks] Some ideas on the Route Records
X-BeenThere: drinks@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: IETF DRINKS WG <drinks.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/drinks>, <mailto:drinks-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/drinks>
List-Post: <mailto:drinks@ietf.org>
List-Help: <mailto:drinks-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/drinks>, <mailto:drinks-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Aug 2010 19:39:28 -0000

On 02.08.2010 22:14, Otmar Lendl wrote:
>> #15
>>>   UC INTERCONNECT #5  Provisioning of a delegated name server: An SSP
>>>                       maintains a Tier 2 name server that contains the
>>>                       NAPTR records that constitute the terminal step
>>>                       in the LUF.  The SSP needs to provision a
>> ===
>> [S] OK :)! I think we agreed to make this abstract at the meeting.
>> ===
> 
> I'll try to write up my suggestions later this week.

Here are my thoughts on how one might approach the data structures in the
route records.

This is based on http://tools.ietf.org/html/draft-ietf-drinks-spprov-01

There they are defined as:

   o  Route Record (RteRecType):
      A Route Record is the data that the resolution systems return in
      response to a successful query with the Public Identifier as the
      query string.  It is associated with a Route Group for routes that
      are not specific to a Public Identifier.
      To support the use cases defined in
      [I-D.ietf-drinks-usecases-requirements], SPPP protocol defines
      three type of Route Records: URIType, NAPTRType, and NSType.
      These Route Records extend the abstract type RteRecType and
      inherit the common attribute 'priority' that is meant for setting
      precedence across the route records defined within a Route Group
      in a protocol agnostic fashion.

The NAPTRType is basically 1:1 the fields in a NAPTR, but the URIType is
more interesting:


       <complexType name="URIType">
         <complexContent>
           <extension base="spppb:RteRecType">
             <sequence>
               <element name="ere" type="string" default="^(.*)$"/>
               <element name="uri" type="string"/>
               <element name="ext" type="spppb:ExtAnyType"
   minOccurs="0"/>
             </sequence>
           </extension>
         </complexContent>
       </complexType>

This is quite nice and tails very closely what the NAPTRs are doing.

But let's step back for a second and look at what's common to all these
Route Records. We have:

* Route Records that map from the PI to an URI
	+ Terminal NAPTR
	+ URIType

* Route Records that only generate a referral, not a full resolution
	+ NSType
	+ non-terminal NAPTR

So, if we would want to create a more resolution-protocol independent set
of Route Records, we could do it in the following way:

That record needs to contain:

* A regex
  - Maybe allow in the XML an alternative to the /^.*$/whatever/ greedy
match by stating "<replaceWith>whatever</replaceWith>.

* What kind of PI it applies to? (what is the input to the regex?)
  - E.164 number
  - SIP uri
  - ...

* What kind of service it applies to?
  - voice calling
  - message service (SMS, MMS)
  - voicemail
  - video calling

* How to interpret the result of the regex?
  - A re-target operation
	(like ENUM, the result becomes the new request-URI)
  - A routing operation
	(The request-URI is not touched (e.g. can remain a tel: URI),
	the result just defines the next SIP hop.)
  - A referral
	This need not be limited to
	"go use ENUM to query the following Nameservers"
	but could also be something like
	"query the following SIP server for a redirect"	
	or even a
	"go to a completely different resolution scheme"
---

This way, we're completely independent of a resolution protocol. Some of
these route records can be used to populate ENUM trees (if it's not a
re-target operation, one would need something like
http://www.ietf.org/mail-archive/web/sip/current/msg23298.html). Others
might drive SIP redirect servers.

Comments?

otmar
-- 
// Otmar Lendl <lendl@nic.at>at>, T: +43 1 5056416 - 33, F: - 933 //