interest: define ForwardingHint
ForwardingHint replaces Link and SelectedDelegation.
refs #4054
Change-Id: I958bf93a625f764b58736a44781eb2038670d8c9
diff --git a/changelog.rst b/changelog.rst
index 871d7d1..f72e0ae 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -8,8 +8,8 @@
- **Interest**
- + Add specification of Link and SelectedDelegation fields
+ Add default of leftmost child if ChildSelector field not present
+ + Add specification of ForwardingHint field
- **Data**
diff --git a/interest.rst b/interest.rst
index 70271e3..30d9abd 100644
--- a/interest.rst
+++ b/interest.rst
@@ -12,16 +12,15 @@
Selectors?
Nonce
InterestLifetime?
- Link?
- SelectedDelegation?
+ ForwardingHint?
``Name`` and ``Nonce`` are the only two required elements in an Interest packet.
Selectors are optional elements that further qualify Data that may match the Interest.
They are used for discovering and selecting the Data that matches best to what the application wants. Selectors are placed right after the Name to facilitate implementations that may use continuous memory block of Name and Selectors TLVs together as the index for PIT lookup. By using a TLV to group all the Selectors, an implementation can easily skip them to find Nonce, which is used together with Name to identify looping Interests.
If Selectors TLV is present in the Interest, it MUST contain at least one selector.
-``InterestLifetime`` is optional and is referred to as a *Guider*.
-It affects Interest forwarding behavior, i.e., how long an Interest may be kept in the PIT.
+``InterestLifetime`` and ``ForwardingHint`` are optional and are referred to as *Guiders*.
+They affect Interest forwarding behavior.
.. Guiders are not grouped.
@@ -176,27 +175,14 @@
If the ``InterestLifetime`` element is omitted, a default value of 4 seconds is used (4000).
The missing element may be added before forwarding.
-Link
-~~~~
+ForwardingHint
+++++++++++++++
-The format is the following::
+::
- Link ::= LinkObject
+ ForwardingHint ::= FORWARDING-HINT-TYPE TLV-LENGTH
+ Delegation+
-``LinkObject`` is a :ref:`Data packet <data>` of a dedicated ``LINK`` type and specially-formatted content part, listing a set of delegations (name prefixes and the associated priorities) that should be used to guide forwarding of the Internet packet.
-
-See the :ref:`link` section for formal definition of the ``LinkObject``.
-
-Selected Delegation
-~~~~~~~~~~~~~~~~~~~
-
-The SelectedDelegation field indicates the index of the delegation in the attached ``Link`` that was chosen by a downstream forwarder(s).
-
-The format is the following::
-
- SelectedDelegation ::= SELECTED-DELEGATION-TYPE TLV-LENGTH
- nonNegativeInteger
-
-If ``Link`` field is not present, the ``SelectedDelegation`` field MUST NOT be present.
-
-The index value of the ``SelectedDelegation`` field MUST be less than the number of delegations within the ``Link``.
+The ForwardingHint field contains a list of name delegations, as defined in :ref:`link` section.
+Each delegation implies that the requested Data packet can be retrieved by forwarding the Interest along the delegation path.
+Specifics of the forwarding logic for Interests with ``ForwardingHint`` will be defined in a separated document.
diff --git a/link.rst b/link.rst
index f0c2199..ca64b56 100644
--- a/link.rst
+++ b/link.rst
@@ -23,7 +23,7 @@
Link Object is a data packet, whose content contains a list of one or more name delegations: a pair of name and the associate priority.
-The semantical meaning of the delegations depends on the specific use. For example, when LinkObject is used as part of Interest packet, each delegation implies that the requested Data packet can be retrieved by forwarding the interest along the delegation path. Specifics of the forwarding logic for Interests with ``LinkObject`` will be defined in a separated document.
+The LinkObject can be used to derive the ``ForwardingHint`` guider of an Interest packet.
The list of delegations in ``LinkContent`` SHOULD be ordered by preference value in ascending order (i.e., the lowest value first).
diff --git a/types.rst b/types.rst
index 4ed52f4..a63926f 100644
--- a/types.rst
+++ b/types.rst
@@ -29,6 +29,8 @@
+---------------------------------------------+-------------------+----------------+
| InterestLifetime | 12 | 0x0c |
+---------------------------------------------+-------------------+----------------+
+| ForwardingHint | 30 | 0x1e |
++---------------------------------------------+-------------------+----------------+
| **Interest/Selectors** |
+---------------------------------------------+-------------------+----------------+
| MinSuffixComponents | 13 | 0x0d |
@@ -80,7 +82,7 @@
+----------------+-----------------------------------------------------------+
| Values | Designation |
+================+===========================================================+
-| 0, 2-4, 30-79 | Reserved for future assignments (1-byte encoding) |
+| 0, 2-4, 31-79 | Reserved for future assignments (1-byte encoding) |
+----------------+-----------------------------------------------------------+
| 11 | Reserved, formerly `Scope` |
+----------------+-----------------------------------------------------------+