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/ |