| < draft-wang-ippm-stamp-hbh-extensions-00.txt | draft-wang-ippm-stamp-hbh-extensions-01.txt > | |||
|---|---|---|---|---|
| IP Performance Measurement Group Y. Wang | IP Performance Measurement Group Y. Wang | |||
| Internet-Draft T. Zhou | Internet-Draft T. Zhou | |||
| Intended status: Standards Track Huawei | Intended status: Standards Track Huawei | |||
| Expires: January 11, 2021 July 10, 2020 | Expires: April 30, 2021 October 27, 2020 | |||
| Simple Two-way Active Measurement Protocol Extensions for Hop-by-Hop OAM | Simple Two-way Active Measurement Protocol Extensions for Hop-by-Hop OAM | |||
| Data Collection | Data Collection | |||
| draft-wang-ippm-stamp-hbh-extensions-00 | draft-wang-ippm-stamp-hbh-extensions-01 | |||
| Abstract | Abstract | |||
| This document defines optional TLVs which are carried in Simple Two- | This document defines optional TLVs which are carried in Simple Two- | |||
| way Active Measurement Protocol (STAMP) test packets to enhance the | way Active Measurement Protocol (STAMP) test packets to enhance the | |||
| STAMP base functions. Such extensions to STAMP enable OAM data | STAMP base functions. Such extensions to STAMP enable OAM data | |||
| collection at every node that STAMP test packets traverse. | measurement and collection at every node and link along a STAMP test | |||
| packet's delivery path. | ||||
| Requirements Language | 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| 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 | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 41 ¶ | |||
| 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 11, 2021. | This Internet-Draft will expire on April 30, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 29 ¶ | |||
| 3.3. Backward HbH Delay TLV . . . . . . . . . . . . . . . . . 7 | 3.3. Backward HbH Delay TLV . . . . . . . . . . . . . . . . . 7 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 9 | 6.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1. Introduction | 1. Introduction | |||
| Simple Two-way Active Measurement Protocol (STAMP) enables the | Simple Two-way Active Measurement Protocol (STAMP) [RFC8762] enables | |||
| measurement of both one-way and round-trip performance metrics, such | the measurement of both one-way and round-trip performance metrics, | |||
| as delay, delay variation, and packet loss [RFC8762]. In the STAMP | such as delay, delay variation, and packet loss. In the STAMP | |||
| session, the bidirectional packet flow is transmited between STAMP | session, the bidirectional packet flow is transmited between STAMP | |||
| Session-Sender and STAMP Session-Reflector. The STAMP Session- | Session-Sender and STAMP Session-Reflector. The STAMP Session- | |||
| Reflector receives packets transmited from Session-Sender and acts | Reflector receives test packets transmited from Session-Sender and | |||
| according to the configuration. However, the performance of | acts according to the configuration. However, the performance of | |||
| intermediate nodes that STAMP test packets traverse are invisible. | intermediate nodes and links that STAMP test packets traverse are | |||
| And the STAMP instance must be configured at every intermediate node | invisible. In additon, the STAMP instance must be configured at | |||
| to measure the performance per node that test packets traverse, which | every intermediate node to measure the performance per node and link | |||
| increases the complexity of OAM in large-scale networks. | that test packets traverse, which increases the complexity of OAM in | |||
| large-scale networks. | ||||
| This document extents optional TLVs to STAMP which enable OAM data | STAMP Extensions have defined several optional TLVs to enhance the | |||
| collection at every node that STAMP test packets traverse, such as | STAMP base functions. These optional TLVs are defined as updates of | |||
| measurement of delay, packet loss, delay variation per hop, and | the STAMP Optional Extensions [I-D.ietf-ippm-stamp-option-tlv]. This | |||
| record of route information. STAMP Extensions have defined several | document extents optional TLVs to STAMP, which enable performance | |||
| optionnal TLVs to enhance the STAMP base functions. These optional | measurement at every intermediate node and link along a STAMP test | |||
| TLVs are defined as updates of the STAMP Optional Extensions | packet's delivery path, such as measurement of delay, delay | |||
| [I-D.ietf-ippm-stamp-option-tlv]. The following sections describe | variation, packet loss, and record of route information. The | |||
| the use of TLVs for STAMP that extend STAMP capability beyond its | following sections describe the use of TLVs for STAMP that extend | |||
| base specification. | STAMP capability beyond its base specification. | |||
| 2. Terminology | 2. Terminology | |||
| Following are abbreviations used in this document: | Following are abbreviations used in this document: | |||
| STAMP: Simple Two-way Active Measurement Protocol. | STAMP: Simple Two-way Active Measurement Protocol. | |||
| IOAM: In-situ OAM. | IOAM: In-situ OAM. | |||
| HbH: Hop-by-Hop. | HbH: Hop-by-Hop. | |||
| 3. TLV Extensions to STAMP | 3. TLV Extensions to STAMP | |||
| 3.1. IOAM Tracing Data TLV | 3.1. IOAM Tracing Data TLV | |||
| STAMP Session-Sender MAY place the IOAM Tracing Data TLV in STAMP | STAMP Session-Sender MAY place the IOAM Tracing Data TLV in Session- | |||
| Session-Sender test packets to record the IOAM tracing data of every | Sender test packets to record the IOAM tracing data at every IOAM | |||
| IOAM capable node that the STAMP Session-Sender test packet traverses | capable node along the Session-Sender test packet's forward-delivery | |||
| in the forward path. As STAMP uses symmetrical packets, the Session- | path. As STAMP uses symmetrical packets, the Session-Sender MUST set | |||
| Sender MUST set the Length value as a multiple of 4 octets according | the Length value as a multiple of 4 octets according to the number of | |||
| to the number of intermediate nodes and the IOAM-Trace-Type (i.e. a | nodes and the IOAM-Trace-Type (i.e. a 24-bit identifier which | |||
| 24-bit identifier which specifies which data types are used in the | specifies which data types are used in the node data list | |||
| node data list [I-D.ietf-ippm-ioam-data]). And the node-data-copied- | [I-D.ietf-ippm-ioam-data]). And the node-data-copied-list fields | |||
| list fields MUST be set to zero upon Session-Sender test packets | MUST be set to zero upon Session-Sender test packets transmission and | |||
| transmission and ignored upon receipt. | ignored upon receipt. | |||
| The IOAM Tracing Data TLV has the following format: | The IOAM Tracing Data TLV has the following format: | |||
| 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 | |||
| +-------------------------------+-------------------------------+ | +-------------------------------+-------------------------------+ | |||
| | IOAM-Tracing-Data Type | Length | | | IOAM-Tracing-Data Type | Length | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | node data copied list [0] | | | node data copied list [0] | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| skipping to change at page 3, line 50 ¶ | skipping to change at page 3, line 50 ¶ | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| ~ ... ~ | ~ ... ~ | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | node data copied list [n] | | | node data copied list [n] | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| Fig. 1 IOAM Tracing Data TLV Format | Fig. 1 IOAM Tracing Data TLV Format | |||
| where fields are defined as the following: | where fields are defined as the following: | |||
| IOAM-Tracing-Data Type: To be assigned by IANA. | o IOAM-Tracing-Data Type: To be assigned by IANA. | |||
| Length: A 2-octet field that indicates the length of the value field | o Length: A 2-octet field that indicates the length of the value | |||
| in octets and equal to a multiple of 4 octets dependent on the number | field in octets and equal to a multiple of 4 octets dependent on | |||
| of nodes and IOAM-Trace-Type bits. | the number of nodes and IOAM-Trace-Type bits. | |||
| node data copied list [0..n]: A variable-length field, which record | o node data copied list [0..n]: A variable-length field, which | |||
| the copied content of each node data element determined by the IOAM- | record the copied content of each node data element determined by | |||
| Trace-Type. The order of packing the data fields in each node data | the IOAM-Trace-Type. The order of packing the data fields in each | |||
| element follows the bit order of the IOAM-Trace-Type field (see | node data element follows the bit order of the IOAM-Trace-Type | |||
| section 4.4.1 of [I-D.ietf-ippm-ioam-data]). The last node data | field (see section 4.4.1 of [I-D.ietf-ippm-ioam-data]). The last | |||
| element in this list is the node data of the first IOAM trace capable | node data element in this list is the node data of the first IOAM | |||
| node in the path. | trace capable node in the path. | |||
| In an IOAM domain, the STAMP Session-Sender and the STAMP Session- | In an IOAM domain, the STAMP Session-Sender and the STAMP Session- | |||
| Reflector MAY be configured as the IOAM encapsulating node and the | Reflector MAY be configured as the IOAM encapsulating node and the | |||
| IOAM decapsulating node. The STAMP Session-Sender (i.e. the IOAM | IOAM decapsulating node. The STAMP Session-Sender (i.e. the IOAM | |||
| encapsulating node) generates the STAMP test packet with the IOAM | encapsulating node) generates the test packet with the IOAM Tracing | |||
| Tracing Data TLV. For applying the IOAM Trace-Option functionalities | Data TLV. For applying the IOAM Trace-Option functionalities to the | |||
| to the STAMP Session-Sender test packet, the STAMP Session-Sender | Session-Sender test packet, the Session-Sender must inserts the | |||
| must inserts the "trace option header" and allocate an node-data-list | "trace option header" and allocate an node-data-list array | |||
| array [I-D.ietf-ippm-ioam-data] into "option data" fields of Hop-by- | [I-D.ietf-ippm-ioam-data] into "option data" fields of Hop-by-Hop | |||
| Hop Options header in IPv6 packets [I-D.ietf-ippm-ioam-ipv6-options], | Options header in IPv6 packets [I-D.ietf-ippm-ioam-ipv6-options], and | |||
| and sets the corresponding bits in the IOAM-Trace-Type. Also, the | sets the corresponding bits in the IOAM-Trace-Type. Also, the STAMP | |||
| STAMP Session-Sender allocates an node-data-list array which is used | Session-Sender allocates a node-data-copied-list array in the | |||
| to store OAM data retrieved from every IOAM transit nodes while the | optional IOAM Tracing Data TLV to store OAM data retrieved from every | |||
| Session-Sender test packets traverse the path. | IOAM transit node along the Session-Sender test packet's delivery | |||
| path. | ||||
| When the STAMP Session-Reflector (i.e. the IOAM decapsulating node) | When the STAMP Session-Reflector (i.e. the IOAM decapsulating node) | |||
| received the STAMP Session-Sender test packet with the IOAM-Tracing- | received the STAMP Session-Sender test packet with the IOAM-Tracing- | |||
| Data TLV, it MUST copy the node-data-list array into the node-data- | Data TLV, it MUST copy the node-data-list array into the node-data- | |||
| copied-list array carried in the reflected test packet before | copied-list array carried in the Session-Reflector test packet before | |||
| transmission and MUST remove the IOAM-Data-Fields. Hence, using | transmission and MUST remove the IOAM-Data-Fields. Hence, carrying | |||
| IOAM-Tracing-Data TLV in STAMP testing enables hop-by-hop OAM data | IOAM-Tracing-Data TLV in STAMP test packets enables OAM data | |||
| collection. | collection and measurement at every node and link. | |||
| Also the STAMP Session-Reflector MAY be configured as IOAM | Also the STAMP Session-Reflector MAY be configured as IOAM | |||
| encapsulating node to apply the IOAM Trace-Option functionalities to | encapsulating node to apply the IOAM Trace-Option functionalities to | |||
| the reflected test packet. Hence, hop-by-hop OAM data collection can | the Session-Reflector test packet. Hence, OAM data collection and | |||
| be also enabled for the backward path that the reflected packets | measurement can be also enabled at every node and link along the | |||
| traverse. When the reflected packet arrives at the Session-Sender | Session-Reflector test packet's backward delivery path. When the | |||
| receives, it can be either locally processed or sent to the | reflected packet arrives at the Session-Sender, it can be either | |||
| centralized controller. | locally processed or sent to the centralized controller. | |||
| 3.2. Forward HbH Delay TLV | 3.2. Forward HbH Delay TLV | |||
| STAMP Session-Sender MAY place the Forward HbH Delay TLV in Session- | STAMP Session-Sender MAY place the Forward HbH Delay TLV in Session- | |||
| Sender test packets to record the ingress timestamp and engress | Sender test packets to record the ingress timestamp and the egress | |||
| timestamp at every intermediate nodes in the forward path that STAMP | timestamp at every intermediate nodes along the Session-Sender test | |||
| test packets traverse. The Session-Sender MUST set the Length value | packet's forward path. The Session-Sender MUST set the Length value | |||
| according to the number of intermediate nodes in the forward path and | according to the number of explicitly listed intermediate nodes in | |||
| the timestamp formats. There are several methods to synchronize the | the forward path and the timestamp formats. There are several | |||
| clock, e.g., Network Time Protocol (NTP) [RFC5905]. For example, if | methods to synchronize the clock, e.g., Network Time Protocol (NTP) | |||
| a 64-bit timestamp format defined in NTP is used, the Length value | [RFC5905]. For example, if a 64-bit timestamp format defined in NTP | |||
| MUST be set as a multiple of 8 octets. The Timestamp Tuple list | is used, the Length value MUST be set as a multiple of 8 octets. The | |||
| (Ingress Timestamp [0..n], Engress Timestamp [0..n]) fields MUST be | Timestamp Tuple list [1..n] fields MUST be set to zero upon Session- | |||
| set to zero upon Session-Sender test packets transmission and ignored | Sender test packets transmission and ignored upon receipt. | |||
| upon receipt. | ||||
| The Forward HbH Delay TLV has the following format: | The Forward HbH Delay TLV has the following format: | |||
| 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 | |||
| +-------------------------------+---------------+---------------+ | +-------------------------------+---------------+---------------+ | |||
| | Forward HbH Delay Type | Length | Node Left | | | Forward HbH Delay Type | Length | Node Left | | |||
| +-------------------------------+---------------+---------------+ | +-------------------------------+---------------+---------------+ | |||
| | Ingress Timestamp [0] | | ||||
| | | | | | | |||
| +---------------------------------------------------------------+ | | Timestamp Tuple list [1] | | |||
| | Engress Timestamp [0] | | | | | |||
| | | | | | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| ~ ... ~ | ~ ... ~ | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | Ingress Timestamp [n] | | ||||
| | | | | | | |||
| +---------------------------------------------------------------+ | | Timestamp Tuple list [n] | | |||
| | Engress Timestamp [n] | | | | | |||
| | | | | | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| Fig. 2 Forward HbH Delay TLV Format | Fig. 2 Forward HbH Delay TLV Format | |||
| where fields are defined as the following: | where fields are defined as the following: | |||
| Forward HbH Delay Type: To be assigned by IANA. | o Forward HbH Delay Type: To be assigned by IANA. | |||
| Length: A 8-bit field that indicates the length of the value portion | o Length: A 8-bit field that indicates the length of the value | |||
| in octets and MUST be a multiple of 8 octets according to the number | portion in octets and MUST be a multiple of 8 octets according to | |||
| of intermediate nodes in the forward path. | the number of explicitly listed intermediate nodes in the forward | |||
| path. | ||||
| Node Left: A 8-bit unsigned integer, which indicates the number of | o Node Left: A 8-bit unsigned integer, which indicates the number of | |||
| intermediate nodes remaining. That is, number of exlicitly listed | intermediate nodes remaining. That is, number of exlicitly listed | |||
| intermediate nodes still to be visited before reaching the | intermediate nodes still to be visited before reaching the | |||
| destination node in the forward path. The Node Left field is set to | destination node in the forward path. The Node Left field is set | |||
| n-1, where n is the number of intermediate nodes. | to n-1, where n is the number of intermediate nodes. | |||
| Timestamp Tuple list (Ingress Timestamp [0..n], Engress Timestamp | o Timestamp Tuple list [1..n]: A variable-length field, which record | |||
| [0..n]): A variable-length field, which record the timestamp when the | the timestamp when the Session-Sender test packet is received at | |||
| Session-Sender test packet is received at the ingress of the n-th | the ingress of the n-th intermediate node Ingress Timestamp [n] | |||
| intermediate node and the timestamp when the Session-Sender test | and the timestamp when the Session-Sender test packet is sent at | |||
| packet is sent at engress of the n-th intermediate node. For | egress of the n-th intermediate node Engress Timestamp [n]. For | |||
| example, if a 64-bit timestamp format defined in NTP is used, the | example, if a 64-bit timestamp format defined in NTP is used, the | |||
| length of each Timestamp tuple (Ingress Timestamp [n], Engress | length of each Timestamp tuple (Ingress Timestamp [n], Engress | |||
| Timestamp [n]) must be 16 octets. The Timestamp Tuple list is | Timestamp [n]) must be 16 octets. The Timestamp Tuple list is | |||
| encoded starting from the last intermediate node which is exlicitly | encoded starting from the last intermediate node which is | |||
| listed. That is, the first element of the Timestamp Tuple (Ingress | exlicitly listed. That is, the first element of the Timestamp | |||
| Timestamp [0], Engress Timestamp [0]) records the timestamps when the | Tuple list [1] records the timestamps when the Session-Sender test | |||
| Session-Sender test packet received and forwarded at the last | packet received and forwarded at the last intermediate node of a | |||
| intermediate node of a explicit path, the second element records the | explicit path, the second element records the penultimate | |||
| penultimate Timestamp Tuple when the Session-Sender test packet | Timestamp Tuple when the Session-Sender test packet received and | |||
| received and forwarded at the penultimate intermediate node of a | forwarded at the penultimate intermediate node of a explicit path, | |||
| explicit path, and so on. | and so on. | |||
| In the following reference topology, Node N1, N2, N3, N4 and N5 are | In the following reference topology, Node N1, N2, N3, N4 and N5 are | |||
| SRv6 capable nodes. Node N1 is the STAMP Session-Sender and Node N5 | SRv6 capable nodes. Node N1 is the STAMP Session-Sender and Node N5 | |||
| is the STAMP Session-Reflector. T1 is the Timestamp taken by the | is the STAMP Session-Reflector. T1 is the Timestamp taken by the | |||
| Session-Sender (i.e. N1) at the start of transmitting the test | Session-Sender (i.e. N1) at the start of transmitting the test | |||
| packet. T2 is the Receive Timestamp when the test packet was | packet. T2 is the Receive Timestamp when the test packet was | |||
| received by the Session-Reflector (i.e. N5). T3 is the Timestamp | received by the Session-Reflector (i.e. N5). T3 is the Timestamp | |||
| taken by the Session-Reflector at the start of transmitting the test | taken by the Session-Reflector at the start of transmitting the test | |||
| packet. T4 is the Receive Timestamp when the test packet was | packet. T4 is the Receive Timestamp when the test packet was | |||
| received by the Session-Sender. Timestamp tuples (t1,t2), (t3,t4) | received by the Session-Sender. Timestamp tuples (t1,t2), (t3,t4) | |||
| skipping to change at page 6, line 47 ¶ | skipping to change at page 6, line 44 ¶ | |||
| ====== ====== ====== ====== ====== | ====== ====== ====== ====== ====== | |||
| | | T1--->t1 | | t2--->t3 | | t4--->t5 | | t6--->T2| | | | | T1--->t1 | | t2--->t3 | | t4--->t5 | | t6--->T2| | | |||
| | N1 |==========| N2 |==========| N3 |==========| N4 |=========| N5 | | | N1 |==========| N2 |==========| N3 |==========| N4 |=========| N5 | | |||
| | | T4<---t12| |t11<---t10| | t9<---t8 | | t7<---T3| | | | | T4<---t12| |t11<---t10| | t9<---t8 | | t7<---T3| | | |||
| ====== ====== ====== ====== ====== | ====== ====== ====== ====== ====== | |||
| Fig. 3 Reference Topology | Fig. 3 Reference Topology | |||
| The STAMP Session-Sender (i.e. Node N1) generates the STAMP test | The STAMP Session-Sender (i.e. Node N1) generates the STAMP test | |||
| packet with the Forward HbH Delay TLV. When an intermediate node | packet with the Forward HbH Delay TLV. When an intermediate node | |||
| receives the STAMP test packet, the node sends the packet to control | receives the STAMP test packet, the node punts the packet to control | |||
| plane and fills the Ingress Timestamp [n] filed in the Forward HbH | plane and fills the Ingress Timestamp [n] filed in the Timestamp | |||
| Delay TLV. Then the time taken by the intermediate node transmitting | Tuple list [n]. Then the time taken by the intermediate node | |||
| the test packet is recorded in to Engress Timestamp [n] field in the | transmitting the test packet is recorded in to Engress Timestamp [n] | |||
| Forward HbH Delay TLV. The mechanism of timestamping and punting | field. The mechanism of timestamping and punting packet to control | |||
| packet to control plane is outside the scope of this specification. | plane is outside the scope of this specification. | |||
| When the STAMP Session-Reflector received the test packet with the | When the STAMP Session-Reflector received the test packet with the | |||
| Forward HbH Delay TLV, it MUST copy the Forward HbH Delay TLV into | Forward HbH Delay TLV, it MUST copy the Forward HbH Delay TLV into | |||
| the reflected test packet before its transmission. Using Forward HbH | the Session-Reflector test packet before its transmission. Using | |||
| Delay TLV in STAMP testing enables hop-by-hop delay measurement in | Forward HbH Delay TLV in STAMP testing enables delay measurement per | |||
| the forward path. | link in the forward path. | |||
| 3.3. Backward HbH Delay TLV | 3.3. Backward HbH Delay TLV | |||
| STAMP Session-Sender MAY place the Backward HbH Delay TLV in Session- | STAMP Session-Sender MAY place the Backward HbH Delay TLV in Session- | |||
| Sender test packets to record the ingress timestamp and engress | Sender test packets to record the ingress timestamp and egress | |||
| timestamp when Session-Reflector test packets are received and sent | timestamp when Session-Reflector test packets are received and sent | |||
| at every intermediate nodes in the backward path. The Session-Sender | at every intermediate nodes in the backward path. The Session-Sender | |||
| MUST set the Length value according to the number of intermediate | MUST set the Length value according to the number of explicitly | |||
| nodes in the backward path and the timestamp formats. There are | listed intermediate nodes in the backward path and the timestamp | |||
| several methods to synchronize the clock, e.g., Network Time Protocol | formats. There are several methods to synchronize the clock, e.g., | |||
| (NTP) [RFC5905]. For example, if a 64-bit timestamp format defined | Network Time Protocol (NTP) [RFC5905]. For example, if a 64-bit | |||
| in NTP is used, the Length value MUST be set as a multiple of 8 | timestamp format defined in NTP is used, the Length value MUST be set | |||
| octets. The Timestamp Tuple list (Ingress Timestamp [0..n], Engress | as a multiple of 8 octets. The Timestamp Tuple list [1..n] fields | |||
| Timestamp [0..n]) fields MUST be set to zero upon Session-Sender test | MUST be set to zero upon Session-Sender test packets transmission and | |||
| packets transmission and ignored upon receipt. | ignored upon receipt. | |||
| The Backward HbH Delay TLV has the following format: | The Backward HbH Delay TLV has the following format: | |||
| 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 | |||
| +-------------------------------+---------------+---------------+ | +-------------------------------+---------------+---------------+ | |||
| | Backward HbH Delay Type | Length | Node Left | | | Backward HbH Delay Type | Length | Node Left | | |||
| +-------------------------------+---------------+---------------+ | +-------------------------------+---------------+---------------+ | |||
| | Ingress Timestamp [0] | | ||||
| | | | | | | |||
| +---------------------------------------------------------------+ | | Timestamp Tuple list [1] | | |||
| | Engress Timestamp [0] | | | | | |||
| | | | | | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| ~ ... ~ | ~ ... ~ | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | Ingress Timestamp [n] | | ||||
| | | | | | | |||
| +---------------------------------------------------------------+ | | Timestamp Tuple list [n] | | |||
| | Engress Timestamp [n] | | | | | |||
| | | | | | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| Fig. 4 Backward HbH Delay TLV Format | Fig. 4 Backward HbH Delay TLV Format | |||
| where fields are defined as the following: | where fields are defined as the following: | |||
| Backward HbH Delay Type: To be assigned by IANA. | o Backward HbH Delay Type: To be assigned by IANA. | |||
| Length: A 8-bit field that indicates the length of the value portion | o Length: A 8-bit field that indicates the length of the value | |||
| in octets and will be a multiple of 8 octets dependent on the number | portion in octets and will be a multiple of 8 octets dependent on | |||
| of nodes in a path. | the number of explicitly listed intermediate nodes in the backward | |||
| path. | ||||
| Node Left: A 8-bit unsigned integer, which indicates the number of | o Node Left: A 8-bit unsigned integer, which indicates the number of | |||
| intermediate nodes remaining. That is, number of exlicitly listed | intermediate nodes remaining. That is, number of exlicitly listed | |||
| intermediate nodes still to be visited before reaching the | intermediate nodes still to be visited before reaching the | |||
| destination node in the backward path. The Node Left field is set to | destination node in the backward path. The Node Left field is set | |||
| n-1, where n is the number of intermediate nodes. | to n-1, where n is the number of intermediate nodes. | |||
| Timestamp Tuple list (Ingress Timestamp [0..n], Engress Timestamp | o Timestamp Tuple list [1..n]: A variable-length field, which record | |||
| [0..n]): A variable-length field, which record the timestamp when the | the timestamp when the reflected test packet is received at the | |||
| reflected test packet is received at the ingress of the n-th | ingress of the n-th intermediate node and the timestamp when the | |||
| intermediate node and the timestamp when the reflected test packet is | reflected test packet is sent at egress of the n-th intermediate | |||
| sent at engress of the n-th intermediate node. For example, if a | node. For example, if a 64-bit timestamp format defined in NTP is | |||
| 64-bit timestamp format defined in NTP is used, the length of each | used, the length of each Timestamp tuple (Ingress Timestamp [n], | |||
| Timestamp tuple (Ingress Timestamp [n], Engress Timestamp [n]) must | Engress Timestamp [n]) must be 16 octets. The Timestamp Tuple | |||
| be 16 octets. The Timestamp Tuple list is encoded starting from the | list is encoded starting from the last intermediate node which is | |||
| last intermediate node which is exlicitly listed. That is, the first | exlicitly listed. That is, the first element of the Timestamp | |||
| element of the Timestamp Tuple (Ingress Timestamp [0], Engress | Tuple list [1] records the timestamps when the reflected test | |||
| Timestamp [0]) records the timestamps when the reflected test packet | packet received and forwarded at the last intermediate node of a | |||
| received and forwarded at the last intermediate node of a explicit | explicit path, the second element records the penultimate | |||
| path, the second element records the penultimate Timestamp Tuple when | Timestamp Tuple when the reflected test packet received and | |||
| the reflected test packet received and forwarded at the penultimate | forwarded at the penultimate intermediate node of a explicit path, | |||
| intermediate node of a explicit path, and so on. | and so on. | |||
| When the STAMP Session-Reflector received the Session-Sender test | When the STAMP Session-Reflector received the Session-Sender test | |||
| packet with the Backward HbH Delay TLV, it MUST copy the Backward HbH | packet with the Backward HbH Delay TLV, it MUST copy the Backward HbH | |||
| Delay TLV into the reflected test packet. | Delay TLV into the Session-Reflector test packet. | |||
| When an intermediate node receives the reflected test packet, the | When an intermediate node receives the reflected test packet, the | |||
| node sends the packet to control plane and fills the Ingress | node sends the packet to control plane and fills the Ingress | |||
| Timestamp [n] filed of Backward HbH Delay TLV. Then the time taken | Timestamp [n] filed of Backward HbH Delay TLV. Then the time taken | |||
| by the intermediate node transmitting the test packet is recorded in | by the intermediate node transmitting the test packet is recorded in | |||
| to Engress Timestamp [n] field of Backward HbH Delay TLV. Using | to Engress Timestamp [n] field of Backward HbH Delay TLV. Using | |||
| Backward HbH Delay TLV in STAMP testing enables hop-by-hop delay | Backward HbH Delay TLV in STAMP testing enables delay measurement per | |||
| measurement in the backward path. | link in the backward path. | |||
| 4. IANA Considerations | 4. IANA Considerations | |||
| IANA is requested to allocate values for the following TLV Type from | IANA is requested to allocate values for the following TLV Type from | |||
| the "STAMP TLV Type" registry [I-D.ietf-ippm-stamp-option-tlv]. | the "STAMP TLV Type" registry [I-D.ietf-ippm-stamp-option-tlv]. | |||
| +------------+------------------------+---------------+ | +------------+------------------------+---------------+ | |||
| | Code Point | Description | Reference | | | Code Point | Description | Reference | | |||
| +------------+------------------------+---------------+ | +------------+------------------------+---------------+ | |||
| | TBA1 | IOAM Tracing Data TLV | This document | | | TBA1 | IOAM Tracing Data TLV | This document | | |||
| | TBA2 | Forward HBH Delay TLV | This document | | | TBA2 | Forward HBH Delay TLV | This document | | |||
| | TBA3 | Backward HBH Delay TLV | This document | | | TBA3 | Backward HBH Delay TLV | This document | | |||
| +------------+------------------------+---------------+ | +------------+------------------------+---------------+ | |||
| 5. Security Considerations | 5. Security Considerations | |||
| This document introduces new TLV extensions to STAMP. It does not | This document extensions new optional TLVs to STAMP. It does not | |||
| introduce any new security risks to STAMP. | introduce any new security risks to STAMP. | |||
| 6. References | 6. References | |||
| 6.1. Normative References | 6.1. Normative References | |||
| [I-D.ietf-ippm-ioam-data] | [I-D.ietf-ippm-ioam-data] | |||
| "Data Fields for In-situ OAM", | "Data Fields for In-situ OAM", | |||
| <https://datatracker.ietf.org/doc/draft-ietf-ippm-ioam- | <https://datatracker.ietf.org/doc/draft-ietf-ippm-ioam- | |||
| data/>. | data/>. | |||
| End of changes. 38 change blocks. | ||||
| 156 lines changed or deleted | 156 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/ | ||||