diff --git a/experimental/ietf-extracted-YANG-modules/ietf-incident-types@2023-05-16.yang b/experimental/ietf-extracted-YANG-modules/ietf-incident-types@2023-05-16.yang index e84ab44b2..a068288e1 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-incident-types@2023-05-16.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-incident-types@2023-05-16.yang @@ -68,8 +68,8 @@ module ietf-incident-types { description "optical transport network domain."; } identity ip { - base single-domain; - description "ip domain."; + base transport; + description "ip transport network domain."; } identity ptn { base ip; @@ -87,7 +87,7 @@ module ietf-incident-types { base incident-category; description "device category."; } - identity power-enviorment { + identity power-environment { base device; description "power system category."; } @@ -99,7 +99,7 @@ module ietf-incident-types { base device; description "software of device category"; } - identity line { + identity line-card { base device-hardware; description "line card category."; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-05-16.yang b/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-05-16.yang index 073279d47..6a7d04494 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-05-16.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-05-16.yang @@ -92,8 +92,8 @@ module ietf-incident { } leaf occur-time { type yang:date-and-time; - description "the time when an incident instance is occured. - It's the occur time of the first event during + description "the time when an incident instance occurs. + It's the occurrence time of the first event during incident detection."; } leaf clear-time { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-10-20.yang similarity index 77% rename from experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-07-07.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-10-20.yang index 7240dce32..f5c0c6a74 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-07-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-10-20.yang @@ -26,25 +26,18 @@ module ietf-network-slice-service { "RFC 8345: A YANG Data Model for Network Topologies, Section 6.2"; } - - /* Import TE Types */ - - import ietf-te-types { - prefix te-types; - reference - "RFC 8776: Common YANG Data Types for Traffic Engineering"; - } import ietf-te-packet-types { prefix te-packet-types; reference - "RFC 8776: Common YANG Data Types for Traffic Engineering"; + "RFC 8776: Common YANG Data Types for Traffic Engineering, + Section 5"; } organization "IETF Traffic Engineering Architecture and Signaling (TEAS) Working Group"; contact - "WG Web: + "WG Web: WG List: Editor: Bo Wu @@ -52,7 +45,7 @@ module ietf-network-slice-service { Editor: Dhruv Dhody Editor: Reza Rokui - + Editor: Tarek Saad Author: Liuyan Han @@ -60,22 +53,26 @@ module ietf-network-slice-service { Editor: John Mullooly "; description - "This module defines a model for the IETF Network Slice Service. + "This YANG module defines a model for the IETF Network Slice + Service. - Copyright (c) 2023 IETF Trust and the persons identified as - authors of the code. All rights reserved. + The model fully conforms to the Network Management + Datastore Architecture (NMDA). - 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 Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). + Copyright (c) 2023 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 Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2023-07-07 { + revision 2023-10-20 { description "Initial revision."; reference @@ -99,8 +96,8 @@ module ietf-network-slice-service { identity service-tag-service { base service-tag-type; description - "The IETF Network Slice Service tag type,e.g. L2 or L3 - service."; + "The IETF Network Slice service tag type, e.g. Layer 2 or + Layer 3 service."; } identity service-tag-opaque { @@ -113,18 +110,16 @@ module ietf-network-slice-service { description "Base identity for the attachment circuit tag type."; } - - identity attachment-circuit-tag-vlan-id { + identity vlan-id { base attachment-circuit-tag-type; description - "The attachment circuit VLAN ID tag type. e.g. dot1Q or QinQ - VLAN IDs."; + "Identity for VLAN ID tag type, e.g. dot1Q or QinQ VLAN IDs."; } - identity attachment-circuit-tag-ip-mask { + identity ip-mask { base attachment-circuit-tag-type; description - "The attachment circuit tag IP mask."; + "Identity for IP mask tag type."; } identity service-isolation-type { @@ -146,24 +141,23 @@ module ietf-network-slice-service { "Base identity for IETF Network Slice Service security type."; } - identity service-security-authenticate { + identity authentication { base service-security-type; description - "Indicates the slice service requires authentication."; + "Indicates that the Slice Service requires authentication."; } - identity service-security-integrity { + identity integrity { base service-security-type; description - "Indicates the slice service requires data integrity."; + "Indicates that the Slice Service requires data integrity."; } - identity service-security-encryption { + identity encryption { base service-security-type; description - "Indicates the slice service requires data encryption."; + "Indicates that the Slice Service requires data encryption."; } - identity point-to-point { base vpn-common:vpn-topology; description @@ -184,6 +178,7 @@ module ietf-network-slice-service { "Identity for multipoint-to-multipoint IETF Network Slice Service connectivity."; } + identity multipoint-to-point { base vpn-common:vpn-topology; description @@ -194,13 +189,13 @@ module ietf-network-slice-service { identity sender-role { base vpn-common:role; description - "An SDP is acting as a sender."; + "Indicates that an SDP is acting as a sender."; } identity receiver-role { base vpn-common:role; description - "An SDP is acting as a receiver."; + "Indicates that an SDP is acting as a receiver."; } identity service-slo-metric-type { @@ -208,115 +203,128 @@ module ietf-network-slice-service { "Base identity for IETF Network Slice Service SLO metric type."; } - identity service-slo-one-way-bandwidth { + identity one-way-bandwidth { base service-slo-metric-type; description "SLO bandwidth metric. Minimum guaranteed bandwidth between two SDPs at any time and is measured unidirectionally."; } - identity service-slo-two-way-bandwidth { + identity two-way-bandwidth { base service-slo-metric-type; description "SLO bandwidth metric. Minimum guaranteed bandwidth between two SDPs at any time."; } - identity service-slo-shared-bandwidth { + identity shared-bandwidth { base service-slo-metric-type; description "The shared SLO bandwidth bound. It is the limit on the bandwidth that can be shared amongst a group of - connectivity constructs of a slice service."; + connectivity constructs of a Slice Service."; } - identity service-slo-one-way-delay-maximum { + identity one-way-delay-maximum { base service-slo-metric-type; description "The SLO objective of this metric is the upper bound of network - delay when transmitting between two SDPs. - The metric is defined in RFC7679."; + delay when transmitting between two SDPs."; + reference + "RFC7679: A One-Way Delay Metric for IP Performance + Metrics (IPPM)"; } - identity service-slo-one-way-delay-percentile { + identity one-way-delay-percentile { base service-slo-metric-type; description "The SLO objective of this metric is percentile objective of network delay when transmitting between two SDPs. The metric is defined in RFC7679."; + reference + "RFC7679: A One-Way Delay Metric for IP Performance + Metrics (IPPM)"; } - identity service-slo-two-way-delay-maximum { + identity two-way-delay-maximum { base service-slo-metric-type; description "SLO two-way delay is the upper bound of network delay when - transmitting between two SDPs. - The metric is defined in RFC2681."; + transmitting between two SDPs"; + reference + "RFC2681: A Round-trip Delay Metric for IPPM"; } - - identity service-slo-two-way-delay-percentile { + identity two-way-delay-percentile { base service-slo-metric-type; description "The SLO objective of this metric is the percentile objective of network delay when the traffic transmitting - between two SDPs. - The metric is defined in RFC2681."; + between two SDPs."; + reference + "RFC2681: A Round-trip Delay Metric for IPPM"; } - identity service-slo-one-way-delay-variation-maximum { + identity one-way-delay-variation-maximum { base service-slo-metric-type; description "The SLO objective of this metric is maximum bound of the difference in the one-way delay between sequential packets - between two SDPs. - The metric of one-way delay variation is defined in RFC3393."; + between two SDPs."; + reference + "RFC3393: IP Packet Delay Variation Metric for IP Performance + Metrics (IPPM)"; } - identity service-slo-one-way-delay-variation-percentile { + identity one-way-delay-variation-percentile { base service-slo-metric-type; description "The SLO objective of this metric is the percentile objective in the one-way delay between sequential packets between two - SDPs. - One-way delay variation percentile is defined by RFC3393."; + SDPs."; + reference + "RFC3393: IP Packet Delay Variation Metric for IP Performance + Metrics (IPPM)"; } - identity service-slo-two-way-delay-variation-maximum { + + identity two-way-delay-variation-maximum { base service-slo-metric-type; description - "SLO two-way delay variation defined by RFC5481, is the - difference in the round-trip delay between sequential packets - between two SDPs."; + "SLO two-way delay variation is the difference in the + round-trip delay between sequential packets between two SDPs."; + reference + "RFC5481: Packet Delay Variation Applicability Statement"; } - identity service-slo-two-way-delay-variation-percentile { + identity two-way-delay-variation-percentile { base service-slo-metric-type; description - "The delay variation percentile is defined by RFC5481. - The SLO objective of this metric is the percentile objective + "The SLO objective of this metric is the percentile objective in the round-trip delay between sequential packets between two SDPs."; + reference + "RFC5481: Packet Delay Variation Applicability Statement"; } - identity service-slo-one-way-packet-loss { + identity one-way-packet-loss { base service-slo-metric-type; description - "SLO loss metric. The ratio of packets dropped to packets - transmitted between two SDPs in one-way - over a period of time as specified in RFC7680."; + "This metric type refers to the ratio of packets dropped + to packets transmitted between two SDPs in one-way + over a period of time."; + reference + "RFC7680: A One-Way Loss Metric for IP Performance + Metrics (IPPM)"; } - identity service-slo-two-way-packet-loss { + identity two-way-packet-loss { base service-slo-metric-type; description - "SLO loss metric. The ratio of packets dropped to packets - transmitted between two SDPs in two-way - over a period of time as specified in RFC7680."; - } - - identity service-match-type { - description - "Base identity for IETF Network Slice Service traffic - match type."; + "This metric type refers to the ratio of packets dropped + to packets transmitted between two SDPs in two-way + over a period of time."; + reference + "RFC7680: A One-Way Loss Metric for IP Performance + Metrics (IPPM)"; } /* @@ -328,85 +336,92 @@ module ietf-network-slice-service { "Base identity from which specific availability types are derived."; } + identity level-1 { base availability-type; description - "level 1: 99.9999%"; + "Specifies the availability level 1: 99.9999%"; } identity level-2 { base availability-type; description - "level 2: 99.999%"; + "Specifies the availability level 2: 99.999%"; } identity level-3 { base availability-type; description - "level 3: 99.99%"; + "Specifies the availability level 3: 99.99%"; } identity level-4 { base availability-type; description - "level 4: 99.9%"; + "Specifies the availability level 4: 99.9%"; } identity level-5 { base availability-type; description - "level 5: 99%"; + "Specifies the availability level 5: 99%"; + } + + identity service-match-type { + description + "Base identity for IETF Network Slice Service traffic + match type."; } identity service-phy-interface-match { base service-match-type; description - "Use the physical interface as match criteria for - slice service traffic."; + "Uses the physical interface as match criteria for + Slice Service traffic."; } identity service-vlan-match { base service-match-type; description - "Use the VLAN ID as match criteria for the slice service + "Uses the VLAN ID as match criteria for the Slice Service traffic."; } identity service-label-match { base service-match-type; description - "Use the MPLS label as match criteria for the slice service + "Uses the MPLS label as match criteria for the Slice Service traffic."; } identity service-source-ip-prefix-match { base service-match-type; description - "Use source ip prefix as match criteria for the slice service - traffic. Examples of 'value' of this match type is + "Uses source ip prefix as match criteria for the Slice Service + traffic. Examples of 'value' of this match type are '192.0.2.0/24' and '2001:db8::1/64'."; } identity service-destination-ip-prefix-match { base service-match-type; description - "Use destination ip prefix as match criteria for the slice - service traffic. Examples of 'value' of this match type is + "Uses destination ip prefix as match criteria for the Slice + Service traffic. Examples of 'value' of this match type are '203.0.113.1/32', '2001:db8::2/128'."; } identity service-dscp-match { base service-match-type; description - "Use DSCP in the IP packet header as match criteria - for the slice service traffic."; + "Uses DSCP field in the IP packet header as match criteria + for the Slice Service traffic."; } identity service-acl-match { base service-match-type; description - "Use Access Control List (ACL) as match criteria - for the slice service traffic."; + "Uses Access Control List (ACL) as match criteria + for the Slice Service traffic."; reference "RFC 8519: YANG Data Model for Network Access Control Lists (ACLs)"; @@ -415,7 +430,7 @@ module ietf-network-slice-service { identity service-any-match { base service-match-type; description - "Match all slice service traffic."; + "Matches any Slice Service traffic."; } identity slo-sle-policy-override { @@ -431,7 +446,6 @@ module ietf-network-slice-service { which means that no SLO/SLE(s) are inherited from parent if a child SLO/SLE policy exists."; } - identity slo-sle-policy-partial-override { base slo-sle-policy-override; description @@ -443,7 +457,7 @@ module ietf-network-slice-service { SLOs in the parent SLO-SLE policy still apply."; } - /* typedef */ + /* Typedef */ typedef percentile { type decimal64 { @@ -459,25 +473,25 @@ module ietf-network-slice-service { the sample value is less than or equal to 2 milliseconds."; } - /* grouping */ + /* Groupings */ grouping service-slos { description - "Directly Measurable Objectives of a slice service."; + "Directly measurable objectives of a Slice Service."; container slo-policy { description "Contains the SLO policy."; list metric-bound { key "metric-type"; description - "List of slice service metric bounds."; + "List of Slice Service metric bounds."; leaf metric-type { type identityref { base service-slo-metric-type; } description "Identifies an entry in the list of metric type - bounds for the slice service."; + bounds for the Slice Service."; } leaf metric-unit { type string; @@ -489,7 +503,7 @@ module ietf-network-slice-service { leaf value-description { type string; description - "The description of previous value."; + "The description of the provided value."; } leaf percentile-value { type percentile; @@ -500,9 +514,9 @@ module ietf-network-slice-service { type uint64; default "0"; description - "The Bound on the slice service connection metric. - A zero indicate an unbounded upper limit for the - specific metric-type."; + "The bound on the Slice Service connection metric. + When set to zero, this indicates an unbounded + upper limit for the specific metric-type."; } } leaf availability { @@ -516,8 +530,8 @@ module ietf-network-slice-service { type uint16; units "bytes"; description - "The MTU specifies the maximum length in octets of data - packets of the slice service. + "The MTU specifies the maximum length of data + packets of the Slice Service. The value needs to be less than or equal to the minimum MTU value of all 'attachment-circuits' in the SDPs."; @@ -527,7 +541,7 @@ module ietf-network-slice-service { grouping service-sles { description - "Indirectly Measurable Objectives of a slice service."; + "Indirectly measurable objectives of a Slice Service."; container sle-policy { description "Contains the SLE policy."; @@ -544,7 +558,7 @@ module ietf-network-slice-service { base service-isolation-type; } description - "The slice service isolation requirement."; + "The Slice Service isolation requirement."; } leaf max-occupancy-level { type uint8 { @@ -557,16 +571,16 @@ module ietf-network-slice-service { container steering-constraints { description "Container for the policy of steering constraints - applicable to the slice service."; + applicable to the Slice Service."; container path-constraints { description "Container for the policy of path constraints - applicable to the slice service."; + applicable to the Slice Service."; } container service-function { description "Container for the policy of service function - applicable to the slice service."; + applicable to the Slice Service."; } } } @@ -574,7 +588,7 @@ module ietf-network-slice-service { grouping sdp-peering { description - "A grouping for the slice service SDP peering."; + "A grouping for the Slice Service SDP peering."; container sdp-peering { description "Describes SDP peering attributes."; @@ -586,6 +600,9 @@ module ietf-network-slice-service { correlation purposes, such as identifying a service attachment point (SAP) of a provider equipment when requesting a service with CE based SDP attributes."; + reference + "RFC9408: A YANG Network Data Model for + Service Attachment Points (SAPs)"; } container protocols { description @@ -601,30 +618,30 @@ module ietf-network-slice-service { "Grouping for the SDP attachment circuit definition."; container attachment-circuits { description - "List of attachment circuit."; + "List of attachment circuits."; list attachment-circuit { key "id"; description - "The IETF Network Slice service SDP attachment circuit + "The IETF Network Slice Service SDP attachment circuit related parameters."; leaf id { type string; description - "Uniquely identifier a attachment circuit."; + "Uniquely identifies an attachment circuit."; + } + leaf description { + type string; + description + "The attachment circuit's description."; } leaf ac-svc-name { type string; description - "Indicates an attachment circuit service name, + "Indicates an attachment circuit (AC) service name, for association purposes, to refer to an AC that has been created before the slice creation. This node can override 'ac-svc-name' of the parent SDP."; } - leaf description { - type string; - description - "The attachment circuit description."; - } leaf ac-node-id { type string; description @@ -660,7 +677,7 @@ module ietf-network-slice-service { type uint16; units "bytes"; description - "Maximum size in octets of the slice service data packet + "Maximum size of the Slice Service data packet that can traverse an SDP."; } container ac-tags { @@ -685,7 +702,6 @@ module ietf-network-slice-service { } } } - /* Per ac rate limits */ uses service-qos; uses sdp-peering; uses vpn-common:service-status; @@ -701,10 +717,12 @@ module ietf-network-slice-service { description "Container for SDP monitoring metrics."; leaf incoming-bw-value { - type te-types:te-bandwidth; + type uint64; + units "bps"; description - "Indicates, in octets per second, incoming bandwidth at - an SDP."; + "Indicates the absolute value of the incoming bandwidth + at an SDP from the customer network or + from another provider's network."; } leaf incoming-bw-percent { type decimal64 { @@ -714,14 +732,17 @@ module ietf-network-slice-service { units "percent"; mandatory true; description - "Indicates a percentage of the incoming bandwidth at - an SDP."; + "Indicates a percentage of the incoming bandwidth + at an SDP from the customer network or + from another provider's network."; } leaf outgoing-bw-value { - type te-types:te-bandwidth; + type uint64; + units "bps"; description - "Indicates, in octets per second, outgoing bandwidth at - an SDP."; + "Indicates the absolute value of the outgoing bandwidth + at an SDP towards the customer network or towards + another provider's network."; } leaf outgoing-bw-percent { type decimal64 { @@ -731,8 +752,9 @@ module ietf-network-slice-service { units "percent"; mandatory true; description - "Indicates a percentage of the outgoing bandwidth at - an SDP."; + "Indicates a percentage of the outgoing bandwidth + at an SDP towards the customer network or towards + another provider's network."; } } } @@ -744,7 +766,7 @@ module ietf-network-slice-service { uses te-packet-types:two-way-performance-metrics-packet; } - grouping geolocation-container { + grouping geolocation { description "A grouping containing a GPS location."; container location { @@ -773,11 +795,8 @@ module ietf-network-slice-service { "Angular distance east or west on the Earth's surface."; } } - // gps-location } - // geolocation-container - grouping bw-rate-limits { description "Bandwidth rate limits grouping."; @@ -837,7 +856,8 @@ module ietf-network-slice-service { "The rate limits grouping."; container incoming-qos-policy { description - "Container for the asymmetric traffic control."; + "The QoS policy imposed on ingress direction of the traffic , + from the customer network or from another provider's network."; leaf qos-policy-name { type string; description @@ -853,7 +873,9 @@ module ietf-network-slice-service { } container outgoing-qos-policy { description - "The QoS policy imposed on outgoing traffic."; + "The QoS policy imposed on egress direction of the traffic , + towards the customer network or towards another + provider's network."; leaf qos-policy-name { type string; description @@ -871,18 +893,18 @@ module ietf-network-slice-service { grouping sdp { description - "Slice service SDP related information"; + "Slice Service SDP related information"; leaf id { type string; description - "Unique identifier for the referred slice service SDP."; + "Unique identifier for the referred Slice Service SDP."; } leaf description { type string; description - "Give more description of the SDP."; + "Provides a description of the SDP."; } - uses geolocation-container; + uses geolocation; leaf node-id { type string; description @@ -897,7 +919,7 @@ module ietf-network-slice-service { type leafref { path "/nw:networks/nw:network[nw:network-id =current()/../../" - + "../custom-topology-ref/network-ref]/" + + "../custom-topology/network-ref]/" + "nw:node/nt:termination-point/nt:tp-id"; } description @@ -908,15 +930,15 @@ module ietf-network-slice-service { } container service-match-criteria { description - "Describes the slice service match criteria."; + "Describes the Slice Service match criteria."; list match-criterion { key "index"; description - "List of the slice service traffic match criteria."; + "List of the Slice Service traffic match criteria."; leaf index { type uint32; description - "The entry index."; + "The identifier that uniquely identifies a match criteria."; } leaf match-type { type identityref { @@ -924,14 +946,14 @@ module ietf-network-slice-service { } mandatory true; description - "Identifies an entry in the list of the slice service - match criteria."; + "Indicates the match type of the entry in the list of + the Slice Service match criteria."; } leaf-list value { type string; description - "Describes the slice service match criteria, e.g. - IP prefix, VLAN, etc."; + "Provides a value for the Slice Service match criteria, + e.g. IP prefix and VLAN ID."; } leaf target-connection-group-id { type leafref { @@ -941,7 +963,7 @@ module ietf-network-slice-service { } mandatory true; description - "Reference to the slice service connection group."; + "Reference to the Slice Service connection group."; } leaf connection-group-sdp-role { type identityref { @@ -1000,11 +1022,9 @@ module ietf-network-slice-service { uses vpn-common:service-status; uses sdp-monitoring-metrics; } - //service-sdp - grouping connectivity-construct { description - "Grouping for slice service connectivity construct."; + "Grouping for Slice Service connectivity construct."; list connectivity-construct { key "id"; description @@ -1087,11 +1107,9 @@ module ietf-network-slice-service { } } - //connectivity-construct - grouping connection-group { description - "Grouping for slice service connection group."; + "Grouping for Slice Service connection group."; leaf id { type string; description @@ -1119,14 +1137,12 @@ module ietf-network-slice-service { } } - //connection-group - grouping slice-service-template { description - "Grouping for slice service templates."; + "Grouping for Slice Service templates."; container slo-sle-templates { description - "Contains a set of slice service templates."; + "Contains a set of Slice Service templates."; list slo-sle-template { key "id"; description @@ -1141,7 +1157,7 @@ module ietf-network-slice-service { leaf description { type string; description - "Description of the SLO and SLE policy template."; + "Describes the SLO and SLE policy template."; } leaf template-ref { type leafref { @@ -1161,8 +1177,6 @@ module ietf-network-slice-service { } } - /* Configuration data nodes */ - grouping service-slo-sle-policy { description "Slice service policy grouping."; @@ -1193,7 +1207,7 @@ module ietf-network-slice-service { leaf description { type string; description - "Description of the SLO and SLE policy."; + "Describes the SLO and SLE policy."; } uses service-slos; uses service-sles; @@ -1204,7 +1218,7 @@ module ietf-network-slice-service { grouping service-slo-sle-policy-override { description - "Slice service policy override grouping."; + "Slice Service policy override grouping."; leaf service-slo-sle-policy-override { type identityref { base slo-sle-policy-override; @@ -1215,23 +1229,25 @@ module ietf-network-slice-service { } } + /* Main IETF Network Slice Services Container */ + container network-slice-services { description - "Contains a list of IETF network slice services"; + "Contains a list of IETF Network Slice Services"; uses slice-service-template; list slice-service { key "id"; description - "A slice service is identified by a service id."; + "A Slice Service is identified by a service id."; leaf id { type string; description - "A unique slice service identifier."; + "A unique Slice Service identifier."; } leaf description { type string; description - "Textual description of the slice service."; + "Textual description of the Slice Service."; } container service-tags { description @@ -1251,7 +1267,7 @@ module ietf-network-slice-service { type string; description "The tag values, e.g. customer names when multiple - customers sharing same slice service in 5G scenario."; + customers sharing same Slice Service in 5G scenario."; } } } @@ -1265,18 +1281,18 @@ module ietf-network-slice-service { uses vpn-common:service-status; container sdps { description - "Slice service SDPs."; + "Slice Service SDPs."; list sdp { key "id"; min-elements 2; uses sdp; description - "List of SDPs in this slice service."; + "List of SDPs in this Slice Service."; } } container connection-groups { description - "Contains connections group."; + "Contains connection groups."; list connection-group { key "id"; description @@ -1284,12 +1300,14 @@ module ietf-network-slice-service { uses connection-group; } } - container custom-topology-ref { + container custom-topology { description - "Container for the custom topology reference."; + "Serves as an augmentation target. + Container for custom topology, which is indicated by the + referenced topology predefined, e.g., an abstract RFC8345 + topology."; uses nw:network-ref; } } - //ietf-network-slice-service list } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-node-tags-state@2022-02-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-node-tags-state@2022-02-04.yang index df3e234d1..befd6ea1f 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-node-tags-state@2022-02-04.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-node-tags-state@2022-02-04.yang @@ -51,7 +51,7 @@ module ietf-node-tags-state { 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 + to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). @@ -87,6 +87,7 @@ module ietf-node-tags-state { describing tags."; leaf id { type uint64; + status deprecated; description "Identification of each data node within YANG module. It is unique 64-bit unsigned integers."; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-poweff-asset-ext@2023-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-poweff-asset-ext@2023-10-12.yang new file mode 100644 index 000000000..2fde6d4ca --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-poweff-asset-ext@2023-10-12.yang @@ -0,0 +1,98 @@ +module ietf-poweff-asset-ext { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-poweff-asset-ext"; + prefix ietf-poweff-asset-ext; + import ietf-lmo { + prefix ietf-lmo; + } + import ietf-lmo-assets { + prefix ietf-lmo-asset; + } + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + Editor: Jan Lindblad + + Editor: Snezana Mitrovic + + Editor: Marisol Palmero + "; + description + "This YANG module includes extra attributes which + complement sustainability for assets. + + Copyright (c) 2021 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 + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2023-10-12 { + description + "Initial revision to complement Asset Inventory Module as + part of the DMALMO YANG Model, with sustainability attributes"; + reference + "RFC XXXX: DMALMO YANG Model"; + } + + augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst { + when "derived-from-or-self(../ietf-lmo:lmo-class, "+ + " 'ietf-lmo-asset:asset')"; + description + "Assets attributes related to sustainability"; + leaf age { + type string; + description + "Age of the asset"; + } + leaf site { + when "not(../ietf-lmo:parent/ietf-lmo:id)"; + type string; + description + "location site name"; + // FIXME: Make this a reference to a list of sites? + // FIXME: force this to be set for all assets that + // do not have a parent? + } + leaf modular { + type boolean; + description + "The asset is or is not modular"; + } + leaf status { + type string; + description + "NEED to include: off, enabled, disabled, not present, + failed, reserved-on, standby"; + //FIXME status is simply the most inconsistent field + //with wide variety of values reported. It is better + //to make this a Enum with fixed set list of states. + } + leaf slot { + type string; + mandatory "true"; + description + "Defines the slot where the asset is placed in the chasssis. + Used to map the sensor to particular UID."; + } + leaf device-family { + type string; + description + "Device Family - may be derived from the product name or + product id. It is to be used for immplementation + purpose - filtering capability and future optimization + purposes"; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-poweff-derived@2023-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-poweff-derived@2023-10-12.yang new file mode 100644 index 000000000..347e79262 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-poweff-derived@2023-10-12.yang @@ -0,0 +1,65 @@ +module ietf-poweff-derived { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-poweff-derived"; + prefix ietf-poweff-derived; + + import ietf-poweff-sensors { + prefix ietf-poweff-sensors; + } + import ietf-lmo { + prefix ietf-lmo; + } + import ietf-lmo-assets-inventory { + prefix ietf-lmo-asset; + } + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + Editor: Jan Lindblad + + Editor: Snezana Mitrovic + + Editor: Marisol Palmero + "; + description + "This YANG module includes power derived values per asset. + Typically, power derived values will be calculated on the + receiver, even those values may be provided by the devices as + well. + Typically we expect chassis to report total psu-input-power and + psu-output-power but ptr-bps-ratio may be derived on the receiver + side. + + Copyright (c) 2021 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 + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2023-10-12 { + description + "Initial revision to document power derived data"; + reference + "RFC XXXX: ..."; + } + + augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst { + when "derived-from-or-self(../ietf-lmo:lmo-class, "+ + " 'ietf-lmo-asset:asset')"; + description + "Power derived attributes related to assets"; + + uses ietf-poweff-sensors:power-derived-g; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-poweff-environment@2023-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-poweff-environment@2023-10-12.yang new file mode 100644 index 000000000..225b6fc5c --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-poweff-environment@2023-10-12.yang @@ -0,0 +1,62 @@ +module ietf-poweff-environment { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-poweff-environment"; + prefix ietf-poweff-environment; + + import ietf-poweff-sensors { + prefix ietf-poweff-sensors; + } + import ietf-lmo { + prefix ietf-lmo; + } + import ietf-lmo-assets-inventory { + prefix ietf-lmo-asset; + } + + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + Editor: Jan Lindblad + + Editor: Snezana Mitrovic + + Editor: Marisol Palmero + "; + description + "This YANG module includes the live reading from the network + devices related to the power environment. Dynamic/real-time + data read from the network device, basically reading Voltage, + Current, Power (Watts), and Temperature. + + Copyright (c) 2021 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 + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2023-10-12 { + description + "Initial revision to document power environmental related data"; + reference + "RFC XXXX: ..."; + } + augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst { + when "derived-from-or-self(../ietf-lmo:lmo-class, "+ + " 'ietf-lmo-asset:asset')"; + description + "Assets attributes related to power environment"; + + uses ietf-poweff-sensors:sensors-g; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-poweff-sensors@2023-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-poweff-sensors@2023-10-12.yang new file mode 100644 index 000000000..968e4d760 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-poweff-sensors@2023-10-12.yang @@ -0,0 +1,344 @@ +module ietf-poweff-sensors { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-poweff-sensors"; + prefix ietf-poweff-sensors; + + import ietf-poweff-types { + prefix ietf-poweff-types; + } + + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + Editor: Jan Lindblad + + Editor: Snezana Mitrovic + + Editor: Marisol Palmero + "; + description + "This YANG module defines basic groupings for POWEFF sensor + management. + + Copyright (c) 2021 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 + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2023-10-12 { + description + "Initial revision of POWEFF sensors"; + reference + "RFC XXXX: ..."; + } + + grouping sensors-g { + description "sensors grouping"; + container sensors { + description "list of sensors"; + + list sensor { + key "sensor-type"; + description "list of sensors attached to this asset"; + leaf sensor-type { + type identityref { + base ietf-poweff-types:sensor-type; + } + // FIXME: Are we fine with a single sensor of each type + // for each asset? I.e. is there ever a need for more than + // one Vin-sensor on a particular asset? Ever more than one + // Temp-sensor? If so, we need to add a second key here. + description + "Type of sensor sending data per asset: + Vin, Iin, Vout, Iout, Pin, Pout, Palloc, Temp, etc. + Sensor type specifies which unit of measurement is used."; + } + leaf sensor-location { + type string; + mandatory "true"; + description + "Indicates the current location where the sensor is located + in the chassis,typically refers to slot"; + } + leaf sensor-state { + type string; + description + "Current state of the sensor"; + // FIXME: What does this mean? + } + leaf sensor-current-reading { + type string; + config false; + description + "Current reading of the sensor"; + } + leaf sensor-accuracy-eligible { + type boolean; + default false; + description + "Used to identify which sensor/assets reading shall be + included in real metrics"; + } + leaf sensor-accuracy { + type string; + must "../sensor-accuracy-eligible = 'true'"; + description + "Maximum deviation to be considered. This attribute mainly + will apply to drawn power, which corresponds to PSU PowerIn + measured power or calculated power; assuming discrepancy + between Real Power, power collected from a power meter, and + power measured or calculated from the metrics provided by + the sensors"; + } + + container sensor-thresholds { + description + "Threshold values for the particular sensor. + Default values shall beprovided as part of static data + but when configurable need to be pulledfrom the device. + Ideally, the sensor should allow configuing + thesethreshold values"; + + leaf minor-low { + type string; + description + "minor-low"; + } + leaf minor-high { + type string; + description + "minor-high"; + } + leaf major-low { + type string; + description + "major-low"; + } + leaf major-high { + type string; + description + "major-high"; + } + leaf critical-low { + type string; + description + "critical-low"; + } + leaf critical-high { + type string; + description + "critical-high"; + } + leaf shutdown { + type string; + description + "shutdown"; + } + } + } + } + } + + grouping power-derived-g { + description + "define derived metrics"; + container power-derived { + config false; + description "power derived attributes"; + + leaf heat-dissipation { + type string; + description + "It refers to Heat Transfer, i.e. heat transferred from + hotter object to coolerobject (1W = 3.412BTU/h)"; + } + leaf rated-input-pwr-value { + type string; + mandatory "true"; + description + "Total Input Power for the chassis and specific inventory + inside. The sum for all assets for specific hardware + configuration. Can be calculated for Typical, Operating, or + Maximum anticipated Capacity Load. Mainly used for + dimensioning based on benchmark data"; + } + leaf asset-input-pwr { + type string; + mandatory "true"; + description + "For a given asset, assumed input power means the rate of + electricity consumption in Watts provided by the network + device or sensor. Conditionally derived - if + the device/sensor can give actualpower draw then this + calculation is not required, and will be taken directly + from the sensor."; + } + leaf asset-output-pwr { + type string; + description + "Watts provided to the internal components for a given + asset. Only applicable to assets that provide output power, + such as PSUs. This is present here to accommodate chassis + that don’t provide Watt value currently. Ideal + implementation should provide Pout sensor reading"; + //FIXME: add condition this is mandatory for when asset is + //chassis or PSU and not LC or Port; + } + leaf psu-input-power { + type string; + mandatory "true"; + description + "Total input power per chassis, rate of the electricity + consumption in Watts. Sum of asset-input-pwr when uid=PSU. + It considers all operational PSU'́s to the chassis"; + } + leaf psu-output-power { + type string; + mandatory "true"; + description + "Total input power for chassis, rate of the electricity + consumption inWatts. Sum of asset-output-pwr when uid=PSU. + It considers alloperational PSU's to the chassis"; + } + leaf psu-pwr-ratio { + type string; + mandatory "true"; + description + "Define dynamic (current) power ratio taking into + consideration total system real power input vs used. Not + expected to be the same as PSU efficiency. Formula: + (psu-output-power / psu-input-power) * 100.0. + It considers all operational PSU ́s to the chassis."; + } + leaf energy-traffic-ratio { + type string; + mandatory "true"; + description + "How much Watts is spent to move 100Gigaytes per + chassis within thetime period; Formula: + psu-output-power [Watt] /SUM of all interfaces + (input-data-rate-bits + output-data-rate-bits). + Measured over a period of 1hr. energy-traffic-ratio is + the value considered for the complete chassis and all + operational LC ́s/interfaces."; + } + } + } + + grouping power-static-g { + description + "define static attributes"; + container power-static { + description "power static attributes"; + + leaf max-amp { + type string; + mandatory "true"; + description + "For a given asset, it is the current in Amperes that the + asset could withdraw at Maximum capacity"; + } + leaf output-amp { + type string; + mandatory "true"; + description + "For a given asset, it is the current in Amperes that the + asset couldwithdraw at Operating capacity."; + } + leaf input-amp { + type string; + mandatory "true"; + description + "Current of an asset at a typical power consumption of + switch in Amperes. Somethimes refered to as input-current"; + } + leaf max-output-pwr { + type string; + mandatory "true"; + description + "For a given asset, it is the maximum power in Watts that + the asset could draw at Maximum capacity"; + } + leaf output-pwr { + type string; + mandatory "true"; + description + "For a given asset, it is the power in Watts that the + asset could withdraw at Operating capacity"; + } + leaf typical-output-pwr { + type string; + mandatory "true"; + description + "This value is an estimation of the average power usage + in Watts that the same configuration will use at Typical + capacity"; + } + leaf accuracy-pwr { + type string; + description + "If known, the maximum deviation of power to be considered. + BU shouldprovide an estimation"; + } + leaf inline-pwr { + type string; + mandatory "true"; + description + "Available PoE Power i.e the power which can be passed over + ethernet cables to power devices."; + } + leaf psu-efficiency { + type string; + mandatory "true"; + description + "Rating the PSU has been certified for against 80plus + certification specification. The amount of the actual power + delivered to the assetdivided by the electrical power drawn + from the main supply socket.i.e. Output Power of System/ + Input Power of PSU. The objective for psu-efficiency values + is to reach 80+ certification. + Please refer to https://www.clearesult.com/80plus"; + } + leaf voltage-type { + type string; + mandatory "true"; + description + "AC/DC/HVDC. Note: DC typically gives an accurate measure, + but AC, due to the nature of the metric is not accurate"; + } + leaf idle-pwr { + type string; + mandatory "true"; + description + "Initial power allocated to the asset with no traffic load"; + } + leaf max-temperature { + type string; + mandatory "true"; + description + "Operating temperature - i.e max temperature tolerance + (temperaturerange expands to approximately -40°C to 85°C). + If the asset exceeds themax temperature limit, it either + slows down or stops completely"; + } + leaf pwr-saving-mode { + type string; + mandatory "true"; + description + "Does the asset support any power-saving software feature Y/N. + Will beexpanded in future releases"; + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-poweff-static@2023-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-poweff-static@2023-10-12.yang new file mode 100644 index 000000000..36af2386d --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-poweff-static@2023-10-12.yang @@ -0,0 +1,64 @@ +module ietf-poweff-static { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-poweff-static"; + prefix ietf-poweff-static; + + import ietf-poweff-sensors { + prefix ietf-poweff-sensors; + } + import ietf-lmo { + prefix ietf-lmo; + } + import ietf-lmo-assets-inventory { + prefix ietf-lmo-asset; + } + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + Editor: Jan Lindblad + + Editor: Snezana Mitrovic + + Editor: Marisol Palmero + "; + description + "This YANG module includes power and energy efficiency + Product Data. Data for a specific asset that aligns to values + provided by the manufacturer can be classified as “static” + since they are unlikely to change during the lifetime of the + product/asset. + They are typically available in a form of data sheets or any kind + of simulation tools. + + Copyright (c) 2021 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 + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2023-10-12 { + description + "Initial revision to document power static data"; + reference + "RFC XXXX: ..."; + } + augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst { + when "derived-from-or-self(../ietf-lmo:lmo-class, "+ + " 'ietf-lmo-asset:asset')"; + description + "Assets attributes related to power static attributes"; + + uses ietf-poweff-sensors:power-static-g; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-poweff-traffic@2023-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-poweff-traffic@2023-10-12.yang new file mode 100644 index 000000000..6302f0b9b --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-poweff-traffic@2023-10-12.yang @@ -0,0 +1,189 @@ +module ietf-poweff-traffic { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-poweff-traffic"; + prefix ietf-poweff-traffic; + import ietf-yang-types { + prefix yang; + } + import ietf-interfaces { + prefix if; + } + import ietf-lmo-assets-inventory { + prefix ietf-lmo-asset; + } + import ietf-lmo { + prefix ietf-lmo; + } + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + Editor: Jan Lindblad + + Editor: Snezana Mitrovic + + Editor: Marisol Palmero + "; + description + "This YANG module describes the live interface and traffic related + metrics. It should be based on rfc7223, + https://datatracker.ietf.org/doc/rfc7223/ + + Copyright (c) 2021 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 + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + "; + + revision 2023-10-12 { + description + "Initial revision to document power traffic data"; + reference + "RFC XXXX: ..."; + } + augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst { + when "derived-from-or-self(../ietf-lmo:lmo-class, "+ + " 'ietf-lmo-asset:asset')"; + description + "Traffic attributes related to sustainability"; + container interfaces { + description "Interface parameters"; + list interface { + key "name"; + leaf name { + type leafref { + path "/if:interfaces/if:interface/if:name"; + require-instance false; + } + description + "The name of the interface."; + } + leaf description { + type string; + description + "A textual description of the interface. + + A server implementation MAY map this leaf to the ifAlias + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifAlias. The definition of + such a mechanism is outside the scope of this document. + + Since ifAlias is defined to be stored in non-volatile + storage, the MIB implementation MUST map ifAlias to the + value of 'description' in the persistently stored + configuration."; + reference + "RFC 2863: The Interfaces Group MIB - ifAlias"; + } + leaf if-index { + type int32; + description + "The ifIndex value for the ifEntry represented by this + interface"; + reference + "RFC 2863: The Interfaces Group MIB - ifIndex"; + } + leaf interface-type { + type string; + //TO_DO adjust type to identy interface-type or similar + description + "The type of the interface. + + When an interface entry is created, a server MAY + initialize the type leaf with a valid value, e.g., if it + is possible to derive the type from the name of the + interface. + + If a client tries to set the type of an interface to a + value that can never be used by the system, e.g., if the + type is not supported or if the type does not match the + name of the interface, the server MUST reject the request. + A NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + leaf bandwidth { + type yang:gauge64; + units "kbits/s"; + description + "It is considered to be the Max bandwidth of the interface, + in kbps, it could also be called capacity"; + } + leaf speed { + type yang:gauge64; + units "kbits/s"; + description + "It is considered to be current bandwidth of the interface, + in kbps, it could also be called capacity"; + } + leaf data-rate-frequency { + type string; + //TO_DO normalized to do not be string, as different devices + //will provide different implementation + description + "The length of time for which data is used to compute load + statistics, load-interval command in interface + configuration. Default value is 5min"; + } + container statistics { + description "A collection of interface-related statistics + objects."; + leaf input-data-rate { + type uint64; + units "kbits/s"; + mandatory "true"; + description + "Input data rate in 1000's of bps. Average number of bits + received per second in the last load period + (300 sec by default)"; + } + leaf input-packet-rate { + type uint64; + units "packet/s"; + description + "Input packets per second. Average number of packets + received per second in the last load period + (300 sec by default)"; + } + leaf output-data-rate { + type uint64; + units "kbits/s"; + mandatory "true"; + description + "Output data rate in 1000's of bps. Average number of bits + sent per second in the last load period + (300 sec by default)"; + } + leaf output-packet-rate { + type uint64; + units "packet/s"; + description + "Output packets per second. Average number of packets + sent per second in the last load period + (300 sec by default)"; + } + } + description "Interface parameters for a specific interface"; + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-poweff-types@2023-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-poweff-types@2023-10-12.yang new file mode 100644 index 000000000..07f104079 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-poweff-types@2023-10-12.yang @@ -0,0 +1,282 @@ +module ietf-poweff-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-poweff-types"; + prefix ietf-poweff-types; + + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + Editor: Jan Lindblad + + Editor: Snezana Mitrovic + + Editor: Marisol Palmero + "; + description + "This YANG module defines basic quantities, measurement units + and sensor types for the POWEFF framework. + + Copyright (c) 2021 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 + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2023-10-12 { + description + "Initial revision of POWEFF types"; + reference + "RFC XXXX: ..."; + } + + identity sensor-class { + description "Sensor's relation to the asset it sits on."; + } + identity sc-input { + base sensor-class; + description "Sensor reports input quantity of the asset it sits + on."; + } + identity sc-output { + base sensor-class; + description "Sensor reports output quantity of the asset it sits + on."; + } + identity sc-allocated { + base sensor-class; + description "Sensor reports (maximum) allocated quantity of the + asset it sits on."; + } + identity sensor-quantity { + description "Sensor's quantity being measured."; + } + identity sq-voltage { + base sensor-quantity; + description "Sensor reports electric tension, voltage."; + } + identity sq-current { + base sensor-quantity; + description "Sensor reports electric current."; + } + identity sq-power { + base sensor-quantity; + description "Sensor reports power draw (energy per unit of time)."; + } + identity sq-power-apparent { + base sq-power; + description "Sensor reports apparent power, i.e. average electrical + current times voltage (in VA)."; + } + identity sq-power-true { + base sq-power; + description "Sensor reports true power, i.e. integral over current + and voltage at each instant in time."; + } + identity sq-energy { + base sensor-quantity; + description "Sensor reports actual energy drawn by asset."; + } + identity sq-co2-emission { + base sensor-quantity; + description "Sensor reports CO2 (carbon dioxide) emission by + asset."; + } + identity sq-co2eq-emission { + base sensor-quantity; + description "Sensor reports CO2 (carbon dioxide) equivalent + emission by asset."; + } + identity sq-temperature { + base sensor-quantity; + description "Sensor reports temperature of asset."; + } + identity sensor-unit { + description "Sensor's unit of reporting."; + } + identity su-volt { + base sensor-unit; + base sq-voltage; + description "Sensor unit volt, V."; + } + identity su-ampere { + base sensor-unit; + base sq-current; + description "Sensor unit ampere, A."; + } + identity su-watt { + base sensor-unit; + base sq-power; + description "Sensor unit watt, W."; + } + identity su-voltampere { + base sensor-unit; + base sq-power; + description "Sensor unit Volt*Ampere, VA."; + } + identity su-kw { + base sensor-unit; + base sq-power; + description "Sensor unit kilowatt, kW."; + } + identity su-joule { + base sensor-unit; + base sq-energy; + description "Sensor unit joule, J."; + } + identity su-wh { + base sensor-unit; + base sq-energy; + description "Sensor unit watthour, Wh."; + } + identity su-kwh { + base sensor-unit; + base sq-energy; + description "Sensor unit kliowatthour, kWh."; + } + identity su-kelvin { + base sensor-unit; + base sq-temperature; + description "Sensor unit kelvin, K."; + } + identity su-celsius { + base sensor-unit; + base sq-temperature; + description "Sensor unit celsius, C."; + } + identity su-farenheit { + base sensor-unit; + base sq-temperature; + description "Sensor unit farenheit, F."; + } + identity su-gram { + base sensor-unit; + base sq-co2-emission; + description "Sensor unit gram, g."; + } + identity su-kg { + base sensor-unit; + base sq-co2-emission; + description "Sensor unit kliogram, kg."; + } + identity su-ton { + base sensor-unit; + base sq-co2-emission; + description "Sensor unit ton, t."; + } + identity sensor-type { + description "Sensor's type, i.e. combination of class, quantity and + unit."; + } + identity st-v-in { + base sensor-type; + base sc-input; + base sq-voltage; + base su-volt; + description "Sensor reporting Voltage In to asset."; + } + identity st-v-out { + base sensor-type; + base sc-output; + base sq-voltage; + base su-volt; + description "Sensor reporting Voltage Out of asset."; + } + identity st-i-in { + base sensor-type; + base sc-input; + base sq-current; + base su-ampere; + description "Sensor reporting Current In to asset."; + } + identity st-i-out { + base sensor-type; + base sc-output; + base sq-current; + base su-ampere; + description "Sensor reporting Current Out of asset."; + } + identity st-p-in-apparent-watt { + base sensor-type; + base sc-input; + base sq-power-apparent; + base su-voltampere; + description "Sensor reporting Power In to asset as apparent (I*U) + power."; + } + identity st-p-out-apparent-watt { + base sensor-type; + base sc-output; + base sq-power-apparent; + base su-voltampere; + description "Sensor reporting Power Out of asset as apparent (I*U) + power."; + } + identity st-p-in-true-watt { + base sensor-type; + base sc-input; + base sq-power-true; + base su-watt; + description "Sensor reporting Power In to asset as true power."; + } + identity st-p-out-true-watt { + base sensor-type; + base sc-output; + base sq-power-true; + base su-watt; + description "Sensor reporting Power Out of asset as true power."; + } + identity st-p-allocated-watt { + base sensor-type; + base sc-allocated; + base sq-power; + base su-watt; + description "Sensor reporting Allocated Power for asset."; + } + identity st-w-j { + base sensor-type; + base sq-energy; + base su-joule; + description "Sensor reporting energy draw of asset in J."; + } + identity st-w-wh { + base sensor-type; + base sq-energy; + base su-wh; + description "Sensor reporting energy draw of asset in Wh."; + } + identity st-w-kwh { + base sensor-type; + base sq-energy; + base su-kwh; + description "Sensor reporting energy draw of asset in kWh."; + } + identity st-t-k { + base sensor-type; + base sq-temperature; + base su-kelvin; + description "Sensor reporting Temperature of asset in K."; + } + identity st-t-c { + base sensor-type; + base sq-temperature; + base su-celsius; + description "Sensor reporting Temperature of asset in °C."; + } + identity st-t-f { + base sensor-type; + base sq-temperature; + base su-farenheit; + description "Sensor reporting Temperature of asset in °F."; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-srv6-topology@2023-10-16.yang b/experimental/ietf-extracted-YANG-modules/ietf-srv6-topology@2023-10-16.yang new file mode 100644 index 000000000..347b4670d --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-srv6-topology@2023-10-16.yang @@ -0,0 +1,259 @@ +module ietf-srv6-topology { + yang-version "1.1"; + namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-topology"; + prefix "srv6-topo"; + + import ietf-inet-types { + prefix "inet"; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-network { + prefix "nw"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix "nt"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-l3-unicast-topology { + prefix "l3t"; + reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; + } + import ietf-srv6-types { + prefix "srv6-types"; + reference "RFC XXXX: YANG Data Model for SRv6 Base and Static"; + } + import ietf-srv6-base { + prefix "srv6-base"; + reference "RFC XXXX: YANG Data Model for SRv6 Base and Static"; + } + import ietf-sr-mpls-topology { + prefix "sr-mpls-topo"; + reference + "RFC XXXX: YANG Data Model for SR and SR TE Topologies on + MPLS Data Plane"; + } + + organization + "IETF TEAS Working Group"; + contact + "TBD"; + + description + "This module describes a YANG model for representing and + manipulating Segment Routing Topologies on IPv6 Data Plane."; + + revision 2023-10-16 { + description + "Initial Version"; + reference + "RFC XXXX, YANG Data Model for SR and SR TE Topologies on + IPv6 Data Plane"; + } + + grouping srv6-topology-type { + description + "Identifies the SRv6 topology type. This type of network + topologies use Segment Routing (SR) technology over the IPv6 + data plane"; + container srv6 { + presence "Indicates SRv6 topology"; + description + "Its presence identifies the SRv6 topology type."; + } + } + + grouping srv6-node-attributes { + description "SRv6 node scope attributes."; + container srv6 { + presence "Presence indicates SRv6 is enabled."; + description + "Containing SRv6 attributes."; + container node-capabilities { + config false; + description + "SRv6 capabilities of the node."; + uses srv6-base:srv6-msd-signaled; + } + list supported-algorithms { + key "algorithm"; + description + "Supported algorithms of the node."; + leaf algorithm { + type uint8 { + range "128..255"; + } + mandatory true; + description + "Algorithm Id (for Flex-Algo)."; + } + } + container locators { + description "SRv6 locators of the node."; + list locator { + key "prefix-addr prefix-len"; + description + "An SRv6 locator"; + leaf prefix-addr { + type inet:ipv6-address; + mandatory true; + description + "IPv6 address"; + } + leaf prefix-len { + type srv6-types:srv6-locator-len; + mandatory true; + description + "Locator (prefix) length"; + } + leaf algorithm { + type uint8 { + range "128..255"; + } + description + "Algorithm Id (for Flex-Algo)."; + } + leaf anycast { + type boolean; + default false; + description + "Set to true if the locator is anycast."; + } + leaf is-readvertisment { + type boolean; + config false; + description + "Set to true if the locator has been + readvertising from another topology."; + } + container sids { + description + "SRv6 SIDs covered by the locator"; + list sid { + key "sid-value"; + description + "An SRv6 SID"; + leaf sid-value { + type srv6-types:srv6-sid; + description + "The SID value"; + } + leaf end-behavior-type { + type identityref { + base srv6-types:srv6-endpoint-type; + } + description "Type of SRv6 end behavior."; + } + } + } + } + } + uses sr-mpls-topo:information-source-attributes; + } + } + + grouping srv6-link-attributes { + description "SRv6 link scope attributes"; + container srv6 { + presence "Presence indicates SRv6 is enabled."; + description + "Containing SRv6 attributes."; + container link-capabilities { + config false; + description + "SRv6 capabilities of the link."; + uses srv6-base:srv6-msd-signaled; + } + container sids { + description + "SRv6 SIDs covered by the locator"; + list sid { + key "sid-value"; + description + "An SRv6 SID"; + leaf sid-value { + type srv6-types:srv6-sid; + description + "The SID value"; + } + leaf end-behavior-type { + type identityref { + base srv6-types:srv6-endpoint-type; + } + description "Type of SRv6 end behavior."; + } + leaf algorithm { + type uint8 { + range "128..255"; + } + config false; + description + "Algorithm Id (for Flex-Algo)."; + } + leaf is-eligible-for-protection { + type boolean; + default false; + description + "Set to true if the SID is eligible for protection."; + reference + "RFC 8402: Segment Routing Architecture. Sec. 3.4."; + } + leaf is-part-of-set { + type boolean; + default false; + description + "Set to true if the SID is part of a set."; + } + leaf is-persistent { + type boolean; + default true; + description + "Set to true if the SID is persistently allocated."; + } + leaf is-on-lan { + type boolean; + default false; + description + "Set to true if on a LAN."; + } + leaf weight { + type uint8; + description + "The value represents the weight of the SID for the + purpose of load balancing. The use of the weight + is defined in RFC 8402."; + reference + "RFC 8402: Segment Routing Architecture. Sec. 3.4."; + } + } + } + uses sr-mpls-topo:information-source-attributes; + } + } + + augment "/nw:networks/nw:network/nw:network-types/" + + "l3t:l3-unicast-topology" { + description + "Defines the SRv6 topology type."; + uses srv6-topology-type; + } + + augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" { + when "../../nw:network-types/l3t:l3-unicast-topology/" + + "srv6-topo:srv6" { + description "Augment only for SRv6 topology."; + } + description "Augment node configuration."; + uses srv6-node-attributes; + } + + augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" { + when "../../nw:network-types/l3t:l3-unicast-topology/" + + "srv6-topo:srv6" { + description "Augment only for SRv6 topology."; + } + description "Augment link configuration"; + uses srv6-link-attributes; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2023-09-17.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2023-10-17.yang similarity index 91% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2023-09-17.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2023-10-17.yang index f961aab47..3f0212f81 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2023-09-17.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2023-10-17.yang @@ -62,7 +62,7 @@ module ietf-yang-push-revision { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2023-09-17 { + revision 2023-10-17 { description "First revision"; reference @@ -94,10 +94,21 @@ module ietf-yang-push-revision { to a specific revision-label not supported by the publisher."; } + identity incompatible-revision-and-revision-label { + base sn:establish-subscription-error; + base sn:modify-subscription-error; + description + "The combination of revision and the revision-label are incompatible. + This failure happens when the revision and the revision-label are both specified + in the RPC and the YANG module supported by the publisher does not support one of + the revision or the revision-label."; + } + grouping yang-push-module-version-config { description "This grouping combines the module name, the revision and - revision-label leaves, with the revision being configurable."; + revision-label leaves. This grouping is to be used for configuration and the + leaves are not mandatory."; leaf module-name { type yang:yang-identifier; description @@ -120,8 +131,9 @@ module ietf-yang-push-revision { grouping yang-push-module-version { description "This grouping combines the module name, the revision and - revision-label leaves, with the revision being non - configurable."; + revision-label leaves. This grouping is to be used for read-only cases such + as the content of YANG push Notifications. The module-name and revision are + mandatory and MUST be present in the data."; leaf module-name { type yang:yang-identifier; config false; @@ -253,7 +265,6 @@ module ietf-yang-push-revision { yang-push-module-version-list grouping."; uses ypr:yang-push-module-version-list; } - // Subscription container augment "/sn:subscriptions/sn:subscription/sn:target/sn:stream" + "/sn:stream-filter/sn:within-subscription" {