Repo Protocol Specification » History » Version 133
Alex Afanasyev, 07/23/2014 04:34 PM
1 | 1 | Shuo Chen | Repo Protocol Specification |
---|---|---|---|
2 | =========================== |
||
3 | |||
4 | 36 | Shuo Chen | A Repo supports the network by preserving content and responding to Interests requesting content that it holds. A Repo can exist in any node, and is recommended if applications in that node need to preserve data. The NDN repo protocol is a specification of repo operations including reading, insertion and deletion of data objects in repo. |
5 | 2 | Shuo Chen | |
6 | 130 | Alex Afanasyev | Repo semantics is based on [[ndn-cxx:SignedInterest|Signed Interests]] with signed components an the end of the name and basic common semantics of NDN. |
7 | 2 | Shuo Chen | |
8 | 11 | Shuo Chen | When some operation of repo including insertion and deletion of data objects is requested, a command interest is sent. The command interest is the interest as command of insertion and deletion and signed as form of command interest for access control. The repo will response the command with the data object. |
9 | 4 | Shuo Chen | |
10 | 132 | Alex Afanasyev | The repo protocol can be categorized in two sections of Data packet retrieval and Data packet management. Repo-ng implements a set of [[Repo Management Protocols]] to insert and delete data in different ways. |
11 | |||
12 | ## Repo Management Protocols |
||
13 | 1 | Shuo Chen | |
14 | 133 | 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. |
15 | 132 | Alex Afanasyev | - **[[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: |
16 | |||
17 | + **[[Watched Prefix Insertion Protocol]]** defines a protocol to insert continuously generated data |
||
18 | + **[[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) |
||
19 | |||
20 | - **[[Repo Trust Model]]** |
||
21 | - **[[Repo Deletion Protocol]]** defines format of deletion of a single or collection of Data packets under certain prefix |
||
22 | |||
23 | 4 | Shuo Chen | |
24 | 131 | Alex Afanasyev | ## Data packet retrieval from repo |
25 | 4 | Shuo Chen | |
26 | 130 | Alex Afanasyev | Repo registers prefixes of data objects it holds into NDN forwarding daemon and the repo will respond the data with such prefixes. |
27 | 6 | Shuo Chen | |
28 | 11 | Shuo Chen | A standard interest is used to fetch content from the repo. The repo will respond when the name of the interest matches the prefix it registered in NFD. If the content in repo matches the interests, it will respond with the data object. When the interest is not matched, it will not respond. |
29 | 6 | Shuo Chen | |
30 | The protocol is listed as bellow |
||
31 | |||
32 | If there is a matching data object: |
||
33 | |||
34 | 7 | Shuo Chen | Requester Repo |
35 | | | |
||
36 | | | |
||
37 | | Interest | |
||
38 | t1 |-------------------------->| |
||
39 | | | |
||
40 | | Data Object | |
||
41 | t2 |<==========================| |
||
42 | 1 | Shuo Chen | | | |
43 | 7 | Shuo Chen | | | |
44 | 1 | Shuo Chen | | | |
45 | 7 | Shuo Chen | |
46 | If there is no matching data object: |
||
47 | 6 | Shuo Chen | |
48 | Requester Repo |
||
49 | | | |
||
50 | 1 | Shuo Chen | | | |
51 | 7 | Shuo Chen | | Interest | |
52 | t1 |-------------------------->| |
||
53 | | | |
||
54 | | | |
||
55 | | | |
||
56 | |||
57 | 74 | Shuo Chen | |
58 | ### About Freshness |
||
59 | 19 | Shuo Chen | |
60 | 20 | Alex Afanasyev | Solution to handle freshness by repo has not been clearly defined, so producer needs to take care of freshness when it puts things into repo, i.e. explicitly delete obsolete content. The `MustBeFresh` selector will be ignored by repo when fetching content from repo or handling repo command by repo. |