draft-ietf-ippm-ioam-flags-05.txt | draft-ietf-ippm-ioam-flags-06.txt | |||
---|---|---|---|---|
IPPM T. Mizrahi | IPPM T. Mizrahi | |||
Internet-Draft Huawei | Internet-Draft Huawei | |||
Intended status: Standards Track F. Brockners | Intended status: Standards Track F. Brockners | |||
Expires: January 26, 2022 Cisco | Expires: March 1, 2022 Cisco | |||
S. Bhandari, Ed. | S. Bhandari, Ed. | |||
Thoughtspot | Thoughtspot | |||
R. Sivakolundu | R. Sivakolundu | |||
C. Pignataro | C. Pignataro | |||
Cisco | Cisco | |||
A. Kfir | A. Kfir | |||
B. Gafni | B. Gafni | |||
Nvidia | Nvidia | |||
M. Spiegel | M. Spiegel | |||
Barefoot Networks | Barefoot Networks | |||
J. Lemon | J. Lemon | |||
Broadcom | Broadcom | |||
July 25, 2021 | August 28, 2021 | |||
In-situ OAM Flags | In-situ OAM Loopback and Active Flags | |||
draft-ietf-ippm-ioam-flags-05 | draft-ietf-ippm-ioam-flags-06 | |||
Abstract | Abstract | |||
In-situ Operations, Administration, and Maintenance (IOAM) records | In-situ Operations, Administration, and Maintenance (IOAM) records | |||
operational and telemetry information in the packet while the packet | operational and telemetry information in packets while they traverse | |||
traverses a path between two points in the network. This document | a path between two points in the network. This document defines two | |||
presents new flags in the IOAM Trace Option headers. Specifically, | new flags in the IOAM Trace Option headers, specifically the the | |||
the document defines the Loopback and Active flags. | Loopback and Active flags. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 26, 2022. | This Internet-Draft will expire on March 1, 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 28 ¶ | skipping to change at page 2, line 28 ¶ | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. New IOAM Trace Option Flags . . . . . . . . . . . . . . . . . 3 | 3. New IOAM Trace Option Flags . . . . . . . . . . . . . . . . . 3 | |||
4. Loopback in IOAM . . . . . . . . . . . . . . . . . . . . . . 3 | 4. Loopback in IOAM . . . . . . . . . . . . . . . . . . . . . . 3 | |||
4.1. Loopback Overview . . . . . . . . . . . . . . . . . . . . 3 | 4.1. Loopback: Encapsulating Node Functionality . . . . . . . 4 | |||
4.2. Loopback: Encapsulating Node Functionality . . . . . . . 4 | 4.1.1. Loopback Packet Selection . . . . . . . . . . . . . . 5 | |||
4.2.1. Overview . . . . . . . . . . . . . . . . . . . . . . 4 | 4.2. Receiving and Processing Loopback . . . . . . . . . . . . 5 | |||
4.2.2. Loopback Packet Selection . . . . . . . . . . . . . . 5 | 4.3. Loopback on the Return Path . . . . . . . . . . . . . . . 6 | |||
4.3. Receiving and Processing Loopback . . . . . . . . . . . . 6 | 4.4. Terminating a Looped Back Packet . . . . . . . . . . . . 6 | |||
4.4. Loopback on the Return Path . . . . . . . . . . . . . . . 6 | ||||
4.5. Terminating a Looped Back Packet . . . . . . . . . . . . 6 | ||||
5. Active Measurement with IOAM . . . . . . . . . . . . . . . . 7 | 5. Active Measurement with IOAM . . . . . . . . . . . . . . . . 7 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
7. Performance Considerations . . . . . . . . . . . . . . . . . 9 | 7. Performance Considerations . . . . . . . . . . . . . . . . . 9 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 12 | 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
IOAM [I-D.ietf-ippm-ioam-data] is used for monitoring traffic in the | IOAM [I-D.ietf-ippm-ioam-data] is used for monitoring traffic in the | |||
network by incorporating IOAM data fields into in-flight data | network by incorporating IOAM data fields into in-flight data | |||
packets. | packets. | |||
IOAM data may be represented in one of four possible IOAM options: | IOAM data may be represented in one of four possible IOAM options: | |||
Pre-allocated Trace Option, Incremental Trace Option, Proof of | Pre-allocated Trace Option, Incremental Trace Option, Proof of | |||
skipping to change at page 3, line 30 ¶ | skipping to change at page 3, line 28 ¶ | |||
IOAM: In-situ Operations, Administration, and Maintenance | IOAM: In-situ Operations, Administration, and Maintenance | |||
OAM: Operations, Administration, and Maintenance | OAM: Operations, Administration, and Maintenance | |||
3. New IOAM Trace Option Flags | 3. New IOAM Trace Option Flags | |||
This document defines two new flags in the Pre-allocated and | This document defines two new flags in the Pre-allocated and | |||
Incremental Trace options: | Incremental Trace options: | |||
Bit 1 "Loopback" (L-bit). Loopback mode is used to send a copy of a | Bit 1 "Loopback" (L-bit). When set, the Loopback flag triggers | |||
packet back towards the source, as further described in Section 4. | sending a copy of a packet back towards the source, as further | |||
described in Section 4. | ||||
Bit 2 "Active" (A-bit). When set, this indicates that this is an | Bit 2 "Active" (A-bit). When set, the Active flag indicates that a | |||
active IOAM packet, where "active" is used in the sense defined in | packet is an active measurement packet rather than a data packet, | |||
[RFC7799], rather than a data packet. The packet may be an IOAM | where "active" is used in the sense defined in [RFC7799]. The | |||
probe packet, or a replicated data packet (the second and third | packet may be an IOAM probe packet, or a replicated data packet | |||
use cases of Section 5). | (the second and third use cases of Section 5). | |||
4. Loopback in IOAM | 4. Loopback in IOAM | |||
4.1. Loopback Overview | The Loopback flag is used to request that each transit device along | |||
the path loops back a copy of the data packet to the sender. | ||||
Loopback is used for triggering each transit device along the path to | Loopback allows an IOAM encapsulating node to trace the path to a | |||
loop back a copy of the data packet. Loopback allows an IOAM | given destination, and to receive per-hop data about both the forward | |||
encapsulating node to trace the path to a given destination, and to | and the return path. Loopback is intended to provide an accelerated | |||
receive per-hop data about both the forward and the return path. | alternative to Traceroute, that allows the encapsulating node to | |||
Loopback is intended to provide an accelerated alternative to | receive responses from multiple transit nodes along the path in less | |||
Traceroute, that allows the encapsulating node to receive responses | then one round-trip-time, and by sending a single packet. | |||
from multiple transit nodes along the path in less then one round- | ||||
trip-time, and by sending a single packet. | ||||
As illustrated in Figure 1, an IOAM encapsulating node can push an | As illustrated in Figure 1, an IOAM encapsulating node can push an | |||
IOAM encapsulation that includes the Loopback flag onto some or all | IOAM encapsulation that includes the Loopback flag onto some or all | |||
of the packets it forwards. The IOAM transit node and the | of the packets it forwards. The IOAM transit node and the | |||
decapsulating node both creates copies of the packet and loop them | decapsulating node both creates copies of the packet and loop them | |||
back to the encapsulating node. The decapsulating node also | back to the encapsulating node. The decapsulating node also | |||
terminates the IOAM encapsulation, and then forwards the packet | terminates the IOAM encapsulation, and then forwards the packet | |||
towards the destination. The two IOAM looped back copies are | towards the destination. The two IOAM looped back copies are | |||
terminated by the encapsulating node. | terminated by the encapsulating node. | |||
skipping to change at page 4, line 42 ¶ | skipping to change at page 4, line 37 ¶ | |||
Figure 1: Loopback in IOAM. | Figure 1: Loopback in IOAM. | |||
Loopback can be used only if 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. | destination nodes towards the source (encapsulating node) exists. | |||
Specifically, loopback is only applicable in encapsulations in which | Specifically, loopback is only applicable in encapsulations in which | |||
the identity of the encapsulating node is available in the | the identity of the encapsulating node is available in the | |||
encapsulation header. If an encapsulating node receives a looped | encapsulation header. If an encapsulating node receives a looped | |||
back packet that was not originated from the current encapsulating | back packet that was not originated from the current encapsulating | |||
node, the packet is dropped. | node, the packet is dropped. | |||
4.2. Loopback: Encapsulating Node Functionality | 4.1. Loopback: Encapsulating Node Functionality | |||
4.2.1. Overview | ||||
The encapsulating node either generates synthetic packets with an | The encapsulating node either generates synthetic packets with an | |||
IOAM trace option that has the loopback flag set, or sets the loopack | 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 | 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. | either proactively or on-demand, i.e., when a failure is detected. | |||
The encapsulating node also needs to ensure that sufficient space is | The encapsulating node also needs to ensure that sufficient space is | |||
available in the IOAM header for loopback operation, which includes | available in the IOAM header for loopback operation, which includes | |||
transit nodes adding trace data on the original path and then again | transit nodes adding trace data on the original path and then again | |||
on the return path. | on the return path. | |||
An IOAM trace option that has the loopback bit set MUST have the | An IOAM trace option that has the Loopback flag set MUST have the | |||
value '1' in the most significant bit of IOAM-Trace-Type, and '0' in | 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 | 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 | 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 | 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 | single data field per hop is to minimize the impact of amplification | |||
attacks. | attacks. | |||
IOAM encapsulating nodes MUST NOT push an IOAM encapsulation with the | IOAM encapsulating nodes MUST NOT push an IOAM encapsulation with the | |||
Loopback flag onto data packets that already include an IOAM | Loopback flag onto data packets that already include an IOAM | |||
encapsulation. This requirement is intended to prevent IOAM Loopback | encapsulation. This requirement is intended to prevent IOAM Loopback | |||
nesting, where looped back packets may be subject to loopback in a | nesting, where looped back packets may be subject to loopback in a | |||
nested IOAM domain. | nested IOAM domain. | |||
4.2.2. Loopback Packet Selection | 4.1.1. Loopback Packet Selection | |||
If an IOAM encapsulating node incorporates the Loopback flag into all | If an IOAM encapsulating node incorporates the Loopback flag into all | |||
the traffic it forwards it may lead to an excessive amount of looped | the traffic it forwards it may lead to an excessive amount of looped | |||
back packets, which may overload the network and the encapsulating | back packets, which may overload the network and the encapsulating | |||
node. Therefore, an IOAM encapsulating node that supports the | node. Therefore, an IOAM encapsulating node that supports the | |||
Loopback flag MUST support the ability to incorporate the Loopback | Loopback flag MUST support the ability to incorporate the Loopback | |||
flag selectively into a subset of the packets that are forwarded by | flag selectively into a subset of the packets that are forwarded by | |||
it. | it. | |||
Various methods of packet selection and sampling have been previously | Various methods of packet selection and sampling have been previously | |||
skipping to change at page 6, line 5 ¶ | skipping to change at page 5, line 47 ¶ | |||
network operators. If there is an upper bound, M, on the number of | network operators. If there is an upper bound, M, on the number of | |||
IOAM transit nodes in any path in the network, then it is recommended | IOAM transit nodes in any path in the network, then it is recommended | |||
to use an N such that N >> M. The rationale is that a packet that | to use an N such that N >> M. The rationale is that a packet that | |||
includes the Loopback flag triggers a looped back packet from each | includes the Loopback flag triggers a looped back packet from each | |||
IOAM transit node along the path for a total of M looped back | IOAM transit node along the path for a total of M looped back | |||
packets. Thus, if N >> M then the number of looped back packets is | packets. Thus, if N >> M then the number of looped back packets is | |||
significantly lower than the number of data packets forwarded by the | significantly lower than the number of data packets forwarded by the | |||
IOAM encapsulating node. If there is no prior knowledge about the | IOAM encapsulating node. If there is no prior knowledge about the | |||
network topology or size, it is recommended to use N>100. | network topology or size, it is recommended to use N>100. | |||
4.3. Receiving and Processing Loopback | 4.2. Receiving and Processing Loopback | |||
A loopback bit that is set indicates to the transit nodes processing | A Loopback flag that is set indicates to the transit nodes processing | |||
this option that they are to create a copy of the received packet and | this option that they are to create a copy of the received packet and | |||
send the copy back to the source of the packet. In this context 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 is the IOAM encapsulating node, and it is assumed that the | |||
source address is available in the encapsulation header. Thus, the | source address is available in the encapsulation header. Thus, the | |||
source address of the original packet is used as the destination | source address of the original packet is used as the destination | |||
address in the copied packet. The address of the node performing the | address in the copied packet. The address of the node performing the | |||
copy operation is used as the source address. The IOAM transit node | copy operation is used as the source address. The IOAM transit node | |||
pushes the required data field *after* creating the copy of the | pushes the required data field *after* creating the copy of the | |||
packet, in order to allow any egress-dependent information to be set | 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 | based on the egress of the copy rather than the original packet. The | |||
skipping to change at page 6, line 35 ¶ | skipping to change at page 6, line 29 ¶ | |||
Loopback flag MUST support the ability to limit the rate of the | Loopback flag MUST support the ability to limit the rate of the | |||
looped back packets. The rate of looped back packets SHOULD be | looped back packets. The rate of looped back packets SHOULD be | |||
limited so that the number of looped back packets is significantly | limited so that the number of looped back packets is significantly | |||
lower than the number of packets that are forwarded by the device. | lower than the number of packets that are forwarded by the device. | |||
The looped back data rate SHOULD NOT exceed 1/N of the interface | The looped back data rate SHOULD NOT exceed 1/N of the interface | |||
capacity on any of the IOAM node's interfaces. It is recommended to | capacity on any of the IOAM node's interfaces. It is recommended to | |||
use N>100. Depending on the IOAM node's architecture considerations, | use N>100. Depending on the IOAM node's architecture considerations, | |||
the loopback response rate may be limited to a lower number in order | the loopback response rate may be limited to a lower number in order | |||
to avoid loading the IOAM node. | to avoid loading the IOAM node. | |||
4.4. Loopback on the Return Path | 4.3. Loopback on the Return Path | |||
On its way back towards the source, the copied packet is processed | On its way back towards the source, the copied packet is processed | |||
like any other packet with IOAM information, including adding any | like any other packet with IOAM information, including adding any | |||
requested data at each transit node (assuming there is sufficient | requested data at each transit node (assuming there is sufficient | |||
space). | space). | |||
4.5. Terminating a Looped Back Packet | 4.4. Terminating a Looped Back Packet | |||
Once the return packet reaches the IOAM domain boundary, IOAM | Once the return packet reaches the IOAM domain boundary, IOAM | |||
decapsulation occurs as with any other packet containing IOAM | decapsulation occurs as with any other packet containing IOAM | |||
information. Note that the looped back packet does not have the | information. Note that the looped back packet does not have the | |||
L-bit set. The IOAM encapsulating node that initiated the original | L-bit set. The IOAM encapsulating node that initiated the original | |||
loopback packet recognizes a received packet as an IOAM looped-back | 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 | 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 | 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 | IOAM node, it indicates that this is a looped back packet that was | |||
initiated by the current IOAM node, and processed accordingly. If | initiated by the current IOAM node, and processed accordingly. If | |||
skipping to change at page 7, line 22 ¶ | skipping to change at page 7, line 17 ¶ | |||
node that is not the IOAM node that initiated the loopback, the node | 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 | does not process the packet as a loopback; the IOAM encapsulation is | |||
removed, and since the packet does not have any payload it is | removed, and since the packet does not have any payload it is | |||
terminated. In either case, when the packet reaches the IOAM | terminated. In either case, when the packet reaches the IOAM | |||
boundary its IOAM encapsulation is removed, preventing IOAM | boundary its IOAM encapsulation is removed, preventing IOAM | |||
information from leaking out from the IOAM domain. | information from leaking out from the IOAM domain. | |||
5. Active Measurement with IOAM | 5. Active Measurement with IOAM | |||
Active measurement methods [RFC7799] make use of synthetically | Active measurement methods [RFC7799] make use of synthetically | |||
generated packets in order to facilitate the measurement. This | generated packets in order to facilitate measurement. This section | |||
section presents use cases of active measurement using the IOAM | presents use cases of active measurement using the IOAM Active flag. | |||
Active flag. | ||||
The active flag indicates that a packet is used for active | The Active flag indicates that a packet is used for active | |||
measurement. An IOAM decapsulating node that receives a packet with | measurement. An IOAM decapsulating node that receives a packet with | |||
the Active flag set in one of its Trace options must terminate the | the Active flag set in one of its Trace options must terminate the | |||
packet. The active flag is intended to simplify the implementation | packet. The Active flag is intended to simplify the implementation | |||
of decapsulating nodes by indicating that the packet should not be | of decapsulating nodes by indicating that the packet should not be | |||
forwarded further. It is not intended as a replacement for existing | forwarded further. It is not intended as a replacement for existing | |||
active OAM protocols, which may run in higher layers and make use of | active OAM protocols, which may run in higher layers and make use of | |||
the active flag. | the Active flag. | |||
An example of an IOAM deployment scenario is illustrated in Figure 2. | An example of an IOAM deployment scenario is illustrated in Figure 2. | |||
The figure depicts two endpoints, a source and a destination. The | The figure depicts two endpoints, a source and a destination. The | |||
data traffic from the source to the destination is forwarded through | data traffic from the source to the destination is forwarded through | |||
a set of network devices, including an IOAM encapsulating node, which | a set of network devices, including an IOAM encapsulating node, which | |||
incorporates one or more IOAM options, a decapsulating node, which | incorporates one or more IOAM options, a decapsulating node, which | |||
removes the IOAM options, optionally one or more transit nodes. The | removes the IOAM options, optionally one or more transit nodes. The | |||
IOAM options are encapsulated in one of the IOAM encapsulation types, | IOAM options are encapsulated in one of the IOAM encapsulation types, | |||
e.g., [I-D.ietf-sfc-ioam-nsh], or [I-D.ietf-ippm-ioam-ipv6-options]. | e.g., [I-D.ietf-sfc-ioam-nsh], or [I-D.ietf-ippm-ioam-ipv6-options]. | |||
skipping to change at page 8, line 26 ¶ | skipping to change at page 8, line 14 ¶ | |||
This draft focuses on three possible use cases of active measurement | This draft focuses on three possible use cases of active measurement | |||
using IOAM. These use cases are described using the example of | using IOAM. These use cases are described using the example of | |||
Figure 2. | Figure 2. | |||
o Endpoint active measurement: synthetic probe packets are sent | o Endpoint active measurement: synthetic probe packets are sent | |||
between the source and destination, traversing the IOAM domain. | between the source and destination, traversing the IOAM domain. | |||
Since the probe packets are sent between the endpoints, these | Since the probe packets are sent between the endpoints, these | |||
packets are treated as data packets by the IOAM domain, and do not | packets are treated as data packets by the IOAM domain, and do not | |||
require special treatment at the IOAM layer. Specifically, the | require special treatment at the IOAM layer. Specifically, the | |||
active flag is not used in this case, and the IOAM layer needs not | Active flag is not used in this case, and the IOAM layer needs not | |||
be aware that an active measurement mechanism is used at a higher | be aware that an active measurement mechanism is used at a higher | |||
layer. | layer. | |||
o IOAM active measurement using probe packets within the IOAM | o IOAM active measurement using probe packets within the IOAM | |||
domain: probe packets are generated and transmitted by the IOAM | domain: probe packets are generated and transmitted by the IOAM | |||
encapsulating node, and are expected to be terminated by the | encapsulating node, and are expected to be terminated by the | |||
decapsulating node. IOAM data related to probe packets may be | decapsulating node. IOAM data related to probe packets may be | |||
exported by one or more nodes along its path, by an exporting | exported by one or more nodes along its path, by an exporting | |||
protocol that is outside the scope of this document (e.g., | protocol that is outside the scope of this document (e.g., | |||
[I-D.spiegel-ippm-ioam-rawexport]). Probe packets include a Trace | [I-D.spiegel-ippm-ioam-rawexport]). Probe packets include a Trace | |||
skipping to change at page 8, line 50 ¶ | skipping to change at page 8, line 38 ¶ | |||
o IOAM active measurement using replicated data packets: probe | o IOAM active measurement using replicated data packets: probe | |||
packets are created by the encapsulating node by selecting some or | packets are created by the encapsulating node by selecting some or | |||
all of the en route data packets and replicating them. A selected | all of the en route data packets and replicating them. A selected | |||
data packet that is replicated, and its (possibly truncated) copy | data packet that is replicated, and its (possibly truncated) copy | |||
is forwarded with one or more IOAM option, while the original | is forwarded with one or more IOAM option, while the original | |||
packet is forwarded normally, without IOAM options. To the extent | packet is forwarded normally, without IOAM options. To the extent | |||
possible, the original data packet and its replica are forwarded | possible, the original data packet and its replica are forwarded | |||
through the same path. The replica includes a Trace Option that | through the same path. The replica includes a Trace Option that | |||
has its Active flag set, indicating that the decapsulating node | has its Active flag set, indicating that the decapsulating node | |||
should terminate it. It should be noted that the current document | should terminate it. It should be noted that the current document | |||
defines the role of the active flag in allowing the decapsulating | defines the role of the Active flag in allowing the decapsulating | |||
node to terminate the packet, but the replication functionality in | node to terminate the packet, but the replication functionality in | |||
this context is outside the scope of this document. | this context is outside the scope of this document. | |||
If the volume of traffic that incorporates the Active flag is large, | If the volume of traffic that incorporates the Active flag is large, | |||
it may overload the network and the IOAM node(s) that process the | it may overload the network and the IOAM node(s) that process the | |||
active measurement packet. Thus, the rate of the traffic that | active measurement packet. Thus, the rate of the traffic that | |||
includes the Active flag rate SHOULD NOT exceed 1/N of the interface | includes the Active flag rate SHOULD NOT exceed 1/N of the interface | |||
capacity on any of the IOAM node's interfaces. It is recommended to | capacity on any of the IOAM node's interfaces. It is recommended to | |||
use N>100. Depending on the IOAM node's architecture considerations, | use N>100. Depending on the IOAM node's architecture considerations, | |||
the rate of Active-enabled IOAM packets may be limited to a lower | the rate of Active-enabled IOAM packets may be limited to a lower | |||
skipping to change at page 9, line 33 ¶ | skipping to change at page 9, line 22 ¶ | |||
Bit 2 "Active" (A-bit) | Bit 2 "Active" (A-bit) | |||
Note that bit 0 is the most significant bit in the Flags Registry. | Note that bit 0 is the most significant bit in the Flags Registry. | |||
7. Performance Considerations | 7. Performance Considerations | |||
Each of the flags that are defined in this document may have | Each of the flags that are defined in this document may have | |||
performance implications. When using the loopback mechanism a copy | performance implications. When using the loopback mechanism a copy | |||
of the data packet is sent back to the sender, thus generating more | of the data packet is sent back to the sender, thus generating more | |||
traffic than originally sent by the endpoints. Using active | traffic than originally sent by the endpoints. Using active | |||
measurement with the active flag requires the use of synthetic | measurement with the Active flag requires the use of synthetic | |||
(overhead) traffic. | (overhead) traffic. | |||
Each of the mechanisms that use the flags above has a cost in terms | 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 | of the network bandwidth, and may potentially load the node that | |||
analyzes the data. Therefore, it MUST be possible to use each of the | analyzes the data. Therefore, it MUST be possible to use each of the | |||
mechanisms on a subset of the data traffic; an encapsulating node | mechanisms on a subset of the data traffic; an encapsulating node | |||
needs to be able to set the Loopback and Active flag selectively, in | needs to be able to set the Loopback and Active flag selectively, in | |||
a way that considers the effect on the network performance, as | a way that considers the effect on the network performance, as | |||
further discussed in Section 4.2.2 and Section 5. | further discussed in Section 4.1.1 and Section 5. | |||
Transit and decapsulating nodes that support Loopback need to be able | Transit and decapsulating nodes that support Loopback need to be able | |||
to limit the looped back packets (Section 4.3) so as to ensure that | to limit the looped back packets (Section 4.2) so as to ensure that | |||
the mechanisms are used at a rate that does not significantly affect | the mechanisms are used at a rate that does not significantly affect | |||
the network bandwidth, and does not overload the source node in the | the network bandwidth, and does not overload the source node in the | |||
case of loopback. | case of loopback. | |||
8. Security Considerations | 8. Security Considerations | |||
The security considerations of IOAM in general are discussed in | The security considerations of IOAM in general are discussed in | |||
[I-D.ietf-ippm-ioam-data]. Specifically, an attacker may try to use | [I-D.ietf-ippm-ioam-data]. Specifically, an attacker may try to use | |||
the functionality that is defined in this document to attack the | the functionality that is defined in this document to attack the | |||
network. | network. | |||
skipping to change at page 10, line 22 ¶ | skipping to change at page 10, line 9 ¶ | |||
An attacker may attempt to overload network devices by injecting | An attacker may attempt to overload network devices by injecting | |||
synthetic packets that include an IOAM Trace Option with one or more | synthetic packets that include an IOAM Trace Option with one or more | |||
of the flags defined in this document. Similarly, an on-path | of the flags defined in this document. Similarly, an on-path | |||
attacker may maliciously set one or more of the flags of transit | attacker may maliciously set one or more of the flags of transit | |||
packets. | packets. | |||
o Loopback flag: an attacker that sets this flag, either in | o Loopback flag: an attacker that sets this flag, either in | |||
synthetic packets or transit packet, can potentially cause an | synthetic packets or transit packet, can potentially cause an | |||
amplification, since each device along the path creates a copy of | amplification, since each device along the path creates a copy of | |||
the data packet and sends it back to the source. The attacker can | the data packet and sends it back to the source. The attacker can | |||
potentially leverage the loopback flag for a Distributed Denial of | potentially leverage the Loopback flag for a Distributed Denial of | |||
Service (DDoS) attack, as multiple devices send looped-back copies | Service (DDoS) attack, as multiple devices send looped-back copies | |||
of a packet to a single source. | of a packet to a single source. | |||
o Active flag: the impact of synthetic packets with the active flag | o Active flag: the impact of synthetic packets with the Active flag | |||
is no worse than synthetic data packets in which the Active flag | is no worse than synthetic data packets in which the Active flag | |||
is not set. By setting the active flag in en route packets an | is not set. By setting the Active flag in en route packets an | |||
attacker can prevent these packets from reaching their | attacker can prevent these packets from reaching their | |||
destination, since the packet is terminated by the decapsulating | destination, since the packet is terminated by the decapsulating | |||
device; however, note that an on-path attacker may achieve the | device; however, note that an on-path attacker may achieve the | |||
same goal by changing the destination address of a packet. | same goal by changing the destination address of a packet. | |||
Another potential threat is amplification; if an attacker causes | Another potential threat is amplification; if an attacker causes | |||
transit switches to replicate more packets than they are intended | transit switches to replicate more packets than they are intended | |||
to replicate, either by setting the Active flag or by sending | to replicate, either by setting the Active flag or by sending | |||
synthetic packets, then traffic is amplified, causing bandwidth | synthetic packets, then traffic is amplified, causing bandwidth | |||
degredation. As mentioned in Section 5, the specification of the | degredation. As mentioned in Section 5, the specification of the | |||
replication mechanism is not within the scope of this document. A | replication mechanism is not within the scope of this document. A | |||
skipping to change at page 11, line 9 ¶ | skipping to change at page 10, line 45 ¶ | |||
worse than in the conventional case. | worse than in the conventional case. | |||
In order to mitigate the performance-related attacks described above, | In order to mitigate the performance-related attacks described above, | |||
as described in Section 7 it should be possible for IOAM-enabled | as described in Section 7 it should be possible for IOAM-enabled | |||
devices to selectively apply the mechanisms that use the flags | devices to selectively apply the mechanisms that use the flags | |||
defined in this document to a subset of the traffic, and to limit the | defined in this document to a subset of the traffic, and to limit the | |||
performance of synthetically generated packets to a configurable | performance of synthetically generated packets to a configurable | |||
rate. Specifically, IOAM nodes should be able to: | rate. Specifically, IOAM nodes should be able to: | |||
o Limit the rate of IOAM packets with the Loopback flag (IOAM | o Limit the rate of IOAM packets with the Loopback flag (IOAM | |||
encapsulating nodes), as discussed in Section 4.2.2. | encapsulating nodes), as discussed in Section 4.1.1. | |||
o Limit the rate of looped back packets (IOAM transit and | o Limit the rate of looped back packets (IOAM transit and | |||
decapsulating nodes), as discussed in Section 4.3. | decapsulating nodes), as discussed in Section 4.2. | |||
o Limit the rate of IOAM packets with the Active flag (IOAM | o Limit the rate of IOAM packets with the Active flag (IOAM | |||
encapsulating nodes), as discussed in Section 5. | encapsulating nodes), as discussed in Section 5. | |||
As defined in Section 4, transit nodes that process a packet with the | As defined in Section 4, transit nodes that process a packet with the | |||
Loopback flag only add a single data field, and truncate any payload | Loopback flag only add a single data field, and truncate any payload | |||
that follows the IOAM option(s), thus significanly limiting the | that follows the IOAM option(s), thus significanly limiting the | |||
possible impact of an amplification attack. | possible impact of an amplification attack. | |||
IOAM is assumed to be deployed in a restricted administrative domain, | IOAM is assumed to be deployed in a restricted administrative domain, | |||
skipping to change at page 12, line 12 ¶ | skipping to change at page 11, line 45 ¶ | |||
Selection Techniques", RFC 7014, DOI 10.17487/RFC7014, | Selection Techniques", RFC 7014, DOI 10.17487/RFC7014, | |||
September 2013, <https://www.rfc-editor.org/info/rfc7014>. | September 2013, <https://www.rfc-editor.org/info/rfc7014>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
9.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-ippm-ioam-ipv6-options] | [I-D.ietf-ippm-ioam-ipv6-options] | |||
Bhandari, S., Brockners, F., Pignataro, C., Gredler, H., | Bhandari, S. and F. Brockners, "In-situ OAM IPv6 Options", | |||
Leddy, J., Youell, S., Mizrahi, T., Kfir, A., Gafni, B., | draft-ietf-ippm-ioam-ipv6-options-06 (work in progress), | |||
Lapukhov, P., Spiegel, M., Krishnan, S., Asati, R., and M. | July 2021. | |||
Smith, "In-situ OAM IPv6 Options", draft-ietf-ippm-ioam- | ||||
ipv6-options-05 (work in progress), February 2021. | ||||
[I-D.ietf-sfc-ioam-nsh] | [I-D.ietf-sfc-ioam-nsh] | |||
Brockners, F. and S. Bhandari, "Network Service Header | Brockners, F. and S. Bhandari, "Network Service Header | |||
(NSH) Encapsulation for In-situ OAM (IOAM) Data", draft- | (NSH) Encapsulation for In-situ OAM (IOAM) Data", draft- | |||
ietf-sfc-ioam-nsh-05 (work in progress), December 2020. | ietf-sfc-ioam-nsh-06 (work in progress), July 2021. | |||
[I-D.spiegel-ippm-ioam-rawexport] | [I-D.spiegel-ippm-ioam-rawexport] | |||
Spiegel, M., Brockners, F., Bhandari, S., and R. | Spiegel, M., Brockners, F., Bhandari, S., and R. | |||
Sivakolundu, "In-situ OAM raw data export with IPFIX", | Sivakolundu, "In-situ OAM raw data export with IPFIX", | |||
draft-spiegel-ippm-ioam-rawexport-05 (work in progress), | draft-spiegel-ippm-ioam-rawexport-05 (work in progress), | |||
July 2021. | July 2021. | |||
[RFC7799] Morton, A., "Active and Passive Metrics and Methods (with | [RFC7799] Morton, A., "Active and Passive Metrics and Methods (with | |||
Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, | Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, | |||
May 2016, <https://www.rfc-editor.org/info/rfc7799>. | May 2016, <https://www.rfc-editor.org/info/rfc7799>. | |||
End of changes. 35 change blocks. | ||||
67 lines changed or deleted | 59 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |