Subject: Euro File Transfer Protocol
To: None <tech-net@NetBSD.ORG>
From: Martin Husemann <martin@rumolt.teuto.de>
List: tech-net
Date: 05/05/2000 10:40:31
Could you please sanity check or fix my view of the world on the following
topic? I'm totaly unfamiliar with the details of X25 and maybe I'm missing
something realy obvious. I can't reach www.etsi.org since a few days, so I
don't got all relevant standards yet. This may be another source for
misinformation.

I'll have to implement the infamous "Euro File Transfer Protocol", described
in some ETS norms, implemented as an add on by many ISDN card vendors and
used by some people to directly transfer files point to point via ISDN.

There is an open source implementation as part of the isdn4linux utilities.

What they do looks (from a first glance) very much like how our in-kernel
ppp interfaces and pppd work. The protocol seems to use X25 over an ISDN
B channel (caveat: most time X25 is mentioned in ISDN context it's the slow
variant over the D channel) and some command/login sequences outside of
that (or a special virtual connection, not sure yet).

The Linux guys do the X25 in kernel, just like our ppp interface attach to a
tty device and pass IP up in kernel. *BUT* in this case there is nothing to
pass up in kernel. There are no network packets coming out of the X25, but
real "user data". They seem to create one socket per virtual circuit
and then use that directly in userland.

I agree that this is convenient to program from the userland point of view,
but I'm not sure the X25 stuff needs to be inside the kernel. A userland
implementation would not suffer any performance penalty, IMHO.

I'm realy unfamiliar with our kernel networking internals outside of IPv4
(I've only read [and understood] the Stevens "The Implementation" book), so
maybe we already have stuff there that would allow to do something similar.
If so, please give me a hint.

If we don't have such a thing in kernel yet, would you put it into the kernel?
I certainly wouldn't reuse it anywhere else, so for me implementing it as 
a library or just plain inside that application would do (and probably will
be easier to debug).


Opinions?

Martin