ndn-cxx version 0.1.0¶
Release date: May 7, 2014
Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental eXtensions.
Originally based on ndn-cpp library the ndn-cxx library adopts a slightly different design philosophy (including an extensive use of Boost libraries to facilitate development, as well as the use of Crypto++ library to support cryptographic operations), and includes a number of extensions that aim to simplify NDN application development.
The current features include:
- Base - Fully asynchronous, event-driven communication model, which is implemented using Boost.Asio 
- Single-threaded, but thread-safe Face operations - A single Face object can be safely used in multiple threads to express Interests and publish Data packets 
- Explicit time management for NDN operations using Boost.Chrono 
- Simplified and extended NDN API 
- Extensive set of unit-tests based on Boost.Test framework - Continuous integration using an in-house installation of Jenkins build bots and the hosted Travis CI continuous integration service compile and verify correctness of the library for each commit
 
 
- Wire format - Full support of NDN-TLV packet format v0.1 
- Pure C++ implementation of wire encoding/decoding with simple access to wire format of all NDN packet abstractions via - wireEncodeand- wireDecodemethods- In many cases, NDN packet abstractions are just “indices” to the wire format 
 
- Communication with the forwarder - Enable connecting to local forwarder via UNIX and TCP transports and to remote forwarders using TCP transport
- Full support for communication with Named Data Networking Forwarding Daemon (NFD)- Full support for NFD management protocols to NFD status information, create and manage NFD Faces, receive NFD Face status change notifications, update StrategyChoice for namespaces, and manage routes in RIB
- Support for LocalControlHeader to implement special NDN applications that need low-level control of NDN packet forwarding
 
 
- Security support - A set of security primitives to allowing implementation of secure NDN applications in
a simplified manner- KeyChain: provides simple interfaces of packet signing, and key and certificate management
- ValidatorConfig: validator that implements trust model defined in a configuration file
- CommandInterestGenerator and CommandInterestValidator: convenient helpers to produce and validate command interests, while preventing potential replay attacks
 
- Several implementations of trusted platform modules to securely manage private keys- SecTpmOsx: TPM based on OSX KeyChain (OSX-specific)
- SecTpmFile: TPM that uses file-based access control to protect keys (cross-platform)
 
- Extensive set of security command-line tools to manage security identities and certificates- Generating private/public keys
- Issuing certificates
- Exporting/importing identities
- Managing default security settings
 
 
- A set of security primitives to allowing implementation of secure NDN applications in
a simplified manner
- Miscellaneous tools - Scheduler to support delayed time operations
- NDN regular expressions
- Simple config file to alter various aspects of the library
- tlvdump: a simple tool to visualize TLV-encoded blocks
 
