DPDK skill for userspace packet I/O. An agent skill from mohitmishra786/low-level-dev-skills.

MITAuto-check: notes

Install Dpdk

skills CLI
$ npx skills add mohitmishra786/low-level-dev-skills --skill dpdk -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mohitmishra786/low-level-dev-skills dpdk --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mohitmishra786/low-level-dev-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/async-io/dpdk .claude/skills/dpdk && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dpdk
GitHub stars
253
Token cost
~1.6k tokens
SKILL.md length
286 words
Files
1
Skills in repo
138
Repo updated
First seen
Licence
MIT

At a glance

DPDK skill for userspace packet I/O. An agent skill from mohitmishra786/low-level-dev-skills.

  • Works in 9 steps: Huge pages setup → EAL initialization → Port configuration and PMD → …
  • Initializing EAL
  • SKILL.md covers Purpose, When to Use, Workflow and Common Problems, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Dpdk is an agent skill from mohitmishra786/low-level-dev-skills. DPDK skill for userspace packet I/O. Use when initializing EAL, configuring PMD drivers, using mbuf pools and rtering, setting up huge pages, RSS, or testpmd validation. Activates on queries about DPDK, EAL, rteethrxburst, hugepages, PMD, or testpmd.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: A curated suite of AI agent skills for systems and low-level programming with C/C++, Rust, and Zig toolchains, covering compilers, debuggers, profilers, build systems…. The licence is MIT.

When your agent uses it

  • Initializing EAL
  • Configuring PMD drivers
  • Using mbuf pools and rtering
  • Setting up huge pages

Example prompts

  • “/dpdk”

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Huge pages setup
  2. EAL initialization
  3. Port configuration and PMD
  4. RX/TX burst loop
  5. rte_ring for inter-core queues
  6. RSS configuration
  7. testpmd validation
  8. QEMU virtio testing
  9. Pipeline vs run-to-completion

What it can do on your machine

Read from SKILL.md and the folder at commit bdc5847. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and c).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dpdk loads about 1.6k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 286 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:27
    echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
  • NoteRuns commands with sudoSKILL.md:30
    echo 4 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
  • NoteRuns commands with sudoSKILL.md:33
    sudo mkdir -p /mnt/huge
  • NoteRuns commands with sudoSKILL.md:34
    sudo mount -t hugetlbfs nodev /mnt/huge
  • NoteRuns commands with sudoSKILL.md:104
    sudo modprobe vfio-pci
  • NoteRuns commands with sudoSKILL.md:105
    sudo dpdk-devbind.py --bind=vfio-pci 0000:03:00.0
  • NoteRuns commands with sudoSKILL.md:171
    sudo ./build/app/dpdk-testpmd -l 0-3 -n 4 -- -i --forward-mode=io

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mohitmishra786/low-level-dev-skills at commit bdc5847, republished under its MIT licence (© mohitmishra786). 286 words, ~1,587 tokens.

