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