Export of Segment Routing IPv6 Information in
IP Flow Information Export (IPFIX)SwisscomBinzring 17Zurich8045Switzerlandthomas.graf@swisscom.comHuaweibenoit.claise@huawei.comINSA-LyonLyonFrancepierre.francois@insa-lyon.frThis document introduces new IP Flow Information Export (IPFIX)
information elements to identify the SRv6 Segment Routing Header
dimensions, the SRv6 Control Plane Protocol and the SRv6 Endpoint
Behavior that traffic is being forwarded with.A new type of Routing Extension Header called Segment Routing Header
(SRH) is defined by which is used for applying
Segment Routing (SR) on the IPv6 data plane.Three routing protocol extensions, OSPFv3 Extensions,
IS-IS
Extensions, BGP Prefix
Segment Identifiers (Prefix-SIDs) and one Path Computation Element
Communication Protocol (PCEP) Extension have been defined to
propagate Segment Identifiers (SIDs) for the IPv6 data plane.SRv6 segment endpoint behaviors have been defined in and describe how packets should be processed.This document defines eleven new IPFIX Information Elements (IEs) and
three new subregistries within the "IPFIX Information Elements" registry
, respectively for the new SRH dimensions, SRv6
endpoint behaviors and routing protocol and PCEP extensions.This section defines and describes the new IPFIX IEs. 8-bit flags
defined in the SRH. 16-bit tag field
defined in the SRH that marks a packet as part of a class or group
of packets sharing the same set of properties. 128-bit IPv6
address that represents an SRv6 segment. 128-bit
IPv6 address that represents the active SRv6 segment.
Ordered basicList of zero or more 128-bit
IPv6 addresses in the SRH that represents the SRv6 segment list. 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.
Exposes the SRH Segment List as defined in section 2 of as series of n octets. 8-bit
unsigned integer defining the number of route segments remaining to
reach the end of the segment list. Exposes the
SRH and its TLV's as defined in section 2 of as series of n octets. Name
of the routing protocol or PCEP extension from where the active SRv6
segment has been learned from. The
number of significant bits. Together with srhSegmentIPv6 it enables
the calculation of the SRv6 Locator.
16-bit unsigned integer that represents a SRv6 Endpoint
behavior.Note that the srhSegmentIPv6, srhSegmentLocatorLength, and
srhSegmentEndpointBehavior IPFIX IEs are generic fields, to be used in
the context of IPFIX Options Templates or IPFIX Structured Data .By using srhSegmentIPv6BasicList(TBD5) or the
srhSegmentIPv6ListSection (TBD6), srhActiveSegmentIPv6 (TBD4),
srhSegmentIPv6sLeft (TBD7), srhActiveSegmentIPv6Type(TBD9), the
forwardingStatus(89), and some counters information, it is possible to
answer the following questions (amongst others):how many packets are forwarded or droppedif dropped, for which reasons,identify the active segment and its control plane protocol,the SRv6 segment list,the next SRv6 node and its type,and how many SRv6 segments are left.This document requests IANA to create new IEs (see table 1) and three
new subregistries called "IPFIX IPv6 SRH Flags" (table 2), "IPFIX IPv6
SRH Segment type" (table 3) and "IPFIX SRV6 Endpoint Behavior" (table 4)
under the "IPFIX Information Elements" registry
available at and assign the following
initial code points.Note to the RFC-Editor:Please replace TBD1 - TBD16 with the values allocated by IANAPlease replace the [RFC-to-be] with the RFC number assigned to
this documentName: srhFlagsIPv6 ElementID: TBD1 Description: This Information Element identifies the
8-bit flags defined in the SRH. Values for this Information Element
are listed in the "IPFIX IPv6 SRH Flags" registry, see . srhFlagsIPv6 values must not be directly added
to this "IPFIX IPv6 SRH Flags" registry. They must instead be added to
the "Segment Routing Header Flags" registry. Both the "IPFIX IPv6 SRH
Flags" and the "Segment Routing Header Flags" registries must be kept
in synch. Initial values in the registry are defined by the table
below. Abstract Data Type: unsigned8
Data Type Semantics: flags Reference: [RFC-to-be], RFC8754Name: srhTagIPv6 ElementID: TBD2 Description: This Information Element identifies the
16-bit tag field defined in the SRH that marks a packet as part of a
class or group of packets sharing the same set of properties. Abstract Data Type: unsigned16 Data Type Semantics: identifier Reference: [RFC-to-be], RFC8754Name: srhSegmentIPv6 ElementID: TBD3
Description: This Information Element
identifies the 128-bit IPv6 address that represents an SRv6 segment.
Abstract Data Type: ipv6address Data Type Semantics: default
Reference: [RFC-to-be], RFC8754Name: srhActiveSegmentIPv6 ElementID: TBD4
Description: This Information Element
identifies the 128-bit IPv6 address that represents the active SRv6
segment. Abstract Data Type: ipv6address
Data Type Semantics: default Reference: [RFC-to-be], RFC8754Name: srhSegmentIPv6BasicList ElementID:
TBD5 Description: This Information Element
identifies the Ordered basicList [RFC6313] of zero or more 128-bit
IPv6 addresses in the SRH that represents the SRv6 segment list. 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.
Abstract Data Type: basicList Data Type Semantics: list
Reference: [RFC-to-be], RFC8754Name: srhSegmentIPv6ListSection ElementID:
TBD6 Description: Exposes the SRH Segment
List as defined in section 2 of as series of
n octets. Abstract Data Type: octetArray
Data Type Semantics: default Reference: [RFC-to-be], RFC8754Name: srhSegmentIPv6sLeft ElementID: TBD7
Description: This Information Element
identifies the 8-bit unsigned integer defining the number of route
segments remaining to reach the end of the segment list. Abstract Data Type: unsigned8 Data Type Semantics: quantity Reference: [RFC-to-be], RFC8754Name: srhSectionIPv6 ElementID: TBD8
Description: This Information Element exposes
the SRH and its TLV's as defined in section 2 of as series of n octets.
Abstract Data Type: octetArray Data Type
Semantics: default Reference: [RFC-to-be],
RFC8754Name: srhActiveSegmentIPv6Type ElementID:
TBD9 Description: This Information Element
identifies the name of the routing protocol or PCEP extension from
where the active SRv6 segment has been learned from. Values for this
Information Element are listed in the "IPFIX IPv6 SRH Segment type"
registry, see . Initial values in the
registry are defined by the table below. New assignments of values
will be administered by IANA and are subject to Expert Review . Experts need to check definitions of new values
for completeness, accuracy, and redundancy. Abstract Data Type: unsigned8
Data Type Semantics: identifier Reference: [RFC-to-be]Name: srhSegmentLocatorLength ElementID:
TBD10 Description: This Information Element
identifies the number of significant bits and together with
srhSegmentIPv6 enables the calculation of the SRv6 Locator. Abstract Data Type: unsigned8 Data Type Semantics: default
Reference: [RFC-to-be], RFC8986 Section 3.1Name: srhSegmentEndpointBehavior
ElementID: TBD11 Description: This
Information Element identifies the 16-bit SRv6 Endpoint behavior.
Values for this Information Element are listed in the "IPFIX SRV6
Endpoint Behavior" registry, see .
srhSegmentEndpointBehavior values must not be directly added to this
"IPFIX SRV6 Endpoint Behavior" registry. They must instead be added to
the "Segment Routing SRv6 Endpoint Behaviors" registry. Both the
"IPFIX SRV6 Endpoint Behavior" and the "Segment Routing SRv6 Endpoint
Behaviors" registries must be kept in synch. Abstract Data Type: unsigned16
Data Type Semantics: identifier Reference: [RFC-to-be], RFC8986 Section 4The zero or more 128-bit IPv6 addresses in the SRH [RFC8754] can be
exported in two different ways, with two different IPFIX IEs:srhSegmentIPv6BasicListsrhSegmentIPv6ListSectionThe srhSegmentIPv6BasicList encodes the SID list of IPv6 addresses
with a basicList, specified in the IPFIX Structured Data . This encoding offers the advantage to the data
collection that 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 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.The SRv6 segment list in the IPFIX IEs srhSegmentIPv6BasicList and
srhSegmentIPv6ListSection could contain compressed-SID containers as
described in .
The SID endpoint behaviors described in section 4 of determine wherever the
segment list is compressed or not. The SID Locator as described in
section 3.1 , determines the common most
significant bits.There exists no significant extra security considerations regarding
the allocation of these new IPFIX IEs compared to .The authors would like to thank Yao Liu, Paolo Lucente, Eduard
Vasilenko, Alex Huang Feng and Bruno Decraene for their review and
valuable comments.IANA, "IP Flow Information Export (IPFIX) Entities"This appendix represents three different encodings for the newly
introduced IEs, for the example values in the table 5. The three
different encodings uses the following IEs, respectively:
srhSegmentIPv6BasicList, srhSegmentIPv6ListSection, and
srhSectionIPv6.With this encoding, the examples in Table 5 are represented with
the following IEs:SR Flags => srhFlagsIPv6SR Tag => srhTagIPv6Active Segment Type => srhActiveSegmentIPv6TypeSegment List => srhSegmentIPv6BasicListIn 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 .The data set is represented as follows:With this encoding, the examples in Table 5 are represented with
the following IEs:SR Flags => srhFlagsIPv6SR Tag => srhTagIPv6Active Segment Type => srhActiveSegmentIPv6TypeSegment List => srhSegmentIPv6ListIn this example, the Template ID is 257, which will be used in the
Data Record. The field length for srhSegmentIPv6ListSection is 0xFFFF,
which means the length of this IE is variable.The data set is represented as follows:With this encoding, the examples in Table 5 are represented with
the following IEs:SR Flags + SR Tag + Segment List => srhSectionIPv6Active Segment Type => srhActiveSegmentIPv6TypeIn this example, the Template ID is 258, which will be used in the
Data Record. The field length for srhSectionIPv6 is 0xFFFF, which
means the length of this IE is variable.The data set is represented as follows:(*) The Length must be calculated to include the optional Type
Length Value objects.This appendix provides an SRv6 EndPoint Bevahior Options Template
example, for the values presented in Table 12. In the Options Template
case, the srhEndPointIPv6 Information Element is a Scope fieldIn this example, the Template ID is 259, which will be used in the
Data Record.The data set is represented as follows:(*) The Length must be calculated to include the optional Type
Length Value objects.