From: Harald Welte <laforge@gn...> - 2001-06-05 18:30:52
After working with the uml networking stuff for some time now, I have
to add the following comments to the uml_router, especially to the
hub/switch behaviour question.
The current 'switch' - like implementation has the obvious disadvantages,
that you cannot sniff packets, and the promiscuous mode doesn't really
change any behaviour.
The obvious way to implement a hub-like daemon would be to just copy all
packets everywhere all the time. This is horrible for performance and
scalability. It's basically like operating a network board in promiscuous
mode all the time.
So what we really want to have, is exposing the promiscuous mode flag
to the daemon. This means, that the 'filtering' part, usually done by the
ethernet board, is transferred into the daemon.
When operating in 'normal' mode, the daemon would just copy all packets
for local mac adress, multicast and broadcast address to the uml, when
in promiscuous, the daemon copies every packet to the uml.
This way we would have a clean solution, scalable, and as performant as
Unfortunately I think I don't get around implementing that, as there is
always a lot of other work to do.... just think of this as some implementation
proposal for somebody who wants to improve the current daemon-based uml
Live long and prosper
- Harald Welte / laforge@... http://www.gnumonks.org/
GCS/E/IT d- s-: a-- C+++ UL++++$ P+++ L++++$ E--- W- N++ o? K- w--- O- M-
V-- PS+ PE-- Y+ PGP++ t++ 5-- !X !R tv-- b+++ DI? !D G+ e* h+ r% y+(*)
From: Henrik Nordstrom <hno@ma...> - 2001-06-07 15:20:10
Harald Welte wrote:
> The obvious way to implement a hub-like daemon would be to just copy all
> packets everywhere all the time. This is horrible for performance and
> scalability. It's basically like operating a network board in promiscuous
> mode all the time.
> So what we really want to have, is exposing the promiscuous mode flag
> to the daemon. This means, that the 'filtering' part, usually done by the
> ethernet board, is transferred into the daemon.
I am more into adding standard bridging to the daemon, with optional control
(from the daemon) if a host should receive all frames or only the ones addressed
to him or other unknown stations.
A bridge is little more than a table of all MAC addresses seen on the network,
and proper separation of unicast and multicast frames (multicast including
broadcast are sent to all stations). Quite easy to implement and does not require
But sure, implementing MAC fully within the daemon is also a viable path, and
requires promiscous signalling between UML and the deamon.