资讯详情

TRex学习之旅二

本文将介绍,TRex 使用和使用内部组件 TRex 与 Cisco ASR1000 这些示例将带您进一步了解系列路由器的组合TRex 新的流量生成技术。

1.1 流量生成器的一句话

传统上,路由器使用商业流量生成器进行测试,而性能通常使用每秒数据包 (PPS) 测量指标。随着路由器功能和服务的日益复杂,状态流量生成器已成为提供更真实流量场景的必要条件。

实际流量生成器的优点:

  • 性能指标准确。

  • 在现实交通场景中发现瓶颈。

1.1.1 当前挑战:

  • :流量生成器的商业状态非常昂贵。

  • :随着特征的复杂性,带宽不能很好地扩大。

  • :缺乏标准化的交通模式和方法。

  • :商业工具不够灵活,需要灵活性和定制性。

1.1.2 影响

  • 不同团队的高成本支出。

  • 小规模测试和外推已经成为一种常见的做法。这并不理想,也不能指示真实场景中的瓶颈。

  • 团队使用不同的基准测试方法,因此结果没有标准化。

  • 开发和测试延迟是由于依赖测试工具的功能。

  • 开发不同临时工具和测试方法的资源和努力投资。

1.2 TRex 概述

TRex 通过创新和可扩展的软件实施和使用标准和开放的软件 x86/UCS 解决与商业状态流量生成器相关的问题。

  • 生成和分析 L4-7 流量。在一个包中,提供商业 L7 工具的功能。

  • 基于真实流量模板的预处理和智能回放状态流量生成器。

  • 生成并客户端和服务器端流量。

  • 可添加自定义功能。

  • 一个 UCS 可扩展到 200Gb/秒(使用 Intel 40Gb/秒 NIC)。

  • 低成本。

  • 独立包可轻松安装部署。

  • 支持虚拟接口 TRex 没有物理可以做到 NIC 在完全虚拟的环境中使用。

  • 示例用例:

    • 亚马逊AWS

    • 思科 LaaS

    • 笔记本电脑 TRex

表 1. TRex 硬件

2 下载安装

2.1 硬件建议

TRex 是一个 Linux 应用程序,和 Linux 内核模块交互。它使用它 DPDK(将 DPDK 安装为库)。TRex 应该是在任何地方 COTS x86 操作服务器(它可以编译到 ARM,但在我们的回归中没有测试),我们的回归设置将 Cisco UCS 用于高性能、低延迟的硬件。

建议使用以下平台进行测试 TRex。

运行 TRex 以实现低性能和低占用空间(约 1MPPS 受内核限制)的另一个选择是在原始套接字模式下使用内核接口(需要超级用户)。

这样,TRex 几乎可以在任何 Linux 平台和任何 Linux 接口上运行(例如 veth/tap/物理无线接口。tun 接口将无法工作,因为没有 L2)

Docker 示例提供Docker以获取更多信息,请参阅低占用空间和Linux 接口

TRex并不支持所有受支持的DPDK接口

UCS 类型 注释

UCS C220 Mx

。540-D2 支持高达 40Gb/秒。使用较新的 Intel NIC(推荐),支持 1RU 的 80Gb/秒。请参阅下表描述组件。

UCS C200

早期的 UCS 模型。

UCS C210 Mx

支持高达 40Gb/秒的 PCIe3.0。

UCS C240 Mx

支持高达 200Gb/秒。6x XL710 NICS (PCIex8) 或 2xFM10K (PCIex16)。请参阅下表描述组件。

UCS C260M2

支持高达 30Gb/秒(受 V2 PCIe 限制)。

                                                      表 2. 首选 UCS 硬件

组件 细节

中央处理器

2x E5-2620 @ 2.0 GHz。

CPU 配置

2 路 CPU 配置(也适用于 1 个 CPU)。

Memory

每个 CPU 有 2x4 个存储库。8 个共 32GB。

RAID

没有 RAID。

                                            表 3. 低端 UCS C220 Mx - 内部组件

成分 细节

