FPGA+x86构建高性能国产网络测试仪竞技之道

2024-02-03 15:10

本文主要是介绍FPGA+x86构建高性能国产网络测试仪竞技之道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

众所周知,以太网已经深入我们的生活无处不在,企业、校园、大数据中心和家庭等都离不开网络,否则我们的生活将受到严重的影响。

以太网的接口速率也是迅速发展:10M、100M、GE、10GE、40GE、100GE,到目前逐步成熟的2.5GE、5GE、25GE、50GE甚至400GE,基本是每10年速率10倍增长的发展趋势。

很多数据中心和运营商也已准备将其网络从100GE扩展到400GE,以支持第五代无线技术(5G)、人工智能(AI)、虚拟现实(VR)、物联网(IoT)、自动驾驶汽车等新兴技术所需的带宽和响应时间。

然而任何新型网络接口速率、网络设备的研发至形成最终产品及网络新技术从研究到落地,每个阶段都离不开测试验证,而且已经给测试带来了极大的挑战。同时,高性能的稳定的高速率网络测试仪的发展,却有点跟不上网络设备的研发需求。

所以高速率、稳定的网络测试仪的发展刻不容缓,尤其是掌握核心技术的国产化网络测试仪产品。

国内电信运营商进行的大规模的数据中心交换机或是核心路由器的测试场景对测试仪提出了极高的要求。

  • · 稳定性
  • 具备长时间稳定打流、统计及协议仿真的能力,如7x24小时长时间稳定运行;
  • · 可重复性
  • 同样的物理环境及网络条件,多次测试结果必须一致;
  • · 准确性
  • 测试结果必须能准确的反映被测设备或系统的真实指标情况,如吞吐量指标、时延和抖动的精确性、流量调度的精确性、流量统计的精确性;
  • · 高性能
  • 支持所有包长(如64-16000字节或IMIX混合包长)线速发流及统计的能力、超高的路由交换协议仿真能力(如多session数的BGP/OSPF/ISIS/PPPOE/IPOE/EVPN等);多端口(如上百个以上的100GE/10GE)多业务(如IPV4/IPV6/MPLS/Multicast)流量场景仿真能力;
  • · 标准性
  • 具备符合国际测试标准RFC-2544,RFC-2889、RFC3511、RFC3918等;
  • · 丰富的接口类型
  • 支持1GE/2.5GE/5GE/10GE/
  • 25GE/40GE/50GE/100GE/400GE等多种接口类型,支持多机框级联搭建大规模的测试场景。

而目前市面上存在的网络测试仪主要有两种架构。

基于x86+DPDK+网卡的测试仪

X86的编程相对容易,调试手段更加丰富,成本有一定的优势,在要求不高的功能性测试方面,是一个不错的选择。

基于FPGA+x86混合的测试仪

FPGA+x86这样的软硬集合的测试系统,则适用于高性能、全覆盖、测试场景规模大、测试业务复杂的测试场景。

FPGA+x86的混合架构,一方面利用了FPGA越来越强大的数据硬件层面的并行性,另一方面也结合了CPU在控制层面的处理灵活性,同时由于FPGA和CPU本质上都是可编程的系统,根据业务处理的需要,可以在FPGA硬件和CPU软件之间灵活地移动业务划分边界,实现整个业务流程的全面优化。

我们按照前面所说的电信运营商的复杂测试场景要求,对两种架构的测试仪进行一个全面的对比分析如下:

64-16000字节包长的线速发流及统计能力

x86+DPDK+网卡:以图示的100G网络为例,在64字节包长的情况下,大概每秒会收发150M个数据包,以目前的CPU的计算和存储存取能力是无法处理的,而基于FPGA架构的测试仪没有此限制。根据DPDK官网公开发布的最新数据(2019·10·9)【数据来源:DPDK官网 www·dpdk·org】,采用图1的系统配置,可以明显看出在64,128,256等小字节情况下无法做到100G线速收发包;

FPGA+x86:所有字节可以做到线速发包与统计。

图1. X86+DPDK测试系统配置

所能达到的小字节包长线速性能如下图所示(下图 - X86系统的各包长测试性能)。

时延和抖动的精确性

时延测试的精度在网络测试中是非常重要的指标。

