Internet DRAFT - draft-herbert-simple-sr
draft-herbert-simple-sr
INTERNET-DRAFT T. Herbert
Intended Status: Standard Quantonium
Expires: September 2019
March 11, 2019
Simple Segment Routing Header
draft-herbert-simple-sr-00
Abstract
This specification defines a simple extension header format for
Segment Routing based on the current definition of the Segment
Routing extension header defined for IPv6. A Segment Identifier type
field is added so that the segment list might contain values other
than IPv6 addresses. Optional TLVs in the segment routing header are
eliminated; Destination options that precede the routing header are
sufficient. Two new destination options are defined: one for Routing
header security and another to specify that certain destinations
should process certain options.
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
Copyright and License Notice
Copyright (c) 2019 IETF Trust and the persons identified as the
T. Herbert Expires September 12, 2019 [Page 1]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://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 Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Simple segment routing header format . . . . . . . . . . . . . 4
2.1 SType values . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Routing header security option . . . . . . . . . . . . . . . . 5
3.1 HMAC Routing header security . . . . . . . . . . . . . . . . 7
3.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.1 Sender operation . . . . . . . . . . . . . . . . . . . . 7
3.2.2 Receiver operation . . . . . . . . . . . . . . . . . . . 7
4 Process per segment Destination Option . . . . . . . . . . . . 8
4.1 Sender operation . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Receiver operation . . . . . . . . . . . . . . . . . . . . . 9
5 Security Considerations . . . . . . . . . . . . . . . . . . . . 10
6 IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 10
7 References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.1 Normative References . . . . . . . . . . . . . . . . . . . 10
7.2 Informative References . . . . . . . . . . . . . . . . . . 10
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 10
T. Herbert Expires September 12, 2019 [Page 2]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
1 Introduction
This specification defines a simplified segment routing header and
generalizes some aspects of segment routing to be applicable to other
types of routing headers. The segment routing header is defined in
[SRHV6].
The following modifications and additions are defined:
* A Segment Identifier type field in the Segment routing header.
This field indicates the type of elements in the segment routing
list and also indicates the length of each element. Segment
Identifier types are defined for IPv6 and IPv4 addresses, as
well as types for indices into tables that would map a Segment
Identifier to an address. The concept of types for Segment
Identifier is a generalization of Segment Routing header
compression defined in [SRCOMP].
* Eliminate options (TLVs) from Segment Routing header.
Options pertaining to Segment Routing, or more generally any
type of Routing header, may be set in Destination Options that
precede the Routing header.
* Routing header security Destination option.
This option provides an extensible method for verifying security
of a routing header. An HMAC option is defined that provides the
same functionality as the HMAC TLV defined in [SRV6EH] (except
that it is generic to work with all types of Routing headers).
* Process per segment Destination option.
The purpose of this option is to allow a node to indicate that
certain Destination options are to be processed only by certain
nodes in the Segment List. This is a generalization of the
option described in [SRENDOPT].
T. Herbert Expires September 12, 2019 [Page 3]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
2 Simple segment routing header format
The format of the simple segment routing header is shown below.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type | Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Last Entry | SType | Flags | Tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Segment List[0] (length per Stype) ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| |
...
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Segment List[n] (length per SType) ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The format is based on that described in [SRV6EH]. Modified or added
fields are:
o SType: Type of segment identifiers. Possible values are listed
below.
o Segment List[]. Each element of the segment list contains a
segment identifier with the type indicated by SType. The length
of each identifier is implied by the SType.
Note that the optional TLVs section is not present in the simplified
format. The rest of the fields in the format retain the same meaning
an format as described in [SRV6EH].
2.1 SType values
The following are the SType values:
o 0: IPv6 address, 128 bit value
o 1: IPv6 identifier, 64 bit value
T. Herbert Expires September 12, 2019 [Page 4]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
o 2: IPv6 locator, 64 bit value
o 3: IPv4 address, 32 bit value
o 4: 8 bit map value
o 5: 16 bit map value
o 6: 32 bit map value
o 7: 64 bit map value
Values 8 to 13 are reserved. Values 14 and 15 are experimental and
may be specified locally in a segment routing domain.
The IPv6 identifier provides the low order 64 bits of IPv6 address.
The high order 64 bit prefix is assumed to be common for all
destinations. A fully qualified IPv6 address is created by combing
the upper 64 bit prefix in the destination address of the packet with
the identifier value as the low order 64 bits. The identifier type
can be considered of form of compressing IPv6 addresses in segment
identifiers when all the segment identifiers share the same prefix
(.e.g a sixty-four bit prefix is common for all addresses in a
segment routing domain.
The IPv6 locator provides the high order 64 bits of IPv6 address. The
low order 64 bits are assumed to be common for all destinations in a
segment routing list. The use case for this would be
Identifier/Locator protocols such as ILA or ILNP. A fully qualified
address is created by combining the 64 bit prefix in the destination
address of the packet with the identifier value as the low order 64
bits. The locatorr type can be considered of form of compressing IPv6
addresses in segment identifiers when all the segment identifiers
share the same low order sixty-four bits.
Map values are mapped by receivers to fully qualified segment
identifiers. A common use of this would be from receivers to maintain
tables that map small segment identifiers to larger addresses. The
table is specific within a segment routing domain must be managed
accordingly. Using map values can be considerable savings in packet
overhead when segment routing is used, particularly when a segment
routing list would carry multiple IPv6 addresses.
3 Routing header security option
The routing header security options is a Destination Option that
provides security for a following routing header.
T. Herbert Expires September 12, 2019 [Page 5]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
The format of the option is:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Sub-type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Sub-type specific data ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Fields are:
o Type: Destination Option type for Routing Header security. This
is a non-modifiable option and must not be ignored. Accordingly,
the high order type bits are 010 to reflect that.
o Length: Variable length of option data.
o Sub-type: Security method used. This specification defines one
method of HMAC. See below.
o Reserved: MUST be set to zero when sending.
o Sub-type specific data: Data that is specific to the sub-type.
The sub-type specific data for HMAC is described below.
T. Herbert Expires September 12, 2019 [Page 6]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
3.1 HMAC Routing header security
HMAC Routing header security is a sub-type of routing header
security. The format of the sub-type specific data is:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HMAC Key ID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| //
| HMAC (32 octets) //
| //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
where:
o HMAC Key ID: 4 octets.
o HMAC: 32 octets.
The operation of the HMAC with respect routing header is specified in
[SRV6EH].
3.2 Operation
The section describes the use and processing of the routing header
security Destination Option.
3.2.1 Sender operation
A sender may set a routing header security option in Destination
Options that precede a Routing Header.
A sender SHOULD follow the recommended ordering in RFC8200 that a
routing header immediately follows Destination Options that precede
the routing header. As described below, if destination options
immediately precede a routing header, a receive may apply the
security option to the routing header while processing the security
option as an optimization. To enable this, a sender MUST ensure that
the Routing header immediately follows the Destination Options, and
the routing header security option MUST be the last option in the
Destination Options.
3.2.2 Receiver operation
The security option MUST be processed by the last node in the routing
header list of nodes to visit, and MAY be processed by intermediate
T. Herbert Expires September 12, 2019 [Page 7]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
destinations. If a node does not process the option it MUST skip the
option and proceed to the next option.
As demonstrated in the HMAC description, the routing header security
option may be applied to fields in the routing header. Per [RFC8200],
extension headers cannot be processed out of order so care must be
taken to ensure processing order semantics are maintained. This
specification presents two alternative methods that should yield the
same effect.
When a node processes a routing header security option in Destination
Options, it can record the option data and make a note that the
security is to be applied to the routing header. Subsequently, when
the routing header is processed, the node can perform security
verification as the first step in processing the routing header.
An alternative is for a node to perform the security verification
when processing the security option in the Destination Options. A
receiver MUST only do this if the Routing header immediately follows
the Destination Options header and the routing header security option
is the last Destination option.
4 Process per segment Destination Option
A sender MAY indicate that certain destination options preceding a
Routing header are applicable to certain segments. A new option is
defined for this functionality. This option SHOULD only be used if
Destination Options immediately precedes a Routing header.
The format of the option is:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Bit map ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Type: Destination Option type for the process per segment
Destination Options. This is a non-modifiable option and must
not be ignored. Accordingly, the high order type bits are 010 to
reflect that.
o Length: Variable length of the bit map in octets.
o Bit map: A variable length bit map that describes which nodes
are to process the option.
A position in the bit map corresponds to a Segments Left value in the
T. Herbert Expires September 12, 2019 [Page 8]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
Routing header. For instance, if bit 3 in the bit map is set, then
the option is processed by the node when Segments Left is 3. A bit
map can indicate that multiple nodes are to process the options. Bits
beyond the length of the bit map are assumed be zero.
If the length of the bit map is zero (i.e. length of the option data
is zero) then any following options are MUST be processed by all
intermediate nodes.
4.1 Sender operation
A sender MAY set the process per segment Destination Option. The
Destination Options SHOULD immediately precede a Routing Header. The
sender MAY indicate in the bit map that multiple intermediate
destinations must process the options that following the process per
segment option. Any Destination options MAY follow the process per
segment option. A sender MAY direct options at different sets of
intermediate destination by setting the per segment Destination
option for each set. Options that precede a per segment Destination
option are expected to be processed normally by each destination.
4.2 Receiver operation
When a node receives a process per segment Destination option it
performs the following processing:
1) Check if the Next Header in the Destination Options header
indicates a routing header (i.e. Next Header is equal to 43).
If the next header is not a Routing header then processing the
Destination Options is complete. Any following options are
ignored.
2) Extract the Segments Left value from the Routing header
immediately following the Destination Options header.
3) Determine the value in the bit map of the process per Segment
option corresponding to the Segments Left value.
- If the bit map value is set (bit is one) then process any
following options to the end of the options list or another
process per Segment option encountered.
- If the bit map value is unset (bit is zero) then skip any
following options to the end of the options list or another
process per Segment option encountered.
4) If another process per Segment option is encountered process it
starting from step #3 above
T. Herbert Expires September 12, 2019 [Page 9]
INTERNET DRAFT draft-herbert-simple-sr-00 March 11, 2019
5 Security Considerations
This document defines new Destination option that is use to provide
security for a routing header.
6 IANA Considerations
IANA is requested to assign two Destination options types.
IANA is requested to create a sub-type registry for the routing
header security Destination Option.
7 References
7.1 Normative References
7.2 Informative References
[SRV6EH] Filsfils, C., Previdi, S., Leddy, J., Matsushima, S., and
d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header
(SRH)", draft-ietf-6man-segment-routing-header-16.
[SRCOMP] Bonica, R., Xu, X., Chen, G., Zhu, Y., and Yang, G., "The
IPv6 Compressed Routing Header (CRH)", draft-bonica-6man-
comp-rtg-hdr-01.
[SRENDOPT] Bonica, R., Xu, X., Chen, G., Zhu, Y., and Yang, G., "The
IPv6 Segment Endpoint Option", draft-bonica-6man-seg-end-
opt-02
Author's Address
Tom Herbert
Quantonium
Santa Clara, CA
USA
Email: tom@quantonium.net
T. Herbert Expires September 12, 2019 [Page 10]