中央处理器

2x E5-2667 @ 3.20 GHz。

PCIe

1x Riser PCI 扩展卡选项 A PID UCSC-PCI-1A-240M4 启用 2 PCIex16。

CPU 配置

2 路 CPU 配置(也适用于 1 个 CPU)。

Memory

每个 CPU 有 2x4 个存储库。8 个共 32GB。

RAID

没有 RAID。

Riser 1/2

左右两边都应该支持 x16 PCIe。右侧 (Riser1) 应来自选项 A x16,左侧 (Riser2) 应为 x16。两者都需要订购。

                                         表 4. 高端 C240 Mx - 内部组件

在所有裸机情况下,拥有 4 个 DRAM 通道非常重要。更少的频道会带来性能问题。要对其进行测试,您可以运行sudo dmidecode -t memory | grep CHANNEL并检查 CHANNEL x

芯片 带宽(Gb/秒) LSO LRO 例子

任何内核 Linux 接口

X

X

X

veth,tap,tun,eth0,无线接口,最高~1MPPS,一个线程。查看低占用空间和Linux 接口

Intel I350

1

+

-

英特尔 4x1GE 350-T4 网卡

Intel 82599

0.1/1/2.5/5/10

+

+

Cisco 部件 ID:N2XX-AIPCI01 Intel x520-D2、Intel X520 双端口 10Gb SFP+ 适配器。X550-T2、x540-T2 用于 tbase Cisco 部件 ID:UCSC-PCIE-ID10GC

Intel 82599 VF

X

+

+

Intel X710

10

+

-

Cisco 部件 ID:UCSC-PCIE-IQ10GF SFP+,硬件Silicom PE310G4i71L中每个流统计的

Intel XL710

40

+

-

Cisco 部件 ID:UCSC-PCIE-ID40GF、QSFP+(铜/光纤)硬件中每个流统计的

Intel XXV710

25 年 1 月 10 日

+

-

SFP28 Intel XXV710 硬件中每个流统计的

Intel XL710/X710 VF

X

+

-

Napatech SmartNIC NT40E3-4

10

-

-

./b configure --with-ntacc 来构建库

Napatech SmartNIC NT80E3-2

40

-

-

./b configure --with-ntacc来构建库

Napatech SmartNIC NT100E3-1

100

-

-

./b configure --with-ntacc 来构建库。我们回归中唯一的 Napatech NIC。更多信息

Napatech SmartNIC NT200A01

100

-

-

./b configure --with-ntacc 以构建库 此 NIC 需要具有 PCIe 分叉支持的 BIOS。 PCIe 分叉

Mellanox ConnectX-4/Lx

25/40/50/56/100

+

+

SFP28/QSFP28、ConnectX-4 ConnectX-4-brief(铜/光纤)从 v2.11 开始支持更多详细信息和问题TRex 支持

Mellanox ConnectX-5/6

25/40/50/56/100/200

+

+

支持,请参阅问题TRex 支持

思科 1300 系列

40

+

-

QSFP+、VIC 1380、VIC 1385、VIC 1387 查看更多TRex 支持

VMXNET3

VMware 半虚拟化

+

-

使用 VMware vSwitch 连接

E1000

半虚拟化

+

-

VMware/KVM/VirtualBox

Virtio

半虚拟化

+

-

虚拟机

亚马逊 ENA

半虚拟化

+

-

亚马逊云

MS Failsafe

半虚拟化

+

-

支持 DPDK mlx5 的 Azure

memif

共享内存环

+

-

参见memif support multi core for STL。ASTF 只有一个核心

                                                            表 5. 支持的 NIC

LSO( Large Segment Offload)和 LRO(Large Receive Offload)是通过减少 CPU 监听来增加高带宽网络连接中的出口和入口吞吐量的技术。这些通常使用多包缓冲来完成。当应用于 TCP 时,LSO 也称为 TCP 分段卸载 (TSO),或通用分段卸载 (GSO)。有关详细信息:

