idnits 2.17.1 draft-sun-i2apm-address-pool-management-yang-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 5 instances of too long lines in the document, the longest one being 4 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 144 has weird spacing: '...ce-name str...' == Line 147 has weird spacing: '...ge-name stri...' == Line 168 has weird spacing: '...ce-name str...' == Line 172 has weird spacing: '...ge-name str...' -- The document date (July 4, 2016) is 2846 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'RFC6241' is mentioned on line 558, but not defined == Missing Reference: 'RFC6242' is mentioned on line 560, but not defined == Missing Reference: 'RFC6536' is mentioned on line 561, but not defined ** Obsolete undefined reference: RFC 6536 (Obsoleted by RFC 8341) == Missing Reference: 'RFC3688' is mentioned on line 574, but not defined == Unused Reference: 'RFC2119' is defined on line 600, but no explicit reference was found in the text == Unused Reference: 'RFC6674' is defined on line 620, but no explicit reference was found in the text == Unused Reference: 'RFC6888' is defined on line 625, but no explicit reference was found in the text ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) Summary: 3 errors (**), 0 flaws (~~), 12 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Q. Sun 3 Internet-Draft C. Xie 4 Intended status: Informational China Telecom 5 Expires: January 5, 2017 M. Boucadair 6 Orange 7 W. Liu 8 Huawei Technologies 9 Y. Lee 10 Comcast 11 July 4, 2016 13 A YANG Data Model for Address Pool Management 14 draft-sun-i2apm-address-pool-management-yang-02 16 Abstract 18 This document specifies a YANG data model for IP address pool 19 management. It can be used to automatically allocate, update and 20 delete address pools in different devices of an underlying network. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on January 5, 2017. 39 Copyright Notice 41 Copyright (c) 2016 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 57 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 3. AddressPoolManagement Data Model . . . . . . . . . . . . . . 3 59 4. AddressPoolManagement YANG Module . . . . . . . . . . . . . . 5 60 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 61 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 62 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 63 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 64 8.1. Normative References . . . . . . . . . . . . . . . . . . 13 65 8.2. Informative References . . . . . . . . . . . . . . . . . 14 66 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 68 1. Introduction 70 IP address pool management is one of the basic elements to configure 71 in a network to offer connectivity services to connected devices. 72 Concretely, pools can be provisioned to DHCP servers, IPv4 service 73 continuity devices (e.g., DS-Lite AFTR, NAT64), Carrier Grade NAT 74 (CGN), Broadband Network Gateway (BNG), etc. Automated means to 75 rationalize the management of address resources and to make sure the 76 underlying routing and forwarding capabilities are appropriately 77 configured, are helpful for opertaors. This document specifies a 78 YANG data model for that purpose. 80 A device can be provisioned with a pool of addresses for various 81 reasons: service requesting hosts with addresses or prefixes (e.g., 82 DHCP server, Delegating router), inject appropriate routing entries 83 (e.g., PE, BNG) given that prefix assignments and routing actions 84 must be correlated otherwise delivery of connectivity service will 85 fail. This document does not elaborate the usage of pools 86 provisioned to a network element. 88 It is worth mentioning that: (1) current practices rely on static 89 configuration which is prone to errors, (2) the level of route 90 aggregation cannot be driven by PE routers without any hint(s) from 91 an entity that has the visibility on aggregation policies and the 92 status of prefixes, etc., and (3) relying on proprietary means to 93 trigger the injection of routing entries may lead to undesired 94 behavior such as to increase the size of routing table and forwarding 95 table due to injecting very specific routes. 97 Within this document, an address pool usually contains the address 98 pool type, start-address, end-address, its corresponding lifetime and 99 the identification of the usage. Each address pool is represented by 100 an Address Pool Entry (APE). 102 Pools may be specific to a service offered by a network or be valid 103 for all services. 105 Pools can be added and/or withdrawn. 107 2. Terminology 109 The terminology for describing YANG data models is defined in 110 [RFC6020]. 112 The meaning of the symbols in the tree diagrams is as follows: 114 Brackets "[" and "]" enclose list keys. 116 Curly braces "{" and "}" contain names of optional features that 117 make the corresponding node conditional. 119 Abbreviations before data node names: "rw" means configuration 120 (read-write), "ro" state data (read-only). 122 Symbols after data node names: "?" means an optional node, "!" a 123 container with presence, and "*" denotes a "list" or "leaf-list". 125 Parentheses enclose choice and case nodes, and case nodes are also 126 marked with a colon (":"). 128 Ellipsis ("...") stands for contents of subtrees that are not 129 shown. 131 3. AddressPoolManagement Data Model 133 Two YANG modules are defined (Figure 1). The first module, "ietf- 134 address-pool", defines generic address pool aspects which is common 135 to all use cases. The second module, "ietf-address-pool-status", 136 defines the status of the address pool. 138 module: ietf-address-pool 139 +--rw address-pools 140 | +--rw address-pool* [address-pool-name] 141 | +--rw address-pool-name string 142 | +--rw device-id? string 143 | +--rw address-pool-service* [service-name] 144 | | +--rw service-name string 145 | +--rw address-pool-entries 146 | +--rw ipv4-address-range* [ipv4-address-range-name] 147 | | +--rw ipv4-address-range-name string 148 | | +--rw ip-lower-address? inet:ipv4-address-no-zone 149 | | +--rw ip-upper-address? inet:ipv4-address-no-zone 150 | | +--rw usergateway? inet:ipv4-address-no-zone 151 | | +--rw gwnetmask? yang:dotted-quad 152 | | +--rw type? address-pool-type 153 | | +--rw lifetime? yang:date-and-time 154 | | +--rw instance? instance-type 155 | +--rw warning-threshold-v4? percent 156 | +--rw ipv6-prefix* [ipv6-prefix-name] 157 | | +--rw ipv6-prefix-name string 158 | | +--rw ipv6-prefix? inet:ipv6-prefix 159 | | +--rw usergateway? inet:ipv6-address-no-zone 160 | | +--rw type? address-pool-type 161 | | +--rw lifetime? yang:date-and-time 162 | | +--rw instance? instance-type 163 | +--rw warning-threshold-v6? percent 164 +--ro address-pool-status 165 +--ro address-pool* [address-pool-name] 166 +--ro address-pool-name string 167 +--ro address-pool-service* [service-name] 168 | +--ro service-name string 169 +--ro status? enumeration 170 +--ro address-pool-entries 171 +--ro ipv4-address-range* [ipv4-address-range-name] 172 | +--ro ipv4-address-range-name string 173 | +--ro peak-address-usage-ratio? percent 174 | +--ro average-address-usage-ratio? percent 175 +--ro ipv6-prefix* [ipv6-prefix-name] 176 | +--ro ipv6-prefix-name string 177 | +--ro peak-prefix-usage-ratio? percent 178 | +--ro average-prefix-usage-ratio? percent 179 +--ro port-range* [port-range-name] 180 +--ro port-range-name string 181 +--ro peak-address-usage-ratio? percent 182 +--ro average-address-usage-ratio? percent 184 Figure 1: Interface to Address Pool Management (APM) 186 4. AddressPoolManagement YANG Module 188 This module imports typedefs from [RFC6991] and [RFC7223]. 190 file "ietf-address-pool@2015-10-14.yang" 191 module ietf-address-pool { 192 namespace "urn:ietf:params:xml:ns:yang:ietf-address-pool"; 193 prefix address-pool; 194 import ietf-inet-types { 195 prefix inet; 196 } 197 import ietf-yang-types { 198 prefix yang; 199 } 200 organization 201 "xxx Working Group"; 203 contact 204 "Editor: Qiong Sun 205 207 Editor: Will(Shucheng) Liu 208 "; 210 description 211 "This module contains a collection of YANG definitions for 212 configuring IP address pools. 214 Copyright (c) 2015 IETF Trust and the persons identified as 215 authors of the code. All rights reserved. 217 Redistribution and use in source and binary forms, with or 218 without modification, is permitted pursuant to, and subject 219 to the license terms contained in, the Simplified BSD License 220 set forth in Section 4.c of the IETF Trust's Legal Provisions 221 Relating to IETF Documents 222 (http://trustee.ietf.org/license-info). 223 This version of this YANG module is part of RFC 7277; see 224 the RFC itself for full legal notices."; 226 revision 2015-10-14 { 227 description 228 "Initial revision."; 229 reference 230 "-00"; 231 } 233 typedef percent { 234 type uint8 { 235 range "0 .. 100"; 236 } 237 description 238 "Percentage"; 239 } 241 typedef address-pool-type{ 242 type enumeration{ 243 enum usergateway { 244 description 245 "The address pool has a usergateway."; 246 } 247 enum import-route { 248 description 249 "The address pool need to import a route 250 to external network."; 251 } 252 } 253 description 254 "Address pool type."; 255 } 257 typedef instance-type{ 258 type enumeration{ 259 enum pppoe { 260 description 261 "The address pool is used for pppoe access."; 262 } 263 enum dhcp { 264 description 265 "The address pool is used for dhcp access."; 266 } 267 enum vpn { 268 description 269 "The address pool is used for vpn access."; 270 } 271 enum ds-lite { 272 description 273 "The address pool is used for ds-lite access."; 274 } 275 enum lw4over6 { 276 description 277 "The address pool is used for lw4over6 access."; 278 } 279 enum map { 280 description 281 "The address pool is used for map access."; 283 } 284 enum cgn { 285 description 286 "The address pool is used for cgn access."; 287 } 288 enum xlat { 289 description 290 "The address pool is used for xlat access."; 291 } 292 enum other { 293 description 294 "The address pool is used for others."; 295 } 296 } 297 description 298 "Instance type."; 299 } 301 container address-pools { 302 description 303 "This is a top level container for Address Pools. 304 It can have one or more Address Pools. The pools may 305 not be contiguous."; 306 list address-pool { 307 key address-pool-name; 308 description 309 "An Address Pool is an ordered list of 310 Address Pool Entries (APE). Each Access Pool Entry has a 311 list of address ranges and its associated lifetime."; 312 leaf address-pool-name { 313 type string; 314 description 315 "The name of address pool"; 316 } 317 leaf device-id { 318 type string; 319 description 320 "The identifier of device that using address pool"; 321 } 322 list address-pool-service { 323 key service-name; 324 description 325 "The services that can use these pool."; 326 leaf service-name { 327 type string; 328 description 329 "A service name: e.g., any, voip, iptv, internet, etc."; 330 } 332 } 334 container address-pool-entries { 335 description 336 "The address-pool-entries container contains 337 a list of address-ranges and associated attributes."; 338 list ipv4-address-range { 339 key ipv4-address-range-name; 340 description 341 "IPv4 Address range."; 342 leaf ipv4-address-range-name { 343 type string; 344 description 345 "The name of IPv4 address range."; 346 } 347 leaf ip-lower-address { 348 type inet:ipv4-address-no-zone; 349 description 350 "The lower IPv4 address of the address range."; 351 } 352 leaf ip-upper-address { 353 type inet:ipv4-address-no-zone; 354 description 355 "The upper IPv4 address of the address range."; 356 } 357 leaf usergateway { 358 type inet:ipv4-address-no-zone; 359 description 360 "It only exists when address pool are used for 361 user addressing."; 362 } 363 leaf gwnetmask { 364 type yang:dotted-quad; 365 description 366 "The netmask for usergateway."; 367 } 368 leaf type { 369 type address-pool-type; 370 description 371 "The type of the address pool."; 372 } 373 leaf lifetime { 374 type yang:date-and-time; 375 description 376 "The lifetime for the address pool. '0' means 377 withdrawal."; 378 } 379 leaf instance { 380 type instance-type; 381 description 382 "The instance of the address pool."; 383 } 384 } 385 leaf warning-threshold-v4{ 386 type percent; 387 description 388 "The threshold of the ipv4 address pool."; 389 } 391 list ipv6-prefix { 392 key ipv6-prefix-name; 393 description 394 "IPv6 prefix."; 395 leaf ipv6-prefix-name { 396 type string; 397 description 398 "The name of IPv6 prefix."; 399 } 400 leaf ipv6-prefix { 401 type inet:ipv6-prefix; 402 description 403 "The IPv6 prefix."; 404 } 405 leaf usergateway { 406 type inet:ipv6-address-no-zone; 407 description 408 "It only exists when address pool are used for 409 user addressing."; 410 } 411 leaf type { 412 type address-pool-type; 413 description 414 "The type of the address pool."; 415 } 416 leaf lifetime { 417 type yang:date-and-time; 418 description 419 "The lifetime for the address pool. '0' means 420 withdrawal."; 421 } 422 leaf instance { 423 type instance-type; 424 description 425 "The instance of the address pool."; 426 } 427 } 428 leaf warning-threshold-v6{ 429 type percent; 430 description 431 "The threshold of the ipv6 address pool."; 432 } 433 } 434 } 435 } 437 /* 438 * Operational state data nodes 439 */ 441 container address-pool-status { 442 config false; 443 description 444 "This is a top level container for Address Pool Status, 445 which contains the status of address pool usage."; 446 list address-pool { 447 key address-pool-name; 448 description 449 "An Address Pool is an ordered list of 450 Address Pool Entries (APE). Each Access Pool Entry has a 451 list of address ranges and its associated lifetime. "; 452 leaf address-pool-name { 453 type string; 454 description 455 "The name of address pool"; 456 } 457 list address-pool-service { 458 key service-name; 459 description 460 "The services that can use these pool."; 461 leaf service-name { 462 type string; 463 description 464 "A service name: e.g., any, voip, iptv, internet, etc."; 465 } 466 } 467 leaf status { 468 type enumeration{ 469 enum active { 470 description 471 "The address pool is in active status."; 472 } 473 enum idle { 474 description 475 "The address pool is in idle status."; 477 } 478 } 479 description 480 "The status of address pool"; 481 } 482 container address-pool-entries { 483 description 484 "The address-pool-entries container contains 485 a list of address-ranges and associated attributes."; 486 list ipv4-address-range { 487 key ipv4-address-range-name; 488 description 489 "IPv4 Address range."; 490 leaf ipv4-address-range-name { 491 type string; 492 description 493 "The name of IPv4 address range."; 494 } 495 leaf peak-address-usage-ratio { 496 type percent; 497 description 498 "The peak usage rate of the address range."; 499 } 500 leaf average-address-usage-ratio { 501 type percent; 502 description 503 "The average usage rate of the address range."; 504 } 505 } 506 list ipv6-prefix { 507 key ipv6-prefix-name; 508 description 509 "IPv6 prefix."; 510 leaf ipv6-prefix-name { 511 type string; 512 description 513 "The name of IPv6 prefix."; 514 } 515 leaf peak-prefix-usage-ratio { 516 type percent; 517 description 518 "The peak usage rate of the prefix."; 519 } 520 leaf average-prefix-usage-ratio { 521 type percent; 522 description 523 "The average usage rate of the prefix."; 524 } 526 } 527 list port-range { 528 key port-range-name; 529 description 530 "port range."; 531 leaf port-range-name { 532 type string; 533 description 534 "The name of port range."; 535 } 536 leaf peak-address-usage-ratio { 537 type percent; 538 description 539 "The peak usage rate of the port range."; 540 } 541 leaf average-address-usage-ratio { 542 type percent; 543 description 544 "The average usage rate of the port range."; 545 } 546 } 547 } 548 } 549 } 550 } 551 553 Figure 2: Interface to Address Pool Management (APM) 555 5. Security Considerations 557 The YANG module defined in this memo is designed to be accessed via 558 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 559 secure transport layer and the support of SSH is mandatory to 560 implement secure transport [RFC6242]. The NETCONF access control 561 model [RFC6536] provides means to restrict access for particular 562 NETCONF users to a pre-configured subset of all available NETCONF 563 protocol operations and contents. 565 All data nodes defined in the YANG module which can be created, 566 modified and deleted (i.e., config true, which is the default). 567 These data nodes are considered sensitive. Write operations (e.g., 568 edit-config) applied to these data nodes without proper protection 569 can negatively affect network operations. 571 6. IANA Considerations 573 This document requests IANA to register the following URI in the 574 "IETF XML Registry" [RFC3688]: 576 URI: urn:ietf:params:xml:ns:yang:ietf-address-pool 577 Registrant Contact: The IESG. 578 XML: N/A; the requested URI is an XML namespace. 580 Figure 3: namespace 582 This document requests IANA to register the following YANG module in 583 the "YANG Module Names" registry [RFC6020]. 585 name: ietf-address-pool 586 namespace: urn:ietf:params:xml:ns:yang:ietf-address-pool 587 prefix: address-pool 588 reference: RFC XXXX 590 Figure 4: IANA register 592 7. Acknowledgements 594 N/A. 596 8. References 598 8.1. Normative References 600 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 601 Requirement Levels", BCP 14, RFC 2119, 602 DOI 10.17487/RFC2119, March 1997, 603 . 605 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 606 the Network Configuration Protocol (NETCONF)", RFC 6020, 607 DOI 10.17487/RFC6020, October 2010, 608 . 610 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 611 RFC 6991, DOI 10.17487/RFC6991, July 2013, 612 . 614 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 615 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 616 . 618 8.2. Informative References 620 [RFC6674] Brockners, F., Gundavelli, S., Speicher, S., and D. Ward, 621 "Gateway-Initiated Dual-Stack Lite Deployment", RFC 6674, 622 DOI 10.17487/RFC6674, July 2012, 623 . 625 [RFC6888] Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa, 626 A., and H. Ashida, "Common Requirements for Carrier-Grade 627 NATs (CGNs)", BCP 127, RFC 6888, DOI 10.17487/RFC6888, 628 April 2013, . 630 Authors' Addresses 632 Qiong Sun 633 China Telecom 634 No.118 Xizhimennei street, Xicheng District 635 Beijing 100035 636 P.R. China 638 Email: sunqiong@ctbri.com.cn 640 Chongfeng Xie 641 China Telecom 642 No.118 Xizhimennei street, Xicheng District 643 Beijing 100035 644 P.R. China 646 Email: xiechf@ctbri.com.cn 648 Mohamed Boucadair 649 Orange 650 Rennes 35000 651 France 653 Email: mohamed.boucadair@orange-ftgroup.com 655 Will(Shucheng) Liu 656 Huawei Technologies 657 Bantian, Longgang District 658 Shenzhen 518129 659 China 661 Email: liushucheng@huawei.com 662 Yiu L. Lee 663 Comcast 664 One Comcast Center 665 Philadelphia, PA 19103 666 USA 668 Email: yiu_lee@cable.comcast.com