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. |