基于FPGA可编程网卡的高性能采集方案

架构困境:性能的天花板触手可及

在过去的20多年中,处理器的性能以每年大约55%速度快速提升,而内存性能的提升速度则只有每年10%左右。内存瓶颈导致高性能处理器难以发挥出应有的功效,这对日益增长的高性能计算形成了极大的制约。这种严重阻碍处理器性能发挥的内存瓶颈称之为"内存墙"。

美国桑迪亚国家实验室(Sandia National Laboratories,SNL)所进行的一项多核处理器性能仿真测试结果表明:由于“内存墙”的制约,超过8核心之后,处理器性能几乎没有提升,而16核处理器的性能甚至不升反降。由此可见,随着处理器核心的不断增多、处理性能的不断提升,“内存墙”产生的瓶颈效应对基于多核处理器的高性能计算的制约将日趋严重。

内存墙问题在国产化硬件平台上表现尤为突出。由于国产化处理器技术与INTEL平台还有较大差距,单核处理性能受限,在针对国产化服务器平台,一般采用NUMA 多节点模式增加CPU个数来实现多核心堆叠,常见有128个及以上核心。

随着移动互联网、高清视频、云计算等新业务的广泛应用,网络带宽常年保持着超过40%的年增长率,这对于需要实时处理网络流量的设备在性能方面提出了巨大的挑战。近几年来CPU的性能提升不到10%/年,远低于摩尔定律的预测值。

很多企业在开发网络监控和网络安全解决方案时,采用基于标准网卡构建 DPDK+Hyperscan方案,应用程序的能力受到诸多限制,除了上述的CPU能力和内存墙两大问题,还有业务处理的复杂度也会直接影响系统的处理性能。 在这种情况下,标准网卡是无法同时解决这三大问题的,可能导致在采集环节和处理环节时报文丢失,数据的准确性和完整性遭遇挑战。

系统的运维成本也是客户不得不考虑的一个重要问题。常规架构的处理能力接近了天花板,不断膨胀的服务器集群使得机房占地、设备功耗都成为沉重负担,简单测算可知: 一台服务器运行4-5年的能耗开支相当于该服务器的采购成本。

解决方案: 低占用高性能、流量卸载

受益于近年可编程门阵列(FPGA)技术的发展,我们得以设计全新的软硬结合的高性能流量采集方案用于替代标准网卡的DPDK+Hyperscan方案。以占用较低的内存IO和CPU能力,线速捕获网络报文,并完成特定功能的业务卸载,用户通过API完成后续处理。采用这项领先技术可为网络流量分析构建在标准服务器,特别是国产化硬件平台架构上实现高密度计算的解决⽅案。有助于解决一直以来国产化平台全流量采集性能相对偏低、稳定性不足的难题。

产品优势:与DPDK+Hyperscan对比

  • 根据真实网络环境中完成的测试表明,使用智能网卡能使整体系统性能提升2-3倍,减少服务器部署规模的同时,也大量节约了机房空间、电源、冷却和管理等运维成本 (OPEX)节省系统成本,具有高性价比。
  • 高性能转发:使用静态buff ring,减少了网卡需要进行IO读取主机desc ring来获取缓存地址的带宽,将带宽更加重复利用与采集,并且减少了对主机内存的访问,避免对上层CPU防存的干扰;集中式释放模式, 避免多次少量释放ring bell的IO、CPU占用。通过一系列优化技术,保证智能网卡在线速采集转发报文的同时对主机内存I/O,CPU占用率小。
  • 国产化支持:由于国产CPU单核处理性能受限,国产服务器一般采用NUMA 多节点模式增加CPU个数来实现多核心堆叠,导致内存墙问题更加突出。使用标准网卡可能出现性能陡然下降的情况;智能网卡经过优化可以将内存访问进行流水化,从而缩小内存访问时延使采集卡DMA上传性能得到大量提升,达到与INTEL平台相同的采集性能。
  • 实现真正的零拷贝:标准⽹卡虽然使⽤DPDK技术将报⽂收到⽤户空间,由于动态内存,需要频繁的缓存队列成员申请与释放,在后端业务有较长处理时间时需要将报文进行拷贝存储;使用智能网卡可以配置超大报文缓存队列,使服务器能真正实现零拷贝情况下占用pkt buffer进行一定时间的操作再释放缓存。
  • 高精确度的硬件时间戳:使用多核网卡硬件接口PTP时间戳,比在收取报文后服务器获取时间打上的软件时间戳更加精确,更能体现网络报文的实际情况;而且能减少服务器为获取时间产生的CPU占用。
  • 基于会话或者特定策略的快速转发:对于某些防火墙、IDS/IPS等网安应用,真正需要处理的网络流量占比非常小,常见使用DPDK方案,无法在网卡端识别哪些流量需要处理,只能把所有流量收上来,再在服务器上做筛选清洗,大部分流量再返回到原链路上,浪费了大量的CPU和IO资源。使用智能网卡在入口前端预处理,可以将大部分正常流量转发,只将少部分的关注流量上传到主机,可显著提升系统性能。
  • 完整的RSS功能支持:标准网卡只能对普通报文做RSS分发,对于比如隧道报文无法解析,导致无法保证同一个会话送到同一个CPU队列,常见做法是服务器用专门的核心收包,然后做二次分发。智能网卡可自动解析MPLS、GRE等隧道头部,提取正确的五元组做同源同宿分发到主机多个队列,将同一个会话的报文送到同一个CPU队列处理,提高主机cache一致性。
  • 定制化卸载:标准网卡相比,智能网卡可定制化编程,卸载服务器处理。
上一篇:一篇文章说清楚mysql索引


下一篇:数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql