draft-ietf-dhc-dhcpv6-yang-07.txt | draft-ietf-dhc-dhcpv6-yang-08.txt | |||
---|---|---|---|---|
DHC Working Group Y. Cui | DHC Working Group Y. Cui | |||
Internet-Draft L. Sun | Internet-Draft L. Sun | |||
Intended status: Standards Track Tsinghua University | Intended status: Standards Track Tsinghua University | |||
Expires: March 8, 2019 I. Farrer | Expires: September 10, 2019 I. Farrer | |||
S. Zechlin | S. Zechlin | |||
Deutsche Telekom AG | Deutsche Telekom AG | |||
Z. He | Z. He | |||
Tsinghua University | Tsinghua University | |||
September 4, 2018 | March 9, 2019 | |||
YANG Data Model for DHCPv6 Configuration | YANG Data Model for DHCPv6 Configuration | |||
draft-ietf-dhc-dhcpv6-yang-07 | draft-ietf-dhc-dhcpv6-yang-08 | |||
Abstract | Abstract | |||
This document describes a YANG data model [RFC6020] for the | This document describes a YANG data model [RFC6020] for the | |||
configuration and management of DHCPv6 servers, relays, and clients. | configuration and management of DHCPv6 servers, relays, and clients. | |||
Requirements Language | Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 March 8, 2019. | This Internet-Draft will expire on September 10, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
2.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 16 | 2.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 16 | |||
2.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 20 | 2.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 20 | |||
3. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 27 | 3. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 27 | |||
3.1. DHCPv6 Server YANG Model . . . . . . . . . . . . . . . . 27 | 3.1. DHCPv6 Server YANG Model . . . . . . . . . . . . . . . . 27 | |||
3.2. DHCPv6 Relay YANG Model . . . . . . . . . . . . . . . . . 47 | 3.2. DHCPv6 Relay YANG Model . . . . . . . . . . . . . . . . . 47 | |||
3.3. DHCPv6 Client YANG Model . . . . . . . . . . . . . . . . 57 | 3.3. DHCPv6 Client YANG Model . . . . . . . . . . . . . . . . 57 | |||
3.4. DHCPv6 Options YANG Model . . . . . . . . . . . . . . . . 65 | 3.4. DHCPv6 Options YANG Model . . . . . . . . . . . . . . . . 65 | |||
3.5. DHCPv6 Types YANG Model . . . . . . . . . . . . . . . . . 94 | 3.5. DHCPv6 Types YANG Model . . . . . . . . . . . . . . . . . 94 | |||
4. Security Considerations (TBD) . . . . . . . . . . . . . . . . 99 | 4. Security Considerations (TBD) . . . . . . . . . . . . . . . . 99 | |||
5. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 99 | 5. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 99 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 99 | 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 99 | |||
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 99 | 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 99 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 100 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 100 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 100 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 100 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 100 | 8.2. Informative References . . . . . . . . . . . . . . . . . 100 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 102 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 102 | |||
1. Introduction | 1. Introduction | |||
DHCPv6 [RFC3315] is widely used for supplying configuration and other | DHCPv6 [RFC3315] is widely used for supplying configuration and other | |||
relevant parameters to clients in IPv6 networks. This document | relevant parameters to clients in IPv6 networks. This document | |||
defines a DHCPv6 YANG data model, containing sub-modules for the | defines a DHCPv6 YANG data model, containing sub-modules for the | |||
configuration and management of DHCPv6 servers, relays and clients. | configuration and management of DHCPv6 servers, relays and clients. | |||
A single YANG model covering all of these elements provides an | A single YANG model covering all of these elements provides an | |||
operator with a common interface for the management of the entire | operator with a common interface for the management of the entire | |||
DHCPv6 deployment in their network. | DHCPv6 deployment in their network. | |||
Since the publication of the original DHCPv6 specification, there | Since the publication of the original DHCPv6 specification, there | |||
have been a large number of addional documents that update the | have been a large number of additional documents that update the | |||
protocol's operation, add new functions and define new options. The | protocol's operation, add new functions and define new options. The | |||
YANG model described in this document incorporates all relevent | YANG model described in this document incorporates all relevant | |||
changes. A full list of the documents which have been considedered | changes. A full list of the documents which have been considered in | |||
in the development of this model is included in Appendix A. | the development of this model is included in Appendix A. | |||
IF - Commment - Does anyone have this list? | IF - Comment - Does anyone have this list? | |||
It is worth noting that as DHCPv6 is itself a device configuration | It is worth noting that as DHCPv6 is itself a device configuration | |||
protocol, it is not the intention of this document to replace the | protocol, it is not the intention of this document to replace the | |||
configuration of DHCPv6 options and parameters using the DHCPv6 | configuration of DHCPv6 options and parameters using the DHCPv6 | |||
protocol with the configuration of DHCPv6 options using NETCONF/YANG. | protocol with the configuration of DHCPv6 options using NETCONF/YANG. | |||
The DHCPv6 client model is intended for the configuration of the | The DHCPv6 client model is intended for the configuration of the | |||
DHCPv6 client function and also for obtaining read-only state data | DHCPv6 client function and also for obtaining read-only state data | |||
from the client which has been learnt via the normal DHCPv6 message | from the client which has been learned via the normal DHCPv6 message | |||
flow. This gives an operator a better method for managing DHCPv6 | flow. This gives an operator a better method for managing DHCPv6 | |||
clients and simplifies troubleshooting. | clients and simplifies troubleshooting. | |||
1.1. Terminology | 1.1. Terminology | |||
The reader should be familiar with the terms defined in DHCPv6 | The reader should be familiar with the terms defined in DHCPv6 | |||
[RFC3315] and other relevant documents. | [RFC3315] and other relevant documents. | |||
The DHCPv6 tree diagrams provide a concise representation of a YANG | The DHCPv6 tree diagrams provide a concise representation of a YANG | |||
module to help the reader understand the module structure. | module to help the reader understand the module structure. | |||
A simplified graphical representation of the data model is provided | A simplified graphical representation of the data model is provided | |||
in this d cument. For a description of the symbols in these | in this document. For a description of the symbols in these | |||
diagrams, please refer to [I-D.ietf-netmod-yang-tree-diagrams]. | diagrams, please refer to [I-D.ietf-netmod-yang-tree-diagrams]. | |||
2. DHCPv6 Tree Diagram | 2. DHCPv6 Tree Diagram | |||
2.1. DHCPv6 Server Tree Diagrams | 2.1. DHCPv6 Server Tree Diagrams | |||
module: ietf-dhcpv6-server | module: ietf-dhcpv6-server | |||
+--rw server! | +--rw server! | |||
+--rw server-config | +--rw server-config | |||
| +--rw serv-attributes | | +--rw serv-attributes | |||
skipping to change at page 6, line 6 ¶ | skipping to change at page 6, line 6 ¶ | |||
| | | | +--rw ntp-serv-mul-addr-suboption* inet:ipv6-address | | | | | +--rw ntp-serv-mul-addr-suboption* inet:ipv6-address | |||
| | | +--:(server-fqdn) | | | | +--:(server-fqdn) | |||
| | | +--rw ntp-serv-fqdn-suboption* string | | | | +--rw ntp-serv-fqdn-suboption* string | |||
| | +--rw boot-file-url-option! {boot-file-url-op}? | | | +--rw boot-file-url-option! {boot-file-url-op}? | |||
| | | +--rw boot-file* [boot-file-id] | | | | +--rw boot-file* [boot-file-id] | |||
| | | +--rw boot-file-id uint8 | | | | +--rw boot-file-id uint8 | |||
| | | +--rw suitable-arch-type* uint16 | | | | +--rw suitable-arch-type* uint16 | |||
| | | +--rw suitable-net-if* uint32 | | | | +--rw suitable-net-if* uint32 | |||
| | | +--rw boot-file-url string | | | | +--rw boot-file-url string | |||
| | +--rw boot-file-param-option! {boot-file-param-op}? | | | +--rw boot-file-param-option! {boot-file-param-op}? | |||
| | | +--rw boot-file-paras* [para-id] | | | | +--rw boot-file-params* [param-id] | |||
| | | +--rw para-id uint8 | | | | +--rw param-id uint8 | |||
| | | +--rw parameter string | | | | +--rw parameter string | |||
| | +--rw aftr-name-option! {aftr-name-op}? | | | +--rw aftr-name-option! {aftr-name-op}? | |||
| | | +--rw tunnel-endpoint-name string | | | | +--rw tunnel-endpoint-name string | |||
| | +--rw kbr-default-name-option! {kbr-default-name-op}? | | | +--rw kbr-default-name-option! {kbr-default-name-op}? | |||
| | | +--rw default-realm-name string | | | | +--rw default-realm-name string | |||
| | +--rw kbr-kdc-option! {kbr-kdc-op}? | | | +--rw kbr-kdc-option! {kbr-kdc-op}? | |||
| | | +--rw kdc-info* [kdc-id] | | | | +--rw kdc-info* [kdc-id] | |||
| | | +--rw kdc-id uint8 | | | | +--rw kdc-id uint8 | |||
| | | +--rw priority uint16 | | | | +--rw priority uint16 | |||
| | | +--rw weight uint16 | | | | +--rw weight uint16 | |||
skipping to change at page 8, line 25 ¶ | skipping to change at page 8, line 25 ¶ | |||
| +--rw network-ranges | | +--rw network-ranges | |||
| | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | |||
| | +--rw network-range* [network-range-id] | | | +--rw network-range* [network-range-id] | |||
| | +--rw network-range-id uint32 | | | +--rw network-range-id uint32 | |||
| | +--rw network-description string | | | +--rw network-description string | |||
| | +--rw network-prefix inet:ipv6-prefix | | | +--rw network-prefix inet:ipv6-prefix | |||
| | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | |||
| | +--rw address-pools | | | +--rw address-pools | |||
| | | +--rw address-pool* [pool-id] | | | | +--rw address-pool* [pool-id] | |||
| | | +--rw pool-id uint32 | | | | +--rw pool-id uint32 | |||
| | | +--rw pool-prefix inet:ipv6-prefix | | | | +--rw pool-prefix? inet:ipv6-prefix | |||
| | | +--rw start-address inet:ipv6-address-no-zone | | | | +--rw start-address inet:ipv6-address-no-zone | |||
| | | +--rw end-address inet:ipv6-address-no-zone | | | | +--rw end-address inet:ipv6-address-no-zone | |||
| | | +--rw valid-lifetime yang:timeticks | | | | +--rw valid-lifetime yang:timeticks | |||
| | | +--rw renew-time yang:timeticks | | | | +--rw renew-time yang:timeticks | |||
| | | +--rw rebind-time yang:timeticks | | | | +--rw rebind-time yang:timeticks | |||
| | | +--rw preferred-lifetime yang:timeticks | | | | +--rw preferred-lifetime yang:timeticks | |||
| | | +--rw rapid-commit boolean | | | | +--rw rapid-commit boolean | |||
| | | +--rw client-class? string | | | | +--rw client-class? string | |||
| | | +--rw max-address-count threshold | | | | +--rw max-address-count threshold | |||
| | | +--rw option-set-id -> /server/server-config/option-sets/option-set/option-set-id | | | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | |||
| | +--rw pd-pools | | | +--rw pd-pools | |||
| | | +--rw pd-pool* [pool-id] | | | | +--rw pd-pool* [pool-id] | |||
| | | +--rw pool-id uint32 | | | | +--rw pool-id uint32 | |||
| | | +--rw prefix inet:ipv6-prefix | | | | +--rw prefix inet:ipv6-prefix | |||
| | | +--rw prefix-length uint8 | | | | +--rw delegated-length uint8 | |||
| | | +--rw valid-lifetime yang:timeticks | | | | +--rw valid-lifetime yang:timeticks | |||
| | | +--rw renew-time yang:timeticks | | | | +--rw renew-time yang:timeticks | |||
| | | +--rw rebind-time yang:timeticks | | | | +--rw rebind-time yang:timeticks | |||
| | | +--rw preferred-lifetime yang:timeticks | | | | +--rw preferred-lifetime yang:timeticks | |||
| | | +--rw rapid-commit boolean | | | | +--rw rapid-commit boolean | |||
| | | +--rw client-class? string | | | | +--rw client-class? string | |||
| | | +--rw max-pd-space-utilization threshold | | | | +--rw max-pd-space-utilization threshold | |||
| | | +--rw option-set-id -> /server/server-config/option-sets/option-set/option-set-id | | | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | |||
| | +--rw host-reservations | | | +--rw host-reservations | |||
| | +--rw host-reservation* [cli-id] | | | +--rw host-reservation* [cli-id] | |||
| | +--rw cli-id uint32 | | | +--rw cli-id uint32 | |||
| | +--rw (client-identifier)? | | | +--rw (client-identifier)? | |||
| | | +--:(duid) | | | | +--:(duid) | |||
| | | | +--rw type-code? uint16 | | | | | +--rw type-code? uint16 | |||
| | | | +--rw (duid-type)? | | | | | +--rw (duid-type)? | |||
| | | | +--:(duid-llt) | | | | | +--:(duid-llt) | |||
| | | | | +--rw duid-llt-hardware-type? uint16 | | | | | | +--rw duid-llt-hardware-type? uint16 | |||
| | | | | +--rw duid-llt-time? yang:timeticks | | | | | | +--rw duid-llt-time? yang:timeticks | |||
skipping to change at page 9, line 31 ¶ | skipping to change at page 9, line 31 ¶ | |||
| | | | +--rw data? binary | | | | | +--rw data? binary | |||
| | | +--:(hw-address) | | | | +--:(hw-address) | |||
| | | +--rw hardware-address? yang:mac-address | | | | +--rw hardware-address? yang:mac-address | |||
| | +--rw reserv-addr* inet:ipv6-address | | | +--rw reserv-addr* inet:ipv6-address | |||
| | +--rw prefix-reservation* [reserv-prefix-id] | | | +--rw prefix-reservation* [reserv-prefix-id] | |||
| | | +--rw reserv-prefix-id uint32 | | | | +--rw reserv-prefix-id uint32 | |||
| | | +--rw reserv-prefix inet:ipv6-prefix | | | | +--rw reserv-prefix inet:ipv6-prefix | |||
| | | +--rw reserv-prefix-len uint8 | | | | +--rw reserv-prefix-len uint8 | |||
| | +--rw hostname? string | | | +--rw hostname? string | |||
| | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | |||
| +--rw relay-opaque-paras | | +--rw relay-opaque-params | |||
| | +--rw relays* [relay-name] | | | +--rw relays* [relay-name] | |||
| | +--rw relay-name string | | | +--rw relay-name string | |||
| | +--rw interface-info* [if-name] | | | +--rw interface-info* [if-name] | |||
| | | +--rw if-name string | | | | +--rw if-name string | |||
| | | +--rw interface-id string | | | | +--rw interface-id string | |||
| | +--rw subscribers* [subscriber] | | | +--rw subscribers* [subscriber] | |||
| | | +--rw subscriber uint32 | | | | +--rw subscriber uint32 | |||
| | | +--rw subscriber-id string | | | | +--rw subscriber-id string | |||
| | +--rw remote-host* [ent-num] | | | +--rw remote-host* [ent-num] | |||
| | +--rw ent-num uint32 | | | +--rw ent-num uint32 | |||
skipping to change at page 14, line 46 ¶ | skipping to change at page 14, line 46 ¶ | |||
(container) will be included in the current option set or not. In | (container) will be included in the current option set or not. In | |||
addition, each container also has a 'if-feature' statement to | addition, each container also has a 'if-feature' statement to | |||
indicate whether the server supports this option (container). | indicate whether the server supports this option (container). | |||
o network-ranges: This model supports a hierarchy to achieve dynamic | o network-ranges: This model supports a hierarchy to achieve dynamic | |||
configuration. That is to say we could configure the server at | configuration. That is to say we could configure the server at | |||
different levels through this model. The top level is a global | different levels through this model. The top level is a global | |||
level which is defined as the container "network-ranges". The | level which is defined as the container "network-ranges". The | |||
following levels are defined as sub-containers under it. The | following levels are defined as sub-containers under it. The | |||
"network-ranges" contains the parameters (e.g. option-sets) that | "network-ranges" contains the parameters (e.g. option-sets) that | |||
would be allocated to all the clients served by this server | would be allocated to all the clients served by this server. | |||
o network-range: Under the "network-ranges" container, a "network- | o network-range: Under the "network-ranges" container, a "network- | |||
range" list is defined to configure the server at a network level | range" list is defined to configure the server at a network level | |||
which is also considered as the second level. Different network | which is also considered as the second level. Different network | |||
are identified by the key "network-range-id". This is because a | are identified by the key "network-range-id". This is because a | |||
server may have different configuration parameters (e.g. option | server may have different configuration parameters (e.g. option | |||
sets) for different networks. | sets) for different networks. | |||
o address-pools: Under the "network-range" list, a container | o address-pools: Under the "network-range" list, a container | |||
describes the DHCPv6 server's address pools for a specific network | describes the DHCPv6 server's address pools for a specific network | |||
is defined. This container supports the server to be configured | is defined. This container supports the server to be configured | |||
at a pool level. | at a pool level. | |||
o address-pool: A DHCPv6 server can be configured with several | o address-pool: A DHCPv6 server can be configured with several | |||
address pools for a specific network. This list defines such | address pools for a specific network. This list defines such | |||
address pools which are distinguish by the key called "pool-id". | address pools which are distinguish by the key called "pool-id". | |||
o rapid-commit: Setting the value to '1' represents the adress/ | o rapid-commit: Setting the value to 'true' represents the address/ | |||
prefix pool support the Solicit-Reply message exchange. '0' means | prefix pool support the Solicit-Reply message exchange. 'false' | |||
the server will simply ignore the Rapid Commit option in Solicit | means the server will simply ignore the Rapid Commit option in | |||
message. | Solicit message. | |||
o client-class: If this is instantiated, the address/pd pool will | o client-class: If this is instantiated, the address/pd pool will | |||
only serve the clients belonging to this class. | only serve the clients belonging to this class. | |||
o max-address-count: Maximum count of addresses that can be | o max-address-count: Maximum count of addresses that can be | |||
allocated in this pool. This value may be less than count of | allocated in this pool. This value may be less than count of | |||
total addresses in this pool. | total addresses in this pool. | |||
o prefix-pools: If a server supports prefix delegation function, | o prefix-pools: If a server supports prefix delegation function, | |||
this container under the "network-range" list will be valid to | this container under the "network-range" list will be valid to | |||
define the delegating router's prefix pools for a specific | define the delegating router's prefix pools for a specific | |||
network. This container also supports the server to be configured | network. This container also supports the server to be configured | |||
at a pool level. | at a pool level. | |||
o prefix-pool: Similar to server's address pools, a delegating | o prefix-pool: Similar to server's address pools, a delegating | |||
router can also be configured with multiple prefix pools specified | router can also be configured with multiple prefix pools specified | |||
by a list called "prefix-pool". | by a list called "prefix-pool". | |||
o max-pd-space-utlization: Maximum utilization of pd space in this | o max-pd-space-utilization: Maximum utilization of pd space in this | |||
pool | pool. | |||
o host-reservations: This container allows the server to make | o host-reservations: This container allows the server to make | |||
reservations at host level. | reservations at host level. | |||
o host-reservation: This list allows the server to reserve | o host-reservation: This list allows the server to reserve | |||
addresses, prefixes, hostname and options for different clients. | addresses, prefixes, hostname and options for different clients. | |||
A server may reserve multiple addresses and prefixes for a single | A server may reserve multiple addresses and prefixes for a single | |||
client. | client. | |||
o relay-opaque-paras: This container contains some opaque values in | o relay-opaque-params: This container contains some opaque values in | |||
Relay Agent options that need to be configured on the server side | Relay Agent options that need to be configured on the server side | |||
only for value match. Such Relay Agent options include Interface- | only for value match. Such Relay Agent options include Interface- | |||
Id option, Remote-Id option and Subscriber-Id option. | Id option, Remote-Id option and Subscriber-Id option. | |||
o rsoo-enabled-options: [RFC6422] requires that the server SHOULD | o rsoo-enabled-options: [RFC6422] requires that the server SHOULD | |||
have an administrator-configurable list of RSOO-enabled options. | have an administrator-configurable list of RSOO-enabled options. | |||
This container include a list called "rsoo-enabled-option" to | This container include a list called "rsoo-enabled-option" to | |||
allow new RSOO-enabled options to be defined at the server side. | allow new RSOO-enabled options to be defined at the server side. | |||
o server-state: This container includes the state data of a server. | o server-state: This container includes the state data of a server. | |||
skipping to change at page 19, line 25 ¶ | skipping to change at page 19, line 25 ¶ | |||
similar to the that defined in server module. It allows the relay | similar to the that defined in server module. It allows the relay | |||
to implement several sets of RSOO-enabled options for different | to implement several sets of RSOO-enabled options for different | |||
interfaces. The list only include the EAP Re-authentication | interfaces. The list only include the EAP Re-authentication | |||
Protocol (ERP) Local Domain Name DHCPv6 Option defined in | Protocol (ERP) Local Domain Name DHCPv6 Option defined in | |||
[RFC6440], since it is the only one RSOO-enabled options accepted | [RFC6440], since it is the only one RSOO-enabled options accepted | |||
by IANA so far. | by IANA so far. | |||
o relay-if: A relay agent may have several interfaces, we should | o relay-if: A relay agent may have several interfaces, we should | |||
provide a way to configure and manage parameters on the interface- | provide a way to configure and manage parameters on the interface- | |||
level. A list that describes specific interfaces and their | level. A list that describes specific interfaces and their | |||
corresponding parameters is employed to fulfil the configfuration. | corresponding parameters is employed to fulfill the configuration. | |||
Here we use a string called "if-name" as the key of list. | Here we use a string called "if-name" as the key of list. | |||
o relay-state: This container contains the configuration data of the | o relay-state: This container contains the configuration data of the | |||
relay. | relay. | |||
o pd-route: A sub-container of "relay-if" which describes the route | o pd-route: A sub-container of "relay-if" which describes the route | |||
for delegated prefixes into the provider edge router. | for delegated prefixes into the provider edge router. | |||
o next-entity: This node defines a list that is used to describe the | o next-entity: This node defines a list that is used to describe the | |||
next hop entity of this relay agent. Different entities are | next hop entity of this relay agent. Different entities are | |||
skipping to change at page 21, line 28 ¶ | skipping to change at page 21, line 28 ¶ | |||
| | +--rw principle-name-id uint8 | | | +--rw principle-name-id uint8 | |||
| | +--rw name-type int32 | | | +--rw name-type int32 | |||
| | +--rw name-string string | | | +--rw name-string string | |||
| +--rw kbr-realm-name-option! {kbr-realm-name-op}? | | +--rw kbr-realm-name-option! {kbr-realm-name-op}? | |||
| | +--rw realm-name string | | | +--rw realm-name string | |||
| +--rw client-link-layer-addr-option! | | +--rw client-link-layer-addr-option! | |||
{client-link-layer-addr-op}? | {client-link-layer-addr-op}? | |||
| +--rw link-layer-type uint16 | | +--rw link-layer-type uint16 | |||
| +--rw link-layer-addr string | | +--rw link-layer-addr string | |||
+--ro client-state | +--ro client-state | |||
+--ro if-other-paras | +--ro if-other-params | |||
| +--ro server-unicast-option! {server-unicast-op}? | | +--ro server-unicast-option! {server-unicast-op}? | |||
| | +--ro server-address? inet:ipv6-address | | | +--ro server-address? inet:ipv6-address | |||
| +--ro sip-server-domain-name-list-option! | | +--ro sip-server-domain-name-list-option! | |||
{sip-server-domain-name-list-op}? | {sip-server-domain-name-list-op}? | |||
| | +--ro sip-serv-domain-name string | | | +--ro sip-serv-domain-name string | |||
| +--ro sip-server-address-list-option! | | +--ro sip-server-address-list-option! | |||
{sip-server-address-list-op}? | {sip-server-address-list-op}? | |||
| | +--ro sip-server* [sip-serv-id] | | | +--ro sip-server* [sip-serv-id] | |||
| | +--ro sip-serv-id uint8 | | | +--ro sip-serv-id uint8 | |||
| | +--ro sip-serv-addr inet:ipv6-address | | | +--ro sip-serv-addr inet:ipv6-address | |||
skipping to change at page 22, line 43 ¶ | skipping to change at page 22, line 43 ¶ | |||
inet:ipv6-address | inet:ipv6-address | |||
| | +--:(server-fqdn) | | | +--:(server-fqdn) | |||
| | +--ro ntp-serv-fqdn-suboption* string | | | +--ro ntp-serv-fqdn-suboption* string | |||
| +--ro boot-file-url-option! {boot-file-url-op}? | | +--ro boot-file-url-option! {boot-file-url-op}? | |||
| | +--ro boot-file* [boot-file-id] | | | +--ro boot-file* [boot-file-id] | |||
| | +--ro boot-file-id uint8 | | | +--ro boot-file-id uint8 | |||
| | +--ro suitable-arch-type* uint16 | | | +--ro suitable-arch-type* uint16 | |||
| | +--ro suitable-net-if* uint32 | | | +--ro suitable-net-if* uint32 | |||
| | +--ro boot-file-url string | | | +--ro boot-file-url string | |||
| +--ro boot-file-param-option! {boot-file-param-op}? | | +--ro boot-file-param-option! {boot-file-param-op}? | |||
| | +--ro boot-file-paras* [para-id] | | | +--ro boot-file-params* [param-id] | |||
| | +--ro para-id uint8 | | | +--ro param-id uint8 | |||
| | +--ro parameter string | | | +--ro parameter string | |||
| +--ro aftr-name-option! {aftr-name-op}? | | +--ro aftr-name-option! {aftr-name-op}? | |||
| | +--ro tunnel-endpoint-name string | | | +--ro tunnel-endpoint-name string | |||
| +--ro kbr-default-name-option! {kbr-default-name-op}? | | +--ro kbr-default-name-option! {kbr-default-name-op}? | |||
| | +--ro default-realm-name string | | | +--ro default-realm-name string | |||
| +--ro kbr-kdc-option! {kbr-kdc-op}? | | +--ro kbr-kdc-option! {kbr-kdc-op}? | |||
| | +--ro kdc-info* [kdc-id] | | | +--ro kdc-info* [kdc-id] | |||
| | +--ro kdc-id uint8 | | | +--ro kdc-id uint8 | |||
| | +--ro priority uint16 | | | +--ro priority uint16 | |||
| | +--ro weight uint16 | | | +--ro weight uint16 | |||
skipping to change at page 26, line 33 ¶ | skipping to change at page 26, line 33 ¶ | |||
o client-if: A client may have several interfaces, it is more | o client-if: A client may have several interfaces, it is more | |||
reasonable to configure and manage parameters on the interface- | reasonable to configure and manage parameters on the interface- | |||
level. The list defines a specific client interface and its data. | level. The list defines a specific client interface and its data. | |||
Different interfaces are distinguished by the "ifName" key which | Different interfaces are distinguished by the "ifName" key which | |||
is a configurable string value. | is a configurable string value. | |||
o pd-function: Whether the client can act as a requesting router to | o pd-function: Whether the client can act as a requesting router to | |||
request prefixes using prefix delegation ([RFC3633]). | request prefixes using prefix delegation ([RFC3633]). | |||
o rapid-commit: '1' indicates a client can initiate a Solicit-Reply | o rapid-commit: 'true' indicates a client can initiate a Solicit- | |||
message exchange by adding a Rapid Commit option in Solicit | Reply message exchange by adding a Rapid Commit option in Solicit | |||
message. '0' means the client is not allowed to add a Rapid | message. 'false' means the client is not allowed to add a Rapid | |||
Commit option to request addresses in a two-message exchange | Commit option to request addresses in a two-message exchange | |||
pattern. | pattern. | |||
o client-configured-options: Similar to the server, the client also | o client-configured-options: Similar to the server, the client also | |||
need to configure some options to fulfil some desired functions. | need to configure some options to fulfill some desired functions. | |||
This container include all the potential options that need to be | This container include all the potential options that need to be | |||
configured at the client side. The relevant RFCs that define | configured at the client side. The relevant RFCs that define | |||
those options include: [RFC3315], [RFC4704], [RFC5970], [RFC6784], | those options include: [RFC3315], [RFC4704], [RFC5970], [RFC6784], | |||
[RFC6939]. | [RFC6939]. | |||
o option-request-option: This container provide a way to configure | o option-request-option: This container provide a way to configure | |||
the list of options that the client will request in its ORO | the list of options that the client will request in its ORO | |||
option. | option. | |||
o client-state: This container includes the state data of the | o client-state: This container includes the state data of the | |||
client. | client. | |||
o if-other-paras: A client can obtain extra configuration data other | o if-other-params: A client can obtain extra configuration data | |||
than address and prefix information through DHCPv6 options. This | other than address and prefix information through DHCPv6 options. | |||
container describes such data the client was configured through | This container describes such data the client was configured | |||
DHCPv6. The potential configuration data may include DNS server | through DHCPv6. The potential configuration data may include DNS | |||
parameters, SIP server parameters and etc. | server parameters, SIP server parameters and etc. | |||
o packet-stats: A container records all the packet status | o packet-stats: A container records all the packet status | |||
information of a specific interface. | information of a specific interface. | |||
Information about notifications: | Information about notifications: | |||
o ia-lease-event: raised when the client was allocated a new IA from | o ia-lease-event: raised when the client was allocated a new IA from | |||
the server or it renew/rebind/release its current IA. | the server or it renew/rebind/release its current IA. | |||
o invalid-ia-detected: raised when the identity association of the | o invalid-ia-detected: raised when the identity association of the | |||
skipping to change at page 34, line 12 ¶ | skipping to change at page 34, line 12 ¶ | |||
container address-pools { | container address-pools { | |||
description | description | |||
"A container that describes the DHCPv6 server's | "A container that describes the DHCPv6 server's | |||
address pools."; | address pools."; | |||
list address-pool { | list address-pool { | |||
key pool-id; | key pool-id; | |||
description "A DHCPv6 server can be configured with | description "A DHCPv6 server can be configured with | |||
several address pools. This list defines such address pools | several address pools. This list defines such address pools | |||
which are distinguished by the key called 'pool-id'."; | which are distinguished by the key called 'pool-id' inside | |||
a network range."; | ||||
leaf pool-id { | leaf pool-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "pool id"; | description "pool id"; | |||
} | } | |||
leaf pool-prefix { | leaf pool-prefix { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
mandatory true; | description "Pool prefix. SHOULD be set when the | |||
description "pool prefix"; | 'start-address..end-address' range is a prefix."; | |||
} | } | |||
leaf start-address { | leaf start-address { | |||
type inet:ipv6-address-no-zone; | type inet:ipv6-address-no-zone; | |||
mandatory true; | mandatory true; | |||
description "start address"; | description "start address"; | |||
} | } | |||
leaf end-address { | leaf end-address { | |||
type inet:ipv6-address-no-zone; | type inet:ipv6-address-no-zone; | |||
mandatory true; | mandatory true; | |||
description "end address"; | description "end address"; | |||
} | } | |||
leaf valid-lifetime { | leaf valid-lifetime { | |||
type yang:timeticks; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "valid liftime for IA"; | description "valid lifetime for IA"; | |||
} | } | |||
leaf renew-time { | leaf renew-time { | |||
type yang:timeticks; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "renew time"; | description "renew time"; | |||
} | } | |||
leaf rebind-time { | leaf rebind-time { | |||
type yang:timeticks; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "rebind time"; | description "rebind time"; | |||
skipping to change at page 35, line 27 ¶ | skipping to change at page 35, line 29 ¶ | |||
type threshold; | type threshold; | |||
mandatory true; | mandatory true; | |||
description "maximum count of addresses that can | description "maximum count of addresses that can | |||
be allocated in this pool. This value may be | be allocated in this pool. This value may be | |||
less than count of total addresses."; | less than count of total addresses."; | |||
} | } | |||
leaf option-set-id { | leaf option-set-id { | |||
type leafref { | type leafref { | |||
path "/server/server-config/option-sets/option-set/option-set-id"; | path "/server/server-config/option-sets/option-set/option-set-id"; | |||
} | } | |||
mandatory true; | ||||
description "The ID field of relevant option-set to be | description "The ID field of relevant option-set to be | |||
provisioned to clients of this address-pool."; | provisioned to clients of this address-pool."; | |||
} | } | |||
} | } | |||
} | } | |||
container pd-pools { | container pd-pools { | |||
description "If a server supports prefix delegation function, this | description "If a server supports prefix delegation function, this | |||
container will be used to define the delegating router's prefix | container will be used to define the delegating router's prefix | |||
pools."; | pools."; | |||
skipping to change at page 36, line 6 ¶ | skipping to change at page 36, line 6 ¶ | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "pool id"; | description "pool id"; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
mandatory true; | mandatory true; | |||
description "ipv6 prefix"; | description "ipv6 prefix"; | |||
} | } | |||
leaf prefix-length { | leaf delegated-length { | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "prefix length"; | description "default delegated prefix length"; | |||
} | } | |||
leaf valid-lifetime { | leaf valid-lifetime { | |||
type yang:timeticks; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "valid lifetime for IA"; | description "valid lifetime for IA"; | |||
} | } | |||
leaf renew-time { | leaf renew-time { | |||
type yang:timeticks; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "renew time"; | description "renew time"; | |||
skipping to change at page 36, line 50 ¶ | skipping to change at page 36, line 50 ¶ | |||
} | } | |||
leaf max-pd-space-utilization { | leaf max-pd-space-utilization { | |||
type threshold; | type threshold; | |||
mandatory true; | mandatory true; | |||
description "Maximum utilization of pd space in this pool"; | description "Maximum utilization of pd space in this pool"; | |||
} | } | |||
leaf option-set-id { | leaf option-set-id { | |||
type leafref { | type leafref { | |||
path "/server/server-config/option-sets/option-set/option-set-id"; | path "/server/server-config/option-sets/option-set/option-set-id"; | |||
} | } | |||
mandatory true; | ||||
description "The ID field of relevant option-set to be | description "The ID field of relevant option-set to be | |||
provisioned to clients of this prefix-pool."; | provisioned to clients of this prefix-pool."; | |||
} | } | |||
} | } | |||
} | } | |||
container host-reservations { | container host-reservations { | |||
description | description | |||
"This container allows the server to make reservations at host level."; | "This container allows the server to make reservations at host level."; | |||
list host-reservation { | list host-reservation { | |||
key cli-id; | key cli-id; | |||
description "This list allows the server to reserve addresses, | description "This list allows the server to reserve addresses, | |||
prefixes, hostname and options for different clients."; | prefixes, hostname and options for different clients."; | |||
skipping to change at page 38, line 33 ¶ | skipping to change at page 38, line 32 ¶ | |||
} | } | |||
description "The ID field of relevant option-set to be provisioned | description "The ID field of relevant option-set to be provisioned | |||
in the host reservation."; | in the host reservation."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container relay-opaque-paras { | container relay-opaque-params { | |||
description "This container contains some opaque values in Relay Agent | description "This container contains some opaque values in Relay Agent | |||
options that need to be configured on the server side only for value | options that need to be configured on the server side only for value | |||
match. Such Relay Agent options include Interface-Id option, | match. Such Relay Agent options include Interface-Id option, | |||
Remote-Id option and Subscriber-Id option."; | Remote-Id option and Subscriber-Id option."; | |||
list relays { | list relays { | |||
key relay-name; | key relay-name; | |||
description "relay agents"; | description "relay agents"; | |||
leaf relay-name { | leaf relay-name { | |||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
skipping to change at page 42, line 25 ¶ | skipping to change at page 42, line 24 ¶ | |||
} | } | |||
leaf pd-space-utilization { | leaf pd-space-utilization { | |||
type threshold; | type threshold; | |||
mandatory true; | mandatory true; | |||
description "current PD space utilization"; | description "current PD space utilization"; | |||
} | } | |||
} | } | |||
list binding-info { | list binding-info { | |||
key cli-id; | key cli-id; | |||
description "A list records a binding information for each DHCPv6 | description "A list records a binding information for each DHCPv6 | |||
client that has already been alloated IPv6 prefixes."; | client that has already been allocated IPv6 prefixes."; | |||
leaf cli-id { | leaf cli-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "client id"; | description "client id"; | |||
} | } | |||
container duid { | container duid { | |||
description "Reads the DUID"; | description "Reads the DUID"; | |||
uses dhcpv6-types:duid; | uses dhcpv6-types:duid; | |||
} | } | |||
list cli-iapd { | list cli-iapd { | |||
skipping to change at page 43, line 18 ¶ | skipping to change at page 43, line 17 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
container host-reservations { | container host-reservations { | |||
description "This container provides host reservations in the host level."; | description "This container provides host reservations in the host level."; | |||
list binding-info { | list binding-info { | |||
key cli-id; | key cli-id; | |||
description | description | |||
"A list records a binding information for each DHCPv6 | "A list records a binding information for each DHCPv6 | |||
client that has already been alloated IPv6 addresses or prefixes | client that has already been allocated IPv6 addresses or prefixes | |||
by host reservations."; | by host reservations."; | |||
leaf cli-id { | leaf cli-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "client id"; | description "client id"; | |||
} | } | |||
container duid { | container duid { | |||
description "Reads the DUID"; | description "Reads the DUID"; | |||
uses dhcpv6-types:duid; | uses dhcpv6-types:duid; | |||
} | } | |||
skipping to change at page 51, line 28 ¶ | skipping to change at page 51, line 26 ¶ | |||
} | } | |||
} | } | |||
list relay-if { | list relay-if { | |||
// if - This should reference an entry in ietf-interfaces | // if - This should reference an entry in ietf-interfaces | |||
key if-name; | key if-name; | |||
description | description | |||
"A relay agent may have several interfaces, we should provide | "A relay agent may have several interfaces, we should provide | |||
a way to configure and manage parameters on the interface-level. | a way to configure and manage parameters on the interface-level. | |||
A list that describes specific interfaces and their corresponding | A list that describes specific interfaces and their corresponding | |||
parameters is employed to fulfil the configfuration. Here we use | parameters is employed to fulfill the configuration. Here we use | |||
a string called 'if-name' as the key of list."; | a string called 'if-name' as the key of list."; | |||
leaf if-name { | leaf if-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Interface name"; | "Interface name"; | |||
} | } | |||
leaf interface-id { | leaf interface-id { | |||
type string; | type string; | |||
description | description | |||
skipping to change at page 53, line 6 ¶ | skipping to change at page 53, line 4 ¶ | |||
"Whether the next entity is a server"; | "Whether the next entity is a server"; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container relay-state { | container relay-state { | |||
config "false"; | config "false"; | |||
description | description | |||
"State data of relay"; | "State data of relay"; | |||
list relay-if { | list relay-if { | |||
key if-name; | key if-name; | |||
description | description | |||
"A relay agent may have several interfaces, we should provide | "A relay agent may have several interfaces, we should provide | |||
a way to configure and manage parameters on the interface-level. | a way to configure and manage parameters on the interface-level. | |||
A list that describes specific interfaces and their corresponding | A list that describes specific interfaces and their corresponding | |||
parameters is employed to fulfil the configfuration. Here we use | parameters is employed to fulfill the configuration. Here we use | |||
a string called 'if-name' as the key of list."; | a string called 'if-name' as the key of list."; | |||
leaf if-name{ | leaf if-name{ | |||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Interface name"; | "Interface name"; | |||
} | } | |||
list pd-route { | list pd-route { | |||
// if - need to look at if/how we model these. If they are | // if - need to look at if/how we model these. If they are | |||
// going to be modelled, then they should be ro state | // going to be modeled, then they should be ro state | |||
// entries (we're not trying to configure routes here) | // entries (we're not trying to configure routes here) | |||
key pd-route-id; | key pd-route-id; | |||
description "pd route"; | description "pd route"; | |||
leaf pd-route-id { | leaf pd-route-id { | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"PD route id"; | "PD route id"; | |||
} | } | |||
leaf requesting-router-id { | leaf requesting-router-id { | |||
skipping to change at page 54, line 40 ¶ | skipping to change at page 54, line 38 ¶ | |||
description "request received counter"; | description "request received counter"; | |||
} | } | |||
leaf renew-rvd-count { | leaf renew-rvd-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "renew received counter"; | description "renew received counter"; | |||
} | } | |||
leaf rebind-rvd-count { | leaf rebind-rvd-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "rebind recevied counter"; | description "rebind received counter"; | |||
} | } | |||
leaf decline-rvd-count { | leaf decline-rvd-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "decline received counter"; | description "decline received counter"; | |||
} | } | |||
leaf release-rvd-count { | leaf release-rvd-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "release received counter"; | description "release received counter"; | |||
skipping to change at page 56, line 29 ¶ | skipping to change at page 56, line 28 ¶ | |||
leaf relay-for-rvd-count { | leaf relay-for-rvd-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Relay forward received counter"; | "Relay forward received counter"; | |||
} | } | |||
leaf relay-rep-rvd-count { | leaf relay-rep-rvd-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Relay reply recevied counter"; | "Relay reply received counter"; | |||
} | } | |||
leaf packet-to-cli-count { | leaf packet-to-cli-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Packet to client counter"; | "Packet to client counter"; | |||
} | } | |||
leaf relay-for-sent-count { | leaf relay-for-sent-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
skipping to change at page 60, line 4 ¶ | skipping to change at page 59, line 51 ¶ | |||
leaf pd-function { | leaf pd-function { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "Whether the client can act as a requesting router | description "Whether the client can act as a requesting router | |||
to request prefixes using prefix delegation ([RFC3633])."; | to request prefixes using prefix delegation ([RFC3633])."; | |||
} | } | |||
leaf rapid-commit { | leaf rapid-commit { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "'1' indicates a client can initiate a Solicit-Reply message | description "'true' indicates a client can initiate a Solicit-Reply message | |||
exchange by adding a Rapid Commit option in Solicit message. '0' means | exchange by adding a Rapid Commit option in Solicit message. 'false' means | |||
the client is not allowed to add a Rapid Commit option to request | the client is not allowed to add a Rapid Commit option to request | |||
addresses in a two-message exchange pattern."; | addresses in a two-message exchange pattern."; | |||
} | } | |||
/* | /* | |||
container mo-tab { | container mo-tab { | |||
description "The management tab label indicates the operation mode of the | description "The management tab label indicates the operation mode of the | |||
DHCPv6 client. | DHCPv6 client. | |||
'm'=1 and 'o'=1 indicate the client will use DHCPv6 to obtain all the configuration | 'm'=1 and 'o'=1 indicate the client will use DHCPv6 to obtain all the configuration | |||
data. | data. | |||
'm'=1 and 'o'=0 are a meaningless combination. | 'm'=1 and 'o'=0 are a meaningless combination. | |||
'm'=0 and 'o'=1 indicate the client will use stateless DHCPv6 to obtain configuration | 'm'=0 and 'o'=1 indicate the client will use stateless DHCPv6 to obtain configuration | |||
data apart from addresses/prefixes data. | data apart from addresses/prefixes data. | |||
'm'=0 and 'o'=0 represent the client will not use DHCPv6 but use SLAAC to | 'm'=0 and 'o'=0 represent the client will not use DHCPv6 but use SLAAC to | |||
achieve configuration."; | achieve configuration."; | |||
// if - not sure about the intended use here as it seems | // if - not sure about the intended use here as it seems | |||
// to be redfining what will be received in the PIO. Is | // to be redefining what will be received in the PIO. Is | |||
// the intention to be whether they PIO options will be | // the intention to be whether they PIO options will be | |||
// obeyed as received or overridden? | // obeyed as received or overridden? | |||
leaf m-tab { | leaf m-tab { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "m tab"; | description "m tab"; | |||
} | } | |||
leaf o-tab { | leaf o-tab { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
skipping to change at page 60, line 49 ¶ | skipping to change at page 60, line 48 ¶ | |||
container client-configured-options { | container client-configured-options { | |||
description "client configured options"; | description "client configured options"; | |||
uses dhcpv6-options:client-option-definitions; | uses dhcpv6-options:client-option-definitions; | |||
} | } | |||
} | } | |||
} | } | |||
container client-state { | container client-state { | |||
config "false"; | config "false"; | |||
description "state tree of client"; | description "state tree of client"; | |||
container if-other-paras { | container if-other-params { | |||
description "A client can obtain extra configuration | description "A client can obtain extra configuration | |||
data other than address and prefix information through | data other than address and prefix information through | |||
DHCPv6. This container describes such data the client | DHCPv6. This container describes such data the client | |||
was configured. The potential configuration data may | was configured. The potential configuration data may | |||
include DNS server addresses, SIP server domain names, etc."; | include DNS server addresses, SIP server domain names, etc."; | |||
uses dhcpv6-options:server-option-definitions; | uses dhcpv6-options:server-option-definitions; | |||
} | } | |||
container packet-stats { | container packet-stats { | |||
config "false"; | config "false"; | |||
description "A container records | description "A container records | |||
skipping to change at page 62, line 19 ¶ | skipping to change at page 62, line 19 ¶ | |||
description "confirm counter"; | description "confirm counter"; | |||
} | } | |||
leaf reply-count { | leaf reply-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "reply counter"; | description "reply counter"; | |||
} | } | |||
leaf reconfigure-count { | leaf reconfigure-count { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "recofigure counter"; | description "reconfigure counter"; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
skipping to change at page 68, line 5 ¶ | skipping to change at page 68, line 5 ¶ | |||
feature kbr-kdc-op { | feature kbr-kdc-op { | |||
description "Support for Kerberos KDC option"; | description "Support for Kerberos KDC option"; | |||
} | } | |||
feature sol-max-rt-op { | feature sol-max-rt-op { | |||
description "Support for SOL_MAX_RT option"; | description "Support for SOL_MAX_RT option"; | |||
} | } | |||
feature inf-max-rt-op { | feature inf-max-rt-op { | |||
description "Support for INF_MAX_RT option"; | description "Support for INF_MAX_RT option"; | |||
} | } | |||
feature addr-selection-op { | feature addr-selection-op { | |||
description "Support for Address Selection opiton"; | description "Support for Address Selection option"; | |||
} | } | |||
feature pcp-server-op { | feature pcp-server-op { | |||
description "Support for Port Control Protocol (PCP) | description "Support for Port Control Protocol (PCP) | |||
option"; | option"; | |||
} | } | |||
feature s46-rule-op { | feature s46-rule-op { | |||
description "Support for S46 Rule option"; | description "Support for S46 Rule option"; | |||
} | } | |||
feature s46-br-op { | feature s46-br-op { | |||
description "Support for S46 Border Relay (BR) option"; | description "Support for S46 Border Relay (BR) option"; | |||
skipping to change at page 69, line 27 ¶ | skipping to change at page 69, line 27 ¶ | |||
feature operator-op-ipv6-address { | feature operator-op-ipv6-address { | |||
description "Support for Option with IPv6 Addresses"; | description "Support for Option with IPv6 Addresses"; | |||
} | } | |||
feature operator-op-single-flag { | feature operator-op-single-flag { | |||
description "Support for Option with Single Flag"; | description "Support for Option with Single Flag"; | |||
} | } | |||
feature operator-op-ipv6-prefix { | feature operator-op-ipv6-prefix { | |||
description "Support for Option with IPv6 Prefix"; | description "Support for Option with IPv6 Prefix"; | |||
} | } | |||
feature operator-op-int32 { | feature operator-op-int32 { | |||
description "Support for Opion with 32-bit | description "Support for Option with 32-bit | |||
Integer Value"; | Integer Value"; | |||
} | } | |||
feature operator-op-int16 { | feature operator-op-int16 { | |||
description "Support for Opion with 16-bit Integer Value"; | description "Support for Option with 16-bit Integer Value"; | |||
} | } | |||
feature operator-op-int8 { | feature operator-op-int8 { | |||
description "Support for Opion with 8-bit Integer Value"; | description "Support for Option with 8-bit Integer Value"; | |||
} | } | |||
feature operator-op-uri { | feature operator-op-uri { | |||
description "Support for Opion with URI"; | description "Support for Option with URI"; | |||
} | } | |||
feature operator-op-textstring { | feature operator-op-textstring { | |||
description "Support for Opion with Text String"; | description "Support for Option with Text String"; | |||
} | } | |||
feature operator-op-var-data { | feature operator-op-var-data { | |||
description "Support for Opion with Variable-Length Data"; | description "Support for Option with Variable-Length Data"; | |||
} | } | |||
feature operator-op-dns-wire { | feature operator-op-dns-wire { | |||
description "Support for Opion with DNS Wire | description "Support for Option with DNS Wire | |||
Format Domain Name List"; | Format Domain Name List"; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping server-option-definitions { | grouping server-option-definitions { | |||
description "Contains definitions for options configured on the | description "Contains definitions for options configured on the | |||
DHCPv6 server which will be supplied to clients."; | DHCPv6 server which will be supplied to clients."; | |||
skipping to change at page 75, line 27 ¶ | skipping to change at page 75, line 27 ¶ | |||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
description "Reference to the TZ Database"; | description "Reference to the TZ Database"; | |||
} | } | |||
} | } | |||
container ntp-server-option { | container ntp-server-option { | |||
//This option looks like it needs work to correctly model the | //This option looks like it needs work to correctly model the | |||
//option as defined in the RFC. | //option as defined in the RFC. | |||
// Zihao - Re-modelled so it only contains one time source suboption | // Zihao - Re-modeled so it only contains one time source suboption | |||
if-feature ntp-server-op; | if-feature ntp-server-op; | |||
presence "Enable this option"; | presence "Enable this option"; | |||
description "OPTION_NTP_SERVER (56) NTP Server Option for DHCPv6"; | description "OPTION_NTP_SERVER (56) NTP Server Option for DHCPv6"; | |||
reference "RFC5908: Network Time Protocol (NTP) Server Option for | reference "RFC5908: Network Time Protocol (NTP) Server Option for | |||
DHCPv6"; | DHCPv6"; | |||
list ntp-server { | list ntp-server { | |||
key ntp-serv-id; | key ntp-serv-id; | |||
description "ntp server info"; | description "ntp server info"; | |||
leaf ntp-serv-id { | leaf ntp-serv-id { | |||
skipping to change at page 76, line 51 ¶ | skipping to change at page 76, line 51 ¶ | |||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
description "url for boot file"; | description "url for boot file"; | |||
} | } | |||
} | } | |||
} | } | |||
container boot-file-param-option { | container boot-file-param-option { | |||
if-feature boot-file-param-op; | if-feature boot-file-param-op; | |||
presence "Enable this option"; | presence "Enable this option"; | |||
description "OPT_BOOTFiLE_PARAM (60) Boot File Parameters Option"; | description "OPT_BOOTFILE_PARAM (60) Boot File Parameters Option"; | |||
reference "RFC5970: DHCPv6 Options for Network Boot"; | reference "RFC5970: DHCPv6 Options for Network Boot"; | |||
list boot-file-paras { | list boot-file-params { | |||
key para-id; | key param-id; | |||
description "boot file parameters"; | description "boot file parameters"; | |||
leaf para-id { | leaf param-id { | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "parameter id"; | description "parameter id"; | |||
} | } | |||
leaf parameter { | leaf parameter { | |||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
description "parameter value"; | description "parameter value"; | |||
} | } | |||
} | } | |||
skipping to change at page 81, line 43 ¶ | skipping to change at page 81, line 43 ¶ | |||
leaf prefix6-len { | leaf prefix6-len { | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "ipv6 prefix length"; | description "ipv6 prefix length"; | |||
} | } | |||
leaf ipv6-prefix { | leaf ipv6-prefix { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
mandatory true; | mandatory true; | |||
description "ipv6 prefix"; | description "ipv6 prefix"; | |||
} | } | |||
uses dhcpv6-types:portset-para; | uses dhcpv6-types:portset-param; | |||
} | } | |||
} | } | |||
container s46-br-option { | container s46-br-option { | |||
if-feature s46-br-op; | if-feature s46-br-op; | |||
presence "Enable this option"; | presence "Enable this option"; | |||
description "OPTION_S46_BR (90) S46 BR Option"; | description "OPTION_S46_BR (90) S46 BR Option"; | |||
reference "RFC7598: DHCPv6 Options for Configuration of | reference "RFC7598: DHCPv6 Options for Configuration of | |||
Softwire Address and Port-Mapped Clients"; | Softwire Address and Port-Mapped Clients"; | |||
list br { | list br { | |||
skipping to change at page 83, line 31 ¶ | skipping to change at page 83, line 31 ¶ | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "bind ipv6 prefix | description "bind ipv6 prefix | |||
length"; | length"; | |||
} | } | |||
leaf bind-ipv6-prefix { | leaf bind-ipv6-prefix { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
mandatory true; | mandatory true; | |||
description "bind ipv6 prefix"; | description "bind ipv6 prefix"; | |||
} | } | |||
uses dhcpv6-types:portset-para; | uses dhcpv6-types:portset-param; | |||
} | } | |||
} | } | |||
} | } | |||
//if - NB - The list of options needs to be updated. | //if - NB - The list of options needs to be updated. | |||
grouping relay-supplied-option-definitions { | grouping relay-supplied-option-definitions { | |||
// if - The structure here needs to be checked and probably reworked. | // if - The structure here needs to be checked and probably reworked. | |||
description "OPTION_RSOO (66) Relay-Supplied Options option"; | description "OPTION_RSOO (66) Relay-Supplied Options option"; | |||
reference "RFC6422: Relay-Supplied DHCP Options"; | reference "RFC6422: Relay-Supplied DHCP Options"; | |||
skipping to change at page 93, line 30 ¶ | skipping to change at page 93, line 30 ¶ | |||
} | } | |||
} | } | |||
container operator-option-var-data { | container operator-option-var-data { | |||
if-feature operator-op-var-data; | if-feature operator-op-var-data; | |||
presence "Enable this option"; | presence "Enable this option"; | |||
description "operator variable length data option"; | description "operator variable length data option"; | |||
reference "RFC7227: Guidelines for Creating New DHCPv6 Options"; | reference "RFC7227: Guidelines for Creating New DHCPv6 Options"; | |||
list int32val { | list int32val { | |||
key var-data-id; | key var-data-id; | |||
description "operator ivariable length data info"; | description "operator invariable length data info"; | |||
leaf var-data-id { | leaf var-data-id { | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "operator variable length id"; | description "operator variable length id"; | |||
} | } | |||
leaf var-data { | leaf var-data { | |||
type binary; | type binary; | |||
mandatory true; | mandatory true; | |||
description "operator variable length value"; | description "operator variable length value"; | |||
} | } | |||
skipping to change at page 95, line 39 ¶ | skipping to change at page 95, line 39 ¶ | |||
} | } | |||
} | } | |||
grouping duid { | grouping duid { | |||
description | description | |||
"Each server and client has only one DUID (DHCP Unique Identifier). | "Each server and client has only one DUID (DHCP Unique Identifier). | |||
The DUID here identifies a unique DHCPv6 server for clients. DUID | The DUID here identifies a unique DHCPv6 server for clients. DUID | |||
consists of a two-octet type field and an arbitrary length (no more | consists of a two-octet type field and an arbitrary length (no more | |||
than 128 bytes) content field. Currently there are four defined types | than 128 bytes) content field. Currently there are four defined types | |||
of DUIDs in RFC3315 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL and | of DUIDs in RFC3315 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL and | |||
DUID-UUID. DUID-Uknown represents those unconventional DUIDs."; | DUID-UUID. DUID-Unknown represents those unconventional DUIDs."; | |||
reference "RFC3315: Section 9 and RFC6355: Section 4"; | reference "RFC3315: Section 9 and RFC6355: Section 4"; | |||
leaf type-code { | leaf type-code { | |||
type uint16; | type uint16; | |||
default 65535; | default 65535; | |||
description "Type code of this DUID"; | description "Type code of this DUID"; | |||
} | } | |||
choice duid-type { | choice duid-type { | |||
default duid-unknown; | default duid-unknown; | |||
description "Selects the format for the DUID."; | description "Selects the format for the DUID."; | |||
case duid-llt { | case duid-llt { | |||
skipping to change at page 96, line 32 ¶ | skipping to change at page 96, line 32 ¶ | |||
description "DUID Assigned by Vendor Based on Enterprise Number | description "DUID Assigned by Vendor Based on Enterprise Number | |||
(Type 2 - DUID-EN)"; | (Type 2 - DUID-EN)"; | |||
reference "RFC3315 Section 9.3"; | reference "RFC3315 Section 9.3"; | |||
leaf duid-en-enterprise-number { | leaf duid-en-enterprise-number { | |||
type uint32; | type uint32; | |||
description "Vendor's registered Private Enterprise Number as | description "Vendor's registered Private Enterprise Number as | |||
maintained by IANA"; | maintained by IANA"; | |||
} | } | |||
leaf duid-en-identifier { | leaf duid-en-identifier { | |||
type string; | type string; | |||
description "Indentifier, unique to the device that is | description "Identifier, unique to the device that is | |||
using it"; | using it"; | |||
} | } | |||
} | } | |||
case duid-ll { | case duid-ll { | |||
description "DUID Based on Link-layer Address (Type 3 - DUID-LL)"; | description "DUID Based on Link-layer Address (Type 3 - DUID-LL)"; | |||
reference "RFC3315 Section 9.4"; | reference "RFC3315 Section 9.4"; | |||
leaf duid-ll-hardware-type { | leaf duid-ll-hardware-type { | |||
type uint16; | type uint16; | |||
description "Hardware type as assigned by IANA (RFC826)."; | description "Hardware type as assigned by IANA (RFC826)."; | |||
} | } | |||
leaf duid-ll-link-layer-addr { | leaf duid-ll-link-layer-addr { | |||
type yang:mac-address; | type yang:mac-address; | |||
description "Link-layer address as described in RFC2464"; | description "Link-layer address as described in RFC2464"; | |||
} | } | |||
} | } | |||
case duid-uuid { | case duid-uuid { | |||
description "DUID Based on Universally Unique Identifier | description "DUID Based on Universally Unique Identifier | |||
(Type 4 - DUID-UUID)"; | (Type 4 - DUID-UUID)"; | |||
reference "RFC6335 Defination of the UUID-Based Unique Identifier"; | reference "RFC6335 Definition of the UUID-Based Unique Identifier"; | |||
leaf uuid { | leaf uuid { | |||
type yang:uuid; | type yang:uuid; | |||
description "A Universally Unique IDentifier in the string | description "A Universally Unique IDentifier in the string | |||
representation defined in RFC 4122. The canonical | representation defined in RFC 4122. The canonical | |||
representation uses lowercase characters"; | representation uses lowercase characters"; | |||
} | } | |||
} | } | |||
case duid-unknown { | case duid-unknown { | |||
description "DUID based on free raw bytes"; | description "DUID based on free raw bytes"; | |||
leaf data { | leaf data { | |||
type binary; | type binary; | |||
description "The bits to be used as the identifier"; | description "The bits to be used as the identifier"; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping portset-para { | grouping portset-param { | |||
description "portset parameters"; | description "portset parameters"; | |||
container port-parameter { | container port-parameter { | |||
description "port parameter"; | description "port parameter"; | |||
leaf offset { | leaf offset { | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "offset in a port set"; | description "offset in a port set"; | |||
} | } | |||
leaf psid-len { | leaf psid-len { | |||
type uint8; | type uint8; | |||
skipping to change at page 99, line 18 ¶ | skipping to change at page 99, line 18 ¶ | |||
5. IANA Considerations (TBD) | 5. IANA Considerations (TBD) | |||
This document registers the following YANG modules in the "YANG | This document registers the following YANG modules in the "YANG | |||
Module Names" registry [RFC6020]. | Module Names" registry [RFC6020]. | |||
name: ietf-dhcpv6 | name: ietf-dhcpv6 | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6 | namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6 | |||
prefix: dhcpv6 | prefix: dhcpv6 | |||
reference: TBD | reference: TBD | |||
6. Acknowledgements | 6. Acknowledgments | |||
The authors would like to thank Qi Sun, Lishan Li, Sladjana Zoric, | The authors would like to thank Qi Sun, Lishan Li, Sladjana Zoric, | |||
Tomek Mrugalski, Marcin Siodelski, Bernie Volz and Bing Liu for their | Tomek Mrugalski, Marcin Siodelski, Bernie Volz and Bing Liu for their | |||
valuable comments and contributions to this work. | valuable comments and contributions to this work. | |||
7. Contributors | 7. Contributors | |||
The following individuals contributed to this effort: | The following individuals contributed to this effort: | |||
Hao Wang | Hao Wang | |||
Tsinghua University | Tsinghua University | |||
End of changes. 69 change blocks. | ||||
84 lines changed or deleted | 84 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |