frr/yang/frr-eigrpd.yang

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

376 lines
9.3 KiB
YANG
Raw Normal View History

// SPDX-License-Identifier: BSD-2-Clause
module frr-eigrpd {
yang-version 1.1;
namespace "http://frrouting.org/yang/eigrpd";
prefix frr-eigrpd;
import ietf-inet-types {
prefix inet;
}
import frr-interface {
prefix frr-interface;
}
import frr-vrf {
prefix frr-vrf;
}
import frr-route-map {
prefix frr-route-map;
}
import frr-route-types {
prefix frr-route-types;
}
import frr-filter {
prefix frr-filter;
}
organization "FRRouting";
contact
"FRR Users List: <mailto:frog@lists.frrouting.org>
FRR Development List: <mailto:dev@lists.frrouting.org>";
description
"This module defines a model for managing FRR eigrpd daemon.
Copyright 2020 FRRouting
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
revision 2019-09-09 {
description
"Changed interface references to use
frr-interface:interface-ref typedef";
reference
"RFC 7868: Cisco's Enhanced Interior Gateway Routing Protocol (EIGRP).";
}
revision 2019-06-19 {
description "Initial revision.";
reference
"RFC 7868: Cisco's Enhanced Interior Gateway Routing Protocol (EIGRP).";
}
/*
* Types specification.
*/
typedef autonomous-system {
type uint16 {
range "1..65535";
}
description "Administrative domain identification for a network";
}
typedef authentication-type {
type enumeration {
enum none {
value 0;
description "Don't authenticate";
}
enum text {
value 1;
description "User defined text";
}
enum md5 {
value 2;
description "MD5 algorithm";
}
enum hmac-sha-256 {
value 3;
description "HMAC SHA256 algorithm";
}
}
description "Authentication types";
}
/*
* EIGRP operational data.
*/
container eigrpd {
description "EIGRP daemon configuration";
list instance {
key "asn vrf";
description "EIGRP autonomous system instance";
must "count(../instance[vrf =current()/vrf]) = 1";
leaf asn {
type autonomous-system;
description "Autonomous System Number";
}
leaf vrf {
type frr-vrf:vrf-ref;
description "Virtual Routing Domain name";
}
/*
* Configurations.
*/
leaf router-id {
type inet:ipv4-address;
description "Router identification";
}
leaf-list passive-interface {
type frr-interface:interface-ref;
description "List of suppressed interfaces";
}
leaf active-time {
type uint16 {
range "0..65535";
}
units seconds;
default 180;
description "ACTIVE time limit in seconds (0 disables limit)";
}
leaf variance {
type uint8 {
range "1..128";
}
description "Control load balance variance";
}
leaf maximum-paths {
type uint8 {
range "1..32";
}
description "Most number of paths to forward packets to";
}
container metric-weights {
description
"Metrics and parameters for advertisement.
EIGRP calculates the composite metric with the following formula:
metric = 256 * ({(K1*BW) + [(K2*BW)/(256-LOAD)] + (K3*DELAY)} *
(K5/(REL+K4)))
Composite calculation:
K5
metric =[(K1*Net-Throughput) + Latency)+(K6*ExtAttr)] * ------
K4+Rel
RFC 7868 Sections 5.5 and 5.6.2.5.";
leaf K1 {
type uint8 {
range "0..255";
}
description "Bandwidth coefficient.";
}
leaf K2 {
type uint8 {
range "0..255";
}
description "Bandwidth on load coefficient.";
}
leaf K3 {
type uint8 {
range "0..255";
}
description "Delay or latency-based coefficient.";
}
leaf K4 {
type uint8 {
range "0..255";
}
description "Link quality coefficient.";
}
leaf K5 {
type uint8 {
range "0..255";
}
description "Packet loss coefficient.";
}
leaf K6 {
type uint8 {
range "0..255";
}
description "Jitter coefficient.";
}
}
leaf-list network {
type inet:ipv4-prefix;
description "Enable EIGRP on the specific network";
}
leaf-list neighbor {
type inet:ipv4-address;
description "Specific EIGRP neighbor";
}
uses frr-filter:distribute-list-group;
list redistribute {
key "protocol";
description "Redistribute routes learned from other routing protocols";
leaf protocol {
type frr-route-types:frr-route-types-v4;
must '. != "eigrp"';
description "Routing protocol";
}
leaf route-map {
type frr-route-map:route-map-ref;
description
"Applies the conditions of the specified route-map to
routes that are redistributed into the EIGRP routing
instance";
}
container metrics {
description "Metric for the redistributed routes";
leaf bandwidth {
type uint32 {
range "1..4294967295";
}
description "Bandwidth metric in Kbits per second";
}
leaf delay {
type uint32 {
range "0..4294967295";
}
units microseconds;
description "Delay metric";
}
leaf reliability {
type uint32 {
range "0..255";
}
description "Reliability metric";
}
leaf load {
type uint32 {
range "1..255";
}
description "Effective bandwidth usage";
}
leaf mtu {
type uint32 {
range "1..65535";
}
description "Path Maximum Transmission Unit";
}
}
}
}
}
/*
* EIGRP interface configurations.
*/
augment "/frr-interface:lib/frr-interface:interface" {
description "Augments interface configuration with EIGRP parameters";
container eigrp {
description "EIGRP interface parameters";
leaf delay {
type uint32 {
range "1..16777215";
}
default 10;
description "Throughput delay";
}
leaf bandwidth {
type uint32 {
range "1..10000000";
}
default 100000;
description "Interface bandwidth value";
}
leaf hello-interval {
type uint16 {
range "1..65535";
}
units seconds;
default 5;
description "Hello packet interval";
}
leaf hold-time {
type uint16 {
range "1..65535";
}
units seconds;
default 15;
description "Timeout amount to consider neighbor down";
}
leaf split-horizon {
type boolean;
default true;
description "Perform split horizon loop preventing technique";
}
/*
* Per AS configuration.
*/
list instance {
key "asn";
description "Autonomous System specific configuration";
leaf asn {
type autonomous-system;
description "Autonomous System Number";
}
leaf-list summarize-addresses {
type inet:ipv4-prefix;
description "Peform address summarization";
}
leaf authentication {
type authentication-type;
default "none";
description "Authentication digest algorithm";
}
leaf keychain {
type string;
description "FRR key chain name to use with authentication";
}
}
}
}
}