| submodule openconfig-ospfv2-global { |
| |
| belongs-to openconfig-ospfv2 { |
| prefix "oc-ospfv2"; |
| } |
| |
| import ietf-yang-types { prefix "yang"; } |
| import openconfig-extensions { prefix "oc-ext"; } |
| import openconfig-routing-policy { prefix "oc-rpol"; } |
| import openconfig-ospf-types { prefix "oc-ospft"; } |
| |
| // Include common submodule |
| include openconfig-ospfv2-common; |
| |
| // meta |
| organization "OpenConfig working group"; |
| |
| contact |
| "OpenConfig working group |
| www.openconfig.net"; |
| |
| description |
| "This submodule provides OSPFv2 configuration and operational |
| state parameters that are global to a particular OSPF instance"; |
| |
| oc-ext:openconfig-version "0.1.0"; |
| |
| revision "2017-02-28"{ |
| description |
| "Initial public release of OSPFv2"; |
| reference "0.1.0"; |
| } |
| |
| revision "2016-06-24" { |
| description |
| "Initial revision"; |
| reference "0.0.1"; |
| } |
| |
| grouping ospfv2-global-config { |
| description |
| "Global configuration for OSPFv2"; |
| |
| leaf router-id { |
| type yang:dotted-quad; |
| description |
| "A 32-bit number represented as a dotted quad assigned to |
| each router running the OSPFv2 protocol. This number should |
| be unique within the autonomous system"; |
| reference "rfc2828"; |
| } |
| |
| leaf summary-route-cost-mode { |
| type enumeration { |
| enum RFC1583_COMPATIBLE { |
| description |
| "Specify that summary routes should assume the cost of |
| the lowest-cost more-specific route as per the behaviour |
| specified in RFC1583"; |
| } |
| enum RFC2328_COMPATIBLE { |
| description |
| "Specify that summary routes should assume the cost of the |
| highest-cost more-specific route as per the revised |
| behaviour specified in RFC2328"; |
| } |
| } |
| default "RFC2328_COMPATIBLE"; |
| description |
| "Specify how costs for the summary routes should be specified |
| as per the behaviour in the original OSPF specification |
| RFC1583, or alternatively whether the revised behaviour |
| described in RFC2328 should be utilised"; |
| } |
| |
| leaf igp-shortcuts { |
| type boolean; |
| description |
| "When this leaf is set to true, OSPFv2 will route traffic to |
| a remote system via any LSP to the system that is marked as |
| shortcut eligible."; |
| } |
| |
| leaf log-adjacency-changes { |
| type boolean; |
| description |
| "When this leaf is set to true, a log message will be |
| generated when the state of an OSPFv2 neighbour changes."; |
| } |
| |
| leaf hide-transit-only-networks { |
| type boolean; |
| description |
| "When this leaf is set to true, do not advertise prefixes |
| into OSPFv2 that correspond to transit interfaces, as per |
| the behaviour discussed in RFC6860."; |
| reference |
| "RFC6860 - Hiding Transit-Only Networks in OSPF"; |
| } |
| } |
| |
| grouping ospfv2-global-spf-timers-config { |
| description |
| "Configuration parameters relating to global SPF timer |
| parameters for OSPFv2"; |
| |
| leaf initial-delay { |
| // rjs TODO: IS-IS model has this as decimal64 - should it be |
| // that or uint32 msec? |
| type uint32; |
| units msec; |
| description |
| "The value of this leaf specifies the time between a change |
| in topology being detected and the first run of the SPF |
| algorithm."; |
| } |
| |
| leaf maximum-delay { |
| // rjs TODO: same question as above |
| type uint32; |
| units msec; |
| description |
| "The value of this leaf specifies the maximum delay between |
| a topology change being detected and the SPF algorithm |
| running. This value is used for implementations that support |
| increasing the wait time between SPF runs."; |
| } |
| |
| // rjs TODO: some questions here around what we should specify: |
| // JUNOS has rapid-runs and holddown |
| // Cisco has maximum time between runs, and then a doubling of |
| // the wait interval up to that maximum. |
| // ALU has first-wait, second-wait, max-wait |
| } |
| |
| grouping ospfv2-global-lsa-generation-timers-config { |
| description |
| "Configuration parameters relating to global LSA generation |
| parameters for OSPFv2"; |
| |
| leaf initial-delay { |
| type uint32; |
| units msec; |
| description |
| "The value of this leaf specifies the time between the first |
| time an LSA is generated and advertised and the subsequent |
| generation of that LSA."; |
| } |
| |
| leaf maximum-delay { |
| type uint32; |
| units msec; |
| description |
| "The value of this leaf specifies the maximum time between the |
| generation of an LSA and the subsequent re-generation of that |
| LSA. This value is used in implementations that support |
| increasing delay between generation of an LSA"; |
| } |
| } |
| |
| grouping ospfv2-global-spf-timers-state { |
| description |
| "Operational state parameters relating to OSPFv2 global |
| timers"; |
| |
| uses ospfv2-common-timers; |
| } |
| |
| grouping ospfv2-global-lsa-generation-timers-state { |
| description |
| "Operational state parameters relating to OSPFv2 global |
| timers"; |
| |
| uses ospfv2-common-timers; |
| } |
| |
| grouping ospfv2-global-graceful-restart-config { |
| description |
| "Configuration parameters relating to graceful restart for |
| OSPFv2"; |
| |
| leaf enabled { |
| type boolean; |
| description |
| "When the value of this leaf is set to true, graceful restart |
| is enabled on the local system. In this case, the system will |
| use Grace-LSAs to signal that it is restarting to its |
| neighbors."; |
| } |
| |
| leaf helper-only { |
| type boolean; |
| description |
| "Operate graceful-restart only in helper mode. When this leaf |
| is set to true, the local system does not use Grace-LSAs to |
| indicate that it is restarting, but will accept Grace-LSAs |
| from remote systems, and suppress withdrawl of adjacencies |
| of the system for the grace period specified"; |
| } |
| } |
| |
| grouping ospfv2-global-mpls-config { |
| description |
| "Configuration parameters for OSPFv2 options which |
| relate to MPLS"; |
| |
| leaf traffic-engineering-extensions { |
| type boolean; |
| description |
| "When this leaf is set to true, use traffic engineering |
| extensions for OSPF to advertise TE parameters via type 10 |
| Opaque LSAs"; |
| } |
| } |
| |
| grouping ospfv2-global-inter-areapp-config { |
| description |
| "Configuration parameters for OSPFv2 policies which propagate |
| prefixes between areas"; |
| |
| leaf src-area { |
| type leafref { |
| // we are at ospf/global/inter-area-propagation-policies/... |
| // inter-area-propagation-policy/config/src-area |
| path "../../../../../areas/area/identifier"; |
| } |
| description |
| "The area from which prefixes are to be exported."; |
| } |
| |
| leaf dst-area { |
| type leafref { |
| // we are at ospf/global/inter-area-propagation-policies/... |
| // inter-area-propagation-policy/config/src-area |
| path "../../../../../areas/area/identifier"; |
| } |
| description |
| "The destination area to which prefixes are to be imported"; |
| } |
| |
| uses oc-rpol:apply-policy-import-config; |
| } |
| |
| grouping ospfv2-global-max-metric-config { |
| description |
| "Configuration paramters relating to setting the OSPFv2 |
| maximum metric."; |
| |
| leaf set { |
| type boolean; |
| description |
| "When this leaf is set to true, all non-stub interfaces of |
| the local system are advertised with the maximum metric, |
| such that the router does not act as a transit system, |
| (similarly to the IS-IS overload functionality)."; |
| reference |
| "RFC3137 - OSPF Stub Router Advertisement"; |
| } |
| |
| leaf timeout { |
| type uint64; |
| units "seconds"; |
| description |
| "The delay, in seconds, after which the advertisement of |
| entities with the maximum metric should be cleared, and |
| the system reverts to the default, or configured, metrics."; |
| } |
| |
| leaf-list include { |
| type identityref { |
| base "oc-ospft:MAX_METRIC_INCLUDE"; |
| } |
| description |
| "By default, the maximum metric is advertised for all |
| non-stub interfaces of a device. When identities are |
| specified within this leaf-list, additional entities |
| are also advertised with the maximum metric according |
| to the values within the list."; |
| } |
| |
| leaf-list trigger { |
| type identityref { |
| base "oc-ospft:MAX_METRIC_TRIGGER"; |
| } |
| description |
| "By default, the maximum metric is only advertised |
| when the max-metric/set leaf is specified as true. |
| In the case that identities are specified within this |
| list, they provide additional triggers (e.g., system |
| boot) that may cause the max-metric to be set. In this |
| case, the system should still honour the timeout specified |
| by the max-metric/timeout leaf, and clear the max-metric |
| advertisements after the expiration of this timer."; |
| } |
| } |
| |
| grouping ospfv2-global-structural { |
| description |
| "Top level structural grouping for OSPFv2 global parameters"; |
| |
| container global { |
| description |
| "Configuration and operational state parameters for settings |
| that are global to the OSPFv2 instance"; |
| |
| container config { |
| description |
| "Global configuration parameters for OSPFv2"; |
| uses ospfv2-global-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters for OSPFv2"; |
| uses ospfv2-global-config; |
| } |
| |
| container timers { |
| description |
| "Configuration and operational state parameters for OSPFv2 |
| timers"; |
| |
| container spf { |
| description |
| "Configuration and operational state parameters relating |
| to timers governing the operation of SPF runs"; |
| |
| container config { |
| description |
| "Configuration parameters relating to global OSPFv2 |
| SPF timers"; |
| uses ospfv2-global-spf-timers-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters relating to the global |
| OSPFv2 SPF timers"; |
| uses ospfv2-global-spf-timers-config; |
| uses ospfv2-global-spf-timers-state; |
| } |
| } |
| |
| container max-metric { |
| description |
| "Configuration and operational state parameters relating |
| to setting the OSPFv2 maximum metric."; |
| |
| container config { |
| description |
| "Configuration parameters relating to setting the OSPFv2 |
| maximum metric for a set of advertised entities."; |
| uses ospfv2-global-max-metric-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters relating to setting the |
| OSPFv2 maximum metric for a set of advertised entities."; |
| uses ospfv2-global-max-metric-config; |
| } |
| } |
| |
| container lsa-generation { |
| description |
| "Configuration and operational state parameters relating |
| to timers governing the generation of LSAs by the local |
| system"; |
| |
| container config { |
| description |
| "Configuration parameters relating to the generation of |
| LSAs by the local system"; |
| uses ospfv2-global-lsa-generation-timers-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters relating to the generation |
| of LSAs by the local system"; |
| uses ospfv2-global-lsa-generation-timers-config; |
| uses ospfv2-global-lsa-generation-timers-state; |
| } |
| } |
| } |
| |
| container graceful-restart { |
| description |
| "Configuration and operational state parameters for OSPFv2 |
| graceful restart"; |
| |
| container config { |
| description |
| "Configuration parameters relating to OSPFv2 graceful |
| restart"; |
| uses ospfv2-global-graceful-restart-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters relating to OSPFv2 graceful |
| restart"; |
| uses ospfv2-global-graceful-restart-config; |
| } |
| } |
| |
| container mpls { |
| description |
| "OSPFv2 parameters relating to MPLS"; |
| |
| container config { |
| description |
| "Configuration parameters relating to MPLS for OSPFv2"; |
| uses ospfv2-global-mpls-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters relating to MPLS for |
| OSPFv2"; |
| uses ospfv2-global-mpls-config; |
| } |
| |
| container igp-ldp-sync { |
| description |
| "OSPFv2 parameters relating to LDP/IGP synchronization"; |
| |
| container config { |
| description |
| "Configuration parameters relating to LDP/IG |
| synchronization."; |
| uses ospfv2-common-mpls-igp-ldp-sync-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state variables relating to LDP/IGP |
| synchronization"; |
| uses ospfv2-common-mpls-igp-ldp-sync-config; |
| } |
| } |
| } |
| |
| container inter-area-propagation-policies { |
| description |
| "Policies defining how inter-area propagation should be performed |
| by the OSPF instance"; |
| |
| list inter-area-propagation-policy { |
| key "src-area dst-area"; |
| description |
| "A list of connections between pairs of areas - routes are |
| propagated from the source (src) area to the destination (dst) |
| area according to the policy specified"; |
| |
| leaf src-area { |
| type leafref { |
| path "../config/src-area"; |
| } |
| description |
| "Reference to the source area"; |
| } |
| |
| leaf dst-area { |
| type leafref { |
| path "../config/dst-area"; |
| } |
| description |
| "Reference to the destination area"; |
| } |
| |
| container config { |
| description |
| "Configuration parameters relating to the inter-area |
| propagation policy"; |
| uses ospfv2-global-inter-areapp-config; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state parameters relating to the inter-area |
| propagation policy"; |
| uses ospfv2-global-inter-areapp-config; |
| } |
| } |
| } |
| } |
| } |
| } |