Project

General

Profile

Metadata » History » Version 7

Davide Pesavento, 07/10/2026 09:55 PM

1 6 Davide Pesavento
# Metadata Retrieval Protocol
2 1 Junxiao Shi
3 7 Davide Pesavento
This document defines the recommended semantics and packet format of the **Metadata Retrieval Protocol**. This protocol, inspired by [Real-Time Data Retrieval in Named Data Networking](https://named-data.net/publications/hoticn18realtime-retrieval/), can be used to discover the latest version number of a data stream and any other application-specific metadata.
4 1 Junxiao Shi
5 6 Davide Pesavento
This is an application-level protocol, and its usage could be application specific. Therefore, an application MAY define its own instance of the protocol based on this document, rather than directly referencing this specification.
6 1 Junxiao Shi
7
## Metadata Packet
8
9 6 Davide Pesavento
The *metadata packet* is a Data packet that carries the latest version number of a data stream and any other application-specific metadata.
10 1 Junxiao Shi
11
### Name Suffix
12
13
The name of a metadata packet MUST end with these three name components:
14
15
1. The keyword component `32=metadata`, indicating this Data packet is a metadata packet under this specification.
16 7 Davide Pesavento
2. A version number component, whose format is defined in [Naming Conventions](https://named-data.net/publications/techreports/ndn-tr-22-3-ndn-memo-naming-conventions/).
17
3. A segment number component, whose format is defined in [Naming Conventions](https://named-data.net/publications/techreports/ndn-tr-22-3-ndn-memo-naming-conventions/). Normally the metadata is not segmented and thus the segment number is zero, but this component is still included for consistency and future proofing.
18 1 Junxiao Shi
19
### Name Prefix
20
21 5 Davide Pesavento
The name prefix of a metadata packet before the above three name components SHOULD be the same as the name of the versioned data up to (and not including) its version number component.
22
For example, an application can have the following namespace:
23 1 Junxiao Shi
24
```
25 7 Davide Pesavento
# Data stream
26 1 Junxiao Shi
/net/example/www/frontpage/%FD%97%47%1E%6C/%00%00
27
/net/example/www/frontpage/%FD%97%47%1E%6C/%00%01
28
/net/example/www/frontpage/%FD%97%47%1E%6D/%00%00
29
/net/example/www/frontpage/%FD%97%47%1E%6D/%00%01
30
31 7 Davide Pesavento
# Metadata packet
32 1 Junxiao Shi
/net/example/www/frontpage/32=metadata/%FD%7E%5F%45%08/%00%00
33
```
34
35
### FreshnessPeriod
36
37 6 Davide Pesavento
The *FreshnessPeriod* of a metadata packet MUST NOT be zero.
38
See the [RDR paper](https://named-data.net/publications/hoticn18realtime-retrieval/) for guidelines on an appropriate value for this field.
39 1 Junxiao Shi
40
### Content Payload
41
42 6 Davide Pesavento
The *Content* of a metadata packet MUST be a sequence of TLV elements. At least one of the TLV elements MUST be a *Name* element. The first *Name* element indicates the versioned name of the latest version of the data; additional *Name* elements, if any, are ignored.
43 1 Junxiao Shi
44
For example:
45
46 6 Davide Pesavento
```xml
47 1 Junxiao Shi
<Content>
48
  <ArbitraryElement>this is ignored</ArbitraryElement>
49
  <Name>/net/example/www/frontpage/%FD%97%47%1E%6D</Name>
50
  <Name>this is ignored</Name>
51
</Content>
52
```
53
54 6 Davide Pesavento
## Metadata Discovery Interest
55 1 Junxiao Shi
56 6 Davide Pesavento
Consumers express *metadata discovery Interests* to retrieve metadata packets, in order to discover the latest version number of the data stream and any other application-specific metadata.
57
A metadata discovery Interest MUST:
58 1 Junxiao Shi
59 6 Davide Pesavento
* have a name that ends with a `32=metadata` keyword component
60 5 Davide Pesavento
* contain *CanBePrefix*
61
* contain *MustBeFresh*