]>
Commit | Line | Data |
---|---|---|
46bd4645 RZ |
1 | module frr-eigrpd { |
2 | yang-version 1.1; | |
3 | namespace "http://frrouting.org/yang/eigrpd"; | |
4 | prefix frr-eigrpd; | |
5 | ||
6 | import ietf-inet-types { | |
7 | prefix inet; | |
8 | } | |
9 | import ietf-yang-types { | |
10 | prefix yang; | |
11 | } | |
12 | import frr-interface { | |
13 | prefix frr-interface; | |
14 | } | |
806defc8 IR |
15 | import frr-vrf { |
16 | prefix frr-vrf; | |
17 | } | |
18 | import frr-route-map { | |
19 | prefix frr-route-map; | |
20 | } | |
46bd4645 RZ |
21 | import frr-route-types { |
22 | prefix frr-route-types; | |
23 | } | |
24 | ||
8678d638 | 25 | organization "FRRouting"; |
46bd4645 RZ |
26 | contact |
27 | "FRR Users List: <mailto:frog@lists.frrouting.org> | |
28 | FRR Development List: <mailto:dev@lists.frrouting.org>"; | |
29 | description | |
fe3b629a RW |
30 | "This module defines a model for managing FRR eigrpd daemon. |
31 | ||
32 | Copyright 2020 FRRouting | |
33 | ||
34 | Redistribution and use in source and binary forms, with or without | |
35 | modification, are permitted provided that the following conditions | |
36 | are met: | |
37 | ||
38 | 1. Redistributions of source code must retain the above copyright notice, | |
39 | this list of conditions and the following disclaimer. | |
40 | ||
41 | 2. Redistributions in binary form must reproduce the above copyright | |
42 | notice, this list of conditions and the following disclaimer in the | |
43 | documentation and/or other materials provided with the distribution. | |
44 | ||
45 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
46 | \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
47 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
48 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
49 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
50 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
51 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
52 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
53 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
54 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
55 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."; | |
46bd4645 | 56 | |
f22b9250 QY |
57 | revision 2019-09-09 { |
58 | description | |
59 | "Changed interface references to use | |
60 | frr-interface:interface-ref typedef"; | |
61 | } | |
46bd4645 RZ |
62 | revision 2019-06-19 { |
63 | description "Initial revision."; | |
64 | reference | |
65 | "RFC 7868: Cisco's Enhanced Interior Gateway Routing Protocol (EIGRP)."; | |
66 | } | |
67 | ||
68 | /* | |
69 | * Types specification. | |
70 | */ | |
71 | typedef autonomous-system { | |
72 | description "Administrative domain identification for a network"; | |
73 | type uint16 { | |
74 | range 1..65535; | |
75 | } | |
76 | } | |
77 | ||
78 | typedef authentication-type { | |
79 | description "Authentication types"; | |
80 | type enumeration { | |
81 | enum none { | |
82 | description "Don't authenticate"; | |
83 | value 0; | |
84 | } | |
85 | ||
86 | enum text { | |
87 | description "User defined text"; | |
88 | value 1; | |
89 | } | |
90 | ||
91 | enum md5 { | |
92 | description "MD5 algorithm"; | |
93 | value 2; | |
94 | } | |
95 | ||
9008789a | 96 | enum hmac-sha-256 { |
46bd4645 RZ |
97 | description "HMAC SHA256 algorithm"; |
98 | value 3; | |
99 | } | |
100 | } | |
101 | } | |
102 | ||
103 | /* | |
104 | * EIGRP operational data. | |
105 | */ | |
106 | container eigrpd { | |
107 | list instance { | |
108 | key "asn vrf"; | |
109 | description "EIGRP autonomous system instance"; | |
110 | ||
111 | leaf asn { | |
112 | description "Autonomous System Number"; | |
113 | type autonomous-system; | |
114 | } | |
115 | ||
116 | leaf vrf { | |
117 | description "Virtual Routing Domain name"; | |
806defc8 | 118 | type frr-vrf:vrf-ref; |
46bd4645 RZ |
119 | } |
120 | ||
121 | /* | |
122 | * Configurations. | |
123 | */ | |
124 | leaf router-id { | |
125 | description "Router identification"; | |
126 | type inet:ipv4-address; | |
127 | } | |
128 | ||
129 | leaf-list passive-interface { | |
130 | description "List of suppressed interfaces"; | |
f22b9250 | 131 | type frr-interface:interface-ref; |
46bd4645 RZ |
132 | } |
133 | ||
134 | leaf active-time { | |
5b768c94 | 135 | description "ACTIVE time limit in seconds (0 disables limit)"; |
46bd4645 RZ |
136 | type uint16 { |
137 | range "0..65535"; | |
138 | } | |
5b768c94 RZ |
139 | units seconds; |
140 | default 180; | |
46bd4645 RZ |
141 | } |
142 | ||
143 | leaf variance { | |
144 | description "Control load balance variance"; | |
145 | type uint8 { | |
146 | range "1..128"; | |
147 | } | |
148 | } | |
149 | ||
150 | leaf maximum-paths { | |
151 | description "Most number of paths to forward packets to"; | |
152 | type uint8 { | |
153 | range "1..32"; | |
154 | } | |
155 | } | |
156 | ||
157 | container metric-weights { | |
158 | description | |
159 | "Metrics and parameters for advertisement. | |
160 | ||
161 | EIGRP calculates the composite metric with the following formula: | |
162 | ||
163 | metric = 256 * ({(K1*BW) + [(K2*BW)/(256-LOAD)] + (K3*DELAY)} * | |
164 | (K5/(REL+K4))) | |
165 | ||
166 | Composite calculation: | |
167 | K5 | |
168 | metric =[(K1*Net-Throughput) + Latency)+(K6*ExtAttr)] * ------ | |
169 | K4+Rel | |
170 | ||
171 | RFC 7868 Sections 5.5 and 5.6.2.5."; | |
172 | ||
173 | leaf K1 { | |
174 | description "Bandwidth coefficient."; | |
175 | type uint8 { | |
176 | range "0..255"; | |
177 | } | |
178 | } | |
179 | ||
180 | leaf K2 { | |
181 | description "Bandwidth on load coefficient."; | |
182 | type uint8 { | |
183 | range "0..255"; | |
184 | } | |
185 | } | |
186 | ||
187 | leaf K3 { | |
188 | description "Delay or latency-based coefficient."; | |
189 | type uint8 { | |
190 | range "0..255"; | |
191 | } | |
192 | } | |
193 | ||
194 | leaf K4 { | |
195 | description "Link quality coefficient."; | |
196 | type uint8 { | |
197 | range "0..255"; | |
198 | } | |
199 | } | |
200 | ||
201 | leaf K5 { | |
202 | description "Packet loss coefficient."; | |
203 | type uint8 { | |
204 | range "0..255"; | |
205 | } | |
206 | } | |
207 | ||
208 | leaf K6 { | |
209 | description "Jitter coefficient."; | |
210 | type uint8 { | |
211 | range "0..255"; | |
212 | } | |
213 | } | |
214 | } | |
215 | ||
216 | leaf-list network { | |
217 | description "Enable EIGRP on the specific network"; | |
218 | type inet:ipv4-prefix; | |
219 | } | |
220 | ||
221 | leaf-list neighbor { | |
222 | description "Specific EIGRP neighbor"; | |
e2a56663 | 223 | type inet:ipv4-address; |
46bd4645 RZ |
224 | } |
225 | ||
226 | list redistribute { | |
227 | description "Redistribute routes learned from other routing protocols"; | |
228 | ||
229 | key "protocol"; | |
230 | ||
231 | leaf protocol { | |
232 | description "Routing protocol"; | |
233 | type frr-route-types:frr-route-types-v4; | |
234 | must '. != "eigrp"'; | |
235 | } | |
236 | ||
237 | leaf route-map { | |
238 | description | |
239 | "Applies the conditions of the specified route-map to | |
240 | routes that are redistributed into the EIGRP routing | |
241 | instance"; | |
806defc8 | 242 | type frr-route-map:route-map-ref; |
46bd4645 RZ |
243 | } |
244 | ||
245 | container metrics { | |
246 | description "Metric for the redistributed routes"; | |
247 | ||
248 | leaf bandwidth { | |
249 | description "Bandwidth metric in Kbits per second"; | |
250 | type uint32 { | |
251 | range "1..4294967295"; | |
252 | } | |
253 | } | |
254 | ||
255 | leaf delay { | |
256 | description "Delay metric"; | |
257 | units microseconds; | |
258 | type uint32 { | |
259 | range "0..4294967295"; | |
260 | } | |
261 | } | |
262 | ||
263 | leaf reliability { | |
264 | description "Reliability metric"; | |
265 | type uint32 { | |
266 | range "0..255"; | |
267 | } | |
268 | } | |
269 | ||
270 | leaf load { | |
271 | description "Effective bandwidth usage"; | |
272 | type uint32 { | |
273 | range "1..255"; | |
274 | } | |
275 | } | |
276 | ||
277 | leaf mtu { | |
278 | description "Path Maximum Transmission Unit"; | |
279 | type uint32 { | |
280 | range "1..65535"; | |
281 | } | |
282 | } | |
283 | } | |
284 | } | |
285 | } | |
286 | } | |
287 | ||
288 | /* | |
289 | * EIGRP interface configurations. | |
290 | */ | |
291 | augment "/frr-interface:lib/frr-interface:interface" { | |
292 | container eigrp { | |
293 | description "EIGRP interface parameters"; | |
294 | ||
295 | leaf delay { | |
296 | description "Throughput delay"; | |
297 | type uint32 { | |
298 | range "1..16777215"; | |
299 | } | |
300 | default 10; | |
301 | } | |
302 | ||
303 | leaf bandwidth { | |
304 | description "Interface bandwidth value"; | |
305 | type uint32 { | |
306 | range "1..10000000"; | |
307 | } | |
308 | default 100000; | |
309 | } | |
310 | ||
311 | leaf hello-interval { | |
312 | description "Hello packet interval"; | |
313 | type uint16 { | |
314 | range "1..65535"; | |
315 | } | |
316 | units seconds; | |
317 | default 5; | |
318 | } | |
319 | ||
320 | leaf hold-time { | |
321 | description "Timeout amount to consider neighbor down"; | |
322 | type uint16 { | |
323 | range "1..65535"; | |
324 | } | |
325 | units seconds; | |
326 | default 15; | |
327 | } | |
328 | ||
329 | leaf split-horizon { | |
330 | description "Perform split horizon loop preventing technique"; | |
331 | type boolean; | |
332 | default true; | |
333 | } | |
334 | ||
335 | /* | |
336 | * Per AS configuration. | |
337 | */ | |
338 | list instance { | |
339 | description "Autonomous System specific configuration"; | |
340 | ||
341 | key "asn"; | |
342 | ||
343 | leaf asn { | |
344 | description "Autonomous System Number"; | |
345 | type autonomous-system; | |
346 | } | |
347 | ||
348 | leaf-list summarize-addresses { | |
349 | description "Peform address summarization"; | |
350 | type inet:ipv4-prefix; | |
351 | } | |
352 | ||
353 | leaf authentication { | |
354 | description "Authentication digest algorithm"; | |
355 | type authentication-type; | |
356 | default "none"; | |
357 | } | |
358 | ||
359 | leaf keychain { | |
360 | description "FRR key chain name to use with authentication"; | |
361 | type string; | |
362 | } | |
363 | } | |
364 | } | |
365 | } | |
366 | } |