网络虚拟化中的 offload 技术:LSO/LRO、GSO/GRO、TSO/UFO、VXLAN_yeasy的博客-CSDN博客_offload

SFP+ 英特尔以太网融合 X710-DAX Silicom PE310G4i71L(开放式光纤) 82599EB 10-Gigabit

思科 SFP-10G-SR

不支持

思科 SFP-10G-LR

不支持

思科 SFP-H10GB-CU1M

思科 SFP-10G-AOC1M

                                                              表 6. SFP+ 支持

Intel X710 NIC(示例:FH X710DA4FHBLK)仅*使用Intel SFP+。对于开放式光纤,请使用Silicom PE310G4i71L NIC,可从以下位置获得:

http://www.silicom-usa.com/PE310G4i71L_Quad_Port_Fiber_SFP+_10_Gigabit_Ethernet_PCI_Express_Server_Adapter_49

对于Intel XXV710 Cisco NIC,请确保至少将cimc升级到v4.0(2f),XXV710的固件将升级到能够支持大多数SFP的v6。

QSFP+ 英特尔以太网融合 XL710-QDAX Silicom PE340G2Qi71开放式光纤

QSFP+ SR4 光学器件

:批准的光学元件。:思科 QSFP-40G-SR4-S

:思科 QSFP-40G-SR4-S

QSFP+ LR-4 光学器件

:批准的光学元件。:思科 QSFP-40G-LR4-S

:思科 QSFP-40G-LR4-S

QSFP 有源光缆 (AoC)

:思科 QSFP-H40G-AOC

:思科 QSFP-H40G-AOC

支持 QSFP+ Intel 以太网模块

不适用

不适用

QSFP+ DA 双轴电缆

不适用

不适用

有源 QSFP+ 铜缆

:思科 QSFP-4SFP10G-CU

:思科 QSFP-4SFP10G-CU

                                            表 7. XL710 NIC 基本 QSFP+ 支持

对于Intel XL710 NIC,Cisco SR4/LR QSFP+不工作。使用带开放式光学元件的Silicom。

QSFP28 连接X-4

QSFP28 SR4 光学器件

不适用

QSFP28 LR-4 光学器件

不适用

QSFP28 (AoC)

:思科 QSFP-100G-AOCxM

QSFP28 DA 双轴电缆

:思科 QSFP-100G-CUxM

                                  表 8. ConnectX-4 NIC 基础 QSFP28 支持 (100gb)

QSFP+ 英特尔以太网融合 XL710-QDAX

QSFP+ SR4 光学器件

不适用

QSFP+ LR-4 光学器件

不适用

QSFP 有源光缆 (AoC)

:思科 QSFP-H40G-AOC

QSFP+ 英特尔以太网模块化光学

不适用

QSFP+ DA 双轴电缆

不适用

有源 QSFP+ 铜缆

不适用

                                              表 9. Cisco VIC NIC 基本 QSFP+ 支持

QSFP28 Example

将支持

将支持

                                                      表 10. FM10K QSFP28 支持

  • Intel SFP+ 10Gb/sec 是标准 Linux 驱动程序默认支持的唯一一种。TRex 还支持 Cisco 10Gb/秒 SFP+。

  • 对于运行高速吞吐量(例如:多个 Intel XL710 40Gb/秒),为不同的 NIC 使用不同的NUMA节点。 验证 NUMA 和 NIC 拓扑:lstopo (yum install hwloc) 显示 CPU 信息,包括 NUMA 节点:lscpu NUMA 使用情况:示例

  • 对于 Intel XL710 NIC,验证 NVM 是 v5.04。信息。

> sudo ./t-rex-64 -f cap2/dns.yaml -d 0 *-v 6* --nc | grep NVM
PMD: FW 5.0 API 1.5 NVM 05.00.04 eetrack 800013fc
组件 数量

UCSC-C220-M3S

1

UCS-CPU-E5-2650

2

UCS-MR-1X041RY-A

8

A03-D500GC3

1

N2XX-AIPCI01

2

UCSC-PSU-650W

1

SFS-250V-10A-IS

