春江593 2025-11-05 11:05 采纳率: 90%
浏览 5
已结题

关于思科每vlan生成树协议(PVST)的理解问题

最近在配置一个链路聚合拓扑图时,遇到一个无法理解的理论问题,想请教大家:
拓扑图如下

img

这是一个简单二层拓扑,SW0与SW1上都创建vlan10,SW0的fa0/4口划入vlan10,连接PC0;SW1的fa0/4口也划入vlan10,连接PC1。SW0与SW1之间的链路配置为trunk,并启用etherchannel。
该拓扑配置完成后可以正常通信,检查各种参数也都正常。但当我查看两台交换机的spanning-tree时,发现一个无法理解的问题:

在SW0上查看生成树,显示如下:

img

在SW1上查看生成树,显示如下;

img

思科交换机默认运行PVST协议,vlan1作为两台交换机的native vlan,其生成树参数没有问题。SW0是根桥,其port-channel 1 自然是DP。SW1作为非根桥,其port-channel 2自然是RP。
但vlan10的生成树参数我无法理解:
1、为何SW0和SW1都显示自己为根桥?SW0与SW1之间通过trunk连接,流量完全可以交互,两台直连的交换机怎么可能同时为根桥?
2、为何SW0上无法看到port-channel 1接口的信息?该接口是trunk模式,即使做了链路聚合,我理解该端口也应该同时属于vlan10和vlan1,应该视为是vlan 10中的活动端口,可为何在SW0的vlan10生成树参数中无法看到该端口角色?

非常感谢大家!

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-11-05 16:18
    关注

    让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。

    如果答案让您满意,请采纳、点赞、关注,非常感谢!
    .
    每日一句正能量,让它带给您好心情:做一个积极向上的人,读温柔的句子,见阳光的人,眼里全是温柔和笑意。
    .

    根据您提供的拓扑和配置描述,这是一个典型的 PVST(每 VLAN 生成树)行为理解问题。下面我将逐步解释您遇到的现象。


    1. PVST 工作原理回顾

    PVST 是 Cisco 私有的生成树协议,它为每个 VLAN 独立运行一个 STP 实例
    默认情况下,VLAN 1 是 native VLAN,而其他 VLAN(如 VLAN 10)会单独计算根桥、端口角色等。


    2. 您遇到的现象分析

    现象 1:两台交换机在 VLAN 10 中都显示自己是根桥

    可能原因:

    • VLAN 10 的 BPDU 没有通过 trunk 链路传递
      虽然物理链路是 trunk 并启用了 EtherChannel,但如果 VLAN 10 的 BPDU 被阻断或过滤,两台交换机在 VLAN 10 中就感知不到对方,各自认为自己是根桥。
    • ACL 或 VACL 过滤
      如果有访问控制列表或 VLAN 访问控制列表阻止了 BPDU(目的 MAC 为 01-80-C2-00-00-00 或 IPv4 BPDU 地址),则 VLAN 10 的 STP 信息无法交换。
    • Native VLAN 不匹配
      如果两端 native VLAN 不一致,会导致 VLAN 标签处理异常,可能影响某些 VLAN 的 BPDU 传递。
    • EtherChannel 配置问题
      如果 channel-group 模式不匹配(比如一端是 active 另一端是 active 才能形成 LACP,或者一端是 on 另一端也必须是 on),可能导致某些 VLAN 的逻辑端口不参与 STP 计算。

    现象 2:SW0 在 VLAN 10 的生成树表中看不到 Port-Channel 1

    可能原因:

    • VLAN 10 未允许通过 trunk
      检查 switchport trunk allowed vlan 是否包含 VLAN 10。如果 trunk 只允许 VLAN 1,那么 VLAN 10 的 BPDU 和流量实际上不会通过 Port-Channel 1。
    • 端口在 VLAN 10 中被 STP 禁用
      如果该端口在 VLAN 10 中因为 STP 计算被置为 BlockingDisabled,可能不会在 show spanning-tree vlan 10 中显示。
    • EtherChannel 成员端口状态异常
      如果物理端口没有全部起来,或者 channel 没有形成,逻辑的 Port-Channel 接口在某些 VLAN 中可能不参与 STP。
    • 软件/显示 Bug
      少数 IOS 版本在 EtherChannel + PVST 场景下,show spanning-tree vlan X 可能不显示聚合口信息,但实际数据转发正常。可以尝试用 show spanning-tree interface port-channel 1 查看该端口在所有 VLAN 中的状态。

    3. 排查步骤建议

    3.1 检查 Trunk 配置

    在 SW0 和 SW1 上执行:

    show interfaces trunk
    

    确认 VLAN 10 在允许列表中,且 native VLAN 一致。

    3.2 检查 EtherChannel 状态

    show etherchannel summary
    

    确认 Port-Channel 处于 SU 状态,且所有物理端口被绑定。

    3.3 检查 VLAN 10 的 STP 详情

    在 SW0 和 SW1 分别执行:

    show spanning-tree vlan 10
    

    比较根桥 ID、根路径开销等。

    3.4 检查端口在 VLAN 10 中的 STP 状态

    show spanning-tree interface port-channel 1
    

    或者分别查看物理接口:

    show spanning-tree vlan 10 interface fa0/1
    

    (假设 fa0/1 是 channel-group 成员)


    4. 可能解决方案

    1. 确保 VLAN 10 在 trunk 上允许通过
      interface port-channel 1
      switchport trunk allowed vlan 10
    

    或者直接 switchport trunk allowed vlan add 10

    1. 强制指定 VLAN 10 的根桥
      如果希望 SW0 作为 VLAN 10 的根桥,可以在 SW0 上设置:
      spanning-tree vlan 10 root primary
    

    在 SW1 上设置:

      spanning-tree vlan 10 root secondary
    
    1. 检查是否有 BPDU Guard 或 BPDU Filter 影响
      如果在端口上误配了 spanning-tree bpdufilter enable,会阻止 BPDU 发送/接收,导致 STP 信息不同步。

    5. 总结

    • 在 PVST 中,每个 VLAN 的生成树独立计算。
    • 两台交换机在某个 VLAN 中同时认为自己是根桥,通常是因为 BPDU 无法交换
    • EtherChannel 接口在某个 VLAN 的生成树中不显示,可能是因为该 VLAN 不在 trunk 允许列表中,或者逻辑端口在该 VLAN 中被禁用。

    建议按上述步骤检查 trunk 允许的 VLAN 列表以及 EtherChannel 状态,应该能定位到问题所在。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日
  • 创建了问题 11月5日