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 and wireDecode methods

      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
  • 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