1

UCSC-CMA1

1

UCSC-HS-C220M3

2

N20-BBLKD

7

UCSC-PSU-BLKP

1

UCSC-RAIL1

1

                 表 11. 推荐的具有 4 个 10Gb 端口的低端 Cisco UCSC-C220-M3S 的样品订单

单独购买 10Gb/秒 SFP+。思科可以使用 TRex(但不适用于普通的 Linux 驱动程序)。

2.2. 安装操作系统

2.2.1 支持的版本

支持的 Linux 版本:

  • CentOS/RHEL 7.6,64 位内核(非 32 位)()——这是 ConnectX-4 的唯一工作选项。

通过编译必要的驱动程序可以支持其他操作系统版本。

要检查内核是否为 64 位,请验证以下命令的输出是否为x86_64.

[ bash ]> unname -m
x86_64

2.2.2 验证 Intel NIC 安装

用于lspci验证 NIC 安装。

示例:4x 10Gb/sec TRex 配置(见下面的输出):

  • I350管理端口

  • 4 个英特尔以太网融合网络适配器型号 x520-D2(82599 芯片组)

[bash]>lspci | grep Ethernet
01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)                #1
01:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)                #2
03:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01) #3
03:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
82:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
82:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)

说明:

1:管理端口

2:CIMC端口

3:10Gb/秒流量端口(英特尔 82599EB)

2.3. 获取 TRex 包

用于ssh连接到 TRex 机器并执行下面描述的命令。

仅支持https。

最新(稳定)版本:

[bash]>mkdir -p /opt/trex
[bash]>cd /opt/trex
[bash]>wget --no-cache https://trex-tgn.cisco.com/trex/release/latest
[bash]>tar -xzvf latest

最新(前沿)版本:

[bash]>wget --no-cache https://trex-tgn.cisco.com/trex/release/be_latest

要获取特定版本:

[bash]>wget --no-cache https://trex-tgn.cisco.com/trex/release/vX.XX.tar.gz #1

说明:

1:其中 X.XX = major.minor 版本号,根据https://trex-tgn.cisco.com/trex/doc/release_notes.html

3. 第一次运行

3.1 配置环回

在将 TRex 连接到 DUT 之前,强烈建议验证 TRex 和 NIC 在环回中是否正常工作。

  1. 为获得最佳性能,请在同一NUMA 上回送接口(由同一物理处理器控制)。如果您无法检查这一点,请继续执行此步骤。

  2. 如果您使用的是基于 Intel 520-D2 NIC 的 10Gbs NIC,并且您使用 SFP+ 在同一个 NIC 上环回端口,则设备可能无法同步,从而导致无法链接。 许多类型的 SFP+(英特尔/思科/SR/LR)已经过验证工作。 如果遇到链路问题,请尝试从不同的 NIC 环回接口,或使用Cisco twinax 铜缆。

3.1.1 识别端口

使用以下命令来识别端口。

[bash]>sudo ./dpdk_setup_ports.py -s

 Network devices using DPDK-compatible driver
 ============================================

 Network devices using kernel driver
 ===================================
 0000:03:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb #1
 0000:03:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb
 0000:13:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb
 0000:13:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb
 0000:02:00.0 '82545EM Gigabit Ethernet Controller (Copper)' if=eth2 drv=e1000 unused=igb_uio *Active* #2

 Other network devices
 =====================
 <none>

说明:

1:如果您尚未运行任何 DPDK 应用程序,命令输出将显示绑定到内核或根本未绑定的接口列表。2:标记为活动的接口是您的 ssh 连接使用的接口。将此接口放入 TRex 配置文件中。

选择要使用的端口并按照下一节中的说明创建配置文件。

3.1.2 创建最小配置文件

默认配置文件名:/etc/trex_cfg.yaml.

有关 YAML 配置文件选项的完整列表,请参阅平台 YAML。

出于多种目的,从 cfg 文件夹中提供的基本配置文件模板的副本开始是很方便的:

