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
wireEncode
andwireDecode
methodsIn 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