Udemy
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Project - Build DPDK powered Networking Device from Scratch
New
24 students

Project - Build DPDK powered Networking Device from Scratch

Learn DPDK internals, packet processing, and high-performance data-plane development through hands-on C/C++ programming.
Last updated 10/2026
English
English [Auto],

What you'll learn

  • Understand DPDK architecture and how it enables high-performance packet processing in user space.
  • Learn how NICs work, including RX/TX queues, descriptor rings, DMA, and Poll Mode Drivers (PMDs).
  • Configure DPDK environments, hugepages, logical cores, memory pools, and packet buffers using C
  • Implement packet reception, parsing, processing, and transmission using DPDK APIs.
  • Build and test a DPDK-powered software network device, and learn the fundamentals of multicore packet processing and performance optimization.

Course content

3 sections • 13 lectures • 1h 50m total length
  • Installing Linux Virtual Machine6:10
  • DPDK Installation16:39
  • NIC Binding with DPDK17:16
  • Creating a Test Topology8:01
  • Network Connectivity8:23
  • Running DPDK Sample Applications15:26
  • Project Creation / Code Access and reference Material0:12

Requirements

  • Basic knowledge of computer networking concepts, including Ethernet, IP addresses, and packet forwarding.
  • Familiarity with C programming, including pointers, structures, memory management, and bitwise operations.
  • Basic understanding of Linux commands, shell usage, and compiling C programs using GCC.
  • A Linux development environment, preferably Ubuntu, with permission to install packages and configure system resources.
  • No prior DPDK experience is required. Knowledge of NIC hardware, DMA, hugepages, and packet-processing internals is helpful but will be taught as part of the course.

Description

Learn how to build a high-performance software network device using DPDK (Data Plane Development Kit) and C programming. In this hands-on course, you will explore how network packets are received, processed, and transmitted directly through NIC hardware queues using DPDK's Poll Mode Drivers (PMDs).


Understand the internals of RX/TX queues, ring descriptors, DMA, hugepages, packet buffers (rte_mbuf), memory management, and efficient packet processing. Move beyond simply using DPDK APIs and develop a deeper understanding of how user-space packet processing works, how it differs from the traditional Linux kernel networking path, and how these concepts can be applied to building your own software router or network appliance.


This course is designed for networking engineers, system programmers, and students who want practical experience with C, NIC internals, and high-performance data-plane development.


Section 1 — Introduction to High-Performance Networking

Section 2 — NIC Architecture and Packet Processing

Section 3 — DPDK Environment Setup

Section 4 — DPDK EAL and Memory Management

Section 5 — Poll Mode Drivers and NIC Queue Initialization

Section 6 — Building the Packet RX/TX Engine

Section 7 — Parsing and Processing Network Packets

Section 8 — Multicore Packet Processing

Section 9 — Performance Optimization and Benchmarking

Section 10 — Beyond Basic Forwarding

Section 11 — Final Project: Build Your Own DPDK Network Device

Section 12 — Next Steps and Advanced Topics

Who this course is for:

  • Networking Engineers who want to understand how high-performance software routers and network appliances process packets using DPDK.
  • C/C++ Systems Programmers interested in low-level programming, memory management, NIC queues, DMA, and high-performance packet processing.
  • Network Software Developers working with routing protocols, switching, packet forwarding, or data-plane development who want hands-on experience building a DPDK-powered network device.
  • Computer Science and Electronics Students who want practical exposure to network device internals, operating systems, computer networks, and hardware–software interaction.
  • Linux and Infrastructure Engineers who want to explore user-space networking, Poll Mode Drivers (PMDs), multicore packet processing, and performance optimization for network-intensive applications.