From abdb0b1779d0498fbae79e350c024005638dc893 Mon Sep 17 00:00:00 2001 From: Miroslav Kovac Date: Mon, 10 Jul 2023 18:06:11 +0000 Subject: [PATCH] Cronjob - daily check of IETF modules. --- .../ietf-ace-brski-ace@2023-07-07.yang | 81 +++ ...ietf-computing-information@2022-05-11.yang | 124 ++++ .../ietf-incident-types@2023-05-16.yang | 156 +++++ ...-13.yang => ietf-incident@2023-05-16.yang} | 333 +++-------- .../ietf-ipv4-sav-rule@2023-05-20.yang | 165 ++++++ .../ietf-ipv6-sav-rule@2023-05-20.yang | 165 ++++++ ...2-19.yang => ietf-isis-sr@2023-07-09.yang} | 2 +- ...yang => ietf-layer0-types@2023-07-07.yang} | 539 +++++++++++------ ...etf-network-slice-service@2023-07-07.yang} | 341 +++++------ .../ietf-node-tags-state@2022-02-04.yang | 41 +- .../ietf-node-tags@2022-02-04.yang | 115 +--- .../ietf-ns-topo@2023-03-11.yang | 286 --------- .../ietf-ns-topo@2023-07-07.yang | 359 ++++++++++++ ...2-24.yang => ietf-ospf-sr@2023-07-09.yang} | 543 ++++++++++++++++-- ...12.yang => ietf-otn-slice@2023-07-06.yang} | 79 +-- .../ietf-sav@2023-05-20.yang | 502 ++++++++++++++++ ... ietf-te-path-computation@2023-06-27.yang} | 90 ++- .../ietf-tvr-bundle-schedule@2023-07-05.yang | 78 +++ .../ietf-tvr-schedule@2023-07-05.yang | 294 ++++++++++ .../ietf-udp-client@2023-05-08.yang | 104 ++++ ... ietf-udp-notif-transport@2023-05-08.yang} | 60 +- 21 files changed, 3344 insertions(+), 1113 deletions(-) create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-ace-brski-ace@2023-07-07.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-computing-information@2022-05-11.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-incident-types@2023-05-16.yang rename experimental/ietf-extracted-YANG-modules/{ietf-incident@2023-03-13.yang => ietf-incident@2023-05-16.yang} (59%) create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-ipv4-sav-rule@2023-05-20.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-ipv6-sav-rule@2023-05-20.yang rename experimental/ietf-extracted-YANG-modules/{ietf-isis-sr@2023-02-19.yang => ietf-isis-sr@2023-07-09.yang} (99%) rename experimental/ietf-extracted-YANG-modules/{ietf-layer0-types@2023-03-07.yang => ietf-layer0-types@2023-07-07.yang} (80%) rename experimental/ietf-extracted-YANG-modules/{ietf-network-slice-service@2023-03-13.yang => ietf-network-slice-service@2023-07-07.yang} (87%) delete mode 100644 experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-03-11.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-ns-topo@2023-07-07.yang rename experimental/ietf-extracted-YANG-modules/{ietf-ospf-sr@2023-02-24.yang => ietf-ospf-sr@2023-07-09.yang} (52%) rename experimental/ietf-extracted-YANG-modules/{ietf-otn-slice@2022-10-12.yang => ietf-otn-slice@2023-07-06.yang} (83%) create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-sav@2023-05-20.yang rename experimental/ietf-extracted-YANG-modules/{ietf-te-path-computation@2023-01-12.yang => ietf-te-path-computation@2023-06-27.yang} (91%) create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-tvr-bundle-schedule@2023-07-05.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-07-05.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-udp-client@2023-05-08.yang rename experimental/ietf-extracted-YANG-modules/{ietf-udp-notif-transport@2023-03-10.yang => ietf-udp-notif-transport@2023-05-08.yang} (68%) 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/" +