一.介绍

一句话:VLAN :虚拟局域网,用来隔离网络中的广播域,使在同一vlan下的终端才能通信(二层)

1.1 无VLAN与有VLAN的情况

无VLAN的情况

交换机如何根据VLAN转发数据帧 交换机vlan转换_数据帧


图中,是一个由 5 台二层交换机(交换机 1 ~ 5 )连接了大量客户机构成的网络。假设这


时,计算机 A 需要与计算机 B 通信。在基于以太网的通信中,必须在数据帧中指定目标 MAC


A


B 地址才能正常通信,因此计算机 A 必须先广播 “ARP 请求( ARP Request )信息 ” ,来尝试获


取计算机 B 的 MAC 地址。 交换机 1 收到广播帧( ARP 请求)后,会将它转发给除接收端口外


的其他所有端口,也就是 Flooding 了。接着,交换机 2 收到广播帧后也会 Flooding 。交换机 3 、


4 、 5 也还会 Flooding 。最终 ARP 请求会被转发到同一网络中的所有客户机上。





有VLAN的情况




交换机如何根据VLAN转发数据帧 交换机vlan转换_网络_02



如果在交换机上生成红、蓝两个 VLAN ;同时设置端口 1 、 2 属于红色 VLAN 、端口


3 、 4 属于蓝色 VLAN 。再从 A 发出广播帧的话,交换机就只会把它转发给同属于一个 VLAN


的其他端口 —— 也就是同属于红色 VLAN 的端口 2 ,不会再转发给属于蓝色 VLAN 的端口。


同样, C 发送广播信息时,只会被转发给其他属于蓝色 VLAN 的端口,不会被转发给属于红


色 VLAN 的端口。




1.2 VLAN划分方法

1.2.1 静态VLAN


静态 VLAN 又被称为基于端口的 VLAN ( Port Based VLAN )。顾名思义,就是明确指定 各端口属于哪个 VLAN 的设定方法。



1.2.2 动态 VLAN


另一方面,动态 VLAN 则是根据每个端口所连的计算机,随时改变端口所属的 VLAN 。


这就可以避免上述的更改设定之类的操作。动态 VLAN 可以大致分为 3 类:


● 基于 MAC 地址的 VLAN ( MAC Based VLAN )


● 基于子网的 VLAN ( Subnet Based VLAN )


● 基于用户的 VLAN ( User Based VLAN )


二.数据包中的VLAN

2.1抓包数据

交换机如何根据VLAN转发数据帧 交换机vlan转换_交换机如何根据VLAN转发数据帧_03

总字节数:4byte

priority: 优先级

CFI: 标记位,华为交换机称之为颜色标记

ID: vlan id  

2.2数据包结构说明


基于 IEEE802.1Q 附加的 VLAN 信息,就像在传递物品时附加的标签。因此,它也被称


作 “ 标签型 VLAN ( Tagging VLAN ) ” 。


交换机如何根据VLAN转发数据帧 交换机vlan转换_优先级_04


1. TPID (Tag Protocol Identifier ,也就是 EtherType)


是 IEEE 定义的新的类型,表明这是一个加了 802.1Q 标签的帧。 TPID 包含了一个固定的值


0x8100 。


2. TCI (Tag Control Information)


包括用户优先级 (User Priority) 、规范格式指示器 (Canonical Format Indicator) 和 VLAN ID 。


① User Priority :该字段为 3-bit ,用于定义用户优先级,总共有 8 个 (2 的 3 次方 ) 优先级别。 IEEE


802.1P 为 3 比特的用户优先级位定义了操作。最高优先级为 7 ,应用于关键性网络流量,如


路由选择信息协议( RIP )和开放最短路径优先( OSPF )协议的路由表更新。优先级 6 和 5


主要用于延迟敏感( delay-sensitive )应用程序,如交互式视频和语音。优先级 4 到 1 主要用


于受控负载( controlled-load )应用程序,如流式多媒体( streaming multimedia )和关键


性业务流量( business-critical traffic ) - 例如, SAP 数据 - 以及 “loss eligible” 流量。


优先级 0 是缺省值,并在没有设置其它优先级值的情况下自动启用。


② CFI : CFI 值为 0 说明是规范格式, 1 为非规范格式。它被用在令牌环 / 源路由 FDDI 介质访问


方法中来指示封装帧中所带地址的比特次序信息。


③ VID :该字段为 12-bit , VLAN ID 是对 VLAN 的识别字段,在标准 802.1Q 中常被使用。


支持 4096(2 的 12 次方 ) VLAN 的识别。在 4096 可能的 VID 中, VID = 0 用于识别帧优先级。


4095(FFF) 作为预留值,所以 VLAN 配置的最大可能值为 4094 。 所以有效的 VLAN ID 围一般为 1-4094


注:网络中还存在多个vlan的情况,是不同厂商在不同业务场景对vlan的使用定义如华为的QINQ技术:什么是QinQ? 为什么需要QinQ? - 华为

三.交换机各类型端口对VLAN的处理

    1、Untagged Port和tagged Port不是讲述物理端口的状态,而是将是物理端口所拥有的某一个VID的状态,所以一个物理端口可以在某一个VID上是Untagged Port,在另一个VID上是tagged Port;
    2、一个物理端口只能拥有一个PVID,当一个物理端口拥有了一个PVID的时候,必定会拥有和PVID的TAG等同的VID,而且在这个VID上,这个物理端口必定是Untagged Port;
    3、PVID的作用只是在交换机从外部接受到可以接受Untagged数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用;
    4、拥有和TAG标记一致的VID的物理端口,不论是否在这个VID上是Untagged Port或者tagged Port,都可以接受来自交换机内部的标记了这个TAG标记的tagged数据帧;
    5、拥有和TAG标记一致的VID的物理端口,只有在这个VID上是tagged Port,才可以接受来自交换机外部的标记了这个TAG标记的tagged数据帧.

收报文: ==================================================================
Access端口:
1、收到一个报文;
2、判断是否有VLAN信息;如果没有则转到第3步,否则转到第4步;
3、打上端口的PVID,并进行交换转发;
4、直接丢弃(缺省);
Trunk端口:
1、收到一个报文;
2、判断是否有VLAN信息;如果没有则转到第3步,否则转到第4步;
3、打上端口的PVID,并进行交换转发;
4、判断该trunk端口是否允许该VLAN的数据进入;如果可以则转发,否则丢弃;
Hybrid端口:
1、收到一个报文;
2、判断是否有VLAN信息;如果没有则转到第3步,否则转到第4步;
3、打上端口的PVID,并进行交换转发;
4、判断该Hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃.

发报文: ==================================================================
Access端口:
1、将报文的VLAN信息剥离,直接发送出去;
Trunk端口:
1、比较端口的PVID和将要发送报文的VLAN信息;
2、如果两者相等则转到第3步,否则转到第4步;
3、剥离VLAN信息,再发送;
4、直接发送;
Hybrid端口:
1:判断该VLAN在本端口的属性(display interface即可看到该端口对哪些VLAN是untag,哪些VLAN是tag。)
2、如果是untag则转到第3步,如果是tag则转到第4步;
3、剥离VLAN信息,再发送;
4、直接发送;