Face and PacketHandler in NDNph
Face is an overloaded term in Named Data Networking (NDN). My last article explained what is a face in NDN forwarders and NDN libraries, and then described the endpoint design in my NDNts library. This time, I'll introduce a unique face API design in my NDNph library.
NDNph is a C++ header-only library that enables low level application development. It supports multiple platforms, but is primarily designed for microcontrollers with limited hardware resources. In particular, RAM capacity is very limited, with typical values ranging from 50KB (ESP8266) to 320KB (ESP32). This necessitates a different API design for the face.
Overhead of a Traditional Face
Traditionally, a face in NDN libraries has the following features:
- send and receive NDN network layer packets
- match incoming Data against outgoing Interests
- keep track of Interest timeouts
- dispatch incoming Interests to producer callback functions