rfc9263.original | rfc9263.txt | |||
---|---|---|---|---|
Service Function Chaining Working Group Yuehua. Wei, Ed. | Internet Engineering Task Force (IETF) Y. Wei, Ed. | |||
Internet-Draft ZTE Corporation | Request for Comments: 9263 ZTE Corporation | |||
Intended status: Standards Track U. Elzur | Category: Standards Track U. Elzur | |||
Expires: 22 October 2022 Intel | ISSN: 2070-1721 Intel | |||
S. Majee | S. Majee | |||
Individual contributor | Individual Contributor | |||
C. Pignataro | C. Pignataro | |||
Cisco | Cisco | |||
D. Eastlake | D. Eastlake 3rd | |||
Futurewei Technologies | Futurewei Technologies | |||
20 April 2022 | August 2022 | |||
Network Service Header (NSH) Metadata Type 2 Variable-Length Context | Network Service Header (NSH) Metadata Type 2 Variable-Length Context | |||
Headers | Headers | |||
draft-ietf-sfc-nsh-tlv-15 | ||||
Abstract | Abstract | |||
Service Function Chaining (SFC) uses the Network Service Header (NSH) | Service Function Chaining (SFC) uses the Network Service Header (NSH) | |||
(RFC 8300) to steer and provide context Metadata (MD) with each | (RFC 8300) to steer and provide context metadata (MD) with each | |||
packet. Such Metadata can be of various Types including MD Type 2 | packet. Such metadata can be of various types, including MD Type 2, | |||
consisting of variable length context headers. This document | consisting of Variable-Length Context Headers. This document | |||
specifies several such context headers that can be used within a | specifies several such Context Headers that can be used within a | |||
service function path. | Service Function Path (SFP). | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 22 October 2022. | 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/rfc9263. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Conventions used in this document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Terminology | |||
2.2. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 2.2. Requirements Language | |||
3. NSH MD Type 2 format . . . . . . . . . . . . . . . . . . . . 3 | 3. NSH MD Type 2 Format | |||
4. NSH MD Type 2 Context Headers . . . . . . . . . . . . . . . . 4 | 4. NSH MD Type 2 Context Headers | |||
4.1. Forwarding Context . . . . . . . . . . . . . . . . . . . 4 | 4.1. Forwarding Context | |||
4.2. Tenant Identifier . . . . . . . . . . . . . . . . . . . . 6 | 4.2. Tenant ID | |||
4.3. Ingress Network Node Information . . . . . . . . . . . . 7 | 4.3. Ingress Network Node Information | |||
4.4. Ingress Network Source Interface . . . . . . . . . . . . 8 | 4.4. Ingress Network Source Interface | |||
4.5. Flow ID . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.5. Flow ID | |||
4.6. Source and/or Destination Groups . . . . . . . . . . . . 9 | 4.6. Source and/or Destination Groups | |||
4.7. Policy Identifier . . . . . . . . . . . . . . . . . . . . 10 | 4.7. Policy ID | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 5. Security Considerations | |||
5.1. Forwarding Context . . . . . . . . . . . . . . . . . . . 11 | 5.1. Forwarding Context | |||
5.2. Tenant Identifier . . . . . . . . . . . . . . . . . . . . 12 | 5.2. Tenant ID | |||
5.3. Ingress Network Node Information . . . . . . . . . . . . 12 | 5.3. Ingress Network Node Information | |||
5.4. Ingress Node Source Interface . . . . . . . . . . . . . . 12 | 5.4. Ingress Node Source Interface | |||
5.5. Flow ID . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 5.5. Flow ID | |||
5.6. Source and/or Destination Groups . . . . . . . . . . . . 13 | 5.6. Source and/or Destination Groups | |||
5.7. Policy Identifier . . . . . . . . . . . . . . . . . . . . 13 | 5.7. Policy ID | |||
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 | 6. IANA Considerations | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 6.1. MD Type 2 Context Types | |||
7.1. MD Type 2 Context Types . . . . . . . . . . . . . . . . . 13 | 6.2. Forwarding Context Types | |||
7.2. Forwarding Context Types . . . . . . . . . . . . . . . . 14 | 6.3. Flow ID Context Types | |||
7.3. Flow ID Context Types . . . . . . . . . . . . . . . . . . 15 | 7. References | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.1. Normative References | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 15 | 7.2. Informative References | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 16 | Acknowledgments | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The Network Service Header (NSH) [RFC8300] is the Service Function | The Network Service Header (NSH) [RFC8300] is the Service Function | |||
Chaining (SFC) encapsulation that supports the SFC architecture | Chaining (SFC) encapsulation that supports the SFC architecture | |||
[RFC7665]. As such, the NSH provides following key elements: | [RFC7665]. As such, the NSH provides the following key elements: | |||
1. Service Function Path (SFP) identification. | 1. Service Function Path (SFP) identification | |||
2. Indication of location within a Service Function Path. | 2. indication of location within an SFP | |||
3. Optional, per-packet metadata (fixed-length or variable-length). | 3. optional, per-packet metadata (fixed-length or variable-length) | |||
[RFC8300] further defines two metadata formats (MD Types): 1 and 2. | [RFC8300] further defines two metadata formats (MD Types): 1 and 2. | |||
MD Type 1 defines the fixed-length, 16-octet long metadata, whereas | MD Type 1 defines the fixed-length, 16-octet metadata, whereas MD | |||
MD Type 2 defines a variable-length context format for metadata. | Type 2 defines a variable-length context format for metadata. This | |||
This document defines several common metadata context headers for use | document defines several common metadata Context Headers for use | |||
within NSH MD Type 2. These supplement the Subscriber Identity and | within NSH MD Type 2. These supplement the Subscriber Identifier and | |||
Performance Policy MD Type 2 metadata context headers specified in | Performance Policy MD Type 2 metadata Context Headers specified in | |||
[RFC8979]. | [RFC8979]. | |||
This document does not address metadata usage, updating/chaining of | This document does not address metadata usage, updating/chaining of | |||
metadata, or other SFP functions. Those topics are described in | metadata, or other SFP functions. Those topics are described in | |||
[RFC8300]. | [RFC8300]. | |||
2. Conventions used in this document | 2. Conventions Used in This Document | |||
2.1. Terminology | 2.1. Terminology | |||
This document uses the terminology defined in the SFC Architecture | This document uses the terminology defined in the SFC architecture | |||
[RFC7665] and the Network Service Header [RFC8300]. | [RFC7665] and the NSH [RFC8300]. | |||
2.2. Requirements Language | 2.2. 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", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. NSH MD Type 2 format | 3. NSH MD Type 2 Format | |||
An NSH is composed of a 4-octet Base Header, a 4-octet Service Path | An NSH is composed of a 4-octet Base Header, a 4-octet Service Path | |||
Header and optional Context Headers. The Base Header identifies the | Header, and optional Context Headers. The Base Header identifies the | |||
MD-Type in use: | MD Type in use: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|Ver|O|U| TTL | Length |U|U|U|U|MD Type| Next Protocol | | |Ver|O|U| TTL | Length |U|U|U|U|MD Type| Next Protocol | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1: NSH Base Header | Figure 1: NSH Base Header | |||
Please refer to NSH [RFC8300] for a detailed header description. | Please refer to the NSH [RFC8300] for a detailed header description. | |||
When the base header specifies MD Type = 0x2, zero or more Variable | When the Base Header specifies MD Type = 0x2, zero or more Variable- | |||
Length Context Headers MAY be added, immediately following the | Length Context Headers MAY be added, immediately following the | |||
Service Path Header. Figure 2 below depicts the format of the | Service Path Header. Figure 2 below depicts the format of the | |||
Context Header as defined in Section 2.5.1 of [RFC8300]. | Context Header as defined in Section 2.5.1 of [RFC8300]. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class | Type |U| Length | | | Metadata Class | Type |U| Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Variable-Length Metadata | | | Variable-Length Metadata | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: NSH Variable-Length Context Headers | Figure 2: NSH Variable-Length Context Headers | |||
4. NSH MD Type 2 Context Headers | 4. NSH MD Type 2 Context Headers | |||
[RFC8300] specifies Metadata Class 0x0000 as IETF Base NSH MD Class. | [RFC8300] specifies Metadata Class 0x0000 as IETF Base NSH MD Class. | |||
In this document, metadata types are defined for the IETF Base NSH MD | In this document, metadata types are defined for the IETF Base NSH MD | |||
Class. The Context Headers specified in the subsections below are as | Class. The Context Headers specified in the subsections below are as | |||
follows: | follows: | |||
1. Forwarding Context | 1. Forwarding Context | |||
2. Tenant Identifier | 2. Tenant ID | |||
3. Ingress Network Node Information | 3. Ingress Network Node Information | |||
4. Ingress Node Source Interface | 4. Ingress Node Source Interface | |||
5. Flow ID | 5. Flow ID | |||
6. Source and/or Destination Groups | 6. Source and/or Destination Groups | |||
7. Policy Identifier | 7. Policy ID | |||
4.1. Forwarding Context | 4.1. Forwarding Context | |||
This metadata context carries a network forwarding context, used for | This metadata context carries a network forwarding context, used for | |||
segregation and forwarding scope. Forwarding context can take | segregation and forwarding scope. Forwarding context can take | |||
several forms depending on the network environment. For example, | several forms depending on the network environment, for example, | |||
VXLAN/VXLAN-GPE VNID, VRF identification, or VLAN. | Virtual eXtensible Local Area Network (VXLAN) / Generic Protocol | |||
Extension for VXLAN (VXLAN-GPE) Virtual Network Identifier (VNID), | ||||
VPN Routing and Forwarding (VRF) identification, or VLAN. | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA1 |U| Length = 4 | | | Metadata Class = 0x0000 | Type = 0x04 |U| Length = 4 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|CT=0x0 | Reserved | VLAN ID | | |CT=0x0 | Reserved | VLAN ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 3: VLAN Forwarding Context | Figure 3: VLAN Forwarding Context | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA1 |U| Length = 4 | | | Metadata Class = 0x0000 | Type = 0x04 |U| Length = 4 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|CT=0x1 |Resv | Service VLAN ID | Customer VLAN ID | | |CT=0x1 |Resv | Service VLAN ID | Customer VLAN ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 4: QinQ Forwarding Context | Figure 4: QinQ Forwarding Context | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA1 |U| Length = 4 | | | Metadata Class = 0x0000 | Type = 0x04 |U| Length = 4 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|CT=0x2 | Reserved | MPLS VPN Label | | |CT=0x2 | Reserved | MPLS VPN Label | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 5: MPLS VPN Forwarding Context | Figure 5: MPLS VPN Forwarding Context | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA1 |U| Length = 4 | | | Metadata Class = 0x0000 | Type = 0x04 |U| Length = 4 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|CT=0x3 | Resv | Virtual Network Identifier | | |CT=0x3 | Resv | Virtual Network Identifier | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 6: VNI Forwarding Context | Figure 6: VNI Forwarding Context | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA1 |U| Length = 8 | | | Metadata Class = 0x0000 | Type = 0x04 |U| Length = 8 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|CT=0x4 | Reserved | | |CT=0x4 | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Session ID | | | Session ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 7: Session ID Forwarding Context | Figure 7: Session ID Forwarding Context | |||
where: | The fields are described as follows: | |||
Context Type (CT) is four bits-long field that defines the | Context Type (CT): This 4-bit field that defines the interpretation | |||
interpretation of the Forwarding Context field. Please see the | of the Forwarding Context field. Please see the IANA | |||
IANA Considerations in Section 7.2. This document defines these | considerations in Section 6.2. This document defines these CT | |||
CT values: | values: | |||
- 0x0 - 12 bits VLAN identifier [IEEE.802.1Q_2018]. See | 0x0: 12-bit VLAN identifier [IEEE.802.1Q_2018]. See Figure 3. | |||
Figure 3. | ||||
- 0x1 - 24 bits double tagging identifiers. A service VLAN tag | 0x1: 24-bit double tagging identifiers. A service VLAN tag | |||
followed by a customer VLAN tag [IEEE.802.1Q_2018]. The two | followed by a customer VLAN tag [IEEE.802.1Q_2018]. The two | |||
VLAN IDs are concatenated and appear in the same order that | VLAN IDs are concatenated and appear in the same order that | |||
they appeared in the payload. See Figure 4. | they appeared in the payload. See Figure 4. | |||
- 0x2 - 20 bits MPLS VPN label([RFC3032])([RFC4364]). See | 0x2: 20-bit MPLS VPN label [RFC3032] [RFC4364]. See Figure 5. | |||
Figure 5. | ||||
- 0x3 - 24 bits virtual network identifier (VNI)[RFC8926]. See | 0x3: 24-bit virtual network identifier (VNI) [RFC8926]. See | |||
Figure 6. | Figure 6. | |||
- 0x4 - 32 bits Session ID ([RFC3931]). This is called Key in | 0x4: 32-bit Session ID [RFC3931]. This is called Key in GRE | |||
GRE [RFC2890]. See Figure 7. | [RFC2890]. See Figure 7. | |||
Reserved (Resv) bits in the context fields MUST be sent as zero | Reserved (Resv): These bits in the context fields MUST be sent as | |||
and ignored on receipt. | zero and ignored on receipt. | |||
4.2. Tenant Identifier | 4.2. Tenant ID | |||
Tenant identification is often used for segregation within a multi- | Tenant identification is often used for segregation within a multi- | |||
tenant environment. Orchestration system-generated tenant IDs are an | tenant environment. Orchestration system-generated Tenant IDs are an | |||
example of such data. This context header carries the value of the | example of such data. This Context Header carries the value of the | |||
Tenant identifier. [OpenDaylight-VTN] Virtual Tenant Network (VTN) | Tenant ID. Virtual Tenant Network (VTN) [OpenDaylight-VTN] is an | |||
is an application that provides multi-tenant virtual network on an | application that provides multi-tenant virtual networks on a | |||
SDN controller. | Software-Defined Networking (SDN) controller. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA2 |U| Length | | | Metadata Class = 0x0000 | Type = 0x05 |U| Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ Tenant ID ~ | ~ Tenant ID ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 8: Tenant Identifier List | Figure 8: Tenant ID List | |||
The fields are described as follows: | The fields are described as follows: | |||
Length: Indicates the length of the Tenant ID in octets (see | Length: Indicates the length of the Tenant ID in octets (see | |||
Section 2.5.1 of [RFC8300]). | Section 2.5.1 of [RFC8300]). | |||
Tenant ID: Represents an opaque value pointing to Orchestration | Tenant ID: Represents an opaque value pointing to orchestration | |||
system-generated tenant identifier. The structure and semantics | system-generated Tenant ID. The structure and semantics of this | |||
of this field are specific to the operator's deployment across its | field are specific to the operator's deployment across its | |||
operational domain, and are specified and assigned by an | operational domain and are specified and assigned by an | |||
orchestration function. The specifics of that orchestration-based | orchestration function. The specifics of that orchestration-based | |||
assignment are outside the scope of this document. | assignment are outside the scope of this document. | |||
4.3. Ingress Network Node Information | 4.3. Ingress Network Node Information | |||
This context header carries a Node ID of the network node at which | This Context Header carries a Node ID of the network node at which | |||
the packet entered the SFC-enabled domain. This node will | the packet entered the SFC-enabled domain. This node will | |||
necessarily be a Classifier [RFC7665]. In cases where the SPI | necessarily be a classifier [RFC7665]. In cases where the Service | |||
identifies the ingress node, this context header is superfluous. | Path Identifier (SPI) identifies the ingress node, this Context | |||
Header is superfluous. | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA3 |U| Length | | | Metadata Class = 0x0000 | Type = 0x06 |U| Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ Node ID ~ | ~ Node ID ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 9: Ingress Network Node ID | Figure 9: Ingress Network Node ID | |||
The fields are described as follows: | The fields are described as follows: | |||
Length: Indicates the length of the Node ID in octets (see | Length: Indicates the length of the Node ID in octets (see | |||
Section 2.5.1 of [RFC8300]). | Section 2.5.1 of [RFC8300]). | |||
Node ID: Represents an opaque value of the ingress network node | Node ID: Represents an opaque value of the ingress network Node ID. | |||
ID. The structure and semantics of this field are deployment | The structure and semantics of this field are deployment specific. | |||
specific. For example, Node ID may be a 4 octets IPv4 address | For example, Node ID may be a 4-octet IPv4 address Node ID, a | |||
Node ID, or a 16 octets IPv6 address Node ID, or a 6 octets MAC | 16-octet IPv6 address Node ID, a 6-octet MAC address, an 8-octet | |||
address, or 8 octets MAC address (EUI-64), etc. | MAC address (64-bit Extended Unique Identifier (EUI-64)), etc. | |||
4.4. Ingress Network Source Interface | 4.4. Ingress Network Source Interface | |||
This context identifies the ingress interface of the ingress network | This context identifies the ingress interface of the ingress network | |||
node. The l2vlan (135), l3ipvlan (136), ipForward (142), mpls (166) | node. The l2vlan (135), l3ipvlan (136), ipForward (142), and mpls | |||
in [IANAifType] are examples of source interfaces. | (166) in [IANAifType] are examples of source interfaces. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA4 |U| Length | | | Metadata Class = 0x0000 | Type = 0x07 |U| Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ Source Interface ~ | ~ Source Interface ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 10: Ingress Network Source Interface | Figure 10: Ingress Network Source Interface | |||
The fields are described as follows: | The fields are described as follows: | |||
Length: Indicates the length of the Source Interface in octets | Length: Indicates the length of the Source Interface in octets (see | |||
(see Section 2.5.1 of [RFC8300]). | Section 2.5.1 of [RFC8300]). | |||
Source Interface: Represents an opaque value of identifier of the | Source Interface: Represents an opaque value of the identifier of | |||
ingress interface of the ingress network node. | the ingress interface of the ingress network node. | |||
4.5. Flow ID | 4.5. Flow ID | |||
Flow ID provides a field in the NSH MD Type 2 to label packets | Flow ID provides a field in NSH MD Type 2 to label packets belonging | |||
belonging to the same flow. For example, [RFC8200] defined IPv6 Flow | to the same flow. For example, [RFC8200] defines IPv6 Flow Label as | |||
Label as Flow ID, [RFC6790] defined an entropy label which is | Flow ID. Another example of Flow ID is how [RFC6790] defines an | |||
generated based on flow information in the MPLS network is another | entropy label that is generated based on flow information in the MPLS | |||
example of Flow ID. Absence of this field, or a value of zero | network. Absence of this field or a value of zero denotes that | |||
denotes that packets have not been labeled with a Flow ID. | packets have not been labeled with a Flow ID. | |||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Metadata Class = 0x0000 | Type = 0x08 |U| Length = 4 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|CT=0x0 | Reserved | IPv6 Flow ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Metadata Class = 0x0000 | Type = TBA5 |U| Length = 4 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|CT=0x0 | Reserved | IPv6 Flow ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 11: IPv6 Flow ID | Figure 11: IPv6 Flow ID | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA5 |U| Length = 4 | | | Metadata Class = 0x0000 | Type = 0x08 |U| Length = 4 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|CT=0x1 | Reserved | MPLS entropy label | | |CT=0x1 | Reserved | MPLS entropy label | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 12: MPLS entropy label | Figure 12: MPLS Entropy Label | |||
The fields are described as follows: | The fields are described as follows: | |||
Length: Indicates the length of the Flow ID in octets (see | Length: Indicates the length of the Flow ID in octets (see | |||
Section 2.5.1 of [RFC8300]). For example, IPv6 Flow Label in | Section 2.5.1 of [RFC8300]). For example, the IPv6 Flow Label in | |||
[RFC8200] is 20-bit long. An entropy label in the MPLS network in | [RFC8200] is 20 bits long. An entropy label in the MPLS network | |||
[RFC6790] is also 20-bit long. | in [RFC6790] is also 20 bits long. | |||
Context Type (CT) is four bits-long field that defines the | Context Type (CT): This 4-bit field that defines the interpretation | |||
interpretation of the Flow ID field. Please see the IANA | of the Flow ID field. Please see the IANA considerations in | |||
Considerations in Section 7.3. This document defines these CT | Section 6.3. This document defines these CT values: | |||
values: | ||||
- 0x0 - 20 bits IPv6 Flow Label in [RFC8200]. See Figure 11. | 0x0: 20-bit IPv6 Flow Label in [RFC8200]. See Figure 11. | |||
- 0x1 - 20 bits entropy label in the MPLS network in [RFC6790]. | 0x1: 20-bit entropy label in the MPLS network in [RFC6790]. See | |||
See Figure 12. | Figure 12. | |||
Reserved bits in the context fields MUST be sent as zero and | Reserved: These bits in the context fields MUST be sent as zero and | |||
ignored on receipt. | ignored on receipt. | |||
4.6. Source and/or Destination Groups | 4.6. Source and/or Destination Groups | |||
Intent-based systems can use this data to express the logical | Intent-based systems can use this data to express the logical | |||
grouping of source and/or destination objects. [OpenStack] and | grouping of source and/or destination objects. [OpenStack] and | |||
[OpenDaylight] provide examples of such a system. Each is expressed | [OpenDaylight] provide examples of such a system. Each is expressed | |||
as a 32-bit opaque object. | as a 32-bit opaque object. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA6 |U| Length=8 | | | Metadata Class = 0x0000 | Type = 0x09 |U| Length=8 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Source Group | | | Source Group | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Destination Group | | | Destination Group | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 13: Source/Destination Groups | Figure 13: Source/Destination Groups | |||
If there is no group information specified for the source group or | If there is no group information specified for the Source Group or | |||
destination group field, the field MUST be sent as zero and ignored | Destination Group field, the field MUST be sent as zero and ignored | |||
on receipt. | on receipt. | |||
4.7. Policy Identifier | 4.7. Policy ID | |||
Traffic handling policies are often referred to by a system-generated | Traffic handling policies are often referred to by a system-generated | |||
identifier, which is then used by the devices to look up the policy's | identifier, which is then used by the devices to look up the policy's | |||
content locally. For example, this identifier could be an index to | content locally. For example, this identifier could be an index to | |||
an array, a lookup key, a database Id. The identifier allows | an array, a lookup key, or a database ID. The identifier allows | |||
enforcement agents or services to look up the content of their part | enforcement agents or services to look up the content of their part | |||
of the policy. | of the policy. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metadata Class = 0x0000 | Type = TBA7 |U| Length | | | Metadata Class = 0x0000 | Type = 0x0A |U| Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ Policy ID ~ | ~ Policy ID ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 14: Policy ID | Figure 14: Policy ID | |||
The fields are described as follows: | The fields are described as follows: | |||
Length: Indicates the length of the Policy ID in octets (see | Length: Indicates the length of the Policy ID in octets (see | |||
Section 2.5.1 of [RFC8300]). | Section 2.5.1 of [RFC8300]). | |||
Policy ID: Represents an opaque value of the Policy ID. | Policy ID: Represents an opaque value of the Policy ID. | |||
This policy identifier is a general policy ID, essentially a key to | This Policy ID is a general Policy ID, essentially a key to allow | |||
allow Service Functions to know which policies to apply to packets. | Service Functions (SFs) to know which policies to apply to packets. | |||
Those policies generally will not have much to do with performance, | Those policies generally will not have much to do with performance | |||
but rather with what specific treatment to apply. It may for example | but rather with what specific treatment to apply. It may, for | |||
select a URL filter data set for a URL filter, or select a video | example, select a URL filter data set for a URL filter or select a | |||
transcoding policy in a transcoding SF. The Performance Policy | video transcoding policy in a transcoding SF. The Performance Policy | |||
Identifier in [RFC8979] is described there as having very specific | ID in [RFC8979] is described there as having very specific use and, | |||
use, and for example says that fully controlled SFPs would not use | for example, says that fully controlled SFPs would not use it. The | |||
it. The Policy ID in this document is for cases not covered by | Policy ID in this document is for cases not covered by [RFC8979]. | |||
[RFC8979]. | ||||
5. Security Considerations | 5. Security Considerations | |||
A misbehaving node from within the SFC-enabled domain may alter the | A misbehaving node from within the SFC-enabled domain may alter the | |||
content of the Context Headers, which may lead to service disruption. | content of the Context Headers, which may lead to service disruption. | |||
Such an attack is not unique to the Context Headers defined in this | Such an attack is not unique to the Context Headers defined in this | |||
document. Measures discussed in Section 8 of [RFC8300] describes the | document. Measures discussed in Section 8 of [RFC8300] describes the | |||
general security considerations for protecting NSH. | general security considerations for protecting the NSH. [RFC9145] | |||
[I-D.ietf-sfc-nsh-integrity] specifies methods of protecting the | specifies methods of protecting the integrity of the NSH metadata. | |||
integrity of the NSH metadata. If the NSH includes the MAC and | If the NSH includes the Message Authentication Code (MAC) and | |||
Encrypted Metadata Context Header [RFC9145], the authentication of | Encrypted Metadata Context Header [RFC9145], the authentication of | |||
the packet MUST be verified before using any data. If the | the packet MUST be verified before using any data. If the | |||
verification fails, the receiver MUST stop processing the variable | verification fails, the receiver MUST stop processing the Variable- | |||
length context headers and notify an operator. | Length Context Headers and notify an operator. | |||
The security and privacy considerations for the 7 types of context | The security and privacy considerations for the 7 types of Context | |||
header specified above are discussed below. Since NSH ignorant SFs | Headers specified above are discussed below. Since NSH-ignorant SFs | |||
will never see the NSH, then even if they are malign, they cannot | will never see the NSH, then even if they are malign, they cannot | |||
compromise security or privacy based on the NSH or any of these | compromise security or privacy based on the NSH or any of these | |||
context headers, although they could cause compromise based on the | Context Headers; however, they could cause compromise based on the | |||
rest of the packet. To the extent that any of these headers is | rest of the packet. To the extent that any of these headers are | |||
included when it would be unneeded or have no effect, they provide a | included when they would be unneeded or have no effect, they provide | |||
covert channel for the entity adding the context header to | a covert channel for the entity adding the Context Header to | |||
communicate a limited amount of arbitrary information to downstream | communicate a limited amount of arbitrary information to downstream | |||
entities within the SFC-enabled domain. | entities within the SFC-enabled domain. | |||
5.1. Forwarding Context | 5.1. Forwarding Context | |||
All of the Forwarding Context variants specified in this document | All of the Forwarding Context variants specified in this document | |||
(those with CT values between 0 and 4) merely repeat a field that is | (those with CT values between 0 and 4) merely repeat a field that is | |||
available in the packet encapsulated by the NSH. These variants | available in the packet encapsulated by the NSH. These variants | |||
repeat that field in the NSH for convenience. Thus, there are no | repeat that field in the NSH for convenience. Thus, there are no | |||
special security or privacy considerations in these cases. Any | special security or privacy considerations in these cases. Any | |||
future new values of CT for the Forwarding Context must specify the | future new values of CT for the Forwarding Context must specify the | |||
security and privacy considerations for those extensions. | security and privacy considerations for those extensions. | |||
5.2. Tenant Identifier | 5.2. Tenant ID | |||
The Tenant ID indicates the tenant to which traffic belongs and might | The Tenant ID indicates the tenant to which traffic belongs and might | |||
be used to tie together and correlate packets for a tenant that some | be used to tie together and correlate packets for a tenant that some | |||
monitoring function could not otherwise group especially if other | monitoring function could not otherwise group, especially if other | |||
possible identifiers were being randomized. As such, it may reduce | possible identifiers were being randomized. As such, it may reduce | |||
security by facilitating traffic analysis but only within the SFC- | security by facilitating traffic analysis but only within the SFC- | |||
enabled domain where this context header is present in packets. | enabled domain where this Context Header is present in packets. | |||
5.3. Ingress Network Node Information | 5.3. Ingress Network Node Information | |||
The SFC-enabled domain manager normally operates the initial ingress | The SFC-enabled domain manager normally operates the initial ingress/ | |||
/ classifier node and is thus potentially aware of the information | classifier node and is thus potentially aware of the information | |||
provided by this context header. Furthermore, in many cases the SPI | provided by this Context Header. Furthermore, in many cases, the SPI | |||
that will be present in the NSH identifies or closely constrains the | that will be present in the NSH identifies or closely constrains the | |||
ingress node. Also, in most cases, it is anticipated that many | ingress node. Also, in most cases, it is anticipated that many | |||
entities will be sending packets into an SFC-enabled domain through | entities will be sending packets into an SFC-enabled domain through | |||
the same ingress node. Thus, under most circumstances, this context | the same ingress node. Thus, under most circumstances, this Context | |||
header is expected to weaken security and privacy to only a minor | Header is expected to weaken security and privacy to only a minor | |||
extent and only within the SFC-enabled domain. | extent and only within the SFC-enabled domain. | |||
5.4. Ingress Node Source Interface | 5.4. Ingress Node Source Interface | |||
This context header is likely to be meaningless unless the Ingress | This Context Header is likely to be meaningless unless the Ingress | |||
Network Node Information context header is also present. When that | Network Node Information Context Header is also present. When that | |||
node information header is present, this source interface header | node information header is present, this source interface header | |||
provides a more fine-grained view of the source by identifying not | provides a more fine-grained view of the source by identifying not | |||
just the initial ingress / classifier node but also the port of that | just the initial ingress/classifier node but also the port of that | |||
node on which the data arrived. Thus, it is more likely to identify | node on which the data arrived. Thus, it is more likely to identify | |||
a specific source entity or at least to more tightly constrain the | a specific source entity or at least to more tightly constrain the | |||
set of possible source entities, than just the node information | set of possible source entities than just the node information | |||
header. As a result, inclusion of this context header with the node | header. As a result, inclusion of this Context Header with the node | |||
information context header is potentially a greater threat to | information Context Header is potentially a greater threat to | |||
security and privacy than the node information header alone but this | security and privacy than the node information header alone, but this | |||
threat is still constrained to the SFC-enabled domain. | threat is still constrained to the SFC-enabled domain. | |||
5.5. Flow ID | 5.5. Flow ID | |||
The variations of this context header specified in this document | The variations of this Context Header specified in this document | |||
simply repeat fields already available in the packet and thus have no | simply repeat fields already available in the packet and thus have no | |||
special security or privacy considerations. Any future new values of | special security or privacy considerations. Any future new values of | |||
CT for the Flow ID must specify the security and privacy | CT for the Flow ID must specify the security and privacy | |||
considerations for those extensions. | considerations for those extensions. | |||
5.6. Source and/or Destination Groups | 5.6. Source and/or Destination Groups | |||
This context header provides additional information that might help | This Context Header provides additional information that might help | |||
identify the source and/or destination of packets. Depending on the | identify the source and/or destination of packets. Depending on the | |||
granularity of the groups, it could either (1) distinguish packets as | granularity of the groups, it could either (1) distinguish packets as | |||
part of flows from and/or to objects where those flows could not | part of flows from and/or to objects where those flows could not | |||
otherwise be easily distinguished but appear to be part of one or | otherwise be easily distinguished but appear to be part of one or | |||
fewer flows or (2) group packet flows that are from and/or to an | fewer flows or (2) group packet flows that are from and/or to an | |||
object where those flows could not otherwise be easily grouped for | object where those flows could not otherwise be easily grouped for | |||
analysis or whatever. Thus, the presence of this context header with | analysis or another purpose. Thus, the presence of this Context | |||
non-zero source and/or destination groups can, within the SFC-enabled | Header with non-zero source and/or destination groups can, within the | |||
domain, erode security and privacy to an extent that depends on the | SFC-enabled domain, erode security and privacy to an extent that | |||
details of the grouping. | depends on the details of the grouping. | |||
5.7. Policy Identifier | 5.7. Policy ID | |||
This context header carries an identifier that nodes in the SFC- | This Context Header carries an identifier that nodes in the SFC- | |||
enabled domain can use to look up policy to potentially influence | enabled domain can use to look up policy to potentially influence | |||
their actions with regard to the packet carrying this header. If | their actions with regard to the packet carrying this header. If | |||
there are no such action decisions, then the header should not be | there are no such decisions regarding their actions, then the header | |||
included. If are such decisions, the information on which they are | should not be included. If there are such decisions, the information | |||
to be based needs to be included somewhere in the packet. There is | on which they are to be based needs to be included somewhere in the | |||
no reason for inclusion in this context header to have any security | packet. There is no reason for inclusion in this Context Header to | |||
or privacy considerations that would not apply to any other plaintext | have any security or privacy considerations that would not apply to | |||
way of including such information. It may provide additional | any other plaintext way of including such information. It may | |||
information to help identify a flow of data for analysis. | provide additional information to help identify a flow of data for | |||
analysis. | ||||
6. Acknowledgments | ||||
The authors would like to thank Paul Quinn, Behcet Sarikaya, Dirk von | ||||
Hugo, Mohamed Boucadair, Gregory Mirsky, and Joel Halpern for | ||||
providing invaluable concepts and content for this document. | ||||
7. IANA Considerations | 6. IANA Considerations | |||
7.1. MD Type 2 Context Types | 6.1. MD Type 2 Context Types | |||
IANA is requested to assign the following types (Table 1) from the | IANA has assigned the following types (Table 1) from the "NSH IETF- | |||
"NSH IETF-Assigned Optional Variable-Length Metadata Types" registry | Assigned Optional Variable-Length Metadata Types" registry available | |||
available at [IANA-NSH-MD2]. | at [IANA-NSH-MD2]. | |||
+=======+==================================+===============+ | +=======+==================================+===========+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+=======+==================================+===============+ | +=======+==================================+===========+ | |||
| TBA1 | Forwarding Context | This document | | | 0x04 | Forwarding Context | RFC 9263 | | |||
+-------+----------------------------------+---------------+ | +-------+----------------------------------+-----------+ | |||
| TBA2 | Tenant Identifier | This document | | | 0x05 | Tenant ID | RFC 9263 | | |||
+-------+----------------------------------+---------------+ | +-------+----------------------------------+-----------+ | |||
| TBA3 | Ingress Network NodeID | This document | | | 0x06 | Ingress Network Node ID | RFC 9263 | | |||
+-------+----------------------------------+---------------+ | +-------+----------------------------------+-----------+ | |||
| TBA4 | Ingress Network Interface | This document | | | 0x07 | Ingress Network Interface | RFC 9263 | | |||
+-------+----------------------------------+---------------+ | +-------+----------------------------------+-----------+ | |||
| TBA5 | Flow ID | This document | | | 0x08 | Flow ID | RFC 9263 | | |||
+-------+----------------------------------+---------------+ | +-------+----------------------------------+-----------+ | |||
| TBA6 | Source and/or Destination Groups | This document | | | 0x09 | Source and/or Destination Groups | RFC 9263 | | |||
+-------+----------------------------------+---------------+ | +-------+----------------------------------+-----------+ | |||
| TBA7 | Policy Identifier | This document | | | 0x0A | Policy ID | RFC 9263 | | |||
+-------+----------------------------------+---------------+ | +-------+----------------------------------+-----------+ | |||
Table 1: Type Values | Table 1: Type Values | |||
7.2. Forwarding Context Types | 6.2. Forwarding Context Types | |||
IANA is requested to create a new sub-registry for "Forwarding | IANA has created a new subregistry for "Forwarding Context Types" at | |||
Context" context types at [IANA-NSH-MD2] as follows: | [IANA-NSH-MD2] as follows. | |||
The Registration Policy is IETF Review | The registration policy is IETF Review. | |||
+=========+=========================================+===============+ | +=========+=========================================+===========+ | |||
| Value | Forwarding Context Header Types | Reference | | | Value | Description | Reference | | |||
+=========+=========================================+===============+ | +=========+=========================================+===========+ | |||
| 0x0 | 12-bit VLAN identifier | This document | | | 0x0 | 12-bit VLAN identifier | RFC 9263 | | |||
+---------+-----------------------------------------+---------------+ | +---------+-----------------------------------------+-----------+ | |||
| 0x1 | 24-bit double tagging identifiers | This document | | | 0x1 | 24-bit double tagging identifiers | RFC 9263 | | |||
+---------+-----------------------------------------+---------------+ | +---------+-----------------------------------------+-----------+ | |||
| 0x2 | 20-bit MPLS VPN label | This document | | | 0x2 | 20-bit MPLS VPN label | RFC 9263 | | |||
+---------+-----------------------------------------+---------------+ | +---------+-----------------------------------------+-----------+ | |||
| 0x3 | 24-bit virtual network identifier | This document | | | 0x3 | 24-bit virtual network identifier (VNI) | RFC 9263 | | |||
| | (VNI) | | | +---------+-----------------------------------------+-----------+ | |||
+---------+-----------------------------------------+---------------+ | | 0x4 | 32-bit Session ID | RFC 9263 | | |||
| 0x4 | 32-bit Session ID | This document | | +---------+-----------------------------------------+-----------+ | |||
+---------+-----------------------------------------+---------------+ | | 0x5-0xE | Unassigned | | | |||
| 0x5-0xE | Unassigned | | | +---------+-----------------------------------------+-----------+ | |||
+---------+-----------------------------------------+---------------+ | | 0xF | Reserved | RFC 9263 | | |||
| 0xF | Reserved | This document | | +---------+-----------------------------------------+-----------+ | |||
+---------+-----------------------------------------+---------------+ | ||||
Table 2: Forwarding Context Types | Table 2: Forwarding Context Types | |||
7.3. Flow ID Context Types | 6.3. Flow ID Context Types | |||
IANA is requested to create a new sub-registry for "Flow ID Context" | IANA has created a new subregistry for "Flow ID Context Types" at | |||
context types at [IANA-NSH-MD2] as follows: | [IANA-NSH-MD2] as follows. | |||
The Registration Policy is IETF Review | The registration policy is IETF Review. | |||
+=========+==============================+===============+ | +=========+==========================================+===========+ | |||
| Value | Flow ID Context Header Types | Reference | | | Value | Description | Reference | | |||
+=========+==============================+===============+ | +=========+==========================================+===========+ | |||
| 0x0 | 20-bit IPv6 Flow Label | This document | | | 0x0 | 20-bit IPv6 Flow Label | RFC 9263 | | |||
+---------+------------------------------+---------------+ | +---------+------------------------------------------+-----------+ | |||
| 0x1 | 20-bit entropy label in the | This document | | | 0x1 | 20-bit entropy label in the MPLS network | RFC 9263 | | |||
| | MPLS network | | | +---------+------------------------------------------+-----------+ | |||
+---------+------------------------------+---------------+ | | 0x2-0xE | Unassigned | | | |||
| 0x2-0xE | Unassigned | | | +---------+------------------------------------------+-----------+ | |||
+---------+------------------------------+---------------+ | | 0xF | Reserved | RFC 9263 | | |||
| 0xF | Reserved | This document | | +---------+------------------------------------------+-----------+ | |||
+---------+------------------------------+---------------+ | ||||
Table 3: Flow ID Context Types | Table 3: Flow ID Context Types | |||
8. References | 7. References | |||
8.1. Normative References | ||||
[I-D.ietf-sfc-nsh-integrity] | 7.1. Normative References | |||
Boucadair, M., Reddy, T., and D. Wing, "Integrity | ||||
Protection for the Network Service Header (NSH) and | ||||
Encryption of Sensitive Context Headers", Work in | ||||
Progress, Internet-Draft, draft-ietf-sfc-nsh-integrity-09, | ||||
20 September 2021, <https://www.ietf.org/archive/id/draft- | ||||
ietf-sfc-nsh-integrity-09.txt>. | ||||
[IANA-NSH-MD2] | [IANA-NSH-MD2] | |||
IANA, "NSH IETF-Assigned Optional Variable-Length Metadata | IANA, "Network Service Header (NSH) Parameters", | |||
Types", <https://www.iana.org/assignments/nsh/ | <https://www.iana.org/assignments/nsh>. | |||
nsh.xhtml#optional-variable-length-metadata-types>. | ||||
[IEEE.802.1Q_2018] | [IEEE.802.1Q_2018] | |||
IEEE, "IEEE Standard for Local and Metropolitan Area | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
Networks--Bridges and Bridged Networks", July 2018, | Network -- Bridges and Bridged Networks", July 2018, | |||
<http://ieeexplore.ieee.org/servlet/ | <https://ieeexplore.ieee.org/document/8403927>. | |||
opac?punumber=8403925>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3931] Lau, J., Ed., Townsley, M., Ed., and I. Goyret, Ed., | [RFC3931] Lau, J., Ed., Townsley, M., Ed., and I. Goyret, Ed., | |||
"Layer Two Tunneling Protocol - Version 3 (L2TPv3)", | "Layer Two Tunneling Protocol - Version 3 (L2TPv3)", | |||
RFC 3931, DOI 10.17487/RFC3931, March 2005, | RFC 3931, DOI 10.17487/RFC3931, March 2005, | |||
<https://www.rfc-editor.org/info/rfc3931>. | <https://www.rfc-editor.org/info/rfc3931>. | |||
skipping to change at page 16, line 30 ¶ | skipping to change at line 677 ¶ | |||
"Network Service Header (NSH)", RFC 8300, | "Network Service Header (NSH)", RFC 8300, | |||
DOI 10.17487/RFC8300, January 2018, | DOI 10.17487/RFC8300, January 2018, | |||
<https://www.rfc-editor.org/info/rfc8300>. | <https://www.rfc-editor.org/info/rfc8300>. | |||
[RFC9145] Boucadair, M., Reddy.K, T., and D. Wing, "Integrity | [RFC9145] Boucadair, M., Reddy.K, T., and D. Wing, "Integrity | |||
Protection for the Network Service Header (NSH) and | Protection for the Network Service Header (NSH) and | |||
Encryption of Sensitive Context Headers", RFC 9145, | Encryption of Sensitive Context Headers", RFC 9145, | |||
DOI 10.17487/RFC9145, December 2021, | DOI 10.17487/RFC9145, December 2021, | |||
<https://www.rfc-editor.org/info/rfc9145>. | <https://www.rfc-editor.org/info/rfc9145>. | |||
8.2. Informative References | 7.2. Informative References | |||
[IANAifType] | [IANAifType] | |||
IANA, "IANAifType", 2021, | IANA, "IANAifType-MIB DEFINITIONS", 2021, | |||
<https://www.iana.org/assignments/ianaiftype-mib/ | <https://www.iana.org/assignments/ianaiftype-mib/ | |||
ianaiftype-mib>. | ianaiftype-mib>. | |||
[OpenDaylight] | [OpenDaylight] | |||
OpenDaylight, "Group Based Policy", 2021, | OpenDaylight, "Group Based Policy User Guide", 2021, | |||
<https://docs.opendaylight.org/en/stable-fluorine/user- | <https://docs.opendaylight.org/en/stable-fluorine/user- | |||
guide/group-based-policy-user- | guide/group-based-policy-user- | |||
guide.html?highlight=group%20policy#>. | guide.html?highlight=group%20policy#>. | |||
[OpenDaylight-VTN] | [OpenDaylight-VTN] | |||
OpenDaylight, "OpenDaylight VTN", 2021, <https://nexus.ope | OpenDaylight, "OpenDaylight VTN", 2021, <https://nexus.ope | |||
ndaylight.org/content/sites/site/org.opendaylight.docs/mas | ndaylight.org/content/sites/site/org.opendaylight.docs/mas | |||
ter/userguide/manuals/userguide/bk-user-guide/ | ter/userguide/manuals/userguide/bk-user-guide/ | |||
content/_vtn.html>. | content/_vtn.html>. | |||
[OpenStack] | [OpenStack] | |||
OpenStack, "Group Based Policy", 2021, | OpenStack, "GroupBasedPolicy", 2021, | |||
<https://wiki.openstack.org/wiki/GroupBasedPolicy>. | <https://wiki.openstack.org/wiki/GroupBasedPolicy>. | |||
[RFC2890] Dommety, G., "Key and Sequence Number Extensions to GRE", | [RFC2890] Dommety, G., "Key and Sequence Number Extensions to GRE", | |||
RFC 2890, DOI 10.17487/RFC2890, September 2000, | RFC 2890, DOI 10.17487/RFC2890, September 2000, | |||
<https://www.rfc-editor.org/info/rfc2890>. | <https://www.rfc-editor.org/info/rfc2890>. | |||
[RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | |||
Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | |||
Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | |||
<https://www.rfc-editor.org/info/rfc3032>. | <https://www.rfc-editor.org/info/rfc3032>. | |||
skipping to change at page 17, line 44 ¶ | skipping to change at line 739 ¶ | |||
"Geneve: Generic Network Virtualization Encapsulation", | "Geneve: Generic Network Virtualization Encapsulation", | |||
RFC 8926, DOI 10.17487/RFC8926, November 2020, | RFC 8926, DOI 10.17487/RFC8926, November 2020, | |||
<https://www.rfc-editor.org/info/rfc8926>. | <https://www.rfc-editor.org/info/rfc8926>. | |||
[RFC8979] Sarikaya, B., von Hugo, D., and M. Boucadair, "Subscriber | [RFC8979] Sarikaya, B., von Hugo, D., and M. Boucadair, "Subscriber | |||
and Performance Policy Identifier Context Headers in the | and Performance Policy Identifier Context Headers in the | |||
Network Service Header (NSH)", RFC 8979, | Network Service Header (NSH)", RFC 8979, | |||
DOI 10.17487/RFC8979, February 2021, | DOI 10.17487/RFC8979, February 2021, | |||
<https://www.rfc-editor.org/info/rfc8979>. | <https://www.rfc-editor.org/info/rfc8979>. | |||
Acknowledgments | ||||
The authors would like to thank Paul Quinn, Behcet Sarikaya, Dirk von | ||||
Hugo, Mohamed Boucadair, Gregory Mirsky, and Joel Halpern for | ||||
providing invaluable concepts and content for this document. | ||||
Authors' Addresses | Authors' Addresses | |||
Yuehua Wei (editor) | Yuehua Wei (editor) | |||
ZTE Corporation | ZTE Corporation | |||
No.50, Software Avenue | No.50, Software Avenue | |||
Nanjing | Nanjing | |||
210012 | 210012 | |||
China | China | |||
Email: wei.yuehua@zte.com.cn | Email: wei.yuehua@zte.com.cn | |||
Uri Elzur | Uri Elzur | |||
Intel | Intel | |||
Email: uri.elzur@intel.com | Email: uri.elzur@intel.com | |||
Sumandra Majee | Sumandra Majee | |||
Individual contributor | Individual Contributor | |||
Email: Sum.majee@gmail.com | Email: Sum.majee@gmail.com | |||
Carlos Pignataro | Carlos Pignataro | |||
Cisco | Cisco | |||
Email: cpignata@cisco.com | Email: cpignata@cisco.com | |||
Donald E. Eastlake | Donald E. Eastlake, 3rd | |||
Futurewei Technologies | Futurewei Technologies | |||
2386 Panoramic Circle | 2386 Panoramic Circle | |||
Apopka, FL 32703 | Apopka, FL 32703 | |||
United States of America | United States of America | |||
Phone: +1-508-333-2270 | ||||
Email: d3e3e3@gmail.com | Email: d3e3e3@gmail.com | |||
End of changes. 116 change blocks. | ||||
395 lines changed or deleted | 383 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |