You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VPP+DPDK配置问题:同VM及跨VM接口Ping不通求助

VPP+DPDK网络连通性故障排查及解决

场景1:同一VirtualBox虚拟机内VPP-DPDK接口与内核接口互Ping不通

已完成配置

  • 兼容DPDK驱动的网络设备:
0000:00:08.0 '82540EM Gigabit Ethernet Controller 100e' drv=vfio-pci unused=e1000,uio_pci_generic
0000:00:09.0 '82540EM Gigabit Ethernet Controller 100e' drv=vfio-pci unused=e1000,uio_pci_generic
  • 使用内核驱动的网络设备:
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s3 drv=e1000 unused=vfio-pci,uio_pci_generic *Active*
  • VPP启动配置文件startup1.conf:
osboxes@osboxes:~$ cat startup1.conf
unix {
    nodaemon
    log /var/log/vpp/vpp.log
    cli-listen /run/vpp/cli-vpp1.sock
}
api-segment { prefix vpp1 }
dpdk {
    dev 0000:00:08.0
    dev 0000:00:09.0
    socket-mem 1024
}
  • 系统IP配置:
osboxes@osboxes:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:47:b5:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.129/24 brd 192.168.1.255 scope global dynamic enp0s3
       valid_lft 86040sec preferred_lft 86040sec
    inet6 fd02:707a:a9b:c000:a00:27ff:fe47:b556/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 6958sec preferred_lft 3358sec
    inet6 fe80::a00:27ff:fe47:b556/64 scope link
       valid_lft forever preferred_lft forever
  • VPP接口配置:
vpp# set interface state GigabitEthernet0/8/0 up
vpp# set interface ip address GigabitEthernet0/8/0 172.28.128.5/24

root@osboxes:/home/osboxes# vppctl sh int address GigabitEthernet0/8/0
GigabitEthernet0/8/0 (up):
  L3 172.28.128.5/24

root@osboxes:/home/osboxes# vppctl sh hardware GigabitEthernet0/8/0
              Name                Idx   Link  Hardware
GigabitEthernet0/8/0               1     up   GigabitEthernet0/8/0
  Link speed: 1 Gbps
  RX Queues:
    queue thread         mode
    0     main (0)       polling
  TX Queues:
    TX Hash: [name: hash-eth-l34 priority: 50 description: Hash ethernet L34 headers]
    queue shared thread(s)
    0     no     0
  Ethernet address 08:00:27:68:9f:1e
  Intel 82540EM (e1000)
    carrier up full duplex max-frame-size 9022
    flags: admin-up maybe-multiseg tx-offload intel-phdr-cksum rx-ip4-cksum int-supported
    rx: queues 1 (max 2), desc 1024 (min 32 max 4096 align 8)
    tx: queues 1 (max 2), desc 1024 (min 32 max 4096 align 8)
    pci: device 8086:100e subsystem 8086:001e address 0000:00:08.00 numa 0
    max rx packet len: 16128
    promiscuous: unicast off all-multicast on
    vlan offload: strip off filter off qinq off
    rx offload avail:  vlan-strip ipv4-cksum udp-cksum tcp-cksum vlan-filter
                       scatter keep-crc
    rx offload active: ipv4-cksum scatter
    tx offload avail:  vlan-insert ipv4-cksum udp-cksum tcp-cksum multi-segs
    tx offload active: ipv4-cksum udp-cksum tcp-cksum multi-segs
    rss avail:         none
    rss active:        none
    tx burst function: (not available)
    rx burst function: (not available)
  • Ping测试结果:
root@osboxes:/home/osboxes# ping 172.28.128.5
PING 172.28.128.5 (172.28.128.5) 56(84) bytes of data.
^C
--- 172.28.128.5 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3501ms

root@osboxes:/home/osboxes# ping 172.28.128.5 -I enp0s3
PING 172.28.128.5 (172.28.128.5) from 192.168.1.129 enp0s3: 56(84) bytes of data.
^C
--- 172.28.128.5 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2439ms

root@osboxes:/home/osboxes# vppctl sh error
   Count                  Node                              Reason               Severity
  • VPP Ping内核接口结果:
