Project

General

Profile

Wiki » History » Revision 20

Revision 19 (Shuo Chen, 05/30/2014 01:22 AM) → Revision 20/27 (Alex Afanasyev, 07/21/2014 01:21 PM)

Repo protocol and repo-ng 
 ============= 

 ## Repo protocol 

 **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. 

 **Repo protocol** is based on [Command Interests](http://redmine.named-data.net/projects/nfd/wiki/Command_Interests) specification. 

 **Repo protocol** conforms to **protocols and specifications** for operating and controlling. 

 * [NFD command interests](http://redmine.named-data.net/projects/nfd/wiki/Command_Interests) for constructing signed interest of access control. 
 * [[Repo Protocol Specification|Repo Protocol Specification]] 
 * [NFD Control Command specification](http://redmine.named-data.net/projects/nfd/wiki/ControlCommand): The reponse of insertion and deletion command will follow the response format of this specification, but with different defination of status code. 

 

 ## repo-ng 

 **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) [ndn-cpp-dev](http://redmine.named-data.net/projects/ndn-cpp-dev) as NDN client library and database sqlite3 as underlying data storage. 

 ### platform and libraries 
 * [C++ 03](http://en.cppreference.com/w/), [code style guidelines](http://redmine.named-data.net/projects/nfd/wiki/CodeStyle) 
 * [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) 
 * [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) 
 * [ndn-cxx](https://github.com/named-data/ndn-cxx), [ndn-cpp-dev](https://github.com/named-data/ndn-cpp-dev), Extended version of NDN C++ client library  
 * [waf build system](https://code.google.com/p/waf/) 
 * [sqlite3](http://sqlite.org/) 

 ### specific design 
 * [[Database design|Database design]] 
 * [[Software Structure|Software Structure]] 

 ### current supported functions 

 Most parts of the protocol are supported in repo-ng. The following specifications are not supported in current version. 

 * For deletion command, if EndBlockId is null in RepoCommandParameter, repo cannot response all the segmented data from StartBlockId 
 * Command for checking deletion progress 

 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.