Library: DPDK userspace library read/write UDP messages with congestion control
Early-alpha: code under heavy development. Major limitations given here.
This library intends to be a rewrite of eRPC which was the motivation for this work.
Refer to the eRPC techical paper for more information. eRPC
(in its DPDK implementation) is a UDP only RPC library running over DPDK in userspace with congestion control to handle
UDP packet loss and flow control. The result is a highly efficient yet general purpose NIC I/O library.
Current Reinvent features
- Decently documented
- Ships with a working IPV4 UDP TX/RX example
- No-copy packet preparation
- DPDK configuration including UDP IPV4 routing information is defined outside code as enviromment variables ala
12-factor. For beginners it’s far easier to understand configuration because readers are not dragged into DPDK code,
its structures, and working out what the code or config intends to accomplish
- Reinvent automatically configures lcores-to-HW-core assignment. Programmers set the desired lcore count in
environment variables. The library then works out RXQ/TXQ assignments from there.
- Reinvent provides a helper structure
AWSWorkerto make lcore startup straightforward
- Reinvent AWSConfig is streamable and is output in JSON format. Pipe into
python3 -m json.toolto pretty print
- Reinvent provides a uniform structure to report errors: no ad hoc logging/assertions
- Tested on AWS
c5nbare metal instances running AWS ENA NICs