Download SKILL.mdSave it as .claude/skills/dpdk/SKILL.md (or your agent's skills folder).
name
dpdk
description
DPDK skill for userspace packet I/O. Use when initializing EAL, configuring PMD drivers, using mbuf pools and rte_ring, setting up huge pages, RSS, or testpmd validation. Activates on queries about DPDK, EAL, rte_eth_rx_burst, hugepages, PMD, or testpmd.

DPDK

Purpose

Guide agents through DPDK (Data Plane Development Kit): EAL initialization, poll-mode driver (PMD) concepts, rte_eth_rx_burst/tx_burst, mbuf mempools, rte_ring queues, huge page setup, RSS configuration, testpmd validation, QEMU virtio testing, and pipeline vs run-to-completion models.

When to Use

  • Building a userspace packet forwarder bypassing the kernel network stack
  • Achieving line-rate on 10/25/100 GbE NICs
  • Prototyping NFV/vSwitch data plane components
  • Testing NIC configuration with testpmd before custom code
  • Comparing DPDK throughput with kernel networking or AF_XDP
  • Running DPDK in VMs with virtio for development

Workflow

1. Huge pages setup
bash
# 2MB hugepages (common)
echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

# 1GB hugepages (better TLB perf on large memory)
echo 4 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages

# Mount hugetlbfs
sudo mkdir -p /mnt/huge
sudo mount -t hugetlbfs nodev /mnt/huge

# Verify
grep Huge /proc/meminfo

DPDK EAL maps hugepages at startup — insufficient pages cause init failure.

2. EAL initialization
c
#include <rte_eal.h>
#include <rte_ethdev.h>

int main(int argc, char **argv) {
    int ret = rte_eal_init(argc, argv);
    if (ret < 0)
        rte_exit(EXIT_FAILURE, "EAL init failed\n");
    // argc/argv adjusted — remaining args for app
    return run_dataplane(argc - ret, argv + ret);
}
bash
# Typical EAL args
./dpdk_app -l 0-3 -n 4 --huge-dir=/mnt/huge -- -p 0x3

# Flags:
# -l 0-3     — cores for DPDK (lcore mask)
# -n 4       — memory channels
# --proc-type=primary
# --file-prefix=myapp  — multi-instance
3. Port configuration and PMD
c
#include <rte_ethdev.h>

#define RX_RING_SIZE 1024
#define TX_RING_SIZE 1024
#define NUM_MBUFS    8191
#define MBUF_CACHE   250
#define BURST_SIZE   32

static const struct rte_eth_conf port_conf = {
    .rxmode = { .max_lro_pkt_size = RTE_ETHER_MAX_LEN },
};

struct rte_mempool *mbuf_pool;

int port_init(uint16_t port) {
    mbuf_pool = rte_pktmbuf_pool_create("MBUF_POOL", NUM_MBUFS,
        MBUF_CACHE, 0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());

    struct rte_eth_rxconf rxq_conf = dev_info.default_rxconf;
    ret = rte_eth_rx_queue_setup(port, 0, RX_RING_SIZE,
        rte_eth_dev_socket_id(port), &rxq_conf, mbuf_pool);
    // ... tx queue setup ...
    ret = rte_eth_dev_start(port);
    rte_eth_promiscuous_enable(port);
    return 0;
}
bash
# List available PMDs
dpdk-devbind.py --status

# Bind NIC to vfio-pci (required for physical NICs)
sudo modprobe vfio-pci
sudo dpdk-devbind.py --bind=vfio-pci 0000:03:00.0
4. RX/TX burst loop
c
static inline void lcore_main(void) {
    const uint16_t port = 0;
    struct rte_mbuf *bufs[BURST_SIZE];

    while (1) {
        uint16_t nb_rx = rte_eth_rx_burst(port, 0, bufs, BURST_SIZE);
        if (nb_rx == 0)
            continue;

        uint16_t nb_tx = rte_eth_tx_burst(port, 0, bufs, nb_rx);
        // Free unsent mbufs
        if (nb_tx < nb_rx) {
            for (uint16_t i = nb_tx; i < nb_rx; i++)
                rte_pktmbuf_free(bufs[i]);
        }
    }
}

Poll-mode: no interrupts — cores spin for packets. Assign one core per queue for scaling.

5. rte_ring for inter-core queues
c
#include <rte_ring.h>

struct rte_ring *ring = rte_ring_create("RX_RING", 1024,
    rte_socket_id(), RING_F_SP_ENQ | RING_F_SC_DEQ);

// Producer (RX core)
rte_ring_enqueue_bulk(ring, (void **)bufs, nb_rx, NULL);

// Consumer (worker core)
uint16_t nb_deq = rte_ring_dequeue_bulk(ring, (void **)bufs, BURST_SIZE, NULL);
6. RSS configuration
c
static const struct rte_eth_rss_conf rss_conf = {
    .rss_key = NULL,
    .rss_hf = RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP | RTE_ETH_RSS_UDP,
};

struct rte_eth_conf port_conf = {
    .rxmode = { .mq_mode = RTE_ETH_MQ_RX_RSS },
    .rx_adv_conf = { .rss_conf = rss_conf },
};

Distributes flows across RX queues — map queues to cores for parallelism.

7. testpmd validation
bash
# Build testpmd
cd dpdk/build
ninja -C build dpdk-testpmd

# Forward mode test
sudo ./build/app/dpdk-testpmd -l 0-3 -n 4 -- -i --forward-mode=io

testpmd> show port stats all
testpmd> start tx_first
testpmd> show port stats all

Forward modes: io, mac, macswap, flowgen for throughput testing.

8. QEMU virtio testing
bash
qemu-system-x86_64 \
  -cpu host -m 4096 -smp 4 \
  -netdev user,id=net0 \
  -device virtio-net-pci,netdev=net0,mq=on,vectors=10 \
  -object memory-backend-file,id=mem,size=2G,mem-path=/dev/hugepages,share=on \
  -numa node,memdev=mem \
  ...

Inside VM: bind virtio PCI to vfio-pci or use vhost-user for higher perf.

9. Pipeline vs run-to-completion
Run-to-completion (simple)
├── One core: RX → process → TX
└── Good for low latency, simple logic

Pipeline (scaled)
├── Core 0: RX → ring
├── Core 1-N: process from ring → ring
└── Core N+1: TX
    └── Better for complex per-packet processing

Common Problems

SymptomCauseFix
EAL: Cannot init hugepagesInsufficient hugepagesIncrease nr_hugepages; mount hugetlbfs
No probed ethernet devicesNIC not bound to DPDK driverdpdk-devbind.py --bind=vfio-pci
RX drops climbingMbuf pool exhaustedIncrease NUM_MBUFS; check leak (free mbufs)
0 Mbps in testpmdPort not startedstart in testpmd; check link status
VFIO permission errorNo IOMMU group accesschmod/chown vfio group; enable IOMMU
Poor multi-core scalingRSS not distributingEnable RSS; multiple RX queues
  • skills/async-io/af-xdp — lighter-weight XDP alternative
  • skills/async-io/io-uring — kernel async I/O comparison
  • skills/observability/ebpf — XDP programs redirecting to AF_XDP
  • skills/virtualization/qemu-kvm — QEMU setup for virtio testing
  • skills/allocators/numa-programming — NUMA-aware DPDK memory
  • skills/profilers/linux-perf — profile DPDK lcore hot paths

© mohitmishra786, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/async-io/dpdk of mohitmishra786/low-level-dev-skills.

Open the folder on GitHubat commit bdc5847

Compare with similar skills

Dpdk next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dpdk compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dpdk this skillmohitmishra786/low-level-dev-skills253—~1.6kAutomated safety check: NotesMIT
Initiate SetupNousResearch/hermes-agent252k—~2.3kAutomated safety check: PassMIT
Analyzing Network Packets With Scapymukul975/Anthropic-Cybersecurity-Skills34k—~626Automated safety check: PassApache-2.0
Performing Packet Injection Attackmukul975/Anthropic-Cybersecurity-Skills34k—~3.1kAutomated safety check: NotesApache-2.0
Initializereactive/data-client2k—~588Automated safety check: PassApache-2.0
Performing Network Packet Capture Analysismukul975/Anthropic-Cybersecurity-Skills34k—~2.3kAutomated safety check: PassApache-2.0

Similar skills

  • Initiate Setup

    NousResearch/hermes-agent

    Run the first-run setup chat in the Hermes desktop app. An agent skill from NousResearch/hermes-agent.

    252k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Analyzing Network Packets With Scapy

    mukul975/Anthropic-Cybersecurity-Skills

    Use Scapy to craft, send, sniff, and dissect TCP/UDP/ICMP/DNS packets, analyze pcap files, implement SYN scans, and detect anomalous traffic such as fragmented or malformed packets.

    34k GitHub stars~626 tokensUpdated 1 mo ago
    SecurityAuto-check passed
  • Performing Packet Injection Attack

    mukul975/Anthropic-Cybersecurity-Skills

    Crafts and injects custom network packets using Scapy, hping3, and Nemesis during authorized security assessments to test firewall rules, IDS detection, protocol handling, and network stack…

    34k GitHub stars~3.1k tokensUpdated 1 mo ago
    SecurityAuto-check: notes
  • Initialize

    reactive/data-client

    Setup, install, and onboard new developers to Reactive Data Client monorepo - nvm, yarn, build, test, getting started guide

    2k GitHub stars~588 tokensUpdated today
    DevelopmentAuto-check passed
  • Performing Network Packet Capture Analysis

    mukul975/Anthropic-Cybersecurity-Skills

    Perform forensic analysis of network packet captures (PCAP/PCAPNG) using Wireshark, tshark, and tcpdump to reconstruct network communications, extract transferred files, identify malicious traffic…

    34k GitHub stars~2.3k tokensUpdated 1 mo ago
    SecurityAuto-check passed
  • Initializing Memory

    letta-ai/letta-code

    Comprehensive guide for initializing or reorganizing agent memory.

    3.6k GitHub stars~4.8k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from mohitmishra786/low-level-dev-skills

All 138 skills in this repo
  • ARM and AArch64 Assembly

    mohitmishra786/low-level-dev-skills

    Guides reading and writing AArch64 and ARM Thumb assembly: compiler output, inline asm, registers, the AAPCS calling convention and NEON or SVE basics.

    253 GitHub stars~1.9k tokensUpdated 3 mo ago
    Auto-check passed
  • RISC-V Assembly Guide

    mohitmishra786/low-level-dev-skills

    Reference for RISC-V assembly on RV32 and RV64: register names and calling convention, extension naming, GCC and Clang inline asm, and QEMU with GDB debugging.

    253 GitHub stars~1.8k tokensUpdated 3 mo ago
    Auto-check passed
  • x86-64 Assembly Reference

    mohitmishra786/low-level-dev-skills

    Explains x86-64 registers, the System V AMD64 calling convention, and how to read compiler-generated or inline assembly.

    253 GitHub stars~1.5k tokensUpdated 3 mo ago
    Auto-check passed
  • Bazel for C and C++

    mohitmishra786/low-level-dev-skills

    Guides your agent through Bazel for C/C++ projects: BUILD files, Bzlmod dependencies, toolchain registration, remote execution, dependency queries and sandbox debugging.

    253 GitHub stars~1.5k tokensUpdated 3 mo ago
    Auto-check passed
  • Binary Hardening

    mohitmishra786/low-level-dev-skills

    Binary hardening skill for security-hardened C/C++ builds. An agent skill from mohitmishra786/low-level-dev-skills.

    253 GitHub stars~2k tokensUpdated 3 mo ago
    Auto-check passed
  • Binutils

    mohitmishra786/low-level-dev-skills

    GNU binutils skill for binary manipulation and analysis. An agent skill from mohitmishra786/low-level-dev-skills.

    253 GitHub stars~1.2k tokensUpdated 3 mo ago
    Auto-check passed

Questions about Dpdk

What does Dpdk do?

DPDK skill for userspace packet I/O. An agent skill from mohitmishra786/low-level-dev-skills. Dpdk is an agent skill from mohitmishra786/low-level-dev-skills. DPDK skill for userspace packet I/O.

When should I use Dpdk?

Dpdk fits situations like: initializing EAL; configuring PMD drivers; using mbuf pools and rtering; setting up huge pages.

How do I install Dpdk in Claude Code?

Run `npx skills add mohitmishra786/low-level-dev-skills --skill dpdk -a claude-code`. Or copy the skill folder (skills/async-io/dpdk in mohitmishra786/low-level-dev-skills) into .claude/skills/dpdk in your project. Claude Code loads it when a task matches its description.

How do I install Dpdk in Codex?

Run `npx skills add mohitmishra786/low-level-dev-skills --skill dpdk -a codex`. Or copy the skill folder (skills/async-io/dpdk in mohitmishra786/low-level-dev-skills) into .agents/skills/dpdk in your project. Codex loads it when a task matches its description.

Can I use Dpdk in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mohitmishra786/low-level-dev-skills --skill dpdk -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dpdk, .gemini/skills/dpdk, .github/skills/dpdk and .opencode/skills/dpdk in your project.

What does Dpdk need to run?

SKILL.md names no scripts, command-line tools or credentials: Dpdk is instructions for the agent only.

Does Dpdk access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Dpdk safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Dpdk use?

Dpdk is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dpdk use?

About 1.6k tokens (SKILL.md is roughly 6.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dpdk?

Skills that share tags, products or a category with Dpdk: Initiate Setup (NousResearch/hermes-agent, 252k stars), Analyzing Network Packets With Scapy (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Performing Packet Injection Attack (mukul975/Anthropic-Cybersecurity-Skills, 34k stars) and Initialize (reactive/data-client, 2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dpdk?

mohitmishra786 (a GitHub user) maintains it in mohitmishra786/low-level-dev-skills, which has 253 GitHub stars. The repository holds 138 skills in this directory. The repository was last updated on June 27, 2026.

Source: mohitmishra786/low-level-dev-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.