ovs 桥接了 bond0.1234, 链路层功能还在,但 IP 层功能无法使用

ovs 桥接了 bond0.1234:

  • 这个 bond0.1234 本身的 vlan 二层功能还在
  • 但是 bond0.1234 IP 层功能无法使用?
  • 原理是?

OVS 网桥与 IP 功能失效

当 OVS 网桥桥接了 bond0.1234 时,其 "VLAN 二层功能保留" 但 "IP 层功能失效" 的现象,本质上与 Linux 网络接口的 "归属权" 和 "处理链路" 有关,具体原理如下:

1. bond0.1234 的 VLAN 二层功能为何仍存在?

bond0.1234 作为 VLAN 子接口(基于 bond0 创建的 802.1Q 子接口),其核心功能是在二层对数据包进行 VLAN 标签的自动处理

  • 接收数据包时,内核的 802.1Q 模块会剥离 VLAN 1234 标签,再将数据包交给上层(此时 OVS 网桥作为 "上层" 接收无标签包);

  • 发送数据包时,内核的 802.1Q 模块会为数据包添加 VLAN 1234 标签,再通过物理链路(bond0 对应的物理网卡)发出。

这种 VLAN 标签的处理是内核二层协议栈(链路层)的固有功能 ,由 Linux 内核的 VLAN 驱动(如 8021q 模块)实现,与接口是否被加入 OVS 网桥无关。只要 bond0.1234 作为 VLAN 子接口存在,其内核驱动就会持续执行这种二层标签处理逻辑。

2. bond0.1234 的 IP 层功能为何无法使用?

IP 层功能(如 IP 地址配置、三层路由、TCP/UDP 协议处理等)依赖于 Linux 内核的网络栈(三层及以上),而接口的 IP 功能是否生效,取决于该接口是否 "归属于" 内核网络栈。

当 bond0.1234 被加入 OVS 网桥后,发生了两个关键变化:

  • 接口归属权转移:原本 bond0.1234 直接属于内核网络栈,可直接参与 IP 层处理;加入 OVS 后,接口被 "绑定" 到 OVS 网桥,其数据包收发不再经过内核网络栈的三层逻辑,而是由 OVS 的流表规则(二层交换逻辑)直接控制。

  • IP 配置失去意义:即使给 bond0.1234 配置了 IP 地址,内核网络栈也无法通过该接口收发三层数据包 ------ 因为所有进出 bond0.1234 的流量都被 OVS 拦截并按二层规则转发,不会到达内核的 IP 层处理模块(如路由表、协议栈)。

简单说:OVS 网桥会 "接管" 接口的数据包路径,绕过内核三层栈,因此接口本身的 IP 配置自然失效。

总结

  • 二层 VLAN 功能:由内核链路层驱动实现,是 VLAN 子接口的固有属性,与是否被桥接无关,因此仍生效。

  • IP 层功能:依赖内核网络栈的三层处理,而接口被 OVS 接管后,流量路径绕开了内核三层栈,因此 IP 功能失效。

若需在该场景下使用 IP 功能,通常的做法是在 OVS 网桥上直接配置 IP 地址(而非子接口),因为网桥本身会作为一个逻辑接口参与内核三层处理,同时通过旗下的 bond0.1234 接口完成二层数据转发。

相关推荐
PFinal社区_南丞2 分钟前
Git 那些不太常用但非常实用的命令
后端
沸腾_罗强3 分钟前
GORM 软删除方案:使用 deleted_at 替代 is_deleted,用来支持表唯一索引创建
后端
R.lin7 分钟前
Spring AI Alibaba 1.1 正式发布!
java·后端·spring
程序员阿明18 分钟前
spring security 6的知识点总结
java·后端·spring
running up39 分钟前
Spring Bean生命周期- BeanDefinition 加载与 BeanFactoryPostProcessor BeanPostProcessor
java·后端·spring
云上漫步者1 小时前
深度实战:Rust交叉编译适配OpenHarmony PC——unicode_width完整适配案例
开发语言·后端·rust·harmonyos
Java水解1 小时前
MySQL必备基础
后端·mysql
Java水解1 小时前
Spring AOP原理深度解析:代理模式、JDK动态代理与CGLIB
后端·spring
无限大62 小时前
为什么显示器分辨率越高越清晰?——从像素到 4K/8K 的视觉革命
后端
阿苟2 小时前
nginx部署踩坑
前端·后端