--- 1/draft-ietf-ippm-ioam-flags-02.txt 2020-10-26 01:13:11.887502557 -0700 +++ 2/draft-ietf-ippm-ioam-flags-03.txt 2020-10-26 01:13:11.903502772 -0700 @@ -1,29 +1,29 @@ IPPM T. Mizrahi Internet-Draft Huawei Smart Platforms iLab Intended status: Standards Track F. Brockners -Expires: January 28, 2021 S. Bhandari +Expires: April 29, 2021 S. Bhandari R. Sivakolundu C. Pignataro Cisco A. Kfir B. Gafni Mellanox Technologies, Inc. M. Spiegel Barefoot Networks J. Lemon Broadcom - July 27, 2020 + October 26, 2020 In-situ OAM Flags - draft-ietf-ippm-ioam-flags-02 + draft-ietf-ippm-ioam-flags-03 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 presents new flags in the IOAM Trace Option headers. Specifically, the document defines the Loopback and Active flags. Status of This Memo @@ -34,21 +34,21 @@ 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 January 28, 2021. + This Internet-Draft will expire on April 29, 2021. Copyright Notice Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -59,27 +59,27 @@ described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Requirement Language . . . . . . . . . . . . . . . . . . 3 2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 3. New IOAM Trace Option Flags . . . . . . . . . . . . . . . . . 3 4. Loopback in IOAM . . . . . . . . . . . . . . . . . . . . . . 3 - 5. Active Measurement with IOAM . . . . . . . . . . . . . . . . 4 - 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 - 7. Performance Considerations . . . . . . . . . . . . . . . . . 6 + 5. Active Measurement with IOAM . . . . . . . . . . . . . . . . 5 + 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 + 7. Performance Considerations . . . . . . . . . . . . . . . . . 7 8. Security Considerations . . . . . . . . . . . . . . . . . . . 7 - 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 - 9.1. Normative References . . . . . . . . . . . . . . . . . . 8 - 9.2. Informative References . . . . . . . . . . . . . . . . . 8 + 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 + 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 + 9.2. Informative References . . . . . . . . . . . . . . . . . 9 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 1. Introduction IOAM [I-D.ietf-ippm-ioam-data] is used for monitoring traffic in the network by incorporating IOAM data fields into in-flight data packets. IOAM data may be represented in one of four possible IOAM options: Pre-allocated Trace Option, Incremental Trace Option, Proof of @@ -119,71 +119,92 @@ 4. Loopback in IOAM Loopback is used for triggering each transit device along the path to loop back a copy of the data packet. Loopback allows an IOAM encapsulating node to trace the path to a given destination, and to receive per-hop data about both the forward and the return path. Loopback is intended to provide an accelerated alternative to Traceroute, that allows the encapsulating node to receive responses from multiple transit nodes along the path in less then one round- - trip-time. + trip-time, and by sending a single packet. - Loopback mode assumes that a return path from transit nodes and + Loopback can be used only if a return path from transit nodes and destination nodes towards the source (encapsulating node) exists. Specifically, loopback is only applicable in encapsulations in which the identity of the encapsulating node is available in the encapsulation header. If an encapsulating node receives a looped back packet that was not originated from the current encapsulating node, the packet is dropped. - The encapsulating node generates synthetic packets with an IOAM trace - option that has the loopback flag set. These packets are generated + The encapsulating node either generates synthetic packets with an + IOAM trace option that has the loopback flag set, or sets the loopack + flag in a subset of the in-transit data packets. Loopback is used either proactively or on-demand, i.e., when a failure is detected. The encapsulating node also needs to ensure that sufficient space is available in the IOAM header for loopback operation, which includes transit nodes adding trace data on the original path and then again - on the return path. An IOAM trace option that has the loopback bit - set MUST have the value '1' in the most significant bit of IOAM- - Trace-Type, and '0' in the rest of the bits of IOAM-Trace-Type. - Thus, every transit node that processes this trace option only adds a - single data field, which is the Hop_Lim and node_id data field. The - reason for allowing a single data field per hop is to minimize the - impact of amplification attacks. + on the return path. + + An IOAM trace option that has the loopback bit set MUST have the + value '1' in the most significant bit of IOAM-Trace-Type, and '0' in + the rest of the bits of IOAM-Trace-Type. Thus, every transit node + that processes this trace option only adds a single data field, which + is the Hop_Lim and node_id data field. The reason for allowing a + single data field per hop is to minimize the impact of amplification + attacks. A loopback bit that is set indicates to the transit nodes processing this option that they are to create a copy of the received packet and - send the copy back to the source of the packet. The copy has its - data fields added after being copied in order to allow any egress- - dependent information to be set based on the egress of the copy - rather than the original. The copy is also truncated, i.e., any - payload that resides after the IOAM option(s) is removed before - transmitting the looped back packet back towards the encapsulating - node. The original packet continues towards its destination. The + send the copy back to the source of the packet. In this context the + source is the IOAM encapsulating node, and it is assumed that the + source address is available in the encapsulation header. Thus, the source address of the original packet is used as the destination address in the copied packet. The address of the node performing the - copy operation is used as the source address. The L-bit MUST be - cleared in the copy of the packet that a node sends back towards the - source. On its way back towards the source, the copied packet is - processed like any other packet with IOAM information, including - adding any requested data at each transit node (assuming there is - sufficient space). + copy operation is used as the source address. The IOAM transit node + pushes the required data field *after* creating the copy of the + packet, in order to allow any egress-dependent information to be set + based on the egress of the copy rather than the original packet. The + copy is also truncated, i.e., any payload that resides after the IOAM + option(s) is removed before transmitting the looped back packet back + towards the encapsulating node. The original packet continues + towards its destination. The L-bit MUST be cleared in the copy of + the packet that a node sends back towards the source. + + On its way back towards the source, the copied packet is processed + like any other packet with IOAM information, including adding any + requested data at each transit node (assuming there is sufficient + space). Once the return packet reaches the IOAM domain boundary, IOAM decapsulation occurs as with any other packet containing IOAM - information. Because any intermediate node receiving such a packet - would not know how to process the original packet, and because there - would be a risk of the original packet leaking past the initiator of - the IOAM loopback, the initiator of an IOAM loopback MUST be the - initiator of the packet. Once a loopback packet is received back at - the initiator, it is a local matter how it is recognized as a - loopback packet. + information. Note that the looped back packet does not have the + L-bit set. The IOAM encapsulating node that initiated the original + loopback packet recognizes a received packet as an IOAM looped-back + packet by checking the Node ID in the Hop_Lim/node_id field that + corresponds to the first hop. If the Node ID matches the current + IOAM node, it indicates that this is a looped back packet that was + initiated by the current IOAM node, and processed accordingly. If + there is no match in the Node ID, the packet is processed like a + conventional IOAM-encapsulated packet. + + Note that an IOAM encapsulating node may either be an endpoint (such + as an IPv6 host), or a switch/router that pushes a tunnel + encapsulation onto data packets. In both cases, the functionality + that was described above avoids IOAM data leaks from the IOAM domain. + Specificallly, if an IOAM looped-back packet reaches an IOAM boundary + node that is not the IOAM node that initiated the loopback, the node + does not process the packet as a loopback; the IOAM encapsulation is + removed, and since the packet does not have any payload it is + terminated. In either case, when the packet reaches the IOAM + boundary its IOAM encapsulation is removed, preventing IOAM + information from leaking out from the IOAM domain. 5. Active Measurement with IOAM Active measurement methods [RFC7799] make use of synthetically generated packets in order to facilitate the measurement. This section presents use cases of active measurement using the IOAM Active flag. The active flag indicates that a packet is used for active measurement. An IOAM decapsulating node that receives a packet with @@ -273,21 +294,21 @@ (overhead) traffic. Each of the mechanisms that use the flags above has a cost in terms of the network bandwidth, and may potentially load the node that analyzes the data. Therefore, it MUST be possible to use each of the mechanisms on a subset of the data traffic; an encapsulating node needs to be able to set the Loopback and Active flag selectively, in a way that considers the effect on the network performance. Similarly, transit and decapsulating nodes need to be able to selectively loop back packets with the Loopback flag, and to - selectively export packets. Specifically, rate limiting may be + selectively export packets. Specifically, rate limiting can be enabled so as to ensure that the mechanisms are used at a rate that does not significantly affect the network bandwidth, and does not overload the receiving entity (or the source node in the case of loopback). 8. Security Considerations The security considerations of IOAM in general are discussed in [I-D.ietf-ippm-ioam-data]. Specifically, an attacker may try to use the functionality that is defined in this document to attack the @@ -356,23 +377,23 @@ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . 9.2. Informative References [I-D.ietf-ippm-ioam-ipv6-options] Bhandari, S., Brockners, F., Pignataro, C., Gredler, H., Leddy, J., Youell, S., Mizrahi, T., Kfir, A., Gafni, B., - Lapukhov, P., Spiegel, M., Krishnan, S., and R. Asati, - "In-situ OAM IPv6 Options", draft-ietf-ippm-ioam- - ipv6-options-02 (work in progress), July 2020. + Lapukhov, P., Spiegel, M., Krishnan, S., Asati, R., and M. + Smith, "In-situ OAM IPv6 Options", draft-ietf-ippm-ioam- + ipv6-options-03 (work in progress), September 2020. [I-D.ietf-sfc-ioam-nsh] Brockners, F. and S. Bhandari, "Network Service Header (NSH) Encapsulation for In-situ OAM (IOAM) Data", draft- ietf-sfc-ioam-nsh-04 (work in progress), June 2020. [I-D.spiegel-ippm-ioam-rawexport] Spiegel, M., Brockners, F., Bhandari, S., and R. Sivakolundu, "In-situ OAM raw data export with IPFIX", draft-spiegel-ippm-ioam-rawexport-03 (work in progress),