FD.io VPP项目中的IPsec加速使用指南

作者简介:Radu Nicolau是英特尔的网络软件工程师。 他的工作目前专注于IPsec相关的数据平面功能和库的开发。 他的贡献包括VPP IPsec堆栈中AES-GCM加密算法的启用,IKEv2启动器对VPP的支持以及DPDK中的内联IPsec的启用。

文章转载自DPDK与SPDK开源社区

简介:本文介绍基于数据平面开发工具包(DPDK)Cryptodev框架上的FD.io VPP项目中的IPsec加速改进。文中简要介绍了FD.io,VPP,DPDK和DPDK Cryptodev库,并展示了它们如何结合以提升IPsec的性能和功能。此外,文中还展示了如何安装,构建,配置和运行带Cryptodev的VPP,以及哪些方面的性能可以得到提升。

背景:
FD.io(the Fast Data Project),快速数据项目是旨在为开源软件提供高性能网络解决方案的的综合项目。

VPP( the Vector Packet Processing library),矢量数据包处理库,是FD.io中的核心项目之一。 VPP是一种可扩展的框架,为通用CPU提供产品级质量的用户空间交换机/路由器功能。

VPP的默认实现包括IPsec功能,该功能依赖于OpenSSL库,如图1所示。

图1. VPP中的默认IPsec实现
虽然此实现功能丰富,但从性能角度来看并不是最佳的。在VPP 17.01中,IPsec实施已扩展到可以支持DPDK的Cryptodev API,以提升其性能和功能。

DPDK是用于快速数据包处理的用户空间库。VPP将其作为 I / O层的选项之一。

DPDK Cryptodev库提供了用于管理和配置硬件和软件加密轮询模式驱动程序的加密设备框架,并定义了支持多种不同Crypto操作的通用API。
VPP中的扩展DPDK Cryptodev IPsec实现架构如图2所示。

图2. VPP中的DPDK Cryptodev IPsec实现
在VPP中启用DPDK Cryptodev可以提升常见IPsec加密和认证算法的性能,包括在VPP默认实现中无法启用的AES-GCM。

正因如此,启用DPDK Cryptodev功能不仅可以提高性能,同时还被赋予VPP更多选择,提升其灵活性,例如:

  • 使用英特尔®QuickAssist技术(英特尔®QAT)技术的设备,用于硬件卸载所有支持算法,包括AES-GCM。
  • IPsec库的英特尔®多缓冲加密器,用于大幅优化软件实施。
  • 英特尔®智能存储加速库(英特尔®ISA-L),用于大幅优化AES-GCM算法的软件实施。

基于英特尔®QuickAssist技术的加密轮询模式驱动程序可提供对各种硬件加速器设备的支持。更多信息,请参阅《英特尔QuickAssist技术的DPDK文档》。(http://dpdk.org/doc/guides/cryptodevs/qat.html

使用DPDK Cryptodev构建VPP

想试用DPDK和Cryptodev支持的VPP,您可以下载并构建VPP,如下所示:
$ git clone
$ cd vpp
$ git checkout v17.04
$ vpp_uses_dpdk_cryptodev_sw=yes make build-release -j
请注意,构建命令行需使DPDK Cryptodev能够支持软件优化库和特定的VPP版本。构建过程将自动下载并构建VPP,DPDK和所需的软件加密库。

要使用DPDK Cryptodev启动VPP,请使用以下命令:
$ make run-release
STARTUP_CONF=/vpp_test/vpp_conf/startup.conf
“startup_conf”路径应当根据终端用户环境中的特定位置进行相应更改。

用DPDK Cryptodev测试VPP
图3展示了一个典型的测试配置。

图3.测试系统设置

如图3所示,Pktgen(http://pktgen-dpdk.readthedocs.io/en/latest/getting_started.html)
是一个基于DPDK的软件流量生成器,它在此配置中用于测试VPP">http://pktgen-dpdk.readthedocs.io/en/latest/getting_started.html)是一个基于DPDK的软件流量生成器,它在此配置中用于测试VPP IPsec。
在这个例子中,我们使用了以下硬件配置:
•1个英特尔®酷睿™i7-4770K系列处理器,3.5 GHz
•2个英特尔®以太网控制器10千兆位82599ES网卡,10G,2个端口
•1个英特尔®QuickAssist适配器8950
用于测试的VPP ”startup.conf” 配置如下所示:

配置文件支持这些配置选项:
1.默认的VPP + OpenSSL选项
2.使用优化的Multi-Buffer软件库的Cryptodev
3.使用基于英特尔QuickAssist技术的硬件加速的Cryptodev

图4中的示例“startup.conf”文件设按系统配置设置。设备“0000:06:00.0”和“0000:06:00.1”是网络端口,“0000:03:01.1”和“0000:03:01.2”是基于Intel QuickAssist技术的设备VF(虚拟功能) 。在复制测试时,这些配置应当根据终端用户系统进行相应更改。

用于测试的CPP“ipsec.cli”文件如下所示:

该文件设置网络接口和IPsec配置。

在上面显示的配置中,目标IP为“192.168.40.40”的接口“TenGigabitEthernet6 / 0/0”上的传入数据包将使用AES-CBC-128算法进行加密,并使用SHA1-96算法进行验证。然后数据包在“TenGigabitEthernet6 / 0/1”接口上发送出去。同样的,配置应当根据终端用户的环境进行相应调整。

使用Pktgen流量生成器,其被配置用以发送与上述IPsec配置(源192.168.20.20,目标192.168.40.40,端口80以及可变大小为64,128,256,512和1024的数据包)相符合的数据包,性能数据如图4所示。请注意,所显示的数据仅用于示例,实际值取决于硬件配置和软件版本。 “MB”数据是指多缓冲区加密库,一个优化的软件库。

图4.不同配置的吞吐量与数据包大小的示例

图4中的示例数据显示了在软件优化库使用上的显著提升和使用硬件卸载方面更大程度的提升,吞吐量受到线速而非处理能力的限制。

结论
本文概述了VPP中的DPDK Cryptodev框架,并展示了它如何用于提升VPP IPsec实施的性能和功能。

本文翻译自 Intel Developer Zone,点击链接可查看英文版:https://software.intel.com/en-us/articles/get-started-with-ipsec-acceleration-in-the-fdio-vpp-project


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/21099.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于18-07-06
0