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

如何用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未定义,需替换为数字0
  • ping_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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:48:15