Wiki » History » Version 1
Saurab Dulal, 04/09/2020 10:04 AM
| 1 | 1 | Saurab Dulal | NDN Service Discovery (NDNSD) |
|---|---|---|---|
| 2 | ============= |
||
| 3 | |||
| 4 | ## Repo protocol |
||
| 5 | |||
| 6 | **Repo protocol** is semantics and operating process for persistent storage node in NDN. The operation of NDN repo includes reading from, insertion to and deleting from data objects in NDN repository nodes. |
||
| 7 | |||
| 8 | **Repo protocol** conforms to **[[Repo Protocol Specification|Repo Protocol Specification]]** for operating and controlling, including a set of repo management protocols: |
||
| 9 | |||
| 10 | - **[[Repo Command]]** defines the request and response formats of commands that can insert or remove data from repo, and how these commands should be signed and authenticated. |
||
| 11 | - **[[Basic Repo Insertion Protocol]]** defines format of insertion of a single or collection of Data packets. In addition to the basic protocol, repo-ng implements several other insertion protocols: |
||
| 12 | |||
| 13 | + **[[Watched Prefix Insertion Protocol]]** defines a protocol to insert continuously generated data |
||
| 14 | + **[[Tcp Bulk Insert Repo Insertion Protocol]]** defines a simple TCP-based protocol to insert Data packets in bulk (e.g., from a producer on the same host) |
||
| 15 | |||
| 16 | - **[[Repo Deletion Protocol]]** defines format of deletion of a single or collection of Data packets under certain prefix |
||
| 17 | |||
| 18 | ## repo-ng |
||
| 19 | |||
| 20 | **repo-ng** (repo-new generation) is an implementation of NDN persistent in-network storage conforming to **Repo protocol**. It uses [ndn-cxx](http://redmine.named-data.net/projects/ndn-cxx) as NDN client library and database sqlite3 as underlying data storage. |
||
| 21 | |||
| 22 | ### platform and libraries |
||
| 23 | * [C++11](http://en.cppreference.com/w/), [code style guidelines](http://redmine.named-data.net/projects/nfd/wiki/CodeStyle) |
||
| 24 | * [Boost >=1.48.0](http://www.boost.org/doc/libs/1_48_0/), we use [|a limited set of Boost libraries](http://redmine.named-data.net/projects/nfd/wiki/Boost) |
||
| 25 | * [Boost Unit Test Framework](http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html), more information on [[unit testing](http://redmine.named-data.net/projects/nfd/wiki/UnitTesting) |
||
| 26 | * [ndn-cxx](https://github.com/named-data/ndn-cxx), Extended version of NDN C++ client library |
||
| 27 | * [waf build system](https://code.google.com/p/waf/) |
||
| 28 | * [sqlite3](http://sqlite.org/) |
||
| 29 | |||
| 30 | ### specific design |
||
| 31 | * [[Database design|Database design]] |
||
| 32 | * [[Software Structure|Software Structure]] |
||
| 33 | * [[Tools|tools]] |
||
| 34 | |||
| 35 | ### current supported functions |
||
| 36 | |||
| 37 | Most parts of the protocol are supported in repo-ng. The following specifications are not supported in current version. |
||
| 38 | |||
| 39 | * For deletion command, if EndBlockId is null in RepoCommandParameter, repo cannot response all the segmented data from StartBlockId |
||
| 40 | * Command for checking deletion progress |
||
| 41 | |||
| 42 | Trust model of command validation and access control have not been designed. All the commands are validated in current version and all the commands could pass. |
||
| 43 | |||
| 44 | ### user experience |
||
| 45 | |||
| 46 | * [repo-ng cheatsheet (2014)](http://www.lists.cs.ucla.edu/pipermail/ndn-interest/attachments/20171202/84b3fec8/attachment-0001.pdf) |