CCNx path steering: Path Steering in Content-Centric Networking (CCNx) and Named Data Networking (NDN)
Discovering the path a content request took, then asking for the next one to take the same path.
Moiseenko, I. and D. Oran, "Path Steering in Content-Centric Networking (CCNx) and Named Data Networking (NDN)", RFC 9531, DOI 10.17487/RFC9531, March 2024, <https://www.rfc-editor.org/info/rfc9531>.
@misc{rfc9531,
series = {Request for Comments},
number = 9531,
howpublished = {RFC 9531},
publisher = {RFC Editor},
doi = {10.17487/RFC9531},
url = {https://www.rfc-editor.org/info/rfc9531},
author = {I. Moiseenko and D. Oran},
title = {{Path Steering in Content-Centric Networking (CCNx) and Named Data Networking (NDN)}},
pagetotal = 19,
year = 2024,
month = mar,
} RFC text
Contents
Internet Research Task Force (IRTF) I. Moiseenko
Request for Comments: 9531 Apple, Inc.
Category: Experimental D. Oran
ISSN: 2070-1721 Network Systems Research and Design
March 2024
Path Steering in Content-Centric Networking (CCNx) and Named Data
Networking (NDN)
Abstract
Path steering is a mechanism to discover paths to the producers of
Information-Centric Networking (ICN) Content Objects and steer
subsequent Interest messages along a previously discovered path. It
has various uses, including the operation of state-of-the-art multi-
path congestion control algorithms and for network measurement and
management. This specification derives directly from the design
published in "Path Switching in Content Centric and Named Data
Networks" (4th ACM Conference on Information-Centric Networking) and,
therefore, does not recapitulate the design motivations,
implementation details, or evaluation of the scheme. However, some
technical details are different, and where there are differences, the
design documented here is to be considered definitive.
This document is a product of the IRTF Information-Centric Networking
Research Group (ICNRG). It is not an IETF product and is not an
Internet Standard.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for examination, experimental implementation, and
evaluation.
This document defines an Experimental Protocol for the Internet
community. This document is a product of the Internet Research Task
Force (IRTF). The IRTF publishes the results of Internet-related
research and development activities. These results might not be
suitable for deployment. This RFC represents the consensus of the
Information-Centric Networking Research Group of the Internet
Research Task Force (IRTF). Documents approved for publication by
the IRSG are not candidates for any level of Internet Standard; see
Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9531.
Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document.
Table of Contents
1. Introduction
1.1. Path Steering as an Experimental Extension to ICN Protocol
Architectures
1.2. Requirements Language
1.3. Terminology
2. Essential Elements of ICN Path Discovery and Path Steering
2.1. Path Discovery
2.2. Path Steering
2.3. Handling Path Steering Errors
2.4. Interactions with Interest Aggregation
2.5. How to Represent the Path Label
3. Mapping to CCNx and NDN Packet Encodings
3.1. Path Label TLV
3.2. Path Label Encoding for CCNx
3.3. Path Label Encoding for NDN
4. IANA Considerations
5. Security Considerations
5.1. Cryptographic Protection of a Path Label
6. References
6.1. Normative References
6.2. Informative References
Authors' Addresses
1. Introduction
Path steering is a mechanism to discover paths to the producers of
ICN Content Objects and steer subsequent Interest messages along a
previously discovered path. It has various uses, including the
operation of state-of-the-art multi-path congestion control
algorithms and for network measurement and management. This
specification derives directly from the design published in
[Moiseenko2017] and, therefore, does not recapitulate the design
motivations, implementation details, or evaluation of the scheme.
That publication should be considered a normative reference as it is
not likely a reader will be able to understand all elements of this
design without first having read the reference. However, some
technical details are different, and where there are differences, the
design documented here is to be considered definitive.
Path discovery and subsequent path steering in ICN networks is
facilitated by the symmetry of forward and reverse paths in the
Content-Centric Networking (CCNx) and Named Data Networking (NDN)
architectures. Path discovery is achieved by a consumer endpoint
transmitting an ordinary Interest message and receiving a Content
(Data) message containing an end-to-end path label constructed on the
reverse path by the forwarding plane. Path steering is achieved by a
consumer endpoint including a path label in the Interest message,
which is forwarded to each nexthop through the corresponding egress
interfaces in conjunction with Longest Name Prefix Match (LNPM)
lookup in the Forwarding Information Base (FIB).
This document is a product of the IRTF Information-Centric Networking
Research Group (ICNRG). It was supported by the ICNRG participants
during its development and through Research Group Last Call. It has
received detailed review by experts in both the CCNx and NDN
communities.
1.1. Path Steering as an Experimental Extension to ICN Protocol
Architectures
There are a number of important use cases to justify extending ICN
architectures such as CCNx [RFC8569] or NDN [NDN] to provide these
capabilities. These are summarized as follows:
* Support the discovery, monitoring, and troubleshooting of multi-
path network connectivity, based on names and name prefixes.
Analogous functions have been shown to be a crucial operational
capability in multicast and multi-path topologies for IP. The
canonical tools are the well-known _traceroute_ and _ping_. For
point-to-multipoint MPLS, the more recent MPLS traceroute
[RFC8029] protocol is used. Equivalent diagnostic functions have
been defined for CCNx through the ICN Ping [RFC9508] and ICN
Traceroute [RFC9507] specifications; both of which are capable of
exploiting path steering, if available.
* Perform accurate online measurement of network performance, which
generally requires multiple consecutive packets to follow the same
path under control of an application.
* Improve the performance and flexibility of multi-path congestion
control algorithms. Congestion control schemes, such as
[Mahdian2016] and [Song2018], depend on the ability of a consumer
to explicitly steer packets onto individual paths in a multi-path
and/or multi-destination topology.
* Allow a consumer endpoint to mitigate content poisoning attacks by
directing its Interests onto the network paths that bypass
poisoned caches.
The path discovery machinery described here may (and likely will)
discover paths with varying properties. [RFC9217] discusses a number
of open questions in path-aware networking, among which is how to
assess and exploit paths having different properties. Experimenting
with ICN path steering may be helpful in further elucidating these
questions and perhaps shedding light on which path properties are
most useful for the use cases cited above.
One nuance compared to other path-aware networking approaches is that
ICN path steering piggybacks path discovery on the base ICN data
exchange rather than having a separate path advertisement or
discovery mechanism. That means when the recorded path comes back in
an ICN Data message response, the properties of the path are known
only implicitly to the consumer as opposed to being explicitly
labeled. That makes the question of what properties a consumer uses
to choose a path one of observation or measurement rather than
advance selection based on an explicit, advertised property (e.g.,
SCION [SCION]).
The utility and overall technical quality of this path steering
capability can be assessed by how well it enables the above use cases
and what performance and robustness effects it has on the underlying
ICN protocols and their use in various applications. A few of the
open questions that should be addressed through experimentation with
path steering include:
* How much more accurate and useful are measurements of RTT, packet
loss, etc. through ping and traceroute when utilizing path
steering?
* How much is the performance and robustness of multi-path
forwarding enhanced by the use of this explicit path steering
capability?
1.2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
1.3. Terminology
This document uses the general ICN terms that are defined in
[RFC8793]. In addition, we define the following terms specific to
path steering:
Path Discovery: The process of sending an Interest message
requesting discovery of a path and, if successful, receiving a
Data message containing a path label for the path the
corresponding Interest traversed.
Path Steering: The process of sending an Interest message containing
the path label of a previously discovered path so that the
forwarders use that path when forwarding that particular Interest
message.
Path Label: An optional field in the packet indicating a particular
path from a consumer to either a producer or a forwarder cache
that can respond with the requested item. In an Interest message,
the path label gets built up hop by hop as the Interest traverses
a path. In a Data message, the path label carries the full path
information back to the consumer for use in one or more subsequent
Interest messages.
Nexthop Label: One entry in a path label representing the next hop
for the corresponding forwarder to use when a path-steered
Interest message arrives at that forwarder. A sequence of Nexthop
Labels constitutes a full path label.
2. Essential Elements of ICN Path Discovery and Path Steering
We elucidate the design using CCNx semantics [RFC8569] and extend its
CCNx Message Formats [RFC8609] defined in Section 3.2. While the
terminology is slightly different, this design can also be applied to
NDN by extending its bespoke packet encodings [NDNTLV] (see
Section 3.3).
2.1. Path Discovery
_End-to-end Path Discovery_ for CCNx is achieved by creating a _path
label_ and placing it as a hop-by-hop TLV in a CCNx Content (Data)
message. The path label is constructed hop by hop as the message
traverses the reverse path of transit CCNx forwarders, as shown in
the first example in Figure 1. The path label is updated by adding
the Nexthop Label of the interface at which the Content (Data)
message has arrived to the existing path label. Eventually, when the
Content (Data) message arrives at the consumer, the path label
identifies the complete path the Content (Data) message took to reach
the consumer. As shown in the second example in Figure 1, when
multiple paths are available, subsequent Interests may be able to
discover additional paths by omitting a path steering TLV and
obtaining a new path label on the returning Interest.
Discover and use first path:
Consumer Interest 1 ___ Interest 2
| | ^ |
| | | |
| | | |
Forwarder 1 v | V
| (nexthop 1) (nexthop 1) ^ (nexthop 1)
| | | |
| | | |
Forwarder 2 v | v
(nexthop 3) / \ (nexthop 2) (nexthop 2) ^ (nexthop 2)
/ \ | | |
/ \ | | |
/ \ | | |
/ \ | | |
/ \ | | |
Forwarder 4 Forwarder 3 v | v
(nexthop 5)\ / (nexthop 4) (nexthop 4) ^ (nexthop 4)
\ / | | |
\ / | | |
\ / | | |
\ / | | |
\ / | | |
\ / v | v
Producer ___ Data 1 ___
or
Content Store
Discover and use second path:
Consumer Interest 3 ___ Interest 4
| | ^ |
| | | |
| | | |
Forwarder 1 v | V
| (nexthop 1) (nexthop 1) ^ (nexthop 1)
| | | |
| | | |
Forwarder 2 v | v
(nexthop 3) / \ (nexthop 2) (nexthop 3) ^ (nexthop 3)
/ \ | | |
/ \ | | |
/ \ | | |
/ \ | | |
/ \ | | |
Forwarder 4 Forwarder 3 v | v
(nexthop 5)\ / (nexthop 4) (nexthop 5) ^ (nexthop 5)
\ / | | |
\ / | | |
\ / | | |
\ / | | |
\ / | | |
\ / v | v
Producer ___ Data 2 ___
or
Content Store
Figure 1: Basic Example of Path Discovery and Steering
2.2. Path Steering
Due to the symmetry of forward and reverse paths in CCNx, a consumer
application can reuse a discovered path label to fetch the same or a
similar (e.g., next chunk, next Application Data Unit, or next
pointer in a Manifest [FLIC]) Content (Data) message over the
discovered network path. This _path steering_ is achieved by
processing the Interest message's path label at each transit ICN
forwarder and forwarding the Interest through the specified nexthop
among those identified as feasible by LNPM FIB lookup (Figure 2).
----------------------------------------------------------------------
FORWARD PATH
----------------------------------------------------------------------
Interest +---------+ +-----+ (path label) +--------+ (match) Interest
-------->| Content |->| PIT | ------------>| Label |---------------->
| Store | +-----+ | Lookup |
+---------+ | \ (no path label) +--------+
| | \ |\(path label mismatch)
Data | | \ | \
<---------+ v \ | \
aggregate \ | \
\ | \
\ | +-----+ Interest
+--------------|---->| FIB | -------->
| +-----+
InterestReturn (NACK) v | (no route)
<----------------------------------------------+<-------+
----------------------------------------------------------------------
REVERSE PATH
----------------------------------------------------------------------
InterestReturn(NACK) +-----+(update path label) InterestReturn(NACK)
<---------------------| |<----------------------------------------
| |
Data +---------+ | PIT | (update path label) Data
<------| Content |<---| |<----------------------------------------
| Store | | |
+---------+ +-----+
|
| (no match)
v
Figure 2: Path Steering CCNx/NDN Data Plane
2.3. Handling Path Steering Errors
Over time, the state of interfaces and the FIB on forwarders may
change such that, at any particular forwarder, a given nexthop is no
longer valid for a given prefix. In this case, the path label will
point to a now-invalid nexthop. This is detected by failure to find
a match between the decoded nexthop ID and the nexthops of the FIB
entry after LNPM FIB lookup.
On detecting an invalid path label, the forwarder SHOULD respond to
the Interest with an InterestReturn. Therefore, we define a new
_invalid path label_ response code for the InterestReturn message and
include the current path label as a hop-by-hop header. Each transit
forwarder processing the InterestReturn message updates the path
label in the same manner as Content (Data) messages so that the
consumer receiving the InterestReturn (NACK) can easily identify
which path label is no longer valid.
A consumer may alternatively request that a forwarder detecting the
inconsistency forward the Interest by means of normal LNPM FIB lookup
rather than return an error. The consumer endpoint, if it cares, can
keep enough information about outstanding Interests to determine if
the path label sent with the Interest fails to match the path label
in the corresponding returned Content (Data) and use that information
to replace stale path labels. It does so by setting the
FALLBACK_MODE flag of the path label TLV in its Interest message.
2.4. Interactions with Interest Aggregation
If two or more Interests matching the same Pending Interest
Table (PIT) entry arrive at a forwarder, under current behavior, they
will be aggregated whether or not they carry identical path label
TLVs. This may or may not be appropriate. For example, multiple
Interests with different modes (e.g., one with DISCOVERY_MODE and one
without) will get aggregated; therefore, the behavior of the
forwarder might be dependent on the arrival order of those Interests.
In particular:
* If the DISCOVERY_MODE Interest arrives first, it will be forwarded
and potentially discover a new path, while the other Interest will
be aggregated. If that Interest carried no path label, its
behavior is essentially unchanged, but if it carried a path label
without specifying DISCOVERY_MODE, the consumer's intent for the
Interest to traverse the specified path will be ignored, and it is
indeterminate if the chosen path will actually be used.
* If the two Interests arrive in the reverse order, the DISCOVERY
MODE Interest will be aggregated, and the consumer issuing it will
not achieve its desire to discover a new path.
Multiple Interests intended to discover paths (i.e., by carrying the
DISCOVERY_MODE flag defined in Section 3.1) might also be aggregated
by a forwarder. This limits the ability to discover multiple paths
in parallel and, instead, must be discovered incrementally in
subsequent exchanges. In other words, aggregated Interests will all
discover only one single path carried by one single Data packet.
This has implications for management applications, like traceroute
[RFC9507], which would likely perform much better if they discover
paths in parallel. Hence, when employing path steering, it is
RECOMMENDED that such applications craft their Interests with unique
name suffixes in order to avoid being aggregated.
| While path steering still operates correctly if DISCOVERY MODE
| Interests are aggregated, after further experimentation, it may
| be appropriate to advise that a forwarder:
|
| * SHOULD NOT aggregate Interests carrying different path
| labels and
|
| * SHOULD apply a rate limit to DISCOVERY_MODE Interests in
| order to limit redundant traffic.
2.5. How to Represent the Path Label
[Moiseenko2017] presents various options for how to represent a path
label, with different trade-offs in flexibility, performance, and
space efficiency. For this specification, we choose the _polynomial
encoding_, which achieves reasonable space efficiency at the cost of
establishing a hard limit on the length of paths that can be
represented.
The polynomial encoding utilizes a fixed-size bit array. Each
transit ICN forwarder is allocated a fixed-size portion of the bit
array. This design allocates 12 bits (i.e., 4095 as a _generator
polynomial_) to each intermediate ICN forwarder. This matches the
scalability of today's commercial routers that support up to 4096
physical and logical interfaces and usually do not have more than a
few hundred active ones.
+------------------------------------------------------------------+
| path label bitmap |
+----------+-----------------+-----------------+-------------------+
| index | Nexthop Label | Nexthop Label | |
+----------+-----------------+-----------------+-------------------+
|<- 8bit ->|<---- 12bit ---->|<---- 12bit ---->|<----------------->|
Figure 3: Fixed-Size Path Label
A forwarder that receives a Content (Data) message encodes the
Nexthop Label in the next available slot and increments the label
index. Conversely, a forwarder that receives an Interest message
reads the current Nexthop Label and decrements the label index.
Therefore, the extra computation required at each hop to forward
either an Interest or Content Object message with a path label is
minimized and constitutes a fairly trivial additional overhead
compared to FIB lookup and other required operations.
This approach results in individual path label TLV instances being of
fixed pre-computed size. While this places a hard upper bound on the
maximum number of network hops that can be represented, this is not a
significant practical problem in NDN and CCNx, since the size can be
preset during Content (Data) message encoding based on the exact
number of network hops traversed by the Interest message. Even long
paths of 24 hops will fit in a path label bitmap of 36 bytes if the
Nexthop Label is encoded in 12 bits.
3. Mapping to CCNx and NDN Packet Encodings
3.1. Path Label TLV
A path label TLV is the tuple: {[Flags], [Path Label Hop Count],
[Nexthop Label], [path label bitmap]}.
+================+=============+
| Flag | Value (hex) |
+================+=============+
| DISCOVERY_MODE | 0x00 |
+----------------+-------------+
| FALLBACK_MODE | 0x01 |
+----------------+-------------+
| STRICT_MODE | 0x02 |
+----------------+-------------+
| Unassigned | 0x03-0xFF |
+----------------+-------------+
Table 1: Path Label Flags
The Path Label Hop Count (PLHC) MUST be incremented by NDN and CCNx
forwarders if the Interest packet carries a path label and the
DISCOVERY_MODE flag is set. A producer node or a forwarder with a
cached Data packet MUST use the PLHC in calculation of a path label
bitmap size that is suitable for encoding the entire path to the
consumer. The PLHC MUST be set to zero in newly created Data or
InterestReturn (NACK) packets. A consumer node MUST reuse the PLHC
together with the path label bitmap (PLB) in order to correctly
forward the Interest(s) along the corresponding network path.
If an NDN or CCNx forwarder supports path labeling, the Nexthop Label
MUST be used to determine the correct egress interface for an
Interest packet carrying either the FALLBACK_MODE or the STRICT_MODE
flag. If any particular NDN or CCNx forwarder is configured to
decrypt path labels of Interest packets (see Security
Considerations), then the forwarder MUST:
1. decrypt the path label with its own symmetric key,
2. update the Nexthop Label with outermost label in the path label,
3. decrement the PLHC, and
4. remove the outermost label from the path label.
If any particular NDN or CCNx forwarder is NOT configured to decrypt
path labels of Interest packets, then path label decryption SHOULD
NOT be performed.
The Nexthop Label MUST be ignored by NDN and CCNx forwarders if it is
present in Data or InterestReturn (NACK) packets. If any particular
NDN or CCNx forwarder is configured to encrypt path labels of Data
and InterestReturn (NACK) packets (see Security Considerations), then
the forwarder MUST encrypt the existing path label with its own
symmetric key, append the Nexthop Label of the ingress interface to
the path label, and increment the PLHC. If any particular NDN or
CCNx forwarder is NOT configured to encrypt path labels of Interest
packets, then path label encryption SHOULD NOT be performed.
NDN and CCNx forwarders MUST fall back to Longest Name Prefix Match
(LNPM) FIB lookup if an Interest packet carries an invalid Nexthop
Label and the FALLBACK_MODE flag is set.
CCNx forwarders MUST respond with an InterestReturn packet specifying
a T_RETURN_INVALID_PATH_LABEL code if the Interest packet carries an
invalid path label and the STRICT_MODE flag is set. This is a new
InterestReturn code defined herein (see Section 4 for the value
allocation).
CCNx forwarders MUST respond with an InterestReturn packet specifying
the existing T_RETURN_MALFORMED_INTEREST code if the Interest packet
carries a path label TLV with both the FALLBACK_MODE and STRICT_MODE
flags set.
3.2. Path Label Encoding for CCNx
Path label is an optional hop-by-hop header TLV that can be present
in CCNx Interest, InterestReturn, and Content Object packets.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
| T_PATH_LABEL | Length + 4 |
+---------------+---------------+---------------+---------------+
| Flags | Path Label | Nexthop Label |
| | Hop Count | |
+---------------+---------------+---------------+---------------+
/ /
/ Path label bitmap (Length octets) /
/ /
+---------------+---------------+---------------+---------------+
Figure 4: Path Label Hop-by-Hop Header TLV for CCNx
3.3. Path Label Encoding for NDN
Path label is an optional TLV for NDN Interest and Data packets. It
is carried in the NDN Link Adaptation Protocol [NDNLPv2], which is
used to wrap NDN packets for carriage over various link layer
protocols. NDNLPv2 was chosen over the NDN packet itself since it
can carry hop-by-hop information that potentially mutates at each hop
and, therefore, cannot be included in the secured hash computation or
the signature of NDN packets. Further, it can be used instead of the
existing NextHopFaceId TLV since it not only can specify the single
outgoing face for a consumer but manages the selection and forwarding
over an entire path. The path label TLV in NDNLPv2 is defined below:
PathLabel = PATH-LABEL-TYPE TLV-LENGTH
PathLabelFlags
PathLabelBitmap
PathLabelFlags = PATH-LABEL-FLAGS-TYPE
TLV-LENGTH ; == 1
OCTET
NexthopLabel = PATH-LABEL-NEXTHOP-LABEL-TYPE
TLV-LENGTH ; == 2
2 OCTET
PathLabelHopCount = PATH-LABEL-HOP-COUNT-TYPE
TLV-LENGTH ; == 1
OCTET
PathLabelBitmap = PATH-LABEL-BITMAP-TYPE
TLV-LENGTH ; == 64
64 OCTET
Figure 5: Path Label TLV for NDN
+============================+=========================+
| Flag | (Suggested) Value (hex) |
+============================+=========================+
| T_PATH_LABEL | 0x0A |
+----------------------------+-------------------------+
| T_PATH_LABEL_FLAGS | 0x0B |
+----------------------------+-------------------------+
| T_PATH_LABEL_BITMAP | 0x0D |
+----------------------------+-------------------------+
| T_PATH_LABEL_NEXTHOP_LABEL | 0x0E |
+----------------------------+-------------------------+
| T_PATH_LABEL_HOP_COUNT | 0x0F |
+----------------------------+-------------------------+
Table 2: TLV-TYPE Number Assignments for NDN
4. IANA Considerations
IANA has made the following assignments:
1. The value 0x000A has been assigned to T_PATH_LABEL in the "CCNx
Hop-by-Hop Types" registry, established by [RFC8609].
2. The value 0x0A has been assigned to T_RETURN_INVALID_PATH_LABEL
in the "CCNx Interest Return Code Types" registry, established by
[RFC8609].
5. Security Considerations
A path is invalidated by renumbering one or more Nexthop Labels. A
malicious consumer can attempt to mount an attack by transmitting
Interests with path labels that differ only in a single now-invalid
Nexthop Label in order to _brute-force_ a valid Nexthop Label. If
such an attack succeeds, a malicious consumer would be capable of
steering Interests over a network path that may not match the paths
computed by the routing algorithm or learned adaptively by the
forwarders.
When a label lookup fails, by default, an _invalid path label_
InterestReturn (NACK) message is returned to the consumer. This
contains a path label identical to the one included in the
corresponding Interest message. Therefore, a malicious consumer can
analyze the message's Hop Count field to infer which specific Nexthop
Label had failed and direct an attack to influence path steering at
that hop. This threat can be mitigated by the following
countermeasures:
* A Nexthop Label that is larger in size is harder to crack. If
Nexthop Labels are not allocated in a predictable fashion by the
routers, brute-forcing a 32-bit Nexthop Label requires on average
O(2^31) Interests. However, this specification uses Nexthop
Labels with much less entropy (12 bits), so depending on
computational hardness is not workable.
* An ICN forwarder can periodically update Nexthop Labels to limit
the maximum lifetime of paths. It is RECOMMENDED that forwarders
update path labels at least every few minutes.
* A void Hop Count field in an _invalid path label_ InterestReturn
(NACK) message would not give out the information on which a
specific Nexthop Label had failed. An attacker might need to
brute-force all Nexthop Labels in all combinations. However, some
useful diagnostic capability is lost by obscuring the hop count.
For example, the locus of routing churn is harder to pin down
through analysis of path-steered pings or traceroutes. A
forwarder MAY choose to invalidate the hop count in addition to
changing Nexthop Labels periodically as described above.
Because ICN forwarders maintain per-face state and forwarding state
for Interest messages, state inflation attacks are a general concern.
The addition of path steering capabilities in Interest and Data
messages does not, however, constitute a meaningful increase in
susceptibility to such attacks. This is because:
* The labels that identify each forwarding face is state O(number of
faces) and constitutes a small increase to the existing state
needed to represent a face.
* Interest message data is placed in the PIT. The path steering
header does, in fact, inflate the size of the Interest message
and, hence, the PIT state but not by an amount that is a concern.
The forwarder needs to protect against state inflation attacks on
the PIT in general, and an attacker can mount one just as or more
easily by issuing Interests with long names and/or by including
Interest payload data.
ICN protocols can be susceptible to a variety of cache poisoning
attacks, where a colluding consumer and producer arrange for bogus
content (with either invalid or inappropriate signatures) to populate
forwarder caches. These are generally confined to on-path attacks.
It is also theoretically possible to launch a similar attack without
a cooperating producer such that the caches of on-path routers become
poisoned with the content from off-path routers (i.e., physical
connectivity but no route in a FIB for a given prefix). We estimate
that, without any prior knowledge of the network topology, the
complexity of this type of attack is in the ballpark of Breadth-
First-Search and Depth-First-Search algorithms with the additional
burden of transmitting 2^31 Interests in order to crack a Nexthop
Label on each hop. A relatively short periodic update of Nexthop
Labels, together with heuristics implemented in the ICN forwarder to
foil _label scans_, may successfully mitigate this type of attack.
5.1. Cryptographic Protection of a Path Label
If the countermeasures listed above do not provide sufficient
protection against malicious mis-steering of Interests, the path
label can be made opaque to the consumer endpoint via hop-by-hop
symmetric cryptography applied to the path labels (Figure 6). This
method is viable due to the symmetry of forward and reverse paths in
CCNx and NDN architectures combined with ICN path steering requiring
only reads and writes of the topmost Nexthop Label (i.e., active
Nexthop Label) in the path label. This way, a path-steering-capable
ICN forwarder receiving a Content (Data) message encrypts the current
path label with its own non-shared symmetric key prior to adding a
new Nexthop Label to the path label. The Content (Data) message is
forwarded downstream with an unencrypted topmost (i.e., active)
Nexthop Label and the remaining encrypted content of the path label.
As a result, a consumer endpoint receives a Content (Data) message
with a unique path label exposing only the topmost Nexthop Label as
cleartext. A path steering forwarder receiving an Interest message
performs label lookup using the topmost Nexthop Label, decrypts the
path label with its own non-shared symmetric key, and forwards the
message upstream.
Cryptographic protection of a path label does not require any key
negotiation among ICN forwarders and is no more expensive than Media
Access Control Security (MACsec) or IPsec. It is also quite possible
that strict hop-by-hop path label encryption is not necessary and
path label encryption only on the border routers of the trusted
administrative or routing domains may suffice.
Producer
| ^
| |
Path Label TLV | | Path Label TLV
+-----------------------+ | | +-----------------------+
|nexthop label=456 | v | |nexthop label=456 |
|encrypted path label={}| Forwarder 3 |encrypted path label={}|
+-----------------------+ | ^ +-----------------------+
| |
path label is encrypted | | path label is decrypted
with Forwarder 3 | | with Forwarder 3
symmetric key | | symmetric key
| |
| |
| |
| |
| |
Path Label TLV | | Path Label TLV
+-----------------------+ | | +-----------------------+
|nexthop label=634 | v | |nexthop label=634 |
|encrypted path label= | Forwarder 2 |encrypted path label= |
| {456} | | ^ | {456} |
+-----------------------+ | | +-----------------------+
| |
path label is encrypted | | path label is decrypted
with Forwarder 2 | | with Forwarder 2
symmetric key | | symmetric key
| |
| |
| |
| |
| |
Path Label TLV | | Path Label TLV
+-----------------------+ | | +-----------------------+
|nexthop label=912 | v | |nexthop label=912 |
|encrypted path label= | Forwarder 1 |encrypted path label= |
| {634, encrypted path | | ^ | {634, encrypted path |
| label {456}} | | | | label {456}} |
+-----------------------+ | | +-----------------------+
| |
path label is encrypted | | path label is decrypted
with Forwarder 1 | | with Forwarder 1
symmetric key | | symmetric key
| |
| |
| |
| |
v |
Consumer
Figure 6: Path Label Protection with Hop-by-Hop Symmetric
Cryptography
6. References
6.1. Normative References
[Moiseenko2017]
Moiseenko, I. and D. Oran, "Path Switching in Content
Centric and Named Data Networks", Proceedings of the 4th
ACM Conference on Information-Centric Networking, Pages
66-76, DOI 10.1145/3125719.3125721,
DOI 10.1145/3125719.3125721, September 2017,
<https://conferences.sigcomm.org/acm-icn/2017/proceedings/
icn17-2.pdf>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8569] Mosko, M., Solis, I., and C. Wood, "Content-Centric
Networking (CCNx) Semantics", RFC 8569,
DOI 10.17487/RFC8569, July 2019,
<https://www.rfc-editor.org/info/rfc8569>.
[RFC8609] Mosko, M., Solis, I., and C. Wood, "Content-Centric
Networking (CCNx) Messages in TLV Format", RFC 8609,
DOI 10.17487/RFC8609, July 2019,
<https://www.rfc-editor.org/info/rfc8609>.
6.2. Informative References
[FLIC] Tschudin, C., Wood, C. A., Mosko, M., and D. Oran, Ed.,
"File-Like ICN Collections (FLIC)", Work in Progress,
Internet-Draft, draft-irtf-icnrg-flic-05, 22 October 2023,
<https://datatracker.ietf.org/doc/html/draft-irtf-icnrg-
flic-05>.
[Mahdian2016]
Mahdian, M., Arianfar, S., Gibson, J., and D. Oran,
"MIRCC: Multipath-aware ICN Rate-based Congestion
Control", Proceedings of the 3rd ACM Conference on
Information-Centric Networking, Pages 1-10,
DOI 10.1145/2984356.2984365, September 2016,
<http://conferences2.sigcomm.org/acm-icn/2016/proceedings/
p1-mahdian.pdf>.
[NDN] NDN, "Named Data Networking: Executive Summary",
<https://named-data.net/project/execsummary/>.
[NDNLPv2] NFD, "NDNLPv2", <https://redmine.named-
data.net/projects/nfd/wiki/NDNLPv2>.
[NDNTLV] NDN, "NDN Packet Format Specification v0.3",
<https://named-data.net/doc/NDN-packet-spec/current/>.
[RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N.,
Aldrin, S., and M. Chen, "Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures", RFC 8029,
DOI 10.17487/RFC8029, March 2017,
<https://www.rfc-editor.org/info/rfc8029>.
[RFC8793] Wissingh, B., Wood, C., Afanasyev, A., Zhang, L., Oran,
D., and C. Tschudin, "Information-Centric Networking
(ICN): Content-Centric Networking (CCNx) and Named Data
Networking (NDN) Terminology", RFC 8793,
DOI 10.17487/RFC8793, June 2020,
<https://www.rfc-editor.org/info/rfc8793>.
[RFC9217] Trammell, B., "Current Open Questions in Path-Aware
Networking", RFC 9217, DOI 10.17487/RFC9217, March 2022,
<https://www.rfc-editor.org/info/rfc9217>.
[RFC9507] Mastorakis, S., Oran, D., Moiseenko, I., Gibson, J., and
R. Droms, "Information-Centric Networking (ICN) Traceroute
Protocol Specification", RFC 9507, DOI 10.17487/RFC9507,
March 2024, <https://www.rfc-editor.org/info/rfc9507>.
[RFC9508] Mastorakis, S., Oran, D., Gibson, J., Moiseenko, I., and
R. Droms, "Information-Centric Networking (ICN) Ping
Protocol Specification", RFC 9508, DOI 10.17487/RFC9508,
March 2024, <https://www.rfc-editor.org/info/rfc9508>.
[SCION] de Kater, C., Rustignoli, N., and A. Perrig, "SCION
Overview", Work in Progress, Internet-Draft, draft-
dekater-panrg-scion-overview-05, 5 November 2023,
<https://datatracker.ietf.org/doc/html/draft-dekater-
panrg-scion-overview-05>.
[Song2018] Song, J., Lee, M., and T. Kwon, "SMIC: Subflow-level
Multi-path Interest Control for Information Centric
Networking", Proceedings of the 5th ACM Conference on
Information-Centric Networking, Pages 77-87,
DOI 10.1145/3267955.3267971, September 2018,
<https://conferences.sigcomm.org/acm-icn/2018/proceedings/
icn18-final62.pdf>.
Authors' Addresses
Ilya Moiseenko
Apple, Inc.
Cupertino, CA
United States of America
Email: iliamo@mailbox.org
Dave Oran
Network Systems Research and Design
4 Shady Hill Square
Cambridge, MA 02138
United States of America
Email: daveoran@orandom.net
ISO Plain Language
On this page
§1Discovering and Reusing a Path
Path steering is a mechanism to discover paths to the producers of ICN Content Objects and steer subsequent Interest messages along a previously discovered path. It has various uses, including the operation of state-of-the-art multi-path congestion control algorithms and for network measurement and management. The specification derives directly from the design published in the referenced paper and does not recapitulate the design motivations, implementation details or evaluation of the scheme; that publication should be considered a normative reference, and where the technical details differ, the design documented here is definitive.
Path discovery and subsequent path steering in ICN networks are facilitated by the symmetry of forward and reverse paths in the Content-Centric Networking and Named Data Networking architectures. Path discovery is achieved by a consumer endpoint transmitting an ordinary Interest message and receiving a Content message containing an end-to-end path label constructed on the reverse path by the forwarding plane. Path steering is achieved by a consumer endpoint including a path label in the Interest message, which is forwarded to each nexthop through the corresponding egress interfaces in conjunction with Longest Name Prefix Match lookup in the Forwarding Information Base.
The document sets out use cases that justify extending ICN architectures with these capabilities. They include the discovery, monitoring and troubleshooting of multi-path network connectivity based on names and name prefixes, analogous to the traceroute and ping tools that have proven crucial in IP; the ICN Ping and ICN Traceroute specifications already exist for CCNx and are both capable of exploiting path steering if available. They also include accurate online measurement of network performance, which generally requires multiple consecutive packets to follow the same path under the control of an application; improving the performance and flexibility of multi-path congestion control algorithms, which depend on a consumer being able to steer packets onto individual paths; and allowing a consumer to mitigate content poisoning attacks by directing its Interests onto network paths that bypass poisoned caches.
One nuance compared to other path-aware networking approaches is that ICN path steering piggybacks path discovery on the base ICN data exchange rather than having a separate path advertisement or discovery mechanism. When the recorded path comes back in a Data message, the properties of the path are known only implicitly to the consumer rather than being explicitly labelled, which makes the choice of a path a question of observation or measurement rather than advance selection based on an advertised property.
The document is a product of the IRTF Information-Centric Networking Research Group and has received detailed review by experts in both the CCNx and NDN communities.
This RFC gives content networks something IP networks do not have: the ability to ask for the same data to travel along the same route as last time. The route is written down on the way back, and the next request carries that note so every router follows it.
§1.3Path Discovery, Path Steering and Path Labels
Path Discovery is the process of sending an Interest message requesting discovery of a path and, if successful, receiving a Data message containing a path label for the path the corresponding Interest traversed.
Path Steering is the process of sending an Interest message containing the path label of a previously discovered path so that the forwarders use that path when forwarding that particular Interest message.
A Path Label is an optional field in the packet indicating a particular path from a consumer to either a producer or a forwarder cache that can respond with the requested item. In an Interest message, the path label gets built up hop by hop as the Interest traverses a path. In a Data message, the path label carries the full path information back to the consumer for use in one or more subsequent Interest messages.
A Nexthop Label is one entry in a path label representing the next hop for the corresponding forwarder to use when a path-steered Interest message arrives at that forwarder. A sequence of Nexthop Labels constitutes a full path label.
Three terms matter. Discovery is finding out which route your request took. Steering is telling the network to use that route next time. The route itself is written down as a path label, which is a list of Nexthop Labels, one per router.
§2.2How Discovery and Steering Work
End-to-end path discovery for CCNx is achieved by creating a path label and placing it as a hop-by-hop TLV in a CCNx Content message. The path label is constructed hop by hop as the message traverses the reverse path of transit forwarders. The path label is updated by adding the Nexthop Label of the interface at which the Content message has arrived to the existing path label. Eventually, when the Content message arrives at the consumer, the path label identifies the complete path the Content message took to reach the consumer.
When multiple paths are available, subsequent Interests may be able to discover additional paths by omitting a path steering TLV and obtaining a new path label on the returning Interest.
Due to the symmetry of forward and reverse paths, a consumer application can reuse a discovered path label to fetch the same or a similar Content message, such as the next chunk or the next pointer in a Manifest, over the discovered network path. This path steering is achieved by processing the Interest message's path label at each transit forwarder and forwarding the Interest through the specified nexthop among those identified as feasible by Longest Name Prefix Match lookup in the Forwarding Information Base.
At a forwarder, an Interest arrives at the Content Store and then the Pending Interest Table. If the Interest carries no path label, the forwarder aggregates as usual and looks up the route. If it carries a path label, the forwarder reads the Nexthop Label and selects the egress interface from the FIB entry that the label lookup produced, matching the label against the nexthops of that FIB entry. If the label does not match any of them, the label is invalid. If the FIB has no route at all, the forwarder returns an InterestReturn with a no-route code.
The content comes back along the route it went out on, and each router on the way back adds its own interface number to a list. When the consumer receives it, the list is the complete route. The consumer then puts that list in the next request, and each router reads its own entry from the list and uses the matching outgoing interface.
- INTEREST 1An ordinary request with no path label.
- INTEREST 1The request is forwarded normally.
- DATA 1The content starts back along the same route.
- DATA 1 WITH PATH LABELEach forwarder adds its own Nexthop Label on the way back.
- INTEREST 2 WITH PATH LABELThe consumer reuses the path, so this request takes the same route.
§2.5The Path Label Encoding
- 0x00DISCOVERY_MODE — The consumer is asking for a path to be discovered; forwarders increment the Path Label Hop Count.
- 0x01FALLBACK_MODE — If the Nexthop Label does not match, fall back to an ordinary longest-prefix lookup.
- 0x02STRICT_MODE — If the Nexthop Label does not match, return an invalid path label InterestReturn.
- 0x03-0xFFUnassigned — Available for future flags.
The specification chooses the polynomial encoding for representing a path label, which achieves reasonable space efficiency at the cost of establishing a hard limit on the length of paths that can be represented. The polynomial encoding uses a fixed-size bit array, and each transit forwarder is allocated a fixed-size portion of it. This design allocates 12 bits, that is 4095 as a generator polynomial, to each intermediate forwarder. This matches the scalability of today's commercial routers, which support up to 4096 physical and logical interfaces and usually do not have more than a few hundred active ones.
A forwarder that receives a Content message encodes the Nexthop Label in the next available slot and increments the label index. A forwarder that receives an Interest message reads the current Nexthop Label and decrements the label index. The extra computation required at each hop is therefore minimal compared with FIB lookup and other required operations. The result is that individual path label TLV instances are of a fixed pre-computed size, which places a hard upper bound on the maximum number of network hops that can be represented. This is not a significant practical problem in NDN and CCNx, since the size can be preset during Content message encoding based on the exact number of network hops the Interest traversed. Even long paths of 24 hops fit in a path label bitmap of 36 bytes with a 12-bit Nexthop Label.
A path label TLV is the tuple of flags, Path Label Hop Count, Nexthop Label and the path label bitmap. Three flags are assigned: DISCOVERY_MODE 0x00, FALLBACK_MODE 0x01 and STRICT_MODE 0x02, with 0x03 to 0xFF unassigned.
The Path Label Hop Count MUST be incremented by forwarders if the Interest packet carries a path label and the DISCOVERY_MODE flag is set. A producer node or a forwarder with a cached Data packet MUST use the Path Label Hop Count in calculating a bitmap size suitable for encoding the entire path to the consumer, and the count MUST be set to zero in newly created Data or InterestReturn packets. A consumer node MUST reuse the Path Label Hop Count together with the bitmap in order to correctly forward later Interests along the corresponding network path.
For CCNx, the path label is an optional hop-by-hop header TLV that can appear in Interest, InterestReturn and Content Object packets, with a 16-bit type, a 16-bit length, an 8-bit flags field, an 8-bit hop count, a 16-bit Nexthop Label and the bitmap. For NDN, the path label is an optional TLV for Interest and Data packets carried in the NDN Link Adaptation Protocol, chosen over the NDN packet itself because it can carry hop-by-hop information that mutates at each hop and therefore cannot be part of the secured hash or signature. It can also be used instead of the existing NextHopFaceId TLV, since it manages the selection and forwarding over an entire path rather than a single outgoing face.
For IANA, the value 0x000A has been assigned to T_PATH_LABEL in the CCNx Hop-by-Hop Types registry, and the value 0x0A to T_RETURN_INVALID_PATH_LABEL in the CCNx Interest Return Code Types registry. Five TLV type numbers are suggested for NDN: 0x0A for the path label itself, 0x0B for the flags, 0x0D for the bitmap, 0x0E for the Nexthop Label and 0x0F for the hop count.
The route is stored as a fixed-size table of small numbers, one per hop, with an index saying how far along the route you are. Twelve bits per hop is enough for any router's interface count. Because the size is fixed, the router only has to read one entry and move on, which keeps the extra work at each hop small.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
INDEX | Index | 1 byte | 8 bits | Position of the next Nexthop Label in the bitmap. It is incremented on the way back and decremented on the way out. |
NEXTHOP-1 | Nexthop Label 1 | 12 bits | 12 bits | The next hop the first forwarder on the path should use. |
NEXTHOP-2 | Nexthop Label 2 | 12 bits | 12 bits | The next hop the second forwarder on the path should use. |
§2.3Handling Path Steering Errors
Over time, the state of interfaces and the FIB on forwarders may change such that, at any particular forwarder, a given nexthop is no longer valid for a given prefix. The path label will then point to a now-invalid nexthop. This is detected by failure to find a match between the decoded nexthop identifier and the nexthops of the FIB entry after the Longest Name Prefix Match lookup.
On detecting an invalid path label, the forwarder SHOULD respond to the Interest with an InterestReturn. The document therefore defines a new invalid path label response code for the InterestReturn message and includes the current path label as a hop-by-hop header. Each transit forwarder processing the InterestReturn updates the path label in the same manner as for Content messages, so that the consumer receiving the InterestReturn can easily identify which path label is no longer valid.
A consumer may alternatively request that a forwarder detecting the inconsistency forward the Interest by means of normal FIB lookup rather than return an error. The consumer endpoint, if it cares, can keep enough information about outstanding Interests to determine whether the path label sent with the Interest fails to match the path label in the corresponding returned Content, and use that to replace stale path labels. It does so by setting the FALLBACK_MODE flag of the path label TLV in its Interest message. Forwarders MUST fall back to Longest Name Prefix Match lookup if an Interest packet carries an invalid Nexthop Label and the FALLBACK_MODE flag is set. With the STRICT_MODE flag set, forwarders MUST respond with an InterestReturn specifying the new T_RETURN_INVALID_PATH_LABEL code, and MUST respond with the existing T_RETURN_MALFORMED_INTEREST code if both the FALLBACK_MODE and STRICT_MODE flags are set.
There is also an interaction with Interest aggregation. If two or more Interests matching the same Pending Interest Table entry arrive at a forwarder, under current behaviour they will be aggregated whether or not they carry identical path label TLVs. If a DISCOVERY_MODE Interest arrives first, it is forwarded and may discover a new path while the other Interest is aggregated, so a path label carried by that other Interest may be ignored. If the two arrive in the reverse order, the DISCOVERY_MODE Interest is aggregated and the consumer does not achieve its desire to discover a new path. Multiple Interests intended to discover paths may also be aggregated, which limits the ability to discover multiple paths in parallel and instead requires incremental discovery. Hence, when employing path steering, it is RECOMMENDED that such applications craft their Interests with unique name suffixes in order to avoid being aggregated.
A recorded route goes stale when the network changes. The router notices that its own entry no longer names an interface it has, and by default sends back a complaint. The consumer can ask instead for the router to just pick the normal route, which is what the fallback flag does, and it can then notice the mismatch itself and use a fresh label next time.
§5Security Considerations
A path is invalidated by renumbering one or more Nexthop Labels. A malicious consumer can attempt to mount an attack by transmitting Interests with path labels that differ only in a single now-invalid Nexthop Label, in order to brute-force a valid one. If such an attack succeeds, a malicious consumer would be capable of steering Interests over a network path that may not match the paths computed by the routing algorithm or learned adaptively by the forwarders.
When a label lookup fails, by default, an invalid path label InterestReturn is returned to the consumer, and it contains a path label identical to the one in the corresponding Interest. A malicious consumer can therefore analyse the message's Hop Count field to infer which specific Nexthop Label had failed. Three countermeasures are given. A larger Nexthop Label is harder to crack, but this specification uses labels with much less entropy than a 32-bit label, so depending on computational hardness is not workable. A forwarder can periodically update Nexthop Labels to limit the maximum lifetime of paths, and it is RECOMMENDED that forwarders update path labels at least every few minutes. A void Hop Count field in an invalid path label InterestReturn would not give out the information on which specific label had failed, and an attacker might need to brute-force all Nexthop Labels in all combinations, but some useful diagnostic capability is lost by obscuring the hop count, since the locus of routing churn becomes harder to pin down. A forwarder MAY choose to invalidate the hop count in addition to changing Nexthop Labels periodically.
Because ICN forwarders maintain per-face state and forwarding state for Interest messages, state inflation attacks are a general concern. The addition of path steering does not meaningfully increase susceptibility to such attacks: the labels identifying each forwarding face are state proportional to the number of faces, and the path steering header inflates the Interest message and hence the Pending Interest Table state, but not by an amount that is a concern.
ICN protocols can also be susceptible to cache poisoning attacks, where a colluding consumer and producer arrange for bogus content to populate forwarder caches. These are generally confined to on-path attacks, but it is theoretically possible to launch a similar attack without a cooperating producer, so that the caches of on-path routers become poisoned with content from off-path routers. Without any prior knowledge of the network topology, the complexity of this attack is in the ballpark of breadth-first-search and depth-first-search algorithms with the additional burden of transmitting 2^31 Interests to crack a Nexthop Label on each hop. A relatively short periodic update of Nexthop Labels, together with heuristics in the ICN forwarder to foil label scans, may mitigate this.
If the countermeasures are not sufficient, the path label can be made opaque to the consumer endpoint using hop-by-hop symmetric cryptography. This is viable because of the symmetry of forward and reverse paths, combined with path steering requiring only reads and writes of the topmost Nexthop Label. A path-steering-capable forwarder receiving a Content message encrypts the current path label with its own non-shared symmetric key before adding a new Nexthop Label, and forwards the message downstream with an unencrypted topmost label and the remaining content encrypted. A forwarder receiving an Interest performs the label lookup using the topmost label, decrypts the path label with its own key, and forwards the message upstream. This does not require any key negotiation among forwarders and is no more expensive than MACsec or IPsec, and it is quite possible that encrypting only on the border routers of the trusted domains may suffice.
Because the labels are only 12 bits, an attacker could try many of them to find one that steers the traffic somewhere unwanted. Routers are advised to renumber their labels every few minutes, so any guess takes too long to be worth trying. Where that is not enough, each router can encrypt all but the current entry of the label, so a consumer never sees the whole route.