Skip to content

VLAN-Trunk-STP-路由综合转发过程深度剖析

在复杂园区网络中,一次简单的Ping测试(ICMP Echo)往往涉及到二层VLAN隔离、Trunk跨设备打标、STP生成树拓扑、ARP三层映射二层以及跨网段的三层路由转发的多个环节。理解跨设备、跨VLAN的详细转发流程是高级网络工程师排错的核心能力。


🗺️ 场景设定:不同设备、不同子网、不同VLAN互访

逻辑拓扑设定

  • PC A (IP: 33.3, 网关: 33.254, VLAN 33) 连接在 Switch 1 (下挂 Router 3)
  • PC B (IP: 11.1, 网关: 11.254, VLAN 11) 连接在 Switch 3 (下挂 Router 1)
  • Switch 1 和 Switch 3 之间通过 Switch 2 互联,所有互联接口为 Trunk,且允许VLAN 100通过。
  • Switch 1 和 Switch 3 内部使用 VLANIF 100 进行三层互联,VLANIF 100 网段用于骨干路由互访。
  • 目标:PC A (33.3) 尝试 Ping 通 PC B (11.1)。

🔍 详细包转发与处理底层流程

阶段1:PC A 发起访问与网关 ARP 解析

  1. 查询路由表:PC A 检查目的IP 11.1,发现与自己不在同一子网,决定将包发送给配置的默认网关 33.254
  2. ARP请求网关MAC:PC A 查询本地ARP表,若无网关 33.254 的MAC地址,则发送 ARP Request (目的MAC为全F的广播帧)。
  3. Switch 1 二层处理
    • 收到没有标记的以太帧,根据接口的PVID打上 VLAN 33 的Tag。
    • 学习源MAC地址,构建本地MAC地址表 (MAC: PC_A, VLAN: 33, Interface: Gx)。
    • 因为是广播帧,Switch 1 根据DMAC在 VLAN 33 内进行泛洪,其中包括虚拟的三层接口 VLANIF 33。
  4. VLANIF 33 响应ARP
    • 三层接口 VLANIF 33 收到ARP Request,检查Target IP是自身接口IP 33.254,接收并更新本地ARP表(记录PC A的IP和MAC)。
    • 构建并回复 ARP Reply 给 PC A (单播,目的MAC为PC A)。
    • 由于从Access接口发出,Switch 1 执行 Untag (UT) 动作,剥离VLAN 33标签发给 PC A。
  5. 构建第一个ICMP包:PC A 收到ARP Reply,正式封装第一个数据包:
    • SIP: 33.3, DIP: 11.1 | SMAC: PC_A, DMAC: 网关MAC(VLANIF33)

阶段2:Switch 1 路由查表与骨干链路 ARP 解析

  1. 网关路由转发:VLANIF 33 收到单播数据包,解封装发现目的IP是 11.1,不是接口IP,查询全局路由表,匹配到去往 11.0/24 的静态路由:
    • Static 11.0/24 ----> 100.3 interface vlanif 100 (下一跳为 Switch 3 的 VLANIF 100,出接口为 VLANIF 100)。
  2. 三层重封装:Switch 1 需要将包从 VLANIF 100 发出,此时:
    • 三层IP头部绝对不变 (SIP: 33.3, DIP: 11.1)。
    • 二层MAC地址彻底改写SMAC: 自身VLANIF100的MAC, DMAC: ? (需要下一跳100.3的MAC)
  3. 跨设备ARP请求:查询ARP表发现没有 100.3 的MAC,VLANIF 100 发送 ARP Request (目的MAC全F,Target IP 100.3)。
  4. Trunk 链路二层转发 (Switch 1 -> Switch 2 -> Switch 3)
    • ARP请求在 VLAN 100 内泛洪。Switch 1 从Trunk接口发出时,执行 Tag (TG) 动作,打上 VLAN 100 标签。
    • Switch 2 处理
      • 收到带 Tag 100 的帧,检查VLAN List允许通过,接收并刷新MAC表,学习到 Switch 1 的MAC地址对应接口。
      • 由于是广播,向其他允许VLAN 100的Trunk接口泛洪,保持 Tag 100 转发
    • Switch 3 处理
      • 同样学习MAC,向其内部的 VLAN 100 及 三层接口 VLANIF 100 转发。
  5. Switch 3 响应ARP:VLANIF 100 收到ARP请求,回复 ARP Reply (单播给 Switch 1)。沿途经过 Switch 2 和 Switch 1 时,各交换机依据已学习的MAC地址表进行精确的二层单播转发,Trunk链路始终保持 Tag 100,最终到达 Switch 1。

