draft-ietf-netmod-interfaces-cfg-11.txt | rfc7223.txt | |||
---|---|---|---|---|
Network Working Group M. Bjorklund | Internet Engineering Task Force (IETF) M. Bjorklund | |||
Internet-Draft Tail-f Systems | Request for Comments: 7223 Tail-f Systems | |||
Intended status: Standards Track May 15, 2013 | Category: Standards Track May 2014 | |||
Expires: November 16, 2013 | ISSN: 2070-1721 | |||
A YANG Data Model for Interface Management | A YANG Data Model for Interface Management | |||
draft-ietf-netmod-interfaces-cfg-11 | ||||
Abstract | Abstract | |||
This document defines a YANG data model for the management of network | This document defines a YANG data model for the management of network | |||
interfaces. It is expected that interface type specific data models | interfaces. It is expected that interface-type-specific data models | |||
augment the generic interfaces data model defined in this document. | augment the generic interfaces data model defined in this document. | |||
The data model includes configuration data, state data and counters | The data model includes configuration data and state data (status | |||
for the collection of statistics. | information and counters for the collection of statistics). | |||
Status of this Memo | ||||
This Internet-Draft is submitted in full conformance with the | Status of This Memo | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This is an Internet Standards Track document. | |||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 5741. | ||||
This Internet-Draft will expire on November 16, 2013. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc7223. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2014 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction ....................................................2 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology ................................................3 | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams ..............................................4 | |||
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Objectives ......................................................4 | |||
3. Interfaces Data Model . . . . . . . . . . . . . . . . . . . . 6 | 3. Interfaces Data Model ...........................................5 | |||
3.1. The interface Lists . . . . . . . . . . . . . . . . . . . 6 | 3.1. The Interface Lists ........................................6 | |||
3.2. Interface References . . . . . . . . . . . . . . . . . . . 7 | 3.2. Interface References .......................................7 | |||
3.3. Interface Layering . . . . . . . . . . . . . . . . . . . . 7 | 3.3. Interface Layering .........................................7 | |||
4. Relationship to the IF-MIB . . . . . . . . . . . . . . . . . . 9 | 4. Relationship to the IF-MIB ......................................8 | |||
5. Interfaces YANG Module . . . . . . . . . . . . . . . . . . . . 11 | 5. Interfaces YANG Module .........................................11 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | 6. IANA Considerations ............................................26 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | 7. Security Considerations ........................................26 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | 8. Acknowledgments ................................................27 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 9. References .....................................................27 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 29 | 9.1. Normative References ......................................27 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . . 29 | 9.2. Informative References ....................................28 | |||
Appendix A. Example: Ethernet Interface Module . . . . . . . . . 30 | Appendix A. Example: Ethernet Interface Module ....................29 | |||
Appendix B. Example: Ethernet Bonding Interface Module . . . . . 32 | Appendix B. Example: Ethernet Bonding Interface Module ............30 | |||
Appendix C. Example: VLAN Interface Module . . . . . . . . . . . 33 | Appendix C. Example: VLAN Interface Module ........................31 | |||
Appendix D. Example: NETCONF <get> reply . . . . . . . . . . . . 34 | Appendix D. Example: NETCONF <get> Reply ..........................32 | |||
Appendix E. Examples: Interface Naming Schemes . . . . . . . . . 37 | Appendix E. Examples: Interface Naming Schemes ....................35 | |||
E.1. Router with Restricted Interface Names . . . . . . . . . . 37 | E.1. Router with Restricted Interface Names .....................35 | |||
E.2. Router with Arbitrary Interface Names . . . . . . . . . . 38 | E.2. Router with Arbitrary Interface Names ......................36 | |||
E.3. Ethernet Switch with Restricted Interface Names . . . . . 39 | E.3. Ethernet Switch with Restricted Interface Names ............37 | |||
E.4. Generic Host with Restricted Interface Names . . . . . . . 39 | E.4. Generic Host with Restricted Interface Names ...............38 | |||
E.5. Generic Host with Arbitrary Interface Names . . . . . . . 40 | E.5. Generic Host with Arbitrary Interface Names ................39 | |||
Appendix F. ChangeLog . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
F.1. Version -11 . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
F.2. Version -08 . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
F.3. Version -07 . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
F.4. Version -06 . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
F.5. Version -05 . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
F.6. Version -04 . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
F.7. Version -03 . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
F.8. Version -02 . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
F.9. Version -01 . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 44 | ||||
1. Introduction | 1. Introduction | |||
This document defines a YANG [RFC6020] data model for the management | This document defines a YANG [RFC6020] data model for the management | |||
of network interfaces. It is expected that interface type specific | of network interfaces. It is expected that interface-type-specific | |||
data models augment the generic interfaces data model defined in this | data models augment the generic interfaces data model defined in this | |||
document. | document. | |||
Network interfaces are central to the management 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, configured, and monitored. | for how interfaces are identified, configured, and monitored. | |||
The data model includes configuration data, state data and counters | The data model includes configuration data and state data (status | |||
for the collection of statistics. | information and counters for the collection of statistics). | |||
1.1. Terminology | 1.1. Terminology | |||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "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 | |||
14, [RFC2119]. | BCP 14 [RFC2119]. | |||
The following terms are used within this document: | ||||
o system-controlled interface: An interface is said to be system- | ||||
controlled if the system creates and deletes the interface | ||||
independently of what has been explicitly configured. Examples | ||||
are interfaces representing physical hardware that appear and | ||||
disappear when hardware (e.g., a line card or hot-pluggable | ||||
wireless interface) is added or removed. System-controlled | ||||
interfaces may also appear if a certain functionality is enabled | ||||
(e.g., a loopback interface might appear if the IP protocol stack | ||||
is enabled). | ||||
o user-controlled interface: An interface is said to be user- | ||||
controlled if the creation of the interface is controlled by | ||||
adding explicit interface configuration to the running | ||||
configuration datastore and the removal of the interface is | ||||
controlled by removing explicit interface configuration from the | ||||
running configuration datastore. Examples are VLAN interfaces | ||||
configured on a system-controlled Ethernet interface. | ||||
The following terms are defined in [RFC6241] and are not redefined | The following terms are defined in [RFC6241] and are not redefined | |||
here: | here: | |||
o client | o client | |||
o configuration data | o configuration data | |||
o server | o server | |||
skipping to change at page 3, line 46 | skipping to change at page 3, line 52 | |||
The following terms are defined in [RFC6020] and are not redefined | The following terms are defined in [RFC6020] and are not redefined | |||
here: | here: | |||
o augment | o augment | |||
o data model | o data model | |||
o data node | o data node | |||
o presence container | ||||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
A simplified graphical representation of the data model is used in | A simplified graphical representation of the data model is used in | |||
this document. The meaning of the symbols in these diagrams is as | this document. The meaning of the symbols in these diagrams is as | |||
follows: | follows: | |||
o Brackets "[" and "]" enclose list keys. | o Brackets "[" and "]" enclose list keys. | |||
o Abbreviations before data node names: "rw" means configuration | o Abbreviations before data node names: "rw" means configuration | |||
(read-write) and "ro" state data (read-only). | (read-write), and "ro" means state data (read-only). | |||
o Symbols after data node names: "?" means an optional node and "*" | o Symbols after data node names: "?" means an optional node, "!" | |||
denotes a "list" and "leaf-list". | means a presence container, and "*" denotes a list and leaf-list. | |||
o Parentheses enclose choice and case nodes, and case nodes are also | o Parentheses enclose choice and case nodes, and case nodes are also | |||
marked with a colon (":"). | marked with a colon (":"). | |||
o Ellipsis ("...") stands for contents of subtrees that are not | o Ellipsis ("...") stands for contents of subtrees that are not | |||
shown. | shown. | |||
2. Objectives | 2. Objectives | |||
This section describes some of the design objectives for the model | This section describes some of the design objectives for the model | |||
presented in Section 5. | presented in Section 5. | |||
o It is recognized that existing implementations will have to map | o It is recognized that existing implementations will have to map | |||
the interface data model defined in this memo to their proprietary | the interface data model defined in this memo to their proprietary | |||
native data model. The data model should be simple to facilitate | native data model. To facilitate such mappings, the data model | |||
such mappings. | should be simple. | |||
o The data model should be suitable for new implementations to use | o The data model should be suitable for new implementations to use | |||
as-is, without requiring a mapping to a different native model. | as is, without requiring a mapping to a different native model. | |||
o References to interfaces should be as simple as possible, | o References to interfaces should be as simple as possible, | |||
preferably by using a single leafref. | preferably by using a single leafref. | |||
o The mapping to ifIndex [RFC2863] used by SNMP to identify | o The mapping to ifIndex [RFC2863] used by the Simple Network | |||
interfaces must be clear. | Management Protocol (SNMP) to identify interfaces must be clear. | |||
o The model must support interface layering, both simple layering | o The model must support interface layering: both (1) simple | |||
where one interface is layered on top of exactly one other | layering, where one interface is layered on top of exactly one | |||
interface, and more complex scenarios where one interface results | other interface, and (2) more complex scenarios, where one | |||
from the aggregation of N other interfaces, or when N interfaces | interface results from the aggregation of N other interfaces or | |||
are multiplexed over one other interface. | when N interfaces are multiplexed over one other interface. | |||
o The data model should support the pre-provisioning of interface | o The data model should support the pre-provisioning of interface | |||
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 | |||
provisioning. | pre-provisioning. | |||
o The data model should support both physical interfaces as well as | o The data model should support physical interfaces as well as | |||
logical interfaces. | logical interfaces. | |||
o The data model should include read-only counters in order to | o The data model should include read-only counters in order to | |||
gather statistics for octets, packets and errors, sent and | gather statistics for sent and received octets and packets, | |||
received. | received packets with errors, and packets that could not be sent | |||
due to errors. | ||||
3. Interfaces Data Model | 3. Interfaces Data Model | |||
This document defines the YANG module "ietf-interfaces", which has | This document defines the YANG module "ietf-interfaces", which has | |||
the following structure: | the following structure: | |||
+--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 identityref | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw link-up-down-trap-enable? enumeration | | +--rw link-up-down-trap-enable? enumeration | |||
+--ro interfaces-state | +--ro interfaces-state | |||
+--ro interface* [name] | +--ro interface* [name] | |||
+--ro name string | +--ro name string | |||
+--ro type ianaift:iana-if-type | +--ro type identityref | |||
+--ro admin-status enumeration | +--ro admin-status enumeration | |||
+--ro oper-status enumeration | +--ro oper-status enumeration | |||
+--ro last-change? yang:date-and-time | +--ro last-change? yang:date-and-time | |||
+--ro if-index int32 | +--ro if-index int32 | |||
+--ro phys-address? yang:phys-address | +--ro phys-address? yang:phys-address | |||
+--ro higher-layer-if* interface-state-ref | +--ro higher-layer-if* interface-state-ref | |||
+--ro lower-layer-if* interface-state-ref | +--ro lower-layer-if* interface-state-ref | |||
+--ro speed? yang:gauge64 | +--ro speed? yang:gauge64 | |||
+--ro statistics | +--ro statistics | |||
+--ro discontinuity-time yang:date-and-time | +--ro discontinuity-time yang:date-and-time | |||
skipping to change at page 6, line 45 | skipping to change at page 6, line 11 | |||
+--ro in-discards? yang:counter32 | +--ro in-discards? yang:counter32 | |||
+--ro in-errors? yang:counter32 | +--ro in-errors? yang:counter32 | |||
+--ro in-unknown-protos? yang:counter32 | +--ro in-unknown-protos? yang:counter32 | |||
+--ro out-octets? yang:counter64 | +--ro out-octets? yang:counter64 | |||
+--ro out-unicast-pkts? yang:counter64 | +--ro out-unicast-pkts? yang:counter64 | |||
+--ro out-broadcast-pkts? yang:counter64 | +--ro out-broadcast-pkts? yang:counter64 | |||
+--ro out-multicast-pkts? yang:counter64 | +--ro out-multicast-pkts? yang:counter64 | |||
+--ro out-discards? yang:counter32 | +--ro out-discards? yang:counter32 | |||
+--ro out-errors? yang:counter32 | +--ro out-errors? yang:counter32 | |||
3.1. The interface Lists | 3.1. The Interface Lists | |||
The data model for interfaces presented in this document uses a flat | The data model for interfaces presented in this document uses a flat | |||
list of interfaces. Each interface in the list is identified by its | list of interfaces. Each interface in the list is identified by its | |||
name. Furthermore, each interface has a mandatory "type" leaf. | name. Furthermore, each interface has a mandatory "type" leaf. | |||
The "iana-if-type" module [RFC7224] defines YANG identities for the | ||||
interface types in the IANA-maintained "ifType definitions" registry. | ||||
There is one list of configured interfaces ("/interfaces/interface"), | There is one list of configured interfaces ("/interfaces/interface"), | |||
and a separate list for the operational state of all interfaces | and a separate list for the operational state of all interfaces | |||
("/interfaces-state/interface"). | ("/interfaces-state/interface"). | |||
It is expected that interface type specific data models augment the | It is expected that interface-type-specific data models augment the | |||
interface lists, and use the "type" leaf to make the augmentation | interface lists and possibly use the "type" leaf to make the | |||
conditional. | augmentation 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 { | |||
prefix "if"; | prefix "if"; | |||
} | } | |||
import iana-if-type { | ||||
prefix ianaift; | ||||
} | ||||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
when "if:type = 'ethernetCsmacd'"; | when "if:type = 'ianaift:ethernetCsmacd'"; | |||
container ethernet { | container ethernet { | |||
leaf duplex { | leaf duplex { | |||
... | ... | |||
} | } | |||
} | } | |||
} | } | |||
For physical interfaces, the "name" is the device-specific name of | For system-controlled interfaces, the "name" is the device-specific | |||
the interface. It is used to identify the physical hardware | name of the interface. The 'config false' list | |||
interface. The 'config false' list "/interfaces-state/interface" | "/interfaces-state/interface" contains all existing interfaces on the | |||
contains all currently existing interfaces on the device. | device. | |||
If the device supports arbitrarily named logical interfaces, the | If the device supports arbitrarily named user-controlled interfaces, | |||
NETCONF server advertises the feature "arbitrary-names". If the | the Network Configuration Protocol (NETCONF) server advertises the | |||
device does not advertise this feature, the names of logical | "arbitrary-names" feature. If the device does not advertise this | |||
interfaces MUST match the device's naming scheme. How a client can | feature, the names of user-controlled interfaces MUST match the | |||
learn the naming scheme of such devices is outside the scope of this | device's naming scheme. How a client can learn the naming scheme of | |||
document. | such devices is outside the scope of this document. See Appendices | |||
E.1 and E.2 for examples. | ||||
When a system-controlled interface is created by the system, the | ||||
system tries to apply the interface configuration in "/interfaces/ | ||||
interface" with the same name as the new interface. If no such | ||||
interface configuration is found, or if the configured type does not | ||||
match the real interface type, the system creates the interface | ||||
without applying explicit configuration. | ||||
When a user-controlled interface is created, the configuration | ||||
determines the name of the interface. | ||||
Depending on the operating system and the physical attachment point | ||||
to which a network interface may be attached or removed, it may be | ||||
impossible for an implementation to provide predictable and | ||||
consistent names for system-controlled interfaces across insertion/ | ||||
removal cycles as well as in anticipation of initial insertion. The | ||||
ability to provide configurations for such interfaces is therefore | ||||
dependent on the implementation and cannot be assumed in all cases. | ||||
3.2. Interface References | 3.2. Interface References | |||
An interface is identified by its name, which is unique within the | An interface is identified by its name, which is unique within the | |||
server. This property is captured in the "interface-ref" and | server. This property is captured in the "interface-ref" and | |||
"interface-state-ref" typedefs, which other YANG modules SHOULD use | "interface-state-ref" typedefs, which other YANG modules SHOULD use | |||
when they need to reference a configured interface or operationally | when they need to reference a configured interface or operationally | |||
used interface, respectively. | used interface, respectively. | |||
3.3. Interface Layering | 3.3. Interface Layering | |||
There is no generic mechanism for how an interface is configured to | There is no generic mechanism for how an interface is configured to | |||
be layered on top of some other interface. It is expected that | be layered on top of some other interface. It is expected that | |||
interface type specific models define their own data nodes for | interface-type-specific models define their own data nodes for | |||
interface layering, by using "interface-ref" types to reference lower | interface layering by using "interface-ref" types to reference | |||
layers. | lower layers. | |||
Below is an example of a model with such nodes. For a more complete | Below is an example of a model with such nodes. For a more complete | |||
example, see Appendix B. | example, see Appendix B. | |||
import interfaces { | import interfaces { | |||
prefix "if"; | prefix "if"; | |||
} | } | |||
import iana-if-type { | ||||
prefix ianaift; | ||||
} | ||||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
when "if:type = 'ieee8023adLag'"; | when "if:type = 'ianaift:ieee8023adLag'"; | |||
leaf-list slave-if { | leaf-list slave-if { | |||
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 = 'ianaift:ethernetCsmacd'" { | |||
description | description | |||
"The type of a slave interface must be ethernet"; | "The type of a slave interface must be | |||
'ethernetCsmacd'."; | ||||
} | } | |||
} | } | |||
// other bonding config params, failover times etc. | // other bonding config params, failover times, etc. | |||
} | } | |||
Two state data leaf-lists, "higher-layer-if" and "lower-layer-if", | While the interface layering is configured in interface-type-specific | |||
represent a read-only view of the interface layering hierarchy. | models, two generic state data leaf-lists, "higher-layer-if" and | |||
"lower-layer-if", represent 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 the IF-MIB [RFC2863], each entry in the "/ | |||
"/interfaces-state/interface" list is typically mapped to one | interfaces-state/interface" list is typically mapped to one ifEntry. | |||
ifEntry. The "if-index" leaf MUST contain the value of the | The "if-index" leaf MUST contain the value of the corresponding | |||
corresponding ifEntry's ifIndex. | ifEntry's ifIndex. | |||
In most cases, the "name" of an "interface" entry is mapped to | ||||
ifName. ifName is defined as an DisplayString [RFC2579] which uses a | ||||
7-bit ASCII character set. An implementation MUST restrict the | ||||
allowed values for "name" to match the restrictions of ifName. | ||||
The IF-MIB allows two different ifEntries to have the same ifName. | In most cases, the "name" of an "/interfaces-state/interface" entry | |||
Devices that support this feature, and also support the data model | is mapped to ifName. The IF-MIB allows two different ifEntries to | |||
defined in this document, cannot have a 1-1 mapping between the | have the same ifName. Devices that support this feature and also | |||
"name" leaf and ifName. | support the data model defined in this document cannot have a 1-1 | |||
mapping between the "name" leaf and ifName. | ||||
The configured "description" of an "interface" has traditionally been | The configured "description" of an "interface" has traditionally been | |||
mapped to ifAlias in some implementations. This document allows this | mapped to ifAlias in some implementations. This document allows this | |||
mapping, but implementers should be aware of the differences in the | mapping, but implementers should be aware of the differences in the | |||
value space and persistence for these objects. See the YANG module | value space and persistence for these objects. See the YANG module | |||
definition of the leaf "description" in Section 5 for details. | definition of the leaf "description" in Section 5 for details. | |||
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 implemented as a configuration object by | |||
to the "ietf-interfaces" module. | SNMP agents, it is not mapped to the "ietf-interfaces" module. | |||
The ifMtu object from the IF-MIB is not mapped to the | ||||
"ietf-interfaces" module. It is expected that interface-type- | ||||
specific YANG modules provide interface-type-specific MTU leafs by | ||||
augmenting the "ietf-interfaces" model. | ||||
There are a number of counters in the IF-MIB that exist in two | There are a number of counters in the IF-MIB that exist in two | |||
versions; one with 32 bits and one with 64 bits. The YANG module | versions: one with 32 bits and one with 64 bits. The 64-bit versions | |||
contains the 64 bits counters only. Note that NETCONF and SNMP may | were added to support high-speed interfaces with a data rate greater | |||
than 20,000,000 bits/second. Today's implementations generally | ||||
support such high-speed interfaces, and hence only 64-bit counters | ||||
are provided in this data model. Note that NETCONF and SNMP may | ||||
differ in the time granularity in which they provide access to the | differ in the time granularity in which they provide access to the | |||
counters. For example, it is common that SNMP implementations cache | counters. For example, it is common that SNMP implementations cache | |||
counter values for some time. | counter values for some time. | |||
The following table lists the YANG data nodes with corresponding | The objects ifDescr and ifConnectorPresent from the IF-MIB are not | |||
mapped to the "ietf-interfaces" module. | ||||
The following tables list 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 in /interfaces- | IF-MIB object | | |||
+----------------------------------+------------------------+ | | state/interface | | | |||
| interface | ifEntry | | +--------------------------------------+----------------------------+ | |||
| name | ifName | | | name | ifName | | |||
| description | ifAlias | | | type | ifType | | |||
| type | ifType | | | admin-status | ifAdminStatus | | |||
| enabled / admin-status | ifAdminStatus | | | oper-status | ifOperStatus | | |||
| oper-status | ifOperStatus | | | last-change | ifLastChange | | |||
| last-change | ifLastChange | | | if-index | ifIndex | | |||
| if-index | ifIndex | | | link-up-down-trap-enable | ifLinkUpDownTrapEnable | | |||
| link-up-down-trap-enable | ifLinkUpDownTrapEnable | | | phys-address | ifPhysAddress | | |||
| phys-address | ifPhysAddress | | | higher-layer-if and lower-layer-if | ifStackTable | | |||
| higher-layer-if / lower-layer-if | ifStackTable | | | speed | ifSpeed and ifHighSpeed | | |||
| speed | ifSpeed | | | discontinuity-time | ifCounterDiscontinuityTime | | |||
| in-octets | ifHCInOctets | | | in-octets | ifHCInOctets | | |||
| in-unicast-pkts | ifHCInUcastPkts | | | in-unicast-pkts | ifHCInUcastPkts | | |||
| in-broadcast-pkts | ifHCInBroadcastPkts | | | in-broadcast-pkts | ifHCInBroadcastPkts | | |||
| in-multicast-pkts | ifHCInMulticastPkts | | | in-multicast-pkts | ifHCInMulticastPkts | | |||
| in-discards | ifInDiscards | | | in-discards | ifInDiscards | | |||
| in-errors | ifInErrors | | | in-errors | ifInErrors | | |||
| in-unknown-protos | ifInUnknownProtos | | | in-unknown-protos | ifInUnknownProtos | | |||
| out-octets | ifHCOutOctets | | | out-octets | ifHCOutOctets | | |||
| out-unicast-pkts | ifHCOutUcastPkts | | | out-unicast-pkts | ifHCOutUcastPkts | | |||
| out-broadcast-pkts | ifHCOutBroadcastPkts | | | out-broadcast-pkts | ifHCOutBroadcastPkts | | |||
| out-multicast-pkts | ifHCOutMulticastPkts | | | out-multicast-pkts | ifHCOutMulticastPkts | | |||
| out-discards | ifOutDiscards | | | out-discards | ifOutDiscards | | |||
| out-errors | ifOutErrors | | | out-errors | ifOutErrors | | |||
+----------------------------------+------------------------+ | +--------------------------------------+----------------------------+ | |||
YANG data nodes and related IF-MIB objects | YANG State Data Nodes and Related IF-MIB Objects | |||
5. Interfaces YANG Module | +-----------------------------------------+---------------+ | |||
| YANG data node in /interfaces/interface | IF-MIB object | | ||||
+-----------------------------------------+---------------+ | ||||
| description | ifAlias | | ||||
+-----------------------------------------+---------------+ | ||||
This YANG module imports typedefs from [I-D.ietf-netmod-rfc6021-bis] | YANG Config Data Nodes and Related IF-MIB Objects | |||
and [I-D.ietf-netmod-iana-if-type]. | ||||
RFC Ed.: update the date below with the date of RFC publication and | 5. Interfaces YANG Module | |||
remove this note. | ||||
<CODE BEGINS> file "ietf-interfaces@2013-05-15.yang" | This YANG module imports typedefs from [RFC6991]. | |||
<CODE BEGINS> file "ietf-interfaces@2014-05-08.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 { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
} | } | |||
import iana-if-type { | ||||
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> | |||
WG Chair: David Kessens | WG Chair: Thomas Nadeau | |||
<mailto:david.kessens@nsn.com> | <mailto:tnadeau@lucidvision.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 | |||
managing network interfaces. | managing network interfaces. | |||
Copyright (c) 2013 IETF Trust and the persons identified as | Copyright (c) 2014 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 7223; 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 | revision 2014-05-08 { | |||
// note. | ||||
// RFC Ed.: update the date below with the date of RFC publication | ||||
// and remove this note. | ||||
revision 2013-05-15 { | ||||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Interface Management"; | "RFC 7223: 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 | |||
configured interfaces."; | configured interfaces."; | |||
} | } | |||
typedef interface-state-ref { | typedef interface-state-ref { | |||
type leafref { | type leafref { | |||
path "/if:interfaces-state/if:interface/if:name"; | path "/if:interfaces-state/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 | |||
the operationally present interfaces."; | the operationally present interfaces."; | |||
} | } | |||
/* Features */ | /* | |||
* Identities | ||||
*/ | ||||
identity interface-type { | ||||
description | ||||
"Base identity from which specific interface types are | ||||
derived."; | ||||
} | ||||
/* | ||||
* Features | ||||
*/ | ||||
feature arbitrary-names { | feature arbitrary-names { | |||
description | description | |||
"This feature indicates that the device allows logical | "This feature indicates that the device allows user-controlled | |||
interfaces to be named arbitrarily."; | interfaces to be named arbitrarily."; | |||
} | } | |||
feature pre-provisioning { | feature pre-provisioning { | |||
description | description | |||
"This feature indicates that the device supports | "This feature indicates that the device supports | |||
pre-provisioning of interface configuration, i.e., it is | pre-provisioning of interface configuration, i.e., it is | |||
possible to configure an interface whose physical interface | possible to configure an interface whose physical interface | |||
hardware is not present on the device."; | hardware is not present on the device."; | |||
} | } | |||
feature if-mib { | feature if-mib { | |||
description | description | |||
skipping to change at page 13, line 13 | skipping to change at page 13, line 14 | |||
feature pre-provisioning { | feature pre-provisioning { | |||
description | description | |||
"This feature indicates that the device supports | "This feature indicates that the device supports | |||
pre-provisioning of interface configuration, i.e., it is | pre-provisioning of interface configuration, i.e., it is | |||
possible to configure an interface whose physical interface | possible to configure an interface whose physical interface | |||
hardware is not present on the device."; | hardware is not present on the device."; | |||
} | } | |||
feature if-mib { | feature if-mib { | |||
description | description | |||
"This feature indicates that the device implements IF-MIB."; | "This feature indicates that the device implements | |||
the IF-MIB."; | ||||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB"; | "RFC 2863: The Interfaces Group MIB"; | |||
} | } | |||
/* Data nodes */ | /* | |||
* Configuration data nodes | ||||
*/ | ||||
container interfaces { | container interfaces { | |||
description | description | |||
"Interface configuration parameters."; | "Interface configuration parameters."; | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"The list of configured interfaces on the device. | "The list of configured interfaces on the device. | |||
The operational state of an interface is available in the | The operational state of an interface is available in the | |||
/interfaces-state/interface list. If the configuration of a | /interfaces-state/interface list. If the configuration of a | |||
physical interface cannot be used by the system (e.g., the | system-controlled interface cannot be used by the system | |||
physical interface present is not matching the interface | (e.g., the interface hardware present does not match the | |||
type), then the configuration is not applied to the physical | interface type), then the configuration is not applied to | |||
interface shown in the /interfaces-state/interface list. If | the system-controlled interface shown in the | |||
the the configuration of a logical interface cannot be used | /interfaces-state/interface list. If the configuration | |||
by the system, the configured interface is not instantiated | of a user-controlled interface cannot be used by the system, | |||
in the /interfaces-state/interface list."; | the configured interface is not instantiated in the | |||
/interfaces-state/interface list."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the interface. | "The name of 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 of the interface. | possibly depending on the type of the interface. | |||
For physical interfaces, this leaf is the device-specific | For system-controlled interfaces, this leaf is the | |||
name of the interface. The 'config false' list | device-specific name of the interface. The 'config false' | |||
/interfaces-state/interface contains the currently | list /interfaces-state/interface contains the currently | |||
existing interfaces on the device. | existing interfaces on the device. | |||
If a client tries to create configuration for a physical | If a client tries to create configuration for a | |||
interface that is not present, the server MAY reject the | system-controlled interface that is not present in the | |||
request, if the implementation does not support | /interfaces-state/interface list, the server MAY reject | |||
pre-provisioning of interfaces, or if the name refers to | the request if the implementation does not support | |||
an interface that can never exist in the system. | pre-provisioning of interfaces or if the name refers to | |||
A NETCONF server MUST reply with an rpc-error with the | an interface that can never exist in the system. A | |||
NETCONF server MUST reply with an rpc-error with the | ||||
error-tag 'invalid-value' in this case. | error-tag 'invalid-value' in this case. | |||
If the device supports pre-provisioning of interface | If the device supports pre-provisioning of interface | |||
configuration, the feature 'pre-provisioning' is | configuration, the 'pre-provisioning' feature is | |||
advertised. | advertised. | |||
If the device allows arbitrarily named logical interfaces, | If the device allows arbitrarily named user-controlled | |||
the feature 'arbitrary-names' is advertised. | interfaces, the 'arbitrary-names' feature is advertised. | |||
When a configured logical interface is created by the | ||||
system, it is instantiated in the | ||||
/interface-state/interface list. Since the name in that | ||||
list MAY be mapped to ifName by an implementation, such an | ||||
implementation MUST restrict the allowed values for this | ||||
leaf so that it matches the restrictions of ifName. | ||||
If a NETCONF server that implements this restriction is | When a configured user-controlled interface is created by | |||
sent a value that doesn't match the restriction, it MUST | the system, it is instantiated with the same name in the | |||
reply with an rpc-error with the error-tag | /interface-state/interface list."; | |||
'invalid-value'."; | ||||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"A textual description of the interface. | "A textual description of the interface. | |||
This leaf MAY be mapped to ifAlias by an implementation. | A server implementation MAY map this leaf to the ifAlias | |||
Such an implementation MUST restrict the allowed values | MIB object. Such an implementation needs to use some | |||
for this leaf so that it matches the restrictions of | mechanism to handle the differences in size and characters | |||
ifAlias. | allowed between this leaf and ifAlias. The definition of | |||
such a mechanism is outside the scope of this document. | ||||
If a NETCONF server that implements this restriction is | ||||
sent a value that doesn't match the restriction, it MUST | ||||
reply with an rpc-error with the error-tag | ||||
'invalid-value'. | ||||
Since ifAlias is defined to be stored in non-volatile | Since ifAlias is defined to be stored in non-volatile | |||
storage, the SNMP implementation MUST map ifAlias to the | storage, the MIB implementation MUST map ifAlias to the | |||
value of 'description' in the persistently stored | value of 'description' in the persistently stored | |||
datastore. | datastore. | |||
Specifically, if the device supports ':startup', when | Specifically, if the device supports ':startup', when | |||
ifAlias is read the device MUST return the value of | ifAlias is read the device MUST return the value of | |||
'description' in the 'startup' datastore, and when it is | 'description' in the 'startup' datastore, and when it is | |||
written, it MUST be written to the 'running' and 'startup' | written, it MUST be written to the 'running' and 'startup' | |||
datastores. Note that it is up to the implementation if | datastores. Note that it is up to the implementation to | |||
it modifies this single leaf in 'startup', or if it | decide whether to modify this single leaf in 'startup' or | |||
performs an implicit copy-config from 'running' to | perform an implicit copy-config from 'running' to | |||
'startup'. | 'startup'. | |||
If the device does not support ':startup', ifAlias MUST | If the device does not support ':startup', ifAlias MUST | |||
be mapped to the 'description' leaf in the 'running' | be mapped to the 'description' leaf in the 'running' | |||
datastore."; | datastore."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifAlias"; | "RFC 2863: The Interfaces Group MIB - ifAlias"; | |||
} | } | |||
leaf type { | leaf type { | |||
type ianaift:iana-if-type; | type identityref { | |||
base interface-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. | |||
If a client tries to set the type of an interface to a | If a client tries to set the type of an interface to a | |||
skipping to change at page 16, line 27 | skipping to change at page 16, line 27 | |||
} | } | |||
enum disabled { | enum disabled { | |||
value 2; | value 2; | |||
} | } | |||
} | } | |||
description | description | |||
"Controls whether linkUp/linkDown SNMP notifications | "Controls 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 that do | |||
not operate on top of any other interface (i.e., there are | not operate on top of any other interface (i.e., there are | |||
no 'lower-layer-if' entries), 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"; | |||
} | } | |||
} | } | |||
} | } | |||
/* | ||||
* Operational state data nodes | ||||
*/ | ||||
container interfaces-state { | container interfaces-state { | |||
config false; | config false; | |||
description | description | |||
"Data nodes for the operational state of interfaces."; | "Data nodes for the operational state of interfaces."; | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"The list of interfaces on the device. | "The list of interfaces on the device. | |||
Physical interfaces detected by the system are always | System-controlled interfaces created by the system are | |||
present in this list, if they are configured or not."; | always present in this list, whether they are configured or | |||
not."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the interface. | "The name of the interface. | |||
This leaf MAY be mapped to ifName by an implementation. | A server implementation MAY map this leaf to the ifName | |||
Such an implementation MUST restrict the values | MIB object. Such an implementation needs to use some | |||
for this leaf so that it matches the restrictions of | mechanism to handle the differences in size and characters | |||
ifName."; | allowed between this leaf and ifName. The definition of | |||
such a mechanism is outside the scope of this document."; | ||||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifName"; | "RFC 2863: The Interfaces Group MIB - ifName"; | |||
} | } | |||
leaf type { | leaf type { | |||
type ianaift:iana-if-type; | type identityref { | |||
base interface-type; | ||||
} | ||||
mandatory true; | mandatory true; | |||
description | description | |||
"The type of the interface."; | "The type of the interface."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifType"; | "RFC 2863: The Interfaces Group MIB - ifType"; | |||
} | } | |||
leaf admin-status { | leaf admin-status { | |||
if-feature if-mib; | if-feature if-mib; | |||
type enumeration { | type enumeration { | |||
skipping to change at page 17, line 47 | skipping to change at page 18, line 14 | |||
enum testing { | enum testing { | |||
value 3; | value 3; | |||
description | description | |||
"In some test mode."; | "In some test mode."; | |||
} | } | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The desired state of the interface. | "The desired state of the interface. | |||
This leaf has the same semantics as ifAdminStatus."; | This leaf has the same read semantics as ifAdminStatus."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifAdminStatus"; | "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; | |||
} | } | |||
leaf oper-status { | leaf oper-status { | |||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
value 1; | value 1; | |||
description | description | |||
"Ready to pass packets."; | "Ready to pass packets."; | |||
} | } | |||
enum down { | enum down { | |||
value 2; | value 2; | |||
description | description | |||
skipping to change at page 19, line 32 | skipping to change at page 19, line 47 | |||
"The ifIndex value for the ifEntry represented by this | "The ifIndex value for the ifEntry represented by this | |||
interface."; | interface."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifIndex"; | "RFC 2863: The Interfaces Group MIB - ifIndex"; | |||
} | } | |||
leaf phys-address { | leaf phys-address { | |||
type yang:phys-address; | type yang:phys-address; | |||
description | description | |||
"The interface's address at its protocol sub-layer. For | "The interface's address at its protocol sub-layer. For | |||
example, for an 802.x interface, this object normally | example, for an 802.x interface, this object normally | |||
contains a MAC address. The interface's media-specific | contains a Media Access Control (MAC) address. The | |||
modules must define the bit and byte ordering and the | interface's media-specific modules must define the bit | |||
format of the value of this object. For interfaces that do | and byte ordering and the format of the value of this | |||
not have such an address (e.g., a serial line), this node | object. For interfaces that do not have such an address | |||
is not present."; | (e.g., a serial line), this node is not present."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifPhysAddress"; | "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; | |||
} | } | |||
leaf-list higher-layer-if { | leaf-list higher-layer-if { | |||
type interface-state-ref; | type interface-state-ref; | |||
description | description | |||
"A list of references to interfaces layered on top of this | "A list of references to interfaces layered on top of this | |||
interface."; | interface."; | |||
reference | reference | |||
skipping to change at page 20, line 14 | skipping to change at page 20, line 31 | |||
type interface-state-ref; | type interface-state-ref; | |||
description | description | |||
"A list of references to interfaces layered underneath this | "A list of references to interfaces layered underneath this | |||
interface."; | interface."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifStackTable"; | "RFC 2863: The Interfaces Group MIB - ifStackTable"; | |||
} | } | |||
leaf speed { | leaf speed { | |||
type yang:gauge64; | type yang:gauge64; | |||
units "bits / second"; | units "bits/second"; | |||
description | description | |||
"An estimate of the interface's current bandwidth in bits | "An estimate of the interface's current bandwidth in bits | |||
per second. For interfaces that do not vary in | per second. For interfaces that do not vary in | |||
bandwidth or for those where no accurate estimation can | bandwidth or for those where no accurate estimation can | |||
be made, this node should contain the nominal bandwidth. | be made, this node should contain the nominal bandwidth. | |||
For interfaces that have no concept of bandwidth, this | For interfaces that have no concept of bandwidth, this | |||
node is not present."; | node is not present."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifSpeed, ifHighSpeed"; | ifSpeed, ifHighSpeed"; | |||
skipping to change at page 21, line 8 | skipping to change at page 21, line 33 | |||
"The total number of octets received on the interface, | "The total number of octets received on the interface, | |||
including framing characters. | including framing characters. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifHCInOctets"; | "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; | |||
} | } | |||
leaf in-unicast-pkts { | leaf in-unicast-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of packets, delivered by this sub-layer to a | "The number of packets, delivered by this sub-layer to a | |||
higher (sub-)layer, which were not addressed to a | higher (sub-)layer, that were not addressed to a | |||
multicast or broadcast address at this sub-layer. | multicast or broadcast address at this sub-layer. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; | "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; | |||
} | } | |||
leaf in-broadcast-pkts { | leaf in-broadcast-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of packets, delivered by this sub-layer to a | "The number of packets, delivered by this sub-layer to a | |||
higher (sub-)layer, which were addressed to a broadcast | higher (sub-)layer, that were addressed to a broadcast | |||
address at this sub-layer. | address at this sub-layer. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifHCInBroadcastPkts"; | ifHCInBroadcastPkts"; | |||
} | } | |||
skipping to change at page 21, line 37 | skipping to change at page 22, line 19 | |||
address at this sub-layer. | address at this sub-layer. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifHCInBroadcastPkts"; | ifHCInBroadcastPkts"; | |||
} | } | |||
leaf in-multicast-pkts { | leaf in-multicast-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of packets, delivered by this sub-layer to a | "The number of packets, delivered by this sub-layer to a | |||
higher (sub-)layer, which were addressed to a multicast | higher (sub-)layer, that were addressed to a multicast | |||
address at this sub-layer. For a MAC layer protocol, | address at this sub-layer. For a MAC-layer protocol, | |||
this includes both Group and Functional addresses. | this includes both Group and Functional addresses. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifHCInMulticastPkts"; | ifHCInMulticastPkts"; | |||
} | } | |||
leaf in-discards { | leaf in-discards { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of inbound packets which were chosen to be | "The number of inbound packets that were chosen to be | |||
discarded even though no errors had been detected to | discarded even though no errors had been detected to | |||
prevent their being deliverable to a higher-layer | prevent their being deliverable to a higher-layer | |||
protocol. One possible reason for discarding such a | protocol. One possible reason for discarding such a | |||
packet could be to free up buffer space. | packet could be to free up buffer space. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifInDiscards"; | "RFC 2863: The Interfaces Group MIB - ifInDiscards"; | |||
} | } | |||
leaf in-errors { | leaf in-errors { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"For packet-oriented interfaces, the number of inbound | "For packet-oriented interfaces, the number of inbound | |||
packets that contained errors preventing them from being | packets that contained errors preventing them from being | |||
deliverable to a higher-layer protocol. For character- | deliverable to a higher-layer protocol. For character- | |||
oriented or fixed-length interfaces, the number of | oriented or fixed-length interfaces, the number of | |||
inbound transmission units that contained errors | inbound transmission units that contained errors | |||
preventing them from being deliverable to a higher-layer | preventing them from being deliverable to a higher-layer | |||
protocol. | protocol. | |||
skipping to change at page 22, line 40 | skipping to change at page 23, line 27 | |||
preventing them from being deliverable to a higher-layer | preventing them from being deliverable to a higher-layer | |||
protocol. | protocol. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifInErrors"; | "RFC 2863: The Interfaces Group MIB - ifInErrors"; | |||
} | } | |||
leaf in-unknown-protos { | leaf in-unknown-protos { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"For packet-oriented interfaces, the number of packets | "For packet-oriented interfaces, the number of packets | |||
received via the interface which were discarded because | received via the interface that were discarded because | |||
of an unknown or unsupported protocol. For | of an unknown or unsupported protocol. For | |||
character-oriented or fixed-length interfaces that | character-oriented or fixed-length interfaces that | |||
support protocol multiplexing the number of transmission | support protocol multiplexing, the number of | |||
units received via the interface which were discarded | transmission units received via the interface that were | |||
because of an unknown or unsupported protocol. For any | discarded because of an unknown or unsupported protocol. | |||
interface that does not support protocol multiplexing, | For any interface that does not support protocol | |||
this counter is not present. | multiplexing, this counter is not present. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; | "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; | |||
} | } | |||
leaf out-octets { | leaf out-octets { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of octets transmitted out of the | "The total number of octets transmitted out of the | |||
interface, including framing characters. | interface, including framing characters. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
skipping to change at page 23, line 26 | skipping to change at page 24, line 17 | |||
"The total number of octets transmitted out of the | "The total number of octets transmitted out of the | |||
interface, including framing characters. | interface, including framing characters. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; | "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; | |||
} | } | |||
leaf out-unicast-pkts { | leaf out-unicast-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of packets that higher-level protocols | "The total number of packets that higher-level protocols | |||
requested be transmitted, and which were not addressed | requested be transmitted, and that were not addressed | |||
to a multicast or broadcast address at this sub-layer, | to a multicast or broadcast address at this sub-layer, | |||
including those that were discarded or not sent. | including those that were discarded or not sent. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; | "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; | |||
} | } | |||
skipping to change at page 23, line 41 | skipping to change at page 24, line 33 | |||
to a multicast or broadcast address at this sub-layer, | to a multicast or broadcast address at this sub-layer, | |||
including those that were discarded or not sent. | including those that were discarded or not sent. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; | "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; | |||
} | } | |||
leaf out-broadcast-pkts { | leaf out-broadcast-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of packets that higher-level protocols | "The total number of packets that higher-level protocols | |||
requested be transmitted, and which were addressed to a | requested be transmitted, and that were addressed to a | |||
broadcast address at this sub-layer, including those | broadcast address at this sub-layer, including those | |||
that were discarded or not sent. | that were discarded or not sent. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifHCOutBroadcastPkts"; | ifHCOutBroadcastPkts"; | |||
} | } | |||
leaf out-multicast-pkts { | leaf out-multicast-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of packets that higher-level protocols | "The total number of packets that higher-level protocols | |||
requested be transmitted, and which were addressed to a | requested be transmitted, and that were addressed to a | |||
multicast address at this sub-layer, including those | multicast address at this sub-layer, including those | |||
that were discarded or not sent. For a MAC layer | that were discarded or not sent. For a MAC-layer | |||
protocol, this includes both Group and Functional | protocol, this includes both Group and Functional | |||
addresses. | addresses. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifHCOutMulticastPkts"; | ifHCOutMulticastPkts"; | |||
skipping to change at page 24, line 27 | skipping to change at page 25, line 22 | |||
addresses. | addresses. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
"RFC 2863: The Interfaces Group MIB - | "RFC 2863: The Interfaces Group MIB - | |||
ifHCOutMulticastPkts"; | ifHCOutMulticastPkts"; | |||
} | } | |||
leaf out-discards { | leaf out-discards { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of outbound packets which were chosen to be | "The number of outbound packets that were chosen to be | |||
discarded even though no errors had been detected to | discarded even though no errors had been detected to | |||
prevent their being transmitted. One possible reason | prevent their being transmitted. One possible reason | |||
for discarding such a packet could be to free up buffer | for discarding such a packet could be to free up buffer | |||
space. | space. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
at re-initialization of the management system, and at | at re-initialization of the management system, and at | |||
other times as indicated by the value of | other times as indicated by the value of | |||
'discontinuity-time'."; | 'discontinuity-time'."; | |||
reference | reference | |||
skipping to change at page 26, line 7 | skipping to change at page 26, line 21 | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<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 has been | |||
requested to be made. | made. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-interfaces | URI: urn:ietf:params:xml:ns:yang:ietf-interfaces | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the "YANG Module Names" | |||
registry [RFC6020]. | registry [RFC6020]. | |||
name: ietf-interfaces | name: ietf-interfaces | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-interfaces | namespace: urn:ietf:params:xml:ns:yang:ietf-interfaces | |||
prefix: if | prefix: if | |||
reference: RFC XXXX | reference: RFC 7223 | |||
7. Security Considerations | 7. Security Considerations | |||
The YANG module defined in this memo is designed to be accessed via | The YANG module defined in this memo is designed to be accessed via | |||
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | |||
secure transport layer and the mandatory-to-implement secure | secure transport layer and the mandatory-to-implement secure | |||
transport is SSH [RFC6242]. The NETCONF access control model | transport is SSH [RFC6242]. The NETCONF access control model | |||
[RFC6536] provides the means to restrict access for particular | [RFC6536] provides the means to restrict access for particular | |||
NETCONF users to a pre-configured subset of all available NETCONF | NETCONF users to a pre-configured subset of all available NETCONF | |||
protocol operations and content. | protocol operations and content. | |||
skipping to change at page 27, line 27 | skipping to change at page 27, line 12 | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., <edit-config>) | in some network environments. Write operations (e.g., <edit-config>) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability: | and their sensitivity/vulnerability: | |||
/interfaces/interface: This list specifies the configured interfaces | /interfaces/interface: This list specifies the configured interfaces | |||
on a device. Unauthorized access to this list could cause the | on a device. Unauthorized access to this list could cause the | |||
device to ignore packets it should receive and process. | device to ignore packets it should receive and process. | |||
/interfaces/interface/enabled: This leaf controls if an interface is | /interfaces/interface/enabled: This leaf controls whether an | |||
enabled or not. Unauthorized access to this leaf could cause the | interface is enabled or not. Unauthorized access to this leaf | |||
device to ignore packets it should receive and process. | could cause the device to ignore packets it should receive and | |||
process. | ||||
8. Acknowledgments | 8. Acknowledgments | |||
The author wishes to thank Alexander Clemm, Per Hedeland, Ladislav | The author wishes to thank Alexander Clemm, Per Hedeland, Ladislav | |||
Lhotka, and Juergen Schoenwaelder for their helpful comments. | Lhotka, and Juergen Schoenwaelder for their helpful comments. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[I-D.ietf-netmod-iana-if-type] | ||||
Bjorklund, M., "IANA Interface Type and Address Family | ||||
YANG Modules", draft-ietf-netmod-iana-if-type-06 (work in | ||||
progress), April 2013. | ||||
[I-D.ietf-netmod-rfc6021-bis] | ||||
Schoenwaelder, J., "Common YANG Data Types", | ||||
draft-ietf-netmod-rfc6021-bis-02 (work in progress), | ||||
May 2013. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group | [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group | |||
MIB", RFC 2863, June 2000. | MIB", RFC 2863, June 2000. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
January 2004. | January 2004. | |||
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | |||
Network Configuration Protocol (NETCONF)", RFC 6020, | Network Configuration Protocol (NETCONF)", RFC 6020, | |||
October 2010. | October 2010. | |||
9.2. Informative References | [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | |||
July 2013. | ||||
[RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. | 9.2. Informative References | |||
Schoenwaelder, Ed., "Textual Conventions for SMIv2", | ||||
STD 58, RFC 2579, April 1999. | ||||
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | |||
Bierman, "Network Configuration Protocol (NETCONF)", | Bierman, "Network Configuration Protocol (NETCONF)", | |||
RFC 6241, June 2011. | RFC 6241, June 2011. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, June 2011. | Shell (SSH)", RFC 6242, June 2011. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
March 2012. | March 2012. | |||
[RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", | ||||
RFC 7224, May 2014. | ||||
Appendix A. Example: Ethernet Interface Module | Appendix A. Example: Ethernet Interface Module | |||
This section gives a simple example of how an Ethernet interface | This section gives a simple example of how an Ethernet interface | |||
module could be defined. It demonstrates how media-specific | module could be defined. It demonstrates how media-specific | |||
configuration parameters can be conditionally augmented to the | configuration parameters can be conditionally augmented to the | |||
generic interface list. It also shows how operational state | generic interface list. It also shows how operational state | |||
parameters can be conditionally augmented to the operational | parameters can be conditionally augmented to the operational | |||
interface list. The example is not intended as a complete module for | interface list. The example is not intended as a complete module for | |||
ethernet configuration. | Ethernet configuration. | |||
module ex-ethernet { | module ex-ethernet { | |||
namespace "http://example.com/ethernet"; | namespace "http://example.com/ethernet"; | |||
prefix "eth"; | prefix "eth"; | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix if; | prefix if; | |||
} | } | |||
import iana-if-type { | ||||
prefix ianaift; | ||||
} | ||||
// configuration parameters for ethernet interfaces | // configuration parameters for Ethernet interfaces | |||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
when "if:type = 'ethernetCsmacd'"; | when "if:type = 'ianaift:ethernetCsmacd'"; | |||
container ethernet { | container ethernet { | |||
choice transmission-params { | choice transmission-params { | |||
case auto { | case auto { | |||
leaf auto-negotiate { | leaf auto-negotiate { | |||
type empty; | type empty; | |||
} | } | |||
} | } | |||
case manual { | case manual { | |||
leaf duplex { | leaf duplex { | |||
skipping to change at page 30, line 51 | skipping to change at page 30, line 14 | |||
leaf speed { | leaf speed { | |||
type enumeration { | type enumeration { | |||
enum "10Mb"; | enum "10Mb"; | |||
enum "100Mb"; | enum "100Mb"; | |||
enum "1Gb"; | enum "1Gb"; | |||
enum "10Gb"; | enum "10Gb"; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
// other ethernet specific params... | // other Ethernet-specific params... | |||
} | } | |||
} | } | |||
// operational state parameters for ethernet interfaces | // operational state parameters for Ethernet interfaces | |||
augment "/if:interfaces-state/if:interface" { | augment "/if:interfaces-state/if:interface" { | |||
when "if:type = 'ethernetCsmacd'"; | when "if:type = 'ianaift:ethernetCsmacd'"; | |||
container ethernet { | container ethernet { | |||
leaf duplex { | leaf duplex { | |||
type enumeration { | type enumeration { | |||
enum "half"; | enum "half"; | |||
enum "full"; | enum "full"; | |||
} | } | |||
} | } | |||
// other ethernet specific params... | // other Ethernet-specific params... | |||
} | } | |||
} | } | |||
} | } | |||
Appendix B. Example: Ethernet Bonding Interface Module | Appendix B. Example: Ethernet Bonding Interface Module | |||
This section gives an example of how interface layering can be | This section gives an example of how interface layering can be | |||
defined. An ethernet bonding interface is defined, which bonds | defined. An Ethernet bonding interface that bonds several Ethernet | |||
several ethernet interfaces into one logical interface. | interfaces into one logical interface is defined. | |||
module ex-ethernet-bonding { | module ex-ethernet-bonding { | |||
namespace "http://example.com/ethernet-bonding"; | namespace "http://example.com/ethernet-bonding"; | |||
prefix "bond"; | prefix "bond"; | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix if; | prefix if; | |||
} | } | |||
import iana-if-type { | ||||
prefix ianaift; | ||||
} | ||||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
when "if:type = 'ieee8023adLag'"; | when "if:type = 'ianaift:ieee8023adLag'"; | |||
leaf-list slave-if { | leaf-list slave-if { | |||
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 = 'ianaift:ethernetCsmacd'" { | |||
description | description | |||
"The type of a slave interface must be ethernet."; | "The type of a slave interface must be 'ethernetCsmacd'."; | |||
} | } | |||
} | } | |||
leaf bonding-mode { | leaf bonding-mode { | |||
type enumeration { | type enumeration { | |||
enum round-robin; | enum round-robin; | |||
enum active-backup; | enum active-backup; | |||
enum broadcast; | enum broadcast; | |||
} | } | |||
} | } | |||
// other bonding config params, failover times etc. | // other bonding config params, failover times, etc. | |||
} | } | |||
} | } | |||
Appendix C. Example: VLAN Interface Module | Appendix C. Example: VLAN Interface Module | |||
This section gives an example of how a vlan interface module can be | This section gives an example of how a VLAN interface module can be | |||
defined. | defined. | |||
module ex-vlan { | module ex-vlan { | |||
namespace "http://example.com/vlan"; | namespace "http://example.com/vlan"; | |||
prefix "vlan"; | prefix "vlan"; | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix if; | prefix if; | |||
} | } | |||
import iana-if-type { | ||||
prefix ianaift; | ||||
} | ||||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
when "if:type = 'ethernetCsmacd' or | when "if:type = 'ianaift:ethernetCsmacd' or | |||
if:type = 'ieee8023adLag'"; | if:type = 'ianaift:ieee8023adLag'"; | |||
leaf vlan-tagging { | leaf vlan-tagging { | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
} | } | |||
} | } | |||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
when "if:type = 'l2vlan'"; | when "if:type = 'ianaift:l2vlan'"; | |||
leaf base-interface { | leaf base-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
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 | description | |||
"If a vlan-id is defined, a base-interface must | "If a vlan-id is defined, a base-interface must | |||
be specified."; | 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 | |||
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" | xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" | |||
message-id="101"> | message-id="101"> | |||
<data> | <data> | |||
<interfaces | ||||
xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | ||||
xmlns:vlan="http://example.com/vlan"> | ||||
<interface> | <interfaces | |||
<name>eth0</name> | xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | |||
<type>ethernetCsmacd</type> | xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type" | |||
<enabled>false</enabled> | xmlns:vlan="http://example.com/vlan"> | |||
</interface> | ||||
<interface> | <interface> | |||
<name>eth1</name> | <name>eth0</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
<enabled>true</enabled> | <enabled>false</enabled> | |||
<vlan:vlan-tagging>true</vlan:vlan-tagging> | </interface> | |||
</interface> | <interface> | |||
<name>eth1</name> | ||||
<type>ianaift:ethernetCsmacd</type> | ||||
<enabled>true</enabled> | ||||
<vlan:vlan-tagging>true</vlan:vlan-tagging> | ||||
</interface> | ||||
<interface> | <interface> | |||
<name>eth1.10</name> | <name>eth1.10</name> | |||
<type>l2vlan</type> | <type>ianaift:l2vlan</type> | |||
<enabled>true</enabled> | <enabled>true</enabled> | |||
<vlan:base-interface>eth1</vlan:base-interface> | <vlan:base-interface>eth1</vlan:base-interface> | |||
<vlan:vlan-id>10</vlan:vlan-id> | <vlan:vlan-id>10</vlan:vlan-id> | |||
</interface> | </interface> | |||
<interface> | <interface> | |||
<name>lo1</name> | <name>lo1</name> | |||
<type>softwareLoopback</type> | <type>ianaift:softwareLoopback</type> | |||
<enabled>true</enabled> | <enabled>true</enabled> | |||
</interface> | </interface> | |||
</interfaces> | </interfaces> | |||
<interfaces-state | <interfaces-state | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | |||
xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> | ||||
<interface> | <interface> | |||
<name>eth0</name> | <name>eth0</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
<admin-status>down</admin-status> | <admin-status>down</admin-status> | |||
<oper-status>down</oper-status> | <oper-status>down</oper-status> | |||
<if-index>2</if-index> | <if-index>2</if-index> | |||
<phys-address>00:01:02:03:04:05</phys-address> | <phys-address>00:01:02:03:04:05</phys-address> | |||
<statistics> | <statistics> | |||
<discontinuity-time>2013-04-01T03:00:00Z</discontinuity-time> | <discontinuity-time> | |||
<!-- counters now shown here --> | 2013-04-01T03:00:00+00:00 | |||
</statistics> | </discontinuity-time> | |||
</interface> | <!-- counters now shown here --> | |||
</statistics> | ||||
</interface> | ||||
<interface> | <interface> | |||
<name>eth1</name> | <name>eth1</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
<admin-status>up</admin-status> | <admin-status>up</admin-status> | |||
<oper-status>up</oper-status> | <oper-status>up</oper-status> | |||
<if-index>7</if-index> | <if-index>7</if-index> | |||
<phys-address>00:01:02:03:04:06</phys-address> | <phys-address>00:01:02:03:04:06</phys-address> | |||
<higher-layer-if>eth1.10</higher-layer-if> | <higher-layer-if>eth1.10</higher-layer-if> | |||
<statistics> | <statistics> | |||
<discontinuity-time>2013-04-01T03:00:00Z</discontinuity-time> | <discontinuity-time> | |||
<!-- counters now shown here --> | 2013-04-01T03:00:00+00:00 | |||
</statistics> | </discontinuity-time> | |||
</interface> | <!-- counters now shown here --> | |||
</statistics> | ||||
</interface> | ||||
<interface> | <interface> | |||
<name>eth1.10</name> | <name>eth1.10</name> | |||
<type>l2vlan</type> | <type>ianaift:l2vlan</type> | |||
<admin-status>up</admin-status> | <admin-status>up</admin-status> | |||
<oper-status>up</oper-status> | <oper-status>up</oper-status> | |||
<if-index>9</if-index> | <if-index>9</if-index> | |||
<lower-layer-if>eth1</lower-layer-if> | <lower-layer-if>eth1</lower-layer-if> | |||
<statistics> | <statistics> | |||
<discontinuity-time>2013-04-01T03:00:00Z</discontinuity-time> | <discontinuity-time> | |||
<!-- counters now shown here --> | 2013-04-01T03:00:00+00:00 | |||
</statistics> | </discontinuity-time> | |||
</interface> | <!-- counters now shown here --> | |||
</statistics> | ||||
</interface> | ||||
<!-- This interface is not configured --> | <!-- This interface is not configured --> | |||
<interface> | <interface> | |||
<name>eth2</name> | <name>eth2</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
<admin-status>down</admin-status> | <admin-status>down</admin-status> | |||
<oper-status>down</oper-status> | <oper-status>down</oper-status> | |||
<if-index>8</if-index> | <if-index>8</if-index> | |||
<phys-address>00:01:02:03:04:07</phys-address> | <phys-address>00:01:02:03:04:07</phys-address> | |||
<statistics> | <statistics> | |||
<discontinuity-time>2013-04-01T03:00:00Z</discontinuity-time> | <discontinuity-time> | |||
<!-- counters now shown here --> | 2013-04-01T03:00:00+00:00 | |||
</statistics> | </discontinuity-time> | |||
</interface> | <!-- counters now shown here --> | |||
</statistics> | ||||
</interface> | ||||
<interface> | <interface> | |||
<name>lo1</name> | <name>lo1</name> | |||
<type>softwareLoopback</type> | <type>ianaift:softwareLoopback</type> | |||
<admin-status>up</admin-status> | <admin-status>up</admin-status> | |||
<oper-status>up</oper-status> | <oper-status>up</oper-status> | |||
<if-index>1</if-index> | <if-index>1</if-index> | |||
<statistics> | <statistics> | |||
<discontinuity-time>2013-04-01T03:00:00Z</discontinuity-time> | <discontinuity-time> | |||
<!-- counters now shown here --> | 2013-04-01T03:00:00+00:00 | |||
</statistics> | </discontinuity-time> | |||
</interface> | <!-- counters now shown here --> | |||
</statistics> | ||||
</interface> | ||||
</interfaces-state> | </interfaces-state> | |||
</data> | </data> | |||
</rpc-reply> | </rpc-reply> | |||
Appendix E. Examples: Interface Naming Schemes | Appendix E. Examples: Interface Naming Schemes | |||
This section gives examples of some implementation strategies. | This section gives examples of some implementation strategies. | |||
The examples make use of the example data model "ex-vlan" (see | The examples make use of the example data model "ex-vlan" (see | |||
Appendix C) to show how logical interfaces can be configured. | Appendix C) to show how user-controlled interfaces can be configured. | |||
E.1. Router with Restricted Interface Names | E.1. Router with Restricted Interface Names | |||
In this example, a router has support for 4 line cards, each with 8 | In this example, a router has support for 4 line cards, each with 8 | |||
ports. The slots for the cards are physically numbered from 0 to 3, | ports. The slots for the cards are physically numbered from 0 to 3, | |||
and the ports on each card from 0 to 7. Each card has fast- or | and the ports on each card from 0 to 7. Each card has Fast Ethernet | |||
gigabit-ethernet ports. | or Gigabit Ethernet ports. | |||
The device-specific names for these physical interfaces are | The device-specific names for these physical interfaces are | |||
"fastethernet-N/M" or "gigabitethernet-N/M". | "fastethernet-N/M" or "gigabitethernet-N/M". | |||
The name of a vlan interface is restricted to the form | The name of a VLAN interface is restricted to the form | |||
"<physical-interface-name>.<subinterface-number>". | "<physical-interface-name>.<subinterface-number>". | |||
It is assumed that the operator is aware of this naming scheme. The | It is assumed that the operator is aware of this naming scheme. The | |||
implementation auto-initializes the value for "type" based on the | implementation auto-initializes the value for "type" based on the | |||
interface name. | interface name. | |||
The NETCONF server does not advertise the 'arbitrary-names' feature | The NETCONF server does not advertise the "arbitrary-names" feature | |||
in the <hello> message. | in the <hello> message. | |||
An operator can configure a physical interface by sending an | An operator can configure a physical interface by sending an | |||
<edit-config> containing: | <edit-config> containing: | |||
<interface nc:operation="create"> | <interface nc:operation="create"> | |||
<name>fastethernet-1/0</name> | <name>fastethernet-1/0</name> | |||
</interface> | </interface> | |||
When the server processes this request, it will set the leaf "type" | When the server processes this request, it will set the leaf "type" | |||
to "ethernetCsmacd". Thus, if the client performs a <get-config> | to "ianaift:ethernetCsmacd". Thus, if the client performs a | |||
right after the <edit-config> above, it will get: | <get-config> right after the <edit-config> above, it will get: | |||
<interface> | <interface> | |||
<name>fastethernet-1/0</name> | <name>fastethernet-1/0</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
</interface> | </interface> | |||
The client can configure a vlan interface by sending an <edit-config> | The client can configure a VLAN interface by sending an <edit-config> | |||
containing: | containing: | |||
<interface nc:operation="create"> | <interface nc:operation="create"> | |||
<name>fastethernet-1/0.10005</name> | <name>fastethernet-1/0.10005</name> | |||
<type>l2-vlan</type> | <type>ianaift:l2vlan</type> | |||
<vlan:base-interface>fastethernet-1/0</vlan:base-interface> | <vlan:base-interface>fastethernet-1/0</vlan:base-interface> | |||
<vlan:vlan-id>5</vlan:vlan-id> | <vlan:vlan-id>5</vlan:vlan-id> | |||
</interface> | </interface> | |||
If the client tries to change the type of the physical interface with | If the client tries to change the type of the physical interface with | |||
an <edit-config> containing: | an <edit-config> containing: | |||
<interface nc:operation="merge"> | <interface nc:operation="merge"> | |||
<name>fastethernet-1/0</name> | <name>fastethernet-1/0</name> | |||
<type>tunnel</type> | <type>ianaift:tunnel</type> | |||
</interface> | </interface> | |||
then the server will reply with an "invalid-value" error, since the | then the server will reply with an "invalid-value" error, since the | |||
new type does not match the name. | new type does not match the name. | |||
E.2. Router with Arbitrary Interface Names | E.2. Router with Arbitrary Interface Names | |||
In this example, a router has support for 4 line cards, each with 8 | In this example, a router has support for 4 line cards, each with 8 | |||
ports. The slots for the cards are physically numbered from 0 to 3, | ports. The slots for the cards are physically numbered from 0 to 3, | |||
and the ports on each card from 0 to 7. Each card has fast- or | and the ports on each card from 0 to 7. Each card has Fast Ethernet | |||
gigabit-ethernet ports. | or Gigabit Ethernet ports. | |||
The device-specific names for these physical interfaces are | The device-specific names for these physical interfaces are | |||
"fastethernet-N/M" or "gigabitethernet-N/M". | "fastethernet-N/M" or "gigabitethernet-N/M". | |||
The implementation does not restrict the logical interface names. | The implementation does not restrict the user-controlled interface | |||
This allows to more easily apply the interface configuration to a | names. This allows an operator to more easily apply the interface | |||
different interface. However, the additional level of indirection | configuration to a different interface. However, the additional | |||
also makes it a bit more complex to map interface names found in | level of indirection also makes it a bit more complex to map | |||
other protocols to configuration entries. | interface names found in other protocols to configuration entries. | |||
The NETCONF server advertises the 'arbitrary-names' feature in the | The NETCONF server advertises the "arbitrary-names" feature in the | |||
<hello> message. | <hello> message. | |||
Physical interfaces are configured as in Appendix E.1. | Physical interfaces are configured as in Appendix E.1. | |||
An operator can configure a logical interface by sending an | An operator can configure a VLAN interface by sending an | |||
<edit-config> containing: | <edit-config> containing: | |||
<interface nc:operation="create"> | <interface nc:operation="create"> | |||
<name>acme-interface</name> | <name>acme-interface</name> | |||
<type>l2-vlan</type> | <type>ianaift:l2vlan</type> | |||
<vlan:base-interface>fastethernet-1/0</vlan:base-interface> | <vlan:base-interface>fastethernet-1/0</vlan:base-interface> | |||
<vlan:vlan-id>5</vlan:vlan-id> | <vlan:vlan-id>5</vlan:vlan-id> | |||
</interface> | </interface> | |||
If necessary, the operator can move the configuration named | If necessary, the operator can move the configuration named | |||
"acme-interface" over to a different physical interface with an | "acme-interface" over to a different physical interface with an | |||
<edit-config> containing: | <edit-config> containing: | |||
<interface nc:operation="merge"> | <interface nc:operation="merge"> | |||
<name>acme-interface</name> | <name>acme-interface</name> | |||
<vlan:base-interface>fastethernet-1/1</vlan:base-interface> | <vlan:base-interface>fastethernet-1/1</vlan:base-interface> | |||
</interface> | </interface> | |||
E.3. Ethernet Switch with Restricted Interface Names | E.3. Ethernet Switch with Restricted Interface Names | |||
In this example, an ethernet switch has a number of ports, each port | In this example, an Ethernet switch has a number of ports, each | |||
identified by a simple port number. | identified by a simple port number. | |||
The device-specific names for the physical interfaces are numbers | The device-specific names for the physical interfaces are numbers | |||
that match the physical port number. | that match the physical port number. | |||
An operator can configure a physical interface by sending an | An operator can configure a physical interface by sending an | |||
<edit-config> containing: | <edit-config> containing: | |||
<interface nc:operation="create"> | <interface nc:operation="create"> | |||
<name>6</name> | <name>6</name> | |||
</interface> | </interface> | |||
When the server processes this request, it will set the leaf "type" | When the server processes this request, it will set the leaf "type" | |||
to "ethernetCsmacd". Thus, if the client performs a <get-config> | to "ianaift:ethernetCsmacd". Thus, if the client performs a | |||
right after the <edit-config> above, it will get: | <get-config> right after the <edit-config> above, it will get: | |||
<interface> | <interface> | |||
<name>6</name> | <name>6</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
</interface> | </interface> | |||
E.4. Generic Host with Restricted Interface Names | E.4. Generic Host with Restricted Interface Names | |||
In this example, a generic host has interfaces named by the kernel. | In this example, a generic host has interfaces named by the kernel. | |||
The system identifies the physical interface by the name assigned by | The system identifies the physical interface by the name assigned by | |||
the operating system to the interface. | the operating system to the interface. | |||
The name of a vlan interface is restricted to the form | The name of a VLAN interface is restricted to the form | |||
"<physical-interface-name>:<vlan-number>". | "<physical-interface-name>:<vlan-number>". | |||
The NETCONF server does not advertise the 'arbitrary-names' feature | The NETCONF server does not advertise the "arbitrary-names" feature | |||
in the <hello> message. | in the <hello> message. | |||
An operator can configure an interface by sending an <edit-config> | An operator can configure an interface by sending an <edit-config> | |||
containing: | containing: | |||
<interface nc:operation="create"> | <interface nc:operation="create"> | |||
<name>eth8</name> | <name>eth8</name> | |||
</interface> | </interface> | |||
When the server processes this request, it will set the leaf "type" | When the server processes this request, it will set the leaf "type" | |||
to "ethernetCsmacd". Thus, if the client performs a <get-config> | to "ianaift:ethernetCsmacd". Thus, if the client performs a | |||
right after the <edit-config> above, it will get: | <get-config> right after the <edit-config> above, it will get: | |||
<interface> | <interface> | |||
<name>eth8</name> | <name>eth8</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
</interface> | </interface> | |||
The client can configure a vlan interface by sending an <edit-config> | The client can configure a VLAN interface by sending an <edit-config> | |||
containing: | containing: | |||
<interface nc:operation="create"> | <interface nc:operation="create"> | |||
<name>eth8:5</name> | <name>eth8:5</name> | |||
<type>l2-vlan</type> | <type>ianaift:l2vlan</type> | |||
<vlan:base-interface>eth8</vlan:base-interface> | <vlan:base-interface>eth8</vlan:base-interface> | |||
<vlan:vlan-id>5</vlan:vlan-id> | <vlan:vlan-id>5</vlan:vlan-id> | |||
</interface> | </interface> | |||
E.5. Generic Host with Arbitrary Interface Names | E.5. Generic Host with Arbitrary Interface Names | |||
In this example, a generic host has interfaces named by the kernel. | In this example, a generic host has interfaces named by the kernel. | |||
The system identifies the physical interface by the name assigned by | The system identifies the physical interface by the name assigned by | |||
the operating system to the interface. | the operating system to the interface. | |||
The implementation does not restrict the logical interface names. | The implementation does not restrict the user-controlled interface | |||
This allows to more easily apply the interface configuration to a | names. This allows an operator to more easily apply the interface | |||
different interface. However, the additional level of indirection | configuration to a different interface. However, the additional | |||
also makes it a bit more complex to map interface names found in | level of indirection also makes it a bit more complex to map | |||
other protocols to configuration entries. | interface names found in other protocols to configuration entries. | |||
The NETCONF server advertises the 'arbitrary-names' feature in the | The NETCONF server advertises the "arbitrary-names" feature in the | |||
<hello> message. | <hello> message. | |||
Physical interfaces are configured as in Appendix E.4. | Physical interfaces are configured as in Appendix E.4. | |||
An operator can configure a logical interface by sending an | An operator can configure a VLAN interface by sending an | |||
<edit-config> containing: | <edit-config> containing: | |||
<interface nc:operation="create"> | <interface nc:operation="create"> | |||
<name>acme-interface</name> | <name>acme-interface</name> | |||
<type>l2-vlan</type> | <type>ianaift:l2vlan</type> | |||
<vlan:base-interface>eth8</vlan:base-interface> | <vlan:base-interface>eth8</vlan:base-interface> | |||
<vlan:vlan-id>5</vlan:vlan-id> | <vlan:vlan-id>5</vlan:vlan-id> | |||
</interface> | </interface> | |||
If necessary, the operator can move the configuration named | If necessary, the operator can move the configuration named | |||
"acme-interface" over to a different physical interface with an | "acme-interface" over to a different physical interface with an | |||
<edit-config> containing: | <edit-config> containing: | |||
<interface nc:operation="merge"> | <interface nc:operation="merge"> | |||
<name>acme-interface</name> | <name>acme-interface</name> | |||
<vlan:base-interface>eth3</vlan:base-interface> | <vlan:base-interface>eth3</vlan:base-interface> | |||
</interface> | </interface> | |||
skipping to change at page 42, line 5 | skipping to change at page 39, line 41 | |||
If necessary, the operator can move the configuration named | If necessary, the operator can move the configuration named | |||
"acme-interface" over to a different physical interface with an | "acme-interface" over to a different physical interface with an | |||
<edit-config> containing: | <edit-config> containing: | |||
<interface nc:operation="merge"> | <interface nc:operation="merge"> | |||
<name>acme-interface</name> | <name>acme-interface</name> | |||
<vlan:base-interface>eth3</vlan:base-interface> | <vlan:base-interface>eth3</vlan:base-interface> | |||
</interface> | </interface> | |||
Appendix F. ChangeLog | ||||
RFC Editor: remove this section upon publication as an RFC. | ||||
F.1. Version -11 | ||||
o Separated the operational state from the configuration. | ||||
o Removed 'location', and instead use the name to identify physical | ||||
interfaces. | ||||
o Added the feature 'pre-provisioning'. | ||||
o Made 'oper-status' and 'if-index' mandatory in the data model. | ||||
o Added 'admin-status'. | ||||
o Clarified why description can be mapped to ifAlias. | ||||
o Clarified that 64-bit counters only are used, where there exist | ||||
64-bit and 32-bit counters in IF-MIB. | ||||
o Updated Security Considerations section with a reference to NACM. | ||||
F.2. Version -08 | ||||
o Removed the mtu leaf. | ||||
o Added examples of different interface naming schemes. | ||||
F.3. Version -07 | ||||
o Made leaf speed config false. | ||||
F.4. 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. | ||||
F.5. Version -05 | ||||
o Added an Informative References section. | ||||
o Updated the Security Considerations section. | ||||
o Clarified the behavior of an NETCONF server when invalid values | ||||
are received. | ||||
F.6. Version -04 | ||||
o Clarified why ifPromiscuousMode is not part of this data model. | ||||
o Added a table that shows the mapping between this YANG data model | ||||
and IF-MIB. | ||||
F.7. Version -03 | ||||
o Added the section Relationship to the IF-MIB. | ||||
o Changed if-index to be a leaf instead of leaf-list. | ||||
o Explained the notation used in the data model tree picture. | ||||
F.8. Version -02 | ||||
o Editorial fixes | ||||
F.9. Version -01 | ||||
o Changed leaf "if-admin-status" to leaf "enabled". | ||||
o Added Security Considerations | ||||
Author's Address | Author's Address | |||
Martin Bjorklund | Martin Bjorklund | |||
Tail-f Systems | Tail-f Systems | |||
Email: mbj@tail-f.com | EMail: mbj@tail-f.com | |||
End of changes. 183 change blocks. | ||||
530 lines changed or deleted | 526 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/ |