diff options
-rw-r--r-- | MAINTAINERS | 5 | ||||
-rw-r--r-- | doxygen/user_doc.md | 1 | ||||
-rw-r--r-- | src/plugins/rdma/rdma_doc.md | 51 |
3 files changed, 57 insertions, 0 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 06696db8d44..b58d5370132 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -218,6 +218,11 @@ Binary API Compiler M: Ole Troan <otroan@employees.org> F: src/tools/vppapigen/ +Plugin - RDMA (ibverb) driver +M: Benoît Ganne <bganne@cisco.com> +M: Damjan Marion <damarion@cisco.com> +F: src/plugins/rdma/ + THE REST C: Contact vpp-dev Mailing List <vpp-dev@fd.io> F: * diff --git a/doxygen/user_doc.md b/doxygen/user_doc.md index d9439cddc03..847418313c2 100644 --- a/doxygen/user_doc.md +++ b/doxygen/user_doc.md @@ -27,3 +27,4 @@ Several modules provide operational, dataplane-user focused documentation. - @subpage srv6_doc - @subpage vcl_ldpreload_doc - @subpage vmxnet3_doc +- @subpage rdma_doc diff --git a/src/plugins/rdma/rdma_doc.md b/src/plugins/rdma/rdma_doc.md new file mode 100644 index 00000000000..e41839eb595 --- /dev/null +++ b/src/plugins/rdma/rdma_doc.md @@ -0,0 +1,51 @@ +# RDMA (ibverb) Ethernet driver {#rdma_doc} + +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. + +## Maturity level +Under development: it should work, but has not been thoroughly tested. + +## Supported Hardware + - Mellanox ConnectX-4 + - Mellanox ConnectX-5 + +## Features + - bifurcation: MAC based flow steering for transparent sharing of a single +physical port between multiple virtual interfaces including Linux netdev + - multiqueue + +## Security considerations +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. + +## Quickstart +1. Make sure the `ib_uverbs` module is loaded: +``` +~# modprobe ib_uverbs +``` +2. In VPP, create a new rdma virtual interface tied to the Linux netdev of the +physical port you want to use (`enp94s0f0` in this example): +``` +vpp# create int rdma host-if enp94s0f0 name rdma-0 +``` +3. Use the interface as usual, eg.: +``` +vpp# set int ip addr rdma-0 1.1.1.1/24 +vpp# set int st rdma-0 up +vpp# ping 1.1.1.100` +``` + +### Containers support +It should work in containers as long as: + - the `ib_uverbs` module is loaded + - the device nodes `/dev/infiniband/uverbs[0-9]+` are usable from the + container (but see [security considerations](#Security considerations)) |