rfc9375.original | rfc9375.txt | |||
---|---|---|---|---|
OPSAWG Working Group B. Wu, Ed. | Internet Engineering Task Force (IETF) B. Wu, Ed. | |||
Internet-Draft Q. Wu, Ed. | Request for Comments: 9375 Q. Wu, Ed. | |||
Intended status: Standards Track Huawei | Category: Standards Track Huawei | |||
Expires: 15 May 2023 M. Boucadair, Ed. | ISSN: 2070-1721 M. Boucadair, Ed. | |||
Orange | Orange | |||
O. Gonzalez de Dios | O. Gonzalez de Dios | |||
Telefonica | Telefonica | |||
B. Wen | B. Wen | |||
Comcast | Comcast | |||
11 November 2022 | April 2023 | |||
A YANG Model for Network and VPN Service Performance Monitoring | A YANG Data Model for Network and VPN Service Performance Monitoring | |||
draft-ietf-opsawg-yang-vpn-service-pm-15 | ||||
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 | |||
underlay networks and overlay VPN services that can be used to | underlay networks and overlay VPN services that can be used to | |||
monitor and manage network performance on the topology of both | monitor and manage network performance on the topology of both | |||
layers. | layers. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 15 May 2023. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9375. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 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 | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology | |||
2.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Acronyms | |||
3. Network and VPN Service Performance Monitoring Model Usage . 4 | 3. Network and VPN Service Performance Monitoring Model Usage | |||
3.1. Collecting Data via Pub/Sub Mechanism . . . . . . . . . . 6 | 3.1. Collecting Data via the Pub/Sub Mechanism | |||
3.2. Collecting Data On Demand . . . . . . . . . . . . . . . . 6 | 3.2. Collecting Data On Demand | |||
4. Description of The Data Model . . . . . . . . . . . . . . . . 6 | 4. Description of the YANG Data Model | |||
4.1. Layering Relationship between Multiple Layers of | 4.1. Layering Relationship between Multiple Layers of Topology | |||
Topology . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.2. Network-Level Performance Monitoring Augmentation | |||
4.2. Network Level Performance Monitoring Augmentation . . . . 9 | 4.3. Node-Level Performance Monitoring Augmentation | |||
4.3. Node Level Performance Monitoring Augmentation . . . . . 10 | 4.4. Performance Monitoring Augmentation at Link and Termination | |||
4.4. Link and Termination Point Level Performance Monitoring | Point Level | |||
Augmentation . . . . . . . . . . . . . . . . . . . . . . 11 | 5. Network and VPN Service Performance Monitoring YANG Module | |||
5. Network and VPN Service Performance Monitoring YANG Module . 16 | 6. Security Considerations | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | 7. IANA Considerations | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | 8. References | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | 8.1. Normative References | |||
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 34 | 8.2. Informative References | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | Appendix A. Illustrative Examples | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 35 | A.1. Example of VPN Performance Subscription | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 37 | A.2. Example of VPN Performance Snapshot | |||
Appendix A. Illustrative Examples . . . . . . . . . . . . . . . 39 | A.3. Example of Percentile Monitoring | |||
A.1. VPN Performance Subscription Example . . . . . . . . . . 39 | Acknowledgements | |||
A.2. Example of VPN Performance Snapshot . . . . . . . . . . . 40 | Contributors | |||
A.3. Example of Percentile Monitoring . . . . . . . . . . . . 42 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
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 [RFC7950] models. It defines that the | management with YANG [RFC7950] data models. It states that the | |||
performance measurement telemetry model should be tied to 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 | 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 | models to monitor the overall network performance and the Service | |||
Level Agreements (SLAs). | Level Agreements (SLAs). | |||
The performance of VPN services is associated with the performance | The performance of VPN services is associated with the performance | |||
changes of the underlay networks that carries VPN services. For | changes of the underlay networks that carry VPN services. For | |||
example, link delay between Provider Edge (PE) and Provider (P) | example, link delay between Provider Edge (PE) and Provider (P) | |||
devices and packet loss status on Layer 2 and Layer 3 interfaces | devices and packet loss status on Layer 2 and Layer 3 interfaces | |||
connecting PEs and Customer Edge (CE) devices directly impact VPN | connecting PEs and Customer Edge (CE) devices directly impact VPN | |||
service performance. Additionally, the integration of Layer 2/Layer | service performance. Additionally, the integration of Layer 2 / | |||
3 VPN performance and network performance data enables the | Layer 3 VPN performance and network performance data enables the | |||
orchestrator to monitor consistently. Therefore, this document | orchestrator to monitor consistently. Therefore, this document | |||
defines a YANG module for both network and VPN service performance | defines a YANG module for both network and VPN service performance | |||
monitoring (PM). The module can be used to monitor and manage | monitoring (PM). The module can be used to monitor and manage | |||
network performance on the topology level or the service topology | network performance on the topology level or the service topology | |||
between VPN sites. | between VPN sites. | |||
The base model presented here can be extended to include technology- | The base model specified in Section 5 can be extended to include | |||
specific details, e.g., adding Explicit Congestion Notification (ECN) | technology-specific details, e.g., adding Explicit Congestion | |||
statistics for Layer 3 networks or VPN services to support | Notification (ECN) statistics for Layer 3 networks or VPN services to | |||
performance-sensitive applications. | support performance-sensitive applications. | |||
This document does not introduce new metrics for network performance | This document does not introduce new metrics for network performance | |||
or mechanisms for measuring network performance, but uses the | or mechanisms for measuring network performance, but it uses the | |||
existing mechanisms and statistics to monitor the performance of the | existing mechanisms and statistics to monitor the performance of the | |||
network and the services. | network and the services. | |||
The YANG module defined in this document is designed as an | The YANG module defined in this document is designed as an | |||
augmentation to the network topology YANG model defined in [RFC8345] | augmentation to the network topology YANG data model defined in | |||
and draws on relevant YANG types defined in [RFC6991], [RFC8345], | [RFC8345] and draws on relevant YANG types defined in [RFC6991], | |||
[RFC8532], and [RFC9181]. | [RFC8345], [RFC8532], and [RFC9181]. | |||
Appendix A provides a set of examples to illustrate the use of the | Appendix A provides a set of examples to illustrate the use of the | |||
module. | module. | |||
2. Terminology | 2. Terminology | |||
The following terms are defined in [RFC7950] and are used in this | The following terms are defined in [RFC7950] and are used in this | |||
specification: | specification: | |||
* augment | * augment | |||
skipping to change at page 4, line 9 ¶ | skipping to change at line 143 ¶ | |||
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 | 2.1. Acronyms | |||
The following acronyms are used in the document: | The following acronyms are used in the document: | |||
CE Customer Edge, as defined in [RFC4026] | CE Customer Edge, as defined in [RFC4026] | |||
L2VPN Layer 2 Virtual Private Network, as defined in [RFC4026] | ||||
L3VPN Layer 3 Virtual Private Network, as defined in [RFC4026] | L2VPN Layer 2 Virtual Private Network, as defined in [RFC4026] | |||
L2NM L2VPN Network Model | ||||
L3NM L3VPN Network Model | L3VPN Layer 3 Virtual Private Network, as defined in [RFC4026] | |||
MPLS Multiprotocol Label Switching | ||||
OAM Operations, Administration, and Maintenance | L2NM L2VPN Network Model | |||
OSPF Open Shortest Path First | ||||
OWAMP One-Way Active Measurement Protocol, as defined in [RFC4656] | L3NM L3VPN Network Model | |||
P Provider Router, as defined in [RFC4026] | ||||
PE Provider Edge, as defined in [RFC4026] | MPLS Multiprotocol Label Switching | |||
PM Performance Monitoring | ||||
SLA Service Level Agreement | OAM Operations, Administration, and Maintenance | |||
TP Termination Point, as defined in [RFC8345] section 4.2 | ||||
TWAMP Two-Way Active Measurement Protocol, as defined in [RFC5357] | OSPF Open Shortest Path First | |||
VPLS Virtual Private LAN Service, as defined in [RFC4026] | ||||
VPN Virtual Private Network | OWAMP One-Way Active Measurement Protocol, as defined in | |||
[RFC4656] | ||||
P Provider router, as defined in [RFC4026] | ||||
PE Provider Edge, as defined in [RFC4026] | ||||
PM Performance Monitoring | ||||
SLA Service Level Agreement | ||||
TP Termination Point, as defined in [RFC8345], Section 4.2 | ||||
TWAMP Two-Way Active Measurement Protocol, as defined in | ||||
[RFC5357] | ||||
VPLS Virtual Private LAN Service, as defined in [RFC4026] | ||||
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 | |||
(Section 3 of [RFC8969]). Particularly, together with service and | (Section 3 of [RFC8969]). Particularly, together with service and | |||
network models, performance measurement telemetry models are needed | network models, performance measurement telemetry models are needed | |||
to monitor network performance to meet specific service requirements | to monitor network performance to meet specific service requirements | |||
(typically captured in an SLA). | (typically captured in an SLA). | |||
+---------------+ | +---------------+ | |||
| Customer | | | Customer | | |||
+-------+-------+ | +-------+-------+ | |||
| | | | |||
Customer Service Models | | Customer Service Models | | |||
| | | | |||
+-------+---------+ | +-------+---------+ | |||
| Service | | | Service | | |||
| Orchestration | | | Orchestrator | | |||
+------+-+--------+ | +------+-+--------+ | |||
| | | | | | |||
Network Service Models | | Network and VPN Service PM Models | Network Service Models | | Network and VPN Service PM Models | |||
| | | | | | |||
+------+-+--------+ | +------+-+--------+ | |||
| Network | | | Network | | |||
| Controller | | | Controller | | |||
+-------+---------+ | +-------+---------+ | |||
| | | | |||
+-----------------------+------------------------+ | +-----------------------+------------------------+ | |||
Network | Network | |||
Figure 1: An Example Architecture with a Service Orchestrator | Figure 1: An Example Architecture with a Service Orchestrator | |||
The network and VPN service performance monitoring (PM) model can be | The network and VPN service PM model can be used to expose | |||
used to expose operational performance information to the layer | operational performance information to the layer above, e.g., to an | |||
above, e.g., to an orchestrator or other BSS/OSS client application, | orchestrator or other Business Support System (BSS) / Operational | |||
via standard network management APIs. Figure 1 shows an example | Support System (OSS) client application, via standard network | |||
usage in a layered model architecture described in [RFC8309]. | management APIs. Figure 1 shows an example usage in a layered model | |||
architecture as described in [RFC8309]. | ||||
Before using the model, the controller needs to establish topology | Before using the model, the controller needs to establish topology | |||
visibility of the network and VPN. For example, the controller can | visibility of the network and VPN. For example, the controller can | |||
use network information from [RFC8345], [I-D.ietf-opsawg-sap] or VPN | use network information from [RFC8345] and [YANG-SAP] or VPN | |||
information from the L3VPN Network Model (L3NM) [RFC9182] and the | information from the L3VPN Network Model (L3NM) [RFC9182] and the | |||
L2VPN Network Model (L2NM) [RFC9291]. Then the controller derives | L2VPN Network Model (L2NM) [RFC9291]. Then the controller derives | |||
network or VPN level performance data by aggregating (and filtering) | network or VPN performance data by aggregating (and filtering) lower- | |||
lower-level data collected via monitoring counters of the devices | level data collected via monitoring counters of the devices involved. | |||
involved. | ||||
The network or VPN performance data can be based on different | The network or VPN performance data can be based on different | |||
sources. For example, the performance monitoring data per link in | sources. For example, the performance monitoring data per link in | |||
the underlying networks can be collected using a network performance | the underlying networks can be collected using a network performance | |||
measurement method such as One-Way Active Measurement Protocol | measurement method such as the One-Way Active Measurement Protocol | |||
(OWAMP) [RFC4656], Two-Way Active Measurement Protocol (TWAMP) | (OWAMP) [RFC4656], Two-Way Active Measurement Protocol (TWAMP) | |||
[RFC5357], Simple Two-way Active Measurement Protocol (STAMP) | [RFC5357], Simple Two-way Active Measurement Protocol (STAMP) | |||
[RFC8762], Multiprotocol Label Switching (MPLS) Loss and Delay | [RFC8762], Multiprotocol Label Switching (MPLS) Loss and Delay | |||
Measurement [RFC6374] or In Situ OAM (IOAM) [RFC9197]. The | Measurement [RFC6374], or In situ OAM (IOAM) [RFC9197]. The | |||
performance monitoring information reflecting the quality of the | performance monitoring information reflecting the quality of the | |||
network or VPN service (e.g., network performance data between source | network or VPN service (e.g., network performance data between source | |||
node and destination node in the networks or between VPN sites) can | node and destination node in the networks or between VPN sites) can | |||
be computed and aggregated, for example, using the information from | be computed and aggregated, for example, using the information from | |||
the Traffic Engineering Database (TED), [RFC7471] [RFC8570] | the Traffic Engineering Database (TED) [RFC7471] [RFC8570] [RFC8571] | |||
[RFC8571], or LMAP (Large-Scale Measurement Platform) [RFC8194]. | or Large-Scale Measurement Platform (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 network-wide measurement intervals to align | This document defines network-wide measurement intervals to align | |||
measurement requirements for networks or VPN services. | measurement requirements for networks or VPN services. | |||
3.1. Collecting Data via Pub/Sub Mechanism | 3.1. Collecting Data via the Pub/Sub Mechanism | |||
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 | subscription model specified in [RFC8641] to subscribe to the | |||
specific network performance data or VPN service performance data | specific network performance data or VPN service performance data | |||
they are interested in, at the data source. For example, networks or | they are interested in, at the data source. For example, network or | |||
VPN topologies updates may be obtained through on-change | VPN topology updates may be obtained through on-change notifications | |||
notifications [RFC8641]. For dynamic PM data, e.g. VRF routes or | [RFC8641]. For dynamic PM data (e.g., VPN Routing and Forwarding | |||
MAC entries, link metrics, and interface metrics, various | (VRF) routes or Media Access Control (MAC) entries, link metrics, and | |||
notifications can be specified to obtain more complete data. A | interface metrics), various notifications can be specified to obtain | |||
periodic notification [RFC8641] can be specified to obtain real-time | more complete data. A periodic notification [RFC8641] can be | |||
performance data. For devices/controllers that maintain historical | specified to obtain real-time performance data. For devices/ | |||
performance data for a period of time, a replay notification | controllers that maintain historical performance data for a period of | |||
[RFC5277] or [RFC8639] can be used to obtain the historical data. | time, a replay notification (see [RFC5277] or [RFC8639]) can be used | |||
And alarm notifications [RFC8632] can be specified to get alarms for | to obtain the historical data. And alarm notifications [RFC8632] can | |||
the metrics which exceed or fall below the performance threshold. | be specified to get alarms for the metrics that exceed or fall below | |||
the performance threshold. | ||||
The data source can, then, use the network and VPN service | The data source can then use the network and VPN service performance | |||
performance monitoring model defined in this document and the YANG | monitoring model defined in this document and the YANG-Push data | |||
Push model [RFC8641] to distribute specific telemetry data to target | model [RFC8641] to distribute specific telemetry data to target | |||
recipients. | recipients. | |||
3.2. Collecting Data On Demand | 3.2. Collecting Data On Demand | |||
To obtain a snapshot of performance data from a network topology or a | To obtain a snapshot of performance data from a network topology or a | |||
VPN service topology, service-assurance applications may retrieve | 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 [RFC6241] or a RESTCONF [RFC8040] interface. For example, a | Network Configuration Protocol (NETCONF) [RFC6241] or a RESTCONF | |||
specified "link-id" of a VPN can be used as a filter in a RESTCONF | [RFC8040] interface. For example, a specified "link-id" of a VPN can | |||
GET request to retrieve per-link VPN PM data. | be used as a filter in a RESTCONF GET request to retrieve per-link | |||
VPN PM data. | ||||
4. Description of The Data Model | 4. Description of the YANG Data Model | |||
This document defines the YANG module, "ietf-network-vpn-pm", which | This document defines the "ietf-network-vpn-pm" YANG module, which is | |||
is an augmentation to the "ietf-network" and "ietf-network-topology" | an augmentation to the "ietf-network" and "ietf-network-topology" | |||
modules. | YANG modules. | |||
4.1. Layering Relationship between Multiple Layers of Topology | 4.1. Layering Relationship between Multiple Layers of Topology | |||
[RFC8345] defines a YANG data model for network/service topologies | [RFC8345] defines a YANG data model for network/service topologies | |||
and inventories. The service topology described in [RFC8345] | and inventories. The service topology described in [RFC8345] | |||
includes the abstract topology for a service layer above Layer 1 | includes the abstract topology for a service layer above Layer 1 | |||
(L1), Layer 2 (L2), and Layer 3 (L3) underlay topologies. This | (L1), Layer 2 (L2), and Layer 3 (L3) underlay topologies. This | |||
service topology has the generic topology elements of node, link, and | service topology has the generic topology elements of node, link, and | |||
terminating point. One typical example of a service topology is | termination point. One typical example of a service topology is | |||
described in Figure 3 of [RFC8345]: two VPN service topologies | described in Figure 3 of [RFC8345]: two VPN service topologies | |||
instantiated over a common L3 topology. Each VPN service topology is | instantiated over a common L3 topology. Each VPN service topology is | |||
mapped onto a subset of nodes from the L3 topology. | mapped onto a subset of nodes from the L3 topology. | |||
Figure 2 illustrates an example of a topology hierarchy that maps | Figure 2 illustrates an example of a topology hierarchy that maps | |||
between the VPN service topology and an underlying Layer 3 network | between the VPN service topology and an underlying Layer 3 network | |||
topology: | topology. | |||
VPN 1 VPN 2 | VPN 1 VPN 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 page 7, line 46 ¶ | skipping to change at line 327 ¶ | |||
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 | |||
Figure 2: Example of Topology Mapping Between VPN Service | __ Link within a network layer | |||
Topology and Underlying Network | : Mapping between VPN 1 service topology and L3 topology | |||
* Mapping between VPN 2 service topology and L3 topology | ||||
Figure 2: Example of Topology Mapping between VPN Service | ||||
Topology and an Underlying Network | ||||
As shown in Figure 2, two VPN services topologies are built on top of | As shown in Figure 2, two VPN services topologies are built on top of | |||
one underlying Layer 3 network: | one underlying Layer 3 network: | |||
VPN 1: This service topology supports hub-spoke communications for | VPN 1: This service topology supports Hub-and-Spoke communications | |||
'customer 1' connecting the customer's access at three sites: | for "customer 1", connecting the customer's access at three sites: | |||
'Site-1A', 'Site-1B', and 'Site-1C'. These sites are connected to | Site-1A, Site-1B, and Site-1C. These sites are connected to nodes | |||
nodes that are mapped to node 1 (N1), node 2 (N2), and node 4 (N4) | that are mapped to node 1 (N1), node 2 (N2), and node 4 (N4) in | |||
in the underlying Layer 3 network. 'Site-1A' plays the role of | the underlying Layer 3 network. Site-1A plays the role of Hub | |||
hub while 'Site-1B' and 'Site-1C' are configured as spoke. | while Site-1B and Site-1C are configured as Spokes. | |||
VPN 2: This service topology supports any-to-any communications for | VPN 2: This service topology supports any-to-any communications for | |||
'customer 2' connecting the customer's access at two sites: 'Site- | "customer 2", connecting the customer's access at two sites: Site- | |||
2A' and 'Site-2B'. These sites are connected to nodes that are | 2A and Site-2B. These sites are connected to nodes that are | |||
mapped to nodes 1 (N1) and node 3 (N3) in the underlying Layer 3 | mapped to node 1 (N1) and node 3 (N3) in the underlying Layer 3 | |||
network. 'Site-2A' and 'Site-2B' have 'any-to-any' role. | network. Site-2A and Site-2B have an "any-to-any" role. | |||
Based on the association between the VPN service topologies and the | Based on the association between VPN service topologies and | |||
underlying network topologies, the VPN Network PM YANG module extends | underlying network topologies, the Network and VPN Service PM YANG | |||
the performance status of the underlay networks and VPN services. | module extends the performance status of the underlay networks and | |||
For example, the module can provide link PM statistics and port | VPN services. For example, the module can provide link PM statistics | |||
statistics of an underlay network, e.g. Layer 1, Layer 2, Layer 3, | and port statistics of an underlay network, e.g., Layer 1, Layer 2, | |||
OSPF networks. And it can also provide VPN PM statistics, which can | Layer 3, and OSPF networks. It can also provide VPN PM statistics, | |||
be further split into PM for the VPN tunnel and PM at the VPN PE | which can be further split into PM for the VPN tunnel and PM at the | |||
access node, as illustrated in the following diagram. | VPN PE access node, as illustrated in the following diagram. | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
| | | | | | |||
| 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| | |||
skipping to change at page 9, line 27 ¶ | skipping to change at line 386 ¶ | |||
| | | | | | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
| | | | | | |||
| | | | | | |||
+----+ | 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 | VN: VPN Node | |||
TP: Termination Point | ||||
-: Link | ||||
Figure 3: An Example of VPN PM | Figure 3: An Example of VPN PM | |||
Figure 3 illustrates an example of VPN PM and two VPN PM measurement | Figure 3 illustrates an example of VPN PM and two VPN PM measurement | |||
methods including the VPN tunnel PM and the inter-VPN-access | methods including the VPN tunnel PM and the inter-VPN-access | |||
interface PM. VPN PM can also provide statistics on VPN access | interface PM. VPN PM can also provide statistics on VPN access | |||
interfaces, the number of current VRF routes or L2VPN MAC entry of | interfaces, the number of current VRF routes, or L2VPN MAC entry of a | |||
VPN node. | VPN node. | |||
4.2. Network Level Performance Monitoring Augmentation | 4.2. Network-Level Performance Monitoring Augmentation | |||
The model can be used for performance monitoring both for the | The module described below can be used for performance monitoring for | |||
underlay networks and the VPN services, which would be separate | both the underlay networks and the VPN services, which would be | |||
entries in the network list [RFC8345]. The differences are as | separate entries in the network list [RFC8345]. The differences are | |||
follows: | as follows: | |||
* When the "service" presence container is absent, then it indicates | * When the "service" presence container is absent, then it indicates | |||
performance monitoring of the network itself. | performance monitoring of the network itself. | |||
* When the "service" presence container is present, then it | * When the "service" presence container is present, then it | |||
indicates performance monitoring of the VPN service specified by | indicates performance monitoring of the VPN service specified by | |||
the "service-type" leaf, e.g. , L3VPN or Virtual Private LAN | the "service-type" leaf, e.g., L3VPN or Virtual Private LAN | |||
Service (VPLS). The values are taken from [RFC9181]. When a | Service (VPLS). The values are taken from [RFC9181]. When a | |||
network topology instance contains the L3VPN or other L2VPN | network topology instance contains the L3VPN or other L2VPN | |||
network type, it represents a VPN instance that can perform | network types, it represents a VPN instance that can perform | |||
performance monitoring | performance monitoring. | |||
The tree in Figure 4 is a part of "ietf-network-vpn-pm" tree. It | The YANG tree in Figure 4 is a part of the "ietf-network-vpn-pm" | |||
also defines the following set of network level attributes: | tree. It defines the following set of network-level attributes: | |||
"vpn-id": Refers to an identifier of VPN service defined in | "vpn-id": Refers to an identifier of VPN service defined in | |||
[RFC9181]. This identifier is used to correlate the performance | [RFC9181]. This identifier is used to correlate the performance | |||
status with the network service configuration. | status with the network service configuration. | |||
"vpn-service-topology": Indicates the type of the VPN service | "vpn-service-topology": Indicates the type of VPN service topology. | |||
topology. This model supports "any-to-any", "Hub and Spoke" | This model supports "any-to-any", "hub-spoke" (where Hubs can | |||
(where Hubs can exchange traffic), and "Hub and Spoke disjoint" | exchange traffic), and "hub-spoke-disjoint" (where Hubs cannot | |||
(where Hubs cannot exchange traffic) that are taken from | exchange traffic), which are taken from [RFC9181]. These VPN | |||
[RFC9181]. These VPN service topology types can be used to | service topology types can be used to describe how VPN sites | |||
describe how VPN sites communicate with each other. | communicate with each other. | |||
module: ietf-network-vpn-pm | 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 | |||
Figure 4: Network Level YANG Tree of the Hierarchies | Figure 4: Network-Level YANG Tree | |||
4.3. Node Level Performance Monitoring Augmentation | 4.3. Node-Level Performance Monitoring Augmentation | |||
The tree in Figure 5 is the node part of "ietf-network-vpn-pm" tree. | The YANG tree in Figure 5 is the node part of the "ietf-network-vpn- | |||
pm" tree. | ||||
For network performance monitoring, the module defines the following | For network performance monitoring, the module defines the following | |||
attributes: | attributes: | |||
"node-type": Indicates the device type of Provider Edge (PE), | "node-type": Indicates the device type of the PE, P device, or | |||
Provider (P) device, or Autonomous System Border Router (ASBR) as | Autonomous System Border Router (ASBR) as defined in [RFC4026] and | |||
defined in [RFC4026] and [RFC4364], so that the performance metric | [RFC4364] so that the performance metric between any two nodes | |||
between any two nodes each with specific node type can be | that each have a specific node type can be reported. | |||
reported. | ||||
"entry-summary": Lists a set of IPv4 statistics, IPv6 statistics, | "entry-summary": Lists a set of IPv4 statistics, IPv6 statistics, | |||
and MAC statistics. The detailed statistics are specified | and MAC statistics. The detailed statistics are specified | |||
separately. | separately. | |||
For VPN service topology, the module defines one attribute: | For VPN service topology, the module defines one attribute: | |||
"role": Defines the role in a particular VPN service topology. The | "role": Defines the role in a particular VPN service topology. The | |||
roles are taken from [RFC9181] (e.g., any-to-any-role, spoke-role, | roles are taken from [RFC9181] (e.g., "any-to-any-role", "spoke- | |||
hub-role). | role", and "hub-role"). | |||
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 | |||
Figure 5: Node Level YANG Tree of the Hierarchies | Figure 5: Node-Level YANG Tree | |||
4.4. Link and Termination Point Level Performance Monitoring | 4.4. Performance Monitoring Augmentation at Link and Termination Point | |||
Augmentation | Level | |||
The tree in Figure 6 is the link and termination point (TP) part of | The YANG tree in Figure 6 is the link and termination point (TP) part | |||
ietf-network-vpn-pm tree. | of the "ietf-network-vpn-pm" tree. | |||
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 defined in this | [RFC8345]) and abstract link of a VPN between PEs (defined in this | |||
module. | module). | |||
The performance data of a link is a collection of counters and gauges | The performance data of a link is a collection of counters and gauges | |||
that report the performance status. All these metrics are defined as | that report the performance status. All these metrics are defined as | |||
unidirectional metrics. | unidirectional metrics. | |||
augment /nw:networks/nw:network/nt:link: | 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 inbound-octets? yang:counter64 | ||||
+--ro inbound-unicast? yang:counter64 | ||||
+--ro inbound-broadcast? yang:counter64 | ||||
+--ro inbound-multicast? yang:counter64 | ||||
+--ro inbound-discards? yang:counter64 | ||||
+--ro inbound-errors? yang:counter64 | ||||
+--ro inbound-unknown-protocol? yang:counter64 | ||||
+--ro outbound-octets? yang:counter64 | ||||
+--ro outbound-unicast? yang:counter64 | ||||
+--ro outbound-broadcast? yang:counter64 | ||||
+--ro outbound-multicast? yang:counter64 | ||||
+--ro outbound-discards? yang:counter64 | ||||
+--ro outbound-errors? yang:counter64 | ||||
+--ro vpn-network-access* [network-access-id] | ||||
+--ro network-access-id vpn-common:vpn-id | ||||
+--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 | |||
+--ro inbound-broadcast? yang:counter64 | +--ro inbound-broadcast? yang:counter64 | |||
+--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 | |||
+--ro vpn-network-access* [network-access-id] | ||||
+--ro network-access-id vpn-common:vpn-id | ||||
+--ro last-updated? yang:date-and-time | ||||
+--ro inbound-octets? yang:counter64 | ||||
+--ro inbound-unicast? yang:counter64 | ||||
+--ro inbound-broadcast? yang:counter64 | ||||
+--ro inbound-multicast? yang:counter64 | ||||
+--ro inbound-discards? yang:counter64 | ||||
+--ro inbound-errors? yang:counter64 | ||||
+--ro inbound-unknown-protocol? yang:counter64 | ||||
+--ro outbound-octets? yang:counter64 | ||||
+--ro outbound-unicast? yang:counter64 | ||||
+--ro outbound-broadcast? yang:counter64 | ||||
+--ro outbound-multicast? yang:counter64 | ||||
+--ro outbound-discards? yang:counter64 | ||||
+--ro outbound-errors? yang:counter64 | ||||
Figure 6: Link and Termination point Level YANG Tree of the | Figure 6: Link and Termination Point YANG Subtree | |||
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. There are three percentile | jitter metrics with percentile values. There are three percentile | |||
values for configuring various percentile reporting levels. By | values for configuring various percentile reporting levels. By | |||
default, low percentile (10th percentile), intermediate percentile | default, low percentile (10th percentile), intermediate percentile | |||
(50th percentile), high percentile (90th percentile) are used. | (50th percentile), and high percentile (90th percentile) are used. | |||
Configuring a percentile to 0.000 indicates the client is not | Configuring a percentile to 0.000 indicates the client is not | |||
interested in receiving particular percentile. If all percentile | interested in receiving a particular percentile. If all | |||
nodes are configured to 0.000, this represents that no percentile | percentile nodes are configured to 0.000, it represents that no | |||
related nodes will be reported for a given performance metric | percentile-related nodes will be reported for a given performance | |||
(e.g., one-way delay, one-way delay variation) and only peak/min | metric (e.g., one-way delay and one-way delay variation) and only | |||
values will be reported. For example, a client can inform the | peak/min values will be reported. For example, a client can | |||
server that it is interested in receiving only high percentiles. | inform the server that it is interested in receiving only high | |||
Then for a given link, at a given "start-time", "end-time" and | percentiles. Then for a given link at a given "start-time", "end- | |||
"measurement-interval", the 'high-delay-percentile' and 'high- | time", and "measurement-interval", the "high-delay-percentile" and | |||
jitter-percentile' will be reported. An example to illustrate the | "high-jitter-percentile" will be reported. An example to | |||
use of percentiles is provided in Appendix A.3. | illustrate the use of percentiles is provided in Appendix A.3. | |||
Measurement interval ("measurement-interval"): Specifies the | Measurement interval ("measurement-interval"): Specifies the | |||
performance measurement interval, in seconds. | performance measurement interval, in seconds. | |||
Start time ("start-time"): Indicates the start time of the | Start time ("start-time"): Indicates the start time of the | |||
performance measurement for link statistics. | performance measurement for link statistics. | |||
End time ("end-time"): Indicates the end time of the performance | End time ("end-time"): Indicates the end time of the performance | |||
measurement for link statistics. | measurement for link statistics. | |||
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 | |||
BGP-LS [RFC8571]. The statistics of the VPN abstract links can be | - Link State (BGP-LS) [RFC8571]. The statistics of the VPN | |||
collected based upon VPN OAM mechanisms, e.g., OAM mechanisms | abstract links can be collected based upon VPN OAM mechanisms, | |||
referenced in [RFC9182], or Ethernet service OAM [ITU-T-Y-1731] | e.g., OAM mechanisms referenced in [RFC9182] or Ethernet service | |||
referenced in [RFC9291]. Alternatively, the data can be based | OAM [ITU-T-Y-1731] referenced in [RFC9291]. Alternatively, the | |||
upon the underlay technology OAM mechanisms, for example, Generic | data can be based upon the underlay technology OAM mechanisms, | |||
Routing Encapsulation (GRE) tunnel OAM. | e.g., Generic Routing Encapsulation (GRE) tunnel OAM. | |||
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 | |||
values can be reported. | values can be reported. | |||
Jitter statistics: A set of one-way IP Packet Delay Variation | Jitter statistics: A set of one-way IP Packet Delay Variation | |||
[RFC3393] statistics attributes that are used to measure end to | [RFC3393] statistics attributes that are used to measure end-to- | |||
end jitter between VPN sites or between any two network nodes. | end jitter between VPN sites or between any two network nodes. | |||
The peak/min values or percentile values can be reported. | The peak/min values or percentile values can be reported. | |||
PM statistics per class: "one-way-pm-statistics-per-class" lists | PM statistics per class: "one-way-pm-statistics-per-class" lists | |||
performance measurement statistics for the topology link or the | performance measurement statistics for the topology link or the | |||
abstract link between VPN PEs with given "class-id" names. 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" names. | used to collect generic metrics for unspecified "class-id" names. | |||
VPN PM type ("vpn-pm-type"): Indicates the VPN performance type, | VPN PM type ("vpn-pm-type"): Indicates the VPN performance type, | |||
which can be "inter-vpn-access-interface" PM or "vpn-tunnel" PM. | which can be "inter-vpn-access-interface" PM or "vpn-tunnel" PM. | |||
These two methods are common VPN measurement methods. The "inter- | These two methods are common VPN measurement methods. The "inter- | |||
VPN-access-interface" PM is to monitor the performance of logical | VPN-access-interface" PM is used to monitor the performance of | |||
point-to-point VPN connections between a source and a destination | logical point-to-point VPN connections between source and | |||
VPN access interfaces. And the "vpn-tunnel" PM is to monitor the | destination VPN access interfaces. And the "vpn-tunnel" PM is | |||
performance of VPN tunnels. The "inter-VPN-access-interface" PM | used to monitor the performance of VPN tunnels. The "inter-VPN- | |||
includes PE-PE monitoring. Therefore, usually only one of the two | access-interface" PM includes PE-PE monitoring. Therefore, | |||
methods is used. The "inter-VPN-access-interface" PM is defined | usually only one of the two methods is used. The "inter-VPN- | |||
as an empty leaf, which is not bound to a specific VPN access | access-interface" PM is defined as an empty leaf, which is not | |||
interface. The source or destination VPN access interface of the | bound to a specific VPN access interface. The source or | |||
measurement can be augmented as needed. | destination VPN access interface of the measurement can be | |||
augmented as needed. | ||||
VPN tunnel type ("vpn-tunnel-type"): Indicates the abstract link | VPN tunnel type ("vpn-tunnel-type"): Indicates the abstract link | |||
protocol-type of a VPN, such as GRE or IP-in-IP. The leaf refers | protocol-type of a VPN, such as GRE or IP-in-IP. The leaf refers | |||
to an identifier of the "underlay-transport" defined in [RFC9181], | to an identifier of the "underlay-transport" defined in [RFC9181], | |||
which describes the transport technology to carry the traffic of | which describes the transport technology that carries the traffic | |||
the VPN service. In the case of multiple types of tunnels between | of the VPN service. In the case of multiple types of tunnels | |||
a single pair of VPN nodes, a separate link for each type of | between a single pair of VPN nodes, a separate link for each type | |||
tunnel can be created. | of tunnel can be created. | |||
For the data nodes of 'termination-point' depicted in Figure 6, the | For the data nodes of "termination-point" depicted in Figure 6, the | |||
module defines the following minimal set of statistics: | module defines the following minimal set of statistics: | |||
Last updated time ("last-updated"): Indicates the date and time when | Last updated time ("last-updated"): Indicates the date and time when | |||
the counters were last updated. | the counters were last updated. | |||
Inbound statistics: A set of inbound statistics attributes that are | Inbound statistics: A set of inbound statistics attributes that are | |||
used to measure the inbound statistics of the termination point, | used to measure the inbound statistics of the termination point, | |||
such as received packets, received packets with errors, etc. | such as received packets, received packets with errors, etc. | |||
Outbound statistics: A set of outbound statistics attributes that | Outbound statistics: A set of outbound statistics attributes that | |||
skipping to change at page 16, line 7 ¶ | skipping to change at line 691 ¶ | |||
VPN network access ("vpn-network-access"): Lists counters of the VPN | VPN network access ("vpn-network-access"): Lists counters of the VPN | |||
network access defined in the L3NM [RFC9182] or the L2NM | network access defined in the L3NM [RFC9182] or the L2NM | |||
[RFC9291]. When multiple VPN network accesses are created using | [RFC9291]. When multiple VPN network accesses are created using | |||
the same physical port, finer-grained metrics can be monitored. | the same physical port, finer-grained metrics can be monitored. | |||
If a TP is associated with only a single VPN, this list is not | If a TP is associated with only a single VPN, this list is not | |||
required. | required. | |||
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" YANG module uses types defined in | |||
[RFC6991], [RFC8532], and [RFC9181]. | [RFC6991], [RFC8345], [RFC8532], and [RFC9181]. | |||
<CODE BEGINS> file "ietf-network-vpn-pm@2022-11-11.yang" | <CODE BEGINS> file "ietf-network-vpn-pm@2023-03-20.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 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> | |||
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 page 18, line 35 ¶ | skipping to change at line 816 ¶ | |||
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 page 20, line 33 ¶ | skipping to change at line 913 ¶ | |||
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 page 22, line 4 ¶ | skipping to change at line 979 ¶ | |||
type uint32; | type uint32; | |||
description | description | |||
"Indicates the total active MAC entries | "Indicates the total active MAC entries | |||
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 page 23, line 34 ¶ | skipping to change at line 1058 ¶ | |||
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 page 25, line 4 ¶ | skipping to change at line 1124 ¶ | |||
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 | |||
"The total number of inbound unicast packets."; | "The total number of inbound unicast packets."; | |||
} | } | |||
leaf inbound-broadcast { | leaf inbound-broadcast { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"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 page 26, line 12 ¶ | skipping to change at line 1180 ¶ | |||
"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 page 28, line 9 ¶ | skipping to change at line 1272 ¶ | |||
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 page 29, line 43 ¶ | skipping to change at line 1354 ¶ | |||
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; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment "/nw:networks/nw:network/nt:link/perf-mon" { | augment "/nw:networks/nw:network/nt:link/perf-mon" { | |||
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 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."; | |||
} | } | |||
skipping to change at page 32, line 25 ¶ | skipping to change at line 1470 ¶ | |||
The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
provides the means to restrict access for particular NETCONF or | 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. | RESTCONF protocol operations and content. | |||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These write operates can lead to | effect on network operations. These write operations can lead to | |||
inaccurate or incomplete network measurements which can impact the | inaccurate or incomplete network measurements that can impact the | |||
visibility and decisions this data would be used to inform. | visibility and decisions this data would be used to inform. | |||
Unauthorized write access to the following subtrees could have the | Unauthorized write access to the following subtrees could have the | |||
following impacts: | following impacts: | |||
+--------+----------------------+------------------------------+ | +============+======================+============================+ | |||
| Access | Node | Potential Impact | | ||||
| Access | Node | Potential impact | | +============+======================+============================+ | |||
| /nw:networks/nw:network/nw:network-types | | ||||
+--------+----------------------+------------------------------+ | +============+======================+============================+ | |||
| write | service type | disable VPN PM | | ||||
| /nw:networks/nw:network/nw:network-types | | +------------+----------------------+----------------------------+ | |||
| write | VPN identifier | disable VPN PM | | ||||
| write | service type | disable VPN PM | | +------------+----------------------+----------------------------+ | |||
| write | VPN service topology | render data unusable | | ||||
| write | VPN identifier | disable VPN PM | | +============+======================+============================+ | |||
| /nw:networks/nw:network/nw:node | | ||||
| write | VPN service topology | render data unusable | | +============+======================+============================+ | |||
| write | node type | render data unusable | | ||||
+--------+----------------------+------------------------------+ | +------------+----------------------+----------------------------+ | |||
| /nw:networks/nw:network/nw:node | | | write | VPN topology role | render data unusable | | |||
+============+======================+============================+ | ||||
| write | node type | render data unusable | | | /nw:networks/nw:network/nw:link/nvp:perf-mon | | |||
+============+======================+============================+ | ||||
| write | VPN topology role | render data unusable | | | write | percentile | impact reporting cadence | | |||
+------------+----------------------+----------------------------+ | ||||
+--------+----------------------+------------------------------+ | | write | measurement interval | impact monitoring fidelity | | |||
| /nw:networks/nw:network/nw:link/nvp:perf-mon | | +------------+----------------------+----------------------------+ | |||
| write | vpn-pm-type | impact monitoring fidelity | | ||||
| write | percentile | impact reporting cadence | | +------------+----------------------+----------------------------+ | |||
| write | measurement interval | impact monitoring fidelity | | ||||
| write | vpn-pm-type | impact monitoring fidelity | | ||||
+--------+----------------------+------------------------------+ | Table 1: Write Operation Sensitivity Impact | |||
Some readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It thus might | sensitive or vulnerable in some network environments. It is thus | |||
be 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 | considered. Unauthorized access to the following subtrees could have | |||
the following impacts: | the following impacts: | |||
* "/nw:networks/nw:network/nw:node": Unauthorized read access to | "/nw:networks/nw:network/nw:node": Unauthorized read access to this | |||
this subtree can disclose the operational state information of | subtree can disclose the operational state information of underlay | |||
underlay network instances or VPN instances. | network instances or VPN instances. | |||
* "/nw:networks/nw:network/nt:link/nvp:perf-mon/nvp:one-way-pm- | "/nw:networks/nw:network/nt:link/nvp:perf-mon/nvp:one-way-pm- | |||
statistics": Unauthorized read access to this subtree can disclose | statistics": Unauthorized read access to this subtree can disclose | |||
the operational state information of underlay network links or VPN | the operational state information of underlay network links or VPN | |||
abstract links. | abstract links. | |||
* "/nw:networks/nw:network/nw:node/nt:termination-point/nvp:pm- | "/nw:networks/nw:network/nw:node/nt:termination-point/nvp:pm- | |||
statistics": Unauthorized read access to this subtree can disclose | statistics": Unauthorized read access to this subtree can disclose | |||
the operational state information of underlay network termination | the operational state information of underlay network termination | |||
points or VPN network accesses. | points or VPN network accesses. | |||
This YANG module does not define any RPC (Remote Procedure Call) | This YANG module does not define any Remote Procedure Call (RPC) | |||
operations and Actions. | operations and actions. | |||
7. IANA Considerations | 7. IANA Considerations | |||
This document requests IANA to register the following URI in the "ns" | IANA has registered the following URI in the "ns" subregistry within | |||
subregistry within the "IETF XML Registry" [RFC3688]: | the "IETF XML Registry" [RFC3688]: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
This document requests IANA to register the following YANG module in | ||||
the "YANG Module Names" subregistry [RFC6020] within the "YANG | ||||
Parameters" registry. | ||||
Name: ietf-network-vpn-pm | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm | ||||
Maintained by IANA: N | ||||
Prefix: nvp | ||||
Reference: RFC XXXX (RFC Ed.: replace XXXX with actual | ||||
RFC number and remove this note.) | ||||
8. Acknowledgements | ||||
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. | ||||
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). | ||||
9. Contributors | ||||
The following authors contributed significantly to this document: | ||||
Michale Wang | ||||
Huawei | ||||
Email:wangzitao@huawei.com | ||||
Roni Even | URI: urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm | |||
Huawei | Registrant Contact: The IESG. | |||
Email: ron.even.tlv@gmail.com | XML: N/A; the requested URI is an XML namespace. | |||
Change Liu | IANA has registered the following YANG module in the "YANG Module | |||
China Unicom | Names" subregistry [RFC6020] within the "YANG Parameters" registry. | |||
Email: liuc131@chinaunicom.cn | ||||
Honglei Xu | Name: ietf-network-vpn-pm | |||
China Telecom | Namespace: urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm | |||
Email: xuhl6@chinatelecom.cn | Maintained by IANA: N | |||
Prefix: nvp | ||||
Reference: RFC 9375 | ||||
10. References | 8. References | |||
10.1. Normative References | 8.1. Normative References | |||
[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>. | |||
skipping to change at page 37, line 32 ¶ | skipping to change at line 1650 ¶ | |||
[RFC8762] Mirsky, G., Jun, G., Nydell, H., and R. Foote, "Simple | [RFC8762] Mirsky, G., Jun, G., Nydell, H., and R. Foote, "Simple | |||
Two-Way Active Measurement Protocol", RFC 8762, | Two-Way Active Measurement Protocol", RFC 8762, | |||
DOI 10.17487/RFC8762, March 2020, | DOI 10.17487/RFC8762, March 2020, | |||
<https://www.rfc-editor.org/info/rfc8762>. | <https://www.rfc-editor.org/info/rfc8762>. | |||
[RFC9181] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | [RFC9181] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., | |||
Ed., and Q. Wu, "A Common YANG Data Model for Layer 2 and | Ed., and Q. Wu, "A Common YANG Data Model for Layer 2 and | |||
Layer 3 VPNs", RFC 9181, DOI 10.17487/RFC9181, February | Layer 3 VPNs", RFC 9181, DOI 10.17487/RFC9181, February | |||
2022, <https://www.rfc-editor.org/info/rfc9181>. | 2022, <https://www.rfc-editor.org/info/rfc9181>. | |||
10.2. Informative References | 8.2. Informative References | |||
[I-D.ietf-opsawg-sap] | ||||
Boucadair, M., de Dios, O. G., Barguil, S., Wu, Q., and V. | ||||
Lopez, "A YANG Network Model for Service Attachment Points | ||||
(SAPs)", Work in Progress, Internet-Draft, draft-ietf- | ||||
opsawg-sap-10, 4 October 2022, | ||||
<https://www.ietf.org/archive/id/draft-ietf-opsawg-sap- | ||||
10.txt>. | ||||
[ITU-T-Y-1731] | [ITU-T-Y-1731] | |||
ITU-T, "Operator Ethernet Service Definition", August | ITU-T, "Operations, administration and maintenance (OAM) | |||
2015, <https://www.itu.int/rec/T-REC-Y.1731/en>. | functions and mechanisms for Ethernet-based networks", | |||
ITU-T Recommendation G.8013/Y.1731, August 2015, | ||||
<https://www.itu.int/rec/T-REC-Y.1731/en>. | ||||
[RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned Virtual | [RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned Virtual | |||
Private Network (VPN) Terminology", RFC 4026, | Private Network (VPN) Terminology", RFC 4026, | |||
DOI 10.17487/RFC4026, March 2005, | DOI 10.17487/RFC4026, March 2005, | |||
<https://www.rfc-editor.org/info/rfc4026>. | <https://www.rfc-editor.org/info/rfc4026>. | |||
[RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event | [RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event | |||
Notifications", RFC 5277, DOI 10.17487/RFC5277, July 2008, | Notifications", RFC 5277, DOI 10.17487/RFC5277, July 2008, | |||
<https://www.rfc-editor.org/info/rfc5277>. | <https://www.rfc-editor.org/info/rfc5277>. | |||
skipping to change at page 39, line 10 ¶ | skipping to change at line 1714 ¶ | |||
[RFC9197] Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi, | [RFC9197] Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi, | |||
Ed., "Data Fields for In Situ Operations, Administration, | Ed., "Data Fields for In Situ Operations, Administration, | |||
and Maintenance (IOAM)", RFC 9197, DOI 10.17487/RFC9197, | and Maintenance (IOAM)", RFC 9197, DOI 10.17487/RFC9197, | |||
May 2022, <https://www.rfc-editor.org/info/rfc9197>. | May 2022, <https://www.rfc-editor.org/info/rfc9197>. | |||
[RFC9291] Boucadair, M., Ed., Gonzalez de Dios, O., Ed., Barguil, | [RFC9291] Boucadair, M., Ed., Gonzalez de Dios, O., Ed., Barguil, | |||
S., and L. Munoz, "A YANG Network Data Model for Layer 2 | S., and L. Munoz, "A YANG Network Data Model for Layer 2 | |||
VPNs", RFC 9291, DOI 10.17487/RFC9291, September 2022, | VPNs", RFC 9291, DOI 10.17487/RFC9291, September 2022, | |||
<https://www.rfc-editor.org/info/rfc9291>. | <https://www.rfc-editor.org/info/rfc9291>. | |||
[YANG-SAP] Boucadair, M., Ed., Gonzalez de Dios, O., Barguil, S., Wu, | ||||
Q., and V. Lopez, "A YANG Network Model for Service | ||||
Attachment Points (SAPs)", Work in Progress, Internet- | ||||
Draft, draft-ietf-opsawg-sap-15, 18 January 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-opsawg- | ||||
sap-15>. | ||||
Appendix A. Illustrative Examples | Appendix A. Illustrative Examples | |||
A.1. VPN Performance Subscription Example | A.1. Example of VPN Performance Subscription | |||
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. | |||
POST /restconf/operations | ============== NOTE: '\' line wrapping per RFC 8792 =============== | |||
/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 page 40, line 36 ¶ | skipping to change at line 1799 ¶ | |||
"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" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
Figure 7: Pub/Sub Retrieval | Figure 7: Example of Pub/Sub Retrieval | |||
A.2. Example of VPN Performance Snapshot | A.2. Example of VPN Performance Snapshot | |||
This example, depicted in Figure 8, illustrates an VPN PM instance | The example depicted in Figure 8 illustrates a VPN PM instance | |||
example in which a client uses RESTCONF [RFC8040] to fetch the | message body of a RESTCONF request to fetch the performance data of | |||
performance data of the link and TP belonged to "VPN1". | the link and TP that belongs to "VPN1". | |||
{ | { | |||
"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 page 42, line 22 ¶ | skipping to change at line 1879 ¶ | |||
"vpn-tunnel-type": "ietf-vpn-common:gre" | "vpn-tunnel-type": "ietf-vpn-common:gre" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
Figure 8 | Figure 8: Example of VPN PM | |||
A.3. Example of Percentile Monitoring | A.3. Example of Percentile Monitoring | |||
This is an example of percentile measurement data that could be | This is an example of percentile measurement data that could be | |||
returned for a link foo:vpn1-link1 between vpn-node1 and vpn-node3. | returned for link "example:A-B" between "example:A" and "example:B". | |||
{ | { | |||
"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] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
Figure 9: Example of VPN PM with Percentile Value | ||||
Acknowledgements | ||||
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. | ||||
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 number 101015857). | ||||
Contributors | ||||
The following authors contributed significantly to this document: | ||||
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 | ||||
Authors' Addresses | Authors' Addresses | |||
Bo Wu (editor) | Bo Wu (editor) | |||
Huawei | Huawei | |||
101 Software Avenue, Yuhua District | Yuhua District | |||
101 Software Avenue | ||||
Nanjing | Nanjing | |||
Jiangsu, 210012 | Jiangsu, 210012 | |||
China | China | |||
Email: lana.wubo@huawei.com | Email: lana.wubo@huawei.com | |||
Qin Wu (editor) | Qin Wu (editor) | |||
Huawei | Huawei | |||
101 Software Avenue, Yuhua District | Yuhua District | |||
101 Software Avenue | ||||
Nanjing | Nanjing | |||
Jiangsu, 210012 | Jiangsu, 210012 | |||
China | China | |||
Email: bill.wu@huawei.com | Email: bill.wu@huawei.com | |||
Mohamed Boucadair (editor) | Mohamed Boucadair (editor) | |||
Orange | Orange | |||
Rennes 35000 | Rennes 35000 | |||
France | France | |||
Email: mohamed.boucadair@orange.com | Email: mohamed.boucadair@orange.com | |||
End of changes. 182 change blocks. | ||||
535 lines changed or deleted | 560 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |