• TRex学习之旅三


    TRex Docker与虚拟机设置和基本使用

    TRex 流量生成器

    TRex 流量生成器是一种工具,旨在使用真实流量对平台进行基准测试。

    学习和测试 TRex 的工具之一是虚拟机实例或 Docker,它可以完全模拟 TRex,而无需任何额外的硬件。

    2. Docker 运行 TRex(从 v2.37 及更高版本)

    使用一些命令,您可以在 docker 内以低性能/低占用空间运行 TRex。

    您需要在系统上安装具有特权的 docker。

    我们在这个例子中使用的是 RedHat 7.4

    Docker hub 位于docker hub

    拉取trex图像

    1. [bash]>docker pull trexcisco/trex #1
    2. [bash]>docker run --rm -it --privileged --cap-add=ALL trexcisco/trex #2
    3. [bash]root@d8ec7a3a09d9 v2.36]./t-rex-64 -i #3

    说明:

    1:拉取trex镜像可能是更高版本。

    2:进入 docker shell

    3:以无状态模式运行 TRex

    另一个终端,运行无状态 Console

    1. [bash]>docker ps
    2. CONTAINER ID IMAGE COMMAND
    3. *d4f956743f62* trexcisco/trex:2.36 "/bin/bash" #1
    4. [bash]>docker exec -it d4f956743f62 bash #2
    5. [bash]root@d4f956743f62 v2.36]./trex-console #3

    1:拉取trex图像可能是更高版本

    2:进入 docker 容器(从 $1 中获取 CONTAINER ID)

    3:运行无状态控制台

    1. [root@d8ec7a3a09d9 v2.36]./trex-console
    2. Using 'python' as Python interpeter
    3. Connecting to RPC server on localhost:4501 [SUCCESS]
    4. Connecting to publisher server on localhost:4500 [SUCCESS]
    5. Acquiring ports [0, 1]: [SUCCESS]
    6. Server Info:
    7. Server version: v2.36 @ STL
    8. Server mode: Stateless
    9. Server CPU: 1 x Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz
    10. Ports count: 2 x 10Gbps @ Unknown
    11. -=TRex Console v2.0=-
    12. Type 'help' or '?' for supported actions
    13. trex>start -f stl/imix.py -m 10kpps --port 0 #1
    14. trex>tui #2
    15. Global Statistics
    16. connection : localhost, Port 4501 total_tx_L2 : 28.90 Mb/sec
    17. version : v2.36 total_tx_L1 : 30.50 Mb/sec
    18. cpu_util. : 1.35% @ 1 cores (1 per port) total_rx : 28.90 Mb/sec
    19. rx_cpu_util. : 0.0% / 9.99 Kpkt/sec total_pps : 9.99 Kpkt/sec
    20. async_util. : 0.41% / 1.28 KB/sec drop_rate : 0.00 b/sec
    21. queue_full : 0 pkts
    22. Port Statistics
    23. port | 0 | 1 | total
    24. ----------------------------------------------------------------------
    25. owner | root | root |
    26. link | UP | UP |
    27. state | TRANSMITTING | IDLE |
    28. speed | 10 Gb/s | 10 Gb/s |
    29. CPU util. | 1.35% | 0.0% |
    30. -- | | |
    31. Tx bps L2 | 28.90 Mbps | 0.00 bps | 28.90 Mbps
    32. Tx bps L1 | 30.50 Mbps | 0 bps | 30.50 Mbps
    33. Tx pps | 9.99 Kpps | 0.00 pps | 9.99 Kpps
    34. Line Util. | 0.31 % | 0.00 % |
    35. --- | | |
    36. Rx bps | 0.00 bps | 28.90 Mbps | 28.90 Mbps
    37. Rx pps | 0.00 pps | 9.99 Kpps | 9.99 Kpps
    38. ---- | | |
    39. opackets | 189282 | 0 | 189282
    40. ipackets | 0 | 189282 | 189282
    41. obytes | 68489264 | 0 | 68489264
    42. ibytes | 0 | 68489264 | 68489264
    43. opackets | 189.28 Kpkts | 0 pkts | 189.28 Kpkts
    44. ipackets | 0 pkts | 189.28 Kpkts | 189.28 Kpkts
    45. obytes | 68.49 MB | 0 B | 68.49 MB
    46. ibytes | 0 B | 68.49 MB | 68.49 MB
    47. ----- | | |
    48. oerrors | 0 | 0 | 0
    49. ierrors | 0 | 0 | 0
    50. status: \
    51. Press 'ESC' for navigation

    说明:

    1:在端口 0 上启动流量(imix 配置文件)

    2:显示统计数据

    TRex 配置文件 /etc/trex_cfg.yaml

    1. - port_limit : 2
    2. version : 2
    3. low_end : true #1
    4. interfaces : ["veth0", "veth1"] #2
    5. port_info : # set eh mac addr
    6. - ip : 1.1.1.1
    7. default_gw : 2.2.2.2
    8. - ip : 2.2.2.2
    9. default_gw : 1.1.1.1

    说明:

    1:低占用模式(需要更少的资源),使用一个线程

    2:使用 veth0/veth1 作为连接到内部交换机的 DP 端口 (指定端口)

    您需要重定向以下端口 4500/4501/4507 以使用外部 GUI,您可以使用此命令

    [bash]>docker run --rm -it --privileged --cap-add=ALL -p 4500:4500 -p 4501:4501 -p 4507:4507 trexcisco/trex

    从 GitHub trex-gui-release下载 GUI

    3. 在Virtual Box里安装TRex

    TRex 虚拟机基于 Oracle 的 Virtual Box 免费软件,它旨在使 TRex 新手无需任何特殊资源即可探索此工具。

    3.1 设置和使用

    3.1.1 设置

    为了使用 TRex VM,有几个简单的步骤:

    1. 下载并安装 Oracle VM Virtual Box Manager (VB 下载链接)
      在安装过程中,您将被要求允许安装系统设备组件交互。允许它。

    2. 单击此链接 下载最新的 TRex VM 。请注意,这是最新的 VM 映像,而不是最新的 TRex 版本。这可以用于演示目的。安装后,如果需要,您可以升级到最新的 TRex 映像(说明如下)。

    3. 打开在步骤 1 中安装的 Oracle VM Virtual Box 应用程序。

    4. 文件选项卡下,选择导入设备,将出现以下屏幕:

                                                            图 1. VM 导入

    1. 浏览并选择您在步骤 2 中下载的 .ova 文件,然后单击继续

    2. 单击下一步,然后确保不要“重新初始化所有网卡的 MAC 地址”复选框。

    3. 单击导入并等待导入过程完成。准备出发了!

    3.1.2 启动并登录机器

    首先,通过在虚拟机菜单中选择虚拟机并点击开始按钮来启动虚拟机。

                                                            图 2. TRex VM 启动

    您可能会遇到“VT-x is disabled”错误,如下图所示。
    在这种情况下,请参阅此链接并按照提供的步骤来解决此问题。

                                                 图 3. VT-x disabled 可能的错误消息

    机器完成启动后,使用以下凭据登录它:

    • 用户名:trex

    • 密码:trex

                                                             图 4. TRex 虚拟机登录

    可以使用以下命令设置从主机中的任何位置到机器的远程连接:
    ssh -p 3022 trex@127.0.0.1

    3.1.3. 运行 TRex 流量生成器

    1. 升级到最新的 trex 包 看看如何升级

    2. 例如,将目录更改为更新的最新版本cd /home/trex/v2.20/。(不要在OVA中使用旧版本)

    3. 运行所需的 TRex 命令。

    启动 TRex 命令时,请注意确保sudo在命令行开头使用前缀,并且您更新到最新的。

    v1.62 是非常旧的版本

    例如,让我们使用 DNS 流量运行 TRex。命令是:

    1. [trex@localhost v1.62]$ sudo ./t-rex-64 -f cap2/dns.yaml -d 100 -m 1 --nc
    2. Starting TRex 1.62 please wait ...
    3. found configuration file at /etc/trex_cfg.yaml
    4. zmq publisher at: tcp://*:4500
    5. ...
    6. 1 Output trimmed.
    7. ...
    8. -Per port stats table
    9. ports | 0 | 1
    10. -----------------------------------------------------------------------------------------
    11. opackets | 17 | 17
    12. obytes | 1241 | 1513
    13. ipackets | 17 | 17
    14. ibytes | 1513 | 1241
    15. ierrors | 0 | 0
    16. oerrors | 0 | 0
    17. Tx Bw | 582.35 bps | 709.99 bps
    18. -Global stats enabled
    19. Cpu Utilization : 0.8 % 0.0 Gb/core
    20. Platform_factor : 1.0
    21. Total-Tx : 1.29 Kbps
    22. Total-Rx : 1.29 Kbps
    23. Total-PPS : 1.99 pps
    24. Total-CPS : 1.00 cps
    25. Expected-PPS : 2.00 pps
    26. Expected-CPS : 1.00 cps
    27. Expected-BPS : 1.30 Kbps
    28. Active-flows : 0 Clients : 511 Socket-util : 0.0001 %
    29. Open-flows : 17 Servers : 255 Socket : 17 Socket/Clients : 0.0
    30. drop-rate : 0.00 bps
    31. current time : 18.7 sec
    32. test duration : 81.3 sec
    33. 1 Output trimmed.
    34. Now, lets review the generated packets as they are observed by our promiscuous interface (interface #2 in the picture at the bottom).
    35. Notice that (depending on your virtual box CPU performance), tcpdump output might be delayed.
    36. [trex@localhost ~]$ sudo tcpdump -i enp0s8
    37. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    38. listening on enp0s8, link-type EN10MB (Ethernet), capture size 262144 bytes
    39. 09:38:53.953651 IP 16.0.0.2.1024 > 48.0.0.2.domain: 48 A? www.cisco.com. (31)
    40. 09:38:53.963969 IP 48.0.0.2.domain > 16.0.0.2.1024: 48* 1/0/0 A 100.100.100.100 (47)
    41. 09:38:54.960361 IP 16.0.0.3.1024 > 48.0.0.3.domain: 48 A? www.cisco.com. (31)
    42. 09:38:54.970358 IP 48.0.0.3.domain > 16.0.0.3.1024: 48* 1/0/0 A 100.100.100.100 (47)
    43. 09:38:55.967200 IP 16.0.0.4.1024 > 48.0.0.4.domain: 48 A? www.cisco.com. (31)
    44. 09:38:55.977222 IP 48.0.0.4.domain > 16.0.0.4.1024: 48* 1/0/0 A 100.100.100.100 (47)
    45. 09:38:56.975355 IP 16.0.0.5.1024 > 48.0.0.5.domain: 48 A? www.cisco.com. (31)
    46. 09:38:56.985379 IP 48.0.0.5.domain > 16.0.0.5.1024: 48* 1/0/0 A 100.100.100.100 (47)
    47. 09:38:57.981659 IP 16.0.0.6.1024 > 48.0.0.6.domain: 48 A? www.cisco.com. (31)
    48. 09:38:57.992358 IP 48.0.0.6.domain > 16.0.0.6.1024: 48* 1/0/0 A 100.100.100.100 (47)
    49. 09:38:58.990979 IP 16.0.0.7.1024 > 48.0.0.7.domain: 48 A? www.cisco.com. (31)
    50. 09:38:59.000952 IP 48.0.0.7.domain > 16.0.0.7.1024: 48* 1/0/0 A 100.100.100.100 (47)
    51. 09:39:00.009403 IP 16.0.0.8.1024 > 48.0.0.8.domain: 48 A? www.cisco.com. (31)
    52. 09:39:00.019456 IP 48.0.0.8.domain > 16.0.0.8.1024: 48* 1/0/0 A 100.100.100.100 (47)
    53. 09:39:01.015810 IP 16.0.0.9.1024 > 48.0.0.9.domain: 48 A? www.cisco.com. (31)
    54. Let’s have a look at another example.
    55. We want to generate simple http traffic. The command will look like:
    56. [trex@localhost v1.62]$ sudo ./t-rex-64 -f cap2/http_simple.yaml -d 100 -l 1000 -m 1 --nc
    57. Starting TRex 1.62 please wait ...
    58. found configuration file at /etc/trex_cfg.yaml
    59. zmq publisher at: tcp://*:4500
    60. ...
    61. 1
    62. ...
    63. -Per port stats table
    64. ports | 0 | 1
    65. -----------------------------------------------------------------------------------------
    66. opackets | 40983 | 41946
    67. obytes | 2563951 | 6015664
    68. ipackets | 41946 | 40983
    69. ibytes | 6015664 | 2563951
    70. ierrors | 0 | 0
    71. oerrors | 0 | 0
    72. Tx Bw | 520.83 Kbps | 1.27 Mbps
    73. -Global stats enabled
    74. Cpu Utilization : 3.1 % 0.1 Gb/core
    75. Platform_factor : 1.0
    76. Total-Tx : 1.79 Mbps
    77. Total-Rx : 1.79 Mbps
    78. Total-PPS : 2.11 Kpps
    79. Total-CPS : 2.84 cps
    80. Expected-PPS : 102.71 pps
    81. Expected-CPS : 2.78 cps
    82. Expected-BPS : 764.51 Kbps
    83. Active-flows : 0 Clients : 255 Socket-util : 0.0000 %
    84. Open-flows : 107 Servers : 65535 Socket : 0 Socket/Clients : 0.0
    85. drop-rate : 0.00 bps
    86. current time : 39.6 sec
    87. test duration : 60.4 sec
    88. -Latency stats enabled
    89. Cpu Utilization : 1.0 %
    90. if| tx_ok , rx_ok , rx ,error, average , max , Jitter , max window
    91. | , , check, , latency(usec),latency (usec) ,(usec) ,
    92. ----------------------------------------------------------------------------------------
    93. 0 | 39490, 39489, 0, 0, 1276 , 106714, 91 | 1737 1880
    94. 1 | 39490, 39490, 0, 0, 226 , 107619, 203 | 1694 1041

    有关工具功能和选项的完整了解,请参阅TRex 完整手册。

    3.1.4 更新 TRex

    请参阅相关手册部分

    3.1.5 TRex 实时监控

    一旦我们启动并运行了 TRex,我们就可以使用 TRexViewer 应用程序监控它的性能(仅在 Windows 操作系统上支持)。

    这可以通过以下步骤来完成:

    1. 下载最新版本的 TrexViewer 应用程序并使用此链接进行安装。

    2. 启动应用程序并填写以下内容:

      • Trex ip: 127.0.0.1:4500

    3. 单击播放按钮。

                                                   图 5. TRex 查看器开始截图

    现在来自 TRex 的实时数据将显示在屏幕上。

                                                   图 6. TRex 查看器监控截图

    确保 TRex 正在运行,否则 TRexViewer 将无法提供数据。

    3.1.6 架构和网络设计

    由于没有使用硬件,TRex 使用名为trex_intnet的虚拟内部网络模拟流量。

    下图描述了虚拟机的虚拟“接线”以支持 TRex 流量模拟。

                                                          图 7. TRex 虚拟连接

    VM 使用单个客户端和单个服务器端口运行 TRex。这些端口中的每一个生成的流量通过trex_intnet虚拟网络切换并由另一端接收。

    TRex 仅识别由其中一个流量端口专门发送的数据包,并在另一个端口上接收它们。因此,客户端端口生成的数据包将被服务器端口接收,反之亦然。

    网络适​​配器 #4 可用于捕获 TRex 的两个端口生成的所有流量。

    4. 在ESXI里安装TRex

    一般建议:为获得最佳性能,请在“裸机”硬件上运行 TRex,无需任何类型的 VM。VM 上的带宽可能会受到限制,并且可能无法完全支持 IPv6。

    在特殊情况下,在 VM 上运行 TRex 可能是合理或有利的:

    • 如果您已经安装了 VM,并且不需要高性能。

    • 虚拟 NIC 可用于在 TRex 和 TRex 不支持的 NIC 之间进行桥接。

    3.3.1 配置 ESXi 以运行 TRex

    1. 单击主机,然后选择配置 → 网络其中一个 NIC 必须连接到主 vSwitch 网络,以便为 TRex 客户端和 ssh 建立“外部”连接:

     用于 TRex 流量的其他 NIC 必须位于单独的 vSwitch 中:

     2. 右键单击客户机 → 编辑设置 → 确保将 NIC 设置为其网络:

     在 2.10 版本之前,以下命令无法正常运行:

    sudo ./t-rex-64 -f cap2/dns.yaml --lm 1 --lo -l 1000 -d 100

    vSwitch 未正确路由数据包。当 TRex 开始支持 ARP 时,此问题已在 2.10 版中得到解决。

    3.3.2 配置直通

    直通允许从 VM 内直接使用主机 NIC。直通访问通常仅受 NIC/硬件本身的限制,但可能偶尔会出现延迟峰值(约 10 毫秒)。直通设置无法保存到 OVA。

    1. 单击主机。进入配置→高级设置→编辑。

    2. 标记所需的 NIC。

     3. 重新引导 ESXi 以应用。

    4. 右键单击客户机。编辑设置 → 添加 → PCI 设备→ 单独选择 NIC。

     

  • 相关阅读:
    Oracle 常用命令大全
    [AI-ML]机器学习是什么?一起了解!(一)
    潜匿的怪物,你的供应链真的安全吗?
    前端 | 如何使用 css 实现居中效果
    UnitAuto——机器学习单元测试平台 (三)
    Windows 批量部署简易脚本
    【信号检测】基于小波变换的信号趋势检测和分离研究附matlab代码
    计算机毕业设计uniapp+python餐厅菜品点餐系统小程序51988+
    命题和逻辑连接词
    django项目实战基于Python实现的电影推荐系统
  • 原文地址:https://blog.csdn.net/qq_35029061/article/details/125407807