NDN - repo-ng
Repo protocol and repo-ng
1. Repo protocol
Repo protocol 은 NDN 영구 스토리지 노드 (persistent storage node) 로서의 의미 및 운영 프로세스를 의미합니다. NDN repo 의 동작은 NDN Repository 노드에서 데이터 객체 (Data Object) 에 대한 read, insert, delete 를 수행하는 것 입니다.
Repo protocol 은 운영 및 제어를 위한 Repo Protocol Specification 을 준수하며 아래의 Repo 관리 프로토콜을 포함합니다:
- Repo Command 는 repo 에 데이터를 insert 하거나 remove 할 수 있는 요청 및 응답에 대한 포멧, 이러한 command 를 서명하고 인증하는 방법을 정의합니다.
- Basic Repo Insertion Protocol 은 데이터 패킷의 insert 형식을 정의합니다. repo-ng 는 기본 프로토콜 외에도 몇가지 다른 insert 프로토콜을 구현할 수 있습니다.
- Watched Prefix Insertion Protocol: 지속적으로 생성된 데이터를 insert 하는 프로토콜을 정의합니다.
- Tcp Bulk Insert Repo Insertion Protocol: 대량의 데이터 패킷 (예: 동일 호스트에서 생성된) 을 insert 하는 간단한 TCP 기반 프로토콜을 정의합니다.
- Repo Deletion Protocol 은 특정 prefix 의 데이터 패킷에 대한 delete 포멧을 정의합니다.
2. repo-ng
repo-ng (repo-new generation) 는 Repo protocol 을 준수하는 NDN 영구(NDN persistent) 인-네트워크 스토리지 (in-network storage) 의 구현체를 의미합니다. NDN 클라이언트 라이브러리로 ndn-cxx
를 사용하고 기본 스토리지로 sqlite3
데이터베이스를 사용합니다.
2.1 platform and libraries
- C++11, code style guidelines
- Boost >=1.48.0, we use a limited set of Boost libraries
- Boost Unit Test Framework, more information on unit testing
- ndn-cxx, Extended version of NDN C++ client library
- waf build system
- sqlite3
2.2 specific design
2.3 current supported functions
프로토콜의 대부분은 repo-ng 에서 지원됩니다. 하지만 아래의 사양은 현재 버전에서 지원되지 않습니다.
- delete command 에서, RepoCommandParameter 의 EndBlockId 가 null 인 경우 repo 는 StartBlockId 의 모든 세그먼트 데이터에 응답 할 수 없습니다.
- delete 진행 과정을 체크하는 command 는 지원하지 않습니다.
command 검증 (validation) 및 액세스 제어 (access control) 에 대한 신뢰 모델 (Trust model) 이 설계되지 않았습니다. 모든 command 는 현재 버전에서 유효하며 통과할 수 있습니다.