dpdk/

directory
v0.0.0-...-1e60831 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: NIST-PD-fallback

README

ndn-dpdk/dpdk

This directory contains Go bindings for the Data Plane Development Kit (DPDK) and the Storage Performance Development Kit (SPDK).

Go Bindings

DPDK:

  • EAL, lcore, launch
  • mempool, pktmbuf
  • ring
  • vdev
  • ethdev
  • cryptodev

SPDK:

  • json
  • thread
  • poller
  • bdev

Go bindings are object-oriented when possible.

Other Go Types and Functions

ealthread.Thread abstracts a thread that can be run on an LCore and controls its lifetime.

ealthread.Allocator provides an LCore allocator. It allows a program to reserve a number of LCores for each "role", and then obtain a NUMA-local LCore reserved for a certain role when needed.

ealthread.LoadStat contains statistics of thread empty polls. It is a simplified version of DPDK empty poll API, intended for informational purpose instead of power management.

ealthread.Ctrl controls a C polling thread and collects LoadStat information.

pktmbuf.Template is a template of mempool configuration. It can be used to create per-NUMA mempools for packet buffers.

ethringdev.Pair builds a pair of virtual Ethernet devices based on rte_net_ring driver. ethringdev.VNet further builds a virtual network of bridged Ethernet devices. They can be used in unit tests to simulate links.

ethvdev has functions to create virtual Ethernet devices based on rte_net_memif, rte_net_af_xdp, and rte_net_af_packet drivers.

Main Thread

Certain DPDK library functions must run on the initial lcore; certain SPDK library functions must run on an SPDK thread. To satisfy both requirements, package ealinit creates and launches a main thread on the initial lcore. This thread is initialized as an SPDK thread and is also registered as a URCU read-side thread. Most operations invoked via the Go API run on this thread.

SPDK Internal RPC Client

Several SPDK features are not exposed in SPDK header files, but are only accessible through its JSON-RPC server. Package spdkenv enables SPDK's JSON-RPC server and creates an internal JSON-RPC client to send commands to it.

Directories

Path Synopsis
Package bdev contains bindings of SPDK block device layer.
Package bdev contains bindings of SPDK block device layer.
Package cryptodev contains bindings of DPDK crypto device.
Package cryptodev contains bindings of DPDK crypto device.
eal
Package eal contains bindings of DPDK Environment Abstraction Layer.
Package eal contains bindings of DPDK Environment Abstraction Layer.
Package ealconfig prepares EAL parameters.
Package ealconfig prepares EAL parameters.
Package ealinit initializes DPDK EAL and SPDK main thread.
Package ealinit initializes DPDK EAL and SPDK main thread.
Package ealtestenv initializes EAL for unit testing.
Package ealtestenv initializes EAL for unit testing.
Package ealthread provides a thread abstraction bound to an DPDK LCore.
Package ealthread provides a thread abstraction bound to an DPDK LCore.
Package ethdev contains bindings of DPDK Ethernet device.
Package ethdev contains bindings of DPDK Ethernet device.
ethnetif
Package ethnetif manages DPDK Ethernet devices associated with kernel network interfaces.
Package ethnetif manages DPDK Ethernet devices associated with kernel network interfaces.
ethringdev
Package ethringdev contains bindings of DPDK net_eth_ring driver.
Package ethringdev contains bindings of DPDK net_eth_ring driver.
Package mempool contains bindings of DPDK memory pool.
Package mempool contains bindings of DPDK memory pool.
Package pktmbuf contains bindings of DPDK mbuf library.
Package pktmbuf contains bindings of DPDK mbuf library.
mbuftestenv
Package mbuftestenv contains helper functions to construct mbufs in test code.
Package mbuftestenv contains helper functions to construct mbufs in test code.
Package ringbuffer contains bindings of DPDK ring library.
Package ringbuffer contains bindings of DPDK ring library.
Package spdkenv contains bindings of SPDK environment and threads.
Package spdkenv contains bindings of SPDK environment and threads.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL