什么是vlan?

Virtual Local Area Network,虚拟局域网 定义是在物理交换机上逻辑隔离的虚拟局域网

vlan的本质是 给数据帧打标签(Tag) 交换机转发以太网帧时,在帧头插入 4 字节 VLAN 标签,标签里携带VLAN ID(1–4094),然后在这个广播域里泛洪。

为什么要有vlan技术?

隔离广播

没有 VLAN 时,全网一个广播域:

电脑开机 DHCP、ARP 查询、病毒广播报文会传遍所有设备。终端越多,广播流量越大,严重占用带宽、卡顿甚至瘫痪网络(广播风暴)。

VLAN 切割广播域,广播只在组内流转,大幅减少无效流量,提升网络稳定性。

安全隔离

不同业务 / 部门天然需要隔离:

  • 财务部服务器不能被市场部电脑随意访问;
  • 办公网不能直接访问服务器区、监控网; 不同 VLAN 二层完全不通,天然形成安全边界,不配置三层路由就无法互相访问,减少攻击、数据泄露风险。

简化网络规划,节约硬件成本

  • 无需为每个部门单独采购交换机、单独布线;
  • 同一台交换机承载多套业务网络,降低设备、布线、机柜成本;
  • 人员工位变动不用重新改网线,交换机上修改 VLAN 配置即可切换网段。

通过 VLAN 标签分割二层广播域

VLAN转发过程

阶段 1:PC1 发送报文到 SW1 Access 口

  1. PC1 发出无 Tag数据帧;
  2. 进入 SW1 Access VLAN10 端口,交换机给帧添加 VLAN 10 Tag
  3. SW1 学习源 MAC(PC1-MAC):MAC 表记录 PC1-MAC + 入端口 + VLAN10;
  4. 查找 MAC 地址表,发现目的 MAC(PC3-MAC)不在本交换机端口,需要从 Trunk 口转发。

阶段 2:跨交换机传输

Trunk 口规则:VLAN10 不是 Native VLAN,保留 Tag 10 发送出去; 报文带着 802.1Q 标签在交换机之间传输。

阶段 3:SW2 Trunk 口接收带 Tag 帧

  1. SW2 Trunk 收到带 VLAN10 Tag 的帧;
  2. 校验 Trunk 允许 VLAN10 通行,保留标签;
  3. 学习源 MAC(PC1-MAC),存入 VLAN10 对应的 MAC 地址表;
  4. 查询 MAC 表:目的 PC3-MAC 在本交换机 Access VLAN10 端口。

阶段 4:剥离 Tag

Access 口连接电脑,终端不识别 VLAN 标签: 交换机出站前剥离 VLAN10 Tag,发送纯无标签以太网帧给 PC3; PC3 正常接收数据。

access与trunk接口

区别

端口类型接收报文处理 - 无 Tag 报文接收报文处理 - 带 Tag 报文发送报文处理
Access 端口打上端口缺省 VLAN (PVID) 的标签,并接收。若该 Tag 的 VLAN ID 等于 PVID,则接收(通常会先剥除标签再进入交换);若不等于 PVID,则直接丢弃。剥离所有 VLAN 标签,以普通以太网帧(Untagged)形式发送。
Trunk 端口打上端口缺省 VLAN (PVID) 的标签,并接收。(前提是 PVID 在允许列表中)。该 PVID 对应的 VLAN 通常就是 Native VLAN。检查该 Tag 的 VLAN ID 是否在端口的允许通过列表中:

・在列表中:保留原标签接收。

・不在列表中:丢弃。
检查待发送报文的 VLAN ID:

・若 VLAN ID 等于 PVID (Native VLAN):剥离标签,发送 Untagged 帧。(前提是 PVID 在允许列表中)

・若 VLAN ID 在允许列表中且不等于 PVID:保留标签,发送 Tagged 帧。

・若不在允许列表中:不发送。
Hybrid 端口打上端口缺省 VLAN (PVID) 的标签,并接收(前提是 PVID 在允许列表中)。检查该 Tag 的 VLAN ID 是否在端口的允许通过列表中:

・在列表中:保留原标签接收。

・不在列表中:丢弃。
根据端口对该 VLAN 的具体配置决定:

・配置为 Untagged:剥离标签,发送 Untagged 帧。

・配置为 Tagged:保留标签,发送 Tagged 帧。

・不在允许列表中的 VLAN:不发送。

native vlan

定义:Trunk 链路上不带标签跑的流量归属的 VLAN,就是 Native VLAN。在trunk里,native vlan就是PVID。

为什么需要native vlan? 交换机之间走 Trunk,正常业务流量都带标签,交换机靠标签区分 VLAN。 但有一种流量是不带标签的: 比如一台设备发了无标签广播、或者 VLAN1 的终端跨交换机通信。 Trunk 口收到一个光秃秃、没有标签的帧,交换机根本不知道它属于哪个 VLAN,没法转发。

于是规定: 所有无标签到达 Trunk 口的数据,统一划分给一个固定 VLAN,这个固定 VLAN = Native VLAN(默认 VLAN1)。

① 出 Trunk 口

  • 普通 VLAN(非 Native):贴上标签再发过去;
  • Native VLAN 的数据:撕掉标签,裸帧发送。

② 进 Trunk 口

  • 带标签的帧:看标签数字,对应对应 VLAN;
  • 没标签的裸帧:默认归 Native VLAN,自动打上 Native 的标签再转发。

VLAN Interface

  • 为什么需要?
    • 二层 VLAN 只是二层隔离,没有 IP,不能跨 VLAN 上网、互访
    • 想让两个 VLAN 互通,必须有个带 IP 的 “关口”,这个关口就是 Vlanif。
  • 转发流程
    • 三层转发不需要标签,会剥离二层以太网头部(含 dot1q 标签),取出纯 IP 数据包

dot1q

  • dot1q 是什么
    • 正式标准名叫 802.1Q,口语、设备命令里简写叫 dot1q。它就是给以太网帧打 VLAN 标签的标准协议。 两台交换机只用一根网线相连,同时跑 VLAN10、VLAN20。 如果不加 dot1q 标签,交换机分不清这个帧是哪个 VLAN 的,广播、单播全乱套。

所以: 同 VLAN 跨交换机互通,就需要 dot1q 标签在 Trunk 链路上传递 VLAN 身份。 这是标签最基础作用,只属于二层行为,此时还不能跨 VLAN 通信