Internet-Draft EtherType IOAM February 2022
Weis, et al. Expires 25 August 2022 [Page]
Workgroup:
ippm
Internet-Draft:
draft-weis-ippm-ioam-eth-05
Published:
Intended Status:
Standards Track
Expires:
Authors:
B.W. Weis, Ed.
Independent
F. Brockners, Ed.
Cisco
C. Hill
Cisco
S. Bhandari
Thoughtspot
V. Govindan
Cisco
C. Pignataro, Ed.
Cisco
N. Nainar, Ed.
Cisco
H. Gredler
RtBrick Inc.
J. Leddy
S. Youell
JMPC
T. Mizrahi
Huawei Network.IO Innovation Lab
A. Kfir
Nvidia
B. Gafni
Nvidia
P. Lapukhov
Facebook
M. Spiegel
Barefoot Networks, an Intel company

EtherType Protocol Identification of In-situ OAM Data

Abstract

In-situ Operations, Administration, and Maintenance (IOAM) records operational and telemetry information in the packet while the packet traverses a path between two points in the network. This document defines an EtherType that identifies IOAM data fields as being the next protocol in a packet, and a header that encapsulates the IOAM data fields.

Status of This Memo

This Internet-Draft is submitted in full conformance with the 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 25 August 2022.

1. Introduction

In-situ Operations, Administration, and Maintenance (IOAM) records operational and telemetry information in the packet while the packet traverses a particular network domain. The term "in-situ" refers to the fact that the IOAM data fields are added to the data packets rather than being sent within packets specifically dedicated to OAM. This document proposes a new Ethertype for IOAM and defines how IOAM data fields are carried as part of encapsulations where the IOAM data fields follows an encapsulation header that uses an EtherType to denote the type of protocol data unit. Examples of these protocols are GRE [RFC2784] [RFC2890] and Geneve [RFC8926]). This document outlines how IOAM data fields are encoded in these encapsultion headers.

2. Conventions

2.1. Requirements Language

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

2.2. Abbreviations

Abbreviations used in this document:

E2E:
Edge-to-Edge
Geneve:
Generic Network Virtualization Encapsulation
GRE:
Generic Routing Encapsulation
IOAM:
In-situ Operations, Administration, and Maintenance
OAM:
Operations, Administration, and Maintenance
POT:
Proof of Transit

3. IOAM EtherType

When the IOAM data fields are included within an encapsulation that identifies the next protocol using an EtherType (e.g., GRE or Geneve) the presence of IOAM data fields are identified with TBD_IOAM. When this EtherType is used, an additional IOAM header is also included. This header indicates the type of IOAM data fields that follows, and the next protocol that follows the IOAM data fields.

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   IOAM-Type   |   IOAM HDR len|        Next Protocol          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!                                                               |
!                                                               |
~                 IOAM Option and Data Space                    ~
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The IOAM encapsulation is defined as follows.

IOAM Type:
8-bit field defining the IOAM Option type, as defined in Section 5.1 of [I-D.ietf-ippm-ioam-data].
IOAM HDR Len:
8 bit Length field contains the length of the IOAM header in 4-octet units.
Next Protocol:
16 bits Next Protocol Type field contains the protocol type of the protocol data unit following IOAM protocol header. Protocol Type is defined to be an EtherType value from [ETYPES]. An implementation receiving a packet containing a Protocol Type which is not listed in one of those registries SHOULD discard the packet.
IOAM Option and Data Space:
IOAM option header and data is present as specified by the IOAM-Option-Type field, and is defined in Section 5 of [I-D.ietf-ippm-ioam-data].

Multiple IOAM options MAY be included within the encapsulation header. For example, if a GRE encapsulation contains two IOAM options before the data payload, the Next Protocol field of the first IOAM option will contain the value of TBD_IOAM, while the Next Protocol field of the second IOAM option will contain the EtherType indicating the type of the data payload.

4. Usage Examples of the IOAM EtherType

The IOAM EtherType can be used with any encapsulation that uses EtherType to denote the type of the protocol data unit. The following sections show how it can be used when GRE and Geneve are used as the encapsulation header.

4.1. Example: GRE Encapsulation of IOAM Data Fields

When IOAM data fields are carried in GRE, the IOAM encapsulation defined above follows the GRE header, as shown in Figure 1.

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|C| |K|S| Reserved0       | Ver | Protocol Type = <TBD_IOAM>    |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|      Checksum (optional)      |       Reserved1 (Optional)    |  G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
|                         Key (optional)                        |  E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                 Sequence Number (Optional)                    |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|   IOAM-Type   |   IOAM HDR len|        Next Protocol          |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  I
!                                                               |  O
!                                                               |  A
~                 IOAM Option and Data Space                    ~  M
|                                                               |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|             Payload + Padding (L2/L3/ESP/...)                 |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: GRE Encapsulation Example

The GRE header and fields are defined in [RFC2890]. The GRE Protocol Type value is set to TBD_IOAM.

Figure 2 shows two example protocol header stacks that use GRE along with IOAM. IOAM Option-Types (the below diagram uses "IOAM" as shorthand for IOAM Option-Types) are sequenced in behind the GRE header that follows the "outer" header of the next protocol unit.

        Example 1                     Example 2

   |      ...       |            |       ...      |
   +----------------+            +----------------+
   | TCP/UDP header |            |    IP, ...     |
   +----------------+            +----------------+
   |    IP header   |            |   Eth. header  |
   +----------------+            +----------------+
   |      IOAM      |            |      IOAM      |
   +----------------+            +----------------+
   |    GRE header  |            |    GRE header  |
   +----------------+            +----------------+
   |    IP header   |            |    IP header   |
   +----------------+            +----------------+
   |     Layer 2    |            |     Layer 2    |
   +----------------+            +----------------+
   |     Layer 1    |            |     Layer 1    |
   +----------------+            +----------------+

