netconfcentral logo

ietf-network-vpn-pm

HTML

ietf-network-vpn-pm@2019-04-17



  module ietf-network-vpn-pm {

    yang-version 1.1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm";

    prefix nvp;

    import ietf-yang-types {
      prefix yang;
      reference
        "RFC 6991: Common YANG Types.";


    }
    import ietf-vpn-common {
      prefix vpn-common;
    }
    import ietf-network {
      prefix nw;
      reference
        "Section 6.1 of RFC 8345: A YANG Data Model for Network
        Topologies";


    }
    import ietf-network-topology {
      prefix nt;
      reference
        "Section 6.2 of RFC 8345: A YANG Data Model for Network
        Topologies";


    }
    import ietf-lime-time-types {
      prefix lime;
      reference
        "RFC 8532: Generic YANG Data Model for the Management of
        Operations, Administration, and Maintenance (OAM) Protocols
        That Use Connectionless Communications";


    }

    organization "IETF BESS Working Group";

    contact
      "Editor: Qin Wu
             <bill.wu@huawei.com>
     Editor: Mohamed Boucadair
             <mohamed.boucadair@orange.com>";

    description
      "This module defines a model for the VPN Service Performance
     monitoring.

     Copyright (c) 2020 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (http://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

    revision "2019-04-17" {
      description "Initial revision.";
      reference
        "RFC XXXX: A YANG Model for Network and VPN Service Performance
        	  Monitoring";

    }


    identity ospf {
      base vpn-common:service-type;
      description
        "Identity for OSPF network type.";
    }

    identity isis {
      base vpn-common:service-type;
      description
        "Identity for ISIS network type.";
    }

    identity pe {
      base vpn-common:role;
      description "Identity for PE type";
    }

    identity ce {
      base vpn-common:role;
      description "Identity for CE type";
    }

    identity asbr {
      base vpn-common:role;
      description "Identity for ASBR type";
    }

    identity p {
      base vpn-common:role;
      description "Identity for P type";
    }

    identity link-type {
      base vpn-common:protocol-type;
      description
        "Base identity for link type, e.g.,GRE, MPLS TE, VXLAN.";
    }

    identity VXLAN {
      base link-type;
      description
        "Base identity for VXLAN Tunnel.";
    }

    identity ip-in-ip {
      base link-type;
      description
        "Base identity for IP in IP Tunnel.";
    }

    identity direction {
      base 
      description
        "Base Identity for measurement direction including
       one way measurement and two way measurement.";
    }

    identity one-way {
      base direction;
      description
        "Identity for one way measurement.";
    }

    identity two-way {
      base direction;
      description
        "Identity for two way measurement.";
    }

    typedef percentage {
      type decimal64 {
        fraction-digits 5;
        range "0..100";
      }
      description "Percentage.";
    }

    typedef percentile {
      type decimal64 {
        fraction-digits 2;
      }
      description
        "The nth percentile of a set of data is the
       value at which n percent of the data is below it.";
    }

    grouping vpn-summary-statistics {
      description
        "VPN Statistics grouping used for network topology
          augmentation.";
      container vpn-summary-statistics {
        description
          "Container for VPN summary statistics.";
        container ipv4 {
          description
            "IPv4-specific parameters.";
          leaf total-routes {
            type uint32;
            description
              "Total routes in the RIB from all protocols.";
          }

          leaf total-active-routes {
            type uint32;
            description
              "Total active routes in the RIB.";
          }
        }  // container ipv4

        container ipv6 {
          description
            "IPv6-specific parameters.";
          leaf total-routes {
            type uint32;
            description
              "Total routes in the RIB from all protocols.";
          }

          leaf total-active-routes {
            type uint32;
            description
              "Total active routes in the RIB.";
          }
        }  // container ipv6
      }  // container vpn-summary-statistics
    }  // grouping vpn-summary-statistics

    grouping link-error-statistics {
      description
        "Grouping for per link error statistics.";
      container loss-statistics {
        description
          "Per link loss statistics.";
        leaf packet-loss-count {
          type uint32 {
            range "0..4294967295";
          }
          default "0";
          description
            "Total received packet drops count.
           The value of count will be set to zero (0)
           on creation and will thereafter increase
           monotonically until it reaches a maximum value
           of 2^32-1 (4294967295 decimal), when it wraps
           around and starts increasing again from zero.";
        }

        leaf loss-ratio {
          type percentage;
          description
            "Loss ratio of the packets. Express as percentage
           of packets lost with respect to packets sent.";
        }

        leaf packet-reorder-count {
          type uint32 {
            range "0..4294967295";
          }
          default "0";
          description
            "Total received packet reordered count.
           The value of count will be set to zero (0)
           on creation and will thereafter increase
           monotonically until it reaches a maximum value
           of 2^32-1 (4294967295 decimal), when it wraps
           around and starts increasing again from zero.";
        }

        leaf packets-out-of-seq-count {
          type uint32 {
            range "0..4294967295";
          }
          description
            "Total received out of sequence count.
           The value of count will be set to zero (0)
           on creation and will thereafter increase
           monotonically until it reaches a maximum value
           of 2^32-1 (4294967295 decimal), when it wraps
           around and starts increasing again from zero..";
        }

        leaf packets-dup-count {
          type uint32 {
            range "0..4294967295";
          }
          description
            "Total received packet duplicates count.
           The value of count will be set to zero (0)
           on creation and will thereafter increase
           monotonically until it reaches a maximum value
           of 2^32-1 (4294967295 decimal), when it wraps
           around and starts increasing again from zero.";
        }
      }  // container loss-statistics
    }  // grouping link-error-statistics

    grouping link-delay-statistics {
      description
        "Grouping for per link delay statistics";
      container delay-statistics {
        description
          "Link delay summarised information. By default,
         one way measurement protocol (e.g., OWAMP) is used
         to measure delay.";
        leaf direction {
          type identityref {
            base direction;
          }
          default "one-way";
          description
            "Define measurement direction including one way
           measurement and two way measurement.";
        }

        leaf unit-value {
          type identityref {
            base lime:time-unit-type;
          }
          default "lime:milliseconds";
          description
            "Time units, where the options are s, ms, ns, etc.";
        }

        leaf min-delay-value {
          type yang:gauge64;
          description
            "Minimum delay value observed.";
        }

        leaf max-delay-value {
          type yang:gauge64;
          description
            "Maximum delay value observed.";
        }

        leaf low-delay-percentile {
          type yang:gauge64;
          description
            "Low percentile of the delay observed with
           specific measurement method.";
        }

        leaf middle-delay-percentile {
          type yang:gauge64;
          description
            "Middle percentile of the delay observed with
           specific measurement method.";
        }

        leaf high-delay-percentile {
          type yang:gauge64;
          description
            "High percentile of the delay observed with
           specific measurement method.";
        }
      }  // container delay-statistics
    }  // grouping link-delay-statistics

    grouping link-jitter-statistics {
      description
        "Grouping for per link jitter statistics";
      container jitter-statistics {
        description
          "Link jitter summarised information. By default,
         jitter is measured using IP Packet Delay Variation
         (IPDV).";
        leaf unit-value {
          type identityref {
            base lime:time-unit-type;
          }
          default "lime:milliseconds";
          description
            "Time units, where the options are s, ms, ns, etc.";
        }

        leaf min-jitter-value {
          type yang:gauge64;
          description
            "Minimum jitter value observed.";
        }

        leaf max-jitter-value {
          type yang:gauge64;
          description
            "Maximum jitter value observed.";
        }

        leaf low-jitter-percentile {
          type yang:gauge64;
          description
            "Low percentile of the jitter observed.";
        }

        leaf middle-jitter-percentile {
          type yang:gauge64;
          description
            "Middle percentile of the jitter observed.";
        }

        leaf high-jitter-percentile {
          type yang:gauge64;
          description
            "High percentile of the jitter observed.";
        }
      }  // container jitter-statistics
    }  // grouping link-jitter-statistics

    grouping tp-svc-telemetry {
      description
        "Grouping for interface service telemetry.";
      leaf in-octets {
        type uint32;
        description
          "The total number of octets received on the
         interface, including framing characters.";
      }

      leaf inbound-unicast {
        type uint32;
        description
          "Inbound unicast packets were received, and delivered
         to a higher layer during the last period.";
      }

      leaf inbound-nunicast {
        type uint32;
        description
          "The number of non-unicast (i.e., subnetwork-
         broadcast or subnetwork-multicast) packets
         delivered to a higher-layer protocol.";
      }

      leaf inbound-discards {
        type uint32;
        description
          "The number of inbound packets which were chosen
         to be discarded even though no errors had been
         detected to prevent their being deliverable to a
         higher-layer protocol.";
      }

      leaf inbound-errors {
        type uint32;
        description
          "The number of inbound packets that contained
         errors preventing them from being deliverable to a
         higher-layer protocol.";
      }

      leaf outbound-errors {
        type uint32;
        description
          "The number of outbound packets that contained
         errors preventing them from being deliverable to a
         higher-layer protocol.";
      }

      leaf in-unknown-protocol {
        type uint32;
        description
          "The number of packets received via the interface
         which were discarded because of an unknown or
         unsupported protocol.";
      }

      leaf out-octets {
        type uint32;
        description
          "The total number of octets transmitted out of the
         interface, including framing characters.";
      }

      leaf outbound-unicast {
        type uint32;
        description
          "The total number of packets that higher-level
         protocols requested be transmitted to a
         subnetwork-unicast address, including those that
         were discarded or not sent.";
      }

      leaf outbound-nunicast {
        type uint32;
        description
          "The total number of packets that higher-level
         protocols requested be transmitted to a non-
         unicast (i.e., a subnetwork-broadcast or
         subnetwork-multicast) address, including those
         that were discarded or not sent.";
      }

      leaf outbound-discards {
        type uint32;
        description
          "The number of outbound packets which were chosen
         to be discarded even though no errors had been
         detected to prevent their being transmitted.  One
         possible reason for discarding such a packet could
         be to free up buffer space.";
      }

      leaf outbound-qlen {
        type uint32;
        description
          " Length of the queue of the interface from where
          the packet is forwarded out.  The queue depth could
           be the current number of memory buffers used by the
          queue and a packet can consume one or more memory buffers
          thus constituting device-level information.";
      }
    }  // grouping tp-svc-telemetry

    augment /nw:networks/nw:network/nw:network-types {
      description
        "Augment the network-types with service topologyies types";
      leaf-list network-technology-type {
        type identityref {
          base vpn-common:service-type;
        }
        description
          "Identify the network technology type, e.g., L3VPN,
         L2VPN, ISIS, OSPF.";
      }
    }

    augment /nw:networks/nw:network {
      description
        "Augment the network with service topology attributes";
      container vpn-topo-attributes {
        description
          "Container for vpn topology attributes.";
        leaf vpn-topology {
          type identityref {
            base vpn-common:vpn-topology;
          }
          description
            "VPN service topology, e.g., hub-spoke, any-to-any,
           hub-spoke-disjoint";
        }
      }  // container vpn-topo-attributes

      uses vpn-summary-statistics;
    }

    augment /nw:networks/nw:network/nw:node {
      description
        "Augment the network node with overlay topology attributes";
      container node-attributes {
        description
          "Container for overlay topology attributes.";
        leaf node-type {
          type identityref {
            base vpn-common:role;
          }
          description
            "Node type, e.g., PE, P, ASBR.";
        }

        leaf site-id {
          type string;
          description "Associated vpn site";
        }

        leaf site-role {
          type identityref {
            base vpn-common:role;
          }
          default
            "vpn-common:any-to-any-role";
          description
            "Role of the site in the VPN.";
        }
      }  // container node-attributes
    }

    augment /nw:networks/nw:network/nt:link {
      description
        "Augment the network topology link with overlay topology attributes";
      leaf link-type {
        type identityref {
          base link-type;
        }
        description
          "Link type, e.g., GRE,VXLAN, IP in IP.";
      }

      leaf low-percentile {
        type percentile;
        default '10.00';
        description
          "Low percentile to report.Setting low-percentile into 0.00 indicates
          the client is not intererested in receiving low percentile.";
      }

      leaf middle-percentile {
        type percentile;
        default '50.00';
        description
          "Middle percentile to report.Setting middle-percentile into 0.00 indicates
         the client is not intererested in receiving middle percentile.";
      }

      leaf high-percentile {
        type percentile;
        default '90.00';
        description
          "High percentile to report.";
      }

      leaf reference-time {
        type yang:date-and-time;
        description
          "The time that the current Measurement Interval started.Setting high-percentile
         into 0.00 indicates the client is not intererested in receiving high percentile.";
      }

      leaf measurement-interval {
        type uint32;
        units "seconds";
        default '60';
        description
          "Interval to calculate performance metric.";
      }

      container link-telemetry-attributes {
        config false;
        description
          "Container for service telemetry attributes.";
        uses link-error-statistics;

        uses link-delay-statistics;

        uses link-jitter-statistics;
      }  // container link-telemetry-attributes
    }

    augment /nw:networks/nw:network/nw:node/nt:termination-point {
      description
        "Augment the network topology termination point with vpn service attributes";
      container tp-telemetry-attributes {
        config false;
        description
          "Container for termination point service telemetry attributes.";
        uses tp-svc-telemetry;
      }  // container tp-telemetry-attributes
    }
  }  // module ietf-network-vpn-pm

