Re: [Uri-review] URI scheme registration request

John Wason <wason@wasontech.com> Fri, 04 December 2015 03:22 UTC

Return-Path: <wason@wasontech.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 AF1F51B2B4F for <uri-review@ietfa.amsl.com>; Thu, 3 Dec 2015 19:22:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.101
X-Spam-Level:
X-Spam-Status: No, score=-0.101 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, J_CHICKENPOX_22=0.6, J_CHICKENPOX_25=0.6, J_CHICKENPOX_32=0.6, SPF_PASS=-0.001] autolearn=no
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 6KIFtOljmMDP for <uri-review@ietfa.amsl.com>; Thu, 3 Dec 2015 19:22:46 -0800 (PST)
Received: from mail-qg0-x233.google.com (mail-qg0-x233.google.com [IPv6:2607:f8b0:400d:c04::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 05D911B2B4C for <uri-review@ietf.org>; Thu, 3 Dec 2015 19:22:44 -0800 (PST)
Received: by qgeb1 with SMTP id b1so79246963qge.1 for <uri-review@ietf.org>; Thu, 03 Dec 2015 19:22:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wasontech-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=zmVeNzIYfGYrd1WqHP2P3pvVySxkURlo5Y5BvvwHjzU=; b=ojTQYYQ+SsfyztseI+BdSAIvHDNPbWU58NtkEUo91gqkdTiQl1QTUZG74vVr/Ci9qz 3dmm+NQzILMo7DeIpjbwl2bHD7e6zIdhxd+WKha+s65I/eBa/YYB7gxdHDaYLixHB257 wrN7zbP7AM7ElN3pBLUERO+anwgy+dNjp2Bg/aQxImvEjzJH//Vdfmiu5p5NMPRW5fO3 ec1W9qWBHkbJlIOdpeYGMgu7dglTbiPI1Xm+wMLr5cGfgFNI4azyI9b2c5NtkLTY6BaP w4j1cAuOvw56wxpxRJSQA13+xozFB5qJjJwiz2vvps41uuVEONdXdv7nPrrjojHXTSwH VAQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-type :content-transfer-encoding; bh=zmVeNzIYfGYrd1WqHP2P3pvVySxkURlo5Y5BvvwHjzU=; b=hWQaXDA9ew7P6UkyAw2/CB+AUpwLZiGfvBP4ae1djV0aoDff526galTBu96ZLW7dOr nqQg7MHMjERQVRBXDIC+8x5TKlN50WsgBspGH1DqCTbFbOSZ4LFqYPe1jVTLRIxF3G41 P5T03ElCXnj1ly8NhXnFcGoAOTpo2H9QwREqLvb/zXDNPVVJQGYIl+zWaULDObT91kPa N3/56eEJdIX+XYpn9Bnx+9gAkDKjUM3v+biVcTE8tr0EmFXpdiMkhGufPV/XJHi2tSo7 gkw/X7Q2+K67ELh/FUwZJJT6dG4DcjCJKf/sNo/XIsOGAXY/oVlHVXKhT2sFuUgO4nsc S/nA==
X-Gm-Message-State: ALoCoQmVtTvqCbH8UqN14dbFLvbZmo+GHeIMKASbDPVbMCBc6t8ME4VRIox6iuhMViKoicHQ/7c/
X-Received: by 10.140.31.73 with SMTP id e67mr15910984qge.46.1449199363954; Thu, 03 Dec 2015 19:22:43 -0800 (PST)
Received: from [192.168.1.94] (ool-44c6b4b5.dyn.optonline.net. [68.198.180.181]) by smtp.googlemail.com with ESMTPSA id u143sm4678370qka.35.2015.12.03.19.22.42 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Dec 2015 19:22:43 -0800 (PST)
To: Graham Klyne <gk@ninebynine.org>, Ted Hardie <ted.ietf@gmail.com>, "Roy T. Fielding" <fielding@gbiv.com>
References: <564531FC.7000606@wasontech.com> <2D58682309E75147BB3B286C815CAC7E2ACD0A184B@AUSX7MCPS308.AMER.DELL.COM> <5646C765.4050907@wasontech.com> <E3443077-C4D8-496E-BCD0-661F387831E3@gbiv.com> <BY2PR03MB412048F8332055735B3CFFDA3100@BY2PR03MB412.namprd03.prod.outlook.com> <5647B3D1.6000608@wasontech.com> <BY2PR03MB4126303C398BA1771C297F3A3100@BY2PR03MB412.namprd03.prod.outlook.com> <564FF0F6.8020008@wasontech.com> <71680E9C-17BF-4FA2-9C80-3DAB49ADFE99@gbiv.com> <CA+9kkMCMG3PWx_3n2gCu-xgYLx9LXw=u6htVgFHKk_fbe9Yfag@mail.gmail.com> <565F5737.9030100@ninebynine.org>
From: John Wason <wason@wasontech.com>
Message-ID: <56610701.60906@wasontech.com>
Date: Thu, 03 Dec 2015 22:22:41 -0500
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0
MIME-Version: 1.0
In-Reply-To: <565F5737.9030100@ninebynine.org>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/uri-review/D1emCTdOrWQzC7znMl6Imovj-RU>
Cc: "uri-review@ietf.org" <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: Fri, 04 Dec 2015 03:22:48 -0000

I think for now I will continue the request as it stands for the 
provisional registration.  My goal at the moment is to prevent 
conflict.  A formal standard is far enough off in the future due to IP 
issues that I don't think it is that important to worry about now.

On 12/2/2015 3:40 PM, Graham Klyne wrote:
> FWIW, opining here as as designated scheme reviewer for IANA:
>
> Ted is right about the low bar to encourage provisional registration.  
> But I'm noting the discussion and am minded to request a note added to 
> the registration (when it happens) to the effect that the multiplicity 
> of URI scheme names is not without controversy, and that this should 
> be noted if there is a subsequent request to advance to permanent 
> registration of the schemes.
>
> I hope that the submitter will note the comments made here and 
> consider the extent to which the multiple schemes are needed to serve 
> the goals of longer term interoperability of systems that use them.
>
> #g
> -- 
>
>
> On 02/12/2015 16:39, Ted Hardie wrote:
>> On Tue, Dec 1, 2015 at 1:12 PM, Roy T. Fielding <fielding@gbiv.com> 
>> wrote:
>>
>>>
>>>
>>> I still don't see what the purpose is for all these new schemes.  Yes,
>>> provisional should have a low bar, but there
>>> should at least be an indication that each scheme being registered
>>> provides new identifiers.
>>>
>>>
>> ​Roy, I understand your preference, but using different schemes to 
>> indicate
>> different protocol mechanics instead of different identifiers has 
>> certainly
>> been done in the past; RFC 3981 is one example.
>>
>> Given that we're trying to encourage provisional registration by 
>> making it
>> a low bar, I don't think blocking on something that we've done in 
>> standards
>> track documents is appropriate.​  There's certainly nothing in RFC 
>> 7595's
>> guidelines for provisional registrations that would suggest we should 
>> block
>> on this.
>>
>> If this is intended to be an interim step toward permanent registration,
>> then I'm sure the feedback will be considered.
>>
>> regards,
>>
>> Ted
>>
>>
>>
>>
>>
>>> For example, the +ws(s) identifiers appear to just be an alias of ws 
>>> and
>>> wss.  Aliases are bad.
>>> rr and rr+cloud are being defined as aliases = VERY BAD. There is no
>>> reason to do that.
>>>
>>> *TCP Transport*
>>>
>>> ·         rr+tcp – Standard TCP communication
>>> ·         rrs+tcp – TLS TCP communication
>>>
>>> The TCP Transport operates by connecting to a remote port and then 
>>> using
>>> the Robot Raconteur protocol to communicate.  The official listen 
>>> port is
>>> 48653.  The path must be “/” or empty. The first handshake contains the
>>> target nodeid and/or nodename to identify which node should be 
>>> connected.
>>>   Both can be blank to connect to the default node on the endpoint.  
>>> The
>>> communication can be wrapped in TLS using Start TLS semantics.  The 
>>> first
>>> message contains the target nodeid and/or nodename and a flag to start
>>> using TLS.  The server node then provides a certificate signed by Wason
>>> Technology, LLC issued to the UUID (nodeid) of the node.  The client 
>>> can
>>> also provide a signed certificate to provide certificate based
>>> authentication.
>>>
>>> Discovery for TCP is accomplished through UDP packets that are 
>>> broadcast
>>> periodically on port 48653.  The packets contain the nodeid, nodename,
>>> the connection URI, and some additional metadata to help identify the
>>> capabilities.  The information is generally only used to connect to the
>>> “Service Index” that runs on all nodes.  This index provides detailed
>>> information about the services available and how to connect. The 
>>> clients
>>> will interrogate the nodes through the Service Index to determine if 
>>> the
>>> node matches the search criteria.  During this process it will also
>>> verify the TLS certificates if appropriate.
>>>
>>>
>>> Okay, it sounds like you have two identifiers: one for the service 
>>> index
>>> and one for the node within that service.
>>> Why don't you use two URIs: one for identifying the service index 
>>> (defines
>>> the protocols necessary to get there)
>>> and one for a single rr scheme that identifies the rr node ("/" 
>>> being the
>>> index itself)?
>>>
>>> Also, TLS implies TCP.  For most schemes, the bare name is TCP and 
>>> {name}s
>>> is TLS.  So, rr and rrs, or
>>> raconteur and raconteurs if you want to be more descriptive. Using 
>>> plain
>>> rr to indicate the WebRTC
>>> transport is very odd.
>>>
>>> *WebSocket Transport*
>>>
>>> The WebSocket transport is an extension to the TCP transport and in the
>>> software is directly integrated into the TCP transport.  It works by
>>> wrapping the TCP transport data into WebSocket binary frames. The frame
>>> boundaries are ignored as the stream is reassembled on the receiving 
>>> end.
>>>   The frames however shall be equal to or less than 4 KB of data per 
>>> frame.
>>>
>>>
>>> The transport also implements the HTTP handshake to start the WebSocket
>>> protocol using the subprotocol “robotraconteur”. The URI contains 
>>> the path
>>> to the WebSocket and query information, both of which are passed 
>>> unmodified
>>> to the server. The URI must contain a query parameter named 
>>> “service” to
>>> identify the name of the service to connect.
>>>
>>> All nodes that listen for TCP connections shall also be capable of
>>> detecting and accepting an HTTP WebSocket connection to the root 
>>> file path
>>> “/” on the same port that listens for standard Robot Raconteur 
>>> connections.
>>> This allows for standard web browsers to connect without additional
>>> plugins. (Note that HTTPS (wss) is not possible in this 
>>> configuration. See
>>> below.)
>>>
>>> TLS is somewhat complicated with WebSockets due to the handshake 
>>> behavior.
>>>    There are four flavors of WebSocket connections:
>>>
>>> ·         rr+ws – No encryption (HTTP)
>>> ·         rrs+ws – Encryption using the TLS Robot Raconteur 
>>> transport.  This
>>> does not encrypt the HTTP handshake.  For local network use 
>>> connecting to
>>> a device this should be sufficient as the handshake only contains the
>>> target nodeid/service information which is not considered secret 
>>> data. Just
>>> after the handshake the Robot Raconteur TLS layer is activated 
>>> protecting
>>> any secret data. (HTTP)
>>> ·         rr+wss – Encrypted HTTPS transport but no Robot Raconteur
>>> encryption.  Not recommended because the target node identity is not
>>> verified. (HTTPS)
>>> ·         rrs+wss – Encryption HTTPS transport and TLS Robot Raconteur
>>> transport.  This will encrypt the HTTP handshake and allow for identity
>>> verification of the node.  Note that this is only possible when the
>>> target node has an official HTTPS certificate which is not available 
>>> for
>>> IoT type devices.  In those cases rrs+ws should be used as it is 
>>> designed
>>> for such scenarios. rrs+wss should only be used when it is 
>>> determined to be
>>> truly necessary.
>>>
>>>
>>> This just describes several access mechanism which will (after 
>>> accessing)
>>> make use of rr identifiers.
>>> You don't need new schemes for this.
>>>
>>>
>>> *Local Transport*
>>>
>>> ·         rr+local
>>>
>>> The local transport uses UNIX sockets or Named Pipes to communicate
>>> between nodes on the same machine.  The nodeid and/or nodename are used
>>> to identify the target nodes.  The host is always “localhost”.  A
>>> username can be used to specify which user owns the desired node, ie
>>> “username@localhost”.  The port is never used and must be left out 
>>> of the
>>> URI. Access control is accomplished through file permissions and 
>>> standard
>>> username/credential access control. Untrusted software shall not be 
>>> allow
>>> local transport access. The path must be “/” or empty.
>>>
>>>
>>> Likewise, not an identifier. You don't need an identifier for every 
>>> local
>>> configuration option.
>>>
>>> *Hardware Transport*
>>>
>>> ·         rr+usb
>>> ·         rr+pci
>>>
>>> Hardware device drivers are implemented through a userspace daemon 
>>> service.
>>>    This service provides UNIX socket / Named Pipe connections that 
>>> allow
>>> nodes to access the devices.  Access control is accomplished through 
>>> file
>>> permissions.  Generally only admin or equivalent users are given 
>>> access.
>>> Untrusted software shall not be allow local transport access. The 
>>> path must
>>> be “/” or empty.
>>>
>>>
>>> Likewise, not an identifier.
>>>
>>> *Cloud Transport*
>>>
>>> ·         rr
>>> ·         rr+cloud
>>>
>>> The cloud transport is a transport based on WebRTC.  The signaling as
>>> accomplished through the Robot Raconteur server.  Nodes are 
>>> identified by
>>> the Robot Raconteur username and nodeid/nodname pair.  The hostname for
>>> each user is “username.cloud.robotraconteur.com”, where username is
>>> replaced with the registered username.  For instance, “
>>> johnw.cloud.robotraconteur.com” would be the hostname “johnw”. The port
>>> must not be included. Nodes connecting to the cloud service must all 
>>> have
>>> issued certificates tied to the uuid of the node (nodeid). This
>>> communication is always secured through DTLS at the WebRTC layer.  
>>> Security
>>> of the overall cloud is managed by the Robot Raconteur server. The
>>> hostnames for each user are only relevant within the signaling 
>>> server and
>>> do not have any general use DNS meaning. “rr” and “rr+cloud” are
>>> equivalent. The path must be “/” or empty.
>>>
>>>
>>> If this is consistent with WebRTC, then use webrtc's identifiers.
>>>
>>> In other words, what you are defining here is an identifier space 
>>> for rr
>>> nodes and then a
>>> bunch of proxy mechanisms for obtaining access to those identified 
>>> nodes.
>>> We don't do that
>>> by multiplying schemes!  We do it by sending two identifiers: one 
>>> for the
>>> proxy and one for
>>> the resource to access.  The proxy mechanisms already have defined
>>> identifier schemes.
>>>
>>> ....Roy
>>>
>>>
>>> _______________________________________________
>>> Uri-review mailing list
>>> Uri-review@ietf.org
>>> https://www.ietf.org/mailman/listinfo/uri-review
>>>
>>>
>>
>>
>>
>> _______________________________________________
>> Uri-review mailing list
>> Uri-review@ietf.org
>> https://www.ietf.org/mailman/listinfo/uri-review
>>


-- 
John Wason, Ph.D.
Wason Technology, LLC
PO Box 669
Tuxedo, NY 10987
(518) 279-6234
wason@wasontech.com