Figure 2: GRE with IOAM examples

4.2. Example: Geneve Encapsulation of IOAM Data Fields

When IOAM data fields are carried in Geneve, the IOAM encapsulation defined above follows the Geneve header, as shown in Figure 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|Ver|  Opt Len  |O|C|    Rsvd.  | Protocol Type = <TBD_IOAM>    |  |G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |E
|        Virtual Network Identifier (VNI)       |    Reserved   |  |N
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |E
|                    Variable Length Options                    |  |V
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+E
|   IOAM-Type   |   IOAM HDR len|        Next Protocol          |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  I
!                                                               |  O
!                                                               |  A
~                 IOAM Option and Data Space                    ~  M
|                                                               |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|  Inner header + Payload + Padding (L2/L3/ESP/...)             |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Geneve Encapsulation Example

The Geneve header and fields are defined in [RFC8926]. The Geneve Protocol Type value is TBD_IOAM.

5. Security Considerations

This document describes the encapsulation of IOAM data fields in the encapsulation header such as GRE and Geneve that uses EtherType to denote the protocol data unit. Security considerations of the specific IOAM data fields for each case (i.e., Trace, Proof of Transit, and E2E) are described in [I-D.ietf-ippm-ioam-data].

As this document describes new protocol fields within the existing encapsulation, any security considerations of the respective encapsulation header is applicable. When the encapsulation is GRE, the security considerations of [RFC2890] is applicable. When the encapsulation is Geneve, the security considerations of [RFC8926] is applicable.

IOAM data fields SHOULD be integrity protected (e.g., with [I-D.ietf-ippm-ioam-data-integrity]) to detect changes made by a device between the IOAM encapsulating node and the IOAM decapsulating node.

6. IANA Considerations

A new EtherType value is requested to be added to the [ETYPES] IANA registry by IEEE Registration Authority. The description should be "In-situ OAM (IOAM)".

7. Acknowledgements

We would like to thank Nagendra Kumar Nainar for the contribution.

8. References

8.1. Normative References

[ETYPES]
"IANA Ethernet Numbers", <https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml>.
[I-D.ietf-ippm-ioam-data]
Brockners, F., Bhandari, S., and T. Mizrahi, "Data Fields for In-situ OAM", Work in Progress, Internet-Draft, draft-ietf-ippm-ioam-data-17, , <https://www.ietf.org/archive/id/draft-ietf-ippm-ioam-data-17.txt>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC2784]
Farinacci, D., Li, T., Hanks, S., Meyer, D., and P. Traina, "Generic Routing Encapsulation (GRE)", RFC 2784, DOI 10.17487/RFC2784, , <https://www.rfc-editor.org/info/rfc2784>.
[RFC2890]
Dommety, G., "Key and Sequence Number Extensions to GRE", RFC 2890, DOI 10.17487/RFC2890, , <https://www.rfc-editor.org/info/rfc2890>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8926]
Gross, J., Ed., Ganga, I., Ed., and T. Sridhar, Ed., "Geneve: Generic Network Virtualization Encapsulation", RFC 8926, DOI 10.17487/RFC8926, , <https://www.rfc-editor.org/info/rfc8926>.

8.2. Informative References

[I-D.ietf-ippm-ioam-data-integrity]
Brockners, F., Bhandari, S., and T. Mizrahi, "Integrity of In-situ OAM Data Fields", Work in Progress, Internet-Draft, draft-ietf-ippm-ioam-data-integrity-00, , <https://www.ietf.org/archive/id/draft-ietf-ippm-ioam-data-integrity-00.txt>.

Authors' Addresses

Brian Weis (editor)
Independent
United States of America
Frank Brockners (editor)
Cisco Systems, Inc.
Hansaallee 249, 3rd Floor
40549 DUESSELDORF
Germany
Craig Hill
Cisco Systems, Inc.
13600 Dulles Technology Drive
Herndon, Virginia 20171
United States
Shwetha Bhandari
Thoughtspot
3rd Floor, Indiqube Orion, 24th Main Rd, Garden Layout, HSR Layout
Bangalore, KARNATAKA 560 102
India
Vengada Prasad Govindan
Cisco Systems, Inc.
Carlos Pignataro (editor)
Cisco Systems, Inc.
7200-11 Kit Creek Road
Research Triangle Park, NC 27709
United States
Nagendra Kumar Nainar (editor)
Cisco Systems, Inc.
7200-11 Kit Creek Road
Research Triangle Park, NC 27709
United States
Hannes Gredler
RtBrick Inc.
John Leddy
United States
Stephen Youell
JP Morgan Chase
25 Bank Street
London
E14 5JP
United Kingdom
Tal Mizrahi
Huawei Network.IO Innovation Lab
Israel
Aviv Kfir
Nvidia
350 Oakmead Parkway, Suite 100
Sunnyvale, CA
Barak Gafni
Nvidia
350 Oakmead Parkway, Suite 100
Sunnyvale, CA
Petr Lapukhov
Facebook
1 Hacker Way
Menlo Park, CA, 94025
United States of America
Mickey Spiegel
Barefoot Networks, an Intel company
4750 Patrick Henry Drive
Santa Clara, CA, 95054
United States of America