[BXXPwg] Updated strawman for BEEP protocol URIs

Bob Wyman bobwyman@firstrain.com
Tue, 19 Jun 2001 11:17:39 -0400


I thought it might be useful to provide an example of how another system
(Elvin) has addressed the issues being discussed here. Elvin produces
URL's that follow the pattern:
    elvin:/protocol/endpoint-specification
An example Elvin URL might look like:
    elvin:/tcp,ssl,xdr/machine.domain.com:1234;property=value
The "protocol" element distinguishs between transport, security and
marshalling bindings.

Note: I'm providing this for information. I don't explicitly endorse
what they are doing...

The following more detailed discussion of the Elvin URL scheme is taken
from: 
    http://elvin.dstc.edu.au/doc/guides/elvin-admin.html#SEC8

=============
The Elvin router (@command{elvind}) accepts connections from client
programs using one or more offered protocol stacks. A protocol stack is
constructed from the available network transport, security and data
marshalling modules, and exported by the @command{elvind} process. 

Elvin clients identify the server and protocol with which they connect
using a uniform resource locator (URL). The URLs contain the information
needs by the client libraries to contact the @command{elvind} process. 

An example of such an URL follows: 

   elvin:/tcp,none,xdr/server.example.com:2917

Breaking that example URL into its components, we have 

   elvin:/protocol/endpoint-specification

The elvin is the scheme name, which distinguishes Elvin URLs from those
of other schemes, like http, for example. 

Next is the protocol, which describes the protocol stack to be used. In
the example, we are using a TCP transport, no security, and an XDR
(External Data Representation) marshalling layer. The protocol field may
be empty which implies the default elvin protocol of tcp,none,xdr. 

Next is the endpoint specification, which provides protocol-level
connection information. This field is specific to the protocol stack. In
this example, the server.example.com identifies a particular host
machine, and the 2917 specifies a TCP port number. 

When used in the server configuration file, the special host field
0.0.0.0 can be used in an endpoint specification to mean all interfaces
on the machine. 

Note that this is the standard Elvin protocol and uses Elvin's IANA
allocated port for Elvin client to server communication. 

An example using a different protocol is: 

   elvin:/unix,none,xdr/server.example.com/tmp/elvin

Here the protocol used is unix, for Unix domain sockets which are useful
for clients connected on the same machine. The endpoint specification
specifies the machine and the path of the Unix domain socket,
/tmp/elvin.