From: Stephens, A. <all...@wi...> - 2006-08-03 20:09:08
|
Hi Jeff: See comments below. > -----Original Message----- > From: Jeff Dike [mailto:jd...@ad...]=20 > Sent: Thursday, August 03, 2006 2:26 PM > To: Stephens, Allan > Cc: Paolo Giarrusso;=20 > use...@li...;=20 > use...@li... > Subject: Re: [uml-devel] [uml-user] Promiscuous mode interface bug? >=20 > On Thu, Aug 03, 2006 at 09:29:51AM -0700, Stephens, Allan wrote: > > These differences may make sense to people who understand how the=20 > > various transport mechanisms work, but it still leave me with a > > question: why, in the latter two cases, is UML allowing=20 > > non-promiscuous interfaces to receive traffic that wasn't sent to=20 > > them? I can understand that configuring uml_switch as a hub means=20 > > that packets may be forwarded to places they don't need to go, but=20 > > shouldn't these packets still be filtered out somewhere=20 > further down=20 > > the line? As I naive user, I'm not expecting a (simulated)=20 > interface=20 > > to receive traffic that wasn't addressed to it unless it has been=20 > > explicitly configured as promiscuous. >=20 > Either you or I have a very basic misunderstanding of how=20 > these things are supposed to work. That is entirely possible. > You seem to be thinking that when you set an interface=20 > promiscuous, it somehow reaches out to the switch and tells=20 > it to start sending it everything, and when it is set=20 > non-promiscuous, it tells the switch to only send stuff=20 > addressed to it. No, this isn't my thinking at all. (See next point.) > I seem to be thinking that the packets that actually reach=20 > the interface is not controlled by its promiscuous setting,=20 > and the setting controls whether the packets reach the=20 > network stack and are visible to software. I agree with this view completely. > Needless to say, I think my thinking is closer to the truth. =20 > There is no mechanism that I know of for an interface to=20 > communicate its promiscuous setting to a switch. Switches do=20 > remember the MAC associated with a port, but that is done by=20 > sniffing the packets going by. >=20 > Jeff Agreed. Where I think my confusion is arising is in the details of how the filtering controlled by the promiscuous setting is actually done. If a packet with=20 the "wrong" destination address arrives at an interface, who checks to see whether the interface has been configured as promiscuous and passes/discards it accordingly? I have naively assumed that this was handled in hardware on the NIC card in a real system, but is it really done by software? If so, where in the kernel is this done? Again, I would naively assume it was done by the Ethernet driver code that passes packets up to the network stack. What I seem to be observing in my UML testing is that *nobody* is doing this filtering, resulting in unwanted packets being handed to my protocol (which sits directly on top of the Ethernet driver). Is this truly the effect I would see if I had a bunch of PCs connected together using an Ethernet hub? Regards, Al |