x86+DPDK+网卡:X86系统是面向通用计算的系统,它本身的基准时钟精度就不高,同时OS的调度误差至少在us量级;如果x86系统的NIC不支持在物理层插入时间戳的话,需要由软件系统来处理网络时延,这将带来进一步的误差;所以通常网络测试需要的精确至10ns量级的时延难以在面向计算的通用x86平台上实现;

FPGA+x86:在FPGA平台上,通过0.1~0.001PPM精度的晶振,产生高达400M的时钟,可以将时延的精度控制在2.5ns数量级别。

存储系统灵活性

x86+DPDK+网卡:x86系统面向通用计算,目前主流的内存系统是DDR4内存,带宽大但是访问延迟也大,根据读写访问模式的不同,可能会带有延迟抖动;

FPGA+x86:FPGA的内存,可以根据需要组合片上RAM(可以实现cache功能)+DDR+QDR+RLDRAM等各种内存技术,优化带宽需求型和延迟访问需求型。

协议加速的能力

x86+DPDK+网卡:无额外资源来实现TCP offloading等协议加速功能;

FPGA+x86:FPGA是硬件的可编程系统,可以根据硬件资源的多少,以及业务处理的需要,在协议处理方面和x86系统灵活地划分接口界限,实现TCP offloading等协议加速功能,把协议处理中的计算密集型的无状态任务在硬件层面并行化,可以大大增强整个系统的处理能力。

2-3层流量调度的精确性

x86+DPDK+网卡:x86系统在高速端口上无法实现小字节包长线速发流,更谈不上精准的流量调度了;

FPGA+x86:面对测试业务流量越来越复杂和规模越来越大的交换机、路由器,FPGA系统架构下支持产生成千上万条流(比如高端测试仪中典型的64K条流),并且可以对每条流之间的带宽比例、发送调度模式做到精确控制,甚至精确到小数点后面5位。

统计的实时性能和准确性

x86+DPDK+网卡:CPU的测试功能软件实现本质上是一个串行的指令集合,随着多核的超线程等新技术的实现,在指令级别可以实现部分的并行,但是对于一些统计数据,比如实时的每秒收发帧数等,至少是由两个参数来定义的(一定的时间间隔delta和该间隔内的收发包数),若是这两个参数的读取是在一个CPU内核上实现的,则指令的串行特性必然带来很大的误差;若是这两个参数的读取是在两个内核上实现的,则目前的CPU技术难以实现内核之间ns级别的同步,同样带来统计值的不精确;

FPGA+x86:FPGA内部,通过硬件编程技术,可以很轻松地实现统计值快照功能,严格保证上述两个参数的读取是精确对应的。

系统可扩展性

x86+DPDK+网卡:对于大规模的被测系统,无论是x86的软件实现还是FPGA+X86这样的混合系统,单机都无法完成测试任务,系统级联并且在10ns级别实现同步是必然的选项。x86系统面向通用计算,可以通过运行NTP的协议可以实现多机同步,但是NTP的同步精度无法达到时延测试业务的要求;

FPGA+x86:在FPGA+x86的混合系统中,通过FPGA可以实现本地线缆级联/GPS/1588v2等高精度同步技术,保证时间测试精度。

另外,在FPGA+x86混合系统的实现中,2-3层的流量处理在FPGA内实现,不需要经过CPU的协议栈或者上层应用,CPU只需实现轻量级的配置下发、界面呈现等运算,避免了CPU在线速收发流处理方面的天然缺陷;在X86一侧,也可以灵活部署DPDK技术,由X86系统实现经过加速后的纯协议处理部分,将FPGA和x86的优势组合起来,实现高效的业务处理。

显而易见,采用FPGA+x86混合系统是构建高性能网络测试仪的最佳选择。

  • 近年来,国外以太网测试技术发展迅速,新产品层出不穷,高速率高性能测试软硬件平台凭借多年的技术积累,美国的Spirent、keysight两家公司在以太网测试领域长期占据全球主导地位,在本行业内走在世界前列。
  • 国内对以太网测试技术的研究始于21世纪初,经过十几年的努力,相关测试产品的自主设计开发能力也取得了长足进步。

网络测试仪采用的是机箱式结构+可插拔板卡的形式,硬件总体方案采用分布式计算架构,在逻辑上分为数据平面和管理平面,在物理单元上将测试模块和主控模块独立设计,使用FPGA+x86混合系统的架构来实现高性能网络测试仪的目标。

这篇关于FPGA+x86构建高性能国产网络测试仪竞技之道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/674544

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的