Open Source Projects Consuming DPDK
- ANS – Accelerated Network Stack
BESS – Berkeley Extensible Software Switch
Butterfly – Connects Virtual Machines
DPVS – Layer-4 load balancer
FD.io/VPP – Fast Data Project
- FastClick – Highspeed dataplane
- Lagopus – software OpenFlow 1.3 switch
MoonGen – Packet generator
mTCP – User-level TCP Stack
OPNFV – Open Platform for NFV
Open vSwitch – Multilayer Open Virtual Switch
Packet-journey – Userland router
Pktgen-dpdk – Packet generator
Ruru – Real-time TCP latency monitoring
Seastar – open-source C++ framework
SPDK – Storage Performance Development Kit
TRex – Stateful Traffic Generator
WARP17 – Stateful Traffic Generator
YANFF – NFF-Go -Network Function Framework for GO (former YANFF)
ena (Elastic Network Adapter)
ark (Arkville Packet Conduit FX0/FX1)
bnxt (NetXtreme-C, NetXtreme-E, StrataGX)
thunderx (Poll mode/ vnic driver for ThunderX 88xx, OCTEON TX 80xx, 81xx, 82xx and 83xx)
octeontx (Event mode driver for OCTEON TX 82xx and 83xx)
liquidio (LiquidIO II CN23XX)
bnx2x (QLogic 578xx)
qede (QLogic FastLinQ QL4xxxx)
cxgbe (Terminator 5, Terminator 6)
enic (UCS Virtual Interface Card)
e1000 (82540, 82545, 82546)
e1000e (82571, 82572, 82573, 82574, 82583, ICH8, ICH9, ICH10, PCH, PCH2, I217, I218, I219)
igb (82575, 82576, 82580, I210, I211, I350, I354, DH89xx)
ixgbe (82598, 82599, X520, X540, X550)
i40e (X710, XL710, X722)
Note: The drivers e1000 and e1000e are also called em. The drivers em and igb are sometimes grouped in e1000 family.
mrvl (Marvell Packet Processor v2)
mlx4 (ConnectX-3, ConnectX-3 Pro)
mlx5 (ConnectX-4, ConnectX-4 Lx, ConnectX-5)
szedata2 (NFB-*, NPC-*, NSF-*)
nfp (NFP-4xxx, NFP-6xxx)
sfc_efx (SFN7xxx, SFN8xxx)
The supported drivers may be classified in two categories: Physical for Real Devices and Virtual for Emulated Devices.
Some physical devices may be shaped through a virtual layer as for SR-IOV. The interface seen in the virtual environment is a VF (Virtual Function). The ethdev layer exposes an API to use the networking functions of these devices. The bottom half part of ethdev is implemented by the drivers. Thus some features may not be implemented. There are more differences between drivers regarding some internal properties, portability or even documentation availability. Most of these differences are summarized below.
Bus drivers for identifying and configuring hardware for DPDK.
Network interface controller drivers.
DPDK is comprised of a robust community of member organizations committed to enabling accessible fast packet processing to help move the networking industry forward. Join your industry peers in helping build and shape the DPDK ecosystem, its use cases and applications, as we usher in the next evolution of innovative network solutions.