Wiki » History » Version 25
Junxiao Shi, 12/04/2017 06:32 AM
1 | 12 | Shuo Chen | Repo protocol and repo-ng |
---|---|---|---|
2 | 2 | Alex Afanasyev | ============= |
3 | 1 | Alex Afanasyev | |
4 | 13 | Shuo Chen | ## Repo protocol |
5 | |||
6 | 5 | Shuo Chen | **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 | 3 | Shuo Chen | |
8 | 22 | Alex Afanasyev | **Repo protocol** conforms to **[[Repo Protocol Specification|Repo Protocol Specification]]** for operating and controlling, including a set of repo management protocols: |
9 | 1 | Alex Afanasyev | |
10 | 21 | Alex Afanasyev | - **[[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 | 1 | Alex Afanasyev | |
13 | 21 | Alex Afanasyev | + **[[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 | 13 | Shuo Chen | |
19 | ## repo-ng |
||
20 | |||
21 | 20 | Alex Afanasyev | **repo-ng** (repo-new generation) is an implementation of NDN persistent in-network storage conforming to **Repo protocol**. It uses [ndn-xx](http://redmine.named-data.net/projects/ndn-cxx) as NDN client library and database sqlite3 as underlying data storage. |
22 | 14 | Shuo Chen | |
23 | ### platform and libraries |
||
24 | 15 | Shuo Chen | * [C++ 03](http://en.cppreference.com/w/), [code style guidelines](http://redmine.named-data.net/projects/nfd/wiki/CodeStyle) |
25 | * [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) |
||
26 | * [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) |
||
27 | 20 | Alex Afanasyev | * [ndn-cxx](https://github.com/named-data/ndn-cxx), Extended version of NDN C++ client library |
28 | 14 | Shuo Chen | * [waf build system](https://code.google.com/p/waf/) |
29 | * [sqlite3](http://sqlite.org/) |
||
30 | |||
31 | ### specific design |
||
32 | * [[Database design|Database design]] |
||
33 | * [[Software Structure|Software Structure]] |
||
34 | 24 | Weiqi Shi | * [[Tools|tools]] |
35 | 16 | Shuo Chen | |
36 | ### current supported functions |
||
37 | 17 | Shuo Chen | |
38 | Most parts of the protocol are supported in repo-ng. The following specifications are not supported in current version. |
||
39 | 18 | Shuo Chen | |
40 | * For deletion command, if EndBlockId is null in RepoCommandParameter, repo cannot response all the segmented data from StartBlockId |
||
41 | * Command for checking deletion progress |
||
42 | |||
43 | 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. |
||
44 | 25 | Junxiao Shi | |
45 | ### user experience |
||
46 | |||
47 | * [repo-ng cheatsheet (2014)](http://www.lists.cs.ucla.edu/pipermail/ndn-interest/attachments/20171202/84b3fec8/attachment-0001.pdf) |