YANG Data Model for the IS-IS Protocol
Extracted elements (30)
Remote LFAs are treated as an extension of LFAs: remote LFAs cannot be enabled if LFAs are not enabled. This design choice enforces the dependency relationship between the two FRR mechanisms rather than allowing independent activation.
The global 'mpls/ldp/igp-sync' container in the global configuration is intentionally left empty. Its sole purpose is to serve as an augmentation point for additional LDP IGP synchronization parameters (e.g., timers) by vendors, while per-interface activation uses the 'mpls/ldp/igp-sync' leaf.
The 'ietf-isis' YANG module augments the 'control-plane-protocol' list in the 'ietf-routing' module (RFC 8349) rather than defining a standalone module, aligning with the Network Management Datastore Architecture (NMDA) as described in RFC 8342. This design integrates IS-IS configuration within a unified routing management framework.
The module is designed per the Network Management Datastore Architecture (NMDA, RFC 8342), meaning configuration and operational state are unified in a single schema rather than split across separate '-state' modules as in the pre-NMDA pattern. This avoids the duplication problem of earlier YANG modules.
The 'ietf-isis' module imports and depends on: ietf-routing (RFC 8349), ietf-interfaces (RFC 8343), ietf-key-chain (RFC 8177), ietf-routing-types and iana-routing-types (RFC 8294), ietf-inet-types and ietf-yang-types (RFC 6991), and ietf-bfd-types (RFC 9314). Implementations must support all these base modules.
Additional YANG modules that extend IS-IS configuration MUST augment the 'ietf-isis' module rather than defining parallel structures. This ensures a consistent and extensible data model for vendor-specific IS-IS parameters.
An implementation MUST prefer a level-specific parameter over a top-level parameter. For example, if priority is 100 for level-1 and 250 at the top level, the implementation must use 100 for level-1 and 250 for level-2.
An interface-specific parameter MUST be preferred over an IS-IS global parameter. This mirrors the level-specific preference rule applied at the interface granularity.
If an implementation supports per-level configuration for a parameter not modeled with per-level containers (such as overload bit), it MUST augment the current model by adding both level-1 and level-2 containers and MUST reuse existing configuration groupings.
If global authentication is configured, an implementation SHOULD authenticate PSNPs, CSNPs, and LSPs with the supplied authentication parameters. Authentication of Hello PDUs can be activated on a per-interface basis.
The lsp-log operational state container SHOULD be implemented as a wrapping buffer. The implementation MAY optionally log LSP refreshes.
The spf-log operational state container SHOULD be implemented as a wrapping buffer, providing information about SPF events for an IS-IS instance.
Authentication is modeled as a choice within a 'authentication-type' node offering two cases: 'key-chain' (referencing RFC 8177 key-chain-ref, feature-guarded) and 'password' (a plaintext key plus an identityref for the crypto-algorithm). This applies globally and per-interface/per-level.
IP FRR support models LFA (RFC 5286) and remote LFA (RFC 7490) via a 'fast-reroute' container at both the global and interface levels. The global 'lfa' container is intentionally empty to permit augmentation; the 'fast-reroute' container may be augmented for MRTs (RFC 7812) and TI-LFA.
Multi-topology IS-IS (RFC 5120) is supported via a 'topologies' container (feature 'multi-topology') containing a list of topology instances keyed by name, which must reference an existing RIB defined in RFC 8349. Per-topology interface metrics can be configured.
The graceful-restart feature models restart configuration: 'enabled' (boolean), 'restart-interval' (timer-value-seconds16), and 'helper-enabled' (boolean), guarded by the 'graceful-restart' feature referencing RFC 8706.
The 'ietf-isis' module defines two RPC operations: 'clear-database' (resets a particular IS-IS LSDB and restarts synchronization with all neighbors) and 'clear-adjacency' (restarts a particular set of IS-IS adjacencies). Both take routing-protocol-instance-name and optional level and interface inputs.
The IETF SPF delay algorithm state is modeled under 'spf-control/ietf-spf-delay' with configurable timers (initial-delay default 50ms, short-delay default 200ms, long-delay default 5000ms, hold-down default 10000ms, time-to-learn default 500ms) and read-only current-state (quiet/short-wait/long-wait), referencing RFC 8405.
The interface container covers per-interface IS-IS configuration including: interface-type (broadcast/point-to-point), hello-padding, mesh-group-enabled, BFD integration (RFC 9314), LFA fast-reroute configuration, and operational adjacency state with event-counters and packet-counters per level.
The local-rib operational state under the IS-IS instance exposes the IS-IS internal routing table, with routes keyed by IP prefix and including next-hops (outgoing-interface and next-hop address), metric, level number, and route-tag.
The module defines 18 notifications covering the full IS-IS operational event space, including: database-overload, lsp-too-large, if-state-change, corrupted-lsp-detected, attempt-to-exceed-max-sequence, id-len-mismatch, max-area-addresses-mismatch, own-lsp-purge, sequence-number-skipped, authentication-type-failure, authentication-failure, version-skew, area-mismatch, rejected-adjacency, protocols-supported-mismatch, lsp-error-detected, adjacency-state-change, lsp-received, and lsp-generation.
The module defines a three-tier per-level configuration pattern: a top-level container (applies to both levels), a level-1 container, and a level-2 container. Parameters such as hello-interval, hello-multiplier, priority, and metric all follow this pattern.
IANA registered the 'ietf-isis' YANG module in the 'IANA YANG Module Names' registry with: Name 'ietf-isis', Namespace 'urn:ietf:params:xml:ns:yang:ietf-isis', Prefix 'isis', and Reference 'RFC 9130'.
Authentication keys configured via the 'key' leaf (password case) are stored as cleartext strings in the datastore. Operators should use the key-chain approach (RFC 8177) where possible, as key-chain implementations may provide encrypted storage. Exposure of authentication keys would allow an attacker to inject forged IS-IS PDUs.
The 'ietf-isis' YANG module defines writable data nodes that, if manipulated by unauthorized users, could disrupt IS-IS routing across a domain. Implementations must apply access control (e.g., NETCONF access control model, RFC 8341) to protect sensitive nodes such as authentication keys, overload status, and protocol enable/disable.
The adjacency state machine is defined by the 'adj-state-type' enumeration with four states: 'up' (adjacency established), 'down' (not established), 'init' (being established), and 'failed' (adjacency failed). Transitions are reported via the 'adjacency-state-change' notification.
The IETF SPF back-off delay algorithm state machine has three states: QUIET (uses initial-delay), SHORT_WAIT (uses short-delay), and LONG_WAIT (uses long-delay). Current state is exposed as a read-only 'current-state' leaf under 'spf-control/ietf-spf-delay'.
The 'lsp-id' typedef is encoded as a string matching '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9][0-9]-[0-9][0-9]', combining the system ID, pseudonode number, and fragment number (e.g., '0143.0438.AEF0.02-01').
The 'system-id' typedef is encoded as a string matching the pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}', representing a 6-octet IS-IS system identifier in dotted-hex notation (e.g., '0143.0438.AEF0').
The 'wide-metric' typedef is a uint32 with range 0..16777215, representing the wide-style IS-IS metric (RFC 5305). The legacy 'std-metric' typedef is uint8 with range 0..63 for the old-style metric (RFC 1195).