You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

容器化OVS交换机连接SDN控制器后互ping失败问题求助

排查与解决Docker OVS容器间ping不通的问题

我来帮你定位这个问题——你已经完成了OVS容器的部署和控制器连接,但容器间无法ping通,主要是二层接口配置错误和流量路径未经过OVS网桥这两个核心问题,咱们一步步修正:

一、核心问题分析

你当前把IP地址配置在了OVS的端口(s1-eth1/s2-eth1)上,但OVS端口本质是二层转发接口,IP应该配置在OVS网桥上,这样容器的网络栈才会把流量发往网桥,再由OVS根据控制器的流表转发。

二、修正操作步骤

1. 调整容器内的IP配置(替换原有的veth IP配置)

在s1容器终端执行:

# 清除veth端口上的IP
ifconfig s1-eth1 0.0.0.0
# 给OVS网桥配置IP并启用
ifconfig s1 10.0.0.1/24 up

在s2容器终端执行:

ifconfig s2-eth1 0.0.0.0
ifconfig s2 10.0.0.2/24 up

2. 验证OVS端口与网桥状态

在每个容器内执行以下命令,确认端口已正确加入网桥且状态为UP:

# 查看OVS拓扑
ovs-vsctl show
# 查看接口状态
ip link show s1-eth1  # s2容器替换为s2-eth1

输出中要确保s1-eth1是s1网桥的成员,且state UP。

3. 检查OVS流表是否正确下发

确认POX控制器的集线器流表已生效,在容器内执行:

ovs-ofctl dump-flows s1  # s2容器替换为s2

正常应该看到一条优先级为0的泛洪流表:

cookie=0x0, duration=..., table=0, n_packets=0, n_bytes=0, priority=0 actions=FLOOD

4. 验证容器路由表

确保容器的路由指向OVS网桥,执行:

route -n

应该存在类似这条路由:

10.0.0.0/24 dev s1  proto kernel  scope link  src 10.0.0.1

5. 临时关闭iptables测试(可选)

Docker容器默认的iptables规则可能拦截流量,暂时关闭来排除干扰:

iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

三、测试连通性

完成上述调整后,在s1容器内执行:

ping 10.0.0.2

此时应该能收到s2的响应。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:59:20