[Bridge] vlan and bond integration in bridge

Simon Barber simon at superduper.net
Mon Jan 12 00:13:42 PST 2009


I did release a patch to do most of this a while ago. It was for the  
2.4 kernel series, but could be updated for 2.6 without too much  
trouble I'm sure. Search the list archives about a couple of years ago.

Simon

Sent from my iPhone

On Jan 12, 2009, at 4:41 AM, "Lv Zheng" <lv.zheng at soliton.com.cn> wrote:

>> I was talking about regular data packets. Usually, when refering to
>> "port based" VLAN, we mean that the host (or the hosts) connected to
>> that port has no knowledge whatsoever of what a VLAN is.
>>
>> If (and only if) this is what you want, then br0 should be directly
>> connected to the physical port (bond or eth), and not on top of a  
>> vlan
>> layer which will filter out untagged incoming packets, and tag  
>> outgoing
>> packets.
>
> Greetings.
>
> 802.1Q defines that each bridge port
>
> shall support following parameters:
> 1. acceptable frame types, one of the following:
>  A. admit only VLAN tagged frames
>  B. admit only untagged and priority-tagged frames
>  C. admit all frames (default)
> 2. a PVID for port based VLAN classification
> may support following parameters:
> 3. a VID set for port and protocol based classification
>
> For port based VLAN, a netdevice might still be
> VLAN-aware and at least 1 & 2 should be configurable
> for the netdevice (known as EISS support).
>
> I noticed following differences are exist between
> 802.1Q compatible switch chip's MAC port devices
> and a normal NIC devices:
>
> Switch port do support 802.1Q parameters will
> 1. drop untagged frames if it is configured to admit
>  only VLAN tagged frames and drop frames not
>  admitted
> 2. drop any tagged frames whose tag is not in the
>  VID set if it is configured to admit only VLAN
>  tagged frames and drop frames not admitted
> 3. handle any untagged frames as PVID tagged frames
>  if it is configured to admit untagged and
>  priority-tagged frames and handle such frames as
>  if they are coming from the default vlan
> 4. handle any tagged frames whose tag is not in the
>  VID set as PVID tagged frames if it is configured
>  to admit untagged and priority-tagged frames and
>  handle such frames as if they are coming from the
>  default vlan
>
> While Linux does not support such features.
>
> Should following attributes be added to netdevice
> to support port based VLAN?
> 1. pvid
> 2. admit_frame_types
>  VLAN ioctl command may be added for all
>  netdevice (like ADD_VLAN_CMD) to
>  manipulate above 2 vlan specific parameters:
>  SET_PVID_CMD
>  SET_FRAME_TYPES_CMD
>  SET_FRAME_ACTIONS_CMD
>  Addtional hooks might also be added to
>  netdevice:
>  vlan_set_pvid
>  vlan_set_admit_frames (types & actions)
>  if frames is not admitted, actions might be configured
>  to allow:
>  2.1 DROP: drop the frame
>  2.2 DEF_VLAN: handle the frame as if it is pvid tagged
> 3. vlan_nr_groups:
>  set by NIC driver, its default value might be a Kconfig
>  option such as CONFIG_VLAN_8021Q_GROUPS
> 4. vlan_gid_map
>  GID enabling bits, might be BITMAP(vlan_nr_groups)
> 5. vlan_groups
>  VID <-> GID mappings, might be u16[vlan_nr_groups]
>  register_vlan_device / unregister_vlan_device
>  might maintain this map and gid array
>
> If hardware do support 802.1Q parameters, it might
> report vlan_nr_groups on registration.
> Hardware vlan_gid_map and vlan_groups might be
> synchronized by supporting
> vlan_rx_add_vid / vlan_rx_kill_vid.
> Hardware PVID and admit_frame_types might be
> synchronized by supporting
> vlan_set_pvid / vlan_set_admit_frames.
>
> If PVID in netdevice was implemented, there might be
> tow options we could choose:
> 1. ensure there is always a ethx.pvid device exist
>  might be suitable for tag based switch applications
> 2. ensure there is always not a ethx.pvid device exist
>  might be suitable for port based switch applications
>
> vlan_skb_recv might be modified to support EISS features
> because this function will handle all VLAN-tagged frames
>
> netif_recv_skb might be modified to support EISS features
> because this function will handle all VLAN-untagged frames
>
> dev_hard_start_xmit might be modified to support EISS
> feauturs to do tagging on outgoing packets before hard_xmit
> if pvid is set and no ethx.pvid device exists.
>
> If I were wrong, pls let me know. Thanks in advance.
>
> Best regards/Lv Zheng
> _______________________________________________
> Bridge mailing list
> Bridge at lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/bridge


More information about the Bridge mailing list