diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ace-brski-ace@2023-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-ace-brski-ace@2023-07-07.yang
new file mode 100644
index 000000000..471bf2407
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-ace-brski-ace@2023-07-07.yang
@@ -0,0 +1,81 @@
+module ietf-ace-brski-ace {
+ yang-version 1.1;
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-ace-brski-ace";
+
+ prefix vch-ace;
+
+ import ietf-voucher {
+ prefix vch;
+ reference "I-D.ietf-anima-rfc8366bis-07";
+ }
+
+ organization
+ "IETF ACE (Authentication and Authorization for Constrained Environments)
+ Working Group";
+
+ contact
+ "WG Web:
+ WG List:
+
+ Editor: Christian Amsüss
+ ";
+
+ description
+ "This module augments the voucher artifact for bootstrapping
+ (onboarding) with mechanisms for onboarding onto ACE (Authentication
+ and Authorization for Constrained Environments) Authorization
+ Servers.
+
+ Copyright (c) 2019 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 2023-07-07 {
+ description
+ "Initial revision.";
+
+ reference
+ "I-D.amsuess-ace-brski-ace, Provisioning ACE credentials through
+ BRSKI";
+ }
+
+ uses "vch:voucher-artifact-grouping" {
+ augment "voucher" {
+ description
+ "Mechanisms for onboarding onto ACE (Authentication and Authorization
+ for Constrained Environments) Authorization Servers";
+
+ leaf ace-as-key {
+ type binary;
+ description
+ "Key(s) held by the ACE Authorization Server by which it
+ authenticates (and the Resource Server verifies) tokens.
+ It is a CBOR encoded COSE_KeySet.";
+ reference
+ "I-D.amsuess-ace-brski-ace, Provisioning ACE credentials
+ through BRSKI";
+ }
+
+ leaf ace-aud {
+ type string;
+ description
+ "Audience identifier by which the ACE Authorization Server
+ will be the pledge that is enrolled as an ACE Resource
+ Server.";
+ reference
+ "I-D.amsuess-ace-brski-ace, Provisioning ACE credentials
+ through BRSKI";
+ }
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-computing-information@2022-05-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-computing-information@2022-05-11.yang
new file mode 100644
index 000000000..f499611c0
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-computing-information@2022-05-11.yang
@@ -0,0 +1,124 @@
+module ietf-computing-information {
+ yang-version "1.1";
+ namespace "urn:ietf:params:xml:ns:yang: ietf-computing-information";
+
+ prefix computing-information;
+
+ import ietf-inet-types {
+ prefix inet ;
+ revision-date 2013-07-15 ;
+ reference "RFC 6991: Common YANG Data Types";
+ }
+
+ organization
+ "IETF cats(Computing-Aware Traffic Steering)Working Group";
+
+ contact
+ "WG Web:
+ WG List:
+
+ Author: Xuewei Wang
+
+ Author: Huijuan Yao
+
+ Author: Zhiqiang Li
+ ";
+
+ description
+ "This document defines a YANG data model used for computing information awareness.
+
+ 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.
+
+ 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 2022-05-11 {
+ description 'First draft.'
+ ;
+ reference 'RFC XXXX: A YANG Data Model for Computing '
+ + 'Information Awareness.'
+ ;
+ }
+
+ container awareness {
+ description 'transferring of computing information of the service.'
+ ;
+ container computing-information {
+ description 'computing information transferring.'
+ ;
+ container service-instance {
+ description 'computing information of a service instance.'
+ ;
+ leaf service-ID {
+ type inet:ip-prefix;
+ description ' The ID of the service provided by the service instance '
+ ;
+ }
+ leaf service-domain-name {
+ type string;
+ description ' The domain name of the service provided by the service instance '
+ ;
+ }
+ leaf computing-energy-consumption {
+ type uint32
+ description ' the value of computing energy consumption '
+ ;
+ }
+ leaf computing-cost {
+ type uint32
+ description ' the comprehensive computing cost '
+ ;
+ }
+ leaf peak-value-of-available-computing {
+ type uint32
+ description ' the peak value of available computing '
+ ;
+ }
+ leaf number-of-available-service-connections {
+ type uint32
+ description ' the number of available service connections '
+ ;
+ }
+ leaf CPU-performance {
+ type uint16;
+ description ' the CPU utilization'
+ ;
+ }
+ leaf GPU-performance {
+ type uint16;
+ description ' the GPU utilization'
+ ;
+ }
+ leaf NPU-performance {
+ type uint16;
+ description ' the NPU utilization'
+ ;
+ }
+ leaf storage-capacity {
+ type uint32;
+ description ' The capacity of the storage '
+ ;
+ }
+ leaf service-delay {
+ type uint32;
+ description ' Service processing latency '
+ ;
+ }
+ }
+ }
+ }
+}
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
new file mode 100644
index 000000000..e84ab44b2
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-incident-types@2023-05-16.yang
@@ -0,0 +1,156 @@
+module ietf-incident-types {
+ yang-version "1.1";
+ namespace "urn:ietf:params:xml:ns:yang:ietf-incident-types";
+ prefix "int";
+
+ import ietf-network {
+ prefix nw;
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF OPSAWG Working Group";
+ contact
+ "WG Web: ;
+ WG List:
+ Author: Chong Feng
+ Author: Tong Hu
+ Author: Luis Miguel Contreras Murillo
+ Author : Thomas Graf
+ Author : Qin Wu
+ Author: Chaode Yu
+ Author: Nigel Davis ";
+
+ description
+ "This module defines the identities and typedefs for
+ incident management.
+
+ Copyright (c) 2022 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-05-16 {
+ description "initial version";
+ reference "RFC XXX: Yang module for incident management.";
+ }
+ //identities
+ identity incident-domain {
+ description "The abstract identity to indicate the domain of
+ an incident.";
+ }
+ identity single-domain {
+ base incident-domain;
+ description "single domain.";
+ }
+ identity access {
+ base single-domain;
+ description "access domain.";
+ }
+ identity ran {
+ base access;
+ description "radio access network domain.";
+ }
+ identity transport {
+ base single-domain;
+ description "transport domain.";
+ }
+ identity otn {
+ base transport;
+ description "optical transport network domain.";
+ }
+ identity ip {
+ base single-domain;
+ description "ip domain.";
+ }
+ identity ptn {
+ base ip;
+ description "packet transport network domain.";
+ }
+
+ identity cross-domain {
+ base incident-domain;
+ description "cross domain.";
+ }
+ identity incident-category {
+ description "The abstract identity for incident category.";
+ }
+ identity device {
+ base incident-category;
+ description "device category.";
+ }
+ identity power-enviorment {
+ base device;
+ description "power system category.";
+ }
+ identity device-hardware {
+ base device;
+ description "hardware of device category.";
+ }
+ identity device-software {
+ base device;
+ description "software of device category";
+ }
+ identity line {
+ base device-hardware;
+ description "line card category.";
+ }
+ identity maintenance {
+ base incident-category;
+ description "maintenance category.";
+ }
+ identity network {
+ base incident-category;
+ description "network category.";
+ }
+ identity protocol {
+ base incident-category;
+ description "protocol category.";
+ }
+ identity overlay {
+ base incident-category;
+ description "overlay category";
+ }
+ identity vm {
+ base incident-category;
+ description "vm category.";
+ }
+
+ //typedefs
+ typedef incident-priority {
+ type enumeration {
+ enum critical {
+ description "the incident MUST be handled immediately.";
+ }
+ enum high {
+ description "the incident should be handled as soon as
+ possible.";
+ }
+ enum medium {
+ description "network services are not affected, or the
+ services are slightly affected,but corrective
+ measures need to be taken.";
+ }
+ enum low {
+ description "potential or imminent service-affecting
+ incidents are detected,but services are
+ not affected currently.";
+ }
+ }
+ description "define the priority of incident.";
+ }
+ typedef node-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:node/nw:node-id";
+ }
+ description "reference a network node.";
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-03-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-05-16.yang
similarity index 59%
rename from experimental/ietf-extracted-YANG-modules/ietf-incident@2023-03-13.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-incident@2023-05-16.yang
index a65e25f05..073279d47 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-03-13.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-incident@2023-05-16.yang
@@ -7,33 +7,31 @@ module ietf-incident {
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-inventory {
- prefix nw-inv;
- reference
- "draft-wzwb-opsawg-network-inventory-management-01:
- An Inventory Management Model for Enterprise Networks";
- }
+
import ietf-alarms {
prefix al;
reference
"RFC 8632: A YANG Data Model for Alarm Management";
}
+
+ import ietf-incident-types {
+ prefix int;
+ reference
+ "draft-feng-opsawg-incident-management: Incident
+ Management for Network Services";
+ }
organization
"IETF OPSAWG Working Group";
contact
- "WG Web: <https://datatracker.ietf.org/wg/opsawg/>
- WG List: <mailto:opsawg@ietf.org>
- Author: Chong Feng <mailto:frank.fengchong@huawei.com>
- Author: Tong Hu <mailto:hutong@cmhi.chinamobile.com>
- Author: Luis Miguel Contreras Murillo <mailto:
- luismiguel.contrerasmurillo@telefonica.com>;
- Author : Qin Wu <mailto:bill.wu@huawei.com>
- Author: ChaoDe Yu <mailto:yuchaode@huawei.com>";
+ "WG Web: ;
+ WG List:
+ Author: Chong Feng
+ Author: Tong Hu
+ Author: Luis Miguel Contreras Murillo
+ Author : Qin Wu
+ Author: Chaode Yu
+ Author: Nigel Davis ";
description
"This module defines the interfaces for incident management
@@ -58,127 +56,22 @@ module ietf-incident {
(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-05-16 {
+ description "remove identies and typedefs to independent yang
+ module. update some definitions of data model.";
+ reference "RFC XXX: Yang module for incident management.";
+ }
revision 2023-03-13 {
description "initial version";
reference "RFC XXX: Yang module for incident management.";
}
- //identities
- identity incident-domain {
- description "The abstract identity to indicate the domain of
- an incident.";
- }
- identity single-domain {
- base incident-domain;
- description "single domain.";
- }
- identity access {
- base single-domain;
- description "access domain.";
- }
- identity ran {
- base access;
- description "radio access network domain.";
- }
- identity transport {
- base single-domain;
- description "transport domain.";
- }
- identity otn {
- base transport;
- description "optical transport network domain.";
- }
- identity ip {
- base single-domain;
- description "ip domain.";
- }
- identity ptn {
- base ip;
- description "packet transport network domain.";
- }
- identity cross-domain {
- base incident-domain;
- description "cross domain.";
- }
- identity incident-category {
- description "The abstract identity for incident category.";
- }
- identity device {
- base incident-category;
- description "device category.";
- }
- identity power-enviorment {
- base device;
- description "power system category.";
- }
- identity device-hardware {
- base device;
- description "hardware of device category.";
- }
- identity device-software {
- base device;
- description "software of device category";
- }
- identity line {
- base device-hardware;
- description "line card category.";
- }
- identity maintenance {
- base incident-category;
- description "maintenance category.";
- }
- identity network {
- base incident-category;
- description "network category.";
- }
- identity protocol {
- base incident-category;
- description "protocol category.";
- }
- identity overlay {
- base incident-category;
- description "overlay category";
- }
- identity vm {
- base incident-category;
- description "vm category.";
- }
-
- //typedefs
- typedef incident-priority {
- type enumeration {
- enum critical {
- description "the incident MUST be handled immediately.";
- }
- enum high {
- description "the incident should be handled as soon as
- possible.";
- }
- enum medium {
- description "network services are not affected, or the
- services are slightly affected,but corrective
- measures need to be taken.";
- }
- enum low {
- description "potential or imminent service-affecting
- incidents are detected,but services are
- not affected currently.";
- }
- }
- description "define the priority of incident.";
- }
- typedef node-ref {
- type leafref {
- path "/nw:networks/nw:network/nw:node/nw-inv:name";
- }
- description "reference a network node.";
- }
//groupings
grouping resources-info {
description "the grouping which defines the network
resources of a node.";
leaf node {
- type node-ref;
+ type int:node-ref;
description "reference to a network node.";
}
list resource {
@@ -257,13 +150,13 @@ module ietf-incident {
}
leaf domain {
type identityref {
- base incident-domain;
+ base int:incident-domain;
}
mandatory true;
description "the domain of an incident.";
}
leaf priority {
- type incident-priority;
+ type int:incident-priority;
mandatory true;
description "the priority of an incident instance.";
}
@@ -286,31 +179,30 @@ module ietf-incident {
}
leaf ack-status {
type enumeration {
- enum acknowledged;
- enum unacknowledged;
+ enum acknowledged {
+ description "The incident has been acknowledged by user.";
+ }
+ enum unacknowledged {
+ description "The incident hasn't been acknowledged.";
+ }
}
default unacknowledged;
description "the acknowledge status of an incident.";
}
leaf category {
type identityref {
- base incident-category;
+ base int:incident-category;
}
mandatory true;
description "The category of an incident.";
}
-
- leaf tenant {
- type string;
- description "the identifier of related tenant.";
- }
leaf detail {
type string;
description "detail information of this incident.";
}
- leaf resolve-suggestion {
+ leaf resolve-advice {
type string;
- description "The suggestion to resolve this incident.";
+ description "The advice to resolve this incident.";
}
container sources {
description "The source components.";
@@ -349,21 +241,39 @@ module ietf-incident {
uses root-cause-info;
}
}
+ container root-events {
+ description "the root events of the incident.";
+ list root-event {
+ key "type event-id";
+ description "the root event of the incident.";
+ leaf type {
+ type leafref {
+ path "../../../events/event/type";
+ }
+ description "the event type.";
+ }
+ leaf event-id {
+ type leafref {
+ path "../../../events/event[type = current()/../type]"
+ +"/event-id";
+ }
+ description "the event identifier, such as uuid,
+ sequence number, etc.";
+ }
+ }
+ }
container events {
- description "related event.";
+ description "related events.";
list event {
- key "type original-node";
- description "related event.";
+ key "type event-id";
+ description "related events.";
leaf type {
type enumeration {
enum alarm {
description "alarm type";
}
- enum notification {
- description "notification type";
- }
- enum log {
- description "log type";
+ enum inform {
+ description "inform type";
}
enum KPI {
description "KPI type";
@@ -374,18 +284,10 @@ module ietf-incident {
}
description "event type.";
}
- leaf original-node {
- type union {
- type node-ref;
- type empty;//self
- }
- description "the original node where the event occurs.";
- }
- leaf is-root {
- type boolean;
- default false;
- description "whether this event is the cause of
- incident.";
+ leaf event-id {
+ type string;
+ description "the event identifier, such as uuid,
+ sequence number, etc.";
}
choice event-type-info {
description "event type information.";
@@ -465,7 +367,9 @@ module ietf-incident {
description "incident notification. It will be triggered when
the incident is raised, updated or cleared.";
leaf incident-id {
- type string;
+ type leafref {
+ path "/inc:incidents/inc:incident/inc:incident-id";
+ }
description "the identifier of an incident instance.";
}
uses incident-info;
@@ -480,112 +384,39 @@ module ietf-incident {
incidents.";
input {
leaf-list incident-id {
- type string;
+ type leafref {
+ path "/inc:incidents/inc:incident/inc:incident-id";
+ }
description "the identifier of an incident instance.";
}
}
}
rpc incident-diagnose {
description "This rpc can be used to diagnose the specified
- incidents.";
+ incidents. The result of diagnosis will be reported
+ by incident notification.";
input {
leaf-list incident-id {
- type string;
+ type leafref {
+ path "/inc:incidents/inc:incident/inc:incident-id";
+ }
description
"the identifier of an incident instance.";
}
}
- output {
- list incident {
- key incident-id;
- description "The entry of returned incidents.";
- leaf incident-id {
- type string;
- description
- "the identifier of an incident instance.";
- }
- choice result {
- description "result information.";
- case success {
- uses incident-info;
- leaf time {
- type yang:date-and-time;
- description
- "The update time of an incident.";
- }
- }
- case failure {
- leaf error-code {
- type string;
- description "error code";
- }
- leaf error-message {
- type string;
- description "error message";
- }
- }
- }
- }
- }
}
rpc incident-resolve {
description "This rpc can be used to resolve the specified
- incidents. It also can be used to set the
- incident instances are resolved if these incident
- instances are resolved by external system.";
+ incidents. The result of resolution will be reported
+ by incident notification.";
input {
- list incident {
- key incident-id;
- min-elements 1;
- description "incident instances.";
- leaf incident-id {
- type leafref {
- path "/inc:incidents/inc:incident/inc:incident-id";
- }
- description
- "the identifier of an incident instance.";
- }
- leaf resolved {
- type empty;
- description "indicate the incident instance has
- been resolved.";
- }
-
- }
- }
- output {
- list incident {
- key incident-id;
- description "incident instances";
- leaf incident-id {
- type string;
- description "the identifier of incident instance";
- }
- choice result {
- description "result information";
- case success {
- leaf success {
- type empty;
- description "reslove incident instance
- successfully";
- }
- leaf time {
- type yang:date-and-time;
- description "The resolved time of an incident.";
- }
- }
- case failure {
- leaf error-code {
- type string;
- description "error code";
- }
- leaf error-message {
- type string;
- description "error message.";
- }
- }
+ leaf-list incident-id {
+ type leafref {
+ path "/inc:incidents/inc:incident/inc:incident-id";
}
+ description
+ "the identifier of an incident instance.";
}
}
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ipv4-sav-rule@2023-05-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-ipv4-sav-rule@2023-05-20.yang
new file mode 100644
index 000000000..0c5aa5537
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-ipv4-sav-rule@2023-05-20.yang
@@ -0,0 +1,165 @@
+module ietf-ipv4-sav-rule {
+ yang-version "1.1";
+ namespace "urn:ietf:params:xml:ns:yang:ietf-ipv4-sav-rule";
+ prefix "v4sav";
+
+ import ietf-sav {
+ prefix "sav";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ organization
+ "IETF SAVNET Working Group";
+
+ contact
+ "TBD";
+
+ description
+ "This YANG module defines the essential elements for the
+ management of IPv4 SAV rule).
+
+ 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 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; see
+ the RFC itself for full legal notices.";
+
+ revision 2023-05-20 {
+ description
+ "Initial revision.";
+ reference
+ "RFC XXXX: A YANG Data Model for SAV Management";
+ }
+
+ /* Identities */
+
+ identity ipv4 {
+ base sav:ipv4;
+ description
+ "This identity represents the IPv4 address family.";
+ }
+
+ /* Groupings */
+ grouping limit-metadata {
+ description
+ "Common SAV-rule limit metadata.";
+ leaf number {
+ type uint32;
+ description
+ "This attribute allows for controlling number limit.";
+ }
+ leaf percent {
+ type uint8 {
+ range "0..100";
+ }
+ description
+ "This attribute allows for controlling percentage
+ limit.";
+ }
+ }
+
+ augment "/sav:sav/sav:sav-tables/sav:sav-table/"
+ + "sav:sav-rules/sav:sav-rule" {
+ when "derived-from-or-self(../../sav:address-family, "
+ + "'v4sav:ipv4')" {
+ description
+ "This augment is valid only for IPv4.";
+ }
+ description
+ "This leaf augments an IPv4 SAV rule.";
+ leaf source-prefix {
+ type inet:ipv4-prefix;
+ description
+ "IPv4 source prefix.";
+ }
+ }
+
+ augment "/sav:sav/sav:sav-tables/sav:sav-table/"
+ + "sav:active-sav-rule/sav:input" {
+ when "derived-from-or-self(../sav:address-family, "
+ + "'v4sav:ipv4')" {
+ description
+ "This augment is valid only for IPv4.";
+ }
+ description
+ "This augment adds the input parameter of the
+ 'active-sav-rule' action.";
+ leaf source-address {
+ type inet:ipv4-address;
+ description
+ "IPv4 source address.";
+ }
+ }
+ augment "/sav:sav/sav:sav-tables/sav:sav-table/"
+ + "sav:active-sav-rule/sav:output/sav:sav-rule" {
+ when "derived-from-or-self(../../sav:address-family, "
+ + "'v4sav:ipv4')" {
+ description
+ "This augment is valid only for IPv4.";
+ }
+ description
+ "This augment adds the source prefix to the reply of the
+ 'active-sav-rule' action.";
+ leaf source-prefix {
+ type inet:ipv4-prefix;
+ description
+ "IPv4 source prefix.";
+ }
+ }
+
+ augment "/sav:sav/sav:static-savs" {
+ description
+ "This augment defines the 'static' pseudo-protocol
+ with data specific to IPv4.";
+ container ipv4 {
+ description
+ "Support for a 'static' pseudo-protocol instance
+ consists of a list of SAV rules.";
+ container sav-entry-limits {
+ description
+ "Specification limit of ipv4 SAV table.";
+ uses limit-metadata;
+ }
+ list sav-rule {
+ key "source-prefix";
+ description
+ "A list of static SAV rules.";
+ leaf source-prefix {
+ type inet:ipv4-prefix;
+ mandatory true;
+ description
+ "IPv4 source prefix.";
+ }
+ leaf description {
+ type string;
+ description
+ "Textual description of the SAV rule.";
+ }
+ container incoming-interfaces {
+ description
+ "Support for incoming interfaces.";
+ leaf-list incoming-interface {
+ type if:interface-ref;
+ description
+ "Each entry is the name of a SAV incoming
+ interface";
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ipv6-sav-rule@2023-05-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-ipv6-sav-rule@2023-05-20.yang
new file mode 100644
index 000000000..eb3b725bb
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-ipv6-sav-rule@2023-05-20.yang
@@ -0,0 +1,165 @@
+module ietf-ipv6-sav-rule {
+ yang-version "1.1";
+ namespace "urn:ietf:params:xml:ns:yang:ietf-ipv6-sav-rule";
+ prefix "v6sav";
+
+ import ietf-sav {
+ prefix "sav";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ organization
+ "IETF SAVNET Working Group";
+
+ contact
+ "TBD";
+
+ description
+ "This YANG module defines the essential elements for the
+ management of IPv6 SAV rule).
+
+ 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 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; see
+ the RFC itself for full legal notices.";
+
+ revision 2023-05-20 {
+ description
+ "Initial revision.";
+ reference
+ "RFC XXXX: A YANG Data Model for SAV Management";
+ }
+
+ /* Identities */
+
+ identity ipv6 {
+ base sav:ipv6;
+ description
+ "This identity represents the IPv6 address family.";
+ }
+
+ /* Groupings */
+ grouping limit-metadata {
+ description
+ "Common SAV-rule limit metadata.";
+ leaf number {
+ type uint32;
+ description
+ "This attribute allows for controlling number limit.";
+ }
+ leaf percent {
+ type uint8 {
+ range "0..100";
+ }
+ description
+ "This attribute allows for controlling percentage
+ limit.";
+ }
+ }
+
+ augment "/sav:sav/sav:sav-tables/sav:sav-table/"
+ + "sav:sav-rules/sav:sav-rule" {
+ when "derived-from-or-self(../../sav:address-family, "
+ + "'v6sav:ipv6')" {
+ description
+ "This augment is valid only for IPv6.";
+ }
+ description
+ "This leaf augments an IPv6 SAV rule.";
+ leaf source-prefix {
+ type inet:ipv6-prefix;
+ description
+ "IPv6 source prefix.";
+ }
+ }
+
+ augment "/sav:sav/sav:sav-tables/sav:sav-table/"
+ + "sav:active-sav-rule/sav:input" {
+ when "derived-from-or-self(../sav:address-family, "
+ + "'v6sav:ipv6')" {
+ description
+ "This augment is valid only for IPv6.";
+ }
+ description
+ "This augment adds the input parameter of the
+ 'active-sav-rule' action.";
+ leaf source-address {
+ type inet:ipv6-address;
+ description
+ "IPv6 source address.";
+ }
+ }
+
+ augment "/sav:sav/sav:sav-tables/sav:sav-table/"
+ + "sav:active-sav-rule/sav:output/sav:sav-rule" {
+ when "derived-from-or-self(../../sav:address-family, "
+ + "'v6sav:ipv6')" {
+ description
+ "This augment is valid only for IPv6.";
+ }
+ description
+ "This augment adds the source prefix to the reply of the
+ 'active-sav-rule' action.";
+ leaf source-prefix {
+ type inet:ipv6-prefix;
+ description
+ "IPv6 source prefix.";
+ }
+ }
+ augment "/sav:sav/sav:static-savs" {
+ description
+ "This augment defines the 'static' pseudo-protocol
+ with data specific to IPv6.";
+ container ipv6 {
+ description
+ "Support for a 'static' pseudo-protocol instance
+ consists of a list of SAV rules.";
+ container sav-entry-limits {
+ description
+ "Specification limit of ipv6 SAV table.";
+ uses limit-metadata;
+ }
+ list sav-rule {
+ key "source-prefix";
+ description
+ "A list of static SAV rules.";
+ leaf source-prefix {
+ type inet:ipv6-prefix;
+ mandatory true;
+ description
+ "IPv6 source prefix.";
+ }
+ leaf description {
+ type string;
+ description
+ "Textual description of the SAV rule.";
+ }
+ container incoming-interfaces {
+ description
+ "Support for incoming interfaces.";
+ leaf-list incoming-interface {
+ type if:interface-ref;
+ description
+ "Each entry is the name of a SAV incoming
+ interface";
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-isis-sr@2023-02-19.yang b/experimental/ietf-extracted-YANG-modules/ietf-isis-sr@2023-07-09.yang
similarity index 99%
rename from experimental/ietf-extracted-YANG-modules/ietf-isis-sr@2023-02-19.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-isis-sr@2023-07-09.yang
index 3c3244288..464eaee5d 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-isis-sr@2023-02-19.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-isis-sr@2023-07-09.yang
@@ -92,7 +92,7 @@ module ietf-isis-sr {
reference
"RFC XXXX";
- revision 2023-02-19 {
+ revision 2023-07-09 {
description
"Initial revision.";
reference
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2023-03-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2023-07-07.yang
similarity index 80%
rename from experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2023-03-07.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2023-07-07.yang
index 10763824b..5ac8f66cb 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2023-03-07.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2023-07-07.yang
@@ -51,7 +51,7 @@ module ietf-layer0-types {
// replace the revision date with the module publication date
// the format is (year-month-day)
- revision 2023-03-07 {
+ revision 2023-07-07 {
description
"To be updated";
reference
@@ -169,7 +169,6 @@ module ietf-layer0-types {
description
"Flexi-grid slot width granularity";
}
-
identity flexi-swg-12p5ghz {
base flexi-slot-width-granularity;
description
@@ -228,13 +227,6 @@ module ietf-layer0-types {
Modulation)";
}
- identity DC-DP-QAM8 {
- base modulation;
- description
- "DC DP-QAM8 (8 symbols Dual Carrier Dual Polarization
- Quadrature Amplitude Modulation)";
- }
-
identity QAM16 {
base modulation;
description
@@ -248,13 +240,6 @@ module ietf-layer0-types {
Modulation)";
}
- identity DC-DP-QAM16 {
- base modulation;
- description
- "DC DP-QAM16 (16 symbols Dual Carrier Dual Polarization
- Quadrature Amplitude Modulation)";
- }
-
identity QAM32 {
base modulation;
description
@@ -280,7 +265,6 @@ module ietf-layer0-types {
"DP-QAM64 (64 symbols Dual Polarization Quadrature Amplitude
Modulation)";
}
-
identity fec-type {
description
"Base identity from which specific FEC
@@ -290,13 +274,21 @@ module ietf-layer0-types {
identity g-fec {
base fec-type;
description
- "G-FEC (Generic-FEC)";
+ "Generic Forward Error Correction (G-FEC).";
+ reference
+ "ITU-T G.975 v2.0 (10/2000): Forward error correction for
+ submarine systems.";
}
- identity e-fec {
+
+ identity super-fec {
base fec-type;
description
- "E-FEC (Enhanced-FEC)";
+ "Super Forward Error Correction (S-FEC).";
+ reference
+ "ITU-T G.975.1 v1.2 (07/2013): Forward error correction for
+ high bit-rate DWDM submarine systems.";
}
+
identity no-fec {
base fec-type;
description
@@ -317,39 +309,116 @@ module ietf-layer0-types {
identity golay {
base fec-type;
- description "Golay error correction";
+ description "Golay error correction";
}
- identity line-coding {
+ identity sc-fec {
+ base fec-type;
description
- "base line-coding class";
+ "Staircase Forward Error Correction (SC-FEC).";
reference
- "ITU-T G.698.2-201811 section 7";
+ "Annex A of ITU-T G.709.2 v1.1 (09/2020):OTU4 long-reach
+ interface.";
}
- identity line-coding-NRZ-2p5G {
- base line-coding;
+ identity o-fec {
+ base fec-type;
description
- "ITU-T G.698.2-201811 section 7 table 8-1";
- }
+ "Open Forward Error Correction (O-FEC) which reuses the Bose,
+ Chaudhuri and Hocquenghem (BCH) FEC.";
+ reference
+ "Clause 16.4.4 of ITU-T G.709.3 v2.1 (11/2022): Flexible OTN
+ long-reach interfaces;
- identity line-coding-NRZ-OTU1 {
- base line-coding;
- description
- "ITU-T G.698.2-201811 section 7 table 8-2";
+ Annex E of ITU-T G.709.3 v2.1 (11/2022): Flexible OTN
+ long-reach interfaces.";
}
- identity line-coding-NRZ-10G {
- base line-coding;
+ identity c-fec {
+ base fec-type;
description
- "ITU-T G.698.2-201811 section 7 table 8-3/8-5";
+ "Concatenated FEC (C-FEC) that combines an outer Staircase
+ Forward Error Correction (SC-FEC) code and an inner
+ double-extended SD-FEC (128,119) Hamming code.
+
+ More details are provided in clause 15/G.709.3 where it is
+ called DSH instead of concatenated FEC.";
+ reference
+ "Annex A of ITU-T G.709.2 v1.1 (09/2020):OTU4 long-reach
+ interface;
+
+ Annex D of ITU-T G.709.3 v2.1 (11/2022): Flexible OTN
+ long-reach interfaces;
+
+ Clause 15 of ITU-T G.709.3 v2.1 (11/2022): Flexible OTN
+ long-reach interfaces.";
}
- identity line-coding-NRZ-OTU2 {
- base line-coding;
+ identity line-coding {
description
- "ITU-T G.698.2-201811 section 7 table 8-4/8-6";
+ "Base identity to defined the bit rate/line coding of optical
+ tributary signals.";
+ reference
+ "Section 7.1.2 of ITU-T G.698.2 v3.0 (11/2018).";
}
+ identity line-coding-NRZ-2p5G {
+ base line-coding;
+ description
+ "The non return to zero (NRZ) bit rate/line coding used by
+ the optical tributary signal class NRZ 2.5G";
+ reference
+ "Section 3.2.6 of ITU-T G.959.1 v8.0 (07/2018).";
+ }
+
+ identity line-coding-NRZ-OTU1 {
+ base line-coding;
+ description
+ "The non return to zero (NRZ) bit rate/line coding used by
+ the Optical channel Transport Unit order 1 (OTU1) optical
+ tributary signals";
+ reference
+ "Section 7.2.1.2 of ITU-T G.959.1 v8.0 (07/2018).";
+ }
+
+ identity line-coding-NRZ-10G {
+ description
+ "The non return to zero (NRZ) bit rate/line coding used by
+ the optical tributary signal class NRZ 10G";
+ reference
+ "Section 3.2.7 of ITU-T G.959.1 v8.0 (07/2018).";
+ }
+
+ identity line-coding-NRZ-OTU2 {
+ base line-coding;
+ description
+ "The non return to zero (NRZ) bit rate/line coding used by
+ the Optical channel Transport Unit order 2 (OTU2) optical
+ tributary signals";
+ reference
+ "Section 7.2.1.2 of ITU-T G.959.1 v8.0 (07/2018).";
+ }
+
+ identity line-coding-OTL4.4-SC {
+ base line-coding;
+ description
+ "The bit rate/line coding used by optical tributary
+ signals carrying a 100G Optical Transport Unit order 4
+ (OTU4) with Staircase Forward Error Correction (SC FEC)
+ from a group of four Optical Transport Lanes (OTL).";
+ reference
+ "Section 3.2.1 of ITU-T G.698.2 v3.0 (11/2018).";
+ }
+
+ identity line-coding-FOIC1.4-SC {
+ base line-coding;
+ description
+ "The bit rate/line coding used by optical tributary signals
+ carrying a FlexO Interface of order C1 with 4 lanes
+ (FOIC1.1) with Staircase Forward Error Correction
+ (SC FEC).";
+ reference
+ "Section 3.2.1 of ITU-T G.698.2 v3.0 (11/2018).";
+ }
identity wavelength-assignment {
description
@@ -366,6 +435,7 @@ module ietf-layer0-types {
and this WA (Wavelength Assignment) method chooses
the available wavelength with the lowest index";
}
+
identity random-wavelength-assignment {
base wavelength-assignment;
description
@@ -387,7 +457,6 @@ module ietf-layer0-types {
reference
"ITU-T G.709: Interfaces for the Optical Transport Network";
}
-
identity term-phys {
base term-type;
description
@@ -436,7 +505,6 @@ module ietf-layer0-types {
description
"OTU1f (11.27 Gb/s)";
}
-
identity OTU2 {
base otu-type;
description
@@ -503,6 +571,18 @@ module ietf-layer0-types {
"all elements must use power (dBm)";
}
+ identity operational-mode {
+ description
+ "Base identity to be used when defining organization/vendor
+ specific modes";
+ reference
+ "Section 2.5.2 of RFC YYYY: A YANG Data Model for Optical
+ Impairment-aware Topology.";
+ }
+// RFC Ed.: replace YYYY with actual RFC number and remove
+// this note after draft-ietf-ccamp-optical-impairment-topology-yang
+// is published as an RFC
+
/*
* Typedefs
*/
@@ -586,19 +666,6 @@ module ietf-layer0-types {
DWDM frequency grid";
}
- typedef operational-mode {
- type string;
- description
- "Organization/vendor specific mode that guarantees
- interoperability.";
-// RFC Ed.: replace YYYY with actual RFC number and remove
-// this note after draft-ietf-ccamp-optical-impairment-topology-yang
-// is published as an RFC
- reference
- "Section 2.5.2 of RFC YYYY: A YANG Data Model for Optical
- Impairment-aware Topology.";
- }
-
typedef standard-mode {
type string;
description
@@ -617,15 +684,33 @@ module ietf-layer0-types {
"vendor/organization identifier that uses a private mode
out of already defined in G.698.2 ITU-T application-code";
reference
- "RFC7581: Routing and Wavelength Assignment Information
- Encoding for Wavelength Switched Optical Networks";
+ "Section 2.5.2 of RFC YYYY: A YANG Data Model for Optical
+ Impairment-aware Topology.";
}
+// RFC Ed.: replace YYYY with actual RFC number and remove
+// this note after draft-ietf-ccamp-optical-impairment-topology-yang
+// is published as an RFC
+
+ typedef operational-mode {
+ type identityref {
+ base operational-mode;
+ }
+ description
+ "Organization/vendor specific mode that guarantees
+ interoperability.";
+ reference
+ "Section 2.5.2 of RFC YYYY: A YANG Data Model for Optical
+ Impairment-aware Topology.";
+ }
+// RFC Ed.: replace YYYY with actual RFC number and remove
+// this note after draft-ietf-ccamp-optical-impairment-topology-yang
+// is published as an RFC
typedef frequency-thz {
type decimal64 {
fraction-digits 9;
}
- units THz;
+ units "THz";
description
"The DWDM frequency in THz, e.g., 193.112500000";
}
@@ -633,7 +718,7 @@ module ietf-layer0-types {
type decimal64 {
fraction-digits 6;
}
- units GHz;
+ units "GHz";
description
"The DWDM frequency in GHz, e.g., 193112.500000";
}
@@ -654,6 +739,7 @@ module ietf-layer0-types {
"(Optical) Signal to Noise Ratio measured over 0.1 nm
resolution bandwidth";
}
+
typedef snr-or-null {
type union {
type snr;
@@ -705,30 +791,51 @@ module ietf-layer0-types {
type empty;
}
description
- "A decimal64 value with two digits, when the value is know or
+ "A decimal64 value with two digits, when the value is known or
an empty value when the value is not known.";
}
- typedef power-in-db {
- type decimal-2-digits;
- units dB;
+ typedef gain-in-db {
+ type decimal-2-digits {
+ range "0..max";
+ }
+ units "dB";
description
- "The power in dB.";
+ "The gain in dB.";
}
- typedef power-in-db-or-null {
+ typedef gain-in-db-or-null {
type union {
- type power-in-db;
+ type gain-in-db;
type empty;
}
description
- "The power in dB, when it is known or an empty value when the
- power is not known.";
+ "The gain in dB, when it is known or an empty
+ value when the power gain/loss is not known.";
+ }
+
+ typedef loss-in-db {
+ type decimal-2-digits {
+ range "0..max";
+ }
+ units "dB";
+ description
+ "The power attenuation in dB.";
+ }
+
+ typedef loss-in-db-or-null {
+ type union {
+ type loss-in-db;
+ type empty;
+ }
+ description
+ "The power attenuation in dB, when it is known or an empty
+ value when the loss is not known.";
}
typedef power-in-dbm {
type decimal-2-digits;
- units dBm;
+ units "dBm";
description
"The power in dBm.";
}
@@ -743,10 +850,45 @@ module ietf-layer0-types {
power is not known.";
}
+ typedef decimal-5-digits {
+ type decimal64 {
+ fraction-digits 5;
+ }
+ description
+ "A decimal64 value with five digits.";
+ }
+
+ typedef decimal-5-digits-or-null {
+ type union {
+ type decimal-5-digits;
+ type empty;
+ }
+ description
+ "A decimal64 value with five digits, when the value is known
+ or an empty value when the value is not known.";
+ }
+
+ typedef decimal-16-digits {
+ type decimal64 {
+ fraction-digits 16;
+ }
+ description
+ "A decimal64 value with sixteen digits.";
+ }
+
+ typedef decimal-16-digits-or-null {
+ type union {
+ type decimal-5-digits;
+ type empty;
+ }
+ description
+ "A decimal64 value with sixteen digits, when the value is
+ known or an empty value when the value is not known.";
+ }
+
/*
* Groupings
*/
-
grouping wson-label-start-end {
description
"The WSON label-start or label-end used to specify WSON label
@@ -921,12 +1063,21 @@ module ietf-layer0-types {
type l0-types:flexi-n;
description
"The given value 'N' is used to determine the nominal
- central frequency.";
+ central frequency.
+
+ As described in section 3.1 of RFC 8363, the range of
+ available nominal central frequencies are advertised for
+ m=1, which means that for an available central frequency n,
+ the frequency slot from central frequency n-1 to central
+ frequency n+1 is available.";
}
reference
"RFC 7698: Framework and Requirements for GMPLS-Based Control
- of Flexi-Grid Dense Wavelength Division Multiplexing (DWDM)
- Networks";
+ of Flexi-Grid Dense Wavelength Division Multiplexing (DWDM)
+ Networks;
+
+ RFC 8363: GMPLS OSPF-TE Extensions in Support of Flexi-Grid
+ Dense Wavelength Division Multiplexing (DWDM) Networks";
}
grouping flexi-grid-frequency-slot {
@@ -1074,7 +1225,6 @@ module ietf-layer0-types {
max. OTSiG:OTSi cardinality
It is a transponder attribute not transceiver
*/
-
/* leaf multiplexing-cap {
type uint32;
config false;
@@ -1086,7 +1236,11 @@ module ietf-layer0-types {
grouping transceiver-mode {
description
"This grouping is intended to be used for reporting the
- information of a transceiver's mode.";
+ information of a transceiver's mode.
+
+ The compatible-modes container shall be augmented with the
+ proper leafrefs when used: see for example the
+ transceiver-capabilities grouping below.";
choice mode {
mandatory true;
description
@@ -1094,24 +1248,63 @@ module ietf-layer0-types {
mode, an organizational mode or an explicit mode.";
case G.698.2 {
uses standard-mode;
+ uses common-standard-organizational-mode;
}
case organizational-mode {
container organizational-mode {
description
"The set of attributes for an organizational mode";
uses organizational-mode;
+ uses common-standard-organizational-mode;
uses common-organizational-explicit-mode;
} // container organizational-mode
}
case explicit-mode {
container explicit-mode {
- description
- "The set of attributes for an explicit mode";
- container supported-modes {
+ description
+ "The set of attributes for an explicit mode";
+ uses common-explicit-mode;
+ uses common-organizational-explicit-mode;
+ container compatible-modes {
description
"Container for all the standard and organizational
modes supported by the transceiver's explicit
mode.";
+ } // container compatible-modes
+ } // container explicit-mode
+ } // end of case explicit-mode
+ } // end of choice
+ }
+
+ grouping transceiver-capabilities {
+ description
+ "This grouping is intended to be used for reporting the
+ capabilities of a transceiver.";
+
+ container supported-modes {
+ presence
+ "When present, it indicates that the modes supported by a
+ transceiver are reported.";
+ description
+ "The top level container for the list supported
+ transceiver's modes.";
+ list supported-mode {
+ key "mode-id";
+ config false;
+ min-elements 1;
+ description "The list of supported transceiver's modes.";
+ leaf mode-id {
+ type string {
+ length "1..255";
+ }
+ description "ID for the supported transceiver's mode.";
+ }
+ uses transceiver-mode {
+ augment "mode/explicit-mode/explicit-mode/"
+ + "compatible-modes" {
+ description
+ "Augments the compatible modes with the proper
+ leafrefs.";
leaf-list supported-application-codes {
type leafref {
path "../../../mode-id";
@@ -1142,37 +1335,8 @@ module ietf-layer0-types {
"List of pointers to the organizational modes
supported by the transceiver's explicit mode.";
}
- } // container supported-modes
- uses common-explicit-mode;
- uses common-organizational-explicit-mode;
- } // container explicit-mode
- } // end of case explicit-mode
- } // end of choice
- }
- grouping transceiver-capabilities {
- description
- "This grouping is intended to be used for reporting the
- capabilities of a transceiver.";
-
- container supported-modes {
- presence
- "When present, it indicates that the modes supported by a
- transceiver are reported.";
- description
- "The top level container for the list supported
- transceiver's modes.";
- list supported-mode {
- key "mode-id";
- config false;
- min-elements 1;
- description "The list of supported transceiver's modes.";
- leaf mode-id {
- type string {
- length "1..255";
}
- description "ID for the supported transceiver's mode.";
}
- uses transceiver-mode;
} // list supported-modes
} // container supported-modes
} // grouping transceiver-capabilities
@@ -1208,7 +1372,7 @@ module ietf-layer0-types {
type organization-identifier;
config false;
description
- "organization identifier that uses organizational
+ "organization identifier that uses organizational
mode";
}
}
@@ -1230,8 +1394,9 @@ module ietf-layer0-types {
config false;
mandatory true;
description
- "OSNR penalty associated with the related optical
- impairment at the receiver.";
+ "The OSNR penalty associated with the related optical
+ impairment at the receiver, when the value is known or an
+ empty value when the value is not known.";
}
}
@@ -1264,16 +1429,13 @@ module ietf-layer0-types {
"The gross bitrate (e.g., 100, 200) of the optical tributary
signal.";
}
- leaf max-polarization-mode-dispersion {
- type decimal64 {
- fraction-digits 2;
- range "0..max";
- }
+ leaf max-diff-group-delay {
+ type uint32;
units "ps";
config false;
description
- "Maximum acceptable accumulated polarization mode
- dispersion on the receiver";
+ "Maximum Differential group delay of this mode for this
+ lane";
}
leaf max-chromatic-dispersion {
type decimal64 {
@@ -1283,17 +1445,18 @@ module ietf-layer0-types {
units "ps/nm";
config false;
description
- "Maximum acceptable accumulated chromatic dispersion
- on the receiver";
+ "Maximum acceptable accumulated chromatic dispersion (CD)
+ on the receiver";
}
- list chromatic-dispersion-penalty {
+ list cd-penalty {
config false;
description
"Optional penalty associated with a given accumulated
- chromatic dispersion (CD) value.
- This list of pair cd and penalty can be used to
- sample the function penalty = f(CD).";
- leaf chromatic-dispersion {
+ chromatic dispersion (CD) value.
+
+ This list of pair cd and penalty values can be used to
+ sample the function penalty = f(CD).";
+ leaf cd-value {
type union {
type decimal64 {
fraction-digits 2;
@@ -1304,18 +1467,32 @@ module ietf-layer0-types {
units "ps/nm";
config false;
mandatory true;
- description "Chromatic dispersion";
+ description
+ "The Chromatic Dispersion (CD), when the value is known
+ or an empty value when the value is not known.";
}
uses penalty-value;
}
- list polarization-dispersion-penalty {
+ leaf max-polarization-mode-dispersion {
+ type decimal64 {
+ fraction-digits 2;
+ range "0..max";
+ }
+ units "ps";
+ config false;
+ description
+ "Maximum acceptable accumulated polarization mode
+ dispersion (PMD) on the receiver";
+ }
+ list pmd-penalty {
config false;
description
"Optional penalty associated with a given accumulated
- polarization mode dispersion(PMD) value.
- This list of pair pmd and penalty can be used to
- sample the function penalty = f(PMD).";
- leaf polarization-mode-dispersion {
+ polarization mode dispersion (PMD) value.
+
+ This list of pair pmd and penalty can be used to
+ sample the function penalty = f(PMD).";
+ leaf pmd-value {
type union {
type decimal64 {
fraction-digits 2;
@@ -1326,26 +1503,30 @@ module ietf-layer0-types {
units "ps";
config false;
mandatory true;
- description "Polarization mode dispersion";
+ description
+ "The Polarization Mode Dispersion (PMD), when the value
+ is known or an empty value when the value is not known.";
}
uses penalty-value;
}
- leaf max-diff-group-delay {
- type uint32;
- units "ps";
+ leaf max-polarization-dependant-loss {
+ type loss-in-db-or-null;
config false;
- description "Maximum Differential group delay of this mode
- for this lane";
+ mandatory true;
+ description
+ "Maximum acceptable accumulated accumulated polarization
+ dependent loss (PDL) on the receiver";
}
- list max-pol-dependent-loss-penalty {
+ list pdl-penalty {
config false;
description
- "Optional penalty associated with the maximum acceptable
- accumulated polarization dependent loss.
- This list of pair pdl and penalty can be used to
- sample the function pdl = f(penalty).";
- leaf max-polarization-dependent-loss {
- type power-in-db-or-null;
+ "Optional penalty associated with a given accumulated
+ polarization dependent loss (PDL) value.
+
+ This list of pair pdl and penalty values can be used to
+ sample the function PDL = f(penalty).";
+ leaf pdl-value {
+ type loss-in-db-or-null;
config false;
mandatory true;
description
@@ -1387,7 +1568,7 @@ module ietf-layer0-types {
lower than rx-ref-channel-power.
This list of pair power and penalty can be used to
sample the function penalty = f(rx-channel-power).";
- leaf rx-channel-power {
+ leaf rx-channel-power-value {
type union {
type dbm-t;
type empty;
@@ -1395,7 +1576,9 @@ module ietf-layer0-types {
units "dBm";
config false;
mandatory true;
- description "Received Power";
+ description
+ "The Received Power, when the value is known or an empty
+ value when the value is not known.";
}
uses penalty-value;
}
@@ -1407,7 +1590,7 @@ module ietf-layer0-types {
}
leaf available-baud-rate {
type uint32;
- units Bd;
+ units "Bd";
config false;
description
"Baud-rate the specific transceiver in
@@ -1506,7 +1689,8 @@ module ietf-layer0-types {
"OIF-400ZR-01.0: Implementation Agreement 400ZR";
}
leaf tx-polarization-power-difference {
- type power-in-db;
+ type decimal-2-digits;
+ units "dB";
config false;
description
"The transmitter polarization dependent power difference
@@ -1529,6 +1713,27 @@ module ietf-layer0-types {
}
} // grouping common-explicit-mode
+ grouping common-standard-organizational-mode {
+ description
+ "Common attributes used by standard and organizational
+ modes.";
+
+ leaf-list line-coding-bitrate {
+ type identityref {
+ base line-coding;
+ }
+ config false;
+ description
+ "The list of the bit rate/line coding of the optical
+ tributary signal supported by the transceiver.
+
+ Reporting this list is optional when the standard or
+ organization mode supports only one bit rate/line coding.";
+ reference
+ "ITU-T G.698.2 section 7.1.2";
+ }
+ } // grouping common-standard-organizational-mode
+
grouping common-organizational-explicit-mode {
description "Common capability attributes limit range
in case of operational mode and explicit mode.
@@ -1536,7 +1741,6 @@ module ietf-layer0-types {
case of application codes";
/* transmitter tuning range (f_tx-min, f_tx-max) */
-
leaf min-central-frequency {
type frequency-thz;
config false;
@@ -1600,28 +1804,41 @@ module ietf-layer0-types {
grouping common-transceiver-configured-param {
description "Capability of an optical transceiver";
- leaf tx-channel-power {
- type union {
- type dbm-t;
- type empty;
+ leaf line-coding-bitrate {
+ type identityref {
+ base line-coding;
}
- description "The current channel transmit power";
+ config false;
+ description
+ "Bit rate/line coding of the optical tributary signal.
+
+ Reporting this attribute is optional when the configured
+ mode supports only one bit rate/line coding.";
+ reference
+ "ITU-T G.698.2 section 7.1.2";
+ }
+ leaf tx-channel-power {
+ type power-in-dbm-or-null;
+ description
+ "The current channel transmit power, when the value is
+ known or an empty value when the value is not known.
+
+ The empty value MUST NOT be used when this attribute is
+ configured.";
}
leaf rx-channel-power {
- type union {
- type dbm-t;
- type empty;
- }
+ type power-in-dbm-or-null;
config false;
- description "The current channel received power ";
+ description
+ "The current channel received power, when the value is
+ known or an empty value when the value is not known.";
}
leaf rx-total-power {
- type union {
- type dbm-t;
- type empty;
- }
+ type power-in-dbm-or-null;
config false;
- description "Current total received power";
+ description
+ "The current total received power, when the value is known
+ or an empty value when the value is not known.";
}
} // grouping for configured attributes out of mode
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-03-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-07-07.yang
similarity index 87%
rename from experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-03-13.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-07-07.yang
index 2fd2c09c3..7240dce32 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-03-13.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2023-07-07.yang
@@ -7,13 +7,13 @@ module ietf-network-slice-service {
import ietf-inet-types {
prefix inet;
reference
- "RFC 6991: Common YANG Types.";
+ "RFC 6991: Common YANG Types";
}
import ietf-vpn-common {
prefix vpn-common;
reference
"RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3
- VPNs.";
+ VPNs";
}
import ietf-network {
prefix nw;
@@ -24,7 +24,7 @@ module ietf-network-slice-service {
prefix nt;
reference
"RFC 8345: A YANG Data Model for Network
- Topologies, Section 6.2";
+ Topologies, Section 6.2";
}
/* Import TE Types */
@@ -32,12 +32,12 @@ module ietf-network-slice-service {
import ietf-te-types {
prefix te-types;
reference
- "RFC 8776: Common YANG Data Types for Traffic Engineering.";
+ "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";
}
organization
@@ -75,12 +75,11 @@ module ietf-network-slice-service {
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
- revision 2023-03-13 {
+ revision 2023-07-07 {
description
- "initial version.";
+ "Initial revision.";
reference
- "RFC XXXX: A YANG Data Model for the IETF Network Slice
- Service";
+ "RFC XXXX: A YANG Data Model for the IETF Network Slice Service";
}
/* Features */
@@ -88,26 +87,26 @@ module ietf-network-slice-service {
identity service-tag-type {
description
- "Base identity for IETF Network Slice service tag type.";
+ "Base identity for IETF Network Slice Service tag type.";
}
identity service-tag-customer {
base service-tag-type;
description
- "The IETF Network Slice service customer ID tag type.";
+ "The IETF Network Slice Service customer ID tag type.";
}
identity service-tag-service {
base service-tag-type;
description
- "The IETF Network Slice service tag type,e.g. L2 or L3
+ "The IETF Network Slice Service tag type,e.g. L2 or L3
service.";
}
identity service-tag-opaque {
base service-tag-type;
description
- "The IETF Network Slice service opaque tag type.";
+ "The IETF Network Slice Service opaque tag type.";
}
identity attachment-circuit-tag-type {
@@ -130,30 +129,21 @@ module ietf-network-slice-service {
identity service-isolation-type {
description
- "Base identity for IETF Network slice service isolation level.";
+ "Base identity for IETF Network Slice Service isolation type.";
}
- identity service-isolation-shared {
+ identity service-traffic-isolation {
base service-isolation-type;
description
- "Shared resources (e.g. queues) are associated with the
- slice service traffic. Hence, the traffic can be impacted
- by effects of other services traffic
- sharing the same physical and logical resources.";
- }
- identity service-isolation-dedicated {
- base service-isolation-type;
- description
- "Dedicated resources (e.g. physical interfaces, queues)
- are associated with the Network Slice service traffic.
- Hence, the service traffic is isolated from other services
- traffic, though sharing the same physical resources
- in some cases.";
+ "Specify the requirement for separating the traffic of the
+ customer's IETF Network Slice Service from other services,
+ which may be provided by the service provider using VPN
+ technologies, such as L3VPN, L2VPN, EVPN, etc.";
}
identity service-security-type {
description
- "Base identity for slice service security level.";
+ "Base identity for IETF Network Slice Service security type.";
}
identity service-security-authenticate {
@@ -178,28 +168,27 @@ module ietf-network-slice-service {
base vpn-common:vpn-topology;
description
"Identity for point-to-point IETF Network Slice
- service connectivity.";
+ Service connectivity.";
}
identity point-to-multipoint {
base vpn-common:vpn-topology;
description
- "Identity for point-to-point IETF Network Slice
- service connectivity.";
+ "Identity for point-to-multipoint IETF Network Slice
+ Service connectivity.";
}
identity multipoint-to-multipoint {
base vpn-common:vpn-topology;
description
- "Identity for point-to-point IETF Network Slice
- service connectivity.";
+ "Identity for multipoint-to-multipoint IETF Network Slice
+ Service connectivity.";
}
-
identity multipoint-to-point {
base vpn-common:vpn-topology;
description
- "Identity for point-to-point IETF Network Slice
- service connectivity.";
+ "Identity for multipoint-to-point IETF Network Slice
+ Service connectivity.";
}
identity sender-role {
@@ -216,7 +205,7 @@ module ietf-network-slice-service {
identity service-slo-metric-type {
description
- "Base identity for IETF Network Slice service SLO metric type.";
+ "Base identity for IETF Network Slice Service SLO metric type.";
}
identity service-slo-one-way-bandwidth {
@@ -245,8 +234,8 @@ module ietf-network-slice-service {
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.
+ The metric is defined in RFC7679.";
}
identity service-slo-one-way-delay-percentile {
@@ -261,8 +250,8 @@ module ietf-network-slice-service {
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.
+ The metric is defined in RFC2681.";
}
identity service-slo-two-way-delay-percentile {
@@ -270,7 +259,8 @@ module ietf-network-slice-service {
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.
+ The metric is defined in RFC2681.";
}
identity service-slo-one-way-delay-variation-maximum {
@@ -278,8 +268,8 @@ module ietf-network-slice-service {
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.
+ The metric of one-way delay variation is defined in RFC3393.";
}
identity service-slo-one-way-delay-variation-percentile {
@@ -290,11 +280,10 @@ module ietf-network-slice-service {
SDPs.
One-way delay variation percentile is defined by RFC3393.";
}
-
identity service-slo-two-way-delay-variation-maximum {
base service-slo-metric-type;
description
- "SLO two-way delay variation is defined by RFC5481, is the
+ "SLO two-way delay variation defined by RFC5481, is the
difference in the round-trip delay between sequential packets
between two SDPs.";
}
@@ -324,16 +313,49 @@ module ietf-network-slice-service {
over a period of time as specified in RFC7680.";
}
- identity service-slo-availability {
- base service-slo-metric-type;
+ identity service-match-type {
description
- "SLO availability level.";
+ "Base identity for IETF Network Slice Service traffic
+ match type.";
}
- identity service-match-type {
+ /*
+ * Identity for availability-type
+ */
+
+ identity availability-type {
description
- "Base identity for IETF Network Slice service traffic
- match type.";
+ "Base identity from which specific availability types are
+ derived.";
+ }
+ identity level-1 {
+ base availability-type;
+ description
+ "level 1: 99.9999%";
+ }
+
+ identity level-2 {
+ base availability-type;
+ description
+ "level 2: 99.999%";
+ }
+
+ identity level-3 {
+ base availability-type;
+ description
+ "level 3: 99.99%";
+ }
+
+ identity level-4 {
+ base availability-type;
+ description
+ "level 4: 99.9%";
+ }
+
+ identity level-5 {
+ base availability-type;
+ description
+ "level 5: 99%";
}
identity service-phy-interface-match {
@@ -396,45 +418,6 @@ module ietf-network-slice-service {
"Match all slice service traffic.";
}
- /*
- * Identity for availability-type
- */
-
- identity availability-type {
- description
- "Base identity from which specific availability types are
- derived.";
- }
-
- identity level-1 {
- base availability-type;
- description
- "level 1: 99.9999%";
- }
-
- identity level-2 {
- base availability-type;
- description
- "level 2: 99.999%";
- }
-
- identity level-3 {
- base availability-type;
- description
- "level 3: 99.99%";
- }
-
- identity level-4 {
- base availability-type;
- description
- "level 4: 99.9%";
- }
- identity level-5 {
- base availability-type;
- description
- "level 5: 99%";
- }
-
identity slo-sle-policy-override {
description
"Base identity for SLO/SLE policy override options.";
@@ -477,65 +460,13 @@ module ietf-network-slice-service {
}
/* grouping */
- grouping service-sles {
- description
- "Indirectly Measurable Objectives of a slice service.";
- leaf-list security {
- type identityref {
- base service-security-type;
- }
- description
- "The slice service security SLE(s)";
- }
- leaf isolation {
- type identityref {
- base service-isolation-type;
- }
- default "service-isolation-shared";
- description
- "The slice service isolation SLE requirement.";
- }
- leaf max-occupancy-level {
- type uint8 {
- range "1..100";
- }
- description
- "The maximal occupancy level specifies the number of flows
- to be admitted.";
- }
- leaf mtu {
- type uint16;
- units "bytes";
- description
- "The MTU specifies the maximum length in octets of data
- packets that can be transmitted by the slice service.
- The value needs to be less than or equal to the
- minimum MTU value of all 'attachment-circuits'
- in the SDPs.";
- }
- container steering-constraints {
- description
- "Container for the policy of steering constraints
- applicable to the slice service.";
- container path-constraints {
- description
- "Container for the policy of path constraints
- applicable to the slice service.";
- }
- container service-function {
- description
- "Container for the policy of service function
- applicable to the slice service.";
- }
- }
- }
- grouping service-metric-bounds {
+ grouping service-slos {
description
- "Slice service metric bounds grouping.";
- container metric-bounds {
+ "Directly Measurable Objectives of a slice service.";
+ container slo-policy {
description
- "Slice service metric bounds container.";
+ "Contains the SLO policy.";
list metric-bound {
key "metric-type";
description
@@ -574,6 +505,70 @@ module ietf-network-slice-service {
specific metric-type.";
}
}
+ leaf availability {
+ type identityref {
+ base availability-type;
+ }
+ description
+ "Service availability level";
+ }
+ leaf mtu {
+ type uint16;
+ units "bytes";
+ description
+ "The MTU specifies the maximum length in octets 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.";
+ }
+ }
+ }
+
+ grouping service-sles {
+ description
+ "Indirectly Measurable Objectives of a slice service.";
+ container sle-policy {
+ description
+ "Contains the SLE policy.";
+ leaf-list security {
+ type identityref {
+ base service-security-type;
+ }
+ description
+ "The security functions that the customer requests
+ the operator to apply to traffic between the two SDPs.";
+ }
+ leaf-list isolation {
+ type identityref {
+ base service-isolation-type;
+ }
+ description
+ "The slice service isolation requirement.";
+ }
+ leaf max-occupancy-level {
+ type uint8 {
+ range "1..100";
+ }
+ description
+ "The maximal occupancy level specifies the number of flows
+ to be admitted.";
+ }
+ container steering-constraints {
+ description
+ "Container for the policy of steering constraints
+ applicable to the slice service.";
+ container path-constraints {
+ description
+ "Container for the policy of path constraints
+ applicable to the slice service.";
+ }
+ container service-function {
+ description
+ "Container for the policy of service function
+ applicable to the slice service.";
+ }
+ }
}
}
@@ -622,7 +617,7 @@ module ietf-network-slice-service {
description
"Indicates an attachment circuit service name,
for association purposes, to refer to an AC that has been
- created when an AC is used by multiple slices.
+ created before the slice creation.
This node can override 'ac-svc-name' of the parent SDP.";
}
leaf description {
@@ -955,8 +950,8 @@ module ietf-network-slice-service {
default "vpn-common:any-to-any-role";
description
"Specifies the role of SDP in the connection group
- When the service connection type is multi-point,
- such as hub-spoke service connection type. In addition,
+ When the service connection type is MP2MP,
+ such as hub and spoke service connection type. In addition,
this helps to create connectivity construct automatically
, rather than explicitly specifying each one.";
}
@@ -975,19 +970,36 @@ module ietf-network-slice-service {
}
}
uses service-qos;
- uses sdp-peering;
- leaf ac-svc-name {
+ container sdp-peering {
+ description
+ "Describes SDP peering attributes.";
+ leaf-list peer-sap-id {
+ type string;
+ description
+ "Indicates the reference to the remote endpoints of the
+ attachment circuits. This information can be used for
+ correlation purposes, such as identifying service
+ attachment points (SAPs) of provider equipments when
+ requesting a service with CE based SDP attributes.";
+ }
+ container protocols {
+ description
+ "Serves as an augmentation target.
+ Protocols can be augmented into this container,
+ e.g. BGP, static routing.";
+ }
+ }
+ leaf-list ac-svc-name {
type string;
description
- "Indicates an attachment circuit service name,
- for association purposes, to refer to an AC that has been
- created when an AC is used by multiple slices.";
+ "Indicates the attachment circuit service name,
+ for association purposes, to refer to ACs that have been
+ created before the slice creation.";
}
uses sdp-attachment-circuits;
uses vpn-common:service-status;
uses sdp-monitoring-metrics;
}
-
//service-sdp
grouping connectivity-construct {
@@ -1143,17 +1155,8 @@ module ietf-network-slice-service {
indicates the base template over which further
SLO/SLE policy changes are made.";
}
- container service-slo-sle-policy {
- description
- "Contains the SLO and SLE policy.";
- leaf description {
- type string;
- description
- "Description of the SLO and SLE policy.";
- }
- uses service-metric-bounds;
- uses service-sles;
- }
+ uses service-slos;
+ uses service-sles;
}
}
}
@@ -1192,7 +1195,7 @@ module ietf-network-slice-service {
description
"Description of the SLO and SLE policy.";
}
- uses service-metric-bounds;
+ uses service-slos;
uses service-sles;
}
}
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 e5e582330..df3e234d1 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
@@ -31,20 +31,21 @@ module ietf-node-tags-state {
Editor: Benoit Claise
+ Editor: Mohamed Boucadair
+
+
Editor: Peng Liu
Editor: Zongpeng Du
-
-
- Editor: Mohamed Boucadair
- ";
+ ";
// RFC Ed.: replace XXXX with actual RFC number and
// remove this note.
description
"This module describes a mechanism associating data node
tags with YANG data node within YANG modules. Tags may be
IANA assigned or privately defined.
+
Copyright (c) 2022 IETF Trust and the persons identified as
authors of the code. All rights reserved.
@@ -68,10 +69,6 @@ module ietf-node-tags-state {
"RFC XXXX: Node Tags in YANG Data
Modules";
}
- identity node-tag-type {
- description
- "Base identity for node tag type.";
- }
augment "/tags-s:module-tags-state/tags-s:module" {
description
"Augments the Module Tags module with node tag
@@ -89,20 +86,27 @@ module ietf-node-tags-state {
"Lists the data nodes and their associated self
describing tags.";
leaf id {
+ type uint64;
+ description
+ "Identification of each data node within YANG module. It is
+ unique 64-bit unsigned integers.";
+ }
+ leaf node-selctor {
type nacm:node-instance-identifier;
mandatory true;
status deprecated;
description
- "The YANG data node name.";
+ "Selects the data nodes for which tags are
+ specified.";
}
- list tags {
- key "tag";
+ leaf-list tags {
+ type tags:tag;
status deprecated;
description
"Lists the tags associated with the data node within
the YANG module.
- See the IANA 'YANG node Tag Prefixes' registry
+ See the IANA 'YANG Node Tag Prefixes' registry
for reserved prefixes and the IANA 'IETF YANG Data
Node Tags' registry for IETF tags.
@@ -117,19 +121,6 @@ module ietf-node-tags-state {
reference
"RFC XXXX: Node Tags in YANG Data
Modules, Section 9";
- leaf tag {
- type tags:tag;
- status deprecated;
- description
- "Node tag corresponding to type of node tag.";
- }
- leaf type {
- type identityref {
- base node-tag-type;
- }
- status deprecated;
- description "type of the node tag.";
- }
}
leaf-list masked-tag {
type tags:tag;
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-node-tags@2022-02-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-node-tags@2022-02-04.yang
index f0d753eb0..833f837f7 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-node-tags@2022-02-04.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-node-tags@2022-02-04.yang
@@ -12,7 +12,7 @@ module ietf-node-tags {
import ietf-module-tags {
prefix tags;
reference
- "RFC 8819: YANG Module Tags ";
+ "RFC 8819: YANG Module Tags";
}
organization
@@ -27,14 +27,13 @@ module ietf-node-tags {
Editor: Benoit Claise
+ Editor: Mohamed Boucadair
+
Editor: Peng Liu
Editor: Zongpeng Du
-
-
- Editor: Mohamed Boucadair
- ";
+ ";
// RFC Ed.: replace XXXX with actual RFC number and
// remove this note.
description
@@ -46,73 +45,24 @@ module ietf-node-tags {
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
+ 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
- (https://datatracker.ietf.org/html/rfcXXXX); see the RFC itself
- for full legal notices.";
+ (https://datatracker.ietf.org/html/rfcXXXX); see the RFC
+ itself for full legal notices.";
- // RFC Ed.: update the date below with the date of RFC publication
- // and RFC number and remove this note.
+ // RFC Ed.: Update the date below with the date of RFC
+ // publication and RFC number and remove this note.
revision 2022-02-04 {
description
"Initial revision.";
reference
"RFC XXXX: Node Tags in YANG Modules";
}
- identity node-tag-type {
- description
- "Base identity for node tag type.";
- }
- identity metric {
- base node-tag-type;
- description
- "Identity for metric tag type.";
- }
- identity delay {
- base node-tag-type;
- description
- "Identity for delay metric tag type.";
- }
- identity jitter {
- base node-tag-type;
- description
- "Identity for jitter metric tag type.";
- }
- identity loss {
- base node-tag-type;
- description
- "Identity for loss metric tag type.";
- }
- identity counter {
- base node-tag-type;
- description
- "Identity for counter metric tag type.";
- }
- identity summary {
- base node-tag-type;
- description
- "Identity for summary metric tag type.";
- }
- identity gauge {
- base node-tag-type;
- description
- "Identity for gauge metric tag type.";
- }
- identity unknown {
- base node-tag-type;
- description
- "Identity for unkown metric tag type.";
- }
- identity agg {
- base node-tag-type;
- description
- "Identity for aggregated metric tag type.";
- }
extension node-tag {
argument tag;
description
@@ -128,25 +78,31 @@ module ietf-node-tags {
attributes.";
container node-tags {
description
- "Contains the list of nodes or node instances and their associated
- node tags.";
+ "Contains the list of nodes or node instances and their
+ associated node tags.";
list node {
key "id";
description
"Includes a list of nodes and their associated
node tags.";
- leaf id {
+ leaf id {
+ type uint64;
+ description
+ "Identification of each data node within YANG module. It is
+ unique 64-bit unsigned integers.";
+ }
+ leaf node-selector {
type nacm:node-instance-identifier;
description
- "The YANG data node name or data node instance name.";
+ "Selects the data nodes for which tags are specified.";
}
- list tags {
- key "tag";
+ leaf-list tags {
+ type tags:tag;
description
"Lists the tags associated with the node within
the YANG module.
- See the IANA 'YANG node Tag Prefixes' registry
+ See the IANA 'YANG Node Tag Prefixes' registry
for reserved prefixes and the IANA 'IETF YANG Data
Node Tags' registry for IETF tags.
@@ -161,29 +117,16 @@ module ietf-node-tags {
reference
"RFC XXXX: node Tags in YANG Data
Modules, Section 9";
- leaf tag {
- type tags:tag;
- description
- "Node tag corresponding to type of node tag.";
- }
- leaf type {
- type identityref {
- base node-tag-type;
- }
- description
- "Type of node tag.";
- }
}
leaf-list masked-tag {
type tags:tag;
description
"The list of tags that should not be associated with the
- node within the YANG module. The user can remove
- (mask) tags from the operational state datastore by
- adding them to this list. It is not an error to add tags
- to this list that are not associated with the data
- node within YANG module, but they have no operational
- effect.";
+ node within the YANG module. The user can remove (mask)
+ tags from the operational state datastore by adding them
+ to this list. It is not an error to add tags to this list
+ that are not associated with the data node within YANG
+ module, but they have no operational effect.";
}
}
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-03-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-03-11.yang
deleted file mode 100644
index cf36392f0..000000000
--- a/experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-03-11.yang
+++ /dev/null
@@ -1,286 +0,0 @@
-module ietf-ns-topo {
- yang-version 1.1;
- namespace
- "urn:ietf:params:xml:ns:yang:ietf-ns-topo";
- prefix "ns-topo";
-
- 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-te-types {
- prefix "te-types";
- reference
- "RFC 8776: Traffic Engineering Common YANG Types";
- }
-
- import ietf-network-slice-service {
- prefix "ietf-nss";
- reference
- "draft-ietf-teas-ietf-network-slice-nbi-yang-00:
- IETF Network Slice Service YANG Model";
- }
-
- organization
- "IETF CCAMP Working Group";
- contact
- "WG Web:
- WG List:
-
- Editor: Xufeng Liu
-
-
- Editor: Italo Busi
-
-
- Editor: Aihua Guo
-
-
- Editor: Sergio Belotti
-
-
- Editor: Luis M. Contreras
- ";
-
- description
- "This module defines a base YANG data model for configuring
- generic network slices in optical transport networks, e.g.,
- Optical Transport Network (OTN).
-
- The model fully conforms to the Network Management Datastore
- Architecture (NMDA).
-
- 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-03-11 {
- description "Initial revision";
- reference
- "RFC XXXX: IETF Network Slice Topology YANG Data Model";
- }
-
- /*
- * Identities
- */
- identity resize-option {
- description
- "Base identity for link or connectivity resizing options";
- }
-
- identity resize-none {
- base resize-option;
- description
- "Not resizable";
- }
-
- identity resize-with-hit {
- base resize-option;
- description
- "Resizable with traffic hits";
- }
-
- identity resize-hitless {
- base resize-option;
- description
- "Hitless resizable";
- }
-
- /*
- * Groupings
- */
-
- grouping ns-topo-slo-sle-policy {
- description
- "Policy grouping for Transport Network Slices.";
-
- leaf optimization-criterion {
- type identityref {
- base te-types:objective-function-type;
- }
- description
- "Optimization criterion applied to this topology.";
- }
- leaf resize-requirement {
- type identityref {
- base resize-option;
- }
- description
- "Indicates resizing requirments";
- }
- leaf service-info {
- type string;
- description
- "Describe type of services running on the slice. It may be
- useful information to help the slice controller to
- optimize resource allocation";
- }
- }
-
- grouping ns-topo-steering-constraints {
- description
- "Policy grouping for specifying steering constraints for
- Transport Network Slices.";
-
- leaf disjointness {
- type te-types:te-path-disjointness;
- description
- "Indicate the level of disjointness for slice
- resources.";
- }
- }
-
- /*
- * Augmented data nodes
- */
- /* network type augments */
- augment "/nw:networks/nw:network/nw:network-types" {
- description
- "Defines the Network Slice topology type.";
- container network-slice {
- presence "Indicates Network Slice topology";
- description
- "Its presence identifies the Network Slice type.";
- }
- }
-
- /* network topology augments */
- augment "/nw:networks/nw:network" {
- when "./nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment topology configuration and state.";
- uses ietf-nss:service-slo-sle-policy;
- }
-
- augment "/nw:networks/nw:network" +
- "/ns-topo:slo-sle-policy" +
- "/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment topology configuration and state.";
- uses ns-topo-slo-sle-policy;
- }
-
- augment "/nw:networks/nw:network" +
- "/ns-topo:slo-sle-policy" +
- "/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" +
- "/ns-topo:steering-constraints" {
- when "../../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment topology configuration and state.";
- uses ns-topo-steering-constraints;
- }
-
- /* network node augments */
- augment "/nw:networks/nw:network/nw:node" {
- when "../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment node configuration and state.";
- uses ietf-nss:service-slo-sle-policy;
- }
-
- augment "/nw:networks/nw:network/nw:node" +
- "/ns-topo:slo-sle-policy" +
- "/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment node configuration and state.";
- uses ns-topo-slo-sle-policy;
- }
-
- augment "/nw:networks/nw:network/nw:node" +
- "/ns-topo:slo-sle-policy" +
- "/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" +
- "/ns-topo:steering-constraints" {
- when "../../../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description
- "Augment IETF network slice services to include steering
- constraints for nodes.";
- uses ns-topo-steering-constraints;
- }
-
- /* network node's termination point augments */
- augment "/nw:networks/nw:network/nw:node" +
- "/nt:termination-point" {
- when "../../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment node configuration and state.";
-
- uses ietf-nss:service-slo-sle-policy;
- }
-
- augment "/nw:networks/nw:network/nw:node" +
- "/nt:termination-point" +
- "/ns-topo:slo-sle-policy" +
- "/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../../../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment node configuration and state.";
-
- uses ns-topo-slo-sle-policy;
- }
-
- /* network link augments */
- augment "/nw:networks/nw:network/nt:link" {
- when "../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment link configuration and state.";
- uses ietf-nss:service-slo-sle-policy;
- }
-
- augment "/nw:networks/nw:network/nt:link" +
- "/ns-topo:slo-sle-policy" +
- "/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description "Augment link configuration and state.";
- uses ns-topo-slo-sle-policy;
- }
-
- augment "/nw:networks/nw:network/nt:link" +
- "/ns-topo:slo-sle-policy" +
- "/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" +
- "/ns-topo:steering-constraints" {
- when "../../../nw:network-types/ns-topo:network-slice" {
- description "Augment only for Network Slice topology.";
- }
- description
- "Augment IETF network slice services to include steering
- constraints for links within a resource-based transport
- network slice.";
- uses ns-topo-steering-constraints;
- }
-}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-07-07.yang
new file mode 100644
index 000000000..aae506603
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-07-07.yang
@@ -0,0 +1,359 @@
+module ietf-ns-topo {
+ yang-version 1.1;
+ namespace
+ "urn:ietf:params:xml:ns:yang:ietf-ns-topo";
+ prefix "ns-topo";
+
+ 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-te-types {
+ prefix "te-types";
+ reference
+ "draft-ietf-teas-rfc8776-update-04:
+ Common YANG Data Types for Traffic Engineering";
+ }
+
+ import ietf-network-slice-service {
+ prefix "ietf-nss";
+ reference
+ "draft-ietf-teas-ietf-network-slice-nbi-yang-05:
+ IETF Network Slice Service YANG Model";
+ }
+
+ organization
+ "IETF CCAMP Working Group";
+ contact
+ "WG Web:
+ WG List:
+
+ Editor: Xufeng Liu
+
+
+ Editor: Italo Busi
+
+
+ Editor: Aihua Guo
+
+
+ Editor: Sergio Belotti
+
+
+ Editor: Luis M. Contreras
+ ";
+
+ description
+ "This module defines a base YANG data model for configuring
+ generic network slices in optical transport networks, e.g.,
+ Optical Transport Network (OTN).
+
+ The model fully conforms to the Network Management Datastore
+ Architecture (NMDA).
+
+ 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 {
+ description "Initial revision";
+ reference
+ "RFC XXXX: IETF Network Slice Topology YANG Data Model";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping ns-topo-steering-constraints {
+ description
+ "Policy grouping for specifying steering constraints for
+ Transport Network Slices.";
+
+ leaf disjointness {
+ type te-types:te-path-disjointness;
+ description
+ "Indicate the level of disjointness for slice
+ resources.";
+ }
+ }
+
+ grouping topology-ref {
+ description
+ "Grouping for network topology reference.";
+ leaf topology-id {
+ type leafref {
+ path "/nw:networks/nw:network/nw:network-id";
+ }
+ description
+ "Relative reference to network slice topology id.";
+ }
+ uses explicit-path;
+ }
+
+ grouping explicit-path {
+ description
+ "Explicit path for a connectivity matrix entry";
+
+ list explicit-path {
+ key "tp-id";
+ description
+ "List of TPs within a network topology that form a
+ path.";
+ leaf tp-id {
+ type leafref {
+ path "/nw:networks/nw:network/nw:node"+
+ "/nt:termination-point/nt:tp-id";
+ }
+ description
+ "Relative reference to TP id.";
+ }
+ }
+ }
+
+ /*
+ * Augmented data nodes
+ */
+ /* network type augments */
+ augment "/nw:networks/nw:network/nw:network-types" {
+ description
+ "Defines the Network Slice topology type.";
+ container network-slice {
+ presence "Indicates Network Slice topology";
+ description
+ "Its presence identifies the Network Slice type.";
+ }
+ }
+
+ /* network topology augments */
+ augment "/nw:networks/nw:network" {
+ when "./nw:network-types/ns-topo:network-slice" {
+ description "Augment only for Network Slice topology.";
+ }
+ description "Augment topology configuration and state.";
+ uses ietf-nss:service-slo-sle-policy;
+ }
+
+ augment "/nw:networks/nw:network" +
+ "/ns-topo:slo-sle-policy" +
+ "/ns-topo:custom" +
+ "/ns-topo:service-slo-sle-policy" +
+ "/ns-topo:sle-policy" +
+ "/ns-topo:steering-constraints" {
+ when "../../../nw:network-types/ns-topo:network-slice" {
+ description "Augment only for Network Slice topology.";
+ }
+ description "Augment topology configuration and state.";
+ uses ns-topo-steering-constraints;
+ }
+
+ /* network node augments */
+ augment "/nw:networks/nw:network/nw:node" {
+ when "../nw:network-types/ns-topo:network-slice" {
+ description "Augment only for Network Slice topology.";
+ }
+ description "Augment node configuration and state.";
+ uses ietf-nss:service-slo-sle-policy;
+ }
+
+ augment "/nw:networks/nw:network/nw:node" +
+ "/ns-topo:slo-sle-policy" +
+ "/ns-topo:custom" +
+ "/ns-topo:service-slo-sle-policy" +
+ "/ns-topo:sle-policy" +
+ "/ns-topo:steering-constraints" {
+ when "../../../../nw:network-types/ns-topo:network-slice" {
+ description "Augment only for Network Slice topology.";
+ }
+ description
+ "Augment IETF network slice services to include steering
+ constraints for nodes.";
+ uses ns-topo-steering-constraints;
+ }
+
+ /* network node's termination point augments */
+ augment "/nw:networks/nw:network/nw:node" +
+ "/nt:termination-point" {
+ when "../../nw:network-types/ns-topo:network-slice" {
+ description "Augment only for Network Slice topology.";
+ }
+ description "Augment node configuration and state.";
+
+ uses ietf-nss:service-slo-sle-policy;
+ }
+
+ /* network link augments */
+ augment "/nw:networks/nw:network/nt:link" {
+ when "../nw:network-types/ns-topo:network-slice" {
+ description "Augment only for Network Slice topology.";
+ }
+ description "Augment link configuration and state.";
+ uses ietf-nss:service-slo-sle-policy;
+ }
+
+ augment "/nw:networks/nw:network/nt:link" +
+ "/ns-topo:slo-sle-policy" +
+ "/ns-topo:custom" +
+ "/ns-topo:service-slo-sle-policy" +
+ "/ns-topo:sle-policy" +
+ "/ns-topo:steering-constraints" {
+ when "../../../../nw:network-types/ns-topo:network-slice" {
+ description "Augment only for Network Slice topology.";
+ }
+ description
+ "Augment IETF network slice services to include steering
+ constraints for links within a resource-based transport
+ network slice.";
+ uses ns-topo-steering-constraints;
+ }
+
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slo-sle-templates" +
+ "/ietf-nss:slo-sle-template" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" {
+ description
+ "Augment IETF network slice service templates with
+ technology-specific steering constraints.";
+
+ uses ns-topo-steering-constraints;
+ }
+
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slice-service" +
+ "/ietf-nss:slo-sle-policy" +
+ "/ietf-nss:custom" +
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" {
+ description
+ "Augment IETF network slice services to include steering
+ constraints for connectivity-based transport network
+ slices.";
+
+ uses ns-topo-steering-constraints;
+ }
+
+ /* connectivity construct augments */
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slice-service" +
+ "/ietf-nss:connection-groups" +
+ "/ietf-nss:connection-group" +
+ "/ietf-nss:slo-sle-policy" +
+ "/ietf-nss:custom" +
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" {
+ description
+ "Augment IETF network slice services to include steering
+ constraints for connectivity-constructs within a
+ connectivity-based transport network slice.";
+ uses ns-topo-steering-constraints;
+ }
+
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slice-service" +
+ "/ietf-nss:connection-groups" +
+ "/ietf-nss:connection-group" +
+ "/ietf-nss:slo-sle-policy" +
+ "/ietf-nss:custom" +
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" +
+ "/ietf-nss:path-constraints" {
+ description
+ "Add toplogy id and explicit path to the connection group";
+
+ uses topology-ref;
+ }
+
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slice-service" +
+ "/ietf-nss:connection-groups" +
+ "/ietf-nss:connection-group" +
+ "/ietf-nss:connectivity-construct" +
+ "/ietf-nss:slo-sle-policy" +
+ "/ietf-nss:custom" +
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" {
+ description
+ "Augment IETF network slice services to include steering
+ constraints for connectivity-constructs within a
+ connectivity-based transport network slice.";
+ uses ns-topo-steering-constraints;
+ }
+
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slice-service" +
+ "/ietf-nss:connection-groups" +
+ "/ietf-nss:connection-group" +
+ "/ietf-nss:connectivity-construct" +
+ "/ietf-nss:slo-sle-policy" +
+ "/ietf-nss:custom" +
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" +
+ "/ietf-nss:path-constraints" {
+ description
+ "Add toplogy id and explicit path to the connectivity
+ construct";
+
+ uses topology-ref;
+ }
+
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slice-service" +
+ "/ietf-nss:connection-groups" +
+ "/ietf-nss:connection-group" +
+ "/ietf-nss:connectivity-construct" +
+ "/ietf-nss:type" +
+ "/ietf-nss:a2a" +
+ "/ietf-nss:a2a-sdp" +
+ "/ietf-nss:slo-sle-policy" +
+ "/ietf-nss:custom" +
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" {
+ description
+ "Augment IETF network slice services to include steering
+ constraints for a2a connectivity-constructs within a
+ connectivity-based transport network slice.";
+ uses ns-topo-steering-constraints;
+ }
+
+ augment "/ietf-nss:network-slice-services" +
+ "/ietf-nss:slice-service" +
+ "/ietf-nss:connection-groups" +
+ "/ietf-nss:connection-group" +
+ "/ietf-nss:connectivity-construct" +
+ "/ietf-nss:type" +
+ "/ietf-nss:a2a" +
+ "/ietf-nss:a2a-sdp" +
+ "/ietf-nss:slo-sle-policy" +
+ "/ietf-nss:custom" +
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:sle-policy" +
+ "/ietf-nss:steering-constraints" +
+ "/ietf-nss:path-constraints" {
+ description
+ "Add toplogy id and explicit path to a2a connectivity
+ construct";
+
+ uses topology-ref;
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ospf-sr@2023-02-24.yang b/experimental/ietf-extracted-YANG-modules/ietf-ospf-sr@2023-07-09.yang
similarity index 52%
rename from experimental/ietf-extracted-YANG-modules/ietf-ospf-sr@2023-02-24.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-ospf-sr@2023-07-09.yang
index 98ffb88b0..51d1c7480 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-ospf-sr@2023-02-24.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-ospf-sr@2023-07-09.yang
@@ -14,11 +14,17 @@ module ietf-ospf-sr {
reference "RFC 6991 - Common YANG Data Types";
}
+ import ietf-routing-types {
+ prefix "rt-types";
+ reference "RFC 8249 - Common YANG Data Types for the Routing Area";
+ }
+
import ietf-routing {
prefix "rt";
reference "RFC 8349 - A YANG Data Model for Routing
Management (NMDA Version)";
}
+
import ietf-segment-routing-common {
prefix "sr-cmn";
reference "RFC 9020 - YANG Data Model for Segment
@@ -29,12 +35,17 @@ module ietf-ospf-sr {
reference "RFC 9020 - YANG Data Model for Segment
Routing";
}
+
import ietf-ospf {
prefix "ospf";
reference "RFC 9129 - YANG Data Model for the OSPF
Protocol";
}
+ import ietf-ospfv3-extended-lsa {
+ prefix "ospfv3-e-lsa";
+ }
+
organization
"IETF LSR - Link State Routing Working Group";
@@ -83,27 +94,41 @@ module ietf-ospf-sr {
'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.
+
This version of this YANG module is part of RFC XXXX;
see the RFC itself for full legal notices.";
reference "RFC XXXX";
- revision 2023-02-24 {
+ revision 2023-07-09 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
+ feature remote-lfa-sr {
+ description
+ "Enhance rLFA to use SR path.";
+ reference
+ "RFC 8102: Remote-LFA Node Protection and Manageability";
+ }
+
feature ti-lfa {
description
"Topology-Independent Loop-Free Alternate (TI-LFA)
computation using segment routing.";
+ reference
+ "draft-ietf-rtgwg-segment-routing-ti-lfa -
+ Topology Independent Fast Reroute using Segment Routing";
}
identity prefix-sid-bit {
description
"Base identity for prefix sid sub-tlv bits.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ RFC 8666: OSPFv3 Extensions for Segment Routing";
}
identity np-bit {
@@ -146,11 +171,16 @@ module ietf-ospf-sr {
description
"Inter-Area flag. If set, advertisement is of
inter-area type.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing";
}
identity adj-sid-bit {
description
"Base identity for adj sid sub-tlv bits.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ RFC 8666: OSPFv3 Extensions for Segment Routing";
}
identity b-bit {
@@ -183,17 +213,12 @@ module ietf-ospf-sr {
"Persistent flag.";
}
- typedef uint24 {
- type uint32 {
- range "0 .. 16777215";
- }
- description
- "24-bit unsigned integer.";
- }
-
/* Groupings */
grouping sid-sub-tlv {
description "SID/Label sub-TLV grouping.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ (Section 6)";
container sid-sub-tlv {
description
"Used to advertise the SID/Label associated with a
@@ -207,8 +232,11 @@ module ietf-ospf-sr {
}
}
- grouping prefix-sid-sub-tlvs {
+ grouping ospfv2-prefix-sid-sub-tlvs {
description "Prefix Segment ID (SID) sub-TLVs.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ (Section 6)";
container prefix-sid-sub-tlvs{
description "Prefix SID sub-TLV.";
list prefix-sid-sub-tlv {
@@ -228,7 +256,9 @@ module ietf-ospf-sr {
description "Multi-topology ID.";
}
leaf algorithm {
- type uint8;
+ type identityref {
+ base sr-cmn:prefix-sid-algorithm;
+ }
description
"The algorithm associated with the prefix-SID.";
}
@@ -239,10 +269,11 @@ module ietf-ospf-sr {
}
}
}
-
- grouping extended-prefix-range-tlvs {
+ grouping ospfv2-extended-prefix-range-tlvs {
description "Extended prefix range TLV grouping.";
-
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ (Section 4)";
container extended-prefix-range-tlvs {
description "The list of range of prefixes.";
list extended-prefix-range-tlv {
@@ -273,7 +304,7 @@ module ietf-ospf-sr {
type inet:ip-prefix;
description "Address prefix.";
}
- uses prefix-sid-sub-tlvs;
+ uses ospfv2-prefix-sid-sub-tlvs;
uses ospf:unknown-tlvs;
}
}
@@ -281,11 +312,16 @@ module ietf-ospf-sr {
grouping sr-algorithm-tlv {
description "SR algorithm TLV grouping.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ (Section 3.1)";
container sr-algorithm-tlv {
description "All SR algorithm TLVs.";
leaf-list sr-algorithm {
- type uint8;
- description
+ type identityref {
+ base sr-cmn:prefix-sid-algorithm;
+ }
+ description
"The Segment Routing (SR) algorithms that the router is
currently using.";
}
@@ -294,12 +330,15 @@ module ietf-ospf-sr {
grouping sid-range-tlvs {
description "SID Range TLV grouping.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ (Section 3.2)";
container sid-range-tlvs {
description "List of SID range TLVs.";
list sid-range-tlv {
description "SID range TLV.";
leaf range-size {
- type uint24;
+ type rt-types:uint24;
description "The SID range.";
}
uses sid-sub-tlv;
@@ -310,12 +349,15 @@ module ietf-ospf-sr {
grouping local-block-tlvs {
description "The SR local block TLV contains the
range of labels reserved for local SIDs.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ (Section 3.3)";
container local-block-tlvs {
description "List of SRLB TLVs.";
list local-block-tlv {
description "SRLB TLV.";
leaf range-size {
- type uint24;
+ type rt-types:uint24;
description "The SID range.";
}
uses sid-sub-tlv;
@@ -327,17 +369,146 @@ module ietf-ospf-sr {
description "The SRMS preference TLV is used to advertise
a preference associated with the node that acts
as an SR Mapping Server.";
+ reference
+ "RFC 8665: OSPF Extensions for Segment Routing
+ (Section 3.4)";
container srms-preference-tlv {
description "SRMS Preference TLV.";
leaf preference {
- type uint8 {
- range "0 .. 255";
- }
+ type uint8;
description "SRMS preference TLV, value from 0 to 255.";
}
}
}
+ grouping ospfv3-prefix-sid-sub-tlvs {
+ description "Prefix Segment ID (SID) sub-TLVs.";
+ reference
+ "RFC 8666: OSPFv3 Extensions for Segment Routing
+ (Section 6)";
+ container perfix-sid-sub-tlvs{
+ description "Prefix SID sub-TLV.";
+ list prefix-sid-sub-tlv {
+ description "Prefix SID sub-TLV.";
+ container ospfv3-prefix-sid-flags {
+ leaf-list bits {
+ type identityref {
+ base ospf-sr:prefix-sid-bit;
+ }
+ description
+ "Prefix SID Sub-TLV flag bits list.";
+ }
+ description "Segment Identifier (SID) Flags.";
+ }
+ leaf algorithm {
+ type uint8;
+ description
+ "The algorithm associated with the prefix-SID.";
+ }
+ leaf sid {
+ type uint32;
+ description "An index or label.";
+ }
+ }
+ }
+ }
+
+ grouping ospfv3-extended-prefix-range-tlvs {
+ description "Extended prefix range TLV grouping.";
+ reference
+ "RFC 8666: OSPFv3 Extensions for Segment Routing
+ (Section 5)";
+ container ospfv3-extended-prefix-range-tlvs {
+ description "The list of extended prefix range TLVs.";
+ list extended-prefix-range-tlv {
+ description "The range of prefixes.";
+ leaf prefix-length {
+ type uint8;
+ description "Length of prefix in bits.";
+ }
+ leaf af {
+ type uint8;
+ description "Address family for the prefix.";
+ }
+ leaf range-size {
+ type uint16;
+ description "The number of prefixes covered by the
+ advertisement.";
+ }
+ leaf prefix {
+ type inet:ip-prefix;
+ description "Address prefix.";
+ }
+ uses ospfv3-prefix-sid-sub-tlvs;
+ uses ospf:unknown-tlvs;
+ }
+ }
+ }
+
+ grouping ospfv3-adj-sid-sub-tlvs {
+ description "Adjacency SID sub TLV grouping.";
+ reference
+ "RFC 8666: OSPFv3 Extensions for Segment Routing
+ (Section 7)";
+ container adj-sid-sub-tlvs {
+ description "Adjacency SID optional sub-TLVs.";
+ list adj-sid-sub-tlv {
+ description "List of Adjacency SID sub-TLVs.";
+ container adj-sid-flags {
+ leaf-list bits {
+ type identityref {
+ base adj-sid-bit;
+ }
+ description "Adj sid sub-tlv flags list.";
+ }
+ description "Adj-sid sub-tlv flags.";
+ }
+ leaf weight {
+ type uint8;
+ description "Weight used for load-balancing.";
+ }
+ leaf sid {
+ type uint32;
+ description "Segment Identifier (SID) index/label.";
+ }
+ }
+ }
+ }
+
+ grouping ospfv3-lan-adj-sid-sub-tlvs {
+ description "LAN adj-sid sub TLV grouping.";
+ reference
+ "RFC 8666: OSPFv3 Extensions for Segment Routing
+ (Section 7)";
+ container lan-adj-sid-sub-tlvs {
+ description "LAN Adjacency SID optional sub-TLVs.";
+ list lan-adj-sid-sub-tlv {
+ description "List of LAN adjacency SID sub-TLVs.";
+ container lan-adj-sid-flags {
+ leaf-list bits {
+ type identityref {
+ base adj-sid-bit;
+ }
+ description "LAN adj sid sub-tlv flags list.";
+ }
+ description "LAN adj-sid sub-tlv flags.";
+ }
+ leaf weight {
+ type uint8;
+ description "Weight used for load-balancing.";
+ }
+ leaf neighbor-router-id {
+ type yang:dotted-quad;
+ description "Neighbor router ID.";
+ }
+ leaf sid {
+ type uint32;
+ description "Segment Identifier (SID) index/label.";
+ }
+ }
+ }
+ }
+
/* Configuration */
augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/ospf:ospf" {
@@ -377,9 +548,9 @@ module ietf-ospf-sr {
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
- + "ospf:fast-reroute" {
- when "../../../../../../rt:type = 'ospf:ospfv2' or "
- + "../../../../../../rt:type = 'ospf:ospfv3'" {
+ + "ospf:fast-reroute/ospf:lfa" {
+ when "../../../../../../../rt:type = 'ospf:ospfv2' or "
+ + "../../../../../../../rt:type = 'ospf:ospfv3'" {
description
"This augments the OSPF routing protocol when used.";
}
@@ -393,12 +564,72 @@ module ietf-ospf-sr {
description
"Enables TI-LFA computation.";
}
+ container selection-tie-breakers {
+ container node-protection {
+ presence "Presence of container enables the node
+ protection tie-breaker";
+ leaf priority {
+ type uint8;
+ default 128;
+ description
+ "Priority for node protection tie-breaker with
+ a lower priority being more preferred.";
+ }
+ description
+ "Enable node protection as a TI-LFA path
+ selection tie-breaker. A path providing node
+ protection will be selected over one that
+ doesn't provide node protection.";
+ }
+ container srlg-disjoint {
+ presence "Presence of container enables the SRLG
+ disjoint tie-breaker";
+ leaf priority {
+ type uint8;
+ default 128;
+ description
+ "Priority for SRLG disjoint tie-breaker with
+ a lower priority being more preferred.";
+ }
+ description
+ "Enable SRLG (Shared Resource Link Group)
+ disjoint as a TI-LFA path selection tie-breaker.
+ A path providing node a disjoint path for SRLG
+ links from the primary path will be selected over
+ one that doesn't provide an SRLG disjoint path.";
+ }
+ description
+ "Configure path selection tie-breakers and their
+ respective priorities for the TI-LFA computation.";
+ }
description
"Topology Independent Loop Free Alternate
(TI-LFA) support.";
}
}
+ augment "/rt:routing/rt:control-plane-protocols/"
+ + "rt:control-plane-protocol/ospf:ospf/"
+ + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ + "ospf:fast-reroute/ospf:lfa/ospf:remote-lfa" {
+ when "../../../../../../../../rt:type = 'ospf:ospfv2' or "
+ + "../../../../../../../../rt:type = 'ospf:ospfv3'" {
+ description
+ "This augments the OSPF routing protocol when used.";
+ }
+ description
+ "This augments the OSPF protocol IP-FRR with remote LFA.";
+ leaf use-segment-routing-path {
+ if-feature "remote-lfa-sr";
+ type boolean;
+ default false;
+ description
+ "Force remote LFA to use segment routing path instead of LDP
+ path. The value of this leaf is in effect only when
+ remote-lfa is enabled.";
+ }
+ }
+
/* Database */
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
@@ -417,8 +648,9 @@ module ietf-ospf-sr {
"SR specific TLVs for OSPFv2 extended prefix LSA
in type 9 opaque LSA.";
- uses extended-prefix-range-tlvs;
+ uses ospfv2-extended-prefix-range-tlvs;
}
+
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/"
@@ -436,7 +668,7 @@ module ietf-ospf-sr {
"SR specific TLVs for OSPFv2 extended prefix LSA
in type 10 opaque LSA.";
- uses extended-prefix-range-tlvs;
+ uses ospfv2-extended-prefix-range-tlvs;
}
augment "/rt:routing/"
@@ -455,7 +687,7 @@ module ietf-ospf-sr {
"SR specific TLVs for OSPFv2 extended prefix LSA
in type 11 opaque LSA.";
- uses extended-prefix-range-tlvs;
+ uses ospfv2-extended-prefix-range-tlvs;
}
augment "/rt:routing/"
@@ -474,7 +706,7 @@ module ietf-ospf-sr {
description
"SR specific TLVs for OSPFv2 extended prefix TLV
in type 9 opaque LSA.";
- uses prefix-sid-sub-tlvs;
+ uses ospfv2-prefix-sid-sub-tlvs;
}
augment "/rt:routing/"
@@ -493,7 +725,7 @@ module ietf-ospf-sr {
description
"SR specific TLVs for OSPFv2 extended prefix TLV
in type 10 opaque LSA.";
- uses prefix-sid-sub-tlvs;
+ uses ospfv2-prefix-sid-sub-tlvs;
}
augment "/rt:routing/"
@@ -511,7 +743,7 @@ module ietf-ospf-sr {
description
"SR specific TLVs for OSPFv2 extended prefix TLV
in type 11 opaque LSA.";
- uses prefix-sid-sub-tlvs;
+ uses ospfv2-prefix-sid-sub-tlvs;
}
augment "/rt:routing/"
@@ -613,7 +845,6 @@ module ietf-ospf-sr {
uses local-block-tlvs;
uses srms-preference-tlv;
}
-
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/"
@@ -655,4 +886,252 @@ module ietf-ospf-sr {
uses local-block-tlvs;
uses srms-preference-tlv;
}
+
+ /* Segment Routing Capabilities */
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:database/"
+ + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospf:router-information" {
+ when "../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3.";
+ }
+ description
+ "SR specific TLVs for OSPFv3 Router Information
+ opaque LSA.";
+ uses sr-algorithm-tlv;
+ uses sid-range-tlvs;
+ uses local-block-tlvs;
+ uses srms-preference-tlv;
+ }
+
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/"
+ + "ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospf:router-information" {
+ when "../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3.";
+ }
+
+ description
+ "SR specific TLVs for OSPFv3 Router Information LSA.";
+
+ uses sr-algorithm-tlv;
+ uses sid-range-tlvs;
+ uses local-block-tlvs;
+ uses srms-preference-tlv;
+ }
+
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/"
+ + "ospf:interfaces/ospf:interface/ospf:database/"
+ + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
+ + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospf:router-information" {
+ when "../../../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3.";
+ }
+
+ description
+ "SR specific TLVs for OSPFv3 Router Information LSA.";
+
+ uses sr-algorithm-tlv;
+ uses sid-range-tlvs;
+ uses local-block-tlvs;
+ uses srms-preference-tlv;
+ }
+
+ /* OSPFv3 Extended Prefix Range TLV */
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix" {
+ when "../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3
+ E-Router LSAs";
+ }
+ uses ospfv3-extended-prefix-range-tlvs;
+ description
+ "OSPFv3 Area-Scoped E-Intra-Area-Prefix LSA.";
+ }
+
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" {
+ when "../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3
+ E-Router LSAs";
+ }
+ uses ospfv3-extended-prefix-range-tlvs;
+ description
+ "OSPFv3 Area-Scoped E-Inter-Area-Prefix LSA.";
+ }
+
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:database/"
+ + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" {
+ when "'ospf:../../../../../../../../../"
+ + "rt:type' = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3.";
+ }
+ uses ospfv3-extended-prefix-range-tlvs;
+ description
+ "OSPFv3 AS-Scoped E-AS-External LSA.";
+ }
+
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" {
+ when "'ospf:../../../../../../../../../"
+ + "rt:type' = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3.";
+ }
+ uses ospfv3-extended-prefix-range-tlvs;
+ description
+ "OSPFv3 Area-Scoped E-NSSA LSA.";
+ }
+
+ /* Prefix SID Sub-TLV in Intra-Area Prefix TLV */
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/"
+ + "ospf:interface/"
+ + "ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
+ + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3/"
+ + "ospf:body/ospfv3-e-lsa:e-link/"
+ + "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv" {
+ when "../../../../../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3
+ E-Router LSAs";
+ }
+ uses ospfv3-prefix-sid-sub-tlvs;
+ description
+ "OSPFv3 Link-Scoped Intra-Area Prefix TLV.";
+ }
+
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/"
+ + "ospfv3-e-lsa:e-intra-prefix-tlvs/"
+ + "ospfv3-e-lsa:intra-prefix-tlv" {
+ when "../../../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3
+ E-Router LSAs";
+ }
+ uses ospfv3-prefix-sid-sub-tlvs;
+ description
+ "OSPFv3 Area-Scoped Intra-Area Prefix TLV.";
+ }
+
+ /* Prefix SID Sub-TLV in Inter-Area Prefix TLV */
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/"
+ + "ospfv3-e-lsa:e-inter-prefix-tlvs/"
+ + "ospfv3-e-lsa:inter-prefix-tlv" {
+ when "../../../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3
+ E-Router LSAs";
+ }
+ uses ospfv3-prefix-sid-sub-tlvs;
+ description
+ "OSPFv3 Area-Scoped Inter-Area Prefix TLV.";
+ }
+
+ /* Prefix SID Sub-TLV in External Prefix TLV */
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:database/"
+ + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/"
+ + "ospfv3-e-lsa:e-external-tlvs/"
+ + "ospfv3-e-lsa:external-prefix-tlv" {
+ when "'ospf:../../../../../../../../../"
+ + "rt:type' = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3.";
+ }
+ uses ospfv3-prefix-sid-sub-tlvs;
+ description
+ "OSPFv3 AS-Scoped External Prefix TLV.";
+ }
+
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/"
+ + "ospfv3-e-lsa:e-external-tlvs/"
+ + "ospfv3-e-lsa:external-prefix-tlv" {
+ when "'ospf:../../../../../../../../../"
+ + "rt:type' = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3.";
+ }
+ uses ospfv3-prefix-sid-sub-tlvs;
+ description
+ "OSPFv3 Area-Scoped External Prefix TLV.";
+ }
+
+ /* Adj-SID sub-TLV */
+ augment "/rt:routing/"
+ + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/"
+ + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" {
+ when "../../../../../../../../../../../../"
+ + "rt:type = 'ospf:ospfv3'" {
+ description
+ "This augmentation is only valid for OSPFv3
+ E-Router LSAs";
+ }
+ uses ospfv3-adj-sid-sub-tlvs;
+ uses ospfv3-lan-adj-sid-sub-tlvs;
+ description
+ "OSPFv3 Area-Scoped Adj-SID Sub-TLV.";
+ }
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-otn-slice@2022-10-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-otn-slice@2023-07-06.yang
similarity index 83%
rename from experimental/ietf-extracted-YANG-modules/ietf-otn-slice@2022-10-12.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-otn-slice@2023-07-06.yang
index 506868fec..ab47cad75 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-otn-slice@2022-10-12.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-otn-slice@2023-07-06.yang
@@ -6,17 +6,13 @@ module ietf-otn-slice {
import ietf-network {
prefix "nw";
- reference "RFC 8345: A YANG Data Model for Network Topologies";
+ 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-te-types {
- prefix "te-types";
reference
- "RFC 8776: Traffic Engineering Common YANG Types";
+ "RFC 8345: A YANG Data Model for Network Topologies";
}
import ietf-layer1-types {
@@ -29,7 +25,7 @@ module ietf-otn-slice {
import ietf-network-slice-service {
prefix "ietf-nss";
reference
- "draft-ietf-teas-ietf-network-slice-nbi-yang-00:
+ "draft-ietf-teas-ietf-network-slice-nbi-yang-05:
IETF Network Slice Service YANG Model";
}
@@ -65,6 +61,7 @@ module ietf-otn-slice {
The model fully conforms to the Network Management Datastore
Architecture (NMDA).
+
Copyright (c) 2022 IETF Trust and the persons identified as
authors of the code. All rights reserved.
@@ -78,11 +75,11 @@ module ietf-otn-slice {
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
- revision "2022-10-12" {
+ revision "2023-07-06" {
description
"Latest revision of NBI YANG model for OTN slicing.";
reference
- "draft-ietf-ccamp-yang-otn-slicing-03: Framework and Data
+ "draft-ietf-ccamp-yang-otn-slicing-05: Framework and Data
Model for OTN Network Slicing";
}
@@ -117,7 +114,6 @@ module ietf-otn-slice {
description
"ODU Severely Errored Seconds (SES) threshold";
}
-
identity odu-uas {
base odu-tca-threshold-type;
description
@@ -178,10 +174,7 @@ module ietf-otn-slice {
}
leaf pm-threshold {
- type union {
- type te-types:bandwidth-scientific-notation;
- type uint64;
- }
+ type uint64;
description
"ODU PM metric threshold.";
}
@@ -189,7 +182,7 @@ module ietf-otn-slice {
}
}
- grouping otn-slice-slo-sle-policy {
+ grouping otn-slice-slo-policy {
description
"Policy grouping for OTN network slices.";
@@ -209,12 +202,12 @@ module ietf-otn-slice {
augment "/ietf-nss:network-slice-services" +
"/ietf-nss:slo-sle-templates" +
"/ietf-nss:slo-sle-template" +
- "/ietf-nss:service-slo-sle-policy" {
+ "/ietf-nss:slo-policy" {
description
"Augment IETF network slice service templates with
- OTN technology-specific SLO/SLE policy attributes.";
+ OTN technology-specific SLO/SLE policy attributes.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
/* slice augments */
@@ -222,37 +215,40 @@ module ietf-otn-slice {
"/ietf-nss:slice-service" +
"/ietf-nss:slo-sle-policy" +
"/ietf-nss:custom" +
- "/ietf-nss:service-slo-sle-policy" {
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:slo-policy" {
description
"Augment IETF network slice services to include technology-
specific SLO/SLE policy for connectivity-based OTN
slices.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
/* network topology augments */
augment "/nw:networks/nw:network" +
"/ns-topo:slo-sle-policy" +
"/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../nw:network-types/ns-topo:network-slice" {
+ "/ns-topo:service-slo-sle-policy" +
+ "/ns-topo:slo-policy" {
+ when "../../nw:network-types/ns-topo:network-slice" {
description "Augment only for Network Slice topology.";
}
description "Augment topology configuration and state.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
/* network node augments */
augment "/nw:networks/nw:network/nw:node" +
"/ns-topo:slo-sle-policy" +
"/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../../nw:network-types/ns-topo:network-slice" {
+ "/ns-topo:service-slo-sle-policy" +
+ "/ns-topo:slo-policy" {
+ when "../../../nw:network-types/ns-topo:network-slice" {
description "Augment only for Network Slice topology.";
}
description "Augment node configuration and state.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
/* network node's termination point augments */
@@ -260,25 +256,27 @@ module ietf-otn-slice {
"/nt:termination-point" +
"/ns-topo:slo-sle-policy" +
"/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../../../nw:network-types/ns-topo:network-slice" {
+ "/ns-topo:service-slo-sle-policy" +
+ "/ns-topo:slo-policy" {
+ when "../../../../nw:network-types/ns-topo:network-slice" {
description "Augment only for Network Slice topology.";
}
description "Augment node configuration and state.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
/* network link augments */
augment "/nw:networks/nw:network/nt:link" +
"/ns-topo:slo-sle-policy" +
"/ns-topo:custom" +
- "/ns-topo:service-slo-sle-policy" {
- when "../../nw:network-types/ns-topo:network-slice" {
+ "/ns-topo:service-slo-sle-policy" +
+ "/ns-topo:slo-policy" {
+ when "../../../nw:network-types/ns-topo:network-slice" {
description "Augment only for Network Slice topology.";
}
description "Augment link configuration and state.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
/* connectivity construct augments */
@@ -288,12 +286,13 @@ module ietf-otn-slice {
"/ietf-nss:connection-group" +
"/ietf-nss:slo-sle-policy" +
"/ietf-nss:custom" +
- "/ietf-nss:service-slo-sle-policy" {
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:slo-policy" {
description
"Augment IETF network slice services to include technology-
specific SLO/SLE policy for connection groups within
a connectivity-based transport network slice.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
augment "/ietf-nss:network-slice-services" +
@@ -303,12 +302,13 @@ module ietf-otn-slice {
"/ietf-nss:connectivity-construct" +
"/ietf-nss:slo-sle-policy" +
"/ietf-nss:custom" +
- "/ietf-nss:service-slo-sle-policy" {
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:slo-policy" {
description
"Augment IETF network slice services to include technology-
specific SLO/SLE policy for connectivity-constructs within
a connectivity-based transport network slice.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
augment "/ietf-nss:network-slice-services" +
@@ -321,11 +321,12 @@ module ietf-otn-slice {
"/ietf-nss:a2a-sdp" +
"/ietf-nss:slo-sle-policy" +
"/ietf-nss:custom" +
- "/ietf-nss:service-slo-sle-policy" {
+ "/ietf-nss:service-slo-sle-policy" +
+ "/ietf-nss:slo-policy" {
description
"Augment IETF network slice services to include technology-
specific SLO/SLE policy for a2a connectivity-constructs
within a connectivity-based transport network slice.";
- uses otn-slice-slo-sle-policy;
+ uses otn-slice-slo-policy;
}
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-sav@2023-05-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-sav@2023-05-20.yang
new file mode 100644
index 000000000..9c23c499d
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-sav@2023-05-20.yang
@@ -0,0 +1,502 @@
+module ietf-sav {
+ yang-version "1.1";
+ namespace "urn:ietf:params:xml:ns:yang:ietf-sav";
+ prefix "sav";
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ organization
+ "IETF SAVNET Working Group";
+
+ contact
+ "TBD";
+
+ description
+ "This YANG module defines the essential elements for the
+ management of Source address validation (SAV). The model
+ fully conforms to the Network Management Datastore
+ Architecture (NMDA).
+
+ 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 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; see the
+ RFC itself for full legal notices.";
+
+ reference
+ "RFC XXXX: A YANG Data Model For SAV Management.";
+ revision 2023-05-20 {
+ description
+ "Initial revision.";
+ reference
+ "RFC XXXX: A YANG Data Model for SAV Management.";
+ }
+
+ /* Features */
+
+ feature router-id {
+ description
+ "This feature indicates that the server supports an explicit
+ 32-bit router ID that is used by some control-plane
+ protocols.
+
+ Servers that do not advertise this feature set a router ID
+ algorithmically, usually to one of the configured IPv4
+ addresses. However, this algorithm is implementation
+ specific.";
+ }
+
+ /* Identities */
+
+ identity address-family {
+ description
+ "Base identity from which identities describing address
+ families are derived.";
+ }
+
+ identity ipv4 {
+ base address-family;
+ description
+ "This identity represents an IPv4 address family.";
+ }
+
+ identity ipv6 {
+ base address-family;
+ description
+ "This identity represents an IPv6 address family.";
+ }
+
+ identity source-protocol {
+ description
+ "Base identity from which source protocol
+ identities are derived.";
+ }
+
+ identity static {
+ base source-protocol;
+ description
+ "'Static' pseudo-protocol.";
+ }
+
+ identity sav-mode {
+ description
+ "Base identity from which identities describing SAV
+ modes of the specified interface are derived.";
+ }
+
+ identity sav-im {
+ base sav-mode;
+ description
+ "This identity represents an SAV incomplete mode.";
+ }
+
+ identity sav-cm {
+ base sav-mode;
+ description
+ "This identity represents an SAV complete mode.";
+ }
+
+ /* Type Definitions */
+
+ typedef rule-preference {
+ type uint32;
+ description
+ "This type is used for SAV-rule preferences.";
+ }
+
+ /* Groupings */
+
+ grouping address-family {
+ description
+ "This grouping provides a leaf identifying an address
+ family.";
+ leaf address-family {
+ type identityref {
+ base address-family;
+ }
+ mandatory true;
+ description
+ "Address family.";
+ }
+ }
+
+ grouping router-id {
+ description
+ "This grouping provides a router ID.";
+ leaf router-id {
+ type yang:dotted-quad;
+ description
+ "A 32-bit number in the form of a dotted quad that is used
+ by some control-plane protocols identifying a router.";
+ reference
+ "RFC 2328: OSPF Version 2";
+ }
+ }
+
+ grouping rule-metadata {
+ description
+ "Common SAV-rule metadata.";
+ leaf source-protocol {
+ type identityref {
+ base source-protocol;
+ }
+ mandatory true;
+ description
+ "Type of the source protocol from which the
+ SAV-rule originated.";
+ }
+ leaf active {
+ type empty;
+ description
+ "The presence of this leaf indicates that the rule is
+ preferred among all rules in the same SAV table that
+ have the same source prefix.";
+ }
+ leaf last-updated {
+ type yang:date-and-time;
+ description
+ "Timestamp of the last modification of the rule. If the
+ rule was never modified, it is the time when the SAV
+ rule was inserted into the SAV table.";
+ }
+ leaf drop-packets {
+ type uint64;
+ description
+ "Number of the drop packets by a SAV rule.";
+ }
+ leaf drop-bytes {
+ type uint64;
+ description
+ "Number of the drop bytes by a SAV rule.";
+ }
+ leaf sav-invalid-packets {
+ type uint64;
+ description
+ "Number of the packets with invalid SAV result.";
+ }
+ leaf sav-invalid-bytes {
+ type uint64;
+ description
+ "Number of the packet bytes with invalid SAV result.";
+ }
+ leaf sav-valid-packets {
+ type uint64;
+ description
+ "Number of the packets with valid SAV result.";
+ }
+ leaf sav-valid-bytes {
+ type uint64;
+ description
+ "Number of the packet bytes with valid SAV result.";
+ }
+ }
+
+ grouping limit-metadata {
+ description
+ "Common SAV-rule limit metadata.";
+ leaf number {
+ type uint32;
+ description
+ "This attribute allows for controlling number limit.";
+ }
+ leaf percent {
+ type uint8 {
+ range "0..100";
+ }
+ description
+ "This attribute allows for controlling percentage
+ limit.";
+ }
+ }
+
+ /* Augments */
+
+ augment "/if:interfaces/if:interface" {
+ description
+ "SAV configuration of incoming interfaces.";
+ container sav-control {
+ description
+ "Support for SAV interface configuration.";
+ leaf sav-enabled {
+ type boolean;
+ description
+ "This attribute allows for controlling the SAV function
+ of the incoming interface.";
+ }
+ leaf sav-mode {
+ type identityref {
+ base sav-mode;
+ }
+ description
+ "This attribute allows for controlling the SAV mode
+ of the incoming interface.";
+ }
+ action sav-reset {
+ description
+ "Reset action of a SAV incoming interface";
+ input {
+ leaf reset-statistics {
+ type boolean;
+ description
+ "This attribute allows for clearing the SAV
+ statistics of the incoming interface.";
+ }
+ }
+ }
+ }
+ }
+
+ /* Data nodes */
+
+ container sav {
+ description
+ "Configuration parameters for the SAV subsystem.";
+ uses router-id {
+ if-feature "router-id";
+ description
+ "Support for the global router ID. Control-plane protocols
+ that use a router ID can use this parameter or override it
+ with another value.";
+ }
+ container interfaces {
+ config false;
+ description
+ "Network-layer interfaces used for SAV.";
+ list interface {
+ key "name";
+ description
+ "Each entry contains the SAV statistics of a interface";
+ leaf name {
+ type if:interface-ref;
+ description
+ "The name of an interface.";
+ }
+ leaf drop-packets {
+ type uint64;
+ description
+ "The number of drop packets for SAV function.";
+ }
+ leaf drop-bytes {
+ type uint64;
+ description
+ "The byte number of drop packets for SAV function.";
+ }
+ leaf sav-invalid-packets {
+ type uint64;
+ description
+ "The number of the packets with invalid SAV result.";
+ }
+ leaf sav-invalid-bytes {
+ type uint64;
+ description
+ "The byte number of the packets with invalid SAV
+ result.";
+ }
+ leaf sav-valid-packets {
+ type uint64;
+ description
+ "The number of the packets with valid SAV result";
+ }
+ leaf sav-valid-bytes {
+ type uint64;
+ description
+ "The byte number of the packets with valid SAV
+ result.";
+ }
+ }
+ }
+ container v4sav-entry-limits {
+ description
+ "Specification limit of ipv4 SAV table.";
+ uses limit-metadata;
+ }
+ container v6sav-entry-limits {
+ description
+ "Specification limit of ipv6 SAV table.";
+ uses limit-metadata;
+ }
+ container source-protocol-priorities {
+ description
+ "Support for SAV source protocol priorities.";
+ list source-protocol-priority {
+ key "type";
+ description
+ "Each entry contains a SAV source protocol
+ priority.";
+ leaf type {
+ type identityref {
+ base source-protocol;
+ }
+ description
+ "Type of the source protocol -- an identity
+ derived from the 'source-protocol' base
+ identity.";
+ }
+ leaf preference {
+ type rule-preference;
+ description
+ "This attribute allows for selecting the preferred
+ SAV-rule among SAV-rules from the different source
+ protocol. A smaller value indicates a SAV-rule that is
+ more preferred.";
+ }
+ }
+ }
+ container sav-controls {
+ description
+ "Support for SAV global configuration.";
+ leaf sav-enabled {
+ type boolean;
+ description
+ "This attribute allows for controlling the SAV
+ function.";
+ }
+ leaf sav-mode {
+ type identityref {
+ base sav-mode;
+ }
+ description
+ "This attribute allows for controlling the SAV mode.";
+ }
+ action sav-interface-reset {
+ description
+ "Global reset action of SAV interface";
+ input {
+ leaf reset-statistics {
+ type boolean;
+ description
+ "This attribute allows for clearing the SAV
+ statistics of all interfaces.";
+ }
+ }
+ }
+ }
+ container static-savs {
+ description
+ "Support for the 'static' pseudo-protocol.
+
+ Address-family-specific modules augment this node with
+ their lists of SAV rules.";
+ }
+ container sav-tables {
+ description
+ "Support for SAV tables.";
+ list sav-table {
+ key "name";
+ description
+ "Each entry contains a configuration for a SAV
+ table identified by the 'name' key.";
+ leaf name {
+ type string;
+ description
+ "The name of the SAV table.";
+ }
+ uses address-family {
+ description
+ "The address family of the SAV table.";
+ }
+ leaf description {
+ type string;
+ description
+ "Textual description of the SAV table.";
+ }
+ container sav-rules {
+ config false;
+ description
+ "Current contents of the SAV table.";
+ list sav-rule {
+ description
+ "A SAV table rule entry. This data node
+ MUST be augmented with information specific to
+ SAV-rule of each address family.";
+ leaf rule-preference {
+ type rule-preference;
+ description
+ "This attribute allows for selecting the
+ preferred SAV-rule among SAV-rules with the same
+ source prefix. A smaller value indicates a
+ SAV-rule that is more preferred.";
+ }
+ container incoming-interfaces {
+ description
+ "Network-layer incoming interfaces of a SAV rule.";
+ leaf-list incoming-interface {
+ type if:interface-ref;
+ description
+ "Each entry is the name of a SAV incoming
+ interface";
+ }
+ }
+ uses rule-metadata;
+ }
+ }
+ action active-sav-rule {
+ description
+ "Return the active SAV rule that is used for the
+ source address.
+
+ Address-family-specific modules MUST augment input
+ parameters with a leaf named 'source-address'.";
+ output {
+ container sav-rule {
+ description
+ "The active SAV rule for the specified source.
+
+ If no rule exists in the SAV table for the source
+ address, no output is returned.
+
+ Address-family-specific modules MUST augment this
+ container with appropriate contents.";
+ container incoming-interfaces {
+ description
+ "Network-layer incoming interfaces of a SAV
+ rule.";
+ leaf-list incoming-interface {
+ type if:interface-ref;
+ description
+ "Each entry is the name of a SAV incoming
+ interface";
+ }
+ }
+ uses rule-metadata;
+ }
+ }
+ }
+ }
+ }
+ }
+ notification sav-event {
+ description
+ "This notification is sent when there is an abnormality in
+ SAV table.";
+ uses router-id {
+ if-feature "router-id";
+ description
+ "the router ID of the server corresponding to the SAV
+ table.";
+ }
+ uses address-family {
+ description
+ "The address family of the SAV table.";
+ }
+ leaf sav-limit-reached {
+ type boolean;
+ description
+ "Indicates that the number of SAV table entries reached
+ the upper limit.";
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-te-path-computation@2023-01-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-te-path-computation@2023-06-27.yang
similarity index 91%
rename from experimental/ietf-extracted-YANG-modules/ietf-te-path-computation@2023-01-12.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-te-path-computation@2023-06-27.yang
index 81ff3d24e..f3bee2d26 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-te-path-computation@2023-01-12.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-te-path-computation@2023-06-27.yang
@@ -93,8 +93,7 @@ module ietf-te-path-computation {
// this note
// replace the revision date with the module publication date
// the format is (year-month-day)
-
- revision 2023-01-12 {
+ revision 2023-06-27 {
description
"Initial revision";
reference
@@ -104,12 +103,34 @@ module ietf-te-path-computation {
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
+ /*
+ * Features
+ */
+
+ feature svec {
+ description
+ "This feature indicates that the server supports synchronized
+ path computation requests.";
+ reference
+ "Section 7.13 of RFC5440: Path Computation Element (PCE)
+ Communication Protocol (PCEP).";
+ }
+
+ feature compute-priority {
+ description
+ "This feature indicates that the server supports path
+ computation request's priority";
+ reference
+ "Section 7.4.1 of RFC5440: Path Computation Element (PCE)
+ Communication Protocol (PCEP).";
+ }
+
/*
* Identities
*/
identity tunnel-action-path-compute-delete {
- base te-types:tunnel-actions-type;
+ base te-types:tunnel-action-type;
description
"Action type to delete the transient states
of computed paths, as described in section 3.3.1 of
@@ -489,6 +510,25 @@ module ietf-te-path-computation {
"Each path computation request is uniquely identified
within the RPC request by the request-id.";
}
+ leaf compute-priority {
+ if-feature compute-priority;
+ type uint8;
+ default 0;
+ description
+ "The path computation request's priority (from 1 to 7)
+ which can be used to constraint the order by which the
+ path computation server processes the path computation
+ requests.
+
+ A higher numerical value of the priority field reflects a
+ higher priority.
+
+ It MUST be set to the default value (i.e., 0) when
+ unused.";
+ reference
+ "Section 7.4.1 of RFC5440: Path Computation Element (PCE)
+ Communication Protocol (PCEP).";
+ }
choice tunnel-attributes {
default "value";
description
@@ -554,7 +594,25 @@ module ietf-te-path-computation {
container secondary-path {
description
"TE secondary path";
- uses te:path-forward-properties;
+ leaf secondary-reverse-path {
+ type leafref {
+ path "/te:tunnels-path-compute/"
+ + "te:path-compute-info/te-pc:path-request/"
+ + "te-pc:request-id";
+ }
+ description
+ "A reference to the reverse secondary path
+ when co-routed with the secondary path.";
+ }
+ leaf preference {
+ type uint8 {
+ range "1..255";
+ }
+ default "1";
+ description
+ "Specifies a preference for this path. The
+ lower the number higher the preference.";
+ }
uses protection-restoration-properties;
list primary-path-ref {
min-elements 1;
@@ -651,6 +709,15 @@ module ietf-te-path-computation {
description
"TE secondary reverse path";
// uses te:path-preference;
+ leaf preference {
+ type uint8 {
+ range "1..255";
+ }
+ default "1";
+ description
+ "Specifies a preference for this path. The
+ lower the number higher the preference.";
+ }
uses protection-restoration-properties;
list primary-reverse-path {
min-elements 1;
@@ -714,19 +781,16 @@ module ietf-te-path-computation {
"TE path name.";
}
choice path-role {
- when 'not (./source) and not (./destination) and
- not (./src-tunnel-tp-id) and
- not (./dst-tunnel-tp-id)' {
+ when 'not (./source) and not (./destination)' {
description
"When the tunnel attributes are specified by value
within this path computation, it is assumed that the
requested path will be the only path of a tunnel.
If the requested path is a transit segment path
- (i.e., the source, src-tp-id, destination and
- dst-tp-id attributes are empty), it
- could be of any type. Otherwise it could only be a
- primary path.";
+ (i.e., the source and destination containers are
+ not present), it could be of any type. Otherwise it
+ could only be a primary path.";
}
default primary-path;
description
@@ -830,7 +894,9 @@ module ietf-te-path-computation {
}
}
}
- uses synchronization-info;
+ uses synchronization-info {
+ if-feature svec;
+ }
} // path-compute rpc input
augment "/te:tunnels-path-compute/te:output/"
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-tvr-bundle-schedule@2023-07-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-tvr-bundle-schedule@2023-07-05.yang
new file mode 100644
index 000000000..c16b9343e
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-tvr-bundle-schedule@2023-07-05.yang
@@ -0,0 +1,78 @@
+module ietf-tvr-bundle-schedule {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-tvr-bundle-schedule";
+ prefix bundle-schedule;
+
+ import ietf-bundle-protocol {
+ prefix bundle;
+ }
+ import ietf-tvr-schedule {
+ prefix tvr-schedule;
+ }
+
+ organization
+ "IETF TVR - Time Variant Routing Working Group";
+ contact
+ "WG Web:
+ WG List:
+
+ Author: Marc Blanchet
+
+ Author: Yingzhen Qu
+
+ Author: Leigh Jordan Torgerson
+ ";
+
+ description
+ "The YANG module defines an augmentation to the Bundle
+ protocol YANG mode.
+
+ This YANG model conforms to the Network Management
+ Datastore Architecture (NMDA) as described in RFC 8342.
+
+ 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
+ (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.";
+ reference
+ "RFC XXXX: Contact Plan Yang Model for Time-Variant Routing of the Bundle Protocol";
+
+ revision 2023-07-05 {
+ description
+ "Initial Version";
+ reference
+ "RFC XXXX: Contact Plan Yang Model for Time-Variant Routing of the Bundle Protocol.";
+ }
+
+ augment "/bundle:node/bundle:neighbors/bundle:neighbor" {
+ container contact-schedule {
+ description
+ "Augment Bundle node neighbor with a contact schedule.";
+ uses tvr-schedule:schedule;
+ leaf bandwidth {
+ type yang:gauge64;
+ units "bits/second";
+ description
+ "An estimate of the convergence layer current bandwidth in bits
+ per second";
+ }
+ }
+ description
+ "Augment the neighbor with a contact schedule.";
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-07-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-07-05.yang
new file mode 100644
index 000000000..8fd5180c9
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-07-05.yang
@@ -0,0 +1,294 @@
+module ietf-tvr-schedule {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-tvr-schedule";
+ prefix tvr-schedule;
+
+ import ietf-yang-types {
+ prefix "yang";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ reference
+ "RFC 8343: A YANG Data Model for Interface
+ Management (NMDA Version)";
+ }
+
+ import ietf-logical-network-element {
+ prefix "lne";
+ reference
+ "RFC 8530: YANG Model for Logical Network Elements";
+ }
+
+ organization
+ "IETF TVR - Time Variant Routing Working Group";
+ contact
+ "WG Web:
+ WG List:
+
+ Author: Yingzhen Qu
+
+ Author: Acee Lindem
+
+ Author: Marc Blanchet
+ ";
+
+ description
+ "The YANG module defines a schedule for changing
+ attributes. It can be used to augment existing models.
+
+ This YANG model conforms to the Network Management
+ Datastore Architecture (NMDA) as described in RFC 8342.
+
+ 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
+ (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.";
+ reference
+ "RFC XXXX: YANG Data Model for Scheduled Attributes";
+
+ revision 2023-07-05 {
+ description
+ "Initial Version";
+ reference
+ "RFC XXXX: YANG Data Model for Scheduled Attributes.";
+ }
+
+ typedef recurrence-type {
+ type enumeration {
+ enum once {
+ description
+ "Repeat the scheduled action or attribute modificaton
+ only once";
+ }
+ enum hourly {
+ description
+ "Repeat the scheduled action or attribute modificaiton
+ once per hour.";
+ }
+ enum daily {
+ description
+ "Repeat the scheduled action or attribute modificaiton
+ once per day.";
+ }
+ enum weekly {
+ description
+ "Repeat the scheduled action or attribute modificaiton
+ once per week.";
+ }
+ enum monthly {
+ description
+ "Repeat the scheduled action or attribute modificaiton
+ once per week.";
+ }
+ enum yearly {
+ description
+ "Repeat the scheduled action or attribute modificaiton
+ once per year.";
+ }
+ }
+ description
+ "Types of recurrence";
+ }
+
+ grouping schedule-lifetime {
+ description
+ "Schedule lifetime specification.";
+ choice schedule-lifetime {
+ default "always";
+ description
+ "Options for specifying schedule lifetimes";
+ case always {
+ leaf always {
+ type empty;
+ description
+ "Indicates schedule is always valid, and the schedule
+ will be effective right away after the configuration.";
+ }
+ }
+ case start-end-time {
+ leaf start-date-time {
+ type yang:date-and-time;
+ description
+ "Start time of the schedule.";
+ }
+ choice end-time {
+ default "infinite";
+ description
+ "End-time setting.";
+ case infinite {
+ leaf no-end-time {
+ type empty;
+ description
+ "Indicates schedule lifetime end-time is infinite.";
+ }
+ }
+ case duration {
+ leaf duration {
+ type uint32 {
+ range "1..2147483646";
+ }
+ units "seconds";
+ description
+ "Schedule lifetime duration, in seconds";
+ }
+ }
+ case end-date-time {
+ leaf end-date-time {
+ type yang:date-and-time;
+ description
+ "End time.";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ grouping schedule {
+ uses schedule-lifetime;
+ leaf recurrence {
+ type recurrence-type;
+ must "(current() != 'once') or ../start-date-time" {
+ error-message "A single occurrence requires a start-time";
+ description
+ "With single recurrence of a schedule, a start-time
+ is required.";
+ }
+ description
+ "Type of recurrence";
+ }
+
+ leaf value-default {
+ type union {
+ type boolean;
+ type string;
+ }
+ description
+ "Attribute default value. This value is used when the value
+ is not covered by the intervals, as well as when the
+ schedule ends.";
+ }
+
+ container base-schedule {
+ list intervals {
+ key "start-time";
+ leaf start-time {
+ type yang:timeticks;
+ must "((../../../recurrence != 'hourly') or "
+ + "(current() < 360000)) and "
+ + "((../../../recurrence != 'daily') or "
+ + "(current() < 8640000)) and "
+ + "((../../../recurrence != 'monthly') or "
+ + "(current() < 267840000)) and "
+ + "((../../../recurrence != 'yearly') or "
+ + "(current() < 3162240000))" {
+ error-message
+ "The start-time must not exceed the recurrence
+ interval";
+ description
+ "The start-time must not exceed the recurrrence
+ interval. For example, for a 'monthy' recurrence, the
+ start-time must not exceed 31 days.";
+ }
+ description
+ "Start time of the scheduled value within one recurrence.
+ The calculation of the real start time is to use the
+ basestarting time defined by schedule-lifetime, recurrence,
+ and the timeticks. For example, if a schedule starts at
+ 2001/1/1 8:00AM with an hourly recurrence, and the
+ timeticks is 180,000 (30 mins), the start-time will be
+ every 30 mins pass an hour after 2001/1/1.";
+ }
+ leaf end-time {
+ type yang:timeticks;
+ must "(current() > ../start-time) and "
+ + "((../../../recurrence != 'hourly') or "
+ + "(current() < 360000)) and "
+ + "((../../../recurrence != 'daily') or "
+ + "(current() < 8640000)) and "
+ + "((../../../recurrence != 'monthly') or "
+ + "(current() < 267840000)) and "
+ + "((../../../recurrence != 'yearly') or "
+ + "(current() < 3162240000))" {
+ error-message
+ "The end-time must be greater than the end time and
+ must not exceed the recurrrence interval.";
+ description
+ "The end-time must be greater than the end time and
+ must not exceed the recurrrence interval. For example,
+ for a 'daily' recurrence, the time-tick offset must
+ not exceed 24 hours.";
+ }
+ description
+ "End time of the scheduled change. The calculation of the
+ end-time is the same as the start-time.";
+ }
+ leaf value {
+ type union {
+ type boolean;
+ type string;
+ }
+ description
+ "Value for the scheduled attribute during the
+ specified time period.
+ When type string is used, it can be a simple value such
+ as an int, or a string representing a value that changes
+ its value based on a function.";
+ }
+ description
+ "List of intervals for action or attribute modification.
+ The intervals should be contained within each recurrence.
+ For example, when the recurrence is set to daily, the list
+ of intervals should be within this daily range, e.g., the
+ last end-time can't be larger than 8640000 (24hours).";
+ }
+ description
+ "The recurring base-schedule of the action or attribute
+ modification";
+ }
+ description
+ "Complete schedule for a action or attribute modification.";
+ }
+
+ augment "/if:interfaces/if:interface" {
+ description
+ "Augments interface with scheduled attribute.";
+ container scheduled-up-down {
+ description
+ "Scheduled interface up and down. This is to work with the
+ leaf 'enabled' for the configured state of the interface.";
+
+ uses schedule;
+ }
+ }
+
+ augment "/lne:logical-network-elements"
+ + "/lne:logical-network-element" {
+ description
+ "Augments logical network elements with scheduled power
+ shutdown.";
+ container scheduled-power {
+ description
+ "Scheduled power up and down.";
+ uses schedule;
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-udp-client@2023-05-08.yang b/experimental/ietf-extracted-YANG-modules/ietf-udp-client@2023-05-08.yang
new file mode 100644
index 000000000..00f12d5f9
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-udp-client@2023-05-08.yang
@@ -0,0 +1,104 @@
+module ietf-udp-client {
+ yang-version 1.1;
+ namespace
+ "urn:ietf:params:xml:ns:yang:ietf-udp-client";
+ prefix udpc;
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-tls-client {
+ prefix tlsc;
+ reference
+ "RFC TTTT: YANG Groupings for TLS Clients and TLS Servers";
+ }
+
+ organization "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web:
+ WG List:
+
+ Authors: Alex Huang Feng
+
+ Pierre Francois
+
+ Guangying Zheng
+
+ Tianran Zhou
+
+ Thomas Graf
+
+ Paolo Lucente
+ ";
+
+ description
+ "Defines a generic grouping for UDP-based client applications.
+
+ 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-to-be; see the RFC
+ itself for full legal notices.";
+
+ revision 2023-05-08 {
+ description
+ "Initial revision";
+ reference
+ "RFC-to-be: UDP-based Transport for Configured Subscriptions";
+ }
+
+ /*
+ * FEATURES
+ */
+ feature dtls13 {
+ description
+ "This feature indicates that DTLS 1.3 encryption of UDP
+ packets is supported.";
+ }
+
+ grouping udp-client-grouping {
+ description
+ "Provides a reusable grouping for configuring a UDP client.";
+
+ leaf remote-address {
+ type inet:ip-address-no-zone;
+ mandatory true;
+ description
+ "IP address of the UDP client, which can be an
+ IPv4 address or an IPV6 address.";
+ }
+
+ leaf remote-port {
+ type inet:port-number;
+ mandatory true;
+ description
+ "Port number of the UDP client.";
+ }
+
+ container dtls {
+ if-feature dtls13;
+ presence dtls;
+ uses tlsc:tls-client-grouping {
+ // Using tls-client-grouping without TLS1.2 parameters
+ // allowing only DTLS 1.3
+ refine "client-identity/auth-type/tls12-psk" {
+ // create the logical impossibility of enabling TLS1.2
+ if-feature "not tlsc:client-ident-tls12-psk";
+ }
+ refine "server-authentication/tls12-psks" {
+ // create the logical impossibility of enabling TLS1.2
+ if-feature "not tlsc:server-auth-tls12-psk";
+ }
+ }
+ description
+ "Container for configuring DTLS 1.3 parameters.";
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-udp-notif-transport@2023-03-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-udp-notif-transport@2023-05-08.yang
similarity index 68%
rename from experimental/ietf-extracted-YANG-modules/ietf-udp-notif-transport@2023-03-10.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-udp-notif-transport@2023-05-08.yang
index b26c08906..47c3fb491 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-udp-notif-transport@2023-03-10.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-udp-notif-transport@2023-05-08.yang
@@ -14,15 +14,10 @@ module ietf-udp-notif-transport {
"RFC YYYY: An HTTPS-based Transport for
Configured Subscriptions";
}
- import ietf-inet-types {
- prefix inet;
+ import ietf-udp-client {
+ prefix udpc;
reference
- "RFC 6991: Common YANG Data Types";
- }
- import ietf-tls-client {
- prefix tlsc;
- reference
- "RFC TTTT: YANG Groupings for TLS Clients and TLS Servers";
+ "RFC-to-be: UDP-based Transport for Configured Subscriptions";
}
organization "IETF NETCONF (Network Configuration) Working Group";
@@ -47,7 +42,7 @@ module ietf-udp-notif-transport {
"Defines UDP-Notif as a supported transport for subscribed
event notifications.
- 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.
Redistribution and use in source and binary forms, with or without
@@ -56,14 +51,14 @@ module ietf-udp-notif-transport {
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
+ This version of this YANG module is part of RFC-to-be; see the RFC
itself for full legal notices.";
- revision 2023-03-10 {
+ revision 2023-05-08 {
description
"Initial revision";
reference
- "RFC XXXX: UDP-based Transport for Configured Subscriptions";
+ "RFC-to-be: UDP-based Transport for Configured Subscriptions";
}
/*
@@ -74,11 +69,6 @@ module ietf-udp-notif-transport {
"This feature indicates that CBOR encoding of notification
messages is supported.";
}
- feature dtls-supported {
- description
- "This feature indicates that DTLS encryption of notification
- messages is supported.";
- }
feature segmentation {
description
"This feature indicates segmentation of notification messages
@@ -94,7 +84,6 @@ module ietf-udp-notif-transport {
"UDP-Notif is used as transport for notification messages
and state change notifications.";
}
-
identity encode-cbor {
base sn:encoding;
description
@@ -108,20 +97,7 @@ module ietf-udp-notif-transport {
"Provides a reusable description of a UDP-Notif target
receiver.";
- leaf address {
- type inet:ip-address-no-zone;
- mandatory true;
- description
- "IP address of target UDP-Notif receiver, which can be an
- IPv4 address or an IPV6 address.";
- }
-
- leaf port {
- type inet:port-number;
- mandatory true;
- description
- "Port number of target UDP-Notif receiver.";
- }
+ uses udpc:udp-client-grouping;
leaf enable-segmentation {
if-feature segmentation;
@@ -131,6 +107,7 @@ module ietf-udp-notif-transport {
"The switch for the segmentation feature. When disabled, the
publisher will not allow fragment for a very large data";
}
+
leaf max-segment-size {
when "../enable-segmentation = 'true'";
if-feature segmentation;
@@ -140,25 +117,6 @@ module ietf-udp-notif-transport {
control the size of each segment (UDP-Notif header, with
options, included).";
}
-
- container dtls {
- if-feature dtls-supported;
- presence dtls;
- uses tlsc:tls-client-grouping {
- // Using tls-client-grouping without TLS1.2 parameters
- // allowing only DTLS 1.3
- refine "client-identity/auth-type/tls12-psk" {
- // create the logical impossibility of enabling TLS1.2
- if-feature "not tlsc:client-ident-tls12-psk";
- }
- refine "server-authentication/tls12-psks" {
- // create the logical impossibility of enabling TLS1.2
- if-feature "not tlsc:server-auth-tls12-psk";
- }
- }
- description
- "Container for configuring DTLS 1.3 parameters if DTLS is enabled.";
- }
}
augment "/sn:subscriptions/snr:receiver-instances/" +