blob: 2171a5aec35a27200dea20e186da8645dd0ab735 [file] [log] [blame]
janani b2d54a362017-03-20 16:10:25 +05301module ietf-interfaces {
2
3 namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
4 prefix if;
5
6 import ietf-yang-types {
7 prefix yang;
8 }
9
10 organization
11 "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
12
13 contact
14 "WG Web: <http://tools.ietf.org/wg/netmod/>
15 WG List: <mailto:netmod@ietf.org>
16
17 WG Chair: Thomas Nadeau
18 <mailto:tnadeau@lucidvision.com>
19
20 WG Chair: Juergen Schoenwaelder
21 <mailto:j.schoenwaelder@jacobs-university.de>
22
23 Editor: Martin Bjorklund
24 <mailto:mbj@tail-f.com>";
25
26 description
27 "This module contains a collection of YANG definitions for
28 managing network interfaces.
29
30 Copyright (c) 2014 IETF Trust and the persons identified as
31 authors of the code. All rights reserved.
32
33 Redistribution and use in source and binary forms, with or
34 without modification, is permitted pursuant to, and subject
35 to the license terms contained in, the Simplified BSD License
36 set forth in Section 4.c of the IETF Trust's Legal Provisions
37 Relating to IETF Documents
38 (http://trustee.ietf.org/license-info).
39
40 This version of this YANG module is part of RFC 7223; see
41 the RFC itself for full legal notices.";
42 revision 2014-05-08 {
43 description
44 "Initial revision.";
45 reference
46 "RFC 7223: A YANG Data Model for Interface Management";
47 }
48
49 /*
50 * Typedefs
51 */
52
53 typedef interface-ref {
54 type leafref {
55 path "/if:devices/if:device/if:interfaces/if:interface/if:name";
56 }
57 description
58 "This type is used by data models that need to reference
59 configured interfaces.";
60 }
61
62 typedef interface-state-ref {
63 type leafref {
64 path "/if:devices/if:device/if:interfaces-state/if:interface/if:name";
65 }
66 description
67 "This type is used by data models that need to reference
68 the operationally present interfaces.";
69 }
70
71 /*
72 * Identities
73 */
74
75 identity interface-type {
76 description
77 "Base identity from which specific interface types are
78 derived.";
79 }
80
81 /*
82 * Features
83 */
84
85 feature arbitrary-names {
86 description
87 "This feature indicates that the device allows user-controlled
88 interfaces to be named arbitrarily.";
89 }
90 feature pre-provisioning {
91 description
92 "This feature indicates that the device supports
93 pre-provisioning of interface configuration, i.e., it is
94 possible to configure an interface whose physical interface
95 hardware is not present on the device.";
96 }
97
98 feature if-mib {
99 description
100 "This feature indicates that the device implements
101 the IF-MIB.";
102 reference
103 "RFC 2863: The Interfaces Group MIB";
104 }
105
106 /*
107 * Configuration data nodes
108 */
109 container devices {
110 list device {
111 key deviceid;
112 leaf deviceid {
113 type string;
114 }
115 container interfaces {
116 description
117 "Interface configuration parameters.";
118
119 list interface {
120 key "name";
121
122 description
123 "The list of configured interfaces on the device.
124 The operational state of an interface is available
125 in the /interfaces-state/interface list. If the
126 configuration of a system-controlled interface
127 cannot be used by the system (e.g., the interface
128 hardware present does not match the interface type),
129 then the configuration is not applied to the
130 system-controlled interface shown in the of a
131 /interfaces-state/interface list. If the configuration
132 user-controlled interface cannot be used by the system,
133 the configured interface is not instantiated in the
134 /interfaces-state/interface list.";
135
136 leaf name {
137 type string;
138 description
139 "The name of the interface.
140
141 A device MAY restrict the allowed values for
142 this leaf, possibly depending on the type of the
143 interface. For system-controlled interfaces,
144 this leaf is the device-specific name of the
145 interface. The 'config false' list
146 /interfaces-state/interface contains the
147 currently existing interfaces on the device.
148
149 If a client tries to create configuration for a
150 system-controlled interface that is not present
151 in the /interfaces-state/interface list, the
152 server MAY reject the request if the
153 implementation does not support pre-provisioning
154 of interfaces or if the name refers to an
155 interface that can never exist in the system. A
156 NETCONF server MUST reply with an rpc-error with
157 the error-tag 'invalid-value' in this case.
158
159 If the device supports pre-provisioning of
160 interface configuration, the 'pre-provisioning'
161 feature is advertised.
162
163 If the device allows arbitrarily named
164 user-controlled interfaces, the
165 'arbitrary-names' feature is advertised.
166
167 When a configured user-controlled interface is
168 created by the system, it is instantiated with
169 the same name in the /interface-state/interface
170 list.";
171 }
172
173 leaf description {
174 type string;
175 description
176 "A textual description of the interface.
177
178 A server implementation MAY map this leaf to the
179 ifAlias MIB object. Such an implementation
180 needs touse some mechanism to handle the
181 differences in sizeand characters allowed
182 between this leaf and ifAlias.The definition of
183 such a mechanism is outside the scope of this
184 document.
185
186 Since ifAlias is defined to be stored in
187 non-volatile storage, the MIB implementation
188 MUST map ifAlias to the value of 'description'
189 in the persistently stored datastore.
190
191 Specifically, if the device supports ':startup',
192 when ifAlias is read the device MUST return the
193 value of 'description' in the 'startup'
194 datastore, and when it is written, it MUST be
195 written to the 'running' and 'startup'
196 datastores. Note that it is up to the
197 implementation to decide whether to modify this
198 single leaf in 'startup' or perform an implicit
199 copy-config from 'running' to 'startup'.
200
201 If the device does not support ':startup',
202 ifAlias MUST be mapped to the 'description' leaf
203 in the 'running' datastore.";
204 reference
205 "RFC 2863: The Interfaces Group MIB - ifAlias";
206 }
207
208 leaf type {
209 type identityref {
210 base interface-type;
211 }
212 mandatory true;
213 description
214 "The type of the interface.
215
216 When an interface entry is created, a server MAY
217 initialize the type leaf with a valid value, e.g.,
218 if it is possible to derive the type from the name
219 of the interface.
220
221 If a client tries to set the type of an
222 interface to a value that can never be used by
223 the system, e.g., if the type is not supported
224 or if the type does not match the name of the
225 interface, the server MUST reject the request. A
226 NETCONF server MUST reply with an rpc-error with
227 the error-tag 'invalid-value' in this case.";
228 reference
229 "RFC 2863: The Interfaces Group MIB - ifType";
230 }
231
232 leaf enabled {
233 type boolean;
234 default "true";
235 description
236 "This leaf contains the configured, desired state
237 of the interface.
238
239 Systems that implement the IF-MIB use the value
240 of this leaf in the 'running' datastore to set
241 IF-MIB.ifAdminStatus to 'up' or 'down' after an
242 ifEntry has been initialized, as described in
243 RFC 2863. Changes in this leaf in the 'running'
244 datastore are reflected in ifAdminStatus, but if
245 ifAdminStatus is changed over SNMP, this leaf is
246 not affected.";
247 reference
248 "RFC 2863: The Interfaces Group MIB -
249 ifAdminStatus";
250 }
251
252 leaf link-up-down-trap-enable {
253 if-feature if-mib;
254 type enumeration {
255 enum enabled {
256 value 1;
257 }
258 enum disabled {
259 value 2;
260 }
261 }
262 description
263 "Controls whether linkUp/linkDown SNMP
264 notifications should be generated for this
265 interface.
266
267 If this node is not configured, the value 'enabled'
268 is operationally used by the server for
269 interfaces that do not operate on top of any
270 other interface (i.e., there are no
271 'lower-layer-if' entries), and 'disabled'
272 otherwise.";
273 reference
274 "RFC 2863: The Interfaces Group MIB -
275 ifLinkUpDownTrapEnable";
276 }
277 }
278 }
279 /*
280 * Operational state data nodes
281 */
282
283 container interfaces-state {
284 config false;
285 description
286 "Data nodes for the operational state of interfaces.";
287
288 list interface {
289 key "name";
290 description
291 "The list of interfaces on the device.
292
293 System-controlled interfaces created by the system are
294 always present in this list, whether they are configured or
295 not.";
296
297 leaf name {
298 type string;
299 description
300 "The name of the interface.
301
302 A server implementation MAY map this leaf to the ifName
303 MIB object. Such an implementation needs to use some
304 mechanism to handle the differences in size and characters
305 allowed between this leaf and ifName. The definition of
306 such a mechanism is outside the scope of this document.";
307 reference
308 "RFC 2863: The Interfaces Group MIB - ifName";
309 }
310
311 leaf type {
312 type identityref {
313 base interface-type;
314 }
315 mandatory true;
316 description
317 "The type of the interface.";
318 reference
319 "RFC 2863: The Interfaces Group MIB - ifType";
320 }
321
322 leaf admin-status {
323 if-feature if-mib;
324 type enumeration {
325 enum up {
326 value 1;
327 description
328 "Ready to pass packets.";
329 }
330 enum down {
331 value 2;
332 description
333 "Not ready to pass packets and not in some test mode.";
334 }
335 enum testing {
336 value 3;
337 description
338 "In some test mode.";
339 }
340 }
341 mandatory true;
342 description
343 "The desired state of the interface.
344
345 This leaf has the same read semantics as ifAdminStatus.";
346 reference
347 "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
348 }
349
350 leaf oper-status {
351 type enumeration {
352 enum up {
353 value 1;
354 description
355 "Ready to pass packets.";
356 }
357 enum down {
358 value 2;
359 description
360 "The interface does not pass any packets.";
361 }
362 enum testing {
363 value 3;
364 description
365 "In some test mode. No operational packets can
366 be passed.";
367 }
368 enum unknown {
369 value 4;
370 description
371 "Status cannot be determined for some reason.";
372 }
373 enum dormant {
374 value 5;
375 description
376 "Waiting for some external event.";
377 }
378 enum not-present {
379 value 6;
380 description
381 "Some component (typically hardware) is missing.";
382 }
383 enum lower-layer-down {
384 value 7;
385 description
386 "Down due to state of lower-layer interface(s).";
387 }
388 }
389 mandatory true;
390 description
391 "The current operational state of the interface.
392
393 This leaf has the same semantics as ifOperStatus.";
394 reference
395 "RFC 2863: The Interfaces Group MIB - ifOperStatus";
396 }
397
398 leaf last-change {
399 type yang:date-and-time;
400 description
401 "The time the interface entered its current operational
402 state. If the current state was entered prior to the
403 last re-initialization of the local network management
404 subsystem, then this node is not present.";
405 reference
406 "RFC 2863: The Interfaces Group MIB - ifLastChange";
407 }
408
409 leaf if-index {
410 if-feature if-mib;
411 type int32 {
412 range "1..2147483647";
413 }
414 mandatory true;
415 description
416 "The ifIndex value for the ifEntry represented by this
417 interface.";
418 reference
419 "RFC 2863: The Interfaces Group MIB - ifIndex";
420 }
421
422 leaf phys-address {
423 type yang:phys-address;
424 description
425 "The interface's address at its protocol sub-layer. For
426 example, for an 802.x interface, this object normally
427 contains a Media Access Control (MAC) address. The
428 interface's media-specific modules must define the bit
429
430 and byte ordering and the format of the value of this
431 object. For interfaces that do not have such an address
432 (e.g., a serial line), this node is not present.";
433 reference
434 "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
435 }
436
437 leaf-list higher-layer-if {
438 type interface-state-ref;
439 description
440 "A list of references to interfaces layered on top of this
441 interface.";
442 reference
443 "RFC 2863: The Interfaces Group MIB - ifStackTable";
444 }
445
446 leaf-list lower-layer-if {
447 type interface-state-ref;
448 description
449 "A list of references to interfaces layered underneath this
450 interface.";
451 reference
452 "RFC 2863: The Interfaces Group MIB - ifStackTable";
453 }
454
455 leaf speed {
456 type yang:gauge64;
457 units "bits/second";
458 description
459 "An estimate of the interface's current bandwidth in bits
460 per second. For interfaces that do not vary in
461 bandwidth or for those where no accurate estimation can
462 be made, this node should contain the nominal bandwidth.
463 For interfaces that have no concept of bandwidth, this
464 node is not present.";
465 reference
466 "RFC 2863: The Interfaces Group MIB -
467 ifSpeed, ifHighSpeed";
468 }
469 container statistics {
470 description
471 "A collection of interface-related statistics objects.";
472
473 leaf discontinuity-time {
474 type yang:date-and-time;
475 mandatory true;
476 description
477 "The time on the most recent occasion at which any one or
478 more of this interface's counters suffered a
479 discontinuity. If no such discontinuities have occurred
480 since the last re-initialization of the local management
481 subsystem, then this node contains the time the local
482 management subsystem re-initialized itself.";
483 }
484
485 leaf in-octets {
486 type yang:counter64;
487 description
488 "The total number of octets received on the interface,
489 including framing characters.
490
491 Discontinuities in the value of this counter can occur
492 at re-initialization of the management system, and at
493 other times as indicated by the value of
494 'discontinuity-time'.";
495 reference
496 "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
497 }
498
499 leaf in-unicast-pkts {
500 type yang:counter64;
501 description
502 "The number of packets, delivered by this sub-layer to a
503 higher (sub-)layer, that were not addressed to a
504 multicast or broadcast address at this sub-layer.
505
506 Discontinuities in the value of this counter can occur
507 at re-initialization of the management system, and at
508 other times as indicated by the value of
509 'discontinuity-time'.";
510 reference
511 "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
512 }
513 leaf in-broadcast-pkts {
514 type yang:counter64;
515 description
516 "The number of packets, delivered by this sub-layer to a
517 higher (sub-)layer, that were addressed to a broadcast
518 address at this sub-layer.
519
520 Discontinuities in the value of this counter can occur
521 at re-initialization of the management system, and at
522 other times as indicated by the value of
523 'discontinuity-time'.";
524 reference
525 "RFC 2863: The Interfaces Group MIB -
526 ifHCInBroadcastPkts";
527 }
528
529 leaf in-multicast-pkts {
530 type yang:counter64;
531 description
532 "The number of packets, delivered by this sub-layer to a
533 higher (sub-)layer, that were addressed to a multicast
534 address at this sub-layer. For a MAC-layer protocol,
535 this includes both Group and Functional addresses.
536
537 Discontinuities in the value of this counter can occur
538 at re-initialization of the management system, and at
539 other times as indicated by the value of
540 'discontinuity-time'.";
541 reference
542 "RFC 2863: The Interfaces Group MIB -
543 ifHCInMulticastPkts";
544 }
545
546 leaf in-discards {
547 type yang:counter32;
548 description
549 "The number of inbound packets that were chosen to be
550 discarded even though no errors had been detected to
551 prevent their being deliverable to a higher-layer
552 protocol. One possible reason for discarding such a
553 packet could be to free up buffer space.
554
555 Discontinuities in the value of this counter can occur
556 at re-initialization of the management system, and at
557 other times as indicated by the value of
558 'discontinuity-time'.";
559 reference
560 "RFC 2863: The Interfaces Group MIB - ifInDiscards";
561 }
562
563 leaf in-errors {
564 type yang:counter32;
565 description
566 "For packet-oriented interfaces, the number of inbound
567 packets that contained errors preventing them from being
568 deliverable to a higher-layer protocol. For character-
569 oriented or fixed-length interfaces, the number of
570 inbound transmission units that contained errors
571 preventing them from being deliverable to a higher-layer
572 protocol.
573
574 Discontinuities in the value of this counter can occur
575 at re-initialization of the management system, and at
576 other times as indicated by the value of
577 'discontinuity-time'.";
578 reference
579 "RFC 2863: The Interfaces Group MIB - ifInErrors";
580 }
581
582 leaf in-unknown-protos {
583 type yang:counter32;
584 description
585 "For packet-oriented interfaces, the number of packets
586 received via the interface that were discarded because
587 of an unknown or unsupported protocol. For
588 character-oriented or fixed-length interfaces that
589 support protocol multiplexing, the number of
590 transmission units received via the interface that were
591 discarded because of an unknown or unsupported protocol.
592 For any interface that does not support protocol
593 multiplexing, this counter is not present.
594
595 Discontinuities in the value of this counter can occur
596 at re-initialization of the management system, and at
597 other times as indicated by the value of
598 'discontinuity-time'.";
599 reference
600 "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
601 }
602 leaf out-octets {
603 type yang:counter64;
604 description
605 "The total number of octets transmitted out of the
606 interface, including framing characters.
607
608 Discontinuities in the value of this counter can occur
609 at re-initialization of the management system, and at
610 other times as indicated by the value of
611 'discontinuity-time'.";
612 reference
613 "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
614 }
615
616 leaf out-unicast-pkts {
617 type yang:counter64;
618 description
619 "The total number of packets that higher-level protocols
620 requested be transmitted, and that were not addressed
621 to a multicast or broadcast address at this sub-layer,
622 including those that were discarded or not sent.
623
624 Discontinuities in the value of this counter can occur
625 at re-initialization of the management system, and at
626 other times as indicated by the value of
627 'discontinuity-time'.";
628 reference
629 "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
630 }
631
632 leaf out-broadcast-pkts {
633 type yang:counter64;
634 description
635 "The total number of packets that higher-level protocols
636 requested be transmitted, and that were addressed to a
637 broadcast address at this sub-layer, including those
638 that were discarded or not sent.
639
640 Discontinuities in the value of this counter can occur
641 at re-initialization of the management system, and at
642 other times as indicated by the value of
643 'discontinuity-time'.";
644 reference
645 "RFC 2863: The Interfaces Group MIB -
646 ifHCOutBroadcastPkts";
647 }
648 leaf out-multicast-pkts {
649 type yang:counter64;
650 description
651 "The total number of packets that higher-level protocols
652 requested be transmitted, and that were addressed to a
653 multicast address at this sub-layer, including those
654 that were discarded or not sent. For a MAC-layer
655 protocol, this includes both Group and Functional
656 addresses.
657
658 Discontinuities in the value of this counter can occur
659 at re-initialization of the management system, and at
660 other times as indicated by the value of
661 'discontinuity-time'.";
662 reference
663 "RFC 2863: The Interfaces Group MIB -
664 ifHCOutMulticastPkts";
665 }
666
667 leaf out-discards {
668 type yang:counter32;
669 description
670 "The number of outbound packets that were chosen to be
671 discarded even though no errors had been detected to
672 prevent their being transmitted. One possible reason
673 for discarding such a packet could be to free up buffer
674 space.
675
676 Discontinuities in the value of this counter can occur
677 at re-initialization of the management system, and at
678 other times as indicated by the value of
679 'discontinuity-time'.";
680 reference
681 "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
682 }
683
684 leaf out-errors {
685 type yang:counter32;
686 description
687 "For packet-oriented interfaces, the number of outbound
688 packets that could not be transmitted because of errors.
689 For character-oriented or fixed-length interfaces, the
690 number of outbound transmission units that could not be
691 transmitted because of errors.
692 Discontinuities in the value of this counter can occur
693 at re-initialization of the management system, and at
694 other times as indicated by the value of
695 'discontinuity-time'.";
696 reference
697 "RFC 2863: The Interfaces Group MIB - ifOutErrors";
698 }
699 }
700 }
701 }
702 }
703 }
704 }