aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS5
-rw-r--r--doxygen/user_doc.md1
-rw-r--r--src/plugins/rdma/rdma_doc.md51
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))