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