Olaf made some comments on my proposal and wanted to know a bit more about
my actual implementation in the Hurd itself.  I've done added a bit more to
the proposal to explain what I feel is a good implementation.  Basically, I
was thinking the network stack could be divided into different translators
per protocol and give the client access to different layers based on his
needs.
A network interface that registers an IP address would be listed with the
others interfaces with each having a respective hierarchy of transport
protocols underneath.

For example,

/ip/eth0/tcp/
/ip/eth0/udp/
/ip/eth1/tcp/
/ip/eth1/udp/
/ip/lo/tcp/
/ip/lo/udp/
/ip/tcp/
/ip/udp/

In this example, the client could choose from the first six options to get
the interface of its choice.  The last two could would let the network stack
decide which network interface provided the connection.  In this way the
client could request a link for a TCP connection, for example, for eth0
using /ip/eth0/tcp/ or might not care and use /ip/tcp/ and let the server
decide using any heuristic it wants (round-robin, etc.)

In this way, it would be very versatile for providing different routing
schemes and filtering options to the client.

Thanks,
Josh

Reply via email to