Alexander Afanasyev | 45312f5 | 2015-09-27 12:06:50 -0700 | [diff] [blame^] | 1 | ndn-cxx version 0.1.0 |
| 2 | --------------------- |
| 3 | |
| 4 | Release date: May 7, 2014 |
| 5 | |
| 6 | Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental |
| 7 | eXtensions. |
| 8 | |
| 9 | Originally based on `ndn-cpp library <https://github.com/named-data/ndn-cpp>`_ the ndn-cxx |
| 10 | library adopts a slightly different design philosophy (including an extensive use of Boost |
| 11 | libraries to facilitate development, as well as the use of Crypto++ library to support |
| 12 | cryptographic operations), and includes a number of extensions that aim to simplify NDN |
| 13 | application development. |
| 14 | |
| 15 | The current features include: |
| 16 | |
| 17 | - **Base** |
| 18 | |
| 19 | + Fully asynchronous, event-driven communication model, which is implemented using `Boost.Asio |
| 20 | <http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html>`_ |
| 21 | + Single-threaded, but thread-safe Face operations |
| 22 | |
| 23 | A single Face object can be safely used in multiple threads to express Interests and |
| 24 | publish Data packets |
| 25 | |
| 26 | + Explicit time management for NDN operations using `Boost.Chrono |
| 27 | <http://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html>`_ |
| 28 | + Simplified and extended `NDN API <doxygen/annotated.html>`_ |
| 29 | + Extensive set of unit-tests based on `Boost.Test framework |
| 30 | <http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html>`_ |
| 31 | |
| 32 | - Continuous integration using an in-house installation of Jenkins build bots and the |
| 33 | hosted `Travis CI <https://travis-ci.org/named-data/ndn-cxx>`_ continuous |
| 34 | integration service compile and verify correctness of the library for each commit |
| 35 | |
| 36 | - **Wire format** |
| 37 | |
| 38 | + Full support of `NDN-TLV packet format v0.1 <http://named-data.net/doc/NDN-TLV/0.1/>`_ |
| 39 | + Pure C++ implementation of wire encoding/decoding with simple access to wire format |
| 40 | of all NDN packet abstractions via ``wireEncode`` and ``wireDecode`` methods |
| 41 | |
| 42 | In many cases, NDN packet abstractions are just "indices" to the wire format |
| 43 | |
| 44 | - **Communication with the forwarder** |
| 45 | |
| 46 | + Enable connecting to local forwarder via UNIX and TCP transports and to remote |
| 47 | forwarders using TCP transport |
| 48 | + Full support for communication with `Named Data Networking Forwarding Daemon (NFD) |
| 49 | <https://github.com/named-data/NFD>`_ |
| 50 | |
| 51 | - Full support for `NFD management protocols |
| 52 | <http://redmine.named-data.net/projects/nfd/wiki/Management>`_ to NFD status |
| 53 | information, create and manage NFD Faces, receive NFD Face status change |
| 54 | notifications, update StrategyChoice for namespaces, and manage routes in RIB |
| 55 | - Support for `LocalControlHeader |
| 56 | <http://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader>`_ to implement |
| 57 | special NDN applications that need low-level control of NDN packet forwarding |
| 58 | |
| 59 | - **Security support** |
| 60 | |
| 61 | + A set of security primitives to allowing implementation of secure NDN applications in |
| 62 | a simplified manner |
| 63 | |
| 64 | - **KeyChain**: provides simple interfaces of packet signing, and key and certificate |
| 65 | management |
| 66 | - **ValidatorConfig**: validator that implements trust model defined in a configuration |
| 67 | file |
| 68 | - **CommandInterestGenerator** and **CommandInterestValidator**: convenient helpers to produce |
| 69 | and validate command interests, while preventing potential replay attacks |
| 70 | |
| 71 | + Several implementations of trusted platform modules to securely manage private keys |
| 72 | |
| 73 | - **SecTpmOsx**: TPM based on OSX KeyChain (OSX-specific) |
| 74 | - **SecTpmFile**: TPM that uses file-based access control to protect keys (cross-platform) |
| 75 | |
| 76 | + Extensive set of security command-line tools to manage security identities and certificates |
| 77 | |
| 78 | - Generating private/public keys |
| 79 | - Issuing certificates |
| 80 | - Exporting/importing identities |
| 81 | - Managing default security settings |
| 82 | |
| 83 | - **Miscellaneous tools** |
| 84 | |
| 85 | + Scheduler to support delayed time operations |
| 86 | + NDN regular expressions |
| 87 | + Simple config file to alter various aspects of the library |
| 88 | + **tlvdump**: a simple tool to visualize TLV-encoded blocks |