]>
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 | } | |
15 | import frr-route-types { | |
16 | prefix frr-route-types; | |
17 | } | |
18 | ||
8678d638 | 19 | organization "FRRouting"; |
46bd4645 RZ |
20 | contact |
21 | "FRR Users List: <mailto:frog@lists.frrouting.org> | |
22 | FRR Development List: <mailto:dev@lists.frrouting.org>"; | |
23 | description | |
24 | "This module defines a model for managing FRR eigrpd daemon."; | |
25 | ||
f22b9250 QY |
26 | revision 2019-09-09 { |
27 | description | |
28 | "Changed interface references to use | |
29 | frr-interface:interface-ref typedef"; | |
30 | } | |
46bd4645 RZ |
31 | revision 2019-06-19 { |
32 | description "Initial revision."; | |
33 | reference | |
34 | "RFC 7868: Cisco's Enhanced Interior Gateway Routing Protocol (EIGRP)."; | |
35 | } | |
36 | ||
37 | /* | |
38 | * Types specification. | |
39 | */ | |
40 | typedef autonomous-system { | |
41 | description "Administrative domain identification for a network"; | |
42 | type uint16 { | |
43 | range 1..65535; | |
44 | } | |
45 | } | |
46 | ||
47 | typedef authentication-type { | |
48 | description "Authentication types"; | |
49 | type enumeration { | |
50 | enum none { | |
51 | description "Don't authenticate"; | |
52 | value 0; | |
53 | } | |
54 | ||
55 | enum text { | |
56 | description "User defined text"; | |
57 | value 1; | |
58 | } | |
59 | ||
60 | enum md5 { | |
61 | description "MD5 algorithm"; | |
62 | value 2; | |
63 | } | |
64 | ||
9008789a | 65 | enum hmac-sha-256 { |
46bd4645 RZ |
66 | description "HMAC SHA256 algorithm"; |
67 | value 3; | |
68 | } | |
69 | } | |
70 | } | |
71 | ||
72 | /* | |
73 | * EIGRP operational data. | |
74 | */ | |
75 | container eigrpd { | |
76 | list instance { | |
77 | key "asn vrf"; | |
78 | description "EIGRP autonomous system instance"; | |
79 | ||
80 | leaf asn { | |
81 | description "Autonomous System Number"; | |
82 | type autonomous-system; | |
83 | } | |
84 | ||
85 | leaf vrf { | |
86 | description "Virtual Routing Domain name"; | |
87 | type string { | |
88 | length "0..16"; | |
89 | } | |
90 | } | |
91 | ||
92 | /* | |
93 | * Configurations. | |
94 | */ | |
95 | leaf router-id { | |
96 | description "Router identification"; | |
97 | type inet:ipv4-address; | |
98 | } | |
99 | ||
100 | leaf-list passive-interface { | |
101 | description "List of suppressed interfaces"; | |
f22b9250 | 102 | type frr-interface:interface-ref; |
46bd4645 RZ |
103 | } |
104 | ||
105 | leaf active-time { | |
5b768c94 | 106 | description "ACTIVE time limit in seconds (0 disables limit)"; |
46bd4645 RZ |
107 | type uint16 { |
108 | range "0..65535"; | |
109 | } | |
5b768c94 RZ |
110 | units seconds; |
111 | default 180; | |
46bd4645 RZ |
112 | } |
113 | ||
114 | leaf variance { | |
115 | description "Control load balance variance"; | |
116 | type uint8 { | |
117 | range "1..128"; | |
118 | } | |
119 | } | |
120 | ||
121 | leaf maximum-paths { | |
122 | description "Most number of paths to forward packets to"; | |
123 | type uint8 { | |
124 | range "1..32"; | |
125 | } | |
126 | } | |
127 | ||
128 | container metric-weights { | |
129 | description | |
130 | "Metrics and parameters for advertisement. | |
131 | ||
132 | EIGRP calculates the composite metric with the following formula: | |
133 | ||
134 | metric = 256 * ({(K1*BW) + [(K2*BW)/(256-LOAD)] + (K3*DELAY)} * | |
135 | (K5/(REL+K4))) | |
136 | ||
137 | Composite calculation: | |
138 | K5 | |
139 | metric =[(K1*Net-Throughput) + Latency)+(K6*ExtAttr)] * ------ | |
140 | K4+Rel | |
141 | ||
142 | RFC 7868 Sections 5.5 and 5.6.2.5."; | |
143 | ||
144 | leaf K1 { | |
145 | description "Bandwidth coefficient."; | |
146 | type uint8 { | |
147 | range "0..255"; | |
148 | } | |
149 | } | |
150 | ||
151 | leaf K2 { | |
152 | description "Bandwidth on load coefficient."; | |
153 | type uint8 { | |
154 | range "0..255"; | |
155 | } | |
156 | } | |
157 | ||
158 | leaf K3 { | |
159 | description "Delay or latency-based coefficient."; | |
160 | type uint8 { | |
161 | range "0..255"; | |
162 | } | |
163 | } | |
164 | ||
165 | leaf K4 { | |
166 | description "Link quality coefficient."; | |
167 | type uint8 { | |
168 | range "0..255"; | |
169 | } | |
170 | } | |
171 | ||
172 | leaf K5 { | |
173 | description "Packet loss coefficient."; | |
174 | type uint8 { | |
175 | range "0..255"; | |
176 | } | |
177 | } | |
178 | ||
179 | leaf K6 { | |
180 | description "Jitter coefficient."; | |
181 | type uint8 { | |
182 | range "0..255"; | |
183 | } | |
184 | } | |
185 | } | |
186 | ||
187 | leaf-list network { | |
188 | description "Enable EIGRP on the specific network"; | |
189 | type inet:ipv4-prefix; | |
190 | } | |
191 | ||
192 | leaf-list neighbor { | |
193 | description "Specific EIGRP neighbor"; | |
194 | type inet:ipv4-prefix; | |
195 | } | |
196 | ||
197 | list redistribute { | |
198 | description "Redistribute routes learned from other routing protocols"; | |
199 | ||
200 | key "protocol"; | |
201 | ||
202 | leaf protocol { | |
203 | description "Routing protocol"; | |
204 | type frr-route-types:frr-route-types-v4; | |
205 | must '. != "eigrp"'; | |
206 | } | |
207 | ||
208 | leaf route-map { | |
209 | description | |
210 | "Applies the conditions of the specified route-map to | |
211 | routes that are redistributed into the EIGRP routing | |
212 | instance"; | |
213 | type string { | |
214 | length "1..max"; | |
215 | } | |
216 | } | |
217 | ||
218 | container metrics { | |
219 | description "Metric for the redistributed routes"; | |
220 | ||
221 | leaf bandwidth { | |
222 | description "Bandwidth metric in Kbits per second"; | |
223 | type uint32 { | |
224 | range "1..4294967295"; | |
225 | } | |
226 | } | |
227 | ||
228 | leaf delay { | |
229 | description "Delay metric"; | |
230 | units microseconds; | |
231 | type uint32 { | |
232 | range "0..4294967295"; | |
233 | } | |
234 | } | |
235 | ||
236 | leaf reliability { | |
237 | description "Reliability metric"; | |
238 | type uint32 { | |
239 | range "0..255"; | |
240 | } | |
241 | } | |
242 | ||
243 | leaf load { | |
244 | description "Effective bandwidth usage"; | |
245 | type uint32 { | |
246 | range "1..255"; | |
247 | } | |
248 | } | |
249 | ||
250 | leaf mtu { | |
251 | description "Path Maximum Transmission Unit"; | |
252 | type uint32 { | |
253 | range "1..65535"; | |
254 | } | |
255 | } | |
256 | } | |
257 | } | |
258 | } | |
259 | } | |
260 | ||
261 | /* | |
262 | * EIGRP interface configurations. | |
263 | */ | |
264 | augment "/frr-interface:lib/frr-interface:interface" { | |
265 | container eigrp { | |
266 | description "EIGRP interface parameters"; | |
267 | ||
268 | leaf delay { | |
269 | description "Throughput delay"; | |
270 | type uint32 { | |
271 | range "1..16777215"; | |
272 | } | |
273 | default 10; | |
274 | } | |
275 | ||
276 | leaf bandwidth { | |
277 | description "Interface bandwidth value"; | |
278 | type uint32 { | |
279 | range "1..10000000"; | |
280 | } | |
281 | default 100000; | |
282 | } | |
283 | ||
284 | leaf hello-interval { | |
285 | description "Hello packet interval"; | |
286 | type uint16 { | |
287 | range "1..65535"; | |
288 | } | |
289 | units seconds; | |
290 | default 5; | |
291 | } | |
292 | ||
293 | leaf hold-time { | |
294 | description "Timeout amount to consider neighbor down"; | |
295 | type uint16 { | |
296 | range "1..65535"; | |
297 | } | |
298 | units seconds; | |
299 | default 15; | |
300 | } | |
301 | ||
302 | leaf split-horizon { | |
303 | description "Perform split horizon loop preventing technique"; | |
304 | type boolean; | |
305 | default true; | |
306 | } | |
307 | ||
308 | /* | |
309 | * Per AS configuration. | |
310 | */ | |
311 | list instance { | |
312 | description "Autonomous System specific configuration"; | |
313 | ||
314 | key "asn"; | |
315 | ||
316 | leaf asn { | |
317 | description "Autonomous System Number"; | |
318 | type autonomous-system; | |
319 | } | |
320 | ||
321 | leaf-list summarize-addresses { | |
322 | description "Peform address summarization"; | |
323 | type inet:ipv4-prefix; | |
324 | } | |
325 | ||
326 | leaf authentication { | |
327 | description "Authentication digest algorithm"; | |
328 | type authentication-type; | |
329 | default "none"; | |
330 | } | |
331 | ||
332 | leaf keychain { | |
333 | description "FRR key chain name to use with authentication"; | |
334 | type string; | |
335 | } | |
336 | } | |
337 | } | |
338 | } | |
339 | } |