Azure 中的数据平面开发工具包 (DPDK) 提供了更快速的用户空间包处理框架,适用于性能密集型应用程序。 此框架绕过虚拟机的内核网络堆栈。
在使用内核网络堆栈的典型包处理中,进程是由中断指令驱动。 当网络接口收到传入的包时,不仅有内核中断指令会处理包,还有上下文切换会从内核空间切换到用户空间。 DPDK 消除了上下文切换和中断指令驱动方法,而是实现用户空间,以使用轮询模式驱动程序来加速包处理。
DPDK 由多组用户空间库构成,这些库提供对较低级别资源的访问权限。 这些资源包括硬件、逻辑核心、内存管理和网络接口卡的轮询模式驱动程序。
DPDK 可以在支持多个操作系统分发版的 Azure 虚拟机中运行。 DPDK 在驱动网络功能虚拟化实现方面提供与众不同的关键性能。 这些实现可采用网络虚拟设备 (NVA) 的形式,如虚拟路由器、防火墙、VPN、负载均衡器、演进包核心和拒绝服务 (DDoS) 应用程序。
此处提供了 MANA VM 上 DPDK 的设置说明列表:Linux 上的 Microsoft Azure 网络适配器 (MANA) 和 DPDK
提高每秒包数 (PPS) :绕过内核并控制用户空间中的包可消除上下文切换,从而减少周期计数。 同时,这还会提高 Azure Linux 虚拟机中每秒处理的包比率。
支持 Azure 市场中的以下分发版:
所记录的版本是最低要求。 还支持较新版本。
此处提供了 MANA VM 上 DPDK 的要求列表:Linux 上的 Microsoft Azure 网络适配器 (MANA) 和 DPDK
自定义内核支持
对于未列出的任何 Linux 内核版本,请参阅用于生成 Azure 优化 Linux 内核的修补程序。 有关详细信息,还可以联系 aznetdpdk@microsoft.com。
所有 Azure 区域都支持 DPDK。
必须在 Linux 虚拟机上启用加速网络。 虚拟机应至少有两个网络接口,其中一个接口用于管理。 不建议在管理界面上启用加速网络。 了解如何创建启用加速网络的 Linux 虚拟机。
此外,DPDK 会使用 RDMA 谓词在网络适配器上创建数据队列。 在 VM 中,确保加载正确的 RDMA 内核驱动程序。 它们可以为 mlx4_ib、mlx5_ib 或 mana_ib,具体取决于 VM 大小。
此处提供了适用于 MANA VM 的 DPDK 安装说明:Linux 上的 Microsoft Azure 网络适配器 (MANA) 和 DPDK
下载最新的 DPDK。 建议为 Azure 安装版本 22.11 LTS 或更高版本。
运行 生成默认配置。
使用 进行编译。
使用 进行安装。
重启后,运行下面的命令一次:
巨页
- 针对每个 numa 节点运行以下命令一次,以配置巨页:
使用 创建用于装载的目录。
使用 装载巨页。
运行 检查巨页是否已保留。
以上示例适用于 2M 大页面。 也可以使用 1G 大页面。
MAC 和 IP 地址:使用 查看网络接口的 MAC 和 IP 地址。 VF 网络接口和 NETVSC 网络接口具有相同的 MAC 地址,但只有 NETVSC 网络接口具有 IP 地址。 VF 接口以 NETVSC 接口的从属接口形式运行 。
PCI 地址
运行 确定对 VF 使用哪个 PCI 地址。
如果 eth0 已启用加速网络,请确保 testpmd 不会意外接管 eth0 的 VF PCI 设备 。 如果 DPDK 应用程序意外接管管理网络接口,并导致 SSH 连接断开,请使用串行控制台来停止 DPDK 应用程序。 串行控制台还可用于停止或启动虚拟机。
每次重新启动后,使用 加载 ibuverbs。 (仅适用于 SLES 15)另外,使用 加载 mlx4_ib。
DPDK 应用程序必须通过在 Azure 中公开的主 PMD 运行。 如果应用程序直接通过 VF PMD 运行,它不会收到发往 VM 的所有包,因为一些包通过综合接口显示。 DPDK 支持两种类型的主 PMD:NetVSC PMD 和故障安全 PMD。 主 PMD 可保证应用程序接收以其为目标的所有数据包。 此外,还可确保应用程序继续在 DPDK 模式下运行,即使在为主机提供服务时撤销了 VF 也不例外。
NetVSC 是建议在 Azure 中作为主 PMD 运行的 PMD。 它会保证应用程序接收以其为目标的所有数据包。 此外,还能确保应用程序继续以 DPDK 模式运行,即使在为主机提供服务时撤销了 VF,也不例外。 有关如何使用和配置 NetVSC PMD 的详细信息,请参阅(https://doc.dpdk.org/guides/nics/netvsc.html)。
注意:不建议在 Azure 中通过防故障 PMD 运行。 如果 DPDK 版本为 22.11 LTS 或更高版本,则建议使用 NetVSC PMD。
作为替代方法,可以通过防故障 PMD 运行 DPDK 应用程序。 若要详细了解防故障 PMD,请参阅防故障轮询模式驱动程序库。
若要在根模式下运行 testpmd,请在 testpmd 命令前面使用 。
运行以下命令启动单端口 testpmd 应用程序:
运行以下命令启动双端口 testpmd 应用程序:
启动后,运行 检查端口信息。 应会看到一个或两个值为 net_netvsc 的 DPDK 端口。
- 使用 启动流量。
上面的命令在交互模式下启动 testpmd,这是建议用于试用 testpmd 命令的模式。
以下命令定期列显每秒数据包数的统计信息:
在 TX 端运行以下命令:
在 RX 端运行以下命令:
若要在虚拟机上运行上面的命令,请先将 中的 IP_SRC_ADDR 和 IP_DST_ADDR 更改为与虚拟机的实际 IP 地址一致,再进行编译。 否则,数据包在抵达接收端之前将被丢弃。
以下命令定期列显每秒数据包数的统计信息:
在 TX 端运行以下命令:
在 FWD 端运行以下命令:
若要在虚拟机上运行上面的命令,请先将 中的 IP_SRC_ADDR 和 IP_DST_ADDR 更改为与虚拟机的实际 IP 地址一致,再进行编译。 否则,数据包在抵达转发端之前将被丢弃。 你无法使用第三台计算机来接收转发的流量,因为除非做出一些代码更改,否则 testpmd 转发器不会修改第 3 层地址。
EAL 选项
Testpmd 命令
数据包转储命令
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/36688.html