Summary

  
  
Organization IETF BESS Working Group
  
Module ietf-network-vpn-pm
Version 2019-04-17
File ietf-network-vpn-pm@2019-04-17.yang
  
Prefix nvp
Namespace urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm
  
Cooked /cookedmodules/ietf-network-vpn-pm/2019-04-17
YANG /src/ietf-network-vpn-pm@2019-04-17.yang
XSD /xsd/ietf-network-vpn-pm@2019-04-17.xsd
  
Abstract This module defines a model for the VPN Service Performance monitoring. Copyright (c) 2020 IETF Trust and the persons identifie...
  
Contact
Editor: Qin Wu
	<bill.wu@huawei.com>
Editor: Mohamed Boucadair
	<mohamed.boucadair@orange.com>

Description

 
This module defines a model for the VPN Service Performance
monitoring.

Copyright (c) 2020 IETF Trust and the persons identified as
authors of the code.  All rights reserved.

Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.

Typedefs

Typedef Base type Abstract
percentage decimal64 Percentage.
percentile decimal64 The nth percentile of a set of data is the value at which n percent of the data is below it.

Groupings

Grouping Objects Abstract
link-delay-statistics delay-statistics Grouping for per link delay statistics
link-error-statistics loss-statistics Grouping for per link error statistics.
link-jitter-statistics jitter-statistics Grouping for per link jitter statistics
tp-svc-telemetry in-octets inbound-unicast inbound-nunicast inbound-discards inbound-errors outbound-errors in-unknown-protocol out-octets outbound-unicast outbound-nunicast outbound-discards outbound-qlen Grouping for interface service telemetry.
vpn-summary-statistics vpn-summary-statistics VPN Statistics grouping used for network topology augmentation.