Coda File System

Re: yer port numbers suck

From: Jim Doyle <jrd_at_bu.edu>
Date: Thu, 16 Apr 1998 18:07:53 -0400 (EDT)
> 13 doesn't sound like too many to me, if you plan to make good use of
> them.  Ports are there to be used.  You can always give them back
> later.  I hope Coda will be adopted as a backbone of the net.  Would
> 13 ports be too many to register for NFS?

Hmmm. 13 sounds a bit much. I'm a big fan of dynamic binding.  DCE RPC
solves this problem in a nice way.

The only port you need to know to get access to any DCE server is 
Port 135 - the location of the endpoint mapper. DCE RPC uses a UUID
(Unique Identifier 128-bit integer) to distinguish each interface.
The endpoint mapper on each DCE host is responsible for looking up the
interface location by UUID and returning the TCP/UDP port numbers that
correspond to the particular location where an instance of the service is
located.

Would it be possible to put an Interface UUID and Instance UUID into 
the RPC2 protocol specification ?? The UUID code is in the public-domain
and is actually included on Redhat Linux. It's also part of NT/95 - and
is used to distinguish interfaces in DCOM.

Just an idea.

Example:

Here is a fragment of "rpcgen" equivalent of the DCE/DFS File Server.

--------------------------------------------------------------------------
[uuid(4d37f2dd-ed93-0000-02c0-37cf1e000000), version(4.0) ]
 
interface AFS4Int
{
  ....
     error_status_t AFS_LookupRoot(
        [in]    handle_t        h,
        [in]    afsFid          *InFidp,
        [in]    afsHyper        *minVVp,
        [in]    unsigned32   Flags,
        [out]   afsFid          *OutFidp,
        [out]   afsFetchStatus  *OutFidStatusp,
        [out]   afsToken        *OutTokenp,
        [out]   afsVolSync      *Syncp
       );
 
      error_status_t AFS_FetchData(
        [in]    handle_t        h,
        [in]    afsFid          *Fidp,
        [in]    afsHyper        *minVVp,
        [in]    afsHyper        *Position,
        [in]    signed32                Length,
        [in]    unsigned32      Flags,
        [out]   afsFetchStatus  *OutStatusp, 
        [out]   afsToken        *OutTokenp,
        [out]   afsVolSync      *Syncp,
        [out]   pipe_t          *fetchStream
        );
....

}

Knowing the UUID of this RPC interface, I can go find what ports
to contact this service on a particular machine. Here, as an example,
shows the TCP and UDP endpoints for the this interface on a machine here:

{{interface {4d37f2dd-ed93-0000-02c0-37cf1e000000 4.0}}
 {binding {ncadg_ip_udp 128.197.152.14 8052}}
 {annotation {DFS file exporter}}}

{{interface {4d37f2dd-ed93-0000-02c0-37cf1e000000 4.0}}
 {binding {ncadg_ip_udp 128.197.152.14 8052}}
 {annotation {DFS file exporter}}}

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Jim Doyle                         Boston University   Information Technology
Systems Analyst/Programmer        email: jrd_at_bu.edu   Distributed Systems
						      tel. (617)-353-8248
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++--+-+-+-+-+-+-
Received on 1998-04-16 18:11:25