| rfc9507v5.txt | rfc9507.txt | |||
|---|---|---|---|---|
| Internet Research Task Force (IRTF) S. Mastorakis | Internet Research Task Force (IRTF) S. Mastorakis | |||
| Request for Comments: 9507 University of Notre Dame | Request for Comments: 9507 University of Notre Dame | |||
| Category: Experimental D. Oran | Category: Experimental D. Oran | |||
| ISSN: 2070-1721 Network Systems Research and Design | ISSN: 2070-1721 Network Systems Research and Design | |||
| I. Moiseenko | I. Moiseenko | |||
| Apple Inc. | Apple Inc. | |||
| J. Gibson | J. Gibson | |||
| R. Droms | R. Droms | |||
| Unaffiliated | Unaffiliated | |||
| February 2024 | March 2024 | |||
| Information-Centric Networking (ICN) Traceroute Protocol Specification | Information-Centric Networking (ICN) Traceroute Protocol Specification | |||
| Abstract | Abstract | |||
| This document presents the design of an Information-Centric | This document presents the design of an Information-Centric | |||
| Networking (ICN) Traceroute protocol. This includes the operation of | Networking (ICN) Traceroute protocol. This includes the operation of | |||
| both the client and the forwarder. | both the client and the forwarder. | |||
| This document is a product of the Information-Centric Networking | This document is a product of the Information-Centric Networking | |||
| skipping to change at line 242 ¶ | skipping to change at line 242 ¶ | |||
| The term "traceroute session" is used for an iterative process during | The term "traceroute session" is used for an iterative process during | |||
| which an endpoint client application generates a number of traceroute | which an endpoint client application generates a number of traceroute | |||
| requests to successively traverse more distant hops in the path until | requests to successively traverse more distant hops in the path until | |||
| it receives a final traceroute reply from a forwarder. It is | it receives a final traceroute reply from a forwarder. It is | |||
| desirable that ICN Traceroute be able to discover a number of paths | desirable that ICN Traceroute be able to discover a number of paths | |||
| towards the expressed prefix within the same session or subsequent | towards the expressed prefix within the same session or subsequent | |||
| sessions. To discover all the hops in a path, we need a mechanism | sessions. To discover all the hops in a path, we need a mechanism | |||
| (Interest Steering) to steer requests along different paths. Such a | (Interest Steering) to steer requests along different paths. Such a | |||
| capability was initially published in [PATHSTEERING] and has been | capability was initially published in [PATHSTEERING] and has been | |||
| specified for CCNx and NDN in [PATHSTEERING-CCNx-NDN]. | specified for CCNx and NDN in [RFC9531]. | |||
| In the case of traceroute requests for the same prefix from different | In the case of traceroute requests for the same prefix from different | |||
| sources, it is also important to have a mechanism to avoid | sources, it is also important to have a mechanism to avoid | |||
| aggregating those requests in the PIT. To this end, we need some | aggregating those requests in the PIT. To this end, we need some | |||
| encoding in the traceroute requests to make each request for a common | encoding in the traceroute requests to make each request for a common | |||
| prefix unique, hence avoiding PIT aggregation and further enabling | prefix unique, hence avoiding PIT aggregation and further enabling | |||
| the exact matching of a response with a particular traceroute packet. | the exact matching of a response with a particular traceroute packet. | |||
| The packet types and formats are presented in Section 4. Procedures | The packet types and formats are presented in Section 4. Procedures | |||
| for determining and indicating that a destination has been reached | for determining and indicating that a destination has been reached | |||
| skipping to change at line 299 ¶ | skipping to change at line 299 ¶ | |||
| packet type field is PT_TR_REQUEST. See Section 9 for the value | packet type field is PT_TR_REQUEST. See Section 9 for the value | |||
| assignment. | assignment. | |||
| In contrast to the typical format of a CCNx packet header [RFC8609], | In contrast to the typical format of a CCNx packet header [RFC8609], | |||
| there is a new optional fixed header added to the packet header: | there is a new optional fixed header added to the packet header: | |||
| * A Path Steering hop-by-hop header TLV, which is constructed hop by | * A Path Steering hop-by-hop header TLV, which is constructed hop by | |||
| hop in the traceroute reply and included in the traceroute request | hop in the traceroute reply and included in the traceroute request | |||
| to steer consecutive requests expressed by a client towards a | to steer consecutive requests expressed by a client towards a | |||
| common forwarding path or different forwarding paths. The Path | common forwarding path or different forwarding paths. The Path | |||
| Label TLV is specified in [PATHSTEERING-CCNx-NDN]. | Label TLV is specified in [RFC9531]. | |||
| The message of a traceroute request is presented below: | The message of a traceroute request is presented below: | |||
| 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 | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | | | |||
| | MessageType = 1 | MessageLength | | | MessageType = 0x05 | MessageLength | | |||
| | | | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | |||
| | Name TLV | | | Name TLV | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 2: Traceroute Request Message Format | Figure 2: Traceroute Request Message Format | |||
| The traceroute request message is of type Interest in order to | The traceroute request message is of type T_DISCOVERY. The Name TLV | |||
| leverage the Interest forwarding behavior provided by the network. | has the structure described in [RFC8609]. The name consists of the | |||
| The Name TLV has the structure described in [RFC8609]. The name | target (destination) prefix appended with a nonce typed name as its | |||
| consists of the target (destination) prefix appended with a nonce | last segment. The nonce can be encoded as a base64-encoded string | |||
| typed name as its last segment. The nonce can be encoded as a | with the URL-safe alphabet as defined in Section 5 of [RFC4648], with | |||
| base64-encoded string with the URL-safe alphabet as defined in | padding omitted. The format of this TLV is a 64-bit nonce. See | |||
| Section 5 of [RFC4648], with padding omitted. The format of this TLV | [RFC9508] for the value assignment. The purpose of the nonce is to | |||
| is a 64-bit nonce. See [RFC9508] for the value assignment. The | avoid Interest aggregation and allow client matching of replies with | |||
| purpose of the nonce is to avoid Interest aggregation and allow | requests. As described below, the nonce is ignored for CS checking. | |||
| client matching of replies with requests. As described below, the | ||||
| nonce is ignored for CS checking. | ||||
| 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 | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | | | |||
| | Name_Nonce_Type | Name_Nonce_Length = 8 | | | Name_Nonce_Type | Name_Nonce_Length = 8 | | |||
| | | | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| skipping to change at line 374 ¶ | skipping to change at line 372 ¶ | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 4: Traceroute Reply CCNx Packet Format | Figure 4: Traceroute Reply CCNx Packet Format | |||
| The header of a traceroute reply consists of the header fields of a | The header of a traceroute reply consists of the header fields of a | |||
| CCNx Content Object and a hop-by-hop Path Steering TLV. The value of | CCNx Content Object and a hop-by-hop Path Steering TLV. The value of | |||
| the packet type field is PT_TR_REPLY. See Section 9 for the value | the packet type field is PT_TR_REPLY. See Section 9 for the value | |||
| assignment. | assignment. | |||
| A traceroute reply message is of type Content Object and contains a | A traceroute reply message is of type T_OBJECT and contains a Name | |||
| Name TLV (name of the corresponding traceroute request), a | TLV (name of the corresponding traceroute request), a PayloadType | |||
| PayloadType TLV, and an ExpiryTime TLV with a value of 0 to indicate | TLV, and an ExpiryTime TLV with a value of 0 to indicate that replies | |||
| that replies must not be returned from network caches. | must not be returned from network caches. | |||
| 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 | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | | | |||
| | MessageType = 2 | MessageLength | | | MessageType = 0x06 | MessageLength | | |||
| | | | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | |||
| | Name TLV | | | Name TLV | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | |||
| | PayloadType TLV | | | PayloadType TLV | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| skipping to change at line 498 ¶ | skipping to change at line 496 ¶ | |||
| Figure 8: Traceroute Request NDN Packet Format | Figure 8: Traceroute Request NDN Packet Format | |||
| The name of a request consists of the target name, a nonce value (it | The name of a request consists of the target name, a nonce value (it | |||
| can be the value of the Nonce field), and the suffix "traceroute" to | can be the value of the Nonce field), and the suffix "traceroute" to | |||
| denote that this Interest is a traceroute request (added as a | denote that this Interest is a traceroute request (added as a | |||
| KeywordNameComponent [NDNTLV]). When the "ApplicationParameters" | KeywordNameComponent [NDNTLV]). When the "ApplicationParameters" | |||
| element is present, a ParametersSha256DigestComponent (Section 6) is | element is present, a ParametersSha256DigestComponent (Section 6) is | |||
| added as the last name segment. | added as the last name segment. | |||
| A traceroute request MAY carry a Path Label TLV in the NDN Link | A traceroute request MAY carry a Path Label TLV in the NDN Link | |||
| Adaptation Protocol [NDNLPv2] as specified in | Adaptation Protocol [NDNLPv2] as specified in [RFC9531]. | |||
| [PATHSTEERING-CCNx-NDN]. | ||||
| Since the NDN packet format does not provide a mechanism to prevent | Since the NDN packet format does not provide a mechanism to prevent | |||
| the network from caching specific data packets, we instead use the | the network from caching specific data packets, we instead use the | |||
| MustBeFresh TLV for requests (in combination with a FreshnessPeriod | MustBeFresh TLV for requests (in combination with a FreshnessPeriod | |||
| TLV with a value of 1 for replies) to avoid fetching cached | TLV with a value of 1 for replies) to avoid fetching cached | |||
| traceroute replies with a freshness period that has expired | traceroute replies with a freshness period that has expired | |||
| [REALTIME]. | [REALTIME]. | |||
| 5.2. ICN Traceroute Reply NDN Packet Format | 5.2. ICN Traceroute Reply NDN Packet Format | |||
| skipping to change at line 522 ¶ | skipping to change at line 519 ¶ | |||
| TracerouteReply = DATA-TLV TLV-LENGTH | TracerouteReply = DATA-TLV TLV-LENGTH | |||
| Name | Name | |||
| MetaInfo | MetaInfo | |||
| Content | Content | |||
| Signature | Signature | |||
| Figure 9: Traceroute Reply NDN Packet Format | Figure 9: Traceroute Reply NDN Packet Format | |||
| A traceroute reply MAY carry a Path Label TLV in the NDN Link | A traceroute reply MAY carry a Path Label TLV in the NDN Link | |||
| Adaptation Protocol [NDNLPv2] as specified in | Adaptation Protocol [NDNLPv2] as specified in [RFC9531], since it | |||
| [PATHSTEERING-CCNx-NDN], since it might be modified in a hop-by-hop | might be modified in a hop-by-hop fashion by the forwarders along the | |||
| fashion by the forwarders along the reverse path. | reverse path. | |||
| The name of a traceroute reply is the name of the corresponding | The name of a traceroute reply is the name of the corresponding | |||
| traceroute request while the format of the MetaInfo field is as | traceroute request while the format of the MetaInfo field is as | |||
| follows: | follows: | |||
| MetaInfo = META-INFO-TYPE TLV-LENGTH | MetaInfo = META-INFO-TYPE TLV-LENGTH | |||
| ContentType | ContentType | |||
| FreshnessPeriod | FreshnessPeriod | |||
| Figure 10: MetaInfo TLV | Figure 10: MetaInfo TLV | |||
| skipping to change at line 736 ¶ | skipping to change at line 733 ¶ | |||
| 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>. | |||
| 10.2. Informative References | 10.2. Informative References | |||
| [NDNLPv2] NDN team, "NDNLPv2: Named Data Networking Link Adaptation | [NDNLPv2] NDN team, "NDNLPv2: Named Data Networking Link Adaptation | |||
| Protocol v2", February 2023, <https://redmine.named- | Protocol v2", February 2023, <https://redmine.named- | |||
| data.net/projects/nfd/wiki/NDNLPv2>. | data.net/projects/nfd/wiki/NDNLPv2>. | |||
| [NDNTLV] NDN project team, "NDN Packet Format Specification", | [NDNTLV] NDN project team, "NDN Packet Format Specification", | |||
| September 2023, | February 2024, | |||
| <https://named-data.net/doc/NDN-packet-spec/current/>. | <https://named-data.net/doc/NDN-packet-spec/current/>. | |||
| [PATHSTEERING] | [PATHSTEERING] | |||
| Moiseenko, I. and D. Oran, "Path switching in content | Moiseenko, I. and D. Oran, "Path switching in content | |||
| centric and named data networks", ICN '17: Proceedings of | centric and named data networks", ICN '17: Proceedings of | |||
| the 4th ACM Conference on Information-Centric Networking, | the 4th ACM Conference on Information-Centric Networking, | |||
| pp. 66-76, DOI 10.1145/3125719.3125721, September 2017, | pp. 66-76, DOI 10.1145/3125719.3125721, September 2017, | |||
| <https://dl.acm.org/doi/10.1145/3125719.3125721>. | <https://dl.acm.org/doi/10.1145/3125719.3125721>. | |||
| [PATHSTEERING-CCNx-NDN] | ||||
| Moiseenko, I. and D. Oran, "Path Steering in CCNx and | ||||
| NDN", Work in Progress, Internet-Draft, draft-irtf-icnrg- | ||||
| pathsteering-07, 29 September 2023, | ||||
| <https://datatracker.ietf.org/doc/html/draft-irtf-icnrg- | ||||
| pathsteering-07>. | ||||
| [REALTIME] Mastorakis, S., Gusev, P., Afanasyev, A., and L. Zhang, | [REALTIME] Mastorakis, S., Gusev, P., Afanasyev, A., and L. Zhang, | |||
| "Real-Time Data Retrieval in Named Data Networking", 2018 | "Real-Time Data Retrieval in Named Data Networking", 2018 | |||
| 1st IEEE International Conference on Hot Information- | 1st IEEE International Conference on Hot Information- | |||
| Centric Networking (HotICN), Shenzhen, China, pp. 61-66, | Centric Networking (HotICN), Shenzhen, China, pp. 61-66, | |||
| DOI 10.1109/HOTICN.2018.8605992, August 2018, | DOI 10.1109/HOTICN.2018.8605992, August 2018, | |||
| <https://ieeexplore.ieee.org/document/8605992>. | <https://ieeexplore.ieee.org/document/8605992>. | |||
| [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
| Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | |||
| <https://www.rfc-editor.org/info/rfc4648>. | <https://www.rfc-editor.org/info/rfc4648>. | |||
| [RFC9344] Asaeda, H., Ooka, A., and X. Shao, "CCNinfo: Discovering | [RFC9344] Asaeda, H., Ooka, A., and X. Shao, "CCNinfo: Discovering | |||
| Content and Network Information in Content-Centric | Content and Network Information in Content-Centric | |||
| Networks", RFC 9344, DOI 10.17487/RFC9344, February 2023, | Networks", RFC 9344, DOI 10.17487/RFC9344, February 2023, | |||
| <https://www.rfc-editor.org/info/rfc9344>. | <https://www.rfc-editor.org/info/rfc9344>. | |||
| [RFC9508] Mastorakis, S., Oran, D., Gibson, J., Moiseenko, I., and | [RFC9508] Mastorakis, S., Oran, D., Gibson, J., Moiseenko, I., and | |||
| R. Droms, "Information-Centric Networking (ICN) Ping | R. Droms, "Information-Centric Networking (ICN) Ping | |||
| Protocol Specification", RFC 9508, DOI 10.17487/RFC9508, | Protocol Specification", RFC 9508, DOI 10.17487/RFC9508, | |||
| February 2024, <https://www.rfc-editor.org/info/rfc9508>. | March 2024, <https://www.rfc-editor.org/info/rfc9508>. | |||
| [RFC9531] Moiseenko, I. and D. Oran, "Path Steering in Content- | ||||
| Centric Networking (CCNx) and Named Data Networking | ||||
| (NDN)", RFC 9531, DOI 10.17487/RFC9531, March 2024, | ||||
| <https://www.rfc-editor.org/info/rfc9531>. | ||||
| [SNAMP] Afanasyev, A., Yi, C., Wang, L., Zhang, B., and L. Zhang, | [SNAMP] Afanasyev, A., Yi, C., Wang, L., Zhang, B., and L. Zhang, | |||
| "SNAMP: Secure namespace mapping to scale NDN forwarding", | "SNAMP: Secure namespace mapping to scale NDN forwarding", | |||
| 2015 IEEE Conference on Computer Communications Workshops | 2015 IEEE Conference on Computer Communications Workshops | |||
| (INFOCOM WKSHPS), Hong Kong, China, pp. 281-286, | (INFOCOM WKSHPS), Hong Kong, China, pp. 281-286, | |||
| DOI 10.1109/INFCOMW.2015.7179398, April 2015, | DOI 10.1109/INFCOMW.2015.7179398, April 2015, | |||
| <https://ieeexplore.ieee.org/abstract/document/7179398>. | <https://ieeexplore.ieee.org/abstract/document/7179398>. | |||
| Appendix A. Traceroute Client Application (Consumer) Operation | Appendix A. Traceroute Client Application (Consumer) Operation | |||
| End of changes. 12 change blocks. | ||||
| 34 lines changed or deleted | 29 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||