VLAN 学习

一. VLAN 数据报文格式

IEEE 802.1Q标准对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag。

VLAN帧最小帧长为64字节。

图1 VLAN帧格式
VLAN 学习_第1张图片
 
 
·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是保留值,不能给用户使用。
 
字段 长度 含义
Destination address 6字节 目的MAC地址。
Source address 6字节 源MAC地址。
Type 2字节 长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
PRI 3比特 Priority,长度为3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。用于当阻塞时,优先发送优先级高的数据包。

如果设置用户优先级,但是没有VLANID,则VLANID必须设置为0x000。

CFI 1比特 CFI (Canonical Format Indicator),长度为1比特,表示MAC地址是否是经典格式。CFI为0说明是标准格式,CFI为1表示为非标准格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。
VID 12比特 LAN ID,长度为12比特,表示该帧所属的VLAN。在VRP中,可配置的VLAN ID取值范围为1~4094。0和4095协议中规定为保留的VLAN ID。

三种类型:

  • Untagged帧:VID 不计
  • Priority-tagged帧:VID为 0x000
  • VLAN-tagged帧:VID范围0~4095

三个特殊的VID:

  • 0x000:设置优先级但无VID
  • 0x001:缺省VID
  • 0xFFF:预留VID
Length/Type 2字节 指后续数据的字节长度,但不包括CRC检验码。
Data 42~1500字节 负载(可能包含填充位)。
CRC 4字节 用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。
 
 VLAN帧 抓包:
VLAN 学习_第2张图片

 

二.  Vlan 内核源码分析

VLAN网络接口发出的网络报文将由vlan_dev_hard_start_xmit函数处理

VLAN 学习_第3张图片

 

 

VLAN 学习_第4张图片

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信息

你可能感兴趣的:(VLAN 学习)