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