Re: [Uri-review] [Fwd: [BEHAVE] Last Call: draft-ietf-behave-turn-uri (Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers) to Proposed Standard]

Marc Petit-Huguenin <marc@petit-huguenin.org> Thu, 15 October 2009 23:20 UTC

Return-Path: <marc@petit-huguenin.org>
X-Original-To: uri-review@core3.amsl.com
Delivered-To: uri-review@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6A8283A672F; Thu, 15 Oct 2009 16:20:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.265
X-Spam-Level:
X-Spam-Status: No, score=-2.265 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, IP_NOT_FRIENDLY=0.334]
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 ofZpX2svboqJ; Thu, 15 Oct 2009 16:20:21 -0700 (PDT)
Received: from server.implementers.org (server.implementers.org [69.55.225.91]) by core3.amsl.com (Postfix) with ESMTP id C27AA3A683B; Thu, 15 Oct 2009 16:20:20 -0700 (PDT)
Received: by server.implementers.org (Postfix, from userid 1001) id 6A8956C9852C; Thu, 15 Oct 2009 23:20:24 +0000 (UTC)
Received: from [192.168.2.3] (server.implementers.org [127.0.0.1]) by server.implementers.org (Postfix) with ESMTPA id ABA336C9852A; Thu, 15 Oct 2009 23:20:22 +0000 (UTC)
Message-ID: <4AD7AE35.7030701@petit-huguenin.org>
Date: Thu, 15 Oct 2009 16:20:21 -0700
From: Marc Petit-Huguenin <marc@petit-huguenin.org>
User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090701)
MIME-Version: 1.0
To: Ted Hardie <ted.ietf@gmail.com>
References: <4AD7387A.7060901@ericsson.com> <6e04e83a0910151433y2007a015ia77a407e702a3841@mail.gmail.com>
In-Reply-To: <6e04e83a0910151433y2007a015ia77a407e702a3841@mail.gmail.com>
X-Enigmail-Version: 0.95.7
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Mailman-Approved-At: Fri, 16 Oct 2009 04:23:12 -0700
Cc: uri-review@ietf.org, ietf@ietf.org, app-ads@tools.ietf.org
Subject: Re: [Uri-review] [Fwd: [BEHAVE] Last Call: draft-ietf-behave-turn-uri (Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers) to Proposed Standard]
X-BeenThere: uri-review@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Proposed URI Schemes <uri-review.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/uri-review>, <mailto:uri-review-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/uri-review>
List-Post: <mailto:uri-review@ietf.org>
List-Help: <mailto:uri-review-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/uri-review>, <mailto:uri-review-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 15 Oct 2009 23:20:22 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Ted,

Thanks for reviewing this I-D.  See my comments below.

Ted Hardie wrote:
> Howdy,
> 
> I do not believe this document is ready for publication, as I believe
> the URI scheme documentation needs work.  As it stands now, the
> scheme-specific processing required for this scheme is so great that I
> believe a standard URI parser will not work with the scheme as it is
> intended.  Looking, for example, at the CPAN module PERL::URI, the
> operation of the standard behavior for path and port seem likely to
> work contrary to this scheme's intention.  

The standard behavior for path does not apply in this case, because a TURN URI
is an opaque URI, not a hierarchical URI, as advised by RFC 4395[1].  As far as
I understand PERL::URI, this should fall in the scheme specific support of
PERL::URI[2], like for SIP and MAILTO URIs.

> I also could not follow the
> details of how this would work in relation to a DDDS remote hosting
> option, as mentioned in section 1, and I believe that more descriptive
> text may be required.

The best would be to add another example for this usage:

<begin-text>
5.  Examples

