如何用Mininet配置Trex流量发生器测试并解决Ping不通问题
问题分析与解决步骤
1. IP配置与路由的核心冲突
你的主机路由表和TRex端口配置存在逻辑矛盾:
- h1路由表明确10.0.1.0/24网段的网关是10.0.1.10,但TRex Port0的IP设为10.0.1.1,默认网关却指向了h2的Port0(10.0.2.1)——跨网段网关配置直接导致数据包找不到转发路径。
- TRex端口IP与网关分属完全隔离的网段(10.0.1.x vs 10.0.2.x),没有路由可达性,数据包无法跨越网段传输。
2. 修正TRex端口配置文件
调整配置,让直连端口处于同一网段,同时匹配主机路由规则:
# 方案1:匹配现有主机路由 - ip: 10.0.1.1 # h1的Port0 default_gw: 10.0.1.10 # 对齐h1的网关配置 - ip: 10.0.2.1 # h1的Port1 default_gw: 10.0.2.20 # 对齐h2的网关配置 # 方案2:直连端口同网段(更适合测试场景) - ip: 10.0.1.1/24 # h1 Port0,与h2 Port0直连 default_gw: 10.0.1.2 # h2 Port0的IP - ip: 10.0.2.1/24 # h1 Port1,与h2 Port1直连 default_gw: 10.0.2.2 # h2 Port1的IP
3. 修正Python Ping脚本的错误
脚本存在两处关键问题:
port_0未定义,需替换为数字0ping_ip未指定源IP,TRex可能使用错误的源地址发送数据包
修正后的脚本:
from trex_stl_lib.api import * c = STLClient(server = '10.0.1.1') c.connect() try: c.reset(ports = 0) c.set_service_mode(ports = 0) c.set_verbose('normal') # 明确指定源IP,确保数据包从正确端口发出 c.ping_ip(src_port = 0, src_ip = '10.0.1.1', dst_ip = '10.0.2.2', pkt_size = 64, count = 5) except STLError as e: print(e) finally: c.set_verbose('low') c.set_service_mode(ports = 0, enabled = False) c.disconnect()
4. 前置连通性验证
在运行TRex脚本前,先在h1上手动测试直连通性:
# 测试直连端口的物理链路 ping -I 10.0.1.1 10.0.1.2
如果ping不通,先检查网线连接、端口状态;连通后再运行TRex脚本测试。
关于16.0.0.0/48.0.0.0网段的说明
这类网段只是测试用的私有网段案例,和你的问题无关,只需确保自身配置满足直连端口同网段、路由指向正确网关即可。
内容的提问来源于stack exchange,提问作者Henrique Becker Brum
相关产品推荐
相关产品推荐

