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 接口完成二层数据转发。

相关推荐
特立独行的猫A5 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
码事漫谈8 小时前
我花了一周时间,看AI公司怎么"管"AI,结果越看越后背发凉
后端
爱学习的程序媛11 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
GISer_Jing11 小时前
Agent核心内容
后端·ai·langchain
budingxiaomoli12 小时前
Spring统一功能处理
java·后端·spring
某鹏13 小时前
网关选型:Go、Java、Graal 谁都不能完胜
后端
用户02478365309713 小时前
从屎山到防线:14 行状态迁移表,给任务系统装上防瞎跳闸门
后端
CQU_JIAKE13 小时前
11.13[体系结构】指标,五级流水线,八级流水线,虚实地址思考
后端
panbook15 小时前
从0到1实现一个分布式时序数据库(三):主从复制、故障检测与切换
后端
上线再说15 小时前
图片从 8.2MB 压到 296KB:我把小程序图片链路的账单拆了一遍
后端