root@osboxes:/home/osboxes# vppctl ping 192.168.1.129
Failed: no egress interface
Failed: no egress interface
Failed: no egress interface
Failed: no egress interface
^C

故障原因

  1. VPP接管的网卡(00:08.0)与内核网卡(00:03.0)是独立PCI设备,VirtualBox中未配置为同一网络域,二层链路不连通。
  2. 内核路由表无172.28.128.0/24网段路由,VPP路由表无192.168.1.0/24网段路由。
  3. VPP与内核网络栈未建立直接连通通道。

解决方法

方法一:统一网卡网络域(VirtualBox配置)

  1. 关闭虚拟机,在VirtualBox设置中,将00:08.0和00:03.0对应的网卡均设置为内部网络,指定同一网络名称(如intnet1)。
  2. 启动虚拟机后,调整IP为同一网段(如内核enp0s3改为172.28.128.6/24),无需额外路由即可互ping。

方法二:创建VPP TAP接口连接内核网络

  1. 在VPP中创建TAP接口并配置:
vppctl create tap host-ip 192.168.1.130/24 host-if-name vpp-tap0
vppctl set interface state tap0 up
vppctl set interface ip address tap0 192.168.1.130/24
  1. 内核侧添加到VPP网段的路由:
ip route add 172.28.128.0/24 via 192.168.1.130
  1. VPP侧添加到内核网段的路由:
vppctl ip route add 192.168.1.0/24 via 192.168.1.129
  1. 测试互ping,此时内核可ping通172.28.128.5,VPP可ping通192.168.1.129。

场景2:两台不同VirtualBox虚拟机的VPP-DPDK接口互Ping不通

关键配置

  • 第二台VM兼容DPDK驱动的网络设备:
0000:00:08.0 '82540EM Gigabit Ethernet Controller 100e' drv=vfio-pci unused=e1000,uio_pci_generic
0000:00:09.0 '82540EM Gigabit Ethernet Controller 100e' drv=vfio-pci unused=e1000,uio_pci_generic
  • 第二台VM使用内核驱动的网络设备:
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s3 drv=e1000 unused=vfio-pci,uio_pci_generic *Active*
  • 第二台VM VPP接口配置:
root@osboxes:/home/osboxes# vppctl set interface state GigabitEthernet0/8/0 up
root@osboxes:/home/osboxes# vppctl set interface ip address GigabitEthernet0/8/0 172.28.128.10/24
root@osboxes:/home/osboxes# vppctl sh int GigabitEthernet0/8/0
              Name               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          Count
GigabitEthernet0/8/0              1      up          9000/0/0/0
  • Ping测试结果:
root@osboxes:/home/osboxes# ping 172.28.128.10
PING 172.28.128.10 (172.28.128.10) 56(84) bytes of data.
^C
--- 172.28.128.5 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3501ms

root@osboxes:/home/osboxes# ping 172.28.128.5 -I enp0s3
PING 172.28.128.10 (172.28.128.10) from 192.168.1.127 enp0s3: 56(84) bytes of data.
^C
--- 172.28.128.10 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2439ms

故障原因

  1. 两台VM的VPP接管网卡(00:08.0)在VirtualBox中未配置为同一网络域,二层无法互通。
  2. 可能存在ARP未学习或路由缺失(同一网段下路由默认存在,主要为二层问题)。

解决方法

  1. 配置VirtualBox网卡网络模式:
    • 关闭两台虚拟机,将各自的00:08.0对应的网卡设置为内部网络,指定同一网络名称(如intnet2);或设置为桥接模式,连接到同一物理网络。
  2. 确认VPP接口状态:
    • 在两台VM的VPP中执行vppctl sh int,确保接口状态为up,链路状态正常。
  3. 检查ARP表:
    • 在第一台VM的VPP中执行vppctl sh ip arp,查看是否存在172.28.128.10的ARP条目。若缺失,执行vppctl ping 172.28.128.10 repeat 1触发ARP学习。
  4. 验证连通性:
    • 再次执行互ping测试,若仍不通,检查两台VM的VPP接口MTU是否一致(当前均为9000,符合要求),或在VirtualBox中禁用网卡的硬件加速选项。

内容的提问来源于stack exchange,提问作者Esaëe Njongssi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:15:53