Hello Ben,
On Sun, Oct 08, 2000 at 02:10:24PM -0700, Ben Greear wrote:
>
> I'm having some fun trying to figure out how to make MultiCast work with
> VLANs.
>
> First, the MC list on the VLAN will not necessarily be equal to that of
> the real Ethernet device, because there could be several VLAN devices,
> each with a non-overlapping subset of MC addresses, on a single Ethernet
> device.
Right.
>
> Also, using VLANs does not mean that you cannot use the real Ethernet
> device at the same time, so it becomes almost impossible to know when
> to delete an MC address based on what is told to the VLAN device.
> (Maybe it was added on the real ethernet device, as well as the VLAN
> device, so removing it from the VLAN device SHOULD NOT remove it from
> the ethernet device...)
Here I don't agree with you completely. It is possible to know when to delete
or add MC address
from/to ethernet device.
Here how we do it in our implementation:
set_multicast_list is called whenever MC address is added or deleted from
device's mc_list.
I store previous mc_list in vlan private structure. When set_multicast_list is
called I check for
addresses that are not on saved mc_list and add them to the ethernet device.
After that I check for
addresses that are on the saved mc_list but not on vlan mc_list and delete them
from the device.
Than I save new device's mc_list in vlan private structure.
Unfortunately current multicast address management API isn't convenient for
use with virtual devices.
Perhaps now is a good time to change it. I personally want to see two
functions:
dev->add_multicast_address(), dev->del_multicast_address(). This way it will be
much easier for virtual
devices to manage underlying devices' MC list.
--
Gleb.
|