标签: dpdk

如何获得dpdk来识别Linux虚拟化的NIC?

我的机器上有两个物理NIC。根据这篇文章,似乎dpdk应该能够使用虚拟NIC。

因此,我在Linux中使用以下命令创建了3个虚拟接口,其中,这eno1d1是我的物理NIC的名称。

sudo ifconfig eno1d1:0 10.10.1.107
sudo ifconfig eno1d1:1 10.10.1.207
sudo ifconfig eno1d1:2 10.10.2.107
Run Code Online (Sandbox Code Playgroud)

但是,当我运行dpdk应用程序时,该函数rte_eth_dev_count仍仅返回2。

我需要做什么才能使Dpdk识别虚拟NIC?

这是有关我的DPDK版本的一些信息,该信息记录在应用程序的开头。

Using DPDK version DPDK 16.11.0
DPDK: EAL: Detected 16 lcore(s)
DPDK: EAL: Probing VFIO support...
DPDK: EAL: PCI device 0000:09:00.0 on NUMA socket 0
DPDK: EAL:   probe driver: 15b3:1007 net_mlx4
DPDK: PMD: net_mlx4: PCI information matches, using device "mlx4_0" (VF: false)
DPDK: PMD: net_mlx4: 2 port(s) detected
DPDK: PMD: net_mlx4: port 1 MAC address is ec:b1:d7:85:3a:12
DPDK: …
Run Code Online (Sandbox Code Playgroud)

linux virtualization networking nic dpdk

3
推荐指数
1
解决办法
1031
查看次数

DPDK 示例应用程序在 EAL 后中止:无法获取大页文件上的 fd

克隆dpdk git 存储库并构建helloworld应用程序后,出现以下错误:

$ ./examples/helloworld/build/helloworld
EAL: Detected 4 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /run/user/1000/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Couldn't get fd on hugepage file
EAL: error allocating rte services array
EAL: FATAL: rte_service_init() failed
EAL: rte_service_init() failed
PANIC in main():
Cannot init EAL
5: [./examples/helloworld/build/helloworld(+0x11de) [0x56175faac1de]]
4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f31f60fe0b3]]
3: [./examples/helloworld/build/helloworld(+0x111c) [0x56175faac11c]]
2: [/lib/x86_64-linux-gnu/librte_eal.so.20.0(__rte_panic+0xc5) [0x7f31f62d537e]] …
Run Code Online (Sandbox Code Playgroud)

huge-pages dpdk

3
推荐指数
1
解决办法
6128
查看次数

无法绑定intel网卡X710

我正在尝试绑定此网卡 I40E:适用于 10GbE 背板 1581 的以太网控制器 X710

我的操作系统是 ubuntu 18.04 内核:4.15.0-74-generic

我使用 dpdk-setup.sh 插入 VFIO 模块。我还将 iommu=on 添加到 grub 文件中。

运行 devbind 命令:

sudo ./dpdk-devbind.py -b vfio-pci 02:00.1

我有这个错误:

错误:0000:02:00.1 绑定失败 - 无法绑定到驱动程序 vfio-pci

dmesg 输出:

[5091.393436]vfio-pci:0000:02:00.1的探测失败,错误-22

dpdk

3
推荐指数
1
解决办法
5058
查看次数

DPDK 应用程序可以用 C++ 编写吗?如果可以,是如何完成的?

互联网界的人们大家好:

不想使用 CI 编写 DPDK 应用程序,而是想使用 C++。有办法这样做吗?

我可能应该提到配置、编译和设置 DPDK 本身以及与之相关的所有内容(绑定 NIC,...)工作得非常好。以及编译和运行示例应用程序以及我自己用 C 编写的应用程序。但是,我想在新的 DPDK 应用程序中使用来自另一个项目的一些我自己的 C++ 类,因此使用 C++ 而不是 C 会非常好。

谢谢。

c c++ dpdk

2
推荐指数
1
解决办法
3521
查看次数

运行 DPDK helloworld 示例时,大页中没有报告空闲大页

我下载并构建了 dpdk-stable-16.11.4 版本(使用 x86_64-native-linuxapp-gcc 目标)。我正在运行 Ubuntu 16.04.3 LTS。根据http://dpdk.org/doc/quick-starthttp://dpdk.org/doc/guides-16.04/linux_gsg/sys_reqs.html设置大页面后

mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 64 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
Run Code Online (Sandbox Code Playgroud)

我可以很好地看到大页面。

cat /proc/meminfo | grep Huge

    HugeAnonHugePages:    284672 kB
    ShmemHugePages:        0 kB
    HugePages_Total:      64
    HugePages_Free:       64
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
Run Code Online (Sandbox Code Playgroud)

但是当我运行 helloWorld 示例时,它抱怨没有免费的大页面,请参见下文。

./build/helloworld -l 0-3 -n 2
EAL: Detected 4 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
hello from core 1
hello from core 2
hello from core …
Run Code Online (Sandbox Code Playgroud)

linux huge-pages dpdk

2
推荐指数
1
解决办法
2万
查看次数

DPDK:硬件卸载 UDP 校验和计算不起作用

我正在使用 Intel X722 NIC 在 Linux 上使用 DPDK 版本 18.11.8 稳定版本。

如果我在软件中计算 IP 和 UDP 校验和,我的应用程序工作正常,但如果我在硬件中计算,则会出现分段错误。这是我的代码:

local_port_conf.txmode.offloads  = local_port_conf.txmode.offloads | DEV_TX_OFFLOAD_IPV4_CKSUM  | DEV_TX_OFFLOAD_UDP_CKSUM;
Run Code Online (Sandbox Code Playgroud)
mb->ol_flags |= PKT_TX_IPV4 | PKT_TX_IP_CKSUM | PKT_TX_UDP_CKSUM; 
mb->l2_len = sizeof(struct ether_hdr);
mb->l3_len = sizeof(struct ipv4_hdr);
mb->l4_len = sizeof(struct udp_hdr);        
p_ip_hdr->hdr_checksum = 0;
p_udp_hdr->dgram_cksum = rte_ipv4_phdr_cksum((const ipv4_hdr*)(mb->l3_len), mb->ol_flags);
Run Code Online (Sandbox Code Playgroud)

rte_ipv4_phdr_cksum() 调用很神秘,我是否理解正确的做法?

可以理解的是,C++编译器给出了警告:

warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
         p_udp_hdr->dgram_cksum = rte_ipv4_phdr_cksum((const ipv4_hdr*)(ptMbuf->l3_len), ptMbuf->ol_flags);
                                                                                      ^
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题吗?

dpdk

2
推荐指数
1
解决办法
2299
查看次数

在valgrind上运行DPDK应用时出错

当我在valgrind上运行基于DPDK的应用程序时,它无法执行并引发错误

错误:此系统不支持“ RDRAND”。请检查是否正确设置了RTE_MACHINE。

我的CPU支持RDRAND,但仍然抛出相同的错误。为了使valgrind支持我的应用程序正在使用的大页面,我使用了以下valgrind修补版本。 https://github.com/bisdn/valgrind-hugepages.git

c valgrind memory-leaks dpdk

1
推荐指数
1
解决办法
2514
查看次数

EAL:无法获取物理地址:权限被拒绝。仅vfio将起作用

我只是想在dpdk中运行helloworld。我收到这个奇怪的错误,但是我执行了设置脚本以及从源代码进行构建的所有步骤,但仍然收到错误:

dpdk@dpdk-vm:~/Desktop/dpdk-stable-17.08.1/examples/helloworld/build$ ./helloworld -c 1 -n 1 
EAL: Detected 1 lcore(s)
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Cannot obtain physical addresses: Permission denied. Only vfio will function.
EAL: WARNING: Master core has no memory on local socket!
error allocating rte services array
EAL: FATAL: rte_service_init() failed

EAL: rte_service_init() failed

PANIC in main():
Cannot init EAL
5: [./helloworld(_start+0x2a) [0x5555a79f366a]]
4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1) [0x7ff3176151c1]]
3: [./helloworld(+0x54f6d) [0x5555a79eef6d]]
2: [./helloworld(__rte_panic+0xbd) [0x5555a79ea467]]
1: [./helloworld(rte_dump_stack+0x2e) [0x5555a7a41a7e]]
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

请让我知道我做错了什么?

dpdk

1
推荐指数
1
解决办法
1690
查看次数

标签 统计

dpdk ×8

c ×2

huge-pages ×2

linux ×2

c++ ×1

memory-leaks ×1

networking ×1

nic ×1

valgrind ×1

virtualization ×1