[OpenAFS-devel] dcerpc.net - freedce

Luke Kenneth Casson Leighton lkcl@samba-tng.org
Tue, 14 Aug 2001 12:09:48 +0200


On Mon, Aug 13, 2001 at 11:36:13PM -0400, Jeffrey Hutzelman wrote:
> On Mon, 13 Aug 2001, Marcus Watts wrote:
> 
> > Andrew File System was originally developed at CMU in partnership with
> > IBM.  It was then spun off into a separate organization, transarc.
> > Around 1990, transarc was selling AFS 3.1.  This was (just like current
> > AFS 3 based releases includeing openafs) based on RX, which is actually
> > not entirely its own creation but heavily based on SUN RPC.  There
> > are traces of support for an older protocol ("r"?) in some parts
> > of AFS 3, which probably predate AFS 3.  I think I once saw some
> > documentation for some of the AFS 2 utilities which ran under RT/AOS 3.
> 
> About the only thing Rx has in common with sunrpc is XDR, which is pretty
> much identical in both protocols (enough so that kernel-rx does not
> include its own XDR, but instead depends on the one already present in the
> kernel for supporting NFS).
> 
> The older RPC protocol was indeed called 'R'.  There are a few ancient
> Andrew tools that still use R, but it's basically unauthenticated and not
> useful for much.
> 
> > DCE RPC uses ASN.1, which is definitely less efficient at storing data
 
dce/rpc most definitely does _not_ use ASN.1 - it uses NDR - network
data representation.  [you could, if you so chose, however, _add_
ASN.1 as a data representation (such is the nature of dce/rpc that
almost everything is negotiable) but i don't see the point in doing
so, it would be a lot of work and only of academic interest because
NDR is far superior]

please see http://www.rdg.opengroup.org/onlinepubs/9629399/toc.htm
the bit that you particularly need to see is 'Interface Definition
Language' (of particular interest to this group may be the 'pipe'
specifier).

NDR is feature-complete to the extent that most people have some
difficulty with it: _why_ would anyone want pipes [well, you
need pipes to be able to do massive data transfers. i.e. i know
that Rx had to be extended to do massive data transfers, and
the same happened when dce/rpc was being developed].

why would anyone want to have, for example, support for conformant
arrays ( struct { int array_len, [size_is(array_len)] struct *array }),
and non-conformant arrays?
( struct { int array_len, [size_is(array_len)] struct array[1] })?

why do you want IEE, VAX _and_ IBM floating point?

why do you want ASCII _and_ ECBDIC?

well, DCE/RPC was designed by committee, so what you do expect? :)
it means that for most people's purposes, DCE/RPC looks to be
Serious Overkill.  ... but it's there, and it works.  no extra
effort required.  i mean, it's even got a means to transfer
signals and threads, for pity's sake!


when DCE/DFS was being developed (yes, the differences
between DCE/DFS and AFS are that the RPC mechanisms are
differrent, and there's been a lot of improvements and
development in AFS that make it faster and fix a lot
of file security bugs), they needed to do large (> 2gb)
data transfers.  so they added 'pipes' to DCE/RPC.

now, i don't know the exact history, but my guess at it,
to carry on from where Marcus left off, is that Transarc
licensed AFS-with-a-replacement-RPC back-end to The Open
Group, and they renamed it to DCE/DFS.

mainly because they had to use CDS (Cell Directory Services)
instead of AFS's version of the same service locator.


now, the only tricky bit about my question [would anyone
like to port AFS back to DCE/RPC again ] is that freedce
is only the runtime library / environment.  it DOESN'T
include the CDS server, timeserver, etc. which is a further
3.25 million lines of code that's _only_ available in
DCE 1.22 (from The Open Group).

i _do_ know that The Open Group is trying to release DCE 1.22
under an LGPL license (it's with the lawyers), so at some
point in the future, it's likely that the DCE/DFS code - 
and everything else - will suddenly get plonked onto a
Server Near You.

if anyone would like to investigate the source code before
then, please see http://www.opengroup.org/dce and follow
the 'download' instructions.


anyway.  i'm not on this list, my question was kindly
forwarded to you by one of the moderators, so i didn't
see an answer yet, but i am glad to see that people
actually took this up at all.

all best,

luke