Project

General

Profile

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)