draft-ietf-opsawg-yang-vpn-service-pm-02.txt   draft-ietf-opsawg-yang-vpn-service-pm-03.txt 
OPSAWG Working Group B. Wu, Ed. OPSAWG Working Group B. Wu, Ed.
Internet-Draft Q. Wu, Ed. Internet-Draft Q. Wu, Ed.
Intended status: Standards Track Huawei Intended status: Standards Track Huawei
Expires: 23 July 2022 M. Boucadair, Ed. Expires: 2 August 2022 M. Boucadair, Ed.
Orange Orange
O. Gonzalez de Dios O. Gonzalez de Dios
Telefonica Telefonica
B. Wen B. Wen
Comcast Comcast
19 January 2022 29 January 2022
A YANG Model for Network and VPN Service Performance Monitoring A YANG Model for Network and VPN Service Performance Monitoring
draft-ietf-opsawg-yang-vpn-service-pm-02 draft-ietf-opsawg-yang-vpn-service-pm-03
Abstract Abstract
The data model for network topologies defined in RFC 8345 introduces The data model for network topologies defined in RFC 8345 introduces
vertical layering relationships between networks that can be vertical layering relationships between networks that can be
augmented to cover network and service topologies. This document augmented to cover network and service topologies. This document
defines a YANG module for performance monitoring (PM) of both defines a YANG module for performance monitoring (PM) of both
networks and VPN services that can be used to monitor and manage networks and VPN services that can be used to monitor and manage
network performance on the topology at higher layer or the service network performance on the topology at higher layer or the service
topology between VPN sites. topology between VPN sites.
skipping to change at page 1, line 42 skipping to change at page 1, line 42
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 23 July 2022. This Internet-Draft will expire on 2 August 2022.
Copyright Notice Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the Copyright (c) 2022 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License. provided without warranty as described in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Network and VPN Service Performance Monitoring Model Usage . 3 2.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Network and VPN Service Performance Monitoring Model Usage . 4
3.1. Collecting Data via Pub/Sub Mechanism . . . . . . . . . . 5 3.1. Collecting Data via Pub/Sub Mechanism . . . . . . . . . . 5
3.2. Collecting Data via Retrieval Methods . . . . . . . . . . 5 3.2. Collecting Data On-demand . . . . . . . . . . . . . . . . 6
4. Description of The Data Model . . . . . . . . . . . . . . . . 5 4. Description of The Data Model . . . . . . . . . . . . . . . . 6
4.1. Layering Relationship between Multiple Layers of 4.1. Layering Relationship between Multiple Layers of
Topology . . . . . . . . . . . . . . . . . . . . . . . . 6 Topology . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2. Network Level . . . . . . . . . . . . . . . . . . . . . . 7 4.2. Network Level . . . . . . . . . . . . . . . . . . . . . . 8
4.3. Node Level . . . . . . . . . . . . . . . . . . . . . . . 8 4.3. Node Level . . . . . . . . . . . . . . . . . . . . . . . 8
4.4. Link and Termination Point Level . . . . . . . . . . . . 9 4.4. Link and Termination Point Level . . . . . . . . . . . . 9
5. Network and VPN Service Performance Monitoring YANG Module . 12 5. Network and VPN Service Performance Monitoring YANG Module . 13
6. Security Considerations . . . . . . . . . . . . . . . . . . . 25 6. Security Considerations . . . . . . . . . . . . . . . . . . . 27
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 27 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 28
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.1. Normative References . . . . . . . . . . . . . . . . . . 27 10.1. Normative References . . . . . . . . . . . . . . . . . . 29
10.2. Informative References . . . . . . . . . . . . . . . . . 29 10.2. Informative References . . . . . . . . . . . . . . . . . 30
Appendix A. Illustrating Examples . . . . . . . . . . . . . . . 30 Appendix A. Illustrating Examples . . . . . . . . . . . . . . . 32
A.1. Example of Pub/Sub Retrieval . . . . . . . . . . . . . . 30 A.1. VPN Performance Subscription Example . . . . . . . . . . 32
A.2. Example of RPC-based Retrieval . . . . . . . . . . . . . 32 A.2. Example of VPN Performance Snapshot . . . . . . . . . . . 33
A.3. Example of Percentile Monitoring . . . . . . . . . . . . 34 A.3. Example of Percentile Monitoring . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35
1. Introduction 1. Introduction
[RFC8969] describes a framework for automating service and network [RFC8969] describes a framework for automating service and network
management with YANG models. It proposes that the performance management with YANG models. It proposes that the performance
measurement telemetry model to be tied with the service, such as measurement telemetry model to be tied with the service, such as
Layer 3 VPN and Layer 2 VPN, or network models to monitor the overall Layer 3 VPN and Layer 2 VPN, or network models to monitor the overall
network performance or Service Level Agreements (SLA). network performance or Service Level Agreements (SLA).
The performance of VPN services is associated with the performance The performance of VPN services is associated with the performance
skipping to change at page 3, line 42 skipping to change at page 3, line 43
* data model * data model
* data node * data node
The terminology for describing YANG data models is found in The terminology for describing YANG data models is found in
[RFC7950]. [RFC7950].
The tree diagrams used in this document follow the notation defined The tree diagrams used in this document follow the notation defined
in [RFC8340]. in [RFC8340].
2.1. Acronyms
The following acronyms are used in the document:
L2VPN Layer 2 Virtual Private Network
L3VPN Layer 3 Virtual Private Network
L2NM L2VPN Network Model
L3NM L3VPN Network Model
MPLS Multiprotocol Label Switching
OAM Operations, Administration, and Maintenance
OWAMP One-Way Active Measurement Protocol
PE Provider Edge
PM Performance Monitoring
SLA Service Level Agreements
TE Traffic Engineering
TWAMP Two-Way Active Measurement Protocol
VPLS Virtual Private LAN Service
VPN Virtual Private Network
3. Network and VPN Service Performance Monitoring Model Usage 3. Network and VPN Service Performance Monitoring Model Usage
Models are key for automating network management operations. Models are key for automating network management operations.
According to [RFC8969], together with service and network models, According to [RFC8969], together with service and network models,
performance measurement telemetry models are needed to monitor performance measurement telemetry models are needed to monitor
network performance to meet specific service requirements (typically network performance to meet specific service requirements (typically
captured in an SLA). captured in an SLA).
+---------------+ +---------------+
| Customer | | Customer |
skipping to change at page 4, line 44 skipping to change at page 5, line 21
parameter changes. parameter changes.
Before using the network and VPN service PM model, the mapping Before using the network and VPN service PM model, the mapping
between the VPN service topology and the underlying physical network between the VPN service topology and the underlying physical network
should be set up. should be set up.
The YANG module defined in this document is designed to derive VPN or The YANG module defined in this document is designed to derive VPN or
network level performance data based on lower-level data collected network level performance data based on lower-level data collected
via monitoring counters of the involved devices. The performance via monitoring counters of the involved devices. The performance
monitoring data per link in the underlying network can be collected monitoring data per link in the underlying network can be collected
using a network performance measurement method such as MPLS Loss and using a network performance measurement method such as One-Way Active
Delay Measurement [RFC6374]. The performance monitoring information Measurement Protocol (OWAMP) [RFC4656], Two-Way Active Measurement
reflecting the quality of the network or VPN service (e.g., end-to- Protocol (TWAMP) [RFC5357], and Multiprotocol Label Switching (MPLS)
end network performance data between source node and destination node Loss and Delay Measurement [RFC6374]. The performance monitoring
in the network or between VPN sites) can be computed and aggregated, information reflecting the quality of the network or VPN service
for example, using the information from the Traffic Engineering (e.g., end-to-end network performance data between source node and
Database (TED), [RFC7471] [RFC8570] [RFC8571] or LMAP [RFC8194]. destination node in the network or between VPN sites) can be computed
and aggregated, for example, using the information from the Traffic
Engineering Database (TED), [RFC7471] [RFC8570] [RFC8571] or LMAP
[RFC8194].
The measurement and report intervals that are associated with these 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. measurement method or collection method or various combinations.
This document defines a network-wide measurement interval to align This document defines a network-wide measurement interval to align
measurement requirements for networks or VPN services. measurement requirements for networks or VPN services.
In addition, the amount of performance data collected from the In addition, the amount of performance data collected from the
devices can be huge. To avoid receiving a large amount of devices can be huge. To avoid receiving a large amount of
operational data of VPN instances, VPN interfaces, or tunnels, the operational data of VPN instances, VPN interfaces, or tunnels, the
skipping to change at page 5, line 29 skipping to change at page 6, line 9
Some applications such as service-assurance applications, which must Some applications such as service-assurance applications, which must
maintain a continuous view of operational data and state, can use the maintain a continuous view of operational data and state, can use the
subscription model specified in[RFC8641] to subscribe to the specific subscription model specified in[RFC8641] to subscribe to the specific
network performance data or VPN service performance data they are network performance data or VPN service performance data they are
interested in, at the data source. interested in, at the data source.
The data source can, then, use the network and VPN service assurance The data source can, then, use the network and VPN service assurance
model defined in this document and the YANG Push model [RFC8641] to model defined in this document and the YANG Push model [RFC8641] to
distribute specific telemetry data to target recipients. distribute specific telemetry data to target recipients.
3.2. Collecting Data via Retrieval Methods 3.2. Collecting Data On-demand
To obtain a snapshot of a large amount of performance data from a To obtain a snapshot of a large amount of performance data from a
network element (including network controllers), service-assurance network topology or VPN network, service-assurance applications may
applications may use methods such as retrieving performance data or retrieve information using the network and VPN service PM model
RPC commands defined as part of YANG models. through a NETCONF [RFC6241] or a RESTCONF [RFC8040] interface.
4. Description of The Data Model 4. Description of The Data Model
This document defines the YANG module, "ietf-network-vpn-pm", which This document defines the YANG module, "ietf-network-vpn-pm", which
is an augmentation to the "ietf-network" and "ietf-network-topology". is an augmentation to the "ietf-network" and "ietf-network-topology".
The performance monitoring data augments the service topology as The performance monitoring data augments the service topology as
shown in Figure 2. shown in Figure 2.
+----------------------+ +-----------------------+ +----------------------+ +-----------------------+
skipping to change at page 6, line 25 skipping to change at page 7, line 10
from the common L3 topology. from the common L3 topology.
Figure 3 illustrates an example of a topology that maps between the Figure 3 illustrates an example of a topology that maps between the
VPN service topology and an underlying network: VPN service topology and an underlying network:
VPN 1 VPN 2 VPN 1 VPN 2
+-----------------------+ +---------------------+ +-----------------------+ +---------------------+
/ / / / / / / /
/S1C_[VN3]::: / /S2A S2B / /S1C_[VN3]::: / /S2A S2B /
/ \ ::::: / / _[VN1]______[VN3]_ / / \ ::::: / / _[VN1]______[VN3]_ /
/ \ : / / : : /Service Overlay / \ : / / : : / Overlay
/ \ :: : : : : : : / / \ :: : : : : : : /
/S1B_[VN2]____[VN1]_S1A / / : : : / /S1B_[VN2]____[VN1]_S1A / / : : : /
+--------:-------:------+ +---:----:----------:-+ +--------:-------:------+ +---:----:----------:-+
: : :: : : : : : : :: : : : :
: : : : : : : : : :
Site-1A : +-------:--: ----- -------- : -------:-----+ Site-1C Site-1A : +-------:--: ----- -------- : -------:-----+ Site-1C
[CE1]___: /__ ___ [N1]__________________ [N2]__ :___ /__[CE3] [CE1]___: /__ ___ [N1]__________________ [N2]__ :___ /__[CE3]
:/ / / \ _____/ / : / :/ / / \ _____/ / : /
[CE5]___ : ___ / / \ _____/ / :: / [CE5]___ : ___ / / \ _____/ / :: /
Site-2A /: / \ / / : / Site-2A /: / \ / / : /
/ : [N5] / : / Underlay Network / : [N5] / : / Underlay Network
/ : / __/ \__ / : / / : / __/ \__ / : /
/ : / ___/ \__ / : / / : / ___/ \__ / : /
Site-1B / : / ___/ \ / : / Site-2B Site-1B / : / ___/ \ / : / Site-2B
[CE2]_ /________[N4]_________________ [N3]:::_____/____[CE4] [CE2]_ /________[N4]_________________ [N3]:::_____/____[CE4]
+------------------------------------------+ +------------------------------------------+
Legend: Legend:
N:node VN:VPN-Node S:Site N:node VN:VPN-Node S:Site
__ Link __ Link
: Mapping between networks : Mapping between networks
skipping to change at page 9, line 21 skipping to change at page 9, line 47
The 'links' are classified into two types: topology link defined in The 'links' are classified into two types: topology link defined in
[RFC8345] and abstract link of a VPN between PEs. [RFC8345] and abstract link of a VPN between PEs.
The performance data of a link is a collection of counters that The performance data of a link is a collection of counters that
report the performance status. report the performance status.
augment /nw:networks/nw:network/nt:link: augment /nw:networks/nw:network/nt:link:
+--rw pm-attributes +--rw pm-attributes
+--rw low-percentile? percentile +--rw low-percentile? percentile
+--rw middle-percentile? percentile +--rw intermediate-percentile? percentile
+--rw high-percentile? percentile +--rw high-percentile? percentile
+--rw measurement-interval? uint32 +--rw measurement-interval? uint32
+--ro reference-time? yang:date-and-time +--ro start-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 middle-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:gauge32 | +--ro min-jitter-value? yang:gauge32
| +--ro max-jitter-value? yang:gauge32 | +--ro max-jitter-value? yang:gauge32
| +--ro low-jitter-percentile? yang:gauge32 | +--ro low-jitter-percentile? yang:gauge32
| +--ro middle-jitter-percentile? yang:gauge32 | +--ro intermediate-jitter-percentile? yang:gauge32
| +--ro high-jitter-percentile? yang:gauge32 | +--ro high-jitter-percentile? yang:gauge32
+--ro vpn-underlay-transport-type? identityref +--ro vpn-underlay-transport-type? identityref
+--ro vpn-one-way-pm-statistics* [class-id] +--ro vpn-one-way-pm-statistics* [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 middle-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:gauge32 +--ro min-jitter-value? yang:gauge32
+--ro max-jitter-value? yang:gauge32 +--ro max-jitter-value? yang:gauge32
+--ro low-jitter-percentile? yang:gauge32 +--ro low-jitter-percentile? yang:gauge32
+--ro middle-jitter-percentile? yang:gauge32 +--ro intermediate-jitter-percentile? yang:gauge32
+--ro high-jitter-percentile? yang:gauge32 +--ro high-jitter-percentile? yang:gauge32
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 reference-time? yang:date-and-time +--ro reference-time? yang:date-and-time
+--ro inbound-octets? yang:counter64 +--ro inbound-octets? yang:counter64
+--ro inbound-unicast? yang:counter64 +--ro inbound-unicast? yang:counter64
+--ro inbound-nunicast? yang:counter64 +--ro inbound-nunicast? yang:counter64
+--ro inbound-discards? yang:counter32 +--ro inbound-discards? yang:counter32
+--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
skipping to change at page 11, line 7 skipping to change at page 11, line 34
Figure 6: Link and Termination point Level YANG Tree of the Figure 6: Link and Termination point Level YANG Tree of the
hierarchies hierarchies
For the data nodes of 'link' depicted in Figure 6, the YANG module For the data nodes of 'link' depicted in Figure 6, the YANG module
defines the following minimal set of link-level performance defines the following minimal set of link-level performance
attributes: attributes:
Percentile parameters: The module supports reporting delay and Percentile parameters: The module supports reporting delay and
jitter metric by percentile values. By default, low percentile jitter metric by percentile values. By default, low percentile
(10th percentile), mid percentile (50th percentile), high (10th percentile), intermediate percentile (50th percentile), high
percentile (90th percentile) are used. Setting a percentile to percentile (90th percentile) are used. Setting a percentile to
0.00 indicates the client is not interested in receiving 0.00 indicates the client is not interested in receiving
particular percentile. If all percentile nodes are set to 0.00, particular percentile. If all percentile nodes are set to 0.00,
this represents that no percentile related nodes will be reported this represents that no percentile related nodes will be reported
for a given performance metric (e.g., one-way delay, one-way delay for a given performance metric (e.g., one-way delay, one-way delay
variation) and only peak/min values will be reported. For variation) and only peak/min values will be reported. For
example, a client can inform the server that it is interested in example, a client can inform the server that it is interested in
receiving only high percentiles. Then for a given link, at a receiving only high percentiles. Then for a given link, at a
given "reference-time" and "measurement-interval", the 'high- given "start-time", "end-time" and "measurement-interval", the
delay-percentile' and 'high-jitter-percentile' will be reported. 'high-delay-percentile' and 'high-jitter-percentile' will be
An example to illustrate the use of percentiles is provided in reported. An example to illustrate the use of percentiles is
Appendix A.3. provided in Appendix A.3.
PM source ("pm-source"): Indicates the performance monitoring PM source ("pm-source"): Indicates the performance monitoring
source. The data for the topology link can be based, e.g., on source. The data for the topology link can be based, e.g., on
BGP-LS [RFC8571]. The statistics of the VPN abstract links can be BGP-LS [RFC8571]. The statistics of the VPN abstract links can be
collected based upon VPN OAM mechanisms, e.g., OAM mechanisms collected based upon VPN OAM mechanisms, e.g.,OAM mechanisms
specified in [I-D.ietf-opsawg-l3sm-l3nm], or Ethernet service OAM referenced in [I-D.ietf-opsawg-l3sm-l3nm], or Ethernet service OAM
specified in [I-D.ietf-opsawg-l2nm]. Alternatively, the data can [ITU-T-Y-1731] referenced in [I-D.ietf-opsawg-l2nm].
be based upon the underlay technology OAM mechanisms, for example, Alternatively, the data can be based upon the underlay technology
GRE tunnel OAM. OAM mechanisms, for example, Generic Routing Encapsulation (GRE)
tunnel OAM.
Measurement interval ("measurement-interval"): Specifies the Measurement interval ("measurement-interval"): Specifies the
performance measurement interval, in seconds. performance measurement interval, in seconds.
Reference time ("reference-time"): Indicates the start time of the Start time ("start-time"): Indicates the start time of the
performance measurement for link statistics. For termination performance measurement for link statistics.
point metrics, this parameter indicates the timestamp when the
End time ("end-time"): Indicates the end time of the performance
measurement for link statistics.
Reference time ("reference-time"): Indicates the timestamp when the
counters are obtained. counters are obtained.
Loss statistics: A set of one-way loss statistics attributes that Loss statistics: A set of one-way loss statistics attributes that
are used to measure end to end loss between VPN sites or between are used to measure end to end loss between VPN sites or between
any two network nodes. The exact loss value or the loss any two network nodes. The exact loss value or the loss
percentage can be reported. percentage can be reported.
Delay statistics: A set of one-way delay statistics attributes that Delay statistics: A set of one-way delay statistics attributes that
are used to measure end to end latency between VPN sites or are used to measure end to end latency between VPN sites or
between any two network nodes. The peak/min values or percentile between any two network nodes. The peak/min values or percentile
skipping to change at page 12, line 40 skipping to change at page 13, line 25
network access defined in [I-D.ietf-opsawg-l3sm-l3nm] or network access defined in [I-D.ietf-opsawg-l3sm-l3nm] or
[I-D.ietf-opsawg-l2nm]. When multiple VPN network accesses are [I-D.ietf-opsawg-l2nm]. When multiple VPN network accesses are
created using the same physical port, finer-grained metrics can be created using the same physical port, finer-grained metrics can be
monitored. monitored.
5. Network and VPN Service Performance Monitoring YANG Module 5. Network and VPN Service Performance Monitoring YANG Module
The "ietf-network-vpn-pm" module uses types defined in [RFC8345], The "ietf-network-vpn-pm" module uses types defined in [RFC8345],
[RFC6991], [RFC8532], and [I-D.ietf-opsawg-vpn-common]. [RFC6991], [RFC8532], and [I-D.ietf-opsawg-vpn-common].
<CODE BEGINS> file "ietf-network-vpn-pm@2021-01-18.yang" <CODE BEGINS> file "ietf-network-vpn-pm@2021-01-28.yang"
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 Types";
} }
import ietf-vpn-common { import ietf-vpn-common {
prefix vpn-common; prefix vpn-common;
reference reference
"RFC XXXX: A Layer 2/3 VPN Common YANG Model."; "RFC CCCC: A Layer 2/3 VPN Common YANG Model.";
// RFC Ed.: replace XXXX with actual RFC number and remove // RFC Ed.: replace CCCC with actual RFC number and remove
// this note. // this note.
} }
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 Operations, Administration, and Maintenance (OAM) Protocols
(OAM) Protocols That Use Connectionless Communications"; That Use Connectionless Communications";
} }
organization organization
"IETF OPSAWG Working Group"; "IETF OPSAWG Working Group";
contact contact
"Editor: Qin Wu "Editor: Qin Wu
<bill.wu@huawei.com> <bill.wu@huawei.com>
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>";
description description
"This module defines a model for Network and VPN Service Performance "This module defines a model for Network and VPN Service
monitoring. Performance monitoring.
Copyright (c) 2022 IETF Trust and the persons identified as Copyright (c) 2022 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
to the license terms contained in, the Simplified BSD License the license terms contained in, the Simplified BSD License set
set forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; This version of this YANG module is part of RFC XXXX
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.";
// RFC Ed.: update the date below with the date of RFC // RFC Ed.: update the date below with the date of RFC
// publication and remove this note. // publication and remove this note.
// RFC Ed.: replace XXXX with actual RFC number and remove // RFC Ed.: replace XXXX with actual RFC number and remove
// this note. // this note.
revision 2022-01-18 { revision 2022-01-28 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Model for Network and VPN Service Performance "RFC XXXX: A YANG Model for Network and VPN Service
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."; "Provider Edge (PE) node type.";
reference
"RFC 4026: Provider Provisioned
Virtual Private Network (VPN) Terminology";
} }
identity asbr { identity p {
base node-type; base node-type;
description description
"Autonomous System Border Router (ASBR) node type."; "Provider router node type.";
reference
"RFC 4026: Provider Provisioned
Virtual Private Network (VPN) Terminology";
} }
identity p { identity asbr {
base node-type; base node-type;
description description
"P node type."; "Autonomous System Border Router (ASBR) node type.";
reference
"RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)";
} }
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
"RFC8571: 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 {
base pm-source-type;
description
"Indicates One-Way Active Measurement Protocol(OWAMP)
as the performance monitoring metric source.";
reference
"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 Two-Way Active Measurement Protocol(TWAMP)
as the performance monitoring metric source."; as the performance monitoring metric source.";
reference reference
"RFC5357: : A Two-Way Active Measurement Protocol (TWAMP)"; "RFC 5357: A Two-Way Active Measurement Protocol (TWAMP)";
} }
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"; "ITU-T Y.1731: Operations, administration and
maintenance (OAM) functions and mechanisms
for Ethernet-based networks";
} }
typedef percentage { typedef percentage {
type decimal64 { type decimal64 {
fraction-digits 5; fraction-digits 5;
range "0..100"; range "0..100";
} }
description description
"Percentage."; "Percentage.";
} }
typedef percentile { typedef percentile {
type decimal64 { type decimal64 {
fraction-digits 5; fraction-digits 2;
range "1..100"; range "0..100";
} }
description description
"The percentile is a statistical value that indicates that a "The percentile is a value between 0 and 100,
certain percentage of a set of data falls below it."; e.g. 10.00, 99.90 ,99.99 etc..
For example, for a given one-way delay measurement,
if the percentile is set to 95.00 and
the 95th percentile one-way delay is 2 milliseconds,
then the 95 percent of the sample value
is less than or equal to 2 milliseconds.";
} }
grouping vpn-summary-statistics { grouping vpn-summary-statistics {
description description
"VPN Statistics grouping used for network topology "VPN Statistics grouping used for network topology
augmentation."; augmentation.";
container vpn-summary-statistics { container vpn-summary-statistics {
config false; config false;
description description
"Container for VPN summary statistics."; "Container for VPN summary statistics.";
container ipv4 { container ipv4 {
leaf maximum-routes { leaf maximum-routes {
type uint32; type uint32;
description description
"Indicates the maximum number of IPv4 routes for the VPN."; "Indicates the maximum number of IPv4 routes
for the VPN.";
} }
leaf total-active-routes { leaf total-active-routes {
type uint32; type uint32;
description description
"Indicates total active IPv4 routes for the VPN."; "Indicates total active IPv4 routes for the VPN.";
} }
description description
"IPv4-specific parameters."; "IPv4-specific parameters.";
} }
container ipv6 { container ipv6 {
leaf maximum-routes { leaf maximum-routes {
type uint32; type uint32;
description description
"Indicates the maximum number of IPv6 routes for the VPN."; "Indicates the maximum number of IPv6 routes
for the VPN.";
} }
leaf total-active-routes { leaf total-active-routes {
type uint32; type uint32;
description description
"Indicates total active IPv6 routes for the VPN."; "Indicates total active IPv6 routes for the VPN.";
} }
description description
"IPv6-specific parameters."; "IPv6-specific parameters.";
} }
container mac-num { container mac-num {
skipping to change at page 17, line 4 skipping to change at page 18, line 16
leaf total-active-mac-num { leaf total-active-mac-num {
type uint32; type uint32;
description description
"Total active MAC entries for the VPN."; "Total active MAC entries for the VPN.";
} }
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
"Per link loss statistics."; "Link loss summarized information. By default,
one way measurement protocol (e.g., OWAMP) is used
to measure one-way packet loss.";
reference
"RFC 4656: A One-way Active Measurement Protocol (OWAMP)";
leaf packet-loss-count { leaf packet-loss-count {
type yang:counter64; type yang:counter64;
description description
"Total received packet drops count."; "Total received packet drops count.";
} }
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. Express as percentage
of packets lost with respect to packets sent."; of packets lost with respect to packets sent.";
skipping to change at page 17, line 32 skipping to change at page 18, line 49
} }
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
"Link delay summarized information. By default, "Link delay summarized information. By default,
one way measurement protocol (e.g., OWAMP) is used one way measurement protocol (e.g., OWAMP) is used
to measure delay."; to measure delay.";
reference
"RFC 4656: A One-way Active Measurement Protocol (OWAMP)";
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 s, ms, ns, etc."; "Time units, where the options are s, ms, ns, etc.";
} }
leaf min-delay-value { leaf min-delay-value {
type yang:gauge64; type yang:gauge64;
skipping to change at page 18, line 8 skipping to change at page 19, line 26
type yang:gauge64; type yang:gauge64;
description description
"Maximum observed one-way delay."; "Maximum observed one-way delay.";
} }
leaf low-delay-percentile { leaf low-delay-percentile {
type yang:gauge64; type yang:gauge64;
description description
"Low percentile of observed one-way delay with "Low percentile of observed one-way delay with
specific measurement method."; specific measurement method.";
} }
leaf middle-delay-percentile { leaf intermediate-delay-percentile {
type yang:gauge64; type yang:gauge64;
description description
"Middle percentile of observed one-way delay with "Intermediate percentile of observed one-way delay with
specific measurement method."; specific measurement method.";
} }
leaf high-delay-percentile { leaf high-delay-percentile {
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
"Link jitter summarized information. By default, "Link jitter summarized information. By default,
jitter is measured using one-way IP Packet Delay Variation jitter is measured using one-way IP Packet
(IPDV)."; Delay Variation (IPDV).";
reference
"RFC 3393: IP Packet Delay Variation Metric
for IP Performance Metrics (IPPM)";
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 s, ms, ns, etc."; "Time units, where the options are s, ms, ns, etc.";
} }
leaf min-jitter-value { leaf min-jitter-value {
type yang:gauge32; type yang:gauge32;
skipping to change at page 19, line 6 skipping to change at page 20, line 28
leaf max-jitter-value { leaf max-jitter-value {
type yang:gauge32; type yang:gauge32;
description description
"Maximum observed one-way jitter."; "Maximum observed one-way jitter.";
} }
leaf low-jitter-percentile { leaf low-jitter-percentile {
type yang:gauge32; type yang:gauge32;
description description
"Low percentile of observed one-way jitter."; "Low percentile of observed one-way jitter.";
} }
leaf middle-jitter-percentile { leaf intermediate-jitter-percentile {
type yang:gauge32; type yang:gauge32;
description description
"Middle percentile of observed one-way jitter."; "Intermediate percentile of observed one-way jitter.";
} }
leaf high-jitter-percentile { leaf high-jitter-percentile {
type yang:gauge32; type yang:gauge32;
description description
"High percentile of observed one-way jitter."; "High percentile of observed one-way jitter.";
} }
} }
} }
grouping tp-svc-telemetry { grouping tp-svc-telemetry {
skipping to change at page 19, line 31 skipping to change at page 21, line 4
type yang:date-and-time; type yang:date-and-time;
config false; config false;
description description
"Indicates the time when the statistics are collected."; "Indicates the time when the statistics are collected.";
} }
leaf inbound-octets { leaf inbound-octets {
type yang:counter64; type yang:counter64;
description description
"The total number of octets received on the "The total number of octets received on the
interface, including framing characters."; interface, including framing characters.";
} }
leaf inbound-unicast { leaf inbound-unicast {
type yang:counter64; type yang:counter64;
description description
"Inbound unicast packets were received, and delivered "The total number of inbound unicast packets.";
to a higher layer during the last period.";
} }
leaf inbound-nunicast { leaf inbound-nunicast {
type yang:counter64; type yang:counter64;
description description
"The number of non-unicast (i.e., subnetwork- "The total number of non-unicast
broadcast or subnetwork-multicast) packets (i.e., broadcast or multicast) packets.";
delivered to a higher-layer protocol.";
} }
leaf inbound-discards { leaf inbound-discards {
type yang:counter32; type yang:counter32;
description description
"The number of inbound packets which were chosen "The number of inbound packets that were chosen to be
to be discarded even though no errors had been discarded even though no errors had been detected.
detected to prevent their being deliverable to a One possible reason for discarding such a
higher-layer protocol."; packet could be to free up buffer space";
} }
leaf inbound-errors { leaf inbound-errors {
type yang:counter64; type yang:counter64;
description description
"The number of inbound packets that contained "The number of inbound packets that contained errors.";
errors preventing them from being deliverable to a
higher-layer protocol.";
} }
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 which 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;
description description
"The total number of packets that higher-level "The total number of outbound unicast packets.";
protocols requested be transmitted to a
subnetwork-unicast address, including those that
were discarded or not sent.";
} }
leaf outbound-nunicast { leaf outbound-nunicast {
type yang:counter64; type yang:counter64;
description description
"The total number of packets that higher-level "The total number of outbound non unicast
protocols requested be transmitted to a non- (i.e., broadcast or multicast) packets.";
unicast (i.e., a subnetwork-broadcast or
subnetwork-multicast) address, including those
that were discarded or not sent.";
} }
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 which were chosen
to be discarded even though no errors had been to be discarded even though no errors had been
detected to prevent their being transmitted. One detected to prevent their being transmitted.
possible reason for discarding such a packet could One possible reason for discarding such a packet could
be to free up buffer space."; be to free up buffer space.";
} }
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 preventing them from being deliverable to a errors.";
higher-layer protocol.";
} }
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-type { container service-type {
presence "Indicates network service topology."; presence "Indicates network service topology.";
skipping to change at page 22, line 43 skipping to change at page 24, line 4
"Augments the network node with VPN specific attributes."; "Augments the network node with VPN specific attributes.";
leaf role { leaf role {
type identityref { type identityref {
base vpn-common:role; base vpn-common:role;
} }
default "vpn-common:any-to-any-role"; default "vpn-common:any-to-any-role";
description description
"Role of the node in the VPN."; "Role of the node in the VPN.";
} }
uses vpn-summary-statistics; uses vpn-summary-statistics;
} }
augment "/nw:networks/nw:network/nt:link" { augment "/nw:networks/nw:network/nt:link" {
description description
"Augments the network topology link with performance monitoring "Augments the network topology link with performance
attributes."; monitoring attributes.";
container pm-attributes { container pm-attributes {
description description
"Container for PM attributes."; "Container for PM attributes.";
leaf low-percentile { leaf low-percentile {
type percentile; type percentile;
default "10.00"; default "10.00";
description description
"Low percentile to report. Setting low-percentile "Low percentile to report. Setting low-percentile
into 0.00 indicates the client is not interested in receiving into 0.00 indicates the client is not interested
low percentile."; in receiving low percentile.";
} }
leaf middle-percentile { leaf intermediate-percentile {
type percentile; type percentile;
default "50.00"; default "50.00";
description description
"Middle percentile to report. Setting middle-percentile "Intermediate percentile to report. Setting
into 0.00 indicates the client is not interested in receiving intermediate-percentile into 0.00 indicates the client
middle percentile."; is not interested in receiving intermediate percentile.";
} }
leaf high-percentile { leaf high-percentile {
type percentile; type percentile;
default "95.00"; default "95.00";
description description
"High percentile to report. Setting high-percentile "High percentile to report. Setting high-percentile
into 0.00 indicates the client is not interested in receiving into 0.00 indicates the client is not interested in
high percentile."; receiving high percentile.";
} }
leaf measurement-interval { leaf measurement-interval {
type uint32; type uint32;
units "seconds"; units "seconds";
default "60"; default "60";
description description
"Indicates the time interval to perform PM measurement."; "Indicates the time interval to perform PM measurement.";
} }
leaf reference-time { leaf start-time {
type yang:date-and-time; type yang:date-and-time;
config false; config false;
description description
"The time that the current measurement-interval started."; "The time that the current measurement started.";
}
leaf end-time {
type yang:date-and-time;
config false;
description
"The time that the current measurement ended.";
} }
leaf pm-source { leaf pm-source {
type identityref { type identityref {
base pm-source-type; base pm-source-type;
} }
config false; config false;
description description
"The OAM tool used to collect the PM data."; "The OAM tool used to collect the PM data.";
} }
container one-way-pm-statistics { container one-way-pm-statistics {
skipping to change at page 25, line 9 skipping to change at page 26, line 25
"Augments the network topology termination point with "Augments the network topology termination point with
performance monitoring attributes."; performance monitoring attributes.";
container pm-statistics { container pm-statistics {
config false; config false;
description description
"Container for termination point PM attributes."; "Container for termination point PM attributes.";
uses tp-svc-telemetry; uses tp-svc-telemetry;
} }
} }
augment "/nw:networks/nw:network/nw:node/nt:termination-point/pm-statistics" { augment "/nw:networks/nw:network/nw:node"
+ "/nt:termination-point/pm-statistics" {
when '../../../nw:network-types/nvp:service-type' { when '../../../nw:network-types/nvp:service-type' {
description description
"Augments only for VPN Network topology."; "Augments only for VPN Network topology.";
} }
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
skipping to change at page 28, line 5 skipping to change at page 29, line 32
10.1. Normative References 10.1. Normative References
[I-D.ietf-opsawg-vpn-common] [I-D.ietf-opsawg-vpn-common]
Barguil, S., Dios, O. G. D., Boucadair, M., and Q. Wu, "A Barguil, S., Dios, O. G. D., Boucadair, M., and Q. Wu, "A
Layer 2/3 VPN Common YANG Model", Work in Progress, Layer 2/3 VPN Common YANG Model", Work in Progress,
Internet-Draft, draft-ietf-opsawg-vpn-common-12, 29 Internet-Draft, draft-ietf-opsawg-vpn-common-12, 29
September 2021, <https://www.ietf.org/archive/id/draft- September 2021, <https://www.ietf.org/archive/id/draft-
ietf-opsawg-vpn-common-12.txt>. ietf-opsawg-vpn-common-12.txt>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC3393] Demichelis, C. and P. Chimento, "IP Packet Delay Variation [RFC3393] Demichelis, C. and P. Chimento, "IP Packet Delay Variation
Metric for IP Performance Metrics (IPPM)", RFC 3393, Metric for IP Performance Metrics (IPPM)", RFC 3393,
DOI 10.17487/RFC3393, November 2002, DOI 10.17487/RFC3393, November 2002,
<https://www.rfc-editor.org/info/rfc3393>. <https://www.rfc-editor.org/info/rfc3393>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
skipping to change at page 28, line 46 skipping to change at page 30, line 22
<https://www.rfc-editor.org/info/rfc6374>. <https://www.rfc-editor.org/info/rfc6374>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341, Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018, DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>. <https://www.rfc-editor.org/info/rfc8341>.
[RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N.,
skipping to change at page 30, line 5 skipping to change at page 31, line 26
November 2021, <https://www.ietf.org/archive/id/draft- November 2021, <https://www.ietf.org/archive/id/draft-
ietf-opsawg-l2nm-12.txt>. ietf-opsawg-l2nm-12.txt>.
[I-D.ietf-opsawg-l3sm-l3nm] [I-D.ietf-opsawg-l3sm-l3nm]
Barguil, S., Dios, O. G. D., Boucadair, M., Munoz, L. A., Barguil, S., Dios, O. G. D., Boucadair, M., Munoz, L. A.,
and A. Aguado, "A Layer 3 VPN Network YANG Model", Work in and A. Aguado, "A Layer 3 VPN Network YANG Model", Work in
Progress, Internet-Draft, draft-ietf-opsawg-l3sm-l3nm-18, Progress, Internet-Draft, draft-ietf-opsawg-l3sm-l3nm-18,
8 October 2021, <https://www.ietf.org/archive/id/draft- 8 October 2021, <https://www.ietf.org/archive/id/draft-
ietf-opsawg-l3sm-l3nm-18.txt>. ietf-opsawg-l3sm-l3nm-18.txt>.
[ITU-T-Y-1731]
ITU-T, "Operator Ethernet Service Definition", August
2015, <https://www.itu.int/rec/T-REC-Y.1731/en>.
[RFC4656] Shalunov, S., Teitelbaum, B., Karp, A., Boote, J., and M.
Zekauskas, "A One-way Active Measurement Protocol
(OWAMP)", RFC 4656, DOI 10.17487/RFC4656, September 2006,
<https://www.rfc-editor.org/info/rfc4656>.
[RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. [RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J.
Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)", Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)",
RFC 5357, DOI 10.17487/RFC5357, October 2008, RFC 5357, DOI 10.17487/RFC5357, October 2008,
<https://www.rfc-editor.org/info/rfc5357>. <https://www.rfc-editor.org/info/rfc5357>.
[RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. [RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S.
Previdi, "OSPF Traffic Engineering (TE) Metric Previdi, "OSPF Traffic Engineering (TE) Metric
Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015, Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015,
<https://www.rfc-editor.org/info/rfc7471>. <https://www.rfc-editor.org/info/rfc7471>.
skipping to change at page 30, line 45 skipping to change at page 32, line 27
RFC 8571, DOI 10.17487/RFC8571, March 2019, RFC 8571, DOI 10.17487/RFC8571, March 2019,
<https://www.rfc-editor.org/info/rfc8571>. <https://www.rfc-editor.org/info/rfc8571>.
[RFC8969] Wu, Q., Ed., Boucadair, M., Ed., Lopez, D., Xie, C., and [RFC8969] Wu, Q., Ed., Boucadair, M., Ed., Lopez, D., Xie, C., and
L. Geng, "A Framework for Automating Service and Network L. Geng, "A Framework for Automating Service and Network
Management with YANG", RFC 8969, DOI 10.17487/RFC8969, Management with YANG", RFC 8969, DOI 10.17487/RFC8969,
January 2021, <https://www.rfc-editor.org/info/rfc8969>. January 2021, <https://www.rfc-editor.org/info/rfc8969>.
Appendix A. Illustrating Examples Appendix A. Illustrating Examples
A.1. Example of Pub/Sub Retrieval A.1. VPN Performance Subscription Example
The example shown in Figure 7 illustrates how a client subscribes to The example shown in Figure 7 illustrates how a client subscribes to
the performance monitoring information between nodes ('node-id') A the performance monitoring information between nodes ('node-id') A
and B in the L3 network topology. The performance monitoring and B in the L3 network topology. The performance monitoring
parameter that the client is interested in is end-to-end loss. parameter that the client is interested in is end-to-end loss.
<rpc netconf:message-id="101" POST /restconf/operations
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> /ietf-subscribed-notifications:establish-subscription
<establish-subscription {
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> "ietf-subscribed-notifications:input":{
<stream-subtree-filter> "stream-subtree-filter":{
<networks "ietf-network-topo:networks":{
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topo"> "network":{
<network> "network-id":"l3-network",
<network-id>l3-network</network-id> "ietf-network-vpn-pm:service-type":{
<service-type "ietf-vpn-common:l3vpn":{}
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"> },
ietf-vpn-common:l3vpn "node":[
</service-type> {
<node> "node-id":"A",
<node-id>A</node-id> "ietf-network-vpn-pm:pm-attributes":{
<pm-attributes> "node-type":"PE"
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"> },
<node-type>pe</node-type> "termination-point":{
</pm-attributes> "tp-id":"1-0-1",
<termination-point }
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology"> },
<tp-id>1-0-1</tp-id> {
<pm-statistics "node-id":"B",
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"> "ietf-network-vpn-pm:pm-attributes":{
<inbound-octets>150</inbound-octets> "node-type":"PE"
<outbound-octets>100</outbound-octets> },
</pm-statistics> "termination-point":{
</termination-point> "tp-id":"2-0-1",
</node> }
<node> }
<node-id>B</node-id> ],
<pm-attributes> "link":{
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"> "link-id":"A-B",
<node-type>pe</node-type> "source":{
</pm-attributes> "source-node":"A"
<termination-point },
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology"> "destination":{
<tp-id>2-0-1</tp-id> "dest-node":"B"
<pm-statistics },
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"> "ietf-network-vpn-pm:pm-attributes":{
<inbound-octets>150</inbound-octets> "one-way-pm-statistics":{
<outbound-octets>100</outbound-octets> "loss-statistics":{
</pm-statistics> "packet-loss-count":{}
</termination-point> }
</node> },
<link "vpn-underlay-transport-type":"ietf-vpn-common:gre"
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology"> }
<link-id>A-B</link-id> }
<source> }
<source-node>A</source-node> }
</source> },
<destination> "ietf-yang-push:periodic":{
<dest-node>B</dest-node> "ietf-yang-push:period":"500"
</destination> }
<vpn-underlay-transport-type>mpls-te</vpn-underlay-transport-type> }
<pm-attributes }
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm">
<one-way-pm-statistics>
<loss-statistics>
<packet-loss-count>100</packet-loss-count>
</loss-statistics>
</one-way-pm-statistics>
</pm-attributes>
</link>
</network>
</networks>
</stream-subtree-filter>
<period
xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push:1.0">
500
</period>
</establish-subscription>
</rpc>
Figure 7: Pub/Sub Retrieval Figure 7: Pub/Sub Retrieval
A.2. Example of RPC-based Retrieval A.2. Example of VPN Performance Snapshot
This example, depicted in Figure 8, illustrates how a client can use This example, depicted in Figure 8, illustrates an VPN PM instance
the RPC model to fetch performance data on demand. For example, the example in which a client uses RESTCONF [RFC8040] to fetch the
client requests "packet-loss-count" between 'source-node' A and performance data of the link and TP belonged to "VPN1".
'dest-node' B that belong to the same VPN ('VPN1').
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" {
message-id="1"> "ietf-network-topo:networks": {
<report "network": {
xmlns="urn:ietf:params:xml:ns:yang:example-service-pm-report"> "network-id": "vpn1",
<networks xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topo"> "node": [
<network> {
<network-id>vpn1</network-id> "node-id": "A",
<node> "ietf-network-vpn-pm:pm-attributes": {
<node-id>A</node-id> "node-type": "PE"
<pm-attributes },
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm"> "termination-point": {
<node-type>pe</node-type> "tp-id": "1-0-1",
"ietf-network-vpn-pm:pm-statistics": {
"inbound-octets": "100",
"outbound-octets": "150"
}
}
},
{
"node-id": "B",
"ietf-network-vpn-pm:pm-attributes": {
"node-type": "PE"
},
"termination-point": {
"tp-id": "2-0-1",
"ietf-network-vpn-pm:pm-statistics": {
"inbound-octets": "150",
"outbound-octets": "100"
}
}
}
],
"link": {
"link-id": "A-B",
"source": { "source-node": "A" },
"destination": { "dest-node": "B" },
"ietf-network-pm:pm-attributes": {
"one-way-pm-statistics": {
"loss-statistics": { "packet-loss-count": "120" }
},
"vpn-underlay-transport-type": "ietf-vpn-common:gre"
},
}
}
}
}
</pm-attribtues> Figure 8
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>1-0-1</tp-id>
<pm-statistics
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm">
<inbound-octets>100</inbound-octets>
<outbound-octets>150</outbound-octets>
</pm-statistics>
</termination-point>
</node>
<node>
<node-id>B</node-id>
<pm-attributes
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm">
<node-type>pe</node-type>
</pm-attribtues>
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>2-0-1</tp-id>
<pm-statistics
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm">
<inbound-octets>150</inbound-octets>
<outbound-octets>100</outbound-octets>
</pm-statistics>
</termination-point>
</node>
<link>
<link-id>A-B</link-id>
<source>
<source-node>A</source-node>
</source>
<destination>
<dest-node>B</dest-node>
</destination>
<pm-attributes
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-pm">
<one-way-pm-statistics>
<loss-statistics>
<packet-loss-count>120</packet-loss-count>
</loss-statistics>
</one-way-pm-statistics>
</pm-attributes>
<vpn-underlay-transport-type>mpls-te</vpn-underlay-transport-type>
</link>
</network>
</report>
</rpc>
Figure 8
A.3. Example of Percentile Monitoring A.3. Example of Percentile Monitoring
The following shows an example of a percentile measurement for a VPN The following shows an example of a percentile measurement for a VPN
link. link.
{ {
"ietf-network-topology:link":[ "ietf-network-topology:link":[
{ {
"link-id":"vpn1-link1", "link-id":"vpn1-link1",
"source":{ "source":{
"source-node":"vpn-node1" "source-node":"vpn-node1"
}, },
"destination":{ "destination":{
"dest-node":"vpn-node3" "dest-node":"vpn-node3"
}, },
"ietf-network-vpn-pm:pm-attributes":{ "ietf-network-vpn-pm:pm-attributes":{
"low-percentile":"20.00", "low-percentile":"20.00",
"middle-percentile":"50.00", "middle-percentile":"50.00",
"high-percentile":"90.00", "high-percentile":"90.00",
"one-way-pm-statistics:delay-statistics":{ "one-way-pm-statistics:delay-statistics":{
"unit-values":"lime:milliseconds", "unit-values":"lime: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",
"middle-delay-percentile":"77", "middle-delay-percentile":"77",
"high-delay-percentile":"98" "high-delay-percentile":"98"
},
"ietf-network-vpn-pm:vpn-underlay-transport-type":
"ietf-vpn-common:gre",
} }
} }
"ietf-network-vpn-pm:vpn-underlay-transport-type":"ietf-vpn-common:gre", ]
} }
]
}
Authors' Addresses Authors' Addresses
Bo Wu (editor) Bo Wu (editor)
Huawei Huawei
101 Software Avenue, Yuhua District 101 Software Avenue, Yuhua District
Nanjing Nanjing
Jiangsu, 210012 Jiangsu, 210012
China China
 End of changes. 84 change blocks. 
324 lines changed or deleted 360 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/