| < 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.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||