bond0 配置 ip 和 bond0.0 配置 ip 的区别

5 阅读2分钟

bond0 vs bond0.0 的包发出和交换机处理流程

             +-------------------------+
             |       Linux Host        |
             +-------------------------+
                   |         |
                   |         |
          bond0 (untagged)  bond0.0 (VLAN 0 tagged)
          MTU = 1500        MTU = 1500
                   |         |
                   v         v
         +----------------+  +----------------+
         | Ethernet Frame |  | Ethernet Frame |
         |  [no VLAN tag]|  |  [VLAN tag=0] |
         +----------------+  +----------------+
                   |                |
                   v                v
             +--------------------------------+
             |        Switch / NIC            |
             +--------------------------------+
                   |                |
        Unmodified / forwarded     VLAN 0 frame
        as normal                  behavior depends on switch:
                                    - most trunks ignore or drop
                                    - VLAN 0 only carries PCP (priority)
                                    - NOT treated as ordinary VLAN
                   |                |
                   v                v
         Network reachable        Possibly dropped or ignored
         by other hosts           IP/ARP unreachable

✅ 总结视觉理解

  • bond0 → untagged → switch 正常处理 → IP 通信正常
  • bond0.0 → VLAN 0 tag → switch 可能丢弃 → IP 通信可能失败
  • VLAN 0 仅作为优先级标记,不可用作普通 VLAN


1️⃣ 802.1Q 标准关于 VLAN 0

  • VLAN Tag(802.1Q header)结构:

    2 bytes TPID (0x8100)
    2 bytes TCI (VLAN ID + PCP)
    
  • VLAN ID = 0 有特殊含义:

    • 代表优先级(802.1p)
    • 不用于 VLAN 隔离
    • 数据包发送出去 依然会带 802.1Q header
    • VLAN 0 不算普通 VLAN(ID 1~4094 才是标准 VLAN)

官方规范里,VLAN 0 是合法的,但它只是“标记优先级”而非真正的 VLAN。


2️⃣ 主流交换机的处理行为(经验 + 厂商文档)

厂商 / 系列VLAN 0 行为
Cisco Catalyst / NexusVLAN 0 用于 QoS,不会作为普通 VLAN 转发;如果 trunk 收到 VLAN 0,一般丢弃或忽略 ID 0,只保留优先级 PCP
Arista EOSVLAN 0 帧在 trunk 上不会被划入任何 VLAN,通常丢弃或默认为 native VLAN
Juniper EX / QFXVLAN 0 不用于隔离,部分型号会丢弃 VLAN 0 帧
H3C / HuaweiVLAN 0 常用作 QoS tag,不能作为普通 VLAN 端口,帧可能被丢弃

💡 结论

VLAN 0 是标准允许的,但绝大多数主流交换机 不把它当成普通 VLAN 来转发,会丢弃或忽略,只保留 802.1p 优先级字段。


3️⃣ Linux bond0.0 的行为

  • Linux 内核会创建一个 VLAN 子接口,TPID=0x8100,VLAN ID=0

  • 发送帧时:

    • 会加 4 字节 VLAN header
    • VLAN ID=0 → 对应交换机 trunk 的 VLAN 0
  • 如果交换机丢掉或忽略 → IP / ARP 无法通信


4️⃣ 实战经验总结

  • VLAN 0 ≠ untagged

  • VLAN 0 ≠ VLAN 1

  • VLAN 0 通常 只能做 QoS 优先级标记

  • 大部分主流交换机不会当作普通 VLAN 转发

  • 所以在生产环境:

    • bond0.0 不可靠
    • 不要用它来承载 IP 或做不同 MTU 的网段

💡 一句话记忆法

“VLAN 0 在 Linux 上会打 tag,但主流交换机不会按 VLAN 0 转发,无法作为普通 VLAN 接口使用。”


如果你需要,我可以帮你画一张 bond0 / bond0.0 发出的帧和交换机处理流程图,直观显示为什么 VLAN 0 不可用。