DPDK Release 17.08

17.08新功能

1. x86 ISA的最低版本要求增加到SSE4.2

从17.08开始,DPDK要求在x86上运行的最低版本是SSE4.2。旧版本的最低要求是SSE3。

2. 增加了Service Core功能

EAL新增的Service Core功能允许DPDK在没有应用程序手动运行的情况下在lcores上运行诸如软件PMD之类的服务。 Service core基础架构使得DPDK在同一个 service lcore上运行多个服务时保持灵活性,并为应用程序提供了强大的API来配置从service lcore到service的映射。

3. 新增Generic Receive Offload API

新版支持Generic Receive Offload (GRO)API ,能够重组TCP/IPv4数据包。GRO API假定所有输入数据包都具有正确的校验和。GRO API不会更新合并数据包的校验和。如果输入数据包是IP分片的, GRO API会假定它们是完整的数据包(即具有L4包头)。

4. 新增Fail-Safe PMD

新增Fail-Safe PMD 这种虚拟装置允许应用程序支持设备的无缝热插拔。驱动详情请参阅《Fail-Safe 轮询模式驱动库指南》。(http://dpdk.org/doc/guides/nics/fail_safe.html)

5. Generic flow API (rte_flow) 新增对igb 网卡的支持

该API提供了一种通用的硬件配置方法来匹配特定的入口或出口流量,用户可以自定义规则(数量不限)来修改其行为并查询相关的计数器。
为有QUEUE处理的以太网,IPv4,UDP,TCP和RAW模式类型条目添加generic flow API 支持。igb上有四种过滤器能支持这种功能。

6. 为enic添加 generic flow API (rte_flow) 支持

新版 flow API 可支持在入口流量有QUEUE, MARK, FLAG and VOID处理的外部以太网,VLAN,IPv4, IPv6, UDP, TCP,SCTP,VxLAN 和内部以太网 VLAN, IPv4, IPv6, UDP , TCP等项目。

7. 添加Chelsio T6系列适配器支持

更新CXGBE PMD来运行Chelsio T6系列适配器。

8. 缩短了cxgbe的延迟时间并提高了性能

对cxgbe中的Tx和Rx路径进行改进以提高其性能,另外低速流也减少了延迟。

9. 更新了bnxt PMD

更新了bnxt PMD。主要改进包括:
支持MTU修改。
添加LRO支持。
添加VLAN过滤和剥离功能支持。
增加更多dev_ops支持。
增加PMD专用API主要来从PF控制VF.
更新HWRM版本到1.7.7

10. 增加mlx4驱动Rx中断支持

Rx队列现在可以配置一个中断,在下一个数据包到达时触发。

11. 更新mlx5驱动

对mlx5驱动做出以下更新:
为x86添加了矢量化的Rx / Tx突发。
增加了对flow API隔离模式的支持。
重新设计了硬件分类器中执行的flow drop操作。
改善了Rx中断管理。

12. 更新了szedata2 PMD

增加了每个物理端口对装配有多个以太网端口的固件的支持。

13. 更新了dpaa2 PMD

更新了dpaa2 PMD。主要改进包括:
增加了MAC过滤器配置支持。
增加了对Segmented Buffers的支持。
添加VLAN过滤和剥离功能支持。
改进后支持更多dev_ops
优化了数据包接收路径。

14. 调整对称crypto操作结构

crypto操作(rte_crypto_sym_op)调整如下:
删除 rte_crypto_sym_op_sess_type 字段。
用crypto操作开始时的偏移量替换了IV指针和物理地址。
将crypto IV的长度和偏移量移动到rte_crypto_cipher_xform。
删除“附加认证数据” (AAD)长度。
删除摘要长度。
从 auth 结构中删除了AAD指针和物理地址。
增加了 aead 结构,包括AEAD算法的参量。

15. 调整crypto操作结构

Crypto操作 (rte_crypto_op)调整如下:
添加 rte_crypto_op_sess_type 字段。
枚举rte_crypto_op_status 和 rte_crypto_op_type的值,修改为 uint8_t类型。
删除了 opaque_data字段。
指向rte_crypto_sym_op的指针已被替换为零长度数组。

16. 调整crypto对称会话结构

Crypto对称会话结构(rte_cryptodev_sym_session)做了以下调整:
删除dev_id 字段。
删除driver_id 字段。
删除mempool 指针mp。
用私有数据会话sess_private_data代替private指针数组标记。

17. 更新cryptodev库

增加AEAD算法专用函数和结构,不再需要使用加密与认证结合的结构。
为crypto设备驱动程序识别添加了帮助函数。
增加多设备会话支持,单个设备可用于多个驱动中。
增加了新的函数来初始化并释放同一个会话中单个驱动上的私有数据。

18. 更新了dpaa2_sec crypto PMD

增加AES-GCM和AES-CTR支持。

19. 更新了AESNI MB PMD

更新AESNI MB PMD,能够提供以下额外支持:
除了以前的16字节IV,还能够支持AES计数器模式下的12字节IV。

20. 更新了AES-NI GCM PMD

AES-NI GCM PMD从ISA-L库迁移到Multi Buffer库,因为后者现在可获得Scatter Gather List支持。该迁移需要另外增加192位密钥支持。

21. 更新了Cryptodev Scheduler PMD

增加了一个基于多核的分发模式,可以将入队crypto操作在多个slave上进行分发,以运行在不同逻辑内核上。

22. 增加NXP DPAA2 Eventdev PMD

为NXP DPAA2设备增加了新的dpaa2 eventdev驱动。此驱动详情请见“Event 设备驱动”文档。

23. 增加dpdk-test-eventdev测试应用程序

dpdk-test-eventdev工具是一个数据平面开发套件(DPDK)应用程序,可以运行各种eventdev用例。该应用程序具有通用框架,可添加新的基于eventdev的测试用例,以验证DPDK eventdev设备的功能和性能参数。

已知问题

从17.08版本开始,需要使用libnuma来编译dpdk。

API 变化

改进了ethdev库中的_rte_eth_dev_callback_process功能
将旁路函数从rte_ethdev库转移到ixgbe PMD
改编了rte_cryptodev库

ABI 变化

把rte_pci_addr中的domain字段类型改为uint32_t以遵循PCI标准
在rte_bus结构内增加了新的rte_bus实验性API
让rte_devargs 结构表示的内部设备一般化来为 bus-agnostic EAL做准备

重组crypto操作结构

重组crypto对称会话结构
重组rte_crypto_sym_cipher_xform结构
重组rte_crypto_sym_auth_xform结构
在rte_cryptodev_info 和 rte_cryptodev 结构中用uint8_t driver_id替代了dev_type枚举
把 session_mp 从 rte_cryptodev_config.中移除

共享程序库版本

此版本中加入了带加号的代码库。

librte_acl.so.2
librte_bitratestats.so.1
librte_cfgfile.so.2
librte_cmdline.so.2
+ librte_cryptodev.so.3
librte_distributor.so.1
+ librte_eal.so.5
+ librte_ethdev.so.7
+ librte_eventdev.so.2
+ librte_gro.so.1
librte_hash.so.2
librte_ip_frag.so.1
librte_jobstats.so.1
librte_kni.so.2
librte_kvargs.so.1
librte_latencystats.so.1
librte_lpm.so.2
librte_mbuf.so.3
librte_mempool.so.2
librte_meter.so.1
librte_metrics.so.1
librte_net.so.1
librte_pdump.so.1
librte_pipeline.so.3
librte_pmd_bond.so.1
librte_pmd_ring.so.2
librte_port.so.3
librte_power.so.1
librte_reorder.so.1
librte_ring.so.1
librte_sched.so.1
librte_table.so.2
librte_timer.so.1
librte_vhost.so.3

原文:DPDK开源社区

发表评论

电子邮件地址不会被公开。 必填项已用*标注