Re: [Uri-review] URI scheme registration request

<David_Warden@Dell.com> Sat, 14 November 2015 19:48 UTC

Return-Path: <David_Warden@dell.com>
X-Original-To: uri-review@ietfa.amsl.com
Delivered-To: uri-review@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 843A41B2A7A for <uri-review@ietfa.amsl.com>; Sat, 14 Nov 2015 11:48:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.01
X-Spam-Level:
X-Spam-Status: No, score=-7.01 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TNsrUiarciqB for <uri-review@ietfa.amsl.com>; Sat, 14 Nov 2015 11:48:45 -0800 (PST)
Received: from ausxipps301.us.dell.com (ausxipps301.us.dell.com [143.166.148.223]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BE8671B2A38 for <uri-review@ietf.org>; Sat, 14 Nov 2015 11:48:44 -0800 (PST)
DomainKey-Signature: s=smtpout; d=dell.com; c=nofws; q=dns; h=X-LoopCount0:X-IronPort-AV:From:To:CC:Date:Subject: Thread-Topic:Thread-Index:Message-ID:References: In-Reply-To:Accept-Language:Content-Language: X-MS-Has-Attach:X-MS-TNEF-Correlator:acceptlanguage: Content-Type:MIME-Version; b=f2KbYEBnLRcYh3QbRRD3tw0kxl9/5vahlnnLsvvKTmdJKd3tH2blhRNI DOvAJHz6AKv7yu0lVlwBu1VPQX1ZlAlslXv1xC4u+hshBAAFLaagwVEFP ljfTcQ1vEPWFri30cL/0VzR6SH0a2dH5mWtaDJiR0I7FqOGmwxDoKVu30 w=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dell.com; i=@dell.com; q=dns/txt; s=smtpout; t=1447530524; x=1479066524; h=from:to:cc:date:subject:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=qhmkmnx1t+E6Tq44z6CO7nEPPVvI1DkLWM3B1PQUx7Y=; b=enTZPYiLl8w5E1BkJNzp3/paOIHoyh+wrXBPInsCp37Qdv+Qns8TxdTN Trkla8GIiUp/iI9FlkyS+oIPwKJ7TVx0PR2jNb3Aa6juB6YMUmwBsKJ8Z x7emhoOKX4L+fpkUodR83Zn4hvgo0ylaHyM0mO7+BsiI2v+s0ALcgtlMI g=;
X-LoopCount0: from 10.175.216.249
X-IronPort-AV: E=Sophos;i="5.20,294,1444712400"; d="scan'208,217";a="729005498"
From: David_Warden@Dell.com
To: wason@wasontech.com
Date: Sat, 14 Nov 2015 13:47:35 -0600
Thread-Topic: [Uri-review] URI scheme registration request
Thread-Index: AdEfDskMNIaHAkyRQiqdmkUjcnowjQAA87Mg
Message-ID: <2D58682309E75147BB3B286C815CAC7E2ACD0A185B@AUSX7MCPS308.AMER.DELL.COM>
References: <564531FC.7000606@wasontech.com> <2D58682309E75147BB3B286C815CAC7E2ACD0A184B@AUSX7MCPS308.AMER.DELL.COM> <5646C765.4050907@wasontech.com> <E3443077-C4D8-496E-BCD0-661F387831E3@gbiv.com>
In-Reply-To: <E3443077-C4D8-496E-BCD0-661F387831E3@gbiv.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: multipart/alternative; boundary="_000_2D58682309E75147BB3B286C815CAC7E2ACD0A185BAUSX7MCPS308A_"
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/uri-review/FxU2EmWje8EnOiIb63dozJshtAM>
Cc: uri-review@ietf.org
Subject: Re: [Uri-review] URI scheme registration request
X-BeenThere: uri-review@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Proposed URI Schemes <uri-review.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/uri-review>, <mailto:uri-review-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/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: Sat, 14 Nov 2015 19:48:48 -0000

The syntax for a URI is defined in RFC3986: https://www.ietf.org/rfc/rfc3986.txt It specifies what characters are allowed where and what there general meaning is. It is helpful to be very familiar with that document before designing a URI scheme.

At a high level you have:
      URI         = scheme “:” hier-part [ “?” query ] [ “#” fragment ]

The hier-part includes an authority (host) and any hierarchical data. File systems are hierarchical (delineated by the “/” character), and if you have some sort of robot army it might be hierarchical as well. It is not ideal to use the hier-part for non-hierarchical data. The query can help identify a resource, it isn’t entirely clear what you want to identify with the guid and example. However one approach could be something like:

rr://192.168.1.2:48653?transport=tcp&target=7269993b-c6b0-4135-ba55-8129a9cc6402&cmd=example.create.Create<rr://192.168.1.2:48653?transport=tcp/%7b7269993b-c6b0-4135-ba55-8129a9cc6402%7d/example.create.Create>

From: Roy T. Fielding [mailto:fielding@gbiv.com]
Sent: Saturday, November 14, 2015 1:01 PM
To: John Wason
Cc: Warden, David; uri-review@ietf.org
Subject: Re: [Uri-review] URI scheme registration request

A URI scheme should define what it names and how that naming maps to the URI syntax.
There is nothing wrong with using separate schemes for different transports if those transports
are essential parts of the name (e.g., if something named Fred at TCP:80 is different from something
named Fred at UDP:89898).  (I prefer using dots, like rr.tcp and rr.udp and rr.tcp.tls.)

The brace characters {} are not allowed in URIs. They are reserved for things like URI Templates
and local macros.

The proposed identifiers are a mix of hardcoded addresses and object identifiers. There is no
definition of the protocol being used after a connection is made. If UDP broadcast is being used
for node discovery, then what is it that the UDP packets are telling the clients? One of these URLs?

In short, I think you need to better document what each URI scheme means from the perspective of
a server and then what the client is expected to do with such a URI.  It doesn't matter if this is all
internally defined in a library that the programmers don't have to worry about: we need to see
the details to make any sense of the scheme and its security implications.

....Roy


On Nov 13, 2015, at 9:32 PM, John Wason <wason@wasontech.com<mailto:wason@wasontech.com>> wrote:

Would a web browser be able to understand a question mark in the URI?  For instance, this is what a current URI looks like:

tcp://192.168.1.2:48653/{7269993b-c6b0-4135-ba55-8129a9cc6402}/example.create.Create<tcp://192.168.1.2:48653/%7b7269993b-c6b0-4135-ba55-8129a9cc6402%7d/example.create.Create>

This is obviously not going to work if I want to have a URI that can detect the protocol.  So would this:

rr://192.168.1.2:48653?transport=tcp/{7269993b-c6b0-4135-ba55-8129a9cc6402}/example.create.Create<rr://192.168.1.2:48653?transport=tcp/%7b7269993b-c6b0-4135-ba55-8129a9cc6402%7d/example.create.Create>

be considered a valid URI if I were to write a plugin for a web browser that understands the "rr" scheme?

On 11/14/2015 12:02 AM, David_Warden@Dell.com<mailto:David_Warden@Dell.com> wrote:
John,

My suggestion is that you use a single “rr” URI scheme for all the variants. I suspect the client will more often know what transports are available than the URI generator will. While they probably have meaning to you, the variants aren’t all that descriptive in general. For example, I can tunnel TCP over USB and you can’t be much more nebulous than “cloud”. If you try and register each variant, it will make it harder on firewall administrators (for instance) who want to handle (allow/disallow) all rr protocols the same way (in principle). It will also clutter the parameters registry.

You could include parameters to handle the variants like rr://foo?transport=tcp&security=tls. You will probably need to define parameters anyway if you want to constrain the TLS negotiation at all (say by including the remote certificate thumbprint) or your other protocol details like PCI slot. You could define these in an RFC or other document.

Regards,
David
(The above reflects my personal opinion and not necessarily that of my employer.)

From: Uri-review [mailto:uri-review-bounces@ietf.org] On Behalf Of John Wason
Sent: Thursday, November 12, 2015 6:43 PM
To: uri-review@ietf.org<mailto:uri-review@ietf.org>
Subject: [Uri-review] URI scheme registration request

Scheme Name:

The requested scheme improvement is for use with Robot Raconteur, a communication framework for robotics and automation. It will have the basic form "rr://" for unsecured transport and "rrs://" for transports secured using StartTLS channel upgrade.  Because Robot Raconteur is capable of running over multiple transports, the scheme will also need to specify which transport to use.  This will be accomplished using the "rr" "plus" transport type.  Currently in use transport schemes are:

rr://foo - Cloud Transport (always secure)
rr+cloud://foo - Cloud Transport (always secure)
rr+tcp://foo - TCP Transport
rrs+tcp://foo - TCP secure transport
rr+usb://localhost - USB transport
rr+pci://localhost - PCI/PCIe transport

Possible schemes for future use with websockets (currently not used)
rr+ws://foo
rrs+ws://foo
rr+wss://foo
rrs+wss://foo

Status:
Provisional

Application/protocols that use this scheme name:
None

Contact:
John Wason
Wason Technology, LLC
PO Box 669
Tuxedo, NY 10987
+1-518-279-6234
wason@wasontech.com<mailto:wason@wasontech.com>

Change controller:
John Wason
Wason Technology, LLC
PO Box 669
Tuxedo, NY 10987
+1-518-279-6234
wason@wasontech.com<mailto:wason@wasontech.com>

Reference:
Robot Raconteur is currently a proprietary software project.  All documentation can be found at http://robotraconteur.com/documentation .  It currently has port 48653 officially registered for TCP and UDP use along with the host names "robotraconteur" and "rr-discovery".  Standardization is of interest however the exact method and commercial implications are still being investigated.

Scheme Syntax:
See "Scheme Name"

Scheme semantics:
Each scheme will point to a host (and possibly port).  The host will be "localhost" for the hardware based protocols.

Definition of Operations:
Asynchronous message stream using binary protocol.

Context of Use:
Robot Raconteur communication protocol over port 48653 (where applicable).

Internationalization and Character Encoding:
All strings in the message stream are encoded as UTF-8 and do not have any security implications.  The only part of the URI expecting to contain international characters are hostnames registered through DNS.

Security considerations:
Robot Raconteur is mainly used for communication over the local network except for the cloud transport.  All transports over the internet use TLS or DTLS security using certificates matched to each node through a UUID unless the user specifically uses unsecured TCP.  Nodes can be secured using password and certificate based authentication. The transport itself is immune to parsing attacks as it uses length prefixes for all data fields.




--

John Wason, Ph.D.

Wason Technology, LLC

PO Box 669

Tuxedo, NY 10987

(518) 279-6234

wason@wasontech.com<mailto:wason@wasontech.com>




--

John Wason, Ph.D.

Wason Technology, LLC

PO Box 669

Tuxedo, NY 10987

(518) 279-6234

wason@wasontech.com<mailto:wason@wasontech.com>
_______________________________________________
Uri-review mailing list
Uri-review@ietf.org<mailto:Uri-review@ietf.org>
https://www.ietf.org/mailman/listinfo/uri-review