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 "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<?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 &ldquo;service&rdquo; 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 &ldquo;service&rdquo; 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 &ldquo;service-type&rdquo; 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="&quot;vpn-id&quot;:">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="&quot;vpn-service-topology&quot;: ">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="&quot;node-type&quot;: ">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="&quot;entry-summary&quot;: ">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="&quot;role&quot;:">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 &ldquo;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 (&quot;measurement-interval&quot;): " 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 (&quot;start-time&ldquo;): ">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 (&quot;end-time&ldquo;): ">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 (&quot;pm-source&quot;): ">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 (&quot;vpn-pm-type&quot;): ">Indicates <dd>Indicates
the VPN performance type, which can be the VPN performance type, which can be
&ldquo;inter-vpn-access-interface&rdquo; PM or "inter-vpn-access-interface" PM or
&ldquo;vpn-tunnel&rdquo; PM. These two methods are common VPN "vpn-tunnel" PM. These two methods are common VPN
measurement methods. The &ldquo;inter-VPN-access-interface&rdquo; 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 &ldquo;vpn-tunnel&rdquo; 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
&ldquo;inter-VPN-access-interface&rdquo; 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 &ldquo;inter-VPN-access-interface&rdquo; 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 (&quot;vpn-tunnel-type&quot;): ">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 (&quot;last-updated&ldquo;): ">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 (&quot;vpn-network-access&quot;): ">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>&ldquo;/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>&ldquo;/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>&ldquo;/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.