IPPM Working Group | X. Min |
Internet-Draft | G. Mirsky |
Intended status: Standards Track | ZTE |
Expires: May 1, 2018 | October 28, 2017 |
Extended OAM to Carry In-situ OAM Configuration Data
draft-xiao-ippm-ioam-conf-state-00
This document describes an extension for OAM packet such as IP Ping (ICMP [RFC0792] or ICMPv6 [RFC4443]) and MPLS LSP Ping [RFC8029], which can be used within an IOAM domain, allowing the IOAM encapsulating node to acquire IOAM configuration data of each IOAM transit node and/or IOAM decapsulating node easily and dynamically.
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 May 1, 2018.
Copyright (c) 2017 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 carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
The Data Fields for In-situ OAM (IOAM) [I-D.ietf-ippm-ioam-data] defines data fields for IOAM which records OAM information within the packet while the packet traverses a particular network domain, which is called an IOAM domain. IOAM can be used to complement OAM mechanisms based on e.g. ICMP or other types of probe packets, and IOAM mechanisms can be leveraged where mechanisms using e.g. ICMP do not apply or do not offer the desired results.
As specified in [I-D.ietf-ippm-ioam-data], within the IOAM-domain, the IOAM data may be updated by network nodes that the packet traverses. The device which adds an IOAM data container to the packet to capture IOAM data is called the "IOAM encapsulating node", whereas the device which removes the IOAM data container is referred to as the "IOAM decapsulating node". Nodes within the domain which are aware of IOAM data and read and/or write or process the IOAM data are called "IOAM transit nodes". Both the IOAM encapsulating node and the decapsulating node are referred to as domain edge devices, which can be hosts or network devices.
In order to add accurate IOAM data container to the packet, the IOAM encapsulating node needs to know IOAM configurations at the IOAM transit nodes in a whole, e.g. how many IOAM transit nodes will add tracing data and what kinds of data fields will be added. Static configuration at the IOAM encapsulating node is a way to address this, but it's uneasy and inflexible, especially when the IOAM encapsulating node is a host. This document describes an extension for OAM packet such as IP Ping (ICMP [RFC0792] or ICMPv6 [RFC4443]) and MPLS LSP Ping [RFC8029], which can be used within an IOAM domain, allowing the IOAM encapsulating node to acquire IOAM configuration data of each IOAM transit node and/or IOAM decapsulating node easily and dynamically.
E2E: Edge to Edge
ICMP: Internet Control Message Protocol
IOAM: In-situ Operations, Administration, and Maintenance
LSP: Label Switched Path
MPLS: Multi-Protocol Label Switching
OAM: Operations, Administration, and Maintenance
POT: Proof of Transit
TTL: Time to Live
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.
IOAM Configuration Data uses TLV (Type-Length-Value tuple) which have the following format:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = IOAM Configuration Data| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Value | . . . . . . | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: IOAM Configuration Data TLV
When this TLV is present in the OAM packet sent by an IOAM encapsulating node, it means that the IOAM encapsulating node requests the receiving node to reply with its IOAM configuration data. If there is no IOAM configuration data to report by the receiving node, then this TLV SHOULD be ignored by the receiving node.
When this TLV is present in the OAM packet sent by an IOAM transit node and/or an IOAM decapsulating node, other than an IOAM encapsulating node, it means that IOAM function is enabled at this node and this TLV contains IOAM configuration data of the sender. Note that the IOAM encapsulating node or the IOAM decapsulating node can also be an IOAM transit node.
Type is set to the value (to be assigned by IANA) which indicates that it's an IOAM Configuration Data TLV.
Length is the length of the Value field in octets. When this TLV is present in the OAM packet sent by an IOAM encapsulating node, the Length field should be set to 0 and no Value field is included in the TLV, otherwise, the Length field must not be set to 0.
Value is zero padded to align to a 4-octet boundary, and sub-TLVs MAY be contained in this field. Based on the data fields for IOAM specified in [I-D.ietf-ippm-ioam-data], four new sub-TLVs are defined in this document.
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub-type = Tracing Conf Data | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |F| IOAM-Trace-Type |NodeLen| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: IOAM Tracing Configuration Data Sub-TLV
When this sub-TLV is present in the IOAM Configuration Data TLV, it means that the sending node is an IOAM transit node and IOAM tracing function is enabled at this IOAM transit node.
Sub-type is set to the value (to be assigned by IANA) which indicates that it's an IOAM Tracing Configuration Data sub-TLV.
Length is the length of the sub-TLV's Value field in octets, and MUST be set to 4.
F bit is specified to indicate whether pre-allocated trace or incremental trace is enabled. F bit is set to 1 when pre-allocated trace is enabled and set to 0 when incremental trace is enabled . The meaning and difference of pre-allocated trace and incremental trace are described in section 4.1 of [I-D.ietf-ippm-ioam-data]. If the IOAM encapsulating node receives different F bit value from different IOAM transit node, then the IOAM encapsulating node will reserve data space in the IOAM header for the IOAM transit node that set F bit to 1, and the IOAM encapsulating node won't reserve data space in the IOAM header for the IOAM transit node that set F bit to 0.
IOAM-Trace-Type field has the same name, length and definition as what's specified in both section 4.1.1 and section 4.1.2 of [I-D.ietf-ippm-ioam-data].
NodeLen field has the same name, length and definition as what's specified in both section 4.1.1 and section 4.1.2 of [I-D.ietf-ippm-ioam-data].
Reserved field is used for future standardization.
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub-type = POT Conf Data | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |IOAM-POT-Type|P|SoR| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: IOAM Proof of Transit Configuration Data Sub-TLV
When this sub-TLV is present in the IOAM Configuration Data TLV, it means that the sending node is an IOAM transit node and IOAM proof of transit function is enabled at this IOAM transit node.
Sub-type is set to the value (to be assigned by IANA) which indicates that it's an IOAM Proof of Transit Configuration Data sub-TLV.
Length is the length of the sub-TLV's Value field in octets, and MUST be set to 4.
IOAM-POT-Type field and P bit have the same name, length and definition as what's specified in section 4.2 of [I-D.ietf-ippm-ioam-data]. If the IOAM encapsulating node receives IOAM-POT-Type and/or P bit values from an IOAM transit node that are different from its own, then the IOAM encapsulating node MAY choose to abandon the proof of transit function or to select one kind of IOAM-POT-Type and P bit, it's based on the policy applied to the IOAM encapsulating node.
SoR field has two bits which means the size of "Random" and "Cumulative" data, which are specified in section 4.2 of [I-D.ietf-ippm-ioam-data]. This document defines SoR as follow:
Reserved field is used for future standardization.
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub-type = E2E Conf Data | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IOAM-E2E-Type | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: IOAM Edge to Edge Configuration Data Sub-TLV
When this sub-TLV is present in the IOAM Configuration Data TLV, it means that the sending node is an IOAM decapsulating node and IOAM edge to edge function is enabled at this IOAM decapsulating node. That is to say, if the IOAM encapsulating node receives this sub-TLV, the IOAM encapsulating node can determine that the node which sends this sub-TLV is an IOAM decapsulating node.
Sub-type is set to the value (to be assigned by IANA) which indicates that it's an IOAM Edge to Edge Configuration Data sub-TLV.
Length is the length of the sub-TLV's Value field in octets, and MUST be set to 4.
IOAM-E2E-Type field has the same name, length and definition as what's specified in section 4.3 of [I-D.ietf-ippm-ioam-data].
Reserved field is used for future standardization.
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub-type = End of Domain | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: IOAM End of Domain Sub-TLV
When this sub-TLV is present in the IOAM Configuration Data TLV, it means that the sending node is an IOAM decapsulating node. That is to say, if the IOAM encapsulating node receives this sub-TLV, the IOAM encapsulating node can determine that the node which sends this sub-TLV is an IOAM decapsulating node. When the IOAM Edge-to-Edge Configuration Data sub-TLV is present in the IOAM Configuration Data TLV sent by the IOAM decapsulating node, the IOAM End-of-Domain sub-TLV doesn't need to be present in the same IOAM Configuration Data TLV, otherwise the End-of-Domain sub-TLV MUST be present in the IOAM Configuration Data TLV sent by the IOAM decapsulating node. Since both the IOAM Edge-to-Edge Configuratioin Data sub-TLV and the IOAM End-of-Domain sub-TLV can be used to indicate that the sending node is an IOAM decapsulating node, it's recommended to include only the IOAM Edge-to-Edge Configuration Data sub-TLV if IOAM edge to edge function is enabled at this IOAM decapsulating node.
Length is the length of the sub-TLV's Value field in octets, and MUST be set to 0.
Once the IOAM encapsulating node is triggered to acquire IOAM configuration data of each IOAM transit node and/or IOAM decapsulating node, the IOAM encapsulating node will send a batch of OAM probe packets that include the IOAM Configuration Data TLV , first with TTL equal to 1 to reach the nearest node which may be an IOAM transit node or not, then with TTL equal to 2 to reach the second nearest node which also may be an IOAM transit node or not, on the analogy of this to increase 1 to TTL every time the IOAM encapsulating node sends a new OAM probe packet, until the IOAM encapsulating node receives OAM probe reply packet sent by the IOAM decapsulating node, which must contain the IOAM Configuration Data TLV including the IOAM Edge-to-Edge Configuration Data sub-TLV or the IOAM End-of-Domain sub-TLV.
The IOAM encapsulating node may be triggered by the device administrator, the network management, the network controller, or even the live user traffic, and the specific triggering mechanisms are outside the scope of this document.
Each IOAM transit node and/or IOAM decapsulating node that receives an OAM probe packet containing the IOAM Configuration Data TLV will send an OAM probe reply packet to the IOAM encapsulating node, and within the OAM probe reply packet there must be an IOAM Configuration Data TLV containing one or more sub-TLVs. The IOAM Configuration Data TLV contained in the OAM probe packet will be ignored by the receiving node that is unaware of IOAM.
Knowledge of the state of the IOAM domain may be considered confidential. Implementations SHOULD provide a means of filtering the addresses to which echo reply messages, ICMP/ICMPv6 or MPLS LSP Ping, may be sent.
To be added.
Editor's Note: For different OAM packet such as IP Ping (ICMP [RFC0792] or ICMPv6 [RFC4443]) and MPLS LSP Ping [RFC8029] different Type and Sub-type will be requested from IANA.
To be added.