esp8266ndn library enables Named Data Networking application development in Arduino environment. It supports ESP8266, ESP32, ESP32-S2, ESP32-C3, and Adafruit nRF52 microcontrollers.
- Doxygen documentation
- #esp8266ndn on Twitter for announcements
- GitHub Issues for bug reports and best-effort support
Packet encoding and decoding
- Interest and Data
- v0.3 format only
- TLV evolvability: yes
- forwarding hint: yes, limited to one name
- NDNLPv2
- fragmentation and reassembly: yes, requires in-order delivery
- Nack: partial
- PIT token: yes
- congestion mark: no
- link layer reliability: no
- Signed Interest: v0.3 format
- Naming Convention: rev3 format
Transports
- Ethernet: unicast and multicast on ESP8266 and ESP32
- UDP/IPv4: unicast and multicast on ESP8266 and ESP32
- UDP/IPv6: unicast on ESP8266
- Bluetooth Low Energy: server/peripheral only on ESP32 and nRF52
KeyChain
- Crypto
- SHA256: yes (using BearSSL on ESP8266, Mbed TLS on ESP32, Cryptosuite on nRF52)
- ECDSA: P-256 curve only (using Mbed TLS on ESP32, micro-ecc on ESP8266 and nRF52)
- HMAC-SHA256: yes (using BearSSL on ESP8266, Mbed TLS on ESP32, Cryptosuite on nRF52)
- RSA: no
- Ed25519: no
- Null: yes
- NDN certificates: basic support
- Persistent key and certificate storage: binary files
- ESP8266: using LittleFS
- ESP32: using FFat (in Arduino Tools menu select "Partition Scheme: with FAT")
- nRF52: using InternalFileSystem
- Trust schema: no
Application layer services
- ndnping server and client
- segmented object producer and consumer
- Realtime Data Retrieval (RDR) metadata producer and consumer
- NDNCERT server and client
- ESP32 only
- supported challenges: "nop" and "possession"
- NDN-FCH client for connecting to the global NDN testbed and other connected networks
- ESP8266 and ESP32 only
- UnixTime client for time synchronization