summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9487.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9487.txt')
-rw-r--r--doc/rfc/rfc9487.txt1115
1 files changed, 1115 insertions, 0 deletions
diff --git a/doc/rfc/rfc9487.txt b/doc/rfc/rfc9487.txt
new file mode 100644
index 0000000..d706155
--- /dev/null
+++ b/doc/rfc/rfc9487.txt
@@ -0,0 +1,1115 @@
+
+
+
+
+Internet Engineering Task Force (IETF) T. Graf
+Request for Comments: 9487 Swisscom
+Category: Standards Track B. Claise
+ISSN: 2070-1721 Huawei
+ P. Francois
+ INSA-Lyon
+ November 2023
+
+
+ Export of Segment Routing over IPv6 Information in IP Flow Information
+ Export (IPFIX)
+
+Abstract
+
+ This document introduces new IP Flow Information Export (IPFIX)
+ Information Elements (IEs) to identify a set of information related
+ to Segment Routing over IPv6 (SRv6) such as data contained in a
+ Segment Routing Header (SRH), the SRv6 control plane, and the SRv6
+ Endpoint behavior that traffic is being forwarded with.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9487.
+
+Copyright Notice
+
+ Copyright (c) 2023 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Revised BSD License text as described in Section 4.e of the
+ Trust Legal Provisions and are provided without warranty as described
+ in the Revised BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Terminology
+ 3. New IPFIX IPv6 SRH Information Elements
+ 4. Sample Use Cases
+ 5. IANA Considerations
+ 5.1. IPFIX Information Elements Registry
+ 5.1.1. srhFlagsIPv6
+ 5.1.2. srhTagIPv6
+ 5.1.3. srhSegmentIPv6
+ 5.1.4. srhActiveSegmentIPv6
+ 5.1.5. srhSegmentIPv6BasicList
+ 5.1.6. srhSegmentIPv6ListSection
+ 5.1.7. srhSegmentsIPv6Left
+ 5.1.8. srhIPv6Section
+ 5.1.9. srhIPv6ActiveSegmentType
+ 5.1.10. srhSegmentIPv6LocatorLength
+ 5.1.11. srhSegmentIPv6EndpointBehavior
+ 5.2. New IPFIX IPv6 SRH Segment Type (Value 500) Subregistry
+ 6. Operational Considerations
+ 6.1. SRv6 Segment List
+ 6.2. Compressed SRv6 Segment List Decomposition
+ 7. Security Considerations
+ 8. References
+ 8.1. Normative References
+ 8.2. Informative References
+ Appendix A. IPFIX Encoding Examples
+ A.1. Three Observed SRH Headers and Their Routing Protocols
+ A.1.1. Template Record and Data Set with Segment Basic List
+ A.1.2. Template Record and Data Set with Segment List Section
+ A.1.3. Template Record and Data Set with SRH Section
+ A.2. Options Template Record and Data Set for SRv6 Segment
+ Endpoint Behavior and Locator Length
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ A dedicated Routing Extension Header, called "Segment Routing Header
+ (SRH)", is defined in [RFC8754] for use of Segment Routing over IPv6
+ (SRv6) data plane.
+
+ Also, three routing protocol extensions, OSPFv3 [OSPFV3-SRV6-EXT],
+ IS-IS [RFC9352], and BGP Prefix Segment Identifiers (Prefix-SIDs)
+ [RFC8669]; the Path Computation Element Communication Protocol (PCEP)
+ Extension [PCEP-SRV6-EXT]; and the Segment Routing Policy [RFC9256]
+ are defined to propagate Segment Identifiers (SIDs).
+
+ SRv6 Segment Endpoint behaviors describe how packets should be
+ processed by SRv6 Segment Endpoint Nodes. Such behaviors are defined
+ in [RFC8986].
+
+ This document specifies eleven new IPFIX Information Elements (IEs)
+ and one new subregistry within the "IPFIX Information Elements"
+ registry [RFC7012], for SRv6 purposes.
+
+ These IEs are used to export the SRv6 active segment and its control
+ plane protocol, the SRv6 Segment List, the next SRv6 node and its
+ type, and the numbers of SRv6 segments left.
+
+ Some examples are provided in Appendix A.
+
+2. Terminology
+
+ 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.
+
+ This document makes use of the terms defined in [RFC7011], [RFC8402],
+ and [RFC8754].
+
+ The following terms are used as defined in [RFC7011]:
+
+ * IPFIX
+
+ * IPFIX Information Elements
+
+ * Template
+
+ * Template Record
+
+ * Options Template
+
+ * Options Template Record
+
+ * Data Record
+
+ * Data Set
+
+ The following terms are used as defined in [RFC8402]:
+
+ * Segment Routing (SR)
+
+ * Segment
+
+ * Segment List
+
+ * Active Segment
+
+ * Segment Identifier (SID)
+
+ * SRv6
+
+ * SRv6 SID
+
+ The following terms are used as defined in [RFC8754]:
+
+ * Segment Routing Header (SRH)
+
+ * SR Source Node
+
+ * Transit Node
+
+ * SR Segment Endpoint Node
+
+ * Reduced SRH
+
+ * Segments Left
+
+ * Last Entry
+
+3. New IPFIX IPv6 SRH Information Elements
+
+ This section specifies the new IPFIX IPv6 SRH IEs.
+
+ srhFlagsIPv6
+ The 8-bit Flags field defined in the SRH (Section 2 of [RFC8754]).
+
+ srhTagIPv6
+ The 16-bit Tag field defined in the SRH (Section 2 of [RFC8754]).
+ A tag is used to mark a packet as part of a class or group of
+ packets sharing the same set of properties.
+
+ srhSegmentIPv6
+ The 128-bit IPv6 address that represents an SRv6 segment.
+
+ srhActiveSegmentIPv6
+ The 128-bit IPv6 address that represents the active SRv6 segment.
+
+ srhSegmentIPv6BasicList
+ The ordered basicList [RFC6313] of zero or more 128-bit IPv6
+ addresses in the SRH that represents the SRv6 Segment List. As
+ specified in Section 2 of [RFC8754], the Segment List is encoded
+ starting from the last segment of the SR Policy. That is, the
+ first element of the Segment List (Segment List[0]) contains the
+ last segment of the SR Policy, the second element contains the
+ penultimate segment of the SR Policy, and so on.
+
+ srhSegmentIPv6ListSection
+ The SRH Segment List as defined in Section 2 of [RFC8754] as a
+ series of octets in IPFIX.
+
+ srhSegmentsIPv6Left
+ The 8-bit unsigned integer that defines the number of segments
+ remaining to reach the end of the Segment List from the SRH, as
+ specified by the "Segments Left" field in Section 4.4 of [RFC8200]
+ and as mentioned in the SRH part of Section 2 of [RFC8754].
+
+ srhIPv6Section
+ The SRH and its TLVs as specified in Section 2 of [RFC8754] as a
+ series of octets in IPFIX.
+
+ srhIPv6ActiveSegmentType
+ The designator of the routing protocol or PCEP extension where the
+ active SRv6 segment has been learned from.
+
+ srhSegmentIPv6LocatorLength
+ The length of the SRH segment IPv6 locator specified as the number
+ of significant bits. Together with srhSegmentIPv6, it enables the
+ calculation of the SRv6 Locator.
+
+ srhSegmentIPv6EndpointBehavior
+ The 16-bit unsigned integer that represents an SRv6 Endpoint
+ behavior as per Section 4 of [RFC8986].
+
+ Note that the srhSegmentIPv6, srhSegmentIPv6LocatorLength, and
+ srhSegmentIPv6EndpointBehavior IPFIX IEs are generic fields to be
+ used in the context of IPFIX Options Templates or IPFIX Structured
+ Data [RFC6313].
+
+4. Sample Use Cases
+
+ The IPFIX IEs srhSegmentIPv6BasicList (496) or alternatively
+ srhSegmentIPv6ListSection (497), srhActiveSegmentIPv6 (495),
+ srhSegmentsIPv6Left (498), srhIPv6ActiveSegmentType (500), and
+ forwardingStatus (89) [RFC7270] [IANA-IPFIX] as well as some existing
+ counter information [IANA-IPFIX] provide answers to the following
+ questions (amongst others):
+
+ * How many packets steered with an SR policy are forwarded or
+ dropped using SRv6 in a network?
+
+ * If dropped, for which reasons?
+
+ * What is the current active segment and its associated control
+ plane protocol?
+
+ * What is the SRv6 Segment List?
+
+ * What is the next SRv6 node and its type?
+
+ * How many SRv6 segments are left?
+
+5. IANA Considerations
+
+5.1. IPFIX Information Elements Registry
+
+ IANA has added the following new IEs to the "IPFIX Information
+ Elements" registry [RFC7012] at [IANA-IPFIX]:
+
+ +===========+================================+
+ | ElementID | Name |
+ +===========+================================+
+ | 492 | srhFlagsIPv6 |
+ +-----------+--------------------------------+
+ | 493 | srhTagIPv6 |
+ +-----------+--------------------------------+
+ | 494 | srhSegmentIPv6 |
+ +-----------+--------------------------------+
+ | 495 | srhActiveSegmentIPv6 |
+ +-----------+--------------------------------+
+ | 496 | srhSegmentIPv6BasicList |
+ +-----------+--------------------------------+
+ | 497 | srhSegmentIPv6ListSection |
+ +-----------+--------------------------------+
+ | 498 | srhSegmentsIPv6Left |
+ +-----------+--------------------------------+
+ | 499 | srhIPv6Section |
+ +-----------+--------------------------------+
+ | 500 | srhIPv6ActiveSegmentType |
+ +-----------+--------------------------------+
+ | 501 | srhSegmentIPv6LocatorLength |
+ +-----------+--------------------------------+
+ | 502 | srhSegmentIPv6EndpointBehavior |
+ +-----------+--------------------------------+
+
+ Table 1: IPFIX Information Elements Registry
+
+5.1.1. srhFlagsIPv6
+
+ ElementID: 492
+ Name: srhFlagsIPv6
+ Abstract Data Type: unsigned8
+ Data Type Semantics: flags
+ Description: The 8-bit Flags field defined in the SRH (Section 2 of
+ [RFC8754]). Assigned flags and their meanings are provided in the
+ "Segment Routing Header Flags" IANA registry.
+ Additional Information: See the assignments in the "Segment Routing
+ Header Flags" registry at <https://www.iana.org/assignments/
+ ipv6-parameters>. See also [RFC8754] for the SRH specification.
+ Reference: RFC 9487
+
+5.1.2. srhTagIPv6
+
+ ElementID: 493
+ Name: srhTagIPv6
+ Abstract Data Type: unsigned16
+ Data Type Semantics: identifier
+ Description: The 16-bit Tag field defined in the SRH (Section 2 of
+ [RFC8754]). A tag is used to mark a packet as part of a class or
+ group of packets sharing the same set of properties.
+ Additional Information: See Section 2 of [RFC8754] for more details
+ about the Tag.
+ Reference: RFC 9487
+
+5.1.3. srhSegmentIPv6
+
+ ElementID: 494
+ Name: srhSegmentIPv6
+ Abstract Data Type: ipv6Address
+ Data Type Semantics: default
+ Description: The 128-bit IPv6 address that represents an SRv6
+ segment.
+ Additional Information: Specified in Section 1 of [RFC8402] and
+ mentioned in "Segment List" in Section 2 of [RFC8754].
+ Reference: RFC 9487
+
+5.1.4. srhActiveSegmentIPv6
+
+ ElementID: 495
+ Name: srhActiveSegmentIPv6
+ Abstract Data Type: ipv6Address
+ Data Type Semantics: default
+ Description: The 128-bit IPv6 address that represents the active
+ SRv6 segment.
+ Additional Information: See Section 2 of [RFC8402] for the
+ definition of "active segment".
+ Reference: RFC 9487
+
+5.1.5. srhSegmentIPv6BasicList
+
+ ElementID: 496
+ Name: srhSegmentIPv6BasicList
+ Abstract Data Type: basicList
+ Data Type Semantics: list
+ Description: The ordered basicList [RFC6313] of zero or more 128-bit
+ IPv6 addresses in the SRH that represents the SRv6 Segment List.
+ As specified in Section 2 of [RFC8754], the Segment List is
+ encoded starting from the last segment of the SR Policy. That is,
+ the first element of the Segment List (Segment List[0]) contains
+ the last segment of the SR Policy, the second element contains the
+ penultimate segment of the SR Policy, and so on.
+ Additional Information: See Section 2 of [RFC8754] for more details
+ about the SRv6 Segment List.
+ Reference: RFC 9487
+
+5.1.6. srhSegmentIPv6ListSection
+
+ ElementID: 497
+ Name: srhSegmentIPv6ListSection
+ Abstract Data Type: octetArray
+ Data Type Semantics: default
+ Description: The SRv6 Segment List as defined in Section 2 of
+ [RFC8754] as a series of octets in IPFIX.
+ Additional Information: See Section 2 of [RFC8754] for more details
+ about the SRv6 Segment List.
+ Reference: RFC 9487
+
+5.1.7. srhSegmentsIPv6Left
+
+ ElementID: 498
+ Name: srhSegmentsIPv6Left
+ Abstract Data Type: unsigned8
+ Data Type Semantics: quantity
+ Description: The 8-bit unsigned integer defining the number of
+ segments remaining to reach the end of the Segment List from the
+ SRH.
+ Additional Information: Specified by the "Segments Left" field in
+ Section 4.4 of [RFC8200] and mentioned in Section 2 of [RFC8754].
+ Reference: RFC 9487
+
+5.1.8. srhIPv6Section
+
+ ElementID: 499
+ Name: srhIPv6Section
+ Abstract Data Type: octetArray
+ Data Type Semantics: default
+ Description: The SRH and its TLVs as defined in Section 2 of
+ [RFC8754] as a series of octets in IPFIX.
+ Additional Information: See Section 2 of [RFC8754] for more details
+ about the structure of an SRH.
+ Reference: RFC 9487
+
+5.1.9. srhIPv6ActiveSegmentType
+
+ ElementID: 500
+ Name: srhIPv6ActiveSegmentType
+ Abstract Data Type: unsigned8
+ Data Type Semantics: identifier
+ Description: The designator of the routing protocol or PCEP
+ extension where the active SRv6 segment has been learned from.
+ Values for this Information Element are listed in the "IPFIX IPv6
+ SRH Segment Type (Value 500)" subregistry.
+ Additional Information: See the assigned types in the "IPFIX IPv6
+ SRH Segment (Value 500)" registry at
+ <https://www.iana.org/assignments/ipfix>.
+ Reference: RFC 9487
+
+5.1.10. srhSegmentIPv6LocatorLength
+
+ ElementID: 501
+ Name: srhSegmentIPv6LocatorLength
+ Data Type Semantics: default
+ Description: The length of the SRH segment IPv6 locator specified as
+ the number of significant bits. Together with srhSegmentIPv6, it
+ enables the calculation of the SRv6 Locator.
+ Additional Information: See Section 3.1 of [RFC8986] for more
+ details about the SID format.
+ Reference: RFC 9487
+
+5.1.11. srhSegmentIPv6EndpointBehavior
+
+ ElementID: 502
+ Name: srhSegmentIPv6EndpointBehavior
+ Abstract Data Type: unsigned16
+ Data Type Semantics: identifier
+ Description: The 16-bit unsigned integer that represents an SRv6
+ Endpoint behavior as per Section 4 of [RFC8986]. Assigned values
+ and their meanings are provided in the "SRv6 Endpoint Behaviors"
+ registry.
+ Additional Information: See the assigned behaviors in the "SRv6
+ Endpoint Behaviors" registry at <https://www.iana.org/assignments/
+ segment-routing>. See Section 4 of [RFC8986] for more details
+ about the processing of endpoint behaviors.
+ Reference: RFC 9487
+
+5.2. New IPFIX IPv6 SRH Segment Type (Value 500) Subregistry
+
+ IANA has created a new subregistry called "IPFIX IPv6 SRH Segment
+ Type (Value 500)" under the "IPFIX Information Elements" registry
+ [RFC7012] at [IANA-IPFIX].
+
+ The allocation policy of this new subregistry is Expert Review
+ (Section 4.5 of [RFC8126]).
+
+ The designated experts for this registry should be familiar with SRH.
+ The guidelines that are being followed by the designated experts for
+ the "IPFIX Information Elements" registry should be followed for this
+ subregistry. In particular, criteria that should be applied by the
+ designated experts include determining whether the proposed
+ registration duplicates existing entries and whether the registration
+ description is clear and fits the purpose of this registry. Within
+ the review period, the designated experts will either approve or deny
+ the registration request, communicating this decision to IANA.
+ Denials should include an explanation and, if applicable, suggestions
+ as to how to make the request successful.
+
+ Initial values in the registry are defined in Table 2.
+
+ +=======+==========================+=============================+
+ | Value | Description | Reference |
+ +=======+==========================+=============================+
+ | 0 | Unknown | RFC 9487 |
+ +-------+--------------------------+-----------------------------+
+ | 1 | Segment Routing Policy | RFC 9487, [RFC9256] |
+ +-------+--------------------------+-----------------------------+
+ | 2 | Path Computation Element | RFC 9487, [PCEP-SRV6-EXT] |
+ +-------+--------------------------+-----------------------------+
+ | 3 | OSPFv3 Segment Routing | RFC 9487, [OSPFV3-SRV6-EXT] |
+ +-------+--------------------------+-----------------------------+
+ | 4 | IS-IS Segment Routing | RFC 9487, [RFC9352] |
+ +-------+--------------------------+-----------------------------+
+ | 5 | BGP Segment Routing | RFC 9487, [RFC8669] |
+ | | Prefix-SID | |
+ +-------+--------------------------+-----------------------------+
+
+ Table 2: IPFIX IPv6 SRH Segment Type (Value 500) Subregistry
+
+6. Operational Considerations
+
+6.1. SRv6 Segment List
+
+ The zero or more 128-bit IPv6 addresses in the SRH [RFC8754] can be
+ exported in two different ways, with two different IPFIX IEs:
+
+ * srhSegmentIPv6BasicList
+
+ * srhSegmentIPv6ListSection
+
+ The srhSegmentIPv6BasicList encodes the SRv6 Segment List with a
+ basicList, specified in the IPFIX Structured Data [RFC6313]. This
+ encoding is an advantage for data collection since the different IPv6
+ addresses are already structured as a list, without the need of post-
+ processing. However, this method requires some extra processing on
+ the exporter to realize the basicList data mapping.
+
+ The srhSegmentIPv6ListSection, on the other hand, encodes the list of
+ IPv6 addresses as an octetArray. This doesn't impose any data flow
+ manipulation on the exporter, facilitating the immediate export.
+ However, the data collection MUST be able to decode the IPv6
+ addresses according to the SR specifications. Compared to the
+ srhSegmentIPv6BasicList, the srhSegmentIPv6ListSection flow records
+ length is slightly reduced.
+
+ It is not expected that an exporter would support both
+ srhSegmentIPv6BasicList and srhSegmentIPv6ListSection at the same
+ time.
+
+6.2. Compressed SRv6 Segment List Decomposition
+
+ The SRv6 Segment List in the IPFIX IEs srhSegmentIPv6BasicList,
+ srhSegmentIPv6ListSection, and destinationIPv6Address could contain
+ compressed-SID containers as described in [SRV6-SRH-COM]. The SR
+ Endpoint Flavors, as described in Section 4 of [SRV6-SRH-COM], define
+ new flavors for SID Endpoint behaviors and determine wherever the
+ Segment List encoding is compressed, along with the flavor. The SID
+ Locator, as described in Section 3.1 of [RFC8986], determines the
+ common most significant bits. By using described information from
+ srhSegmentIPv6EndpointBehavior and srhSegmentIPv6LocatorLength, the
+ compressed-SID containers can be decoded at the data collection.
+
+7. Security Considerations
+
+ There are no additional security considerations regarding allocation
+ of these new IPFIX IEs compared to [RFC7012].
+
+ The IEs described in this document export provider plane data metrics
+ on how packets are being forwarded within an SRv6 network.
+ Applications and operators using the IEs described in this document
+ must evaluate the sensitivity of this information in their
+ implementation context and apply the data-at-rest storage guidance in
+ Section 11.8 of [RFC7011] as appropriate.
+
+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/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC6313] Claise, B., Dhandapani, G., Aitken, P., and S. Yates,
+ "Export of Structured Data in IP Flow Information Export
+ (IPFIX)", RFC 6313, DOI 10.17487/RFC6313, July 2011,
+ <https://www.rfc-editor.org/info/rfc6313>.
+
+ [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken,
+ "Specification of the IP Flow Information Export (IPFIX)
+ Protocol for the Exchange of Flow Information", STD 77,
+ RFC 7011, DOI 10.17487/RFC7011, September 2013,
+ <https://www.rfc-editor.org/info/rfc7011>.
+
+ [RFC7012] Claise, B., Ed. and B. Trammell, Ed., "Information Model
+ for IP Flow Information Export (IPFIX)", RFC 7012,
+ DOI 10.17487/RFC7012, September 2013,
+ <https://www.rfc-editor.org/info/rfc7012>.
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6
+ (IPv6) Specification", STD 86, RFC 8200,
+ DOI 10.17487/RFC8200, July 2017,
+ <https://www.rfc-editor.org/info/rfc8200>.
+
+ [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J.,
+ Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header
+ (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020,
+ <https://www.rfc-editor.org/info/rfc8754>.
+
+8.2. Informative References
+
+ [IANA-IPFIX]
+ IANA, "IP Flow Information Export (IPFIX) Entities",
+ <https://www.iana.org/assignments/ipfix>.
+
+ [OSPFV3-SRV6-EXT]
+ Li, Z., Hu, Z., Talaulikar, K., Ed., and P. Psenak,
+ "OSPFv3 Extensions for SRv6", Work in Progress, Internet-
+ Draft, draft-ietf-lsr-ospfv3-srv6-extensions-15, 21 June
+ 2023, <https://datatracker.ietf.org/doc/html/draft-ietf-
+ lsr-ospfv3-srv6-extensions-15>.
+
+ [PCEP-SRV6-EXT]
+ Li, C., Kaladharan, P., Sivabalan, S., Koldychev, M., and
+ Y. Zhu, "Path Computation Element Communication Protocol
+ (PCEP) Extensions for Segment Routing leveraging the IPv6
+ dataplane", Work in Progress, Internet-Draft, draft-ietf-
+ pce-segment-routing-ipv6-20, 8 September 2023,
+ <https://datatracker.ietf.org/doc/html/draft-ietf-pce-
+ segment-routing-ipv6-20>.
+
+ [RFC7270] Yourtchenko, A., Aitken, P., and B. Claise, "Cisco-
+ Specific Information Elements Reused in IP Flow
+ Information Export (IPFIX)", RFC 7270,
+ DOI 10.17487/RFC7270, June 2014,
+ <https://www.rfc-editor.org/info/rfc7270>.
+
+ [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L.,
+ Decraene, B., Litkowski, S., and R. Shakir, "Segment
+ Routing Architecture", RFC 8402, DOI 10.17487/RFC8402,
+ July 2018, <https://www.rfc-editor.org/info/rfc8402>.
+
+ [RFC8669] Previdi, S., Filsfils, C., Lindem, A., Ed., Sreekantiah,
+ A., and H. Gredler, "Segment Routing Prefix Segment
+ Identifier Extensions for BGP", RFC 8669,
+ DOI 10.17487/RFC8669, December 2019,
+ <https://www.rfc-editor.org/info/rfc8669>.
+
+ [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer,
+ D., Matsushima, S., and Z. Li, "Segment Routing over IPv6
+ (SRv6) Network Programming", RFC 8986,
+ DOI 10.17487/RFC8986, February 2021,
+ <https://www.rfc-editor.org/info/rfc8986>.
+
+ [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov,
+ A., and P. Mattes, "Segment Routing Policy Architecture",
+ RFC 9256, DOI 10.17487/RFC9256, July 2022,
+ <https://www.rfc-editor.org/info/rfc9256>.
+
+ [RFC9352] Psenak, P., Ed., Filsfils, C., Bashandy, A., Decraene, B.,
+ and Z. Hu, "IS-IS Extensions to Support Segment Routing
+ over the IPv6 Data Plane", RFC 9352, DOI 10.17487/RFC9352,
+ February 2023, <https://www.rfc-editor.org/info/rfc9352>.
+
+ [SRV6-SRH-COM]
+ Cheng, W., Ed., Filsfils, C., Li, Z., Decraene, B., and F.
+ Clad, Ed., "Compressed SRv6 Segment List Encoding", Work
+ in Progress, Internet-Draft, draft-ietf-spring-srv6-srh-
+ compression-09, 23 October 2023,
+ <https://datatracker.ietf.org/doc/html/draft-ietf-spring-
+ srv6-srh-compression-09>.
+
+Appendix A. IPFIX Encoding Examples
+
+ This appendix represents three different encodings for the newly
+ introduced IEs, for the example values in Table 3. The three
+ different encodings use the following IEs, respectively:
+ srhSegmentIPv6BasicList, srhSegmentIPv6ListSection, and
+ srhIPv6Section.
+
+ +========+=======+=====+==============+==========================+
+ | SRH Nr | SRH | SRH | Active | Segment List |
+ | | Flags | Tag | Segment Type | |
+ +========+=======+=====+==============+==========================+
+ | 1 | 0 | 123 | IS-IS [4] | 2001:db8::1, |
+ | | | | | 2001:db8::2, 2001:db8::3 |
+ +--------+-------+-----+--------------+--------------------------+
+ | 2 | 0 | 456 | IS-IS [4] | 2001:db8::4, 2001:db8::5 |
+ +--------+-------+-----+--------------+--------------------------+
+ | 3 | 0 | 789 | IS-IS [4] | 2001:db8::6 |
+ +--------+-------+-----+--------------+--------------------------+
+
+ Table 3: Three Observed SRH Headers and Their Associated
+ Routing Protocols
+
+A.1. Three Observed SRH Headers and Their Routing Protocols
+
+A.1.1. Template Record and Data Set with Segment Basic List
+
+ With encoding in Figure 1, the examples in Table 3 are represented
+ with the following IEs, where "=>" is used to indicate which IE is
+ mapped to given information:
+
+ * SRH Flags => srhFlagsIPv6 (492)
+
+ * SRH Tag => srhTagIPv6 (493)
+
+ * Active Segment Type => srhIPv6ActiveSegmentType (500)
+
+ * Segment List => srhSegmentIPv6BasicList (496)
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SET ID = 2 | Length = 24 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Template ID = 256 | Field Count = 4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0| srhFlagsIPv6 = 492 | Field Length = 1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0| srhTagIPv6 = 493 | Field Length = 2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0|srhIPv6ActiveSegmentType= 500| Field Length = 1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0|srhSegmentIPv6BasicList = 496| Field Length = 0xFFFF |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: Template Record with Basic List Encoding Format
+
+ In this example, the Template ID is 256, which will be used in the
+ Data Record. The field length for srhSegmentIPv6BasicList is 0xFFFF,
+ which means the length of this IE is variable, and the actual length
+ of this IE is indicated by the List Length field in the basicList
+ format as per [RFC6313].
+
+ The data set is represented as follows:
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SET ID = 256 | Length = 136 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhFlagsIPv6 | srhTagIPv6 = 123 |srhIPv6Active |
+ | = 0 | |SegmentType= 4|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 255 | List Length = 53 |semantic= |
+ | | |ordered |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhSegmentIPv6 = 494 | Field Length = 16 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Segment List[0] = 2001:db8::1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Segment List[1] = 2001:db8::2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Segment List[2] = 2001:db8::3 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhFlagsIPv6 | srhTagIPv6 = 456 | srhIPv6Active |
+ | = 0 | | SegmentType= 4|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 255 | List Length = 37 |semantic= |
+ | | |ordered |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhSegmentIPv6 = 494 | Field Length = 16 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Segment List[0] = 2001:db8::4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Segment List[1] = 2001:db8::5 (16 bytes) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhFlagsIPv6 | srhTagIPv6 = 789 | srhIPv6Active |
+ | = 0 | | SegmentType= 4|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 255 | List Length = 21 |semantic= |
+ | | |ordered |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhSegmentIPv6 = 494 | Field Length = 16 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Segment List[0] = 2001:db8::6 ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Data Set Encoding Format for Basic List
+
+A.1.2. Template Record and Data Set with Segment List Section
+
+ With encoding in Figure 3, the examples in Table 3 are represented
+ with the following IEs, where "=>" is used to indicate which IE is
+ mapped to given information:
+
+ * SRH Flags => srhFlagsIPv6 (492)
+
+ * SRH Tag => srhTagIPv6 (493)
+
+ * Active Segment Type => srhIPv6ActiveSegmentType (500)
+
+ * Segment List => srhSegmentIPv6ListSection (497)
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SET ID = 2 | Length = 24 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Template ID = 257 | Field Count = 4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0| srhFlagsIPv6 = 492 | Field Length = 1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0| srhTagIPv6 = 493 | Field Length = 2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0|srhIPv6ActiveSegmentType= 500| Field Length = 1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0|srhSegmentIPv6ListSection=497| Field Length = 0xFFFF |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 3: Template Record with Segment List Section Encoding Format
+
+ In this example, the Template ID is 257, which will be used in the
+ Data Record. The field length for srhSegmentIPv6ListSection in the
+ Template Record is 0xFFFF, which means that the length of this IE is
+ variable: its actual length is encoded in the Data Set. Note that,
+ with an actual length inferior to 255 in the Data Record example, the
+ length field is encoded in 8 bits (Section 7 of [RFC7011]).
+
+ The data can be represented as follows:
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SET ID = 257 | Length = 116 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhFlagsIPv6 | srhTagIPv6 = 123 | srhIPv6Active |
+ | = 0 | | SegmentType= 4|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Length = 48 | 2001:db8::1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... | 2001:db8::2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... | 2001:db8::3 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... | srhFlagsIPv6 | srhTagIPv6 = 456 |
+ | | = 0 | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhIPv6Active | Length = 32 | 2001:db8::4 |
+ | SegmentType= 4| | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... | 2001:db8::5 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |srhFlagsIPv6=0 | srhTagIPv6 = |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 789 | srhIPv6ActiveSegmentType = 4 | Length = 16 |
+ | | | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2001:db8::6 ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 4: Data Set Encoding Format for Segment List Section
+
+A.1.3. Template Record and Data Set with SRH Section
+
+ With encoding in Figure 5, the examples in Table 3 are represented
+ with the following IEs, where "=>" is used to indicate which IE is
+ mapped to given information:
+
+ * SRH Flags + SRH Tag + Segment List => srhIPv6Section (499)
+
+ * Active Segment Type => srhIPv6ActiveSegmentType (500)
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SET ID = 2 | Length = 16 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Template ID = 258 | Field Count = 2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0|srhIPv6ActiveSegmentType= 500| Field Length = 1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0| srhIPv6Section = 499 | Field Length = 0xFFFF |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 5: Template Record with SRH Section Encoding Format
+
+ In this example, the Template ID is 258, which will be used in the
+ Data Record. The field length for srhIPv6Section in the Template
+ Record is 0xFFFF, which means that the length of this IE is variable:
+ its actual length is encoded in the Data Set. Note that, with an
+ actual length inferior to 255 in the Data Record example, the length
+ field is encoded in 8 bits (Section 7 of [RFC7011]).
+
+ The data can be represented as follows:
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SET ID = 258 | Length = (*) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhIPv6ActiveSegmentType = 4 | Length = (*) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Next Header | Hdr Ext Len | Routing Type | Segments Left |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Last Entry | Flags | Tag |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2001:db8::1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2001:db8::2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2001:db8::3 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Optional Type Length Value objects (variable) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhIPv6ActiveSegmentType = 4 | 0xFFFF |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Next Header | Hdr Ext Len | Routing Type | Segments Left |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Last Entry | Flags | Tag |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2001:db8::4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2001:db8::5 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Optional Type Length Value objects (variable) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhIPv6ActiveSegmentType = 4 | 0xFFFF |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Next Header | Hdr Ext Len | Routing Type | Segments Left |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Last Entry | Flags | Tag |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2001:db8::6 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Optional Type Length Value objects (variable) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 6: Data Set Encoding Format for SRH Section
+
+ (*) The Length must be calculated to include the optional Type Length
+ Value objects.
+
+A.2. Options Template Record and Data Set for SRv6 Segment Endpoint
+ Behavior and Locator Length
+
+ This appendix provides an SRv6 Endpoint Behavior Options Template
+ example, for the values presented in Table 4. In the Options
+ Template case, the srhActiveSegmentIPv6 IE is a Scope field.
+
+ +==========+===================+================+================+
+ | Entry Nr | SRH Endpoint IPv6 | SRH Endpoint | SRH Segment |
+ | | | Behavior | Locator Length |
+ +==========+===================+================+================+
+ | 1 | 2001:db8::1 | End [1] | 48 |
+ +----------+-------------------+----------------+----------------+
+ | 2 | 2001:db8::4 | End with NEXT- | 48 |
+ | | | CSID [43] | |
+ +----------+-------------------+----------------+----------------+
+ | 3 | 2001:db8::6 | End.DX6 [16] | 48 |
+ +----------+-------------------+----------------+----------------+
+
+ Table 4: Three Observed SRv6 Segment Endpoint Behaviors
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Set ID = 3 | Length = 24 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Template ID 259 | Field Count = 3 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Scope Field Count = 1 |0| srhActiveSegmentIPv6 = 495 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Scope 1 Field Length = 4 |0|srhSegmentIPv6End.Behav = 502|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Field Length = 1 |0|srhSegmentIPv6Lo.Length = 501|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Field Length = 4 | Padding |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 7: Segment Endpoint Behavior Options Template Record
+
+ In this example, the Template ID is 259, which will be used in the
+ Data Record.
+
+ The data set is represented as follows:
+
+ 0 1 2 3
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SET ID = 259 | Length = 28 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhActiveSegmentIPv6 = 2001:db8::1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |srhSegmentIPv6EndpointBehavior |srhSegmentIPv6LocatorLength= 48|
+ |= End [1] | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhActiveSegmentIPv6 = 2001:db8::4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |srhSegmentIPv6EndpointBehavior |srhSegmentIPv6LocatorLength= 48|
+ |= End with NEXT-CSID [43] | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | srhActiveSegmentIPv6 = 2001:db8::6 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |srhSegmentIPv6EndpointBehavior |srhSegmentIPv6LocatorLength= 48|
+ |= End.DX6 [16] | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 8: Data Set Encoding Format for Segment Endpoint Behaviors
+
+ (*) The Length must be calculated to include the optional Type Length
+ Value objects.
+
+Acknowledgements
+
+ The authors would like to thank Yao Liu, Eduard Vasilenko, Bruno
+ Decraene, Mohamed Boucadair, Kamran Raza, Qin Wu, Jim Guichard, Tero
+ Kivinen, Paul Aitken, Roman Danyliw, John Scudder, Éric Vyncke, Erik
+ Kline, Lars Eggert, and Andrew Alston for their reviews and valuable
+ comments. And thank you to Paolo Lucente and Alex Huang Feng for the
+ implementation and validation.
+
+Authors' Addresses
+
+ Thomas Graf
+ Swisscom
+ Binzring 17
+ CH-8045 Zurich
+ Switzerland
+ Email: thomas.graf@swisscom.com
+
+
+ Benoit Claise
+ Huawei
+ Email: benoit.claise@huawei.com
+
+
+ Pierre Francois
+ INSA-Lyon
+ Lyon
+ France
+ Email: pierre.francois@insa-lyon.fr