• TRex学习之旅一


    TRex是一种快速、真实的开源流量生成工具,运行在基于DPDK的标准Intel处理器上。它支持有状态和无状态流量生成模式。

    有状态和无状态的操作模式是什么?

    “Stateful”模式用于测试网络设备,它可以保存每个流的状态(5元组)。通常,这是通过在被测设备的成对接口上注入预先记录的捕获文件,并动态更改src/dst IP/端口来实现的。在高级状态模式下,它通过在TCP/UDP协议之上注入L7数据来完成。

    “无状态”模式旨在测试不管理每个流的任何状态(而是基于每个数据包操作)的网络设备。这通常通过向被测设备注入定制的数据包流来实现。

    传统上,网络基础设施设备使用商业流量生成器进行测试,而性能则使用诸如每秒数据包数(PPS)和无丢弃率(NDR)等指标进行测量。随着网络基础设施功能变得越来越复杂,有状态流量生成器变得非常必要,以便使用更真实的应用程序流量模式场景进行测试。需要现实且有状态的流量生成器,以便:

    1、测试并提供更真实的性能数字。

    2、基于实际用例的软件和硬件的设计和架构。

    当前的挑战:

    成本:商用全流量发电机价格昂贵

    扩展:带宽不能很好地随功能复杂性扩展

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

    灵活性:当需要灵活性和更改时,商业工具不允许灵活性

    价值:

    不同团队的资本支出(capEx)较高

    低规模的测试和外推成为一种常见的实践,它是不准确的,隐藏了现实生活中的瓶颈和质量问题。

    不同功能/平台团队的基准测试和结果方法论。

    由于测试工具特性依赖而导致的开发和测试延迟。

    在开发不同的特别工具和测试方法上投入资源和精力。

    TRex通过创新和可扩展的软件实现解决了这些问题,利用了标准和开放的软件,并在COTS x86/ARM服务器上工作。

    TRex 简介:

    TRex是一个开源、低成本、有状态和无状态的流量生成器,由DPDK提供支持。它生成L3-7流量,并提供商业工具提供的一体化工具功能。

    TRex无状态功能包括支持多个流、更改任何数据包字段的能力,并提供每个流/组的统计信息、延迟和抖动。

    高级有状态功能包括对模拟L7流量的支持,以及功能齐全的可扩展TCP/UDP支持。

    TRex仿真功能包括客户端协议,即ARP、IPv6、ND、MLD、IGMP、ICMP、DOT1X、DCHPv4、DHCPv6、DNS,以模拟客户端和服务器的规模。

    TRex可以在一台服务器上扩展到200Gb/s。

    Python自动化API。

    低成本。

    虚拟化支持,使TRex能够在没有物理NIC的完全虚拟环境中使用,并提供以下示例用例:

    亚马逊AWS

    笔记本电脑上的TRex

    docker

    TRex能否在具有虚拟NIC的虚拟机监控程序上运行?

    对,目前需要2-3核和4GB内存。对于VM用例,如果需要(以支持较少并发流为代价),可以通过使用以下配置显著减少内存需求

    限制:

    使用vSwitch将最大PPS限制在1MPPS左右(DPDK-OVS/VPP可以解决此问题)

    延迟结果将不准确。

    对于高性能设置(多rx队列),最好在trexd_cfg中添加 rx_desc: 4096。yaml请参阅platform\u yaml\u cfg\u参数和软件模式

    当前支持的TRex DPDK接口:

    支持物理DPDK 1/2.5/10/25/50/40/100Gbps接口(Broadcom/Intel/Mellanox/Cisco VIC/Napatech/Amazon ENA)

    虚拟化接口支持(virtio/VMXNET3/E1000)

    SR-IOV 支持实现最佳性能

    有状态TRex功能集(STF)

    此功能用于检查流量的有状态功能。

    高规模的实际流量(客户端数量、服务器数量、带宽)

    延迟/抖动测量

    流量排序检查

    NAT、PAT动态翻译学习

    了解TCP SYN序列随机化-vASA/火力用例

    控制器测试的群集模式

    IPV6内联替换

    一些跨流支持(例如RTSP/SIP)

    无状态模式-STL​​​​​​​ 功能集

    此功能用于执行路由/交换的无状态功能,例如Cisco VPP/OVS。它基于数据包。

    大规模—每个核心支持大约每秒1000-3000万个数据包(Mpps),可根据核心数进行扩展。

    配置文件可支持多个流,可扩展到10K并行流。

    每个流支持:

    数据包模板-能够使用Scapy构建任何数据包(包括格式错误的数据包,例如:MPLS/IPv4/Ipv6/GRE/VXLAN/NSH)

    更改数据包内任何字段的能力(例如:src\u ip=10.0.0.1-10.0.0.255)

    更改数据包大小的能力(例如:随机数据包大小64-9K)

    模式-连续/突发/多突发支持

    速率,pps中的速率规范、线路速率百分比或L1/L2带宽,可以指定为:

    每秒数据包数(例如:14MPPS)

    一级/二级带宽(例如:500Mb/s)

    接口链接百分比(例如:10%)

    支持基本的类似HLT API的概要文件定义

    操作-流可以触发流

    交互式支持-快速控制台、GUI

    每个接口的统计信息

    硬件/软件支持的每个接口或每个流的统计信息

    每个流的延迟和抖动

    速度极快的Python自动化API

    L2仿真Python事件驱动框架,包括ARP/ICMP/ICMPv6/IPv6ND/DHCP等示例。

    该框架可以通过新协议进行扩展

    使用BPF过滤器捕获/监控流量-无需Wireshark

    通过将流量重定向到Wireshark捕获网络流量

    PCAP文件导入/导出,支持DPI的巨大PCAP文件传输(例如1TB PCAP文件)

    多用户支持

    使用BIRD集成的路由协议支持BGP/OSPF/RIP

    以下示例显示了为连续、突发和多突发流量配置的三个流。

    新的JSON-RPC2体系结构支持交互模式

    更多信息可在此处找到:

    TRex Documentation (cisco.com)

    高级有状态模式-ASTF 功能集

    通过新的高级可伸缩TCP/UDP支持,TRex使用TCP/UDP层生成L7数据,模拟L7应用程序,例如HTTP/HTTPS/Citrix。

    多配置文件支持和分组流的能力。

    准确的TCP实现。

    能够更改L7应用程序中的字段-例如,更改HTTP用户代理字段。

    这将打开以下新功能:

    DUT终止TCP堆栈时的工作能力(例如压缩/解压缩)。

    在这种情况下,每侧都有不同的TCP会话,但L7数据几乎相同。

    能够在客户端模式或服务器模式下工作。

    这样,TRex客户端可以安装在网络上的一个物理位置,TRex服务器可以安装在另一个物理位置。

    性能和规模:

    高带宽-200gb/s,具有许多实际流(不是一个大象流)

    高连接率-MCP订单

    扩展到数百万个活跃的既定流量

    更多信息可在此处找到:

    TRex upcoming Stateful scalable TCP support - Cisco Community

    TRex Advance stateful support (cisco.com)

    https://trex-tgn.cisco.com/trex/doc/trex_astf_vs_nginx.html

    你能用它做什么

    有状态:

    支持基准测试和压力特性/设备:

    NAT

    DPI

    负载平衡器

    网络缓存设备

    防火墙

    IP/ID

    混合应用程序级流量/配置文件(HTTP/SIP/视频)

    无限并发流,仅受内存限制

    无状态的:

    基准/应力vSwitch RFC2544

    TRex仿真服务器 EMU

    模拟协议的客户端,以模拟客户端的规模。

    能实现客户端L3协议,如ARP, IPv6, ND, MLD, IGMP,以模拟大规模的客户端和服务器。

    这个项目不局限于客户端协议,但它是一个良好的开端,该项目提供了一个框架来实现和使用客户端协议。

    该框架对于控制平面协议来说足够快,并将与TRex服务器一起工作。

    在TRex服务器上运行非常快的L7应用程序(基于TCP/UDP),一个线程的TRex-EMU可以实现高速率的客户端创建/删除。

    前面提到的每个协议都是作为插件实现的。这些插件是自包含的,可以使用事件总线将事件发送给另一个,或者发送给框架 (例如,DHCP信号表示它有一个新的IPv6地址)。

    这个框架有一个事件驱动的架构,这样它就可以扩展,该框架还提供了一个协议插件基础设施,例如RPC、计时器、包解析器、仿真等。

    主要特性:

    快速创建客户机/拆卸,一个线程3~5K/秒。每个线程以每秒约3K个客户端的速度快速创建/卸载客户端。

    活动客户机/命名空间的数量仅受服务器上内存的限制。

    PPS (Packet per second)的取值范围为3 ~ 5 MPPS。

    通过JSON-RPC公开的Python客户端API。

    交互式支持-与TRex控制台集成。

    模块化设计。每个插件都是独立的,可以单独测试。

    基于BSD和UDP的用户空间TCP。

    TRex-EMU支持以下协议:

    Plug-inDescription

    ARP

    RFC 826

    ICMP

    RFC 777

    DHCPv4

    RFC 2131 client side

    IGMP

    IGMP v3/v2/v1 RFC3376

    IPv6

    IPv6 ND, RFC 4443, RFC 4861, RFC 4862 and MLD and MLDv2 RFC 3810

    DHCPv6

    RFC 8415 client side

    TRex BIRD集成

    Bird是一个开源实现,用于在类Unix操作系统上路由Internet协议包。

    Bird Internet路由守护程序是一个旨在开发功能齐全的linux动态IP路由守护程序的项目。它被集成到TRex中并与之并行运行,以便与Python自动化API一起利用其功能。

    几秒钟内数百万条路由的规模(取决于协议规模,如BGP)

    与Multi-RX软件模型集成,支持BIRD协议的动态过滤器,同时保持高流量。

    最多可支持10K veth(虚拟接口),每个接口具有不同的QinQ/VLAN配置。

    用于推送配置和读取统计信息的简单自动化Python API。

    除其他功能外,BIRD还支持:

    IPv4和IPv6(使用内核veth)

    BGP(eBGP/iBGP)、RPKI(RFC 6480)/RFC 6483记录类型为pv4、ipv6、vpn4、vpn6、多播、flow4、flow6

    RFC 4271-边界网关协议4(BGP)

    RFC 1997-BGP社区属性

    RFC 2385-通过TCP MD5签名保护BGP会话

    RFC 2545-对IPv6使用BGP多协议扩展

    RFC 2918-路由刷新功能

    RFC 3107-在BGP中携带标签信息

    RFC 4360-BGP扩展社区属性

    RFC 4364-BGP/MPLS IPv4虚拟专用网络

    RFC 4456-BGP路由反射

    RFC 4486-BGP停止通知消息的子代码

    RFC 4659-BGP/MPLS IPv6虚拟专用网络

    RFC 4724-BGP的优雅重启机制

    RFC 4760-BGP的多协议扩展

    RFC 4798-通过IPv4 MPLS连接IPv6孤岛

    RFC 5065-作为BGP的联合会

    RFC 5082-通用TTL安全机制

    RFC 5492-使用BGP发布功能

    RFC 5549-使用IPv6下一跳播发IPv4 NLRI

    RFC 5575-流量规范规则的传播

    RFC 5668-4-八位字节作为特定BGP扩展社区

    RFC 6286-作为宽唯一BGP标识符

    RFC 6608-BGP有限状态机错误的子代码

    RFC 6793-BGP支持4个八位组作为数字

    RFC 7311-BGP的累积IGP度量属性

    RFC 7313-增强的BGP路由刷新功能

    RFC 7606-修订了BGP更新消息的错误处理

    RFC 7911-BGP中多路径的播发

    RFC 7947-Internet Exchange BGP路由服务器

    RFC 8092-BGP大型社区属性

    RFC 8203-BGP管理关机通信

    RFC 8212-无策略的默认EBGP路由传播行为

    OSPF(v2/v3)RFC 2328/RFC 5340 开放最短路径优先协议

    RIP-RIPv1(RFC 1058)、RIPv2(RFC 2453)、RIPng(RFC 2080)和RIP加密身份验证(RFC 4822)。 路由信息协议

    双向转发检测(BFD)

    IPv6路由器播发

    静态路由

    表间协议

    软重构

  • 相关阅读:
    基于Java毕业设计云盘系统修改密码演示2021源码+系统+mysql+lw文档+部署软件
    5.jeecg的登录及权限(jwt+shiro)
    2.canal服务器配置及java客户端
    【Android - 技术期刊】第005期
    创邻科技入选全球知名市场资讯研究机构IDC最新研报
    以太坊 layer2: optimism 源码学习 (一)
    【element-plus】解决el-cascader在懒加载模式 使用filterable无法搜索
    (汇总)系统设计 - 我们如何通俗的理解那些技术的运行原理 - 汇总篇
    【洛谷题解/NOI2001】P2704/NOI2001炮兵阵地
    AI Agent涌向移动终端,手机智能体开启跨端跨应用业务连接新场景
  • 原文地址:https://blog.csdn.net/qq_35029061/article/details/125392377