idnits 2.17.1 draft-ietf-softwire-dslite-yang-03.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 18 instances of too long lines in the document, the longest one being 46 characters in excess of 72. == There are 2 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 162 has weird spacing: '...ocol-id uin...' == Line 205 has weird spacing: '...address ine...' == Line 213 has weird spacing: '...address ine...' == Line 236 has weird spacing: '...rvation boo...' == Line 259 has weird spacing: '...ocol-id uin...' == (5 more instances...) -- The document date (July 3, 2017) is 2487 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC7753' is defined on line 1964, but no explicit reference was found in the text ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-05) exists of draft-boucadair-pcp-yang-04 -- Obsolete informational reference (is this intentional?): RFC 6087 (Obsoleted by RFC 8407) Summary: 2 errors (**), 0 flaws (~~), 10 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Boucadair 3 Internet-Draft C. Jacquenet 4 Intended status: Standards Track Orange 5 Expires: January 4, 2018 S. Sivakumar 6 Cisco Systems 7 July 3, 2017 9 A YANG Data Model for the DS-Lite 10 draft-ietf-softwire-dslite-yang-03 12 Abstract 14 This document defines a YANG data model for the DS-Lite Address 15 Family Transition Router (AFTR) and Basic Bridging BroadBand (B4) 16 elements . 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at http://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on January 4, 2018. 35 Copyright Notice 37 Copyright (c) 2017 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (http://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 53 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 54 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 2 55 2. DS-Lite YANG Data Model . . . . . . . . . . . . . . . . . . . 3 56 3. DS-Lite YANG Module . . . . . . . . . . . . . . . . . . . . . 9 57 4. Security Considerations . . . . . . . . . . . . . . . . . . . 39 58 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 59 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 40 60 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 61 7.1. Normative references . . . . . . . . . . . . . . . . . . 40 62 7.2. Informative references . . . . . . . . . . . . . . . . . 41 63 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 65 1. Introduction 67 This document defines a data model for DS-Lite [RFC6333], using the 68 YANG data modeling language [RFC6020]. Both the Address Family 69 Transition Router (AFTR) and Basic Bridging BroadBand (B4) elements 70 are covered by this specification. 72 DS-Lite deployment considerations are discussed in [RFC6908]. 74 This document follows the guidelines of [RFC6087]. 76 This document uses the common YANG types defined in [RFC6991]. 78 1.1. Terminology 80 This document makes use of the terms defined in [RFC6333]. 82 The terminology for describing YANG data models is defined in 83 [RFC6020]. 85 1.2. Tree Diagrams 87 The meaning of the symbols in these diagrams is as follows: 89 o Brackets "[" and "]" enclose list keys. 91 o Curly braces "{" and "}" contain names of optional features that 92 make the corresponding node conditional. 94 o Abbreviations before data node names: "rw" means configuration 95 (read-write), "ro" state data (read-only). 97 o Symbols after data node names: "?" means an optional node, "!" a 98 container with presence, and "*" denotes a "list" or "leaf-list". 100 o Parentheses enclose choice and case nodes, and case nodes are also 101 marked with a colon (":"). 103 o Ellipsis ("...") stands for contents of subtrees that are not 104 shown. 106 2. DS-Lite YANG Data Model 108 Figure 1 depicts the YANG data model for the AFTR and B4 elements. 110 The model supports enabling one or more instances of the AFTR 111 function on a device; each instance is responsible for serving a 112 group of B4s. The data model assumes that each AFTR instance can: be 113 enable/disabled, be provisioned with dedicated configuration data, 114 and maintain its own mapping table. The data model assumes that 115 pools of IPv4 addresses can be provisioned to the AFTR. These pools 116 may be contiguous or non-contiguous. Also, it assumes that an AFTR 117 can either assign individual port numbers or port sets. 119 This document assumes [RFC4787][RFC5382][RFC5508] are enabled by 120 default. Also, the data model relies on the recommendations in 121 [RFC6888] and [RFC7857]. In addition, the data model supports state 122 migration as per [RFC7785]. 124 PCP-related considerations are out of scope of the document. A YANG 125 data model for PCP is documented in [I-D.boucadair-pcp-yang]. 127 module: ietf-dslite 128 +--rw dslite-config 129 | +--rw dslite-aftr-config {aftr}? 130 | | +--rw enable? boolean 131 | | +--rw dslite-aftr-instances 132 | | +--rw dslite-aftr-instance* [id] 133 | | +--rw id uint32 134 | | +--rw name? string 135 | | +--rw dslite-aftr-ipv6-address* [address-id] 136 | | | +--rw address-id uint32 137 | | | +--rw ipv6-address? inet:ipv6-address 138 | | +--rw ipv4-address? inet:ipv4-address 139 | | +--rw tunnel-mtu? uint16 140 | | +--rw external-ip-address-pool* [address-id] 141 | | | +--rw address-id uint32 142 | | | +--rw external-ip-pool? inet:ipv4-prefix 143 | | +--rw subscriber-mask? uint8 144 | | +--rw nat-mapping-type? enumeration 145 | | +--rw nat-filtering-type? enumeration 146 | | +--rw port-quota uint16 147 | | +--rw exclude-ports* [id] 148 | | | +--rw id uint16 149 | | | +--rw (port-type)? 150 | | | +--:(single-port-number) 151 | | | | +--rw single-port-number? inet:port-number 152 | | | +--:(port-range) 153 | | | +--rw start-port-number? inet:port-number 154 | | | +--rw end-port-number? inet:port-number 155 | | +--rw port-set 156 | | | +--rw port-set-enable? boolean 157 | | | +--rw port-set-size? uint16 158 | | | +--rw port-set-timeout? uint32 159 | | +--rw enable-app? boolean 160 | | +--rw max-softwire-per-subscriber? uint8 161 | | +--rw transport-protocol* [transport-protocol-id] 162 | | | +--rw transport-protocol-id uint8 163 | | +--rw new-mappings-rate-limit? uint32 164 | | +--rw mss-clamping 165 | | | +--rw mss-clamping-enable? boolean 166 | | | +--rw mss-value? uint16 167 | | +--rw port-allocation-type? enumeration 168 | | +--rw address-roundrobin-enable? boolean 169 | | +--rw udp-lifetime? uint32 170 | | +--rw tcp-idle-timeout? uint32 171 | | +--rw tcp-trans-open-timeout? uint32 172 | | +--rw tcp-trans-close-timeout? uint32 173 | | +--rw tcp-in-syn-timeout? uint32 174 | | +--rw fragment-min-timeout? uint32 175 | | +--rw icmp-timeout? uint32 176 | | +--rw hold-down-timeout? uint32 177 | | +--rw v6-v4-dscp-preservation boolean 178 | | +--rw logging-info 179 | | | +--rw logging-enable? boolean 180 | | | +--rw destination-address? inet:ip-prefix 181 | | | +--rw destination-port? inet:port-number 182 | | | +--rw (protocol)? 183 | | | +--:(syslog) 184 | | | | +--rw syslog? boolean 185 | | | +--:(ipfix) 186 | | | | +--rw ipfix? boolean 187 | | | +--:(ftp) 188 | | | +--rw ftp? boolean 189 | | +--rw notify-address-pool-usage 190 | | | +--rw pool-id? uint32 191 | | | +--rw notify-pool-hi-threshold percent 192 | | | +--rw notify-pool-low-threshold? percent 193 | | +--rw ftp-alg-enable? boolean 194 | | +--rw tftp-alg-enable? boolean 195 | | +--rw sip-alg-enable? boolean 196 | | +--rw rtsp-alg-enable? boolean 197 | | +--rw h323-alg-enable? boolean 198 | | +--rw all-algs-enable? boolean 199 | | +--rw mapping-table 200 | | +--rw mapping-entry* [index] 201 | | +--rw index uint32 202 | | +--rw status? enumeration 203 | | +--rw type? enumeration 204 | | +--rw b4-ip-address inet:ipv6-address 205 | | +--rw internal-ip-address inet:ipv4-prefix 206 | | +--rw internal-port 207 | | | +--rw (port-type)? 208 | | | +--:(single-port-number) 209 | | | | +--rw single-port-number? inet:port-number 210 | | | +--:(port-range) 211 | | | +--rw start-port-number? inet:port-number 212 | | | +--rw end-port-number? inet:port-number 213 | | +--rw external-ip-address inet:ipv4-address 214 | | +--rw external-port 215 | | | +--rw (port-type)? 216 | | | +--:(single-port-number) 217 | | | | +--rw single-port-number? inet:port-number 218 | | | +--:(port-range) 219 | | | +--rw start-port-number? inet:port-number 220 | | | +--rw end-port-number? inet:port-number 221 | | +--rw transport-protocol uint8 222 | | +--rw lifetime uint32 223 | | +--rw v6-dscp? uint8 224 | | +--rw internal-v4-dscp? uint8 225 | | +--rw external-v4-dscp? uint8 226 | | +--rw description? string 227 | +--rw dslite-b4-config {b4}? 228 | +--rw enable? boolean 229 | +--rw dslite-b4-instances 230 | +--rw dslite-b4-instance* [id] 231 | +--rw id uint32 232 | +--rw name? string 233 | +--rw aftr-ipv6-addr inet:ipv6-address 234 | +--rw ipv4-address? inet:ipv4-address 235 | +--rw tunnel-mtu? uint16 236 | +--rw v6-v4-dscp-preservation boolean 237 +--rw dslite-state 238 +--ro dslite-aftr-state {aftr}? 239 | +--ro dslite-aftr-instances 240 | +--ro dslite-aftr-instance* [id] 241 | +--ro id int32 242 | +--ro name? string 243 | +--ro aftr-capabilities 244 | | +--ro eim-support? boolean 245 | | +--ro eif-support? boolean 246 | | +--ro edm-support? boolean 247 | | +--ro edf-support? boolean 248 | | +--ro adm-support? boolean 249 | | +--ro adf-support? boolean 250 | | +--ro pcp-support? boolean 251 | | +--ro subscriber-mask-support? boolean 252 | | +--ro port-set-support? boolean 253 | | +--ro self-state-migration-support? boolean 254 | | +--ro mss-clamping-support? boolean 255 | | +--ro port-randomization-support? boolean 256 | | +--ro port-preservation-support? boolean 257 | | +--ro port-parity-preservation-support? boolean 258 | | +--ro transport-proto-capabilities* [transport-protocol-id] 259 | | | +--ro transport-protocol-id uint8 260 | | +--ro v6-v4-dscp-preservation-support? boolean 261 | | +--ro logging-support? boolean 262 | | +--ro ftp-alg-support? boolean 263 | | +--ro tftp-support? boolean 264 | | +--ro sip-alg-support? boolean 265 | | +--ro rtsp-alg-support? boolean 266 | | +--ro h323-alg-support? boolean 267 | +--ro aftr-current-config 268 | | +--ro dslite-aftr-ipv6-address* [address-id] 269 | | | +--ro address-id uint32 270 | | | +--ro ipv6-address? inet:ipv6-address 271 | | +--ro ipv4-address? inet:ipv4-address 272 | | +--ro tunnel-mtu? uint16 273 | | +--ro external-ip-address-pool* [address-id] 274 | | | +--ro address-id uint32 275 | | | +--ro external-ip-pool? inet:ipv4-prefix 276 | | +--ro subscriber-mask? uint8 277 | | +--ro nat-mapping-type? enumeration 278 | | +--ro nat-filtering-type? enumeration 279 | | +--ro port-quota uint16 280 | | +--ro exclude-ports* [id] 281 | | | +--ro id uint16 282 | | | +--ro (port-type)? 283 | | | +--:(single-port-number) 284 | | | | +--ro single-port-number? inet:port-number 285 | | | +--:(port-range) 286 | | | +--ro start-port-number? inet:port-number 287 | | | +--ro end-port-number? inet:port-number 288 | | +--ro port-set 289 | | | +--ro port-set-enable? boolean 290 | | | +--ro port-set-size? uint16 291 | | | +--ro port-set-timeout? uint32 292 | | +--ro enable-app? boolean 293 | | +--ro max-softwire-per-subscriber? uint8 294 | | +--ro transport-protocol* [transport-protocol-id] 295 | | | +--ro transport-protocol-id uint8 296 | | +--ro new-mappings-rate-limit? uint32 297 | | +--ro mss-clamping 298 | | | +--ro mss-clamping-enable? boolean 299 | | | +--ro mss-value? uint16 300 | | +--ro port-allocation-type? enumeration 301 | | +--ro address-roundrobin-enable? boolean 302 | | +--ro udp-lifetime? uint32 303 | | +--ro tcp-idle-timeout? uint32 304 | | +--ro tcp-trans-open-timeout? uint32 305 | | +--ro tcp-trans-close-timeout? uint32 306 | | +--ro tcp-in-syn-timeout? uint32 307 | | +--ro fragment-min-timeout? uint32 308 | | +--ro icmp-timeout? uint32 309 | | +--ro hold-down-timeout? uint32 310 | | +--ro v6-v4-dscp-preservation boolean 311 | | +--ro logging-info 312 | | | +--ro logging-enable? boolean 313 | | | +--ro destination-address? inet:ip-prefix 314 | | | +--ro destination-port? inet:port-number 315 | | | +--ro (protocol)? 316 | | | +--:(syslog) 317 | | | | +--ro syslog? boolean 318 | | | +--:(ipfix) 319 | | | | +--ro ipfix? boolean 320 | | | +--:(ftp) 321 | | | +--ro ftp? boolean 322 | | +--ro notify-address-pool-usage 323 | | | +--ro pool-id? uint32 324 | | | +--ro notify-pool-hi-threshold percent 325 | | | +--ro notify-pool-low-threshold? percent 326 | | +--ro ftp-alg-enable? boolean 327 | | +--ro tftp-alg-enable? boolean 328 | | +--ro sip-alg-enable? boolean 329 | | +--ro rtsp-alg-enable? boolean 330 | | +--ro h323-alg-enable? boolean 331 | | +--ro all-algs-enable? boolean 332 | +--ro mapping-table 333 | | +--ro mapping-entry* [index] 334 | | +--ro index uint32 335 | | +--ro status? enumeration 336 | | +--ro type? enumeration 337 | | +--ro b4-ip-address inet:ipv6-address 338 | | +--ro internal-ip-address inet:ipv4-prefix 339 | | +--ro internal-port 340 | | | +--ro (port-type)? 341 | | | +--:(single-port-number) 342 | | | | +--ro single-port-number? inet:port-number 343 | | | +--:(port-range) 344 | | | +--ro start-port-number? inet:port-number 345 | | | +--ro end-port-number? inet:port-number 346 | | +--ro external-ip-address inet:ipv4-address 347 | | +--ro external-port 348 | | | +--ro (port-type)? 349 | | | +--:(single-port-number) 350 | | | | +--ro single-port-number? inet:port-number 351 | | | +--:(port-range) 352 | | | +--ro start-port-number? inet:port-number 353 | | | +--ro end-port-number? inet:port-number 354 | | +--ro transport-protocol uint8 355 | | +--ro lifetime uint32 356 | | +--ro v6-dscp? uint8 357 | | +--ro internal-v4-dscp? uint8 358 | | +--ro external-v4-dscp? uint8 359 | | +--ro description? string 360 | +--ro statistics 361 | | +--ro traffic-statistics 362 | | | +--ro sent-packet? yang:zero-based-counter64 363 | | | +--ro sent-byte? yang:zero-based-counter64 364 | | | +--ro rcvd-packet? yang:zero-based-counter64 365 | | | +--ro rcvd-byte? yang:zero-based-counter64 366 | | | +--ro dropped-packet? yang:zero-based-counter64 367 | | | +--ro dropped-byte? yang:zero-based-counter64 368 | | +--ro mapping-table-stats 369 | | +--ro current-mt-size? yang:zero-based-counter64 370 | | +--ro max-mt-size? uint32 371 | | +--ro total-tcp-mappings? uint32 372 | | +--ro total-udp-mappings? uint32 373 | | +--ro total-icmp-mappings? uint32 374 | +--ro available-capacity-client? percent 375 | +--ro available-capacity-ext? percent 376 | +--ro address-pool-in-use? percent 377 | +--ro port-in-use? percent 378 +--ro dslite-b4-state {b4}? 379 +--ro dslite-b4-instances 380 +--ro dslite-b4-instance* [id] 381 +--ro id int32 382 +--ro name? string 383 +--ro b4-capabilities 384 | +--ro ipv4-address-modify? boolean 385 | +--ro tunnel-mtu-support? boolean 386 | +--ro v6-v4-dscp-preservation-support boolean 387 +--ro b4-state 388 +--ro status? boolean 389 +--ro aftr-ipv6-addr inet:ipv6-address 390 +--ro ipv4-address-configured? inet:ipv4-address 391 +--ro v6-v4-dscp-preservation-enabled? boolean 393 notifications: 394 +---n dslite-aftr-event 395 +--ro id? -> /dslite-state/dslite-aftr-state/dslite-aftr-instances/dslite-aftr-instance/id 396 +--ro notify-pool-threshold percent 398 Figure 1: YANG Data Model for DS-Lite AFTR 400 3. DS-Lite YANG Module 402 file "ietf-dslite@2017-07-03.yang" 404 module ietf-dslite { 405 namespace "urn:ietf:params:xml:ns:yang:ietf-dslite"; 406 prefix dslite; 408 import ietf-inet-types { prefix inet; } 409 import ietf-yang-types { prefix yang; } 411 organization "Softwire Working Group"; 412 contact 413 "Mohamed Boucadair 414 Christian Jacquenet 415 Senthil Sivakumar "; 417 description 418 "This module is a YANG module for DS-Lite AFTR/B4 419 implementations. 421 Copyright (c) 2017 IETF Trust and the persons identified as 422 authors of the code. All rights reserved. 424 Redistribution and use in source and binary forms, with or 425 without modification, is permitted pursuant to, and subject 426 to the license terms contained in, the Simplified BSD License 427 set forth in Section 4.c of the IETF Trust's Legal Provisions 428 Relating to IETF Documents 429 (http://trustee.ietf.org/license-info). 431 This version of this YANG module is part of RFC XXXX; see 432 the RFC itself for full legal notices."; 434 revision 2017-07-03 { 435 description "Fix some minor points."; 436 reference "-ietf-03"; 437 } 439 revision 2017-01-03 { 440 description "Fixed a compilation error: 441 https://github.com/mbj4668/pyang/issues/296."; 442 reference "-ietf-02"; 443 } 445 revision 2016-11-14 { 446 description "Integrates the comments from Ian: 447 add B4 module, add an MSS leaf, add more details about 448 logging protocols, and other edits."; 449 reference "-ietf-01"; 450 } 452 revision 2016-07-27 { 453 description "-00 IETF version."; 454 reference "-ietf-00"; 455 } 457 revision 2016-06-13 { 458 description "Update the module."; 459 reference "-04"; 460 } 462 revision 2015-12-16 { 463 description "Fix an error."; 464 reference "-03"; 465 } 467 revision 2015-09-01 { 468 description "Add port threshold notifications."; 469 reference "-02"; 470 } 472 revision 2015-08-31 { 473 description "Fix a timeout issue."; 474 reference "-01"; 475 } 477 revision 2015-08-17 { 478 description "First spec."; 479 reference "-00"; 480 } 482 // Typedef 484 typedef percent { 485 type uint8 { 486 range "0 .. 100"; 487 } 488 description 489 "Percentage"; 490 } 492 // FEATURES 494 feature aftr { 495 description 496 "An AFTR element is the combination of 497 an IPv4-in-IPv6 tunnel endpoint and an 498 IPv4-IPv4 NAT implemented on the same node."; 500 reference 501 "RFC6333"; 502 } 504 feature b4 { 505 description 506 "The B4 element is a function implemented 507 on a dual-stack-capable node, either a directly 508 connected device or a CPE, that creates 509 a tunnel to an AFTR."; 511 reference 512 "RFC6333"; 513 } 515 /* 516 * Grouping 517 */ 519 // port numbers: single or port range 521 grouping port-number { 522 description 523 "Individual port or a range of ports."; 525 choice port-type { 526 default single-port-number; 527 description 528 "Port type: single or port-range."; 530 case single-port-number { 531 leaf single-port-number { 532 type inet:port-number; 533 description 534 "Used for single port numbers."; 535 } 536 } 538 case port-range { 539 leaf start-port-number { 540 type inet:port-number; 541 description 542 "Beginning of the port range."; 543 } 545 leaf end-port-number { 546 type inet:port-number; 547 description 548 "End of the port range."; 549 } 550 } 551 } 552 } 554 // Timeout variables 556 grouping lifetime { 557 description 558 "Configure values of various timeouts."; 560 leaf udp-lifetime { 561 type uint32; 562 units "seconds"; 563 default 120; 564 description 565 "UDP inactivity timeout [RFC4787]."; 566 } 568 leaf tcp-idle-timeout { 569 type uint32; 570 units "seconds"; 571 default 7440; 572 description 573 "TCP Idle timeout as per [RFC5382] should be no 574 more than 2 hours and 4 minutes."; 575 } 577 leaf tcp-trans-open-timeout { 578 type uint32; 579 units "seconds"; 580 default 240; 581 description 582 "The value of the transitory open connection 583 idle-timeout. 584 Section 2.1 of [RFC7857] clarifies that a NAT 585 should provide different configurable 586 parameters for configuring the open and 587 closing idle timeouts. 588 To accommodate deployments that consider 589 a partially open timeout of 4 minutes as being 590 excessive from a security standpoint, a NAT may 591 allow the configured timeout to be less than 592 4 minutes. 593 However, a minimum default transitory connection 594 idle-timeout of 4 minutes is recommended."; 595 } 597 leaf tcp-trans-close-timeout { 598 type uint32; 599 units "seconds"; 600 default 240; 601 description 602 "The value of the transitory close connection 603 idle-timeout. 604 Section 2.1 of [RFC7857] clarifies that a NAT 605 should provide different configurable 606 parameters for configuring the open and 607 closing idle timeouts."; 608 } 610 leaf tcp-in-syn-timeout { 611 type uint32; 612 units "seconds"; 613 default 6; 614 description 615 "6 seconds, as defined in [RFC5382]."; 616 } 618 leaf fragment-min-timeout { 619 type uint32; 620 units "seconds"; 621 default 2; 622 description 623 "As long as the AFTR has available resources, 624 the AFTR allows the fragments to arrive 625 over fragment-min-timeout interval. 627 The default value is inspired from RFC6146."; 628 } 630 leaf icmp-timeout { 631 type uint32; 632 units "seconds"; 633 default 60; 634 description 635 "60 seconds, as defined in [RFC5508]."; 636 } 638 leaf hold-down-timeout { 639 type uint32; 640 units "seconds"; 641 default 120; 642 description 643 "Hold down timer. Ports in the 644 hold down pool are not reassigned until 645 this timer expires. 646 The length of time and the maximum 647 number of ports in this state must be 648 configurable by the administrator 649 [RFC6888]. This is necessary in order 650 to prevent collisions between old 651 and new mappings and sessions. It ensures 652 that all established sessions are broken 653 instead of redirected to a different peer. 654 The default value is defined in REQ#8 655 from [RFC6888]."; 656 } 657 } 658 // AFTR Parameters 660 grouping aftr-parameters { 662 description 663 "A set of AFTR parameters"; 665 list dslite-aftr-ipv6-address { 667 key address-id; 669 description 670 "set one or multiple IP addresses for 671 the dslite-aftr"; 673 leaf address-id { 674 type uint32; 675 description 676 "The identifier of the address"; 677 } 679 leaf ipv6-address { 680 type inet:ipv6-address; 681 description 682 "IPv6 address of the dslite-aftr."; 683 } 684 } 685 leaf ipv4-address { 686 type inet:ipv4-address; 687 default "192.0.0.1"; 688 description 689 "IPv4 address of the DS-Lite AFTR. 690 192.0.0.1 is reserved for the AFTR element 691 [RFC6333]. 692 This address can be used to report ICMP 693 problems and will appear in traceroute 694 outputs."; 695 } 697 leaf tunnel-mtu { 698 type uint16; 699 description 700 "Configures a tunnel MTU. 701 [RFC6908] specifies that since 702 fragmentation and reassembly is not 703 optimal, the operator should do 704 everything possible to eliminate 705 the need for it. If the operator uses 706 simple IPv4-in-IPv6 softwire, it is 707 recommended that the MTU size of the IPv6 708 network between the B4 and the AFTR 709 accounts for the additional overhead 710 (40 bytes)."; 711 } 713 list external-ip-address-pool { 715 key address-id; 717 description 718 "Pool of external IP addresses used to service 719 internal hosts. 720 Both contiguous and non-contiguous pools 721 can be configured to an AFTR. 722 Refer to REQ-3 of [RFC6888]."; 724 leaf address-id { 725 type uint32; 726 description 727 "An identifier of the address."; 728 } 730 leaf external-ip-pool { 731 type inet:ipv4-prefix; 732 description 733 "An IPv4 prefix used by the AFTR 734 for NAT purposes."; 735 } 736 } 738 leaf subscriber-mask { 739 type uint8 { 740 range "0 .. 128"; 741 } 742 default "56"; 743 description 744 "The subscriber-mask is an integer that indicates 745 the length of significant bits to be applied on 746 the source IPv6 address (internal side) to 747 unambiguously identify a CPE. 749 Subscriber-mask is a system-wide configuration 750 parameter that is used to enforce generic 751 per-subscriber policies (e.g., port-quota). 753 The enforcement of these generic policies does not 754 require the configuration of every subscriber's prefix. 756 Example: suppose the 2001:db8:100:100::/56 prefix is 757 assigned to a DS-Lite enabled CPE. Suppose also that the 758 2001:db8:100:100::1 is the IPv6 address used by the 759 B4 that resides in that CPE. When the AFTR 760 receives a packet from this client, 761 it applies the subscriber-mask (e.g., 56) on 762 the source IPv6 address to compute the associated prefix 763 for this client (that is 2001:db8:100:100::/56). Then, 764 the AFTR enforces policies based on that prefix 765 (2001:db8:100:100::/56), not on the exact 766 source IPv6 address [RFC7785]."; 767 } 769 leaf nat-mapping-type { 770 type enumeration { 771 enum "eim" { 772 description 773 "Endpoint-Independent-Mapping. 774 Refer to Section 4 of [RFC4787]."; 775 } 777 enum "adm" { 778 description 779 "Address-Dependent-Mapping. 780 Refer to Section 4 of [RFC4787]."; 781 } 783 enum "edm" { 784 description 785 "address-and-port-Dependent-Mapping. 786 Refer to Section 4 of [RFC4787]."; 787 } 788 } 789 description 790 "Indicates the type of the NAT mapping."; 791 } 793 leaf nat-filtering-type { 794 type enumeration { 795 enum "eif" { 796 description 797 "Endpoint-Independent-Filtering. 798 Refer to Section 5 of [RFC4787]."; 799 } 801 enum "adf" { 802 description 803 "Address-Dependent-Filtering. 804 Refer to Section 5 of [RFC4787]."; 805 } 807 enum "edf" { 808 description 809 "address-and-port-Dependent-Filtering. 810 Refer to Section 5 of [RFC4787]."; 811 } 812 } 813 description 814 "Indicates the type of the NAT filtering."; 815 } 817 leaf port-quota { 818 type uint16; 819 mandatory true; 820 description 821 "Configures a port quota to be assigned per 822 subscriber. 823 According to [RFC6888], per-subscriber limits 824 must be configurable by the administrator."; 825 } 827 list exclude-ports { 828 key "id"; 829 description 830 "The set of ports not to be assigned 831 by the AFTR."; 833 leaf id { 834 type uint16; 835 description 836 "An identifier"; 837 } 839 uses port-number; 840 } 842 container port-set { 843 description 844 "Manages port-set assignments."; 846 leaf port-set-enable { 847 type boolean; 848 description 849 "Enable/Disable port set assignment."; 850 } 852 leaf port-set-size { 853 type uint16; 854 description 855 "Indicates the size of assigned port sets."; 856 } 858 leaf port-set-timeout { 859 type uint32; 860 description 861 "Inactivity timeout for port sets."; 862 } 863 } 865 leaf enable-app { 866 type boolean; 867 default true; 868 description 869 "Enable/disable the IP address 870 pooling behavior of Paired (APP). 871 APP is recommended in REQ-2 from 872 [RFC4787]."; 873 } 875 leaf max-softwire-per-subscriber { 876 type uint8; 877 default 1; 878 description 879 "Configures the maximum softwire per subscriber 880 feature as per Section 4 of [RFC7785]. 882 A subscriber is uniquely identified by means 883 of subscriber-mask. 885 This policy aims to prevent a misbehaving 886 subscriber from mounting several DS-Lite 887 softwires that would consume additional AFTR 888 resources (e.g., get more external ports if 889 the quota were enforced on a per-softwire basis, 890 consume extra processing due to a large number 891 of active softwires)."; 892 } 894 list transport-protocol { 895 key "transport-protocol-id"; 896 description 897 "Set of (transport) protocols supported by 898 the AFTR. Default must be set to 899 TCP and UDP."; 901 leaf transport-protocol-id { 902 type uint8; 903 description 904 "Identifier of the transport protocol. 905 IANA Protocol Numbers maintained in 906 http://www.iana.org/assignments/ 907 protocol-numbers are used."; 908 } 909 } 911 leaf new-mappings-rate-limit { 912 type uint32; 913 description 914 "Rate-limit sessions per subscriber. 915 The goal is to prevent a single subscriber 916 from consuming excessive CPU resources from 917 the AFTR."; 918 } 920 container mss-clamping { 921 description 922 "Manages port-set assignments."; 924 leaf mss-clamping-enable { 925 type boolean; 926 description 927 "Enable/disable MSS rewriting feature."; 928 } 930 leaf mss-value { 931 type uint16; 932 units "octets"; 933 description 934 "Sets the MSS value to be used for 935 MSS rewriting."; 936 } 937 } 939 leaf port-allocation-type { 940 type enumeration { 941 enum "random" { 942 description 943 "Port port randomization."; 944 } 946 enum "port-preservation" { 947 description 948 "Indicates whether the PCP server should 949 preserve the internal port number."; 950 } 952 enum "port-range-preservation" { 953 description 954 "Indicates whether the NAT device should 955 preserve the internal port range."; 956 } 958 enum "port-parity-preservation" { 959 description 960 "Indicates whether the PCP server should 961 preserve the port parity of the 962 internal port number."; 963 } 964 } 965 description 966 "Indicates the type of a port allocation."; 967 } 969 leaf address-roundrobin-enable { 970 type boolean; 971 description 972 "Enable/disable address allocation 973 round robin."; 974 } 976 uses lifetime; 978 leaf v6-v4-dscp-preservation { 979 type boolean; 980 mandatory true; 981 description 982 "Copies the DSCP value from the IPv6 header 983 and vice versa. 984 According to Section 2.10 of [RFC6908], 985 operators should use this model 986 by provisioning the network such that 987 the AFTR copies the DSCP value in the IPv4 988 header to the Traffic Class field in 989 the IPv6 header, after the encapsulation 990 for the downstream traffic."; 991 } 993 container logging-info { 994 description 995 "Information about AFTR logging events."; 997 leaf logging-enable { 998 type boolean; 999 description 1000 "Enable logging features as per Section 2.3 1001 of [RFC6908]."; 1002 } 1004 leaf destination-address { 1005 type inet:ip-prefix; 1006 description 1007 "Address of the collector that receives 1008 the logs."; 1009 } 1010 leaf destination-port { 1011 type inet:port-number; 1012 description 1013 "Destination port of the collector."; 1014 } 1016 choice protocol { 1018 description 1019 "Enable the protocol to be used for 1020 the retrieval of logging entries."; 1022 case syslog { 1023 leaf syslog { 1024 type boolean; 1025 description 1026 "Used if SYSLOG is in use."; 1027 } 1028 } 1030 case ipfix { 1031 leaf ipfix { 1032 type boolean; 1033 description 1034 "Used if IPFIX is in use."; 1035 } 1036 } 1038 case ftp { 1039 leaf ftp { 1040 type boolean; 1041 description 1042 "Used if FTP is in use."; 1043 } 1044 } 1045 } 1046 } 1048 container notify-address-pool-usage { 1049 description 1050 "Notification of Pool usage when certain criteria 1051 is met."; 1053 leaf pool-id { 1054 type uint32; 1055 description 1056 "Pool-ID for which the notification criteria is 1057 defined."; 1059 } 1061 leaf notify-pool-hi-threshold { 1062 type percent; 1063 mandatory true; 1064 description 1065 "Notification must be generated when the defined 1066 high threshold is reached. For example, if a 1067 notification is required when the pool utilization 1068 reaches 90%, this configuration parameter must be 1069 set to 90%."; 1070 } 1072 leaf notify-pool-low-threshold { 1073 type percent; 1074 description 1075 "Notification must be generated when the defined 1076 low threshold is reached. For example, if a 1077 notification is required when the pool utilization 1078 reaches below 10%, this configuration parameter 1079 must be set to 10%."; 1080 } 1081 } 1083 leaf ftp-alg-enable { 1084 type boolean; 1085 description 1086 "Enable/Disable FTP ALG."; 1087 } 1089 leaf tftp-alg-enable { 1090 type boolean; 1091 description 1092 "Enable/Disable TFTP ALG."; 1093 } 1095 leaf sip-alg-enable { 1096 type boolean; 1097 description 1098 "Enable/Disable SIP ALG."; 1099 } 1101 leaf rtsp-alg-enable { 1102 type boolean; 1103 description 1104 "Enable/Disable RTSP ALG."; 1105 } 1106 leaf h323-alg-enable { 1107 type boolean; 1108 description 1109 "Enable/Disable H323 ALG."; 1110 } 1112 leaf all-algs-enable { 1113 type boolean; 1114 description 1115 "Enable/Disable all the ALGs."; 1116 } 1117 } 1119 // Mapping Entry (Extended NAT44 mapping Entry) 1121 grouping mapping-entry { 1122 description 1123 "A DS-Lite AFTR mapping entry."; 1125 leaf index { 1126 type uint32; 1127 description 1128 "A unique identifier of a mapping entry."; 1129 } 1131 leaf status { 1132 type enumeration { 1134 enum "disabled" { 1135 description 1136 "The mapping entry is not in use (Disabled)."; 1137 } 1139 enum "assigned" { 1140 description 1141 "This mapping has been granted by the server."; 1142 } 1144 enum "stale" { 1145 description 1146 "This is a stale mapping (case of reboot)."; 1147 } 1148 } 1149 description 1150 "Indicates the status of a mapping entry."; 1151 } 1153 leaf type { 1154 type enumeration { 1156 enum "static" { 1157 description 1158 "The mapping entry is manually configured."; 1159 } 1161 enum "implicit" { 1162 description 1163 "This mapping is created by an outgoing packet."; 1164 } 1166 enum "explicit" { 1167 description 1168 "This is a dynamic explicit mapping created as a result 1169 of a PCP operation."; 1170 } 1171 } 1172 description 1173 "Indicates the type of a mapping entry. E.g., 1174 a mapping can be: static, dynamic implicit, or 1175 dynamic explicit."; 1176 } 1178 leaf b4-ip-address { 1179 type inet:ipv6-address; 1180 mandatory true; 1181 description 1182 "Corresponds to the IPv6 address 1183 used by the B4 element."; 1184 } 1186 leaf internal-ip-address { 1187 type inet:ipv4-prefix; 1188 mandatory true; 1189 description 1190 "Corresponds to the source IPv4 address 1191 of the IPv4 packet conveyed over the softwire."; 1192 } 1194 container internal-port { 1195 description 1196 "Corresponds to the source port of the 1197 IPv4 packet conveyed over the softwire."; 1198 uses port-number; 1199 } 1201 leaf external-ip-address { 1202 type inet:ipv4-address; 1203 mandatory true; 1204 description 1205 "External IPv4 address assigned by the AFTR."; 1206 } 1208 container external-port { 1209 description 1210 "External port number assigned by the AFTR."; 1211 uses port-number; 1212 } 1214 leaf transport-protocol { 1215 type uint8; 1216 mandatory true; 1217 description 1218 "Upper-layer protocol associated with this mapping. 1219 Values are taken from the IANA protocol registry. 1220 For example, this field contains 6 (TCP) for a TCP 1221 mapping or 17 (UDP) for a UDP mapping."; 1222 } 1224 leaf lifetime { 1225 type uint32; 1226 units "seconds"; 1227 mandatory true; 1228 description 1229 "Lifetime of the mapping."; 1230 } 1232 leaf v6-dscp { 1233 type uint8; 1234 description 1235 "DSCP value used at the softwire level 1236 (i.e., IPv6 header)."; 1237 } 1239 leaf internal-v4-dscp { 1240 type uint8; 1241 description 1242 "DSCP value of the encapsulated IPv4 packet."; 1243 } 1245 leaf external-v4-dscp { 1246 type uint8; 1247 description 1248 "DSCP value of the translated IPv4 packet 1249 as marked by the AFTR."; 1251 } 1253 leaf description { 1254 type string; 1255 description 1256 "A description string associated with the mapping."; 1257 } 1258 } 1260 /* 1261 * DS-Lite AFTR Configuration 1262 */ 1264 container dslite-config { 1266 description 1267 "AFTR and B4 configuration."; 1269 container dslite-aftr-config { 1270 if-feature aftr; 1272 description 1273 "dslite-aftr"; 1275 leaf enable { 1276 type boolean; 1277 description 1278 "Enable/Disable dslite-aftr function."; 1279 } 1281 container dslite-aftr-instances { 1282 description 1283 "dslite-aftr instances"; 1285 list dslite-aftr-instance { 1286 key "id"; 1287 description 1288 "A dslite-aftr instance."; 1290 leaf id { 1291 type uint32; 1292 description 1293 "dslite-aftr instance identifier."; 1294 } 1296 leaf name { 1297 type string; 1298 description 1299 "A name associated with the dslite-aftr instance."; 1300 } 1302 uses aftr-parameters; 1304 container mapping-table { 1305 description 1306 "dslite-aftr mapping table maintained by 1307 the dslite-aftr server."; 1309 list mapping-entry { 1310 key "index"; 1311 description 1312 "dslite-aftr mapping entry."; 1313 uses mapping-entry; 1314 } 1315 } 1316 } 1317 } 1318 } 1320 /* 1321 * DS-Lite B4 Configuration 1322 */ 1323 container dslite-b4-config { 1324 if-feature b4; 1325 description 1326 "dslite-b4"; 1328 leaf enable { 1329 type boolean; 1330 description 1331 "Enable/Disable dslite-b4 function."; 1332 } 1334 container dslite-b4-instances { 1335 description 1336 "dslite-b4 instances"; 1338 list dslite-b4-instance { 1339 key "id"; 1340 description 1341 "a dslite-b4 instance."; 1343 leaf id { 1344 type uint32; 1345 description 1346 "dslite-b4 instance identifier."; 1348 } 1350 leaf name { 1351 type string; 1352 description 1353 "A name associated with the dslite-b4 instance."; 1354 } 1356 leaf aftr-ipv6-addr { 1357 type inet:ipv6-address; 1358 mandatory true; 1359 description 1360 "The AFTR's IPv6 address."; 1361 } 1363 leaf ipv4-address { 1364 type inet:ipv4-address; 1365 default "192.0.0.2"; 1366 description 1367 "IPv4 address of the DS-Lite B4. 1368 192.0.0.0/29 is reserved for the B4 element 1369 [RFC6333]. 1370 This address can be used to report ICMP 1371 problems and will appear in traceroute 1372 outputs."; 1373 } 1375 leaf tunnel-mtu { 1376 type uint16; 1377 description 1378 "Configures a tunnel MTU. 1379 [RFC6908] specifies that since 1380 fragmentation and reassembly is not 1381 optimal, the operator should do 1382 everything possible to eliminate 1383 the need for it. If the operator uses 1384 simple IPv4-in-IPv6 softwire, it is 1385 recommended that the MTU size of the IPv6 1386 network between the B4 and the AFTR 1387 accounts for the additional overhead 1388 (40 bytes)."; 1389 } 1391 leaf v6-v4-dscp-preservation { 1392 type boolean; 1393 mandatory true; 1394 description 1395 "Copies the DSCP value from the IPv6 header 1396 and vice versa. 1397 According to Section 2.10 of [RFC6908], 1398 operators should use this model 1399 by provisioning the network such that 1400 the AFTR copies the DSCP value in the IPv4 1401 header to the Traffic Class field in 1402 the IPv6 header, after the encapsulation 1403 for the downstream traffic."; 1404 } 1405 } 1406 } 1407 } 1408 } 1410 /* 1411 * DS-Lite State 1412 */ 1414 container dslite-state { 1416 description 1417 "dslite-aftr and b4 state."; 1419 /* 1420 * DS-Lite AFTR State 1421 */ 1423 container dslite-aftr-state { 1425 if-feature aftr; 1427 config false; 1429 description 1430 "dslite-aftr"; 1432 container dslite-aftr-instances { 1433 description 1434 "dslite-aftr instances"; 1436 list dslite-aftr-instance { 1437 key "id"; 1439 description 1440 "dslite-aftr instance"; 1442 leaf id { 1443 type int32; 1444 description 1445 "The identifier of the dslite-aftr instance."; 1446 } 1448 leaf name { 1449 type string; 1450 description 1451 "The name of the dslite-aftr instance."; 1452 } 1454 container aftr-capabilities { 1455 description 1456 "AFTR capabilities"; 1458 leaf eim-support { 1459 type boolean; 1460 description 1461 "Indicates whether EIM is enabled."; 1462 } 1464 leaf eif-support { 1465 type boolean; 1466 description 1467 "Indicates whether EIF is enabled."; 1468 } 1470 leaf edm-support { 1471 type boolean; 1472 description 1473 "Indicates whether EDM is enabled."; 1474 } 1476 leaf edf-support { 1477 type boolean; 1478 description 1479 "Indicates whether EDF is enabled."; 1480 } 1482 leaf adm-support { 1483 type boolean; 1484 description 1485 "Indicates whether ADM is enabled."; 1486 } 1488 leaf adf-support { 1489 type boolean; 1490 description 1491 "Indicates whether ADF is enabled."; 1492 } 1494 leaf pcp-support { 1495 type boolean; 1496 description 1497 "Indicates whether a PCP server is enabled."; 1498 } 1500 leaf subscriber-mask-support{ 1501 type boolean; 1502 description 1503 "Indicates whether the subscriber-mask feature 1504 is supported."; 1505 } 1507 leaf port-set-support { 1508 type boolean; 1509 description 1510 "Indicates whether port set assignment is 1511 supported."; 1512 } 1514 leaf self-state-migration-support { 1515 type boolean; 1516 description 1517 "Indicates whether mappings migration 1518 to the new IPv6 address used by the B4 is 1519 supported [RFC7785]."; 1520 } 1522 leaf mss-clamping-support { 1523 type boolean; 1524 description 1525 "Indicates whether the MSS clamping 1526 feature is supported."; 1527 } 1529 leaf port-randomization-support { 1530 type boolean; 1531 description 1532 "Indicates whether port randomization is 1533 supported."; 1534 } 1536 leaf port-preservation-support { 1537 type boolean; 1538 description 1539 "Indicates whether port preservation 1540 is supported."; 1541 } 1543 leaf port-parity-preservation-support { 1544 type boolean; 1545 description 1546 "Indicates whether port parity preservation is 1547 supported."; 1548 } 1550 list transport-proto-capabilities { 1551 key "transport-protocol-id"; 1552 description 1553 "A set of supported transport protocols."; 1555 leaf transport-protocol-id { 1556 type uint8; 1557 description 1558 "ID of the transport protocol."; 1559 } 1560 } 1562 leaf v6-v4-dscp-preservation-support { 1563 type boolean; 1564 description 1565 "Copy the DSCP value from the IPv6 header 1566 and vice versa."; 1567 } 1569 leaf logging-support { 1570 type boolean; 1571 description 1572 "Indicates whether a logging feature is 1573 supported."; 1574 } 1576 leaf ftp-alg-support { 1577 type boolean; 1578 description 1579 "Indicates whether FTP ALG is supported."; 1580 } 1582 leaf tftp-support { 1583 type boolean; 1584 description 1585 "Indicates whether TFTP ALG is supported."; 1587 } 1589 leaf sip-alg-support { 1590 type boolean; 1591 description 1592 "Indicates whether SIP ALG is supported."; 1593 } 1595 leaf rtsp-alg-support { 1596 type boolean; 1597 description 1598 "Indicates whether RTSP ALG is supported."; 1599 } 1601 leaf h323-alg-support { 1602 type boolean; 1603 description 1604 "Indicates whether H323 ALG is supported."; 1605 } 1606 } 1608 container aftr-current-config { 1609 description 1610 "current config"; 1612 uses aftr-parameters; 1613 } 1615 container mapping-table { 1616 description 1617 "Mapping table"; 1618 list mapping-entry { 1619 key "index"; 1620 description 1621 "mapping entry"; 1622 uses mapping-entry; 1623 } 1624 } 1626 container statistics { 1627 description 1628 "traffic statistics"; 1630 container traffic-statistics { 1631 description 1632 "Generic traffic statistics."; 1634 leaf sent-packet { 1635 type yang:zero-based-counter64; 1636 description 1637 "Number of packets sent."; 1638 } 1640 leaf sent-byte { 1641 type yang:zero-based-counter64; 1642 description 1643 "Counter for sent traffic in bytes."; 1644 } 1646 leaf rcvd-packet { 1647 type yang:zero-based-counter64; 1648 description 1649 "Number of received packets."; 1650 } 1652 leaf rcvd-byte { 1653 type yang:zero-based-counter64; 1654 description 1655 "Counter for received traffic 1656 in bytes."; 1657 } 1659 leaf dropped-packet { 1660 type yang:zero-based-counter64; 1661 description 1662 "Number of dropped packets."; 1663 } 1665 leaf dropped-byte { 1666 type yang:zero-based-counter64; 1667 description 1668 "Counter for dropped traffic in 1669 bytes."; 1670 } 1671 } 1673 container mapping-table-stats { 1674 description 1675 "Mapping table statistics."; 1677 leaf current-mt-size { 1678 type yang:zero-based-counter64; 1679 description 1680 "Size of the mapping table."; 1681 } 1682 leaf max-mt-size { 1683 type uint32; 1684 description 1685 "Maximum configured size of the 1686 mapping table."; 1687 } 1689 leaf total-tcp-mappings { 1690 type uint32; 1691 description 1692 "Total number of TCP Mappings present 1693 at the time."; 1694 } 1695 leaf total-udp-mappings { 1696 type uint32; 1697 description 1698 "Total number of UDP Mappings present 1699 at the time."; 1700 } 1702 leaf total-icmp-mappings { 1703 type uint32; 1704 description 1705 "Total number of ICMP Mappings present 1706 at the time."; 1707 } 1708 } 1709 } 1711 leaf available-capacity-client { 1712 type percent; 1713 description 1714 "Ratio of available capacity in the 1715 customer-facing interfaces."; 1716 } 1718 leaf available-capacity-ext { 1719 type percent; 1720 description 1721 "Ratio of available capacity in the 1722 Internet-facing interfaces."; 1723 } 1725 leaf address-pool-in-use { 1726 type percent; 1727 description 1728 "Ratio of the shared address pool."; 1729 } 1730 leaf port-in-use { 1731 type percent; 1732 description 1733 "Ratio of the port usage."; 1734 } 1735 } 1736 } 1738 } 1740 /* 1741 * DS-Lite B4 State 1742 */ 1744 container dslite-b4-state { 1746 if-feature b4; 1748 config false; 1750 description 1751 "dslite-b4"; 1753 container dslite-b4-instances { 1754 description 1755 "dslite-b4 instances"; 1757 list dslite-b4-instance { 1758 key "id"; 1760 description 1761 "dslite-b4 instance"; 1763 leaf id { 1764 type int32; 1765 description 1766 "The identifier of the dslite-b4 instance."; 1767 } 1769 leaf name { 1770 type string; 1771 description 1772 "The name of the dslite-b4 instance."; 1773 } 1775 // B4 Capabilities 1777 container b4-capabilities { 1778 description 1779 "B4 capabilities"; 1781 leaf ipv4-address-modify { 1782 type boolean; 1783 description 1784 "Indicates whether it is possible 1785 to configure an IPv4 address 1786 for the B4 element."; 1787 } 1789 leaf tunnel-mtu-support { 1790 type boolean; 1791 description 1792 "Indicates whether it is possible to 1793 configure a tunnel MTU. 1794 "; 1795 } 1797 leaf v6-v4-dscp-preservation-support { 1798 type boolean; 1799 mandatory true; 1800 description 1801 "Indicates whether it supports 1802 DSCP preservation. 1803 "; 1804 } 1805 } 1807 // B4 State 1809 container b4-state { 1810 description 1811 "B4 capabilities"; 1813 leaf status { 1814 type boolean; 1815 description 1816 "Indicates whether the instance is 1817 enabled or disabled. 1818 "; 1819 } 1821 leaf aftr-ipv6-addr { 1822 type inet:ipv6-address; 1823 mandatory true; 1824 description 1825 "The AFTR's IPv6 address."; 1827 } 1829 leaf ipv4-address-configured { 1830 type inet:ipv4-address; 1831 default "192.0.0.2"; 1832 description 1833 "The B4's IPv4 address."; 1834 } 1836 leaf v6-v4-dscp-preservation-enabled { 1837 type boolean; 1838 description 1839 "Indicates whether this feature is 1840 enabled/disabled. 1841 "; 1842 } 1843 } 1844 } 1845 } 1846 } 1847 } 1849 } 1850 1852 4. Security Considerations 1854 The YANG module defined in this memo is designed to be accessed via 1855 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1856 secure transport layer and the support of SSH is mandatory to 1857 implement secure transport [RFC6242]. The NETCONF access control 1858 model [RFC6536] provides means to restrict access for particular 1859 NETCONF users to a pre-configured subset of all available NETCONF 1860 protocol operations and contents. 1862 All data nodes defined in the YANG module which can be created, 1863 modified and deleted (i.e., config true, which is the default). 1864 These data nodes are considered sensitive. Write operations (e.g., 1865 edit-config) applied to these data nodes without proper protection 1866 can negatively affect network operations. 1868 5. IANA Considerations 1870 This document requests IANA to register the following URI in the 1871 "IETF XML Registry" [RFC3688]: 1873 URI: urn:ietf:params:xml:ns:yang:ietf-dslite 1874 Registrant Contact: The IESG. 1875 XML: N/A; the requested URI is an XML namespace. 1877 This document requests IANA to register the following YANG module in 1878 the "YANG Module Names" registry [RFC6020]. 1880 name: ietf-dslite 1881 namespace: urn:ietf:params:xml:ns:yang:ietf-dslite 1882 prefix: dslite 1883 reference: RFC XXXX 1885 6. Acknowledgements 1887 Thanks to Q. Wu for identifying a compiling error. 1889 Many thanks to Ian Farrer for the review and comments. 1891 7. References 1893 7.1. Normative references 1895 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1896 DOI 10.17487/RFC3688, January 2004, 1897 . 1899 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1900 the Network Configuration Protocol (NETCONF)", RFC 6020, 1901 DOI 10.17487/RFC6020, October 2010, 1902 . 1904 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1905 and A. Bierman, Ed., "Network Configuration Protocol 1906 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1907 . 1909 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1910 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1911 . 1913 [RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual- 1914 Stack Lite Broadband Deployments Following IPv4 1915 Exhaustion", RFC 6333, DOI 10.17487/RFC6333, August 2011, 1916 . 1918 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1919 Protocol (NETCONF) Access Control Model", RFC 6536, 1920 DOI 10.17487/RFC6536, March 2012, 1921 . 1923 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1924 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1925 . 1927 7.2. Informative references 1929 [I-D.boucadair-pcp-yang] 1930 Boucadair, M., Jacquenet, C., Sivakumar, S., and S. 1931 Vinapamula, "YANG Data Models for the Port Control 1932 Protocol (PCP)", draft-boucadair-pcp-yang-04 (work in 1933 progress), May 2017. 1935 [RFC4787] Audet, F., Ed. and C. Jennings, "Network Address 1936 Translation (NAT) Behavioral Requirements for Unicast 1937 UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January 1938 2007, . 1940 [RFC5382] Guha, S., Ed., Biswas, K., Ford, B., Sivakumar, S., and P. 1941 Srisuresh, "NAT Behavioral Requirements for TCP", BCP 142, 1942 RFC 5382, DOI 10.17487/RFC5382, October 2008, 1943 . 1945 [RFC5508] Srisuresh, P., Ford, B., Sivakumar, S., and S. Guha, "NAT 1946 Behavioral Requirements for ICMP", BCP 148, RFC 5508, 1947 DOI 10.17487/RFC5508, April 2009, 1948 . 1950 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 1951 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 1952 January 2011, . 1954 [RFC6888] Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa, 1955 A., and H. Ashida, "Common Requirements for Carrier-Grade 1956 NATs (CGNs)", BCP 127, RFC 6888, DOI 10.17487/RFC6888, 1957 April 2013, . 1959 [RFC6908] Lee, Y., Maglione, R., Williams, C., Jacquenet, C., and M. 1960 Boucadair, "Deployment Considerations for Dual-Stack 1961 Lite", RFC 6908, DOI 10.17487/RFC6908, March 2013, 1962 . 1964 [RFC7753] Sun, Q., Boucadair, M., Sivakumar, S., Zhou, C., Tsou, T., 1965 and S. Perreault, "Port Control Protocol (PCP) Extension 1966 for Port-Set Allocation", RFC 7753, DOI 10.17487/RFC7753, 1967 February 2016, . 1969 [RFC7785] Vinapamula, S. and M. Boucadair, "Recommendations for 1970 Prefix Binding in the Context of Softwire Dual-Stack 1971 Lite", RFC 7785, DOI 10.17487/RFC7785, February 2016, 1972 . 1974 [RFC7857] Penno, R., Perreault, S., Boucadair, M., Ed., Sivakumar, 1975 S., and K. Naito, "Updates to Network Address Translation 1976 (NAT) Behavioral Requirements", BCP 127, RFC 7857, 1977 DOI 10.17487/RFC7857, April 2016, 1978 . 1980 Authors' Addresses 1982 Mohamed Boucadair 1983 Orange 1984 Rennes 35000 1985 France 1987 EMail: mohamed.boucadair@orange.com 1989 Christian Jacquenet 1990 Orange 1991 Rennes 35000 1992 France 1994 EMail: christian.jacquenet@orange.com 1996 Senthil Sivakumar 1997 Cisco Systems 1998 7100-8 Kit Creek Road 1999 Research Triangle Park, North Carolina 27709 2000 USA 2002 Phone: +1 919 392 5158 2003 EMail: ssenthil@cisco.com