draft-ietf-netmod-interfaces-cfg-05.txt | draft-ietf-netmod-interfaces-cfg-06.txt | |||
---|---|---|---|---|
Network Working Group M. Bjorklund | Network Working Group M. Bjorklund | |||
Internet-Draft Tail-f Systems | Internet-Draft Tail-f Systems | |||
Intended status: Standards Track July 14, 2012 | Intended status: Standards Track September 5, 2012 | |||
Expires: January 15, 2013 | Expires: March 9, 2013 | |||
A YANG Data Model for Interface Configuration | A YANG Data Model for Interface Management | |||
draft-ietf-netmod-interfaces-cfg-05 | draft-ietf-netmod-interfaces-cfg-06 | |||
Abstract | Abstract | |||
This document defines a YANG data model for the configuration of | This document defines a YANG data model for the management of network | |||
network interfaces. It is expected that interface type specific | interfaces. It is expected that interface type specific data models | |||
configuration data models augment the generic interfaces data model | augment the generic interfaces data model defined in this document. | |||
defined in this document. | ||||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 15, 2013. | This Internet-Draft will expire on March 9, 2013. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2012 IETF Trust and the persons identified as the | Copyright (c) 2012 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 15 | skipping to change at page 2, line 15 | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Interfaces Data Model . . . . . . . . . . . . . . . . . . . . 5 | 3. Interfaces Data Model . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1. The interface List . . . . . . . . . . . . . . . . . . . . 5 | 3.1. The interface List . . . . . . . . . . . . . . . . . . . . 5 | |||
3.2. Interface References . . . . . . . . . . . . . . . . . . . 6 | 3.2. Interface References . . . . . . . . . . . . . . . . . . . 6 | |||
3.3. Interface Layering . . . . . . . . . . . . . . . . . . . . 6 | 3.3. Interface Layering . . . . . . . . . . . . . . . . . . . . 6 | |||
4. Relationship to the IF-MIB . . . . . . . . . . . . . . . . . . 8 | 4. Relationship to the IF-MIB . . . . . . . . . . . . . . . . . . 8 | |||
5. Interfaces YANG Module . . . . . . . . . . . . . . . . . . . . 9 | 5. Interfaces YANG Module . . . . . . . . . . . . . . . . . . . . 10 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 17 | 9.1. Normative References . . . . . . . . . . . . . . . . . . . 26 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . . 17 | 9.2. Informative References . . . . . . . . . . . . . . . . . . 26 | |||
Appendix A. Example: Ethernet Interface Module . . . . . . . . . 18 | Appendix A. Example: Ethernet Interface Module . . . . . . . . . 27 | |||
Appendix B. Example: Ethernet Bonding Interface Module . . . . . 20 | Appendix B. Example: Ethernet Bonding Interface Module . . . . . 29 | |||
Appendix C. Example: VLAN Interface Module . . . . . . . . . . . 21 | Appendix C. Example: VLAN Interface Module . . . . . . . . . . . 30 | |||
Appendix D. Example: NETCONF <get> reply . . . . . . . . . . . . 22 | Appendix D. Example: NETCONF <get> reply . . . . . . . . . . . . 31 | |||
Appendix E. ChangeLog . . . . . . . . . . . . . . . . . . . . . . 23 | Appendix E. ChangeLog . . . . . . . . . . . . . . . . . . . . . . 32 | |||
E.1. Version -05 . . . . . . . . . . . . . . . . . . . . . . . 23 | E.1. Version -06 . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
E.2. Version -04 . . . . . . . . . . . . . . . . . . . . . . . 23 | E.2. Version -05 . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
E.3. Version -03 . . . . . . . . . . . . . . . . . . . . . . . 23 | E.3. Version -04 . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
E.4. Version -02 . . . . . . . . . . . . . . . . . . . . . . . 23 | E.4. Version -03 . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
E.5. Version -01 . . . . . . . . . . . . . . . . . . . . . . . 23 | E.5. Version -02 . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 24 | E.6. Version -01 . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
1. Introduction | 1. Introduction | |||
This document defines a YANG [RFC6020] data model for the | This document defines a YANG [RFC6020] data model for the management | |||
configuration of network interfaces. It is expected that interface | of network interfaces. It is expected that interface type specific | |||
type specific configuration data models augment the generic | data models augment the generic interfaces data model defined in this | |||
interfaces data model defined in this document. | document. | |||
Network interfaces are central to the configuration of many Internet | Network interfaces are central to the management of many Internet | |||
protocols. Thus, it is important to establish a common data model | protocols. Thus, it is important to establish a common data model | |||
for how interfaces are identified and configured. | for how interfaces are identified and configured. | |||
1.1. Terminology | 1.1. Terminology | |||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14, [RFC2119]. | 14, [RFC2119]. | |||
skipping to change at page 5, line 9 | skipping to change at page 5, line 9 | |||
configuration, i.e., it should be possible to configure an | configuration, i.e., it should be possible to configure an | |||
interface whose physical interface hardware is not present on the | interface whose physical interface hardware is not present on the | |||
device. It is recommended that devices that support dynamic | device. It is recommended that devices that support dynamic | |||
addition and removal of physical interfaces also support pre- | addition and removal of physical interfaces also support pre- | |||
provisioning. | provisioning. | |||
3. Interfaces Data Model | 3. Interfaces Data Model | |||
The data model in the module "ietf-interfaces" has the following | The data model in the module "ietf-interfaces" has the following | |||
structure, where square brackets are used to enclose a list's keys, | structure, where square brackets are used to enclose a list's keys, | |||
and "?" means that the leaf is optional: | "?" means that the leaf is optional, and "*" denotes a leaf-list: | |||
+--rw interfaces | +--rw interfaces | |||
+--rw interface [name] | +--rw interface [name] | |||
+--rw name string | +--rw name string | |||
+--rw description? string | +--rw description? string | |||
+--rw type ianaift:iana-if-type | +--rw type ianaift:iana-if-type | |||
+--rw location? string | +--rw location? string | |||
+--rw enabled? boolean | +--rw enabled? boolean | |||
+--ro if-index int32 | +--ro oper-status? enumeration | |||
+--ro last-change? yang:date-and-time | ||||
+--ro if-index? int32 | ||||
+--rw mtu? uint32 | +--rw mtu? uint32 | |||
+--rw link-up-down-trap-enable? enumeration | +--rw link-up-down-trap-enable? enumeration | |||
+--ro phys-address? yang:phys-address | ||||
+--ro higher-layer-if* interface-ref | ||||
+--ro lower-layer-if* interface-ref | ||||
+--rw speed? yang:gauge64 | ||||
+--ro statistics | ||||
+--ro discontinuity-time? yang:date-and-time | ||||
+--ro in-octets? yang:counter64 | ||||
+--ro in-unicast-pkts? yang:counter64 | ||||
+--ro in-broadcast-pkts? yang:counter64 | ||||
+--ro in-multicast-pkts? yang:counter64 | ||||
+--ro in-discards? yang:counter32 | ||||
+--ro in-errors? yang:counter32 | ||||
+--ro in-unknown-protos? yang:counter32 | ||||
+--ro out-octets? yang:counter64 | ||||
+--ro out-unicast-pkts? yang:counter64 | ||||
+--ro out-broadcast-pkts? yang:counter64 | ||||
+--ro out-multicast-pkts? yang:counter64 | ||||
+--ro out-discards? yang:counter32 | ||||
+--ro out-errors? yang:counter32 | ||||
This module defines one YANG feature: | This module defines one YANG feature: | |||
snmp-if-mib: Indicates that the server implements IF-MIB [RFC2863]. | if-mib: Indicates that the server implements IF-MIB [RFC2863]. | |||
3.1. The interface List | 3.1. The interface List | |||
The data model for interface configuration presented in this document | The data model for interfaces presented in this document uses a flat | |||
uses a flat list of interfaces. Each interface in the list is | list of interfaces. Each interface in the list is identified by its | |||
identified by its name. Furthermore, each interface has a mandatory | name. Furthermore, each interface has a mandatory "type" leaf, and a | |||
"type" leaf, and a "location" leaf. The combination of "type" and | "location" leaf. The combination of "type" and "location" is unique | |||
"location" is unique within the interface list. | within the interface list. | |||
It is expected that interface type specific data models augment the | It is expected that interface type specific data models augment the | |||
interface list, and use the "type" leaf to make the augmentation | interface list, and use the "type" leaf to make the augmentation | |||
conditional. | conditional. | |||
As an example of such an interface type specific augmentation, | As an example of such an interface type specific augmentation, | |||
consider this YANG snippet. For a more complete example, see | consider this YANG snippet. For a more complete example, see | |||
Appendix A. | Appendix A. | |||
import interfaces { | import interfaces { | |||
skipping to change at page 8, line 5 | skipping to change at page 7, line 24 | |||
type if:interface-ref; | type if:interface-ref; | |||
must "/if:interfaces/if:interface[if:name = current()]" | must "/if:interfaces/if:interface[if:name = current()]" | |||
+ "/if:type = 'ethernetCsmacd'" { | + "/if:type = 'ethernetCsmacd'" { | |||
description | description | |||
"The type of a slave interface must be ethernet"; | "The type of a slave interface must be ethernet"; | |||
} | } | |||
} | } | |||
// other bonding config params, failover times etc. | // other bonding config params, failover times etc. | |||
} | } | |||
There are two state data leaf-list nodes "higher-layer-if" and | ||||
"lower-layer-if" defined, that contains a read-only view of the | ||||
interface layering hierarchy. | ||||
4. Relationship to the IF-MIB | 4. Relationship to the IF-MIB | |||
If the device implements IF-MIB [RFC2863], each entry in the | If the device implements IF-MIB [RFC2863], each entry in the | |||
"interface" list is typically mapped to one ifEntry. The "if-index" | "interface" list is typically mapped to one ifEntry. The "if-index" | |||
leaf contains the value of the corresponding ifEntry's ifIndex. | leaf contains the value of the corresponding ifEntry's ifIndex. | |||
In most cases, the "name" of an "interface" entry is mapped to | In most cases, the "name" of an "interface" entry is mapped to | |||
ifName. ifName is defined as an DisplayString [RFC2579] which uses a | ifName. ifName is defined as an DisplayString [RFC2579] which uses a | |||
7-bit ASCII character set. An implementation MAY restrict the | 7-bit ASCII character set. An implementation MAY restrict the | |||
allowed values for "name" to match the restrictions of ifName. | allowed values for "name" to match the restrictions of ifName. | |||
skipping to change at page 8, line 28 | skipping to change at page 9, line 5 | |||
of these interfaces using the "interface" list, cannot have a 1-1 | of these interfaces using the "interface" list, cannot have a 1-1 | |||
mapping between the "name" leaf and ifName. | mapping between the "name" leaf and ifName. | |||
The IF-MIB also defines the writable object ifPromiscuousMode. Since | The IF-MIB also defines the writable object ifPromiscuousMode. Since | |||
this object typically is not a configuration object, it is not mapped | this object typically is not a configuration object, it is not mapped | |||
to the "ietf-interfaces" module. | to the "ietf-interfaces" module. | |||
The following table lists the YANG data nodes with corresponding | The following table lists the YANG data nodes with corresponding | |||
objects in the IF-MIB. | objects in the IF-MIB. | |||
+--------------------------+------------------------+ | +----------------------------------+------------------------+ | |||
| YANG data node | IF-MIB object | | | YANG data node | IF-MIB object | | |||
+--------------------------+------------------------+ | +----------------------------------+------------------------+ | |||
| interface | ifEntry | | | interface | ifEntry | | |||
| name | ifName | | | name | ifName | | |||
| description | ifAlias | | | description | ifAlias | | |||
| type | ifType | | | type | ifType | | |||
| enabled | ifAdminStatus | | | enabled | ifAdminStatus | | |||
| if-index | ifIndex | | | oper-status | ifOperStatus | | |||
| mtu | ifMtu | | | last-change | ifLastChange | | |||
| link-up-down-trap-enable | ifLinkUpDownTrapEnable | | | if-index | ifIndex | | |||
+--------------------------+------------------------+ | | mtu | ifMtu | | |||
| link-up-down-trap-enable | ifLinkUpDownTrapEnable | | ||||
| phys-address | ifPhysAddress | | ||||
| higher-layer-if / lower-layer-if | ifStackTable | | ||||
| speed | ifSpeed | | ||||
| in-octets | ifHCInOctets | | ||||
| in-unicast-pkts | ifHCInUcastPkts | | ||||
| in-broadcast-pkts | ifHCInBroadcastPkts | | ||||
| in-multicast-pkts | ifHCInMulticastPkts | | ||||
| in-discards | ifInDiscards | | ||||
| in-errors | ifInErrors | | ||||
| in-unknown-protos | ifInUnknownProtos | | ||||
| out-octets | ifHCOutOctets | | ||||
| out-unicast-pkts | ifHCOutUcastPkts | | ||||
| out-broadcast-pkts | ifHCOutBroadcastPkts | | ||||
| out-multicast-pkts | ifHCOutMulticastPkts | | ||||
| out-discards | ifOutDiscards | | ||||
| out-errors | ifOutErrors | | ||||
+----------------------------------+------------------------+ | ||||
Mapping of YANG data nodes to IF-MIB objects | Mapping of YANG data nodes to IF-MIB objects | |||
5. Interfaces YANG Module | 5. Interfaces YANG Module | |||
This YANG module imports a typedef from | This YANG module imports a typedef from | |||
[I-D.ietf-netmod-iana-if-type]. | [I-D.ietf-netmod-iana-if-type]. | |||
RFC Ed.: update the date below with the date of RFC publication and | RFC Ed.: update the date below with the date of RFC publication and | |||
remove this note. | remove this note. | |||
<CODE BEGINS> file "ietf-interfaces@2012-07-14.yang" | <CODE BEGINS> file "ietf-interfaces@2012-09-05.yang" | |||
module ietf-interfaces { | module ietf-interfaces { | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; | namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; | |||
prefix if; | prefix if; | |||
import ietf-yang-types { | ||||
prefix yang; | ||||
} | ||||
import iana-if-type { | import iana-if-type { | |||
prefix ianaift; | prefix ianaift; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
skipping to change at page 9, line 42 | skipping to change at page 10, line 45 | |||
<mailto:david.kessens@nsn.com> | <mailto:david.kessens@nsn.com> | |||
WG Chair: Juergen Schoenwaelder | WG Chair: Juergen Schoenwaelder | |||
<mailto:j.schoenwaelder@jacobs-university.de> | <mailto:j.schoenwaelder@jacobs-university.de> | |||
Editor: Martin Bjorklund | Editor: Martin Bjorklund | |||
<mailto:mbj@tail-f.com>"; | <mailto:mbj@tail-f.com>"; | |||
description | description | |||
"This module contains a collection of YANG definitions for | "This module contains a collection of YANG definitions for | |||
configuring network interfaces. | managing network interfaces. | |||
Copyright (c) 2012 IETF Trust and the persons identified as | Copyright (c) 2012 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
skipping to change at page 10, line 4 | skipping to change at page 11, line 7 | |||
Copyright (c) 2012 IETF Trust and the persons identified as | Copyright (c) 2012 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
// note. | // note. | |||
// RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision 2012-07-14 { | revision 2012-09-05 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Interface Configuration"; | "RFC XXXX: A YANG Data Model for Interface Management"; | |||
} | } | |||
/* Typedefs */ | /* Typedefs */ | |||
typedef interface-ref { | typedef interface-ref { | |||
type leafref { | type leafref { | |||
path "/if:interfaces/if:interface/if:name"; | path "/if:interfaces/if:interface/if:name"; | |||
} | } | |||
description | description | |||
"This type is used by data models that need to reference | "This type is used by data models that need to reference | |||
interfaces."; | interfaces."; | |||
} | } | |||
/* Features */ | /* Features */ | |||
feature snmp-if-mib { | feature if-mib { | |||
description | description | |||
"This feature indicates that the server implements IF-MIB."; | "This feature indicates that the server implements IF-MIB."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB"; | "RFC 2863: The Interfaces Group MIB"; | |||
} | } | |||
/* Data nodes */ | /* Data nodes */ | |||
container interfaces { | container interfaces { | |||
description | description | |||
skipping to change at page 10, line 48 | skipping to change at page 12, line 4 | |||
/* Data nodes */ | /* Data nodes */ | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Interface parameters."; | "Interface parameters."; | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
unique "type location"; | unique "type location"; | |||
description | description | |||
"The list of configured interfaces on the device."; | "The list of interfaces on the device."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"An arbitrary name for the interface. | "An arbitrary name for the interface. | |||
A device MAY restrict the allowed values for this leaf, | A device MAY restrict the allowed values for this leaf, | |||
possibly depending on the type and location. | possibly depending on the type and location. | |||
For example, if a device has a single array of 8 ethernet | For example, if a device has a single array of 8 ethernet | |||
skipping to change at page 12, line 5 | skipping to change at page 13, line 9 | |||
leaf type { | leaf type { | |||
type ianaift:iana-if-type; | type ianaift:iana-if-type; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The type of the interface. | "The type of the interface. | |||
When an interface entry is created, a server MAY | When an interface entry is created, a server MAY | |||
initialize the type leaf with a valid value, e.g., if it | initialize the type leaf with a valid value, e.g., if it | |||
is possible to derive the type from the name of the | is possible to derive the type from the name of the | |||
interface."; | interface."; | |||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifType"; | ||||
} | } | |||
leaf location { | leaf location { | |||
type string; | type string; | |||
description | description | |||
"The device-specific location of the interface of a | "The device-specific location of the interface of a | |||
particular type. The format of the location string | particular type. The format of the location string | |||
depends on the interface type and the device. | depends on the interface type and the device. | |||
If the interface's type represents a physical interface, | If the interface's type represents a physical interface, | |||
skipping to change at page 12, line 43 | skipping to change at page 13, line 49 | |||
This leaf contains the configured, desired state of the | This leaf contains the configured, desired state of the | |||
interface. Systems that implement the IF-MIB use the | interface. Systems that implement the IF-MIB use the | |||
value of this leaf to set IF-MIB.ifAdminStatus to 'up' or | value of this leaf to set IF-MIB.ifAdminStatus to 'up' or | |||
'down' after an ifEntry has been initialized, as described | 'down' after an ifEntry has been initialized, as described | |||
in RFC 2863."; | in RFC 2863."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifAdminStatus"; | "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; | |||
} | } | |||
leaf oper-status { | ||||
type enumeration { | ||||
enum up { | ||||
value 1; | ||||
description | ||||
"Ready to pass packets."; | ||||
} | ||||
enum down { | ||||
value 2; | ||||
} | ||||
enum testing { | ||||
value 3; | ||||
description | ||||
"In some test mode. No operational packets can | ||||
be passed."; | ||||
} | ||||
enum unknown { | ||||
value 4; | ||||
description | ||||
"Status can not be determined | ||||
for some reason."; | ||||
} | ||||
enum dormant { | ||||
value 5; | ||||
} | ||||
enum not-present { | ||||
value 6; | ||||
description | ||||
"Some component is missing."; | ||||
} | ||||
enum lower-layer-down { | ||||
value 7; | ||||
description | ||||
"Down due to state of lower-layer | ||||
interface(s)."; | ||||
} | ||||
} | ||||
config false; | ||||
description | ||||
"The current operational state of the interface. | ||||
If 'enabled' is 'false' then 'oper-status' | ||||
should be 'down'. If 'enabled' is changed to 'true' | ||||
then 'oper-status' should change to 'up' if the interface | ||||
is ready to transmit and receive network traffic; it | ||||
should change to 'dormant' if the interface is waiting for | ||||
external actions (such as a serial line waiting for an | ||||
incoming connection); it should remain in the 'down' state | ||||
if and only if there is a fault that prevents it from | ||||
going to the 'up' state; it should remain in the | ||||
'not-present' state if the interface has missing | ||||
(typically, hardware) components."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifOperStatus"; | ||||
} | ||||
leaf last-change { | ||||
type yang:date-and-time; | ||||
config false; | ||||
description | ||||
"The time the interface entered its current operational | ||||
state. If the current state was entered prior to the | ||||
last re-initialization of the local network management | ||||
subsystem, then this node is not present."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifLastChange"; | ||||
} | ||||
leaf if-index { | leaf if-index { | |||
if-feature snmp-if-mib; | if-feature if-mib; | |||
type int32 { | type int32 { | |||
range "1..2147483647"; | range "1..2147483647"; | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"The ifIndex value for the ifEntry represented by this | "The ifIndex value for the ifEntry represented by this | |||
interface. | interface. | |||
Media-specific modules must specify how the type is | Media-specific modules must specify how the type is | |||
mapped to entries in the ifTable."; | mapped to entries in the ifTable."; | |||
skipping to change at page 13, line 20 | skipping to change at page 15, line 46 | |||
leaf mtu { | leaf mtu { | |||
type uint32; | type uint32; | |||
description | description | |||
"The size, in octets, of the largest packet that the | "The size, in octets, of the largest packet that the | |||
interface can send and receive. This node might not be | interface can send and receive. This node might not be | |||
valid for all interface types. | valid for all interface types. | |||
Media-specific modules must specify any restrictions on | Media-specific modules must specify any restrictions on | |||
the mtu for their interface type."; | the mtu for their interface type."; | |||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifMtu"; | ||||
} | } | |||
leaf link-up-down-trap-enable { | leaf link-up-down-trap-enable { | |||
if-feature snmp-if-mib; | if-feature if-mib; | |||
type enumeration { | type enumeration { | |||
enum enabled { | enum enabled { | |||
value 1; | value 1; | |||
} | } | |||
enum disabled { | enum disabled { | |||
value 2; | value 2; | |||
} | } | |||
} | } | |||
description | description | |||
"Indicates whether linkUp/linkDown SNMP notifications | "Indicates whether linkUp/linkDown SNMP notifications | |||
should be generated for this interface. | should be generated for this interface. | |||
If this node is not configured, the value 'enabled' is | If this node is not configured, the value 'enabled' is | |||
operationally used by the server for interfaces which do | operationally used by the server for interfaces which do | |||
not operate on top of any other interface (as defined in | not operate on top of any other interface (i.e., there are | |||
the ifStackTable), and 'disabled' otherwise."; | no 'lower-layer-if' entries), and 'disabled' otherwise."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifLinkUpDownTrapEnable"; | ifLinkUpDownTrapEnable"; | |||
} | } | |||
leaf phys-address { | ||||
type yang:phys-address; | ||||
config false; | ||||
description | ||||
"The interface's address at its protocol sub-layer. For | ||||
example, for an 802.x interface, this object normally | ||||
contains a MAC address. The interface's media-specific | ||||
modules must define the bit and byte ordering and the | ||||
format of the value of this object. For interfaces that do | ||||
not have such an address (e.g., a serial line), this node | ||||
is not present."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifPhysAddress"; | ||||
} | ||||
leaf-list higher-layer-if { | ||||
type interface-ref; | ||||
config false; | ||||
description | ||||
"A list of references to interfaces layered on top of this | ||||
interface."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifStackTable"; | ||||
} | ||||
leaf-list lower-layer-if { | ||||
type interface-ref; | ||||
config false; | ||||
description | ||||
"A list of references to interfaces layered underneath this | ||||
interface."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifStackTable"; | ||||
} | ||||
leaf speed { | ||||
type yang:gauge64; | ||||
units "bits / second"; | ||||
description | ||||
"An estimate of the interface's current bandwidth in bits | ||||
per second. For interfaces which do not vary in | ||||
bandwidth or for those where no accurate estimation can | ||||
be made, this node should contain the nominal bandwidth. | ||||
For interfaces that has no concept of bandwidth, this | ||||
node is not present."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - | ||||
ifSpeed, ifHighSpeed"; | ||||
} | ||||
container statistics { | ||||
config false; | ||||
description | ||||
"A collection of interface-related statistics objects."; | ||||
leaf discontinuity-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"The time on the most recent occasion at which any one or | ||||
more of this interface's counters suffered a | ||||
discontinuity. If no such discontinuities have occurred | ||||
since the last re-initialization of the local management | ||||
subsystem, then this node contains the time the local | ||||
management subsystem re-initialized itself."; | ||||
} | ||||
leaf in-octets { | ||||
type yang:counter64; | ||||
description | ||||
"The total number of octets received on the interface, | ||||
including framing characters. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifHCInOctets"; | ||||
} | ||||
leaf in-unicast-pkts { | ||||
type yang:counter64; | ||||
description | ||||
"The number of packets, delivered by this sub-layer to a | ||||
higher (sub-)layer, which were not addressed to a | ||||
multicast or broadcast address at this sub-layer. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; | ||||
} | ||||
leaf in-broadcast-pkts { | ||||
type yang:counter64; | ||||
description | ||||
"The number of packets, delivered by this sub-layer to a | ||||
higher (sub-)layer, which were addressed to a broadcast | ||||
address at this sub-layer. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - | ||||
ifHCInBroadcastPkts"; | ||||
} | ||||
leaf in-multicast-pkts { | ||||
type yang:counter64; | ||||
description | ||||
"The number of packets, delivered by this sub-layer to a | ||||
higher (sub-)layer, which were addressed to a multicast | ||||
address at this sub-layer. For a MAC layer protocol, | ||||
this includes both Group and Functional addresses. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - | ||||
ifHCInMulticastPkts"; | ||||
} | ||||
leaf in-discards { | ||||
type yang:counter32; | ||||
description | ||||
"The number of inbound packets which were chosen to be | ||||
discarded even though no errors had been detected to | ||||
prevent their being deliverable to a higher-layer | ||||
protocol. One possible reason for discarding such a | ||||
packet could be to free up buffer space. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifInDiscards"; | ||||
} | ||||
leaf in-errors { | ||||
type yang:counter32; | ||||
description | ||||
"For packet-oriented interfaces, the number of inbound | ||||
packets that contained errors preventing them from being | ||||
deliverable to a higher-layer protocol. For character- | ||||
oriented or fixed-length interfaces, the number of | ||||
inbound transmission units that contained errors | ||||
preventing them from being deliverable to a higher-layer | ||||
protocol. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifInErrors"; | ||||
} | ||||
leaf in-unknown-protos { | ||||
type yang:counter32; | ||||
description | ||||
"For packet-oriented interfaces, the number of packets | ||||
received via the interface which were discarded because | ||||
of an unknown or unsupported protocol. For | ||||
character-oriented or fixed-length interfaces that | ||||
support protocol multiplexing the number of transmission | ||||
units received via the interface which were discarded | ||||
because of an unknown or unsupported protocol. For any | ||||
interface that does not support protocol multiplexing, | ||||
this counter is not present. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; | ||||
} | ||||
leaf out-octets { | ||||
type yang:counter64; | ||||
description | ||||
"The total number of octets transmitted out of the | ||||
interface, including framing characters. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; | ||||
} | ||||
leaf out-unicast-pkts { | ||||
type yang:counter64; | ||||
description | ||||
"The total number of packets that higher-level protocols | ||||
requested be transmitted, and which were not addressed | ||||
to a multicast or broadcast address at this sub-layer, | ||||
including those that were discarded or not sent. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; | ||||
} | ||||
leaf out-broadcast-pkts { | ||||
type yang:counter64; | ||||
description | ||||
"The total number of packets that higher-level protocols | ||||
requested be transmitted, and which were addressed to a | ||||
broadcast address at this sub-layer, including those | ||||
that were discarded or not sent. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - | ||||
ifHCOutBroadcastPkts"; | ||||
} | ||||
leaf out-multicast-pkts { | ||||
type yang:counter64; | ||||
description | ||||
"The total number of packets that higher-level protocols | ||||
requested be transmitted, and which were addressed to a | ||||
multicast address at this sub-layer, including those | ||||
that were discarded or not sent. For a MAC layer | ||||
protocol, this includes both Group and Functional | ||||
addresses. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - | ||||
ifHCOutMulticastPkts"; | ||||
} | ||||
leaf out-discards { | ||||
type yang:counter32; | ||||
description | ||||
"The number of outbound packets which were chosen to be | ||||
discarded even though no errors had been detected to | ||||
prevent their being transmitted. One possible reason | ||||
for discarding such a packet could be to free up buffer | ||||
space. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifOutDiscards"; | ||||
} | ||||
leaf out-errors { | ||||
type yang:counter32; | ||||
description | ||||
"For packet-oriented interfaces, the number of outbound | ||||
packets that could not be transmitted because of errors. | ||||
For character-oriented or fixed-length interfaces, the | ||||
number of outbound transmission units that could not be | ||||
transmitted because of errors. | ||||
Discontinuities in the value of this counter can occur | ||||
at re-initialization of the management system, and at | ||||
other times as indicated by the value of | ||||
'discontinuity-time'."; | ||||
reference | ||||
"RFC 2863: The Interfaces Group MIB - ifOutErrors"; | ||||
} | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
6. IANA Considerations | 6. IANA Considerations | |||
This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the IETF XML registry [RFC3688]. | |||
Following the format in RFC 3688, the following registration is | Following the format in RFC 3688, the following registration is | |||
skipping to change at page 21, line 42 | skipping to change at page 30, line 42 | |||
must "/if:interfaces/if:interface[if:name = current()]" | must "/if:interfaces/if:interface[if:name = current()]" | |||
+ "/vlan:vlan-tagging = true" { | + "/vlan:vlan-tagging = true" { | |||
description | description | |||
"The base interface must have vlan tagging enabled."; | "The base interface must have vlan tagging enabled."; | |||
} | } | |||
} | } | |||
leaf vlan-id { | leaf vlan-id { | |||
type uint16 { | type uint16 { | |||
range "1..4094"; | range "1..4094"; | |||
} | } | |||
must "../base-interface"; | must "../base-interface" { | |||
description | ||||
"If a vlan-id is defined, a base-interface must | ||||
be specified."; | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
Appendix D. Example: NETCONF <get> reply | Appendix D. Example: NETCONF <get> reply | |||
This section gives an example of a reply to the NETCONF <get> request | This section gives an example of a reply to the NETCONF <get> request | |||
for a device that implements the example data models above. | for a device that implements the example data models above. | |||
<rpc-reply | <rpc-reply | |||
skipping to change at page 23, line 9 | skipping to change at page 32, line 9 | |||
xmlns="http://example.com/vlan">true</vlan-tagging> | xmlns="http://example.com/vlan">true</vlan-tagging> | |||
</interface> | </interface> | |||
</interfaces> | </interfaces> | |||
</data> | </data> | |||
</rpc-reply> | </rpc-reply> | |||
Appendix E. ChangeLog | Appendix E. ChangeLog | |||
RFC Editor: remove this section upon publication as an RFC. | RFC Editor: remove this section upon publication as an RFC. | |||
E.1. Version -05 | E.1. Version -06 | |||
o Added oper-status leaf. | ||||
o Added leaf-lists higher-layer-if and lower-layer-if, that show the | ||||
interface layering. | ||||
o Added container statistics with counters. | ||||
E.2. Version -05 | ||||
o Added an Informative References section. | o Added an Informative References section. | |||
o Updated the Security Considerations section. | o Updated the Security Considerations section. | |||
o Clarified the behavior of an NETCONF server when invalid values | o Clarified the behavior of an NETCONF server when invalid values | |||
are received. | are received. | |||
E.2. Version -04 | E.3. Version -04 | |||
o Clarified why ifPromiscuousMode is not part of this data model. | o Clarified why ifPromiscuousMode is not part of this data model. | |||
o Added a table that shows the mapping between this YANG data model | o Added a table that shows the mapping between this YANG data model | |||
and IF-MIB. | and IF-MIB. | |||
E.3. Version -03 | E.4. Version -03 | |||
o Added the section Relationship to the IF-MIB. | o Added the section Relationship to the IF-MIB. | |||
o Changed if-index to be a leaf instead of leaf-list. | o Changed if-index to be a leaf instead of leaf-list. | |||
o Explained the notation used in the data model tree picture. | o Explained the notation used in the data model tree picture. | |||
E.4. Version -02 | E.5. Version -02 | |||
o Editorial fixes | o Editorial fixes | |||
E.5. Version -01 | E.6. Version -01 | |||
o Changed leaf "if-admin-status" to leaf "enabled". | o Changed leaf "if-admin-status" to leaf "enabled". | |||
o Added Security Considerations | o Added Security Considerations | |||
Author's Address | Author's Address | |||
Martin Bjorklund | Martin Bjorklund | |||
Tail-f Systems | Tail-f Systems | |||
End of changes. 36 change blocks. | ||||
69 lines changed or deleted | 477 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |