使用编译的 NVIDIA 网络 DPDK PMD 构建 Docker 镜像的快速入门指南

创建于 2019 年 7 月 11 日。本文介绍如何使用编译的 NVIDIA 网络 DPDK PMD 构建 Docker 容器。

文档目录

创建于 Jul 11, 2019

image2019-7-11_16-50-3.png

本文介绍如何使用编译的 NVIDIA 网络 DPDK PMD 构建 Docker 容器。

参考

虚拟机管理程序前提条件

  • 安装 Docker 版本 >= 1.9。
  • 安装 NVIDIA 网络 rdma-core 软件包:
CLI 命令
yum install -y rdma-core-devel

创建 Docker 容器镜像

从 Github 下载 Dockerfile 并在虚拟机管理程序上本地构建镜像。

CLI 命令
git clone https://github.com/Mellanox/mlnx_docker_dpdk
cd mlnx_docker_dpdk/
## 示例:操作系统:CentOS-7.7.1908 DPDK 版本:20.02 MOFED 版本:5.1-2.3.7.1 ##
docker build --build-arg OS_VER=7.7.1908 --build-arg DPDK_VER=20.02 --build-arg OFED_VER=5.1-2.3.7.1 -t centos/<image_name>:<version_name> .
  • OS_VER - CentOS 镜像版本
  • DPDK_VER - DPDK 版本
  • OFED_VER - NVIDIA OFED 版本。不指定 MOFED 版本将安装默认的 MOFED 上游软件包。
  • <image_name> 和 <version_name> - 可以是任何用户定义的名称

注意:默认 master 分支仅支持 CentOS 基础操作系统。 ubuntu18.04、ubuntu14.04、ubuntu16.04、rhel7.2、rhel7.3 可以使用此 git 项目中不同分支下的 Dockerfile。

使用 NVIDIA 网络 DPDK PMD 运行 Docker 容器

在虚拟机管理程序上定义并挂载巨页

分配 1G 大小的巨页:

CLI 命令
echo 4 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages

或者

分配 2Mb 大小的巨页:

CLI 命令
echo 2048 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

挂载巨页:

mount -t hugetlbfs -o pagesize=1G none /dev/hugepages

mkdir -p /mnt/huge_c0

mount -t hugetlbfs -o pagesize=1G none  /mnt/huge_c0/

此示例展示了为 2Mb 和 1Gb 巨页大小总共分配 4Gb 巨页。您可以根据虚拟机管理程序上的空闲内存量定义不同的数量。

为容器定义网络

推荐的网络连接类型是 SRIOV。

有关如何在 K8 集群中将 SRIOV 与挂载巨页结合使用的更多信息,请参阅:

另一种快速启动容器的方法是使用下一步中指定的 "host" 网络连接。

运行容器

查找新创建的 Docker 镜像名称:

CLI 命令
docker image list

运行 Docker 镜像:

CLI 命令
docker run -itd --privileged -v /mnt/huge_c0/:/dev/hugepages/ --net=host --name=<container_name> <docker_image_name>

DPDK 库位于容器内的 /usr/src/dpdk-/ 目录下。此目录包含编译的 NVIDIA PMD 以及默认应用程序(如 testpmd)。

AZ.jpg Amir Zeidner 多年来,Amir 一直担任解决方案架构师,主要专注于电信领域,领导先进解决方案以满足 5G、NFV 和 SDN 网络基础设施需求。Amir 在数据平面加速技术(如加速交换和网络处理 (ASAP²) 和 DPDK)方面的专业知识,加上对开源云基础设施的深入了解,使他能够在电信领域推广和交付独特的端到端 NVIDIA 网络解决方案。