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 and a traffic generator.
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.
- NDN-DPDK installation guide
- NDN-DPDK Docker container
- NDN-DPDK forwarder activation and usage
- NDN-DPDK traffic generator activation and usage
- hardware known to work with NDN-DPDK
- NDN-DPDK performance tuning
- NDN-DPDK interoperability with other NDN software
- NDN-DPDK publications and presentations
- Go reference
If you use NDN-DPDK in your research, please cite the NDN-DPDK paper instead of this GitHub repository.
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
- DPDK-based high-speed transports: Ethernet, VLAN, UDP, VXLAN
- Ethernet adapter must be dedicated to DPDK
- 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
- Multiverse can provide centralized routing
- 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: applications, including the forwarder dataplane.
- cmd: executables.
These is a README.md
file in most directories of this codebase that explains the relevant module.