idnits 2.17.1 draft-ietf-softwire-dslite-yang-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 5 instances of too long lines in the document, the longest one being 3 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 (January 3, 2017) is 2641 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 1988, 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-03 -- 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: July 7, 2017 S. Sivakumar 6 Cisco Systems 7 January 3, 2017 9 A YANG Data Model for the DS-Lite 10 draft-ietf-softwire-dslite-yang-02 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 July 7, 2017. 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 . . . . . . . . . . . . . . . . . . . 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@2017-01-03" 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 2017-01-03 { 442 description "Fixed a compilation error: 443 https://github.com/mbj4668/pyang/issues/296."; 444 reference "-ietf-02"; 445 } 447 revision 2016-11-14 { 448 description "Integrates the comments from Ian: 449 add B4 module, add an MSS leaf, add more details about 450 logging protocols, and other edits."; 451 reference "-ietf-01"; 452 } 454 revision 2016-07-27 { 455 description "-00 IETF version."; 456 reference "-ietf-00"; 457 } 459 revision 2016-06-13 { 460 description "Update the module."; 461 reference "-04"; 462 } 464 revision 2015-12-16 { 465 description "Fix an error."; 466 reference "-03"; 467 } 469 revision 2015-09-01 { 470 description "Add port threshold notifications."; 471 reference "-02"; 472 } 474 revision 2015-08-31 { 475 description "Fix a timeout issue."; 476 reference "-01"; 477 } 479 revision 2015-08-17 { 480 description "First spec."; 481 reference "-00"; 482 } 484 // Typedef 486 typedef percent { 487 type uint8 { 488 range "0 .. 100"; 489 } 490 description 491 "Percentage"; 492 } 494 // FEATURES 496 feature aftr { 497 description 498 "An AFTR element is the combination of 499 an IPv4-in-IPv6 tunnel endpoint and an 500 IPv4-IPv4 NAT implemented on the same node."; 502 reference 503 "RFC6333"; 504 } 506 feature b4 { 507 description 508 "The B4 element is a function implemented 509 on a dual-stack-capable node, either a directly 510 connected device or a CPE, that creates 511 a tunnel to an AFTR."; 513 reference 514 "RFC6333"; 515 } 517 /* 518 * Grouping 519 */ 521 // port numbers: single or port range 523 grouping port-number { 524 description 525 "Individual port or a range of ports."; 527 choice port-type { 528 default single-port-number; 529 description 530 "Port type: single or port-range."; 532 case single-port-number { 533 leaf single-port-number { 534 type inet:port-number; 535 description 536 "Used for single port numbers."; 537 } 538 } 540 case port-range { 541 leaf start-port-number { 542 type inet:port-number; 543 description 544 "Beginning of the port range."; 545 } 547 leaf end-port-number { 548 type inet:port-number; 549 description 550 "End of the port range."; 551 } 552 } 553 } 554 } 556 // Timeout variables 558 grouping lifetime { 559 description 560 "Configure values of various timeouts."; 562 leaf udp-lifetime { 563 type uint32; 564 units "seconds"; 565 default 120; 566 description 567 "UDP inactivity timeout [RFC4787]."; 568 } 570 leaf tcp-idle-timeout { 571 type uint32; 572 units "seconds"; 573 default 7440; 574 description 575 "TCP Idle timeout as per [RFC5382] should be no 576 more than 2 hours and 4 minutes."; 578 } 580 leaf tcp-trans-open-timeout { 581 type uint32; 582 units "seconds"; 583 default 240; 584 description 585 "The value of the transitory open connection 586 idle-timeout. 587 Section 2.1 of [RFC7857] clarifies that a NAT 588 should provide different configurable 589 parameters for configuring the open and 590 closing idle timeouts. 591 To accommodate deployments that consider 592 a partially open timeout of 4 minutes as being 593 excessive from a security standpoint, a NAT may 594 allow the configured timeout to be less than 595 4 minutes. 596 However, a minimum default transitory connection 597 idle-timeout of 4 minutes is recommended."; 598 } 600 leaf tcp-trans-close-timeout { 601 type uint32; 602 units "seconds"; 603 default 240; 604 description 605 "The value of the transitory close connection 606 idle-timeout. 607 Section 2.1 of [RFC7857] clarifies that a NAT 608 should provide different configurable 609 parameters for configuring the open and 610 closing idle timeouts."; 611 } 613 leaf tcp-in-syn-timeout { 614 type uint32; 615 units "seconds"; 616 default 6; 617 description 618 "6 seconds, as defined in [RFC5382]."; 619 } 621 leaf fragment-min-timeout { 622 type uint32; 623 units "seconds"; 624 default 2; 625 description 626 "As long as the AFTR has available resources, 627 the AFTR allows the fragments to arrive 628 over fragment-min-timeout interval. 629 The default value is inspired from RFC6146."; 630 } 632 leaf icmp-timeout { 633 type uint32; 634 units "seconds"; 635 default 60; 636 description 637 "60 seconds, as defined in [RFC5508]."; 638 } 640 leaf hold-down-timeout { 641 type uint32; 642 units "seconds"; 643 default 120; 644 description 645 "Hold down timer. Ports in the 646 hold down pool are not reassigned until 647 this timer expires. 648 The length of time and the maximum 649 number of ports in this state must be 650 configurable by the administrator 651 [RFC6888]. This is necessary in order 652 to prevent collisions between old 653 and new mappings and sessions. It ensures 654 that all established sessions are broken 655 instead of redirected to a different peer. 656 The default value is defined in REQ#8 657 from [RFC6888]."; 658 } 659 } 660 // AFTR Parameters 662 grouping aftr-parameters { 664 description 665 "A set of AFTR parameters"; 667 list dslite-aftr-ipv6-address { 669 key address-id; 671 description 672 "set one or multiple IP addresses for 673 the dslite-aftr"; 675 leaf address-id { 676 type uint32; 677 description 678 "The identifier of the address"; 679 } 681 leaf ipv6-address { 682 type inet:ipv6-address; 683 description 684 "IPv6 address of the dslite-aftr."; 685 } 686 } 687 leaf ipv4-address { 688 type inet:ipv4-address; 689 default "192.0.0.1"; 690 description 691 "IPv4 address of the DS-Lite AFTR. 692 192.0.0.1 is reserved for the AFTR element 693 [RFC6333]. 694 This address can be used to report ICMP 695 problems and will appear in traceroute 696 outputs."; 697 } 699 leaf tunnel-mtu { 700 type uint16; 701 description 702 "Configures a tunnel MTU. 703 [RFC6908] specifies that since 704 fragmentation and reassembly is not 705 optimal, the operator should do 706 everything possible to eliminate 707 the need for it. If the operator uses 708 simple IPv4-in-IPv6 softwire, it is 709 recommended that the MTU size of the IPv6 710 network between the B4 and the AFTR 711 accounts for the additional overhead 712 (40 bytes)."; 713 } 715 list external-ip-address-pool { 717 key address-id; 719 description 720 "Pool of external IP addresses used to service 721 internal hosts. 722 Both contiguous and non-contiguous pools 723 can be configured to an AFTR. 724 Refer to REQ-3 of [RFC6888]."; 726 leaf address-id { 727 type uint32; 728 description 729 "An identifier of the address."; 730 } 732 leaf external-ip-pool { 733 type inet:ipv4-prefix; 734 description 735 "An IPv4 prefix used by the AFTR 736 for NAT purposes."; 737 } 738 } 740 leaf subscriber-mask { 741 type uint8 { 742 range "0 .. 128"; 743 } 744 default "56"; 745 description 746 "The subscriber-mask is an integer that indicates 747 the length of significant bits to be applied on 748 the source IPv6 address (internal side) to 749 unambiguously identify a CPE. 751 Subscriber-mask is a system-wide configuration 752 parameter that is used to enforce generic 753 per-subscriber policies (e.g., port-quota). 755 The enforcement of these generic policies does not 756 require the configuration of every subscriber's prefix. 758 Example: suppose the 2001:db8:100:100::/56 prefix is 759 assigned to a DS-Lite enabled CPE. Suppose also that the 760 2001:db8:100:100::1 is the IPv6 address used by the 761 B4 that resides in that CPE. When the AFTR 762 receives a packet from this client, 763 it applies the subscriber-mask (e.g., 56) on 764 the source IPv6 address to compute the associated prefix 765 for this client (that is 2001:db8:100:100::/56). Then, 766 the AFTR enforces policies based on that prefix 767 (2001:db8:100:100::/56), not on the exact 768 source IPv6 address [RFC7785]."; 769 } 771 leaf nat-mapping-type { 772 type enumeration { 773 enum "eim" { 774 description 775 "Endpoint-Independent-Mapping. 776 Refer to Section 4 of [RFC4787]."; 777 } 779 enum "adm" { 780 description 781 "Address-Dependent-Mapping. 782 Refer to Section 4 of [RFC4787]."; 783 } 785 enum "edm" { 786 description 787 "address-and-port-Dependent-Mapping. 788 Refer to Section 4 of [RFC4787]."; 789 } 790 } 791 description 792 "Indicates the type of the NAT mapping."; 793 } 795 leaf nat-filtering-type { 796 type enumeration { 797 enum "eif" { 798 description 799 "Endpoint-Independent-Filtering. 800 Refer to Section 5 of [RFC4787]."; 801 } 803 enum "adf" { 804 description 805 "Address-Dependent-Filtering. 806 Refer to Section 5 of [RFC4787]."; 807 } 809 enum "edf" { 810 description 811 "address-and-port-Dependent-Filtering. 812 Refer to Section 5 of [RFC4787]."; 813 } 814 } 815 description 816 "Indicates the type of the NAT filtering."; 817 } 818 leaf port-quota { 819 type uint16; 820 mandatory true; 821 description 822 "Configures a port quota to be assigned per 823 subscriber. 824 According to [RFC6888], per-subscriber limits 825 must be configurable by the administrator."; 826 } 828 list exclude-ports { 829 key "id"; 830 description 831 "The set of ports not to be assigned 832 by the AFTR."; 834 leaf id { 835 type uint16; 836 description 837 "An identifier"; 838 } 840 uses port-number; 841 } 843 container port-set { 844 description 845 "Manages port-set assignments."; 847 leaf port-set-enable { 848 type boolean; 849 description 850 "Enable/Disable port set assignment."; 851 } 853 leaf port-set-size { 854 type uint16; 855 description 856 "Indicates the size of assigned port sets."; 857 } 859 leaf port-set-timeout { 860 type uint32; 861 description 862 "Inactivity timeout for port sets."; 863 } 864 } 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-randomization-enable { 940 type boolean; 941 description 942 "Enable/disable port randomization feature. 943 Section 9 of [RFC7857] specifies that a NAT 944 should follow the recommendations in 945 Section 4 of RFC6056."; 946 } 948 leaf port-preservation-enable { 949 type boolean; 950 description 951 "Indicates whether the AFTR should 952 preserve the internal port number."; 953 } 955 leaf port-parity-preservation-enable { 956 type boolean; 957 description 958 "Indicates whether the AFTR should 959 preserve the port parity of the 960 internal port number. 961 Section 8 of [RFC7857] indicates that 962 a NAT may disable port parity preservation 963 for all dynamic mappings. 964 It also specifies that a NAT should support 965 means to explicitly request to preserve 966 port parity (e.g., [RFC7753])."; 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 } 1011 leaf destination-port { 1012 type inet:port-number; 1013 description 1014 "Destination port of the collector."; 1015 } 1017 choice protocol { 1019 description 1020 "Enable the protocol to be used for 1021 the retrieval of logging entries."; 1023 case syslog { 1024 leaf syslog { 1025 type boolean; 1026 description 1027 "Used if SYSLOG is in use."; 1028 } 1029 } 1031 case ipfix { 1032 leaf ipfix { 1033 type boolean; 1034 description 1035 "Used if IPFIX is in use."; 1036 } 1037 } 1039 case ftp { 1040 leaf ftp { 1041 type boolean; 1042 description 1043 "Used if FTP is in use."; 1044 } 1045 } 1046 } 1047 } 1049 container notify-address-pool-usage { 1050 description 1051 "Notification of Pool usage when certain criteria 1052 is met."; 1054 leaf pool-id { 1055 type uint32; 1056 description 1057 "Pool-ID for which the notification criteria is 1058 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 } 1107 leaf h323-alg-enable { 1108 type boolean; 1109 description 1110 "Enable/Disable H323 ALG."; 1111 } 1113 leaf all-algs-enable { 1114 type boolean; 1115 description 1116 "Enable/Disable all the ALGs."; 1117 } 1118 } 1120 // Mapping Entry (Extended NAT44 mapping Entry) 1122 grouping mapping-entry { 1123 description 1124 "A DS-Lite AFTR mapping entry."; 1126 leaf index { 1127 type uint32; 1128 description 1129 "A unique identifier of a mapping entry."; 1130 } 1132 leaf status { 1133 type enumeration { 1135 enum "disabled" { 1136 description 1137 "The mapping entry is not in use (Disabled)."; 1138 } 1140 enum "assigned" { 1141 description 1142 "This mapping has been granted by the server."; 1143 } 1145 enum "stale" { 1146 description 1147 "This is a stale mapping (case of reboot)."; 1148 } 1149 } 1150 description 1151 "Indicates the status of a mapping entry."; 1153 } 1155 leaf type { 1156 type enumeration { 1158 enum "static" { 1159 description 1160 "The mapping entry is manually configured."; 1161 } 1163 enum "implicit" { 1164 description 1165 "This mapping is created by an outgoing packet."; 1166 } 1168 enum "explicit" { 1169 description 1170 "This is a dynamic explicit mapping created as a result 1171 of a PCP operation."; 1172 } 1173 } 1174 description 1175 "Indicates the type of a mapping entry. E.g., 1176 a mapping can be: static, dynamic implicit, or 1177 dynamic explicit."; 1178 } 1180 leaf b4-ip-address { 1181 type inet:ipv6-address; 1182 mandatory true; 1183 description 1184 "Corresponds to the IPv6 address 1185 used by the B4 element."; 1186 } 1188 leaf internal-ip-address { 1189 type inet:ipv4-prefix; 1190 mandatory true; 1191 description 1192 "Corresponds to the source IPv4 address 1193 of the IPv4 packet conveyed over the softwire."; 1194 } 1196 container internal-port { 1197 description 1198 "Corresponds to the source port of the 1199 IPv4 packet conveyed over the softwire."; 1200 uses port-number; 1202 } 1204 leaf external-ip-address { 1205 type inet:ipv4-address; 1206 mandatory true; 1207 description 1208 "External IPv4 address assigned by the AFTR."; 1209 } 1211 container external-port { 1212 description 1213 "External port number assigned by the AFTR."; 1214 uses port-number; 1215 } 1217 leaf transport-protocol { 1218 type uint8; 1219 mandatory true; 1220 description 1221 "Upper-layer protocol associated with this mapping. 1222 Values are taken from the IANA protocol registry. 1223 For example, this field contains 6 (TCP) for a TCP 1224 mapping or 17 (UDP) for a UDP mapping."; 1225 } 1227 leaf lifetime { 1228 type uint32; 1229 units "seconds"; 1230 mandatory true; 1231 description 1232 "Lifetime of the mapping."; 1233 } 1235 leaf v6-dscp { 1236 type uint8; 1237 description 1238 "DSCP value used at the softwire level 1239 (i.e., IPv6 header)."; 1240 } 1242 leaf internal-v4-dscp { 1243 type uint8; 1244 description 1245 "DSCP value of the encapsulated IPv4 packet."; 1246 } 1248 leaf external-v4-dscp { 1249 type uint8; 1250 description 1251 "DSCP value of the translated IPv4 packet 1252 as marked by the AFTR."; 1253 } 1255 leaf description { 1256 type string; 1257 description 1258 "A description string associated with the mapping."; 1259 } 1260 } 1262 /* 1263 * DS-Lite AFTR Configuration 1264 */ 1266 container dslite-config { 1268 description 1269 "AFTR and B4 configuration."; 1271 container dslite-aftr-config { 1272 if-feature aftr; 1274 description 1275 "dslite-aftr"; 1277 leaf enable { 1278 type boolean; 1279 description 1280 "Enable/Disable dslite-aftr function."; 1281 } 1283 container dslite-aftr-instances { 1284 description 1285 "dslite-aftr instances"; 1287 list dslite-aftr-instance { 1288 key "id"; 1289 description 1290 "A dslite-aftr instance."; 1292 leaf id { 1293 type uint32; 1294 description 1295 "dslite-aftr instance identifier."; 1296 } 1297 leaf name { 1298 type string; 1299 description 1300 "A name associated with the dslite-aftr instance."; 1301 } 1303 uses aftr-parameters; 1305 container mapping-table { 1306 description 1307 "dslite-aftr mapping table maintained by 1308 the dslite-aftr server."; 1310 list mapping-entry { 1311 key "index"; 1312 description 1313 "dslite-aftr mapping entry."; 1314 uses mapping-entry; 1315 } 1316 } 1317 } 1318 } 1319 } 1321 /* 1322 * DS-Lite B4 Configuration 1323 */ 1324 container dslite-b4-config { 1325 if-feature b4; 1326 description 1327 "dslite-b4"; 1329 leaf enable { 1330 type boolean; 1331 description 1332 "Enable/Disable dslite-b4 function."; 1333 } 1335 container dslite-b4-instances { 1336 description 1337 "dslite-b4 instances"; 1339 list dslite-b4-instance { 1340 key "id"; 1341 description 1342 "a dslite-b4 instance."; 1344 leaf id { 1345 type uint32; 1346 description 1347 "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 } 1390 leaf v6-v4-dscp-preservation { 1391 type boolean; 1392 mandatory true; 1393 description 1394 "Copies the DSCP value from the IPv6 header 1395 and vice versa. 1396 According to Section 2.10 of [RFC6908], 1397 operators should use this model 1398 by provisioning the network such that 1399 the AFTR copies the DSCP value in the IPv4 1400 header to the Traffic Class field in 1401 the IPv6 header, after the encapsulation 1402 for the downstream traffic."; 1403 } 1404 } 1405 } 1406 } 1407 } 1409 /* 1410 * DS-Lite State 1411 */ 1413 container dslite-state { 1415 description 1416 "dslite-aftr and b4 state."; 1418 /* 1419 * DS-Lite AFTR State 1420 */ 1422 container dslite-aftr-state { 1424 if-feature aftr; 1426 config false; 1428 description 1429 "dslite-aftr"; 1431 container dslite-aftr-instances { 1432 description 1433 "dslite-aftr instances"; 1435 list dslite-aftr-instance { 1436 key "id"; 1437 description 1438 "dslite-aftr instance"; 1440 leaf id { 1441 type int32; 1442 description 1443 "The identifier of the dslite-aftr instance."; 1444 } 1446 leaf name { 1447 type string; 1448 description 1449 "The name of the dslite-aftr instance."; 1450 } 1452 container aftr-capabilities { 1453 description 1454 "AFTR capabilities"; 1456 leaf eim-support { 1457 type boolean; 1458 description 1459 "Indicates whether EIM is enabled."; 1460 } 1462 leaf eif-support { 1463 type boolean; 1464 description 1465 "Indicates whether EIF is enabled."; 1466 } 1468 leaf edm-support { 1469 type boolean; 1470 description 1471 "Indicates whether EDM is enabled."; 1472 } 1474 leaf edf-support { 1475 type boolean; 1476 description 1477 "Indicates whether EDF is enabled."; 1478 } 1480 leaf adm-support { 1481 type boolean; 1482 description 1483 "Indicates whether ADM is enabled."; 1484 } 1485 leaf adf-support { 1486 type boolean; 1487 description 1488 "Indicates whether ADF is enabled."; 1489 } 1491 leaf pcp-support { 1492 type boolean; 1493 description 1494 "Indicates whether a PCP server is enabled."; 1495 } 1497 leaf subscriber-mask-support{ 1498 type boolean; 1499 description 1500 "Indicates whether the subscriber-mask feature 1501 is supported."; 1502 } 1504 leaf port-set-support { 1505 type boolean; 1506 description 1507 "Indicates whether port set assignment is 1508 supported."; 1509 } 1511 leaf self-state-migration-support { 1512 type boolean; 1513 description 1514 "Indicates whether mappings migration 1515 to the new IPv6 address used by the B4 is 1516 supported [RFC7785]."; 1517 } 1519 leaf mss-clamping-support { 1520 type boolean; 1521 description 1522 "Indicates whether the MSS clamping 1523 feature is supported."; 1524 } 1526 leaf port-randomization-support { 1527 type boolean; 1528 description 1529 "Indicates whether port randomization is 1530 supported."; 1531 } 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."; 1588 } 1590 leaf rtsp-alg-support { 1591 type boolean; 1592 description 1593 "Indicates whether RTSP ALG is supported."; 1594 } 1596 leaf h323-alg-support { 1597 type boolean; 1598 description 1599 "Indicates whether H323 ALG is supported."; 1600 } 1601 } 1603 container aftr-current-config { 1604 description 1605 "current config"; 1607 uses aftr-parameters; 1608 } 1610 container mapping-table { 1611 description 1612 "Mapping table"; 1613 list mapping-entry { 1614 key "index"; 1615 description 1616 "mapping entry"; 1617 uses mapping-entry; 1618 } 1619 } 1621 container statistics { 1622 description 1623 "traffic statistics"; 1625 container traffic-statistics { 1626 description 1627 "Generic traffic statistics."; 1629 leaf sent-packet { 1630 type yang:zero-based-counter64; 1631 description 1632 "Number of packets sent."; 1633 } 1635 leaf sent-byte { 1636 type yang:zero-based-counter64; 1637 description 1638 "Counter for sent traffic in bytes."; 1639 } 1641 leaf rcvd-packet { 1642 type yang:zero-based-counter64; 1643 description 1644 "Number of received packets."; 1645 } 1647 leaf rcvd-byte { 1648 type yang:zero-based-counter64; 1649 description 1650 "Counter for received traffic 1651 in bytes."; 1652 } 1654 leaf dropped-packet { 1655 type yang:zero-based-counter64; 1656 description 1657 "Number of dropped packets."; 1658 } 1660 leaf dropped-byte { 1661 type yang:zero-based-counter64; 1662 description 1663 "Counter for dropped traffic in 1664 bytes."; 1665 } 1666 } 1668 container mapping-table-stats { 1669 description 1670 "Mapping table statistics."; 1672 leaf current-mt-size { 1673 type yang:zero-based-counter64; 1674 description 1675 "Size of the mapping table."; 1676 } 1677 leaf max-mt-size { 1678 type uint32; 1679 description 1680 "Maximum configured size of the 1681 mapping table."; 1682 } 1684 leaf total-tcp-mappings { 1685 type uint32; 1686 description 1687 "Total number of TCP Mappings present 1688 at the time."; 1689 } 1690 leaf total-udp-mappings { 1691 type uint32; 1692 description 1693 "Total number of UDP Mappings present 1694 at the time."; 1695 } 1697 leaf total-icmp-mappings { 1698 type uint32; 1699 description 1700 "Total number of ICMP Mappings present 1701 at the time."; 1702 } 1703 } 1704 } 1706 leaf available-capacity-client { 1707 type percent; 1708 description 1709 "Ratio of available capacity in the 1710 customer-facing interfaces."; 1711 } 1713 leaf available-capacity-ext { 1714 type percent; 1715 description 1716 "Ratio of available capacity in the 1717 Internet-facing interfaces."; 1718 } 1720 leaf address-pool-in-use { 1721 type percent; 1722 description 1723 "Ratio of the shared address pool."; 1724 } 1725 leaf port-in-use { 1726 type percent; 1727 description 1728 "Ratio of the port usage."; 1729 } 1730 } 1731 } 1733 } 1735 /* 1736 * DS-Lite B4 State 1737 */ 1739 container dslite-b4-state { 1741 if-feature b4; 1743 config false; 1745 description 1746 "dslite-b4"; 1748 container dslite-b4-instances { 1749 description 1750 "dslite-b4 instances"; 1752 list dslite-b4-instance { 1753 key "id"; 1755 description 1756 "dslite-b4 instance"; 1758 leaf id { 1759 type int32; 1760 description 1761 "The identifier of the dslite-b4 instance."; 1762 } 1764 leaf name { 1765 type string; 1766 description 1767 "The name of the dslite-b4 instance."; 1768 } 1770 // B4 Capabilities 1772 container b4-capabilities { 1773 description 1774 "B4 capabilities"; 1776 leaf ipv4-address-modify { 1777 type boolean; 1778 description 1779 "Indicates whether it is possible 1780 to configure an IPv4 address 1781 for the B4 element."; 1782 } 1784 leaf tunnel-mtu-support { 1785 type boolean; 1786 description 1787 "Indicates whether it is possible to 1788 configure a tunnel MTU. 1789 "; 1790 } 1792 leaf v6-v4-dscp-preservation-support { 1793 type boolean; 1794 mandatory true; 1795 description 1796 "Indicates whether it supports 1797 DSCP preservation. 1798 "; 1799 } 1800 } 1802 // B4 State 1804 container b4-state { 1805 description 1806 "B4 capabilities"; 1808 leaf status { 1809 type boolean; 1810 description 1811 "Indicates whether the instance is 1812 enabled or disabled. 1813 "; 1814 } 1816 leaf aftr-ipv6-addr { 1817 type inet:ipv6-address; 1818 mandatory true; 1819 description 1820 "The AFTR's IPv6 address."; 1822 } 1824 leaf ipv4-address-configured { 1825 type inet:ipv4-address; 1826 default "192.0.0.2"; 1827 description 1828 "The B4's IPv4 address."; 1829 } 1831 leaf v6-v4-dscp-preservation-enabled { 1832 type boolean; 1833 description 1834 "Indicates whether this feature is 1835 enabled/disabled. 1836 "; 1837 } 1838 } 1839 } 1840 } 1841 } 1842 } 1844 /* 1845 * Notifications 1846 */ 1848 notification dslite-aftr-event { 1850 description 1851 "Notifications must be generated when the defined 1852 high/low threshold is reached. Related configuration 1853 parameters must be provided to trigger 1854 the notifications."; 1856 leaf id { 1857 type leafref { 1858 path 1859 "/dslite-state/dslite-aftr-state/dslite-aftr-instances/" 1860 + "dslite-aftr-instance/id"; 1861 } 1862 description 1863 "AFTR instance ID."; 1864 } 1866 leaf notify-pool-threshold { 1867 type percent; 1868 mandatory true; 1869 description 1870 "A threshold has been fired."; 1871 } 1872 } 1873 } 1874 1876 4. Security Considerations 1878 The YANG module defined in this memo is designed to be accessed via 1879 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1880 secure transport layer and the support of SSH is mandatory to 1881 implement secure transport [RFC6242]. The NETCONF access control 1882 model [RFC6536] provides means to restrict access for particular 1883 NETCONF users to a pre-configured subset of all available NETCONF 1884 protocol operations and contents. 1886 All data nodes defined in the YANG module which can be created, 1887 modified and deleted (i.e., config true, which is the default). 1888 These data nodes are considered sensitive. Write operations (e.g., 1889 edit-config) applied to these data nodes without proper protection 1890 can negatively affect network operations. 1892 5. IANA Considerations 1894 This document requests IANA to register the following URI in the 1895 "IETF XML Registry" [RFC3688]: 1897 URI: urn:ietf:params:xml:ns:yang:ietf-dslite 1898 Registrant Contact: The IESG. 1899 XML: N/A; the requested URI is an XML namespace. 1901 This document requests IANA to register the following YANG module in 1902 the "YANG Module Names" registry [RFC6020]. 1904 name: ietf-dslite 1905 namespace: urn:ietf:params:xml:ns:yang:ietf-dslite 1906 prefix: dslite 1907 reference: RFC XXXX 1909 6. Acknowledgements 1911 Thanks to Q. Wu for identifying a compiling error. 1913 Many thanks to Ian Farrer for the review and comments. 1915 7. References 1917 7.1. Normative references 1919 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1920 DOI 10.17487/RFC3688, January 2004, 1921 . 1923 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1924 the Network Configuration Protocol (NETCONF)", RFC 6020, 1925 DOI 10.17487/RFC6020, October 2010, 1926 . 1928 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1929 and A. Bierman, Ed., "Network Configuration Protocol 1930 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1931 . 1933 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1934 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1935 . 1937 [RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual- 1938 Stack Lite Broadband Deployments Following IPv4 1939 Exhaustion", RFC 6333, DOI 10.17487/RFC6333, August 2011, 1940 . 1942 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1943 Protocol (NETCONF) Access Control Model", RFC 6536, 1944 DOI 10.17487/RFC6536, March 2012, 1945 . 1947 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1948 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1949 . 1951 7.2. Informative references 1953 [I-D.boucadair-pcp-yang] 1954 Boucadair, M., Jacquenet, C., Sivakumar, S., and S. 1955 Vinapamula, "YANG Data Models for the Port Control 1956 Protocol (PCP)", draft-boucadair-pcp-yang-03 (work in 1957 progress), November 2016. 1959 [RFC4787] Audet, F., Ed. and C. Jennings, "Network Address 1960 Translation (NAT) Behavioral Requirements for Unicast 1961 UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January 1962 2007, . 1964 [RFC5382] Guha, S., Ed., Biswas, K., Ford, B., Sivakumar, S., and P. 1965 Srisuresh, "NAT Behavioral Requirements for TCP", BCP 142, 1966 RFC 5382, DOI 10.17487/RFC5382, October 2008, 1967 . 1969 [RFC5508] Srisuresh, P., Ford, B., Sivakumar, S., and S. Guha, "NAT 1970 Behavioral Requirements for ICMP", BCP 148, RFC 5508, 1971 DOI 10.17487/RFC5508, April 2009, 1972 . 1974 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 1975 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 1976 January 2011, . 1978 [RFC6888] Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa, 1979 A., and H. Ashida, "Common Requirements for Carrier-Grade 1980 NATs (CGNs)", BCP 127, RFC 6888, DOI 10.17487/RFC6888, 1981 April 2013, . 1983 [RFC6908] Lee, Y., Maglione, R., Williams, C., Jacquenet, C., and M. 1984 Boucadair, "Deployment Considerations for Dual-Stack 1985 Lite", RFC 6908, DOI 10.17487/RFC6908, March 2013, 1986 . 1988 [RFC7753] Sun, Q., Boucadair, M., Sivakumar, S., Zhou, C., Tsou, T., 1989 and S. Perreault, "Port Control Protocol (PCP) Extension 1990 for Port-Set Allocation", RFC 7753, DOI 10.17487/RFC7753, 1991 February 2016, . 1993 [RFC7785] Vinapamula, S. and M. Boucadair, "Recommendations for 1994 Prefix Binding in the Context of Softwire Dual-Stack 1995 Lite", RFC 7785, DOI 10.17487/RFC7785, February 2016, 1996 . 1998 [RFC7857] Penno, R., Perreault, S., Boucadair, M., Ed., Sivakumar, 1999 S., and K. Naito, "Updates to Network Address Translation 2000 (NAT) Behavioral Requirements", BCP 127, RFC 7857, 2001 DOI 10.17487/RFC7857, April 2016, 2002 . 2004 Authors' Addresses 2006 Mohamed Boucadair 2007 Orange 2008 Rennes 35000 2009 France 2011 EMail: mohamed.boucadair@orange.com 2012 Christian Jacquenet 2013 Orange 2014 Rennes 35000 2015 France 2017 EMail: christian.jacquenet@orange.com 2019 Senthil Sivakumar 2020 Cisco Systems 2021 7100-8 Kit Creek Road 2022 Research Triangle Park, North Carolina 27709 2023 USA 2025 Phone: +1 919 392 5158 2026 EMail: ssenthil@cisco.com