draft-ietf-ippm-stamp-yang-00.txt   draft-ietf-ippm-stamp-yang-01.txt 
Network Working Group G. Mirsky Network Working Group G. Mirsky
Internet-Draft X. Min Internet-Draft X. Min
Intended status: Standards Track ZTE Corp. Intended status: Standards Track ZTE Corp.
Expires: July 9, 2018 W. Luo Expires: September 2, 2018 W. Luo
Ericsson Ericsson
January 5, 2018 March 1, 2018
Simple Two-way Active Measurement Protocol (STAMP) Data Model Simple Two-way Active Measurement Protocol (STAMP) Data Model
draft-ietf-ippm-stamp-yang-00 draft-ietf-ippm-stamp-yang-01
Abstract Abstract
This document specifies the data model for implementations of Sender This document specifies the data model for implementations of
and Reflector for Simple Two-way Active Measurement Protocol (STAMP) Session-Sender and Session-Reflector for Simple Two-way Active
mode using YANG. Measurement Protocol (STAMP) mode using YANG.
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 July 9, 2018. This Internet-Draft will expire on September 2, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 15 skipping to change at page 2, line 15
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Conventions used in this document . . . . . . . . . . . . 2 1.1. Conventions used in this document . . . . . . . . . . . . 2
1.1.1. Requirements Language . . . . . . . . . . . . . . . . 2 1.1.1. Requirements Language . . . . . . . . . . . . . . . . 2
2. Scope, Model, and Applicability . . . . . . . . . . . . . . . 3 2. Scope, Model, and Applicability . . . . . . . . . . . . . . . 3
2.1. Data Model Parameters . . . . . . . . . . . . . . . . . . 3 2.1. Data Model Parameters . . . . . . . . . . . . . . . . . . 3
2.1.1. STAMP-Sender . . . . . . . . . . . . . . . . . . . . 3 2.1.1. STAMP-Sender . . . . . . . . . . . . . . . . . . . . 3
2.1.2. STAMP-Reflector . . . . . . . . . . . . . . . . . . . 4 2.1.2. STAMP-Reflector . . . . . . . . . . . . . . . . . . . 4
3. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4
3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 9 3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 9
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30
5. Security Considerations . . . . . . . . . . . . . . . . . . . 27 5. Security Considerations . . . . . . . . . . . . . . . . . . . 30
6. Normative References . . . . . . . . . . . . . . . . . . . . 27 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 29 7. Normative References . . . . . . . . . . . . . . . . . . . . 32
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 Appendix A. Example of STAMP Session Configuration . . . . . . . 33
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35
1. Introduction 1. Introduction
The Simple Two-way Active Measurement Protocol (STAMP) The Simple Two-way Active Measurement Protocol (STAMP)
[I-D.ietf-ippm-stamp] can be used to measure performance parameters [I-D.ietf-ippm-stamp] can be used to measure performance parameters
of IP networks such as latency, jitter, and packet loss by sending of IP networks such as latency, jitter, and packet loss by sending
test packets and monitoring their experience in the network. The test packets and monitoring their experience in the network. The
STAMP protocol [Editor:ref to STAMP draft] in unauthenticated mode is STAMP protocol [Editor:ref to STAMP draft] in unauthenticated mode is
on-wire compatible with STAMP Light, mdiscussed in Appendix I on-wire compatible with STAMP Light, discussed in Appendix I
[RFC5357]. The STAMP Light is known to have many implementations [RFC5357]. The STAMP Light is known to have many implementations
though no common management framework being defined, thus leaving though no common management framework being defined, thus leaving
some aspects of test packet processing to interpretation. As one of some aspects of test packet processing to interpretation. As one of
goals of STAMP is to support these variations, this document presents goals of STAMP is to support these variations, this document presents
their analysis; describes common STAMP and STAMP model while allowing their analysis; describes common STAMP and STAMP model while allowing
for STAMP extensions in the future. This document defines the STAMP for STAMP extensions in the future. This document defines the STAMP
data model and specifies it formally using the YANG data modeling data model and specifies it formally using the YANG data modeling
language [RFC6020]. language [RFC6020].
This version of the interfaces data model confirms to the Network
Management Datastore Architecture (NMDA) defined in
[I-D.ietf-netmod-revised-datastores].
1.1. Conventions used in this document 1.1. Conventions used in this document
1.1.1. Requirements Language 1.1.1. 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", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
skipping to change at page 3, line 16 skipping to change at page 3, line 18
The scope of this document includes model of the STAMP as defined in The scope of this document includes model of the STAMP as defined in
[Editor:ref to STAMP draft]. [Editor:ref to STAMP draft].
o----------------------------------------------------------o o----------------------------------------------------------o
| Config client | | Config client |
o----------------------------------------------------------o o----------------------------------------------------------o
|| || || ||
|| NETCONF/RESTCONF || || NETCONF/RESTCONF ||
|| || || ||
o-------------------o o-------------------o o----------------------o o-------------------------o
| Config server | | Config server | | Config server | | Config server |
| | | | | | | |
+-------------------+ +-------------------+ +----------------------+ +-------------------------+
| STAMP Sender | <--- STAMP---> | STAMP Reflector | | STAMP Session-Sender | <--- STAMP---> | STAMP Session-Reflector |
+-------------------+ +-------------------+ +----------------------+ +-------------------------+
Figure 1: STAMP Reference Model Figure 1: STAMP Reference Model
2.1. Data Model Parameters 2.1. Data Model Parameters
This section describes all the parameters of the the stamp data This section describes all the parameters of the the stamp data
model. model.
2.1.1. STAMP-Sender 2.1.1. STAMP-Sender
The stamp-session-sender container holds items that are related to The stamp-session-sender container holds items that are related to
the configuration of the stamp Session-Sender logical entity. the configuration of the stamp Session-Sender logical entity.
The stamp-session-sender-state container holds information about the The stamp-session-sender-state container holds information about the
state of the particular STAMP test session. state of the particular STAMP test session.
RPCs stamp-sender-start and stamp-sender-stop respectively start and RPCs stamp-sender-start and stamp-sender-stop respectively start and
stop the referenced by session-id STAMP test session. stop the referenced by session-id STAMP test session.
2.1.1.1. Controls for Test Session and Preforrmance Metric Calculation 2.1.1.1. Controls for Test Session and Performance Metric Calculation
The data model supports several scenarios for a STAMP Sender to The data model supports several scenarios for a STAMP Session-Sender
execute test sessions and calculate performance metrics: to execute test sessions and calculate performance metrics:
The test mode in which the test packets are sent unbound in time The test mode in which the test packets are sent unbound in time
at defined by the parameter 'interval' in the stamp-session-sender at defined by the parameter 'interval' in the stamp-session-sender
container frequency is referred as continuous mode. Performance container frequency is referred as continuous mode. Performance
metrics in the continuous mode are calculated at period defined by metrics in the continuous mode are calculated at period defined by
the parameter 'measurement-interval'. the parameter 'measurement-interval'.
The test mode that has specific number of the test packets The test mode that has specific number of the test packets
configured for the test session in the 'number-of-packets' configured for the test session in the 'number-of-packets'
parameter is referred as periodic mode. The test session may be parameter is referred as periodic mode. The test session may be
repeated by the STAMP-Sender with the same parameters. The repeated by the STAMP-Sender with the same parameters. The
'repeat' parameter defines number of tests and the 'repeat- 'repeat' parameter defines number of tests and the 'repeat-
interval' - the interval between the consecuitive tests. The interval' - the interval between the consecutive tests. The
performance metrics are calculated after each test session when performance metrics are calculated after each test session when
the interval defined by the 'session-timeout' expires. the interval defined by the 'session-timeout' expires.
2.1.2. STAMP-Reflector 2.1.2. STAMP-Reflector
The stamp-session-reflector container holds items that are related to The stamp-session-reflector container holds items that are related to
the configuration of the STAMP Session-Reflector logical entity. the configuration of the STAMP Session-Reflector logical entity.
The stamp-session-refl-state container holds Session-Reflector state The stamp-session-refl-state container holds Session-Reflector state
data for the particular STAMP test session. data for the particular STAMP test session.
skipping to change at page 4, line 39 skipping to change at page 4, line 42
Equal Cost Multi-Path environment Session-Sender may run STAMP test Equal Cost Multi-Path environment Session-Sender may run STAMP test
sessions concurrently using the same source IP address, source UDP sessions concurrently using the same source IP address, source UDP
port number, destination IP address, and destination UDP port number. port number, destination IP address, and destination UDP port number.
Thus the only parameter that can be used to differentiate these test Thus the only parameter that can be used to differentiate these test
sessions would be DSCP value. The DSCP field may get re-marked along sessions would be DSCP value. The DSCP field may get re-marked along
the path and without use of [RFC7750] that will go undetected, but by the path and without use of [RFC7750] that will go undetected, but by
using five-tuple instead of four-tuple as a key we can ensure that using five-tuple instead of four-tuple as a key we can ensure that
STAMP test packets that are considered as different test sessions STAMP test packets that are considered as different test sessions
follow the same path even in ECMP environments. follow the same path even in ECMP environments.
3.1. Tree Diagram 3.1. Tree Diagrams
module: ietf-stamp module: ietf-stamp
+--rw stamp +--rw stamp
| +--rw stamp-session-sender {session-sender}? | +--rw stamp-session-sender {session-sender}?
| | +--rw sender-enable? enable | | +--rw sender-enable? enable
| | +--rw test-session* [session-id] | | +--rw test-session* [session-id]
| | +--rw session-id uint32 | | +--rw session-id uint32
| | +--rw test-session-enable? enable | | +--rw test-session-enable? enable
| | +--rw number-of-packets? union | | +--rw number-of-packets? union
| | +--rw packet-padding-size? uint32 | | +--rw packet-padding-size? uint32
| | +--rw interval? uint32 | | +--rw interval? uint32
| | +--rw session-timeout? uint32 | | +--rw session-timeout? uint32
| | +--rw measurement-interval? uint32 | | +--rw measurement-interval? uint32
| | +--rw repeat? union | | +--rw repeat? union
| | +--rw repeat-interval? uint32 | | +--rw repeat-interval? uint32
| | +--rw dscp-value? inet:dscp | | +--rw dscp-value? inet:dscp
| | +--rw test-session-reflector-mode? session-reflector-mode | | +--rw test-session-reflector-mode? session-reflector-mode
| | +--rw sender-ip inet:ip-address | | +--rw sender-ip inet:ip-address
| | +--rw sender-udp-port inet:port-number | | +--rw sender-udp-port inet:port-number
| | +--rw reflector-ip inet:ip-address | | +--rw reflector-ip inet:ip-address
| | +--rw reflector-udp-port? inet:port-number | | +--rw reflector-udp-port? inet:port-number
| | +--rw authentication-params! {stamp-authentication}? | | +--rw sender-timestamp-format? timestamp-format
| | +--rw security! {stamp-security}?
| | | +--rw key-chain? kc:key-chain-ref | | | +--rw key-chain? kc:key-chain-ref
| | +--rw first-percentile? percentile | | +--rw first-percentile? percentile
| | +--rw second-percentile? percentile | | +--rw second-percentile? percentile
| | +--rw third-percentile? percentile | | +--rw third-percentile? percentile
| +--rw stamp-session-reflector {session-reflector}? | +--rw stamp-session-reflector {session-reflector}?
| +--rw reflector-enable? enable | +--rw reflector-enable? enable
| +--rw ref-wait? uint32 | +--rw ref-wait? uint32
| +--rw reflector-mode-state? session-reflector-mode | +--rw reflector-mode-state? session-reflector-mode
| +--rw test-session* [session-id] | +--rw test-session* [session-id]
| +--rw session-id uint32 | +--rw session-id uint32
| +--rw dscp-handling-mode? session-dscp-mode | +--rw dscp-handling-mode? session-dscp-mode
| +--rw dscp-value? inet:dscp | +--rw dscp-value? inet:dscp
| +--rw sender-ip inet:ip-address | +--rw sender-ip? union
| +--rw sender-udp-port inet:port-number | +--rw sender-udp-port? union
| +--rw reflector-ip inet:ip-address | +--rw reflector-ip? union
| +--rw reflector-udp-port? inet:port-number | +--rw reflector-udp-port? inet:port-number
| +--rw authentication-params! {stamp-authentication}? | +--rw reflector-timestamp-format? timestamp-format
| +--rw security! {stamp-security}?
| +--rw key-chain? kc:key-chain-ref | +--rw key-chain? kc:key-chain-ref
+--ro stamp-state
+--ro stamp-session-sender-state {session-sender}?
| +--ro test-session-state* [session-id]
| +--ro session-id uint32
| +--ro sender-session-state? enumeration
| +--ro current-stats
| | +--ro start-time yang:date-and-time
| | +--ro packet-padding-size? uint32
| | +--ro interval? uint32
| | +--ro duplicate-packets? uint32
| | +--ro reordered-packets? uint32
| | +--ro sender-ip inet:ip-address
| | +--ro sender-udp-port inet:port-number
| | +--ro reflector-ip inet:ip-address
| | +--ro reflector-udp-port? inet:port-number
| | +--ro dscp? inet:dscp
| | +--ro sent-packets? uint32
| | +--ro rcv-packets? uint32
| | +--ro sent-packets-error? uint32
| | +--ro rcv-packets-error? uint32
| | +--ro last-sent-seq? uint32
| | +--ro last-rcv-seq? uint32
| | +--ro two-way-delay
| | | +--ro delay
| | | | +--ro min? yang:gauge32
| | | | +--ro max? yang:gauge32
| | | | +--ro avg? yang:gauge32
| | | +--ro delay-variation
| | | +--ro min? uint32
| | | +--ro max? uint32
| | | +--ro avg? uint32
| | +--ro one-way-delay-far-end
| | | +--ro delay
| | | | +--ro min? yang:gauge32
| | | | +--ro max? yang:gauge32
| | | | +--ro avg? yang:gauge32
| | | +--ro delay-variation
| | | +--ro min? uint32
| | | +--ro max? uint32
| | | +--ro avg? uint32
| | +--ro one-way-delay-near-end
| | | +--ro delay
| | | | +--ro min? yang:gauge32
| | | | +--ro max? yang:gauge32
| | | | +--ro avg? yang:gauge32
| | | +--ro delay-variation
| | | +--ro min? uint32
| | | +--ro max? uint32
| | | +--ro avg? uint32
| | +--ro low-percentile
| | | +--ro delay-percentile
| | | | +--ro rtt-delay? percentile
| | | | +--ro near-end-delay? percentile
| | | | +--ro far-end-delay? percentile
| | | +--ro delay-variation-percentile
| | | +--ro rtt-delay-variation? percentile
| | | +--ro near-end-delay-variation? percentile
| | | +--ro far-end-delay-variation? percentile
| | +--ro mid-percentile
| | | +--ro delay-percentile
| | | | +--ro rtt-delay? percentile
| | | | +--ro near-end-delay? percentile
| | | | +--ro far-end-delay? percentile
| | | +--ro delay-variation-percentile
| | | +--ro rtt-delay-variation? percentile
| | | +--ro near-end-delay-variation? percentile
| | | +--ro far-end-delay-variation? percentile
| | +--ro high-percentile
| | | +--ro delay-percentile
| | | | +--ro rtt-delay? percentile
| | | | +--ro near-end-delay? percentile
| | | | +--ro far-end-delay? percentile
| | | +--ro delay-variation-percentile
| | | +--ro rtt-delay-variation? percentile
| | | +--ro near-end-delay-variation? percentile
| | | +--ro far-end-delay-variation? percentile
| | +--ro two-way-loss
| | | +--ro loss-count? int32
| | | +--ro loss-ratio? percentage
| | | +--ro loss-burst-max? int32
| | | +--ro loss-burst-min? int32
| | | +--ro loss-burst-count? int32
| | +--ro one-way-loss-far-end
| | | +--ro loss-count? int32
| | | +--ro loss-ratio? percentage
| | | +--ro loss-burst-max? int32
| | | +--ro loss-burst-min? int32
| | | +--ro loss-burst-count? int32
| | +--ro one-way-loss-near-end
| | +--ro loss-count? int32
| | +--ro loss-ratio? percentage
| | +--ro loss-burst-max? int32
| | +--ro loss-burst-min? int32
| | +--ro loss-burst-count? int32
| +--ro history-stats* [id]
| +--ro id uint32
| +--ro end-time yang:date-and-time
| +--ro number-of-packets? uint32
| +--ro packet-padding-size? uint32
| +--ro interval? uint32
| +--ro duplicate-packets? uint32
| +--ro reordered-packets? uint32
| +--ro loss-packets? uint32
| +--ro sender-ip inet:ip-address
| +--ro sender-udp-port inet:port-number
| +--ro reflector-ip inet:ip-address
| +--ro reflector-udp-port? inet:port-number
| +--ro dscp? inet:dscp
| +--ro sent-packets? uint32
| +--ro rcv-packets? uint32
| +--ro sent-packets-error? uint32
| +--ro rcv-packets-error? uint32
| +--ro last-sent-seq? uint32
| +--ro last-rcv-seq? uint32
| +--ro two-way-delay
| | +--ro delay
| | | +--ro min? yang:gauge32
| | | +--ro max? yang:gauge32
| | | +--ro avg? yang:gauge32
| | +--ro delay-variation
| | +--ro min? uint32
| | +--ro max? uint32
| | +--ro avg? uint32
| +--ro one-way-delay-far-end
| | +--ro delay
| | | +--ro min? yang:gauge32
| | | +--ro max? yang:gauge32
| | | +--ro avg? yang:gauge32
| | +--ro delay-variation
| | +--ro min? uint32
| | +--ro max? uint32
| | +--ro avg? uint32
| +--ro one-way-delay-near-end
| +--ro delay
| | +--ro min? yang:gauge32
| | +--ro max? yang:gauge32
| | +--ro avg? yang:gauge32
| +--ro delay-variation
| +--ro min? uint32
| +--ro max? uint32
| +--ro avg? uint32
+--ro stamp-session-refl-state {session-reflector}?
+--ro reflector-light-admin-status boolean
+--ro test-session-state* [session-id]
+--ro session-id uint32
+--ro sent-packets? uint32
+--ro rcv-packets? uint32
+--ro sent-packets-error? uint32
+--ro rcv-packets-error? uint32
+--ro last-sent-seq? uint32
+--ro last-rcv-seq? uint32
+--ro sender-ip inet:ip-address
+--ro sender-udp-port inet:port-number
+--ro reflector-ip inet:ip-address
+--ro reflector-udp-port? inet:port-number
rpcs: Figure 2: STAMP Configuration Tree Diagram
+---x stamp-sender-start
| +---w input module: ietf-stamp
| +---w session-id uint32 +--ro stamp-state
+---x stamp-sender-stop +--ro stamp-session-sender-state {session-sender}?
+---w input | +--ro test-session-state* [session-id]
+---w session-id uint32 | +--ro session-id uint32
| +--ro sender-session-state? enumeration
| +--ro current-stats
| | +--ro start-time yang:date-and-time
| | +--ro packet-padding-size? uint32
| | +--ro interval? uint32
| | +--ro duplicate-packets? uint32
| | +--ro reordered-packets? uint32
| | +--ro sender-ip inet:ip-address
| | +--ro sender-udp-port inet:port-number
| | +--ro reflector-ip inet:ip-address
| | +--ro reflector-udp-port? inet:port-number
| | +--ro sender-timestamp-format? timestamp-format
| | +--ro reflector-timestamp-format? timestamp-format
| | +--ro dscp? inet:dscp
| | +--ro sent-packets? uint32
| | +--ro rcv-packets? uint32
| | +--ro sent-packets-error? uint32
| | +--ro rcv-packets-error? uint32
| | +--ro last-sent-seq? uint32
| | +--ro last-rcv-seq? uint32
| | +--ro two-way-delay
| | | +--ro delay
| | | | +--ro min? yang:gauge32
| | | | +--ro max? yang:gauge32
| | | | +--ro avg? yang:gauge32
| | | +--ro delay-variation
| | | +--ro min? uint32
| | | +--ro max? uint32
| | | +--ro avg? uint32
| | +--ro one-way-delay-far-end
| | | +--ro delay
| | | | +--ro min? yang:gauge32
| | | | +--ro max? yang:gauge32
| | | | +--ro avg? yang:gauge32
| | | +--ro delay-variation
| | | +--ro min? uint32
| | | +--ro max? uint32
| | | +--ro avg? uint32
| | +--ro one-way-delay-near-end
| | | +--ro delay
| | | | +--ro min? yang:gauge32
| | | | +--ro max? yang:gauge32
| | | | +--ro avg? yang:gauge32
| | | +--ro delay-variation
| | | +--ro min? uint32
| | | +--ro max? uint32
| | | +--ro avg? uint32
| | +--ro low-percentile
| | | +--ro delay-percentile
| | | | +--ro rtt-delay? percentile
| | | | +--ro near-end-delay? percentile
| | | | +--ro far-end-delay? percentile
| | | +--ro delay-variation-percentile
| | | +--ro rtt-delay-variation? percentile
| | | +--ro near-end-delay-variation? percentile
| | | +--ro far-end-delay-variation? percentile
| | +--ro mid-percentile
| | | +--ro delay-percentile
| | | | +--ro rtt-delay? percentile
| | | | +--ro near-end-delay? percentile
| | | | +--ro far-end-delay? percentile
| | | +--ro delay-variation-percentile
| | | +--ro rtt-delay-variation? percentile
| | | +--ro near-end-delay-variation? percentile
| | | +--ro far-end-delay-variation? percentile
| | +--ro high-percentile
| | | +--ro delay-percentile
| | | | +--ro rtt-delay? percentile
| | | | +--ro near-end-delay? percentile
| | | | +--ro far-end-delay? percentile
| | | +--ro delay-variation-percentile
| | | +--ro rtt-delay-variation? percentile
| | | +--ro near-end-delay-variation? percentile
| | | +--ro far-end-delay-variation? percentile
| | +--ro two-way-loss
| | | +--ro loss-count? int32
| | | +--ro loss-ratio? percentage
| | | +--ro loss-burst-max? int32
| | | +--ro loss-burst-min? int32
| | | +--ro loss-burst-count? int32
| | +--ro one-way-loss-far-end
| | | +--ro loss-count? int32
| | | +--ro loss-ratio? percentage
| | | +--ro loss-burst-max? int32
| | | +--ro loss-burst-min? int32
| | | +--ro loss-burst-count? int32
| | +--ro one-way-loss-near-end
| | +--ro loss-count? int32
| | +--ro loss-ratio? percentage
| | +--ro loss-burst-max? int32
| | +--ro loss-burst-min? int32
| | +--ro loss-burst-count? int32
| +--ro history-stats* [id]
| +--ro id uint32
| +--ro end-time yang:date-and-time
| +--ro number-of-packets? uint32
| +--ro packet-padding-size? uint32
| +--ro interval? uint32
| +--ro duplicate-packets? uint32
| +--ro reordered-packets? uint32
| +--ro loss-packets? uint32
| +--ro sender-ip inet:ip-address
| +--ro sender-udp-port inet:port-number
| +--ro reflector-ip inet:ip-address
| +--ro reflector-udp-port? inet:port-number
| +--ro sender-timestamp-format? timestamp-format
| +--ro reflector-timestamp-format? timestamp-format
| +--ro dscp? inet:dscp
| +--ro sent-packets? uint32
| +--ro rcv-packets? uint32
| +--ro sent-packets-error? uint32
| +--ro rcv-packets-error? uint32
| +--ro last-sent-seq? uint32
| +--ro last-rcv-seq? uint32
| +--ro two-way-delay
| | +--ro delay
| | | +--ro min? yang:gauge32
| | | +--ro max? yang:gauge32
| | | +--ro avg? yang:gauge32
| | +--ro delay-variation
| | +--ro min? uint32
| | +--ro max? uint32
| | +--ro avg? uint32
| +--ro one-way-delay-far-end
| | +--ro delay
| | | +--ro min? yang:gauge32
| | | +--ro max? yang:gauge32
| | | +--ro avg? yang:gauge32
| | +--ro delay-variation
| | +--ro min? uint32
| | +--ro max? uint32
| | +--ro avg? uint32
| +--ro one-way-delay-near-end
| +--ro delay
| | +--ro min? yang:gauge32
| | +--ro max? yang:gauge32
| | +--ro avg? yang:gauge32
| +--ro delay-variation
| +--ro min? uint32
| +--ro max? uint32
| +--ro avg? uint32
+--ro stamp-session-refl-state {session-reflector}?
+--ro reflector-light-admin-status boolean
+--ro test-session-state* [session-id]
+--ro session-id uint32
+--ro sent-packets? uint32
+--ro rcv-packets? uint32
+--ro sent-packets-error? uint32
+--ro rcv-packets-error? uint32
+--ro last-sent-seq? uint32
+--ro last-rcv-seq? uint32
+--ro reflector-timestamp-format? timestamp-format
+--ro sender-ip inet:ip-address
+--ro sender-udp-port inet:port-number
+--ro reflector-ip inet:ip-address
+--ro reflector-udp-port? inet:port-number
Figure 3: STAMP State Tree Diagram
rpcs:
+---x stamp-sender-start
| +---w input
| +---w session-id uint32
+---x stamp-sender-stop
+---w input
+---w session-id uint32
Figure 4: STAMP RPC Tree Diagram
3.2. YANG Module 3.2. YANG Module
<CODE BEGINS> file "ietf-stamp@2018-01-05.yang" <CODE BEGINS> file "ietf-stamp@2018-03-01.yang"
module ietf-stamp { module ietf-stamp {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-stamp"; namespace "urn:ietf:params:xml:ns:yang:ietf-stamp";
//namespace need to be assigned by IANA //namespace need to be assigned by IANA
prefix "ietf-stamp"; prefix "ietf-stamp";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6991";
} }
import ietf-key-chain { import ietf-key-chain {
prefix kc; prefix kc;
reference "RFC 8177";
} }
organization organization
"IETF IPPM (IP Performance Metrics) Working Group"; "IETF IPPM (IP Performance Metrics) Working Group";
contact contact
"draft-ietf-ippm-stamp-yang@tools.ietf.org"; "draft-ietf-ippm-stamp-yang@tools.ietf.org";
description "STAMP Data Model"; description "STAMP Data Model";
revision "2018-01-05" { revision "2018-03-01" {
description description
"00 version. Base STAMP specification is covered"; "00 version. Base STAMP specification is covered";
reference ""; reference "";
} }
feature session-sender { /*
* Feature definitions.
*/
feature session-sender {
description description
"This feature relates to the device functions as the "This feature relates to the device functions as the
STAMP Session-Sender"; STAMP Session-Sender";
} }
feature session-reflector { feature session-reflector {
description description
"This feature relates to the device functions as the "This feature relates to the device functions as the
STAMP Session-Reflector"; STAMP Session-Reflector";
} }
feature stamp-authentication { feature stamp-security {
description description "Secure STAMP supported";
"STAMP authentication supported";
} }
typedef enable { typedef enable {
type boolean; type boolean;
description "enable"; description "enable";
} }
typedef session-reflector-mode { typedef session-reflector-mode {
type enumeration { type enumeration {
enum stateful { enum stateful {
skipping to change at page 10, line 46 skipping to change at page 11, line 34
enum use-configured-value { enum use-configured-value {
description description
"Use DSCP value configured for this "Use DSCP value configured for this
test session on the Session-Reflector."; test session on the Session-Reflector.";
} }
} }
description description
"DSCP handling mode by Session-Reflector."; "DSCP handling mode by Session-Reflector.";
} }
typedef timestamp-format {
type enumeration {
enum ntp-format {
description
"NTP 64 bit format of a timestamp";
}
enum ptp-format {
description
"PTPv2 truncated format of a timestamp";
}
}
description
"Timestamp format used by Session-Sender
or Session-Reflector.";
}
typedef percentage { typedef percentage {
type decimal64 { type decimal64 {
fraction-digits 5; fraction-digits 5;
} }
description "Percentage"; description "Percentage";
} }
typedef percentile { typedef percentile {
type decimal64 { type decimal64 {
fraction-digits 2; fraction-digits 2;
} }
description description
"Percentile is a measure used in statistics "Percentile is a measure used in statistics
indicating the value below which a given indicating the value below which a given
percentage of observations in a group of percentage of observations in a group of
observations fall."; observations fall.";
} }
skipping to change at page 11, line 17 skipping to change at page 12, line 22
} }
description description
"Percentile is a measure used in statistics "Percentile is a measure used in statistics
indicating the value below which a given indicating the value below which a given
percentage of observations in a group of percentage of observations in a group of
observations fall."; observations fall.";
} }
grouping maintenance-statistics { grouping maintenance-statistics {
description "Maintenance statistics grouping"; description "Maintenance statistics grouping";
leaf sent-packets { leaf sent-packets {
type uint32; type uint32;
description "Packets sent"; description "Packets sent";
} }
leaf rcv-packets { leaf rcv-packets {
type uint32; type uint32;
description "Packets received"; description "Packets received";
} }
leaf sent-packets-error { leaf sent-packets-error {
type uint32; type uint32;
description "Packets sent error"; description "Packets sent error";
skipping to change at page 14, line 32 skipping to change at page 15, line 37
} }
leaf loss-ratio { leaf loss-ratio {
type percentage; type percentage;
description description
"Ratio of packets lost to packets "Ratio of packets lost to packets
sent during the test interval."; sent during the test interval.";
} }
leaf loss-burst-max { leaf loss-burst-max {
type int32; type int32;
description description
"Maximum number of consequtively "Maximum number of consecutively
lost packets during the test interval."; lost packets during the test interval.";
} }
leaf loss-burst-min { leaf loss-burst-min {
type int32; type int32;
description description
"Minimum number of consequtively "Minimum number of consecutively
lost packets during the test interval."; lost packets during the test interval.";
} }
leaf loss-burst-count { leaf loss-burst-count {
type int32; type int32;
description description
"Number of occasions with packet "Number of occasions with packet
loss during the test interval."; loss during the test interval.";
} }
} }
skipping to change at page 15, line 30 skipping to change at page 16, line 35
} }
leaf reflector-udp-port { leaf reflector-udp-port {
type inet:port-number{ type inet:port-number{
range "862 | 49152..65535"; range "862 | 49152..65535";
} }
default 862; default 862;
description "Reflector UDP port number"; description "Reflector UDP port number";
} }
} }
grouping session-auth-params { grouping session-security {
description description
"Grouping for STAMP authentication parameters"; "Grouping for STAMP security and related parameters";
container authentication-params { container security {
if-feature stamp-authentication; if-feature stamp-security;
presence "Enables STAMP authentication"; presence "Enables secure STAMP";
description description
"Parameters for STAMP Light authentication"; "Parameters for STAMP authentication or encryption";
leaf key-chain { leaf key-chain {
type kc:key-chain-ref; type kc:key-chain-ref;
description "Name of key-chain"; description "Name of key-chain";
} }
} }
} }
/* Configuration Data */ /* Configuration Data */
container stamp { container stamp {
description description
skipping to change at page 16, line 11 skipping to change at page 17, line 15
container stamp-session-sender { container stamp-session-sender {
if-feature session-sender; if-feature session-sender;
description "stamp Session-Sender container"; description "stamp Session-Sender container";
leaf sender-enable { leaf sender-enable {
type enable; type enable;
default "true"; default "true";
description description
"Whether this network element is enabled to "Whether this network element is enabled to
act as STAMP Sender"; act as STAMP Session-Sender";
} }
list test-session { list test-session {
key "session-id"; key "session-id";
unique "sender-ip sender-udp-port reflector-ip" unique "sender-ip sender-udp-port reflector-ip"
+" reflector-udp-port dscp-value"; +" reflector-udp-port dscp-value";
description description
"This structure is a container of test session "This structure is a container of test session
managed objects"; managed objects";
skipping to change at page 19, line 15 skipping to change at page 20, line 18
} }
leaf test-session-reflector-mode { leaf test-session-reflector-mode {
type session-reflector-mode; type session-reflector-mode;
default "stateless"; default "stateless";
description description
"The mode of STAMP-Reflector for the test session."; "The mode of STAMP-Reflector for the test session.";
} }
uses session-parameters; uses session-parameters;
uses session-auth-params; leaf sender-timestamp-format {
type timestamp-format;
default ntp-format;
description "Sender Timestamp format";
}
uses session-security;
uses stamp-session-percentile; uses stamp-session-percentile;
} }
} }
container stamp-session-reflector { container stamp-session-reflector {
if-feature session-reflector; if-feature session-reflector;
description description
"stamp Session-Reflector container"; "stamp Session-Reflector container";
leaf reflector-enable { leaf reflector-enable {
type enable; type enable;
default "true"; default "true";
description description
"Whether this network element is enabled to "Whether this network element is enabled to
act as stamp Reflector"; act as stamp Session-Reflector";
} }
leaf ref-wait { leaf ref-wait {
type uint32 { type uint32 {
range 1..604800; range 1..604800;
} }
units seconds; units seconds;
default 900; default 900;
description description
"REFWAIT(STAMP test session timeout in seconds), "REFWAIT(STAMP test session timeout in seconds),
skipping to change at page 20, line 33 skipping to change at page 21, line 42
leaf dscp-value { leaf dscp-value {
when "../dscp-handling-mode = 'use-configured-value'"; when "../dscp-handling-mode = 'use-configured-value'";
type inet:dscp; type inet:dscp;
default 0; default 0;
description description
"DSCP value to be set in the reflected packet "DSCP value to be set in the reflected packet
if dscp-handling-mode is set to use-configured-value."; if dscp-handling-mode is set to use-configured-value.";
} }
uses session-parameters; leaf sender-ip {
uses session-auth-params; type union {
type inet:ip-address;
type enumeration {
enum any {
description
"Indicates that the Session-Reflector
accepts STAMP test packets from
any Session-Sender";
}
}
}
default any;
description
"This value determines whether specific
IPv4/IPv6 address of the Session-Sender
or the wildcard, i.e. any address";
}
leaf sender-udp-port {
type union {
type inet:port-number {
range "49152..65535";
}
type enumeration {
enum any {
description
"Indicates that the Session-Reflector
accepts STAMP test packets from
any Session-Sender";
}
}
}
default any;
description
"This value determines whether specific
port number of the Session-Sender
or the wildcard, i.e. any";
}
leaf reflector-ip {
type union {
type inet:ip-address;
type enumeration {
enum any {
description
"Indicates that the Session-Reflector
accepts STAMP test packets on
any of its interfaces";
}
}
}
default any;
description
"This value determines whether specific
IPv4/IPv6 address of the Session-Reflector
or the wildcard, i.e. any address";
}
leaf reflector-udp-port {
type inet:port-number{
range "862 | 49152..65535";
}
default 862;
description "Reflector UDP port number";
}
leaf reflector-timestamp-format {
type timestamp-format;
default ntp-format;
description "Reflector Timestamp format";
}
uses session-security;
} }
} }
} }
/* Operational state data nodes */ /* Operational state data nodes */
container stamp-state{ container stamp-state {
config "false"; config false;
description description
"Top level container for stamp state data"; "Top level container for stamp state data";
container stamp-session-sender-state { container stamp-session-sender-state {
if-feature session-sender; if-feature session-sender;
description description
"Session-Sender container for state data"; "Session-Sender container for state data";
list test-session-state{ list test-session-state{
key "session-id"; key "session-id";
description description
skipping to change at page 21, line 43 skipping to change at page 24, line 25
description description
"The time that the current Measurement Interval started"; "The time that the current Measurement Interval started";
} }
leaf packet-padding-size { leaf packet-padding-size {
type uint32; type uint32;
default 27; default 27;
description description
"Size of the Packet Padding. Suggested to run "Size of the Packet Padding. Suggested to run
Path MTU Discovery to avoid packet fragmentation Path MTU Discovery to avoid packet fragmentation
in IPv4 and packet backholing in IPv6"; in IPv4 and packet blackholing in IPv6";
} }
leaf interval { leaf interval {
type uint32; type uint32;
units microseconds; units microseconds;
description description
"Time interval between transmission of two "Time interval between transmission of two
consecutive packets in the test session"; consecutive packets in the test session";
} }
leaf duplicate-packets { leaf duplicate-packets {
type uint32; type uint32;
description "Duplicate packets"; description "Duplicate packets";
} }
leaf reordered-packets { leaf reordered-packets {
type uint32; type uint32;
description "Reordered packets"; description "Reordered packets";
} }
skipping to change at page 22, line 17 skipping to change at page 24, line 46
leaf duplicate-packets { leaf duplicate-packets {
type uint32; type uint32;
description "Duplicate packets"; description "Duplicate packets";
} }
leaf reordered-packets { leaf reordered-packets {
type uint32; type uint32;
description "Reordered packets"; description "Reordered packets";
} }
uses session-parameters; uses session-parameters;
leaf sender-timestamp-format {
type timestamp-format;
default ntp-format;
description "Sender Timestamp format";
}
leaf reflector-timestamp-format {
type timestamp-format;
default ntp-format;
description "Reflector Timestamp format";
}
leaf dscp { leaf dscp {
type inet:dscp; type inet:dscp;
description description
"The DSCP value that was placed in the header of "The DSCP value that was placed in the header of
STAMP UDP test packets by the Session-Sender."; STAMP UDP test packets by the Session-Sender.";
} }
uses maintenance-statistics; uses maintenance-statistics;
container two-way-delay { container two-way-delay {
description description
skipping to change at page 25, line 25 skipping to change at page 28, line 17
leaf reordered-packets { leaf reordered-packets {
type uint32; type uint32;
description "Reordered packets"; description "Reordered packets";
} }
leaf loss-packets { leaf loss-packets {
type uint32; type uint32;
description "Loss packets"; description "Loss packets";
} }
uses session-parameters; uses session-parameters;
leaf sender-timestamp-format {
type timestamp-format;
default ntp-format;
description "Sender Timestamp format";
}
leaf reflector-timestamp-format {
type timestamp-format;
default ntp-format;
description "Reflector Timestamp format";
}
leaf dscp { leaf dscp {
type inet:dscp; type inet:dscp;
description description
"The DSCP value that was placed in the header of "The DSCP value that was placed in the header of
STAMP UDP test packets by the Session-Sender."; STAMP UDP test packets by the Session-Sender.";
} }
uses maintenance-statistics; uses maintenance-statistics;
container two-way-delay{ container two-way-delay{
description description
skipping to change at page 26, line 14 skipping to change at page 29, line 17
container stamp-session-refl-state { container stamp-session-refl-state {
if-feature session-reflector; if-feature session-reflector;
description description
"stamp Session-Reflector container for "stamp Session-Reflector container for
state data"; state data";
leaf reflector-light-admin-status { leaf reflector-light-admin-status {
type boolean; type boolean;
mandatory "true"; mandatory "true";
description description
"Whether this network element is enabled to "Whether this network element is enabled to
act as stamp Reflector"; act as stamp Session-Reflector";
} }
list test-session-state { list test-session-state {
key "session-id"; key "session-id";
description description
"This structure is a container of test session "This structure is a container of test session
managed objects"; managed objects";
leaf session-id { leaf session-id {
type uint32; type uint32;
description "Session ID"; description "Session ID";
} }
uses maintenance-statistics; uses maintenance-statistics;
leaf reflector-timestamp-format {
type timestamp-format;
default ntp-format;
description "Reflector Timestamp format";
}
uses session-parameters; uses session-parameters;
} }
} }
} }
rpc stamp-sender-start { rpc stamp-sender-start {
description description
"start the configured sender session"; "start the configured sender session";
input { input {
leaf session-id { leaf session-id {
skipping to change at page 27, line 40 skipping to change at page 30, line 48
name: ietf-stamp name: ietf-stamp
namespace: urn:ietf:params:xml:ns:yang:ietf-stamp namespace: urn:ietf:params:xml:ns:yang:ietf-stamp
prefix: stamp prefix: stamp
reference: RFC XXXX reference: RFC XXXX
5. Security Considerations 5. Security Considerations
The configuration, state, action data defined in this document may be The YANG module specified in this document defines a schema for data
accessed via the NETCONF protocol [RFC6241]. SSH [RFC6242] is that is designed to be accessed via network management protocols such
mandatory secure transport that is the lowest NETCONF layer. The as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
NETCONF access control model [RFC6536] provides means to restrict is the secure transport layer, and the mandatory-to-implement secure
access for particular NETCONF users to a pre-configured subset of all transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
available NETCONF protocol operations and content. is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC5246].
6. Normative References The NETCONF access control model [RFC6536] provides the means to
restrict access for particular NETCONF or RESTCONF users to a
preconfigured subset of all available NETCONF or RESTCONF protocol
operations and content.
There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g., edit-config)
to these data nodes without proper protection can have a negative
effect on network operations. These are the subtrees and data nodes
and their sensitivity/vulnerability:
TBD
Unauthorized access to any data node of these subtrees can adversely
affect the routing subsystem of both the local device and the
network. This may lead to corruption of the measurement that may
result in false corrective action, e.g. false negative or false
positive. That could be, for example, prolonged and undetected
deterioration of quality of service or actions to improve the quality
unwarranted by the real network conditions.
Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or
notification) to these data nodes. These are the subtrees and data
nodes and their sensitivity/vulnerability:
/ietf-vrrp:stamp
TBD
Unauthorized access to any data node of these subtrees can disclose
the operational state information of VRRP on this device.
Some of the RPC operations in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus
important to control access to these operations. These are the
operations and their sensitivity/vulnerability:
TBD
6. Acknowledgements
Authors recognize and appreciate valuable comments provided by Adrian
Pan.
7. Normative References
[I-D.ietf-ippm-stamp] [I-D.ietf-ippm-stamp]
Mirsky, G., Jun, G., and H. Nydell, "Simple Two-way Active Mirsky, G., Jun, G., and H. Nydell, "Simple Two-way Active
Measurement Protocol", draft-ietf-ippm-stamp-00 (work in Measurement Protocol", draft-ietf-ippm-stamp-00 (work in
progress), January 2018. progress), January 2018.
[I-D.ietf-netmod-revised-datastores]
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore
Architecture", draft-ietf-netmod-revised-datastores-10
(work in progress), January 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008,
<https://www.rfc-editor.org/info/rfc5246>.
[RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. [RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J.
Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)", Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)",
RFC 5357, DOI 10.17487/RFC5357, October 2008, RFC 5357, DOI 10.17487/RFC5357, October 2008,
<https://www.rfc-editor.org/info/rfc5357>. <https://www.rfc-editor.org/info/rfc5357>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
skipping to change at page 28, line 49 skipping to change at page 33, line 20
Protocol (NETCONF) Access Control Model", RFC 6536, Protocol (NETCONF) Access Control Model", RFC 6536,
DOI 10.17487/RFC6536, March 2012, DOI 10.17487/RFC6536, March 2012,
<https://www.rfc-editor.org/info/rfc6536>. <https://www.rfc-editor.org/info/rfc6536>.
[RFC7750] Hedin, J., Mirsky, G., and S. Baillargeon, "Differentiated [RFC7750] Hedin, J., Mirsky, G., and S. Baillargeon, "Differentiated
Service Code Point and Explicit Congestion Notification Service Code Point and Explicit Congestion Notification
Monitoring in the Two-Way Active Measurement Protocol Monitoring in the Two-Way Active Measurement Protocol
(TWAMP)", RFC 7750, DOI 10.17487/RFC7750, February 2016, (TWAMP)", RFC 7750, DOI 10.17487/RFC7750, February 2016,
<https://www.rfc-editor.org/info/rfc7750>. <https://www.rfc-editor.org/info/rfc7750>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[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>.
Appendix A. Acknowledgements Appendix A. Example of STAMP Session Configuration
Authors recognize and appreciate valuable comments providen by Adrian Figure 5 shows a configuration example for a STAMP-Sender.
Pan.
<?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<stamp xmlns="urn:ietf:params:xml:ns:yang:ietf-stamp">
<stamp-session-sender>
<session-enable>enable</session-enable>
<session-id>10</session-id>
<test-session-enable>enable<test-session-enable>
<number-of-packets>forever</number-of-packets>
<packet-padding-size/> <!-- use default 27 octets -->
<interval>10</interval> <!-- 10 microseconds -->
<measurement-interval/> <!-- use default 60 seconds -->
<!-- use default 0 repetitions,
i.e. do not repeat this session -->
<repeat/>
<dscp-value/> <!-- use deafult 0 (CS0) -->
<!-- use default 'stateless' -->
<test-session-reflector-mode/>
<sender-ip></sender-ip>
<sender-udp-port></sender-udp-port>
<reflector-ip></reflector-ip>
<reflector-udp-port/> <!-- use default 862 -->
<sender-timestamp-format/>
<!-- No authentication or encryption -->
<first-percentile/> <!-- use default 95 -->
<second-percentile/> <!-- use default 99 -->
<third-percentile/> <!-- use default 99.9 -->
</stamp-session-sender>
</stamp>
</data>
Figure 5: XML instance of STAMP Session-Sender configuration
<?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<stamp xmlns="urn:ietf:params:xml:ns:yang:ietf-stamp">
<stamp-session-reflector>
<session-enable>enable</session-enable>
<ref-wait/> <!-- use default 900 seconds -->
<!-- use default 'stateless' -->
<reflector-mode-state/>
<session-id></session-id>
<!-- use default 'copy-received-value' -->
<dscp-handling-mode/>
<!-- not used because of dscp-hanling-mode
being 'copy-received-value' -->
<dscp-value/>
<sender-ip/> <!-- use default 'any' -->
<sender-udp-port/> <!-- use default 'any' -->
<reflector-ip/> <!-- use default 'any' -->
<reflector-udp-port/> <!-- use default 862 -->
<reflector-timestamp-format/>
<!-- No authentication or encryption -->
</stamp-session-reflector>
</stamp>
</data>
Figure 6: XML instance of STAMP Session-Reflector configuration
Authors' Addresses Authors' Addresses
Greg Mirsky Greg Mirsky
ZTE Corp. ZTE Corp.
Email: gregimirsky@gmail.com Email: gregimirsky@gmail.com
Xiao Min Xiao Min
ZTE Corp. ZTE Corp.
 End of changes. 52 change blocks. 
232 lines changed or deleted 496 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/