Skip to content

adian98/ndn-dpdk

 
 

Repository files navigation

NDN-DPDK: High-Speed Named Data Networking Forwarder

NDN-DPDK is a set of high-speed Named Data Networking (NDN) programs developed with the Data Plane Development Kit (DPDK). Included are a network forwarder, a traffic generator, and a file server.

NDN-DPDK logo

This software is developed at the Advanced Network Technologies Division of the National Institute of Standards and Technology. It is in pre-release stage and will continue to be updated.

Documentation

If you use NDN-DPDK in your research, please cite the NDN-DPDK paper instead of this GitHub repository.

Features

Packet encoding and decoding

  • Interest and Data: v0.3 format only
    • TLV evolvability: yes
    • Forwarding hint: yes
  • NDNLPv2
    • Fragmentation and reassembly: yes
    • Nack: yes
    • PIT token: yes
    • Congestion mark: yes
    • Link layer reliability: no

Transports

  • Ethernet-based transports via DPDK: Ethernet, VLAN, UDP, VXLAN
  • Socket-based transports via kernel: UDP, TCP
  • Local application transports: memif, Unix sockets

Forwarding plane

  • Multi-threaded architecture
  • Forwarding strategies: eBPF programs
  • FIB: includes strategy choice and statistics
  • PIT-CS Composite Table (PCCT): includes PIT and CS

Management

  • GraphQL endpoint: yes
  • Configuration file: none
  • Routing: no

Code Organization

  • ndn: NDN library in pure Go.
  • mk: build helper scripts.
  • csrc: C source code.
  • js: TypeScript source code.
  • bpf: eBPF programs, such as forwarding strategies.
  • core: common shared code.
  • dpdk: Go bindings for DPDK and SPDK.
  • ndni: NDN packet representation for internal use.
  • iface: network interfaces.
  • container: data structures.
  • app: application level modules, such as the forwarder data plane.
  • cmd: executables.
  • sample: control plane samples.
  • docs: documentation.

These is a README.md file in most directories of this codebase that explains the relevant module.

Releases

No releases published

Packages

No packages published

Languages

  • Go 69.8%
  • C 27.6%
  • TypeScript 1.5%
  • Shell 0.6%
  • Makefile 0.2%
  • JavaScript 0.1%
  • Other 0.2%