Date: Mon, 10 Mar 2003 16:19:33 +0000 From: Mark Murray <mark@grondar.org> To: Terry Lambert <tlambert2@mindspring.com> Cc: freebsd-chat@FreeBSD.ORG Subject: Re: A question about kernel modules Message-ID: <200303101619.h2AGJXIg027470@grimreaper.grondar.org> In-Reply-To: Your message of "Mon, 10 Mar 2003 07:33:27 PST." <3E6CB047.5D517419@mindspring.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Terry Lambert writes:
> > That is not the way you would do it. Each Ethernet module would
> > require IP, which in turn would co-require TCP and co-require UDP
> > etc. If you tried to load IP with no ethernet driver, you'd get
> > the loopback device, and TCP/UDP etc.
>
> You've sort of got that backward, I think. I can have all sorts
> of protocols that *aren't* TCP that run on top of IP, and I can
> have all sorts of protocols that aren't IP that run over an
> ethernet interface.
Still, I made the point that some dependancies run "backwards".
> The ethernet interface might just be a promiscuous mode interface,
> with a BPF sitting on top of it, and nothing else (for example),
> or that Novell answer to the lack of a sliding window in SPX,
> TCP/IPX, might be an option, too.
So look at it as a "Provides" vs "needs" thing. Loading an ethernet
card will premptively get you all the modules needed to abstract the
general class of network interfaces.
> The point is that it's all about producer/consumer relationships,
> and consumers need producers, but not the other way around.
Yes, but the production direction meets somewhere in the middle.
Example (where 'A->B' implies 'B needs what A produces'):
NICa -> ethernet.card.driver -> network.abstraction <- IP <- TCP
^ ^ ^
NICb -> ethernet.card.driver ---+ | +----UDP
|
loopback.device ----------+
and so on. This is at the module dependancy level, so DONT look at this
as a sockets programmer and find layering faults at the ISO layer model
level, it is NOT an ISO network stack diagram.
It means that the network.abstaction is a kind of nexus on which
the loadable modules can attach while creating a complete networking
subsystem in the kernel.
> > Other tweaks would need to be done if you need IPX instead of IP.
>
> Yes. The direct calls to ip_output() would need to be indirected
> through the PCB, so it could be properly stacked. That's just a
> minimal thing, though.
It is not as simple as a stack, for module dependancies. But yes,
it is not hard to provide the dependancy hooks.
> I can demonstrate this one. The real problem with IPSEC in the
> TCP/IPv4 case is that it was poorly retrofit from the KAME code
> into the IPv4. This caused a number of problems, one of which
> was your total number of connections supportable shrunk *a lot*
> when you enabled IPSEC, even if none of your connections were
> using it (we had done this for VPN support).
Assertion, not demonstration.
> > Hmm. Maybe its time for a export of certain compile-time options.
>
> You mean as sysctl's? Or you mean in an exported options file?
Anything that works.
M
--
Mark Murray
iumop ap!sdn w,I idlaH
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303101619.h2AGJXIg027470>
