| rfc8913xml2.original.xml | rfc8913.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!-- This template is for creating an Internet Draft using xml2rfc, | <!DOCTYPE rfc [ | |||
| which is available here: http://xml.resource.org. --> | <!ENTITY nbsp " "> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!ENTITY zwsp "​"> | |||
| <!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | <!ENTITY nbhy "‑"> | |||
| RFC.2119.xml"> | <!ENTITY wj "⁠"> | |||
| <!ENTITY RFC3432 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.3432.xml"> | ||||
| <!ENTITY RFC4086 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.4086.xml"> | ||||
| <!ENTITY RFC4656 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.4656.xml"> | ||||
| <!ENTITY RFC5357 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.5357.xml"> | ||||
| <!ENTITY RFC6020 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.6020.xml"> | ||||
| <!ENTITY RFC6038 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.6038.xml"> | ||||
| <!ENTITY RFC6241 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.6241.xml"> | ||||
| <!ENTITY RFC7426 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
| RFC.7426.xml"> | ||||
| <!ENTITY IPPMREG SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I- | ||||
| D.draft-ietf-ippm-metric-registry-02.xml"> | ||||
| <!ENTITY RESTCONF SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I | ||||
| -D.draft-ietf-netconf-restconf-04.xml"> | ||||
| <!ENTITY UNIFY SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D. | ||||
| draft-unify-nfvrg-challenges-00.xml"> | ||||
| <!ENTITY SP-DEVOPS SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference. | ||||
| I-D.draft-unify-nfvrg-devops-01.xml"> | ||||
| ]> | ]> | |||
| <rfc category="std" docName="draft-ietf-ippm-twamp-yang-13" ipr="trust200902"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | |||
| <?rfc toc="yes" ?> | docName="draft-ietf-ippm-twamp-yang-13" number="8913" ipr="trust200902" | |||
| obsoletes="" updates="" submissionType="IETF" consensus="true" xml:lang="en | ||||
| <?rfc symrefs="yes" ?> | " tocInclude="true" symRefs="true" sortRefs="true" version="3"> | |||
| <!-- xml2rfc v2v3 conversion 2.44.0 --> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc iprnotified="no" ?> | ||||
| <?rfc strict="yes" ?> | ||||
| <?rfc compact="yes" ?> | ||||
| <?rfc subcompact="no" ?> | ||||
| <?rfc comments="yes"?> | ||||
| <?rfc inline="yes" ?> | ||||
| <front> | <front> | |||
| <title abbrev="TWAMP YANG Data Model">Two-Way Active Measurement Protocol | <title abbrev="TWAMP YANG Data Model">Two-Way Active Measurement Protocol | |||
| (TWAMP) Data Model</title> | (TWAMP) YANG Data Model</title> | |||
| <seriesInfo name="RFC" value="8913"/> | ||||
| <author fullname="Ruth Civil" initials="R." surname="Civil"> | <author fullname="Ruth Civil" initials="R." surname="Civil"> | |||
| <organization>Ciena Corporation</organization> | <organization>Ciena Corporation</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>307 Legget Drive</street> | <street>307 Legget Drive</street> | |||
| <city>Kanata</city> | <city>Kanata</city> | |||
| <region>ON</region> | <region>ON</region> | |||
| <code>K2K 3C8</code> | <code>K2K 3C8</code> | |||
| <country>Canada</country> | <country>Canada</country> | |||
| </postal> | </postal> | |||
| <email>ruthcivil@gmail.com</email> | ||||
| <email>gcivil@ciena.com</email> | ||||
| <uri>www.ciena.com</uri> | <uri>www.ciena.com</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Al Morton" initials="A." surname="Morton"> | <author fullname="Al Morton" initials="A." surname="Morton"> | |||
| <organization>AT&T Labs</organization> | <organization>AT&T Labs</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>200 Laurel Avenue South</street> | <street>200 Laurel Avenue South</street> | |||
| <city>Middletown</city> | ||||
| <city>Middletown,</city> | ||||
| <region>NJ</region> | <region>NJ</region> | |||
| <code>07748</code> | <code>07748</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <phone>+1 732 420 1571</phone> | <phone>+1 732 420 1571</phone> | |||
| <facsimile>+1 732 368 1192</facsimile> | ||||
| <email>acmorton@att.com</email> | <email>acmorton@att.com</email> | |||
| <uri/> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Reshad Rahman" initials="R." surname="Rahman"> | <author fullname="Reshad Rahman" initials="R." surname="Rahman"> | |||
| <organization>Cisco Systems</organization> | <organization></organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>2000 Innovation Drive</street> | <street></street> | |||
| <city></city> | ||||
| <city>Kanata</city> | <region></region> | |||
| <code></code> | ||||
| <region>ON</region> | ||||
| <code>K2K 3E8</code> | ||||
| <country>Canada</country> | <country>Canada</country> | |||
| </postal> | </postal> | |||
| <email>reshad@yahoo.com</email> | ||||
| <email>rrahman@cisco.com</email> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Mahesh Jethanandani" initials="M." surname="Jethanandani"> | ||||
| <author fullname="Mahesh Jethanandani" initials="M." | ||||
| surname="Jethanandani"> | ||||
| <organization>Xoriant Corporation</organization> | <organization>Xoriant Corporation</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>1248 Reamswood Drive</street> | <street>1248 Reamwood Avenue</street> | |||
| <city>Sunnyvale</city> | <city>Sunnyvale</city> | |||
| <region>CA</region> | <region>CA</region> | |||
| <code>94089</code> | <code>94089</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <email>mjethanandani@gmail.com</email> | <email>mjethanandani@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Kostas Pentikousis" initials="K." surname="Pentikousis" ro | ||||
| <author fullname="Kostas Pentikousis" initials="K." role="editor" | le="editor"> | |||
| surname="Pentikousis"> | <organization>Detecon</organization> | |||
| <organization>Travelping</organization> | ||||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Siemensdamm 50</street> | <street> Winterfeldtstrasse 21</street> | |||
| <code>10781</code> | ||||
| <code>13629</code> | ||||
| <city>Berlin</city> | <city>Berlin</city> | |||
| <country>Germany</country> | <country>Germany</country> | |||
| </postal> | </postal> | |||
| <email>kostas.pentikousis@detecon.com</email> | ||||
| <email>k.pentikousis@travelping.com</email> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="November" year="2021"/> | ||||
| <date day="2" month="July" year="2018"/> | ||||
| <area>Transport</area> | ||||
| <workgroup>IPPM WG</workgroup> | ||||
| <abstract> | <abstract> | |||
| <t>This document specifies a data model for client and server | <t>This document specifies a data model for client and server | |||
| implementations of the Two-Way Active Measurement Protocol (TWAMP). The | implementations of the Two-Way Active Measurement Protocol (TWAMP). This | |||
| document defines the TWAMP data model through Unified Modeling Language | document defines the TWAMP data model through Unified Modeling Language | |||
| (UML) class diagrams and formally specifies it using a NDMA-compliant | (UML) class diagrams and formally specifies it using the YANG data | |||
| YANG model.</t> | modeling language (RFC 7950). The data model is compliant with the Networ | |||
| k Management Datastore Architecture | ||||
| (NMDA).</t> | ||||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section numbered="true" toc="default"> | |||
| <t>The <xref target="RFC5357">Two-Way Active Measurement Protocol | <name>Introduction</name> | |||
| <t>The <xref target="RFC5357" format="default">Two-Way Active Measurement | ||||
| Protocol | ||||
| (TWAMP) </xref> is used to measure network performance parameters such | (TWAMP) </xref> is used to measure network performance parameters such | |||
| as latency, bandwidth, and packet loss by sending probe packets and | as latency, bandwidth, and packet loss by sending probe packets and | |||
| measuring their experience in the network. To date, TWAMP | measuring their experience in the network. To date, TWAMP | |||
| implementations do not come with a standard management framework, and, | implementations do not come with a standard management framework, and, | |||
| as such, implementers have no choice except to provide a proprietary | as such, implementers have no choice except to provide a proprietary | |||
| mechanism. This document addresses this gap by defining the model using | mechanism. This document addresses this gap by defining the model using | |||
| <xref target="UML">UML</xref> class diagrams, and formally specifying a | Unified Modeling Language (UML) class diagrams <xref target="UML" | |||
| <xref target="RFC8342">NMDA-complaint</xref> TWAMP data model using | format="default"></xref> and formally specifying a TWAMP data model | |||
| <xref target="RFC7950">YANG 1.1 </xref>.</t> | that is compliant with the Network Management Datastore Architecture | |||
| (NMDA) <xref target="RFC8342" format="default"/>, using | ||||
| <section anchor="motivation" title="Motivation"> | <xref target="RFC7950" format="default">YANG 1.1 </xref>.</t> | |||
| <t>In current TWAMP deployments the lack of a standardized data model | <section anchor="motivation" numbered="true" toc="default"> | |||
| <name>Motivation</name> | ||||
| <t>In current TWAMP deployments, the lack of a standardized data model | ||||
| limits the flexibility to dynamically instantiate TWAMP-based | limits the flexibility to dynamically instantiate TWAMP-based | |||
| measurements across equipment from different vendors. In large, | measurements across equipment from different vendors. In large, | |||
| virtualized, and dynamically instantiated infrastructures where | virtualized, and dynamically instantiated infrastructures where | |||
| network functions are placed according to orchestration algorithms, | network functions are placed according to orchestration algorithms, | |||
| proprietary mechanisms for managing TWAMP measurements pose severe | proprietary mechanisms for managing TWAMP measurements pose severe | |||
| limitations with respect to programmability.</t> | limitations with respect to programmability.</t> | |||
| <t>Two major trends call for standardizing TWAMP management aspects. | <t>Two major trends call for standardizing TWAMP management aspects. | |||
| First, it is expected that in the coming years large-scale and | First, it is expected that in the coming years large-scale and | |||
| multi-vendor TWAMP deployments will become the norm. From an | multi-vendor TWAMP deployments will become the norm. From an | |||
| operations perspective, using several vendor-specific TWAMP | operations perspective, using several vendor-specific TWAMP | |||
| configuration mechanisms when one standard mechanism could provide an | configuration mechanisms when one standard mechanism could provide an | |||
| alternative is expensive and inefficient. Second, the increasingly | alternative is expensive and inefficient. Second, the increasingly | |||
| software-defined and virtualized nature of network infrastructures, | software-defined and virtualized nature of network infrastructures, | |||
| based on dynamic service chains <xref target="NSC"/> and programmable | based on dynamic service chains <xref target="NSC" format="default"/> an | |||
| control and management planes <xref target="RFC7426">Software-Defined | d programmable | |||
| Networking (SDN): Layers and Architecture Terminology </xref> requires | control and management planes <xref target="RFC7426" format="default"/>, | |||
| requires | ||||
| a well-defined data model for TWAMP implementations. This document | a well-defined data model for TWAMP implementations. This document | |||
| defines such a TWAMP data model and specifies it formally using the | defines such a TWAMP data model and specifies it formally using the | |||
| <xref target="RFC7950">YANG 1.1 </xref> data modeling language.</t> | <xref target="RFC7950" format="default">YANG 1.1 data modeling language< | |||
| /xref>.</t> | ||||
| <t>Note to RFC Editor:</t> | ||||
| <t>Please replace the date 2018-07-02 in Section 5.2 of the draft with | ||||
| the date of publication of this draft as a RFC. Also, replace | ||||
| reference to RFC XXXX, and draft-ietf-ippm-port-twamp-test with the | ||||
| RFC numbers assigned to the drafts.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Terminology"> | <name>Terminology</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
| "OPTIONAL" in this document are to be interpreted as described in | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
| <xref target="RFC2119">BCP 14</xref> <xref target="RFC8174"/> when, | "<bcp14>SHOULD NOT</bcp14>", | |||
| and only when, they appear in all capitals, as shown here.</t> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | ||||
| are to be interpreted as described in BCP 14 | ||||
| <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | ||||
| when, they appear in all capitals, as shown here.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Document Organization"> | <name>Document Organization</name> | |||
| <t>The rest of this document is organized as follows. <xref | <t>The rest of this document is organized as follows. <xref target="scop | |||
| target="scope"/> presents the scope and applicability of this | e" format="default"/> presents the scope and applicability of this | |||
| document. <xref target="structure"/> provides a high-level overview of | document. <xref target="structure" format="default"/> provides a high-le | |||
| the TWAMP data model. <xref target="parameters"/> details the | vel overview of | |||
| configuration parameters of the data model and <xref target="module"/> | the TWAMP data model. <xref target="parameters" format="default"/> detai | |||
| specifies in YANG the TWAMP data model. <xref target="examples"/> | ls the | |||
| lists illustrative examples which conform to the YANG data model | configuration parameters of the data model, and <xref target="module" fo | |||
| specified in this document. <xref target="AuthExample"/> elaborates | rmat="default"/> | |||
| specifies in YANG the TWAMP data model. <xref target="examples" format=" | ||||
| default"/> | ||||
| lists illustrative examples that conform to the YANG data model | ||||
| specified in this document. <xref target="AuthExample" format="default"/ | ||||
| > elaborates | ||||
| these examples further.</t> | these examples further.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="scope" numbered="true" toc="default"> | ||||
| <section anchor="scope" title="Scope, Model, and Applicability"> | <name>Scope, Model, and Applicability</name> | |||
| <t>The purpose of this document is the specification of a | <t>The purpose of this document is the specification of a | |||
| vendor-independent data model for TWAMP implementations.</t> | vendor-independent data model for TWAMP implementations.</t> | |||
| <t><xref target="fig_scope" format="default"/> illustrates a redrawn versi | ||||
| <t><xref target="fig:scope"/> illustrates a redrawn version of the TWAMP | on of the TWAMP | |||
| logical model found in Section 1.2 of <xref target="RFC5357">TWAMP | logical model found in <xref target="RFC5357" sectionFormat="of" | |||
| </xref>. The figure is annotated with pointers to the <xref | section="1.2">TWAMP</xref>. The figure is annotated with pointers to the | |||
| target="UML">UML</xref> diagrams provided in this document and | <xref target="UML" format="default">UML diagrams</xref> provided in this d | |||
| ocument and | ||||
| associated with the data model of the four logical entities in a TWAMP | associated with the data model of the four logical entities in a TWAMP | |||
| deployment, namely the TWAMP Control-Client, Server, Session-Sender and | deployment, namely the TWAMP Control-Client, Server, Session-Sender, and | |||
| Session-Reflector. A <xref target="UML">UML</xref> Notation Guide is | Session-Reflector. A UML Notation Guide is available in Section 5 | |||
| available in Section 5 of the said document.</t> | of UML <xref target="UML"/>.</t> | |||
| <t>As per <xref target="RFC5357" format="default">TWAMP </xref>, unlabeled | ||||
| <t>As per <xref target="RFC5357">TWAMP </xref>, unlabeled links in <xref | links in <xref target="fig_scope" format="default"/> are left unspecified and m | |||
| target="fig:scope"/> are left unspecified and may be proprietary | ay be proprietary | |||
| protocols.</t> | protocols.</t> | |||
| <figure anchor="fig_scope"> | ||||
| <figure anchor="fig:scope" title="Annotated TWAMP logical model"> | <name>Annotated TWAMP Logical Model</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| [Fig. 3] [Fig. 4] | (Figure 3) (Figure 4) | |||
| +----------------+ +--------+ | +----------------+ +--------+ | |||
| | Control-Client | <-- TWAMP-Control --> | Server | | | Control-Client | <-- TWAMP-Control --> | Server | | |||
| +----------------+ +--------+ | +----------------+ +--------+ | |||
| ^ ^ | ^ ^ | |||
| | | | | | | |||
| V V | V V | |||
| +----------------+ +-------------------+ | +----------------+ +-------------------+ | |||
| | Session-Sender | <-- TWAMP-Test --> | Session-Reflector | | | Session-Sender | <-- TWAMP-Test --> | Session-Reflector | | |||
| +----------------+ +-------------------+ | +----------------+ +-------------------+ | |||
| [Fig. 5] [Fig. 6] | (Figure 5) (Figure 6)]]></artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>As per <xref target="RFC5357">TWAMP </xref>, a TWAMP implementation | <t>As per <xref target="RFC5357" format="default">TWAMP </xref>, a TWAMP i | |||
| may follow a simplified logical model, in which the same node acts both | mplementation | |||
| as Control-Client and Session-Sender, while another node acts at the | may follow a simplified logical model, in which the same node acts as both | |||
| same time as TWAMP Server and Session-Reflector. <xref | Control-Client and Session-Sender, while another node acts at the | |||
| target="fig:scope2"/> illustrates this simplified logical model and | same time as both TWAMP Server and Session-Reflector. <xref target="fig_sc | |||
| ope2" format="default"/> illustrates this simplified logical model and | ||||
| indicates the interaction between the TWAMP configuration client and | indicates the interaction between the TWAMP configuration client and | |||
| server using, for instance, <xref target="RFC6241">NETCONF </xref> or | server using, for instance, <xref target="RFC6241" format="default">NETCON | |||
| <xref target="RFC8040">RESTCONF </xref>.</t> | F </xref> or | |||
| <xref target="RFC8040" format="default">RESTCONF </xref>.</t> | ||||
| <figure anchor="fig:scope2" title="Simplified TWAMP model and protocols"> | <figure anchor="fig_scope2"> | |||
| <artwork><![CDATA[ | <name>Simplified TWAMP Model and Protocols</name> | |||
| o-------------------o o-------------------o | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| | Config client | | Config client | | o-------------------o o-------------------o | |||
| o-------------------o o-------------------o | | Config client | | Config client | | |||
| || || | o-------------------o o-------------------o | |||
| NETCONF || RESTCONF NETCONF || RESTCONF | || || | |||
| || || | NETCONF || RESTCONF NETCONF || RESTCONF | |||
| o-------------------o o-------------------o | || || | |||
| | Config server | | Config server | | o-------------------o o-------------------o | |||
| | [Fig. 3, 5] | | [Fig. 4, 6] | | | Config server | | Config server | | |||
| +-------------------+ +-------------------+ | | (Figures 3 and 5) | | (Figures 4 and 6) | | |||
| | Control-Client | <-- TWAMP-Control --> | Server | | +-------------------+ +-------------------+ | |||
| | | | | | | Control-Client | <-- TWAMP-Control --> | Server | | |||
| | Session-Sender | <-- TWAMP-Test --> | Session-Reflector | | | | | | | |||
| +-------------------+ +-------------------+ | | Session-Sender | <-- TWAMP-Test --> | Session-Reflector | | |||
| ]]></artwork> | +-------------------+ +-------------------+]]></artwork> | |||
| </figure> | </figure> | |||
| <t>The data model defined in this document is orthogonal to the specific | <t>The data model defined in this document is orthogonal to the specific | |||
| protocol used between the Config client and Config server to communicate | protocol used between the Config client and Config server to communicate | |||
| the TWAMP configuration parameters.</t> | the TWAMP configuration parameters.</t> | |||
| <t>Operational actions such as how TWAMP-Test sessions are started and | <t>Operational actions such as how TWAMP-Test sessions are started and | |||
| stopped, how performance measurement results are retrieved, or how | stopped, how performance measurement results are retrieved, or how | |||
| stored results are cleared, and so on, are not addressed by the | stored results are cleared, and so on, are not addressed by the | |||
| configuration model defined in this document. As noted above, such | configuration model defined in this document. As noted above, such | |||
| operational actions are not part of the TWAMP specification <xref | operational actions are not part of the TWAMP specification <xref target=" | |||
| target="RFC5357">TWAMP </xref> and hence are out of scope of this | RFC5357" format="default"></xref> and hence are out of scope for this | |||
| document. See also <xref target="OperationalCommands"/>. In addition, | document. See also <xref target="OperationalCommands" | |||
| for operational state, current work in <xref | format="default"/>. In addition, | |||
| target="I-D.ietf-ippm-metric-registry">Registry for Performance | for operational state, the information provided in the Performance Metrics | |||
| Metrics</xref>, can be used to develop an independent model for the | Registry <xref target="RFC8911"/> and | |||
| performance metrics that need to be captured and retrieved.</t> | <xref target="PERF-METRICS"/> can be used to develop an independent model | |||
| for the | ||||
| Performance Metrics that need to be captured and retrieved.</t> | ||||
| </section> | </section> | |||
| <section anchor="structure" numbered="true" toc="default"> | ||||
| <section anchor="structure" title="Data Model Overview"> | <name>Data Model Overview</name> | |||
| <t>The TWAMP data model includes four categories of configuration | <t>The TWAMP data model includes four categories of configuration | |||
| items.</t> | items.</t> | |||
| <t>First, global configuration items relate to parameters that are set | <t>First, global configuration items relate to parameters that are set | |||
| on a per device level. For example, the administrative status of the | on a per-device level. For example, the administrative status of the | |||
| device with respect to whether it allows TWAMP sessions and, if so, in | device with respect to whether it allows TWAMP sessions and, if so, in | |||
| what capacity (e.g. Control-Client, Server or both), is a typical | what capacity (e.g., Control-Client, Server, or both) is a typical | |||
| instance of a global configuration item.</t> | instance of a global configuration item.</t> | |||
| <t>A second category includes attributes that can be configured on a | ||||
| <t>A second category includes attributes that can be configured on a per | per&nbhy;TWAMP-Control-connection basis, such as the Server IP address.</t | |||
| TWAMP-Control connection basis, such as the Server IP address.</t> | > | |||
| <t>A third category includes attributes related to | ||||
| <t>A third category includes attributes related to per TWAMP-Test | per-TWAMP-Test-session attributes -- for instance, setting different value | |||
| session attributes, for instance setting different values in the | s in the | |||
| Differentiated Services Code Point (DSCP) field.</t> | Differentiated Services Code Point (DSCP) field.</t> | |||
| <t>Finally, the data model includes attributes that relate to the | <t>Finally, the data model includes attributes that relate to the | |||
| operational state of the TWAMP implementation.</t> | operational state of the TWAMP implementation.</t> | |||
| <t>As the TWAMP data model is described in the remaining sections of | <t>As the TWAMP data model is described in the remaining sections of | |||
| this document, readers should keep in mind the functional entity | this document, readers should keep in mind the functional entity | |||
| grouping illustrated in <xref target="fig:scope"/>.</t> | grouping illustrated in <xref target="fig_scope" format="default"/>.</t> | |||
| <section anchor="twamp-client" numbered="true" toc="default"> | ||||
| <section anchor="twamp-client" title="Control-Client"> | <name>Control-Client</name> | |||
| <t>A TWAMP Control-Client has an administrative status field set at | <t>A TWAMP Control-Client has an administrative status field set at | |||
| the device level that indicates whether the node is enabled to | the device level that indicates whether the node is enabled to | |||
| function as such.</t> | function as such.</t> | |||
| <t>Each TWAMP Control-Client is associated with zero or more | <t>Each TWAMP Control-Client is associated with zero or more | |||
| TWAMP-Control connections. The main configuration parameters of each | TWAMP&nbhy;Control connections. The main configuration parameters of eac | |||
| control connection are: <list style="symbols"> | h | |||
| <t>A name which can be used to uniquely identify at the | control connection are: </t> | |||
| <ul spacing="normal"> | ||||
| <li>A name that can be used to uniquely identify at the | ||||
| Control-Client a particular control connection. This name is | Control-Client a particular control connection. This name is | |||
| necessary for programmability reasons because at the time of | necessary for programmability reasons because at the time of | |||
| creation of a TWAMP-Control connection not all IP and TCP port | creation of a TWAMP-Control connection not all IP and TCP port | |||
| number information needed to uniquely identify the connection is | number information needed to uniquely identify the connection is | |||
| available.</t> | available.</li> | |||
| <li>The IP address of the interface the Control-Client will use for | ||||
| <t>The IP address of the interface the Control-Client will use for | connections.</li> | |||
| connections.</t> | <li>The IP address of the remote TWAMP Server.</li> | |||
| <li>Authentication and encryption attributes such as KeyID, Token, | ||||
| <t>The IP address of the remote TWAMP Server.</t> | and the Control-Client Initialization Vector (Client-IV); see also | |||
| Section <xref target="RFC4656" sectionFormat="bare" | ||||
| <t>Authentication and encryption attributes such as KeyID, Token | section="3.1"/> of <xref target="RFC4656" format="default">"A One-wa | |||
| and the Client Initialization Vector (Client-IV); see also Section | y | |||
| 3.1 in <xref target="RFC4656">OWAMP </xref> and <xref | Active Measurement Protocol (OWAMP)"</xref> and <xref target="RFC4086" | |||
| target="RFC4086">Randomness Requirements for Security </xref>.</t> | format="default">"Randomness Requirements for Security"</xref>.</li> | |||
| </list></t> | </ul> | |||
| <t>Each TWAMP-Control connection, in turn, is associated with zero or | <t>Each TWAMP-Control connection, in turn, is associated with zero or | |||
| more TWAMP-Test sessions. For each test session, the following | more TWAMP-Test sessions. For each test session, the following | |||
| configuration items should be noted: <list style="symbols"> | configuration items should be noted: </t> | |||
| <t>The test session name uniquely identifies a particular test | <ul spacing="normal"> | |||
| <li>The test session name, which uniquely identifies a particular test | ||||
| session at the Control-Client and Session-Sender. Similar to the | session at the Control-Client and Session-Sender. Similar to the | |||
| control connections above, this unique test session name is needed | control connections mentioned above, this unique test session name i s needed | |||
| because at the time of creation of a TWAMP-Test session, for | because at the time of creation of a TWAMP-Test session, for | |||
| example, the source UDP port number is not known to uniquely | example, the source UDP port number is not known to uniquely | |||
| identify the test session.</t> | identify the test session.</li> | |||
| <li>The IP address and UDP port number of the Session-Sender on the | ||||
| <t>The IP address and UDP port number of the Session-Sender on the | path under test by TWAMP.</li> | |||
| path under test by TWAMP.</t> | <li>The IP address and UDP port number of the Session-Reflector on | |||
| said path.</li> | ||||
| <t>The IP address and UDP port number of the Session-Reflector on | <li>Information pertaining to the test packet stream, such as the | |||
| said path.</t> | test starting time; which Performance Metric is to be used, as | |||
| defined in <xref target="RFC8911" format="default">"Registry | ||||
| <t>Information pertaining to the test packet stream, such as the | for Performance Metrics"</xref>; or whether the test should be | |||
| test starting time, which performance metric is to be used, as | repeated.</li> | |||
| defined in <xref target="I-D.ietf-ippm-metric-registry">Registry | </ul> | |||
| for Performance Metrics </xref>, or whether the test should be | ||||
| repeated.</t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section anchor="twamp-server" numbered="true" toc="default"> | ||||
| <section anchor="twamp-server" title="Server"> | <name>Server</name> | |||
| <t>Each TWAMP Server has an administrative status field set at the | <t>Each TWAMP Server has an administrative status field set at the | |||
| device level to indicate whether the node is enabled to function as a | device level to indicate whether the node is enabled to function as a | |||
| TWAMP Server.</t> | TWAMP Server.</t> | |||
| <t>Each Server is associated with zero or more TWAMP-Control | <t>Each Server is associated with zero or more TWAMP-Control | |||
| connections. Each control connection is uniquely identified by the | connections. Each control connection is uniquely identified by the | |||
| 4-tuple {Control-Client IP address, Control-Client TCP port number, | 4-tuple {Control-Client IP address, Control-Client TCP port number, | |||
| Server IP address, Server TCP port}. Control connection configuration | Server IP address, Server TCP port}. Control connection configurat ion | |||
| items on a TWAMP Server are read-only.</t> | items on a TWAMP Server are read-only.</t> | |||
| </section> | </section> | |||
| <section anchor="twampSender" numbered="true" toc="default"> | ||||
| <section anchor="twampSender" title="Session-Sender"> | <name>Session-Sender</name> | |||
| <t>A TWAMP Session-Sender has an administrative status field set at | <t>A TWAMP Session-Sender has an administrative status field set at | |||
| the device level that indicates whether the node is enabled to | the device level that indicates whether the node is enabled to | |||
| function as such.</t> | function as such.</t> | |||
| <t>There is one Session-Sender instance for each TWAMP-Test session | <t>There is one Session-Sender instance for each TWAMP-Test session | |||
| that is initiated from the sending device. Primary configuration | that is initiated from the sending device. Primary configuration | |||
| fields include: <list style="symbols"> | fields include: </t> | |||
| <t>The test session name MUST be identical to the corresponding | <ul spacing="normal"> | |||
| test session name on the TWAMP Control-Client (<xref | <li>The test session name, which <bcp14>MUST</bcp14> be identical to t | |||
| target="twamp-client"/>).</t> | he corresponding | |||
| test session name on the TWAMP Control-Client (<xref target="twamp-c | ||||
| <t>The control connection name, which along with the test session | lient" format="default"/>).</li> | |||
| name uniquely identify the TWAMP Session-Sender instance.</t> | <li>The control connection name, which, along with the test session | |||
| name, uniquely identifies the TWAMP Session-Sender instance.</li> | ||||
| <t>Information pertaining to the test packet stream, such as, the | <li>Information pertaining to the test packet stream, such as the | |||
| number of test packets and the packet distribution to be employed; | number of test packets and the packet distribution to be employed; | |||
| see also <xref target="RFC3432">Network performance measurement | see also <xref target="RFC3432" format="default">"Network performanc | |||
| with periodic streams </xref>.</t> | e measurement | |||
| </list></t> | with periodic streams"</xref>.</li> | |||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="twampReflector" numbered="true" toc="default"> | ||||
| <section anchor="twampReflector" title="Session-Reflector"> | <name>Session-Reflector</name> | |||
| <t>Each TWAMP Session-Reflector has an administrative status field set | <t>Each TWAMP Session-Reflector has an administrative status field set | |||
| at the device level to indicate whether the node is enabled to | at the device level to indicate whether the node is enabled to | |||
| function as such.</t> | function as such.</t> | |||
| <t>Each Session-Reflector is associated with zero or more TWAMP-Test | <t>Each Session-Reflector is associated with zero or more TWAMP-Test | |||
| sessions. For each test session, the REFWAIT timeout parameter, which | sessions. For each test session, the REFWAIT timeout parameter, which | |||
| determines whether to discontinue the session if no packets have been | determines whether to discontinue the session if no packets have been | |||
| received (<xref target="RFC5357">TWAMP </xref>, Section 4.2), can be | received (<xref target="RFC5357" sectionFormat="comma" section="4.2">TWA MP</xref>), can be | |||
| configured.</t> | configured.</t> | |||
| <t>Read-only access to other data model parameters, such as the Sender | <t>Read-only access to other data model parameters, such as the Sender | |||
| IP address, is foreseen. Each test session can be uniquely identified | IP address, is foreseen. Each test session can be uniquely identified | |||
| by the 4-tuple mentioned in <xref target="twamp-server"/>.</t> | by the 4-tuple mentioned in <xref target="twamp-server" format="default" />.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="parameters" numbered="true" toc="default"> | ||||
| <section anchor="parameters" title="Data Model Parameters"> | <name>Data Model Parameters</name> | |||
| <t>This section defines the TWAMP data model using <xref | <t>This section defines the TWAMP data model using UML <xref target="UML"/ | |||
| target="UML">UML</xref> and introduces selected parameters associated | > and introduces selected parameters associated | |||
| with the four TWAMP logical entities. The complete TWAMP data model | with the four TWAMP logical entities. The complete TWAMP data model | |||
| specification is provided in the YANG module presented in <xref | specification is provided in the YANG module presented in <xref target="ya | |||
| target="yangmodule"/>.</t> | ngmodule" format="default"/>.</t> | |||
| <section anchor="clientConfig" numbered="true" toc="default"> | ||||
| <section anchor="clientConfig" title="Control-Client"> | <name>Control-Client</name> | |||
| <t>The client container (see <xref target="fig:twamp-client"/>) holds | <t>The client container (see <xref target="fig_twamp-client" format="def | |||
| ault"/>) holds | ||||
| items that are related to the configuration of the TWAMP | items that are related to the configuration of the TWAMP | |||
| Control-Client logical entity (recall <xref target="fig:scope"/>).</t> | Control-Client logical entity (recall <xref target="fig_scope" format="d | |||
| efault"/>).</t> | ||||
| <t>The client container includes an administrative configuration | <t>The client container includes an administrative configuration | |||
| parameter (client/admin-state) that indicates whether the device is | parameter (client/admin-state) that indicates whether the device is | |||
| allowed to initiate TWAMP-Control connections.</t> | allowed to initiate TWAMP-Control connections.</t> | |||
| <figure anchor="fig_twamp-client"> | ||||
| <figure anchor="fig:twamp-client" | <name>TWAMP Control-Client UML Class Diagram</name> | |||
| title="TWAMP Control-Client UML class diagram"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ | +-------------+ | |||
| +-------------+ | | client | | |||
| | client | | +-------------+ 1..* +-----------------------+ | |||
| +-------------+ 1..* +-----------------------+ | | admin-state |<>----------------------| mode-preference-chain | | |||
| | admin-state |<>----------------------| mode-preference-chain | | | | +-----------------------+ | |||
| | | +-----------------------+ | | | 1..* +------------+ | priority | | |||
| | | 1..* +------------+ | priority | | | |<>-----| key-chain | | mode | | |||
| | |<>-----| key-chain | | mode | | +-------------+ +------------+ +-----------------------+ | |||
| +-------------+ +------------+ +-----------------------+ | ^ | key-id | | |||
| ^ | key-id | | V | secret-key | | |||
| V | secret-key | | | +------------+ | |||
| | +------------+ | | 0..* | |||
| | 0..* | +------------------------+ | |||
| +------------------------+ | | ctrl-connection | | |||
| | ctrl-connection | | +------------------------+ | |||
| +------------------------+ | | name | | |||
| | name | | | client-ip | | |||
| | client-ip | | | server-ip | | |||
| | server-ip | | | server-tcp-port | 0..* +----------------------+ | |||
| | server-tcp-port | 0..* +----------------------+ | | control-packet-dscp |<>-------| test-session-request | | |||
| | control-packet-dscp |<>-------| test-session-request | | | key-id | +----------------------+ | |||
| | key-id | +----------------------+ | | max-count | | name | | |||
| | max-count | | name | | | client-tcp-port {ro} | | sender-ip | | |||
| | client-tcp-port {ro} | | sender-ip | | | server-start-time {ro} | | sender-udp-port | | |||
| | server-start-time {ro} | | sender-udp-port | | | state {ro} | | reflector-ip | | |||
| | state {ro} | | reflector-ip | | | selected-mode {ro} | | reflector-udp-port | | |||
| | selected-mode {ro} | | reflector-udp-port | | | token {ro} | | timeout | | |||
| | token {ro} | | timeout | | | client-iv {ro} | | padding-length | | |||
| | client-iv {ro} | | padding-length | | +------------------------+ | test-packet-dscp | | |||
| +------------------------+ | test-packet-dscp | | | start-time | | |||
| | start-time | | +-------------+ 1 | repeat | | |||
| +-------------+ 1 | repeat | | | pm-reg-list |------<>| repeat-interval | | |||
| | pm-reg-list |------<>| repeat-interval | | +-------------+ | state {ro} | | |||
| +-------------+ | state {ro} | | | pm-index | | sid {ro} | | |||
| | pm-index | | sid {ro} | | +-------------+ +----------------------+]]></artwork> | |||
| +-------------+ +----------------------+ | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>The client container holds a list (mode-preference-chain) that | ||||
| <t>The client container holds a list (mode-preference-chain) which | specifies the mode values according to their preferred order of use by | |||
| specifies the Mode values according to their preferred order of use by | ||||
| the operator of this Control-Client, including the authentication and | the operator of this Control-Client, including the authentication and | |||
| encryption Modes. Specifically, mode-preference-chain lists the mode | encryption modes. Specifically, mode-preference-chain lists the mode | |||
| and its corresponding priority, as a 16-bit unsigned integer. Values | and its corresponding priority, expressed as a 16-bit unsigned integer. | |||
| Values | ||||
| for the priority start with zero, the highest priority, and decreasing | for the priority start with zero, the highest priority, and decreasing | |||
| priority value is indicated by every increase in value by one.</t> | priority value is indicated by every increase in value by one.</t> | |||
| <t>Depending on the modes available in the Server Greeting, the | ||||
| <t>Depending on the Modes available in the Server Greeting, the | Control-Client <bcp14>MUST</bcp14> choose the highest-priority mode from | |||
| Control-Client MUST choose the highest priority Mode from the | the | |||
| configured mode-preference-chain list.</t> | configured mode-preference-chain list.</t> | |||
| <t>Note that the list of preferred modes may set multiple bit | ||||
| <t>Note that the list of preferred Modes may set multiple bit | ||||
| positions independently, such as when referring to the extended TWAMP | positions independently, such as when referring to the extended TWAMP | |||
| features in <xref target="RFC5618">Mixed Security Mode for TWAMP | features in <xref target="RFC5618" format="default">"Mixed Security | |||
| </xref>, <xref target="RFC5938">Individual Session Control Feature for | Mode for the Two-Way Active Measurement Protocol (TWAMP)"</xref>, | |||
| TWAMP </xref>, <xref target="RFC6038">TWAMP Reflect Octets and | <xref target="RFC5938" format="default">"Individual Session Control | |||
| Symmetrical Size Features </xref>, and <xref | Feature for the Two-Way Active Measurement Protocol (TWAMP)"</xref>, <xr | |||
| target="RFC7717">IKEv2-Derived Shared Secret Key for OWAMP and TWAMP | ef target="RFC6038" format="default">"Two-Way Active | |||
| </xref>. If the Control-Client cannot determine an acceptable Mode, or | Measurement Protocol (TWAMP) Reflect Octets and Symmetrical Size Features"</xref | |||
| when the bit combinations do not make sense, e.g., both authenticated | >, and <xref target="RFC7717" | |||
| and unauthenticated bit are set, it MUST respond with zero Mode bits | format="default">"IKEv2-Derived Shared Secret Key for | |||
| set in the Set-up Response message, indicating it will not continue | the One-Way Active Measurement Protocol (OWAMP) and | |||
| Two-Way Active Measurement Protocol (TWAMP)"</xref>. If the Control-Clie | ||||
| nt cannot determine an acceptable mode, or | ||||
| when the bit combinations do not make sense, e.g., authenticated | ||||
| and unauthenticated bits are both set, it <bcp14>MUST</bcp14> respond wi | ||||
| th zero Mode bits | ||||
| set in the Set-Up-Response message, indicating that it will not continue | ||||
| with the control connection.</t> | with the control connection.</t> | |||
| <t>In addition, the client container holds a list named "key-chain", | ||||
| <t>In addition, the client container holds a list named key-chain | ||||
| which relates key-id with the respective secret-key. Both the Server | which relates key-id with the respective secret-key. Both the Server | |||
| and the Control-Client use the same mappings from key-id to secret-key | and the Control-Client use the same mappings from key-id to secret&nbhy; | |||
| (in <xref target="fig:twamp-client"/>); in order for this to work | key | |||
| (in <xref target="fig_twamp-client" format="default"/>); in order for th | ||||
| is to work | ||||
| properly, key-id must be unique across all systems in the | properly, key-id must be unique across all systems in the | |||
| administrative domain. The Server, being prepared to conduct sessions | administrative domain. The Server, being prepared to conduct sessions | |||
| with more than one Control-Client, uses key-id to choose the | with more than one Control-Client, uses key-id to choose the | |||
| appropriate secret-key; a Control-Client would typically have | appropriate secret-key; a Control-Client would typically have | |||
| different secret keys for different Servers. The secret-key is the | different secret keys for different Servers. The secret-key is the | |||
| shared secret, of type binary and the length SHOULD contain at least | shared secret, of type "binary", and the length <bcp14>SHOULD</bcp14> co | |||
| 128 bits of entropy. The key-id and secret-key encoding SHOULD follow | ntain at least | |||
| Section 9.8 of <xref target="RFC7950">YANG </xref>. The derived key | 128 bits of entropy. The key-id and secret-key encoding <bcp14>SHOULD</b | |||
| length (dkLen in <xref target="RFC8018">PKCS #5: Password-Based | cp14> follow | |||
| Cryptography Specification Version 2.1 </xref>) MUST be 16 octets for | <xref target="RFC7950" sectionFormat="of" section="9.8">YANG</xref>. The | |||
| the AES Session-key used for encryption and 32 octets for the | derived key | |||
| HMAC-SHA1 Session-key used for authentication; see also Section 6.10 | length (dkLen as defined in <xref target="RFC8018" format="default">"PKC | |||
| of <xref target="RFC4656">OWAMP </xref>.</t> | S #5: Password-Based | |||
| Cryptography Specification Version 2.1"</xref>) <bcp14>MUST</bcp14> be 1 | ||||
| 6 octets for | ||||
| the AES Session-key used for encryption and 32 octets for the | ||||
| HMAC-SHA1 Session-key used for authentication; see also <xref target="RF | ||||
| C4656" sectionFormat="of" section="6.10">OWAMP</xref>.</t> | ||||
| <t>Each client container also holds a list of control connections, | <t>Each client container also holds a list of control connections, | |||
| where each item in the list describes a TWAMP control connection | where each item in the list describes a TWAMP-Control connection | |||
| initiated by this Control-Client. There SHALL be one ctrl-connection | initiated by this Control-Client. There <bcp14>SHALL</bcp14> be one ctrl | |||
| -connection | ||||
| per TWAMP-Control (TCP) connection that is to be initiated from this | per TWAMP-Control (TCP) connection that is to be initiated from this | |||
| device.</t> | device.</t> | |||
| <t>In turn, each ctrl-connection holds a test-session-request list. | <t>In turn, each ctrl-connection holds a test-session-request list. | |||
| Each test-session-request holds information associated with the | Each test-session-request holds information associated with the | |||
| Control-Client for this test session. This includes information | Control-Client for this test session. This includes information | |||
| associated with the Request-TW-Session/Accept-Session message exchange | associated with the Request-TW-Session/Accept-Session message exchange | |||
| (see Section 3.5 of <xref target="RFC5357">TWAMP </xref>).</t> | (see <xref target="RFC5357" sectionFormat="of" section="3.5">TWAMP</xref | |||
| >).</t> | ||||
| <t>There SHALL be one instance of test-session-request for each | <t>There <bcp14>SHALL</bcp14> be one instance of test-session-request fo | |||
| TWAMP-Test session that is to be negotiated by this TWAMP-Control | r each | |||
| TWAMP&nbhy;Test session that is to be negotiated by this TWAMP-Control | ||||
| connection via a Request-TW-Session/Accept-Session exchange.</t> | connection via a Request-TW-Session/Accept-Session exchange.</t> | |||
| <t>The Control-Client is also responsible for scheduling TWAMP-Test | <t>The Control-Client is also responsible for scheduling TWAMP-Test | |||
| sessions, therefore test-session-request holds information related to | sessions; therefore, test-session-request holds information related to | |||
| these actions (e.g. pm-index, repeat-interval).</t> | these actions (e.g., pm-index, repeat-interval).</t> | |||
| </section> | </section> | |||
| <section anchor="serverConfig" numbered="true" toc="default"> | ||||
| <section anchor="serverConfig" title="Server"> | <name>Server</name> | |||
| <t>The server container (see <xref target="fig:twamp-server"/>) holds | <t>The server container (see <xref target="fig_twamp-server" format="def | |||
| ault"/>) holds | ||||
| items that are related to the configuration of the TWAMP Server | items that are related to the configuration of the TWAMP Server | |||
| logical entity (recall <xref target="fig:scope"/>).</t> | logical entity (recall <xref target="fig_scope" format="default"/>).</t> | |||
| <t>The server container includes an administrative configuration | <t>The server container includes an administrative configuration | |||
| parameter (server/admin-state) that indicates whether the device is | parameter (server/admin-state) that indicates whether the device is | |||
| allowed to receive TWAMP-Control connections.</t> | allowed to receive TWAMP-Control connections.</t> | |||
| <t>A device operating in the Server Role cannot configure attributes | ||||
| <t>A device operating in the Server role cannot configure attributes | on a per-TWAMP-Control-connection basis, as it has no foreknowledge of | |||
| on a per TWAMP-Control connection basis, as it has no foreknowledge of | ||||
| the incoming TWAMP-Control connections to be received. Consequently, | the incoming TWAMP-Control connections to be received. Consequently, | |||
| any parameter that the Server might want to apply to an incoming | any parameter that the Server might want to apply to an incoming | |||
| control connection must be configured at the overall Server level and | control connection must be configured at the overall Server level and | |||
| applied to all incoming TWAMP-Control connections.</t> | applied to all incoming TWAMP-Control connections.</t> | |||
| <figure anchor="fig_twamp-server"> | ||||
| <figure anchor="fig:twamp-server" | <name>TWAMP Server UML Class Diagram</name> | |||
| title="TWAMP Server UML class diagram"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ | +---------------------+ | |||
| +---------------------+ | | server | | |||
| | server | | +---------------------+ | |||
| +---------------------+ | | admin-state | 1..* +------------+ | |||
| | admin-state | 1..* +------------+ | | server-tcp-port |<>------| key-chain | | |||
| | server-tcp-port |<>------| key-chain | | | servwait | +------------+ | |||
| | servwait | +------------+ | | control-packet-dscp | | key-id | | |||
| | control-packet-dscp | | key-id | | | count | | secret-key | | |||
| | count | | secret-key | | | max-count | +------------+ | |||
| | max-count | +------------+ | | modes | | |||
| | modes | | | | 0..* +--------------------------+ | |||
| | | 0..* +--------------------------+ | | |<>------| ctrl-connection | | |||
| | |<>------| ctrl-connection | | +---------------------+ +--------------------------+ | |||
| +---------------------+ +--------------------------+ | | client-ip {ro} | | |||
| | client-ip {ro} | | | client-tcp-port {ro} | | |||
| | client-tcp-port {ro} | | | server-ip {ro} | | |||
| | server-ip {ro} | | | server-tcp-port {ro} | | |||
| | server-tcp-port {ro} | | | state {ro} | | |||
| | state {ro} | | | control-packet-dscp {ro} | | |||
| | control-packet-dscp {ro} | | | selected-mode {ro} | | |||
| | selected-mode {ro} | | | key-id {ro} | | |||
| | key-id {ro} | | | count {ro} | | |||
| | count {ro} | | | max-count {ro} | | |||
| | max-count {ro} | | | salt {ro} | | |||
| | salt {ro} | | | server-iv {ro} | | |||
| | server-iv {ro} | | | challenge {ro} | | |||
| | challenge {ro} | | +--------------------------+]]></artwork> | |||
| +--------------------------+ | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>Each server container holds a list named "key-chain", which relates | ||||
| <t>Each server container holds a list named key-chain which relates | key-id with the respective secret-key. As mentioned in <xref target="cli | |||
| key-id with the respective secret-key. As mentioned in <xref | entConfig" format="default"/>, both the Server and the Control-Client use | |||
| target="clientConfig"/>, both the Server and the Control-Client use | the same mapping from key&nbhy;id to the shared secret-key; in order for | |||
| the same mapping from key-id to shared secret-key; in order for this | this | |||
| to work properly, key-id must be unique across all the systems in the | to work properly, key-id must be unique across all the systems in the | |||
| administrative domain. The Server, being prepared to conduct sessions | administrative domain. The Server, being prepared to conduct sessions | |||
| with more than one Control-Client, uses key-id to choose the | with more than one Control-Client, uses key-id to choose the | |||
| appropriate secret-key; a Control-Client would typically have | appropriate secret-key; a Control-Client would typically have | |||
| different secret keys for different Servers. The key-id tells the | different secret keys for different Servers. key-id tells the | |||
| Server which shared secret-key the Control-Client wishes to use for | Server which shared secret-key the Control-Client wishes to use for | |||
| authentication or encryption.</t> | authentication or encryption.</t> | |||
| <t>Each incoming control connection active on the Server is | <t>Each incoming control connection active on the Server is | |||
| represented by a ctrl-connection. There SHALL be one ctrl-connection | represented by a ctrl-connection. There <bcp14>SHALL</bcp14> be one ctrl -connection | |||
| per incoming TWAMP-Control (TCP) connection that is received and | per incoming TWAMP-Control (TCP) connection that is received and | |||
| active on the Server. Each ctrl-connection can be uniquely identified | active on the Server. Each ctrl-connection can be uniquely identified | |||
| by the 4-tuple {client-ip, client-tcp-port, server-ip, | by the 4-tuple {client-ip, client-tcp-port, server-ip, | |||
| server-tcp-port}. All items in the ctrl-connection list are | server-tcp-port}. All items in the ctrl-connection list are | |||
| read-only.</t> | read-only.</t> | |||
| </section> | </section> | |||
| <section anchor="senderConfig" numbered="true" toc="default"> | ||||
| <section anchor="senderConfig" title="Session-Sender"> | <name>Session-Sender</name> | |||
| <t>The session-sender container, illustrated in <xref | <t>The session-sender container, illustrated in <xref target="fig_twampS | |||
| target="fig:twampSenders"/>, holds items that are related to the | enders" format="default"/>, holds items that are related to the | |||
| configuration of the TWAMP Session-Sender logical entity.</t> | configuration of the TWAMP Session-Sender logical entity.</t> | |||
| <t>The session-sender container includes an administrative parameter | <t>The session-sender container includes an administrative parameter | |||
| (session-sender/admin-state) that controls whether the device is | (session-sender/admin-state) that controls whether the device is | |||
| allowed to initiate TWAMP-Test sessions.</t> | allowed to initiate TWAMP-Test sessions.</t> | |||
| <figure anchor="fig_twampSenders"> | ||||
| <figure anchor="fig:twampSenders" | <name>TWAMP Session-Sender UML Class Diagram</name> | |||
| title="TWAMP Session-Sender UML class diagram"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ | +----------------+ | |||
| +----------------+ | | session-sender | | |||
| | session-sender | | +----------------+ 0..* +---------------------------+ | |||
| +----------------+ 0..* +---------------------------+ | | admin-state |<>-----| test-session | | |||
| | admin-state |<>-----| test-session | | +----------------+ +---------------------------+ | |||
| +----------------+ +---------------------------+ | | name | | |||
| | name | | | ctrl-connection-name {ro} | | |||
| | ctrl-connection-name {ro} | | | fill-mode | | |||
| | fill-mode | | | number-of-packets | | |||
| | number-of-packets | | | state {ro} | | |||
| | state {ro} | | | sent-packets {ro} | | |||
| | sent-packets {ro} | | | rcv-packets {ro} | | |||
| | rcv-packets {ro} | | | last-sent-seq {ro} | | |||
| | last-sent-seq {ro} | | | last-rcv-seq {ro} | | |||
| | last-rcv-seq {ro} | | +---------------------------+ | |||
| +---------------------------+ | ^ | |||
| ^ | V | |||
| V | | 1 | |||
| | 1 | +---------------------+ | |||
| +---------------------+ | | packet-distribution | | |||
| | packet-distribution | | +---------------------+ | |||
| +---------------------+ | | periodic / poisson | | |||
| | periodic / poisson | | +---------------------+ | |||
| +---------------------+ | | | | |||
| | | | +-------------------+ | | |||
| +-------------------+ | | | periodic-interval | | | |||
| | periodic-interval | | | +-------------------+ | | |||
| +-------------------+ | | | | |||
| | | +--------------+ | |||
| +--------------+ | | lambda | | |||
| | lambda | | | max-interval | | |||
| | max-interval | | +--------------+]]></artwork> | |||
| +--------------+ | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>Each TWAMP-Test session initiated by the Session-Sender will be | <t>Each TWAMP-Test session initiated by the Session-Sender will be | |||
| represented by an instance of a test-session object. There SHALL be | represented by an instance of a test-session object. There <bcp14>SHALL< /bcp14> be | |||
| one instance of test-session for each TWAMP-Test session for which | one instance of test-session for each TWAMP-Test session for which | |||
| packets are being sent.</t> | packets are being sent.</t> | |||
| </section> | </section> | |||
| <section anchor="reflectorConfig" numbered="true" toc="default"> | ||||
| <section anchor="reflectorConfig" title="Session-Reflector"> | <name>Session-Reflector</name> | |||
| <t>The session-reflector container, illustrated in <xref | <t>The session-reflector container, illustrated in <xref target="fig_twa | |||
| target="fig:twampReflector"/>, holds items that are related to the | mpReflector" format="default"/>, holds items that are related to the | |||
| configuration of the TWAMP Session-Reflector logical entity.</t> | configuration of the TWAMP Session-Reflector logical entity.</t> | |||
| <t>The session-reflector container includes an administrative | <t>The session-reflector container includes an administrative | |||
| parameter (session-reflector/admin-state) that controls whether the | parameter (session-reflector/admin-state) that controls whether the | |||
| device is allowed to respond to incoming TWAMP-Test sessions.</t> | device is allowed to respond to incoming TWAMP-Test sessions.</t> | |||
| <t>A device operating in the Session-Reflector Role cannot configure | ||||
| <t>A device operating in the Session-Reflector role cannot configure | ||||
| attributes on a per-session basis, as it has no foreknowledge of what | attributes on a per-session basis, as it has no foreknowledge of what | |||
| incoming sessions it will receive. As such, any parameter that the | incoming sessions it will receive. As such, any parameter that the | |||
| Session-Reflector might want to apply to an incoming TWAMP-Test | Session-Reflector might want to apply to an incoming TWAMP-Test | |||
| session must be configured at the overall Session-Reflector level and | session must be configured at the overall Session-Reflector level and | |||
| are applied to all incoming sessions.</t> | applied to all incoming sessions.</t> | |||
| <figure anchor="fig_twampReflector"> | ||||
| <figure anchor="fig:twampReflector" | <name>TWAMP Session-Reflector UML Class Diagram</name> | |||
| title="TWAMP Session-Reflector UML class diagram"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ | +-------------------+ | |||
| +-------------------+ | | session-reflector | | |||
| | session-reflector | | +-------------------+ | |||
| +-------------------+ | | admin-state | | |||
| | admin-state | | | refwait | | |||
| | refwait | | +-------------------+ | |||
| +-------------------+ | ^ | |||
| ^ | V | |||
| V | | | |||
| | | | 0..* | |||
| | 0..* | +----------------------------------------+ | |||
| +----------------------------------------+ | | test-session | | |||
| | test-session | | +----------------------------------------+ | |||
| +----------------------------------------+ | | sid {ro} | | |||
| | sid {ro} | | | sender-ip {ro} | | |||
| | sender-ip {ro} | | | sender-udp-port {ro} | | |||
| | sender-udp-port {ro} | | | reflector-ip {ro} | | |||
| | reflector-ip {ro} | | | reflector-udp-port {ro} | | |||
| | reflector-udp-port {ro} | | | parent-connection-client-ip {ro} | | |||
| | parent-connection-client-ip {ro} | | | parent-connection-client-tcp-port {ro} | | |||
| | parent-connection-client-tcp-port {ro} | | | parent-connection-server-ip {ro} | | |||
| | parent-connection-server-ip {ro} | | | parent-connection-server-tcp-port {ro} | | |||
| | parent-connection-server-tcp-port {ro} | | | test-packet-dscp {ro} | | |||
| | test-packet-dscp {ro} | | | sent-packets {ro} | | |||
| | sent-packets {ro} | | | rcv-packets {ro} | | |||
| | rcv-packets {ro} | | | last-sent-seq {ro} | | |||
| | last-sent-seq {ro} | | | last-rcv-seq {ro} | | |||
| | last-rcv-seq {ro} | | +----------------------------------------+]]></artwork> | |||
| +----------------------------------------+ | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>Each incoming TWAMP-Test session that is active on the | <t>Each incoming TWAMP-Test session that is active on the | |||
| Session-Reflector SHALL be represented by an instance of a | Session-Reflector <bcp14>SHALL</bcp14> be represented by an instance of a | |||
| test-session object. All items in the test-session object are | test-session object. All items in the test-session object are | |||
| read-only.</t> | read-only.</t> | |||
| <t>Instances of test-session are indexed by a Session Identifier | ||||
| <t>Instances of test-session are indexed by a session identifier | (SID) (the sid parameter). This SID value is auto-allocated by the TWAMP | |||
| (sid). This value is auto-allocated by the TWAMP Server as test | Server as test | |||
| session requests are received, and communicated back to the | session requests are received and is communicated back to the | |||
| Control-Client in the SID field of the Accept-Session message; see | Control-Client in the SID field of the Accept-Session message; see | |||
| Section 4.3 of <xref target="RFC6038">TWAMP Reflect Octets and | Section <xref target="RFC6038" sectionFormat="bare" section="4.3"/> of | |||
| Symmetrical Size Features </xref>.</t> | <xref target="RFC6038">"Two-Way | |||
| Active Measurement Protocol (TWAMP) Reflect Octets and Symmetrical | ||||
| Size Features"</xref>.</t> | ||||
| <t>When attempting to retrieve operational data for active test | <t>When attempting to retrieve operational data for active test | |||
| sessions from a Session-Reflector device, the user will not know what | sessions from a Session-Reflector device, the user will not know what | |||
| sessions are currently active on that device, or what SIDs have been | sessions are currently active on that device or what SIDs have been | |||
| auto-allocated for these test sessions. If the user has network access | auto&nbhy;allocated for these test sessions. If the user has network acc | |||
| ess | ||||
| to the Control-Client device, then it is possible to read the data for | to the Control-Client device, then it is possible to read the data for | |||
| this session under client/ctrl-connection/test-session-request/sid and | this session under client/ctrl-connection/test-session-request/sid and | |||
| obtain the SID (see <xref target="fig:twamp-client"/>). The user may | obtain the SID (see <xref target="fig_twamp-client" format="default"/>). The user may | |||
| then use this SID value as an index to retrieve an individual | then use this SID value as an index to retrieve an individual | |||
| session-reflector/test-session instance on the Session-Reflector | session-reflector/test-session instance on the Session-Reflector | |||
| device.</t> | device.</t> | |||
| <t>If the user has no network access to the Control-Client device, | <t>If the user has no network access to the Control-Client device, | |||
| then the only option is to retrieve all test-session instances from | then the only option is to retrieve all test-session instances from | |||
| the Session-Reflector device, and then pick out specific test-session | the Session-Reflector device and then pick out specific test-session | |||
| instances of interest to the user. This could be problematic if a | instances of interest to the user. This could be problematic if a | |||
| large number of test sessions are currently active on that device.</t> | large number of test sessions are currently active on that device.</t> | |||
| <t>Each Session-Reflector TWAMP-Test session contains the following | <t>Each Session-Reflector TWAMP-Test session contains the following | |||
| 4-tuple: {parent-connection-client-ip, | 4-tuple: {parent-connection-client-ip, | |||
| parent-connection-client-tcp-port, parent-connection-server-ip, | parent-connection-client-tcp-port, parent-connection-server-ip, | |||
| parent-connection-server-tcp-port}. This 4-tuple MUST correspond to | parent-connection-server-tcp-port}. This 4-tuple <bcp14>MUST</bcp1 4> correspond to | |||
| the equivalent 4-tuple {client-ip, client-tcp-port, server-ip, | the equivalent 4-tuple {client-ip, client-tcp-port, server-ip, | |||
| server-tcp-port} in server/ctrl-connection. This 4-tuple allows the | server-tcp-port} in server&wj;/ctrl-connection. This 4-tuple allows the | |||
| user to trace back from the TWAMP-Test session to the (parent) | user to trace back from the TWAMP-Test session to the (parent) | |||
| TWAMP-Control connection that negotiated this test session.</t> | TWAMP-Control connection that negotiated this test session.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="module" numbered="true" toc="default"> | ||||
| <section anchor="module" title="Data Model"> | <name>Data Model</name> | |||
| <t>This section formally specifies the TWAMP data model using YANG.</t> | <t>This section formally specifies the TWAMP data model using YANG.</t> | |||
| <section anchor="yangtree" numbered="true" toc="default"> | ||||
| <section anchor="yangtree" title="YANG Tree Diagram"> | <name>YANG Tree Diagram</name> | |||
| <t>This section presents a simplified graphical representation of the | <t>This section presents a simplified graphical representation of the | |||
| TWAMP data model using a YANG tree diagram. Readers should keep in | TWAMP data model using a YANG tree diagram. Readers should keep in | |||
| mind that the limit of 72 characters per line forces us to introduce | mind that the limit of 72 characters per line forces us to introduce | |||
| artificial line breaks in some tree diagram nodes. Tree diagrams used | artificial line breaks in some tree diagram nodes. Tree diagrams used | |||
| in this document follow the notation defined in <xref | in this document follow the notation defined in <xref target="RFC8340" | |||
| target="RFC8340">YANG Tree Diagrams</xref>.</t> | format="default">"YANG Tree Diagrams"</xref>.</t> | |||
| <figure anchor="fig:yangtree" title="YANG Tree Diagram."> | <t>Please note that the backslash ('\') character near the end of the | |||
| <artwork><![CDATA[ | diagram is used for formatting purposes only | |||
| (i.e., "reflector&nbhy;udp&nbhy;port]" should be treated as part of | ||||
| the same line as "[sender&nbhy;ip sender&nbhy;udp&nbhy;port re | ||||
| flector&nbhy;ip").</t> | ||||
| <figure anchor="fig_yangtree"> | ||||
| <name>YANG Tree Diagram</name> | ||||
| <sourcecode type="yangtree"><![CDATA[ | ||||
| module: ietf-twamp | module: ietf-twamp | |||
| +--rw twamp | +--rw twamp | |||
| +--rw client {control-client}? | +--rw client {control-client}? | |||
| | +--rw admin-state? boolean | | +--rw admin-state? boolean | |||
| | +--rw mode-preference-chain* [priority] | | +--rw mode-preference-chain* [priority] | |||
| | | +--rw priority uint16 | | | +--rw priority uint16 | |||
| | | +--rw mode? twamp-modes | | | +--rw mode? 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 | |||
| | +--rw ctrl-connection* [name] | | +--rw ctrl-connection* [name] | |||
| | +--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-exponent? uint8 | | +--rw max-count-exponent? 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? inet:port-number | | +--rw reflector-udp-port? inet:port-number | |||
| | +--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? uint32 | | +--rw repeat? uint32 | |||
| | +--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 | |||
| +--rw server {server}? | +--rw server {server}? | |||
| | +--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-exponent? uint8 | | +--rw max-count-exponent? 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-exponent? uint8 | | +--ro max-count-exponent? uint8 | |||
| | +--ro salt? binary | | +--ro salt? binary | |||
| | +--ro server-iv? binary | | +--ro server-iv? binary | |||
| | +--ro challenge? binary | | +--ro challenge? binary | |||
| +--rw session-sender {session-sender}? | +--rw session-sender {session-sender}? | |||
| | +--rw admin-state? boolean | | +--rw admin-state? boolean | |||
| | +--rw test-session* [name] | | +--rw test-session* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--ro ctrl-connection-name? string | | +--ro ctrl-connection-name? string | |||
| | +--rw fill-mode? padding-fill-mode | | +--rw fill-mode? padding-fill-mode | |||
| | +--rw number-of-packets uint32 | | +--rw number-of-packets uint32 | |||
| | +--rw (packet-distribution)? | | +--rw (packet-distribution)? | |||
| | | +--:(periodic) | | | +--:(periodic) | |||
| | | | +--rw periodic-interval decimal64 | | | | +--rw periodic-interval decimal64 | |||
| | | +--:(poisson) | | | +--:(poisson) | |||
| | | +--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 reflector-ip reflector-udp | [sender-ip sender-udp-port reflector-ip \ | |||
| -port] | reflector-udp-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 inet:port-numbe | +--ro reflector-udp-port inet:port-number | |||
| r | +--ro parent-connection-client-ip? inet:ip-address | |||
| +--ro parent-connection-client-ip? inet:ip-address | +--ro parent-connection-client-tcp-port? inet:port-number | |||
| +--ro parent-connection-client-tcp-port? inet:port-numbe | +--ro parent-connection-server-ip? inet:ip-address | |||
| r | +--ro parent-connection-server-tcp-port? inet:port-number | |||
| +--ro parent-connection-server-ip? inet:ip-address | +--ro test-packet-dscp? inet:dscp | |||
| +--ro parent-connection-server-tcp-port? inet:port-numbe | +--ro sent-packets? uint32 | |||
| r | +--ro rcv-packets? uint32 | |||
| +--ro test-packet-dscp? inet:dscp | +--ro last-sent-seq? uint32 | |||
| +--ro sent-packets? uint32 | +--ro last-rcv-seq? uint32]]></sourcecode> | |||
| +--ro rcv-packets? uint32 | ||||
| +--ro last-sent-seq? uint32 | ||||
| +--ro last-rcv-seq? uint32 | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| </section> | ||||
| <section anchor="yangmodule" title="YANG Module"> | </section> | |||
| <section anchor="yangmodule" numbered="true" toc="default"> | ||||
| <name>YANG Module</name> | ||||
| <t>This section presents the YANG module for the TWAMP data model | <t>This section presents the YANG module for the TWAMP data model | |||
| defined in this document. The module imports definitions from <xref | defined in this document. The module imports definitions from <xref | |||
| target="RFC6991">Common YANG Data Types</xref>, and references <xref | target="RFC6991" format="default">"Common YANG Data Types"</xref> and | |||
| target="RFC5905">NTPv4 Specification</xref>, <xref | references <xref target="RFC2330" format="default">"Framework for IP Per | |||
| target="RFC2330">Framework for IP Performance Metrics</xref>, <xref | formance | |||
| target="RFC4086">Randomness Requirements for Security</xref>, <xref | Metrics"</xref>, | |||
| target="RFC4656">OWAMP</xref>, <xref target="RFC5357">TWAMP</xref>, | <xref target="RFC3432">"Network performance measurement with periodic | |||
| <xref target="RFC5618">More Features for TWAMP</xref>, <xref | streams"</xref>, <xref target="RFC4656" | |||
| target="RFC5938">Individual Session Control Feature</xref>, <xref | format="default">"A One-way Active Measurement Protocol | |||
| target="RFC6038">TWAMP Reflect Octets and Symmetrical Size | (OWAMP)"</xref>, <xref target="RFC5357" format="default">"A Two-Way | |||
| Features</xref>, <xref target="RFC7312">Advances Stream and Sampling | Active Measurement Protocol (TWAMP)"</xref>, | |||
| Framework</xref>, <xref target="RFC7717">IKEv2-Derived Shared Secret | <xref target="RFC5618" format="default">"Mixed Security Mode for the | |||
| Key for OWAMP and TWAMP</xref>, and <xref | Two-Way Active Measurement Protocol (TWAMP)"</xref>, | |||
| target="I-D.ietf-ippm-port-twamp-test">OWAMP and TWAMP Well-Known Port | <xref target="RFC5905" format="default">"Network Time | |||
| Assignments</xref>.</t> | Protocol Version 4: Protocol and Algorithms Specification"</xref>, | |||
| <xref | ||||
| target="RFC5938" format="default">"Individual Session Control Feature | ||||
| for the Two-Way Active Measurement Protocol (TWAMP)"</xref>, <xref target="RFC6 | ||||
| 038" | ||||
| format="default">"Two-Way Active Measurement Protocol (TWAMP) Reflect | ||||
| Octets and Symmetrical Size Features"</xref>, <xref target="RFC7312" for | ||||
| mat="default">"Advanced | ||||
| Stream and Sampling Framework for IP Performance Metrics | ||||
| (IPPM)"</xref>, <xref target="RFC7717" format="default">"IKEv2-Derived | ||||
| Shared Secret Key for the One-Way Active Measurement Protocol (OWAMP) an | ||||
| d Two-Way Active Measurement Protocol (TWAMP)"</xref>, <xref target="RFC8545" | ||||
| format="default">"Well-Known Port Assignments for the One-Way Active | ||||
| Measurement Protocol (OWAMP) and the Two-Way Active Measurement | ||||
| Protocol (TWAMP)"</xref>, and <xref target="RFC8911">"Registry for | ||||
| Performance Metrics"</xref>.</t> | ||||
| <figure> | <!-- The following text in this section is DNE. During the | |||
| <artwork><![CDATA[ | verification step, made a couple updates where appropriate. | |||
| <CODE BEGINS> file "ietf-twamp@2018-07-02.yang" | AQed a mismatch; fixed the 'If an attacking system ...' | |||
| text per author during AUTH48. | ||||
| * As per Section 6 of RFC 4656, | ||||
| in 'authenticated mode, the timestamp is in the clear | ||||
| and is not protected cryptographically in any way, | ||||
| while the rest of the message has the same protection | ||||
| as in encrypted mode. This mode allows one to trade off | ||||
| cryptographic protection against accuracy of | ||||
| timestamps.'"; | ||||
| * 'makes it impossible to alter | ||||
| timestamps undetectably' [Section 6 of RFC 4656] *Fixed; it's Sec. 1 | ||||
| * As per | ||||
| 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 | ||||
| shared secret the [Control-Client] wishes to use to | ||||
| authenticate or encrypt'."; | ||||
| * if it 'receives a | ||||
| Server-Greeting message with Count greater that [sic] its | ||||
| maximum configured value', as per Section 6 of RFC 5357. | ||||
| Further, note that according to Section 6 of RFC 5357: | ||||
| 'If an attacking system sets the maximum value in | ||||
| Count (2**32), then the system under attack would stall | ||||
| for a significant period of time while it attempts to | ||||
| generate keys. | ||||
| TWAMP-compliant systems SHOULD have a configuration | ||||
| control to limit the maximum count value. The default | ||||
| max-count-exponent value SHOULD be 15 which corresponds | ||||
| to a maximum value of 2**15 or 32768.' | ||||
| Not quoted in original, but I found that the paragraph that follows | ||||
| "As per RFC 4656:" was verbatim text, so added the single quotes. | ||||
| **Note:** The hyphen in "pseudo-random number source" has to be | ||||
| kept, because it's DNE text. | ||||
| Another DNE item that needed slight adjustment and single quotes | ||||
| added (after verification): "According to Section 3.1 of RFC 5357" --> | ||||
| <sourcecode name="ietf-twamp@2021-11-17.yang" type="yang" markers="true" | ||||
| > | ||||
| <![CDATA[ | ||||
| module ietf-twamp { | module ietf-twamp { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace urn:ietf:params:xml:ns:yang:ietf-twamp; | namespace "urn:ietf:params:xml:ns:yang:ietf-twamp"; | |||
| prefix ietf-twamp; | prefix ietf-twamp; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Types."; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| organization | organization | |||
| "IETF IPPM (IP Performance Metrics) Working Group"; | "IETF IPPM (IP Performance Metrics) Working Group"; | |||
| contact | contact | |||
| "WG Web: http://tools.ietf.org/wg/ippm/ | "WG Web: <https://datatracker.ietf.org/wg/ippm/documents/> | |||
| WG List: ippm@ietf.org | WG List: <mailto:ippm@ietf.org> | |||
| Editor: Ruth Civil | Editor: Ruth Civil | |||
| gcivil@ciena.com | <mailto:ruthcivil@gmail.com> | |||
| Editor: Al Morton | Editor: Al Morton | |||
| acmorton@att.com | <mailto:acmorton@att.com> | |||
| Editor: Reshad Rehman | ||||
| rrahman@cisco.com | Editor: Reshad Rahman | |||
| <mailto:reshad@yahoo.com> | ||||
| Editor: Mahesh Jethanandani | Editor: Mahesh Jethanandani | |||
| mjethanandani@gmail.com | <mailto:mjethanandani@gmail.com> | |||
| Editor: Kostas Pentikousis | ||||
| k.pentikousis@travelping.com"; | ||||
| Editor: Kostas Pentikousis | ||||
| <mailto:kostas.pentikousis@detecon.com>"; | ||||
| description | description | |||
| "This YANG module specifies a vendor-independent data | "This YANG module specifies a vendor-independent data | |||
| 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 defines 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 (Figure 1 | |||
| of RFC XXXX). | of RFC 8913). | |||
| 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. | |||
| Copyright (c) 2018 IETF Trust and the persons identified as | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| the document authors. All rights reserved. | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here. | ||||
| Copyright (c) 2021 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject to | |||
| to the license terms contained in, the Simplified BSD | the license terms contained in, the Simplified BSD License set | |||
| License set forth in Section 4.c of the IETF Trust's Legal | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Provisions Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 8913; see the | |||
| the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| revision 2018-07-02 { | revision 2021-11-17 { | |||
| description | description | |||
| "Initial Revision. | "Initial revision. | |||
| Covers RFC 5357, RFC 5618, RFC 5938, RFC 6038, RFC 7717, and | ||||
| draft-ietf-ippm-metric-registry"; | ||||
| References RFC 5357, RFC 5618, RFC 5938, RFC 6038, RFC 7717, | ||||
| and RFC 8911."; | ||||
| reference | reference | |||
| "RFC XXXX: TWAMP YANG Data Model."; | "RFC 8913: Two-Way Active Measurement Protocol (TWAMP) YANG | |||
| Data Model"; | ||||
| } | } | |||
| /* | /* | |||
| * Typedefs | * Typedefs | |||
| */ | */ | |||
| typedef twamp-modes { | typedef twamp-modes { | |||
| type bits { | type bits { | |||
| bit unauthenticated { | bit unauthenticated { | |||
| position 0; | position 0; | |||
| description | description | |||
| "Unauthenticated mode, in which no encryption or | "Unauthenticated mode, in which no encryption or | |||
| authentication is applied in TWAMP-Control and | authentication is applied in TWAMP-Control and | |||
| TWAMP-Test. KeyID, Token, and Client-IV are not used in | TWAMP-Test. KeyID, Token, and Client-IV are not used in | |||
| the Set-Up-Response message. See Section 3.1 of | the Set-Up-Response message. See Section 3.1 of | |||
| RFC 4656."; | RFC 4656."; | |||
| reference | reference | |||
| "RFC 4656: A One-way Active Measurement Protocol | "RFC 4656: A One-way Active Measurement Protocol (OWAMP), | |||
| (OWAMP)"; | Section 3.1"; | |||
| } | } | |||
| bit authenticated { | bit authenticated { | |||
| position 1; | position 1; | |||
| description | description | |||
| "Authenticated mode, in which the Control-Client and | "Authenticated mode, in which the Control-Client and | |||
| Server possess a shared secret thus prohibiting | Server possess a shared secret, thus prohibiting | |||
| 'theft of service'. As per Section 6 of RFC 4656, | 'theft of service'. As per Section 6 of RFC 4656, | |||
| in 'authenticated mode, the timestamp is in the clear | in 'authenticated mode, the timestamp is in the clear | |||
| and is not protected cryptographically in any way, | and is not protected cryptographically in any way, | |||
| while the rest of the message has the same protection | while the rest of the message has the same protection | |||
| as in encrypted mode. This mode allows one to trade off | as in encrypted mode. This mode allows one to trade off | |||
| cryptographic protection against accuracy of | cryptographic protection against accuracy of | |||
| timestamps.'"; | timestamps.'"; | |||
| reference | reference | |||
| "RFC 4656: A One-way Active Measurement Protocol | "RFC 4656: A One-way Active Measurement Protocol (OWAMP), | |||
| (OWAMP)"; | Section 6"; | |||
| } | } | |||
| 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' [Section 6 of RFC 4656]. | timestamps undetectably' (Section 1 of RFC 4656). | |||
| See also Section 4 of RFC 7717."; | See also Section 4 of RFC 7717."; | |||
| reference | reference | |||
| "RFC 4656: A One-way Active Measurement Protocol | "RFC 4656: A One-way Active Measurement Protocol (OWAMP), | |||
| (OWAMP)"; | Section 6 | |||
| RFC 7717: IKEv2-Derived Shared Secret Key for the One-Way | ||||
| Active Measurement Protocol (OWAMP) and Two-Way Active | ||||
| Measurement Protocol (TWAMP), Section 4"; | ||||
| } | } | |||
| bit unauth-test-encrpyt-control { | bit unauth-test-encrypt-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 operates in unauthenticated mode and the | |||
| TWAMP-Control protocol the Encrypted mode."; | TWAMP-Control protocol operates in 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 | |||
| skipping to change at line 1062 ¶ | skipping to change at line 1002 ¶ | |||
| 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 shared key is derived | |||
| from an IKEv2 security association (SA)."; | from an Internet Key Exchange Protocol Version 2 (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 | |||
| specification."; | formal 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 | "Indicates an active TWAMP-Control connection to the | |||
| Server."; | Server."; | |||
| } | } | |||
| enum idle { | enum idle { | |||
| description | description | |||
| "Indicates an idle TWAMP-Control connection to Server."; | "Indicates an idle TWAMP-Control connection to the | |||
| Server."; | ||||
| } | } | |||
| } | } | |||
| description | description | |||
| "Indicates the Control-Client TWAMP-Control connection | "Indicates the Control-Client TWAMP-Control connection | |||
| state."; | state."; | |||
| } | } | |||
| typedef test-session-state { | typedef test-session-state { | |||
| type enumeration { | type enumeration { | |||
| enum accepted { | enum accepted { | |||
| skipping to change at line 1148 ¶ | skipping to change at line 1090 ¶ | |||
| 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 in | |||
| Section 3.1 of RFC 5357."; | Section 3.1 of RFC 5357."; | |||
| reference | ||||
| "RFC 5357: A Two-Way Active Measurement Protocol (TWAMP), | ||||
| Section 3.1"; | ||||
| } | } | |||
| } | } | |||
| 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 line 1179 ¶ | skipping to change at line 1124 ¶ | |||
| } | } | |||
| typedef padding-fill-mode { | typedef padding-fill-mode { | |||
| type enumeration { | type enumeration { | |||
| enum zero { | enum zero { | |||
| description | description | |||
| "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 pseudorandom | |||
| 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."; | |||
| skipping to change at line 1229 ¶ | skipping to change at line 1175 ¶ | |||
| "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 | secret the client' (Control-Client) 'wishes to use to | |||
| authenticate or encrypt'."; | authenticate or encrypt'."; | |||
| } | } | |||
| leaf secret-key { | leaf secret-key { | |||
| type binary; | type binary; | |||
| description | ||||
| "The secret key corresponding to the KeyID for this | ||||
| TWAMP-Control connection."; | ||||
| } | ||||
| description | description | |||
| "Relates KeyIDs with their respective secret keys | "The secret key corresponding to the KeyID for this | |||
| in a TWAMP-Control connection."; | TWAMP-Control connection."; | |||
| } | ||||
| description | ||||
| "Relates KeyIDs with their respective secret keys | ||||
| 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 | description | |||
| "Indicates the number of packets sent."; | "Indicates the number of packets sent."; | |||
| } | } | |||
| leaf rcv-packets { | leaf rcv-packets { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates the number of packets received."; | "Indicates the number of packets received."; | |||
| } | } | |||
| leaf last-sent-seq { | leaf last-sent-seq { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates the last sent sequence number."; | "Indicates the last sent sequence number."; | |||
| } | } | |||
| leaf last-rcv-seq { | leaf last-rcv-seq { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates the last received sequence number."; | "Indicates the last received sequence number."; | |||
| } | } | |||
| description | description | |||
| "Used for TWAMP-Test maintenance statistics."; | "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 15; | default "15"; | |||
| description | description | |||
| "Parameter communicated to the Control-Client as part of | "Parameter communicated to the Control-Client as part of | |||
| the Server Greeting message and used for deriving a key | the Server Greeting message and used for deriving a key | |||
| from a shared secret as per Section 3.1 of RFC 4656: | from a shared secret as per Section 3.1 of RFC 4656: | |||
| MUST be a power of 2 and at least 1024. It is configured | MUST be a power of 2 and at least 1024. It is configured | |||
| by providing said power. For example, configuring 20 here | by providing said power. For example, configuring 20 here | |||
| means count 2^20 = 1048576. The default is 15, | means count 2^20 = 1048576. The default is 15, | |||
| meaning 2^15 = 32768."; | meaning 2^15 = 32768."; | |||
| } | } | |||
| description | description | |||
| "Reusable data structure for count, which is used both in the | "Reusable data structure for count, which is used in both the | |||
| Server and the Control-Client."; | Server and the Control-Client."; | |||
| } | } | |||
| grouping max-count-exponent { | grouping max-count-exponent { | |||
| leaf max-count-exponent { | leaf max-count-exponent { | |||
| type uint8 { | type uint8 { | |||
| range 10..31; | range "10..31"; | |||
| } | } | |||
| default 20; | default "20"; | |||
| 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 20, meaning 2^20 = 1048576. | The default is 20, meaning 2^20 = 1048576. | |||
| 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 | A TWAMP Control-Client uses this configured value to | |||
| prevent denial-of-service (DOS) attacks by closing the | prevent denial-of-service (DoS) attacks by closing the | |||
| control connection to the Server if it 'receives a | control connection to the Server if it 'receives a | |||
| Server-Greeting message with Count greater that its | Server-Greeting message with Count greater that [sic] its | |||
| maximum configured value', as per Section 6 of RFC 5357. | maximum configured value', 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 set the maximum value in Count | |||
| Count (2**32), then the system under attack would stall | (2**32), then the system under attack would stall for a | |||
| for a significant period of time while it attempts to | significant period of time while it attempts to generate | |||
| generate keys. | keys. Therefore, TWAMP-compliant systems SHOULD have a | |||
| configuration control to limit the maximum Count value. | ||||
| The default maximum Count value SHOULD be 32768.' | ||||
| TWAMP-compliant systems SHOULD have a configuration | In the case of this document, the default max-count-exponent | |||
| control to limit the maximum count value. The default | value SHOULD be 15, which corresponds to a maximum value of | |||
| max-count-exponent value SHOULD be 15 which corresponds | 2**15 or 32768. | |||
| to a maximum value of 2**15 or 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 that is used in both | |||
| the Control-Client and the Server containers."; | the client (Control-Client) container and the server | |||
| container."; | ||||
| } | } | |||
| /* | /* | |||
| * 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 | that 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 RFC XXXX."; | as illustrated in Figure 1 of RFC 8913."; | |||
| container client { | container client { | |||
| if-feature control-client; | if-feature "control-client"; | |||
| description | description | |||
| "Configuration of the TWAMP Control-Client logical | "Configuration of the TWAMP Control-Client logical entity."; | |||
| entity."; | ||||
| leaf admin-state { | leaf admin-state { | |||
| type boolean; | type boolean; | |||
| default true; | default "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. Values for the | expressed as a 16-bit unsigned integer. Values for the | |||
| priority start with zero, the highest priority, and | priority start with zero, the highest priority, and | |||
| decreasing priority value is indicated by every increase | decreasing priority value is indicated by every increase | |||
| in value by one."; | in value by one."; | |||
| } | } | |||
| leaf mode { | leaf mode { | |||
| type twamp-modes; | type twamp-modes; | |||
| description | description | |||
| "The supported TWAMP Mode matching the corresponding | "The supported TWAMP-Modes 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 Figure 2 of RFC 7717), the | |||
| Control-Client MUST choose the highest priority | Control-Client MUST choose the highest-priority | |||
| Mode from the configured mode-preference-chain list."; | mode 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 | Each item in the list describes a control connection | |||
| that will be initiated by this Control-Client"; | 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 | "A unique name used as a key to identify this | |||
| individual TWAMP-Control connection on the | individual TWAMP-Control connection on the | |||
| Control-Client device."; | 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 to which | |||
| TWAMP-Control connection will be initiated to."; | the TWAMP-Control connection will be initiated."; | |||
| } | } | |||
| 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 | port number (862) as per RFC 5357. However, there are | |||
| known realizations of TWAMP in the field that were | known realizations of TWAMP in the field that were | |||
| implemented before this well-known port number was | implemented before this well-known port number was | |||
| allocated. These early implementations allowed the | allocated. These early implementations allowed the | |||
| port number to be configured. This parameter is | port number to be configured. This parameter is | |||
| therefore provided for backward compatibility | therefore provided for backward-compatibility | |||
| reasons."; | 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 Differentiated Services Code Point (DSCP) value | |||
| TWAMP-Control (TCP) packets generated by this | to be placed in the IP header of TWAMP-Control (TCP) | |||
| Control-Client."; | packets generated by this 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-exponent; | uses max-count-exponent; | |||
| 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 advertised by the Server in | "Indicates the Start-Time advertised by the Server in | |||
| the Server-Start message (RFC 4656, Section 3.1), | the 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 5905 | The timestamp format follows RFC 5905, according to | |||
| according to Section 4.1.2 of RFC 4656."; | Section 4.1.2 of RFC 4656."; | |||
| reference | reference | |||
| "RFC 4656: OWAMP, Section 3.1 and 4.1.2, | "RFC 4656: A One-way Active Measurement Protocol (OWAMP), | |||
| RFC 5905: NTPv4 Specification."; | Sections 3.1 and 4.1.2 | |||
| RFC 5905: Network Time Protocol Version 4: Protocol and | ||||
| Algorithms Specification"; | ||||
| } | } | |||
| leaf repeat-count { | leaf repeat-count { | |||
| type uint64; | type uint64; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates how many times the test session has been | "Indicates how many times the test session has been | |||
| repeated. When a test is running, this value will be | repeated. When a test is running, this value will be | |||
| greater than 0. If the repeat parameter is non-zero, | greater than 0. If the repeat parameter is non-zero, | |||
| this value is smaller than or equal to the repeat | this value is smaller than or equal to the repeat | |||
| parameter."; | 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 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-Modes that the Control-Client has chosen for | |||
| this control connection as set in the Mode field of | this control connection as set in the Mode field of | |||
| the Set-Up-Response message"; | the Set-Up-Response message."; | |||
| reference | reference | |||
| "RFC 4656, Section 3.1."; | "RFC 4656: A One-way Active Measurement Protocol (OWAMP), | |||
| 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 | HMAC-SHA1 Session-key used for authentication; see | |||
| also the last paragraph of Section 6 in RFC 4656. | also the last paragraph of Section 6.10 of RFC 4656. | |||
| If the Mode defined in RFC 7717 is selected | If the mode defined in RFC 7717 is selected | |||
| (selected-mode), Token is limited to 16 octets."; | (selected-mode), Token is limited to 16 octets."; | |||
| reference | reference | |||
| "RFC 4086: Randomness Requirements for Security | "RFC 4656: A One-way Active Measurement Protocol (OWAMP), | |||
| Section 6.10 | ||||
| RFC 7717: IKEv2-Derived Shared Secret Key for the | RFC 7717: IKEv2-Derived Shared Secret Key for the | |||
| One-Way Active Measurement Protocol (OWAMP) and | One-Way Active Measurement Protocol (OWAMP) and | |||
| Two-Way Active Measurement Protocol (TWAMP)"; | Two-Way Active 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), which 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 | If the mode defined in RFC 7717 is selected | |||
| (selected-mode), 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 | "RFC 4656: A One-way Active Measurement Protocol (OWAMP) | |||
| (OWAMP). | ||||
| RFC 7717: IKEv2-Derived Shared Secret Key for the | RFC 7717: IKEv2-Derived Shared Secret Key for the | |||
| One-Way Active Measurement Protocol (OWAMP) and | One-Way Active Measurement Protocol (OWAMP) and | |||
| Two-Way Active Measurement Protocol (TWAMP)"; | Two-Way Active 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 Control-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 | The configured (or auto-allocated) value is | |||
| advertised in the Sender Port field of the | advertised in the Sender Port field of the | |||
| Request-TW-session message (see Section 3.5 of | Request-TW-Session message (see Section 3.5 of | |||
| RFC 5357). Note that in the scenario where a device | RFC 5357). Note that in the scenario where a device | |||
| auto-allocates a UDP port number for a session, and | auto-allocates a UDP port number for a session and | |||
| the repeat parameter for that session indicates that | the repeat parameter for that session indicates that | |||
| it should be repeated, the device is free to | it should be repeated, the device is free to | |||
| auto-allocate a different UDP port number when it | auto-allocate a different UDP port number when it | |||
| negotiates the next (repeated) iteration of this | negotiates the next (repeated) iteration of this | |||
| session."; | 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 inet:port-number { | type inet:port-number { | |||
| range "862 | 49152..65535"; | 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 default number is | this TWAMP-Test session. The default number is | |||
| within the dynamic port range and is to be placed | within the dynamic port range and is to be placed | |||
| in the Receiver Port field of the Request-TW-Session | in the Receiver Port field of the Request-TW-Session | |||
| message. The well-known port (862) MAY be | message. The well-known port (862) MAY be used."; | |||
| used."; | ||||
| reference | reference | |||
| "draft-ietf-ippm-port-twamp-test: OWAMP and TWAMP | "RFC 8545: Well-Known Port Assignments for the One-Way | |||
| Well-Known Port Assignments."; | Active Measurement Protocol (OWAMP) and the Two-Way | |||
| Active Measurement Protocol (TWAMP)"; | ||||
| } | } | |||
| 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. | received. | |||
| 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."; | |||
| reference | reference | |||
| "RFC 5357: TWAMP, Section 3.5."; | "RFC 5357: A Two-Way Active Measurement Protocol | |||
| (TWAMP), Section 3.5"; | ||||
| } | } | |||
| 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."; | |||
| reference | reference | |||
| "RFC 4656, Section 3.5."; | "RFC 4656: A One-way Active Measurement Protocol | |||
| (OWAMP), 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 | This value will be placed in the Type-P Descriptor | |||
| field of the Request-TW-Session message"; | field of the Request-TW-Session message."; | |||
| reference | reference | |||
| "RFC 5357."; | "RFC 5357: A Two-Way Active Measurement Protocol | |||
| (TWAMP)"; | ||||
| } | } | |||
| 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 5905 as per | The timestamp format follows RFC 5905 as per | |||
| Section 3.5 of RFC 4656. | Section 3.5 of RFC 4656. | |||
| skipping to change at line 1732 ¶ | skipping to change at line 1652 ¶ | |||
| 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 5905 as per | The timestamp format follows RFC 5905 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 | will be started as soon as the Start-Sessions | |||
| message is received."; | message is received."; | |||
| } | } | |||
| leaf repeat { | leaf repeat { | |||
| type uint32 { | type uint32 { | |||
| range 0..4294967295; | range "0..4294967295"; | |||
| } | } | |||
| 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 the 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. | of this TWAMP-Test session. | |||
| A value of 4,294,967,295 indicates that the test | A value of 4,294,967,295 indicates that the test | |||
| session SHALL be repeated *forever* using the | session SHALL be repeated *forever* using the | |||
| information in repeat-interval parameter, and SHALL | information in the repeat-interval parameter and | |||
| NOT decrement the value."; | SHALL NOT decrement the value."; | |||
| } | } | |||
| 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 | description | |||
| "Repeat interval (in seconds)."; | "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 | |||
| in the Performance Metric Registry | the Performance Metrics Registry (see RFC 8911). | |||
| (see ietf-ippm-metric-registry). Output statistics | Output statistics are specified in the | |||
| are specified in the corresponding Registry | corresponding Registry Entry."; | |||
| entry."; | ||||
| } | } | |||
| description | description | |||
| "A list of one or more Performance Metric Registry | "A list of one or more Performance Metrics 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: Registry for | "RFC 8911: Registry for Performance Metrics"; | |||
| Performance Metrics"; | ||||
| } | } | |||
| 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 -- an accepted | |||
| indication of an error."; | request or an indication of an error."; | |||
| reference | reference | |||
| "Section 3.5 of RFC 5357."; | "RFC 5357: A Two-Way Active Measurement Protocol | |||
| (TWAMP), Section 3.5"; | ||||
| } | } | |||
| 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 Session Identifier (SID) allocated by the Server | |||
| session, and communicated back to the Control-Client | for this TWAMP-Test session and communicated back to | |||
| in the SID field of the Accept-Session message"; | the Control-Client in the SID field of the | |||
| Accept-Session message."; | ||||
| reference | reference | |||
| "Section 4.3 of RFC 6038."; | "RFC 6038: Two-Way Active Measurement Protocol (TWAMP) | |||
| Reflect Octets and Symmetrical Size | ||||
| Features, Section 4.3"; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container server { | container server { | |||
| if-feature server; | if-feature "server"; | |||
| description | description | |||
| "Configuration of the TWAMP Server logical entity."; | "Configuration of the TWAMP Server logical entity."; | |||
| leaf admin-state { | leaf admin-state { | |||
| type boolean; | type boolean; | |||
| default true; | default "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 | 'The Server MAY discontinue any established control | |||
| connection when no packet associated with that | connection when no packet associated with that | |||
| connection has been received within SERVWAIT seconds."; | 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-Clients | SHOULD use the DSCP value from the Control-Client's | |||
| 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-Clients TCP SYN."; | the DSCP value from the Control-Client's TCP SYN."; | |||
| reference | reference | |||
| "Section 3.1 of RFC 5357."; | "RFC 5357: A Two-Way Active Measurement Protocol (TWAMP), | |||
| Section 3.1"; | ||||
| } | } | |||
| uses count; | uses count; | |||
| uses max-count-exponent; | uses max-count-exponent; | |||
| 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 | |||
| is willing to support; see IANA TWAMP Modes Registry."; | willing to support; see the 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 reconfigured 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 | reconfigures 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 the 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 reconfigures 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-exponent { | uses max-count-exponent { | |||
| description | description | |||
| "This read-only value indicates the actual max-count in | "This read-only value indicates the actual max-count in | |||
| use for this control connection. Usually this would be | use for this control connection. Usually, this would be | |||
| the same value as configured under twamp/server."; | the same value as is 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 (Server-IV) | |||
| (IV) generated randomly by the Server."; | 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, a 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"; | |||
| 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; | |||
| default true; | default "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 | description | |||
| "List of TWAMP Session-Sender test sessions."; | "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 | for identifying this test session by the | |||
| Session-Sender logical entity."; | Session-Sender 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 | is responsible for negotiating this TWAMP-Test | |||
| session."; | 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 (1) will contain pseudorandom | |||
| numbers, or whether it should consist of all zeroes, | numbers or (2) should consist of all zeros, as per | |||
| as per Section 4.2.1 of RFC 5357."; | 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 | transmitted by the Session-Sender for this test | |||
| session."; | 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 | "Indicates the time to wait (in seconds) between | |||
| the first bits of TWAMP-Test (UDP) packet | the first bits of TWAMP-Test (UDP) packet | |||
| transmissions for this test session."; | transmissions for this test session."; | |||
| reference | reference | |||
| "RFC 3432: Network performance measurement | "RFC 3432: Network performance measurement with | |||
| with periodic streams"; | 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 | The packet is calculated using the reciprocal of | |||
| lambda and the TWAMP-Test packet size (which | lambda and the TWAMP-Test packet size (which | |||
| depends on the selected Mode and the packet | depends on the selected mode and the packet | |||
| padding)."; | 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; | |||
| description | description | |||
| "Indicates the Session-Sender test session state."; | "Indicates the Session-Sender test session state."; | |||
| } | } | |||
| uses maintenance-statistics; | uses maintenance-statistics; | |||
| } | } | |||
| } | } | |||
| container session-reflector { | container session-reflector { | |||
| if-feature session-reflector; | if-feature "session-reflector"; | |||
| description | description | |||
| "Configuration of the TWAMP Session-Reflector logical | "Configuration of the TWAMP Session-Reflector logical | |||
| entity"; | entity."; | |||
| leaf admin-state { | leaf admin-state { | |||
| type boolean; | type boolean; | |||
| default true; | default "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 | "The Session-Reflector MAY discontinue any session that | |||
| has been started when no packet associated with that | has been started when no packet associated with that | |||
| session has been received for REFWAIT seconds. As per | session has been received for REFWAIT seconds. As per | |||
| Section 3.1 of RFC 5357, this timeout allows a | Section 3.1 of RFC 5357, this timeout allows a | |||
| Session-Reflector to free up resources in case of | Session-Reflector to free up resources in case of | |||
| failure."; | 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 | description | |||
| "TWAMP Session-Reflectortest sessions."; | "TWAMP Session-Reflector test 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 inet:port-number { | type inet:port-number { | |||
| range "862 | 49152..65535"; | 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 | (TCP) packets belonging to the parent control | |||
| connection that negotiated this test session."; | connection 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 | "The destination TCP port number used in the | |||
| TWAMP-Control (TCP) packets belonging to the parent | TWAMP-Control (TCP) packets belonging to the parent | |||
| control connection that negotiated this test | control connection that negotiated this test | |||
| session."; | 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; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | }]]></sourcecode> | |||
| <CODE ENDS> | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="examples" numbered="true" toc="default"> | ||||
| <name>Data Model Examples</name> | ||||
| <t>This section presents simple but complete examples of configuring | ||||
| all four entities in <xref target="fig_scope" format="default"/>, based on | ||||
| the YANG | ||||
| module specified in <xref target="module" format="default"/>. The | ||||
| examples are illustrative | ||||
| in nature but aim to be self-contained, i.e., were they to be executed in | ||||
| a real TWAMP implementation, they would lead to correctly configured test | ||||
| sessions. For completeness, examples are provided for both IPv4 and | ||||
| IPv6. The examples are shown using XML | ||||
| <xref target="W3C.REC-xml-20081126"/>.</t> | ||||
| <section anchor="examples" title="Data Model Examples"> | <t>More elaborate examples, which also include authentication | |||
| <t>This section presents a simple but complete example of configuring | parameters, are provided in <xref target="AuthExample" format="default"/>. | |||
| all four entities in <xref target="fig:scope"/>, based on the YANG | </t> | |||
| module specified in <xref target="module"/>. The example is illustrative | <section anchor="ExampleCC" numbered="true" toc="default"> | |||
| in nature, but aims to be self-contained, i.e. were it to be executed in | <name>Control-Client</name> | |||
| a real TWAMP implementation it would lead to a correctly configured test | <t><xref target="fig_ExampleCC" format="default"/> shows a configuration | |||
| session. For completeness, examples are provided for both IPv4 and | example for a | |||
| IPv6.</t> | ||||
| <t>A more elaborated example, which also includes authentication | ||||
| parameters, is provided in <xref target="AuthExample"/>.</t> | ||||
| <section anchor="ExampleCC" title="Control-Client"> | ||||
| <t><xref target="fig:ExampleCC"/> shows a configuration example for a | ||||
| Control-Client with client/admin-state enabled. In a real | Control-Client with client/admin-state enabled. In a real | |||
| implementation following <xref target="fig:scope2"/> this would permit | implementation following <xref target="fig_scope2" format="default"/>, t his would permit | |||
| the initiation of TWAMP-Control connections and TWAMP-Test | the initiation of TWAMP-Control connections and TWAMP-Test | |||
| sessions.</t> | sessions.</t> | |||
| <figure anchor="fig_ExampleCC"> | ||||
| <figure anchor="fig:ExampleCC" | <name>XML Instance Enabling Control-Client Operation</name> | |||
| title="XML instance enabling Control-Client operation."> | <sourcecode type="xml"><![CDATA[ | |||
| <artwork><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <client> | <client> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| </client> | </client> | |||
| </twamp> | </twamp> | |||
| </config> | </config>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>The following example shows a Control-Client with two instances of | <t>The following example shows a Control-Client with two instances of | |||
| client/ctrl-connection, one called "RouterA" and another called | client/ctrl-connection -- one called "RouterA" and another called | |||
| "RouterB". Each TWAMP-Control connection is to a different Server. The | "RouterB". Each TWAMP-Control connection is to a different Server. The | |||
| control connection named "RouterA" has two test session requests. The | control connection named "RouterA" has two test session requests. The | |||
| TWAMP-Control connection named "RouterB" has no TWAMP-Test session | TWAMP-Control connection named "RouterB" has no TWAMP-Test session | |||
| requests.</t> | requests.</t> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <client> | <client> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <name>RouterA</name> | <name>RouterA</name> | |||
| <client-ip>203.0.113.1</client-ip> | <client-ip>203.0.113.1</client-ip> | |||
| <server-ip>203.0.113.2</server-ip> | <server-ip>203.0.113.2</server-ip> | |||
| <test-session-request> | <test-session-request> | |||
| skipping to change at line 2370 ¶ | skipping to change at line 2234 ¶ | |||
| <start-time>0</start-time> | <start-time>0</start-time> | |||
| </test-session-request> | </test-session-request> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <name>RouterB</name> | <name>RouterB</name> | |||
| <client-ip>203.0.113.1</client-ip> | <client-ip>203.0.113.1</client-ip> | |||
| <server-ip>203.0.113.3</server-ip> | <server-ip>203.0.113.3</server-ip> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </client> | </client> | |||
| </twamp> | </twamp> | |||
| </config> | </config>]]></sourcecode> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <client> | <client> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <name>RouterA</name> | <name>RouterA</name> | |||
| <client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:db8:203:0:113::1</client-ip> | |||
| <server-ip>2001:DB8:203:0:113::2</server-ip> | <server-ip>2001:db8:203:0:113::2</server-ip> | |||
| <test-session-request> | <test-session-request> | |||
| <name>Test1</name> | <name>Test1</name> | |||
| <sender-ip>2001:DB8:203:1:113::3</sender-ip> | <sender-ip>2001:db8:203:1:113::3</sender-ip> | |||
| <sender-udp-port>54000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
| <reflector-ip>2001:DB8:203:1:113::4</reflector-ip> | <reflector-ip>2001:db8:203:1:113::4</reflector-ip> | |||
| <reflector-udp-port>55000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
| <start-time>0</start-time> | <start-time>0</start-time> | |||
| </test-session-request> | </test-session-request> | |||
| <test-session-request> | <test-session-request> | |||
| <name>Test2</name> | <name>Test2</name> | |||
| <sender-ip>2001:DB8:203:0:113::1</sender-ip> | <sender-ip>2001:db8:203:0:113::1</sender-ip> | |||
| <sender-udp-port>54001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
| <reflector-ip>2001:DB8:203:0:113::2</reflector-ip> | <reflector-ip>2001:db8:203:0:113::2</reflector-ip> | |||
| <reflector-udp-port>55001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
| <start-time>0</start-time> | <start-time>0</start-time> | |||
| </test-session-request> | </test-session-request> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <name>RouterB</name> | <name>RouterB</name> | |||
| <client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:db8:203:0:113::1</client-ip> | |||
| <server-ip>2001:DB8:203:0:113::3</server-ip> | <server-ip>2001:db8:203:0:113::3</server-ip> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </client> | </client> | |||
| </twamp> | </twamp> | |||
| </config> | </config>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| <section anchor="ExampleS" numbered="true" toc="default"> | ||||
| <section anchor="ExampleS" title="Server"> | <name>Server</name> | |||
| <t><xref target="fig:ExampleS"/> shows a configuration example for a | <t><xref target="fig_ExampleS" format="default"/> shows a configuration | |||
| Server with server/admin-state enabled, which permits a device | example for a | |||
| following <xref target="fig:scope2"/> to respond to TWAMP-Control | Server with server&wj;/admin-state enabled, which permits a device | |||
| following <xref target="fig_scope2" format="default"/> to respond to TWA | ||||
| MP-Control | ||||
| connections and TWAMP-Test sessions.</t> | connections and TWAMP-Test sessions.</t> | |||
| <figure anchor="fig_ExampleS"> | ||||
| <figure anchor="fig:ExampleS" | <name>XML Instance Enabling Server Operation</name> | |||
| title="XML instance enabling Server operation."> | <sourcecode type="xml"><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <server> | <server> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| </server> | </server> | |||
| </twamp> | </twamp> | |||
| </config> | </config>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>The following example presents a Server with the TWAMP-Control | <t>The following example presents a Server with the TWAMP-Control | |||
| connection corresponding to the control connection name | connection corresponding to the control connection name | |||
| (client/ctrl-connection/name) "RouterA" presented in <xref | (client&wj;/ctrl&nbhy;connection/name) "RouterA" presented in <xref targ | |||
| target="ExampleCC"/>.</t> | et="ExampleCC" format="default"/>.</t> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <server> | <server> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <client-ip>203.0.113.1</client-ip> | <client-ip>203.0.113.1</client-ip> | |||
| <client-tcp-port>16341</client-tcp-port> | <client-tcp-port>16341</client-tcp-port> | |||
| <server-ip>203.0.113.2</server-ip> | <server-ip>203.0.113.2</server-ip> | |||
| <server-tcp-port>862</server-tcp-port> | <server-tcp-port>862</server-tcp-port> | |||
| <state>active</state> | <state>active</state> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </server> | </server> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <server> | <server> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:db8:203:0:113::1</client-ip> | |||
| <client-tcp-port>16341</client-tcp-port> | <client-tcp-port>16341</client-tcp-port> | |||
| <server-ip>2001:DB8:203:0:113::2</server-ip> | <server-ip>2001:db8:203:0:113::2</server-ip> | |||
| <server-tcp-port>862</server-tcp-port> | <server-tcp-port>862</server-tcp-port> | |||
| <state>active</state> | <state>active</state> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </server> | </server> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| <section anchor="ExampleSS" numbered="true" toc="default"> | ||||
| <section anchor="ExampleSS" title="Session-Sender"> | <name>Session-Sender</name> | |||
| <t><xref target="fig:ExampleSS"/> shows a configuration example for a | <t><xref target="fig_ExampleSS" format="default"/> shows a configuration | |||
| example for a | ||||
| Session-Sender with session-sender/admin-state enabled, which permits | Session-Sender with session-sender/admin-state enabled, which permits | |||
| a device following <xref target="fig:scope2"/> to initiate TWAMP-Test | a device following <xref target="fig_scope2" format="default"/> to initi ate TWAMP-Test | |||
| sessions.</t> | sessions.</t> | |||
| <figure anchor="fig_ExampleSS"> | ||||
| <figure anchor="fig:ExampleSS" | <name>XML Instance Enabling Session-Sender Operation</name> | |||
| title="XML instance enabling Session-Sender operation."> | <sourcecode type="xml"><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-sender> | <session-sender> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| </session-sender> | </session-sender> | |||
| </twamp> | </twamp> | |||
| </config> | </config>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>The following configuration example shows a Session-Sender with the | <t>The following configuration example shows a Session-Sender with the | |||
| two TWAMP-Test sessions presented in <xref target="ExampleCC"/>.</t> | two TWAMP-Test sessions presented in <xref target="ExampleCC" format="de | |||
| fault"/>.</t> | ||||
| <figure> | <sourcecode type="xml"><![CDATA[ | |||
| <artwork><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-sender> | <session-sender> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <test-session> | <test-session> | |||
| <name>Test1</name> | <name>Test1</name> | |||
| <ctrl-connection-name>RouterA</ctrl-connection-name> | <ctrl-connection-name>RouterA</ctrl-connection-name> | |||
| <number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
| <periodic-interval>1</periodic-interval> | <periodic-interval>1</periodic-interval> | |||
| </test-session> | </test-session> | |||
| <test-session> | <test-session> | |||
| <name>Test2</name> | <name>Test2</name> | |||
| <ctrl-connection-name>RouterA</ctrl-connection-name> | <ctrl-connection-name>RouterA</ctrl-connection-name> | |||
| <number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
| <lambda>1</lambda> | <lambda>1</lambda> | |||
| <max-interval>2</max-interval> | <max-interval>2</max-interval> | |||
| </test-session> | </test-session> | |||
| </session-sender> | </session-sender> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| <section anchor="ExampleSR" numbered="true" toc="default"> | ||||
| <section anchor="ExampleSR" title="Session-Reflector"> | <name>Session-Reflector</name> | |||
| <t>This configuration example shows a Session-Reflector with | <t>This configuration example shows a Session-Reflector with | |||
| session-reflector/admin-state enabled, which permits a device | session&nbhy;reflector/admin-state enabled, which permits a device | |||
| following <xref target="fig:scope2"/> to respond to TWAMP-Test | following <xref target="fig_scope2" format="default"/> to respond to TWA | |||
| MP-Test | ||||
| sessions.</t> | sessions.</t> | |||
| <figure anchor="fig_ExampleSR"> | ||||
| <figure anchor="fig:ExampleSR" | <name>XML Instance Enabling Session-Reflector Operation</name> | |||
| title="XML instance enabling Session-Reflector operation."> | <sourcecode type="xml"><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-reflector> | <session-reflector> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| </session-reflector> | </session-reflector> | |||
| </twamp> | </twamp> | |||
| </config> | </config>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>The following example shows the two Session-Reflector TWAMP-Test | <t>The following example shows the two Session-Reflector TWAMP-Test | |||
| sessions corresponding to the test sessions presented in <xref | sessions corresponding to the test sessions presented in <xref | |||
| target="ExampleSS"/>.</t> | target="ExampleSS" format="default"/>.</t> | |||
| <figure> | <aside><t>Note: '\' line wrapping is for formatting only.</t></aside> | |||
| <artwork><![CDATA[ | ||||
| [note: '\' line wrapping is for formatting only] | ||||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-reflector> | <session-reflector> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <test-session> | <test-session> | |||
| <sender-ip>203.0.113.3</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
| <sender-udp-port>54000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
| <reflector-ip>203.0.113.4</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
| <reflector-udp-port>50001</reflector-udp-port> | <reflector-udp-port>50001</reflector-udp-port> | |||
| skipping to change at line 2601 ¶ | skipping to change at line 2440 ¶ | |||
| server-ip> | server-ip> | |||
| <parent-connection-server-tcp-port>862</parent-connection-se\ | <parent-connection-server-tcp-port>862</parent-connection-se\ | |||
| rver-tcp-port> | rver-tcp-port> | |||
| <sent-packets>21</sent-packets> | <sent-packets>21</sent-packets> | |||
| <rcv-packets>21</rcv-packets> | <rcv-packets>21</rcv-packets> | |||
| <last-sent-seq>20</last-sent-seq> | <last-sent-seq>20</last-sent-seq> | |||
| <last-rcv-seq>20</last-rcv-seq> | <last-rcv-seq>20</last-rcv-seq> | |||
| </test-session> | </test-session> | |||
| </session-reflector> | </session-reflector> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| [note: '\' line wrapping is for formatting only] | <aside><t>Note: '\' line wrapping is for formatting only.</t></aside> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-reflector> | <session-reflector> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <test-session> | <test-session> | |||
| <sender-ip>203.0.113.3</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
| <sender-udp-port>54000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
| <reflector-ip>203.0.113.4</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
| <reflector-udp-port>54001</reflector-udp-port> | <reflector-udp-port>54001</reflector-udp-port> | |||
| skipping to change at line 2650 ¶ | skipping to change at line 2490 ¶ | |||
| server-ip> | server-ip> | |||
| <parent-connection-server-tcp-port>862</parent-connection-se\ | <parent-connection-server-tcp-port>862</parent-connection-se\ | |||
| rver-tcp-port> | rver-tcp-port> | |||
| <sent-packets>21</sent-packets> | <sent-packets>21</sent-packets> | |||
| <rcv-packets>21</rcv-packets> | <rcv-packets>21</rcv-packets> | |||
| <last-sent-seq>20</last-sent-seq> | <last-sent-seq>20</last-sent-seq> | |||
| <last-rcv-seq>20</last-rcv-seq> | <last-rcv-seq>20</last-rcv-seq> | |||
| </test-session> | </test-session> | |||
| </session-reflector> | </session-reflector> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="security" numbered="true" toc="default"> | ||||
| <section anchor="security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>Virtually all existing measurement systems using <xref | <t>Virtually all existing measurement systems using <xref target="RFC5357" | |||
| target="RFC5357">TWAMP</xref> are administered by the same network | format="default">TWAMP</xref> are administered by the same network | |||
| operator. Attacks on the measurement infrastructure could be launched by | operator. For example, attacks on the measurement infrastructure could be | |||
| third-parties to commandeer the packet generation capability, corrupt | launched by | |||
| the measurements, or other examples of nefarious acts.</t> | third parties to commandeer the packet generation capability, corrupt | |||
| the measurements, or perform other nefarious acts.</t> | ||||
| <t>The YANG module specified in <xref target="module"/> of this document | <!-- Begin YANG security DNE text (Para.s 1, 2, and 3. --> | |||
| <t>The YANG module specified in this document | ||||
| defines a schema for data that is designed to be accessed via network | defines a schema for data that is designed to be accessed via network | |||
| management protocols such as <xref target="RFC6241">NETCONF</xref> or | management protocols such as <xref target="RFC6241" format="default">NETCO | |||
| <xref target="RFC8040">RESTCONF</xref>. The lowest <xref | NF</xref> or | |||
| target="RFC6241">NETCONF</xref> layer is the secure transport layer, and | <xref target="RFC8040" format="default">RESTCONF</xref>. The lowest | |||
| the mandatory-to-implement secure transport is <xref | NETCONF layer is the secure transport layer, and | |||
| target="RFC6242">Secure Shell (SSH)</xref>. The lowest RESTCONF layer is | the mandatory-to-implement secure transport is <xref target="RFC6242" form | |||
| at="default">Secure Shell (SSH)</xref>. The lowest RESTCONF layer is | ||||
| HTTPS, and the mandatory-to-implement secure transport is <xref | HTTPS, and the mandatory-to-implement secure transport is <xref | |||
| target="RFC5246">TLS</xref>.</t> | target="RFC8446" format="default">TLS</xref>.</t> | |||
| <t>The <xref target="RFC8341">NETCONF Access Control Module | <t>The <xref target="RFC8341" format="default">Network Configuration | |||
| (NACM)</xref> provides the means to restrict access for particular | Access Control Model (NACM)</xref> provides the means to restrict access f | |||
| or particular | ||||
| NETCONF or RESTCONF users to a preconfigured subset of all available | NETCONF or RESTCONF users to a preconfigured subset of all available | |||
| NETCONF or RESTCONF protocol operations and content.</t> | NETCONF or RESTCONF protocol operations and content.</t> | |||
| <t>There are a number of nodes defined in this YANG module which are | <t>There are a number of data nodes defined in this YANG module that are | |||
| writeable. These data nodes may be considered sensitive and vulnerable | writable/creatable/deletable (i.e., config true, which is the default). | |||
| to attacks in some network environments. Ability to write into these | These data nodes may be considered sensitive or vulnerable in some network | |||
| nodes without proper protection can have a negative effect on the | environments. Write operations (e.g., edit-config) to these data nodes | |||
| devices that support this feature.</t> | without proper protection can have a negative effect on network | |||
| operations. These are the subtrees and data nodes and their | ||||
| <t>If written, the 'admin-state' node can cause unintended test sessions | sensitivity/vulnerability:</t> | |||
| to be created. If the node 'number-of-packets' that dictates how many | <!-- End YANG security DNE text (Para.s 1, 2, and 3. --> | |||
| packets are sent in any particular test session is written with a large | ||||
| value, it can cause a test session to run longer than expected. Nodes | ||||
| that are particularly vulnerable include several timeout values put in | ||||
| the protocol to protect against sessions that are not active but are | ||||
| consuming resources. These are the REFWAIT timeout parameter which | ||||
| determine whether to discontinue the session if no packets are received, | ||||
| and nodes 'count' and 'max-count-exponent’ which can cause a long | ||||
| time to be spent on PBKDF2 iterations. In addition, 'dscp’ node | ||||
| marked with different DSCP markings, can cause the test traffic on the | ||||
| network to be skewed, and the result manipulated. Finally, nodes within | ||||
| 'mode-preference-chain' which specify the 'mode' and 'priority' values | ||||
| and indicate the preferred order of use by an operator, can be | ||||
| manipulated to send unauthenticated or non-encrypted traffic, enabling a | ||||
| MITM attack. Limiting access to these nodes will limit the ability to | ||||
| launch an attack in network environments.</t> | ||||
| <t>The ‘token’ node defined in the model, containing a | ||||
| concatenation of a Challenge, AES Session-key used for encryption, and | ||||
| HMAC-SHA1 Session-key used for authentication, is sensitive from a | ||||
| privacy perspective, and can be used to disrupt a test session. The | ||||
| ability to read the field should be limited to the administrator of the | ||||
| test network.</t> | ||||
| </section> | ||||
| <section anchor="iana" title="IANA Considerations"> | ||||
| <t>This document registers a URI in the <xref target="RFC3688">IETF XML | ||||
| registry </xref>. Following the format in <xref target="RFC3688">IETF | ||||
| XML Registry </xref>, the following registration is requested to be | ||||
| made.</t> | ||||
| <t>URI: urn:ietf:params:xml:ns:yang:ietf-twamp</t> | ||||
| <t>Registrant Contact: The IESG.</t> | ||||
| <t>XML: N/A, the requested URI is an XML namespace.</t> | ||||
| <t>This document registers a YANG module in the YANG Module Names | ||||
| registry <xref target="RFC6020">YANG </xref>.</t> | ||||
| <t>name: ietf-twamp</t> | ||||
| <t>namespace: urn:ietf:params:xml:ns:yang:ietf-twamp</t> | ||||
| <t>prefix: twamp</t> | ||||
| <t>reference: RFC XXXX</t> | ||||
| </section> | ||||
| <section anchor="acks" title="Acknowledgements"> | <ul spacing="normal"> | |||
| <t>We thank Fred Baker, Kevin D'Souza, Gregory Mirsky, Brian Trammell, | <li>If written, the 'admin-state' node can cause unintended test sessions | |||
| Robert Sherman, and Marius Georgescu for their thorough and constructive | to be created.</li> | |||
| reviews, comments and text suggestions.</t> | <li>If the node 'number-of-packets', which dictates how many packets are | |||
| sent in any particular test session, is written with a large value, it | ||||
| can cause a test session to run longer than expected.</li> | ||||
| <li>Nodes that are particularly vulnerable include several timeout values | ||||
| put in the protocol to protect against sessions that are not active but | ||||
| are consuming resources. These are the REFWAIT timeout parameter, which | ||||
| determines whether to discontinue the session if no packets are received; | ||||
| and the nodes 'count' and 'max-count-exponent', which can cause a long | ||||
| time to be spent on Password-Based Key Derivation Function 2 (PBKDF2) | ||||
| iterations.</li> | ||||
| <li>In addition, a 'dscp' node marked with different DSCP markings can | ||||
| cause the test traffic on the network to be skewed and the result | ||||
| manipulated.</li> | ||||
| <li>Finally, nodes within 'mode-preference-chain', which specifies the | ||||
| 'mode' and 'priority' values and indicates the preferred order of use by | ||||
| an operator, can be manipulated to send unauthenticated or non-encrypted | ||||
| traffic, enabling an on-path attack.</li> | ||||
| <li>Limiting access to these nodes will limit the ability to launch an | ||||
| attack in network environments.</li> | ||||
| </ul> | ||||
| <t>Haoxing Shen contributed to the definition of the YANG module in | <!-- Begin YANG security DNE text (Para. 4). --> | |||
| <xref target="module"/>.</t> | <t>Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | ||||
| important to control read access (e.g., via get, get-config, or | ||||
| notification) to these data nodes. This is the subtree and data node | ||||
| and its sensitivity/vulnerability:</t> | ||||
| <!-- End YANG security DNE text (Para. 4). --> | ||||
| <t>Jan Lindblad and Ladislav Lhokta did thorough reviews of the YANG | <ul spacing="normal"> | |||
| module and the examples in <xref target="AuthExample"/>.</t> | <li>The 'token' node defined in the model, containing a concatenation of a | |||
| Challenge, an AES Session-key used for encryption, and an HMAC-SHA1 | ||||
| Session-key used for authentication, is sensitive from a privacy | ||||
| perspective and can be used to disrupt a test session. The ability to read | ||||
| the field should be limited to the administrator of the test network.</li> | ||||
| </ul> | ||||
| <t>Kostas Pentikousis was partially supported by FP7 UNIFY | <t>The TWAMP YANG data model does not define RPC operations, as detailed in | |||
| (http://fp7-unify.eu), a research project partially funded by the | <xref target="OperationalCommands"/>, and defers the definition of NETCONF | |||
| European Community under the Seventh Framework Program (grant agreement | RPC operations to each implementation. These RPC operations, when defined, | |||
| no. 619609). The views expressed here are those of the authors only. The | may be considered sensitive or vulnerable in some network environments. | |||
| European Commission is not liable for any use that may be made of the | It is thus important to control access to these operations.</t> | |||
| information in this document.</t> | ||||
| </section> | </section> | |||
| <section anchor="iana" numbered="true" toc="default"> | ||||
| <section anchor="contributors" title="Contributors"> | <name>IANA Considerations</name> | |||
| <t>Lianshu Zheng.</t> | <t>IANA has registered the following URI in the <xref target="RFC3688" for | |||
| mat="default">"IETF XML | ||||
| Registry"</xref>.</t> | ||||
| <dl newline="false" spacing="compact"> | ||||
| <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-twamp</dd> | ||||
| <dt>Registrant Contact:</dt><dd>The IESG.</dd> | ||||
| <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | ||||
| </dl> | ||||
| <t>IANA has registered the following YANG module in the | ||||
| <xref target="RFC6020" format="default">"YANG Module Names" registry</xref | ||||
| >.</t> | ||||
| <dl newline="false" spacing="compact"> | ||||
| <dt>Name:</dt><dd>ietf-twamp</dd> | ||||
| <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-twamp</dd> | ||||
| <dt>Prefix:</dt><dd>twamp</dd> | ||||
| <dt>Reference:</dt><dd>RFC 8913</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <references> | |||
| <?rfc include='reference.RFC.2119'?> | <name>References</name> | |||
| <references> | ||||
| <?rfc include='reference.RFC.3432'?> | <name>Normative References</name> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | ||||
| <?rfc include='reference.RFC.3688'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3432. | ||||
| <?rfc include='reference.RFC.4086'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3688. | ||||
| <?rfc include='reference.RFC.4656'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4086. | ||||
| <?rfc include='reference.RFC.5357'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4656. | ||||
| <?rfc include='reference.RFC.5905'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446. | ||||
| <?rfc include='reference.RFC.6020'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5357. | ||||
| <?rfc include='reference.RFC.6038'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5905. | ||||
| <?rfc include='reference.RFC.6991'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6020. | ||||
| <?rfc include='reference.RFC.7717'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6038. | ||||
| <?rfc include='reference.RFC.7950'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6241. | ||||
| <?rfc include='reference.RFC.8174'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6242. | ||||
| <?rfc include='reference.I-D.ietf-ippm-port-twamp-test'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6991. | ||||
| <?rfc include='reference.I-D.ietf-ippm-metric-registry'?> | xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7717. | ||||
| <reference anchor="UML"> | xml"/> | |||
| <front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7950. | |||
| <title>Information technology - Open Distributed Processing - | xml"/> | |||
| Unified Modeling Language</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8040. | |||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8341. | ||||
| xml"/> | ||||
| <author> | <!-- draft-ietf-ippm-port-twamp-test (RFC 8545) --> | |||
| <organization>ISO/IEC</organization> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8545. | |||
| </author> | xml"/> | |||
| <date month="April" year="2005"/> | <!-- draft-ietf-ippm-metric-registry (RFC 8911) --> | |||
| </front> | <reference anchor="RFC8911" target="https://www.rfc-editor.org/info/rfc8 | |||
| 911"> | ||||
| <front> | ||||
| <title>Registry for Performance Metrics</title> | ||||
| <author fullname="Marcelo Bagnulo" initials="M." surname="Bagnulo"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Benoit Claise" initials="B." surname="Claise"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Phil Eardley" initials="P." surname="Eardley"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Al Morton" initials="A." surname="Morton"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Aamer Akhter" initials="A." surname="Akhter"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="November" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8911"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8911"/> | ||||
| </reference> | </reference> | |||
| </references> | ||||
| <references title="Informative References"> | ||||
| <?rfc include='reference.RFC.2330'?> | ||||
| <?rfc include='reference.RFC.5246'?> | ||||
| <?rfc include='reference.RFC.5618'?> | ||||
| <?rfc include='reference.RFC.5938'?> | ||||
| <?rfc include='reference.RFC.6241'?> | ||||
| <?rfc include='reference.RFC.6242'?> | ||||
| <?rfc include='reference.RFC.7312'?> | ||||
| <?rfc include='reference.RFC.7426'?> | ||||
| <?rfc include='reference.RFC.8018'?> | ||||
| <?rfc include='reference.RFC.8040'?> | ||||
| <?rfc include='reference.RFC.8340'?> | ||||
| <?rfc include='reference.RFC.8341'?> | ||||
| <?rfc include='reference.RFC.8342'?> | ||||
| <reference anchor="NSC"> | <reference anchor="UML"> | |||
| <front> | <front> | |||
| <title>Research directions in network service chaining</title> | <title>Information technology - Open Distributed Processing - | |||
| Unified Modeling Language (UML) Version 1.4.2</title> | ||||
| <author> | <author> | |||
| <organization>John, W., Pentikousis, K., et al.</organization> | <organization>ISO/IEC</organization> | |||
| </author> | </author> | |||
| <date month="April" year="2005"/> | ||||
| <date month="November" year="2013"/> | </front> | |||
| </front> | <seriesInfo name="ISO/IEC" value="19501:2005"/> | |||
| <seriesInfo name="OMG-UML" value="VER 1.3"/> | ||||
| </reference> | ||||
| <seriesInfo name="Proc. SDN for Future Networks and Services (SDN4FNS), | <reference anchor='W3C.REC-xml-20081126' | |||
| Trento, Italy" | target='https://www.w3.org/TR/2008/REC-xml-20081126'> | |||
| value="IEEE"/> | <front> | |||
| </reference> | <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title> | |||
| <author initials='T.' surname='Bray' fullname='Tim Bray'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='J.' surname='Paoli' fullname='Jean Paoli'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='M.' surname='Sperberg-McQueen' fullname='Michael Sperberg | ||||
| -McQueen'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='E.' surname='Maler' fullname='Eve Maler'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='F.' surname='Yergeau' fullname='Francois Yergeau'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='November' year='2008' /> | ||||
| </front> | ||||
| <seriesInfo name="World Wide Web Consortium Recommendation" value="REC-xml- | ||||
| 20081126"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2330. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5618. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5938. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7312. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7426. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8018. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8340. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8342. | ||||
| xml"/> | ||||
| <section anchor="AuthExample" title="Detailed Data Model Examples"> | <reference anchor="NSC"> | |||
| <t>This appendix extends the example presented in <xref | <front> | |||
| target="examples"/> by configuring more fields such as authentication | <title>Research directions in network service chaining</title> | |||
| parameters, DSCP values and so on.</t> | <author fullname="Wolfgang John" initials="W." surname="John"> | |||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Konstantinos Pentikousis" initials="K." surname="P | ||||
| entikousis"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="George Agapiou" initials="G." surname="Agapiou"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Eduardo Jacob" initials="E." surname="Jacob"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Mario Kind" initials="M." surname="Kind"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Antonio Manzalini" initials="A." surname="Manzalin | ||||
| i"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Fulvio Risso" initials="F." surname="Risso"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Dimitri Staessens" initials="D." surname="Staessen | ||||
| s"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Rebecca Steinert" initials="R." surname="Steinert" | ||||
| > | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Catalin Meirosu" initials="C." surname="Meirosu"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="November" year="2013"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/SDN4FNS.2013.6702549"/> | ||||
| <refcontent>2013 IEEE SDN for Future Networks and Services | ||||
| (SDN4FNS), Trento, Italy</refcontent> | ||||
| </reference> | ||||
| <reference anchor="PERF-METRICS" | ||||
| target="https://www.iana.org/assignments/performance-metrics"> | ||||
| <front> | ||||
| <title>Performance Metrics</title> | ||||
| <author><organization>IANA</organization></author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="AuthExample" numbered="true" toc="default"> | ||||
| <name>Detailed Data Model Examples</name> | ||||
| <t>This appendix extends the examples presented in <xref target="examples" | ||||
| format="default"/> by configuring more fields, such as authentication | ||||
| parameters, DSCP values, and so on.</t> | ||||
| <section title="Control-Client"> | <section numbered="true" toc="default"> | |||
| <figure> | <name>Control-Client</name> | |||
| <artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <client> | <client> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <mode-preference-chain> | <mode-preference-chain> | |||
| <priority>0</priority> | <priority>0</priority> | |||
| <mode>authenticated</mode> | <mode>authenticated</mode> | |||
| </mode-preference-chain> | </mode-preference-chain> | |||
| <mode-preference-chain> | <mode-preference-chain> | |||
| skipping to change at line 2904 ¶ | skipping to change at line 2793 ¶ | |||
| <sender-ip>203.0.113.1</sender-ip> | <sender-ip>203.0.113.1</sender-ip> | |||
| <sender-udp-port>54001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
| <reflector-ip>203.0.113.2</reflector-ip> | <reflector-ip>203.0.113.2</reflector-ip> | |||
| <reflector-udp-port>55001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
| <padding-length>128</padding-length> | <padding-length>128</padding-length> | |||
| <start-time>0</start-time> | <start-time>0</start-time> | |||
| </test-session-request> | </test-session-request> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </client> | </client> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <client> | <client> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <mode-preference-chain> | <mode-preference-chain> | |||
| <priority>0</priority> | <priority>0</priority> | |||
| <mode>authenticated</mode> | <mode>authenticated</mode> | |||
| </mode-preference-chain> | </mode-preference-chain> | |||
| <mode-preference-chain> | <mode-preference-chain> | |||
| skipping to change at line 2929 ¶ | skipping to change at line 2819 ¶ | |||
| <key-chain> | <key-chain> | |||
| <key-id>KeyClient1ToRouterA</key-id> | <key-id>KeyClient1ToRouterA</key-id> | |||
| <secret-key>c2VjcmV0MQ==</secret-key> | <secret-key>c2VjcmV0MQ==</secret-key> | |||
| </key-chain> | </key-chain> | |||
| <key-chain> | <key-chain> | |||
| <key-id>KeyForRouterB</key-id> | <key-id>KeyForRouterB</key-id> | |||
| <secret-key>c2VjcmV0Mg0K</secret-key> | <secret-key>c2VjcmV0Mg0K</secret-key> | |||
| </key-chain> | </key-chain> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <name>RouterA</name> | <name>RouterA</name> | |||
| <client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:db8:203:0:113::1</client-ip> | |||
| <server-ip>2001:DB8:203:0:113::2</server-ip> | <server-ip>2001:db8:203:0:113::2</server-ip> | |||
| <control-packet-dscp>32</control-packet-dscp> | <control-packet-dscp>32</control-packet-dscp> | |||
| <key-id>KeyClient1ToRouterA</key-id> | <key-id>KeyClient1ToRouterA</key-id> | |||
| <test-session-request> | <test-session-request> | |||
| <name>Test1</name> | <name>Test1</name> | |||
| <sender-ip>2001:DB8:10:1:1::1</sender-ip> | <sender-ip>2001:db8:10:1:1::1</sender-ip> | |||
| <sender-udp-port>54000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
| <reflector-ip>2001:DB8:10:1:1::2</reflector-ip> | <reflector-ip>2001:db8:10:1:1::2</reflector-ip> | |||
| <reflector-udp-port>55000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
| <padding-length>64</padding-length> | <padding-length>64</padding-length> | |||
| <start-time>0</start-time> | <start-time>0</start-time> | |||
| </test-session-request> | </test-session-request> | |||
| <test-session-request> | <test-session-request> | |||
| <name>Test2</name> | <name>Test2</name> | |||
| <sender-ip>2001:DB8:203:0:113::1</sender-ip> | <sender-ip>2001:db8:203:0:113::1</sender-ip> | |||
| <sender-udp-port>54001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
| <reflector-ip>2001:DB8:203:0:113::2</reflector-ip> | <reflector-ip>2001:db8:203:0:113::2</reflector-ip> | |||
| <reflector-udp-port>55001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
| <padding-length>128</padding-length> | <padding-length>128</padding-length> | |||
| <start-time>0</start-time> | <start-time>0</start-time> | |||
| </test-session-request> | </test-session-request> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </client> | </client> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Server"> | <name>Server</name> | |||
| <figure> | <sourcecode type="xml"><![CDATA[ | |||
| <artwork><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <server> | <server> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <servwait>1800</servwait> | <servwait>1800</servwait> | |||
| <control-packet-dscp>32</control-packet-dscp> | <control-packet-dscp>32</control-packet-dscp> | |||
| <modes>authenticated unauthenticated</modes> | <modes>authenticated unauthenticated</modes> | |||
| <count>15</count> | <count>15</count> | |||
| <key-chain> | <key-chain> | |||
| skipping to change at line 2992 ¶ | skipping to change at line 2878 ¶ | |||
| <client-tcp-port>16341</client-tcp-port> | <client-tcp-port>16341</client-tcp-port> | |||
| <server-ip>203.0.113.2</server-ip> | <server-ip>203.0.113.2</server-ip> | |||
| <server-tcp-port>862</server-tcp-port> | <server-tcp-port>862</server-tcp-port> | |||
| <control-packet-dscp>32</control-packet-dscp> | <control-packet-dscp>32</control-packet-dscp> | |||
| <selected-mode>unauthenticated</selected-mode> | <selected-mode>unauthenticated</selected-mode> | |||
| <key-id>KeyClient1ToRouterA</key-id> | <key-id>KeyClient1ToRouterA</key-id> | |||
| <count>15</count> | <count>15</count> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </server> | </server> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <server> | <server> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <servwait>1800</servwait> | <servwait>1800</servwait> | |||
| <control-packet-dscp>32</control-packet-dscp> | <control-packet-dscp>32</control-packet-dscp> | |||
| <modes>authenticated unauthenticated</modes> | <modes>authenticated unauthenticated</modes> | |||
| <count>15</count> | <count>15</count> | |||
| <key-chain> | <key-chain> | |||
| <key-id>KeyClient1ToRouterA</key-id> | <key-id>KeyClient1ToRouterA</key-id> | |||
| <secret-key>c2VjcmV0MQ==</secret-key> | <secret-key>c2VjcmV0MQ==</secret-key> | |||
| </key-chain> | </key-chain> | |||
| <key-chain> | <key-chain> | |||
| <key-id>KeyClient10ToRouterA</key-id> | <key-id>KeyClient10ToRouterA</key-id> | |||
| <secret-key>c2VjcmV0MTANCg==</secret-key> | <secret-key>c2VjcmV0MTANCg==</secret-key> | |||
| </key-chain> | </key-chain> | |||
| <ctrl-connection> | <ctrl-connection> | |||
| <client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:db8:203:0:113::1</client-ip> | |||
| <client-tcp-port>16341</client-tcp-port> | <client-tcp-port>16341</client-tcp-port> | |||
| <server-ip>2001:DB8:203:0:113::2</server-ip> | <server-ip>2001:db8:203:0:113::2</server-ip> | |||
| <server-tcp-port>862</server-tcp-port> | <server-tcp-port>862</server-tcp-port> | |||
| <control-packet-dscp>32</control-packet-dscp> | <control-packet-dscp>32</control-packet-dscp> | |||
| <selected-mode>unauthenticated</selected-mode> | <selected-mode>unauthenticated</selected-mode> | |||
| <key-id>KeyClient1ToRouterA</key-id> | <key-id>KeyClient1ToRouterA</key-id> | |||
| <count>15</count> | <count>15</count> | |||
| </ctrl-connection> | </ctrl-connection> | |||
| </server> | </server> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Session-Sender"> | <name>Session-Sender</name> | |||
| <figure> | <sourcecode type="xml"><![CDATA[ | |||
| <artwork><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-sender> | <session-sender> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <test-session> | <test-session> | |||
| <name>Test1</name> | <name>Test1</name> | |||
| <ctrl-connection-name>RouterA</ctrl-connection-name> | <ctrl-connection-name>RouterA</ctrl-connection-name> | |||
| <fill-mode>zero</fill-mode> | <fill-mode>zero</fill-mode> | |||
| <number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
| skipping to change at line 3062 ¶ | skipping to change at line 2944 ¶ | |||
| <number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
| <lambda>1</lambda> | <lambda>1</lambda> | |||
| <max-interval>2</max-interval> | <max-interval>2</max-interval> | |||
| <sent-packets>21</sent-packets> | <sent-packets>21</sent-packets> | |||
| <rcv-packets>21</rcv-packets> | <rcv-packets>21</rcv-packets> | |||
| <last-sent-seq>20</last-sent-seq> | <last-sent-seq>20</last-sent-seq> | |||
| <last-rcv-seq>20</last-rcv-seq> | <last-rcv-seq>20</last-rcv-seq> | |||
| </test-session> | </test-session> | |||
| </session-sender> | </session-sender> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <name>Session-Reflector</name> | ||||
| <section title="Session-Reflector"> | <aside><t>Note: '\' line wrapping is for formatting only.</t></aside> | |||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| [note: '\' line wrapping is for formatting only] | ||||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-reflector> | <session-reflector> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <test-session> | <test-session> | |||
| <sender-ip>203.0.113.3</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
| <sender-udp-port>54000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
| <reflector-ip>203.0.113.4</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
| <reflector-udp-port>55000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
| skipping to change at line 3120 ¶ | skipping to change at line 2999 ¶ | |||
| <parent-connection-server-tcp-port>862</parent-connection-se\ | <parent-connection-server-tcp-port>862</parent-connection-se\ | |||
| rver-tcp-port> | rver-tcp-port> | |||
| <test-packet-dscp>32</test-packet-dscp> | <test-packet-dscp>32</test-packet-dscp> | |||
| <sent-packets>21</sent-packets> | <sent-packets>21</sent-packets> | |||
| <rcv-packets>21</rcv-packets> | <rcv-packets>21</rcv-packets> | |||
| <last-sent-seq>20</last-sent-seq> | <last-sent-seq>20</last-sent-seq> | |||
| <last-rcv-seq>20</last-rcv-seq> | <last-rcv-seq>20</last-rcv-seq> | |||
| </test-session> | </test-session> | |||
| </session-reflector> | </session-reflector> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| [note: '\' line wrapping is for formatting only] | <aside><t>Note: '\' line wrapping is for formatting only.</t></aside> | |||
| <sourcecode type="xml"><![CDATA[ | ||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
| <session-reflector> | <session-reflector> | |||
| <admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
| <test-session> | <test-session> | |||
| <sender-ip>2001:DB8:10:1:1::1</sender-ip> | <sender-ip>2001:db8:10:1:1::1</sender-ip> | |||
| <sender-udp-port>54000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
| <reflector-ip>2001:DB8:10:1:1::2</reflector-ip> | <reflector-ip>2001:db8:10:1:1::2</reflector-ip> | |||
| <reflector-udp-port>55000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
| <sid>1232</sid> | <sid>1232</sid> | |||
| <parent-connection-client-ip>2001:DB8:203:0:113::1</parent-c\ | <parent-connection-client-ip>2001:db8:203:0:113::1</parent-c\ | |||
| onnection-client-ip> | onnection-client-ip> | |||
| <parent-connection-client-tcp-port>16341</parent-connection-\ | <parent-connection-client-tcp-port>16341</parent-connection-\ | |||
| client-tcp-port> | client-tcp-port> | |||
| <parent-connection-server-ip>2001:DB8:203:0:113::2</parent-c\ | <parent-connection-server-ip>2001:db8:203:0:113::2</parent-c\ | |||
| onnection-server-ip> | onnection-server-ip> | |||
| <parent-connection-server-tcp-port>862</parent-connection-se\ | <parent-connection-server-tcp-port>862</parent-connection-se\ | |||
| rver-tcp-port> | rver-tcp-port> | |||
| <test-packet-dscp>32</test-packet-dscp> | <test-packet-dscp>32</test-packet-dscp> | |||
| <sent-packets>2</sent-packets> | <sent-packets>2</sent-packets> | |||
| <rcv-packets>2</rcv-packets> | <rcv-packets>2</rcv-packets> | |||
| <last-sent-seq>1</last-sent-seq> | <last-sent-seq>1</last-sent-seq> | |||
| <last-rcv-seq>1</last-rcv-seq> | <last-rcv-seq>1</last-rcv-seq> | |||
| </test-session> | </test-session> | |||
| <test-session> | <test-session> | |||
| <sender-ip>2001:DB8:203:0:113::1</sender-ip> | <sender-ip>2001:db8:203:0:113::1</sender-ip> | |||
| <sender-udp-port>54001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
| <reflector-ip>2001:DB8:192:68::2</reflector-ip> | <reflector-ip>2001:db8:192:68::2</reflector-ip> | |||
| <reflector-udp-port>55001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
| <sid>178943</sid> | <sid>178943</sid> | |||
| <parent-connection-client-ip>2001:DB8:203:0:113::1</parent-c\ | <parent-connection-client-ip>2001:db8:203:0:113::1</parent-c\ | |||
| onnection-client-ip> | onnection-client-ip> | |||
| <parent-connection-client-tcp-port>16341</parent-connection-\ | <parent-connection-client-tcp-port>16341</parent-connection-\ | |||
| client-tcp-port> | client-tcp-port> | |||
| <parent-connection-server-ip>2001:DB8:203:0:113::2</parent-c\ | <parent-connection-server-ip>2001:db8:203:0:113::2</parent-c\ | |||
| onnection-server-ip> | onnection-server-ip> | |||
| <parent-connection-server-tcp-port>862</parent-connection-se\ | <parent-connection-server-tcp-port>862</parent-connection-se\ | |||
| rver-tcp-port> | rver-tcp-port> | |||
| <test-packet-dscp>32</test-packet-dscp> | <test-packet-dscp>32</test-packet-dscp> | |||
| <sent-packets>21</sent-packets> | <sent-packets>21</sent-packets> | |||
| <rcv-packets>21</rcv-packets> | <rcv-packets>21</rcv-packets> | |||
| <last-sent-seq>20</last-sent-seq> | <last-sent-seq>20</last-sent-seq> | |||
| <last-rcv-seq>20</last-rcv-seq> | <last-rcv-seq>20</last-rcv-seq> | |||
| </test-session> | </test-session> | |||
| </session-reflector> | </session-reflector> | |||
| </twamp> | </twamp> | |||
| </data> | </data>]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="OperationalCommands" numbered="true" toc="default"> | ||||
| <section anchor="OperationalCommands" title="TWAMP Operational Commands"> | <name>TWAMP Operational Commands</name> | |||
| <t>TWAMP operational commands could be performed programmatically or | <t>TWAMP operational commands could be performed programmatically or | |||
| manually, e.g. using a command-line interface (CLI).</t> | manually, e.g., using a command-line interface (CLI).</t> | |||
| <t>With respect to programmability, YANG can be used to define NETCONF | <t>With respect to programmability, YANG can be used to define NETCONF | |||
| Remote Procedure Calls (RPC), therefore it would be, in principle, | Remote Procedure Calls (RPCs); therefore, it would be, in principle, | |||
| possible to define TWAMP RPC operations for actions such as starting or | possible to define TWAMP RPC operations for actions such as starting or | |||
| stopping control connections or test sessions or groups of sessions; | stopping control connections, test sessions, or groups of sessions; | |||
| retrieving results; clearing stored results, and so on.</t> | retrieving results; clearing stored results; and so on.</t> | |||
| <t>However, <xref target="RFC5357" format="default">TWAMP </xref> does not | ||||
| <t>However, <xref target="RFC5357">TWAMP </xref> does not attempt to | attempt to | |||
| describe such operational actions. Refer also to <xref target="scope"/> | describe such operational actions. Refer also to <xref target="scope" form | |||
| and the unlabeled links in <xref target="fig:scope"/>. In actual | at="default"/> | |||
| deployments different TWAMP implementations may support different sets | and the unlabeled links in <xref target="fig_scope" format="default"/>. In | |||
| actual | ||||
| deployments, different TWAMP implementations may support different sets | ||||
| of operational commands, with different restrictions. Therefore, this | of operational commands, with different restrictions. Therefore, this | |||
| document considers it the responsibility of the individual | document considers it the responsibility of the individual | |||
| implementation to define its corresponding TWAMP operational commands | implementation to define its corresponding data model for TWAMP operationa | |||
| data model.</t> | l commands.</t> | |||
| </section> | ||||
| <section anchor="acks" numbered="false" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t>We thank <contact fullname="Fred Baker"/>, <contact fullname="Kevin D'S | ||||
| ouza"/>, <contact fullname="Gregory Mirsky"/>, <contact fullname="Brian Trammell | ||||
| "/>, | ||||
| <contact fullname="Robert Sherman"/>, and <contact fullname="Marius George | ||||
| scu"/> for their thorough and constructive | ||||
| reviews, comments, and text suggestions.</t> | ||||
| <t><contact fullname="Haoxing Shen"/> contributed to the definition of the | ||||
| YANG module in | ||||
| <xref target="module" format="default"/>.</t> | ||||
| <t><contact fullname="Jan Lindblad"/> and <contact fullname="Ladislav Lhot | ||||
| ka"/> did thorough reviews of the YANG | ||||
| module and the examples in <xref target="AuthExample" | ||||
| format="default"/>.</t> | ||||
| <t><contact fullname="Kostas Pentikousis"/> was partially supported by FP7 | ||||
| UNIFY, a research project partially funded by the | ||||
| European Community under the Seventh Framework Program (grant agreement | ||||
| no. 619609). The views expressed here are those of the authors only. The | ||||
| European Commission is not liable for any use that may be made of the | ||||
| information in this document.</t> | ||||
| </section> | ||||
| <section anchor="contributors" numbered="false" toc="default"> | ||||
| <name>Contributors</name> | ||||
| <t><contact fullname="Lianshu Zheng"/></t> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 497 change blocks. | ||||
| 1411 lines changed or deleted | 1417 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/ | ||||