一. VLAN 数据报文格式
·Type:长度为2 bytes,表示帧类型,802.1Q tag帧中Type字段取固定值0x8100,如果不支持802.1Q的设备收到802.1Q帧,则将其丢弃。
·PRI:priority字段,长度为3 bit,表示 以太网帧的优先级,取值范围是0~7,数值越大,优先级越高。当交换机/路由器发生传输拥塞时,优先发送优先级高的数据帧。
·CFI:Canonical Format Indicator,长度为1bit,表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。该字段用于区分以太网帧、FDDI帧和令牌环网帧,在以太网帧中,CFI取值为0
·VID:VLAN ID,长度为12 bit,取值范围是0~4095,其中0和4095是保留值,不能给用户使用。
二. Vlan 内核源码分析
VLAN网络接口发出的网络报文将由vlan_dev_hard_start_xmit函数处理
1) 所有经过桥接/路由转发经由例:eth1.101 VLAN网络接口发出的网络报文将由vlan_dev_hard_start_xmit函数处理
2)通过例:eth1.101 VLAN网络接口获取VLAN配置信息,涉及VLAN配置VLANID、VLAN优先级
3)检查网络报文是否符合添加VLAN头部信息,符合则在skb中更新VLAN头部信息,由__vlan_hwaccel_put_tag根据vlan_tci更新skb VLAN信息
原文:https://www.cnblogs.com/mysky007/p/11223046.html