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