Davide Pesavento | 0b6e1db | 2025-04-19 19:23:11 -0400 | [diff] [blame^] | 1 | # ndnget |
| 2 | |
| 3 | **ndnget** is a consumer program that fetches the segments (Data packets) of a named object, |
| 4 | optionally discovering the latest version of the object, and then writes the content of the |
| 5 | retrieved object to the standard output. |
| 6 | |
| 7 | ## Version discovery in ndnget |
| 8 | |
| 9 | If a version component is present at the end of the user-specified NDN name, the provided version |
| 10 | number will be used, without any version discovery process. Otherwise, discovery Interest(s) will |
| 11 | be sent out to fetch metadata of the solicited content from which the Data version will be resolved. |
| 12 | For more information about the packet format and naming conventions of Interest and Data packets |
| 13 | used for version discovery in ndnget, please refer to: |
| 14 | [Realtime Data Retrieval (RDR) protocol](https://redmine.named-data.net/projects/ndn-tlv/wiki/RDR). |
| 15 | |
| 16 | ## Interest pipeline types in ndnget |
| 17 | |
| 18 | * `fixed`: maintains a fixed-size window of Interests in flight; the window size is configurable |
| 19 | via a command line option and defaults to 1. |
| 20 | |
| 21 | * `aimd` : adjusts the window size via additive-increase/multiplicative-decrease (AIMD). |
| 22 | By default, it uses a Conservative Window Adaptation, that is, the congestion window |
| 23 | will be decreased at most once per round-trip-time. |
| 24 | |
| 25 | * `cubic`: adjusts the window size similar to the TCP CUBIC algorithm. |
| 26 | For details about both aimd and cubic please refer to: |
| 27 | [A Practical Congestion Control Scheme for Named Data |
| 28 | Networking](https://conferences2.sigcomm.org/acm-icn/2016/proceedings/p21-schneider.pdf). |
| 29 | |
| 30 | The default Interest pipeline type is `cubic`. |
| 31 | |
| 32 | ## Usage examples |
| 33 | |
| 34 | To retrieve the latest version of a published object, the following command can be used: |
| 35 | |
| 36 | ndnget /localhost/demo/gpl3 |
| 37 | |
| 38 | To fetch a specific version of a published object, you can specify the version number at the end |
| 39 | of the name. For example, if the version is known to be 1449078495094, the following command |
| 40 | will fetch that exact version of the object (without version discovery): |
| 41 | |
| 42 | ndnget -Nt /localhost/demo/gpl3/v=1449078495094 |
| 43 | |
| 44 | For more information, run the programs with `--help` as argument. |