RFC 9192: Network Service Header (NSH) Fixed-Length Context Header Allocation
- T. Mizrahi,
- I. Yerushalmi,
- D. Melman,
- R. Browne
Abstract
The Network Service Header (NSH) specification defines two possible methods of including metadata (MD): MD Type 0x1 and MD Type 0x2. MD Type 0x1 uses a fixed-length Context Header. The allocation of this Context Header, i.e., its structure and semantics, has not been standardized. This memo defines the Timestamp Context Header, which is an NSH fixed-length Context Header that incorporates the packet's timestamp, a sequence number, and a source interface identifier.¶
Although the definition of the Context Header presented
in this document has not been standardized by the IETF, it has been
implemented in silicon by several manufacturers and is published
here to facilitate interoperabilit
Status of This Memo
This document is not an Internet Standards Track specification; it is published for informational purposes.¶
This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not candidates for any level of Internet Standard; see Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://
1. Introduction
The Network Service Header (NSH), defined in [RFC8300], is an encapsulation header that is used as the service encapsulation in the Service Function Chaining (SFC) architecture [RFC7665].¶
In order to share metadata (MD) along a service path, the NSH specification [RFC8300] supports two methods: a fixed-length Context Header (MD Type 0x1) and a variable-length Context Header (MD Type 0x2). When using MD Type 0x1, the NSH includes 16 octets of Context Header fields.¶
The NSH specification [RFC8300] has not defined the
semantics of the 16-octet Context Header, nor does it specify how the Context Header is used by
NSH-aware Service Functions (SFs), Service Function Forwarders (SFFs), and proxies. Several Context Header
formats are defined in [NSH-TLV].
Furthermore, some allocation schemes were proposed in the past to
accommodate specific use cases, e.g., [NSH-DC-ALLOC],
[NSH
This memo presents an allocation for the MD Type 0x1 Context Header,
which incorporates the timestamp of the packet, a sequence number, and a
source interface identifier. Note that other allocation schema for MD Type 0x1
might be specified in the future. Although such schema are currently not being
standardized by the SFC Working Group, a consistent format (allocation schema)
should be used in an SFC-enabled domain in order to allow interoperabilit
In a nutshell, packets that enter the SFC-enabled domain are
timestamped by a classifier [RFC7665]. Thus, the
timestamp, sequence number, and source interface are incorporated in the
NSH Context Header. As discussed in [RFC8300], if
reclassificatio
The Timestamp Context Header includes three fields that may be used
for various purposes. The Timestamp field may be used for logging,
troubleshooting
This document presents the Timestamp Context Header but does not specify the functionality of the SFs that receive the Context Header. Although a few possible use cases are described in this document, the SF behavior and application are outside the scope of this document.¶
Key Performance Indicator (KPI) stamping [RFC8592] defines an NSH timestamping mechanism that uses the MD Type 0x2 format. This memo defines a compact MD Type 0x1 Context Header that does not require the packet to be extended beyond the NSH. Furthermore, the mechanisms described in [RFC8592] and this memo can be used in concert, as further discussed in Section 4.1.¶
Although the definition of the Context Header presented
in this document has not been standardized by the IETF, it has been
implemented in silicon by several manufacturers and is published
here to facilitate interoperabilit
2. Terminology
2.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
2.2. Abbreviations
The following abbreviations are used in this document:¶
3. NSH Timestamp Context Header Allocation
This memo defines the following fixed-length Context Header allocation, as presented in Figure 1.¶
The NSH Timestamp allocation defined in this memo MUST include the following fields:¶
- Sequence Number:
- A 32-bit sequence number. The sequence number
is maintained on a per
-source -interface basis. Sequence numbers can be used by SFs to detect out-of-order delivery or duplicate transmissions. The classifier increments the sequence number by 1 for each packet received through the source interface. This requires the classifier to maintain a per -source -interface counter. The sequence number is initialized to a random number on startup. After it reaches its maximal value (232-1), the sequence number wraps around back to zero.¶ - Source Interface:
- A 32-bit source interface identifier that is assigned by the classifier. The combination of the source interface and the classifier identity is unique within the context of an SFC-enabled domain. Thus, in order for an SF to be able to use the source interface as a unique identifier, the identity of the classifier needs to be known for each packet. The source interface is unique in the context of the given classifier.¶
- Timestamp:
- A 64-bit field that specifies the time at which the packet was received by the classifier. Two possible timestamp formats can be used for this field: the two 64-bit recommended formats specified in [RFC8877]. One of the formats is based on the timestamp format defined in [IEEE1588], and the other is based on the format defined in [RFC5905].¶
The NSH specification [RFC8300] does not specify the possible coexistence of multiple MD Type 0x1 Context Header formats in a single SFC-enabled domain. It is assumed that the Timestamp Context Header will be deployed in an SFC-enabled domain that uniquely uses this Context Header format. Thus, operators SHOULD ensure that either a consistent Context Header format is used in the SFC-enabled domain or there is a clear policy that allows SFs to know the Context Header format of each packet. Specifically, operators are expected to ensure the consistent use of a timestamp format across the whole SFC-enabled domain.¶
The two timestamp formats that can be used in the Timestamp field are as follows:¶
- Truncated Timestamp Format [IEEE1588]:
- This format is specified in Section 4.3 of [RFC8877]. For the reader's convenience, this format is illustrated in Figure 2.¶
- NTP 64-bit Timestamp Format [RFC5905]:
- This format is specified in Section 4.2.1 of [RFC8877]. For the reader's convenience, this format is illustrated in Figure 3.¶
Synchronization aspects of the timestamp format in the context of the NSH Timestamp allocation are discussed in Section 5.¶
4. Timestamping Use Cases
4.1. Network Analytics
Per-packet timestamping enables coarse-grained monitoring of network delays along the Service Function Chain. Once a potential problem or bottleneck is detected (for example, when the delay exceeds a certain policy), a highly granular monitoring mechanism can be triggered (for example, using the hop-by-hop measurement data defined in [RFC8592] or [IOAM-DATA]), allowing analysis and localization of the problem.¶
Timestamping is also useful for logging, troubleshooting
4.2. Alternate Marking
A possible approach for passive performance monitoring is to use an
Alternate
When the timestamp is incorporated in the NSH, it can intrinsically be used for Alternate Marking. For example, the least significant bit of the timestamp Seconds field can be used for this purpose, since the value of this bit is inherently toggled every second.¶
4.3. Consistent Updates
The timestamp can be used for making policy decisions, such as
'Perform action A if timestamp>
5. Synchronization Considerations
Some of the applications that make use of the timestamp require the classifier and SFs to be synchronized to a common time reference -- for example, using the Network Time Protocol [RFC5905] or the Precision Time Protocol [IEEE1588]. Although it is not a requirement to use a clock synchronization mechanism, it is expected that, depending on the applications that use the timestamp, such synchronization mechanisms will be used in most deployments that use the Timestamp allocation.¶
6. IANA Considerations
This document has no IANA actions.¶
7. Security Considerations
The security considerations for the NSH in general are discussed in [RFC8300]. The NSH is typically run within a confined trust domain. However, if a trust domain is not enough to provide the operator with protection against the timestamp threats as described below, then the operator SHOULD use transport-level protection between SFC processing nodes as described in [RFC8300].¶
The security considerations of in-band timestamping in the context of the NSH are discussed in [RFC8592]; this section is based on that discussion.¶
In-band timestamping, as defined in this document and [RFC8592], can be
used as a means for network reconnaissance. By passively eavesdropping
on timestamped traffic, an attacker can gather information about network
delays and performance bottlenecks. An on-path attacker can
maliciously modify timestamps in order to attack applications that use
the timestamp values, such as performance
Since the timestamping mechanism relies on an underlying time synchronization protocol, by attacking the time protocol an attack can potentially compromise the integrity of the NSH Timestamp. A detailed discussion about the threats against time protocols and how to mitigate them is presented in [RFC7384].¶
8. References
8.1. Normative References
- [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC7665]
-
Halpern, J., Ed. and C. Pignataro, Ed., "Service Function Chaining (SFC) Architecture", RFC 7665, DOI 10
.17487 , , <https:///RFC7665 www >..rfc -editor .org /info /rfc7665 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [RFC8300]
-
Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., "Network Service Header (NSH)", RFC 8300, DOI 10
.17487 , , <https:///RFC8300 www >..rfc -editor .org /info /rfc8300 - [RFC8877]
-
Mizrahi, T., Fabini, J., and A. Morton, "Guidelines for Defining Packet Timestamps", RFC 8877, DOI 10
.17487 , , <https:///RFC8877 www >..rfc -editor .org /info /rfc8877
8.2. Informative References
- [DPT]
-
Mizrahi, T. and Y. Moses, "The Case for Data Plane Timestamping in SDN", IEEE INFOCOM Workshop on Software-Driven Flexible and Agile Networking (SWFAN), DOI 10
.1109 , , <https:///INFCOMW .2016 .7562197 ieeexplore >..ieee .org /document /7562197 - [IEEE1588]
-
IEEE, "IEEE 1588-2008 - IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems", DOI 10
.1109 , <https:///IEEESTD .2008 .4579760 standards >..ieee .org /standard /1588 -2008 .html - [IOAM-DATA]
-
Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi, Ed., "Data Fields for In-situ OAM", Work in Progress, Internet-Draft, draft
-ietf , , <https://-ippm -ioam -data -17 datatracker >..ietf .org /doc /html /draft -ietf -ippm -ioam -data -17 - [NSH
-BROADBAND -ALLOC] -
Napper, J., Kumar, S., Muley, P., Hendericks, W., and M. Boucadair, "NSH Context Header Allocation for Broadband", Work in Progress, Internet-Draft, draft
-ietf , , <https://-sfc -nsh -broadband -allocation -01 datatracker >..ietf .org /doc /html /draft -ietf -sfc -nsh -broadband -allocation -01 - [NSH-DC-ALLOC]
-
Guichard, J., Ed., Smith, M., Kumar, S., Majee, S., and T. Mizrahi, "Network Service Header (NSH) MD Type 1: Context Header Allocation (Data Center)", Work in Progress, Internet-Draft, draft
-ietf , , <https://-sfc -nsh -dc -allocation -02 datatracker >..ietf .org /doc /html /draft -ietf -sfc -nsh -dc -allocation -02 - [NSH-TLV]
-
Wei, Y., Ed., Elzur, U., Majee, S., Pignataro, C., and D. Eastlake, "Network Service Header Metadata Type 2 Variable-Length Context Headers", Work in Progress, Internet-Draft, draft
-ietf , , <https://-sfc -nsh -tlv -13 datatracker >..ietf .org /doc /html /draft -ietf -sfc -nsh -tlv -13 - [RFC5905]
-
Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, "Network Time Protocol Version 4: Protocol and Algorithms Specification", RFC 5905, DOI 10
.17487 , , <https:///RFC5905 www >..rfc -editor .org /info /rfc5905 - [RFC7384]
-
Mizrahi, T., "Security Requirements of Time Protocols in Packet Switched Networks", RFC 7384, DOI 10
.17487 , , <https:///RFC7384 www >..rfc -editor .org /info /rfc7384 - [RFC8321]
-
Fioccola, G., Ed., Capello, A., Cociglio, M., Castaldelli, L., Chen, M., Zheng, L., Mirsky, G., and T. Mizrahi, "Alternate
-Marking Method for Passive and Hybrid Performance Monitoring" , RFC 8321, DOI 10.17487 , , <https:///RFC8321 www >..rfc -editor .org /info /rfc8321 - [RFC8592]
-
Browne, R., Chilikin, A., and T. Mizrahi, "Key Performance Indicator (KPI) Stamping for the Network Service Header (NSH)", RFC 8592, DOI 10
.17487 , , <https:///RFC8592 www >..rfc -editor .org /info /rfc8592
Acknowledgments
The authors thank Mohamed Boucadair and Greg Mirsky for their thorough reviews and detailed comments.¶