0

目标是将 TREX 数据包生成器与同一主机上的 VPP memif 接口连接。memif 接口无法连接到以下日志

信息失败:

Apr 28 15:12:24 xx[370159]: memif_connect_client(): Failed to connect socket: /run/vpp/memif.sock.
Apr 28 15:12:25 xx[370159]: EAL: Error - exiting with code: 1#012  Cause:
Apr 28 15:12:25 xx[370159]: rte_eth_dev_start: err=-1, port=0

vpp 版本:19.08.3 trex 版本:v2.89

vpp# show memif

sockets
  id  listener    filename
  0   yes (2)     /run/vpp/memif.sock

interface memif0/0
  socket-id 0 id 0 mode ethernet
  flags admin-up
  listener-fd 49 conn-fd 0
  num-s2m-rings 0 num-m2s-rings 0 buffer-size 0 num-regions 0
interface memif0/1
  socket-id 0 id 1 mode ethernet
  flags admin-up
  listener-fd 49 conn-fd 0
  num-s2m-rings 0 num-m2s-rings 0 buffer-size 0 num-regions 0
# cat /etc/trex_cfg.yaml**
- version: 2
  interfaces: ["--vdev=net_memif0,role=slave,id=0,socket=/run/vpp/memif.sock",
                 "--vdev=net_memif1,role=slave,id=1,socket=/run/vpp/memif.sock"]
  port_info:
      - ip: 172.21.0.253
        default_gw: 172.21.0.254
      - ip: 192.168.1.254
        default_gw: 192.168.1.253

  platform:
      master_thread_id: 16
      latency_thread_id: 17
      dual_if:
        - socket: 0
          threads: [18,19]
4

1 回答 1

0

DPDK memif PMD 有两种操作模式

  1. 客户端模式
  2. 服务器模式

启动的顺序也会影响 memif 通信和连接到侦听器(服务器)的方式。

所以如果我们需要让VPP作为服务器,TREX作为客户端使用(总是先启动VPP并创建memif接口)

create interface memif id 0 master
set interface state memif0/0 up
set interface ip address memif0/0 12.12.5.1/24

and

--vdev=net_memif0,role=client,id=0,socket=/run/vpp/memif.sock

如果我们需要使用 TREX 服务器和 VPP 客户端(总是先启动 TREX)

--vdev=net_memif0,role=server,id=0,socket=/run/vpp/memif.sock

and

create interface memif id 0 slave
set interface state memif0/0 up
set interface ip address memif0/0 12.12.5.2/24

笔记:

  • 如果需要超过 1 个接口,请确保 VPP 在单独的套接字上创建 memif 接口 0 和 1。
  • 使用 dpdk-pktgen 和 vpp 进行了相同的测试。
于 2021-09-14T14:33:48.573 回答