draft-ietf-netmod-interfaces-cfg-12.txt | draft-ietf-netmod-interfaces-cfg-13.txt | |||
---|---|---|---|---|
Network Working Group M. Bjorklund | Network Working Group M. Bjorklund | |||
Internet-Draft Tail-f Systems | Internet-Draft Tail-f Systems | |||
Intended status: Standards Track July 4, 2013 | Intended status: Standards Track November 7, 2013 | |||
Expires: January 5, 2014 | Expires: May 11, 2014 | |||
A YANG Data Model for Interface Management | A YANG Data Model for Interface Management | |||
draft-ietf-netmod-interfaces-cfg-12 | draft-ietf-netmod-interfaces-cfg-13 | |||
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, state data and counters | |||
for the collection of statistics. | for the collection of statistics. | |||
Status of this Memo | Status of this Memo | |||
skipping to change at page 1, line 34 | skipping to change at page 1, line 34 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 5, 2014. | This Internet-Draft will expire on May 11, 2014. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 26 | skipping to change at page 2, line 26 | |||
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 . . . . . . . . . . . . . . . . . . . 27 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 29 | 9.1. Normative References . . . . . . . . . . . . . . . . . . . 29 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . . 29 | 9.2. Informative References . . . . . . . . . . . . . . . . . . 29 | |||
Appendix A. Example: Ethernet Interface Module . . . . . . . . . 30 | Appendix A. Example: Ethernet Interface Module . . . . . . . . . 30 | |||
Appendix B. Example: Ethernet Bonding Interface Module . . . . . 32 | Appendix B. Example: Ethernet Bonding Interface Module . . . . . 32 | |||
Appendix C. Example: VLAN Interface Module . . . . . . . . . . . 33 | Appendix C. Example: VLAN Interface Module . . . . . . . . . . . 33 | |||
Appendix D. Example: NETCONF <get> reply . . . . . . . . . . . . 34 | Appendix D. Example: NETCONF <get> reply . . . . . . . . . . . . 35 | |||
Appendix E. Examples: Interface Naming Schemes . . . . . . . . . 37 | Appendix E. Examples: Interface Naming Schemes . . . . . . . . . 38 | |||
E.1. Router with Restricted Interface Names . . . . . . . . . . 37 | E.1. Router with Restricted Interface Names . . . . . . . . . . 38 | |||
E.2. Router with Arbitrary Interface Names . . . . . . . . . . 38 | E.2. Router with Arbitrary Interface Names . . . . . . . . . . 39 | |||
E.3. Ethernet Switch with Restricted Interface Names . . . . . 39 | E.3. Ethernet Switch with Restricted Interface Names . . . . . 40 | |||
E.4. Generic Host with Restricted Interface Names . . . . . . . 39 | E.4. Generic Host with Restricted Interface Names . . . . . . . 40 | |||
E.5. Generic Host with Arbitrary Interface Names . . . . . . . 40 | E.5. Generic Host with Arbitrary Interface Names . . . . . . . 41 | |||
Appendix F. ChangeLog . . . . . . . . . . . . . . . . . . . . . . 42 | Appendix F. ChangeLog . . . . . . . . . . . . . . . . . . . . . . 43 | |||
F.1. Version -11 . . . . . . . . . . . . . . . . . . . . . . . 42 | F.1. Version -13 . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
F.2. Version -08 . . . . . . . . . . . . . . . . . . . . . . . 42 | F.2. Version -11 . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
F.3. Version -07 . . . . . . . . . . . . . . . . . . . . . . . 42 | F.3. Version -08 . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
F.4. Version -06 . . . . . . . . . . . . . . . . . . . . . . . 42 | F.4. Version -07 . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
F.5. Version -05 . . . . . . . . . . . . . . . . . . . . . . . 42 | F.5. Version -06 . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
F.6. Version -04 . . . . . . . . . . . . . . . . . . . . . . . 43 | F.6. Version -05 . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
F.7. Version -03 . . . . . . . . . . . . . . . . . . . . . . . 43 | F.7. Version -04 . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
F.8. Version -02 . . . . . . . . . . . . . . . . . . . . . . . 43 | F.8. Version -03 . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
F.9. Version -01 . . . . . . . . . . . . . . . . . . . . . . . 43 | F.9. Version -02 . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 44 | F.10. Version -01 . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 45 | ||||
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 | |||
skipping to change at page 4, line 28 | skipping to change at page 4, line 28 | |||
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" 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 | |||
skipping to change at page 6, line 14 | skipping to change at page 6, line 14 | |||
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 51 | skipping to change at page 6, line 51 | |||
+--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 [I-D.ietf-netmod-iana-if-type] defines YANG | ||||
identities for the interface types in the IANA-maintained "ifType | ||||
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 possibly use the "type" leaf to make the | interface lists, and possibly use the "type" leaf to make the | |||
augmentation 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 system-controlled interfaces, the "name" is the device-specific | For system-controlled interfaces, the "name" is the device-specific | |||
name of the interface. The 'config false' list "/interfaces-state/ | name of the interface. The 'config false' list "/interfaces-state/ | |||
skipping to change at page 8, line 27 | skipping to change at page 8, line 30 | |||
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 lower | |||
layers. | 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 ethernet"; | |||
} | } | |||
} | } | |||
// 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", | Two state data leaf-lists, "higher-layer-if" and "lower-layer-if", | |||
represent a read-only view of the interface layering hierarchy. | represent a read-only view of the interface layering hierarchy. | |||
skipping to change at page 11, line 7 | skipping to change at page 11, line 7 | |||
| 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 data nodes and related IF-MIB objects | |||
5. Interfaces YANG Module | 5. Interfaces YANG Module | |||
This YANG module imports typedefs from [I-D.ietf-netmod-rfc6021-bis] | This YANG module imports typedefs from [RFC6991]. | |||
and [I-D.ietf-netmod-iana-if-type]. | ||||
RFC Ed.: update the date below with the date of RFC publication and | RFC Ed.: update the date below with the date of RFC publication and | |||
remove this note. | remove this note. | |||
<CODE BEGINS> file "ietf-interfaces@2013-07-04.yang" | <CODE BEGINS> file "ietf-interfaces@2013-11-07.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: David Kessens | |||
<mailto:david.kessens@nsn.com> | <mailto:david.kessens@nsn.com> | |||
skipping to change at page 12, line 23 | skipping to change at page 12, line 19 | |||
// RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision 2013-07-04 { | revision 2013-07-04 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Interface Management"; | "RFC XXXX: A YANG Data Model for Interface Management"; | |||
} | } | |||
/* Typedefs */ | /* | |||
* Typedefs | ||||
*/ | ||||
typedef interface-ref { | typedef interface-ref { | |||
type leafref { | type leafref { | |||
path "/if:interfaces/if:interface/if:name"; | path "/if:interfaces/if:interface/if:name"; | |||
} | } | |||
description | description | |||
"This type is used by data models that need to reference | "This type is used by data models that need to reference | |||
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 user-controlled | "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 | |||
skipping to change at page 13, line 18 | skipping to change at page 13, line 28 | |||
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 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. | |||
skipping to change at page 15, line 24 | skipping to change at page 15, line 36 | |||
'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 39 | skipping to change at page 17, line 4 | |||
If this node is not configured, the value 'enabled' is | If this node is not configured, the value 'enabled' is | |||
operationally used by the server for interfaces which do | operationally used by the server for interfaces which do | |||
not operate on top of any other interface (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 | |||
skipping to change at page 17, line 18 | skipping to change at page 17, line 34 | |||
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."; | This leaf MAY be mapped to ifName by an implementation."; | |||
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 29, line 9 | skipping to change at page 29, line 9 | |||
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 YANG Module", | ||||
draft-ietf-netmod-iana-if-type-07 (work in progress), | ||||
July 2013. | ||||
[I-D.ietf-netmod-rfc6021-bis] | ||||
Schoenwaelder, J., "Common YANG Data Types", | ||||
draft-ietf-netmod-rfc6021-bis-03 (work in progress), | ||||
June 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. | |||
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | ||||
July 2013. | ||||
9.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-netmod-iana-if-type] | ||||
Bjorklund, M., "IANA Interface Type YANG Module", | ||||
draft-ietf-netmod-iana-if-type-08 (work in progress), | ||||
November 2013. | ||||
[RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. | [RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. | |||
Schoenwaelder, Ed., "Textual Conventions for SMIv2", | Schoenwaelder, Ed., "Textual Conventions for SMIv2", | |||
STD 58, RFC 2579, April 1999. | 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. | |||
skipping to change at page 30, line 22 | skipping to change at page 30, line 22 | |||
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:ethernet'"; | |||
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 32, line 18 | skipping to change at page 32, line 18 | |||
defined. An ethernet bonding interface is defined, which bonds | defined. An ethernet bonding interface is defined, which bonds | |||
several ethernet interfaces into one logical interface. | several ethernet interfaces into one logical interface. | |||
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 ethernet."; | |||
} | } | |||
} | } | |||
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; | |||
} | } | |||
skipping to change at page 33, line 17 | skipping to change at page 34, line 12 | |||
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; | ||||
} | ||||
import ex-ethernet { | ||||
prefix eth; | ||||
} | ||||
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 { | |||
skipping to change at page 34, line 17 | skipping to change at page 35, line 17 | |||
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 | <interfaces | |||
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" | ||||
xmlns:vlan="http://example.com/vlan"> | xmlns:vlan="http://example.com/vlan"> | |||
<interface> | <interface> | |||
<name>eth0</name> | <name>eth0</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
<enabled>false</enabled> | <enabled>false</enabled> | |||
</interface> | </interface> | |||
<interface> | <interface> | |||
<name>eth1</name> | <name>eth1</name> | |||
<type>ethernetCsmacd</type> | <type>ianaift:ethernetCsmacd</type> | |||
<enabled>true</enabled> | <enabled>true</enabled> | |||
<vlan:vlan-tagging>true</vlan:vlan-tagging> | <vlan:vlan-tagging>true</vlan:vlan-tagging> | |||
</interface> | </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> | <discontinuity-time> | |||
2013-04-01T03:00:00+00:00 | 2013-04-01T03:00:00+00:00 | |||
</discontinuity-time> | </discontinuity-time> | |||
<!-- counters now shown here --> | <!-- counters now shown here --> | |||
</statistics> | </statistics> | |||
</interface> | </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> | <discontinuity-time> | |||
2013-04-01T03:00:00+00:00 | 2013-04-01T03:00:00+00:00 | |||
</discontinuity-time> | </discontinuity-time> | |||
<!-- counters now shown here --> | <!-- counters now shown here --> | |||
</statistics> | </statistics> | |||
</interface> | </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> | <discontinuity-time> | |||
2013-04-01T03:00:00+00:00 | 2013-04-01T03:00:00+00:00 | |||
</discontinuity-time> | </discontinuity-time> | |||
<!-- counters now shown here --> | <!-- counters now shown here --> | |||
</statistics> | </statistics> | |||
</interface> | </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> | <discontinuity-time> | |||
2013-04-01T03:00:00+00:00 | 2013-04-01T03:00:00+00:00 | |||
</discontinuity-time> | </discontinuity-time> | |||
<!-- counters now shown here --> | <!-- counters now shown here --> | |||
</statistics> | </statistics> | |||
</interface> | </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> | <discontinuity-time> | |||
2013-04-01T03:00:00+00:00 | 2013-04-01T03:00:00+00:00 | |||
</discontinuity-time> | </discontinuity-time> | |||
<!-- counters now shown here --> | <!-- counters now shown here --> | |||
</statistics> | </statistics> | |||
</interface> | </interface> | |||
skipping to change at page 37, line 40 | skipping to change at page 38, line 40 | |||
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- or | |||
skipping to change at page 38, line 49 | skipping to change at page 39, line 49 | |||
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 VLAN 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> | |||
skipping to change at page 39, line 30 | skipping to change at page 40, line 30 | |||
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>". | |||
skipping to change at page 40, line 10 | skipping to change at page 41, line 10 | |||
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. | |||
skipping to change at page 40, line 50 | skipping to change at page 41, line 50 | |||
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 VLAN 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> | |||
Appendix F. ChangeLog | Appendix F. ChangeLog | |||
RFC Editor: remove this section upon publication as an RFC. | RFC Editor: remove this section upon publication as an RFC. | |||
F.1. Version -11 | F.1. Version -13 | |||
o Made the interface type an identity, instead of an enumseration. | ||||
F.2. Version -11 | ||||
o Separated the operational state from the configuration. | o Separated the operational state from the configuration. | |||
o Removed 'location', and instead use the name to identify physical | o Removed 'location', and instead use the name to identify physical | |||
interfaces. | interfaces. | |||
o Added the feature 'pre-provisioning'. | o Added the feature 'pre-provisioning'. | |||
o Made 'oper-status' and 'if-index' mandatory in the data model. | o Made 'oper-status' and 'if-index' mandatory in the data model. | |||
o Added 'admin-status'. | o Added 'admin-status'. | |||
o Clarified why description can be mapped to ifAlias. | o Clarified why description can be mapped to ifAlias. | |||
o Clarified that 64-bit counters only are used, where there exist | o Clarified that 64-bit counters only are used, where there exist | |||
64-bit and 32-bit counters in IF-MIB. | 64-bit and 32-bit counters in IF-MIB. | |||
o Updated Security Considerations section with a reference to NACM. | o Updated Security Considerations section with a reference to NACM. | |||
F.2. Version -08 | F.3. Version -08 | |||
o Removed the mtu leaf. | o Removed the mtu leaf. | |||
o Added examples of different interface naming schemes. | o Added examples of different interface naming schemes. | |||
F.3. Version -07 | F.4. Version -07 | |||
o Made leaf speed config false. | o Made leaf speed config false. | |||
F.4. Version -06 | F.5. Version -06 | |||
o Added oper-status leaf. | o Added oper-status leaf. | |||
o Added leaf-lists higher-layer-if and lower-layer-if, that show the | o Added leaf-lists higher-layer-if and lower-layer-if, that show the | |||
interface layering. | interface layering. | |||
o Added container statistics with counters. | o Added container statistics with counters. | |||
F.5. Version -05 | F.6. Version -05 | |||
o Added an Informative References section. | o Added an Informative References section. | |||
o Updated the Security Considerations section. | o Updated the Security Considerations section. | |||
o Clarified the behavior of an NETCONF server when invalid values | o Clarified the behavior of an NETCONF server when invalid values | |||
are received. | are received. | |||
F.6. Version -04 | F.7. Version -04 | |||
o Clarified why ifPromiscuousMode is not part of this data model. | o Clarified why ifPromiscuousMode is not part of this data model. | |||
o Added a table that shows the mapping between this YANG data model | o Added a table that shows the mapping between this YANG data model | |||
and IF-MIB. | and IF-MIB. | |||
F.7. Version -03 | F.8. Version -03 | |||
o Added the section Relationship to the IF-MIB. | o Added the section Relationship to the IF-MIB. | |||
o Changed if-index to be a leaf instead of leaf-list. | o Changed if-index to be a leaf instead of leaf-list. | |||
o Explained the notation used in the data model tree picture. | o Explained the notation used in the data model tree picture. | |||
F.8. Version -02 | F.9. Version -02 | |||
o Editorial fixes | o Editorial fixes | |||
F.9. Version -01 | F.10. Version -01 | |||
o Changed leaf "if-admin-status" to leaf "enabled". | o Changed leaf "if-admin-status" to leaf "enabled". | |||
o Added Security Considerations | o Added Security Considerations | |||
Author's Address | Author's Address | |||
Martin Bjorklund | Martin Bjorklund | |||
Tail-f Systems | Tail-f Systems | |||
End of changes. 64 change blocks. | ||||
89 lines changed or deleted | 135 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/ |