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) |