Skip to content

usnistgov/ndn-dpdk

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
app
 
 
bpf
 
 
cmd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js
 
 
mk
 
 
ndn
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 Smart Connected Systems Division of the National Institute of Standards and Technology. It is in beta 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: HTTP POST, WebSocket "graphql-transport-ws", WebSocket "graphql-ws"
  • Configuration file: none
  • Routing: none

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.

There is a README.md file in most directories of this codebase that describes the corresponding module.