了解这个,需要首先要知道,网络的数据链路层传输的是数据帧。涉及到进行交换机数据传输的帧文就会在标准以太网帧基础上插入vlan信息,这个vlan信息共计4个字节,这个就是vlan tag头,这种带有vlan tag头的帧数据普通pc机无法正常识别使用,都需要通过交换机进行解析后才可以。
vlan tag头(4bytes)信息如下
1、2 个字节的协议标示符( TPID ),当前置 0X8100 的固定值,表明该帧带有 802.1Q 的标记信息。
2 、2 个字节的标记控制信息( TCI ),包含了三个域:
a、 priority 域,占 3bits ,表示报文的优先级,取值 0 到 7 , 7 为最高优先级, 0 为最低优先级,该域被 802.1Q 采用;
b、 规范格式指示符域( CFI ),占 1bits , 0 表示规范格式,应用于以太网, 1 表示非规范格式,应用于 Token Ring
c、VLAN ID 域,占 12bits ,用于标识 VLAN 的归属。
以太网端口在交换机的配置的网口链路类型分别为access, trunk, hybrid
access
access 类型的端口只能属于 1 个 VLAN ,一般用于连接计算机的端口;它的接收和发送数据过程细节如下
接收数据:
1、收到一个二层帧
2、判断是否有 VLAN 标签,没有转到第 3 步,有则转到第 4 步
3、打上端口的 PVID ,并进行交换转发
4、若 VLAN 标签和 PVID 一致,转发 VLAN 帧,否则直接丢弃
发送发送:
1、将报文的 VLAN 信息剥离,直接发送出去
trunkt
trunk 类型的端口可以允许多个 VLAN 通过,可以接收和发送多个 VLAN 的报文,一般用于交换机之间连接的端口;它的接收和发送数据过程细节如下。
接收数据:
1、收到一个二层帧
2、判断是否有 VLAN 标签,没有转到第 3 步,有则转到第 4 步
3、打上端口的 PVID ,并进行交换转发
4、判断该 trunk 端口是否允许该 VLAN 帧进入,允许则转发,否则直接丢弃
注意: trunk 口允许或不允许 VLAN 帧,是对进入的帧而言的,对出去的帧没有限制
发送数据:
1、比较端口的 PVID 和将要发送报文的 VLAN 信息,如果两者相等则剥离 VLAN 信息,再发送;如果不相等则直接发送
hybrid
Hybrid 类型的端口可以允许多个 VLAN 通过,可以接收的发送多个 VLAN 的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。它的接收和发送数据过程细节如下。
接收数据:
1、收到一个二层帧
2、判断是否有 VLAN 标签,没有转到第 3 步,有则转到第 4 步
3、打上端口的 PVID ,并进行交换转发
4、判断该 hybrid 端口是否允许该 VLAN 帧进入,允许则转发,否则直接丢弃。
可以看到, trunk 和 hybrid 口对接收到得数据帧的处理规则是一样的。Hybrid 端口和 Trunk 端口在接收数据时,处理方法是一样的,唯一的不同之处在于发送数据时, hybrid 端口可以允许多个 VLAN 的报文发送时不打标签,而 trunk 端口只允许缺省 VLAN 的报文发送时不打标签。
发送数据:
1、判断该 VLAN 在本端口的属性( disp interface 即可看到该端口对哪些 VLAN 是 untag ,哪些 VLAN 是 tag ),如果是 untag 则剥离 VLAN 信息,再发送;如果是 tag 则直接发送。
配置示例
如下展示配置多个类型交换机,link-type表示端口的链路类型
interface Vlanif100
ip address 192.168.100.254 255.255.255.0
interface GigabitEthernet0/0/3
port link-type hybrid # 端口链路类型为hybrid
port hybrid tagged vlan 100 # 放行tagged vlan 100
或者
interface GigabitEthernet0/0/3
port link-type trunk # 端口链路类型为trunk
port trunk allow-pass vlan 100 # 放行tagged vlan 100
interface Vlanif10
ip address 192.168.10.254 255.255.255.0
interface GigabitEthernet0/0/1
port link-type hybrid # 端口链路类型为hybrid
port hybrid pvid vlan 10 # 设置默认vlan 10
或者
interface GigabitEthernet0/0/1
port link-type access # 端口链路类型为access
port default vlan 10 # 设置默认vlan 10
openstack的部署过程实际要求可以见文档《neutron组网规划(flat、vlan类型)》介绍