本文内容来源于Software Defined Networking devroom2021年2月7号举办的线上会议介绍vpp在加速ipsec大象流提供的解决方案。
什么是大象流?大象流(Elephant Flow)是指在网络中持续时间长、数据量大的网络流量。互联网上非常大的连续流量;4.7%的数据包却占用了41.3%的带宽;用户空间数据平面处理IPsec逻辑(1、核隔离或限制每个核心的处理资源,包括堆栈和加解密。2、数据流亲核性);
处理IPsec 大象流的痛点:当大象流存在大量数据包时,加解密会占用大量的时间周期;Flow-to-core 亲核性总是使一个核负载很高,而其他核负载较低;一个核处理大量数据流意味着占用更多的时钟周期;当启用ipsec 放重放功能(anti-replay)单条流负载均衡到多个核会导致竞争;为了解决这些痛点,提出使用FD.io VPP ipsec解决方案。
FD.io VPP IPsec介绍:开源产品化实现的IPsec解决方案;支持单服务器1Tb IPsec处理性能;支持AH、ESP(隧道和传输)、ESP over UDP、ESP over GRE;支持主要的加密算法(AES-CBC, HMAC-SHA*, AESGCM);支持多个加密引擎插件(参见文章learning:vpp crypto 框架介紹介绍);支持基于CPU的加密(VAES)和备用硬件加速(QAT);高效且支持云内虚拟化部署。
如何加速单个ipsec大象流:通过异步加密,我们实现了高达40Gbps的单ipsec流处理能力。即使加密卸载到QAT,仍然有繁重的I/O和堆栈处理。Intel®DLB或DPDK SW eventdev提供将数据包分发到多个CPU核心的方式。从RX到TX保持包的顺序。在DLB或SW eventdev的帮助下,我们可以将大多数单流IPsec工作负载均衡到更多的核心。
上图解决方案也就是在腾讯云已经落地的ipsec调度框架,在参考链接3《CloudVPN:化繁为简,一跳入云》文章中介绍了腾讯云VPN服务巧妙地对CPU进行合理分工,将密文加解密分布到多个CPU上并行处理,然后进行保序处理。从而一举将单流吞吐量提升到3Gbps,实现业界领先。
结论:
VPP同步加密基础架构提供惊人的性能来处理IPsec 工作负载,但无法扩展到更大的流量;VPP提供异步加密基础家口,使软件和硬件卸载可以扩展IPsec单流吞吐量。支持中断模式,使其对云原生友好。VPP还提供了Cryptodev和SW scheduler异步加密引擎。两个异步加密引擎都帮助实现了40Gbps的IPsec大象流处理;为了进一步扩展单个IPsec流,我们使用Intel®DLB或DPDK Eventdev处理卸载加密和大多数IPsec堆栈到其他内核。
在公众号文章《learning:vpp crypto 框架介紹》中分析当前vpp最新版本的加解密的框架。想了解更多的细节,还需要深入研究代码。
参考链接:
1、视频链接:https://archive.fosdem.org/2021/schedule/event/sdn_ipsec_vpp/ 2、PPT链接: https://archive.fosdem.org/2021/schedule/event/sdn_ipsec_vpp/attachments/slides/4341/export/events/attachments/sdn_ipsec_vpp/slides/4341/is_your_elephant_a_gazelle.pdf 3、腾讯云CloudVPN:化繁为简,一跳入云 https://cloud.tencent.com/developer/article/223482
本文分享自 DPDK VPP源码分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!