draft-ietf-6man-segment-routing-header-13.txt   draft-ietf-6man-segment-routing-header-14.txt 
Network Working Group S. Previdi Network Working Group C. Filsfils, Ed.
Internet-Draft Individual Internet-Draft Cisco Systems, Inc.
Intended status: Standards Track C. Filsfils, Ed. Intended status: Standards Track S. Previdi
Expires: November 24, 2018 Cisco Systems, Inc. Expires: December 30, 2018 Individual
J. Leddy J. Leddy
Comcast Comcast
S. Matsushima S. Matsushima
Softbank Softbank
D. Voyer, Ed. D. Voyer, Ed.
Bell Canada Bell Canada
May 23, 2018 June 28, 2018
IPv6 Segment Routing Header (SRH) IPv6 Segment Routing Header (SRH)
draft-ietf-6man-segment-routing-header-13 draft-ietf-6man-segment-routing-header-14
Abstract Abstract
Segment Routing can be applied to the IPv6 data plane using a new Segment Routing can be applied to the IPv6 data plane using a new
type of Routing Extension Header. This document describes the type of Routing Extension Header. This document describes the
Segment Routing Extension Header and how it is used by Segment Segment Routing Extension Header and how it is used by Segment
Routing capable nodes. Routing capable nodes.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
document are to be interpreted as described in RFC 2119 [RFC2119]. "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.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on November 24, 2018. This Internet-Draft will expire on December 30, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 25 skipping to change at page 2, line 25
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Segment Routing Extension Header . . . . . . . . . . . . . . 4 2. Segment Routing Extension Header . . . . . . . . . . . . . . 4
2.1. SRH TLVs . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1. SRH TLVs . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1. Padding TLVs . . . . . . . . . . . . . . . . . . . . 7 2.1.1. Padding TLVs . . . . . . . . . . . . . . . . . . . . 6
2.1.2. HMAC TLV . . . . . . . . . . . . . . . . . . . . . . 8 2.1.2. HMAC TLV . . . . . . . . . . . . . . . . . . . . . . 8
3. SR Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3. SR Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1. Source SR Node . . . . . . . . . . . . . . . . . . . . . 9 3.1. Source SR Node . . . . . . . . . . . . . . . . . . . . . 9
3.2. Transit Node . . . . . . . . . . . . . . . . . . . . . . 9 3.2. Transit Node . . . . . . . . . . . . . . . . . . . . . . 9
3.3. SR Segment Endpoint Node . . . . . . . . . . . . . . . . 10 3.3. SR Segment Endpoint Node . . . . . . . . . . . . . . . . 9
4. Packet Processing . . . . . . . . . . . . . . . . . . . . . . 10 4. Packet Processing . . . . . . . . . . . . . . . . . . . . . . 9
4.1. Source SR Node . . . . . . . . . . . . . . . . . . . . . 10 4.1. Source SR Node . . . . . . . . . . . . . . . . . . . . . 9
4.1.1. Reduced SRH . . . . . . . . . . . . . . . . . . . . . 10 4.1.1. Reduced SRH . . . . . . . . . . . . . . . . . . . . . 10
4.2. Transit Node . . . . . . . . . . . . . . . . . . . . . . 11 4.2. Transit Node . . . . . . . . . . . . . . . . . . . . . . 10
4.3. Segment Endpoint Node . . . . . . . . . . . . . . . . . . 11 4.3. SR Segment Endpoint Node . . . . . . . . . . . . . . . . 11
4.3.1. FIB Entry Is Locally Instantiated SRv6 END SID . . . 11 4.3.1. FIB Entry Is Locally Instantiated SRv6 END SID . . . 11
4.3.2. FIB Entry is a Local Interface . . . . . . . . . . . 12 4.3.2. FIB Entry is a Local Interface . . . . . . . . . . . 13
4.3.3. FIB Entry Is A Non-Local Route . . . . . . . . . . . 13 4.3.3. FIB Entry Is A Non-Local Route . . . . . . . . . . . 13
4.3.4. FIB Entry Is A No Match . . . . . . . . . . . . . . . 13 4.3.4. FIB Entry Is A No Match . . . . . . . . . . . . . . . 13
4.4. Load Balancing and ECMP . . . . . . . . . . . . . . . . . 13 4.3.5. Load Balancing and ECMP . . . . . . . . . . . . . . . 13
5. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 13 5. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1. Abstract Representation of an SRH . . . . . . . . . . . . 13 5.1. Abstract Representation of an SRH . . . . . . . . . . . . 14
5.2. Example Topology . . . . . . . . . . . . . . . . . . . . 14 5.2. Example Topology . . . . . . . . . . . . . . . . . . . . 15
5.3. Source SR Node . . . . . . . . . . . . . . . . . . . . . 15 5.3. Source SR Node . . . . . . . . . . . . . . . . . . . . . 15
5.3.1. Intra SR Domain Packet . . . . . . . . . . . . . . . 15 5.3.1. Intra SR Domain Packet . . . . . . . . . . . . . . . 15
5.3.2. Transit Packet Through SR Domain . . . . . . . . . . 15 5.3.2. Transit Packet Through SR Domain . . . . . . . . . . 16
5.4. Transit Node . . . . . . . . . . . . . . . . . . . . . . 15 5.4. Transit Node . . . . . . . . . . . . . . . . . . . . . . 16
5.5. SR End Node . . . . . . . . . . . . . . . . . . . . . . . 16 5.5. SR Segment Endpoint Node . . . . . . . . . . . . . . . . 16
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17
6.1. Threat model . . . . . . . . . . . . . . . . . . . . . . 17 6.1. Threat model . . . . . . . . . . . . . . . . . . . . . . 17
6.1.1. Source routing threats . . . . . . . . . . . . . . . 17 6.1.1. Source routing threats . . . . . . . . . . . . . . . 17
6.1.2. Applicability of RFC 5095 to SRH . . . . . . . . . . 17 6.1.2. Applicability of RFC 5095 to SRH . . . . . . . . . . 18
6.1.3. Service stealing threat . . . . . . . . . . . . . . . 18 6.1.3. Service stealing threat . . . . . . . . . . . . . . . 19
6.1.4. Topology disclosure . . . . . . . . . . . . . . . . . 18 6.1.4. Topology disclosure . . . . . . . . . . . . . . . . . 19
6.1.5. ICMP Generation . . . . . . . . . . . . . . . . . . . 18 6.1.5. ICMP Generation . . . . . . . . . . . . . . . . . . . 19
6.2. Security fields in SRH . . . . . . . . . . . . . . . . . 19 6.2. Security fields in SRH . . . . . . . . . . . . . . . . . 19
6.2.1. Selecting a hash algorithm . . . . . . . . . . . . . 20 6.2.1. Selecting a hash algorithm . . . . . . . . . . . . . 21
6.2.2. Performance impact of HMAC . . . . . . . . . . . . . 20 6.2.2. Performance impact of HMAC . . . . . . . . . . . . . 21
6.2.3. Pre-shared key management . . . . . . . . . . . . . . 21 6.2.3. Pre-shared key management . . . . . . . . . . . . . . 22
6.3. Deployment Models . . . . . . . . . . . . . . . . . . . . 22 6.3. Deployment Models . . . . . . . . . . . . . . . . . . . . 22
6.3.1. Nodes within the SR domain . . . . . . . . . . . . . 22 6.3.1. Nodes within the SR domain . . . . . . . . . . . . . 22
6.3.2. Nodes outside of the SR domain . . . . . . . . . . . 22 6.3.2. Nodes outside of the SR domain . . . . . . . . . . . 22
6.3.3. SR path exposure . . . . . . . . . . . . . . . . . . 23 6.3.3. SR path exposure . . . . . . . . . . . . . . . . . . 23
6.3.4. Impact of BCP-38 . . . . . . . . . . . . . . . . . . 23 6.3.4. Impact of BCP-38 . . . . . . . . . . . . . . . . . . 23
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24
7.1. Segment Routing Header Flags Register . . . . . . . . . . 24 7.1. Segment Routing Header Flags Register . . . . . . . . . . 24
7.2. Segment Routing Header TLVs Register . . . . . . . . . . 24 7.2. Segment Routing Header TLVs Register . . . . . . . . . . 24
8. Implementation Status . . . . . . . . . . . . . . . . . . . . 24 8. Implementation Status . . . . . . . . . . . . . . . . . . . . 25
8.1. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 24 8.1. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.2. Cisco Systems . . . . . . . . . . . . . . . . . . . . . . 25 8.2. Cisco Systems . . . . . . . . . . . . . . . . . . . . . . 25
8.3. FD.io . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.3. FD.io . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.4. Barefoot . . . . . . . . . . . . . . . . . . . . . . . . 25 8.4. Barefoot . . . . . . . . . . . . . . . . . . . . . . . . 25
8.5. Juniper . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.5. Juniper . . . . . . . . . . . . . . . . . . . . . . . . . 26
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 25 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 26
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 26
11.1. Normative References . . . . . . . . . . . . . . . . . . 26 11.1. Normative References . . . . . . . . . . . . . . . . . . 26
11.2. Informative References . . . . . . . . . . . . . . . . . 27 11.2. Informative References . . . . . . . . . . . . . . . . . 27
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29
1. Introduction 1. Introduction
Segment Routing can be applied to the IPv6 data plane using a new Segment Routing can be applied to the IPv6 data plane using a new
type of Routing Extension Header (SRH). This document describes the type of Routing Extension Header (SRH). This document describes the
Segment Routing Extension Header and how it is used by Segment Segment Routing Extension Header and how it is used by Segment
Routing capable nodes. Routing capable nodes.
The Segment Routing Architecture [I-D.ietf-spring-segment-routing] The Segment Routing Architecture [I-D.ietf-spring-segment-routing]
describes Segment Routing and its instantiation in two data planes describes Segment Routing and its instantiation in two data planes
skipping to change at page 4, line 5 skipping to change at page 4, line 5
SR with the MPLS data plane is defined in SR with the MPLS data plane is defined in
[I-D.ietf-spring-segment-routing-mpls]. [I-D.ietf-spring-segment-routing-mpls].
SR with the IPv6 data plane is defined in SR with the IPv6 data plane is defined in
[I-D.filsfils-spring-srv6-network-programming]. [I-D.filsfils-spring-srv6-network-programming].
The encoding of MPLS labels and label stacking are defined in The encoding of MPLS labels and label stacking are defined in
[RFC3032]. [RFC3032].
The encoding of IPv6 segments in the Segment Routing Extension header The encoding of IPv6 segments in the Segment Routing Extension Header
is defined in this document. is defined in this document.
Terminology used within this document is defined in detail in Terminology used within this document is defined in detail in
[I-D.ietf-spring-segment-routing]. Specifically, these terms: [I-D.ietf-spring-segment-routing]. Specifically, these terms:
Segment Routing, SR Domain, SRv6, Segment ID (SID), SRv6 SID, Active Segment Routing, SR Domain, SRv6, Segment ID (SID), SRv6 SID, Active
Segment, and SR Policy. Segment, and SR Policy.
2. Segment Routing Extension Header 2. Segment Routing Extension Header
Routing Headers are defined in [RFC8200]. The Segment Routing Header Routing Headers are defined in [RFC8200]. The Segment Routing Header
skipping to change at page 5, line 17 skipping to change at page 5, line 17
o Segments Left: Defined in [RFC8200] o Segments Left: Defined in [RFC8200]
o Last Entry: contains the index (zero based), in the Segment List, o Last Entry: contains the index (zero based), in the Segment List,
of the last element of the Segment List. of the last element of the Segment List.
o Flags: 8 bits of flags. Following flags are defined: o Flags: 8 bits of flags. Following flags are defined:
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| U |H| U | |U U U U U U U U|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
U: Unused and for future use. SHOULD be 0 on transmission and U: Unused and for future use. MUST be 0 on transmission and
MUST be ignored on receipt. ignored on receipt.
H-flag: HMAC flag. If set, the HMAC TLV is present and is
encoded as the last TLV of the SRH. In other words, the last
36 octets of the SRH represent the HMAC information. See
Section 2.1.2 for details on the HMAC TLV.
o Tag: tag a packet as part of a class or group of packets, e.g., o Tag: tag a packet as part of a class or group of packets, e.g.,
packets sharing the same set of properties. When tag is not used packets sharing the same set of properties. When tag is not used
at source it SHOULD be set to zero on transmission. When tag is at source it MUST be set to zero on transmission. When tag is not
not used during SRH Processing it MUST be ignored. The allocation used during SRH Processing it SHOULD be ignored. The allocation
and use of tag is outside the scope of this document. and use of tag is outside the scope of this document.
o Segment List[n]: 128 bit IPv6 addresses representing the nth o Segment List[n]: 128 bit IPv6 addresses representing the nth
segment in the Segment List. The Segment List is encoded starting segment in the Segment List. The Segment List is encoded starting
from the last segment of the SR Policy. I.e., the first element from the last segment of the SR Policy. I.e., the first element
of the segment list (Segment List [0]) contains the last segment of the segment list (Segment List [0]) contains the last segment
of the SR Policy, the second element contains the penultimate of the SR Policy, the second element contains the penultimate
segment of the SR Policy and so on. segment of the SR Policy and so on.
o Type Length Value (TLV) are described in Section 2.1. o Type Length Value (TLV) are described in Section 2.1.
skipping to change at page 6, line 20 skipping to change at page 6, line 12
Type: An 8 bit value. Unrecognized Types MUST be ignored on receipt. Type: An 8 bit value. Unrecognized Types MUST be ignored on receipt.
Length: The length of the Variable length data. It is RECOMMENDED Length: The length of the Variable length data. It is RECOMMENDED
that the total length of new TLVs be multiple of 8 bytes to avoid the that the total length of new TLVs be multiple of 8 bytes to avoid the
use of Padding TLVs. use of Padding TLVs.
Variable length data: Length bytes of data that is specific to the Variable length data: Length bytes of data that is specific to the
Type. Type.
Type Length Value (TLV) contain optional information that may be used Type Length Value (TLV) contain OPTIONAL information that may be used
by the node identified in the Destination Address (DA) of the packet. by the node identified in the Destination Address (DA) of the packet.
The information carried in the TLVs is not intended to be used by the
routing layer. Typically, TLVs carry information that is consumed by
other components (e.g.: OAM) than the routing function.
Each TLV has its own length, format and semantic. The code-point Each TLV has its own length, format and semantic. The code-point
allocated (by IANA) to each TLV Type defines both the format and the allocated (by IANA) to each TLV Type defines both the format and the
semantic of the information carried in the TLV. Multiple TLVs may be semantic of the information carried in the TLV. Multiple TLVs may be
encoded in the same SRH. encoded in the same SRH.
TLVs may change en route at each segment. To identify when a TLV TLVs may change en route at each segment. To identify when a TLV
type may change en route the most significant bit of the Type has the type may change en route the most significant bit of the Type has the
following significance: following significance:
skipping to change at page 7, line 16 skipping to change at page 7, line 5
HMAC TLV HMAC TLV
Additional TLVs may be defined in the future. Additional TLVs may be defined in the future.
2.1.1. Padding TLVs 2.1.1. Padding TLVs
There are two types of padding TLVs, pad0 and padN, the following There are two types of padding TLVs, pad0 and padN, the following
applies to both: applies to both:
Padding TLVs are optional and more than one Padding TLV MUST NOT Padding TLVs are used to pad the TLVs to a multiple of 8 octets.
appear in the SRH.
More than one Padding TLV MUST NOT appear in the SRH.
The Padding TLVs are used to align the SRH total length on the 8 The Padding TLVs are used to align the SRH total length on the 8
octet boundary. octet boundary.
When present, a single Pad0 or PadN TLV MUST appear as the last When present, a single Pad0 or PadN TLV MUST appear as the last
TLV before the HMAC TLV (if HMAC TLV is present). TLV.
When present, a PadN TLV MUST have a length from 0 to 5 in order When present, a PadN TLV MUST have a length from 0 to 5 in order
to align the SRH total length on a 8-octet boundary. to align the SRH total length on a 8-octet boundary.
Padding TLVs are ignored by a node processing the SRH TLV, even if Padding TLVs are ignored by a node processing the SRH TLV, even if
more than one is present. more than one is present.
Padding TLVs are ignored during ICV calculation. Padding TLVs are ignored during ICV calculation.
2.1.1.1. PAD0 2.1.1.1. PAD0
skipping to change at page 8, line 17 skipping to change at page 7, line 51
| Type | Length | Padding (variable) | | Type | Length | Padding (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Padding (variable) // // Padding (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: to be assigned by IANA (suggested value 129). Type: to be assigned by IANA (suggested value 129).
Length: 0 to 5 Length: 0 to 5
Padding: Length octets of padding. Padding bits have no Padding: Length octets of padding. Padding bits have no
semantics. They SHOULD be set to 0 on transmission and MUST be semantics. They MUST be set to 0 on transmission and ignored on
ignored on receipt. receipt.
The PadN TLV MUST be used when more than one byte of padding is The PadN TLV MUST be used when more than one byte of padding is
required. required.
2.1.2. HMAC TLV 2.1.2. HMAC TLV
HMAC TLV is optional and contains the HMAC information. The HMAC TLV HMAC TLV is OPTIONAL and contains the HMAC information. The HMAC TLV
has the following format: has the following format:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | RESERVED | | Type | Length | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HMAC Key ID (4 octets) | | HMAC Key ID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| // | //
| HMAC (32 octets) // | HMAC (32 octets) //
| // | //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
where: where:
o Type: to be assigned by IANA (suggested value 5). o Type: to be assigned by IANA (suggested value 5).
o Length: 38. o Length: 38.
o RESERVED: 2 octets. SHOULD be unset on transmission and MUST be o RESERVED: 2 octets. MUST be 0 on transmission and ignored on
ignored on receipt. receipt.
o HMAC Key ID: 4 octets. o HMAC Key ID: 4 octets.
o HMAC: 32 octets. o HMAC: 32 octets.
o HMAC and HMAC Key ID usage is described in Section 6 o HMAC and HMAC Key ID usage is described in Section 6
The Following applies to the HMAC TLV: The Following applies to the HMAC TLV:
o When present, the HMAC TLV MUST be encoded as the last TLV of the o Local policy determines when to check for an HMAC and potentially
SRH. a requirement on where the HMAC TLV must appear (e.g. first TLV).
This local policy is outside the scope of this document. It may
o If the HMAC TLV is present, the SRH H-Flag (Figure 2) MUST be set. be based on the active segment at an SR Segment endpoint node, the
Nodes processing SRH SHOULD process the HMAC TLV only when the result of an ACL that considers incoming interface, or other
H-Flag is set, and local policy. packet fields.
o When the H-flag is set in the SRH, the router inspecting the SRH
MUST find the HMAC TLV in the last 38 octets of the SRH.
3. SR Nodes 3. SR Nodes
There are different types of nodes that may be involved in segment There are different types of nodes that may be involved in segment
routing networks: source SR nodes originate packets with a segment in routing networks: source SR nodes originate packets with a segment in
the destination address of the IPv6 header, transit nodes that the destination address of the IPv6 header, transit nodes that
forward packets destined to a remote segment, and segment endpoint forward packets destined to a remote segment, and SR segment endpoint
nodes that process a local segment in the destination address of an nodes that process a local segment in the destination address of an
IPv6 header. IPv6 header.
3.1. Source SR Node 3.1. Source SR Node
A Source SR Node is any node that originates an IPv6 packet with a A Source SR Node is any node that originates an IPv6 packet with a
segment (i.e. SRv6 SID) in the destination address of the IPv6 segment (i.e. SRv6 SID) in the destination address of the IPv6
header. The packet leaving the source SR Node may or may not contain header. The packet leaving the source SR Node may or may not contain
an SRH. This includes either: an SRH. This includes either:
A host originating an IPv6 packet. A host originating an IPv6 packet.
An SR domain ingress router encapsulating a received packet in an An SR domain ingress router encapsulating a received packet in an
outer IPv6 header, followed by an optional SRH. outer IPv6 header, followed by an optional SRH.
The mechanism through which a segment in the destination address of The mechanism through which a segment in the destination address of
the IPv6 header and the Segment List in the SRH, is derived is the IPv6 header and the Segment List in the SRH, is derived is
outside the scope of this document. For example, the Segment List outside the scope of this document.
may be obtained through local SR Policy computation, local
configuration, interaction with a controller instantiating an SR
Policy, or any other mechanism.
3.2. Transit Node 3.2. Transit Node
A transit node is any node forwarding an IPv6 packet where the A transit node is any node forwarding an IPv6 packet where the
destination address of that packet is not locally configured as a destination address of that packet is not locally configured as a
segment nor a local interface. A transit node is not required to be segment nor a local interface. A transit node is not required to be
capable of processing a segment nor SRH. capable of processing a segment nor SRH.
3.3. SR Segment Endpoint Node 3.3. SR Segment Endpoint Node
A SR segment endpoint node is any node receiving an IPv6 packet where A SR segment endpoint node is any node receiving an IPv6 packet where
the destination address of that packet is locally configured as a the destination address of that packet is locally configured as a
segment or local interface. segment or local interface.
4. Packet Processing 4. Packet Processing
This section describes SRv6 packet processing at the Source, Transit This section describes SRv6 packet processing at the SR source,
and Segment Endpoint nodes. Transit and SR segment endpoint nodes.
4.1. Source SR Node 4.1. Source SR Node
A Source node steers a packet into an SR Policy and the SRH is A Source node steers a packet into an SR Policy. If the SR Policy
created as follows: results in a segment list containing a single segment, and there is
no need to add information to SRH flag or TLV, the DA is set to the
single segment list entry and the SRH MAY be omitted.
When needed, the SRH is created as follows:
Next Header and Hdr Ext Len fields are set as specified in Next Header and Hdr Ext Len fields are set as specified in
[RFC8200]. [RFC8200].
Routing Type field is set as TBD (to be allocated by IANA, Routing Type field is set as TBD (to be allocated by IANA,
suggested value 4). suggested value 4).
The DA of the packet is set with the value of the first segment. The DA of the packet is set with the value of the first segment.
The first element of the SRH Segment List is the ultimate segment. The first element of the SRH Segment List is the ultimate segment.
The second element is the penultimate segment and so on. The second element is the penultimate segment and so on.
The Segments Left field is set to n-1 where n is the number of The Segments Left field is set to n-1 where n is the number of
elements in the SR Policy. elements in the SR Policy.
The Last Entry field is set to n-1 where n is the number of The Last Entry field is set to n-1 where n is the number of
elements in the SR Policy. elements in the SR Policy.
HMAC TLV may be set according to Section 6. HMAC TLV may be set according to Section 6.
If the segment list contains a single segment and there is no need
for information in flag or TLV, then the SRH MAY be omitted.
The packet is forwarded toward the packet's Destination Address The packet is forwarded toward the packet's Destination Address
(the first segment). (the first segment).
4.1.1. Reduced SRH 4.1.1. Reduced SRH
When a source does not require the entire SID list to be preserved in When a source does not require the entire SID list to be preserved in
the SRH, a reduced SRH may be used. the SRH, a reduced SRH may be used.
A reduced SRH does not contain the first segment of the related SR A reduced SRH does not contain the first segment of the related SR
Policy (the first segment is the one already in the DA of the IPv6 Policy (the first segment is the one already in the DA of the IPv6
skipping to change at page 11, line 22 skipping to change at page 11, line 8
NOT inspect the underneath routing header and MUST forward the packet NOT inspect the underneath routing header and MUST forward the packet
toward the DA according to its IPv6 routing table. toward the DA according to its IPv6 routing table.
When a SID is in the destination address of an IPv6 header of a When a SID is in the destination address of an IPv6 header of a
packet, it's routed through an IPv6 network as an IPv6 address. packet, it's routed through an IPv6 network as an IPv6 address.
SIDs, or the prefix(es) covering SIDs, and their reachability may be SIDs, or the prefix(es) covering SIDs, and their reachability may be
distributed by means outside the scope of this document. For distributed by means outside the scope of this document. For
example, [RFC5308] or [RFC5340] may be used to advertise a prefix example, [RFC5308] or [RFC5340] may be used to advertise a prefix
covering the SIDs on a node. covering the SIDs on a node.
4.3. Segment Endpoint Node 4.3. SR Segment Endpoint Node
Without constraining the details of an implementation, the Segment Without constraining the details of an implementation, the SR segment
Endpoint Node creates Forwarding Information Base (FIB) entries for endpoint node creates Forwarding Information Base (FIB) entries for
its local SIDs. its local SIDs.
When an SRv6-capable node receives an IPv6 packet, it performs a When an SRv6-capable node receives an IPv6 packet, it performs a
longest-prefix-match lookup on the packets destination address. This longest-prefix-match lookup on the packets destination address. This
lookup can return any of the following: lookup can return any of the following:
A FIB entry that represents a locally instantiated SRv6 SID A FIB entry that represents a locally instantiated SRv6 SID
A FIB entry that represents a local interface, not locally A FIB entry that represents a local interface, not locally
instantiated as an SRv6 SID instantiated as an SRv6 SID
A FIB entry that represents a non-local route A FIB entry that represents a non-local route
No Match No Match
4.3.1. FIB Entry Is Locally Instantiated SRv6 END SID 4.3.1. FIB Entry Is Locally Instantiated SRv6 END SID
This document, and section, defines a single SRv6 SID called END. This document, and section, defines a single SRv6 SID called END.
Future documents may define additional SRv6 SIDs. In which case, the Future documents may define additional SRv6 SIDs. In which case, the
entire content of this section will be defined in that document. entire content of this section will be defined in that document.
If the FIB entry represents a locally instantiated SRv6 SID, process If the FIB entry represents a locally instantiated SRv6 SID, process
the next header of the IPv6 header as defined in section 4 of the next header of the IPv6 header as defined in section 4 of
[RFC8200] until the upper-layer header, or "No Next Header" is [RFC8200]
reached.
The following sections describe the actions to take while processing
next header fields.
4.3.1.1. SRH Processing
When an SRH is processed { When an SRH is processed {
If Segments Left is equal to zero { If Segments Left is equal to zero {
Skip SRH Processing Proceed to process the next header in the packet, whose type
is identified by the Next Header field in the Routing header.
} }
Else { Else {
If Segments Left is greater than (Last Entry+1) { If local policy requires TLV processing {
Perform TLV processing (see TLV Processing)
}
max_last_entry = ( Hdr Ext Len / 2 ) - 1
If ((Last Entry > max_last_entry) or
(Segments Left is greater than (Last Entry+1)) {
Send an ICMP Parameter Problem, Code 0, message to the Send an ICMP Parameter Problem, Code 0, message to the
Source Address, pointing to the Segments Left field, and Source Address, pointing to the Segments Left field, and
discard the packet. discard the packet.
} }
Else { Else {
Decrement Segments Left by 1. Decrement Segments Left by 1.
Copy Segment List[Segments Left] from the SRH to the Copy Segment List[Segments Left] from the SRH to the
destination address of the IPv6 header. destination address of the IPv6 header.
If the IPv6 Hop Limit is less than or equal to 1 { If the IPv6 Hop Limit is less than or equal to 1 {
Send an ICMP Time Exceeded -- Hop Limit Exceeded in Send an ICMP Time Exceeded -- Hop Limit Exceeded in
skipping to change at page 12, line 33 skipping to change at page 12, line 39
} }
Else { Else {
Decrement the Hop Limit by 1 Decrement the Hop Limit by 1
Resubmit the packet to the IPv6 module for transmission Resubmit the packet to the IPv6 module for transmission
to the new destination. to the new destination.
} }
} }
} }
} }
If the upper-layer header or No Next Header is reached { 4.3.1.1.1. TLV Processing
Local policy determines how TLV's are to be processed when the Active
Segment is a local END SID. The definition of local policy is
outside the scope of this document.
For illustration purpose only, two example local policies that may be
associated with an END SID are provided below.
Example 1:
For any packet received from interface I2
Skip TLV processing
Example 2:
For any packet received from interface I1
If first TLV is HMAC {
Process the HMAC TLV
}
Else {
Discard the packet
}
4.3.1.2. Upper-layer Header or No Next Header
Send an ICMP destination unreachable to Send an ICMP destination unreachable to
the Source Address and discard the packet. the Source Address and discard the packet.
}
4.3.2. FIB Entry is a Local Interface 4.3.2. FIB Entry is a Local Interface
If the FIB entry represents a local interface, not locally If the FIB entry represents a local interface, not locally
instantiated as an SRv6 SID, the SRH is processed as follows: instantiated as an SRv6 SID, the SRH is processed as follows:
If Segments Left is zero, the node must ignore the Routing header If Segments Left is zero, the node must ignore the Routing header
and proceed to process the next header in the packet, whose type and proceed to process the next header in the packet, whose type
is identified by the Next Header field in the Routing header. is identified by the Next Header field in the Routing Header.
If Segments Left is non-zero, the node must discard the packet and If Segments Left is non-zero, the node must discard the packet and
send an ICMP Parameter Problem, Code 0, message to the packet's send an ICMP Parameter Problem, Code 0, message to the packet's
Source Address, pointing to the unrecognized Routing Type. Source Address, pointing to the unrecognized Routing Type.
4.3.3. FIB Entry Is A Non-Local Route 4.3.3. FIB Entry Is A Non-Local Route
Processing is not changed by this document. Processing is not changed by this document.
4.3.4. FIB Entry Is A No Match 4.3.4. FIB Entry Is A No Match
Processing is not changed by this document. Processing is not changed by this document.
4.4. Load Balancing and ECMP 4.3.5. Load Balancing and ECMP
Within an SR domain, an SR source node encapsulates a packet in an Within an SR domain, an SR source node encapsulates a packet in an
outer IPv6 header for transport to an endpoint. The SR source node outer IPv6 header for transport to an endpoint. The SR source node
MUST impose a flow label computed based on the inner packet. The MUST impose a flow label computed based on the inner packet. The
computation of the flow label is as recommended in [RFC6438] for the computation of the flow label is as recommended in [RFC6438] for the
sending Tunnel End Point. sending Tunnel End Point.
At any transit node within an SR domain, the flow label MUST be used At any transit node within an SR domain, the flow label MUST be used
as defined in [RFC6438] to calculate the ECMP hash toward the as defined in [RFC6438] to calculate the ECMP hash toward the
destination address. If flow label is not used, the transit node may destination address. If flow label is not used, the transit node may
hash all packets between a pair of SR Edge nodes to the same link. hash all packets between a pair of SR Edge nodes to the same link.
At an SR segment endpoint node, the flow label MUST be used as At an SR segment endpoint node, the flow label MUST be used as
defined in [RFC6438] to calculate any ECMP hash used to forward the defined in [RFC6438] to calculate any ECMP hash used to forward the
processed packet to the next segment. processed packet to the next segment.
5. Illustrations 5. Illustrations
This section provides illustrations of SRv6 packet processing at This section provides illustrations of SRv6 packet processing at SR
source, transit and endpoint nodes. source, transit and SR segment endpoint nodes.
5.1. Abstract Representation of an SRH 5.1. Abstract Representation of an SRH
For a node k, its IPv6 address is represented as Ak, its SRv6 SID is For a node k, its IPv6 address is represented as Ak, its SRv6 SID is
represented as Sk. represented as Sk.
IPv6 headers are represented as the tuple of (source, destination). IPv6 headers are represented as the tuple of (source, destination).
For example, a packet with source address A1 and destination address For example, a packet with source address A1 and destination address
A2 is represented as (A1,A2). The payload of the packet is omitted. A2 is represented as (A1,A2). The payload of the packet is omitted.
skipping to change at page 16, line 4 skipping to change at page 16, line 38
a reduced SRH, Router 3 encapsulates the received packet P3 in an a reduced SRH, Router 3 encapsulates the received packet P3 in an
outer header with a reduced SRH. The packet is outer header with a reduced SRH. The packet is
P6: (A3, S7)(S4; SL=1)(A1, A2) P6: (A3, S7)(S4; SL=1)(A1, A2)
5.4. Transit Node 5.4. Transit Node
Nodes 5 acts as transit nodes for packet P1, and sends packet Nodes 5 acts as transit nodes for packet P1, and sends packet
P1: (A8,S7)(A9,S7;SL=1) P1: (A8,S7)(A9,S7;SL=1)
on the interface toward node 7. on the interface toward node 7.
5.5. SR End Node 5.5. SR Segment Endpoint Node
Node 7 receives packet P1 and, using the logic in section 4.3.1, Node 7 receives packet P1 and, using the logic in section 4.3.1,
sends packet sends packet
P7: (A8,A9)(A9,S7; SL=0) P7: (A8,A9)(A9,S7; SL=0)
on the interface toward router 6. on the interface toward router 6.
6. Security Considerations 6. Security Considerations
This section analyzes the security threat model, the security issues This section analyzes the security threat model, the security issues
and proposed solutions related to the new Segment Routing Header. and proposed solutions related to the new Segment Routing Header.
The Segment Routing Header (SRH) is simply another type of the The Segment Routing Header (SRH) is simply another type of the
routing header as described in [RFC8200] and is: Routing Header as described in [RFC8200] and is:
o Added by an SR edge router when entering the segment routing o Added by an SR edge router when entering the segment routing
domain or by the originating host itself. The source host can domain or by the originating host itself. The source host can
even be outside the SR domain; even be outside the SR domain;
o inspected and acted upon when reaching the destination address of o inspected and acted upon when reaching the destination address of
the IP header per [RFC8200]. the IP header per [RFC8200].
Per [RFC8200], routers on the path that simply forward an IPv6 packet Per [RFC8200], routers on the path that simply forward an IPv6 packet
(i.e. the IPv6 destination address is none of theirs) will never (i.e. the IPv6 destination address is none of theirs) will never
inspect and process the content of the SRH. Routers whose FIB inspect and process the content of the SRH. Routers whose FIB
contains a locally instantiated SRv6 SID equal to the destination contains a locally instantiated SRv6 SID equal to the destination
address field of the IPv6 packet MUST parse the SRH and, if supported address field of the IPv6 packet MUST parse the SRH if present, and
and if the local configuration allows it, MUST act accordingly to the if supported and if the local configuration allows it, MUST act
SRH content. accordingly to the SRH content.
As specified in [RFC8200], the default behavior of a non SR-capable As specified in [RFC8200], the default behavior of a non SR-capable
router upon receipt of an IPv6 packet with SRH destined to an address router upon receipt of an IPv6 packet with SRH destined to an address
of its, is to: of its, is to:
o ignore the SRH completely if the Segment Left field is 0 and o ignore the SRH completely if the Segment Left field is 0 and
proceed to process the next header in the IPv6 packet; proceed to process the next header in the IPv6 packet;
o discard the IPv6 packet if Segment Left field is greater than 0, o discard the IPv6 packet if Segment Left field is greater than 0,
it MAY send a Parameter Problem ICMP message back to the Source it MAY send a Parameter Problem ICMP message back to the Source
skipping to change at page 18, line 40 skipping to change at page 19, line 26
intercept packets containing SRH. On the other hand, if the attacker intercept packets containing SRH. On the other hand, if the attacker
can do a traceroute whose probes will be forwarded along the SR can do a traceroute whose probes will be forwarded along the SR
Policy, then there is little learned by intercepting the SRH itself. Policy, then there is little learned by intercepting the SRH itself.
6.1.5. ICMP Generation 6.1.5. ICMP Generation
Per Section 4.4 of [RFC8200], when destination nodes (i.e. where the Per Section 4.4 of [RFC8200], when destination nodes (i.e. where the
destination address is one of theirs) receive a Routing Header with destination address is one of theirs) receive a Routing Header with
unsupported Routing Type, the required behavior is: unsupported Routing Type, the required behavior is:
o If Segments Left is zero, the node must ignore the Routing header o If Segments Left is zero, the node must ignore the Routing Header
and proceed to process the next header in the packet. and proceed to process the next header in the packet.
o If Segments Left is non-zero, the node must discard the packet and o If Segments Left is non-zero, the node must discard the packet and
send an ICMP Parameter Problem, Code 0, message to the packet's send an ICMP Parameter Problem, Code 0, message to the packet's
Source Address, pointing to the unrecognized Routing Type. Source Address, pointing to the unrecognized Routing Type.
This required behavior could be used by an attacker to force the This required behavior could be used by an attacker to force the
generation of ICMP message by any node. The attacker could send generation of ICMP message by any node. The attacker could send
packets with SRH (with Segment Left not set to 0) destined to a node packets with SRH (with Segment Left not set to 0) destined to a node
not supporting SRH. Per [RFC8200], the destination node could not supporting SRH. Per [RFC8200], the destination node could
skipping to change at page 20, line 50 skipping to change at page 21, line 36
right-hand padded with 96 bits set to 0. The authors understand that right-hand padded with 96 bits set to 0. The authors understand that
this is not secure but is ok for limited tests. this is not secure but is ok for limited tests.
6.2.2. Performance impact of HMAC 6.2.2. Performance impact of HMAC
While adding an HMAC to each and every SR packet increases the While adding an HMAC to each and every SR packet increases the
security, it has a performance impact. Nevertheless, it must be security, it has a performance impact. Nevertheless, it must be
noted that: noted that:
o the HMAC field is used only when SRH is added by a device (such as o the HMAC field is used only when SRH is added by a device (such as
a home set-up box) which is outside of the segment routing domain. a home set-top box) which is outside of the segment routing
If the SRH is added by a router in the trusted segment routing domain. If the SRH is added by a router in the trusted segment
domain, then, there is no need for an HMAC field, hence no routing domain, then, there is no need for an HMAC field, hence no
performance impact. performance impact.
o when present, the HMAC field MUST only be checked and validated by o when present, the HMAC field need only be checked and validated by
the first router of the segment routing domain, this router is the first router of the segment routing domain, this router is
named 'validating SR router'. Downstream routers may not inspect named 'validating SR router'.
the HMAC field.
o this validating router can also have a cache of <IPv6 header + o this validating SR router can also have a cache of <IPv6 header +
SRH, HMAC field value> to improve the performance. It is not the SRH, HMAC field value> to improve the performance. It is not the
same use case as in IPsec where HMAC value was unique per packet, same use case as in IPsec where HMAC value was unique per packet,
in SRH, the HMAC value is unique per flow. in SRH, the HMAC value is unique per flow.
o Last point, hash functions such as SHA-2 have been optimized for o hash functions such as SHA-2 have been optimized for security and
security and performance and there are multiple implementations performance and there are multiple implementations with good
with good performance. performance.
With the above points in mind, the performance impact of using HMAC With the above points in mind, the performance impact of using HMAC
is minimized. is minimized.
6.2.3. Pre-shared key management 6.2.3. Pre-shared key management
The field HMAC Key-id allows for: The field HMAC Key-id allows for:
o key roll-over: when there is a need to change the key (the hash o key roll-over: when there is a need to change the key (the hash
pre-shared secret), then multiple pre-shared keys can be used pre-shared secret), then multiple pre-shared keys can be used
simultaneously. The validating routing can have a table of <HMAC simultaneously. The validating SR router can have a table of
Key-id, pre-shared secret> for the currently active and future <HMAC Key-id, pre-shared secret> for the currently active and
keys. future keys.
o different algorithms: by extending the previous table to <HMAC o different algorithms: by extending the previous table to <HMAC
Key-id, hash function, pre-shared secret>, the validating router Key-id, hash function, pre-shared secret>, the validating SR
can also support simultaneously several hash algorithms (see router can also support several hash algorithms (see section
section Section 6.2.1) Section 6.2.1)
The pre-shared secret distribution can be done: The pre-shared secret distribution can be done:
o in the configuration of the validating routers, either by static o in the configuration of the validating SR routers, either by
configuration or any SDN oriented approach; static configuration or any SDN oriented approach;
o dynamically using a trusted key distribution such as [RFC6407] o dynamically using a trusted key distribution such as [RFC6407]
The intent of this document is NOT to define yet-another-key- The intent of this document is NOT to define yet-another-key-
distribution-protocol. distribution-protocol.
6.3. Deployment Models 6.3. Deployment Models
6.3.1. Nodes within the SR domain 6.3.1. Nodes within the SR domain
An SR domain is defined as a set of interconnected routers where all SR Source Nodes within an SR Domain are trusted to generate IPv6
routers at the perimeter are configured to add and act on SRH. Some packets with SRH. SR segment endpoint nodes receiving packets on
routers inside the SR domain can also act on SRH or simply forward interface that are part of the SR Domain may process any packet
IPv6 packets. destined to a local segment, containing an SRH.
The routers inside an SR domain can be trusted to generate SRH and to
process SRH received on interfaces that are part of the SR domain.
These nodes MUST drop all SRH packets received on an interface that
is not part of the SR domain, destined to a locally instantiated SID,
and containing an SRH whose HMAC field cannot be validated by local
policies. This includes obviously packet with an SRH generated by a
non-cooperative SR domain.
If the validation fails, then these packets MUST be dropped, ICMP
error messages (parameter problem) SHOULD be generated (but rate
limited) and SHOULD be logged.
6.3.2. Nodes outside of the SR domain 6.3.2. Nodes outside of the SR domain
Nodes outside of the SR domain cannot be trusted for physical Nodes outside the SR Domain cannot be trusted. SR Domain Ingress
security; hence, they need to request by some trusted means (outside routers SHOULD discard packets destined to SIDs within the SR Domain
the scope of this document) a complete SRH for each new connection (regardless of the presence of an SRH) to avoid attacks on the SR
(i.e. new destination address). The received SRH MUST include an Domain. This is accomplished via infrastructure Access Lists (iACLs)
HMAC TLV which is computed correctly (see Section 6.2). applied on domain ingress nodes. However the SR Domain may be
extended to nodes outside of it via use of the SRH HMAC.
When an outside node sends a packet with an SRH and towards an SR Nodes outside the SR Domain may request, by some trusted means
domain ingress node, the packet MUST contain the HMAC TLV (with a outside the scope of this document, a complete SRH including an HMAC
Key-id and HMAC fields) and the the destination address MUST be an TLV which is computed correctly for the SRH (see Section 6.2).
address of an SR domain ingress node .
The ingress SR router, i.e., the router with a SID equal to the SR Domain ingress routers permit traffic destined to select SIDs with
destination address, MUST verify the HMAC TLV. local policy requiring HMAC TLV processing for those select SIDs,
i.e. these SIDs provide a gateway to the SR Domain for a set of
segment lists.
If the validation is successful, then the packet is simply forwarded If HMAC validation is successful, the packet is forwarded to the next
as usual for an SR packet. As long as the packet travels within the segment. Within the SR Domain no further HMAC check need be
SR domain, no further HMAC check needs to be done. Subsequent performed. However, other segments in the SR domain MAY verify the
routers in the SR domain MAY verify the HMAC TLV when they process HMAC TLV when the SRH is processed, dependent on local policy.
the SRH (i.e. when they are the destination).
If the validation fails, then this packet MUST be dropped, an ICMP If HMAC validation fails an ICMP error message (parameter problem)
error message (parameter problem) SHOULD be generated (but rate SHOULD be generated (but rate limited) and SHOULD be logged.
limited) and SHOULD be logged.
6.3.3. SR path exposure 6.3.3. SR path exposure
As the intermediate SR nodes addresses appears in the SRH, if this The SRH contains a Segment List. If an observer outside the SR
SRH is visible to an outsider then he/she could reuse this knowledge Domain is able to inspect the SRH, they may use the segments in the
to launch an attack on the intermediate SR nodes or get some insider Segment List to launch an attack on the SR Domain or obtain knowledge
knowledge on the topology. This is especially applicable when the of the topology within the SR Domain. When the SR Source node is
path between the source node and the first SR domain ingress router outside the SR Domain and the packet traverses the public internet to
is on the public Internet. the SR Domain ingress router it is likely that others will have
access to the Segment List in the SRH.
The first remark is to state that 'security by obscurity' is never IPSec Encapsulating Security Payload (ESP), [RFC4303], cannot be use
enough; in other words, the security policy of the SR domain MUST to protect the SRH as the ESP header must appear after the routing
assume that the internal topology and addressing is known by the header (including SRH).
attacker. A simple traceroute will also give the same information
(with even more information as all intermediate nodes between SID
will also be exposed). IPsec Encapsulating Security Payload
[RFC4303] cannot be use to protect the SRH as per RFC4303 the ESP
header must appear after any routing header (including SRH).
To prevent a user to leverage the gained knowledge by intercepting Exposure of segments and TLV content to observers outside the SR
SRH, it it recommended to apply an infrastructure Access Control List Domain should be considered in any deployment. There are two methods
(iACL) at the edge of the SR domain. This iACL will drop all packets to limit exposure, and attacks on segments within the SR Domain from
from outside the SR-domain whose destination is any address of any outside the SR Domain:
router interface or SID inside the domain. This security policy
should be tuned for local operations. Limit the number of segments and the TLV data exposed in SRH from
nodes outside the SR Domain.
Restrict which SIDs may accept traffic from outside the SR Domain
to only those enforcing HMAC verification by using iACLs (as
described in Section 6.3.2).
6.3.4. Impact of BCP-38 6.3.4. Impact of BCP-38
BCP-38 [RFC2827], also known as "Network Ingress Filtering", checks BCP-38 [RFC2827], also known as "Network Ingress Filtering", checks
whether the source address of packets received on an interface is whether the source address of packets received on an interface is
valid for this interface. The use of loose source routing such as valid for this interface. The use of loose source routing such as
SRH forces packets to follow a path which differs from the expected SRH forces packets to follow a path which differs from the expected
routing. Therefore, if BCP-38 was implemented in all routers inside routing. Therefore, if BCP-38 was implemented in all routers inside
the SR domain, then SR packets could be received by an interface the SR domain, SR packets could be received by an interface which is
which is not expected one and the packets could be dropped. not the expected one, and the packets could be dropped.
As an SR domain is usually a subset of one administrative domain, and As BCP-38 is only deployed at the ingress routers of an
as BCP-38 is only deployed at the ingress routers of this administrative domain, and as Packets arriving at those ingress
administrative domain and as packets arriving at those ingress routers have been forwarded using the routing information, then there
routers have been normally forwarded using the normal routing is no reason why this ingress router should drop the SRH packet based
information, then there is no reason why this ingress router should on BCP-38. Routers inside the domain commonly do not apply BCP-38;
drop the SRH packet based on BCP-38. Routers inside the domain so, this is not a problem.
commonly do not apply BCP-38; so, this is not a problem.
7. IANA Considerations 7. IANA Considerations
This document makes the following registrations in the Internet This document makes the following registrations in the Internet
Protocol Version 6 (IPv6) Parameters "Routing Type" registry Protocol Version 6 (IPv6) Parameters "Routing Type" registry
maintained by IANA: maintained by IANA:
Suggested Description Reference Suggested Description Reference
Value Value
---------------------------------------------------------- ----------------------------------------------------------
skipping to change at page 26, line 48 skipping to change at page 27, line 18
[RFC5095] Abley, J., Savola, P., and G. Neville-Neil, "Deprecation [RFC5095] Abley, J., Savola, P., and G. Neville-Neil, "Deprecation
of Type 0 Routing Headers in IPv6", RFC 5095, of Type 0 Routing Headers in IPv6", RFC 5095,
DOI 10.17487/RFC5095, December 2007, DOI 10.17487/RFC5095, December 2007,
<https://www.rfc-editor.org/info/rfc5095>. <https://www.rfc-editor.org/info/rfc5095>.
[RFC6407] Weis, B., Rowles, S., and T. Hardjono, "The Group Domain [RFC6407] Weis, B., Rowles, S., and T. Hardjono, "The Group Domain
of Interpretation", RFC 6407, DOI 10.17487/RFC6407, of Interpretation", RFC 6407, DOI 10.17487/RFC6407,
October 2011, <https://www.rfc-editor.org/info/rfc6407>. October 2011, <https://www.rfc-editor.org/info/rfc6407>.
[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 [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", STD 86, RFC 8200, (IPv6) Specification", STD 86, RFC 8200,
DOI 10.17487/RFC8200, July 2017, DOI 10.17487/RFC8200, July 2017,
<https://www.rfc-editor.org/info/rfc8200>. <https://www.rfc-editor.org/info/rfc8200>.
11.2. Informative References 11.2. Informative References
[I-D.filsfils-spring-srv6-interop] [I-D.filsfils-spring-srv6-interop]
Filsfils, C., Clad, F., Camarillo, P., Abdelsalam, A., Filsfils, C., Clad, F., Camarillo, P., Abdelsalam, A.,
Salsano, S., Bonaventure, O., Horn, J., and J. Liste, Salsano, S., Bonaventure, O., Horn, J., and J. Liste,
skipping to change at page 27, line 25 skipping to change at page 27, line 47
daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R., daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R.,
Matsushima, S., Lebrun, D., Decraene, B., Peirens, B., Matsushima, S., Lebrun, D., Decraene, B., Peirens, B.,
Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P., and Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P., and
M. Sharif, "SRv6 Network Programming", draft-filsfils- M. Sharif, "SRv6 Network Programming", draft-filsfils-
spring-srv6-network-programming-04 (work in progress), spring-srv6-network-programming-04 (work in progress),
March 2018. March 2018.
[I-D.ietf-spring-segment-routing-mpls] [I-D.ietf-spring-segment-routing-mpls]
Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., Bashandy, A., Filsfils, C., Previdi, S., Decraene, B.,
Litkowski, S., and R. Shakir, "Segment Routing with MPLS Litkowski, S., and R. Shakir, "Segment Routing with MPLS
data plane", draft-ietf-spring-segment-routing-mpls-13 data plane", draft-ietf-spring-segment-routing-mpls-14
(work in progress), April 2018. (work in progress), June 2018.
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
Hashing for Message Authentication", RFC 2104, Hashing for Message Authentication", RFC 2104,
DOI 10.17487/RFC2104, February 1997, DOI 10.17487/RFC2104, February 1997,
<https://www.rfc-editor.org/info/rfc2104>. <https://www.rfc-editor.org/info/rfc2104>.
[RFC2827] Ferguson, P. and D. Senie, "Network Ingress Filtering: [RFC2827] Ferguson, P. and D. Senie, "Network Ingress Filtering:
Defeating Denial of Service Attacks which employ IP Source Defeating Denial of Service Attacks which employ IP Source
Address Spoofing", BCP 38, RFC 2827, DOI 10.17487/RFC2827, Address Spoofing", BCP 38, RFC 2827, DOI 10.17487/RFC2827,
May 2000, <https://www.rfc-editor.org/info/rfc2827>. May 2000, <https://www.rfc-editor.org/info/rfc2827>.
skipping to change at page 28, line 31 skipping to change at page 29, line 7
DOI 10.17487/RFC6554, March 2012, DOI 10.17487/RFC6554, March 2012,
<https://www.rfc-editor.org/info/rfc6554>. <https://www.rfc-editor.org/info/rfc6554>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26, Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017, RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>. <https://www.rfc-editor.org/info/rfc8126>.
Authors' Addresses Authors' Addresses
Stefano Previdi
Individual
Italy
Email: stefano@previdi.net
Clarence Filsfils (editor) Clarence Filsfils (editor)
Cisco Systems, Inc. Cisco Systems, Inc.
Brussels Brussels
BE BE
Email: cfilsfil@cisco.com Email: cfilsfil@cisco.com
Stefano Previdi
Individual
Italy
Email: stefano@previdi.net
John Leddy John Leddy
Comcast Comcast
4100 East Dry Creek Road 4100 East Dry Creek Road
Centennial, CO 80122 Centennial, CO 80122
US US
Email: John_Leddy@comcast.com Email: John_Leddy@comcast.com
Satoru Matsushima Satoru Matsushima
Softbank Softbank
Email: satoru.matsushima@g.softbank.co.jp Email: satoru.matsushima@g.softbank.co.jp
Daniel Voyer (editor) Daniel Voyer (editor)
Bell Canada Bell Canada
Email: daniel.voyer@bell.ca Email: daniel.voyer@bell.ca
 End of changes. 74 change blocks. 
190 lines changed or deleted 205 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/