总结整理
1. VLAN 划分种类
按照 VLAN 改变情况划分为静态和动态两大类。
1.1. 静态 VLAN
- 静态 VLAN 又被称为基于端口的 VLAN (Port Based VLAN);
- 静态 VLAN 不适合那些需要频繁改变拓补结构的网络。
1.2. 动态 VLAN(常见三种)
1.2.1. 基于 MAC 地址的 VLAN (MAC Based VLAN)
通过查询并记录端口所连计算机上网卡的 MAC 地址来决定端口的所属。
1.2.2. 基于子网的 VLAN (Subnet Based VLAN)
通过所连计算机的 IP 地址来决定端口所属 VLAN 的。
- 是一种在
OSI
的第三层设定访问链接的方法; - 与基于 MAC 地址的 VLAN 相比,能够更为简便地改变网络结构。
1.2.3. 基于用户的 VLAN (User Based VLAN)
根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个 VLAN。
- 用户识别信息,一般是计算机操作系统登录的用户,属于
OSI
第四层以上的信息。
1.2.4. 小结
- 决定端口所属 VLAN 时利用的信息在 OSI 中的层面越高,就越适于构建灵活多变的网络;
- 其中基于子网的 VLAN 和基于用户的 VLAN 有可能是网络设备厂商使用独有的协议实现的。
种类 | 说明 | |
---|---|---|
静态 VLAN (基于端口的 VLAN) | 将交换机的各端口固定指派给 VLAN | |
动态VLAN | 基于 MAC 地址的 VLAN | 根据各端口所连计算机的 MAC 地址设定 |
基于子网的 VLAN | 根据各端口所连计算机的 IP 地址设定 | |
基于用户的 VLAN | 根据端口所连计算机上登录用户设定 |
2. 交换机端口
- 以下端口
Access
、Trunk
和Hybrid
都是生产厂家对某种端口的称谓,并非IEEE802.1Q
协议标准定义。
2.1. Access Link(访问链接)
是指 “只属于一个 VLAN,且仅向该 VLAN 转发数据帧” 的端口,在大多数情况下访问链接所连的是客户机。
2.1.1. 报文收发规则
- Access 端口和客户端网卡不会发送带 VLAN 标记的报文。
- 发报文:
- 情况:向客户端发送信息,或向同 VLAN 的 Access 端口发送信息。
- 步骤:先将报文中的 VLAN 信息去掉,然后再直接发送。
- 收报文:
- 情况:从客户端接收信息,或从非 Access 端口或非客户端接收信息。
- 步骤:先判断该报文中是否有 VLAN 标记信息,根据下面两种情况分别进一步做处理。
- 如果没有 VLAN 标记,则打上该 Access 端口的 PVID 后继续转发;
- 如果有 VLAN 标记,一般默认直接丢弃(某些高端交换机在收帧的 VLAN 标记和端口 PVID 相等时转发,否则丢弃;或者不管是否相同均直接转发)。
2.2. Trunk Link(汇聚链接)
能够转发多个不同 VLAN 的通信的端口,跨越多台交换机的 VLAN 。
- 汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个 VLAN 的特殊信息。
- 只有当数据帧是一个广播帧、多播帧或是目标不明的帧时,才会被转发到所有属于标记的 VLAN 端口。
- 通过汇聚链路时附加的 VLAN 识别信息,有可能支持标准的
IEEE 802.1Q
协议,也可能是 Cisco 产品独有的ISL (Inter Switch Link)
协议。 - 由于汇聚链接中 VLAN 数据较多,在设定汇聚链接时,最好支持 100Mbps 以上的传输速度。
2.2.1. 报文收发规则
- 默认情况下 Trunk 端口配置的是 VLAN 1(默认 VLAN)
- 发报文:
- 步骤:将要发送报文的 VLAN 标记与 Trunk 端口的 PVID 进行比较。
- 如果与 PVID 相等,则从报文中去掉 VLAN 标记再发送;
- 如果与 PVID 不相等,则直接发送。
- 步骤:将要发送报文的 VLAN 标记与 Trunk 端口的 PVID 进行比较。
- 收报文:
- 步骤:判断是否有 VLAN 信息。
- 如果没有 VLAN 标记,则打上该 Trunk 端口的 PVID(视同该帧是来自 PVID 所对应的 VLAN 转发到 PVID 所对应的 VLAN 接口上);
- 如果有 VLAN 标记,则判断该 Trunk 端口是否允许该 VLAN 的报文进入:
- 如果允许,则直接转发;
- 否则,丢弃。
- 步骤:判断是否有 VLAN 信息。
2.3. Hybrid Link(混合链接)
该类型是华为和 H3C 交换机的一种端口模式。 交换机上既可连接用户主机又可连接其他交换机的端口,它既可连接接入链路又可连接汇聚链路。
2.3.1. 报文收发规则
- 发报文:
- 情况:从交换机内部发送信息。
- 步骤:先判断该报文中是否有 VLAN 标记信息。
- 如果没有 VLAN 标记,则从报文中去掉 VLAN 标记再发送;
- 如果有 VLAN 标记则直接发送。
- 收报文:
- 步骤:先判断该报文中是否有 VLAN 标记信息。
- 如果没有 VLAN 标记,则打上该端口的 PVID 后继续转发;
- 如果有 VLAN 标记,判断端口是否允许该 VLAN 帧进入:允许则转发,否则丢弃。
- 步骤:先判断该报文中是否有 VLAN 标记信息。
2.4. 端口状态(Tagged Port 和 Untagged Port)
- 端口状态 Tagged Por 和 Untagged Port 并非是物理端口状态,而是指物理端口拥有某 VID 的状态。
- Tagged 帧即表示报文有某 VLAN 标记,Untagged 帧则表示没有。
端口类型 | 帧类型 | Tagged 帧 | Untagged 帧 | ||
---|---|---|---|---|---|
帧方向 | IN | OUT | IN | OUT | |
Tagged 端口 | 保持不变 | 根据 PVID 进行标记 | |||
Untagged 端口 | 丢弃 | 若 VID=PVID 则去掉标记 否则丢弃 | 根据 PVID 进行标记 | 保持不变 |
3. 常见附加 VLAN 信息的方法
- IEEE802.1Q:被称作
标签型 VLAN (Tagging VLAN)
。- 附加的 VLAN 识别信息位于数据帧中 “发送源 MAC 地址” 与 “类别域 (Type Field)” 之间。
- 需从新计算校验值:附加后从新计算 CRC 校验值,同理去除时也需如此。
- ISL:被称为
封装型 VLAN (Encapsulated VLAN)
。- 只能用于 Cisco 网络设备之间的互联。
- 每个数据帧头部都会被附加 26 字节的 “ISL 包头 (ISL Header)” ,并且在帧尾带上通过对包括 ISL 包头在内的整个数据帧进行计算后得到的 4 字节 CRC 值。
- 无需从新计算校验值:附加后直接去除帧头和帧尾即可。
4. VLAN 间路由
4.1. 同一 VLAN 内的通信
- 收发信双方同属一个 VLAN 之内的通信,一切处理均在交换机内完成。
4.2. 不同VLAN间通信
4.2.1. 交换机接路由器
- 在路由器上定义对应各个 VLAN 的 “子接口 (Sub Interface)”。
- 步骤:
- 客户端在发送数据帧之前,需要先用 ARP 获取路由器的 MAC 地址;
- 得到路由器的 MAC 地址 R 后,发送往 C 去的数据帧(其中数据帧的目标 MAC 地址是路由器 MAC 地址);
- 交换机收到数据帧后检索 MAC 地址列表中与接收端口同属一个 VLAN 的表项(包括汇聚链接端口);
- 在送往汇聚链接端口前,附加上 VLAN 识别信息;
- 路由器收到数据帧后,确认其 VLAN 识别信息,并交由负责相关 VLAN 的子接口接收;
- 根据路由器内部的路由表,判断该向哪里中继;
- 更改数据帧的目标 MAC 地址为最终目的的 MAC 地址,并附加了属于目的 VLAN 的识别信息;
- 交换机收到数据帧后,根据 VLAN 标识信息从 MAC 地址列表中检索属于其标记 VLAN 的表项,并转发。
4.2.2. 三层交换机
- 本质上就是 “带有路由功能的(二层)交换机”。
- 步骤:发送方 → 交换机 / 交换模块 → 路由器 / 路由模块 → 交换机 / 交换模块 → 接收方
- 针对目标 IP 地址,计算机判断出通信对象不属于同一个网络,因此向默认网关发送数据;
- 交换模块通过检索 MAC 地址列表后,判断需要通过内部汇聚链接;
- 将数据帧附加属于发送 VLAN 的识别信息,并转发给路由模块;
- 路由模块在收到数据帧时,先由数据帧附加的 VLAN 识别信息判断 VLAN 接口进行路由处理;
- 在通过汇聚链路时,这次数据帧被附加上属于目的 VLAN 的识别信息;
- 交换模块收到后检索目的 VLAN 的 MAC 地址列表,确认转发的端口;
- 若是访问链接端口则转发前会先将 VLAN 识别信息除去。
注意:
- 加速 VLAN 间路由的手法多由各厂商独有的技术所实现,并且该功能的称谓也因厂商而异。例如,在 Cisco 的 Catalyst 系列交换机上,这种功能被称为 “多层交换 (Multi Layer Switching)”。
- 除了三层交换机的内部路由模块,外部路由器中的某些机型也支持类似的高速 VLAN 间路由机制。
4.3. 流
- 对于相同起始和终止 IP 地址的数据流,后继的数据不再需要路由器进行路由处理;通过省略反复进行的路由操作,可以进一步提高 VLAN 间路由的速度。
- 通过在交换机上缓存路由结果,实现了以缆线速度 (Wired Speed) 接收发送方传输来数据的数据、并且能够全速路由、转发给接收方。