This YANG module defines the configurational and operational parameters related to IGP Flex-Algorithms
Version: 2023-05-24
module openconfig-flexalgo { yang-version 1.1; namespace "http://openconfig.net/yang/flexalgo"; prefix oc-flexalgo; import openconfig-network-instance { prefix oc-ni; } import openconfig-extensions { prefix oc-ext; } import openconfig-interfaces { prefix oc-if; } organization "OpenConfig working group"; contact "OpenConfig working group www.openconfig.net "; description "This YANG module defines the configurational and operational parameters related to IGP Flex-Algorithms"; revision "2023-05-24" { description "Initial revision of flexalgo module"; reference "0.1.0"; } oc-ext:openconfig-version "0.1.0"; typedef flex-algo-metric-type { type enumeration { enum "IGP" { value 0; description "IGP metric to be used during the calculation."; } enum "MIN_DELAY" { value 1; description "Min Unidirectional Link Delay as defined in [RFC7810] to be used during the calculation."; } enum "TE_METRIC" { value 2; description "TE default metric as defined in [RFC5305] to be used during the calculation."; } } description "Type of metric to be used during a Flex Algo path computation"; } typedef flex-algo-id { type uint8 { range "128..255"; } description "Flex-Algorithm identifies which algorithm should be used during path computation"; } typedef flex-algo-calc-type { type uint8 { range "0..127"; } default "0"; description "Calculation type value ranges from 0 to 127 both inclusive from the IGP Algorithm Types registry defined under Interior Gateway Protocol (IGP) Parameters IANA registries. If the required calculation type is Shortest Path First, the value 0 SHOULD appear in this field."; } grouping algorithm-attributes { description "All of the possible attributes for an flexible algorithm definition"; leaf flex-algo-id { type flex-algo-id; mandatory true; description "Flex Algorithm Identifier"; } leaf flex-algo-name { type string; description "Flexible Algorithm name"; } leaf flex-algo-description { type string; description "Description of this flex-algo"; } leaf metric-type { type flex-algo-metric-type; default "IGP"; description "Indicates which is the corresponding metric type for this algorithm"; } leaf calc-type { type flex-algo-calc-type; description "Indicates the calculation type, if advertised"; } leaf priority { type uint8; default "237"; description "Indicates the priority for this algorithm"; } leaf-list exclude { type leafref { path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/admin-group/admin-group-name"; } description "extended-admin-groups to exclude in path calculation."; } leaf-list include-all { type leafref { path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/admin-group/admin-group-name"; } description "extended-admin-groups, all of which must be included"; } leaf-list include-any { type leafref { path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/admin-group/admin-group-name"; } description "extended-admin-groups, one of which must be included"; } leaf-list srlg-exclude { type leafref { path "../../../../flex-algo-global-attributes/srlgs/srlg/name"; } description "list of references to named SRLGs to be excluded"; } leaf algo-flags { type boolean; description "Advertise flex-algo definition flags"; } } // grouping algorithm-attributes grouping flex-algo-definition-top { description "Top level grouping for flexible Algorithms and their definitions"; list algorithm { key "flex-algo-id"; description "List of Flexible Algorithms"; leaf flex-algo-id { type leafref { path "../config/flex-algo-id"; } description "Name for a Flexible Algorithm"; } container config { description "Attributes for a Flexible Algorithm"; uses algorithm-attributes; } // container config container state { config false; description "Attributes for a Flexible Algorithm"; uses algorithm-attributes; } // container state } // list algorithm } // grouping flex-algo-definition-top grouping flex-algo-interface-attributes-config { description "global level definitions for interfaces on which TE is run"; leaf interface-id { type oc-if:interface-id; description "Id of the interface"; } leaf te-metric { type uint32; description "TE specific metric for the link"; } leaf min-delay { type uint32; description "Min delay for the link"; } leaf-list srlg-membership { type leafref { path "../../../../flex-algo-global-attributes/srlgs/srlg/name"; } description "list of references to named shared risk link groups that the interface belongs to."; } leaf-list admin-group { type leafref { path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/admin-group/admin-group-name"; } description "list of admin groups (by name) on the interface"; } } // grouping flex-algo-interface-attributes-config grouping flex-algo-interface-attributes-top { description "Top level grouping for flex Algorithm attributes for interfaces"; list interface { key "interface-id"; description "List of flex-algo interfaces"; leaf interface-id { type leafref { path "../config/interface-id"; } description "Reference to the interface id list key"; } container config { description "Configuration parameters related to flex-algo interfaces:"; uses flex-algo-interface-attributes-config; } // container config container state { config false; description "State parameters related to flex-algo interfaces"; uses flex-algo-interface-attributes-config; } // container state } // list interface } // grouping flex-algo-interface-attributes-top grouping flex-algo-srlg-config { description "Configuration of various attributes associated with the SRLG"; leaf name { type string; description "SRLG group identifier"; } leaf value { type uint32; description "group ID for the SRLG"; } } // grouping flex-algo-srlg-config grouping flex-algo-srlg-top { description "Top level grouping for flex algo shared risk link groups."; container srlgs { description "Shared risk link groups attributes"; list srlg { key "name"; description "List of shared risk link groups"; leaf name { type leafref { path "../config/name"; } description "The SRLG group identifier"; } container config { description "Configuration parameters related to the SRLG"; uses flex-algo-srlg-config; } // container config container state { config false; description "State parameters related to the SRLG"; uses flex-algo-srlg-config; } // container state } // list srlg } // container srlgs } // grouping flex-algo-srlg-top grouping flex-algo-admin-group-config { description "configuration data for MPLS link admin groups"; leaf admin-group-name { type string; description "name for mpls admin-group"; } leaf bit-position { type uint32; description "bit-position value for mpls admin-group. The value for the admin group is an integer that represents one of the bit positions in the admin-group bitmask. Values between 0 and 31 are interpreted as the original limit of 32 admin groups. Values >=32 are interpreted as extended admin group values as per RFC7308."; } } // grouping flex-algo-admin-group-config grouping flex-algo-admin-groups-top { description "top-level mpls admin-groups config and state containers"; container flex-algo-admin-groups { description "Top-level container for admin-groups configuration and state"; list admin-group { key "admin-group-name"; description "configuration of value to name mapping for mpls affinities/admin-groups"; leaf admin-group-name { type leafref { path "../config/admin-group-name"; } description "name for mpls admin-group"; } container config { description "Configurable items for admin-groups"; uses flex-algo-admin-group-config; } // container config container state { config false; description "Operational state for admin-groups"; uses flex-algo-admin-group-config; } // container state } // list admin-group } // container flex-algo-admin-groups } // grouping flex-algo-admin-groups-top grouping flex-algo-top { description "Top level grouping for Flexible Algorithm Definitions"; container flex-algorithm { description "Flex Algorithms definitions and the attributes"; container flex-algorithm-definition { description "Flexible Algorithms and their definitions"; uses flex-algo-definition-top; } // container flex-algorithm-definition container flex-algo-global-attributes { description "Flexible Algorithm global attributes"; uses flex-algo-srlg-top; uses flex-algo-admin-groups-top; } // container flex-algo-global-attributes container flex-algo-interface-attributes { description "Flexible Algorithm attributes for interfaces"; uses flex-algo-interface-attributes-top; } // container flex-algo-interface-attributes } // container flex-algorithm } // grouping flex-algo-top augment /oc-ni:network-instances/oc-ni:network-instance { description "List of Flexible Algorithms and their definitions"; uses flex-algo-top; } } // module openconfig-flexalgo
© 2023 YumaWorks, Inc. All rights reserved.