idnits 2.17.1 draft-ietf-softwire-dslite-yang-01.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 19 instances of too long lines in the document, the longest one being 5 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 207 has weird spacing: '...address ine...' == Line 215 has weird spacing: '...address ine...' == Line 238 has weird spacing: '...rvation boo...' == Line 261 has weird spacing: '...ocol-id uin...' == (5 more instances...) -- The document date (November 14, 2016) is 2720 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 1995, 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-02 -- 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: May 18, 2017 S. Sivakumar 6 Cisco Systems 7 November 14, 2016 9 A YANG Data Model for the DS-Lite 10 draft-ietf-softwire-dslite-yang-01 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 May 18, 2017. 35 Copyright Notice 37 Copyright (c) 2016 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 . . . . . . . . . . . . . . . . . . . 40 58 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 59 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 40 60 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 61 7.1. Normative references . . . . . . . . . . . . . . . . . . 41 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-randomization-enable? boolean 168 | | +--rw port-preservation-enable? boolean 169 | | +--rw port-parity-preservation-enable? boolean 170 | | +--rw address-roundrobin-enable? boolean 171 | | +--rw udp-lifetime? uint32 172 | | +--rw tcp-idle-timeout? uint32 173 | | +--rw tcp-trans-open-timeout? uint32 174 | | +--rw tcp-trans-close-timeout? uint32 175 | | +--rw tcp-in-syn-timeout? uint32 176 | | +--rw fragment-min-timeout? uint32 177 | | +--rw icmp-timeout? uint32 178 | | +--rw hold-down-timeout? uint32 179 | | +--rw v6-v4-dscp-preservation boolean 180 | | +--rw logging-info 181 | | | +--rw logging-enable? boolean 182 | | | +--rw destination-address? inet:ip-prefix 183 | | | +--rw destination-port? inet:port-number 184 | | | +--rw (protocol)? 185 | | | +--:(syslog) 186 | | | | +--rw syslog? boolean 187 | | | +--:(ipfix) 188 | | | | +--rw ipfix? boolean 189 | | | +--:(ftp) 190 | | | +--rw ftp? boolean 191 | | +--rw notify-address-pool-usage 192 | | | +--rw pool-id? uint32 193 | | | +--rw notify-pool-hi-threshold percent 194 | | | +--rw notify-pool-low-threshold? percent 195 | | +--rw ftp-alg-enable? boolean 196 | | +--rw tftp-alg-enable? boolean 197 | | +--rw sip-alg-enable? boolean 198 | | +--rw rtsp-alg-enable? boolean 199 | | +--rw h323-alg-enable? boolean 200 | | +--rw all-algs-enable? boolean 201 | | +--rw mapping-table 202 | | +--rw mapping-entry* [index] 203 | | +--rw index uint32 204 | | +--rw status? enumeration 205 | | +--rw type? enumeration 206 | | +--rw b4-ip-address inet:ipv6-address 207 | | +--rw internal-ip-address inet:ipv4-prefix 208 | | +--rw internal-port 209 | | | +--rw (port-type)? 210 | | | +--:(single-port-number) 211 | | | | +--rw single-port-number? inet:port-number 212 | | | +--:(port-range) 213 | | | +--rw start-port-number? inet:port-number 214 | | | +--rw end-port-number? inet:port-number 215 | | +--rw external-ip-address inet:ipv4-address 216 | | +--rw external-port 217 | | | +--rw (port-type)? 218 | | | +--:(single-port-number) 219 | | | | +--rw single-port-number? inet:port-number 220 | | | +--:(port-range) 221 | | | +--rw start-port-number? inet:port-number 222 | | | +--rw end-port-number? inet:port-number 223 | | +--rw transport-protocol uint8 224 | | +--rw lifetime uint32 225 | | +--rw v6-dscp? uint8 226 | | +--rw internal-v4-dscp? uint8 227 | | +--rw external-v4-dscp? uint8 228 | | +--rw description? string 229 | +--rw dslite-b4-config {b4}? 230 | +--rw enable? boolean 231 | +--rw dslite-b4-instances 232 | +--rw dslite-b4-instance* [id] 233 | +--rw id uint32 234 | +--rw name? string 235 | +--rw aftr-ipv6-addr inet:ipv6-address 236 | +--rw ipv4-address? inet:ipv4-address 237 | +--rw tunnel-mtu? uint16 238 | +--rw v6-v4-dscp-preservation boolean 239 +--rw dslite-state 240 +--ro dslite-aftr-state {aftr}? 241 | +--ro dslite-aftr-instances 242 | +--ro dslite-aftr-instance* [id] 243 | +--ro id int32 244 | +--ro name? string 245 | +--ro aftr-capabilities 246 | | +--ro eim-support? boolean 247 | | +--ro eif-support? boolean 248 | | +--ro edm-support? boolean 249 | | +--ro edf-support? boolean 250 | | +--ro adm-support? boolean 251 | | +--ro adf-support? boolean 252 | | +--ro pcp-support? boolean 253 | | +--ro subscriber-mask-support? boolean 254 | | +--ro port-set-support? boolean 255 | | +--ro self-state-migration-support? boolean 256 | | +--ro mss-clamping-support? boolean 257 | | +--ro port-randomization-support? boolean 258 | | +--ro port-preservation-support? boolean 259 | | +--ro port-parity-preservation-support? boolean 260 | | +--ro transport-proto-capabilities* [transport-protocol-id] 261 | | | +--ro transport-protocol-id uint8 262 | | +--ro v6-v4-dscp-preservation-support? boolean 263 | | +--ro logging-support? boolean 264 | | +--ro ftp-alg-support? boolean 265 | | +--ro tftp-support? boolean 266 | | +--ro sip-alg-support? boolean 267 | | +--ro rtsp-alg-support? boolean 268 | | +--ro h323-alg-support? boolean 269 | +--ro aftr-current-config 270 | | +--ro dslite-aftr-ipv6-address* [address-id] 271 | | | +--ro address-id uint32 272 | | | +--ro ipv6-address? inet:ipv6-address 273 | | +--ro ipv4-address? inet:ipv4-address 274 | | +--ro tunnel-mtu? uint16 275 | | +--ro external-ip-address-pool* [address-id] 276 | | | +--ro address-id uint32 277 | | | +--ro external-ip-pool? inet:ipv4-prefix 278 | | +--ro subscriber-mask? uint8 279 | | +--ro nat-mapping-type? enumeration 280 | | +--ro nat-filtering-type? enumeration 281 | | +--ro port-quota uint16 282 | | +--ro exclude-ports* [id] 283 | | | +--ro id uint16 284 | | | +--ro (port-type)? 285 | | | +--:(single-port-number) 286 | | | | +--ro single-port-number? inet:port-number 287 | | | +--:(port-range) 288 | | | +--ro start-port-number? inet:port-number 289 | | | +--ro end-port-number? inet:port-number 290 | | +--ro port-set 291 | | | +--ro port-set-enable? boolean 292 | | | +--ro port-set-size? uint16 293 | | | +--ro port-set-timeout? uint32 294 | | +--ro enable-app? boolean 295 | | +--ro max-softwire-per-subscriber? uint8 296 | | +--ro transport-protocol* [transport-protocol-id] 297 | | | +--ro transport-protocol-id uint8 298 | | +--ro new-mappings-rate-limit? uint32 299 | | +--ro mss-clamping 300 | | | +--ro mss-clamping-enable? boolean 301 | | | +--ro mss-value? uint16 302 | | +--ro port-randomization-enable? boolean 303 | | +--ro port-preservation-enable? boolean 304 | | +--ro port-parity-preservation-enable? boolean 305 | | +--ro address-roundrobin-enable? boolean 306 | | +--ro udp-lifetime? uint32 307 | | +--ro tcp-idle-timeout? uint32 308 | | +--ro tcp-trans-open-timeout? uint32 309 | | +--ro tcp-trans-close-timeout? uint32 310 | | +--ro tcp-in-syn-timeout? uint32 311 | | +--ro fragment-min-timeout? uint32 312 | | +--ro icmp-timeout? uint32 313 | | +--ro hold-down-timeout? uint32 314 | | +--ro v6-v4-dscp-preservation boolean 315 | | +--ro logging-info 316 | | | +--ro logging-enable? boolean 317 | | | +--ro destination-address? inet:ip-prefix 318 | | | +--ro destination-port? inet:port-number 319 | | | +--ro (protocol)? 320 | | | +--:(syslog) 321 | | | | +--ro syslog? boolean 322 | | | +--:(ipfix) 323 | | | | +--ro ipfix? boolean 324 | | | +--:(ftp) 325 | | | +--ro ftp? boolean 326 | | +--ro notify-address-pool-usage 327 | | | +--ro pool-id? uint32 328 | | | +--ro notify-pool-hi-threshold percent 329 | | | +--ro notify-pool-low-threshold? percent 330 | | +--ro ftp-alg-enable? boolean 331 | | +--ro tftp-alg-enable? boolean 332 | | +--ro sip-alg-enable? boolean 333 | | +--ro rtsp-alg-enable? boolean 334 | | +--ro h323-alg-enable? boolean 335 | | +--ro all-algs-enable? boolean 336 | +--ro mapping-table 337 | | +--ro mapping-entry* [index] 338 | | +--ro index uint32 339 | | +--ro status? enumeration 340 | | +--ro type? enumeration 341 | | +--ro b4-ip-address inet:ipv6-address 342 | | +--ro internal-ip-address inet:ipv4-prefix 343 | | +--ro internal-port 344 | | | +--ro (port-type)? 345 | | | +--:(single-port-number) 346 | | | | +--ro single-port-number? inet:port-number 347 | | | +--:(port-range) 348 | | | +--ro start-port-number? inet:port-number 349 | | | +--ro end-port-number? inet:port-number 350 | | +--ro external-ip-address inet:ipv4-address 351 | | +--ro external-port 352 | | | +--ro (port-type)? 353 | | | +--:(single-port-number) 354 | | | | +--ro single-port-number? inet:port-number 355 | | | +--:(port-range) 356 | | | +--ro start-port-number? inet:port-number 357 | | | +--ro end-port-number? inet:port-number 358 | | +--ro transport-protocol uint8 359 | | +--ro lifetime uint32 360 | | +--ro v6-dscp? uint8 361 | | +--ro internal-v4-dscp? uint8 362 | | +--ro external-v4-dscp? uint8 363 | | +--ro description? string 364 | +--ro statistics 365 | | +--ro traffic-statistics 366 | | | +--ro sent-packet? yang:zero-based-counter64 367 | | | +--ro sent-byte? yang:zero-based-counter64 368 | | | +--ro rcvd-packet? yang:zero-based-counter64 369 | | | +--ro rcvd-byte? yang:zero-based-counter64 370 | | | +--ro dropped-packet? yang:zero-based-counter64 371 | | | +--ro dropped-byte? yang:zero-based-counter64 372 | | +--ro mapping-table-stats 373 | | +--ro current-mt-size? yang:zero-based-counter64 374 | | +--ro max-mt-size? uint32 375 | | +--ro total-tcp-mappings? uint32 376 | | +--ro total-udp-mappings? uint32 377 | | +--ro total-icmp-mappings? uint32 378 | +--ro available-capacity-client? percent 379 | +--ro available-capacity-ext? percent 380 | +--ro address-pool-in-use? percent 381 | +--ro port-in-use? percent 382 +--ro dslite-b4-state {b4}? 383 +--ro dslite-b4-instances 384 +--ro dslite-b4-instance* [id] 385 +--ro id int32 386 +--ro name? string 387 +--ro b4-capabilities 388 | +--ro ipv4-address-modify? boolean 389 | +--ro tunnel-mtu-support? boolean 390 | +--ro v6-v4-dscp-preservation-support boolean 391 +--ro b4-state 392 +--ro status? boolean 393 +--ro aftr-ipv6-addr inet:ipv6-address 394 +--ro ipv4-address-configured? inet:ipv4-address 395 +--ro v6-v4-dscp-preservation-enabled? boolean 397 Figure 1: YANG Data Model for DS-Lite AFTR 399 The following notifications are supported. These notifications are 400 triggered by configurable parameters. 402 notifications: 403 +---n dslite-aftr-event 404 +--ro id? -> /dslite-state/dslite-aftr-state/ 405 | dslite-aftr-instances/dslite-aftr-instance/id 406 +--ro notify-pool-threshold percent 408 3. DS-Lite YANG Module 410 file "ietf-dslite@2016-11.14" 411 module ietf-dslite { 412 namespace "urn:ietf:params:xml:ns:yang:ietf-dslite"; 413 prefix dslite; 415 import ietf-inet-types { prefix inet; } 416 import ietf-yang-types { prefix yang; } 418 organization "Softwire Working Group"; 419 contact 420 "Mohamed Boucadair 421 Christian Jacquenet 422 Senthil Sivakumar "; 424 description 425 "This module is a YANG module for DS-Lite AFTR 426 implementations. 428 Copyright (c) 2016 IETF Trust and the persons identified as 429 authors of the code. All rights reserved. 431 Redistribution and use in source and binary forms, with or 432 without modification, is permitted pursuant to, and subject 433 to the license terms contained in, the Simplified BSD License 434 set forth in Section 4.c of the IETF Trust's Legal Provisions 435 Relating to IETF Documents 436 (http://trustee.ietf.org/license-info). 438 This version of this YANG module is part of RFC XXXX; see 439 the RFC itself for full legal notices."; 441 revision 2016-11-14 { 442 description "Integrates the comments from Ian: 443 add B4 module, add an MSS leaf, add more details about 444 logging protocols, and other edits."; 445 reference "-ietf-01"; 446 } 448 revision 2016-07-27 { 449 description "-00 IETF version."; 450 reference "-ietf-00"; 451 } 453 revision 2016-06-13 { 454 description "Update the module."; 455 reference "-04"; 456 } 458 revision 2015-12-16 { 459 description "Fix an error."; 460 reference "-03"; 461 } 463 revision 2015-09-01 { 464 description "Add port threshold notifications."; 465 reference "-02"; 466 } 468 revision 2015-08-31 { 469 description "Fix a timeout issue."; 470 reference "-01"; 471 } 473 revision 2015-08-17 { 474 description "First spec."; 475 reference "-00"; 476 } 478 // Typedef 480 typedef percent { 481 type uint8 { 482 range "0 .. 100"; 483 } 484 description 485 "Percentage"; 486 } 488 // FEATURES 490 feature aftr { 491 description 492 "An AFTR element is the combination of 493 an IPv4-in-IPv6 tunnel endpoint and an 494 IPv4-IPv4 NAT implemented on the same node."; 496 reference 497 "RFC6333"; 498 } 500 feature b4 { 501 description 502 "The B4 element is a function implemented 503 on a dual-stack-capable node, either a directly 504 connected device or a CPE, that creates 505 a tunnel to an AFTR."; 507 reference 508 "RFC6333"; 509 } 511 /* 512 * Grouping 513 */ 515 // port numbers: single or port range 517 grouping port-number { 518 description 519 "Individual port or a range of ports."; 521 choice port-type { 522 default single-port-number; 523 description 524 "Port type: single or port-range."; 526 case single-port-number { 527 leaf single-port-number { 528 type inet:port-number; 529 description 530 "Used for single port numbers."; 531 } 532 } 534 case port-range { 535 leaf start-port-number { 536 type inet:port-number; 537 description 538 "Beginning of the port range."; 539 } 541 leaf end-port-number { 542 type inet:port-number; 543 description 544 "End of the port range."; 545 } 546 } 547 } 548 } 550 // Timeout variables 552 grouping lifetime { 553 description 554 "Configure values of various timeouts."; 556 leaf udp-lifetime { 557 type uint32; 558 units "seconds"; 559 default 120; 560 description 561 "UDP inactivity timeout [RFC4787]."; 562 } 564 leaf tcp-idle-timeout { 565 type uint32; 566 units "seconds"; 567 default 7440; 568 description 569 "TCP Idle timeout as per RFC 5382 should be no 570 more than 2 hours and 4 minutes."; 571 } 573 leaf tcp-trans-open-timeout { 574 type uint32; 575 units "seconds"; 576 default 240; 577 description 578 "The value of the transitory open connection 579 idle-timeout. 580 Section 2.1 of [RFC7857] clarifies that a NAT 581 should provide different configurable 582 parameters for configuring the open and 583 closing idle timeouts. 584 To accommodate deployments that consider 585 a partially open timeout of 4 minutes as being 586 excessive from a security standpoint, a NAT may 587 allow the configured timeout to be less than 588 4 minutes. 589 However, a minimum default transitory connection 590 idle-timeout of 4 minutes is recommended."; 591 } 593 leaf tcp-trans-close-timeout { 594 type uint32; 595 units "seconds"; 596 default 240; 597 description 598 "The value of the transitory close connection 599 idle-timeout. 600 Section 2.1 of [RFC7857] clarifies that a NAT 601 should provide different configurable 602 parameters for configuring the open and 603 closing idle timeouts."; 604 } 606 leaf tcp-in-syn-timeout { 607 type uint32; 608 units "seconds"; 609 default 6; 610 description 611 "6 seconds, as defined in [RFC5382]."; 612 } 614 leaf fragment-min-timeout { 615 type uint32; 616 units "seconds"; 617 default 2; 618 description 619 "As long as the AFTR has available resources, 620 the AFTR allows the fragments to arrive 621 over fragment-min-timeout interval. 622 The default value is inspired from RFC6146."; 623 } 624 leaf icmp-timeout { 625 type uint32; 626 units "seconds"; 627 default 60; 628 description 629 "60 seconds, as defined in [RFC5508]."; 630 } 632 leaf hold-down-timeout { 633 type uint32; 634 units "seconds"; 635 default 120; 636 description 637 "Hold down timer. Ports in the 638 hold down pool are not reassigned until 639 this timer expires. 640 The length of time and the maximum 641 number of ports in this state must be 642 configurable by the administrator 643 [RFC6888]. This is necessary in order 644 to prevent collisions between old 645 and new mappings and sessions. It ensures 646 that all established sessions are broken 647 instead of redirected to a different peer. 648 The default value is defined in REQ#8 649 from [RFC6888]."; 650 } 651 } 652 // AFTR Parameters 654 grouping aftr-parameters { 656 description 657 "A set of AFTR parameters"; 659 list dslite-aftr-ipv6-address { 661 key address-id; 663 description 664 "set one or multiple IP addresses for 665 the dslite-aftr"; 667 leaf address-id { 668 type uint32; 669 description 670 "The identifier of the address"; 671 } 672 leaf ipv6-address { 673 type inet:ipv6-address; 674 description 675 "IPv6 address of the dslite-aftr."; 676 } 677 } 678 leaf ipv4-address { 679 type inet:ipv4-address; 680 default "192.0.0.1"; 681 description 682 "IPv4 address of the DS-Lite AFTR. 683 192.0.0.1 is reserved for the AFTR element 684 [RFC6333]. 685 This address can be used to report ICMP 686 problems and will appear in traceroute 687 outputs."; 688 } 690 leaf tunnel-mtu { 691 type uint16; 692 description 693 "Configures a tunnel MTU. 694 [RFC6908] specifies that since 695 fragmentation and reassembly is not 696 optimal, the operator should do 697 everything possible to eliminate 698 the need for it. If the operator uses 699 simple IPv4-in-IPv6 softwire, it is 700 recommended that the MTU size of the IPv6 701 network between the B4 and the AFTR 702 accounts for the additional overhead 703 (40 bytes)."; 704 } 706 list external-ip-address-pool { 708 key address-id; 710 description 711 "Pool of external IP addresses used to service 712 internal hosts. 713 Both contiguous and non-contiguous pools 714 can be configured to an AFTR. 715 Refer to REQ-3 of [RFC6888]."; 717 leaf address-id { 718 type uint32; 719 description 720 "An identifier of the address."; 721 } 723 leaf external-ip-pool { 724 type inet:ipv4-prefix; 725 description 726 "An IPv4 prefix used by the AFTR 727 for NAT purposes."; 728 } 729 } 731 leaf subscriber-mask { 732 type uint8 { 733 range "0 .. 128"; 734 } 735 default "56"; 736 description 737 "The subscriber-mask is an integer that indicates 738 the length of significant bits to be applied on 739 the source IPv6 address (internal side) to 740 unambiguously identify a CPE. 742 Subscriber-mask is a system-wide configuration 743 parameter that is used to enforce generic 744 per-subscriber policies (e.g., port-quota). 746 The enforcement of these generic policies does not 747 require the configuration of every subscriber's prefix. 749 Example: suppose the 2001:db8:100:100::/56 prefix is 750 assigned to a DS-Lite enabled CPE. Suppose also that the 751 2001:db8:100:100::1 is the IPv6 address used by the 752 B4 that resides in that CPE. When the AFTR 753 receives a packet from this client, 754 it applies the subscriber-mask (e.g., 56) on 755 the source IPv6 address to compute the associated prefix 756 for this client (that is 2001:db8:100:100::/56). Then, 757 the AFTR enforces policies based on that prefix 758 (2001:db8:100:100::/56), not on the exact 759 source IPv6 address [RFC7785]."; 760 } 762 leaf nat-mapping-type { 763 type enumeration { 764 enum "eim" { 765 description 766 "Endpoint-Independent-Mapping. 767 Refer to Section 4 of [RFC4787]."; 769 } 771 enum "adm" { 772 description 773 "Address-Dependent-Mapping. 774 Refer to Section 4 of [RFC4787]."; 775 } 777 enum "edm" { 778 description 779 "address-and-port-Dependent-Mapping. 780 Refer to Section 4 of [RFC4787]."; 781 } 782 } 783 description 784 "Indicates the type of the NAT mapping."; 785 } 787 leaf nat-filtering-type { 788 type enumeration { 789 enum "eif" { 790 description 791 "Endpoint-Independent-Filtering. 792 Refer to Section 5 of [RFC4787]."; 793 } 795 enum "adf" { 796 description 797 "Address-Dependent-Filtering. 798 Refer to Section 5 of [RFC4787]."; 799 } 801 enum "edf" { 802 description 803 "address-and-port-Dependent-Filtering. 804 Refer to Section 5 of [RFC4787]."; 805 } 806 } 807 description 808 "Indicates the type of the NAT filtering."; 809 } 811 leaf port-quota { 812 type uint16; 813 mandatory true; 814 description 815 "Configures a port quota to be assigned per 816 subscriber. 818 According to [RFC6888], per-subscriber limits 819 must be configurable by the administrator."; 820 } 822 list exclude-ports { 823 key "id"; 824 description 825 "The set of ports not to be assigned 826 by the AFTR."; 828 leaf id { 829 type uint16; 830 description 831 "An identifier"; 832 } 834 uses port-number; 835 } 837 container port-set { 838 description 839 "Manages port-set assignments."; 841 leaf port-set-enable { 842 type boolean; 843 description 844 "Enable/Disable port set assignment."; 845 } 847 leaf port-set-size { 848 type uint16; 849 description 850 "Indicates the size of assigned port sets."; 851 } 853 leaf port-set-timeout { 854 type uint32; 855 description 856 "Inactivity timeout for port sets."; 857 } 858 } 860 leaf enable-app { 861 type boolean; 862 default true; 863 description 864 "Enable/disable the IP address 865 pooling behavior of Paired (APP). 867 APP is recommended in REQ-2 from 868 [RFC4787]."; 869 } 871 leaf max-softwire-per-subscriber { 872 type uint8; 873 default 1; 874 description 875 "Configures the maximum softwire per subscriber 876 feature as per Section 4 of [RFC7785]. 878 A subscriber is uniquely identified by means 879 of subscriber-mask. 881 This policy aims to prevent a misbehaving 882 subscriber from mounting several DS-Lite 883 softwires that would consume additional AFTR 884 resources (e.g., get more external ports if 885 the quota were enforced on a per-softwire basis, 886 consume extra processing due to a large number 887 of active softwires)."; 888 } 890 list transport-protocol { 891 key "transport-protocol-id"; 892 description 893 "Set of (transport) protocols supported by 894 the AFTR. Default must be set to 895 TCP and UDP."; 897 leaf transport-protocol-id { 898 type uint8; 899 description 900 "Identifier of the transport protocol. 901 IANA Protocol Numbers maintained in 902 http://www.iana.org/assignments/ 903 protocol-numbers are used."; 904 } 905 } 907 leaf new-mappings-rate-limit { 908 type uint32; 909 description 910 "Rate-limit sessions per subscriber. 911 The goal is to prevent a single subscriber 912 from consuming excessive CPU resources from 913 the AFTR."; 914 } 915 container mss-clamping { 916 description 917 "Manages port-set assignments."; 919 leaf mss-clamping-enable { 920 type boolean; 921 description 922 "Enable/disable MSS rewriting feature."; 923 } 925 leaf mss-value { 926 type uint16; 927 units "octets"; 928 description 929 "Indicates the MSS value to be used for 930 MSS rewriting."; 931 } 932 } 934 leaf port-randomization-enable { 935 type boolean; 936 description 937 "Enable/disable port randomization feature. 938 Section 9 of [RFC7857] specifies that a NAT 939 should follow the recommendations in 940 Section 4 of RFC6056."; 941 } 943 leaf port-preservation-enable { 944 type boolean; 945 description 946 "Indicates whether the AFTR should 947 preserve the internal port number."; 948 } 950 leaf port-parity-preservation-enable { 951 type boolean; 952 description 953 "Indicates whether the AFTR should 954 preserve the port parity of the 955 internal port number. 956 Section 8 of [RFC7857] indicates that 957 a NAT may disable port parity preservation 958 for all dynamic mappings. 959 It also specifies that a NAT should support 960 means to explicitly request to preserve 961 port parity (e.g., [RFC7753])."; 963 } 965 leaf address-roundrobin-enable { 966 type boolean; 967 description 968 "Enable/disable address allocation 969 round robin."; 970 } 972 uses lifetime; 974 leaf v6-v4-dscp-preservation { 975 type boolean; 976 mandatory true; 977 description 978 "Copies the DSCP value from the IPv6 header 979 and vice versa. 980 According to Section 2.10 of [RFC6908], 981 operators should use this model 982 by provisioning the network such that 983 the AFTR copies the DSCP value in the IPv4 984 header to the Traffic Class field in 985 the IPv6 header, after the encapsulation 986 for the downstream traffic."; 987 } 989 container logging-info { 990 description 991 "Information about AFTR logging events."; 993 leaf logging-enable { 994 type boolean; 995 description 996 "Enable logging features as per Section 2.3 997 of [RFC6908]."; 998 } 1000 leaf destination-address { 1001 type inet:ip-prefix; 1002 description 1003 "Address of the collector that receives 1004 the logs."; 1005 } 1007 leaf destination-port { 1008 type inet:port-number; 1009 description 1010 "Destination port of the collector."; 1012 } 1014 choice protocol { 1016 description 1017 "Enable the protocol to be used for 1018 the retrieval of logging entries."; 1020 case syslog { 1021 leaf syslog { 1022 type boolean; 1023 description 1024 "Used if SYSLOG is in use."; 1025 } 1026 } 1028 case ipfix { 1029 leaf ipfix { 1030 type boolean; 1031 description 1032 "Used if IPFIX is in use."; 1033 } 1034 } 1036 case ftp { 1037 leaf ftp { 1038 type boolean; 1039 description 1040 "Used if FTP is in use."; 1041 } 1042 } 1043 } 1044 } 1046 container notify-address-pool-usage { 1047 description 1048 "Notification of Pool usage when certain criteria 1049 is met."; 1051 leaf pool-id { 1052 type uint32; 1053 description 1054 "Pool-ID for which the notification criteria is 1055 defined."; 1056 } 1058 leaf notify-pool-hi-threshold { 1059 type percent; 1060 mandatory true; 1061 description 1062 "Notification must be generated when the defined 1063 high threshold is reached. For example, if a 1064 notification is required when the pool utilization 1065 reaches 90%, this configuration parameter must be 1066 set to 90%."; 1067 } 1069 leaf notify-pool-low-threshold { 1070 type percent; 1071 description 1072 "Notification must be generated when the defined 1073 low threshold is reached. For example, if a 1074 notification is required when the pool utilization 1075 reaches below 10%, this configuration parameter 1076 must be set to 10%."; 1077 } 1078 } 1080 leaf ftp-alg-enable { 1081 type boolean; 1082 description 1083 "Enable/Disable FTP ALG."; 1084 } 1086 leaf tftp-alg-enable { 1087 type boolean; 1088 description 1089 "Enable/Disable TFTP ALG."; 1090 } 1092 leaf sip-alg-enable { 1093 type boolean; 1094 description 1095 "Enable/Disable SIP ALG."; 1096 } 1098 leaf rtsp-alg-enable { 1099 type boolean; 1100 description 1101 "Enable/Disable RTSP ALG."; 1102 } 1104 leaf h323-alg-enable { 1105 type boolean; 1106 description 1107 "Enable/Disable H323 ALG."; 1109 } 1111 leaf all-algs-enable { 1112 type boolean; 1113 description 1114 "Enable/Disable all the ALGs."; 1115 } 1116 } 1118 // Mapping Entry (Extended NAT44 mapping Entry) 1120 grouping mapping-entry { 1121 description 1122 "A DS-Lite AFTR mapping entry."; 1124 leaf index { 1125 type uint32; 1126 description 1127 "A unique identifier of a mapping entry."; 1128 } 1130 leaf status { 1131 type enumeration { 1133 enum "disabled" { 1134 description 1135 "The mapping entry is not in use (Disabled)."; 1136 } 1138 enum "assigned" { 1139 description 1140 "This mapping has been granted by the server."; 1141 } 1143 enum "stale" { 1144 description 1145 "This is a stale mapping (case of reboot)."; 1146 } 1147 } 1148 description 1149 "Indicates the status of a mapping entry."; 1150 } 1152 leaf type { 1153 type enumeration { 1155 enum "static" { 1156 description 1157 "The mapping entry is manually configured."; 1158 } 1160 enum "implicit" { 1161 description 1162 "This mapping is created by an outgoing packet."; 1163 } 1165 enum "explicit" { 1166 description 1167 "This is a dynamic explicit mapping created as a result 1168 of a PCP operation."; 1169 } 1170 } 1171 description 1172 "Indicates the type of a mapping entry. E.g., 1173 a mapping can be: static, dynamic implicit, or 1174 dynamic explicit."; 1175 } 1177 leaf b4-ip-address { 1178 type inet:ipv6-address; 1179 mandatory true; 1180 description 1181 "Corresponds to the IPv6 address 1182 used by the B4 element."; 1183 } 1185 leaf internal-ip-address { 1186 type inet:ipv4-prefix; 1187 mandatory true; 1188 description 1189 "Corresponds to the source IPv4 address 1190 of the IPv4 packet conveyed over the softwire."; 1191 } 1193 container internal-port { 1194 description 1195 "Corresponds to the source port of the 1196 IPv4 packet conveyed over the softwire."; 1197 uses port-number; 1198 } 1200 leaf external-ip-address { 1201 type inet:ipv4-address; 1202 mandatory true; 1203 description 1204 "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."; 1250 } 1252 leaf description { 1253 type string; 1254 description 1255 "A description string associated with the mapping."; 1256 } 1257 } 1259 /* 1260 * DS-Lite AFTR Configuration 1261 */ 1263 container dslite-config { 1265 description 1266 "AFTR and B4 configuration."; 1268 container dslite-aftr-config { 1269 if-feature aftr; 1271 description 1272 "dslite-aftr"; 1274 leaf enable { 1275 type boolean; 1276 description 1277 "Enable/Disable dslite-aftr function."; 1278 } 1280 container dslite-aftr-instances { 1281 description 1282 "dslite-aftr instances"; 1284 list dslite-aftr-instance { 1285 key "id"; 1286 description 1287 "a dslite-aftr instance."; 1289 leaf id { 1290 type uint32; 1291 description 1292 "dslite-aftr instance identifier."; 1293 } 1295 leaf name { 1296 type string; 1297 description 1298 "A name associated with the dslite-aftr instance."; 1299 } 1301 uses aftr-parameters; 1302 container mapping-table { 1303 description 1304 "dslite-aftr mapping table maintained by 1305 the dslite-aftr server."; 1307 list mapping-entry { 1308 key "index"; 1309 description 1310 "dslite-aftr mapping entry."; 1311 uses mapping-entry; 1312 } 1313 } 1314 } 1315 } 1316 } 1318 /* 1319 * DS-Lite B4 Configuration 1320 */ 1321 container dslite-b4-config { 1322 if-feature b4; 1323 description 1324 "dslite-b4"; 1326 leaf enable { 1327 type boolean; 1328 description 1329 "Enable/Disable dslite-b4 function."; 1330 } 1332 container dslite-b4-instances { 1333 description 1334 "dslite-b4 instances"; 1336 list dslite-b4-instance { 1337 key "id"; 1338 description 1339 "a dslite-b4 instance."; 1341 leaf id { 1342 type uint32; 1343 description 1344 "dslite-b4 instance identifier."; 1345 } 1347 leaf name { 1348 type string; 1349 description 1350 "A name associated with the dslite-b4 instance."; 1351 } 1353 leaf aftr-ipv6-addr { 1354 type inet:ipv6-address; 1355 mandatory true; 1356 description 1357 "The AFTR's IPv6 address."; 1358 } 1360 leaf ipv4-address { 1361 type inet:ipv4-address; 1362 default "192.0.0.2"; 1363 description 1364 "IPv4 address of the DS-Lite B4. 1365 192.0.0.0/29 is reserved for the B4 element 1366 [RFC6333]. 1367 This address can be used to report ICMP 1368 problems and will appear in traceroute 1369 outputs."; 1370 } 1372 leaf tunnel-mtu { 1373 type uint16; 1374 description 1375 "Configures a tunnel MTU. 1376 [RFC6908] specifies that since 1377 fragmentation and reassembly is not 1378 optimal, the operator should do 1379 everything possible to eliminate 1380 the need for it. If the operator uses 1381 simple IPv4-in-IPv6 softwire, it is 1382 recommended that the MTU size of the IPv6 1383 network between the B4 and the AFTR 1384 accounts for the additional overhead 1385 (40 bytes)."; 1386 } 1388 leaf v6-v4-dscp-preservation { 1389 type boolean; 1390 mandatory true; 1391 description 1392 "Copies the DSCP value from the IPv6 header 1393 and vice versa. 1394 According to Section 2.10 of [RFC6908], 1395 operators should use this model 1396 by provisioning the network such that 1397 the AFTR copies the DSCP value in the IPv4 1398 header to the Traffic Class field in 1399 the IPv6 header, after the encapsulation 1400 for the downstream traffic."; 1401 } 1402 } 1403 } 1404 } 1405 } 1407 /* 1408 * DS-Lite State 1409 */ 1411 container dslite-state { 1413 description 1414 "dslite-aftr and b4 state."; 1416 /* 1417 * DS-Lite AFTR State 1418 */ 1420 container dslite-aftr-state { 1422 if-feature aftr; 1424 config false; 1426 description 1427 "dslite-aftr"; 1429 container dslite-aftr-instances { 1430 description 1431 "dslite-aftr instances"; 1433 list dslite-aftr-instance { 1434 key "id"; 1436 description 1437 "dslite-aftr instance"; 1439 leaf id { 1440 type int32; 1441 description 1442 "The identifier of the dslite-aftr instance."; 1443 } 1444 leaf name { 1445 type string; 1446 description 1447 "The name of the dslite-aftr instance."; 1448 } 1450 container aftr-capabilities { 1451 description 1452 "AFTR capabilities"; 1454 leaf eim-support { 1455 type boolean; 1456 description 1457 "Indicates whether EIM is enabled."; 1458 } 1460 leaf eif-support { 1461 type boolean; 1462 description 1463 "Indicates whether EIF is enabled."; 1464 } 1466 leaf edm-support { 1467 type boolean; 1468 description 1469 "Indicates whether EDM is enabled."; 1470 } 1472 leaf edf-support { 1473 type boolean; 1474 description 1475 "Indicates whether EDF is enabled."; 1476 } 1478 leaf adm-support { 1479 type boolean; 1480 description 1481 "Indicates whether ADM is enabled."; 1482 } 1484 leaf adf-support { 1485 type boolean; 1486 description 1487 "Indicates whether ADF is enabled."; 1488 } 1490 leaf pcp-support { 1491 type boolean; 1492 description 1493 "Indicates whether a PCP server is enabled."; 1494 } 1496 leaf subscriber-mask-support{ 1497 type boolean; 1498 description 1499 "Indicates whether the subscriber-mask feature 1500 is supported."; 1501 } 1503 leaf port-set-support { 1504 type boolean; 1505 description 1506 "Indicates whether port set assignment is 1507 supported."; 1508 } 1510 leaf self-state-migration-support { 1511 type boolean; 1512 description 1513 "Indicates whether mappings migration 1514 to the new IPv6 address used by the B4 is 1515 supported [RFC7785]."; 1516 } 1518 leaf mss-clamping-support { 1519 type boolean; 1520 description 1521 "Indicates whether the MSS clamping 1522 feature is supported."; 1523 } 1525 leaf port-randomization-support { 1526 type boolean; 1527 description 1528 "Indicates whether port randomization is 1529 supported."; 1530 } 1532 leaf port-preservation-support { 1533 type boolean; 1534 description 1535 "Indicates whether port preservation 1536 is supported."; 1537 } 1539 leaf port-parity-preservation-support { 1540 type boolean; 1541 description 1542 "Indicates whether port parity preservation is 1543 supported."; 1544 } 1546 list transport-proto-capabilities { 1547 key "transport-protocol-id"; 1548 description 1549 "A set of supported transport protocols."; 1551 leaf transport-protocol-id { 1552 type uint8; 1553 description 1554 "ID of the transport protocol."; 1555 } 1556 } 1558 leaf v6-v4-dscp-preservation-support { 1559 type boolean; 1560 description 1561 "Copy the DSCP value from the IPv6 header 1562 and vice versa."; 1563 } 1565 leaf logging-support { 1566 type boolean; 1567 description 1568 "Indicates whether a logging feature is 1569 supported."; 1570 } 1572 leaf ftp-alg-support { 1573 type boolean; 1574 description 1575 "Indicates whether FTP ALG is supported."; 1576 } 1578 leaf tftp-support { 1579 type boolean; 1580 description 1581 "Indicates whether TFTP ALG is supported."; 1582 } 1584 leaf sip-alg-support { 1585 type boolean; 1586 description 1587 "Indicates whether SIP ALG is supported."; 1589 } 1591 leaf rtsp-alg-support { 1592 type boolean; 1593 description 1594 "Indicates whether RTSP ALG is supported."; 1595 } 1597 leaf h323-alg-support { 1598 type boolean; 1599 description 1600 "Indicates whether H323 ALG is supported."; 1601 } 1602 } 1604 container aftr-current-config { 1605 description 1606 "current config"; 1608 uses aftr-parameters; 1609 } 1611 container mapping-table { 1612 description 1613 "Mapping table"; 1614 list mapping-entry { 1615 key "index"; 1616 description 1617 "mapping entry"; 1618 uses mapping-entry; 1619 } 1620 } 1622 container statistics { 1623 description 1624 "traffic statistics"; 1626 container traffic-statistics { 1627 description 1628 "Generic traffic statistics."; 1630 leaf sent-packet { 1631 type yang:zero-based-counter64; 1632 description 1633 "Number of packets sent."; 1634 } 1636 leaf sent-byte { 1637 type yang:zero-based-counter64; 1638 description 1639 "Counter for sent traffic in bytes."; 1640 } 1642 leaf rcvd-packet { 1643 type yang:zero-based-counter64; 1644 description 1645 "Number of received packets."; 1646 } 1648 leaf rcvd-byte { 1649 type yang:zero-based-counter64; 1650 description 1651 "Counter for received traffic 1652 in bytes."; 1653 } 1655 leaf dropped-packet { 1656 type yang:zero-based-counter64; 1657 description 1658 "Number of dropped packets."; 1659 } 1661 leaf dropped-byte { 1662 type yang:zero-based-counter64; 1663 description 1664 "Counter for dropped traffic in 1665 bytes."; 1666 } 1667 } 1669 container mapping-table-stats { 1670 description 1671 "Mapping table statistics."; 1673 leaf current-mt-size { 1674 type yang:zero-based-counter64; 1675 description 1676 "Size of the mapping table."; 1677 } 1679 leaf max-mt-size { 1680 type uint32; 1681 description 1682 "Maximum configured size of the 1683 mapping table."; 1684 } 1686 leaf total-tcp-mappings { 1687 type uint32; 1688 description 1689 "Total number of TCP Mappings present 1690 at the time."; 1691 } 1692 leaf total-udp-mappings { 1693 type uint32; 1694 description 1695 "Total number of UDP Mappings present 1696 at the time."; 1697 } 1699 leaf total-icmp-mappings { 1700 type uint32; 1701 description 1702 "Total number of ICMP Mappings present 1703 at the time."; 1704 } 1705 } 1706 } 1708 leaf available-capacity-client { 1709 type percent; 1710 description 1711 "Ratio of available capacity in the 1712 customer-facing interfaces."; 1713 } 1715 leaf available-capacity-ext { 1716 type percent; 1717 description 1718 "Ratio of available capacity in the 1719 Internet-facing interfaces."; 1720 } 1722 leaf address-pool-in-use { 1723 type percent; 1724 description 1725 "Ratio of the shared address pool."; 1726 } 1728 leaf port-in-use { 1729 type percent; 1730 description 1731 "Ratio of the port usage."; 1732 } 1733 } 1735 } 1737 } 1739 /* 1740 * DS-Lite B4 State 1741 */ 1743 container dslite-b4-state { 1745 if-feature b4; 1747 config false; 1749 description 1750 "dslite-b4"; 1752 container dslite-b4-instances { 1753 description 1754 "dslite-b4 instances"; 1756 list dslite-b4-instance { 1757 key "id"; 1759 description 1760 "dslite-b4 instance"; 1762 leaf id { 1763 type int32; 1764 description 1765 "The identifier of the dslite-b4 instance."; 1766 } 1768 leaf name { 1769 type string; 1770 description 1771 "The name of the dslite-b4 instance."; 1772 } 1774 // B4 Capabilities 1776 container b4-capabilities { 1777 description 1778 "B4 capabilities"; 1780 leaf ipv4-address-modify { 1781 type boolean; 1782 description 1783 "Indicates whether it is possible 1784 to configure an IPv4 address 1785 for the B4 element."; 1786 } 1788 leaf tunnel-mtu-support { 1789 type boolean; 1790 description 1791 "Indicates whether it is possible to 1792 configure a tunnel MTU. 1793 "; 1794 } 1796 leaf v6-v4-dscp-preservation-support { 1797 type boolean; 1798 mandatory true; 1799 description 1800 "Indicates whether it supports 1801 DSCP preservation. 1802 "; 1803 } 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."; 1826 } 1828 leaf ipv4-address-configured { 1829 type inet:ipv4-address; 1830 default "192.0.0.2"; 1831 description 1832 "The B4's IPv4 address."; 1833 } 1835 leaf v6-v4-dscp-preservation-enabled { 1836 type boolean; 1837 description 1838 "Indicates whether this feature is 1839 enabled/disabled. 1840 "; 1841 } 1843 } 1845 } 1846 } 1847 } 1848 } 1850 /* 1851 * Notifications 1852 */ 1854 notification dslite-aftr-event { 1856 description 1857 "Notifications must be generated when the defined 1858 high/low threshold is reached. Related configuration 1859 parameters must be provided to trigger 1860 the notifications."; 1862 leaf id { 1863 type leafref { 1864 path 1865 "/dslite-state/dslite-aftr-state/dslite-aftr-instances/" 1866 + "dslite-aftr-instance/id"; 1867 } 1868 description 1869 "AFTR instance ID."; 1870 } 1872 leaf notify-pool-threshold { 1873 type percent; 1874 mandatory true; 1875 description 1876 "A threshold has been fired."; 1877 } 1879 } 1880 } 1881 1883 4. Security Considerations 1885 The YANG module defined in this memo is designed to be accessed via 1886 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1887 secure transport layer and the support of SSH is mandatory to 1888 implement secure transport [RFC6242]. The NETCONF access control 1889 model [RFC6536] provides means to restrict access for particular 1890 NETCONF users to a pre-configured subset of all available NETCONF 1891 protocol operations and contents. 1893 All data nodes defined in the YANG module which can be created, 1894 modified and deleted (i.e., config true, which is the default). 1895 These data nodes are considered sensitive. Write operations (e.g., 1896 edit-config) applied to these data nodes without proper protection 1897 can negatively affect network operations. 1899 5. IANA Considerations 1901 This document requests IANA to register the following URI in the 1902 "IETF XML Registry" [RFC3688]: 1904 URI: urn:ietf:params:xml:ns:yang:ietf-dslite 1905 Registrant Contact: The IESG. 1906 XML: N/A; the requested URI is an XML namespace. 1908 This document requests IANA to register the following YANG module in 1909 the "YANG Module Names" registry [RFC6020]. 1911 name: ietf-dslite 1912 namespace: urn:ietf:params:xml:ns:yang:ietf-dslite 1913 prefix: dslite 1914 reference: RFC XXXX 1916 6. Acknowledgements 1918 Thanks to Q. Wu for identifying a compiling error. 1920 Many thanks to Ian Farrer for the review and comments. 1922 7. References 1924 7.1. Normative references 1926 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1927 DOI 10.17487/RFC3688, January 2004, 1928 . 1930 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1931 the Network Configuration Protocol (NETCONF)", RFC 6020, 1932 DOI 10.17487/RFC6020, October 2010, 1933 . 1935 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1936 and A. Bierman, Ed., "Network Configuration Protocol 1937 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1938 . 1940 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1941 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1942 . 1944 [RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual- 1945 Stack Lite Broadband Deployments Following IPv4 1946 Exhaustion", RFC 6333, DOI 10.17487/RFC6333, August 2011, 1947 . 1949 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1950 Protocol (NETCONF) Access Control Model", RFC 6536, 1951 DOI 10.17487/RFC6536, March 2012, 1952 . 1954 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1955 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1956 . 1958 7.2. Informative references 1960 [I-D.boucadair-pcp-yang] 1961 Boucadair, M., Jacquenet, C., Sivakumar, S., and S. 1962 Vinapamula, "YANG Data Models for the Port Control 1963 Protocol (PCP)", draft-boucadair-pcp-yang-02 (work in 1964 progress), June 2016. 1966 [RFC4787] Audet, F., Ed. and C. Jennings, "Network Address 1967 Translation (NAT) Behavioral Requirements for Unicast 1968 UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January 1969 2007, . 1971 [RFC5382] Guha, S., Ed., Biswas, K., Ford, B., Sivakumar, S., and P. 1972 Srisuresh, "NAT Behavioral Requirements for TCP", BCP 142, 1973 RFC 5382, DOI 10.17487/RFC5382, October 2008, 1974 . 1976 [RFC5508] Srisuresh, P., Ford, B., Sivakumar, S., and S. Guha, "NAT 1977 Behavioral Requirements for ICMP", BCP 148, RFC 5508, 1978 DOI 10.17487/RFC5508, April 2009, 1979 . 1981 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 1982 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 1983 January 2011, . 1985 [RFC6888] Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa, 1986 A., and H. Ashida, "Common Requirements for Carrier-Grade 1987 NATs (CGNs)", BCP 127, RFC 6888, DOI 10.17487/RFC6888, 1988 April 2013, . 1990 [RFC6908] Lee, Y., Maglione, R., Williams, C., Jacquenet, C., and M. 1991 Boucadair, "Deployment Considerations for Dual-Stack 1992 Lite", RFC 6908, DOI 10.17487/RFC6908, March 2013, 1993 . 1995 [RFC7753] Sun, Q., Boucadair, M., Sivakumar, S., Zhou, C., Tsou, T., 1996 and S. Perreault, "Port Control Protocol (PCP) Extension 1997 for Port-Set Allocation", RFC 7753, DOI 10.17487/RFC7753, 1998 February 2016, . 2000 [RFC7785] Vinapamula, S. and M. Boucadair, "Recommendations for 2001 Prefix Binding in the Context of Softwire Dual-Stack 2002 Lite", RFC 7785, DOI 10.17487/RFC7785, February 2016, 2003 . 2005 [RFC7857] Penno, R., Perreault, S., Boucadair, M., Ed., Sivakumar, 2006 S., and K. Naito, "Updates to Network Address Translation 2007 (NAT) Behavioral Requirements", BCP 127, RFC 7857, 2008 DOI 10.17487/RFC7857, April 2016, 2009 . 2011 Authors' Addresses 2013 Mohamed Boucadair 2014 Orange 2015 Rennes 35000 2016 France 2018 EMail: mohamed.boucadair@orange.com 2019 Christian Jacquenet 2020 Orange 2021 Rennes 35000 2022 France 2024 EMail: christian.jacquenet@orange.com 2026 Senthil Sivakumar 2027 Cisco Systems 2028 7100-8 Kit Creek Road 2029 Research Triangle Park, North Carolina 27709 2030 USA 2032 Phone: +1 919 392 5158 2033 EMail: ssenthil@cisco.com