阶段3:跨设备路由转发与最终目标递交

  1. Switch 1 转发ICMP:Switch 1 获得了 100.3 的MAC地址,完成ICMP包的重封装,发送 ICMP Echo Request 到 Switch 3。
    • 包格式:SIP: 33.3, DIP: 11.1 | SMAC: Switch1_MAC, DMAC: Switch3_MAC | Tag 100
  2. Switch 3 接收与路由查表
    • Switch 3 在二层剥离 Tag 100,提交给三层 VLANIF 100。
    • 检查目的IP 11.1,发现为直连网段,指向内部接口 VLANIF 11。
  3. 最后一段ARP解析与递交
    • Switch 3 需要知道 PC B (11.1) 的MAC地址,于是通过 VLANIF 11 发送最后的 ARP Request。
    • ARP请求在 VLAN 11 内泛洪,经Access接口剥离Tag发给PC B。
    • PC B 回复 ARP Reply。Switch 3 学习到PC B的MAC,同时更新ARP表。
  4. 最终递交数据
    • Switch 3 重封装最后的以太帧:SMAC: Switch3_VLANIF11_MAC, DMAC: PC_B_MAC
    • 从Access接口发出,执行 Untag 动作,无标记的IP报文成功抵达 PC B,完成去程转发。

📌 核心转发法则总结

在整个从源到目的的转发过程中,存在以下不变的铁律:

🔥 转发铁律与底层逻辑

  1. 三层信息端到端不变:无论经过多少台路由器或三层交换机,IP报文头部的 源IP (SIP)目的IP (DIP) 始终保持不变(除非经过NAT)。IP地址的意义在于跨链路全局寻址
  2. 二层信息逐跳转写:以太网帧的 源MAC (SMAC)目的MAC (DMAC) 在每一次经过三层网关路由时,必然发生改写MAC地址只具有链路内局部寻址的意义
  3. 接口动作 UT/TG 决定包形态
    • Access 接口:发送时永远执行 Untag (UT) 动作,去掉Tag,终端设备收到的是原始无标记以太网帧。
    • Trunk 接口:发送时除非遇到PVID,否则永远执行 Tag (TG) 动作,带有VLAN标签的帧在骨干交换网络中流转。

🛠️ 排错 (Troubleshooting) 黄金思路

如果遇到跨VLAN无法Ping通的问题,应按照数据流向逐一排查:

🛑 故障排查核心思路

  1. 检查终端配置:IP、子网掩码、默认网关是否配置正确且在同一网段?
  2. 检查二层路径连通性
    • display vlan:接口是否正确划入指定的VLAN?Trunk接口是否放行了对应的VLAN?
    • display mac-address:交换机是否正常学习到了终端和网关的MAC地址?
    • display stp brief:相关互联接口是否处于 Forwarding 状态?是否被STP错误阻塞导致二层不通?
  3. 检查三层路由与ARP
    • display ip interface brief:网关VLANIF或路由器子接口状态是否为双UP (Physical UP, Protocol UP)?
    • display arp:网关是否成功解析到了终端或下一跳路由器的ARP表项?(Incomplete表示未解析成功)
    • display ip routing-table:设备是否有去往目的网段的路由?切记检查是否有正确的回程路由(回包路由)