draft-ietf-ippm-twamp-yang-05.txt   draft-ietf-ippm-twamp-yang-06.txt 
IPPM WG R. Civil IPPM WG R. Civil
Internet-Draft Ciena Corporation Internet-Draft Ciena Corporation
Intended status: Standards Track A. Morton Intended status: Standards Track A. Morton
Expires: April 21, 2018 AT&T Labs Expires: August 17, 2018 AT&T Labs
R. Rahman R. Rahman
M. Jethanandani
Cisco Systems Cisco Systems
M. Jethanandani
K. Pentikousis, Ed. K. Pentikousis, Ed.
Travelping Travelping
October 18, 2017 February 13, 2018
Two-Way Active Measurement Protocol (TWAMP) Data Model Two-Way Active Measurement Protocol (TWAMP) Data Model
draft-ietf-ippm-twamp-yang-05 draft-ietf-ippm-twamp-yang-06
Abstract Abstract
This document specifies a data model for client and server This document specifies a data model for client and server
implementations of the Two-Way Active Measurement Protocol (TWAMP). implementations of the Two-Way Active Measurement Protocol (TWAMP).
We define the TWAMP data model through Unified Modeling Language We define the TWAMP data model through Unified Modeling Language
(UML) class diagrams and formally specify it using YANG. (UML) class diagrams and formally specify it using YANG.
Status of This Memo Status of This Memo
skipping to change at page 1, line 39 skipping to change at page 1, line 40
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 April 21, 2018. This Internet-Draft will expire on August 17, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Document Organization . . . . . . . . . . . . . . . . . . 3 1.3. Document Organization . . . . . . . . . . . . . . . . . . 4
2. Scope, Model, and Applicability . . . . . . . . . . . . . . . 4 2. Scope, Model, and Applicability . . . . . . . . . . . . . . . 4
3. Data Model Overview . . . . . . . . . . . . . . . . . . . . . 5 3. Data Model Overview . . . . . . . . . . . . . . . . . . . . . 5
3.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 6 3.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 6
3.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 7 3.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 7
3.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 7 3.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 7
4. Data Model Parameters . . . . . . . . . . . . . . . . . . . . 8 4. Data Model Parameters . . . . . . . . . . . . . . . . . . . . 8
4.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 8 4.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 8
4.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 12 4.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 12
4.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 13 4.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 13
5. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 15 5. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1. YANG Tree Diagram . . . . . . . . . . . . . . . . . . . . 15 5.1. YANG Tree Diagram . . . . . . . . . . . . . . . . . . . . 15
5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 18 5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 18
6. Data Model Examples . . . . . . . . . . . . . . . . . . . . . 45 6. Data Model Examples . . . . . . . . . . . . . . . . . . . . . 46
6.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 45 6.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 46
6.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 49 6.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 49
6.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 50 6.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 50
7. Security Considerations . . . . . . . . . . . . . . . . . . . 53 7. Security Considerations . . . . . . . . . . . . . . . . . . . 53
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 54 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 54
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 54 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 54
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 55 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 55
11.1. Normative References . . . . . . . . . . . . . . . . . . 55 11.1. Normative References . . . . . . . . . . . . . . . . . . 55
11.2. Informative References . . . . . . . . . . . . . . . . . 56 11.2. Informative References . . . . . . . . . . . . . . . . . 56
Appendix A. Detailed Data Model Examples . . . . . . . . . . . . 57 Appendix A. Detailed Data Model Examples . . . . . . . . . . . . 57
skipping to change at page 3, line 39 skipping to change at page 3, line 39
vendor TWAMP deployments will become the norm. From an operations vendor TWAMP deployments will become the norm. From an operations
perspective, dealing with several vendor-specific TWAMP configuration perspective, dealing with several vendor-specific TWAMP configuration
mechanisms is simply unsustainable in this context. Second, the mechanisms is simply unsustainable in this context. Second, the
increasingly software-defined and virtualized nature of network increasingly software-defined and virtualized nature of network
infrastructures, based on dynamic service chains [NSC] and infrastructures, based on dynamic service chains [NSC] and
programmable control and management planes [RFC7426] requires a well- programmable control and management planes [RFC7426] requires a well-
defined data model for TWAMP implementations. This document defines defined data model for TWAMP implementations. This document defines
such a TWAMP data model and specifies it formally using the YANG data such a TWAMP data model and specifies it formally using the YANG data
modeling language [RFC6020]. modeling language [RFC6020].
Note to RFC Editor:
Please replace the date in the draft of the format 2018-02-13 with
the date of publication of this draft. Also, replace reference to
draft-ietf-ippm-twamp-yang, and draft-ietf-ippm-metric-registry with
the RFC numbers assigned to the draft.
1.2. Terminology 1.2. Terminology
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 [RFC2119]. document are to be interpreted as described in [RFC2119].
1.3. Document Organization 1.3. Document Organization
The rest of this document is organized as follows. Section 2 The rest of this document is organized as follows. Section 2
presents the scope and applicability of this document. Section 3 presents the scope and applicability of this document. Section 3
skipping to change at page 15, line 26 skipping to change at page 15, line 26
session instance on the Session-Reflector device. session instance on the Session-Reflector device.
If the user has no network access to the Control-Client device, then If the user has no network access to the Control-Client device, then
the only option is to retrieve all test-session instances from the the only option is to retrieve all test-session instances from the
Session-Reflector device. This could be problematic if a large Session-Reflector device. This could be problematic if a large
number of test sessions are currently active on that device. number of test sessions are currently active on that device.
Each Session-Reflector TWAMP-Test session contains the following Each Session-Reflector TWAMP-Test session contains the following
4-tuple: {parent-connection-client-ip, parent-connection-client-tcp- 4-tuple: {parent-connection-client-ip, parent-connection-client-tcp-
port, parent-connection-server-ip, parent-connection-server-tcp- port, parent-connection-server-ip, parent-connection-server-tcp-
port}. This 4-tuple MUST correspond to the equivalent 4-tuple port}. This 4-tuple MUST correspond to the equivalent 4-tuple
{client-ip, client-tcp-port, server-ip, server-tcp-port} in server/ {client-ip, client-tcp-port, server-ip, server-tcp-port} in server/
ctrl-connection. This 4-tuple allows the user to trace back from the ctrl-connection. This 4-tuple allows the user to trace back from the
TWAMP-Test session to the (parent) TWAMP-Control connection that TWAMP-Test session to the (parent) TWAMP-Control connection that
negotiated this test session. negotiated this test session.
5. Data Model 5. Data Model
This section formally specifies the TWAMP data model using YANG. This section formally specifies the TWAMP data model using YANG.
5.1. YANG Tree Diagram 5.1. YANG Tree Diagram
skipping to change at page 16, line 16 skipping to change at page 16, line 16
| +--rw name string | +--rw name string
| +--rw client-ip? inet:ip-address | +--rw client-ip? inet:ip-address
| +--rw server-ip inet:ip-address | +--rw server-ip inet:ip-address
| +--rw server-tcp-port? inet:port-number | +--rw server-tcp-port? inet:port-number
| +--rw control-packet-dscp? inet:dscp | +--rw control-packet-dscp? inet:dscp
| +--rw key-id? string | +--rw key-id? string
| +--rw max-count? uint8 | +--rw max-count? uint8
| +--ro client-tcp-port? inet:port-number | +--ro client-tcp-port? inet:port-number
| +--ro server-start-time? uint64 | +--ro server-start-time? uint64
| +--ro repeat-count? uint64 | +--ro repeat-count? uint64
| +--ro state? \ | +--ro state?
control-client-connection-state | | control-client-connection-state
| +--ro selected-mode? twamp-modes | +--ro selected-mode? twamp-modes
| +--ro token? binary | +--ro token? binary
| +--ro client-iv? binary | +--ro client-iv? binary
| +--rw test-session-request* [name] | +--rw test-session-request* [name]
| +--rw name string | +--rw name string
| +--rw sender-ip? inet:ip-address | +--rw sender-ip? inet:ip-address
| +--rw sender-udp-port? union | +--rw sender-udp-port? union
| +--rw reflector-ip inet:ip-address | +--rw reflector-ip inet:ip-address
| +--rw reflector-udp-port? dynamic-port-number | +--rw reflector-udp-port? uint32
| +--rw timeout? uint64 | +--rw timeout? uint64
| +--rw padding-length? uint32 | +--rw padding-length? uint32
| +--rw test-packet-dscp? inet:dscp | +--rw test-packet-dscp? inet:dscp
| +--rw start-time? uint64 | +--rw start-time? uint64
| +--rw repeat? union | +--rw repeat? union
| +--rw repeat-interval? uint32 | +--rw repeat-interval? uint32
| +--rw pm-reg-list* [pm-index] | +--rw pm-reg-list* [pm-index]
| | +--rw pm-index uint16 | | +--rw pm-index uint16
| +--ro state? test-session-state | +--ro state? test-session-state
| +--ro sid? string | +--ro sid? string
skipping to change at page 16, line 48 skipping to change at page 16, line 48
| +--rw admin-state boolean | +--rw admin-state boolean
| +--rw server-tcp-port? inet:port-number | +--rw server-tcp-port? inet:port-number
| +--rw servwait? uint32 | +--rw servwait? uint32
| +--rw control-packet-dscp? inet:dscp | +--rw control-packet-dscp? inet:dscp
| +--rw count? uint8 | +--rw count? uint8
| +--rw max-count? uint8 | +--rw max-count? uint8
| +--rw modes? twamp-modes | +--rw modes? twamp-modes
| +--rw key-chain* [key-id] | +--rw key-chain* [key-id]
| | +--rw key-id string | | +--rw key-id string
| | +--rw secret-key? binary | | +--rw secret-key? binary
| +--ro ctrl-connection* \ | +--ro ctrl-connection*
[client-ip client-tcp-port server-ip server-tcp-port] | [client-ip client-tcp-port server-ip server-tcp-port]
| +--ro client-ip inet:ip-address | +--ro client-ip inet:ip-address
| +--ro client-tcp-port inet:port-number | +--ro client-tcp-port inet:port-number
| +--ro server-ip inet:ip-address | +--ro server-ip inet:ip-address
| +--ro server-tcp-port inet:port-number | +--ro server-tcp-port inet:port-number
| +--ro state? server-ctrl-connection-state | +--ro state? server-ctrl-connection-state
| +--ro control-packet-dscp? inet:dscp | +--ro control-packet-dscp? inet:dscp
| +--ro selected-mode? twamp-modes | +--ro selected-mode? twamp-modes
| +--ro key-id? string | +--ro key-id? string
| +--ro count? uint8 | +--ro count? uint8
| +--ro max-count? uint8 | +--ro max-count? uint8
skipping to change at page 17, line 36 skipping to change at page 17, line 36
| | +--rw lambda decimal64 | | +--rw lambda decimal64
| | +--rw max-interval? decimal64 | | +--rw max-interval? decimal64
| +--ro state? sender-session-state | +--ro state? sender-session-state
| +--ro sent-packets? uint32 | +--ro sent-packets? uint32
| +--ro rcv-packets? uint32 | +--ro rcv-packets? uint32
| +--ro last-sent-seq? uint32 | +--ro last-sent-seq? uint32
| +--ro last-rcv-seq? uint32 | +--ro last-rcv-seq? uint32
+--rw session-reflector! {session-reflector}? +--rw session-reflector! {session-reflector}?
+--rw admin-state boolean +--rw admin-state boolean
+--rw refwait? uint32 +--rw refwait? uint32
+--ro test-session* \ +--ro test-session*
[sender-ip sender-udp-port \ [sender-ip sender-udp-port reflector-ip reflector-udp
reflector-ip reflector-udp-port] -port]
+--ro sid? string +--ro sid? string
+--ro sender-ip inet:ip-address +--ro sender-ip inet:ip-address
+--ro sender-udp-port \ +--ro sender-udp-port
dynamic-port-number | dynamic-port-number
+--ro reflector-ip inet:ip-address +--ro reflector-ip inet:ip-address
+--ro reflector-udp-port \ +--ro reflector-udp-port uint32
dynamic-port-number
+--ro parent-connection-client-ip? inet:ip-address +--ro parent-connection-client-ip? inet:ip-address
+--ro parent-connection-client-tcp-port? \ +--ro parent-connection-client-tcp-port? inet:port-numbe
inet:port-number r
+--ro parent-connection-server-ip? inet:ip-address +--ro parent-connection-server-ip? inet:ip-address
+--ro parent-connection-server-tcp-port? \ +--ro parent-connection-server-tcp-port? inet:port-numbe
inet:port-number r
+--ro test-packet-dscp? inet:dscp +--ro test-packet-dscp? inet:dscp
+--ro sent-packets? uint32 +--ro sent-packets? uint32
+--ro rcv-packets? uint32 +--ro rcv-packets? uint32
+--ro last-sent-seq? uint32 +--ro last-sent-seq? uint32
+--ro last-rcv-seq? uint32 +--ro last-rcv-seq? uint32
Figure 7: YANG Tree Diagram. Figure 7: YANG Tree Diagram.
5.2. YANG Module 5.2. YANG Module
This section presents the YANG module for the TWAMP data model This section presents the YANG module for the TWAMP data model
defined in this document. defined in this document.
<CODE BEGINS> file "ietf-twamp@2017-10-16.yang" <CODE BEGINS> file "ietf-twamp@2018-02-13.yang"
module ietf-twamp { module ietf-twamp {
namespace namespace
urn:ietf:params:xml:ns:yang:ietf-twamp; urn:ietf:params:xml:ns:yang:ietf-twamp;
prefix prefix
ietf-twamp; ietf-twamp;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
skipping to change at page 18, line 48 skipping to change at page 18, line 47
model for the Two-Way Active Measurement Protocol (TWAMP). model for the Two-Way Active Measurement Protocol (TWAMP).
The data model covers four TWAMP logical entities, namely, The data model covers four TWAMP logical entities, namely,
Control-Client, Server, Session-Sender, and Session-Reflector, Control-Client, Server, Session-Sender, and Session-Reflector,
as illustrated in the annotated TWAMP logical model (Fig. 1 as illustrated in the annotated TWAMP logical model (Fig. 1
of draft-ietf-ippm-twamp-yang). of draft-ietf-ippm-twamp-yang).
This YANG module uses features to indicate which of the four This YANG module uses features to indicate which of the four
logical entities are supported by a TWAMP implementation."; logical entities are supported by a TWAMP implementation.";
revision 2017-10-16 { revision 2018-02-13 {
description description
"Revision appearing in draft-ietf-ippm-twamp-yang-05. "Initial Revision.
Covers RFC 5357, RFC 5618, RFC 5938, RFC 6038, RFC 7717, and Covers RFC 5357, RFC 5618, RFC 5938, RFC 6038, RFC 7717, and
draft-ietf-ippm-metric-registry"; draft-ietf-ippm-metric-registry";
reference reference
draft-ietf-ippm-twamp-yang; draft-ietf-ippm-twamp-yang;
} }
/* /*
* Typedefs * Typedefs
skipping to change at page 19, line 30 skipping to change at page 19, line 30
authentication is applied in TWAMP-Control and TWAMP-Test. authentication is applied in TWAMP-Control and TWAMP-Test.
KeyID, Token, and Client-IV are not used in the KeyID, Token, and Client-IV are not used in the
Set-Up-Response message. See Section 3.1 of RFC 4656."; Set-Up-Response message. See Section 3.1 of RFC 4656.";
reference reference
"RFC 4656: A One-way Active Measurement Protocol (OWAMP)"; "RFC 4656: A One-way Active Measurement Protocol (OWAMP)";
} }
bit authenticated { bit authenticated {
position 1; position 1;
description description
"Authenticated mode, in which the Control-Client and Server "Authenticated mode, in which the Control-Client and Server
possess a shared secret thus prohibiting 'theft of service'. possess a shared secret thus prohibiting 'theft of service'.
As per Section 6 of RFC 4656, in 'authenticated mode, the As per Section 6 of RFC 4656, in 'authenticated mode, the
timestamp is in the clear and is not protected timestamp is in the clear and is not protected
cryptographically in any way, while the rest of the message cryptographically in any way, while the rest of the message
has the same protection as in encrypted mode. This mode has the same protection as in encrypted mode. This mode
allows one to trade off cryptographic protection against allows one to trade off cryptographic protection against
accuracy of timestamps.'"; accuracy of timestamps.'";
reference reference
"RFC 4656: A One-way Active Measurement Protocol (OWAMP)"; "RFC 4656: A One-way Active Measurement Protocol (OWAMP)";
} }
bit encrypted { bit encrypted {
position 2; position 2;
description description
"Encrypted mode 'makes it impossible to alter "Encrypted mode 'makes it impossible to alter
timestamps undetectably.' See also Section 4 of RFC 7717 timestamps undetectably.' See also Section 4 of RFC 7717
and Section 6 of RFC 4656."; and Section 6 of RFC 4656.";
reference reference
"RFC 4656: A One-way Active Measurement Protocol (OWAMP)"; "RFC 4656: A One-way Active Measurement Protocol (OWAMP)";
} }
bit unauth-test-encrpyt-control { bit unauth-test-encrpyt-control {
position 3; position 3;
description description
"When using the Mixed Security Mode, the TWAMP-Test "When using the Mixed Security Mode, the TWAMP-Test
protocol follows the Unauthenticated mode and the protocol follows the Unauthenticated mode and the
TWAMP-Control protocol the Encrypted mode."; TWAMP-Control protocol the Encrypted mode.";
reference reference
"RFC 5618: Mixed Security Mode for the Two-Way Active "RFC 5618: Mixed Security Mode for the Two-Way Active
Measurement Protocol (TWAMP)"; Measurement Protocol (TWAMP)";
} }
bit individual-session-control { bit individual-session-control {
position 4; position 4;
description description
"This mode enables individual test sessions using "This mode enables individual test sessions using
Session Identifiers."; Session Identifiers.";
reference reference
"RFC 5938: Individual Session Control Feature "RFC 5938: Individual Session Control Feature
for the Two-Way Active Measurement Protocol (TWAMP)"; for the Two-Way Active Measurement Protocol (TWAMP)";
} }
bit reflect-octets { bit reflect-octets {
position 5; position 5;
description description
"This mode indicates the reflect octets capability."; "This mode indicates the reflect octets capability.";
reference reference
"RFC 6038: Two-Way Active Measurement Protocol (TWAMP) "RFC 6038: Two-Way Active Measurement Protocol (TWAMP)
Reflect Octets and Symmetrical Size Features"; Reflect Octets and Symmetrical Size Features";
} }
bit symmetrical-size { bit symmetrical-size {
position 6; position 6;
description description
"This mode indicates support for the symmetrical size "This mode indicates support for the symmetrical size
sender test packet format."; sender test packet format.";
reference reference
"RFC 6038: Two-Way Active Measurement Protocol (TWAMP) "RFC 6038: Two-Way Active Measurement Protocol (TWAMP)
Reflect Octets and Symmetrical Size Features"; Reflect Octets and Symmetrical Size Features";
} }
bit IKEv2Derived { bit IKEv2Derived {
position 7; position 7;
description description
"In this mode the the shared key is derived "In this mode the the shared key is derived
from an IKEv2 security association (SA)."; from an IKEv2 security association (SA).";
reference reference
"RFC 7717: IKEv2-Derived Shared Secret Key for "RFC 7717: IKEv2-Derived Shared Secret Key for
the One-Way Active Measurement Protocol (OWAMP) the One-Way Active Measurement Protocol (OWAMP)
and Two-Way Active Measurement Protocol (TWAMP)"; and Two-Way Active Measurement Protocol (TWAMP)";
} }
} }
description description
"Specifies the configurable TWAMP-Modes supported during a "Specifies the configurable TWAMP-Modes supported during a
TWAMP-Control Connection setup between a Control-Client TWAMP-Control Connection setup between a Control-Client
and a Server. Section 7 of RFC 7717 summarizes the and a Server. Section 7 of RFC 7717 summarizes the
TWAMP-Modes registry and points to their formal TWAMP-Modes registry and points to their formal
specification."; specification.";
} }
typedef control-client-connection-state { typedef control-client-connection-state {
type enumeration { type enumeration {
enum active { enum active {
description description
"Indicates an active TWAMP-Control connection to Server."; "Indicates an active TWAMP-Control connection to Server.";
} }
enum idle { enum idle {
description description
skipping to change at page 21, line 35 skipping to change at page 21, line 35
type enumeration { type enumeration {
enum accepted { enum accepted {
value 0; value 0;
description description
"Indicates that accepted TWAMP-Test session request."; "Indicates that accepted TWAMP-Test session request.";
} }
enum failed { enum failed {
value 1; value 1;
description description
"Indicates a TWAMP-Test session failure due to "Indicates a TWAMP-Test session failure due to
some unspecified reason (catch-all)."; some unspecified reason (catch-all).";
} }
enum internal-error { enum internal-error {
value 2; value 2;
description description
"Indicates a TWAMP-Test session failure due to "Indicates a TWAMP-Test session failure due to
an internal error."; an internal error.";
} }
enum not-supported { enum not-supported {
value 3; value 3;
description description
"Indicates a TWAMP-Test session failure because "Indicates a TWAMP-Test session failure because
some aspect of the TWAMP-Test session request some aspect of the TWAMP-Test session request
is not supported."; is not supported.";
} }
enum permanent-resource-limit { enum permanent-resource-limit {
value 4; value 4;
description description
"Indicates a TWAMP-Test session failure due to "Indicates a TWAMP-Test session failure due to
permanent resource limitations."; permanent resource limitations.";
} }
enum temp-resource-limit { enum temp-resource-limit {
value 5; value 5;
description description
"Indicates a TWAMP-Test session failure due to "Indicates a TWAMP-Test session failure due to
temporary resource limitations."; temporary resource limitations.";
} }
} }
description description
"Indicates the Control-Client TWAMP-Test session state."; "Indicates the Control-Client TWAMP-Test session state.";
} }
typedef server-ctrl-connection-state { typedef server-ctrl-connection-state {
type enumeration { type enumeration {
enum active { enum active {
description description
"Indicates an active TWAMP-Control connection "Indicates an active TWAMP-Control connection
to the Control-Client."; to the Control-Client.";
} }
enum servwait { enum servwait {
description description
"Indicates that the TWAMP-Control connection to the "Indicates that the TWAMP-Control connection to the
Control-Client is in SERVWAIT as per the definition of Control-Client is in SERVWAIT as per the definition of
Section 3.1 of RFC 5357."; Section 3.1 of RFC 5357.";
} }
} }
description description
"Indicates the Server TWAMP-Control connection state."; "Indicates the Server TWAMP-Control connection state.";
} }
typedef sender-session-state { typedef sender-session-state {
type enumeration { type enumeration {
enum active { enum active {
description description
skipping to change at page 23, line 18 skipping to change at page 23, line 18
"TWAMP-Test packets are padded with all zeros."; "TWAMP-Test packets are padded with all zeros.";
} }
enum random { enum random {
description description
"TWAMP-Test packets are padded with pseudo-random "TWAMP-Test packets are padded with pseudo-random
numbers."; numbers.";
} }
} }
description description
"Indicates what type of packet padding is used in the "Indicates what type of packet padding is used in the
TWAMP-Test packets."; TWAMP-Test packets.";
} }
typedef dynamic-port-number { typedef dynamic-port-number {
type inet:port-number { type inet:port-number {
range 49152..65535; range 49152..65535;
} }
description "Dynamic range for port numbers."; description "Dynamic range for port numbers.";
} }
/* /*
* Features * Features
*/ */
feature control-client { feature control-client {
description description
"Indicates that the device supports configuration of the "Indicates that the device supports configuration of the
TWAMP Control-Client logical entity."; TWAMP Control-Client logical entity.";
} }
feature server { feature server {
description description
"Indicates that the device supports configuration of the "Indicates that the device supports configuration of the
TWAMP Server logical entity."; TWAMP Server logical entity.";
} }
feature session-sender { feature session-sender {
description description
"Indicates that the device supports configuration of the "Indicates that the device supports configuration of the
TWAMP Session-Sender logical entity."; TWAMP Session-Sender logical entity.";
} }
feature session-reflector { feature session-reflector {
description description
"Indicates that the device supports configuration of the "Indicates that the device supports configuration of the
TWAMP Session-Reflector logical entity."; TWAMP Session-Reflector logical entity.";
} }
/* /*
* Reusable node groups * Reusable node groups
*/ */
grouping key-management { grouping key-management {
list key-chain { list key-chain {
key key-id; key key-id;
leaf key-id { leaf key-id {
type string { type string {
length 1..80; length 1..80;
} }
description description
"KeyID used for a TWAMP-Control connection. As per "KeyID used for a TWAMP-Control connection. As per
Section 3.1 of RFC 4656, KeyID is 'a UTF-8 string, up to Section 3.1 of RFC 4656, KeyID is 'a UTF-8 string, up to
80 octets in length' and is used to select which 'shared 80 octets in length' and is used to select which 'shared
shared secret the [Control-Client] wishes to use to shared secret the [Control-Client] wishes to use to
authenticate or encrypt'."; authenticate or encrypt'.";
} }
leaf secret-key { leaf secret-key {
type binary; type binary;
description description
"The secret key corresponding to the KeyID for this "The secret key corresponding to the KeyID for this
TWAMP-Control connection."; TWAMP-Control connection.";
} }
description description
"Relates KeyIDs with their respective secret keys "Relates KeyIDs with their respective secret keys
in a TWAMP-Control connection."; in a TWAMP-Control connection.";
} }
description description
"Used by the Control-Client and Server for TWAMP-Control "Used by the Control-Client and Server for TWAMP-Control
key management."; key management.";
} }
grouping maintenance-statistics { grouping maintenance-statistics {
leaf sent-packets { leaf sent-packets {
type uint32; type uint32;
config false; config false;
description "Indicates the number of packets sent."; description
"Indicates the number of packets sent.";
} }
leaf rcv-packets { leaf rcv-packets {
type uint32; type uint32;
config false; config false;
description "Indicates the number of packets received."; description
"Indicates the number of packets received.";
} }
leaf last-sent-seq { leaf last-sent-seq {
type uint32; type uint32;
config false; config false;
description "Indicates the last sent sequence number."; description
"Indicates the last sent sequence number.";
} }
leaf last-rcv-seq { leaf last-rcv-seq {
type uint32; type uint32;
config false; config false;
description "Indicates the last received sequence number."; description
"Indicates the last received sequence number.";
} }
description "Used for TWAMP-Test maintenance statistics."; description
"Used for TWAMP-Test maintenance statistics.";
} }
grouping count { grouping count {
leaf count { leaf count {
type uint8 { type uint8 {
range "10..31"; range "10..31";
} }
default 10; default 10;
description description
"Parameter communicated to the Control-Client as part of the "Parameter communicated to the Control-Client as part of the
Server Greeting message and used for deriving a key from a Server Greeting message and used for deriving a key from a
shared secret as per Section 3.1 of RFC 4656: MUST be a shared secret as per Section 3.1 of RFC 4656: MUST be a
power of 2 and at least 1024. It is configured by providing power of 2 and at least 1024. It is configured by providing
said power. For example, configuring 15 here means count said power. For example, configuring 15 here means count
2^15 = 32768. The default is 10, meaning 2^10 = 1024."; 2^15 = 32768. The default is 10, meaning 2^10 = 1024.";
} }
description description
"Reusable data structure for count which is used both in the "Reusable data structure for count which is used both in the
Server container."; Server container.";
} }
grouping max-count { grouping max-count {
leaf max-count { leaf max-count {
type uint8 { type uint8 {
range "10..31"; range 10..31;
} }
default 15; default 15;
description description
"This parameter limits the maximum Count value, which MUST "This parameter limits the maximum Count value, which MUST
be a power of 2 and at least 1024 as per RFC 5357. It is be a power of 2 and at least 1024 as per RFC 5357. It is
configured by providing said power. For example, configured by providing said power. For example,
configuring 10 here means max count 2^10 = 1024. configuring 10 here means max count 2^10 = 1024.
The default is 15, meaning 2^15 = 32768. The default is 15, meaning 2^15 = 32768.
A TWAMP Server uses this configured value in the A TWAMP Server uses this configured value in the
Server-Greeting message sent to the Control-Client. Server-Greeting message sent to the Control-Client.
A TWAMP Control-Client uses this configured value to prevent A TWAMP Control-Client uses this configured value to prevent
denial-of-service (DOS) attacks by closing the control denial-of-service (DOS) attacks by closing the control
connection to the Server if it 'receives a Server-Greeting connection to the Server if it 'receives a Server-Greeting
message with Count greater that its maximum configured value', message with Count greater that its maximum configured value',
as per Section 6 of RFC 5357. as per Section 6 of RFC 5357.
Further, note that according to Section 6 of RFC 5357: Further, note that according to Section 6 of RFC 5357:
'If an attacking system sets the maximum value in 'If an attacking system sets the maximum value in
Count (2**32), then the system under attack would stall Count (2**32), then the system under attack would stall
for a significant period of time while it attempts to for a significant period of time while it attempts to
generate keys. generate keys.
TWAMP-compliant systems SHOULD have a configuration TWAMP-compliant systems SHOULD have a configuration
control to limit the maximum count value. The default control to limit the maximum count value. The default
max-count value SHOULD be 32768.' max-count value SHOULD be 32768.'
RFC 5357 does not qualify 'significant period' in terms of RFC 5357 does not qualify 'significant period' in terms of
time, but it is clear that this depends on the processing time, but it is clear that this depends on the processing
capacity available and operators need to pay attention to capacity available and operators need to pay attention to
this security consideration."; this security consideration.";
} }
description description
"Reusable data structure for max-count which is used both at "Reusable data structure for max-count which is used both at
the Control-Client and the Server containers."; the Control-Client and the Server containers.";
} }
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
container twamp { container twamp {
description description
"TWAMP logical entity configuration grouping of four models "TWAMP logical entity configuration grouping of four models
which correspond to the four TWAMP logical entities which correspond to the four TWAMP logical entities
Control-Client, Server, Session-Sender, and Session-Reflector Control-Client, Server, Session-Sender, and Session-Reflector
as illustrated in Fig. 1 of draft-ietf-ippm-twamp-yang."; as illustrated in Fig. 1 of draft-ietf-ippm-twamp-yang.";
container client { container client {
if-feature control-client; if-feature control-client;
presence "Enables TWAMP Control-Client functionality."; presence "Enables TWAMP Control-Client functionality.";
description description
"Configuration of the TWAMP Control-Client logical entity."; "Configuration of the TWAMP Control-Client logical entity.";
leaf admin-state { leaf admin-state {
type boolean; type boolean;
mandatory true; mandatory true;
description description
"Indicates whether the device is allowed to operate as a "Indicates whether the device is allowed to operate as a
TWAMP Control-Client."; TWAMP Control-Client.";
} }
list mode-preference-chain { list mode-preference-chain {
key priority; key priority;
unique mode; unique mode;
leaf priority { leaf priority {
type uint16; type uint16;
description description
"Indicates the Control-Client Mode preference priority "Indicates the Control-Client Mode preference priority
expressed as a 16-bit unsigned integer, where zero is the expressed as a 16-bit unsigned integer, where zero is the
highest priority and subsequent values monotonically highest priority and subsequent values monotonically
increasing."; increasing.";
} }
leaf mode { leaf mode {
type twamp-modes; type twamp-modes;
description description
"The supported TWAMP Mode matching the corresponding "The supported TWAMP Mode matching the corresponding
priority."; priority.";
} }
description description
"Indicates the Control-Client preferred order of use of "Indicates the Control-Client preferred order of use of
the supported TWAMP Modes. the supported TWAMP Modes.
Depending on the Modes available in the TWAMP Server Depending on the Modes available in the TWAMP Server
Greeting message (see Fig. 2 of RFC 7717), the Greeting message (see Fig. 2 of RFC 7717), the
this Control-Client MUST choose the highest priority Mode this Control-Client MUST choose the highest priority Mode
from the configured mode-preference-chain list."; from the configured mode-preference-chain list.";
} }
uses key-management; uses key-management;
list ctrl-connection { list ctrl-connection {
key name; key name;
description description
"List of TWAMP Control-Client control connections. "List of TWAMP Control-Client control connections.
Each item in the list describes a control connection
that will be initiated by this Control-Client"; Each item in the list describes a control connection
that will be initiated by this Control-Client";
leaf name { leaf name {
type string; type string;
description description
"A unique name used as a key to identify this individual "A unique name used as a key to identify this individual
TWAMP-Control connection on the Control-Client device."; TWAMP-Control connection on the Control-Client device.";
} }
leaf client-ip { leaf client-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address of the local Control-Client device, "The IP address of the local Control-Client device,
to be placed in the source IP address field of the to be placed in the source IP address field of the
IP header in TWAMP-Control (TCP) packets belonging IP header in TWAMP-Control (TCP) packets belonging
to this control connection. If not configured, the to this control connection. If not configured, the
device SHALL choose its own source IP address."; device SHALL choose its own source IP address.";
} }
leaf server-ip { leaf server-ip {
type inet:ip-address; type inet:ip-address;
mandatory true; mandatory true;
description description
"The IP address of the remote Server device, which the "The IP address of the remote Server device, which the
TWAMP-Control connection will be initiated to."; TWAMP-Control connection will be initiated to.";
} }
leaf server-tcp-port { leaf server-tcp-port {
type inet:port-number; type inet:port-number;
default 862; default 862;
description description
"This parameter defines the TCP port number that is "This parameter defines the TCP port number that is
to be used by this outgoing TWAMP-Control connection. to be used by this outgoing TWAMP-Control connection.
Typically, this is the well-known TWAMP-Control Typically, this is the well-known TWAMP-Control
port number (862) as per RFC 5357 However, there are known port number (862) as per RFC 5357 However, there are known
realizations of TWAMP in the field that were implemented realizations of TWAMP in the field that were implemented
before this well-known port number was allocated. These before this well-known port number was allocated. These
early implementations allowed the port number to be early implementations allowed the port number to be
configured. This parameter is therefore provided for configured. This parameter is therefore provided for
backward compatibility reasons."; backward compatibility reasons.";
} }
leaf control-packet-dscp { leaf control-packet-dscp {
type inet:dscp; type inet:dscp;
default 0; default 0;
description description
"The DSCP value to be placed in the IP header of "The DSCP value to be placed in the IP header of
TWAMP-Control (TCP) packets generated by this TWAMP-Control (TCP) packets generated by this
Control-Client."; Control-Client.";
} }
leaf key-id { leaf key-id {
type string { type string {
length 1..80; length 1..80;
} }
description description
"Indicates the KeyID value selected for this "Indicates the KeyID value selected for this
TWAMP-Control connection."; TWAMP-Control connection.";
} }
uses max-count; uses max-count;
leaf client-tcp-port { leaf client-tcp-port {
type inet:port-number; type inet:port-number;
config false; config false;
description description
"Indicates the source TCP port number used in the "Indicates the source TCP port number used in the
TWAMP-Control packets belonging to this control TWAMP-Control packets belonging to this control
connection."; connection.";
} }
leaf server-start-time { leaf server-start-time {
type uint64; type uint64;
config false; config false;
description description
"Indicates the Start-Time advertized by the Server in the "Indicates the Start-Time advertized by the Server in the
Server-Start message (RFC 4656, Section 3.1), Server-Start message (RFC 4656, Section 3.1),
representing the time when the current representing the time when the current
instantiation of the Server started operating. instantiation of the Server started operating.
The timestamp format follows RFC 1305 The timestamp format follows RFC 1305
according to Section 4.1.2 of RFC 4656."; according to Section 4.1.2 of RFC 4656.";
} }
leaf repeat-count {
type uint64;
config false;
description
"Indicates how many times the test session has been
repeated. When a test is running, this value will be
greater than 0. If the repeat parameter is non-zero,
this value is smaller than or equal to the repeat
parameter.";
}
leaf state { leaf state {
type control-client-connection-state; type control-client-connection-state;
config false; config false;
description description
"Indicates the current state of the TWAMP-Control "Indicates the current state of the TWAMP-Control
connection state."; connection state.";
} }
leaf selected-mode { leaf selected-mode {
type twamp-modes; type twamp-modes;
config false; config false;
description description
"The TWAMP Mode that the Control-Client has chosen for "The TWAMP Mode that the Control-Client has chosen for
this control connection as set in the Mode field of the this control connection as set in the Mode field of the
Set-Up-Response message (RFC 4656, Section 3.1)."; Set-Up-Response message";
reference
"RFC 4656, Section 3.1.";
} }
leaf token { leaf token {
type binary { type binary {
length 64; length 64;
} }
config false; config false;
description description
"This parameter holds the 64 octets containing the "This parameter holds the 64 octets containing the
concatenation of a 16-octet Challenge, a 16-octet AES concatenation of a 16-octet Challenge, a 16-octet AES
Session-key used for encryption, and a 32-octet Session-key used for encryption, and a 32-octet
HMAC-SHA1 Session-key used for authentication; see also HMAC-SHA1 Session-key used for authentication; see also
the last paragraph of Section 6 in RFC 4656. the last paragraph of Section 6 in RFC 4656.
If the Mode defined in RFC 7717 is selected (selected-mode), If the Mode defined in RFC 7717 is selected
Token is limited to 16 octets."; (selected-mode), Token is limited to 16 octets.";
reference reference
"RFC 4086: Randomness Requirements for Security "RFC 4086: Randomness Requirements for Security
RFC 7717: IKEv2-Derived Shared Secret Key for the One-Way RFC 7717: IKEv2-Derived Shared Secret Key for the One-Way
Active Measurement Protocol (OWAMP) and Two-Way Active Active Measurement Protocol (OWAMP) and Two-Way Active
Measurement Protocol (TWAMP)"; Measurement Protocol (TWAMP)";
} }
leaf client-iv { leaf client-iv {
type binary { type binary {
length 16; length 16;
} }
config false; config false;
description description
"Indicates the Control-Client Initialization Vector "Indicates the Control-Client Initialization Vector
(Client-IV), that is generated randomly by the (Client-IV), that is generated randomly by the
Control-Client. As per RFC 4656: Control-Client. As per RFC 4656:
Client-IV merely needs to be unique (i.e., it MUST Client-IV merely needs to be unique (i.e., it MUST
never be repeated for different sessions using the never be repeated for different sessions using the
same secret key; a simple way to achieve that without same secret key; a simple way to achieve that without
the use of cumbersome state is to generate the the use of cumbersome state is to generate the
Client-IV values using a cryptographically secure Client-IV values using a cryptographically secure
pseudo-random number source. pseudo-random number source.
If the Mode defined in RFC 7717 is selected (selected-mode), If the Mode defined in RFC 7717 is selected
Client-IV is limited to 12 octets."; (selected-mode), Client-IV is limited to 12 octets.";
reference reference
"RFC 4656: A One-way Active Measurement Protocol (OWAMP) "RFC 4656: A One-way Active Measurement Protocol (OWAMP)
RFC 7717: IKEv2-Derived Shared Secret Key for the One-Way RFC 7717: IKEv2-Derived Shared Secret Key for the One-Way
Active Measurement Protocol (OWAMP) and Two-Way Active Active Measurement Protocol (OWAMP) and Two-Way Active
Measurement Protocol (TWAMP)"; } Measurement Protocol (TWAMP)";
}
list test-session-request { list test-session-request {
key name; key name;
description description
"Information associated with the Control-Client "Information associated with the Control-Client
for this test session"; for this test session";
leaf name { leaf name {
type string; type string;
description description
"A unique name to be used for identification of "A unique name to be used for identification of
this TWAMP-Test session on the Control-Client."; this TWAMP-Test session on the Control-Client.";
} }
leaf sender-ip { leaf sender-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address of the Session-Sender device, "The IP address of the Session-Sender device,
which is to be placed in the source IP address which is to be placed in the source IP address
field of the IP header in TWAMP-Test (UDP) packets field of the IP header in TWAMP-Test (UDP) packets
belonging to this test session. This value will be belonging to this test session. This value will be
used to populate the sender address field of the used to populate the sender address field of the
Request-TW-Session message. Request-TW-Session message.
If not configured, the device SHALL choose its own If not configured, the device SHALL choose its own
source IP address."; source IP address.";
} }
leaf sender-udp-port { leaf sender-udp-port {
type union { type union {
type dynamic-port-number; type dynamic-port-number;
type enumeration { type enumeration {
enum autoallocate { enum autoallocate {
description description
"Indicates that the Contol-Client will "Indicates that the Contol-Client will
auto-allocate the TWAMP-Test (UDP) port number auto-allocate the TWAMP-Test (UDP) port number
from the dynamic port range."; from the dynamic port range.";
} }
} }
} }
default autoallocate; default autoallocate;
description description
"The UDP port number that is to be used by "The UDP port number that is to be used by
the Session-Sender for this TWAMP-Test session. the Session-Sender for this TWAMP-Test session.
The number is restricted to the dynamic port range. The number is restricted to the dynamic port range.
By default the Control-Client SHALL auto-allocate a By default the Control-Client SHALL auto-allocate a
UDP port number for this TWAMP-Test session. UDP port number for this TWAMP-Test session.
The configured (or auto-allocated) value is advertized The configured (or auto-allocated) value is advertized
in the Sender Port field of the Request-TW-session in the Sender Port field of the Request-TW-session
message (see Section 3.5 of RFC 5357). Note that message (see Section 3.5 of RFC 5357). Note that
in the scenario where a device auto-allocates a UDP in the scenario where a device auto-allocates a UDP
port number for a session, and the repeat parameter port number for a session, and the repeat parameter
for that session indicates that it should be for that session indicates that it should be
repeated, the device is free to auto-allocate a repeated, the device is free to auto-allocate a
different UDP port number when it negotiates the different UDP port number when it negotiates the
next (repeated) iteration of this session."; next (repeated) iteration of this session.";
} }
leaf reflector-ip { leaf reflector-ip {
type inet:ip-address; type inet:ip-address;
mandatory true; mandatory true;
description description
"The IP address belonging to the remote "The IP address belonging to the remote
Session-Reflector device to which the TWAMP-Test Session-Reflector device to which the TWAMP-Test
session will be initiated. This value will be session will be initiated. This value will be
used to populate the receiver address field of used to populate the receiver address field of
the Request-TW-Session message."; the Request-TW-Session message.";
} }
leaf reflector-udp-port { leaf reflector-udp-port {
type dynamic-port-number; type uint32 {
range "862 | 49152..65535";
}
description description
"This parameter defines the UDP port number that "This parameter defines the UDP port number that
will be used by the Session-Reflector for will be used by the Session-Reflector for
this TWAMP-Test session. The number is restricted this TWAMP-Test session. The default number is within
to the dynamic port range and is to be placed in to the dynamic port range and is to be placed in
the Receiver Port field of the Request-TW-Session the Receiver Port field of the Request-TW-Session
message."; message. The new well-known port (862) MAY be used.";
} }
leaf timeout { leaf timeout {
type uint64; type uint64;
units seconds; units seconds;
default 2; default 2;
description description
"The length of time (in seconds) that the "The length of time (in seconds) that the
Session-Reflector should continue to respond to Session-Reflector should continue to respond to
packets belonging to this TWAMP-Test session after packets belonging to this TWAMP-Test session after
a Stop-Sessions TWAMP-Control message has been a Stop-Sessions TWAMP-Control message has been
received (RFC 5357, Section 3.8). received (RFC 5357, Section 3.8).
This value will be placed in the Timeout field of This value will be placed in the Timeout field of
the Request-TW-Session message."; the Request-TW-Session message.";
} }
leaf padding-length { leaf padding-length {
type uint32 { type uint32 {
range 64..4096; range 64..4096;
} }
description description
"The number of padding bytes to be added to the "The number of padding bytes to be added to the
TWAMP-Test (UDP) packets generated by the TWAMP-Test (UDP) packets generated by the
Session-Sender. Session-Sender.
This value will be placed in the Padding Length This value will be placed in the Padding Length
field of the Request-TW-Session message field of the Request-TW-Session message.";
(RFC 4656, Section 3.5)."; reference
"RFC 4656, Section 3.5.";
} }
leaf test-packet-dscp { leaf test-packet-dscp {
type inet:dscp; type inet:dscp;
default 0; default 0;
description description
"The DSCP value to be placed in the IP header "The DSCP value to be placed in the IP header
of TWAMP-Test packets generated by the of TWAMP-Test packets generated by the
Session-Sender, and in the UDP header of the Session-Sender, and in the UDP header of the
TWAMP-Test response packets generated by the TWAMP-Test response packets generated by the
Session-Reflector for this test session. Session-Reflector for this test session.
This value will be placed in the Type-P Descriptor
field of the Request-TW-Session message";
reference
"RFC 5357.";
This value will be placed in the Type-P Descriptor
field of the Request-TW-Session message (RFC 5357).";
} }
leaf start-time { leaf start-time {
type uint64; type uint64;
default 0; default 0;
description description
"Time when the session is to be started "Time when the session is to be started
(but not before the TWAMP Start-Sessions command (but not before the TWAMP Start-Sessions command
is issued; see Section 3.4 of RFC 5357). is issued; see Section 3.4 of RFC 5357).
The start-time value is placed in the Start Time The start-time value is placed in the Start Time
field of the Request-TW-Session message. field of the Request-TW-Session message.
The timestamp format follows RFC 1305 as per The timestamp format follows RFC 1305 as per
Section 3.5 of RFC 4656. Section 3.5 of RFC 4656.
The default value of 0 indicates that the session The default value of 0 indicates that the session
will be started as soon as the Start-Sessions message will be started as soon as the Start-Sessions message
is received."; is received.";
} }
leaf repeat { leaf repeat {
type union { type union {
type uint32 { type uint32 {
range 0..4294967294; range 0..4294967294;
} }
type enumeration { type enumeration {
enum forever { enum forever {
description description
"Indicates that the test session SHALL be "Indicates that the test session SHALL be
repeated *forever* using the information in repeated *forever* using the information in
repeat-interval parameter, and SHALL NOT repeat-interval parameter, and SHALL NOT
decrement the value."; decrement the value.";
} }
} }
} }
default 0; default 0;
description description
"This value determines if the TWAMP-Test session must "This value determines if the TWAMP-Test session must
be repeated. When a test session has completed, the be repeated. When a test session has completed, the
repeat parameter is checked. repeat parameter is checked.
The default value of 0 indicates that the session The default value of 0 indicates that the session
MUST NOT be repeated. MUST NOT be repeated.
If the repeat value is 1 through 4,294,967,294 If the repeat value is 1 through 4,294,967,294
then the test session SHALL be repeated using the then the test session SHALL be repeated using the
information in repeat-interval parameter, and the information in repeat-interval parameter, and the
parent TWAMP-Control connection for this test parent TWAMP-Control connection for this test
session is restarted to negotiate a new instance session is restarted to negotiate a new instance
of this TWAMP-Test session. The implementation of this TWAMP-Test session.";
MUST decrement the value of repeat after
determining a repeated session is expected.";
} }
leaf repeat-interval { leaf repeat-interval {
when "../repeat!='0'" { when "../repeat!='0'" {
description description
"This parameter determines the timing of repeated "This parameter determines the timing of repeated
TWAMP-Test sessions when repeat is more than 0. TWAMP-Test sessions when repeat is more than 0.
When the value of repeat-interval is 0, the When the value of repeat-interval is 0, the
negotiation of a new test session SHALL begin negotiation of a new test session SHALL begin
immediately after the previous test session immediately after the previous test session
completes. Otherwise, the Control-Client will completes. Otherwise, the Control-Client will
wait for the number of seconds specified in the wait for the number of seconds specified in the
repeat-interval parameter before negotiating the repeat-interval parameter before negotiating the
new instance of this TWAMP-Test session."; new instance of this TWAMP-Test session.";
} }
type uint32; type uint32;
units seconds; units seconds;
default 0; default 0;
description "Repeat interval (in seconds)."; description
"Repeat interval (in seconds).";
} }
list pm-reg-list { list pm-reg-list {
key pm-index; key pm-index;
leaf pm-index { leaf pm-index {
type uint16; type uint16;
description description
"Numerical index value of a Registered Metric "Numerical index value of a Registered Metric
in the Performance Metric Registry in the Performance Metric Registry
(see ietf-ippm-metric-registry). Output statistics (see ietf-ippm-metric-registry). Output statistics
are specified in the corresponding Registry entry."; are specified in the corresponding Registry entry.";
} }
description description
"A list of one or more Performance Metric Registry "A list of one or more Performance Metric Registry
Index values, which communicate packet stream Index values, which communicate packet stream
characteristics along with one or more metrics characteristics along with one or more metrics
to be measured. to be measured.
All members of the pm-reg-list MUST have the same All members of the pm-reg-list MUST have the same
stream characteristics, such that they combine stream characteristics, such that they combine
to specify all metrics that shall be measured on to specify all metrics that shall be measured on
a single stream."; a single stream.";
reference reference
"ietf-ippm-metric-registry: "ietf-ippm-metric-registry: Registry for
Registry for Performance Metrics"; Performance Metrics";
}
leaf repeat-count {
type uint64;
config false;
description
"Indicates how many times the test session has been
repeated. When a test is running, this value will be
greater than 0. If the repeat parameter is non-zero,
this value is smaller than or equal to the repeat
parameter.";
} }
leaf state { leaf state {
type test-session-state; type test-session-state;
config false; config false;
description description
"Indicates the TWAMP-Test session state (accepted or "Indicates the TWAMP-Test session state, accepted or
indication of an error); see Section 3.5 of indication of an error.";
RFC 5357."; reference
"Section 3.5 of RFC 5357.";
} }
leaf sid { leaf sid {
type string; type string;
config false; config false;
description description
"The SID allocated by the Server for this TWAMP-Test "The SID allocated by the Server for this TWAMP-Test
session, and communicated back to the Control-Client session, and communicated back to the Control-Client
in the SID field of the Accept-Session message; in the SID field of the Accept-Session message";
see Section 4.3 of RFC 6038."; reference
"Section 4.3 of RFC 6038.";
} }
} }
} }
} }
container server { container server {
if-feature server; if-feature server;
presence "Enables TWAMP Server functionality."; presence "Enables TWAMP Server functionality.";
description "Configuration of the TWAMP Server logical entity."; description
"Configuration of the TWAMP Server logical entity.";
leaf admin-state { leaf admin-state {
type boolean; type boolean;
mandatory true; mandatory true;
description description
"Indicates whether the device is allowed to operate "Indicates whether the device is allowed to operate
as a TWAMP Server."; as a TWAMP Server.";
} }
leaf server-tcp-port { leaf server-tcp-port {
type inet:port-number; type inet:port-number;
default 862; default 862;
description description
"This parameter defines the well known TCP port number "This parameter defines the well known TCP port number
that is used by TWAMP-Control. The Server will listen that is used by TWAMP-Control. The Server will listen
on this port number for incoming TWAMP-Control on this port number for incoming TWAMP-Control
connections. Although this is defined as a fixed value connections. Although this is defined as a fixed value
(862) in RFC 5357, there are several realizations of (862) in RFC 5357, there are several realizations of
TWAMP in the field that were implemented before this TWAMP in the field that were implemented before this
well-known port number was allocated. These early well-known port number was allocated. These early
implementations allowed the port number to be implementations allowed the port number to be
configured. This parameter is therefore provided for configured. This parameter is therefore provided for
backward compatibility reasons."; backward compatibility reasons.";
} }
leaf servwait { leaf servwait {
type uint32 { type uint32 {
range 1..604800; range 1..604800;
} }
units seconds; units seconds;
default 900; default 900;
description description
"TWAMP-Control (TCP) session timeout, in seconds. "TWAMP-Control (TCP) session timeout, in seconds.
According to Section 3.1 of RFC 5357, According to Section 3.1 of RFC 5357,
Server MAY discontinue any established control
connection when no packet associated with that Server MAY discontinue any established control
connection has been received within SERVWAIT seconds."; connection when no packet associated with that
connection has been received within SERVWAIT seconds.";
} }
leaf control-packet-dscp { leaf control-packet-dscp {
type inet:dscp; type inet:dscp;
description description
"The DSCP value to be placed in the IP header of "The DSCP value to be placed in the IP header of
TWAMP-Control (TCP) packets generated by the Server. TWAMP-Control (TCP) packets generated by the Server.
Section 3.1 of RFC 5357 specifies that the server Section 3.1 of RFC 5357 specifies that the server
SHOULD use the DSCP value from the Control-Client's SHOULD use the DSCP value from the Control-Clients
TCP SYN. However, for practical purposes TWAMP will TCP SYN. However, for practical purposes TWAMP will
typically be implemented using a general purpose TCP typically be implemented using a general purpose TCP
stack provided by the underlying operating system, stack provided by the underlying operating system,
and such a stack may not provide this information to the and such a stack may not provide this information to the
user. Consequently, it is not always possible to user. Consequently, it is not always possible to
implement the behavior described in RFC 5357 in an implement the behavior described in RFC 5357 in an
OS-portable version of TWAMP. OS-portable version of TWAMP.
The default behavior if this item is not set is to use The default behavior if this item is not set is to use
the DSCP value from the Control-Client's TCP SYN, the DSCP value from the Control-Clients TCP SYN.";
as per Section 3.1 of RFC 5357."; reference
"Section 3.1 of RFC 5357.";
} }
uses count; uses count;
uses max-count; uses max-count;
leaf modes { leaf modes {
type twamp-modes; type twamp-modes;
description description
"The bit mask of TWAMP Modes this Server instance "The bit mask of TWAMP Modes this Server instance
is willing to support; see IANA TWAMP Modes Registry."; is willing to support; see IANA TWAMP Modes Registry.";
} }
uses key-management; uses key-management;
list ctrl-connection { list ctrl-connection {
key "client-ip client-tcp-port server-ip server-tcp-port"; key "client-ip client-tcp-port server-ip server-tcp-port";
config false; config false;
description description
"List of all incoming TWAMP-Control (TCP) connections."; "List of all incoming TWAMP-Control (TCP) connections.";
leaf client-ip { leaf client-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address on the remote Control-Client device, "The IP address on the remote Control-Client device,
which is the source IP address used in the which is the source IP address used in the
TWAMP-Control (TCP) packets belonging to this control TWAMP-Control (TCP) packets belonging to this control
connection."; connection.";
} }
leaf client-tcp-port { leaf client-tcp-port {
type inet:port-number; type inet:port-number;
description description
"The source TCP port number used in the TWAMP-Control "The source TCP port number used in the TWAMP-Control
(TCP) packets belonging to this control connection."; (TCP) packets belonging to this control connection.";
} }
leaf server-ip { leaf server-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address of the local Server device, which is "The IP address of the local Server device, which is
the destination IP address used in the the destination IP address used in the
TWAMP-Control (TCP) packets belonging to this control TWAMP-Control (TCP) packets belonging to this control
connection."; connection.";
} }
leaf server-tcp-port { leaf server-tcp-port {
type inet:port-number; type inet:port-number;
description description
"The destination TCP port number used in the "The destination TCP port number used in the
TWAMP-Control (TCP) packets belonging to this TWAMP-Control (TCP) packets belonging to this
control connection. This will usually be the control connection. This will usually be the
same value as the server-tcp-port configured same value as the server-tcp-port configured
under twamp/server. However, in the event that under twamp/server. However, in the event that
the user re-configured server/server-tcp-port the user re-configured server/server-tcp-port
after this control connection was initiated, this after this control connection was initiated, this
value will indicate the server-tcp-port that is value will indicate the server-tcp-port that is
actually in use for this control connection."; actually in use for this control connection.";
} }
leaf state { leaf state {
type server-ctrl-connection-state; type server-ctrl-connection-state;
description description
"Indicates the Server TWAMP-Control connection state."; "Indicates the Server TWAMP-Control connection state.";
} }
leaf control-packet-dscp { leaf control-packet-dscp {
type inet:dscp; type inet:dscp;
description description
"The DSCP value used in the IP header of the "The DSCP value used in the IP header of the
TWAMP-Control (TCP) packets sent by the Server TWAMP-Control (TCP) packets sent by the Server
for this control connection. This will usually for this control connection. This will usually
be the same value as is configured in the be the same value as is configured in the
control-packet-dscp parameter under the twamp/server control-packet-dscp parameter under the twamp/server
container. However, in the event that the user container. However, in the event that the user
re-configures server/dscp after this control re-configures server/dscp after this control
connection is already in progress, this read-only connection is already in progress, this read-only
value will show the actual dscp value in use by this value will show the actual dscp value in use by this
TWAMP-Control connection."; TWAMP-Control connection.";
} }
leaf selected-mode { leaf selected-mode {
type twamp-modes; type twamp-modes;
description description
"The Mode that was chosen for this TWAMP-Control "The Mode that was chosen for this TWAMP-Control
connection as set in the Mode field of the connection as set in the Mode field of the
Set-Up-Response message."; Set-Up-Response message.";
} }
leaf key-id { leaf key-id {
type string { type string {
length 1..80; length 1..80;
} }
description description
"The KeyID value that is in use by this TWAMP-Control "The KeyID value that is in use by this TWAMP-Control
connection as selected by Control-Client."; connection as selected by Control-Client.";
} }
uses count { uses count {
description description
"The count value that is in use by this TWAMP-Control "The count value that is in use by this TWAMP-Control
connection. This will usually be the same value connection. This will usually be the same value
as is configured under twamp/server. However, in the as is configured under twamp/server. However, in the
event that the user re-configured server/count event that the user re-configured server/count
after this control connection is already in progress, after this control connection is already in progress,
this read-only value will show the actual count that this read-only value will show the actual count that
is in use for this TWAMP-Control connection."; is in use for this TWAMP-Control connection.";
} }
uses max-count { uses max-count {
description description
"This read-only value indicates the actual max-count in use "This read-only value indicates the actual max-count in
for this control connection. Usually this would be the use for this control connection. Usually this would be
same value as configured under twamp/server."; the same value as configured under twamp/server.";
} }
leaf salt { leaf salt {
type binary { type binary {
length 16; length 16;
} }
description description
"A parameter used in deriving a key from a "A parameter used in deriving a key from a
shared secret as described in Section 3.1 of RFC 4656. shared secret as described in Section 3.1 of RFC 4656.
It is communicated to the Control-Client as part of It is communicated to the Control-Client as part of
the Server Greeting message."; the Server Greeting message.";
} }
leaf server-iv { leaf server-iv {
type binary { type binary {
length 16; length 16;
} }
description description
"The Server Initialization Vector "The Server Initialization Vector
(IV) generated randomly by the Server."; (IV) generated randomly by the Server.";
} }
leaf challenge { leaf challenge {
type binary { type binary {
length 16; length 16;
} }
description description
"A random sequence of octets generated by the Server. "A random sequence of octets generated by the Server.
As described in client/token, Challenge is used As described in client/token, Challenge is used
by the Control-Client to prove possession of a by the Control-Client to prove possession of a
shared secret."; shared secret.";
} }
} }
} }
container session-sender { container session-sender {
if-feature session-sender; if-feature session-sender;
presence "Enables TWAMP Session-Sender functionality."; presence "Enables TWAMP Session-Sender functionality.";
description description
"Configuration of the TWAMP Session-Sender logical entity"; "Configuration of the TWAMP Session-Sender logical entity";
leaf admin-state { leaf admin-state {
type boolean; type boolean;
mandatory true; mandatory true;
description description
"Indicates whether the device is allowed to operate "Indicates whether the device is allowed to operate
as a TWAMP Session-Sender."; as a TWAMP Session-Sender.";
} }
list test-session{ list test-session{
key name; key name;
description "List of TWAMP Session-Sender test sessions."; description
"List of TWAMP Session-Sender test sessions.";
leaf name { leaf name {
type string; type string;
description description
"A unique name for this TWAMP-Test session to be used "A unique name for this TWAMP-Test session to be used
for identifying this test session by the Session-Sender for identifying this test session by the Session-Sender
logical entity."; logical entity.";
} }
leaf ctrl-connection-name { leaf ctrl-connection-name {
type string; type string;
config false; config false;
description description
"The name of the parent TWAMP-Control connection that "The name of the parent TWAMP-Control connection that
is responsible for negotiating this TWAMP-Test session."; is responsible for negotiating this TWAMP-Test session.";
} }
leaf fill-mode { leaf fill-mode {
type padding-fill-mode; type padding-fill-mode;
default zero; default zero;
description description
"Indicates whether the padding added to the "Indicates whether the padding added to the
TWAMP-Test (UDP) packets will contain pseudo-random TWAMP-Test (UDP) packets will contain pseudo-random
numbers, or whether it should consist of all zeroes, numbers, or whether it should consist of all zeroes,
as per Section 4.2.1 of RFC 5357."; as per Section 4.2.1 of RFC 5357.";
} }
leaf number-of-packets { leaf number-of-packets {
type uint32; type uint32;
mandatory true; mandatory true;
description description
"The overall number of TWAMP-Test (UDP) packets to be "The overall number of TWAMP-Test (UDP) packets to be
transmitted by the Session-Sender for this test session."; transmitted by the Session-Sender for this test session.";
} }
choice packet-distribution { choice packet-distribution {
description description
"Indicates the distribution to be used for transmitting "Indicates the distribution to be used for transmitting
the TWAMP-Test (UDP) packets."; the TWAMP-Test (UDP) packets.";
case periodic { case periodic {
leaf periodic-interval { leaf periodic-interval {
type decimal64 { type decimal64 {
fraction-digits 5; fraction-digits 5;
} }
units seconds; units seconds;
mandatory true; mandatory true;
description description
"Indicates the time to wait (in seconds) between the "Indicates the time to wait (in seconds) between the
first bits of TWAMP-Test (UDP) packet transmissions for first bits of TWAMP-Test (UDP) packet transmissions for
this test session"; this test session.";
reference reference
"RFC 3432: Network performance measurement "RFC 3432: Network performance measurement
with periodic streams"; with periodic streams";
} }
} }
case poisson { case poisson {
leaf lambda { leaf lambda {
type decimal64 { type decimal64 {
fraction-digits 5; fraction-digits 5;
} }
units seconds; units seconds;
mandatory true; mandatory true;
description description
"Indicates the average time interval (in seconds) "Indicates the average time interval (in seconds)
between packets in the Poisson distribution. between packets in the Poisson distribution.
The packet is calculated using the reciprocal of lambda The packet is calculated using the reciprocal of lambda
and the TWAMP-Test packet size (which depends on the and the TWAMP-Test packet size (which depends on the
selected Mode and the packet padding)."; selected Mode and the packet padding).";
reference reference
"RFC 2330: Framework for IP Performance Metrics"; "RFC 2330: Framework for IP Performance Metrics";
} }
leaf max-interval { leaf max-interval {
type decimal64 { type decimal64 {
fraction-digits 5; fraction-digits 5;
} }
units seconds; units seconds;
description description
"Indicates the maximum time (in seconds) "Indicates the maximum time (in seconds)
between packet transmissions."; between packet transmissions.";
reference reference
"RFC 7312: Advanced Stream and Sampling Framework "RFC 7312: Advanced Stream and Sampling Framework
for IP Performance Metrics (IPPM)"; for IP Performance Metrics (IPPM)";
} }
} }
} }
leaf state { leaf state {
type sender-session-state; type sender-session-state;
config false; config false;
skipping to change at page 43, line 13 skipping to change at page 43, line 32
if-feature session-reflector; if-feature session-reflector;
presence "Enables TWAMP Session-Reflector functionality."; presence "Enables TWAMP Session-Reflector functionality.";
description description
"Configuration of the TWAMP Session-Reflector logical entity"; "Configuration of the TWAMP Session-Reflector logical entity";
leaf admin-state { leaf admin-state {
type boolean; type boolean;
mandatory true; mandatory true;
description description
"Indicates whether the device is allowed to operate "Indicates whether the device is allowed to operate
as a TWAMP Session-Reflector."; as a TWAMP Session-Reflector.";
} }
leaf refwait { leaf refwait {
type uint32 { type uint32 {
range 1..604800; range 1..604800;
} }
units seconds; units seconds;
default 900; default 900;
description description
"The Session-Reflector MAY discontinue any session that has "The Session-Reflector MAY discontinue any session that has
been started when no packet associated with that session has been started when no packet associated with that session has
been received for REFWAIT seconds. As per Section 3.1 of been received for REFWAIT seconds. As per Section 3.1 of
RFC 5357, this timeout allows a Session-Reflector to free up RFC 5357, this timeout allows a Session-Reflector to free up
resources in case of failure."; resources in case of failure.";
} }
list test-session { list test-session {
key key
"sender-ip sender-udp-port "sender-ip sender-udp-port
reflector-ip reflector-udp-port"; reflector-ip reflector-udp-port";
config false; config false;
description "TWAMP Session-Reflectortest sessions."; description
"TWAMP Session-Reflectortest sessions.";
leaf sid { leaf sid {
type string; type string;
description description
"An auto-allocated identifier for this TWAMP-Test "An auto-allocated identifier for this TWAMP-Test
session that is unique within the context of this session that is unique within the context of this
Server/Session-Reflector device only. This value Server/Session-Reflector device only. This value
is communicated to the Control-Client that is communicated to the Control-Client that
requested the test session in the SID field of the requested the test session in the SID field of the
Accept-Session message."; Accept-Session message.";
} }
leaf sender-ip { leaf sender-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address on the remote device, which is the "The IP address on the remote device, which is the
source IP address used in the TWAMP-Test (UDP) packets source IP address used in the TWAMP-Test (UDP) packets
belonging to this test session."; belonging to this test session.";
} }
leaf sender-udp-port { leaf sender-udp-port {
type dynamic-port-number; type dynamic-port-number;
description description
"The source UDP port used in the TWAMP-Test packets "The source UDP port used in the TWAMP-Test packets
belonging to this test session."; belonging to this test session.";
} }
leaf reflector-ip { leaf reflector-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address of the local Session-Reflector "The IP address of the local Session-Reflector
device, which is the destination IP address used device, which is the destination IP address used
in the TWAMP-Test (UDP) packets belonging to this test in the TWAMP-Test (UDP) packets belonging to this test
session."; session.";
} }
leaf reflector-udp-port { leaf reflector-udp-port {
type dynamic-port-number; type uint32 {
range "862 | 49152..65535";
}
description description
"The destination UDP port number used in the "The destination UDP port number used in the
TWAMP-Test (UDP) test packets belonging to this TWAMP-Test (UDP) test packets belonging to this
test session."; test session.";
} }
leaf parent-connection-client-ip { leaf parent-connection-client-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address on the Control-Client device, which "The IP address on the Control-Client device, which
is the source IP address used in the TWAMP-Control is the source IP address used in the TWAMP-Control
(TCP) packets belonging to the parent control (TCP) packets belonging to the parent control
connection that negotiated this test session."; connection that negotiated this test session.";
} }
leaf parent-connection-client-tcp-port { leaf parent-connection-client-tcp-port {
type inet:port-number; type inet:port-number;
description description
"The source TCP port number used in the TWAMP-Control "The source TCP port number used in the TWAMP-Control
(TCP) packets belonging to the parent control connection (TCP) packets belonging to the parent control connection
that negotiated this test session."; that negotiated this test session.";
} }
leaf parent-connection-server-ip { leaf parent-connection-server-ip {
type inet:ip-address; type inet:ip-address;
description description
"The IP address of the Server device, which is the "The IP address of the Server device, which is the
destination IP address used in the TWAMP-Control destination IP address used in the TWAMP-Control
(TCP) packets belonging to the parent control (TCP) packets belonging to the parent control
connection that negotiated this test session."; connection that negotiated this test session.";
} }
leaf parent-connection-server-tcp-port { leaf parent-connection-server-tcp-port {
type inet:port-number; type inet:port-number;
description description
"The destination TCP port number used in the TWAMP-Control "The destination TCP port number used in the TWAMP-Control
(TCP) packets belonging to the parent control connection (TCP) packets belonging to the parent control connection
that negotiated this test session."; that negotiated this test session.";
} }
leaf test-packet-dscp { leaf test-packet-dscp {
type inet:dscp; type inet:dscp;
description description
"The DSCP value present in the IP header of "The DSCP value present in the IP header of
TWAMP-Test (UDP) packets belonging to this session."; TWAMP-Test (UDP) packets belonging to this session.";
} }
uses maintenance-statistics; uses maintenance-statistics;
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
6. Data Model Examples 6. Data Model Examples
This section presents a simple but complete example of configuring This section presents a simple but complete example of configuring
all four entities in Figure 1, based on the YANG module specified in all four entities in Figure 1, based on the YANG module specified in
Section 5. The example is illustrative in nature, but aims to be Section 5. The example is illustrative in nature, but aims to be
self-contained, i.e. were it to be executed in a real TWAMP self-contained, i.e. were it to be executed in a real TWAMP
implementation it would lead to a correctly configured test session. implementation it would lead to a correctly configured test session.
For completeness, examples are provided for both IPv4 and IPv6. For completeness, examples are provided for both IPv4 and IPv6.
skipping to change at page 56, line 10 skipping to change at page 56, line 10
Measurement Protocol (OWAMP) and Two-Way Active Measurement Protocol (OWAMP) and Two-Way Active
Measurement Protocol (TWAMP)", RFC 7717, Measurement Protocol (TWAMP)", RFC 7717,
DOI 10.17487/RFC7717, December 2015, DOI 10.17487/RFC7717, December 2015,
<https://www.rfc-editor.org/info/rfc7717>. <https://www.rfc-editor.org/info/rfc7717>.
11.2. Informative References 11.2. Informative References
[I-D.ietf-ippm-metric-registry] [I-D.ietf-ippm-metric-registry]
Bagnulo, M., Claise, B., Eardley, P., Morton, A., and A. Bagnulo, M., Claise, B., Eardley, P., Morton, A., and A.
Akhter, "Registry for Performance Metrics", draft-ietf- Akhter, "Registry for Performance Metrics", draft-ietf-
ippm-metric-registry-12 (work in progress), June 2017. ippm-metric-registry-13 (work in progress), October 2017.
[I-D.unify-nfvrg-challenges] [I-D.unify-nfvrg-challenges]
Szabo, R., Csaszar, A., Pentikousis, K., Kind, M., Daino, Szabo, R., Csaszar, A., Pentikousis, K., Kind, M., Daino,
D., Qiang, Z., and H. Woesner, "Unifying Carrier and Cloud D., Qiang, Z., and H. Woesner, "Unifying Carrier and Cloud
Networks: Problem Statement and Challenges", draft-unify- Networks: Problem Statement and Challenges", draft-unify-
nfvrg-challenges-04 (work in progress), July 2016. nfvrg-challenges-04 (work in progress), July 2016.
[I-D.unify-nfvrg-devops] [I-D.unify-nfvrg-devops]
Meirosu, C., Manzalini, A., Steinert, R., Marchetto, G., Meirosu, C., Manzalini, A., Steinert, R., Marchetto, G.,
Pentikousis, K., Wright, S., Lynch, P., and W. John, Pentikousis, K., Wright, S., Lynch, P., and W. John,
skipping to change at page 65, line 32 skipping to change at page 65, line 32
Reshad Rahman Reshad Rahman
Cisco Systems Cisco Systems
2000 Innovation Drive 2000 Innovation Drive
Kanata, ON K2K 3E8 Kanata, ON K2K 3E8
Canada Canada
Email: rrahman@cisco.com Email: rrahman@cisco.com
Mahesh Jethanandani Mahesh Jethanandani
Cisco Systems
3700 Cisco Way
San Jose, CA 95134
USA
Email: mjethanandani@gmail.com Email: mjethanandani@gmail.com
Kostas Pentikousis (editor) Kostas Pentikousis (editor)
Travelping Travelping
Siemensdamm 50 Siemensdamm 50
Berlin 13629 Berlin 13629
Germany Germany
Email: k.pentikousis@travelping.com Email: k.pentikousis@travelping.com
 End of changes. 174 change blocks. 
419 lines changed or deleted 447 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/