[bash]>cp  cfg/simple_cfg.yaml /etc/trex_cfg.yaml

接下来,编辑配置文件,添加接口和 IP 地址详细信息。

例子:

<none>
- port_limit      : 2
  version         : 2
#List of interfaces. Change according to your setup. Use ./dpdk_setup_ports.py -s to see available options.
interfaces    : ["03:00.0", "03:00.1"]  #1
port_info       :  # Port IPs. Change according to your needs. In case of loopback, you can leave as is.
          - ip         : 1.1.1.1
            default_gw : 2.2.2.2
          - ip         : 2.2.2.2
            default_gw : 1.1.1.1

编辑此行以匹配您正在使用的接口。所有 NIC 必须具有相同的类型 - 不要在一个配置文件中混合使用不同的 NIC 类型。有关详细信息,请参阅trex-201。

3.2.  创建配置文件的脚本

可以使用一个脚本来自动化根据您的需要定制基本配置文件的过程。该脚本让您开始,然后您可以直接编辑生成的配置文件以获取高级选项。有关详细信息,请参阅平台 YAML。

有两种方法可以运行脚本:

  • 交互模式:脚本提示您输入参数。

  • 命令行模式:使用命令行选项提供所有参数。

3.2.1 交互模式

该脚本提供了一个可用接口列表以及与接口相关的信息。按照说明创建基本配置文件。

[bash]>sudo ./dpdk_setup_ports.py -i

3.2.2 命令行模式

运行以下命令,显示所有接口列表和接口相关信息:

[bash]>sudo ./dpdk_setup_ports.py -t
  • 和/或只有的情况下,不需要 IP 和目标 MAC。该脚本假定以下接口连接:0↔1、2↔3 等。

运行以下命令:

[bash]>sudo ./dpdk_setup_ports.py -c <TRex interface 0> <TRex interface 1> ...

如果是(或其他下一跳设备,例如),请指定路由器的 TRex IP 和默认网关或 MAC,如下所述。

争论 描述 例子

-C

通过指定接口(PCI地址或Linux名称:eth1等)创建配置文件

-c 03:00.1 eth1 eth4 84:00.0

--dump

将创建的配置转储到屏幕。

-o

将配置输出到文件。

-o /etc/trex_cfg.yaml

--dest-macs

每个接口要使用的目标 MAC。将此选项用于基于 MAC 的配置,而不是基于 IP 的配置。不要将此选项与 --ip 和 --def_gw 一起使用

--dest-macs 11:11:11:11:11:11 22:22:22:22:22:22

--ip

用于每个接口的 IP 列表。如果未指定 --ip 和 --dest-macs,则脚本假定环回连接(0↔1、2↔3 等)。

--ip 1.2.3.4 5.6.7.8

--def-gw

用于每个接口的默认网关列表。使用 --ip 选项时,还要使用 --def_gw 选项。

--def-gw 3.4.5.6 7.8.9.10

--ci

核心包括: 要使用的核心白名单。为每个 NUMA 包含足够的内核。

--ci 0 2 4 5 6

--ce

核心排除:要排除的核心黑名单。排除核心时,确保每个 NUMA 有足够的剩余。

--ci 10 11 12

--no-ht

无超线程:仅使用配置文件中指定的每个内核的一个线程。

--prefix

(高级选项)在并行实例的情况下在 TRex 配置中使用的前缀。

--prefix first_instance

--zmq-pub-port

(高级选项)在并行实例的情况下,在 TRex 配置中使用 ZMQ Publisher 端口。

--zmq-pub-port 4000

--zmq-rpc-port

(高级选项)在并行实例的情况下,在 TRex 配置中使用的 ZMQ RPC 端口。

--zmq-rpc-端口

--ignore-numa

(高级选项)忽略 NUMA 进行配置创建。此选项可能会降低性能。仅在必要时使用 - 例如,在不同 NUMA 的一对接口的情况下。

表 12. 配置文件创建脚本的命令行选项 (dpdk_setup_ports.py -c)

标签: 4x1变送器连接电缆用于cp

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台