draft-ietf-netmod-ip-cfg-10.txt | draft-ietf-netmod-ip-cfg-11.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 August 25, 2013 | Intended status: Standards Track October 18, 2013 | |||
Expires: February 26, 2014 | Expires: April 21, 2014 | |||
A YANG Data Model for IP Management | A YANG Data Model for IP Management | |||
draft-ietf-netmod-ip-cfg-10 | draft-ietf-netmod-ip-cfg-11 | |||
Abstract | Abstract | |||
This document defines a YANG data model for management of IP | This document defines a YANG data model for management of IP | |||
implementations. | implementations. | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
skipping to change at page 1, line 31 | skipping to change at page 1, line 31 | |||
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 February 26, 2014. | This Internet-Draft will expire on April 21, 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 11 | skipping to change at page 2, line 11 | |||
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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. IP Data Model . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. IP Data Model . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Relationship to IP-MIB . . . . . . . . . . . . . . . . . . . . 8 | 3. Relationship to IP-MIB . . . . . . . . . . . . . . . . . . . . 7 | |||
4. IP management YANG Module . . . . . . . . . . . . . . . . . . 10 | 4. IP management YANG Module . . . . . . . . . . . . . . . . . . 9 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . . 29 | 8.1. Normative References . . . . . . . . . . . . . . . . . . . 28 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . . 29 | 8.2. Informative References . . . . . . . . . . . . . . . . . . 28 | |||
Appendix A. Example: NETCONF <get> reply . . . . . . . . . . . . 31 | Appendix A. Example: NETCONF <get> reply . . . . . . . . . . . . 30 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 33 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
1. Introduction | 1. Introduction | |||
This document defines a YANG [RFC6020] data model for management of | This document defines a YANG [RFC6020] data model for management of | |||
IP implementations. | IP implementations. | |||
The data model includes configuration and state data. | The data model covers configuration of per-interface IPv4 and IPv6 | |||
parameters, and mappings of IP addresses to link-layer addresses. It | ||||
also provides information about which IP addresses are operationally | ||||
used, and which link-layer mappings exist. | ||||
Parameters to manage IP routing are defined in | Parameters to manage IP routing are defined in | |||
[I-D.ietf-netmod-routing-cfg]. | [I-D.ietf-netmod-routing-cfg]. | |||
1.1. Terminology | 1.1. Terminology | |||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14, [RFC2119]. | 14, [RFC2119]. | |||
skipping to change at page 3, line 49 | skipping to change at page 4, line 5 | |||
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. IP Data Model | 2. IP Data Model | |||
This document defines the YANG module "ietf-ip", which augments the | This document defines the YANG module "ietf-ip", which augments the | |||
"interface" and "interface-state" lists defined in the | "interface" and "interface-state" lists defined in the | |||
"ietf-interfaces" module [I-D.ietf-netmod-interfaces-cfg] with IP | "ietf-interfaces" module [I-D.ietf-netmod-interfaces-cfg] with IP | |||
specific nodes, and adds IP specific state data. | specific nodes, and adds IP specific state data. | |||
The data model has the following structure for IP configuration per | The data model has the following structure for IP configuration per | |||
interface: | interface: | |||
+--rw if:interfaces | +--rw if:interfaces | |||
+--rw if:interface* [name] | +--rw if:interface* [name] | |||
... | ... | |||
+--rw ipv4? | +--rw ipv4! | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw forwarding? boolean | | +--rw forwarding? boolean | |||
| +--rw mtu? uint16 | | +--rw mtu? uint16 | |||
| +--rw address* [ip] | | +--rw address* [ip] | |||
| | +--rw ip inet:ipv4-address-no-zone | | | +--rw ip inet:ipv4-address-no-zone | |||
| | +--rw (subnet) | | | +--rw (subnet) | |||
| | +--:(prefix-length) | | | +--:(prefix-length) | |||
| | | +--rw ip:prefix-length? uint8 | | | | +--rw ip:prefix-length? uint8 | |||
| | +--:(netmask) | | | +--:(netmask) | |||
| | +--rw ip:netmask? yang:dotted-quad | | | +--rw ip:netmask? yang:dotted-quad | |||
| +--rw neighbor* [ip] | | +--rw neighbor* [ip] | |||
| +--rw ip inet:ipv4-address-no-zone | | +--rw ip inet:ipv4-address-no-zone | |||
| +--rw link-layer-address? yang:phys-address | | +--rw link-layer-address yang:phys-address | |||
+--rw ipv6? | +--rw ipv6! | |||
+--rw enabled? boolean | +--rw enabled? boolean | |||
+--rw forwarding? boolean | +--rw forwarding? boolean | |||
+--rw mtu? uint32 | +--rw mtu? uint32 | |||
+--rw address* [ip] | +--rw address* [ip] | |||
| +--rw ip inet:ipv6-address-no-zone | | +--rw ip inet:ipv6-address-no-zone | |||
| +--rw prefix-length uint8 | | +--rw prefix-length uint8 | |||
+--rw neighbor* [ip] | +--rw neighbor* [ip] | |||
| +--rw ip inet:ipv6-address-no-zone | | +--rw ip inet:ipv6-address-no-zone | |||
| +--rw link-layer-address? yang:phys-address | | +--rw link-layer-address yang:phys-address | |||
+--rw dup-addr-detect-transmits? uint32 | +--rw dup-addr-detect-transmits? uint32 | |||
+--rw autoconf | +--rw autoconf | |||
+--rw create-global-addresses? boolean | +--rw create-global-addresses? boolean | |||
+--rw create-temporary-addresses? boolean | +--rw create-temporary-addresses? boolean | |||
+--rw temporary-valid-lifetime? uint32 | +--rw temporary-valid-lifetime? uint32 | |||
+--rw temporary-preferred-lifetime? uint32 | +--rw temporary-preferred-lifetime? uint32 | |||
The data model defines two configuration containers per interface, | The data model defines two configuration containers per interface, | |||
"ipv4" and "ipv6", representing the IPv4 and IPv6 address families. | "ipv4" and "ipv6", representing the IPv4 and IPv6 address families. | |||
In each container, there is a leaf "enabled" that controls if the | In each container, there is a leaf "enabled" that controls if the | |||
skipping to change at page 6, line 15 | skipping to change at page 6, line 15 | |||
enabled on the interface. In each container, there is also a list of | enabled on the interface. In each container, there is also a list of | |||
configured addresses, and a list of configured mappings from IP | configured addresses, and a list of configured mappings from IP | |||
addresses to link-layer addresses. | addresses to link-layer addresses. | |||
The data model has the following structure for IP state per | The data model has the following structure for IP state per | |||
interface: | interface: | |||
+--ro if:interfaces-state | +--ro if:interfaces-state | |||
+--ro if:interface* [name] | +--ro if:interface* [name] | |||
... | ... | |||
+--ro ipv4? | +--ro ipv4! | |||
| +--ro forwarding? boolean | | +--ro forwarding? boolean | |||
| +--ro mtu? uint16 | | +--ro mtu? uint16 | |||
| +--ro address* [ip] | | +--ro address* [ip] | |||
| +--ro ip inet:ipv4-address-no-zone | | | +--ro ip inet:ipv4-address-no-zone | |||
| +--ro (subnet)? | | | +--ro (subnet)? | |||
| | +--:(prefix-length) | | | | +--:(prefix-length) | |||
| | | +--ro prefix-length? uint8 | | | | | +--ro prefix-length? uint8 | |||
| | +--:(netmask) | | | | +--:(netmask) | |||
| | +--ro netmask? yang:dotted-quad | | | | +--ro netmask? yang:dotted-quad | |||
| +--ro origin? ip-address-origin | | | +--ro origin? ip-address-origin | |||
+--ro ipv6? | | +--ro neighbor* [ip] | |||
| +--ro ip inet:ipv4-address-no-zone | ||||
| +--ro link-layer-address? yang:phys-address | ||||
| +--ro origin? neighbor-origin | ||||
+--ro ipv6! | ||||
+--ro forwarding? boolean | +--ro forwarding? boolean | |||
+--ro mtu? uint32 | +--ro mtu? uint32 | |||
+--ro address* [ip] | +--ro address* [ip] | |||
+--ro ip inet:ipv6-address-no-zone | | +--ro ip inet:ipv6-address-no-zone | |||
+--ro prefix-length uint8 | | +--ro prefix-length uint8 | |||
+--ro origin? ip-address-origin | | +--ro origin? ip-address-origin | |||
+--ro status? enumeration | | +--ro status? enumeration | |||
+--ro neighbor* [ip] | ||||
+--ro ip inet:ipv6-address-no-zone | ||||
+--ro link-layer-address? yang:phys-address | ||||
+--ro origin? neighbor-origin | ||||
+--ro is-router? empty | ||||
+--ro state? enumeration | ||||
The data model defines two state containers per interface, "ipv4" and | The data model defines two state containers per interface, "ipv4" and | |||
"ipv6", representing the IPv4 and IPv6 address families. In each | "ipv6", representing the IPv4 and IPv6 address families. In each | |||
container, there is a leaf "forwarding" that indicates if IP packet | container, there is a leaf "forwarding" that indicates if IP packet | |||
forwarding is enabled on that interface. In each container there is | forwarding is enabled on that interface. In each container there is | |||
also a list of all addresses in use. | also a list of all addresses in use, and a list of known mappings | |||
from IP addresses to link-layer addresses. | ||||
The data model has the following structure for global IP state: | ||||
+--ro ip-state | ||||
+--ro ipv4? | ||||
| +--ro neighbor* [interface ip] | ||||
| +--ro interface if:interface-state-ref | ||||
| +--ro ip inet:ipv4-address-no-zone | ||||
| +--ro link-layer-address? yang:phys-address | ||||
| +--ro origin? neighbor-origin | ||||
+--ro ipv6? | ||||
+--ro neighbor* [interface ip] | ||||
+--ro interface if:interface-state-ref | ||||
+--ro ip inet:ipv6-address-no-zone | ||||
+--ro link-layer-address? yang:phys-address | ||||
+--ro origin? neighbor-origin | ||||
+--ro is-router? boolean | ||||
+--ro state? enumeration | ||||
The data model defines a top-level container "ip-state" that contains | ||||
containers for ipv4 and ipv6 state. For each address family, there | ||||
is a list of known mappings from IP addresses to link-layer | ||||
addresses. | ||||
3. Relationship to IP-MIB | 3. Relationship to IP-MIB | |||
If the device implements IP-MIB [RFC4293], each entry in the "ipv4/ | If the device implements IP-MIB [RFC4293], each entry in the "ipv4/ | |||
address" and "ipv6/address" lists is mapped to one ipAddressEntry, | address" and "ipv6/address" lists is mapped to one ipAddressEntry, | |||
where the ipAddressIfIndex refers to the "address" entry's interface. | where the ipAddressIfIndex refers to the "address" entry's interface. | |||
The IP-MIB defines objects to control IPv6 Router Advertisement. The | The IP-MIB defines objects to control IPv6 Router Advertisement. The | |||
corresponding YANG data nodes are defined in | corresponding YANG data nodes are defined in | |||
[I-D.ietf-netmod-routing-cfg]. | [I-D.ietf-netmod-routing-cfg]. | |||
skipping to change at page 9, line 5 | skipping to change at page 8, line 5 | |||
| ipv6/address | ipAddressEntry | | | ipv6/address | ipAddressEntry | | |||
| ipv6/address/ip | ipAddressAddrType | | | ipv6/address/ip | ipAddressAddrType | | |||
| | ipAddressAddr | | | | ipAddressAddr | | |||
| ipv6/neighbor | ipNetToPhysicalEntry | | | ipv6/neighbor | ipNetToPhysicalEntry | | |||
| ipv6/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | | ipv6/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | |||
| ipv6/neighbor/origin | ipNetToPhysicalType | | | ipv6/neighbor/origin | ipNetToPhysicalType | | |||
+----------------------------------+--------------------------------+ | +----------------------------------+--------------------------------+ | |||
YANG interface configuration data nodes and related IP-MIB objects | YANG interface configuration data nodes and related IP-MIB objects | |||
+---------------------------------------+---------------------------+ | +-----------------------------------+-------------------------------+ | |||
| YANG data node in | IP-MIB object | | | YANG data node in | IP-MIB object | | |||
| /if:interfaces-state/if:interface | | | | /if:interfaces-state/if:interface | | | |||
+---------------------------------------+---------------------------+ | +-----------------------------------+-------------------------------+ | |||
| ipv4 | ipv4InterfaceEnableStatus | | | ipv4 | ipv4InterfaceEnableStatus | | |||
| ipv4/address | ipAddressEntry | | | ipv4/address | ipAddressEntry | | |||
| ipv4/address/ip | ipAddressAddrType | | | ipv4/address/ip | ipAddressAddrType | | |||
| | ipAddressAddr | | | | ipAddressAddr | | |||
| ipv4/address/origin | ipAddressOrigin | | | ipv4/address/origin | ipAddressOrigin | | |||
| ipv6 | ipv6InterfaceEnableStatus | | | ipv4/neighbor | ipNetToPhysicalEntry | | |||
| ipv6/forwarding | ipv6InterfaceForwarding | | | ipv4/neighbor/interface | ipNetToPhysicalIfIndex | | |||
| ipv6/address | ipAddressEntry | | | ipv4/neighbor/ip | ipNetToPhysicalNetAddressType | | |||
| ipv6/address/ip | ipAddressAddrType | | | | ipNetToPhysicalNetAddressAddr | | |||
| | ipAddressAddr | | | ipv4/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | |||
| ipv6/address/origin | ipAddressOrigin | | | ipv4/neighbor/origin | ipNetToPhysicalType | | |||
| ipv6/address/status | ipAddressStatus | | | ipv6 | ipv6InterfaceEnableStatus | | |||
+---------------------------------------+---------------------------+ | | ipv6/forwarding | ipv6InterfaceForwarding | | |||
| ipv6/address | ipAddressEntry | | ||||
| ipv6/address/ip | ipAddressAddrType | | ||||
| | ipAddressAddr | | ||||
| ipv6/address/origin | ipAddressOrigin | | ||||
| ipv6/address/status | ipAddressStatus | | ||||
| ipv6/neighbor | ipNetToPhysicalEntry | | ||||
| ipv6/neighbor/interface | ipNetToPhysicalIfIndex | | ||||
| ipv6/neighbor/ip | ipNetToPhysicalNetAddressType | | ||||
| | ipNetToPhysicalNetAddressAddr | | ||||
| ipv6/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | ||||
| ipv6/neighbor/origin | ipNetToPhysicalType | | ||||
| ipv6/neighbor/state | ipNetToPhysicalState | | ||||
+-----------------------------------+-------------------------------+ | ||||
YANG interface state data nodes and related IP-MIB objects | YANG interface state data nodes and related IP-MIB objects | |||
+----------------------------------+--------------------------------+ | ||||
| YANG data node in /ip-state | IP-MIB object | | ||||
+----------------------------------+--------------------------------+ | ||||
| ipv4/neighbor | ipNetToPhysicalEntry | | ||||
| ipv4/neighbor/interface | ipNetToPhysicalIfIndex | | ||||
| ipv4/neighbor/ip | ipNetToPhysicalNetAddressType | | ||||
| | ipNetToPhysicalNetAddressAddr | | ||||
| ipv4/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | ||||
| ipv4/neighbor/origin | ipNetToPhysicalType | | ||||
| ipv6/neighbor | ipNetToPhysicalEntry | | ||||
| ipv6/neighbor/interface | ipNetToPhysicalIfIndex | | ||||
| ipv6/neighbor/ip | ipNetToPhysicalNetAddressType | | ||||
| | ipNetToPhysicalNetAddressAddr | | ||||
| ipv6/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | ||||
| ipv6/neighbor/origin | ipNetToPhysicalType | | ||||
| ipv6/neighbor/state | ipNetToPhysicalState | | ||||
+----------------------------------+--------------------------------+ | ||||
YANG state data nodes and related IP-MIB objects | ||||
4. IP management YANG Module | 4. IP management YANG Module | |||
This module imports typedefs from [I-D.ietf-netmod-rfc6021-bis] and | This module imports typedefs from [RFC6991] and | |||
[I-D.ietf-netmod-interfaces-cfg], and references [RFC0791], | [I-D.ietf-netmod-interfaces-cfg], and references [RFC0791], | |||
[RFC0826], [RFC2460], [RFC4861], [RFC4862], and [RFC4941]. | [RFC0826], [RFC2460], [RFC4861], [RFC4862], and [RFC4941]. | |||
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-ip@2013-08-25.yang" | <CODE BEGINS> file "ietf-ip@2013-10-18.yang" | |||
module ietf-ip { | module ietf-ip { | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ip"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ip"; | |||
prefix ip; | prefix ip; | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix if; | prefix if; | |||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
skipping to change at page 11, line 20 | skipping to change at page 10, line 20 | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
// note. | // note. | |||
// RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision 2013-08-25 { | revision 2013-10-18 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for IP Management"; | "RFC XXXX: A YANG Data Model for IP Management"; | |||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
skipping to change at page 13, line 22 | skipping to change at page 12, line 22 | |||
*/ | */ | |||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
description | description | |||
"Parameters for configuring IP on interfaces. | "Parameters for configuring IP on interfaces. | |||
If an interface is not capable of running IP, the server | If an interface is not capable of running IP, the server | |||
must not allow the client to configure these parameters."; | must not allow the client to configure these parameters."; | |||
container ipv4 { | container ipv4 { | |||
presence "Configure IPv4 on this interface."; | presence | |||
"Enables IPv4 unless the 'enabled' leaf | ||||
(which defaults to 'true') is set to 'false'"; | ||||
description | description | |||
"Parameters for the IPv4 address family."; | "Parameters for the IPv4 address family."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Controls if IPv4 is enabled or disabled on this | "Controls if IPv4 is enabled or disabled on this | |||
interface."; | interface."; | |||
} | } | |||
skipping to change at page 15, line 9 | skipping to change at page 14, line 10 | |||
reference | reference | |||
"RFC 826: An Ethernet Address Resolution Protocol"; | "RFC 826: An Ethernet Address Resolution Protocol"; | |||
leaf ip { | leaf ip { | |||
type inet:ipv4-address-no-zone; | type inet:ipv4-address-no-zone; | |||
description | description | |||
"The IPv4 address of the neighbor node."; | "The IPv4 address of the neighbor node."; | |||
} | } | |||
leaf link-layer-address { | leaf link-layer-address { | |||
type yang:phys-address; | type yang:phys-address; | |||
mandatory true; | ||||
description | description | |||
"The link-layer address of the neighbor node."; | "The link-layer address of the neighbor node."; | |||
} | } | |||
} | } | |||
} | } | |||
container ipv6 { | container ipv6 { | |||
presence "Configure IPv6 on this interface."; | presence | |||
"Enables IPv6 unless the 'enabled' leaf | ||||
(which defaults to 'true') is set to 'false'"; | ||||
description | description | |||
"Parameters for the IPv6 address family."; | "Parameters for the IPv6 address family."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Controls if IPv6 is enabled or disabled on this | "Controls if IPv6 is enabled or disabled on this | |||
interface."; | interface."; | |||
} | } | |||
skipping to change at page 16, line 44 | skipping to change at page 15, line 48 | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | |||
leaf ip { | leaf ip { | |||
type inet:ipv6-address-no-zone; | type inet:ipv6-address-no-zone; | |||
description | description | |||
"The IPv6 address of the neighbor node."; | "The IPv6 address of the neighbor node."; | |||
} | } | |||
leaf link-layer-address { | leaf link-layer-address { | |||
type yang:phys-address; | type yang:phys-address; | |||
mandatory true; | ||||
description | description | |||
"The link-layer address of the neighbor node."; | "The link-layer address of the neighbor node."; | |||
} | } | |||
} | } | |||
leaf dup-addr-detect-transmits { | leaf dup-addr-detect-transmits { | |||
type uint32; | type uint32; | |||
default 1; | default 1; | |||
description | description | |||
"The number of consecutive Neighbor Solicitation messages | "The number of consecutive Neighbor Solicitation messages | |||
sent while performing Duplicate Address Detection on a | sent while performing Duplicate Address Detection on a | |||
skipping to change at page 19, line 41 | skipping to change at page 18, line 44 | |||
description | description | |||
"The subnet specified as a netmask."; | "The subnet specified as a netmask."; | |||
} | } | |||
} | } | |||
leaf origin { | leaf origin { | |||
type ip-address-origin; | type ip-address-origin; | |||
description | description | |||
"The origin of this address."; | "The origin of this address."; | |||
} | } | |||
} | } | |||
list neighbor { | ||||
key "ip"; | ||||
description | ||||
"A list of mappings from IPv4 addresses to | ||||
link-layer addresses. | ||||
This list represents the ARP Cache."; | ||||
reference | ||||
"RFC 826: An Ethernet Address Resolution Protocol"; | ||||
leaf ip { | ||||
type inet:ipv4-address-no-zone; | ||||
description | ||||
"The IPv4 address of the neighbor node."; | ||||
} | ||||
leaf link-layer-address { | ||||
type yang:phys-address; | ||||
description | ||||
"The link-layer address of the neighbor node."; | ||||
} | ||||
leaf origin { | ||||
type neighbor-origin; | ||||
description | ||||
"The origin of this neighbor entry."; | ||||
} | ||||
} | ||||
} | } | |||
container ipv6 { | container ipv6 { | |||
presence "Present if IPv6 is enabled on this interface"; | presence "Present if IPv6 is enabled on this interface"; | |||
config false; | config false; | |||
description | description | |||
"Parameters for the IPv6 address family."; | "Parameters for the IPv6 address family."; | |||
leaf forwarding { | leaf forwarding { | |||
type boolean; | type boolean; | |||
skipping to change at page 22, line 8 | skipping to change at page 21, line 40 | |||
"The status of an address. Most of the states correspond | "The status of an address. Most of the states correspond | |||
to states from the IPv6 Stateless Address | to states from the IPv6 Stateless Address | |||
Autoconfiguration protocol."; | Autoconfiguration protocol."; | |||
reference | reference | |||
"RFC 4293: Management Information Base for the | "RFC 4293: Management Information Base for the | |||
Internet Protocol (IP) | Internet Protocol (IP) | |||
- IpAddressStatusTC | - IpAddressStatusTC | |||
RFC 4862: IPv6 Stateless Address Autoconfiguration"; | RFC 4862: IPv6 Stateless Address Autoconfiguration"; | |||
} | } | |||
} | } | |||
} | ||||
} | ||||
container ip-state { | ||||
config false; | ||||
description | ||||
"Data nodes for the operational state of IP."; | ||||
container ipv4 { | ||||
presence "Present if IPv4 is enabled"; | ||||
description | ||||
"Parameters for the IPv4 address family."; | ||||
list neighbor { | ||||
key "interface ip"; | ||||
description | ||||
"A list of mappings from IPv4 addresses to | ||||
link-layer addresses. | ||||
This list represents the ARP Cache."; | ||||
reference | ||||
"RFC 826: An Ethernet Address Resolution Protocol"; | ||||
leaf interface { | ||||
type if:interface-state-ref; | ||||
description | ||||
"The name of the interface for this neighbor."; | ||||
} | ||||
leaf ip { | ||||
type inet:ipv4-address-no-zone; | ||||
description | ||||
"The IPv4 address of the neighbor node."; | ||||
} | ||||
leaf link-layer-address { | ||||
type yang:phys-address; | ||||
description | ||||
"The link-layer address of the neighbor node."; | ||||
} | ||||
leaf origin { | ||||
type neighbor-origin; | ||||
description | ||||
"The origin of this neighbor entry."; | ||||
} | ||||
} | ||||
} | ||||
container ipv6 { | ||||
presence "Present if IPv6 is enabled"; | ||||
description | ||||
"Parameters for the IPv6 address family."; | ||||
list neighbor { | list neighbor { | |||
key "interface ip"; | key "ip"; | |||
description | description | |||
"A list of mappings from IPv6 addresses to | "A list of mappings from IPv6 addresses to | |||
link-layer addresses. | link-layer addresses. | |||
This list represents the Neighbor Cache."; | This list represents the Neighbor Cache."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | |||
leaf interface { | ||||
type if:interface-state-ref; | ||||
description | ||||
"The name of the interface for this neighbor."; | ||||
} | ||||
leaf ip { | leaf ip { | |||
type inet:ipv6-address-no-zone; | type inet:ipv6-address-no-zone; | |||
description | description | |||
"The IPv6 address of the neighbor node."; | "The IPv6 address of the neighbor node."; | |||
} | } | |||
leaf link-layer-address { | leaf link-layer-address { | |||
type yang:phys-address; | type yang:phys-address; | |||
description | description | |||
"The link-layer address of the neighbor node."; | "The link-layer address of the neighbor node."; | |||
} | } | |||
skipping to change at page 28, line 7 | skipping to change at page 27, line 7 | |||
temporary addresses are used or not. By modifying the | temporary addresses are used or not. By modifying the | |||
corresponding leafs, an attacker might impact the addresses used | corresponding leafs, an attacker might impact the addresses used | |||
by a node and thus indirectly the privacy of the users using the | by a node and thus indirectly the privacy of the users using the | |||
node. | node. | |||
ipv4/mtu and ipv6/mtu: Setting these leafs to very small values can | ipv4/mtu and ipv6/mtu: Setting these leafs to very small values can | |||
be used to slow down interfaces. | be used to slow down interfaces. | |||
7. Acknowledgments | 7. Acknowledgments | |||
The author wishes to thank Ladislav Lhotka, Juergen Schoenwaelder, | The author wishes to thank Jeffrey Lange, Ladislav Lhotka, Juergen | |||
and Dave Thaler for their helpful comments. | Schoenwaelder, and Dave Thaler for their helpful comments. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[I-D.ietf-netmod-interfaces-cfg] | [I-D.ietf-netmod-interfaces-cfg] | |||
Bjorklund, M., "A YANG Data Model for Interface | Bjorklund, M., "A YANG Data Model for Interface | |||
Configuration", draft-ietf-netmod-interfaces-cfg-09 (work | Configuration", draft-ietf-netmod-interfaces-cfg-12 (work | |||
in progress), July 2012. | in progress), July 2012. | |||
[I-D.ietf-netmod-rfc6021-bis] | ||||
Schoenwaelder, J., "Common YANG Data Types", | ||||
draft-ietf-netmod-rfc6021-bis-00 (work in progress), | ||||
Feb 2013. | ||||
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
September 1981. | September 1981. | |||
[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. | |||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, December 1998. | (IPv6) Specification", RFC 2460, December 1998. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
skipping to change at page 29, line 46 | skipping to change at page 28, line 41 | |||
Address Autoconfiguration", RFC 4862, September 2007. | Address Autoconfiguration", RFC 4862, September 2007. | |||
[RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | |||
Extensions for Stateless Address Autoconfiguration in | Extensions for Stateless Address Autoconfiguration in | |||
IPv6", RFC 4941, September 2007. | IPv6", RFC 4941, September 2007. | |||
[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. | ||||
8.2. Informative References | 8.2. Informative References | |||
[I-D.ietf-netmod-routing-cfg] | [I-D.ietf-netmod-routing-cfg] | |||
Lhotka, L., "A YANG Data Model for Routing Configuration", | Lhotka, L., "A YANG Data Model for Routing Configuration", | |||
draft-ietf-netmod-routing-cfg-04 (work in progress), | draft-ietf-netmod-routing-cfg-10 (work in progress), | |||
July 2012. | July 2012. | |||
[RFC0826] Plummer, D., "Ethernet Address Resolution Protocol: Or | [RFC0826] Plummer, D., "Ethernet Address Resolution Protocol: Or | |||
converting network protocol addresses to 48.bit Ethernet | converting network protocol addresses to 48.bit Ethernet | |||
address for transmission on Ethernet hardware", STD 37, | address for transmission on Ethernet hardware", STD 37, | |||
RFC 826, November 1982. | RFC 826, November 1982. | |||
[RFC4293] Routhier, S., "Management Information Base for the | [RFC4293] Routhier, S., "Management Information Base for the | |||
Internet Protocol (IP)", RFC 4293, April 2006. | Internet Protocol (IP)", RFC 4293, April 2006. | |||
skipping to change at page 31, line 10 | skipping to change at page 30, line 10 | |||
[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. | |||
Appendix A. Example: NETCONF <get> reply | Appendix A. 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 data model defined in this document. | for a device that implements the data model defined in this document. | |||
<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"> | ||||
<interface> | ||||
<name>eth0</name> | ||||
<type>ethernetCsmacd</type> | ||||
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | ||||
<address> | ||||
<ip>192.0.2.1</ip> | ||||
<prefix-length>24</prefix-length> | ||||
</address> | ||||
</ipv4> | ||||
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | ||||
<mtu>1280</mtu> | ||||
<address> | ||||
<ip>2001:db8::10</ip> | ||||
<prefix-length>32</prefix-length> | ||||
</address> | ||||
<dup-addr-detect-transmits>0</dup-addr-detect-transmits> | ||||
</ipv6> | ||||
</interface> | ||||
</interfaces> | ||||
<interfaces-state | ||||
xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | |||
<interface> | <interface> | |||
<name>eth0</name> | <name>eth0</name> | |||
<type>ethernetCsmacd</type> | <type>ethernetCsmacd</type> | |||
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <!-- other parameters from ietf-interfaces omitted --> | |||
<address> | ||||
<ip>192.0.2.1</ip> | ||||
<prefix-length>24</prefix-length> | ||||
</address> | ||||
</ipv4> | ||||
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | ||||
<mtu>1280</mtu> | ||||
<address> | ||||
<ip>2001:DB8::10</ip> | ||||
<prefix-length>32</prefix-length> | ||||
</address> | ||||
<dup-addr-detect-transmits>0</dup-addr-detect-transmits> | ||||
</ipv6> | ||||
</interface> | ||||
</interfaces> | ||||
<interfaces-state | ||||
xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | ||||
<interface> | ||||
<name>eth0</name> | ||||
<type>ethernetCsmacd</type> | ||||
<!-- other parameters from ietf-interfaces omitted --> | ||||
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
<forwarding>false</forwarding> | <forwarding>false</forwarding> | |||
<mtu>1500</mtu> | <mtu>1500</mtu> | |||
<address> | <address> | |||
<ip>192.0.2.1</ip> | <ip>192.0.2.1</ip> | |||
<prefix-length>24</prefix-length> | <prefix-length>24</prefix-length> | |||
<origin>static</origin> | <origin>static</origin> | |||
</address> | </address> | |||
</ipv4> | </ipv4> | |||
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
<forwarding>false</forwarding> | <forwarding>false</forwarding> | |||
<mtu>1500</mtu> | <mtu>1500</mtu> | |||
<address> | <address> | |||
<ip>2001:DB8::10</ip> | <ip>2001:db8::10</ip> | |||
<prefix-length>32</prefix-length> | <prefix-length>32</prefix-length> | |||
<origin>static</origin> | <origin>static</origin> | |||
<status>preferred</status> | <status>preferred</status> | |||
</address> | </address> | |||
<address> | <address> | |||
<ip>2001:DB8::1:100</ip> | <ip>2001:db8::1:100</ip> | |||
<prefix-length>32</prefix-length> | <prefix-length>32</prefix-length> | |||
<origin>dhcp</origin> | <origin>dhcp</origin> | |||
<status>preferred</status> | <status>preferred</status> | |||
</address> | </address> | |||
</ipv6> | <neighbor> | |||
</interface> | <ip>2001:db8::1</ip> | |||
</interfaces-state> | <link-layer-address>00:01:02:03:04:05</link-layer-address> | |||
<ip-state xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <origin>dynamic</origin> | |||
<ipv6> | <is-router/> | |||
<neighbor> | <state>reachable</state> | |||
<interface>eth0</interface> | </neighbor> | |||
<ip>2001:DB8::1</ip> | <neighbor> | |||
<link-layer-address>00:01:02:03:04:05</link-layer-address> | <ip>2001:db8::4</ip> | |||
<origin>dynamic</origin> | <origin>dynamic</origin> | |||
<is-router/> | <state>incomplete</state> | |||
<state>reachable</state> | </neighbor> | |||
</neighbor> | </ipv6> | |||
<neighbor> | </interface> | |||
<interface>eth0</interface> | </interfaces-state> | |||
<ip>2001:DB8::4</ip> | </data> | |||
<origin>dynamic</origin> | </rpc-reply> | |||
<state>incomplete</state> | ||||
</neighbor> | ||||
</ipv6> | ||||
</ip-state> | ||||
</data> | ||||
</rpc-reply> | ||||
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. 34 change blocks. | ||||
244 lines changed or deleted | 196 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/ |