idnits 2.17.1 draft-ietf-softwire-yang-12.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 288 has weird spacing: '...-prefix ine...' == Line 289 has weird spacing: '...-prefix ine...' == Line 336 has weird spacing: '...-change ine...' == Line 508 has weird spacing: '...-prefix ine...' == Line 509 has weird spacing: '...-prefix ine...' == (2 more instances...) -- The document date (November 5, 2018) is 1997 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) == Missing Reference: 'RFCXXXX' is mentioned on line 2162, but not defined Summary: 0 errors (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Softwire Working Group Y. Cui 3 Internet-Draft Tsinghua University 4 Intended status: Standards Track I. Farrer, Ed. 5 Expires: May 9, 2019 Deutsche Telekom AG 6 M. Boucadair, Ed. 7 Orange 8 Q. Sun 9 L. Sun 10 Tsinghua University 11 S. Zechlin 12 Deutsche Telekom AG 13 R. Asati 14 Cisco Systems, Inc. 15 November 5, 2018 17 YANG Modules for IPv4-in-IPv6 Address plus Port (A+P) Softwires 18 draft-ietf-softwire-yang-12 20 Abstract 22 This document defines YANG modules for the configuration and 23 operation of IPv4-in-IPv6 softwire Border Relays and Customer 24 Premises Equipment for the Lightweight 4over6, Mapping of Address and 25 Port with Encapsulation (MAP-E), and Mapping of Address and Port 26 using Translation (MAP-T) softwire mechanisms. It also contains the 27 initial version of an IANA-maintained YANG module identifying tunnel 28 types. 30 Editorial Note (To be removed by RFC Editor) 32 Please update these statements within this document with the RFC 33 number to be assigned to this document: 35 o "This version of this YANG module is part of RFC XXXX;" 37 o "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 38 Softwires"; 40 o "reference: RFC XXXX" 42 Please update the "revision" date of the YANG modules. 44 Status of This Memo 46 This Internet-Draft is submitted in full conformance with the 47 provisions of BCP 78 and BCP 79. 49 Internet-Drafts are working documents of the Internet Engineering 50 Task Force (IETF). Note that other groups may also distribute 51 working documents as Internet-Drafts. The list of current Internet- 52 Drafts is at https://datatracker.ietf.org/drafts/current/. 54 Internet-Drafts are draft documents valid for a maximum of six months 55 and may be updated, replaced, or obsoleted by other documents at any 56 time. It is inappropriate to use Internet-Drafts as reference 57 material or to cite them other than as "work in progress." 59 This Internet-Draft will expire on May 9, 2019. 61 Copyright Notice 63 Copyright (c) 2018 IETF Trust and the persons identified as the 64 document authors. All rights reserved. 66 This document is subject to BCP 78 and the IETF Trust's Legal 67 Provisions Relating to IETF Documents 68 (https://trustee.ietf.org/license-info) in effect on the date of 69 publication of this document. Please review these documents 70 carefully, as they describe your rights and restrictions with respect 71 to this document. Code Components extracted from this document must 72 include Simplified BSD License text as described in Section 4.e of 73 the Trust Legal Provisions and are provided without warranty as 74 described in the Simplified BSD License. 76 Table of Contents 78 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 79 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 80 3. Overview of the Modules . . . . . . . . . . . . . . . . . . . 4 81 3.1. Overall Structure . . . . . . . . . . . . . . . . . . . . 4 82 3.2. Additional Components Configuration . . . . . . . . . . . 5 83 4. Softwire CE YANG Tree Diagram . . . . . . . . . . . . . . . . 6 84 4.1. CE Tree Diagram . . . . . . . . . . . . . . . . . . . . . 6 85 4.2. Softwire CE Tree Diagram Description . . . . . . . . . . 8 86 5. Softwire BR YANG Tree Diagram . . . . . . . . . . . . . . . . 9 87 5.1. BR Tree Diagram . . . . . . . . . . . . . . . . . . . . . 9 88 5.2. Softwire BR Tree Diagram Description . . . . . . . . . . 13 89 6. IANA Tunnel Type YANG Module . . . . . . . . . . . . . . . . 13 90 7. Softwire CE YANG Module . . . . . . . . . . . . . . . . . . . 17 91 8. BR Softwire YANG Module . . . . . . . . . . . . . . . . . . . 23 92 9. Common Softwire Element Groups YANG Module . . . . . . . . . 35 93 10. Security Considerations . . . . . . . . . . . . . . . . . . . 44 94 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 95 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 46 96 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 46 97 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 46 98 14.1. Normative References . . . . . . . . . . . . . . . . . . 46 99 14.2. Informative References . . . . . . . . . . . . . . . . . 48 100 Appendix A. Configuration Examples . . . . . . . . . . . . . . . 49 101 A.1. Configuration Example for a lw4o6 BR Binding-Table . . . 49 102 A.2. Configuration Example for a MAP-E BR . . . . . . . . . . 50 103 A.3. lw4o6 CE Configuration Example . . . . . . . . . . . . . 51 104 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 55 106 1. Introduction 108 The IETF softwire working group has developed several IPv4-in-IPv6 109 softwire mechanisms to address various deployment contexts and 110 constraints. As a companion to the architectural specification 111 documents, this document focuses on the provisioning of address plus 112 port (A+P) softwire functional elements: Border Routers (BRs) and 113 Customer Premises Equipment (CEs, a.k.a., CPE). The softwire 114 mechanisms covered in this document are Lightweight 4 over 6 (lw4o6) 115 [RFC7596], Mapping of Address and Port with Encapsulation (MAP-E) 116 [RFC7597], and Mapping of Address and Port using Translation (MAP-T) 117 [RFC7599]. 119 This document focuses on A+P mechanisms; the reader can refer to 120 [I-D.ietf-softwire-dslite-yang] for a YANG module for DS-Lite 121 [RFC6333]. 123 This document defines YANG modules [RFC7950] that can be used to 124 configure and manage A+P softwire elements using the NETCONF protocol 125 [RFC6241] for: 127 o Configuration 129 o Operational State 131 o Notifications 133 2. Terminology 135 The reader should be familiar with the concepts and terms defined in 136 [RFC7596], [RFC7597], [RFC7599], and the YANG data modelling language 137 defined in [RFC7950]. 139 The adopts the Network Management Datastore Architecture (NMDA) 140 [RFC8342]. The meaning of the symbols in tree diagrams is defined in 141 [RFC8340]. 143 The document uses the abbrieviation 'BR' as a general term for 144 softwire tunnel concentrators, including both MAP Border Routers 146 [RFC7597] and Lightweight 4over6 lWAFTRs [RFC7596]. 148 For brevity, "algorithm" is used to refer to the "mapping algorithm" 149 defined in [RFC7597]. 151 A network element may support one or multiple instances of a softwire 152 mechanism; each of these instances (i.e., binding instances, MAP-E 153 instances, or MAP-T instances) may have its own configuration and 154 parameters. The term 'algo-instance' is used to denote both MAP-E 155 and MAP-T instances. 157 3. Overview of the Modules 159 3.1. Overall Structure 161 This document specifies the initial version of an IANA-maintained 162 module (iana-tunnel-type) to identify a collection of tunnel types 163 assigned by IANA (Section 6) [RFC4087][RFC7870][RFC7856]. 165 Moreover, the document defines the following two YANG modules for the 166 configuration and monitoring of softwire functional elements: 168 ietf-softwire-ce Provides configuration and monitoring for 169 softwire CE element. This module is defined as 170 augments to the interface YANG module 171 [RFC8343]. 173 ietf-softwire-br Provides configuration and monitoring for 174 softwire BR element. 176 In addition, the following module is defined: 178 ietf-softwire-common Contains groups of common functions that are 179 imported into the CE and BR modules. 181 This approach has been taken so that the various modules can be 182 easily extended to support additional softwire mechanisms, if 183 required. 185 Within the BR and CE modules, the YANG "feature" statement is used to 186 distinguish which of the different softwire mechanism(s) is relevant 187 for a specific element's configuration. For each module, a choice 188 statement 'ce-type' is included for either 'binding' or 'algorithm'. 189 'Binding' is used for configuring Lightweight 4over6, whereas 190 'algorithm' is used for configuring MAP-T or MAP-E. 192 In the 'algo-instances' container, a choice statement 'data-plane' is 193 included to specify MAP-E (encapsulation) or MAP-T (translation). 195 Table 1 shows how these choices are used to indicate the desired 196 softwire mechanism: 198 +--------------------+-----------+---------------+ 199 | S46 Mechanism | ce-type? | data-plane? | 200 +--------------------+-----------+---------------+ 201 | Lightweight 4over6 | binding | n/a | 202 | MAP-E | algorithm | encapsulation | 203 | MAP-T | algorithm | translation | 204 +--------------------+-----------+---------------+ 206 Table 1: Softwire Mechanism Choice Statement Enumeration 208 NETCONF notifications are also included. 210 Note: Earlier versions of this specification combined the softwire 211 mechanisms by their associated technologies rather than their 212 function in the architecture. As the document was revised, it 213 became apparent that dividing the modules by their role in the 214 architecture (CE or BR) was a better approach as this follows the 215 intended function and existing implementation approaches more 216 closely. 218 3.2. Additional Components Configuration 220 The softwire modules only aim to provide configuration relevant for 221 softwires. In order to fully provision a CE element, the following 222 may also be necessary: 224 o IPv6 forwarding and routing configuration, enabling the CE to 225 obtain one or more IPv6 prefixes for softwire usage. A YANG 226 module for routing management is described in [RFC8349]. 228 o IPv4 routing configuration, to add one or more IPv4 destination 229 prefix(es) reachable via the configured softwire. A YANG module 230 for routing management is described in [RFC8349]. 232 o Stateful NAT44/NAPT management, to optionally specify a port set 233 (Port Set Identifier (PSID)) along with its length. A YANG module 234 for NAT management is described in [I-D.ietf-opsawg-nat-yang]. 236 o Stateless NAT46 management, required by softwire translation based 237 mechanisms (i.e., the assignment of a Network-Specific Prefix to 238 use for IPv4/IPv6 translation). A YANG module for NAT management 239 is described in [I-D.ietf-opsawg-nat-yang]. 241 As YANG modules for the above functions are already defined in other 242 documents, their functionality is not duplicated here and they should 243 be referred to, as needed. Appendix A.3 provides XML examples of how 244 these modules can be used together. 246 The CE must already have minimal IPv6 configuration in place so it is 247 reachable by the NETCONF client to obtain softwire configuration. If 248 additional IPv6 specific configuration is necessary, the YANG modules 249 defined in [RFC8344] and [RFC8349] may be used. 251 4. Softwire CE YANG Tree Diagram 253 4.1. CE Tree Diagram 255 The CE module provides configuration and monitoring for all of the 256 softwire mechanisms covered in this document (i.e., Lightweight 257 4over6, MAP-E, and MAP-T). 259 This module augments "ietf-interfaces", defined in [RFC8343] with an 260 entry for the softwire. This entry can be referenced to configure 261 IPv4 forwarding features for the element. This entry is added only 262 if tunnel type (Section 11) is set to 'aplusp'. 264 Figure 1 shows the tree structure of the softwire CE YANG module: 266 module: ietf-softwire-ce 267 augment /if:interfaces/if:interface: 268 +--rw softwire-payload-mtu? uint16 269 +--rw softwire-path-mru? uint16 270 +--rw (ce-type)? 271 +--:(binding) {binding-mode}? 272 | +--rw binding-ipv6info? union 273 | +--rw br-ipv6-addr inet:ipv6-address 274 +--:(algo) {map-e or map-t}? 275 +--rw algo-instances 276 +--rw algo-instance* [name] 277 +--rw name string 278 +--rw enable? boolean 279 +--rw algo-versioning 280 | +--rw version? uint64 281 | +--rw date? yang:date-and-time 282 +--rw (data-plane)? 283 | +--:(encapsulation) {map-e}? 284 | | +--rw br-ipv6-addr inet:ipv6-address 285 | +--:(translation) {map-t}? 286 | +--rw dmr-ipv6-prefix? inet:ipv6-prefix 287 +--rw ea-len uint8 288 +--rw rule-ipv6-prefix inet:ipv6-prefix 289 +--rw rule-ipv4-prefix inet:ipv4-prefix 290 +--rw forwarding boolean 292 augment /if:interfaces/if:interface/if:statistics: 293 +--ro sent-ipv4-packets? 294 | yang:zero-based-counter64 295 +--ro sent-ipv4-bytes? 296 | yang:zero-based-counter64 297 +--ro sent-ipv6-packets? 298 | yang:zero-based-counter64 299 +--ro sent-ipv6-bytes? 300 | yang:zero-based-counter64 301 +--ro rcvd-ipv4-packets? 302 | yang:zero-based-counter64 303 +--ro rcvd-ipv4-bytes? 304 | yang:zero-based-counter64 305 +--ro rcvd-ipv6-packets? 306 | yang:zero-based-counter64 307 +--ro rcvd-ipv6-bytes? 308 | yang:zero-based-counter64 309 +--ro dropped-ipv4-packets? 310 | yang:zero-based-counter64 311 +--ro dropped-ipv4-bytes? 312 | yang:zero-based-counter64 313 +--ro dropped-ipv6-packets? 314 | yang:zero-based-counter64 315 +--ro dropped-ipv6-bytes? 316 | yang:zero-based-counter64 317 +--ro dropped-ipv4-fragments? 318 | yang:zero-based-counter64 319 +--ro dropped-ipv4-fragment-bytes? 320 | yang:zero-based-counter64 321 +--ro ipv6-fragments-reassembled? 322 | yang:zero-based-counter64 323 +--ro ipv6-fragments-bytes-reassembled? 324 | yang:zero-based-counter64 325 +--ro out-icmpv4-error-packets? 326 | yang:zero-based-counter64 327 +--ro out-icmpv4-error-bytes? 328 | yang:zero-based-counter64 329 +--ro out-icmpv6-error-packets? 330 | yang:zero-based-counter64 331 +--ro out-icmpv6-error-bytes? 332 yang:zero-based-counter64 334 notifications: 335 +---n softwire-ce-event {binding-mode}? 336 +--ro ce-binding-ipv6-addr-change inet:ipv6-address 338 Figure 1: Softwire CE YANG Tree Diagram 340 4.2. Softwire CE Tree Diagram Description 342 Additional information related to the operation of a CE element is 343 provided below: 345 o softwire-payload-mtu: optionally used to set the IPv4 MTU for the 346 softwire. Needed if the softwire implementation is unable to 347 correctly calculate the correct IPv4 Maximum Transit Unit (MTU) 348 size automatically. 350 o softwire-path-mru: optionally used to set the maximum IPv6 351 softwire packet size that can be received, including the 352 encapsulation/translation overhead. Needed if the softwire 353 implementation is unable to correctly calculate the correct IPv4 354 Maximum Receive Unit (MRU) size automatically [RFC4213]. 356 o ce-type: provides a choice statement allowing the binding or 357 algorithmic softwire mechanisms to be selected. 359 Further details relevant to binding softwire elements are: 361 o binding-ipv6info: used to set the IPv6 binding prefix type to 362 identify which IPv6 address to use as the tunnel source. It can 363 be 'ipv6-prefix' or 'ipv6-address'. 365 o br-ipv6-addr: sets the IPv6 address of the remote BR. 367 Additional details relevant to some of the important algorithmic 368 elements are provided below: 370 o algo-versioning: optionally used to associate a version number 371 and/or timestamp to the algorithm. This can be used for logging/ 372 data retention purposes [RFC7422]. The version number is selected 373 to uniquely identify the algorithm configuration and a new value 374 written whenever a change is made to the algorithm or a new algo- 375 instance is created. 377 o forwarding: specifies whether the rule can be used as a Forward 378 Mapping Rule (FMR). If not set, this rule is a Basic Mapping Rule 379 (BMR) only and must not be used for forwarding. Refer to 380 Section 4.1 of [RFC7598]. 382 o ea-len: used to set the length of the Embedded-Address (EA), which 383 is defined in the mapping rule for a MAP domain. 385 o data-plane: provides a choice statement for either encapsulation 386 (MAP-E) or translation (MAP-T). 388 o br-ipv6-addr: defines the IPv6 address of the BR. This 389 information is valid for MAP-E. 391 o dmr-ipv6-prefix: defines the Default Mapping Rule (DMR) IPv6 392 prefix of the BR. This information is valid for MAP-T. 394 Additional information on the notification node is listed below: 396 o ce-binding-ipv6-addr-change: if the CE's binding IPv6 address 397 changes for any reason, the NETCONF client will be notified. 399 5. Softwire BR YANG Tree Diagram 401 5.1. BR Tree Diagram 403 The BR YANG module provides configuration and monitoring for all of 404 the softwire mechanisms covered in this document (i.e., Lightweight 405 4over6, MAP-E, and MAP-T). 407 Figure 2 provides the tree structure of this module: 409 module: ietf-softwire-br 410 +--rw br-instances 411 +--rw (br-type)? 412 +--:(binding) {binding-mode}? 413 | +--rw binding 414 | +--rw bind-instance* [name] 415 | +--rw name string 416 | +--rw binding-table-versioning 417 | | +--rw version? uint64 418 | | +--rw date? yang:date-and-time 419 | +--rw softwire-num-max uint32 420 | +--rw softwire-payload-mtu uint16 421 | +--rw softwire-path-mru uint16 422 | +--rw enable-hairpinning? boolean 423 | +--rw binding-table 424 | | +--rw binding-entry* [binding-ipv6info] 425 | | +--rw binding-ipv6info union 426 | | +--rw binding-ipv4-addr? 427 | | | inet:ipv4-address 428 | | +--rw port-set 429 | | | +--rw psid-offset? uint8 430 | | | +--rw psid-len uint8 431 | | | +--rw psid uint16 432 | | +--rw br-ipv6-addr? 433 | | inet:ipv6-address 434 | +--rw icmp-policy 435 | | +--rw icmpv4-errors 436 | | | +--rw allow-incoming-icmpv4? boolean 437 | | | +--rw icmpv4-rate? uint32 438 | | | +--rw generate-icmpv4-errors? boolean 439 | | +--rw icmpv6-errors 440 | | +--rw generate-icmpv6-errors? boolean 441 | | +--rw icmpv6-rate? uint32 442 | +--ro traffic-stat 443 | +--ro discontinuity-time yang:date-and-time 444 | +--ro sent-ipv4-packets? 445 | | yang:zero-based-counter64 446 | +--ro sent-ipv4-bytes? 447 | | yang:zero-based-counter64 448 | +--ro sent-ipv6-packets? 449 | | yang:zero-based-counter64 450 | +--ro sent-ipv6-bytes? 451 | | yang:zero-based-counter64 452 | +--ro rcvd-ipv4-packets? 453 | | yang:zero-based-counter64 454 | +--ro rcvd-ipv4-bytes? 455 | | yang:zero-based-counter64 456 | +--ro rcvd-ipv6-packets? 457 | | yang:zero-based-counter64 458 | +--ro rcvd-ipv6-bytes? 459 | | yang:zero-based-counter64 460 | +--ro dropped-ipv4-packets? 461 | | yang:zero-based-counter64 462 | +--ro dropped-ipv4-bytes? 463 | | yang:zero-based-counter64 464 | +--ro dropped-ipv6-packets? 465 | | yang:zero-based-counter64 466 | +--ro dropped-ipv6-bytes? 467 | | yang:zero-based-counter64 468 | +--ro dropped-ipv4-fragments? 469 | | yang:zero-based-counter64 470 | +--ro dropped-ipv4-fragment-bytes? 471 | | yang:zero-based-counter64 472 | +--ro ipv6-fragments-reassembled? 473 | | yang:zero-based-counter64 474 | +--ro ipv6-fragments-bytes-reassembled? 475 | | yang:zero-based-counter64 476 | +--ro out-icmpv4-error-packets? 477 | | yang:zero-based-counter64 478 | +--ro out-icmpv4-error-bytes? 479 | | yang:zero-based-counter64 480 | +--ro out-icmpv6-error-packets? 481 | | yang:zero-based-counter64 482 | +--ro out-icmpv6-error-bytes? 483 | | yang:zero-based-counter64 484 | +--ro dropped-icmpv4-packets? 485 | | yang:zero-based-counter64 486 | +--ro dropped-icmpv4-bytes? 487 | | yang:zero-based-counter64 488 | +--ro hairpin-ipv4-packets? 489 | | yang:zero-based-counter64 490 | +--ro hairpin-ipv4-bytes? 491 | | yang:zero-based-counter64 492 | +--ro active-softwire-num? 493 | uint32 494 +--:(algo) {map-e or map-t}? 495 +--rw algorithm 496 +--rw algo-instance* [name] 497 +--rw name string 498 +--rw enable? boolean 499 +--rw algo-versioning 500 | +--rw version? uint64 501 | +--rw date? yang:date-and-time 502 +--rw (data-plane)? 503 | +--:(encapsulation) {map-e}? 504 | | +--rw br-ipv6-addr inet:ipv6-address 505 | +--:(translation) {map-t}? 506 | +--rw dmr-ipv6-prefix? inet:ipv6-prefix 507 +--rw ea-len uint8 508 +--rw rule-ipv6-prefix inet:ipv6-prefix 509 +--rw rule-ipv4-prefix inet:ipv4-prefix 510 +--rw forwarding boolean 511 +--rw port-set 512 | +--rw psid-offset? uint8 513 | +--rw psid-len uint8 514 | +--rw psid uint16 515 +--ro traffic-stat 516 +--ro discontinuity-time yang:date-and-time 517 +--ro sent-ipv4-packets? 518 | yang:zero-based-counter64 519 +--ro sent-ipv4-bytes? 520 | yang:zero-based-counter64 521 +--ro sent-ipv6-packets? 522 | yang:zero-based-counter64 523 +--ro sent-ipv6-bytes? 524 | yang:zero-based-counter64 525 +--ro rcvd-ipv4-packets? 526 | yang:zero-based-counter64 527 +--ro rcvd-ipv4-bytes? 528 | yang:zero-based-counter64 529 +--ro rcvd-ipv6-packets? 530 | yang:zero-based-counter64 531 +--ro rcvd-ipv6-bytes? 532 | yang:zero-based-counter64 533 +--ro dropped-ipv4-packets? 534 | yang:zero-based-counter64 535 +--ro dropped-ipv4-bytes? 536 | yang:zero-based-counter64 537 +--ro dropped-ipv6-packets? 538 | yang:zero-based-counter64 539 +--ro dropped-ipv6-bytes? 540 | yang:zero-based-counter64 541 +--ro dropped-ipv4-fragments? 542 | yang:zero-based-counter64 543 +--ro dropped-ipv4-fragment-bytes? 544 | yang:zero-based-counter64 545 +--ro ipv6-fragments-reassembled? 546 | yang:zero-based-counter64 547 +--ro ipv6-fragments-bytes-reassembled? 548 | yang:zero-based-counter64 549 +--ro out-icmpv4-error-packets? 550 | yang:zero-based-counter64 551 +--ro out-icmpv4-error-bytes? 552 | yang:zero-based-counter64 553 +--ro out-icmpv6-error-packets? 554 | yang:zero-based-counter64 555 +--ro out-icmpv6-error-bytes? 556 yang:zero-based-counter64 558 notifications: 559 +---n softwire-binding-instance-event {binding-mode}? 560 | +--ro bind-name? 561 | | -> /br-instances/binding/bind-instance/name 562 | +--ro invalid-entry* leafref 563 | +--ro added-entry* inet:ipv6-address 564 | +--ro modified-entry* leafref 565 +---n softwire-algorithm-instance-event {map-e, map-t}? 566 +--ro algo-name 567 | -> /br-instances/algorithm/algo-instance/name 568 +--ro invalid-entry-id* 569 | -> /br-instances/algorithm/algo-instance/name 570 +--ro added-entry* 571 | -> /br-instances/algorithm/algo-instance/name 572 +--ro modified-entry* 573 -> /br-instances/algorithm/algo-instance/name 575 Figure 2: Softwire BR YANG Tree 577 5.2. Softwire BR Tree Diagram Description 579 The descriptions for leaves which are common with the CE module are 580 provided in Section 4.2. Descriptions for additional elements are 581 provided below: 583 o binding-table-versioning: optionally used to associate a version 584 number and/or timestamp to the binding table. This can be used 585 for logging or data retention purposes [RFC7422]. The version 586 number is selected to uniquely identify the binding table 587 configuration and a new timestamp value written whenever a change 588 is made to the contents of the binding table or a new binding 589 table list is created. 591 o binding-entry: used to define the binding relationship between 592 3-tuples {lwB4's IPv6 address/prefix, the allocated IPv4 address, 593 restricted port-set}. For detail information, please refer to 594 [RFC7596]. 596 o softwire-num-max: used to set the maximum number of softwire 597 binding rules that can be created on the lw4o6 element 598 simultaneously. This paramter must not be set to zero because 599 this is equivalent to disabling the BR instance. 601 o active-softwire-num: holds the number of softwires currently 602 provisioned on the BR element. 604 Additional information on some of the important notification nodes is 605 listed below: 607 o invalid-entry, added-entry, modified-entry: used to notify the 608 NETCONF client that a specific binding entry or MAP rule has 609 expired, been invalidated, added, or modified. 611 6. IANA Tunnel Type YANG Module 613 The iana-tunnel-type module imports the module defined in [RFC7224]. 615 file "iana-tunnel-type@2018-10-23.yang" 617 module iana-tunnel-type { 618 yang-version 1.1; 619 namespace "urn:ietf:params:xml:ns:yang:iana-tunnel-type"; 620 prefix iana-tunnel-type; 622 import iana-if-type { 623 prefix ift; 624 reference 625 "RFC 7224: IANA Interface Type YANG Module"; 626 } 628 organization 629 "IANA"; 630 contact 631 "Internet Assigned Numbers Authority 633 Postal: ICANN 634 12025 Waterfront Drive, Suite 300 635 Los Angeles, CA 90094-2536 636 United States of America 637 Tel: +1 310 301 5800 638 "; 640 description 641 "This module contains a collection of YANG identities defined 642 by IANA and used as interface types for tunnel interfaces. 644 Copyright (c) 2018 IETF Trust and the persons identified as 645 authors of the code. All rights reserved. 647 Redistribution and use in source and binary forms, with or 648 without modification, is permitted pursuant to, and subject 649 to the license terms contained in, the Simplified BSD License 650 set forth in Section 4.c of the IETF Trust's Legal Provisions 651 Relating to IETF Documents 652 (http://trustee.ietf.org/license-info). 654 This version of this YANG module is part of RFC XXXX; see 655 the RFC itself for full legal notices."; 657 revision 2018-10-23 { 658 description 659 "Initial revision."; 660 reference 661 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 662 Softwires"; 663 } 665 identity other { 666 base ift:tunnel; 667 description 668 "None of the following values."; 669 reference 670 "RFC 4087: IP Tunnel MIB"; 671 } 672 identity direct { 673 base ift:tunnel; 674 description 675 "No intermediate header."; 676 reference 677 "RFC 4087: IP Tunnel MIB"; 678 } 679 identity gre { 680 base ift:tunnel; 681 description 682 "GRE encapsulation."; 683 reference 684 "RFC 4087: IP Tunnel MIB"; 685 } 686 identity minimal { 687 base ift:tunnel; 688 description 689 "Minimal encapsulation."; 690 reference 691 "RFC 4087: IP Tunnel MIB"; 692 } 693 identity l2tp { 694 base ift:tunnel; 695 description 696 "L2TP encapsulation."; 697 reference 698 "RFC 4087: IP Tunnel MIB"; 699 } 700 identity pptp { 701 base ift:tunnel; 702 description 703 "PPTP encapsulation."; 704 reference 705 "RFC 4087: IP Tunnel MIB"; 706 } 707 identity l2f { 708 base ift:tunnel; 709 description 710 "L2F encapsulation."; 711 reference 712 "RFC 4087: IP Tunnel MIB"; 713 } 714 identity udp { 715 base ift:tunnel; 716 description 717 "UDP encapsulation."; 718 reference 719 "RFC 4087: IP Tunnel MIB"; 720 } 721 identity atmp { 722 base ift:tunnel; 723 description 724 "ATMP encapsulation."; 725 reference 726 "RFC 4087: IP Tunnel MIB"; 727 } 728 identity msdp { 729 base ift:tunnel; 730 description 731 "MSDP encapsulation."; 732 reference 733 "RFC 4087: IP Tunnel MIB"; 734 } 735 identity sixtofour { 736 base ift:tunnel; 737 description 738 "6to4 encapsulation."; 739 reference 740 "RFC 4087: IP Tunnel MIB"; 741 } 742 identity sixoverfour { 743 base ift:tunnel; 744 description 745 "6over4 encapsulation."; 746 reference 747 "RFC 4087: IP Tunnel MIB"; 748 } 749 identity isatap { 750 base ift:tunnel; 751 description 752 "ISATAP encapsulation."; 753 reference 754 "RFC 4087: IP Tunnel MIB"; 755 } 756 identity teredo { 757 base ift:tunnel; 758 description 759 "Teredo encapsulation."; 760 reference 761 "RFC 4087: IP Tunnel MIB"; 762 } 763 identity iphttps { 764 base ift:tunnel; 765 description 766 "IP over HTTPS (IP-HTTPS) Tunneling Protocol."; 767 } 768 identity softwiremesh { 769 base ift:tunnel; 770 description 771 "softwire mesh tunnel."; 772 reference 773 "RFC 7856: Softwire Mesh Management Information Base (MIB)"; 774 } 775 identity dslite { 776 base ift:tunnel; 777 description 778 "DS-Lite tunnel."; 779 reference 780 "RFC 7870: Dual-Stack Lite (DS-Lite) Management Information 781 Base (MIB) for Address Family Transition Routers 782 (AFTRs)"; 783 } 784 identity aplusp { 785 base ift:tunnel; 786 description 787 "A+P encapsulation."; 788 reference 789 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 790 Softwires"; 791 } 792 } 793 795 7. Softwire CE YANG Module 797 This module imports the modules defined in [RFC6991], [RFC8343], and 798 [RFC7224]. It also imports the 'ietf-softwire-common' module. 800 file "ietf-softwire-ce@2018-10-23.yang" 802 module ietf-softwire-ce { 803 yang-version 1.1; 804 namespace "urn:ietf:params:xml:ns:yang:ietf-softwire-ce"; 805 prefix softwire-ce; 807 import ietf-inet-types { 808 prefix inet; 809 reference "Section 4 of RFC 6991"; 810 } 812 import ietf-interfaces { 813 prefix if; 814 reference "RFC 8343: A YANG Data Model for Interface Management"; 815 } 816 import ietf-softwire-common { 817 prefix softwire-common; 818 reference 819 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 820 Softwires"; 821 } 822 import iana-tunnel-type { 823 prefix iana-tunnel-type; 824 reference 825 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 826 Softwires"; 827 } 829 organization 830 "IETF Softwire Working Group"; 831 contact 832 "WG Web: 833 WG List: 835 Author: Qi Sun 836 838 Author: Linhui Sun 839 841 Author: Yong Cui 842 844 Author: Ian Farrer 845 847 Author: Sladjana Zoric 848 850 Author: Mohamed Boucadair 851 853 Author: Rajiv Asati 854 "; 855 description 856 "This document defines a YANG module for the configuration and 857 management of A+P Softwire Customer Premises Equipment (CEs). It 858 covers Lightweight 4over6, MAP-E, and MAP-T mechanisms. 860 Copyright (c) 2018 IETF Trust and the persons identified as 861 authors of the code. All rights reserved. 863 Redistribution and use in source and binary forms, with or 864 without modification, is permitted pursuant to, and subject 865 to the license terms contained in, the Simplified BSD License 866 set forth in Section 4.c of the IETF Trust's Legal Provisions 867 Relating to IETF Documents 868 (http://trustee.ietf.org/license-info). 870 This version of this YANG module is part of RFC XXXX; see 871 the RFC itself for full legal notices."; 873 revision 2018-10-23 { 874 description 875 "Initial revision."; 876 reference 877 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 878 Softwires"; 879 } 881 /* 882 * Features 883 */ 885 feature binding-mode { 886 description 887 "Binding is used for configuring the Lightweight 4over6 mechanism. 889 Binding based softwire mechanisms are IPv4-over-IPv6 tunnelling 890 transition mechanisms specifically intended for complete 891 independence between the IPv6 subnet prefix (and IPv6 address) 892 and IPv4 address, with or without IPv4 address sharing. 894 This is accomplished by maintaining state for each softwire 895 (per-subscriber state) in the central Border Relay (BR) and using 896 a hub-and-spoke forwarding architecture. In order to delegate the 897 NAPT function and achieve IPv4 address sharing, port-restricted 898 IPv4 addresses needs to be allocated to CEs. 900 This feature indicates that the network element can function as 901 one or more binding based softwire instances."; 902 reference 903 "RFC7596: Lightweight 4over6: An Extension to the Dual-Stack Lite 904 Architecture 905 RFC7597: Mapping of Address and Port with Encapsulation (MAP-E) 906 RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 907 } 909 feature map-e { 910 description 911 "MAP-E is an IPv6 transition mechanism for transporting IPv4 912 packets across an IPv6 network using IP encapsulation. MAP-E 913 allows for a reduction of the amount of centralized state using 914 rules to express IPv4/IPv6 address mappings. This introduces an 915 algorithmic relationship between the IPv6 subnet and IPv4 916 address. 918 This feature indicates that the network element can function as 919 one or more MAP-E softwire instances."; 920 reference 921 "RFC7597: Mapping of Address and Port with Encapsulation (MAP-E)"; 922 } 924 feature map-t { 925 description 926 "MAP-T is an IPv6 transition mechanism for transporting IPv4 927 packets across an IPv6 network using IP translation. It leverages 928 a double stateless NAT64 based solution as well as the stateless 929 algorithmic address & transport layer port mapping algorithm 930 defined for MAP-E. 932 This feature indicates that the network element can function as 933 one or more MAP-T softwire instances."; 934 reference 935 "RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 936 } 938 // Binding Entry 940 grouping binding-entry { 941 description 942 "The binding BR (Border Relay) maintains an address binding table 943 that contains the binding between the CE's IPv6 address, 944 the allocated IPv4 address and restricted port-set."; 945 leaf binding-ipv6info { 946 type union { 947 type inet:ipv6-address; 948 type inet:ipv6-prefix; 949 } 950 description 951 "The IPv6 information for a binding entry. 953 When the IPv6 prefix type is used, 954 the IPv6 source address of the CE is constructed 955 according to the description in RFC7596. 957 If the IPv6 address type is used, the CE can use 958 any valid /128 address from a prefix assigned to 959 the CE."; 961 reference "Section 5.1 of RFC7596."; 962 } 963 leaf br-ipv6-addr { 964 type inet:ipv6-address; 965 mandatory true; 966 description 967 "The IPv6 address of the binding BR."; 968 } 969 } 971 // configuration and stateful parameters for softwire CE interface 973 augment "/if:interfaces/if:interface" { 974 when "derived-from(if:type, 'iana-tunnel-type:aplusp')"; 975 description 976 "Softwire CE interface configuration"; 977 leaf softwire-payload-mtu { 978 type uint16; 979 units "bytes"; 980 description 981 "The payload IPv4 MTU for the softwire tunnel."; 982 } 983 leaf softwire-path-mru { 984 type uint16; 985 units "bytes"; 986 description 987 "The path MRU for the softwire (payload + encapsulation 988 overhead)."; 989 reference 990 "RFC 4213: Basic Transition Mechanisms for IPv6 Hosts and 991 Routers"; 992 } 993 choice ce-type { 994 description 995 "Sets the softwire CE mechanism"; 996 case binding { 997 if-feature "binding-mode"; 998 description 999 "CE binding configuration"; 1000 uses binding-entry; 1001 } 1002 case algo { 1003 if-feature "map-e or map-t"; 1004 description 1005 "CE algorithm configuration"; 1006 container algo-instances { 1007 description 1008 "Collection of MAP-E/MAP-T parameters"; 1010 list algo-instance { 1011 key "name"; 1012 description 1013 "MAP forwarding rule instance for 1014 MAP-E/MAP-T"; 1015 leaf name { 1016 type string; 1017 mandatory true; 1018 description 1019 "The name is used to uniquely identify an algorithm 1020 instance. 1022 This name can be automatically assigned 1023 or explicitly configured."; 1024 } 1025 uses softwire-common:algorithm-instance; 1026 } 1027 } 1028 } 1029 } 1030 } 1031 augment "/if:interfaces/if:interface/if:statistics" { 1032 when "derived-from(../if:type, 'iana-tunnel-type:aplusp')"; 1033 description 1034 "Softwire CE interface statistics."; 1035 uses softwire-common:traffic-stat; 1036 } 1038 /* 1039 * Notifications 1040 */ 1042 notification softwire-ce-event { 1043 if-feature "binding-mode"; 1044 description 1045 "CE notification"; 1046 leaf ce-binding-ipv6-addr-change { 1047 type inet:ipv6-address; 1048 mandatory true; 1049 description 1050 "This notification is generated whenever the CE's binding IPv6 1051 address changes for any reason."; 1052 } 1053 } 1054 } 1055 1056 8. BR Softwire YANG Module 1058 This module imports typedefs from [RFC6991]. It also imports the 1059 'ietf-softwire-common' module. 1061 file "ietf-softwire-br@2018-10-23.yang" 1063 module ietf-softwire-br { 1064 yang-version 1.1; 1065 namespace "urn:ietf:params:xml:ns:yang:ietf-softwire-br"; 1066 prefix softwire-br; 1068 import ietf-inet-types { 1069 prefix inet; 1070 reference "Section 4 of RFC 6991"; 1071 } 1072 import ietf-yang-types { 1073 prefix yang; 1074 reference "Section 3 of RFC 6991"; 1075 } 1076 import ietf-softwire-common { 1077 prefix softwire-common; 1078 reference 1079 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 1080 Softwires"; 1081 } 1083 organization 1084 "IETF Softwire Working Group"; 1085 contact 1086 "WG Web: 1087 WG List: 1089 Author: Qi Sun 1090 1092 Author: Linhui Sun 1093 1095 Author: Yong Cui 1096 1098 Author: Ian Farrer 1099 1101 Author: Sladjana Zoric 1102 1104 Author: Mohamed Boucadair 1105 1107 Author: Rajiv Asati 1108 "; 1110 description 1111 "This document defines a YANG module for the configuration and 1112 management of A+P Softwire Border Routers. It covers Lightweight 1113 4over6, MAP-E, and MAP-T mechanisms. 1115 Copyright (c) 2018 IETF Trust and the persons identified as 1116 authors of the code. All rights reserved. 1118 Redistribution and use in source and binary forms, with or 1119 without modification, is permitted pursuant to, and subject 1120 to the license terms contained in, the Simplified BSD License 1121 set forth in Section 4.c of the IETF Trust's Legal Provisions 1122 Relating to IETF Documents 1123 (http://trustee.ietf.org/license-info). 1125 This version of this YANG module is part of RFC XXXX; see 1126 the RFC itself for full legal notices."; 1128 revision 2018-10-23 { 1129 description 1130 "Initial revision."; 1131 reference 1132 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 1133 Softwires"; 1134 } 1136 /* 1137 * Groupings 1138 */ 1140 grouping port-set { 1141 description 1142 "Describes a set of layer 4 port numbers. 1144 This may be a simple port range, or use the Port Set 1145 Identifier (PSID) algorithm to represent a range of transport 1146 layer ports which will be used by a NAPT."; 1147 leaf psid-offset { 1148 type uint8 { 1149 range "0..16"; 1150 } 1151 description 1152 "The number of offset bits. In Lightweight 4over6, 1153 the default value is 0 for assigning one contiguous 1154 port range. In MAP-E/T, the default value is 6, 1155 which means the system ports (0-1023) are excluded by 1156 default and the assigned port ranges are distributed across 1157 the entire port space, depending on either psid-len or the 1158 number of contiguous ports."; 1159 } 1160 leaf psid-len { 1161 type uint8 { 1162 range "0..15"; 1163 } 1164 mandatory true; 1165 description 1166 "The length of PSID, representing the sharing 1167 ratio for an IPv4 address. This, along with ea-len, can 1168 be used to calculate the number of contiguous ports per 1169 port range"; 1170 } 1171 leaf psid { 1172 type uint16; 1173 mandatory true; 1174 description 1175 "Port Set Identifier (PSID) value, which 1176 identifies a set of ports algorithmically."; 1177 } 1178 } 1180 grouping binding-entry { 1181 description 1182 "The binding BR maintains an address binding table that 1183 contains the binding between the CE's IPv6 address, 1184 the allocated IPv4 address and restricted port-set."; 1185 leaf binding-ipv6info { 1186 type union { 1187 type inet:ipv6-address; 1188 type inet:ipv6-prefix; 1189 } 1190 description 1191 "The IPv6 information for a CE binding entry. 1192 When the IPv6 prefix type is used, 1193 the IPv6 source address of the CE is constructed 1194 according to the description in RFC7596; 1195 if the IPv6 address type is used, the CE can use 1196 any valid /128 address from a prefix assigned to 1197 the CE."; 1198 reference 1199 "RFC7596: Lightweight 4over6: An Extension to the Dual-Stack 1200 Lite Architecture"; 1201 } 1202 leaf binding-ipv4-addr { 1203 type inet:ipv4-address; 1204 description 1205 "The IPv4 address assigned to the binding CE, 1206 which is used as the IPv4 external address 1207 for binding CE local NAPT44."; 1208 } 1209 container port-set { 1210 description 1211 "For Lightweight 4over6, the default value 1212 for offset should be 0, to configure one contiguous 1213 port range."; 1214 uses port-set { 1215 refine "psid-offset" { 1216 default "0"; 1217 } 1218 } 1219 } 1220 leaf br-ipv6-addr { 1221 type inet:ipv6-address; 1222 description 1223 "The IPv6 address for binding BR."; 1224 } 1225 } 1227 /* 1228 * Features 1229 */ 1231 feature binding-mode { 1232 description 1233 "Binding is used for configuring the Lightweight 4over6 mechanism. 1235 Binding based softwire mechanisms are IPv4-over-IPv6 tunnelling 1236 transition mechanisms specifically intended for complete 1237 independence between the IPv6 subnet prefix (and IPv6 address) 1238 and IPv4 address, with or without IPv4 address sharing. 1240 This is accomplished by maintaining state for each softwire 1241 (per-subscriber state) in the central Border Relay (BR) and using 1242 a hub-and-spoke forwarding architecture. In order to delegate the 1243 NAPT function and achieve IPv4 address sharing, port-restricted 1244 IPv4 addresses needs to be allocated to CEs. 1246 This feature indicates that the network element can function as 1247 one or more binding based softwire instances."; 1249 reference 1250 "RFC7596: Lightweight 4over6: An Extension to the Dual-Stack Lite 1251 Architecture 1252 RFC7597: Mapping of Address and Port with Encapsulation (MAP-E) 1253 RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 1254 } 1256 feature map-e { 1257 description 1258 "MAP-E is an IPv6 transition mechanism for transporting IPv4 1259 packets across an IPv6 network using IP encapsulation. MAP-E 1260 allows for a reduction of the amount of centralized state using 1261 rules to express IPv4/IPv6 address mappings. This introduces an 1262 algorithmic relationship between the IPv6 subnet and IPv4 1263 address. 1265 This feature indicates that the network element can function as 1266 one or more MAP-E softwire instances."; 1267 reference 1268 "RFC7597: Mapping of Address and Port with Encapsulation (MAP-E)"; 1269 } 1271 feature map-t { 1272 description 1273 "MAP-T is an IPv6 transition mechanism for transporting IPv4 1274 packets across an IPv6 network using IP translation. It leverages 1275 a double stateless NAT64 based solution as well as the stateless 1276 algorithmic address & transport layer port mapping algorithm 1277 defined for MAP-E. 1279 This feature indicates that the network element can function as 1280 one or more MAP-T softwire instances."; 1281 reference 1282 "RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 1283 } 1285 container br-instances { 1286 description 1287 "BR instances enabled in a network element."; 1288 choice br-type { 1289 description 1290 "Select binding or algorithmic BR functionality."; 1291 case binding { 1292 if-feature "binding-mode"; 1293 container binding { 1294 description 1295 "binding mechanism (binding table) configuration."; 1296 list bind-instance { 1297 key "name"; 1298 description 1299 "A set of binding instances to be configured."; 1300 leaf name { 1301 type string; 1302 mandatory true; 1303 description 1304 "The name for the binding BR. It is used to uniquely 1305 distinguish a binding instance by its name."; 1306 } 1307 container binding-table-versioning { 1308 description 1309 "binding table's version"; 1310 leaf version { 1311 type uint64; 1312 description 1313 "Timestamp when the binding table was activated. 1315 A binding instance may be provided with binding 1316 entries that may change in time (e.g., increase 1317 the size of the port set). When an abuse party 1318 presents an external IP address/port, the version 1319 of the binding table is important because, depending 1320 on the version, a distinct customer may be 1321 identified. 1323 The timestamp is used as a key to find the 1324 appropriate binding table that was put into effect 1325 when an abuse occurred. "; 1326 } 1327 leaf date { 1328 type yang:date-and-time; 1329 description 1330 "Timestamp of the binding table"; 1331 reference 1332 "RFC7422: Deterministic Address Mapping to Reduce 1333 Logging in Carrier-Grade NAT Deployments"; 1334 } 1335 } 1336 leaf softwire-num-max { 1337 type uint32 { 1338 range "1..max"; 1339 } 1340 mandatory true; 1341 description 1342 "The maximum number of softwires that can be created 1343 on the binding BR."; 1344 } 1345 leaf softwire-payload-mtu { 1346 type uint16; 1347 units "bytes"; 1348 mandatory true; 1349 description 1350 "The payload IPv4 MTU for binding softwire."; 1351 } 1352 leaf softwire-path-mru { 1353 type uint16; 1354 units "bytes"; 1355 mandatory true; 1356 description 1357 "The path MRU for binding softwire."; 1358 reference 1359 "RFC4213: Basic Transition Mechanisms for IPv6 Hosts 1360 and Routers"; 1361 } 1362 leaf enable-hairpinning { 1363 type boolean; 1364 default "true"; 1365 description 1366 "Enables/disables support for locally forwarding 1367 (hairpinning) traffic between two CEs."; 1368 reference "Section 6.2 of RFC7596"; 1369 } 1370 container binding-table { 1371 description 1372 "binding table"; 1373 list binding-entry { 1374 key "binding-ipv6info"; 1375 description 1376 "binding entry"; 1377 uses binding-entry; 1378 } 1379 } 1380 container icmp-policy { 1381 description 1382 "The binding BR can be configured to process or drop 1383 incoming ICMP messages, and to generate outgoing ICMP 1384 error messages."; 1385 container icmpv4-errors { 1386 description 1387 "ICMPv4 error processing configuration"; 1388 leaf allow-incoming-icmpv4 { 1389 type boolean; 1390 default "true"; 1391 description 1392 "Enables the processing of incoming ICMPv4 1393 packets."; 1394 reference 1395 "RFC7596: Lightweight 4over6: An Extension to 1396 the Dual-Stack Lite Architecture"; 1397 } 1398 leaf icmpv4-rate { 1399 type uint32; 1400 description 1401 "Rate limit threshold in messages per-second 1402 for processing incoming ICMPv4 errors messages"; 1403 } 1404 leaf generate-icmpv4-errors { 1405 type boolean; 1406 default "true"; 1407 description 1408 "Enables the generation of outgoing ICMPv4 error 1409 messages on receipt of an inbound IPv4 packet 1410 with no matching binding table entry."; 1411 reference "Seciton 5.2 of RFC7596."; 1412 } 1413 } 1414 container icmpv6-errors { 1415 description 1416 "ICMPv6 error processing configuration"; 1417 leaf generate-icmpv6-errors { 1418 type boolean; 1419 default "true"; 1420 description 1421 "Enables the generation of ICMPv6 error messages if 1422 no matching binding table entry is found for a 1423 received packet."; 1424 reference "Section 6.2 of RFC7596."; 1425 } 1426 leaf icmpv6-rate { 1427 type uint32; 1428 description 1429 "Rate limit threshold in messages per-second 1430 for sending ICMPv6 errors messages"; 1431 reference "Section 9 of RFC7596."; 1432 } 1433 } 1434 } 1435 container traffic-stat { 1436 config false; 1437 description 1438 "Traffic statistics information for the BR."; 1439 leaf discontinuity-time { 1440 type yang:date-and-time; 1441 mandatory true; 1442 description 1443 "The time of the most recent occasion on which the BR 1444 instance suffered a discontinuity. This must be 1445 initialized when the BR instance is configured 1446 or rebooted."; 1447 } 1448 uses softwire-common:traffic-stat; 1449 leaf dropped-icmpv4-packets { 1450 type yang:zero-based-counter64; 1451 description 1452 "ICMPv4 packets that are dropped as a result 1453 of the ICMP policy. Typically, this can be any 1454 incoming ICMPv4 packets if ICMPv4 processing is 1455 disabled or incoming ICMPv4 packets that exceed 1456 the ICMPv4 rate-limit threshold. 1458 Discontinuities in the value of this counter can 1459 occur at re-initialization of the management 1460 system, and at other times as indicated by 1461 the value of 'discontinuity-time'."; 1462 } 1463 leaf dropped-icmpv4-bytes { 1464 type yang:zero-based-counter64; 1465 description 1466 "ICMPv4 messages, in bytes, that are dropped as 1467 a result of the ICMP policy. Typically, it 1468 can be any incoming ICMPv4 packets if ICMPv4 1469 processing is disabled or incoming ICMPv4 1470 packets that exceed the ICMPv4 rate-limit 1471 threshold. 1473 Discontinuities in the value of this counter can 1474 occur at re-initialization of the management 1475 system, and at other times as indicated by 1476 the value of 'discontinuity-time'."; 1477 } 1478 leaf hairpin-ipv4-packets { 1479 type yang:zero-based-counter64; 1480 description 1481 "IPv4 packets locally routed between two CEs 1482 (hairpinned). 1484 Discontinuities in the value of this counter can 1485 occur at re-initialization of the management 1486 system, and at other times as indicated by 1487 the value of 'discontinuity-time'."; 1488 } 1489 leaf hairpin-ipv4-bytes { 1490 type yang:zero-based-counter64; 1491 description 1492 "IPv4 bytes locally routed between two CEs 1493 (hairpinned). 1495 Discontinuities in the value of this counter can 1496 occur at re-initialization of the management 1497 system, and at other times as indicated by 1498 the value of 'discontinuity-time'."; 1499 } 1500 leaf active-softwire-num { 1501 type uint32; 1502 config false; 1503 description 1504 "The number of currently active softwires on the 1505 binding instance. 1507 Discontinuities in the value of this counter can 1508 occur at re-initialization of the management 1509 system, and at other times as indicated by 1510 the value of 'discontinuity-time'."; 1511 } 1512 } 1513 } 1514 } 1515 } 1516 case algo { 1517 if-feature "map-e or map-t"; 1518 container algorithm { 1519 description 1520 " A set of parameters used for MAP-E/MAP-T."; 1521 list algo-instance { 1522 key "name"; 1523 description 1524 "Instances of algorithm"; 1525 leaf name { 1526 type string; 1527 mandatory true; 1528 description 1529 "The name is used to uniquely identify an algorithm 1530 instance. 1532 This name can be automatically assigned 1533 or explicitly configured."; 1534 } 1535 uses softwire-common:algorithm-instance; 1536 container port-set { 1537 description 1538 "Indicates a set of ports."; 1539 uses port-set; 1540 } 1541 container traffic-stat { 1542 config false; 1543 description 1544 "Traffic statistics information for the BR."; 1545 leaf discontinuity-time { 1546 type yang:date-and-time; 1547 mandatory true; 1548 description 1549 "The time of the most recent occasion on which the BR 1550 instance suffered a discontinuity. This must be 1551 reset to the current date-and-time when the BR 1552 instance is configured or rebooted."; 1553 } 1554 uses softwire-common:traffic-stat; 1555 } 1556 } 1557 } 1558 } 1559 } 1560 } 1562 /* 1563 * Notifications 1564 */ 1566 notification softwire-binding-instance-event { 1567 if-feature "binding-mode"; 1568 description 1569 "Notifications for binding instance when an entry is 1570 added, modified, or is not valid anymore."; 1571 leaf bind-name { 1572 type leafref { 1573 path "/br-instances/binding/bind-instance/name"; 1574 } 1575 description 1576 "The name of the binding-instance that 1577 generated the notification."; 1578 } 1579 leaf-list invalid-entry { 1580 type leafref { 1581 path 1582 "/br-instances/binding/" 1583 + "bind-instance[name=current()/../bind-name]/" 1584 + "binding-table/binding-entry/binding-ipv6info"; 1586 } 1587 description 1588 "Notify the client that a specific binding entry has 1589 expired or is invalid. The binding-ipv6info identifies 1590 an entry."; 1591 } 1592 leaf-list added-entry { 1593 type inet:ipv6-address; 1594 description 1595 "Notify the client that a binding entry has been added. 1596 The ipv6 address of that entry is the index. The client 1597 gets other information from the binding BR about the entry 1598 indexed by that ipv6 address."; 1599 } 1600 leaf-list modified-entry { 1601 type leafref { 1602 path 1603 "/br-instances/binding/" 1604 + "bind-instance[name=current()/../bind-name]/" 1605 + "binding-table/binding-entry/binding-ipv6info"; 1606 } 1607 description 1608 "The binding-table entry that has been modified."; 1609 } 1610 } 1611 notification softwire-algorithm-instance-event { 1612 if-feature "map-e or map-t"; 1613 description 1614 "Notifications for algorithm instance when an entry is 1615 added, modified, or is not valid anymore."; 1616 leaf algo-name { 1617 type leafref { 1618 path "/br-instances/algorithm/algo-instance/name"; 1619 } 1620 mandatory true; 1621 description 1622 "algorithmic instance event."; 1623 } 1624 leaf-list invalid-entry { 1625 type leafref { 1626 path "/br-instances/algorithm/algo-instance/name"; 1627 } 1628 description 1629 "Invalid entry event."; 1630 } 1631 leaf-list added-entry { 1632 type leafref { 1633 path "/br-instances/algorithm/algo-instance/name"; 1635 } 1636 description 1637 "Added entry."; 1638 } 1639 leaf-list modified-entry { 1640 type leafref { 1641 path "/br-instances/algorithm/algo-instance/name"; 1642 } 1643 description 1644 "Modified entry."; 1645 } 1646 } 1647 } 1648 1650 9. Common Softwire Element Groups YANG Module 1652 This module imports typedefs from [RFC6991]. 1654 The following YANG module contains definitions that are used by both 1655 the softwire CE and softwire BR YANG modules. 1657 file "ietf-softwire-common@2018-10-23.yang" 1659 module ietf-softwire-common { 1660 yang-version 1.1; 1661 namespace "urn:ietf:params:xml:ns:yang:ietf-softwire-common"; 1662 prefix softwire-common; 1664 import ietf-inet-types { 1665 prefix inet; 1666 reference "Section 4 of RFC 6991"; 1667 } 1668 import ietf-yang-types { 1669 prefix yang; 1670 reference "Section 3 of RFC 6991"; 1671 } 1673 organization 1674 "IETF Softwire Working Group"; 1675 contact 1676 "WG Web: 1677 WG List: 1679 Author: Qi Sun 1680 1682 Author: Linhui Sun 1683 1685 Author: Yong Cui 1686 1688 Author: Ian Farrer 1689 1691 Author: Sladjana Zoric 1692 1694 Author: Mohamed Boucadair 1695 1697 Author: Rajiv Asati 1698 "; 1699 description 1700 "This document defines a YANG module defining types 1701 common to all A+P modules. 1703 Copyright (c) 2018 IETF Trust and the persons identified as 1704 authors of the code. All rights reserved. 1706 Redistribution and use in source and binary forms, with or 1707 without modification, is permitted pursuant to, and subject 1708 to the license terms contained in, the Simplified BSD License 1709 set forth in Section 4.c of the IETF Trust's Legal Provisions 1710 Relating to IETF Documents 1711 (http://trustee.ietf.org/license-info). 1713 This version of this YANG module is part of RFC XXXX; see 1714 the RFC itself for full legal notices."; 1716 revision 2018-10-23 { 1717 description 1718 "Initial revision."; 1719 reference 1720 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 1721 Softwires"; 1722 } 1724 feature map-e { 1725 description 1726 "MAP-E is an IPv6 transition mechanism for transporting IPv4 1727 packets across an IPv6 network using IP encapsulation. MAP-E 1728 allows for a reduction of the amount of centralized state using 1729 rules to express IPv4/IPv6 address mappings. This introduces an 1730 algorithmic relationship between the IPv6 subnet and IPv4 1731 address. 1733 This feature indicates that the network element can function as 1734 one or more MAP-E softwire instances."; 1735 reference 1736 "RFC7597: Mapping of Address and Port with Encapsulation (MAP-E)"; 1737 } 1739 feature map-t { 1740 description 1741 "MAP-T is an IPv6 transition mechanism for transporting IPv4 1742 packets across an IPv6 network using IP translation. It leverages 1743 a double stateless NAT64 based solution as well as the stateless 1744 algorithmic address & transport layer port mapping algorithm 1745 defined for MAP-E. 1747 This feature indicates that the network element can function as 1748 one or more MAP-T softwire instances."; 1749 reference 1750 "RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 1751 } 1753 /* 1754 * Groupings 1755 */ 1757 grouping algorithm-instance { 1758 description 1759 "A collection of parameters that is used fro MAP-E/MAP-T."; 1760 leaf enable { 1761 type boolean; 1762 description 1763 "Enable/disable an individual MAP-E or MAP-T rule."; 1764 } 1765 container algo-versioning { 1766 description 1767 "Version number for this algorithm instance"; 1768 leaf version { 1769 type uint64; 1770 description 1771 "A version number for the mapping algorithm 1772 rules provided to the algorithm instance"; 1773 } 1774 leaf date { 1775 type yang:date-and-time; 1776 description 1777 "Timestamp when the algorithm instance was activated. 1779 An algorithm instance may be provided with mapping 1780 rules that may change in time (for example, increase 1781 the size of the port set). When an abuse party 1782 presents an external IP address/port, the version 1783 of the algorithm is important because depending on 1784 the version, a distinct customer may be identified. 1786 The timestamp is used as a key to find the appropriate 1787 algorithm that was put into effect when an abuse 1788 occurred. "; 1789 reference 1790 "RFC7422: Deterministic Address Mapping to Reduce 1791 Logging in Carrier-Grade NAT Deployments"; 1792 } 1793 } 1794 choice data-plane { 1795 description 1796 "Selects MAP-E (encapsulation) or MAP-T 1797 (translation)"; 1798 case encapsulation { 1799 if-feature "map-e"; 1800 description 1801 "encapsulation for MAP-E"; 1802 leaf br-ipv6-addr { 1803 type inet:ipv6-address; 1804 mandatory true; 1805 description 1806 "The IPv6 address of the MAP-E BR."; 1807 } 1808 } 1809 case translation { 1810 if-feature "map-t"; 1811 description 1812 "translation for MAP-T"; 1813 leaf dmr-ipv6-prefix { 1814 type inet:ipv6-prefix; 1815 description 1816 "The IPv6 prefix of the MAP-T BR."; 1817 } 1818 } 1819 } 1820 leaf ea-len { 1821 type uint8; 1822 mandatory true; 1823 description 1824 "Embedded Address (EA) bits are the IPv4 EA-bits in the IPv6 1825 address identifying an IPv4 prefix/address (or part thereof) 1826 or a shared IPv4 address (or part thereof) and a port-set 1827 identifier. The length of the EA-bits is defined as part of 1828 a MAP rule for a MAP domain."; 1829 } 1830 leaf rule-ipv6-prefix { 1831 type inet:ipv6-prefix; 1832 mandatory true; 1833 description 1834 "The Rule IPv6 prefix defined in the mapping rule."; 1835 } 1836 leaf rule-ipv4-prefix { 1837 type inet:ipv4-prefix; 1838 mandatory true; 1839 description 1840 "The Rule IPv4 prefix defined in the mapping rule."; 1841 } 1842 leaf forwarding { 1843 type boolean; 1844 mandatory true; 1845 description 1846 "This parameter specifies whether the rule may be used for 1847 forwarding (FMR). If set, this rule is used as an FMR; 1848 if not set, this rule is a Basic Mapping Rule (BMR) only 1849 and must not be used for forwarding."; 1850 } 1851 } 1853 grouping traffic-stat { 1854 description 1855 "Traffic statistics"; 1856 leaf sent-ipv4-packets { 1857 type yang:zero-based-counter64; 1858 description 1859 "Number of decapsulated and forwarded IPv4 packets. 1861 Discontinuities in the value of this counter can occur 1862 at re-initialization of the management system, and at 1863 other times as indicated by the value of 1864 'discontinuity-time'."; 1865 } 1866 leaf sent-ipv4-bytes { 1867 type yang:zero-based-counter64; 1868 description 1869 "Decapsulated/translated IPv4 traffic sent, in bytes 1871 Discontinuities in the value of this counter can occur 1872 at re-initialization of the management system, and at 1873 other times as indicated by the value of 1874 'discontinuity-time'."; 1876 } 1877 leaf sent-ipv6-packets { 1878 type yang:zero-based-counter64; 1879 description 1880 "Number of encapsulated IPv6 packets sent. 1882 Discontinuities in the value of this counter can occur 1883 at re-initialization of the management system, and at 1884 other times as indicated by the value of 1885 'discontinuity-time'."; 1886 } 1887 leaf sent-ipv6-bytes { 1888 type yang:zero-based-counter64; 1889 description 1890 "Encapsulated IPv6 traffic sent, in bytes 1892 Discontinuities in the value of this counter can occur 1893 at re-initialization of the management system, and at 1894 other times as indicated by the value of 1895 'discontinuity-time'."; 1896 } 1897 leaf rcvd-ipv4-packets { 1898 type yang:zero-based-counter64; 1899 description 1900 "Number of incoming IPv4 packets at the 1901 Internet-facing interface. 1903 Discontinuities in the value of this counter can occur 1904 at re-initialization of the management system, and at 1905 other times as indicated by the value of 1906 'discontinuity-time'."; 1907 } 1908 leaf rcvd-ipv4-bytes { 1909 type yang:zero-based-counter64; 1910 description 1911 "IPv4 traffic received for processing, in bytes. 1913 Discontinuities in the value of this counter can occur 1914 at re-initialization of the management system, and at 1915 other times as indicated by the value of 1916 'discontinuity-time'."; 1917 } 1918 leaf rcvd-ipv6-packets { 1919 type yang:zero-based-counter64; 1920 description 1921 "Number of IPv4-in-IPv6 packets received. 1923 Discontinuities in the value of this counter can occur 1924 at re-initialization of the management system, and at 1925 other times as indicated by the value of 1926 'discontinuity-time'."; 1927 } 1928 leaf rcvd-ipv6-bytes { 1929 type yang:zero-based-counter64; 1930 description 1931 "IPv4-in-IPv6 traffic received, in bytes. 1933 Discontinuities in the value of this counter can occur 1934 at re-initialization of the management system, and at 1935 other times as indicated by the value of 1936 'discontinuity-time'."; 1937 } 1938 leaf dropped-ipv4-packets { 1939 type yang:zero-based-counter64; 1940 description 1941 "Number of IPv4 packets dropped at the 1942 Internet-facing interface. 1944 Discontinuities in the value of this counter can occur 1945 at re-initialization of the management system, and at 1946 other times as indicated by the value of 1947 'discontinuity-time'."; 1948 } 1949 leaf dropped-ipv4-bytes { 1950 type yang:zero-based-counter64; 1951 description 1952 "IPv4 traffic dropped at the Internet-facing 1953 interface, in bytes. 1955 Discontinuities in the value of this counter can occur 1956 at re-initialization of the management system, and at 1957 other times as indicated by the value of 1958 'discontinuity-time'."; 1959 } 1960 leaf dropped-ipv6-packets { 1961 type yang:zero-based-counter64; 1962 description 1963 "Number of IPv4-in-IPv6 packets dropped. 1965 Discontinuities in the value of this counter can occur 1966 at re-initialization of the management system, and at 1967 other times as indicated by the value of 1968 'discontinuity-time'."; 1969 } 1970 leaf dropped-ipv6-bytes { 1971 type yang:zero-based-counter64; 1972 description 1973 "IPv4-in-IPv6 traffic dropped, in bytes. 1975 Discontinuities in the value of this counter can occur 1976 at re-initialization of the management system, and at 1977 other times as indicated by the value of 1978 'discontinuity-time'."; 1979 } 1980 leaf dropped-ipv4-fragments { 1981 type yang:zero-based-counter64; 1982 description 1983 "Number of fragmented IPv4 packets dropped. 1985 Discontinuities in the value of this counter can occur 1986 at re-initialization of the management system, and at 1987 other times as indicated by the value of 1988 'discontinuity-time'."; 1989 } 1990 leaf dropped-ipv4-fragment-bytes { 1991 type yang:zero-based-counter64; 1992 description 1993 "Fragmented IPv4 traffic dropped, in bytes. 1995 Discontinuities in the value of this counter can occur 1996 at re-initialization of the management system, and at 1997 other times as indicated by the value of 1998 'discontinuity-time'."; 1999 } 2000 leaf ipv6-fragments-reassembled { 2001 type yang:zero-based-counter64; 2002 description 2003 "Number of IPv6 fragments successfully reassembled. 2005 Discontinuities in the value of this counter can occur 2006 at re-initialization of the management system, and at 2007 other times as indicated by the value of 2008 'discontinuity-time'."; 2009 } 2010 leaf ipv6-fragments-bytes-reassembled { 2011 type yang:zero-based-counter64; 2012 description 2013 "IPv6 fragments successfully reassembled, in bytes. 2015 Discontinuities in the value of this counter can occur 2016 at re-initialization of the management system, and at 2017 other times as indicated by the value of 2018 'discontinuity-time'."; 2019 } 2020 leaf out-icmpv4-error-packets { 2021 type yang:zero-based-counter64; 2022 description 2023 "Internally generated ICMPv4 error packets. 2025 Discontinuities in the value of this counter can occur 2026 at re-initialization of the management system, and at 2027 other times as indicated by the value of 2028 'discontinuity-time'."; 2029 } 2030 leaf out-icmpv4-error-bytes { 2031 type yang:zero-based-counter64; 2032 description 2033 "Internally generated ICMPv4 error messages, in bytes. 2035 Discontinuities in the value of this counter can occur 2036 at re-initialization of the management system, and at 2037 other times as indicated by the value of 2038 'discontinuity-time'."; 2039 } 2040 leaf out-icmpv6-error-packets { 2041 type yang:zero-based-counter64; 2042 description 2043 "Internally generated ICMPv6 error packets. 2045 Discontinuities in the value of this counter can occur 2046 at re-initialization of the management system, and at 2047 other times as indicated by the value of 2048 'discontinuity-time'."; 2049 } 2050 leaf out-icmpv6-error-bytes { 2051 type yang:zero-based-counter64; 2052 description 2053 "Internally generated ICMPv6 error messages, in bytes. 2055 Discontinuities in the value of this counter can occur 2056 at re-initialization of the management system, and at 2057 other times as indicated by the value of 2058 'discontinuity-time'."; 2059 } 2060 } 2061 } 2062 2063 10. Security Considerations 2065 The YANG modules defined in this document is designed to be accessed 2066 via network management protocols such as NETCONF [RFC6241] or 2067 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 2068 layer, and the mandatory-to-implement secure transport is Secure 2069 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 2070 mandatory-to-implement secure transport is TLS [RFC8446]. 2072 The NETCONF access control model [RFC8341] provides the means to 2073 restrict access for particular NETCONF or RESTCONF users to a 2074 preconfigured subset of all available NETCONF or RESTCONF protocol 2075 operations and content. 2077 All data nodes defined in the YANG modules which can be created, 2078 modified, and deleted (i.e., config true, which is the default) are 2079 considered sensitive. Write operations (e.g., edit-config) applied 2080 to these data nodes without proper protection can negatively affect 2081 network operations. 2083 11. IANA Considerations 2085 This document requests IANA to assign a new tunnel type under 2086 "tunnelType" sub-registry (under "ifType definitions" registry): 2088 o aplusp: A+P Encapsulation [RFCXXXX]. 2090 This document requests IANA to register the following URIs in the 2091 "IETF XML Registry" [RFC3688]: 2093 URI: urn:ietf:params:xml:ns:yang:iana-tunnel-type 2094 Registrant Contact: IANA. 2095 XML: N/A; the requested URI is an XML namespace. 2097 URI: urn:ietf:params:xml:ns:yang:ietf-softwire-ce 2098 Registrant Contact: The IESG. 2099 XML: N/A; the requested URI is an XML namespace. 2101 URI: urn:ietf:params:xml:ns:yang:ietf-softwire-br 2102 Registrant Contact: The IESG. 2103 XML: N/A; the requested URI is an XML namespace. 2105 URI: urn:ietf:params:xml:ns:yang:ietf-softwire-common 2106 Registrant Contact: The IESG. 2107 XML: N/A; the requested URI is an XML namespace. 2109 This document requests that IANA registers the following YANG modules 2110 in the "YANG Module Names" registry [RFC6020]: 2112 name: iana-tunnel-type 2113 namespace: urn:ietf:params:xml:ns:yang:iana-tunnel-type 2114 prefix: iana-tunnel-type 2115 reference: RFC XXXX 2117 name: ietf-softwire-ce 2118 namespace: urn:ietf:params:xml:ns:yang:ietf-softwire-ce 2119 prefix: softwire-ce 2120 reference: RFC XXXX 2122 name: ietf-softwire-br 2123 namespace: urn:ietf:params:xml:ns:yang:ietf-softwire-br 2124 prefix: softwire-br 2125 reference: RFC XXXX 2127 name: ietf-softwire-common 2128 namespace: urn:ietf:params:xml:ns:yang:ietf-softwire-common 2129 prefix: softwire-common 2130 reference: RFC XXXX 2132 This document defines the initial version of the IANA-maintained 2133 iana-tunnel-type YANG module. IANA is requested to add this note: 2135 Tunnel type values must not be directly added to the iana-tunnel- 2136 type YANG module. They must instead be respectively added to the 2137 "tunnelType" sub-registry (under "ifType definitions" registry). 2139 When a tunnel type is added to the "tunnelType" registry, a new 2140 "identity" statement must be added to the iana-tunnel-type YANG 2141 module. The name of the "identity" is the same as the corresponding 2142 enumeration in the IANAifType-MIB (i.e., IANAtunnelType). The 2143 following substatements to the "identity" statement should be 2144 defined: 2146 "base": Contains the name assigned to the tunnel type, in 2147 lowercase. 2149 "description": Replicate the description from the registry. 2151 "reference": Replicate the reference from the registry and add the 2152 title of the document. 2154 Unassigned or reserved values are not present in the module. 2156 When the iana-tunnel-type YANG module is updated, a new "revision" 2157 statement must be added in front of the existing revision statements. 2159 IANA is requested to add this note to "tunnelType" registry: 2161 When this registry is modified, the YANG module iana-tunnel-type 2162 must be updated as defined in [RFCXXXX]. 2164 12. Acknowledgements 2166 The authors would like to thank Lishan Li, Bert Wijnen, Giles Heron, 2167 Ole Troan, Andy Wingo and Leo Tietz for their contributions to this 2168 work. 2170 Thanks to Sheng Jiang for the review. 2172 Special thanks to Tom Petch and Martin Bjorklund for the detailed 2173 review and suggestions. 2175 13. Contributors 2177 The following individual contributed to this document: 2179 Hao Wang 2180 Tsinghua University 2181 Beijing 100084 2182 P.R.China 2183 Phone: +86-10-6278-5822 2184 Email: wangh13@mails.tsinghua.edu.cn 2186 14. References 2188 14.1. Normative References 2190 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2191 DOI 10.17487/RFC3688, January 2004, 2192 . 2194 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2195 the Network Configuration Protocol (NETCONF)", RFC 6020, 2196 DOI 10.17487/RFC6020, October 2010, 2197 . 2199 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2200 and A. Bierman, Ed., "Network Configuration Protocol 2201 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2202 . 2204 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2205 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2206 . 2208 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2209 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2210 . 2212 [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", 2213 RFC 7224, DOI 10.17487/RFC7224, May 2014, 2214 . 2216 [RFC7596] Cui, Y., Sun, Q., Boucadair, M., Tsou, T., Lee, Y., and I. 2217 Farrer, "Lightweight 4over6: An Extension to the Dual- 2218 Stack Lite Architecture", RFC 7596, DOI 10.17487/RFC7596, 2219 July 2015, . 2221 [RFC7597] Troan, O., Ed., Dec, W., Li, X., Bao, C., Matsushima, S., 2222 Murakami, T., and T. Taylor, Ed., "Mapping of Address and 2223 Port with Encapsulation (MAP-E)", RFC 7597, 2224 DOI 10.17487/RFC7597, July 2015, 2225 . 2227 [RFC7598] Mrugalski, T., Troan, O., Farrer, I., Perreault, S., Dec, 2228 W., Bao, C., Yeh, L., and X. Deng, "DHCPv6 Options for 2229 Configuration of Softwire Address and Port-Mapped 2230 Clients", RFC 7598, DOI 10.17487/RFC7598, July 2015, 2231 . 2233 [RFC7599] Li, X., Bao, C., Dec, W., Ed., Troan, O., Matsushima, S., 2234 and T. Murakami, "Mapping of Address and Port using 2235 Translation (MAP-T)", RFC 7599, DOI 10.17487/RFC7599, July 2236 2015, . 2238 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2239 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2240 . 2242 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2243 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2244 . 2246 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2247 Access Control Model", STD 91, RFC 8341, 2248 DOI 10.17487/RFC8341, March 2018, 2249 . 2251 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 2252 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 2253 . 2255 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2256 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2257 . 2259 14.2. Informative References 2261 [I-D.ietf-opsawg-nat-yang] 2262 Boucadair, M., Sivakumar, S., Jacquenet, C., Vinapamula, 2263 S., and Q. Wu, "A YANG Module for Network Address 2264 Translation (NAT) and Network Prefix Translation (NPT)", 2265 draft-ietf-opsawg-nat-yang-17 (work in progress), 2266 September 2018. 2268 [I-D.ietf-softwire-dslite-yang] 2269 Boucadair, M., Jacquenet, C., and S. Sivakumar, "A YANG 2270 Data Model for Dual-Stack Lite (DS-Lite)", draft-ietf- 2271 softwire-dslite-yang-17 (work in progress), May 2018. 2273 [RFC4087] Thaler, D., "IP Tunnel MIB", RFC 4087, 2274 DOI 10.17487/RFC4087, June 2005, 2275 . 2277 [RFC4213] Nordmark, E. and R. Gilligan, "Basic Transition Mechanisms 2278 for IPv6 Hosts and Routers", RFC 4213, 2279 DOI 10.17487/RFC4213, October 2005, 2280 . 2282 [RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual- 2283 Stack Lite Broadband Deployments Following IPv4 2284 Exhaustion", RFC 6333, DOI 10.17487/RFC6333, August 2011, 2285 . 2287 [RFC7422] Donley, C., Grundemann, C., Sarawat, V., Sundaresan, K., 2288 and O. Vautrin, "Deterministic Address Mapping to Reduce 2289 Logging in Carrier-Grade NAT Deployments", RFC 7422, 2290 DOI 10.17487/RFC7422, December 2014, 2291 . 2293 [RFC7856] Cui, Y., Dong, J., Wu, P., Xu, M., and A. Yla-Jaaski, 2294 "Softwire Mesh Management Information Base (MIB)", 2295 RFC 7856, DOI 10.17487/RFC7856, May 2016, 2296 . 2298 [RFC7870] Fu, Y., Jiang, S., Dong, J., and Y. Chen, "Dual-Stack Lite 2299 (DS-Lite) Management Information Base (MIB) for Address 2300 Family Transition Routers (AFTRs)", RFC 7870, 2301 DOI 10.17487/RFC7870, June 2016, 2302 . 2304 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2305 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2306 . 2308 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 2309 and R. Wilton, "Network Management Datastore Architecture 2310 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 2311 . 2313 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 2314 RFC 8344, DOI 10.17487/RFC8344, March 2018, 2315 . 2317 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2318 Routing Management (NMDA Version)", RFC 8349, 2319 DOI 10.17487/RFC8349, March 2018, 2320 . 2322 Appendix A. Configuration Examples 2324 The following sections provide examples of how the softwire YANG 2325 modules can be used for configuring softwire elements. 2327 A.1. Configuration Example for a lw4o6 BR Binding-Table 2329 The lwAFTR maintains an address binding table which contains the 2330 following 3-tuples: 2332 o IPv6 Address for a single lwB4 2334 o Public IPv4 Address 2336 o Restricted port-set 2338 The entry has two functions: the IPv6 encapsulation of inbound IPv4 2339 packets destined to the lwB4 and the validation of outbound IPv4-in- 2340 IPv6 packets received from the lwB4 for de-capsulation. 2342 Consider an example for the following lw4o6 binding table entry: 2344 lwB4 Binding IPv6 Address: 2001:db8::1 2346 lwB4 Binding IPv4 Address: 192.0.2.1 2348 lwB4 PSID: 0x34 2350 lwB4 PSID Length 8 2351 BR IPv6 Address: 2001:db8:1::2 2353 2354 2355 2356 mybinding-instance 2357 2358 2359 2001:db8::1 2360 192.0.2.1 2361 2362 52 2363 8 2364 2365 2001:db8:1::2 2366 2367 2368 1024 2369 1540 2370 1500 2371 2372 2373 2375 Figure 3: lw4o6 Binding-Table Configuration XML 2377 A.2. Configuration Example for a MAP-E BR 2379 A MAP-E BR is configured with forward mapping rules for the CEs it is 2380 serving. In this example (taken from [RFC7597], Appendix A, Example 2381 2), the following parameters are required: 2383 o Rule IPv6 Prefix 2385 o Rule IPv4 Prefix 2387 o Rule EA-bit bit length 2389 o IPv6 Address of MAP-BR 2391 The mapping rule has two functions: identifying the destination CE 2392 IPv6 address for encapsulating inbound IPv4 packets and the 2393 validation of outbound IPv4-in-IPv6 packets received from the CE for 2394 de-capsulation. 2396 The transport type for the data plane also needs to be configured for 2397 encapsulation to enable MAP-E and forwarding needs to be enabled. 2399 Consider an example for the following MAP-E Forwarding Mapping Rule: 2401 Data plane: encapsulation 2403 Rule IPv6 Prefix: 2001:db8::/40 2405 Rule IPv4 Prefix: 192.0.2.0/24 2407 Rule EA-bit Length: 16 2409 BR IPv6 Address: 2001:db8:ffff::1 2411 Figure 4 provides the example MAP-E BR configuration xml. 2413 2414 2415 2416 myalgo-instance 2417 2418 2001:db8:ffff::1 2419 2420 16 2421 192.0.2.0/24 2422 2001:db8::/40 2423 true 2424 2425 6 2426 8 2427 2428 2429 2430 2432 Figure 4: MAP-E FMR Configuration XML 2434 A.3. lw4o6 CE Configuration Example 2436 This section provides XML examples for configuring a lw4o6 CE. 2437 Examples for routing and NAT44 are also provided for convienience. 2439 Consider an example for the following lw4o6 CE configuration: 2441 lwB4 Binding IPv6 Address: 2001:db8::1 2443 lwB4 Binding IPv4 Address: 192.0.2.1 2445 lwB4 PSID: 0x34 2446 lwB4 PSID Length 8 2448 BR IPv6 Address: 2001:db8:1::2 2450 2451 2452 2453 lw4o6-wan 2454 iana-tunnel-type:aplusp 2455 2457 2001:db8:1::2 2458 2459 2461 2001:db8::1 2462 2463 2464 2465 2467 Figure 5: lw4o6 CE Configuration XML 2469 In the example depicted in Figure 5, the interface name is defined 2470 for the softwire tunnel. This name is then referenced by the routing 2471 configuration for the IPv4 route. Figure 6 provides an example 2472 configuration for the CE's IPv4 routing, using the YANG module 2473 described in [RFC8349]. 2475 2476 2477 2478 2479 static 2480 v4 2481 2482 2484 2485 0.0.0.0/0 2486 2487 lw4o6-wan 2488 2489 2490 2491 2492 2493 2494 2495 2497 Figure 6: lw4o6 CE Routing Configuration XML 2499 Figure 7 provides an example configuration for the CE's NAPT44 2500 function, using the YANG module described in 2501 [I-D.ietf-opsawg-nat-yang]. 2503 2504 2505 2506 2507 1 2508 2509 1 2510 2511 1 2512 192.0.2.1 2513 2514 2515 2516 6 2517 8 2518 52 2519 2520 2521 2522 1 2523 80 2524 2525 2526 2527 2528 1 2529 8 2530 2531 2532 6 2533 32 2534 2535 2536 17 2537 16 2538 2539 2540 2541 2542 1 2543 192.0.2.1/32 2544 192.168.1.0/24 2545 6 2546 2547 2548 2 2549 192.0.2.1/32 2550 192.168.1.0/24 2551 17 2552 2553 2554 3 2555 192.0.2.1/32 2556 192.168.1.0/24 2557 1 2558 2559 2560 2561 2562 2563 2565 Figure 7: lw4o6 NAT Configuration XML 2567 Authors' Addresses 2569 Yong Cui 2570 Tsinghua University 2571 Beijing 100084 2572 P.R. China 2574 Phone: +86-10-6260-3059 2575 Email: cuiyong@tsinghua.edu.cn 2577 Ian Farrer (editor) 2578 Deutsche Telekom AG 2579 CTO-ATI,Landgrabenweg 151 2580 Bonn, NRW 53227 2581 Germany 2583 Email: ian.farrer@telekom.de 2585 Mohamed Boucadair (editor) 2586 Orange 2587 Rennes 35000 2588 France 2590 Email: mohamed.boucadair@orange.com 2592 Qi Sun 2593 Tsinghua University 2594 Beijing 100084 2595 P.R. China 2597 Phone: +86-10-6278-5822 2598 Email: sunqi.ietf@gmail.com 2600 Linhui Sun 2601 Tsinghua University 2602 Beijing 100084 2603 P.R. China 2605 Phone: +86-10-6278-5822 2606 Email: lh.sunlinh@gmail.com 2607 Sladjana Zechlin 2608 Deutsche Telekom AG 2609 Landgrabenweg 151 2610 Bonn, NRW 53227 2611 Germany 2613 Email: sladjana.zechlin@telekom.de 2615 Rajiv Asati 2616 Cisco Systems, Inc. 2617 7025 Kit Creek Rd. 2618 RTP, NC 27709 2619 USA 2621 Email: Rajiva@cisco.com