blob: 8f54a0294631d141b0dacf02863fa55e4d5ebbbb [file] [log] [blame]
Alexander Afanasyev45312f52015-09-27 12:06:50 -07001ndn-cxx version 0.1.0
2---------------------
3
4Release date: May 7, 2014
5
6Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental
7eXtensions.
8
9Originally based on `ndn-cpp library <https://github.com/named-data/ndn-cpp>`_ the ndn-cxx
10library adopts a slightly different design philosophy (including an extensive use of Boost
11libraries to facilitate development, as well as the use of Crypto++ library to support
12cryptographic operations), and includes a number of extensions that aim to simplify NDN
13application development.
14
15The current features include:
16
17- **Base**
18
19 + Fully asynchronous, event-driven communication model, which is implemented using `Boost.Asio
Davide Pesavento933a5672020-07-03 22:32:43 -040020 <https://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html>`_
Alexander Afanasyev45312f52015-09-27 12:06:50 -070021 + 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
Davide Pesavento933a5672020-07-03 22:32:43 -040027 <https://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html>`_
Alexander Afanasyev45312f52015-09-27 12:06:50 -070028 + Simplified and extended `NDN API <doxygen/annotated.html>`_
29 + Extensive set of unit-tests based on `Boost.Test framework
Davide Pesavento933a5672020-07-03 22:32:43 -040030 <https://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html>`_
Alexander Afanasyev45312f52015-09-27 12:06:50 -070031
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
Davide Pesavento02ed3322023-02-23 19:40:22 -050038 + Full support of `NDN-TLV packet format v0.1 <https://docs.named-data.net/NDN-packet-spec/0.1/>`__
Alexander Afanasyev45312f52015-09-27 12:06:50 -070039 + 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
Davide Pesavento46b04a52019-03-28 21:36:35 -040052 <https://redmine.named-data.net/projects/nfd/wiki/Management>`_ to NFD status
Alexander Afanasyev45312f52015-09-27 12:06:50 -070053 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
Davide Pesavento46b04a52019-03-28 21:36:35 -040056 <https://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader>`_ to implement
Alexander Afanasyev45312f52015-09-27 12:06:50 -070057 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