• TRex学习之旅五


    1  运行 TRex,了解输出结果

    配置完成后,使用以下命令启动基本的 TRex 运行 10 秒(它将使用默认配置文件名 /etc/trex_cfg.yaml):

    [bash]>sudo ./t-rex-64 -f cap2/dns.yaml -c 4 -m 1 -d 10

    1.1 TRex 输出

    成功运行 TRex 后,输出将类似于以下内容:

    1. $ sudo ./t-rex-64 -f cap2/dns.yaml -d 10
    2. Starting TRex 2.09 please wait ...
    3. zmq publisher at: tcp://*:4500
    4. number of ports found : 4
    5. port : 0
    6. ------------
    7. link : link : Link Up - speed 10000 Mbps - full-duplex 1
    8. promiscuous : 0
    9. port : 1
    10. ------------
    11. link : link : Link Up - speed 10000 Mbps - full-duplex
    12. promiscuous : 0
    13. port : 2
    14. ------------
    15. link : link : Link Up - speed 10000 Mbps - full-duplex
    16. promiscuous : 0
    17. port : 3
    18. ------------
    19. link : link : Link Up - speed 10000 Mbps - full-duplex
    20. promiscuous : 0
    21. -Per port stats table
    22. ports | 0 | 1 | 2 | 3
    23. -------------------------------------------------------------------------------------
    24. opackets | 1003 | 1003 | 1002 | 1002
    25. obytes | 66213 | 66229 | 66132 | 66132
    26. ipackets | 1003 | 1003 | 1002 | 1002
    27. ibytes | 66225 | 66209 | 66132 | 66132
    28. ierrors | 0 | 0 | 0 | 0
    29. oerrors | 0 | 0 | 0 | 0
    30. Tx Bw | 217.09 Kbps | 217.14 Kbps | 216.83 Kbps | 216.83 Kbps
    31. -Global stats enabled
    32. Cpu Utilization : 0.0 % 2 29.7 Gb/core 3
    33. Platform_factor : 1.0
    34. Total-Tx : 867.89 Kbps 4
    35. Total-Rx : 867.86 Kbps 5
    36. Total-PPS : 1.64 Kpps
    37. Total-CPS : 0.50 cps
    38. Expected-PPS : 2.00 pps 6
    39. Expected-CPS : 1.00 cps 7
    40. Expected-BPS : 1.36 Kbps 8
    41. Active-flows : 0 9 Clients : 510 Socket-util : 0.0000 %
    42. Open-flows : 1 10 Servers : 254 Socket : 1 Socket/Clients : 0.0
    43. drop-rate : 0.00 bps 11
    44. current time : 5.3 sec
    45. test duration : 94.7 sec

    说明:

    1、链接必须为 TRex 工作。

    2、发送器线程的平均 CPU 利用率。为获得最佳效果,该值应低于 80%。

    3、每个 DP 核心生成 Gb/秒。越高越好。

    4、Total Tx 必须与运行结束时的 Rx 相同。

    5、Total Rx 必须与运行结束时的 Tx 相同。

    6、每秒预期的数据包数(在没有延迟数据包的情况下计算)。

    7、每秒预期的连接数(在没有延迟数据包的情况下计算)。

    8、每秒预期的比特数(在没有延迟数据包的情况下计算)。

    9、TRex 活动“流”的数量。由于老化问题,可能与路由器流的数量不同。通常活动流的 TRex 数量远低于路由器的数量,因为路由器老化流较慢。

    10、自启动以来打开的 TRex 流总数(包括活动流和已经关闭的流)。

    11、掉率。

    2 测量抖动/延迟

    虽然上述输出中不存在,但测量延迟和抖动是可能的!

    要使用独立流(SCTP 或 ICMP)测量抖动/延迟,请使用-l <Hz> where Hz 定义每秒从每个端口发送的数据包数,此选项测量延迟和抖动。

    --l-pkt-mode <0-3>我们可以使用该选项定义用于延迟测量的流量类型。

    选项 ID类型

    0

    默认,SCTP包

    1

    来自双方的 ICMP 回显请求数据包

    2

    从一侧发送 ICMP 请求,并从另一侧匹配 ICMP 响应。

    如果您的 DUT 丢弃来自外部的流量,并且您需要打开针孔以获取外部流量(例如在测试防火墙时),这将特别有用

    3

    从双方发送序号为常数 0 的 ICMP 请求包。

    2.1 解释抖动/延迟输出

    启用延迟统计的实用程序的命令输出t-rex类似于以下内容:

    1. -Latency stats enabled
    2. Cpu Utilization : 0.2 % 1 5 6 7 8
    3. if| tx_ok , rx_ok , rx check ,error, latency (usec) , Jitter max window
    4. | , 2 , 3 , 4 , average , max , (usec)
    5. ------------------------------------------------------------------------------------------------------
    6. 0 | 1002, 1002, 0, 0, 51 , 69, 3 | 0 69 67 ...
    7. 1 | 1002, 1002, 0, 0, 53 , 196, 2 | 0 196 53 ...
    8. 2 | 1002, 1002, 0, 0, 54 , 71, 5 | 0 71 69 ...
    9. 3 | 1002, 1002, 0, 0, 53 , 193, 2 | 0 193 52 ...

    说明:

    1、Rx 检查和延迟线程 CPU 利用率。

    2、tx_ok对于所有配对端口,端口 0 上的值应等于rx_ok端口 1 上的值,反之亦然。

    3、Rx 检查率按照--rx-check. 有关 Rx 检查的更多信息,请参考下面的流顺序/延迟验证部分。

    4、检测到的数据包错误数。(各种原因,见stateful_rx_core.cpp

    5、自启动以来所有样本的平均延迟(以微秒为单位) 。

    6、自启动以来所有样本的最大延迟(以微秒为单位) 。

    7、根据 RC3550 附录 A.8 计算抖动。

    8、500 毫秒滑动窗口内的最大延迟。根据终端宽度,每个端口显示的值很少。最旧的值在左侧,最近的值(最新的 500 毫秒样本)在右侧。这有助于在一段时间后识别高延迟清除的峰值。最大延迟(<6>)是整个测试持续时间的总最大值。为了更好地理解这一点,请使用延迟选项 (-l) 运行 TRex 并观察结果。

    3 流顺序/延迟验证

    在正常模式下(未启用该功能),软件不会检查接收到的流量。在测试结束时对丢弃的数据包进行硬件(英特尔 NIC)测试。唯一的例外是延迟/抖动数据包。这是使用 TRex无法检查终止流量的功能(例如 TCP 代理)的原因之一。

    要启用此功能,请添加 --rx-check <sample>到命令行选项,其中 <sample> 是采样率。将发送到软件进行验证的流数为 (1/(sample_rate)。对于 40Gb/秒的流量,您可以使用 1/128 的采样率。

    注意 Rx CPU% 利用率。

    此功能将采样流的 TTL 更改为 255,并期望接收 TTL 为 254 或 255(一个路由跃点)的数据包。如果您的设置中有多个跃点,请使用--hops将其更改为更高的值。如果在 TRex 客户端和 TRex 服务器端之间有多个路由器,则可能有超过一跳。

    此功能可确保:

    • 数据包按顺序离开 DUT(从每个流的角度来看)。

    • 没有丢包(无需等待测试结束)。如果没有此标志,您必须等待测试结束才能识别丢包,因为由于 RTT,TX 和 Rx 之间总是存在差异。

    完整示例

    1. [bash]>sudo ./t-rex-64 -f avl/sfr_delay_10_1g.yaml -c 4 -p -l 100 -d 100000 -m 30 --rx-check 128
    2. Cpu Utilization : 0.1 % 1
    3. if| tx_ok , rx_ok , rx ,error, average , max , Jitter , max window
    4. | , , check, , latency(usec),latency (usec) ,(usec) , 2
    5. --------------------------------------------------------------------------------
    6. 0 | 1002, 1002, 2501, 0, 61 , 70, 3 | 60
    7. 1 | 1002, 1002, 2012, 0, 56 , 63, 2 | 50
    8. 2 | 1002, 1002, 2322, 0, 66 , 74, 5 | 68
    9. 3 | 1002, 1002, 1727, 0, 58 , 68, 2 | 52
    10. Rx Check stats enabled 3
    11. -------------------------------------------------------------------------------------------
    12. rx check: avg/max/jitter latency, 94 , 744, 49 | 252 287 309 4
    13. active flows: 7 10, fif: 6 308, drop: 0, errors: 0 5
    14. -------------------------------------------------------------------------------------------

    说明:

    1、Rx 线程的 CPU%。如果它太高,增加采样率。

    2、特定于延迟的数据包测量部分。

    3、Rx 检查部分。如需更多详细信息,请在测试期间或测试结束时 按r 。

    4、模板流上的平均延迟、最大延迟和抖动(以微秒为单位)。这通常高于延迟检查数据包,因为该功能在此数据包上工作得更多。

    5、丢弃计数器和错误计数器应为零。如果没有,请按r查看完整报告或在测试结束时查看报告。

    6、fif - 流量第一。Rx 线程处理的新流数。

    7、活动流 - rx 线程处理的活动流数

    按 R 显示完整报告

    1. m_total_rx : 2
    2. m_lookup : 2
    3. m_found : 1
    4. m_fif : 1
    5. m_add : 1
    6. m_remove : 1
    7. m_active : 0
    8. 1
    9. 0 0 0 0 1041 0 0 0 0 0 0 0 0 min_delta : 10 usec
    10. cnt : 2
    11. high_cnt : 2
    12. max_d_time : 1041 usec
    13. sliding_average : 1 usec 2
    14. precent : 100.0 %
    15. histogram
    16. -----------
    17. h[1000] : 2
    18. tempate_id_ 0 , errors: 0, jitter: 61 3
    19. tempate_id_ 1 , errors: 0, jitter: 0
    20. tempate_id_ 2 , errors: 0, jitter: 0
    21. tempate_id_ 3 , errors: 0, jitter: 0
    22. tempate_id_ 4 , errors: 0, jitter: 0
    23. tempate_id_ 5 , errors: 0, jitter: 0
    24. tempate_id_ 6 , errors: 0, jitter: 0
    25. tempate_id_ 7 , errors: 0, jitter: 0
    26. tempate_id_ 8 , errors: 0, jitter: 0
    27. tempate_id_ 9 , errors: 0, jitter: 0
    28. tempate_id_10 , errors: 0, jitter: 0
    29. tempate_id_11 , errors: 0, jitter: 0
    30. tempate_id_12 , errors: 0, jitter: 0
    31. tempate_id_13 , errors: 0, jitter: 0
    32. tempate_id_14 , errors: 0, jitter: 0
    33. tempate_id_15 , errors: 0, jitter: 0
    34. ager :
    35. m_st_alloc : 1
    36. m_st_free : 0
    37. m_st_start : 2
    38. m_st_stop : 1
    39. m_st_handle : 0

    说明:
    1、此处显示的错误(如果有)

    2、延迟事件的有效平均值的低通滤波器

    3、每个模板信息的错误

    注意事项和限制:

    • 为了接收数据包,TRex 执行以下操作:

      • 将 TTL 更改为 0xff 并期望 0xFF(环回)或 oxFE(路由)。(--hop用于配置此值。)

      • 添加 24 字节的元数据作为 ipv4/ipv6 选项标头。

  • 相关阅读:
    如何借助现有股票量化交易平台编写策略和回测分析
    NTC温敏电阻温度计算
    关于Request复用的那点破事儿。研究明白了,给你汇报一下。
    《CTF特训营》学习笔记——APK逆向基础
    win10 eclipse安装教程--
    react面试题笔记整理
    【动手学深度学习】--长短期记忆网络LSTM
    安全算法 - 国密算法
    浏览器面试题
    软件测试、交付与维护
  • 原文地址:https://blog.csdn.net/qq_35029061/article/details/125421833