5.1.  Multiple Protocols

   With the DNS RRs in Figure 1 and an ordered TURN transport list of
   {TLS, TCP, UDP}, the resolution algorithm will convert the "turn:
   example.net" URI to the list of IP addresses, port and protocol
   tuples in Table 2.


   example.net.
   IN NAPTR 100 10 "" "RELAY:turn.udp" "" datagram.example.net.
   IN NAPTR 200 10 "" "RELAY:turn.tcp:turn.tls" "" stream.example.net.

   datagram.example.net.
   IN NAPTR 100 10 "S" "RELAY:turn.udp" "" _udp._turn.example.net.

   stream.example.net.
   IN NAPTR 100 10 "S" "RELAY:turn.tcp" "" _turn._tcp.example.net.
   IN NAPTR 200 10 "A" "RELAY:turn.tls" "" a.example.net.

   _turn._udp.example.net.
   IN SRV   0   0  3478 a.example.net.

   _turn._tcp.example.net.
   IN SRV   0   0  5000 a.example.net.

   a.example.net.
   IN A     192.0.2.1


                                 Figure 1

                 +-------+----------+------------+------+
                 | Order | Protocol | IP address | Port |
                 +-------+----------+------------+------+
                 | 1     | UDP      | 192.0.2.1  | 3478 |
                 | 2     | TLS      | 192.0.2.1  | 5349 |
                 | 3     | TCP      | 192.0.2.1  | 5000 |
                 +-------+----------+------------+------+

                                  Table 2

5.2.  Remote Hosting

   In the example in Figure 2, a VoIP provider (example.com) is using
   the TURN servers managed by the administrators of the example.net
   domain (defined in Figure 1).  The resolution algorithm using the
   ordered TURN transport list of {TLS, TCP, UDP} would convert the
   "turn:example.com" URI to the list of IP addresses, port and protocol
   tuples in Table 2.


   example.com.
   IN NAPTR 100 10 "" "RELAY:turn.udp:turn.tcp:turn.tls" "" example.net.


                                 Figure 2
</end-text>


> 
> One area of particular concern is this:
> 
> "The URI resolution algorithm uses <scheme>, <host>, <port> and
>    <transport> as input.  It also uses as input a list ordered by
>    preference of TURN transports (UDP, TCP, TLS) supported by the
>    application using the TURN client.  The output of the algorithm is a
>    list of {IP address, transport, port} tuples that a TURN client can
>    try in order to create an allocation on a TURN server."
> 
> Having a URI resolution method rely on a preference order associated
> with a calling application seems very fragile.  There seems to be no way
> to guarantee that the information on calling application would be preserved in
> passing the URI to a parser.  If this input list is required, I suspect that
> that it must be noted within a URI parameter to avoid unexpected or incorrect
> results.

I am not sure to fully understand the concern here.  The preference order is
used so the resolver can choose in case of a tie.  There is 3 different sources
of data that are processed by the resolution algorithm to generate the list of
{IP address, port, protocol} tuples to try:

1. The NAPR/SRV/A/AAA RRs that express the preferences of the domain(s)
administrators.

2. The ordered list of TURN transports that express the preferences of the
application developers (i.e. the capabilities of the application - what
protocols are implemented - and in case the algorithm cannot decide, the
preferred protocol - the fastest implementation, or more secure, etc...).

3. The URI itself that express the preferences of the user of the application
(i.e. specific IP, specific port, specific transport or just the domain if the
user does not care).

Moving the ordered list of TURN transports to the URI would prevent the
application to provide to the resolution algorithm its own capabilities and
preferences.

Let me know if you think that the current text does not reflect this
explanation, in which case I will try to add some text.

> 
> Since this mechanism involves a fairly distinctive URI resolution
> mechanism, I suggest that this document also be reviewed by the URI
> mailing list, in addition to URI-review.  It seems more likely to be
> able to discuss how to best meet the requirements expressed within a
> URI syntax more likely to be handled correctly by parsers already
> deployed.
> 
> regards,
> 
> Ted Hardie
> 
> On Thu, Oct 15, 2009 at 7:58 AM, Magnus Westerlund
> <magnus.westerlund@ericsson.com> wrote:
>> Hi,
>>
>> As responsible AD I would really appreciate an URI review of the two
>> proposed URI schemes.
>>


[1] http://www.ietf.org/mail-archive/web/behave/current/msg06537.html
[2] http://search.cpan.org/~gaas/URI-1.40/URI.pm#SCHEME-SPECIFIC_SUPPORT

- --
Marc Petit-Huguenin
Personal email: marc@petit-huguenin.org
Professional email: petithug@acm.org
Blog: http://blog.marc.petit-huguenin.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkrXrjIACgkQ9RoMZyVa61cM7wCgn+57/Rab0lg1jQCMASabTPx/
2lAAoKr/ntOzbchDJj8SHZSOLrl/chgg
=OIPz
-----END PGP SIGNATURE-----