[OpenAFS-devel] dcerpc.net - freedce

Luke Kenneth Casson Leighton lkcl@samba-tng.org
Wed, 15 Aug 2001 00:56:37 +0200


On Tue, Aug 14, 2001 at 12:03:52PM -0400, Ted Anderson wrote:
> On Mon, 13 Aug 2001 21:31:14 -0400 Marcus Watts <mdw@umich.edu> wrote:
> > DCE RPC uses ASN.1, which is definitely less efficient at storing data
> 
> I don't think this is true.  

trust me: it is.  i had to implement NDR, in samba.  hand-coded,
took 3 years.

and when i got to about... 70,000 lines of code, i got bored
and decided 'this is silly' and started looking for a compiler.

unfortunately, there wasn't one, at the time, that was any
good.  then freedce came along, started to mature, and it's
now in a useable state.

which is why i approached you guys to see if anyone's
interested in adding dce/rpc, just like Transarc did.

see, there _is_ a reason for this.

... see, for a long time, like about... three to four
years, now, i've had this dream about having an alternative
network file system for both nt and unix that _isn't_
SMB, and isn't NFS.

now, the crazy thing is that AFS-DCE/RPC is about the
closest simplest option, aside from writing a completely
new file server system, from scratch.

ms already has DCE/RPC, so, using MIDL and NT's extremely
good DCE/RPC support, porting AFS-DCE/RPC to NT (instead of
porting AFS with RX to NT) should be a heck of a lot easier.

[..now someone's going to tell me it's already been done :)]

... am i way off course here? :)


> DCE/RPC uses Kerberos 5 for security, and
> the K5 ticket format uses ASN.1.  

yes, that's right.  that, however, is just one plug-in
security component.

kerberos is capable of being used 'encapsulated' in
other transports (rfc 1510?) which is what has been done.

so, just one of the (5 known) dce/rpc-negotiable security
components is dce/rpc, and, well, kerberos as you say is
ASN/1, so there has to be a small amount of kerberos-aware
logic in the dce/rpc, to decode the PAC (privileged
authentication certificate?  it contains user info, basically.
am i right?)

i'm just in the process of adding NTLMSSP to freedce,
so it will 'have' urr... well, ms sort-of chose their
own NDR-not-quite-compatible format for the NTLMSSP
marshalling/unmarshalling, daft buggers.

but for the actual function-call parameters / structure
transfers?  no, the default data representation is
definitely NDR, and noone's ever bothered to add a
second data representation syntax.


> However, the RPC marshalling code uses
> something similar to XDR.  

[it's named NDR - network data representation]

similar to? ... i've never examined XDR on-wire, so i can
only suspect that it is.  i do know that XDR is nowhere
as feature-rich as NDR, though.

> One of the differences from XDR is that
> doesn't use network byte order, but, I think, sender byte order.
 
sender byte order.  yes.  'receiver makes right' is the
term: they had to use RMR because 'sender makes right' is
patented [*duur*!  they patented the wrong one! SMR requires
a round-trip negotiation, whereas RMR you can just start
immediately :)]

> Otherwise, the clarification of AFS vs. DFS RPC history is correct.

[cool.  always like to get my stories right :)]

luke