summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9531.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9531.txt')
-rw-r--r--doc/rfc/rfc9531.txt902
1 files changed, 902 insertions, 0 deletions
diff --git a/doc/rfc/rfc9531.txt b/doc/rfc/rfc9531.txt
new file mode 100644
index 0000000..cda5617
--- /dev/null
+++ b/doc/rfc/rfc9531.txt
@@ -0,0 +1,902 @@
+
+
+
+
+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