
DPDK18.02 重磅发布,快看看新增了哪些功能吧~
增加了允许退出时释放内部EAL资源的功能。
在rte_eal_init()运行期间,EAL从巨页分配内存使其核心库能够执行任务。rte_eal_cleanup()函数可以释放这些资源,确保没有巨页内存泄漏。所有DPDK应用程序在退出之前都应当运行rte_eal_cleanup(),否则可能会出现巨页泄漏,导致次级进程初始化出现故障。
增加了igb,ixgbe和i40e以太网驱动程序以支持带flow API的RSS。
增加对igb, ixgbe和i40e支持使用rte_flow API的现有RSS 配置
允许使用i40e rte_flow API的队列区域配置
更新了i40e驱动程序以支持PPPoE / PPPoL2TP。
更新了i40e PMD,以支持带PPPoE / PPPoL2TP配置文件的的PPPoE / PPPoL2TP,可通过动态设备个性化(DDP)进行编程。
增加了i40e的MAC回送支持。
为了支持用户请求的测试任务,增加了i40e的MAC回送支持。它将根据设备配置设置Tx -> Rx回路链接。
增加了对运行时决定每个i40e VF队列数的支持。
每个VF的队列数由PF决定。如果i40e PF的PCI地址为aaaa:bb.cc,则可以使用EAL参数配置每个VF的队列数,如-w aaaa:bb.cc,queue-num-per-vf=n。值n可以是1,2,4,8或16。如果不配置,则每个VF的队列数默认为4。
更新mlx5驱动程序。
更新了mlx5驱动程序,包括以下变化:
允许编译作为插件使用,从而消除了对rdma-core的强制依赖。在特殊编译的情况下,只有在Mellanox设备正在被使用的情况下才会加载rdma-core库。对于创建二进制文件可以用PMD,并不要求每个终端用户都安装rdma-core。
改进了多段数据包性能。
修改了驱动程序名称,使用与OVS-DPDK API兼容的PCI地址。
物理端口数据包/字节计数器的统计信息扩展。
转换为新的卸载 API。
支持设备移除检查操作。
更新了mlx4驱动程序。
更新了mlx4驱动程序,包括以下变化:
编译作为插件使用,从而消除了对rdma-core的强制依赖。在特殊编译的情况下,只有在Mellanox设备正在被使用的情况下才会加载rdma-core库。对于创建二进制文件可以用PMD,并不要求每个终端用户都安装rdma-core。
改进了数据路径性能。
转换为新的卸载 API。
支持设备移除检查操作。
在Solarflare网卡PMD中增加了NVGRE和UDP隧道支持。
增加了对NVGRE,VXLAN和GENEVE隧道的支持。
增加了对UDP隧道端口配置的支持。
增加了隧道数据包分类。
增加了内部校验和卸载。
增加了AVF(自适应虚拟功能)网卡 PMD。
增加了一种新的名称为AVF(自适应虚拟功能)的网卡PMD,支持Intel® 以太网自适应虚拟功能(AVF),具有以下功能:
基本的Rx / Tx突发
SSE向量化Rx / Tx突发
混杂模式
MAC / VLAN卸载
校验和卸载
TSO卸载
巨型帧和MTU设置
RSS配置
数据统计
Rx / Tx描述符状态
链接状态更新/事件
增加了从vhost-net到vhost-user的实时迁移功能。
增加了vhost-user的功能支持,从而实现从vhost-net到vhos-user的实时迁移。这些功能包括:
VIRTIO_F_ANY_LAYOUT
VIRTIO_F_EVENT_IDX
VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_HOST_ECN
VIRTIO_NET_F_GUEST_UFO, VIRTIO_NET_F_HOST_UFO
VIRTIO_NET_F_GSO
在virtio pmd中增加了VIRTIO_NET_F_GUEST_ANNOUNCE功能。当虚拟主机后端无法生成RARP数据包时,依靠VIRTIO_NET_F_GUEST_ANNOUNCE,运行virtio pmd的虚拟机仍可以实现实时迁移。
更新了AESNI-MB PMD。
AESNI-MB PMD已更新,新增以下功能:
AES-CCM算法
更新了DPAA_SEC加密设备驱动程序以支持rte_security。
更新了dpaa_sec 加密设备PMD(crypto PMD) 以支持IPsec的rte_security后备协议卸载。
增加了无线基带设备(bbdev)抽象层。
无线基带设备库是一个用于3gpp第1层处理功能的加速抽象层框架,它提供了一个通用编程界面,可以用于集成或离散硬件加速器的无缝操作或者用优化的软件库进行信号处理。
正如3GPP TS 36.212规定,当前版本仅支持3GPP CRC,Turbo Coding和Rate Matching操作。
更多信息,请参阅《Wireless Baseband Device Library程序员指南》。
(http://dpdk.org/doc/guides/prog_guide/bbdev.html)
增加了新的eventdev有序数据包分发库(OPDL)PMD。
OPDL(有序数据包分发库)eventdev是eventdev API的特定实现。特别适用于具有高吞吐量和低延迟要求的数据包处理工作。所有数据包都以相同路径通过设备。数据包通过的顺序取决于队列的建立顺序。事件被传送前都留在环(ring)上。这样一来,数据包就不会失序。
通过这种改变,应用程序可以通过eventdev API使用OPDL PMD。
为dpdk-test-eventdev应用程序增加了新的流水线使用案例。
为dpdk-test-eventdev应用程序添加了一个新的“流水线”(pipeline)使用案例。该流水线案例可用于模拟真实情景中应用程序的各个阶段,从数据包的接收到传输,且保证都是按序实现。它也可以用来评估流水线各个阶段的事件设备(event device)的性能。
流水线使用案例已被制作成通用模式,适用于各种功能的事件设备。
更新了Eventdev示例应用程序以支持各种功能的事件设备。
更新了Eventdev流水线示例应用程序,以支持各种功能的附加事件(attached event)和以太网设备。此外,将应用程序从eventdev_pipeline_sw_pmd 更名为更通用的eventdev_pipeline。
增加了Rawdev,一个通用设备支持库。
Rawdev库支持任何通用设备类型与DPDK框架的集成。这里的通用设备是指那些DPDK预定义类型中未包含的设备,例如以太网,加密,事件等。
通过允许应用程序和使用不透明结构/缓冲区的设备进行交互,包含一套通用操作的一组北向API被定义。此外,南向API可以将设备作为物理总线(PCI,FSLMC等)的一部分或者通过vdev进行集成。
更多信息,请参阅《Rawdevice Library程序员指南》。
(http://dpdk.org/doc/guides/prog_guide/rawdev.html)
增加了新的多进程通信通道。
在EAL中为多进程(主/次)通信添加了一个通用通道。这个频道的消费者仅能用已注册名称的操作来回应收到的消息,因为操作需通过其名称进行标识,并在此通道的新设专用线程中被执行。
新API有:
rte_mp_register和rte_mp_unregister,用于操作发起/取消。
rte_mp_sendmsg,用于发送消息但不拦截回应。
rte_mp_request,用于发送请求信息,并进行拦截,直到它收到其对应的rte_mp_reply发出的回应。
增加了对VxLAN隧道数据包的GRO支持。
增加了对VxLAN隧道数据包的GRO支持,但仅限于那些包含一个外部IPv4标头和多个内部TCP / IPv4标头的VxLAN数据包。 VxLAN GRO不检查输入数据包是否具有正确的校验和,也不会更新输出数据包的校验和。另外,当IP分段能够实现时(即,DF == 0),它就假定数据包是完整的(即,MF == 0 && frag_off == 0)。
在样本应用程序中增加了Rx ring和Tx ring的默认尺寸。
将testpmd和示例应用程序中RX_RING_SIZE和TX_RING_SIZE的默认大小增加到1024,以期在普遍情况下实现更好的性能。用户应当根据实际情况进行调整以获得最佳性能。
通过“meson”和“ninja”工具增加了新的DPDK构建系统。[尚在测试阶段]
相比现有使用make的构建系统,使用meson和ninja工具构建DPDK具备额外优势,例如自动构建时配置。关于如何使用新系统构建DPDK,请参阅doc/build-sdk-meson.txt中的说明。
注意
这一新的构建系统现在尚不完整,在这一版本中仅作为测试。使用make的现有构建系统不受任何影响,并将持续用于此版本及后续版本,直至其被宣布弃用为止。

DPDK开源社区
往期精选

长按二维码关注


点击阅读原文可查看完整DPDK 18.02 Release Notes