ndn-dpdk
ndn-dpdk copied to clipboard
NDN-DPDK: High-Speed Named Data Networking Forwarder
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.
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
- NDN-DPDK installation guide
- NDN-DPDK Docker container
- NDN-DPDK forwarder activation and usage
- NDN-DPDK traffic generator activation and usage
- NDN-DPDK file server activation and usage
- hardware known to work with NDN-DPDK
- NDN-DPDK face creation
- NDN-DPDK performance tuning
- NDN-DPDK interoperability with other NDN software
- NDN-DPDK publications and presentations
- Doxygen reference
- Go reference
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: no
- Multiverse can provide centralized routing
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.