FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
This driver relies on Linux rdma-core (libibverb) userspace poll-mode driver to rx/tx Ethernet packets. Despite using the RDMA APIs, this is not about RDMA (no Infiniband, no RoCE, no iWARP), just pure traditional Ethernet packets.
Under development: it should work, but has not been thoroughly tested.
When creating a rdma interface, it will receive all packets to the MAC address attributed to the interface plus a copy of all broadcast and multicast traffic. The MAC address is under the control of VPP: the user controlling VPP can divert all traffic of any MAC address to the VPP process, including the Linux netdev MAC address as long as it can create a rdma interface. The rights to create a rdma interface are controlled by the access rights of the /dev/infiniband/uverbs[0-9]+
device nodes.
ib_uverbs
module is loaded: enp94s0f0
in this example): host# echo 1 > /sys/class/infiniband/mlx5_0/device/sriov_numvfs host# ip l set dev enp94s0f0 vf 0 mac 92:5d:f5:df:b1:6f spoof on trust off host# ip l set dev enp94s0f2 up vpp# create int rdma host-if enp94s0f2 name rdma-0 vpp# set int mac address rdma-0 92:5d:f5:df:b1:6f
host# ip l set dev enp94s0f0 vf 0 spoof off trust on ```
Direct Verb allows the driver to access the NIC HW RX/TX rings directly instead of having to go through libibverb and suffering associated overhead. It will be automatically selected if the adapter supports it.