| 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. | ||||