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

Mininet/POX搭建SDN路由网络 连通性与多路径路由问题

Mininet+POX静态路由组网故障排查与多路径配置

问题1:路由器部分节点不通、14%丢包根因与修复

故障根因

连通性故障是两个配置疏漏共同导致的:

  • 互联网段回程路由缺失:你只给4个主机业务网段(10.0.0.0/24~10.3.0.0/24)配了静态路由,完全没加4个路由器互联网段(10.100.0.0/24、10.101.0.0/24、10.102.0.0/24、10.103.0.0/24)的路由。
    主机发起ping时,源IP是自身业务网段地址(比如h1源IP是10.0.0.10),所有路由器都有业务网段的路由,回包能正常转发,所以表现为主机能ping通所有设备。
    路由器自己发ping包时,默认选取出接口的IP作为源IP(比如r1从r1-eth3口发起到r4的ping,源IP是互联网段地址10.101.0.1),非直连的对端路由器没有对应互联网段的路由,回包直接丢弃,就出现了非直连路由器之间、路由器到对角主机网段ping不通的现象,和你贴的pingall结果完全匹配。
  • 重复添加同前缀路由的操作全部失效:Linux默认单路径路由模式下,同一个目的前缀(同网段+同掩码)只允许存在一条下一跳,你第二次执行ip route add添加同网段不同下一跳的路由时,系统直接返回RTNETLINK answers: File exists,对应路由根本没写入路由表,你预期的备用路径完全没生效。

修复方法

两种方案选其一即可:

  • 快速验证方案:路由器做连通性测试时,手动指定源IP为本地业务网段的网关地址,比如r1测试到r4连通性用r1 ping -I 10.0.0.1 10.3.0.1,源IP属于业务网段,所有路由器都有对应回程路由。
  • 规范配置方案:补全所有互联网段的静态路由,保证任意网段地址在全网都有可达路由。比如给r1添加到10.102.0.0/24、10.103.0.0/24的路由,给r2添加到10.101.0.0/24、10.102.0.0/24的路由,所有路由器依次补全即可。

问题2:多路径(ECMP)路由正确配置方法

报错原因

分两次执行ip route add添加同目的前缀不同下一跳的路由,违反了Linux单路由条目前缀唯一的规则,必然报错,备用路径无法写入路由表。

配置方式

要实现等价/加权多路径转发,需要在同一条ip route命令中通过nexthop参数指定多个下一跳,不能分条添加。
以r1到10.3.0.0/24的双路径配置为例,正确命令如下:

# 先删除原有单路径路由,避免冲突
ip route del 10.3.0.0/24
# 配置双下一跳多路径路由,weight为权重,数值相等时为等价负载分担
ip route add 10.3.0.0/24 \
  nexthop via 10.100.0.2 dev r1-eth2 weight 1 \
  nexthop via 10.101.0.2 dev r1-eth3 weight 1

要实现h1到h4的双向多路径转发,还要在r4上对称配置到10.0.0.0/24的双下一跳路由,中间的r2、r3也要补全对应网段的多路径路由,避免回程走单路径。
配置完成后可以通过ip route show查看路由表,多路径路由会显示多个nexthop条目,Linux默认基于五元组对流做哈希,实现不同流走不同路径的负载分担。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:36:26