rfc9375xml2.original.xml | rfc9375.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com) | ||||
by Daniel M Kohn (private) --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.2119.xml"> | ||||
]> | ||||
<rfc category="std" docName="draft-ietf-opsawg-yang-vpn-service-pm-15" | ||||
ipr="trust200902"> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc toc="yes" ?> | ||||
<?rfc symrefs="yes" ?> | ||||
<?rfc sortrefs="yes"?> | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | ||||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<?rfc iprnotified="no" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" std" consensus="true" docName="draft-ietf-opsawg-yang-vpn-service-pm-15" number= "9375" ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3"> | |||
<?rfc strict="yes" ?> | <!-- xml2rfc v2v3 conversion 3.15.2 --> | |||
<front> | <front> | |||
<title abbrev="Network and VPN Service PM YANG">A YANG Model for Network | <title abbrev="A YANG Data Model for Network and VPN Service PM">A YANG Data Model for Network | |||
and VPN Service Performance Monitoring</title> | and VPN Service Performance Monitoring</title> | |||
<seriesInfo name="RFC" value="9375"/> | ||||
<author fullname="Bo Wu" initials="B." role="editor" surname="Wu"> | <author fullname="Bo Wu" initials="B." role="editor" surname="Wu"> | |||
<organization>Huawei</organization> | <organization>Huawei</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>101 Software Avenue, Yuhua District</street> | <extaddr>Yuhua District</extaddr> | |||
<street>101 Software Avenue</street> | ||||
<city>Nanjing</city> | <city>Nanjing</city> | |||
<region>Jiangsu</region> | <region>Jiangsu</region> | |||
<code>210012</code> | <code>210012</code> | |||
<country>China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>lana.wubo@huawei.com</email> | <email>lana.wubo@huawei.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Qin Wu" initials="Q." role="editor" surname="Wu"> | <author fullname="Qin Wu" initials="Q." role="editor" surname="Wu"> | |||
<organization>Huawei</organization> | <organization>Huawei</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>101 Software Avenue, Yuhua District</street> | <extaddr>Yuhua District</extaddr> | |||
<street>101 Software Avenue</street> | ||||
<city>Nanjing</city> | <city>Nanjing</city> | |||
<region>Jiangsu</region> | <region>Jiangsu</region> | |||
<code>210012</code> | <code>210012</code> | |||
<country>China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>bill.wu@huawei.com</email> | <email>bill.wu@huawei.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Mohamed Boucadair" initials="M." role="editor" surname="Bo | ||||
<author fullname="Mohamed Boucadair" initials="M." role="editor" | ucadair"> | |||
surname="Boucadair"> | ||||
<organization>Orange</organization> | <organization>Orange</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Rennes 35000</street> | <street>Rennes 35000</street> | |||
<country>France</country> | <country>France</country> | |||
</postal> | </postal> | |||
<email>mohamed.boucadair@orange.com</email> | <email>mohamed.boucadair@orange.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Oscar Gonzalez de Dios" initials="O." surname="Gonzalez de | ||||
<author fullname="Oscar Gonzalez de Dios" initials="O." | Dios"> | |||
surname="Gonzalez de Dios"> | ||||
<organization>Telefonica</organization> | <organization>Telefonica</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | <street/> | |||
<city>Madrid</city> | <city>Madrid</city> | |||
<country>Spain</country> | ||||
<country>ES</country> | ||||
</postal> | </postal> | |||
<email>oscar.gonzalezdedios@telefonica.com</email> | <email>oscar.gonzalezdedios@telefonica.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Bin Wen" initials="B" surname="Wen"> | <author fullname="Bin Wen" initials="B" surname="Wen"> | |||
<organization>Comcast</organization> | <organization>Comcast</organization> | |||
<address> | <address> | |||
<email>bin_wen@comcast.com</email> | <email>bin_wen@comcast.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2023" month="April" /> | ||||
<date year="2022"/> | <area>ops</area> | |||
<workgroup>opsawg</workgroup> | ||||
<area>OPS Area</area> | ||||
<workgroup>OPSAWG Working Group</workgroup> | ||||
<keyword>RFC</keyword> | ||||
<keyword>Request for Comments</keyword> | ||||
<keyword>Internet-Draft</keyword> | ||||
<keyword>VPN Performance Measurement Telemetry</keyword> | <keyword>VPN Performance Measurement Telemetry</keyword> | |||
<abstract> | <abstract> | |||
<t>The data model for network topologies defined in RFC 8345 introduces | <t>The data model for network topologies defined in RFC 8345 introduces | |||
vertical layering relationships between networks that can be augmented | vertical layering relationships between networks that can be augmented | |||
to cover network and service topologies. This document defines a YANG | to cover network and service topologies. This document defines a YANG | |||
module for performance monitoring (PM) of both underlay networks and | module for performance monitoring (PM) of both underlay networks and | |||
overlay VPN services that can be used to monitor and manage network | overlay VPN services that can be used to monitor and manage network | |||
performance on the topology of both layers.</t> | performance on the topology of both layers.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="intro" title="Introduction"> | <section anchor="intro" numbered="true" toc="default"> | |||
<t><xref target="RFC8969"/> describes a framework for automating service | <name>Introduction</name> | |||
and network management with YANG <xref target="RFC7950"/> models. It | <t><xref target="RFC8969" format="default"/> describes a framework for aut | |||
defines that the performance measurement telemetry model should be tied | omating service | |||
and network management with YANG <xref target="RFC7950" format="default"/> | ||||
data models. It | ||||
states that the performance measurement telemetry model should be tied | ||||
to the services (such as a Layer 3 VPN or Layer 2 VPN) or to the network | to the services (such as a Layer 3 VPN or Layer 2 VPN) or to the network | |||
models to monitor the overall network performance and the Service Level | models to monitor the overall network performance and the Service Level | |||
Agreements (SLAs).</t> | Agreements (SLAs).</t> | |||
<t>The performance of VPN services is associated with the performance | <t>The performance of VPN services is associated with the performance | |||
changes of the underlay networks that carries VPN services. For example, | changes of the underlay networks that carry VPN services. For example, | |||
link delay between Provider Edge (PE) and Provider (P) devices and | link delay between Provider Edge (PE) and Provider (P) devices and | |||
packet loss status on Layer 2 and Layer 3 interfaces connecting PEs and | packet loss status on Layer 2 and Layer 3 interfaces connecting PEs and | |||
Customer Edge (CE) devices directly impact VPN service performance. | Customer Edge (CE) devices directly impact VPN service performance. | |||
Additionally, the integration of Layer 2/Layer 3 VPN performance and | Additionally, the integration of Layer 2 / Layer 3 VPN performance and | |||
network performance data enables the orchestrator to monitor | network performance data enables the orchestrator to monitor | |||
consistently. Therefore, this document defines a YANG module for both | consistently. Therefore, this document defines a YANG module for both | |||
network and VPN service performance monitoring (PM). The module can be | network and VPN service performance monitoring (PM). The module can be | |||
used to monitor and manage network performance on the topology level or | used to monitor and manage network performance on the topology level or | |||
the service topology between VPN sites.</t> | the service topology between VPN sites.</t> | |||
<t>The base model specified in <xref target="YANG_Module"/> can be extende | ||||
<t>The base model presented here can be extended to include | d to include | |||
technology-specific details, e.g., adding Explicit Congestion | technology-specific details, e.g., adding Explicit Congestion | |||
Notification (ECN) statistics for Layer 3 networks or VPN services to | Notification (ECN) statistics for Layer 3 networks or VPN services to | |||
support performance-sensitive applications.</t> | support performance-sensitive applications.</t> | |||
<t>This document does not introduce new metrics for network performance | <t>This document does not introduce new metrics for network performance | |||
or mechanisms for measuring network performance, but uses the existing | or mechanisms for measuring network performance, but it uses the existing | |||
mechanisms and statistics to monitor the performance of the network and | mechanisms and statistics to monitor the performance of the network and | |||
the services.</t> | the services.</t> | |||
<t>The YANG module defined in this document is designed as an | <t>The YANG module defined in this document is designed as an | |||
augmentation to the network topology YANG model defined in <xref | augmentation to the network topology YANG data model defined in <xref targ | |||
target="RFC8345"/> and draws on relevant YANG types defined in <xref | et="RFC8345" format="default"/> and draws on relevant YANG types defined in <xre | |||
target="RFC6991"/>, <xref target="RFC8345"/>, <xref target="RFC8532"/>, | f target="RFC6991" format="default"/>, <xref target="RFC8345" format="default"/> | |||
and <xref target="RFC9181"/>.</t> | , <xref target="RFC8532" format="default"/>, | |||
and <xref target="RFC9181" format="default"/>.</t> | ||||
<t><xref target="examples"/> provides a set of examples to illustrate | <t><xref target="examples" format="default"/> provides a set of examples t | |||
o illustrate | ||||
the use of the module.</t> | the use of the module.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Terminology"> | <name>Terminology</name> | |||
<t>The following terms are defined in <xref format="default" | <t>The following terms are defined in <xref format="default" target="RFC79 | |||
target="RFC7950"/> and are used in this specification:</t> | 50"/> and are used in this specification:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>augment</li> | |||
<t>augment</t> | <li>data model</li> | |||
<li>data node</li> | ||||
<t>data model</t> | </ul> | |||
<t>The terminology for describing YANG data models is found in <xref forma | ||||
<t>data node</t> | t="default" target="RFC7950"/>.</t> | |||
</list></t> | ||||
<t>The terminology for describing YANG data models is found in <xref | ||||
format="default" target="RFC7950"/>.</t> | ||||
<t>The tree diagrams used in this document follow the notation defined | <t>The tree diagrams used in this document follow the notation defined | |||
in <xref format="default" target="RFC8340"/>.</t> | in <xref format="default" target="RFC8340"/>.</t> | |||
<section numbered="true" toc="default"> | ||||
<name>Acronyms</name> | ||||
<section title="Acronyms"> | <t>The following acronyms are used in the document:</t> | |||
<t>The following acronyms are used in the document:<?rfc subcompact="yes | <dl newline="false" spacing="normal" indent="10"> | |||
" ?></t> | <dt>CE</dt> | |||
<dd>Customer Edge, as defined in <xref target="RFC4026" format="defaul | ||||
<t><list hangIndent="8" style="hanging"> | t"/></dd> | |||
<t hangText="CE">Customer Edge, as defined in <xref | <dt>L2VPN</dt> | |||
target="RFC4026"/></t> | <dd>Layer 2 Virtual Private Network, as defined in | |||
<xref target="RFC4026" format="default"/></dd> | ||||
<t hangText="L2VPN">Layer 2 Virtual Private Network, as defined in | <dt>L3VPN</dt> | |||
<xref target="RFC4026"/></t> | <dd>Layer 3 Virtual Private Network, as defined in | |||
<xref target="RFC4026" format="default"/></dd> | ||||
<t hangText="L3VPN">Layer 3 Virtual Private Network, as defined in | <dt>L2NM</dt> | |||
<xref target="RFC4026"/></t> | <dd>L2VPN Network Model</dd> | |||
<dt>L3NM</dt> | ||||
<t hangText="L2NM">L2VPN Network Model</t> | <dd>L3VPN Network Model</dd> | |||
<dt>MPLS</dt> | ||||
<t hangText="L3NM">L3VPN Network Model</t> | <dd>Multiprotocol Label Switching</dd> | |||
<dt>OAM</dt> | ||||
<t hangText="MPLS">Multiprotocol Label Switching</t> | <dd>Operations, Administration, and Maintenance</dd> | |||
<dt>OSPF</dt> | ||||
<t hangText="OAM">Operations, Administration, and Maintenance</t> | <dd>Open Shortest Path First</dd> | |||
<dt>OWAMP</dt> | ||||
<t hangText="OSPF">Open Shortest Path First</t> | <dd>One-Way Active Measurement Protocol, as | |||
defined in <xref target="RFC4656" format="default"/></dd> | ||||
<t hangText="OWAMP">One-Way Active Measurement Protocol, as | <dt>P</dt> | |||
defined in <xref target="RFC4656"/></t> | <dd>Provider router, as defined in <xref target="RFC4026" format="defa | |||
ult"/></dd> | ||||
<t hangText="P">Provider Router, as defined in <xref | <dt>PE</dt> | |||
target="RFC4026"/></t> | <dd>Provider Edge, as defined in <xref target="RFC4026" format="defaul | |||
t"/></dd> | ||||
<t hangText="PE">Provider Edge, as defined in <xref | <dt>PM</dt> | |||
target="RFC4026"/></t> | <dd>Performance Monitoring</dd> | |||
<dt>SLA</dt> | ||||
<t hangText="PM">Performance Monitoring</t> | <dd>Service Level Agreement</dd> | |||
<dt>TP</dt> | ||||
<t hangText="SLA">Service Level Agreement</t> | <dd>Termination Point, as defined in <xref target="RFC8345" section="4 | |||
.2" sectionFormat="comma"/></dd> | ||||
<t hangText="TP">Termination Point, as defined in <xref | <dt>TWAMP</dt> | |||
target="RFC8345"/> section 4.2</t> | <dd>Two-Way Active Measurement Protocol, as | |||
defined in <xref target="RFC5357" format="default"/></dd> | ||||
<t hangText="TWAMP">Two-Way Active Measurement Protocol, as | <dt>VPLS</dt> | |||
defined in <xref target="RFC5357"/></t> | <dd>Virtual Private LAN Service, as defined in | |||
<xref target="RFC4026" format="default"/></dd> | ||||
<t hangText="VPLS">Virtual Private LAN Service, as defined in | <dt>VPN</dt> | |||
<xref target="RFC4026"/></t> | <dd>Virtual Private Network</dd> | |||
</dl> | ||||
<t hangText="VPN">Virtual Private Network</t> | ||||
</list></t> | ||||
<t><?rfc subcompact="no" ?></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Network and VPN Service Performance Monitoring Model Usage"> | <name>Network and VPN Service Performance Monitoring Model Usage</name> | |||
<t>Models are key for automating network management operations (Section | <t>Models are key for automating network management operations (<xref targ | |||
3 of <xref target="RFC8969"/>). Particularly, together with service and | et="RFC8969" section="3" sectionFormat="of"/>). Particularly, together with serv | |||
ice and | ||||
network models, performance measurement telemetry models are needed to | network models, performance measurement telemetry models are needed to | |||
monitor network performance to meet specific service requirements | monitor network performance to meet specific service requirements | |||
(typically captured in an SLA).</t> | (typically captured in an SLA).</t> | |||
<figure anchor="fig1" | <figure anchor="fig1"> | |||
title="An Example Architecture with a Service Orchestrator"> | <name>An Example Architecture with a Service Orchestrator</name> | |||
<artwork><![CDATA[ +---------------+ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| Customer | | +---------------+ | |||
+-------+-------+ | | Customer | | |||
| | +-------+-------+ | |||
Customer Service Models | | | | |||
| | Customer Service Models | | |||
+-------+---------+ | | | |||
| Service | | +-------+---------+ | |||
| Orchestration | | | Service | | |||
+------+-+--------+ | | Orchestrator | | |||
| | | +------+-+--------+ | |||
Network Service Models | | Network and VPN Service PM Models | | | | |||
| | | Network Service Models | | Network and VPN Service PM Models | |||
+------+-+--------+ | | | | |||
| Network | | +------+-+--------+ | |||
| Controller | | | Network | | |||
+-------+---------+ | | Controller | | |||
| | +-------+---------+ | |||
+-----------------------+------------------------+ | | | |||
Network | +-----------------------+------------------------+ | |||
Network | ||||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>The network and VPN service PM model can be | ||||
<t>The network and VPN service performance monitoring (PM) model can be | ||||
used to expose operational performance information to the layer above, | used to expose operational performance information to the layer above, | |||
e.g., to an orchestrator or other BSS/OSS client application, via | e.g., to an orchestrator or other Business Support System (BSS) / Operatio | |||
standard network management APIs. <xref target="fig1"/> shows an example | nal Support System (OSS) client application, via | |||
usage in a layered model architecture described in <xref | standard network management APIs. <xref target="fig1" format="default"/> s | |||
target="RFC8309"/>.</t> | hows an example | |||
usage in a layered model architecture as described in <xref target="RFC830 | ||||
9" format="default"/>.</t> | ||||
<t>Before using the model, the controller needs to establish topology | <t>Before using the model, the controller needs to establish topology | |||
visibility of the network and VPN. For example, the controller can use | visibility of the network and VPN. For example, the controller can use | |||
network information from <xref target="RFC8345"/>, <xref | network information from <xref target="RFC8345" format="default"/> and <xr | |||
target="I-D.ietf-opsawg-sap"/> or VPN information from the L3VPN Network | ef target="I-D.ietf-opsawg-sap" format="default"/> or VPN information from the L | |||
Model (L3NM) <xref target="RFC9182"/> and the L2VPN Network Model (L2NM) | 3VPN Network | |||
<xref target="RFC9291"/>. Then the controller derives network or VPN | Model (L3NM) <xref target="RFC9182" format="default"/> and the L2VPN Netwo | |||
level performance data by aggregating (and filtering) lower-level data | rk Model (L2NM) | |||
<xref target="RFC9291" format="default"/>. Then the controller derives net | ||||
work or VPN | ||||
performance data by aggregating (and filtering) lower-level data | ||||
collected via monitoring counters of the devices involved.</t> | collected via monitoring counters of the devices involved.</t> | |||
<t>The network or VPN performance data can be based on different | <t>The network or VPN performance data can be based on different | |||
sources. For example, the performance monitoring data per link in the | sources. For example, the performance monitoring data per link in the | |||
underlying networks can be collected using a network performance | underlying networks can be collected using a network performance | |||
measurement method such as One-Way Active Measurement Protocol (OWAMP) | measurement method such as the One-Way Active Measurement Protocol (OWAMP) | |||
<xref target="RFC4656"/>, Two-Way Active Measurement Protocol (TWAMP) | <xref target="RFC4656" format="default"/>, Two-Way Active Measurement Prot | |||
<xref target="RFC5357"/>, Simple Two-way Active Measurement Protocol | ocol (TWAMP) | |||
(STAMP) <xref target="RFC8762"/>, Multiprotocol Label Switching (MPLS) | <xref target="RFC5357" format="default"/>, Simple Two-way Active Measureme | |||
Loss and Delay Measurement <xref target="RFC6374"/> or In Situ OAM | nt Protocol | |||
(IOAM) <xref target="RFC9197"/>. The performance monitoring information | (STAMP) <xref target="RFC8762" format="default"/>, Multiprotocol Label Swi | |||
tching (MPLS) | ||||
Loss and Delay Measurement <xref target="RFC6374" format="default"/>, or I | ||||
n situ OAM | ||||
(IOAM) <xref target="RFC9197" format="default"/>. The performance monitori | ||||
ng information | ||||
reflecting the quality of the network or VPN service (e.g., network | reflecting the quality of the network or VPN service (e.g., network | |||
performance data between source node and destination node in the | performance data between source node and destination node in the | |||
networks or between VPN sites) can be computed and aggregated, for | networks or between VPN sites) can be computed and aggregated, for | |||
example, using the information from the Traffic Engineering Database | example, using the information from the Traffic Engineering Database | |||
(TED), <xref target="RFC7471"/> <xref target="RFC8570"/> <xref | (TED) <xref target="RFC7471" format="default"/> <xref target="RFC8570" for | |||
target="RFC8571"/>, or LMAP (Large-Scale Measurement Platform) <xref | mat="default"/> <xref target="RFC8571" format="default"/> or Large-Scale Measure | |||
target="RFC8194"/>.</t> | ment Platform (LMAP) <xref target="RFC8194" format="default"/>.</t> | |||
<t>The measurement and report intervals that are associated with these | <t>The measurement and report intervals that are associated with these | |||
performance data usually depend on the configuration of the specific | performance data usually depend on the configuration of the specific | |||
measurement method or collection method or various combinations. This | measurement method or collection method or various combinations. This | |||
document defines network-wide measurement intervals to align measurement | document defines network-wide measurement intervals to align measurement | |||
requirements for networks or VPN services.</t> | requirements for networks or VPN services.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Collecting Data via Pub/Sub Mechanism"> | <name>Collecting Data via the Pub/Sub Mechanism</name> | |||
<t>Some applications, such as service-assurance applications, which | <t>Some applications, such as service-assurance applications, which | |||
must maintain a continuous view of operational data and state, can use | must maintain a continuous view of operational data and state, can use | |||
the subscription model specified in <xref target="RFC8641"/> to | the subscription model specified in <xref target="RFC8641" format="defau lt"/> to | |||
subscribe to the specific network performance data or VPN service | subscribe to the specific network performance data or VPN service | |||
performance data they are interested in, at the data source. For | performance data they are interested in, at the data source. For | |||
example, networks or VPN topologies updates may be obtained through | example, network or VPN topology updates may be obtained through | |||
on-change notifications <xref target="RFC8641"/>. For dynamic PM data, | on-change notifications <xref target="RFC8641" format="default"/>. For d | |||
e.g. VRF routes or MAC entries, link metrics, and interface metrics, | ynamic PM data | |||
(e.g., VPN Routing and Forwarding (VRF) routes or Media Access Control ( | ||||
MAC) entries, link metrics, and interface metrics), | ||||
various notifications can be specified to obtain more complete data. A | various notifications can be specified to obtain more complete data. A | |||
periodic notification <xref target="RFC8641"/> can be specified to | periodic notification <xref target="RFC8641" format="default"/> can be s pecified to | |||
obtain real-time performance data. For devices/controllers that | obtain real-time performance data. For devices/controllers that | |||
maintain historical performance data for a period of time, a replay | maintain historical performance data for a period of time, a replay | |||
notification <xref target="RFC5277"/> or <xref target="RFC8639"/> can | notification (see <xref target="RFC5277" format="default"/> or <xref tar | |||
be used to obtain the historical data. And alarm notifications <xref | get="RFC8639" format="default"/>) can | |||
target="RFC8632"/> can be specified to get alarms for the metrics | be used to obtain the historical data. And alarm notifications <xref tar | |||
which exceed or fall below the performance threshold.</t> | get="RFC8632" format="default"/> can be specified to get alarms for the metrics | |||
that exceed or fall below the performance threshold.</t> | ||||
<t>The data source can, then, use the network and VPN service | <t>The data source can then use the network and VPN service | |||
performance monitoring model defined in this document and the YANG | performance monitoring model defined in this document and the YANG-Push | |||
Push model <xref target="RFC8641"/> to distribute specific telemetry | data model <xref target="RFC8641" format="default"/> to distribute speci | |||
fic telemetry | ||||
data to target recipients.</t> | data to target recipients.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Collecting Data On Demand"> | <name>Collecting Data On Demand</name> | |||
<t>To obtain a snapshot of performance data from a network topology or | <t>To obtain a snapshot of performance data from a network topology or | |||
a VPN service topology, service-assurance applications may retrieve | a VPN service topology, service-assurance applications may retrieve | |||
information using the network and VPN service PM model through a | information using the network and VPN service PM model through a | |||
NETCONF <xref target="RFC6241"/> or a RESTCONF <xref | Network Configuration Protocol (NETCONF) <xref target="RFC6241" format=" | |||
target="RFC8040"/> interface. For example, a specified "link-id" of a | default"/> or a RESTCONF <xref target="RFC8040" format="default"/> interface. Fo | |||
r example, a specified "link-id" of a | ||||
VPN can be used as a filter in a RESTCONF GET request to retrieve | VPN can be used as a filter in a RESTCONF GET request to retrieve | |||
per-link VPN PM data.</t> | per-link VPN PM data.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Description of The Data Model"> | <name>Description of the YANG Data Model</name> | |||
<t>This document defines the YANG module, "ietf-network-vpn-pm", which | <t>This document defines the "ietf-network-vpn-pm" YANG module, which | |||
is an augmentation to the "ietf-network" and "ietf-network-topology" | is an augmentation to the "ietf-network" and "ietf-network-topology" | |||
modules.</t> | YANG modules.</t> | |||
<section anchor="layering" numbered="true" toc="default"> | ||||
<section anchor="layering" | <name>Layering Relationship between Multiple Layers of Topology</name> | |||
title="Layering Relationship between Multiple Layers of Topology" | <t><xref target="RFC8345" format="default"/> defines a YANG data model f | |||
> | or | |||
<t><xref target="RFC8345"/> defines a YANG data model for | ||||
network/service topologies and inventories. The service topology | network/service topologies and inventories. The service topology | |||
described in <xref target="RFC8345"/> includes the abstract topology | described in <xref target="RFC8345" format="default"/> includes the abst ract topology | |||
for a service layer above Layer 1 (L1), Layer 2 (L2), and Layer 3 (L3) | for a service layer above Layer 1 (L1), Layer 2 (L2), and Layer 3 (L3) | |||
underlay topologies. This service topology has the generic topology | underlay topologies. This service topology has the generic topology | |||
elements of node, link, and terminating point. One typical example of | elements of node, link, and termination point. One typical example of | |||
a service topology is described in Figure 3 of <xref | a service topology is described in Figure 3 of <xref target="RFC8345" fo | |||
target="RFC8345"/>: two VPN service topologies instantiated over a | rmat="default"/>: two VPN service topologies instantiated over a | |||
common L3 topology. Each VPN service topology is mapped onto a subset | common L3 topology. Each VPN service topology is mapped onto a subset | |||
of nodes from the L3 topology.</t> | of nodes from the L3 topology.</t> | |||
<t><xref target="fig3" format="default"/> illustrates an example of a to | ||||
<t><xref target="fig3"/> illustrates an example of a topology | pology | |||
hierarchy that maps between the VPN service topology and an underlying | hierarchy that maps between the VPN service topology and an underlying | |||
Layer 3 network topology:</t> | Layer 3 network topology.</t> | |||
<figure anchor="fig3"> | ||||
<figure align="center" anchor="fig3" | <name>Example of Topology Mapping between VPN Service Topology and an | |||
title="Example of Topology Mapping Between VPN Service Topology | Underlying Network</name> | |||
and Underlying Network"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ VPN 1 VPN | VPN 1 VPN 2 | |||
2 | ||||
+------------------------+ +------------------------+ | +------------------------+ +------------------------+ | |||
/ / / / | / / / / | |||
/ S1C_[VN3].......... / / / | / S1C_[VN3].......... / / / | |||
/ \ : / / S2A_[VN1]____[VN3]_S2B / | / \ : / / S2A_[VN1]____[VN3]_S2B / | |||
/ \ : / / * * / | / \ : / / * * / | |||
/ \ :............ * .... * / | / \ :............ * .... * / | |||
/ S1B_[VN2]____[VN1]_S1A / / * : * / | / S1B_[VN2]____[VN1]_S1A / / * : * / | |||
+---------:-------:------+ +-------*------:-----*---+ | +---------:-------:------+ +-------*------:-----*---+ | |||
: : * * * * * : * | : : * * * * * : * | |||
: : * : * | : : * : * | |||
skipping to change at line 395 ¶ | skipping to change at line 320 ¶ | |||
Site-2A /: / \ / / * / | Site-2A /: / \ / / * / | |||
/ : [N5] / * / | / : [N5] / * / | |||
/ : / __/ \__ / * / | / : / __/ \__ / * / | |||
/ : / ___/ \__ / * / | / : / ___/ \__ / * / | |||
Site-1B / : / ___/ \ /* / Site-2B | Site-1B / : / ___/ \ /* / Site-2B | |||
[CE2]__/________[N4]__________________[N3]________/____[CE4] | [CE2]__/________[N4]__________________[N3]________/____[CE4] | |||
/ / | / / | |||
+------------------------------------------+ | +------------------------------------------+ | |||
L3 Topology | L3 Topology | |||
Legend: | Legend: | |||
N:Node VN:VPN-Node S:Site CE:Customer Edge | N: Node | |||
__ Link within a network layer | VN: VPN Node | |||
: Mapping between VPN 1 service topology and L3 topology | S: Site | |||
* Mapping between VPN 2 service topology and L3 topology | CE: Customer Edge | |||
__ Link within a network layer | ||||
: Mapping between VPN 1 service topology and L3 topology | ||||
* Mapping between VPN 2 service topology and L3 topology | ||||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>As shown in <xref target="fig3" format="default"/>, two VPN services | ||||
topologies are | ||||
built on top of one underlying Layer 3 network:</t> | ||||
<t>As shown in <xref target="fig3"/>, two VPN services topologies are | <dl newline="false" spacing="normal"> | |||
built on top of one underlying Layer 3 network:<list style="hanging"> | <dt>VPN 1:</dt> | |||
<t hangText="VPN 1: ">This service topology supports hub-spoke | <dd>This service topology supports Hub-and-Spoke | |||
communications for 'customer 1' connecting the customer's access | communications for "customer 1", connecting the customer's access | |||
at three sites: 'Site-1A', 'Site-1B', and 'Site-1C'. These sites | at three sites: Site-1A, Site-1B, and Site-1C. These sites | |||
are connected to nodes that are mapped to node 1 (N1), node 2 | are connected to nodes that are mapped to node 1 (N1), node 2 | |||
(N2), and node 4 (N4) in the underlying Layer 3 network. 'Site-1A' | (N2), and node 4 (N4) in the underlying Layer 3 network. Site-1A | |||
plays the role of hub while 'Site-1B' and 'Site-1C' are configured | plays the role of Hub while Site-1B and Site-1C are configured | |||
as spoke.</t> | as Spokes.</dd> | |||
<dt>VPN 2: </dt> | ||||
<t hangText="VPN 2: ">This service topology supports any-to-any | <dd>This service topology supports any-to-any | |||
communications for 'customer 2' connecting the customer's access | communications for "customer 2", connecting the customer's access | |||
at two sites: 'Site-2A' and 'Site-2B'. These sites are connected | at two sites: Site-2A and Site-2B. These sites are connected | |||
to nodes that are mapped to nodes 1 (N1) and node 3 (N3) in the | to nodes that are mapped to node 1 (N1) and node 3 (N3) in the | |||
underlying Layer 3 network. 'Site-2A' and 'Site-2B' have | underlying Layer 3 network. Site-2A and Site-2B have an | |||
'any-to-any' role.</t> | "any-to-any" role.</dd> | |||
</list></t> | </dl> | |||
<t>Based on the association between VPN service topologies and | ||||
<t>Based on the association between the VPN service topologies and the | underlying network topologies, the Network and VPN Service PM YANG modul | |||
underlying network topologies, the VPN Network PM YANG module extends | e extends | |||
the performance status of the underlay networks and VPN services. For | the performance status of the underlay networks and VPN services. For | |||
example, the module can provide link PM statistics and port statistics | example, the module can provide link PM statistics and port statistics | |||
of an underlay network, e.g. Layer 1, Layer 2, Layer 3, OSPF networks. | of an underlay network, e.g., Layer 1, Layer 2, Layer 3, and OSPF networ | |||
And it can also provide VPN PM statistics, which can be further split | ks. | |||
It can also provide VPN PM statistics, which can be further split | ||||
into PM for the VPN tunnel and PM at the VPN PE access node, as | into PM for the VPN tunnel and PM at the VPN PE access node, as | |||
illustrated in the following diagram.</t> | illustrated in the following diagram.</t> | |||
<figure anchor="fig4"> | ||||
<figure align="center" anchor="fig4" title="An Example of VPN PM"> | <name>An Example of VPN PM</name> | |||
<artwork><![CDATA[ +-------------------------------------------- | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
---------+ | +-----------------------------------------------------+ | |||
| | | | | | |||
| VPN2 Link | | | VPN2 Link | | |||
| |<-------------------->| | | | |<-------------------->| | | |||
| | | | | | | | | | |||
| VPN2+---+---+ +---+---+VPN2 | | | VPN2+---+---+ +---+---+VPN2 | | |||
| TP1| VN1 | Tunnel PM | VN3 |TP2 | | | TP1| VN1 | Tunnel PM | VN3 |TP2 | | |||
| ---+ PE A |==============| PE B +---- | | | ---+ PE A |==============| PE B +---- | | |||
|vpn-access+-------+ +-------+ vpn-access| | |vpn-access+-------+ +-------+ vpn-access| | |||
|-interface| | -interface| | |-interface| | -interface| | |||
| |##############################| | | | |##############################| | | |||
skipping to change at line 453 ¶ | skipping to change at line 383 ¶ | |||
| | | | | | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
| | | | | | |||
| | | | | | |||
+----+ | TP+-----+ Link +---+ Link +-----+TP | +----+ | +----+ | TP+-----+ Link +---+ Link +-----+TP | +----+ | |||
| CE4+-+----------+ N1 +-------+-N2+-------+ N3 +----------+-+CE5 | | | CE4+-+----------+ N1 +-------+-N2+-------+ N3 +----------+-+CE5 | | |||
+----+ | 1-1+-----+1-2 2-1+---+2-2 3-1+-----+3-2 | +----+ | +----+ | 1-1+-----+1-2 2-1+---+2-2 3-1+-----+3-2 | +----+ | |||
| | | | | | |||
| | | | | | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
Legend: | Legend: | |||
N:node VN:VPN-Node TP:Termination Point | N: node | |||
-:Link]]></artwork> | VN: VPN Node | |||
TP: Termination Point | ||||
-: Link]]></artwork> | ||||
</figure> | </figure> | |||
<t><xref target="fig4" format="default"/> illustrates an example of VPN | ||||
<t><xref target="fig4"/> illustrates an example of VPN PM and two VPN | PM and two VPN | |||
PM measurement methods including the VPN tunnel PM and the | PM measurement methods including the VPN tunnel PM and the | |||
inter-VPN-access interface PM. VPN PM can also provide statistics on | inter-VPN-access interface PM. VPN PM can also provide statistics on | |||
VPN access interfaces, the number of current VRF routes or L2VPN MAC | VPN access interfaces, the number of current VRF routes, or L2VPN MAC | |||
entry of VPN node.</t> | entry of a VPN node.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Network Level Performance Monitoring Augmentation"> | <name>Network-Level Performance Monitoring Augmentation</name> | |||
<t>The model can be used for performance monitoring both for the | <t>The module described below can be used for performance monitoring for | |||
both the | ||||
underlay networks and the VPN services, which would be separate | underlay networks and the VPN services, which would be separate | |||
entries in the network list <xref target="RFC8345"/>. The differences | entries in the network list <xref target="RFC8345" format="default"/>. T | |||
are as follows:<list style="symbols"> | he differences | |||
<t>When the “service” presence container is absent, | are as follows:</t> | |||
<ul spacing="normal"> | ||||
<li>When the "service" presence container is absent, | ||||
then it indicates performance monitoring of the network | then it indicates performance monitoring of the network | |||
itself.</t> | itself.</li> | |||
<li>When the "service" presence container is present, | ||||
<t>When the “service” presence container is present, | ||||
then it indicates performance monitoring of the VPN service | then it indicates performance monitoring of the VPN service | |||
specified by the “service-type” leaf, e.g. , L3VPN or | specified by the "service-type" leaf, e.g., L3VPN or | |||
Virtual Private LAN Service (VPLS). The values are taken from | Virtual Private LAN Service (VPLS). The values are taken from | |||
<xref target="RFC9181"/>. When a network topology instance | <xref target="RFC9181" format="default"/>. When a network topology i | |||
contains the L3VPN or other L2VPN network type, it represents a | nstance | |||
VPN instance that can perform performance monitoring</t> | contains the L3VPN or other L2VPN network types, it represents a | |||
</list></t> | VPN instance that can perform performance monitoring.</li> | |||
</ul> | ||||
<t>The tree in <xref target="ntree"/> is a part of | <t>The YANG tree in <xref target="ntree" format="default"/> is a part of | |||
"ietf-network-vpn-pm" tree. It also defines the following set of | the "ietf-network-vpn-pm" tree. It defines the following set of | |||
network level attributes:<list style="hanging"> | network-level attributes:</t> | |||
<t hangText=""vpn-id":">Refers to an identifier of VPN | <dl newline="false" spacing="normal"> | |||
service defined in <xref target="RFC9181"/>. This identifier is | <dt>"vpn-id":</dt> | |||
<dd>Refers to an identifier of VPN | ||||
service defined in <xref target="RFC9181" format="default"/>. This i | ||||
dentifier is | ||||
used to correlate the performance status with the network service | used to correlate the performance status with the network service | |||
configuration.</t> | configuration.</dd> | |||
<dt>"vpn-service-topology": </dt> | ||||
<t hangText=""vpn-service-topology": ">Indicates the | <dd>Indicates the | |||
type of the VPN service topology. This model supports | type of VPN service topology. This model supports | |||
"any-to-any", "Hub and Spoke" (where Hubs can exchange traffic), | "any-to-any", "hub-spoke" (where Hubs can exchange traffic), | |||
and "Hub and Spoke disjoint" (where Hubs cannot exchange traffic) | and "hub-spoke-disjoint" (where Hubs cannot exchange traffic), | |||
that are taken from <xref target="RFC9181"/>. These VPN service | which are taken from <xref target="RFC9181" format="default"/>. Thes | |||
e VPN service | ||||
topology types can be used to describe how VPN sites communicate | topology types can be used to describe how VPN sites communicate | |||
with each other.</t> | with each other.</dd> | |||
</list></t> | </dl> | |||
<t><figure anchor="ntree" | <figure anchor="ntree"> | |||
title="Network Level YANG Tree of the Hierarchies"> | <name>Network-Level YANG Tree</name> | |||
<artwork><![CDATA[module: ietf-network-vpn-pm | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-network-vpn-pm | ||||
augment /nw:networks/nw:network/nw:network-types: | augment /nw:networks/nw:network/nw:network-types: | |||
+--rw service! | +--rw service! | |||
+--rw service-type identityref | +--rw service-type identityref | |||
+--rw vpn-id? vpn-common:vpn-id | +--rw vpn-id? vpn-common:vpn-id | |||
+--rw vpn-service-topology? identityref | +--rw vpn-service-topology? identityref | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Node Level Performance Monitoring Augmentation"> | <name>Node-Level Performance Monitoring Augmentation</name> | |||
<t>The tree in <xref target="nodetree"/> is the node part of | <t>The YANG tree in <xref target="nodetree" format="default"/> is the no | |||
de part of the | ||||
"ietf-network-vpn-pm" tree.</t> | "ietf-network-vpn-pm" tree.</t> | |||
<t>For network performance monitoring, the module defines the | <t>For network performance monitoring, the module defines the | |||
following attributes:<list style="hanging"> | following attributes:</t> | |||
<t hangText=""node-type": ">Indicates the device type of | <dl newline="false" spacing="normal"> | |||
Provider Edge (PE), Provider (P) device, or Autonomous System | <dt>"node-type": </dt> | |||
Border Router (ASBR) as defined in <xref target="RFC4026"/> and | <dd>Indicates the device type of the PE, P device, or Autonomous Syste | |||
<xref target="RFC4364"/>, so that the performance metric between | m | |||
any two nodes each with specific node type can be reported.</t> | Border Router (ASBR) as defined in <xref target="RFC4026" format="de | |||
fault"/> and | ||||
<t hangText=""entry-summary": ">Lists a set of IPv4 | <xref target="RFC4364" format="default"/> so that the performance me | |||
tric between | ||||
any two nodes that each have a specific node type can be reported.</ | ||||
dd> | ||||
<dt>"entry-summary": </dt> | ||||
<dd>Lists a set of IPv4 | ||||
statistics, IPv6 statistics, and MAC statistics. The detailed | statistics, IPv6 statistics, and MAC statistics. The detailed | |||
statistics are specified separately.</t> | statistics are specified separately.</dd> | |||
</list></t> | </dl> | |||
<t>For VPN service topology, the module defines one attribute:</t> | <t>For VPN service topology, the module defines one attribute:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<t><list style="hanging"> | <dt>"role":</dt> | |||
<t hangText=""role":">Defines the role in a particular | <dd>Defines the role in a particular | |||
VPN service topology. The roles are taken from <xref | VPN service topology. The roles are taken from <xref target="RFC9181 | |||
target="RFC9181"/> (e.g., any-to-any-role, spoke-role, | " format="default"/> (e.g., "any-to-any-role", "spoke-role", and | |||
hub-role).</t> | "hub-role").</dd> | |||
</list></t> | </dl> | |||
<figure anchor="nodetree"> | ||||
<t><figure anchor="nodetree" | <name>Node-Level YANG Tree</name> | |||
title="Node Level YANG Tree of the Hierarchies"> | <sourcecode type="yangtree"><![CDATA[ | |||
<artwork><![CDATA[ augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
+--rw node-type? identityref | +--rw node-type? identityref | |||
+--ro entry-summary | +--ro entry-summary | |||
+--ro ipv4-num | +--ro ipv4-num | |||
| +--ro maximum-routes? uint32 | | +--ro maximum-routes? uint32 | |||
| +--ro total-active-routes? uint32 | | +--ro total-active-routes? uint32 | |||
+--ro ipv6-num | +--ro ipv6-num | |||
| +--ro maximum-routes? uint32 | | +--ro maximum-routes? uint32 | |||
| +--ro total-active-routes? uint32 | | +--ro total-active-routes? uint32 | |||
+--ro mac-num | +--ro mac-num | |||
+--ro maximum-mac-entries? uint32 | +--ro maximum-mac-entries? uint32 | |||
+--ro total-active-mac-entries? uint32 | +--ro total-active-mac-entries? uint32 | |||
augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
+--rw role? identityref | +--rw role? identityref | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t/> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Link and Termination Point Level Performance Monitoring Au | <name>Performance Monitoring Augmentation at Link and Termination Point | |||
gmentation"> | Level</name> | |||
<t>The tree in <xref target="ltree"/> is the link and termination | <t>The YANG tree in <xref target="ltree" format="default"/> is the link | |||
point (TP) part of ietf-network-vpn-pm tree.</t> | and termination | |||
point (TP) part of the "ietf-network-vpn-pm" tree.</t> | ||||
<t>The 'links' are classified into two types: topology link defined in | <t>The "links" are classified into two types: topology link (defined in | |||
<xref target="RFC8345"/> and abstract link of a VPN between PEs | <xref target="RFC8345" format="default"/>) and abstract link of a VPN be | |||
defined in this module.</t> | tween PEs (defined in this module).</t> | |||
<t>The performance data of a link is a collection of counters and | <t>The performance data of a link is a collection of counters and | |||
gauges that report the performance status. All these metrics are | gauges that report the performance status. All these metrics are | |||
defined as unidirectional metrics.</t> | defined as unidirectional metrics.</t> | |||
<figure anchor="ltree"> | ||||
<t><figure anchor="ltree" | <name>Link and Termination Point YANG Subtree </name> | |||
title="Link and Termination point Level YANG Tree of the hierarchies | <sourcecode type="yangtree"><![CDATA[ | |||
"> | augment /nw:networks/nw:network/nt:link: | |||
<artwork><![CDATA[ augment /nw:networks/nw:network/nt:link: | ||||
+--rw perf-mon | +--rw perf-mon | |||
+--rw low-percentile? percentile | +--rw low-percentile? percentile | |||
+--rw intermediate-percentile? percentile | +--rw intermediate-percentile? percentile | |||
+--rw high-percentile? percentile | +--rw high-percentile? percentile | |||
+--rw measurement-interval? uint32 | +--rw measurement-interval? uint32 | |||
+--ro pm* [pm-type] | +--ro pm* [pm-type] | |||
| +--ro pm-type identityref | | +--ro pm-type identityref | |||
| +--ro pm-attributes | | +--ro pm-attributes | |||
| +--ro start-time? yang:date-and-time | | +--ro start-time? yang:date-and-time | |||
| +--ro end-time? yang:date-and-time | | +--ro end-time? yang:date-and-time | |||
| +--ro pm-source? identityref | | +--ro pm-source? identityref | |||
| +--ro one-way-pm-statistics | | +--ro one-way-pm-statistics | |||
| | +--ro loss-statistics | | | +--ro loss-statistics | |||
| | | +--ro packet-loss-count? yang:counter64 | | | | +--ro packet-loss-count? yang:counter64 | |||
| | | +--ro loss-ratio? percentage | | | | +--ro loss-ratio? percentage | |||
| | +--ro delay-statistics | | | +--ro delay-statistics | |||
| | | +--ro unit-value? identityref | | | | +--ro unit-value? identityref | |||
| | | +--ro min-delay-value? yang:gauge64 | | | | +--ro min-delay-value? yang:gauge64 | |||
| | | +--ro max-delay-value? yang:gauge64 | | | | +--ro max-delay-value? yang:gauge64 | |||
| | | +--ro low-delay-percentile? yang:gauge64 | | | | +--ro low-delay-percentile? yang:gauge64 | |||
| | | +--ro intermediate-delay-percentile? yang:gauge64 | | | | +--ro intermediate-delay-percentile? yang:gauge64 | |||
| | | +--ro high-delay-percentile? yang:gauge64 | | | | +--ro high-delay-percentile? yang:gauge64 | |||
| | +--ro jitter-statistics | | | +--ro jitter-statistics | |||
| | +--ro unit-value? identityref | | | +--ro unit-value? identityref | |||
| | +--ro min-jitter-value? yang:gauge64 | | | +--ro min-jitter-value? yang:gauge64 | |||
| | +--ro max-jitter-value? yang:gauge64 | | | +--ro max-jitter-value? yang:gauge64 | |||
| | +--ro low-jitter-percentile? yang:gauge64 | | | +--ro low-jitter-percentile? yang:gauge64 | |||
| | +--ro intermediate-jitter-percentile? yang:gauge64 | | | +--ro intermediate-jitter-percentile? yang:gauge64 | |||
| | +--ro high-jitter-percentile? yang:gauge64 | | | +--ro high-jitter-percentile? yang:gauge64 | |||
| +--ro one-way-pm-statistics-per-class* [class-id] | | +--ro one-way-pm-statistics-per-class* [class-id] | |||
| +--ro class-id string | | +--ro class-id string | |||
| +--ro loss-statistics | | +--ro loss-statistics | |||
| | +--ro packet-loss-count? yang:counter64 | | | +--ro packet-loss-count? yang:counter64 | |||
| | +--ro loss-ratio? percentage | | | +--ro loss-ratio? percentage | |||
| +--ro delay-statistics | | +--ro delay-statistics | |||
| | +--ro unit-value? identityref | | | +--ro unit-value? identityref | |||
| | +--ro min-delay-value? yang:gauge64 | | | +--ro min-delay-value? yang:gauge64 | |||
| | +--ro max-delay-value? yang:gauge64 | | | +--ro max-delay-value? yang:gauge64 | |||
| | +--ro low-delay-percentile? yang:gauge64 | | | +--ro low-delay-percentile? yang:gauge64 | |||
| | +--ro intermediate-delay-percentile? yang:gauge64 | | | +--ro intermediate-delay-percentile? yang:gauge64 | |||
| | +--ro high-delay-percentile? yang:gauge64 | | | +--ro high-delay-percentile? yang:gauge64 | |||
| +--ro jitter-statistics | | +--ro jitter-statistics | |||
| +--ro unit-value? identityref | | +--ro unit-value? identityref | |||
| +--ro min-jitter-value? yang:gauge64 | | +--ro min-jitter-value? yang:gauge64 | |||
| +--ro max-jitter-value? yang:gauge64 | | +--ro max-jitter-value? yang:gauge64 | |||
| +--ro low-jitter-percentile? yang:gauge64 | | +--ro low-jitter-percentile? yang:gauge64 | |||
| +--ro intermediate-jitter-percentile? yang:gauge64 | | +--ro intermediate-jitter-percentile? yang:gauge64 | |||
| +--ro high-jitter-percentile? yang:gauge64 | | +--ro high-jitter-percentile? yang:gauge64 | |||
+--rw vpn-pm-type | +--rw vpn-pm-type | |||
+--rw inter-vpn-access-interface | +--rw inter-vpn-access-interface | |||
| +--rw inter-vpn-access-interface? empty | | +--rw inter-vpn-access-interface? empty | |||
+--rw vpn-tunnel! | +--rw vpn-tunnel! | |||
+--ro vpn-tunnel-type? identityref | +--ro vpn-tunnel-type? identityref | |||
augment /nw:networks/nw:network/nw:node/nt:termination-point: | augment /nw:networks/nw:network/nw:node/nt:termination-point: | |||
+--ro pm-statistics | +--ro pm-statistics | |||
+--ro last-updated? yang:date-and-time | +--ro last-updated? yang:date-and-time | |||
+--ro inbound-octets? yang:counter64 | +--ro inbound-octets? yang:counter64 | |||
+--ro inbound-unicast? yang:counter64 | +--ro inbound-unicast? yang:counter64 | |||
skipping to change at line 660 ¶ | skipping to change at line 589 ¶ | |||
+--ro inbound-multicast? yang:counter64 | +--ro inbound-multicast? yang:counter64 | |||
+--ro inbound-discards? yang:counter64 | +--ro inbound-discards? yang:counter64 | |||
+--ro inbound-errors? yang:counter64 | +--ro inbound-errors? yang:counter64 | |||
+--ro inbound-unknown-protocol? yang:counter64 | +--ro inbound-unknown-protocol? yang:counter64 | |||
+--ro outbound-octets? yang:counter64 | +--ro outbound-octets? yang:counter64 | |||
+--ro outbound-unicast? yang:counter64 | +--ro outbound-unicast? yang:counter64 | |||
+--ro outbound-broadcast? yang:counter64 | +--ro outbound-broadcast? yang:counter64 | |||
+--ro outbound-multicast? yang:counter64 | +--ro outbound-multicast? yang:counter64 | |||
+--ro outbound-discards? yang:counter64 | +--ro outbound-discards? yang:counter64 | |||
+--ro outbound-errors? yang:counter64 | +--ro outbound-errors? yang:counter64 | |||
]]></sourcecode> | ||||
]]></artwork> | </figure> | |||
</figure></t> | <t>For the data nodes of "link" depicted in <xref target="ltree" format= | |||
"default"/>, | ||||
<t>For the data nodes of 'link' depicted in <xref target="ltree"/>, | ||||
the YANG module defines the following minimal set of link-level | the YANG module defines the following minimal set of link-level | |||
performance attributes:<list style="hanging"> | performance attributes:</t> | |||
<t hangText="Percentile parameters: ">The module supports | <dl newline="false" spacing="normal"> | |||
reporting delay and jitter metric by percentile values. There are | ||||
<dt>Percentile parameters: </dt> | ||||
<dd>The module supports | ||||
reporting delay and jitter metrics with percentile values. There are | ||||
three percentile values for configuring various percentile | three percentile values for configuring various percentile | |||
reporting levels. By default, low percentile (10th percentile), | reporting levels. By default, low percentile (10th percentile), | |||
intermediate percentile (50th percentile), high percentile (90th | intermediate percentile (50th percentile), and high percentile (90th | |||
percentile) are used. Configuring a percentile to 0.000 indicates | percentile) are used. Configuring a percentile to 0.000 indicates | |||
the client is not interested in receiving particular percentile. | the client is not interested in receiving a particular percentile. | |||
If all percentile nodes are configured to 0.000, this represents | If all percentile nodes are configured to 0.000, it represents | |||
that no percentile related nodes will be reported for a given | that no percentile-related nodes will be reported for a given | |||
performance metric (e.g., one-way delay, one-way delay variation) | performance metric (e.g., one-way delay and one-way delay variation) | |||
and only peak/min values will be reported. For example, a client | and only peak/min values will be reported. For example, a client | |||
can inform the server that it is interested in receiving only high | can inform the server that it is interested in receiving only high | |||
percentiles. Then for a given link, at a given "start-time", | percentiles. Then for a given link at a given "start-time", | |||
"end-time" and “measurement-interval", the | "end-time", and "measurement-interval", the | |||
'high-delay-percentile' and 'high-jitter-percentile' will be | "high-delay-percentile" and "high-jitter-percentile" will be | |||
reported. An example to illustrate the use of percentiles is | reported. An example to illustrate the use of percentiles is | |||
provided in <xref target="perc"/>.</t> | provided in <xref target="perc" format="default"/>.</dd> | |||
<dt>Measurement interval ("measurement-interval"): </dt> | ||||
<t | <dd>Specifies | |||
hangText="Measurement interval ("measurement-interval"): " | the performance measurement interval, in seconds.</dd> | |||
>Specifies | <dt>Start time ("start-time"): </dt> | |||
the performance measurement interval, in seconds.</t> | <dd>Indicates the | |||
start time of the performance measurement for link statistics.</dd> | ||||
<t hangText="Start time ("start-time“): ">Indicates the | <dt>End time ("end-time"): </dt> | |||
start time of the performance measurement for link statistics.</t> | <dd>Indicates the end | |||
time of the performance measurement for link statistics.</dd> | ||||
<t hangText="End time ("end-time“): ">Indicates the end | <dt>PM source ("pm-source"): </dt> | |||
time of the performance measurement for link statistics.</t> | <dd>Indicates the | |||
<t hangText="PM source ("pm-source"): ">Indicates the | ||||
performance monitoring source. The data for the topology link can | performance monitoring source. The data for the topology link can | |||
be based, e.g., on BGP-LS <xref target="RFC8571"/>. The statistics | be based, e.g., on BGP - Link State (BGP-LS) <xref target="RFC8571" format="default"/>. The statistics | |||
of the VPN abstract links can be collected based upon VPN OAM | of the VPN abstract links can be collected based upon VPN OAM | |||
mechanisms, e.g., OAM mechanisms referenced in <xref | mechanisms, e.g., OAM mechanisms referenced in <xref target="RFC9182 | |||
target="RFC9182"/>, or Ethernet service OAM <xref | " format="default"/> or Ethernet service OAM <xref target="ITU-T-Y-1731" format= | |||
target="ITU-T-Y-1731"/> referenced in <xref target="RFC9291"/>. | "default"/> referenced in <xref target="RFC9291" format="default"/>. | |||
Alternatively, the data can be based upon the underlay technology | Alternatively, the data can be based upon the underlay technology | |||
OAM mechanisms, for example, Generic Routing Encapsulation (GRE) | OAM mechanisms, e.g., Generic Routing Encapsulation (GRE) | |||
tunnel OAM.</t> | tunnel OAM.</dd> | |||
<dt>Loss statistics: </dt> | ||||
<t hangText="Loss statistics: ">A set of one-way loss statistics | <dd>A set of one-way loss statistics | |||
attributes that are used to measure end to end loss between VPN | attributes that are used to measure end-to-end loss between VPN | |||
sites or between any two network nodes. The exact loss value or | sites or between any two network nodes. The exact loss value or | |||
the loss percentage can be reported.</t> | the loss percentage can be reported.</dd> | |||
<dt>Delay statistics: </dt> | ||||
<t hangText="Delay statistics: ">A set of one-way delay statistics | <dd>A set of one-way delay statistics | |||
attributes that are used to measure end to end latency between VPN | attributes that are used to measure end-to-end latency between VPN | |||
sites or between any two network nodes. The peak/min values or | sites or between any two network nodes. The peak/min values or | |||
percentile values can be reported.</t> | percentile values can be reported.</dd> | |||
<dt>Jitter statistics: </dt> | ||||
<t hangText="Jitter statistics: ">A set of one-way IP Packet Delay | <dd>A set of one-way IP Packet Delay | |||
Variation <xref target="RFC3393"/> statistics attributes that are | Variation <xref target="RFC3393" format="default"/> statistics attri | |||
used to measure end to end jitter between VPN sites or between any | butes that are | |||
used to measure end-to-end jitter between VPN sites or between any | ||||
two network nodes. The peak/min values or percentile values can be | two network nodes. The peak/min values or percentile values can be | |||
reported.</t> | reported.</dd> | |||
<dt>PM statistics per class: </dt> | ||||
<t | <dd>"one-way-pm-statistics-per-class" | |||
hangText="PM statistics per class: ">"one-way-pm-statistics-per-clas | ||||
s" | ||||
lists performance measurement statistics for the topology link or | lists performance measurement statistics for the topology link or | |||
the abstract link between VPN PEs with given "class-id" names. The | the abstract link between VPN PEs with given "class-id" names. The | |||
list is defined separately from "one-way-pm-statistics", which is | list is defined separately from "one-way-pm-statistics", which is | |||
used to collect generic metrics for unspecified "class-id" | used to collect generic metrics for unspecified "class-id" | |||
names.</t> | names.</dd> | |||
<dt>VPN PM type ("vpn-pm-type"): </dt> | ||||
<t hangText="VPN PM type ("vpn-pm-type"): ">Indicates | <dd>Indicates | |||
the VPN performance type, which can be | the VPN performance type, which can be | |||
“inter-vpn-access-interface” PM or | "inter-vpn-access-interface" PM or | |||
“vpn-tunnel” PM. These two methods are common VPN | "vpn-tunnel" PM. These two methods are common VPN | |||
measurement methods. The “inter-VPN-access-interface” | measurement methods. The "inter-VPN-access-interface" | |||
PM is to monitor the performance of logical point-to-point VPN | PM is used to monitor the performance of logical point-to-point VPN | |||
connections between a source and a destination VPN access | connections between source and destination VPN access | |||
interfaces. And the “vpn-tunnel” PM is to monitor the | interfaces. And the "vpn-tunnel" PM is used to monitor the | |||
performance of VPN tunnels. The | performance of VPN tunnels. The | |||
“inter-VPN-access-interface” PM includes PE-PE | "inter-VPN-access-interface" PM includes PE-PE | |||
monitoring. Therefore, usually only one of the two methods is | monitoring. Therefore, usually only one of the two methods is | |||
used. The “inter-VPN-access-interface” PM is defined | used. The "inter-VPN-access-interface" PM is defined | |||
as an empty leaf, which is not bound to a specific VPN access | as an empty leaf, which is not bound to a specific VPN access | |||
interface. The source or destination VPN access interface of the | interface. The source or destination VPN access interface of the | |||
measurement can be augmented as needed.</t> | measurement can be augmented as needed.</dd> | |||
<dt>VPN tunnel type ("vpn-tunnel-type"): </dt> | ||||
<t | <dd>Indicates | |||
hangText="VPN tunnel type ("vpn-tunnel-type"): ">Indicates | ||||
the abstract link protocol-type of a VPN, such as GRE or IP-in-IP. | the abstract link protocol-type of a VPN, such as GRE or IP-in-IP. | |||
The leaf refers to an identifier of the "underlay-transport" | The leaf refers to an identifier of the "underlay-transport" | |||
defined in <xref target="RFC9181"/>, which describes the transport | defined in <xref target="RFC9181" format="default"/>, which describe | |||
technology to carry the traffic of the VPN service. In the case of | s the transport | |||
technology that carries the traffic of the VPN service. In the case | ||||
of | ||||
multiple types of tunnels between a single pair of VPN nodes, a | multiple types of tunnels between a single pair of VPN nodes, a | |||
separate link for each type of tunnel can be created.</t> | separate link for each type of tunnel can be created.</dd> | |||
</list></t> | </dl> | |||
<t>For the data nodes of "termination-point" depicted in <xref target="l | ||||
<t>For the data nodes of 'termination-point' depicted in <xref | tree" format="default"/>, the module defines the following minimal set of | |||
target="ltree"/>, the module defines the following minimal set of | statistics: </t> | |||
statistics: <list style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t | <dt>Last updated time ("last-updated"): </dt> | |||
hangText="Last updated time ("last-updated“): ">Indicates | <dd>Indicates | |||
the date and time when the counters were last updated.</t> | the date and time when the counters were last updated.</dd> | |||
<dt>Inbound statistics: </dt> | ||||
<t hangText="Inbound statistics: ">A set of inbound statistics | <dd>A set of inbound statistics | |||
attributes that are used to measure the inbound statistics of the | attributes that are used to measure the inbound statistics of the | |||
termination point, such as received packets, received packets with | termination point, such as received packets, received packets with | |||
errors, etc.</t> | errors, etc.</dd> | |||
<dt>Outbound statistics: </dt> | ||||
<t hangText="Outbound statistics: ">A set of outbound statistics | <dd>A set of outbound statistics | |||
attributes that are used to measure the outbound statistics of the | attributes that are used to measure the outbound statistics of the | |||
termination point, such as sent packets, packets that could not be | termination point, such as sent packets, packets that could not be | |||
sent due to errors, etc.</t> | sent due to errors, etc.</dd> | |||
<dt>VPN network access ("vpn-network-access"): </dt> | ||||
<t | <dd>Lists | |||
hangText="VPN network access ("vpn-network-access"): ">Lis | counters of the VPN network access defined in the L3NM <xref target= | |||
ts | "RFC9182" format="default"/> or the L2NM <xref target="RFC9291" format="default" | |||
counters of the VPN network access defined in the L3NM <xref | />. When | |||
target="RFC9182"/> or the L2NM <xref target="RFC9291"/>. When | ||||
multiple VPN network accesses are created using the same physical | multiple VPN network accesses are created using the same physical | |||
port, finer-grained metrics can be monitored. If a TP is | port, finer-grained metrics can be monitored. If a TP is | |||
associated with only a single VPN, this list is not required.</t> | associated with only a single VPN, this list is not required.</dd> | |||
</list></t> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default" anchor="YANG_Module"> | ||||
<name>Network and VPN Service Performance Monitoring YANG Module</name> | ||||
<section title="Network and VPN Service Performance Monitoring YANG Module"> | <t>The "ietf-network-vpn-pm" YANG module uses types defined in <xref targe | |||
<t>The "ietf-network-vpn-pm" module uses types defined in <xref | t="RFC6991" format="default"/>, <xref target="RFC8345" format="default"/>, <xref | |||
target="RFC8345"/>, <xref target="RFC6991"/>, <xref target="RFC8532"/>, | target="RFC8532" format="default"/>, | |||
and <xref target="RFC9181"/>.</t> | and <xref target="RFC9181" format="default"/>. | |||
</t> | ||||
<figure> | <sourcecode name="ietf-network-vpn-pm@2023-03-20.yang" type="yang" markers="true | |||
<artwork><![CDATA[<CODE BEGINS> file "ietf-network-vpn-pm@2022-11-11.yan | "><![CDATA[ | |||
g" | ||||
module ietf-network-vpn-pm { | module ietf-network-vpn-pm { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"; | namespace "urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"; | |||
prefix nvp; | prefix nvp; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
reference | reference | |||
"RFC 6991: Common YANG Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-vpn-common { | import ietf-vpn-common { | |||
prefix vpn-common; | prefix vpn-common; | |||
reference | reference | |||
"RFC 9181: A Common YANG Data Model for Layer 2 and | "RFC 9181: A Common YANG Data Model for Layer 2 and | |||
Layer 3 VPNs."; | Layer 3 VPNs"; | |||
} | } | |||
import ietf-network { | import ietf-network { | |||
prefix nw; | prefix nw; | |||
reference | reference | |||
"RFC 8345: A YANG Data Model for Network | "RFC 8345: A YANG Data Model for Network | |||
Topologies, Section 6.1"; | Topologies, Section 6.1"; | |||
} | } | |||
import ietf-network-topology { | import ietf-network-topology { | |||
prefix nt; | prefix nt; | |||
reference | reference | |||
"RFC 8345: A YANG Data Model for Network | "RFC 8345: A YANG Data Model for Network | |||
Topologies, Section 6.2"; | Topologies, Section 6.2"; | |||
} | } | |||
import ietf-lime-time-types { | import ietf-lime-time-types { | |||
prefix lime; | prefix lime; | |||
reference | reference | |||
"RFC 8532: Generic YANG Data Model for the Management of | "RFC 8532: Generic YANG Data Model for the Management of | |||
Operations, Administration, and Maintenance (OAM) Protocols | Operations, Administration, and Maintenance (OAM) | |||
That Use Connectionless Communications"; | Protocols That Use Connectionless Communications"; | |||
} | } | |||
organization | organization | |||
"IETF OPSAWG (Operations and Management Area Working Group)"; | "IETF OPSAWG (Operations and Management Area Working Group)"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
Editor: Bo Wu | Editor: Bo Wu | |||
<lana.wubo@huawei.com> | <lana.wubo@huawei.com> | |||
skipping to change at line 835 ¶ | skipping to change at line 758 ¶ | |||
} | } | |||
organization | organization | |||
"IETF OPSAWG (Operations and Management Area Working Group)"; | "IETF OPSAWG (Operations and Management Area Working Group)"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
Editor: Bo Wu | Editor: Bo Wu | |||
<lana.wubo@huawei.com> | <lana.wubo@huawei.com> | |||
Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
<mohamed.boucadair@orange.com> | <mohamed.boucadair@orange.com> | |||
Editor: Qin Wu | Editor: Qin Wu | |||
<bill.wu@huawei.com> | <bill.wu@huawei.com> | |||
Author: Oscar Gonzalez de Dios | Author: Oscar Gonzalez de Dios | |||
<oscar.gonzalezdedios@telefonica.com> | <oscar.gonzalezdedios@telefonica.com> | |||
Author: Bin Wen | Author: Bin Wen | |||
<bin_wen@comcast.com>"; | <bin_wen@comcast.com>"; | |||
description | description | |||
"This module defines a model for Network and VPN Service | "This YANG module defines a model for network and VPN service | |||
Performance monitoring. | performance monitoring (PM). | |||
Copyright (c) 2022 IETF Trust and the persons identified as | Copyright (c) 2023 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | 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 the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 9375 | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfc9375); see the RFC itself | |||
for full legal notices."; | for full legal notices."; | |||
// RFC Ed.: update the date below with the date of RFC | revision 2023-03-20 { | |||
// publication and remove this note. | ||||
// RFC Ed.: replace XXXX with actual RFC number and remove | ||||
// this note. | ||||
revision 2022-11-11 { | ||||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Model for Network and VPN Service | "RFC 9375: A YANG Data Model for Network and VPN Service | |||
Performance Monitoring"; | Performance Monitoring"; | |||
} | } | |||
identity node-type { | identity node-type { | |||
description | description | |||
"Base identity for node type"; | "Base identity for node type"; | |||
} | } | |||
identity pe { | identity pe { | |||
base node-type; | base node-type; | |||
description | description | |||
"Provider Edge (PE) node type. A PE is the device | "Provider Edge (PE) node type. A PE is the device or set | |||
or set of devices at the edge of the provider network with the | of devices at the edge of the provider network with the | |||
functionality that is needed to interface with the customer."; | functionality that is needed to interface with the | |||
customer."; | ||||
} | } | |||
identity p { | identity p { | |||
base node-type; | base node-type; | |||
description | description | |||
"Provider router node type. That is, a router | "Provider router node type. That is, a router | |||
in the core network that does not have interfaces | in the core network that does not have interfaces | |||
directly toward a customer."; | directly toward a customer."; | |||
} | } | |||
identity asbr { | identity asbr { | |||
base node-type; | base node-type; | |||
description | description | |||
"Autonomous System Border Router (ASBR) node type."; | "Autonomous System Border Router (ASBR) node type."; | |||
reference | reference | |||
"RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)"; | "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)"; | |||
skipping to change at line 912 ¶ | skipping to change at line 835 ¶ | |||
identity pm-source-type { | identity pm-source-type { | |||
description | description | |||
"Base identity from which specific performance monitoring | "Base identity from which specific performance monitoring | |||
mechanism types are derived."; | mechanism types are derived."; | |||
} | } | |||
identity pm-source-bgpls { | identity pm-source-bgpls { | |||
base pm-source-type; | base pm-source-type; | |||
description | description | |||
"Indicates BGP-LS as the performance monitoring metric source"; | "Indicates BGP-LS as the performance monitoring metric | |||
source."; | ||||
reference | reference | |||
"RFC 8571: BGP - Link State (BGP-LS) Advertisement of | "RFC 8571: BGP - Link State (BGP-LS) Advertisement of | |||
IGP Traffic Engineering Performance Metric Extensions"; | IGP Traffic Engineering Performance Metric | |||
Extensions"; | ||||
} | } | |||
identity pm-source-owamp { | identity pm-source-owamp { | |||
base pm-source-type; | base pm-source-type; | |||
description | description | |||
"Indicates One-Way Active Measurement Protocol(OWAMP) | "Indicates the One-Way Active Measurement Protocol (OWAMP) | |||
as the performance monitoring metric source."; | as the performance monitoring metric source."; | |||
reference | reference | |||
"RFC 4656: A One-Way Active Measurement Protocol (OWAMP)"; | "RFC 4656: A One-way Active Measurement Protocol (OWAMP)"; | |||
} | } | |||
identity pm-source-twamp { | identity pm-source-twamp { | |||
base pm-source-type; | base pm-source-type; | |||
description | description | |||
"Indicates Two-Way Active Measurement Protocol(TWAMP) | "Indicates the Two-Way Active Measurement Protocol (TWAMP) | |||
as the performance monitoring metric source."; | as the performance monitoring metric source."; | |||
reference | reference | |||
"RFC 5357: A Two-Way Active Measurement Protocol (TWAMP)"; | "RFC 5357: A Two-Way Active Measurement Protocol (TWAMP)"; | |||
} | } | |||
identity pm-source-stamp { | identity pm-source-stamp { | |||
base pm-source-type; | base pm-source-type; | |||
description | description | |||
"Indicates Simple Two-way Active Measurement Protocol(STAMP) | "Indicates the Simple Two-way Active Measurement Protocol | |||
as the performance monitoring metric source."; | (STAMP) as the performance monitoring metric source."; | |||
reference | reference | |||
"RFC 8762: Simple Two-Way Active Measurement Protocol"; | "RFC 8762: Simple Two-Way Active Measurement Protocol"; | |||
} | } | |||
identity pm-source-y-1731 { | identity pm-source-y-1731 { | |||
base pm-source-type; | base pm-source-type; | |||
description | description | |||
"Indicates Ethernet OAM Y.1731 as the performance monitoring | "Indicates Ethernet OAM Y.1731 as the performance monitoring | |||
metric source."; | metric source."; | |||
reference | reference | |||
"ITU-T Y.1731: Operations, administration and | "ITU-T Y.1731: Operations, administration and | |||
maintenance (OAM) functions and mechanisms | maintenance (OAM) functions and mechanisms | |||
for Ethernet-based networks"; | for Ethernet-based networks"; | |||
} | } | |||
identity pm-source-ioam { | identity pm-source-ioam { | |||
base pm-source-type; | base pm-source-type; | |||
description | description | |||
"Indicates In Situ Operations, Administration, and Maintenance | "Indicates In Situ Operations, Administration, and Maintenance | |||
(IOAM) as the performance monitoring metric source."; | (IOAM) as the performance monitoring metric source."; | |||
reference | reference | |||
"RFC 9197: Data Fields for In Situ Operations, Administration, | "RFC 9197: Data Fields for In Situ Operations, Administration, | |||
and Maintenance (IOAM)"; | and Maintenance (IOAM)"; | |||
} | } | |||
identity pm-type { | identity pm-type { | |||
description | description | |||
"Base identity for PM type."; | "Base identity for the PM type."; | |||
} | } | |||
identity pm-type-network-link { | identity pm-type-network-link { | |||
base pm-type; | base pm-type; | |||
description | description | |||
"Indicates that the PM type is for the link in | "Indicates that the PM type is for the link in | |||
the network topology."; | the network topology."; | |||
} | } | |||
identity pm-type-vpn-inter-access { | identity pm-type-vpn-inter-access { | |||
base pm-type; | base pm-type; | |||
description | description | |||
"Indicates that the PM type is for logical point-to-point VPN | "Indicates that the PM type is for logical point-to-point VPN | |||
connections between a source and a destination VPN access | connections between source and destination VPN access | |||
interfaces."; | interfaces."; | |||
} | } | |||
identity pm-type-vpn-tunnel { | identity pm-type-vpn-tunnel { | |||
base pm-type; | base pm-type; | |||
description | description | |||
"Indicates that the PM type is for VPN tunnels."; | "Indicates that the PM type is for VPN tunnels."; | |||
} | } | |||
typedef percentage { | typedef percentage { | |||
skipping to change at line 1007 ¶ | skipping to change at line 932 ¶ | |||
description | description | |||
"Percentage to 5 decimal places."; | "Percentage to 5 decimal places."; | |||
} | } | |||
typedef percentile { | typedef percentile { | |||
type decimal64 { | type decimal64 { | |||
fraction-digits 3; | fraction-digits 3; | |||
range "0..100"; | range "0..100"; | |||
} | } | |||
description | description | |||
"The percentile is a value between 0 and 100 | "The percentile is a value between 0 and 100 to 3 | |||
to 3 decimal places, e.g. 10.000, 99.900 ,99.990, etc. | decimal places, e.g., 10.000, 99.900, and 99.990. | |||
For example, for a given one-way delay measurement, | For example, for a given one-way delay measurement, | |||
if the percentile is set to 95.000 and the 95th percentile | if the percentile is set to 95.000 and the 95th percentile | |||
one-way delay is 2 milliseconds, then the 95 percent of | one-way delay is 2 milliseconds, then the 95 percent of | |||
the sample value is less than or equal to 2 milliseconds."; | the sample value is less than or equal to 2 milliseconds."; | |||
} | } | |||
grouping entry-summary { | grouping entry-summary { | |||
description | description | |||
"Entry summary grouping used for network topology | "Entry summary grouping used for network topology | |||
augmentation."; | augmentation."; | |||
skipping to change at line 1076 ¶ | skipping to change at line 1001 ¶ | |||
for the VPN or network."; | for the VPN or network."; | |||
} | } | |||
description | description | |||
"MAC statistics."; | "MAC statistics."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping link-loss-statistics { | grouping link-loss-statistics { | |||
description | description | |||
"Grouping for per link error statistics."; | "Grouping for per-link error statistics."; | |||
container loss-statistics { | container loss-statistics { | |||
description | description | |||
"One-way link loss summarized information."; | "One-way link loss summarized information."; | |||
reference | reference | |||
"RFC 4656: A One-way Active Measurement Protocol (OWAMP) | "RFC 4656: A One-way Active Measurement Protocol (OWAMP) | |||
ITU-T Y.1731: Operations, administration and | ITU-T Y.1731: Operations, administration and | |||
maintenance (OAM) functions and mechanisms | maintenance (OAM) functions and mechanisms | |||
for Ethernet-based networks"; | for Ethernet-based networks"; | |||
leaf packet-loss-count { | leaf packet-loss-count { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Total number of lost packets."; | "Total number of lost packets."; | |||
} | } | |||
leaf loss-ratio { | leaf loss-ratio { | |||
type percentage; | type percentage; | |||
description | description | |||
"Loss ratio of the packets. Express as percentage | "Loss ratio of the packets. Expressed as percentage | |||
of packets lost with respect to packets sent."; | of packets lost with respect to packets sent."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping link-delay-statistics { | grouping link-delay-statistics { | |||
description | description | |||
"Grouping for per link delay statistics."; | "Grouping for per-link delay statistics."; | |||
container delay-statistics { | container delay-statistics { | |||
description | description | |||
"One-way link delay summarized information."; | "One-way link delay summarized information."; | |||
reference | reference | |||
"RFC 4656: A One-way Active Measurement Protocol (OWAMP) | "RFC 4656: A One-way Active Measurement Protocol (OWAMP) | |||
ITU-T Y.1731: Operations, administration and | ITU-T Y.1731: Operations, administration and | |||
maintenance (OAM) functions and mechanisms | maintenance (OAM) functions and mechanisms | |||
for Ethernet-based networks"; | for Ethernet-based networks"; | |||
leaf unit-value { | leaf unit-value { | |||
type identityref { | type identityref { | |||
base lime:time-unit-type; | base lime:time-unit-type; | |||
} | } | |||
default "lime:milliseconds"; | default "lime:milliseconds"; | |||
description | description | |||
"Time units, where the options are hours, minutes, seconds, | "Time units, where the options are hours, minutes, seconds, | |||
milliseconds, microseconds, and nanoseconds."; | milliseconds, microseconds, and nanoseconds."; | |||
} | } | |||
leaf min-delay-value { | leaf min-delay-value { | |||
skipping to change at line 1152 ¶ | skipping to change at line 1077 ¶ | |||
type yang:gauge64; | type yang:gauge64; | |||
description | description | |||
"High percentile of observed one-way delay with | "High percentile of observed one-way delay with | |||
specific measurement method."; | specific measurement method."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping link-jitter-statistics { | grouping link-jitter-statistics { | |||
description | description | |||
"Grouping for per link jitter statistics."; | "Grouping for per-link jitter statistics."; | |||
container jitter-statistics { | container jitter-statistics { | |||
description | description | |||
"One-way link jitter summarized information."; | "One-way link jitter summarized information."; | |||
reference | reference | |||
"RFC 3393: IP Packet Delay Variation Metric | "RFC 3393: IP Packet Delay Variation Metric | |||
for IP Performance Metrics (IPPM) | for IP Performance Metrics (IPPM) | |||
RFC 4656: A One-way Active Measurement Protocol (OWAMP) | RFC 4656: A One-way Active Measurement Protocol (OWAMP) | |||
ITU-T Y.1731: Operations, administration and | ITU-T Y.1731: Operations, administration and | |||
maintenance (OAM) functions and mechanisms | maintenance (OAM) functions and mechanisms | |||
for Ethernet-based networks"; | for Ethernet-based networks"; | |||
leaf unit-value { | leaf unit-value { | |||
type identityref { | type identityref { | |||
base lime:time-unit-type; | base lime:time-unit-type; | |||
} | } | |||
default "lime:milliseconds"; | default "lime:milliseconds"; | |||
description | description | |||
"Time units, where the options are hours, minutes, seconds, | "Time units, where the options are hours, minutes, seconds, | |||
milliseconds, microseconds, and nanoseconds."; | milliseconds, microseconds, and nanoseconds."; | |||
} | } | |||
leaf min-jitter-value { | leaf min-jitter-value { | |||
skipping to change at line 1232 ¶ | skipping to change at line 1157 ¶ | |||
"The total number of inbound broadcast packets."; | "The total number of inbound broadcast packets."; | |||
} | } | |||
leaf inbound-multicast { | leaf inbound-multicast { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of inbound multicast packets."; | "The total number of inbound multicast packets."; | |||
} | } | |||
leaf inbound-discards { | leaf inbound-discards { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of inbound packets that were chosen to be | "The number of inbound packets that were discarded | |||
discarded even though no errors had been detected. | even though no errors had been detected. Possible | |||
Possible reasons for discarding such a packet could | reasons for discarding such a packet could be to | |||
be to free up buffer space, not enough buffer for | free up buffer space, not enough buffer for too | |||
too much data, etc."; | much data, etc."; | |||
} | } | |||
leaf inbound-errors { | leaf inbound-errors { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of inbound packets that contained errors."; | "The number of inbound packets that contained errors."; | |||
} | } | |||
leaf inbound-unknown-protocol { | leaf inbound-unknown-protocol { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of packets received via the interface | "The number of packets received via the interface | |||
which were discarded because of an unknown or | that were discarded because of an unknown or | |||
unsupported protocol."; | unsupported protocol."; | |||
} | } | |||
leaf outbound-octets { | leaf outbound-octets { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of octets transmitted out of the | "The total number of octets transmitted out of the | |||
interface, including framing characters."; | interface, including framing characters."; | |||
} | } | |||
leaf outbound-unicast { | leaf outbound-unicast { | |||
type yang:counter64; | type yang:counter64; | |||
skipping to change at line 1274 ¶ | skipping to change at line 1199 ¶ | |||
"The total number of outbound broadcast packets."; | "The total number of outbound broadcast packets."; | |||
} | } | |||
leaf outbound-multicast { | leaf outbound-multicast { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of outbound multicast packets."; | "The total number of outbound multicast packets."; | |||
} | } | |||
leaf outbound-discards { | leaf outbound-discards { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of outbound packets which were chosen | "The number of outbound packets that were discarded | |||
to be discarded even though no errors had been | even though no errors had been detected to | |||
detected to prevent their being transmitted. | prevent their transmission. Possible reasons | |||
Possible reasons for discarding such a packet could | for discarding such a packet could be to free | |||
be to free up buffer space, not enough buffer for | up buffer space, not enough buffer for too | |||
too much data, etc."; | much data, etc."; | |||
} | } | |||
leaf outbound-errors { | leaf outbound-errors { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of outbound packets that contained | "The number of outbound packets that contained errors."; | |||
errors."; | ||||
} | } | |||
description | description | |||
"Grouping for interface service telemetry."; | "Grouping for interface service telemetry."; | |||
} | } | |||
augment "/nw:networks/nw:network/nw:network-types" { | augment "/nw:networks/nw:network/nw:network-types" { | |||
description | description | |||
"Defines the service topologies types."; | "Defines the service topologies types."; | |||
container service { | container service { | |||
presence | presence "Presence of the container indicates performance | |||
"Presence of the container indicates performance monitoring | monitoring of the VPN service, and absence of | |||
of the VPN service, and absence of the container indicates | the container indicates performance monitoring | |||
performance monitoring of the network itself."; | of the network itself."; | |||
description | description | |||
"Container for VPN service."; | "Container for VPN service."; | |||
leaf service-type { | leaf service-type { | |||
type identityref { | type identityref { | |||
base vpn-common:service-type; | base vpn-common:service-type; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"This indicates the network service type, | "This indicates the network service type, | |||
e.g., L3VPN, VPLS, etc."; | e.g., L3VPN and VPLS."; | |||
} | } | |||
leaf vpn-id { | leaf vpn-id { | |||
type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
description | description | |||
"VPN identifier."; | "VPN identifier."; | |||
} | } | |||
leaf vpn-service-topology { | leaf vpn-service-topology { | |||
type identityref { | type identityref { | |||
base vpn-common:vpn-topology; | base vpn-common:vpn-topology; | |||
} | } | |||
description | description | |||
"VPN service topology, e.g., hub-spoke, any-to-any, | "VPN service topology, e.g., hub-spoke, any-to-any, | |||
hub-spoke-disjoint."; | and hub-spoke-disjoint."; | |||
} | } | |||
} | } | |||
} | } | |||
augment "/nw:networks/nw:network/nw:node" { | augment "/nw:networks/nw:network/nw:node" { | |||
description | description | |||
"Augments the network node with other general attributes."; | "Augments the network node with other general attributes."; | |||
leaf node-type { | leaf node-type { | |||
type identityref { | type identityref { | |||
base node-type; | base node-type; | |||
} | } | |||
description | description | |||
"Node type, e.g., PE, P, ASBR."; | "Node type, e.g., PE, P, and ASBR."; | |||
} | } | |||
uses entry-summary; | uses entry-summary; | |||
} | } | |||
augment "/nw:networks/nw:network/nw:node" { | augment "/nw:networks/nw:network/nw:node" { | |||
when '../nw:network-types/nvp:service' { | when '../nw:network-types/nvp:service' { | |||
description | description | |||
"Augments for VPN service PM."; | "Augments for VPN service PM."; | |||
} | } | |||
description | description | |||
skipping to change at line 1367 ¶ | skipping to change at line 1291 ¶ | |||
description | description | |||
"Augments the network topology link with performance | "Augments the network topology link with performance | |||
monitoring attributes."; | monitoring attributes."; | |||
container perf-mon { | container perf-mon { | |||
description | description | |||
"Container for PM attributes."; | "Container for PM attributes."; | |||
leaf low-percentile { | leaf low-percentile { | |||
type percentile; | type percentile; | |||
default "10.000"; | default "10.000"; | |||
description | description | |||
"Low percentile to report. Setting low-percentile | "Low percentile to report. Setting low-percentile | |||
to 0.000 indicates the client is not interested | to 0.000 indicates the client is not interested | |||
in receiving low percentile."; | in receiving low percentile."; | |||
} | } | |||
leaf intermediate-percentile { | leaf intermediate-percentile { | |||
type percentile; | type percentile; | |||
default "50.000"; | default "50.000"; | |||
description | description | |||
"Intermediate percentile to report. Setting | "Intermediate percentile to report. Setting | |||
intermediate-percentile to 0.000 indicates the client | intermediate-percentile to 0.000 indicates the client | |||
is not interested in receiving intermediate percentile."; | is not interested in receiving intermediate percentile."; | |||
} | } | |||
leaf high-percentile { | leaf high-percentile { | |||
type percentile; | type percentile; | |||
default "95.000"; | default "95.000"; | |||
description | description | |||
"High percentile to report. Setting high-percentile | "High percentile to report. Setting high-percentile | |||
to 0.000 indicates the client is not interested in | to 0.000 indicates the client is not interested in | |||
receiving high percentile."; | receiving high percentile."; | |||
} | } | |||
leaf measurement-interval { | leaf measurement-interval { | |||
type uint32 { | type uint32 { | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
default "60"; | default "60"; | |||
description | description | |||
"Indicates the time interval to perform PM | "Indicates the time interval to perform PM | |||
measurement over."; | measurement over."; | |||
} | } | |||
list pm { | list pm { | |||
key "pm-type"; | key "pm-type"; | |||
config false; | config false; | |||
description | description | |||
"The list of PM based on PM type"; | "The list of PM based on PM type."; | |||
leaf pm-type { | leaf pm-type { | |||
type identityref { | type identityref { | |||
base pm-type; | base pm-type; | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"The PM type of the measured PM attributes"; | "The PM type of the measured PM attributes."; | |||
} | } | |||
container pm-attributes { | container pm-attributes { | |||
description | description | |||
"Container for PM attributes."; | "Container for PM attributes."; | |||
leaf start-time { | leaf start-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
config false; | config false; | |||
description | description | |||
"The date and time the measurement last started."; | "The date and time the measurement last started."; | |||
} | } | |||
skipping to change at line 1449 ¶ | skipping to change at line 1373 ¶ | |||
uses link-jitter-statistics; | uses link-jitter-statistics; | |||
} | } | |||
list one-way-pm-statistics-per-class { | list one-way-pm-statistics-per-class { | |||
key "class-id"; | key "class-id"; | |||
config false; | config false; | |||
description | description | |||
"The list of PM data based on class of service."; | "The list of PM data based on class of service."; | |||
leaf class-id { | leaf class-id { | |||
type string; | type string; | |||
description | description | |||
"The class-id is used to identify the | "The class-id is used to identify the class | |||
class of service. This identifier is internal | of service. This identifier is internal | |||
to the administration."; | to the administration."; | |||
} | } | |||
uses link-loss-statistics; | uses link-loss-statistics; | |||
uses link-delay-statistics; | uses link-delay-statistics; | |||
uses link-jitter-statistics; | uses link-jitter-statistics; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at line 1476 ¶ | skipping to change at line 1400 ¶ | |||
} | } | |||
description | description | |||
"Augments the network topology link with VPN service | "Augments the network topology link with VPN service | |||
performance monitoring attributes."; | performance monitoring attributes."; | |||
container vpn-pm-type { | container vpn-pm-type { | |||
description | description | |||
"The VPN PM type of this logical point-to-point | "The VPN PM type of this logical point-to-point | |||
unidirectional VPN link."; | unidirectional VPN link."; | |||
container inter-vpn-access-interface { | container inter-vpn-access-interface { | |||
description | description | |||
"Indicates inter-vpn-access-interface PM, which is to | "Indicates inter-vpn-access-interface PM, which is used | |||
monitor the performance of logical point-to-point VPN | to monitor the performance of logical point-to-point | |||
connections between a source and a destination | VPN connections between source and destination VPN | |||
VPN access interfaces."; | access interfaces."; | |||
leaf inter-vpn-access-interface { | leaf inter-vpn-access-interface { | |||
type empty; | type empty; | |||
description | description | |||
"This is a placeholder for inter-vpn-access-interface PM, | "This is a placeholder for inter-vpn-access-interface PM, | |||
which is not bound to a specific VPN access interface. | which is not bound to a specific VPN access interface. | |||
The source or destination VPN access interface | The source or destination VPN access interface | |||
of the measurement can be augmented as needed."; | of the measurement can be augmented as needed."; | |||
} | } | |||
} | } | |||
container vpn-tunnel { | container vpn-tunnel { | |||
presence "Enables VPN tunnel PM"; | presence "Enables VPN tunnel PM"; | |||
description | description | |||
"Indicates VPN tunnel PM, which is to monitor | "Indicates VPN tunnel PM, which is used to monitor | |||
the performance of VPN tunnels."; | the performance of VPN tunnels."; | |||
leaf vpn-tunnel-type { | leaf vpn-tunnel-type { | |||
type identityref { | type identityref { | |||
base vpn-common:protocol-type; | base vpn-common:protocol-type; | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"The leaf indicates the VPN tunnel type, e.g., | "The leaf indicates the VPN tunnel type, e.g., | |||
Generic Routing Encapsulation (GRE), | Generic Routing Encapsulation (GRE) and Generic | |||
Generic Network Virtualization Encapsulation (Geneve), | Network Virtualization Encapsulation (Geneve)."; | |||
etc."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment | augment "/nw:networks/nw:network/nw:node/nt:termination-point" { | |||
"/nw:networks/nw:network/nw:node/nt:termination-point" { | description | |||
"Augments the network topology termination point with | ||||
performance monitoring attributes."; | ||||
container pm-statistics { | ||||
config false; | ||||
description | description | |||
"Augments the network topology termination point with | "Container for termination point PM attributes."; | |||
performance monitoring attributes."; | uses tp-svc-telemetry; | |||
container pm-statistics { | } | |||
config false; | ||||
description | ||||
"Container for termination point PM attributes."; | ||||
uses tp-svc-telemetry; | ||||
} | ||||
} | } | |||
augment "/nw:networks/nw:network/nw:node" | augment "/nw:networks/nw:network/nw:node" | |||
+ "/nt:termination-point/pm-statistics" { | + "/nt:termination-point/pm-statistics" { | |||
when '../../../nw:network-types/nvp:service' { | when '../../../nw:network-types/nvp:service' { | |||
description | description | |||
"Augments for VPN service PM."; | "Augments for VPN service PM."; | |||
} | } | |||
description | description | |||
"Augments the network topology termination-point with | "Augments the network topology termination-point with | |||
VPN service performance monitoring attributes"; | VPN service performance monitoring attributes."; | |||
list vpn-network-access { | list vpn-network-access { | |||
key "network-access-id"; | key "network-access-id"; | |||
description | description | |||
"The list of PM based on VPN network accesses."; | "The list of PM based on VPN network accesses."; | |||
leaf network-access-id { | leaf network-access-id { | |||
type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
description | description | |||
"The reference to an identifier for the VPN network | "The reference to an identifier for the VPN network | |||
access."; | access."; | |||
} | } | |||
uses tp-svc-telemetry; | uses tp-svc-telemetry; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS>]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<section title="Security Considerations"> | <t>The YANG module specified in this document defines a schema for data | |||
<t>The YANG module specified in this document defines a schema for data | ||||
that is designed to be accessed via network management protocols such as | that is designed to be accessed via network management protocols such as | |||
NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | NETCONF <xref target="RFC6241" format="default"/> or RESTCONF <xref target ="RFC8040" format="default"/>. | |||
The lowest NETCONF layer is the secure transport layer, and the | The lowest NETCONF layer is the secure transport layer, and the | |||
mandatory-to-implement secure transport is Secure Shell (SSH) <xref | mandatory-to-implement secure transport is Secure Shell (SSH) <xref target | |||
target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | ="RFC6242" format="default"/>. The lowest RESTCONF layer is HTTPS, and the | |||
mandatory-to-implement secure transport is TLS <xref | mandatory-to-implement secure transport is TLS <xref target="RFC8446" form | |||
target="RFC8446"/>.</t> | at="default"/>.</t> | |||
<t>The Network Configuration Access Control Model (NACM) <xref target="RFC | ||||
<t>The Network Configuration Access Control Model (NACM) <xref | 8341" format="default"/> provides the means to restrict access for particular | |||
target="RFC8341"/> provides the means to restrict access for 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 data nodes defined in this YANG module that are | <t>There are a number of data nodes defined in this YANG module that are | |||
writable/creatable/deletable (i.e., config true, which is the default). | writable/creatable/deletable (i.e., config true, which is the default). | |||
These data nodes may be considered sensitive or vulnerable in some | These data nodes may be considered sensitive or vulnerable in some | |||
network environments. Write operations (e.g., edit-config) to these data | network environments. Write operations (e.g., edit-config) to these data | |||
nodes without proper protection can have a negative effect on network | nodes without proper protection can have a negative effect on network | |||
operations. These write operates can lead to inaccurate or incomplete | operations. | |||
network measurements which can impact the visibility and decisions this | These write operations can lead to inaccurate or incomplete | |||
network measurements that can impact the visibility and decisions this | ||||
data would be used to inform. Unauthorized write access to the following | data would be used to inform. Unauthorized write access to the following | |||
subtrees could have the following impacts:</t> | subtrees could have the following impacts:</t> | |||
<figure> | <table> | |||
<artwork><![CDATA[+--------+----------------------+--------------------- | <name>Write Operation Sensitivity Impact</name> | |||
---------+ | <thead> | |||
<tr> | ||||
| Access | Node | Potential impact | | <th>Access</th> | |||
<th>Node</th> | ||||
+--------+----------------------+------------------------------+ | <th>Potential Impact</th> | |||
</tr> | ||||
| /nw:networks/nw:network/nw:network-types | | </thead> | |||
<tbody> | ||||
| write | service type | disable VPN PM | | <tr> | |||
<th colspan="3">/nw:networks/nw:network/nw:network-types</th> | ||||
| write | VPN identifier | disable VPN PM | | </tr> | |||
<tr> | ||||
| write | VPN service topology | render data unusable | | <td>write</td> | |||
<td>service type</td> | ||||
+--------+----------------------+------------------------------+ | <td>disable VPN PM</td> | |||
| /nw:networks/nw:network/nw:node | | </tr> | |||
<tr> | ||||
| write | node type | render data unusable | | ||||
| write | VPN topology role | render data unusable | | <td>write</td> | |||
<td>VPN identifier</td> | ||||
<td>disable VPN PM</td> | ||||
</tr> | ||||
<tr> | ||||
<td>write</td> | ||||
<td>VPN service topology</td> | ||||
<td>render data unusable</td> | ||||
</tr> | ||||
<tr> | ||||
<th colspan="3">/nw:networks/nw:network/nw:node</th> | ||||
</tr> | ||||
<tr> | ||||
+--------+----------------------+------------------------------+ | <td>write</td> | |||
| /nw:networks/nw:network/nw:link/nvp:perf-mon | | <td>node type</td> | |||
<td>render data unusable</td> | ||||
</tr><tr> | ||||
| write | percentile | impact reporting cadence | | <td>write</td> | |||
<td>VPN topology role</td> | ||||
<td>render data unusable</td> | ||||
</tr> | ||||
<tr> | ||||
<th colspan="3">/nw:networks/nw:network/nw:link/nvp:perf-mon</th> | ||||
</tr> | ||||
<tr> | ||||
| write | measurement interval | impact monitoring fidelity | | <td>write</td> | |||
<td>percentile</td> | ||||
<td>impact reporting cadence</td> | ||||
</tr> | ||||
<tr> | ||||
| write | vpn-pm-type | impact monitoring fidelity | | <td>write</td> | |||
<td>measurement interval</td> | ||||
<td>impact monitoring fidelity</td> | ||||
</tr> | ||||
<tr> | ||||
+--------+----------------------+------------------------------+ | <td>write</td> | |||
]]></artwork> | <td>vpn-pm-type</td> | |||
</figure> | <td>impact monitoring fidelity</td> | |||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>Some readable data nodes in this YANG module may be considered | <t>Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It thus might be | sensitive or vulnerable in some network environments. It is thus | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. When using, the trade-off between | notification) to these data nodes. | |||
When using, the trade-off between | ||||
confidentiality and proper monitoring of performance needs to be | confidentiality and proper monitoring of performance needs to be | |||
considered. Unauthorized access to the following subtrees could have the | considered. Unauthorized access to the following subtrees could have the | |||
following impacts:</t> | following impacts:</t> | |||
<dl> | ||||
<t><list style="symbols"> | <dt>"/nw:networks/nw:network/nw:node":</dt><dd>Unauthorized read access | |||
<t>“/nw:networks/nw:network/nw:node": Unauthorized read access | ||||
to this subtree can disclose the operational state information of | to this subtree can disclose the operational state information of | |||
underlay network instances or VPN instances.</t> | underlay network instances or VPN instances.</dd> | |||
<dt>"/nw:networks/nw:network/nt:link/nvp:perf-mon/nvp:one-way-pm-statist | ||||
<t>“/nw:networks/nw:network/nt:link/nvp:perf-mon/nvp:one-way-pm- | ics":</dt><dd> | |||
statistics": | ||||
Unauthorized read access to this subtree can disclose the | Unauthorized read access to this subtree can disclose the | |||
operational state information of underlay network links or VPN | operational state information of underlay network links or VPN | |||
abstract links.</t> | abstract links.</dd> | |||
<dt>"/nw:networks/nw:network/nw:node/nt:termination-point/nvp:pm-statist | ||||
<t>“/nw:networks/nw:network/nw:node/nt:termination-point/nvp:pm- | ics":</dt><dd> | |||
statistics": | ||||
Unauthorized read access to this subtree can disclose the | Unauthorized read access to this subtree can disclose the | |||
operational state information of underlay network termination points | operational state information of underlay network termination points | |||
or VPN network accesses.</t> | or VPN network accesses.</dd> | |||
</list>This YANG module does not define any RPC (Remote Procedure | </dl> | |||
Call) operations and Actions.</t> | <t>This YANG module does not define any Remote Procedure | |||
Call (RPC) operations and actions.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>This document requests IANA to register the following URI in the "ns" | <t>IANA has registered the following URI in the "ns" | |||
subregistry within the "IETF XML Registry" <xref target="RFC3688"/>:</t> | subregistry within the "IETF XML Registry" <xref target="RFC3688" format=" | |||
default"/>:</t> | ||||
<figure> | <dl spacing="compact"> | |||
<artwork><![CDATA[ URI: urn:ietf:params:xml:ns:yang:ietf-network-vpn-p | <dt>URI:</dt> | |||
m | <dd>urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm</dd> | |||
Registrant Contact: The IESG. | <dt>Registrant Contact:</dt> | |||
XML: N/A, the requested URI is an XML namespace. | <dd>The IESG.</dd> | |||
]]></artwork> | <dt>XML:</dt> | |||
</figure> | <dd>N/A; the requested URI is an XML namespace.</dd> | |||
</dl> | ||||
<t>This document requests IANA to register the following YANG module in | <t>IANA has registered the following YANG module in | |||
the "YANG Module Names" subregistry <xref target="RFC6020"/> within the | the "YANG Module Names" subregistry <xref target="RFC6020" format="default | |||
"/> within the | ||||
"YANG Parameters" registry.</t> | "YANG Parameters" registry.</t> | |||
<dl spacing="compact"> | ||||
<figure> | <dt>Name:</dt> | |||
<artwork><![CDATA[ Name: ietf-network-vpn-pm | <dd>ietf-network-vpn-pm</dd> | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm | <dt>Namespace:</dt> | |||
Maintained by IANA: N | <dd>urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm</dd> | |||
Prefix: nvp | <dt>Maintained by IANA:</dt> | |||
Reference: RFC XXXX (RFC Ed.: replace XXXX with actual | <dd>N</dd> | |||
RFC number and remove this note.) | <dt>Prefix:</dt> | |||
]]></artwork> | <dd>nvp</dd> | |||
</figure> | <dt>Reference:</dt> | |||
</section> | <dd>RFC 9375</dd> | |||
</dl> | ||||
<section title="Acknowledgements"> | ||||
<t>Thanks to Joe Clarke, Adrian Farrel, Tom Petch, Greg Mirsky, Roque | ||||
Gagliano, Erez Segev, and Dhruv Dhody for reviewing and providing | ||||
important input to this document.</t> | ||||
<t>This work was partially supported by the European Commission under | ||||
Horizon 2020 grant agreement number 101015857 Secured autonomic traffic | ||||
management for a Tera of SDN flows (Teraflow).</t> | ||||
</section> | ||||
<section title="Contributors"> | ||||
<t>The following authors contributed significantly to this document:</t> | ||||
<figure> | ||||
<artwork><![CDATA[ Michale Wang | ||||
Huawei | ||||
Email:wangzitao@huawei.com | ||||
Roni Even | ||||
Huawei | ||||
Email: ron.even.tlv@gmail.com | ||||
Change Liu | ||||
China Unicom | ||||
Email: liuc131@chinaunicom.cn | ||||
Honglei Xu | ||||
China Telecom | ||||
Email: xuhl6@chinatelecom.cn | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | ||||
<?rfc include='reference.RFC.9181'?> | ||||
<?rfc include="reference.RFC.3688"?> | ||||
<?rfc include='reference.RFC.3393'?> | ||||
<?rfc include='reference.RFC.5357'?> | ||||
<?rfc include='reference.RFC.4364'?> | ||||
<?rfc include="reference.RFC.8571"?> | <displayreference target="I-D.ietf-opsawg-sap" to="YANG-SAP"/> | |||
<?rfc include='reference.RFC.4656'?> | ||||
<?rfc include="reference.RFC.6020"?> | ||||
<?rfc include="reference.RFC.6241"?> | ||||
<?rfc include="reference.RFC.6242"?> | ||||
<?rfc include="reference.RFC.6374"?> | ||||
<?rfc include='reference.RFC.6991'?> | ||||
<?rfc include="reference.RFC.8446"?> | ||||
<?rfc include="reference.RFC.7950"?> | ||||
<?rfc include="reference.RFC.8340"?> | ||||
<?rfc include="reference.RFC.8762"?> | ||||
<?rfc include="reference.RFC.8345"?> | ||||
<?rfc include='reference.RFC.8641'?> | ||||
<?rfc include='reference.RFC.8532'?> | ||||
<?rfc include='reference.RFC.8341'?> | ||||
<?rfc include='reference.RFC.8040'?> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include='reference.RFC.8969'?> | ||||
<?rfc include='reference.RFC.4026'?> | ||||
<?rfc include='reference.RFC.8639'?> | ||||
<?rfc include='reference.RFC.5277'?> | ||||
<?rfc include='reference.RFC.8632'?> | ||||
<?rfc include='reference.RFC.9182'?> | ||||
<?rfc include='reference.RFC.9197'?> | ||||
<?rfc include='reference.RFC.9291'?> | ||||
<?rfc include='reference.I-D.ietf-opsawg-sap'?> | ||||
<?rfc include="reference.RFC.7471"?> | ||||
<?rfc include="reference.RFC.8570"?> | ||||
<?rfc include='reference.RFC.8309'?> | ||||
<?rfc include='reference.RFC.8194'?> | <references> | |||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
181.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
688.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
393.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
357.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
364.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
571.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
656.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
020.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
241.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
242.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
374.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
991.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
446.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
950.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
340.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
762.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
345.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
641.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
532.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
341.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
040.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
969.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
026.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
639.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
277.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
632.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
182.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
197.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
291.xml"/> | ||||
<reference anchor="ITU-T-Y-1731" | <!-- [I-D.ietf-opsawg-sap] in RFC-EDITOR state as of 4/21/23; entered the long w | |||
target="https://www.itu.int/rec/T-REC-Y.1731/en"> | ay to capture the editor role and correct format of Oscar's name --> | |||
<front> | <reference anchor="I-D.ietf-opsawg-sap"> | |||
<title>Operator Ethernet Service Definition</title> | <front> | |||
<title>A YANG Network Model for Service Attachment Points (SAPs)</title> | ||||
<author initials="M." surname="Boucadair" fullname="Mohamed Boucadair" rol | ||||
e="editor"> | ||||
<organization>Orange</organization> | ||||
</author> | ||||
<author initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez | ||||
de Dios"> | ||||
<organization>Telefonica</organization> | ||||
</author> | ||||
<author initials="S." surname="Barguil" fullname="Samier Barguil"> | ||||
<organization>Nokia</organization> | ||||
</author> | ||||
<author initials="Q." surname="Wu" fullname="Qin Wu"> | ||||
<organization>Huawei</organization> | ||||
</author> | ||||
<author initials="V." surname="Lopez" fullname="Victor Lopez"> | ||||
<organization>Nokia</organization> | ||||
</author> | ||||
<date month="January" day="18" year="2023" /> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-sap-15" /> | ||||
</reference> | ||||
<author fullname="ITU-T" | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
surname="Recommendation Y.1731 - OAM functions and mechanisms | 471.xml"/> | |||
for Ethernet based networks"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
570.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
309.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
194.xml"/> | ||||
<date month="August" year="2015"/> | <reference anchor="ITU-T-Y-1731" target="https://www.itu.int/rec/T-REC-Y | |||
</front> | .1731/en"> | |||
</reference> | <front> | |||
<title>Operations, administration and maintenance (OAM) functions | ||||
and mechanisms for Ethernet-based networks</title> | ||||
<author><organization>ITU-T</organization></author> | ||||
<date month="August" year="2015"/> | ||||
</front> | ||||
<seriesInfo name="ITU-T" value="Recommendation G.8013/Y.1731"/> | ||||
</reference> | ||||
</references> | ||||
</references> | </references> | |||
<section anchor="examples" numbered="true" toc="default"> | ||||
<name>Illustrative Examples</name> | ||||
<section anchor="examples" title="Illustrative Examples"> | <section numbered="true" toc="default"> | |||
<t/> | <name>Example of VPN Performance Subscription</name> | |||
<t>The example shown in <xref target="ex" format="default"/> illustrates | ||||
<section title="VPN Performance Subscription Example"> | how a client | |||
<t>The example shown in <xref target="ex"/> illustrates how a client | ||||
subscribes to the performance monitoring information between nodes | subscribes to the performance monitoring information between nodes | |||
('node-id') A and B in the L3 network topology. The performance | ("node-id") A and B in the L3 network topology. The performance | |||
monitoring parameter that the client is interested in is end-to-end | monitoring parameter that the client is interested in is end-to-end | |||
loss.</t> | loss.</t> | |||
<figure anchor="ex"> | ||||
<name>Example of Pub/Sub Retrieval</name> | ||||
<figure align="center" anchor="ex" title="Pub/Sub Retrieval"> | <sourcecode type=""><![CDATA[============== NOTE: '\' line wrapping per RFC 8792 | |||
<artwork><![CDATA[ POST /restconf/operations | =============== | |||
/ietf-subscribed-notifications:establish-subscription | ||||
POST /restconf/operations/ietf-subscribed-notifications:establish-\ | ||||
subscription | ||||
Host: example.com | ||||
Content-Type: application/yang-data+json | ||||
{ | { | |||
"ietf-subscribed-notifications:input": { | "ietf-subscribed-notifications:input": { | |||
"stream-subtree-filter": { | "stream-subtree-filter": { | |||
"ietf-network:networks": { | "ietf-network:networks": { | |||
"network": { | "network": { | |||
"network-id": "foo:vpn1", | "network-id": "example:VPN1", | |||
"ietf-network-vpn-pm:service": { | "ietf-network-vpn-pm:service": { | |||
"service-type": "ietf-vpn-common:l3vpn" | "service-type": "ietf-vpn-common:l3vpn" | |||
}, | }, | |||
"node": [ | "node": [ | |||
{ | { | |||
"node-id": "A", | "node-id": "example:A", | |||
"ietf-network-vpn-pm:node-type": "PE", | "ietf-network-vpn-pm:node-type": "pe", | |||
"termination-point": [ | "termination-point": [ | |||
{ | { | |||
"tp-id": "1-0-1" | "tp-id": "example:1-0-1" | |||
} | } | |||
] | ] | |||
}, | }, | |||
{ | { | |||
"node-id": "B", | "node-id": "example:B", | |||
"ietf-network-vpn-pm:node-type": "PE", | "ietf-network-vpn-pm:node-type": "pe", | |||
"termination-point": [ | "termination-point": [ | |||
{ | { | |||
"tp-id": "2-0-1" | "tp-id": "example:2-0-1" | |||
} | } | |||
] | ] | |||
} | } | |||
], | ], | |||
"ietf-network-topology:link": [ | "ietf-network-topology:link": [ | |||
{ | { | |||
"link-id": "A-B", | "link-id": "example:A-B", | |||
"source": { | "source": { | |||
"source-node": "A" | "source-node": "example:A" | |||
}, | }, | |||
"destination": { | "destination": { | |||
"dest-node": "B" | "dest-node": "example:B" | |||
}, | }, | |||
"ietf-network-vpn-pm:perf-mon": { | "ietf-network-vpn-pm:perf-mon": { | |||
"pm": [ | "pm": [ | |||
{ | { | |||
"pm-type": "pm-type-vpn-tunnel", | "pm-type": "pm-type-vpn-tunnel", | |||
"pm-attributes": { | "pm-attributes": { | |||
"one-way-pm-statistics": { | "one-way-pm-statistics": { | |||
"loss-statistics": { | "loss-statistics": { | |||
"packet-loss-count": {} | "packet-loss-count": {} | |||
} | } | |||
skipping to change at line 1856 ¶ | skipping to change at line 1776 ¶ | |||
"vpn-tunnel": { | "vpn-tunnel": { | |||
"vpn-tunnel-type": "ietf-vpn-common:gre" | "vpn-tunnel-type": "ietf-vpn-common:gre" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
}, | }, | |||
"ietf-yang-push:periodic": { | "ietf-yang-push:periodic": { | |||
"ietf-yang-push:period": "500" | "period": "500" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>Example of VPN Performance Snapshot</name> | ||||
<t>The example depicted in <xref target="ex2" format="default"/> illustr | ||||
ates a VPN | ||||
PM instance message body of a RESTCONF request to fetch the performance | ||||
data of the link and TP that belongs to "VPN1".</t> | ||||
<section title="Example of VPN Performance Snapshot"> | <figure anchor="ex2"> | |||
<t>This example, depicted in <xref target="ex2"/>, illustrates an VPN | <name>Example of VPN PM</name> | |||
PM instance example in which a client uses RESTCONF <xref | <sourcecode type=""><![CDATA[{ | |||
target="RFC8040"/> to fetch the performance data of the link and TP | ||||
belonged to "VPN1".</t> | ||||
<figure align="center" anchor="ex2"> | ||||
<artwork><![CDATA[{ | ||||
"ietf-network:networks": { | "ietf-network:networks": { | |||
"network": { | "network": { | |||
"network-id": "foo:vpn1", | "network-id": "example:VPN1", | |||
"node": [ | "node": [ | |||
{ | { | |||
"node-id": "A", | "node-id": "example:A", | |||
"ietf-network-vpn-pm:node-type": "PE", | "ietf-network-vpn-pm:node-type": "pe", | |||
"termination-point": [ | "termination-point": [ | |||
{ | { | |||
"tp-id": "1-0-1", | "tp-id": "example:1-0-1", | |||
"ietf-network-vpn-pm:pm-statistics": { | "ietf-network-vpn-pm:pm-statistics": { | |||
"inbound-octets": "100", | "inbound-octets": "100", | |||
"outbound-octets": "150" | "outbound-octets": "150" | |||
} | } | |||
} | } | |||
] | ] | |||
}, | }, | |||
{ | { | |||
"node-id": "B", | "node-id": "example:B", | |||
"ietf-network-vpn-pm:node-type": "PE", | "ietf-network-vpn-pm:node-type": "pe", | |||
"termination-point": [ | "termination-point": [ | |||
{ | { | |||
"tp-id": "2-0-1", | "tp-id": "example:2-0-1", | |||
"ietf-network-vpn-pm:pm-statistics": { | "ietf-network-vpn-pm:pm-statistics": { | |||
"inbound-octets": "150", | "inbound-octets": "150", | |||
"outbound-octets": "100" | "outbound-octets": "100" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
], | ], | |||
"ietf-network-topology:link": [ | "ietf-network-topology:link": [ | |||
{ | { | |||
"link-id": "A-B", | "link-id": "example:A-B", | |||
"source": { | "source": { | |||
"source-node": "A" | "source-node": "example:A" | |||
}, | }, | |||
"destination": { | "destination": { | |||
"dest-node": "B" | "dest-node": "example:B" | |||
}, | }, | |||
"ietf-network-pm:perf-mon": { | "ietf-network-pm:perf-mon": { | |||
"pm": [ | "pm": [ | |||
{ | { | |||
"pm-type": "pm-type-vpn-tunnel", | "pm-type": "pm-type-vpn-tunnel", | |||
"pm-attributes": { | "pm-attributes": { | |||
"one-way-pm-statistics": { | "one-way-pm-statistics": { | |||
"loss-statistics": { | "loss-statistics": { | |||
"packet-loss-count": "120" | "packet-loss-count": "120" | |||
} | } | |||
skipping to change at line 1937 ¶ | skipping to change at line 1857 ¶ | |||
"vpn-tunnel": { | "vpn-tunnel": { | |||
"vpn-tunnel-type": "ietf-vpn-common:gre" | "vpn-tunnel-type": "ietf-vpn-common:gre" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="perc" numbered="true" toc="default"> | ||||
<section anchor="perc" title="Example of Percentile Monitoring"> | <name>Example of Percentile Monitoring</name> | |||
<t>This is an example of percentile measurement data that could be | <t>This is an example of percentile measurement data that could be | |||
returned for a link foo:vpn1-link1 between vpn-node1 and | returned for link "example:A-B" between "example:A" and | |||
vpn-node3.</t> | "example:B".</t> | |||
<figure anchor="fig_9"> | ||||
<figure> | <name>Example of VPN PM with Percentile Value</name> | |||
<artwork><![CDATA[{ | <sourcecode type=""><![CDATA[{ | |||
"ietf-network-topology:link": [ | "ietf-network-topology:link": [ | |||
{ | { | |||
"link-id": "foo:vpn1-link1", | "link-id": "example:A-B", | |||
"source": { | "source": { | |||
"source-node": "vpn-node1" | "source-node": "example:A" | |||
}, | }, | |||
"destination": { | "destination": { | |||
"dest-node": "vpn-node3" | "dest-node": "example:B" | |||
}, | }, | |||
"ietf-network-vpn-pm:perf-mon": { | "ietf-network-vpn-pm:perf-mon": { | |||
"low-percentile": "20.000", | "low-percentile": "20.000", | |||
"intermediate-percentile": "50.000", | "intermediate-percentile": "50.000", | |||
"high-percentile": "90.000", | "high-percentile": "90.000", | |||
"pm": [ | "pm": [ | |||
{ | { | |||
"pm-type": "pm-type-vpn-inter-access", | "pm-type": "pm-type-vpn-inter-access", | |||
"pm-attributes": { | "pm-attributes": { | |||
"one-way-pm-statistics": { | "one-way-pm-statistics": { | |||
"delay-statistics": { | "delay-statistics": { | |||
"unit-value": "lime:milliseconds", | "unit-value": "ietf-lime-time-types:milliseconds", | |||
"min-delay-value": "43", | "min-delay-value": "43", | |||
"max-delay-value": "99", | "max-delay-value": "99", | |||
"low-delay-percentile": "64", | "low-delay-percentile": "64", | |||
"intermediate-delay-percentile": "77", | "intermediate-delay-percentile": "77", | |||
"high-delay-percentile": "98" | "high-delay-percentile": "98" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
], | ], | |||
"vpn-pm-type": { | "vpn-pm-type": { | |||
"inter-vpn-access-interface": { | "inter-vpn-access-interface": { | |||
"inter-vpn-access-interface": [null] | "inter-vpn-access-interface": [null] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
]]></sourcecode> | ||||
</figure> | ||||
</section> | ||||
</section> | ||||
]]></artwork> | <section numbered="false" toc="default"> | |||
</figure> | <name>Acknowledgements</name> | |||
<t>Thanks to <contact fullname="Joe Clarke"/>, <contact fullname="Adrian F | ||||
arrel"/>, <contact fullname="Tom Petch"/>, <contact fullname="Greg Mirsky"/>, <c | ||||
ontact fullname="Roque | ||||
Gagliano"/>, <contact fullname="Erez Segev"/>, and <contact fullname="Dhru | ||||
v Dhody"/> for reviewing and providing | ||||
important input to this document.</t> | ||||
<t>This work is partially supported by the European Commission under | ||||
Horizon 2020 Secured autonomic traffic | ||||
management for a Tera of SDN flows (Teraflow) project (grant agreement num | ||||
ber 101015857).</t> | ||||
</section> | ||||
<section numbered="false" toc="default"> | ||||
<name>Contributors</name> | ||||
<t>The following authors contributed significantly to this document:</t> | ||||
<t/> | <contact fullname="Michale Wang"> | |||
</section> | <organization>Huawei</organization> | |||
<address> | ||||
<email>wangzitao@huawei.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Roni Even"> | ||||
<organization>Huawei</organization> | ||||
<address> | ||||
<email>ron.even.tlv@gmail.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Change Liu"> | ||||
<organization>China Unicom</organization> | ||||
<address> | ||||
<email>liuc131@chinaunicom.cn</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Honglei Xu"> | ||||
<organization>China Telecom</organization> | ||||
<address> | ||||
<email>xuhl6@chinatelecom.cn</email> | ||||
</address> | ||||
</contact> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 246 change blocks. | ||||
826 lines changed or deleted | 893 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |