idnits 2.17.1 draft-ietf-softwire-yang-09.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 335 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 (October 23, 2018) is 2012 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 2212, 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: April 26, 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 October 23, 2018 17 YANG Modules for IPv4-in-IPv6 Address plus Port Softwires 18 draft-ietf-softwire-yang-09 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. 28 Editorial Note (To be removed by RFC Editor) 30 Please update these statements within this document with the RFC 31 number to be assigned to this document: 33 o "This version of this YANG module is part of RFC XXXX;" 35 o "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 36 Softwires"; 38 o "reference: RFC XXXX" 40 Please update the "revision" date of the YANG module. 42 Status of This Memo 44 This Internet-Draft is submitted in full conformance with the 45 provisions of BCP 78 and BCP 79. 47 Internet-Drafts are working documents of the Internet Engineering 48 Task Force (IETF). Note that other groups may also distribute 49 working documents as Internet-Drafts. The list of current Internet- 50 Drafts is at https://datatracker.ietf.org/drafts/current/. 52 Internet-Drafts are draft documents valid for a maximum of six months 53 and may be updated, replaced, or obsoleted by other documents at any 54 time. It is inappropriate to use Internet-Drafts as reference 55 material or to cite them other than as "work in progress." 57 This Internet-Draft will expire on April 26, 2019. 59 Copyright Notice 61 Copyright (c) 2018 IETF Trust and the persons identified as the 62 document authors. All rights reserved. 64 This document is subject to BCP 78 and the IETF Trust's Legal 65 Provisions Relating to IETF Documents 66 (https://trustee.ietf.org/license-info) in effect on the date of 67 publication of this document. Please review these documents 68 carefully, as they describe your rights and restrictions with respect 69 to this document. Code Components extracted from this document must 70 include Simplified BSD License text as described in Section 4.e of 71 the Trust Legal Provisions and are provided without warranty as 72 described in the Simplified BSD License. 74 Table of Contents 76 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 77 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 78 3. Overview of the Modules . . . . . . . . . . . . . . . . . . . 4 79 3.1. Overall Structure . . . . . . . . . . . . . . . . . . . . 4 80 3.2. Additional Components Configuration . . . . . . . . . . . 5 81 4. Softwire CE YANG Tree Diagram . . . . . . . . . . . . . . . . 6 82 4.1. CE Tree Diagram . . . . . . . . . . . . . . . . . . . . . 6 83 4.2. Softwire CE Tree Diagram Description . . . . . . . . . . 8 84 5. Softwire BR YANG Tree Diagram . . . . . . . . . . . . . . . . 9 85 5.1. BR Tree Diagram . . . . . . . . . . . . . . . . . . . . . 9 86 5.2. Softwire BR Tree Diagram Description . . . . . . . . . . 13 87 6. IANA Tunnel Type YANG Module . . . . . . . . . . . . . . . . 13 88 7. Tunnel Extension to the Interface YANG Module . . . . . . . . 16 89 8. Softwire CE YANG Module . . . . . . . . . . . . . . . . . . . 18 90 9. BR Softwire YANG Module . . . . . . . . . . . . . . . . . . . 24 91 10. Common Softwire Element Groups YANG Module . . . . . . . . . 36 92 11. Security Considerations . . . . . . . . . . . . . . . . . . . 44 93 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 94 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 47 95 14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 47 96 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 97 15.1. Normative References . . . . . . . . . . . . . . . . . . 47 98 15.2. Informative References . . . . . . . . . . . . . . . . . 49 99 Appendix A. Configutation Examples . . . . . . . . . . . . . . . 50 100 A.1. Configuration Example for a lw4o6 BR Binding-Table . . . 50 101 A.2. Configuration Example for a MAP-E BR . . . . . . . . . . 51 102 A.3. lw4o6 CE Configuration Example . . . . . . . . . . . . . 52 103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 105 1. Introduction 107 The IETF softwire working group has developed several IPv4-in-IPv6 108 softwire mechanisms to address various deployment contexts and 109 constraints. As a companion to the architectural specification 110 documents, this document focuses on the provisioning of address plus 111 port (A+P) softwire functional elements: Border Routers (BRs) and 112 Customer Premises Equipment (CEs, a.k.a., CPE). The softwire 113 mechanisms covered in this document are Lightweight 4 over 6 114 [RFC7596], Mapping of Address and Port with Encapsulation (MAP-E) 115 [RFC7597], and Mapping of Address and Port using Translation (MAP-T) 116 [RFC7599]. 118 This document focuses on A+P mechanisms; the reader can refer to 119 [I-D.ietf-softwire-dslite-yang] for a YANG module for DS-Lite 120 [RFC6333]. 122 This document defines YANG data modules [RFC7950] that can be used to 123 configure and manage A+P softwire elements using the NETCONF protocol 124 [RFC6241] for: 126 o Configuration 128 o Operational State 130 o Notifications 132 2. Terminology 134 The reader should be familiar with the concepts and terms defined in 135 [RFC7596], [RFC7597], [RFC7599], and the YANG data modelling language 136 defined in [RFC7950]. 138 The adopts the Network Management Datastore Architecture (NMDA) 139 [RFC8342]. The meaning of the symbols in tree diagrams is defined in 140 [RFC8340]. 142 The document uses BR to refer to MAP BR [RFC7597] or Lightweight 143 4over6 BR [RFC7596]. 145 For simplicity, "algorithm" is used to refer to "mapping algorithm" 146 [RFC7597]. 148 3. Overview of the Modules 150 3.1. Overall Structure 152 This document specifies the initial version of an IANA-maintained 153 module (iana-tunnel-type) to identify a collection of tunnel types 154 assigned by IANA (Section 6). Furthermore, the document augments the 155 Interface YANG module [RFC8343] with a new parameter which is meant 156 to indicate the type of a given tunnel (ietf-interface-tunnel, 157 Section 7). The tree structure of the ietf-interface-tunnel module 158 is shown below: 160 module: ietf-interface-tunnel 161 augment /if:interfaces/if:interface: 162 +--rw tunnel-type? identityref 164 Moreover, the document defines the following two YANG data modules 165 for the configuration and monitoring of softwire functional elements: 167 ietf-softwire-ce Provides configuration and monitoring for 168 softwire CE element. This module is defined as 169 augments to the interface YANG module 170 [RFC8343]. 172 ietf-softwire-br Provides configuration and monitoring for 173 softwire BR element. 175 In addition, the following module is defined: 177 ietf-softwire-common Contains groups of common functions that are 178 imported into the CE and BR modules. 180 This approach has been taken so that the various modules can be 181 easily extended to support additional softwire mechanisms, if 182 required. 184 Within the BR and CE modules, the YANG "feature" statement is used to 185 distinguish which of the different softwire mechanism(s) is relevant 186 for a specific element's configuration. For each module, a choice 187 statement 'ce-type' is included for either 'binding' or 'algorithm'. 188 'Binding' is used for configuring Lightweight 4over6, whereas 189 'algorithm' is used for configuring MAP-T or MAP-E. 191 In the 'algo-instances' container, a choice statement 'data-plane' is 192 included to specify MAP-E (encapsulation) or MAP-T (translation). 194 Table 1 shows how these choices are used to indicate the desired 195 softwire mechanism: 197 +--------------------+-----------+---------------+ 198 | S46 Mechanism | ce-type? | data-plane? | 199 +--------------------+-----------+---------------+ 200 | Lightweight 4over6 | binding | n/a | 201 | MAP-E | algorithm | encapsulation | 202 | MAP-T | algorithm | translation | 203 +--------------------+-----------+---------------+ 205 Table 1: Softwire Mechanism Choice Statement Enumeration 207 NETCONF notifications are also included. 209 Note: Earlier versions of this specification combined the softwire 210 mechanisms by their associated technologies rather than their 211 function in the architecture. As the document was revised, it 212 became apparent that dividing the modules by their role in the 213 architecture (CE or BR) was a better approach as this follows the 214 intended function and existing implementation approaches more 215 closely. 217 3.2. Additional Components Configuration 219 The softwire modules only aim to provide configuration relevant for 220 softwires. In order to fully provision a CE element, the following 221 may also be necessary: 223 o IPv6 forwarding and routing configuration, to enable CE to obtain 224 one or more IPv6 prefixes for softwire usage. A YANG module for 225 routing management is described in [RFC8349]. 227 o IPv4 routing configuration, to add one or more IPv4 destination 228 prefix(es) reachable via the configured softwire. A YANG module 229 for routing management is described in [RFC8349]. 231 o Stateful NAT44/NAPT management, to optionally specify a port set 232 (Port Set Identifier (PSID)) along with its length. A YANG module 233 for NAT management is described in [I-D.ietf-opsawg-nat-yang]. 235 o Stateless NAT46 management, required by softwire translation based 236 mechanisms (i.e., the assignment of a Network-Specific Prefix to 237 use for IPv4/IPv6 translation). A YANG module for NAT management 238 is described in [I-D.ietf-opsawg-nat-yang]. 240 As YANG modules for the above functions are already defined in other 241 documents, their functionality is not duplicated here and they should 242 be referred to, as needed. Appendix A.3 provides XML examples of how 243 these modules can be used together. 245 The CE must already have minimal IPv6 configuration in place so it is 246 reachable by the NETCONF client to obtain softwire configuration. If 247 additional IPv6 specific configuration is necessary, the YANG modules 248 defined in [RFC8344] and [RFC8349] may be used. 250 4. Softwire CE YANG Tree Diagram 252 4.1. CE Tree Diagram 254 The CE module provides configuration and monitoring for all of the 255 softwire mechanisms covered in this document (i.e., Lightweight 256 4over6, MAP-E, and MAP-T). 258 This module augments "ietf-interfaces", defined in [RFC8343] with an 259 entry for the softwire. This entry can be referenced to configure 260 IPv4 forwarding features for the element. This entry is added only 261 if tunnel-type (Section 7) is set to 'aplusp'. 263 Figure 1 shows the tree structure of the softwire CE YANG module: 265 module: ietf-softwire-ce 266 augment /if:interfaces/if:interface: 267 +--rw softwire-payload-mtu? uint16 268 +--rw softwire-path-mru? uint16 269 +--rw (ce-type)? 270 +--:(binding) {binding-mode}? 271 | +--rw binding-ipv6info? union 272 | +--rw br-ipv6-addr inet:ipv6-address 273 +--:(algo) {map-e or map-t}? 274 +--rw algo-instances 275 +--rw algo-instance* [id] 276 +--rw id uint32 277 +--rw enable? boolean 278 +--rw algo-versioning 279 | +--rw version? uint64 280 | +--rw date? yang:date-and-time 281 +--rw name? string 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 291 augment /if:interfaces/if:interface/if:statistics: 292 +--ro sent-ipv4-packets? 293 | yang:zero-based-counter64 294 +--ro sent-ipv4-bytes? 295 | yang:zero-based-counter64 296 +--ro sent-ipv6-packets? 297 | yang:zero-based-counter64 298 +--ro sent-ipv6-bytes? 299 | yang:zero-based-counter64 300 +--ro rcvd-ipv4-packets? 301 | yang:zero-based-counter64 302 +--ro rcvd-ipv4-bytes? 303 | yang:zero-based-counter64 304 +--ro rcvd-ipv6-packets? 305 | yang:zero-based-counter64 306 +--ro rcvd-ipv6-bytes? 307 | yang:zero-based-counter64 308 +--ro dropped-ipv4-packets? 309 | yang:zero-based-counter64 310 +--ro dropped-ipv4-bytes? 311 | yang:zero-based-counter64 312 +--ro dropped-ipv6-packets? 313 | yang:zero-based-counter64 314 +--ro dropped-ipv6-bytes? 315 | yang:zero-based-counter64 316 +--ro dropped-ipv4-fragments? 317 | yang:zero-based-counter64 318 +--ro dropped-ipv4-fragment-bytes? 319 | yang:zero-based-counter64 320 +--ro ipv6-fragments-reassembled? 321 | yang:zero-based-counter64 322 +--ro ipv6-fragments-bytes-reassembled? 323 | yang:zero-based-counter64 324 +--ro out-icmpv4-error-packets? 325 | yang:zero-based-counter64 326 +--ro out-icmpv4-error-bytes? 327 | yang:zero-based-counter64 328 +--ro out-icmpv6-error-packets? 329 | yang:zero-based-counter64 330 +--ro out-icmpv6-error-bytes? 331 yang:zero-based-counter64 333 notifications: 334 +---n softwire-ce-event {binding-mode}? 335 +--ro ce-binding-ipv6-addr-change inet:ipv6-address 337 Figure 1: Softwire CE YANG Tree Diagram 339 4.2. Softwire CE Tree Diagram Description 341 Additional information related to the operation of a CE element is 342 provided below: 344 o softwire-payload-mtu: optionally used to set the IPv4 MTU for the 345 softwire. Needed if the softwire implementation is unable to 346 correctly calculate the correct IPv4 Maximum Transit Unit (MTU) 347 size automatically. 349 o softwire-path-mru: optionally used to set the maximum IPv6 350 softwire packet size that can be received, including the 351 encapsulation/translation overhead. Needed if the softwire 352 implementation is unable to correctly calculate the correct IPv4 353 Maximum Receive Unit (MRU) size automatically [RFC4213]. 355 o ce-type: provides a choice statement allowing the binding or 356 algorithmic softwire mechanisms to be selected. 358 Further details relevant to binding softwire elements are: 360 o binding-ipv6info: used to set the IPv6 binding prefix type to 361 identify which IPv6 address to use as the tunnel source. It can 362 be 'ipv6-prefix' or 'ipv6-address'. 364 o br-ipv6-addr: sets the IPv6 address of the remote BR. 366 Additional details relevant to some of the important algorithmic 367 elements are provided below: 369 o algo-versioning: optionally used to add an incremental version 370 number and/or timestamp to the algorithm. This can be used for 371 logging/data retention purposes [RFC7422]. The version number is 372 incremented and a new timestamp value written whenever a change is 373 made to the algorithm or a new instance is created. 375 o forwarding: specifies whether the rule can be used as a Forward 376 Mapping Rule (FMR). If not set, this rule is a Basic Mapping Rule 377 (BMR) only and must not be used for forwarding. Refer to 378 Section 4.1 of [RFC7598]. 380 o ea-len: used to set the length of the Embedded-Address (EA), which 381 is defined in the mapping rule for a MAP domain. 383 o data-plane: provides a choice statement for either encapsulation 384 (MAP-E) or translation (MAP-T). 386 o br-ipv6-addr: defines the IPv6 address of the BR. This 387 information is valid for MAP-E. 389 o dmr-ipv6-prefix: defines the Default Mapping Rule (DMR) IPv6 390 prefix of the BR. This information is valid for MAP-T. 392 Additional information on the notification node is listed below: 394 o ce-binding-ipv6-addr-change: if the CE's binding IPv6 address 395 changes for any reason, the NETCONF client will be notified. 397 5. Softwire BR YANG Tree Diagram 399 5.1. BR Tree Diagram 401 The BR YANG module provides configuration and monitoring for all of 402 the softwire mechanisms covered in this document (i.e., Lightweight 403 4over6, MAP-E, and MAP-T). 405 Figure 2 provides the tree structure of this module: 407 module: ietf-softwire-br 408 +--rw br-instances 409 +--rw (br-type)? 410 +--:(binding) {binding-mode}? 411 | +--rw binding 412 | +--rw bind-instances* [id] 413 | +--rw binding-table-versioning 414 | | +--rw version? uint64 415 | | +--rw date? yang:date-and-time 416 | +--rw id uint32 417 | +--rw name? string 418 | +--rw softwire-num-max uint32 419 | +--rw softwire-payload-mtu uint16 420 | +--rw softwire-path-mru uint16 421 | +--rw enable-hairpinning? boolean 422 | +--rw binding-table 423 | | +--rw binding-entry* [binding-ipv6info] 424 | | +--rw binding-ipv6info union 425 | | +--rw binding-ipv4-addr? 426 | | | inet:ipv4-address 427 | | +--rw port-set 428 | | | +--rw psid-offset? uint8 429 | | | +--rw psid-len uint8 430 | | | +--rw psid uint16 431 | | +--rw br-ipv6-addr? 432 | | inet:ipv6-address 433 | +--rw icmp-policy 434 | | +--rw icmpv4-errors 435 | | | +--rw allow-incoming-icmpv4? boolean 436 | | | +--rw icmpv4-rate? uint32 437 | | | +--rw generate-icmpv4-errors? boolean 438 | | +--rw icmpv6-errors 439 | | +--rw generate-icmpv6-errors? boolean 440 | | +--rw icmpv6-rate? uint32 441 | +--ro traffic-stat 442 | +--ro discontinuity-time yang:date-and-time 443 | +--ro sent-ipv4-packets? 444 | | yang:zero-based-counter64 445 | +--ro sent-ipv4-bytes? 446 | | yang:zero-based-counter64 447 | +--ro sent-ipv6-packets? 448 | | yang:zero-based-counter64 449 | +--ro sent-ipv6-bytes? 450 | | yang:zero-based-counter64 451 | +--ro rcvd-ipv4-packets? 452 | | yang:zero-based-counter64 453 | +--ro rcvd-ipv4-bytes? 454 | | yang:zero-based-counter64 455 | +--ro rcvd-ipv6-packets? 456 | | yang:zero-based-counter64 457 | +--ro rcvd-ipv6-bytes? 458 | | yang:zero-based-counter64 459 | +--ro dropped-ipv4-packets? 460 | | yang:zero-based-counter64 461 | +--ro dropped-ipv4-bytes? 462 | | yang:zero-based-counter64 463 | +--ro dropped-ipv6-packets? 464 | | yang:zero-based-counter64 465 | +--ro dropped-ipv6-bytes? 466 | | yang:zero-based-counter64 467 | +--ro dropped-ipv4-fragments? 468 | | yang:zero-based-counter64 469 | +--ro dropped-ipv4-fragment-bytes? 470 | | yang:zero-based-counter64 471 | +--ro ipv6-fragments-reassembled? 472 | | yang:zero-based-counter64 473 | +--ro ipv6-fragments-bytes-reassembled? 474 | | yang:zero-based-counter64 475 | +--ro out-icmpv4-error-packets? 476 | | yang:zero-based-counter64 477 | +--ro out-icmpv4-error-bytes? 478 | | yang:zero-based-counter64 479 | +--ro out-icmpv6-error-packets? 480 | | yang:zero-based-counter64 481 | +--ro out-icmpv6-error-bytes? 482 | | yang:zero-based-counter64 483 | +--ro dropped-icmpv4-packets? 484 | | yang:zero-based-counter64 485 | +--ro dropped-icmpv4-bytes? 486 | | yang:zero-based-counter64 487 | +--ro hairpin-ipv4-packets? 488 | | yang:zero-based-counter64 489 | +--ro hairpin-ipv4-bytes? 490 | | yang:zero-based-counter64 491 | +--ro active-softwire-num? 492 | uint32 493 +--:(algo) {map-e or map-t}? 494 +--rw algorithm 495 +--rw algo-instances* [id] 496 +--rw id uint32 497 +--rw enable? boolean 498 +--rw algo-versioning 499 | +--rw version? uint64 500 | +--rw date? yang:date-and-time 501 +--rw name? string 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-id? 561 | | -> /br-instances/binding/bind-instances/id 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-id 567 | -> /br-instances/algorithm/algo-instances/id 568 +--ro invalid-entry-id* 569 | -> /br-instances/algorithm/algo-instances/id 570 +--ro added-entry* 571 | -> /br-instances/algorithm/algo-instances/id 572 +--ro modified-entry* 573 -> /br-instances/algorithm/algo-instances/id 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 add an incremental 584 version number and/or timestamp to the binding table. This can be 585 used for logging or data retention purposes [RFC7422]. The 586 version number is incremented and a new timestamp value written 587 whenever a change is made to the contents of the binding table or 588 a new binding table list is created. 590 o binding-entry: used to define the binding relationship between 591 3-tuples {lwB4's IPv6 address/prefix, the allocated IPv4 address, 592 restricted port-set}. For detail information, please refer to 593 [RFC7596]. 595 o softwire-num-max: used to set the maximum number of softwire 596 binding rules that can be created on the lw4o6 element 597 simultaneously. This paramter must not be set to zero because 598 this is equivalent to disabling the BR instance. 600 o active-softwire-num: holds the number of softwires currently 601 provisioned on the BR element. 603 Additional information on some of the important notification nodes is 604 listed below: 606 o invalid-entry, added-entry, modified-entry: used to notify the 607 NETCONF client that a specific binding entry or MAP rule has 608 expired, been invalidated, added, or modified. 610 6. IANA Tunnel Type YANG Module 612 The iana-tunnel-type module imports the module defined in [RFC7224]. 614 file "iana-tunnel-type@2018-10-23.yang" 616 module iana-tunnel-type { 617 yang-version 1.1; 618 namespace "urn:ietf:params:xml:ns:yang:iana-tunnel-type"; 619 prefix iana-tunnel-type; 621 import iana-if-type { 622 prefix ift; 623 reference 624 "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 data types defined 642 by IANA and used for tunnel types. 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 } 670 identity direct { 671 base ift:tunnel; 672 description 673 "No intermediate header."; 675 } 676 identity gre { 677 base ift:tunnel; 678 description 679 "GRE encapsulation."; 680 } 681 identity minimal { 682 base ift:tunnel; 683 description 684 "Minimal encapsulation."; 685 } 686 identity l2tp { 687 base ift:tunnel; 688 description 689 "L2TP encapsulation."; 690 } 691 identity pptp { 692 base ift:tunnel; 693 description 694 "PPTP encapsulation."; 695 } 696 identity l2f { 697 base ift:tunnel; 698 description 699 "L2F encapsulation."; 700 } 701 identity udp { 702 base ift:tunnel; 703 description 704 "UDP encapsulation."; 705 } 706 identity atmp { 707 base ift:tunnel; 708 description 709 "ATMP encapsulation."; 710 } 711 identity msdp { 712 base ift:tunnel; 713 description 714 "MSDP encapsulation."; 715 } 716 identity sixtofour { 717 base ift:tunnel; 718 description 719 "6to4 encapsulation."; 720 } 721 identity sixoverfour { 722 base ift:tunnel; 723 description 724 "6over4 encapsulation."; 725 } 726 identity isatap { 727 base ift:tunnel; 728 description 729 "ISATAP encapsulation."; 730 } 731 identity teredo { 732 base ift:tunnel; 733 description 734 "Teredo encapsulation."; 735 } 736 identity iphttps { 737 base ift:tunnel; 738 description 739 "IP over HTTPS."; 740 } 741 identity softwiremesh { 742 base ift:tunnel; 743 description 744 "softwire mesh tunnel."; 745 } 746 identity dslite { 747 base ift:tunnel; 748 description 749 "DS-Lite tunnel."; 750 } 751 // TBD: IANA to register this new value. 752 identity aplusp { 753 base ift:tunnel; 754 description 755 "A+P encapsulation."; 756 } 757 } 758 760 7. Tunnel Extension to the Interface YANG Module 762 The ietf-interface-tunnel module imports the modules defined in 763 [RFC7224] and [RFC8343]. 765 file "ietf-interface-tunnel@2018-10-23.yang" 767 module ietf-interface-tunnel { 768 yang-version 1.1; 770 namespace "urn:ietf:params:xml:ns:yang:ietf-interface-tunnel"; 771 prefix ietf-interface-tunnel; 773 import ietf-interfaces { 774 prefix if; 775 reference 776 "RFC 8343: A YANG Data Model for Interface Management"; 777 } 779 import iana-if-type { 780 prefix ift; 781 reference 782 "RFC 7224: IANA Interface Type YANG Module"; 783 } 785 organization "IETF xxx Working Group"; 787 contact 789 "WG Web: 790 WG List: 792 Editor: Mohamed Boucadair 793 "; 795 description 796 "This module is a YANG module for associating a tunnel type with 797 tunnel interfaces. 799 Copyright (c) 2018 IETF Trust and the persons identified as 800 authors of the code. All rights reserved. 802 Redistribution and use in source and binary forms, with or 803 without modification, is permitted pursuant to, and subject 804 to the license terms contained in, the Simplified BSD License 805 set forth in Section 4.c of the IETF Trust's Legal Provisions 806 Relating to IETF Documents 807 (http://trustee.ietf.org/license-info). 809 This version of this YANG module is part of RFC XXXX; see 810 the RFC itself for full legal notices."; 812 revision 2018-10-23 { 813 description 814 "Initial revision."; 815 reference 816 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 817 Softwires"; 818 } 819 augment "/if:interfaces/if:interface" { 820 when 'derived-from(if:type, "ift:tunnel")'; 821 description 822 "Augments Interface module with tunnel-specific parameters. 824 IANA interface types are maintained at this registry: 825 https://www.iana.org/assignments/ianaiftype-mib/ianaiftype-mib. 827 tunnel (131), -- Encapsulation interface"; 829 leaf tunnel-type { 830 type identityref { 831 base ift:tunnel; 832 } 833 description 834 "Indicates the type of the tunnel. It corresponds 835 to the IANAtunnelType. 837 IANA tunnel types are maintained at this registry: 838 https://www.iana.org/assignments/ianaiftype-mib/ 839 ianaiftype-mib."; 840 } 841 } 842 } 843 845 8. Softwire CE YANG Module 847 This module imports the modules defined in [RFC6991], [RFC8343], and 848 [RFC7224]. It also imports the 'ietf-softwire-common' module. 850 file "ietf-softwire-ce@2018-10-23.yang" 852 module ietf-softwire-ce { 853 yang-version 1.1; 854 namespace "urn:ietf:params:xml:ns:yang:ietf-softwire-ce"; 855 prefix softwire-ce; 857 import ietf-inet-types { 858 prefix inet; 859 reference "Section 4 of RFC 6991"; 860 } 862 import ietf-interfaces { 863 prefix if; 864 reference "RFC 8343: A YANG Data Model for Interface Management"; 865 } 866 import ietf-softwire-common { 867 prefix softwire-common; 868 reference 869 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 870 Softwires"; 871 } 872 import iana-tunnel-type { 873 prefix iana-tunnel-type; 874 reference 875 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 876 Softwires"; 877 } 878 import ietf-interface-tunnel { 879 prefix ift; 880 reference 881 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 882 Softwires"; 883 } 885 organization 886 "IETF Softwire Working Group"; 887 contact 888 "WG Web: 889 WG List: 891 Author: Qi Sun 892 894 Author: Linhui Sun 895 897 Author: Yong Cui 898 900 Author: Ian Farrer 901 903 Author: Sladjana Zoric 904 906 Author: Mohamed Boucadair 907 909 Author: Rajiv 910 "; 911 description 912 "This document defines a YANG data module for the configuration and 913 management of A+P Softwire Customer Premises Equipment (CEs). It 914 covers Lightweight 4over6, MAP-E, and MAP-T mechanisms. 916 Copyright (c) 2018 IETF Trust and the persons identified as 917 authors of the code. All rights reserved. 919 Redistribution and use in source and binary forms, with or 920 without modification, is permitted pursuant to, and subject 921 to the license terms contained in, the Simplified BSD License 922 set forth in Section 4.c of the IETF Trust's Legal Provisions 923 Relating to IETF Documents 924 (http://trustee.ietf.org/license-info). 926 This version of this YANG module is part of RFC XXXX; see 927 the RFC itself for full legal notices."; 929 revision 2018-10-23 { 930 description 931 "Initial revision."; 932 reference 933 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 934 Softwires"; 935 } 937 /* 938 * Features 939 */ 941 feature binding-mode { 942 description 943 "Binding is used for configuring the Lightweight 4over6 mechanism. 945 Binding based softwire mechanisms are IPv4-over-IPv6 tunnelling 946 transition mechanisms specifically intended for complete 947 independence between the IPv6 subnet prefix (and IPv6 address) 948 and IPv4 address, with or without IPv4 address sharing. 950 This is accomplished by maintaining state for each softwire 951 (per-subscriber state) in the central Border Relay (BR) and using 952 a hub-and-spoke forwarding architecture. In order to delegate the 953 NAPT function and achieve IPv4 address sharing, port-restricted 954 IPv4 addresses needs to be allocated to CEs. 956 This feature indicates that the instance functions as a binding 957 based softwire instance."; 958 reference 959 "RFC7596: Lightweight 4over6: An Extension to the Dual-Stack Lite 960 Architecture 961 RFC7597: Mapping of Address and Port with Encapsulation (MAP-E) 962 RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 963 } 965 feature map-e { 966 description 967 "MAP-E is an IPv6 transition mechanism for transporting IPv4 968 packets across an IPv6 network using IP encapsulation. MAP-E 969 allows for a reduction of the amount of centralized state using 970 rules to express IPv4/IPv6 address mappings. This introduces an 971 algorithmic relationship between the IPv6 subnet and IPv4 972 address. 974 This feature indicates that the instance functions as a MAP-E."; 975 reference 976 "RFC7597: Mapping of Address and Port with Encapsulation (MAP-E)"; 977 } 979 feature map-t { 980 description 981 "MAP-T is an IPv6 transition mechanism for transporting IPv4 982 packets across an IPv6 network using IP translation. It leverages 983 a double stateless NAT64 based solution as well as the stateless 984 algorithmic address & transport layer port mapping algorithm 985 defined for MAP-E. 987 This feature indicates that the instance functions as a MAP-T 988 instance."; 989 reference 990 "RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 991 } 993 // Binding Entry 995 grouping binding-entry { 996 description 997 "The binding BR (Border Relay) maintains an address binding table 998 that contains the binding between the CE's IPv6 address, 999 the allocated IPv4 address and restricted port-set."; 1000 leaf binding-ipv6info { 1001 type union { 1002 type inet:ipv6-address; 1003 type inet:ipv6-prefix; 1004 } 1005 description 1006 "The IPv6 information for a binding entry. 1008 When the IPv6 prefix type is used, 1009 the IPv6 source address of the CE is constructed 1010 according to the description in RFC7596. 1012 If the IPv6 address type is used, the CE can use 1013 any valid /128 address from a prefix assigned to 1014 the CE."; 1015 reference "Section 5.1 of RFC7596."; 1016 } 1017 leaf br-ipv6-addr { 1018 type inet:ipv6-address; 1019 mandatory true; 1020 description 1021 "The IPv6 address of the binding BR."; 1022 } 1023 } 1025 // configuration and stateful parameters for softwire CE interface 1027 augment "/if:interfaces/if:interface" { 1028 when "derived-from(ift:tunnel-type, 'iana-tunnel-type:aplusp')"; 1029 description 1030 "Softwire CE interface configuration"; 1031 leaf softwire-payload-mtu { 1032 type uint16; 1033 units "bytes"; 1034 description 1035 "The payload IPv4 MTU for the softwire tunnel."; 1036 } 1037 leaf softwire-path-mru { 1038 type uint16; 1039 units "bytes"; 1040 description 1041 "The path MRU for the softwire (payload + encapsulation 1042 overhead)."; 1043 } 1044 choice ce-type { 1045 description 1046 "Sets the softwire CE mechanism"; 1047 case binding { 1048 if-feature "binding-mode"; 1049 description 1050 "CE binding configuration"; 1051 uses binding-entry; 1052 } 1053 case algo { 1054 if-feature "map-e or map-t"; 1055 description 1056 "CE algorithm configuration"; 1057 container algo-instances { 1058 description 1059 "Indicates that the instances supports the MAP-E 1060 and/or MAP-T function. The instances advertise 1061 the MAP-E/MAP-T feature through the capability 1062 exchange mechanism when a NETCONF session is 1063 established."; 1064 list algo-instances { 1065 key "id"; 1066 description 1067 "MAP forwarding rule instance for 1068 MAP-E/MAP-T"; 1069 leaf id { 1070 type uint32; 1071 mandatory true; 1072 description 1073 "Algorithm Instance ID. 1075 This identifier can be automatically assigned 1076 or explicitly configured."; 1077 } 1078 uses softwire-common:algorithm-instance; 1079 } 1080 } 1081 } 1082 } 1083 } 1084 augment "/if:interfaces/if:interface/if:statistics" { 1085 when "derived-from(../ift:tunnel-type, 'iana-tunnel-type:aplusp')"; 1086 description 1087 "Softwire CE interface statistics."; 1088 uses softwire-common:traffic-stat; 1089 } 1091 /* 1092 * Notifications 1093 */ 1095 notification softwire-ce-event { 1096 if-feature "binding-mode"; 1097 description 1098 "CE notification"; 1099 leaf ce-binding-ipv6-addr-change { 1100 type inet:ipv6-address; 1101 mandatory true; 1102 description 1103 "This notification is generated whenever the CE's binding IPv6 1104 address changes for any reason."; 1105 } 1107 } 1108 } 1109 1111 9. BR Softwire YANG Module 1113 This module imports typedefs from [RFC6991]. It also imports the 1114 'ietf-softwire-common' module. 1116 file "ietf-softwire-br@2018-10-23.yang" 1118 module ietf-softwire-br { 1119 yang-version 1.1; 1120 namespace "urn:ietf:params:xml:ns:yang:ietf-softwire-br"; 1121 prefix softwire-br; 1123 import ietf-inet-types { 1124 prefix inet; 1125 reference "Section 4 of RFC 6991"; 1126 } 1127 import ietf-yang-types { 1128 prefix yang; 1129 reference "Section 3 of RFC 6991"; 1130 } 1131 import ietf-softwire-common { 1132 prefix softwire-common; 1133 reference 1134 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 1135 Softwires"; 1136 } 1138 organization 1139 "IETF Softwire Working Group"; 1140 contact 1141 "WG Web: 1142 WG List: 1144 Author: Qi Sun 1145 1147 Author: Linhui Sun 1148 1150 Author: Yong Cui 1151 1153 Author: Ian Farrer 1154 1156 Author: Sladjana Zoric 1157 1159 Author: Mohamed Boucadair 1160 1162 Author: Rajiv 1163 "; 1164 description 1165 "This document defines a YANG data module for the configuration and 1166 management of A+P Softwire Border Routers. It covers Lightweight 1167 4over6, MAP-E, and MAP-T mechanisms. 1169 Copyright (c) 2018 IETF Trust and the persons identified as 1170 authors of the code. All rights reserved. 1172 Redistribution and use in source and binary forms, with or 1173 without modification, is permitted pursuant to, and subject 1174 to the license terms contained in, the Simplified BSD License 1175 set forth in Section 4.c of the IETF Trust's Legal Provisions 1176 Relating to IETF Documents 1177 (http://trustee.ietf.org/license-info). 1179 This version of this YANG module is part of RFC XXXX; see 1180 the RFC itself for full legal notices."; 1182 revision 2018-10-23 { 1183 description 1184 "Initial revision."; 1185 reference 1186 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 1187 Softwires"; 1188 } 1190 /* 1191 * Groupings 1192 */ 1194 grouping port-set { 1195 description 1196 "Describes a set of layer 4 port numbers. 1198 This may be a simple port range, or use the Port Set 1199 Identifier (PSID) algorithm to represent a range of transport 1200 layer ports which will be used by a NAPT."; 1201 leaf psid-offset { 1202 type uint8 { 1203 range "0..16"; 1205 } 1206 description 1207 "The number of offset bits. In Lightweight 4over6, 1208 the default value is 0 for assigning one contiguous 1209 port range. In MAP-E/T, the default value is 6, 1210 which means the system ports (0-1023) are excluded by 1211 default and the assigned port ranges are distributed across the 1212 entire port space, depending on either psid-len or the 1213 number of contiguous ports."; 1214 } 1215 leaf psid-len { 1216 type uint8 { 1217 range "0..15"; 1218 } 1219 mandatory true; 1220 description 1221 "The length of PSID, representing the sharing 1222 ratio for an IPv4 address. This, along with ea-len, can 1223 be used to calculate the number of contiguous ports per 1224 port range"; 1225 } 1226 leaf psid { 1227 type uint16; 1228 mandatory true; 1229 description 1230 "Port Set Identifier (PSID) value, which 1231 identifies a set of ports algorithmically."; 1232 } 1233 } 1235 grouping binding-entry { 1236 description 1237 "The binding BR maintains an address binding table that 1238 contains the binding between the CE's IPv6 address, 1239 the allocated IPv4 address and restricted port-set."; 1240 leaf binding-ipv6info { 1241 type union { 1242 type inet:ipv6-address; 1243 type inet:ipv6-prefix; 1244 } 1245 description 1246 "The IPv6 information for a CE binding entry. 1247 When the IPv6 prefix type is used, 1248 the IPv6 source address of the CE is constructed 1249 according to the description in RFC7596; 1250 if the IPv6 address type is used, the CE can use 1251 any valid /128 address from a prefix assigned to 1252 the CE."; 1254 reference 1255 "RFC7596: Lightweight 4over6: An Extension to the Dual-Stack 1256 Lite Architecture"; 1257 } 1258 leaf binding-ipv4-addr { 1259 type inet:ipv4-address; 1260 description 1261 "The IPv4 address assigned to the binding CE, 1262 which is used as the IPv4 external address 1263 for binding CE local NAPT44."; 1264 } 1265 container port-set { 1266 description 1267 "For Lightweight 4over6, the default value 1268 for offset should be 0, to configure one contiguous 1269 port range."; 1270 uses port-set { 1271 refine "psid-offset" { 1272 default "0"; 1273 } 1274 } 1275 } 1276 leaf br-ipv6-addr { 1277 type inet:ipv6-address; 1278 description 1279 "The IPv6 address for binding BR."; 1280 } 1281 } 1283 /* 1284 * Features 1285 */ 1287 feature binding-mode { 1288 description 1289 "Binding is used for configuring the Lightweight 4over6 mechanism. 1291 Binding based softwire mechanisms are IPv4-over-IPv6 tunnelling 1292 transition mechanisms specifically intended for complete 1293 independence between the IPv6 subnet prefix (and IPv6 address) 1294 and IPv4 address, with or without IPv4 address sharing. 1296 This is accomplished by maintaining state for each softwire 1297 (per-subscriber state) in the central Border Relay (BR) and using 1298 a hub-and-spoke forwarding architecture. In order to delegate the 1299 NAPT function and achieve IPv4 address sharing, port-restricted 1300 IPv4 addresses needs to be allocated to CEs. 1302 This feature indicates that the instance functions as a binding 1303 based softwire instance."; 1304 reference 1305 "RFC7596: Lightweight 4over6: An Extension to the Dual-Stack Lite 1306 Architecture 1307 RFC7597: Mapping of Address and Port with Encapsulation (MAP-E) 1308 RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 1309 } 1311 feature map-e { 1312 description 1313 "MAP-E is an IPv6 transition mechanism for transporting IPv4 1314 packets across an IPv6 network using IP encapsulation. MAP-E 1315 allows for a reduction of the amount of centralized state using 1316 rules to express IPv4/IPv6 address mappings. This introduces an 1317 algorithmic relationship between the IPv6 subnet and IPv4 1318 address. 1320 This feature indicates that the instance functions as a MAP-E."; 1321 reference 1322 "RFC7597: Mapping of Address and Port with Encapsulation (MAP-E)"; 1323 } 1325 feature map-t { 1326 description 1327 "MAP-T is an IPv6 transition mechanism for transporting IPv4 1328 packets across an IPv6 network using IP translation. It leverages 1329 a double stateless NAT64 based solution as well as the stateless 1330 algorithmic address & transport layer port mapping algorithm 1331 defined for MAP-E. 1333 This feature indicates that the instance functions as a MAP-T 1334 instance."; 1335 reference 1336 "RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 1337 } 1339 container br-instances { 1340 description 1341 "BR Instances"; 1342 choice br-type { 1343 description 1344 "Select binding or algorithmic BR functionality."; 1345 case binding { 1346 if-feature "binding-mode"; 1347 container binding { 1348 description 1349 "binding mechanism (binding table) configuration."; 1351 list bind-instances { 1352 key "id"; 1353 description 1354 "A set of binding instances to be configured."; 1355 leaf id { 1356 type uint32; 1357 mandatory true; 1358 description 1359 "A binding instance identifier. 1361 This identifier can be automatically assigned 1362 or explicitly configured."; 1363 } 1364 container binding-table-versioning { 1365 description 1366 "binding table's version"; 1367 leaf version { 1368 type uint64; 1369 description 1370 "Incremental version number of the binding 1371 table"; 1372 } 1373 leaf date { 1374 type yang:date-and-time; 1375 description 1376 "Timestamp of the binding table"; 1377 reference 1378 "RFC7422: Deterministic Address Mapping to Reduce 1379 Logging in Carrier-Grade NAT Deployments"; 1380 } 1381 } 1382 leaf name { 1383 type string; 1384 description 1385 "The name for the binding BR. It is used to uniquely 1386 distinguish a binding instance by its name."; 1387 } 1388 leaf softwire-num-max { 1389 type uint32; 1390 must ". >= 1"; 1391 mandatory true; 1392 description 1393 "The maximum number of softwires that can be created 1394 on the binding BR."; 1395 } 1396 leaf softwire-payload-mtu { 1397 type uint16; 1398 units "bytes"; 1399 mandatory true; 1400 description 1401 "The payload IPv4 MTU for binding softwire."; 1402 } 1403 leaf softwire-path-mru { 1404 type uint16; 1405 units "bytes"; 1406 mandatory true; 1407 description 1408 "The path MRU for binding softwire."; 1409 reference 1410 "RFC4213: Basic Transition Mechanisms for IPv6 Hosts 1411 and Routers"; 1412 } 1413 leaf enable-hairpinning { 1414 type boolean; 1415 default "true"; 1416 description 1417 "Enables/disables support for locally forwarding 1418 (hairpinning) traffic between two CEs."; 1419 reference "Section 6.2 of RFC7596"; 1420 } 1421 container binding-table { 1422 description 1423 "binding table"; 1424 list binding-entry { 1425 key "binding-ipv6info"; 1426 description 1427 "binding entry"; 1428 uses binding-entry; 1429 } 1430 } 1431 container icmp-policy { 1432 description 1433 "The binding BR can be configured to process or drop 1434 incoming ICMP messages, and to generate outgoing ICMP 1435 error messages."; 1436 container icmpv4-errors { 1437 description 1438 "ICMPv4 error processing configuration"; 1439 leaf allow-incoming-icmpv4 { 1440 type boolean; 1441 default "true"; 1442 description 1443 "Enables the processing of incoming ICMPv4 1444 packets."; 1445 reference 1446 "RFC7596: Lightweight 4over6: An Extension to 1447 the Dual-Stack Lite Architecture"; 1448 } 1449 leaf icmpv4-rate { 1450 type uint32; 1451 description 1452 "Rate limit threshold in messages per-second 1453 for processing incoming ICMPv4 errors messages"; 1454 } 1455 leaf generate-icmpv4-errors { 1456 type boolean; 1457 default "true"; 1458 description 1459 "Enables the generation of outgoing ICMPv4 error 1460 messages on receipt of an inbound IPv4 packet 1461 with no matching binding table entry."; 1462 reference "Seciton 5.2 of RFC7596."; 1463 } 1464 } 1465 container icmpv6-errors { 1466 description 1467 "ICMPv6 error processing configuration"; 1468 leaf generate-icmpv6-errors { 1469 type boolean; 1470 default "true"; 1471 description 1472 "Enables the generation of ICMPv6 error messages if 1473 no matching binding table entry is found for a 1474 received packet."; 1475 reference "Section 6.2 of RFC7596."; 1476 } 1477 leaf icmpv6-rate { 1478 type uint32; 1479 description 1480 "Rate limit threshold in messages per-second 1481 for sending ICMPv6 errors messages"; 1482 reference "Section 9 of RFC7596."; 1483 } 1484 } 1485 } 1486 container traffic-stat { 1487 config false; 1488 description 1489 "Traffic statistics information for the BR."; 1490 leaf discontinuity-time { 1491 type yang:date-and-time; 1492 mandatory true; 1493 description 1494 "The time of the most recent occasion on which the BR 1495 instance suffered a discontinuity. This must be 1496 initialized when the BR instance is configured 1497 or rebooted."; 1498 } 1499 uses softwire-common:traffic-stat; 1500 leaf dropped-icmpv4-packets { 1501 type yang:zero-based-counter64; 1502 description 1503 "ICMPv4 packets that are dropped as a result 1504 of the ICMP policy. Typically, this can be any 1505 incoming ICMPv4 packets if ICMPv4 processing is 1506 disabled or incoming ICMPv4 packets that exceed 1507 the ICMPv4 rate-limit threshold. 1509 Discontinuities in the value of this counter can 1510 occur at re-initialization of the management 1511 system, and at other times as indicated by 1512 the value of 'discontinuity-time'."; 1513 } 1514 leaf dropped-icmpv4-bytes { 1515 type yang:zero-based-counter64; 1516 description 1517 "ICMPv4 messages, in bytes, that are dropped as 1518 a result of the ICMP policy. Typically, it 1519 can be any incoming ICMPv4 packets if ICMPv4 1520 processing is disabled or incoming ICMPv4 1521 packets that exceed the ICMPv4 rate-limit 1522 threshold. 1524 Discontinuities in the value of this counter can 1525 occur at re-initialization of the management 1526 system, and at other times as indicated by 1527 the value of 'discontinuity-time'."; 1528 } 1529 leaf hairpin-ipv4-packets { 1530 type yang:zero-based-counter64; 1531 description 1532 "IPv4 packets locally routed between two CEs 1533 (hairpinned). 1535 Discontinuities in the value of this counter can 1536 occur at re-initialization of the management 1537 system, and at other times as indicated by 1538 the value of 'discontinuity-time'."; 1539 } 1540 leaf hairpin-ipv4-bytes { 1541 type yang:zero-based-counter64; 1542 description 1543 "IPv4 bytes locally routed between two CEs 1544 (hairpinned). 1546 Discontinuities in the value of this counter can 1547 occur at re-initialization of the management 1548 system, and at other times as indicated by 1549 the value of 'discontinuity-time'."; 1550 } 1551 leaf active-softwire-num { 1552 type uint32; 1553 config false; 1554 description 1555 "The number of currently active softwires on the 1556 binding instance. 1558 Discontinuities in the value of this counter can 1559 occur at re-initialization of the management 1560 system, and at other times as indicated by 1561 the value of 'discontinuity-time'."; 1562 } 1563 } 1564 } 1565 } 1566 } 1567 case algo { 1568 if-feature "map-e or map-t"; 1569 container algorithm { 1570 description 1571 " A set of parameters used for MAP-E/MAP-T."; 1572 list algo-instances { 1573 key "id"; 1574 description 1575 "Instances of algorithm"; 1576 leaf id { 1577 type uint32; 1578 mandatory true; 1579 description 1580 "Identifier of the algorithm instance. 1581 This identifier can be automatically assigned 1582 or explicitly configured. "; 1583 } 1584 uses softwire-common:algorithm-instance; 1585 container port-set { 1586 description 1587 "Indicates a set of ports."; 1588 uses port-set; 1589 } 1590 container traffic-stat { 1591 config false; 1592 description 1593 "Traffic statistics information for the BR."; 1594 leaf discontinuity-time { 1595 type yang:date-and-time; 1596 mandatory true; 1597 description 1598 "The time of the most recent occasion on which the BR 1599 instance suffered a discontinuity. This must be 1600 reset to the current date-and-time when the BR 1601 instance is configured or rebooted."; 1602 } 1603 uses softwire-common:traffic-stat; 1604 } 1605 } 1606 } 1607 } 1608 } 1609 } 1611 /* 1612 * Notifications 1613 */ 1615 notification softwire-binding-instance-event { 1616 if-feature "binding-mode"; 1617 description 1618 "Notifications for binding instance when an entry is 1619 added, modified, or is not valid anymore."; 1620 leaf bind-id { 1621 type leafref { 1622 path "/br-instances/binding/bind-instances/id"; 1623 } 1624 description 1625 "The ID of the binding-instance that 1626 generated the notification."; 1627 } 1628 leaf-list invalid-entry { 1629 type leafref { 1630 path 1631 "/br-instances/binding/" 1632 + "bind-instances[id=current()/../bind-id]/" 1633 + "binding-table/binding-entry/binding-ipv6info"; 1634 } 1635 description 1636 "Notify the client that a specific binding entry has 1637 expired or is invalid. The binding-ipv6info identifies 1638 an entry."; 1640 } 1641 leaf-list added-entry { 1642 type inet:ipv6-address; 1643 description 1644 "Notify the client that a binding entry has been added. 1645 The ipv6 address of that entry is the index. The client 1646 gets other information from the binding BR about the entry 1647 indexed by that ipv6 address."; 1648 } 1649 leaf-list modified-entry { 1650 type leafref { 1651 path 1652 "/br-instances/binding/" 1653 + "bind-instances[id=current()/../bind-id]/" 1654 + "binding-table/binding-entry/binding-ipv6info"; 1655 } 1656 description 1657 "The ID of the the binding-table entry that 1658 has been modified."; 1659 } 1660 } 1661 notification softwire-algorithm-instance-event { 1662 if-feature "map-e or map-t"; 1663 description 1664 "Notifications for algorithm instance when an entry is 1665 added, modified, or is not valid anymore."; 1666 leaf algo-id { 1667 type leafref { 1668 path "/br-instances/algorithm/algo-instances/id"; 1669 } 1670 mandatory true; 1671 description 1672 "algorithmic instance event."; 1673 } 1674 leaf-list invalid-entry-id { 1675 type leafref { 1676 path "/br-instances/algorithm/algo-instances/id"; 1677 } 1678 description 1679 "Invalid entry event."; 1680 } 1681 leaf-list added-entry { 1682 type leafref { 1683 path "/br-instances/algorithm/algo-instances/id"; 1684 } 1685 description 1686 "Added entry."; 1687 } 1688 leaf-list modified-entry { 1689 type leafref { 1690 path "/br-instances/algorithm/algo-instances/id"; 1691 } 1692 description 1693 "Modified entry."; 1694 } 1695 } 1696 } 1697 1699 10. Common Softwire Element Groups YANG Module 1701 This module imports typedefs from [RFC6991]. 1703 The following YANG module contains definitions that are used by both 1704 the softwire CE and softwire BR YANG modules. 1706 file "ietf-softwire-common@2018-10-23.yang" 1708 module ietf-softwire-common { 1709 yang-version 1.1; 1710 namespace "urn:ietf:params:xml:ns:yang:ietf-softwire-common"; 1711 prefix softwire-common; 1713 import ietf-inet-types { 1714 prefix inet; 1715 reference "Section 4 of RFC 6991"; 1716 } 1717 import ietf-yang-types { 1718 prefix yang; 1719 reference "Section 3 of RFC 6991"; 1720 } 1722 organization 1723 "IETF Softwire Working Group"; 1724 contact 1725 "WG Web: 1726 WG List: 1728 Author: Qi Sun 1729 1731 Author: Linhui Sun 1732 1734 Author: Yong Cui 1735 1737 Author: Ian Farrer 1738 1740 Author: Sladjana Zoric 1741 1743 Author: Mohamed Boucadair 1744 1746 Author: Rajiv 1747 "; 1748 description 1749 "This document defines a YANG data module defining types 1750 common to all A+P modules. 1752 Copyright (c) 2018 IETF Trust and the persons identified as 1753 authors of the code. All rights reserved. 1755 Redistribution and use in source and binary forms, with or 1756 without modification, is permitted pursuant to, and subject 1757 to the license terms contained in, the Simplified BSD License 1758 set forth in Section 4.c of the IETF Trust's Legal Provisions 1759 Relating to IETF Documents 1760 (http://trustee.ietf.org/license-info). 1762 This version of this YANG module is part of RFC XXXX; see 1763 the RFC itself for full legal notices."; 1765 revision 2018-10-23 { 1766 description 1767 "Initial revision."; 1768 reference 1769 "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port 1770 Softwires"; 1771 } 1773 feature map-e { 1774 description 1775 "MAP-E is an IPv6 transition mechanism for transporting IPv4 1776 packets across an IPv6 network using IP encapsulation. MAP-E 1777 allows for a reduction of the amount of centralized state using 1778 rules to express IPv4/IPv6 address mappings. This introduces an 1779 algorithmic relationship between the IPv6 subnet and IPv4 1780 address. 1782 This feature indicates that the instance functions as a MAP-E."; 1783 reference 1784 "RFC7597: Mapping of Address and Port with Encapsulation (MAP-E)"; 1786 } 1788 feature map-t { 1789 description 1790 "MAP-T is an IPv6 transition mechanism for transporting IPv4 1791 packets across an IPv6 network using IP translation. It leverages 1792 a double stateless NAT64 based solution as well as the stateless 1793 algorithmic address & transport layer port mapping algorithm 1794 defined for MAP-E. 1796 This feature indicates that the instance functions as a MAP-T 1797 instance."; 1798 reference 1799 "RFC7599: Mapping of Address and Port using Translation (MAP-T)"; 1800 } 1802 /* 1803 * Groupings 1804 */ 1806 grouping algorithm-instance { 1807 description 1808 "A collection of parameters that is used fro MAP-E/MAP-T."; 1809 leaf enable { 1810 type boolean; 1811 description 1812 "Enable/disable an individual MAP-E or MAP-T rule."; 1813 } 1814 container algo-versioning { 1815 description 1816 "algorithm's version"; 1817 leaf version { 1818 type uint64; 1819 description 1820 "Incremental version number for the algorithm"; 1821 } 1822 leaf date { 1823 type yang:date-and-time; 1824 description 1825 "Timestamp when the algorithm instance was activated."; 1826 reference 1827 "RFC7422: Deterministic Address Mapping to Reduce 1828 Logging in Carrier-Grade NAT Deployments"; 1829 } 1830 } 1831 leaf name { 1832 type string; 1833 description 1834 "The name for the instance."; 1835 } 1836 choice data-plane { 1837 description 1838 "Selects MAP-E (encapsulation) or MAP-T 1839 (translation)"; 1840 case encapsulation { 1841 if-feature "map-e"; 1842 description 1843 "encapsulation for MAP-E"; 1844 leaf br-ipv6-addr { 1845 type inet:ipv6-address; 1846 mandatory true; 1847 description 1848 "The IPv6 address of the MAP-E BR."; 1849 } 1850 } 1851 case translation { 1852 if-feature "map-t"; 1853 description 1854 "translation for MAP-T"; 1855 leaf dmr-ipv6-prefix { 1856 type inet:ipv6-prefix; 1857 description 1858 "The IPv6 prefix of the MAP-T BR."; 1859 } 1860 } 1861 } 1862 leaf ea-len { 1863 type uint8; 1864 mandatory true; 1865 description 1866 "Embedded Address (EA) bits are the IPv4 EA-bits in the IPv6 1867 address identifying an IPv4 prefix/address (or part thereof) 1868 or a shared IPv4 address (or part thereof) and a port-set 1869 identifier. The length of the EA-bits is defined as part of 1870 a MAP rule for a MAP domain."; 1871 } 1872 leaf rule-ipv6-prefix { 1873 type inet:ipv6-prefix; 1874 mandatory true; 1875 description 1876 "The Rule IPv6 prefix defined in the mapping rule."; 1877 } 1878 leaf rule-ipv4-prefix { 1879 type inet:ipv4-prefix; 1880 mandatory true; 1881 description 1882 "The Rule IPv4 prefix defined in the mapping rule."; 1883 } 1884 leaf forwarding { 1885 type boolean; 1886 mandatory true; 1887 description 1888 "This parameter specifies whether the rule may be used for 1889 forwarding (FMR). If set, this rule is used as an FMR; 1890 if not set, this rule is a Basic Mapping Rule (BMR) only 1891 and must not be used for forwarding."; 1892 } 1893 } 1895 grouping traffic-stat { 1896 description 1897 "Traffic statistics"; 1898 leaf sent-ipv4-packets { 1899 type yang:zero-based-counter64; 1900 description 1901 "Number of decapsulated and forwarded IPv4 packets. 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 sent-ipv4-bytes { 1909 type yang:zero-based-counter64; 1910 description 1911 "Decapsulated/translated IPv4 traffic sent, 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 sent-ipv6-packets { 1919 type yang:zero-based-counter64; 1920 description 1921 "Number of encapsulated IPv6 packets sent. 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 sent-ipv6-bytes { 1929 type yang:zero-based-counter64; 1930 description 1931 "Encapsulated IPv6 traffic sent, 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 rcvd-ipv4-packets { 1939 type yang:zero-based-counter64; 1940 description 1941 "Number of incoming IPv4 packets 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 rcvd-ipv4-bytes { 1950 type yang:zero-based-counter64; 1951 description 1952 "IPv4 traffic received for processing, in bytes. 1954 Discontinuities in the value of this counter can occur 1955 at re-initialization of the management system, and at 1956 other times as indicated by the value of 1957 'discontinuity-time'."; 1958 } 1959 leaf rcvd-ipv6-packets { 1960 type yang:zero-based-counter64; 1961 description 1962 "Number of IPv4-in-IPv6 packets received. 1964 Discontinuities in the value of this counter can occur 1965 at re-initialization of the management system, and at 1966 other times as indicated by the value of 1967 'discontinuity-time'."; 1968 } 1969 leaf rcvd-ipv6-bytes { 1970 type yang:zero-based-counter64; 1971 description 1972 "IPv4-in-IPv6 traffic received, in bytes. 1974 Discontinuities in the value of this counter can occur 1975 at re-initialization of the management system, and at 1976 other times as indicated by the value of 1977 'discontinuity-time'."; 1979 } 1980 leaf dropped-ipv4-packets { 1981 type yang:zero-based-counter64; 1982 description 1983 "Number of IPv4 packets dropped at the 1984 Internet-facing interface. 1986 Discontinuities in the value of this counter can occur 1987 at re-initialization of the management system, and at 1988 other times as indicated by the value of 1989 'discontinuity-time'."; 1990 } 1991 leaf dropped-ipv4-bytes { 1992 type yang:zero-based-counter64; 1993 description 1994 "IPv4 traffic dropped at the Internet-facing 1995 interface, in bytes. 1997 Discontinuities in the value of this counter can occur 1998 at re-initialization of the management system, and at 1999 other times as indicated by the value of 2000 'discontinuity-time'."; 2001 } 2002 leaf dropped-ipv6-packets { 2003 type yang:zero-based-counter64; 2004 description 2005 "Number of IPv4-in-IPv6 packets dropped. 2007 Discontinuities in the value of this counter can occur 2008 at re-initialization of the management system, and at 2009 other times as indicated by the value of 2010 'discontinuity-time'."; 2011 } 2012 leaf dropped-ipv6-bytes { 2013 type yang:zero-based-counter64; 2014 description 2015 "IPv4-in-IPv6 traffic dropped, in bytes. 2017 Discontinuities in the value of this counter can occur 2018 at re-initialization of the management system, and at 2019 other times as indicated by the value of 2020 'discontinuity-time'."; 2021 } 2022 leaf dropped-ipv4-fragments { 2023 type yang:zero-based-counter64; 2024 description 2025 "Number of fragmented IPv4 packets dropped. 2027 Discontinuities in the value of this counter can occur 2028 at re-initialization of the management system, and at 2029 other times as indicated by the value of 2030 'discontinuity-time'."; 2031 } 2032 leaf dropped-ipv4-fragment-bytes { 2033 type yang:zero-based-counter64; 2034 description 2035 "Fragmented IPv4 traffic dropped, in bytes. 2037 Discontinuities in the value of this counter can occur 2038 at re-initialization of the management system, and at 2039 other times as indicated by the value of 2040 'discontinuity-time'."; 2041 } 2042 leaf ipv6-fragments-reassembled { 2043 type yang:zero-based-counter64; 2044 description 2045 "Number of IPv6 fragments successfully reassembled. 2047 Discontinuities in the value of this counter can occur 2048 at re-initialization of the management system, and at 2049 other times as indicated by the value of 2050 'discontinuity-time'."; 2051 } 2052 leaf ipv6-fragments-bytes-reassembled { 2053 type yang:zero-based-counter64; 2054 description 2055 "IPv6 fragments successfully reassembled, in bytes. 2057 Discontinuities in the value of this counter can occur 2058 at re-initialization of the management system, and at 2059 other times as indicated by the value of 2060 'discontinuity-time'."; 2061 } 2062 leaf out-icmpv4-error-packets { 2063 type yang:zero-based-counter64; 2064 description 2065 "Internally generated ICMPv4 error packets. 2067 Discontinuities in the value of this counter can occur 2068 at re-initialization of the management system, and at 2069 other times as indicated by the value of 2070 'discontinuity-time'."; 2071 } 2072 leaf out-icmpv4-error-bytes { 2073 type yang:zero-based-counter64; 2074 description 2075 "Internally generated ICMPv4 error messages, in bytes. 2077 Discontinuities in the value of this counter can occur 2078 at re-initialization of the management system, and at 2079 other times as indicated by the value of 2080 'discontinuity-time'."; 2081 } 2082 leaf out-icmpv6-error-packets { 2083 type yang:zero-based-counter64; 2084 description 2085 "Internally generated ICMPv6 error packets. 2087 Discontinuities in the value of this counter can occur 2088 at re-initialization of the management system, and at 2089 other times as indicated by the value of 2090 'discontinuity-time'."; 2091 } 2092 leaf out-icmpv6-error-bytes { 2093 type yang:zero-based-counter64; 2094 description 2095 "Internally generated ICMPv6 error messages, in bytes. 2097 Discontinuities in the value of this counter can occur 2098 at re-initialization of the management system, and at 2099 other times as indicated by the value of 2100 'discontinuity-time'."; 2101 } 2102 } 2103 } 2104 2106 11. Security Considerations 2108 The YANG modules defined in this document is designed to be accessed 2109 via network management protocols such as NETCONF [RFC6241] or 2110 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 2111 layer, and the mandatory-to-implement secure transport is Secure 2112 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 2113 mandatory-to-implement secure transport is TLS [RFC8446]. 2115 The NETCONF access control model [RFC8341] provides the means to 2116 restrict access for particular NETCONF or RESTCONF users to a 2117 preconfigured subset of all available NETCONF or RESTCONF protocol 2118 operations and content. 2120 All data nodes defined in the YANG modules which can be created, 2121 modified, and deleted (i.e., config true, which is the default) are 2122 considered sensitive. Write operations (e.g., edit-config) applied 2123 to these data nodes without proper protection can negatively affect 2124 network operations. 2126 12. IANA Considerations 2128 This document requests IANA to assign a new tunnel type under 2129 "tunnelType" sub-registry (under "ifType definitions" registry): 2131 o aplusp: A+P Encapsulation [RFCXXXX]. 2133 This document requests IANA to register the following URIs in the 2134 "IETF XML Registry" [RFC3688]: 2136 URI: urn:ietf:params:xml:ns:yang:ietf-interface-tunnel 2137 Registrant Contact: The IESG. 2138 XML: N/A; the requested URI is an XML namespace. 2140 URI: urn:ietf:params:xml:ns:yang:iana-tunnel-type 2141 Registrant Contact: IANA. 2142 XML: N/A; the requested URI is an XML namespace. 2144 URI: urn:ietf:params:xml:ns:yang:softwire-ce 2145 Registrant Contact: The IESG. 2146 XML: N/A; the requested URI is an XML namespace. 2148 URI: urn:ietf:params:xml:ns:yang:softwire-br 2149 Registrant Contact: The IESG. 2150 XML: N/A; the requested URI is an XML namespace. 2152 URI: urn:ietf:params:xml:ns:yang:softwire-common 2153 Registrant Contact: The IESG. 2154 XML: N/A; the requested URI is an XML namespace. 2156 This document requests that IANA registers the following YANG modules 2157 in the "YANG Module Names" registry [RFC6020]: 2159 name: ietf-interface-tunnel 2160 namespace: urn:ietf:params:xml:ns:yang:ietf-interface-tunnel 2161 prefix: ietf-interface-tunnel 2162 reference: RFC XXXX 2164 name: iana-tunnel-type 2165 namespace: urn:ietf:params:xml:ns:yang:iana-tunnel-type 2166 prefix: iana-tunnel-type 2167 reference: RFC XXXX 2169 name: ietf-softwire-ce 2170 namespace: urn:ietf:params:xml:ns:yang:softwire-ce 2171 prefix: softwire-ce 2172 reference: RFC XXXX 2174 name: ietf-softwire-br 2175 namespace: urn:ietf:params:xml:ns:yang:softwire-br 2176 prefix: softwire-br 2177 reference: RFC XXXX 2179 name: ietf-softwire-common 2180 namespace: urn:ietf:params:xml:ns:yang:softwire-common 2181 prefix: softwire-common 2182 reference: RFC XXXX 2184 This document defines the initial version of the IANA-maintained 2185 iana-tunnel-type YANG module. IANA is requested to add this note: 2187 Tunnel type values must not be directly added to the iana-tunnel- 2188 type YANG module. They must instead be respectively added to the 2189 "tunnelType" sub-registry (under "ifType definitions" registry). 2191 When a tunnel type is added to the "tunnelType" registry, a new 2192 "identity" statement must be added to the iana-tunnel-type YANG 2193 module. The name of the "identity" is the same as the corresponding 2194 enumeration in the IANAifType-MIB. The following substatements to 2195 the "identity" statement should be defined: 2197 "base": Contains the value of the tunnel type in lowercase. 2199 "description": Replicate the description from the registry. 2201 "reference": Replicate the reference from the registry and add the 2202 title of the document. 2204 Unassigned or reserved values are not present in the module. 2206 When the iana-tunnel-type YANG module is updated, a new "revision" 2207 statement must be added in front of the existing revision statements. 2209 IANA is requested to add this note to "tunnelType" registry: 2211 When this registry is modified, the YANG module iana-tunnel-type 2212 must be updated as defined in [RFCXXXX]. 2214 13. Acknowledgements 2216 The authors would like to thank Lishan Li, Bert Wijnen, Giles Heron, 2217 Ole Troan, Andy Wingo and Leo Tietz for their contributions to this 2218 work. 2220 Thanks to Sheng Jiang for the review. 2222 Special thanks to Tom Petch for the detailed review and suggestions. 2224 14. Contributors 2226 The following individuals contributed to this document: 2228 Hao Wang 2229 Tsinghua University 2230 Beijing 100084 2231 P.R.China 2232 Phone: +86-10-6278-5822 2233 Email: wangh13@mails.tsinghua.edu.cn 2235 15. References 2237 15.1. Normative References 2239 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2240 DOI 10.17487/RFC3688, January 2004, 2241 . 2243 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2244 the Network Configuration Protocol (NETCONF)", RFC 6020, 2245 DOI 10.17487/RFC6020, October 2010, 2246 . 2248 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2249 and A. Bierman, Ed., "Network Configuration Protocol 2250 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2251 . 2253 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2254 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2255 . 2257 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2258 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2259 . 2261 [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", 2262 RFC 7224, DOI 10.17487/RFC7224, May 2014, 2263 . 2265 [RFC7596] Cui, Y., Sun, Q., Boucadair, M., Tsou, T., Lee, Y., and I. 2266 Farrer, "Lightweight 4over6: An Extension to the Dual- 2267 Stack Lite Architecture", RFC 7596, DOI 10.17487/RFC7596, 2268 July 2015, . 2270 [RFC7597] Troan, O., Ed., Dec, W., Li, X., Bao, C., Matsushima, S., 2271 Murakami, T., and T. Taylor, Ed., "Mapping of Address and 2272 Port with Encapsulation (MAP-E)", RFC 7597, 2273 DOI 10.17487/RFC7597, July 2015, 2274 . 2276 [RFC7598] Mrugalski, T., Troan, O., Farrer, I., Perreault, S., Dec, 2277 W., Bao, C., Yeh, L., and X. Deng, "DHCPv6 Options for 2278 Configuration of Softwire Address and Port-Mapped 2279 Clients", RFC 7598, DOI 10.17487/RFC7598, July 2015, 2280 . 2282 [RFC7599] Li, X., Bao, C., Dec, W., Ed., Troan, O., Matsushima, S., 2283 and T. Murakami, "Mapping of Address and Port using 2284 Translation (MAP-T)", RFC 7599, DOI 10.17487/RFC7599, July 2285 2015, . 2287 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2288 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2289 . 2291 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2292 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2293 . 2295 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2296 Access Control Model", STD 91, RFC 8341, 2297 DOI 10.17487/RFC8341, March 2018, 2298 . 2300 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 2301 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 2302 . 2304 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2305 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2306 . 2308 15.2. Informative References 2310 [I-D.ietf-opsawg-nat-yang] 2311 Boucadair, M., Sivakumar, S., Jacquenet, C., Vinapamula, 2312 S., and Q. Wu, "A YANG Module for Network Address 2313 Translation (NAT) and Network Prefix Translation (NPT)", 2314 draft-ietf-opsawg-nat-yang-17 (work in progress), 2315 September 2018. 2317 [I-D.ietf-softwire-dslite-yang] 2318 Boucadair, M., Jacquenet, C., and S. Sivakumar, "A YANG 2319 Data Model for Dual-Stack Lite (DS-Lite)", draft-ietf- 2320 softwire-dslite-yang-17 (work in progress), May 2018. 2322 [RFC4213] Nordmark, E. and R. Gilligan, "Basic Transition Mechanisms 2323 for IPv6 Hosts and Routers", RFC 4213, 2324 DOI 10.17487/RFC4213, October 2005, 2325 . 2327 [RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual- 2328 Stack Lite Broadband Deployments Following IPv4 2329 Exhaustion", RFC 6333, DOI 10.17487/RFC6333, August 2011, 2330 . 2332 [RFC7422] Donley, C., Grundemann, C., Sarawat, V., Sundaresan, K., 2333 and O. Vautrin, "Deterministic Address Mapping to Reduce 2334 Logging in Carrier-Grade NAT Deployments", RFC 7422, 2335 DOI 10.17487/RFC7422, December 2014, 2336 . 2338 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2339 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2340 . 2342 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 2343 and R. Wilton, "Network Management Datastore Architecture 2344 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 2345 . 2347 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 2348 RFC 8344, DOI 10.17487/RFC8344, March 2018, 2349 . 2351 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2352 Routing Management (NMDA Version)", RFC 8349, 2353 DOI 10.17487/RFC8349, March 2018, 2354 . 2356 Appendix A. Configutation Examples 2358 The following sections provide examples of how the softwire YANG 2359 modules can be used for configuring softwire elements. 2361 A.1. Configuration Example for a lw4o6 BR Binding-Table 2363 The lwAFTR maintains an address binding table which contains the 2364 following 3-tuples: 2366 o IPv6 Address for a single lwB4 2368 o Public IPv4 Address 2370 o Restricted port-set 2372 The entry has two functions: the IPv6 encapsulation of inbound IPv4 2373 packets destined to the lwB4 and the validation of outbound IPv4-in- 2374 IPv6 packets received from the lwB4 for de-capsulation. 2376 Consider an example for the following lw4o6 binding table entry: 2378 lwB4 Binding IPv6 Address: 2001:db8::1 2380 lwB4 Binding IPv4 Address: 192.0.2.1 2382 lwB4 PSID: 0x34 2384 lwB4 PSID Length 8 2386 BR IPv6 Address: 2001:db8:1::2 2387 2388 2389 2390 1 2391 2392 2393 2001:db8::1 2394 192.0.2.1 2395 2396 52 2397 8 2398 2399 2001:db8:1::2 2400 2401 2402 1024 2403 1540 2404 1500 2405 2406 2407 2409 Figure 3: lw4o6 Binding-Table Configuration XML 2411 A.2. Configuration Example for a MAP-E BR 2413 A MAP-E BR is configured with forward mapping rules for the CEs it is 2414 serving. In this example (taken from [RFC7597], Appendix A, Example 2415 2), the following parameters are required: 2417 o Rule IPv6 Prefix 2419 o Rule IPv4 Prefix 2421 o Rule EA-bit bit length 2423 o IPv6 Address of MAP-BR 2425 The mapping rule has two functions: identifying the destination CE 2426 IPv6 address for encapsulating inbound IPv4 packets and the 2427 validation of outbound IPv4-in-IPv6 packets received from the CE for 2428 de-capsulation. 2430 The transport type for the data plane also needs to be configured for 2431 encapsulation to enable MAP-E and forwarding needs to be enabled. 2433 Consider an example for the following MAP-E Forwarding Mapping Rule: 2435 Data plane: encapsulation 2437 Rule IPv6 Prefix: 2001:db8::/40 2439 Rule IPv4 Prefix: 192.0.2.0/24 2441 Rule EA-bit Length: 16 2443 BR IPv6 Address: 2001:db8:ffff::1 2445 Figure 4 provides the example MAP-E BR configuration xml. 2447 2448 2449 2450 1234 2451 2452 2001:db8:ffff::1 2453 2454 16 2455 192.0.2.0/24 2456 2001:db8::/40 2457 true 2458 2459 6 2460 8 2461 2462 2463 2464 2466 Figure 4: MAP-E FMR Configuration XML 2468 A.3. lw4o6 CE Configuration Example 2470 This section provides XML examples for configuring a lw4o6 CE. 2471 Examples for routing and NAT44 are also provided for convienience. 2473 Consider an example for the following lw4o6 CE configuration: 2475 lwB4 Binding IPv6 Address: 2001:db8::1 2477 lwB4 Binding IPv4 Address: 192.0.2.1 2479 lwB4 PSID: 0x34 2481 lwB4 PSID Length 8 2482 BR IPv6 Address: 2001:db8:1::2 2484 2485 2486 2487 lw4o6-wan 2488 2490 iana-tunnel-type:aplusp 2491 2492 2494 2001:db8:1::2 2495 2496 2498 2001:db8::1 2499 2500 2501 2502 2504 Figure 5: lw4o6 CE Configuration XML 2506 In the example depicted in Figure 5, the interface name is defined 2507 for the softwire tunnel. This name is then referenced by the routing 2508 configuration for the IPv4 route. Figure 6 provides an example 2509 configuration for the CE's IPv4 routing, using the YANG module 2510 described in [RFC8349]. 2512 2513 2514 2515 2516 static 2517 v4 2518 2519 2521 2522 0.0.0.0/0 2523 2524 lw4o6-wan 2525 2526 2527 2528 2529 2530 2531 2532 2534 Figure 6: lw4o6 CE Routing Configuration XML 2536 Figure 7 provides an example configuration for the CE's NAPT44 2537 function, using the YANG module described in 2538 [I-D.ietf-opsawg-nat-yang]. 2540 2541 2542 2543 2544 1 2545 2546 1 2547 2548 1 2549 192.0.2.1 2550 2551 2552 2553 6 2554 8 2555 52 2556 2557 2558 2559 1 2560 80 2561 2562 2563 2564 2565 1 2566 8 2567 2568 2569 6 2570 32 2571 2572 2573 17 2574 16 2575 2576 2577 2578 2579 1 2580 192.0.2.1/32 2581 192.168.1.0/24 2582 6 2583 2584 2585 2 2586 192.0.2.1/32 2587 192.168.1.0/24 2588 17 2589 2590 2591 3 2592 192.0.2.1/32 2593 192.168.1.0/24 2594 1 2595 2596 2597 2598 2599 2600 2602 Figure 7: lw4o6 NAT Configuration XML 2604 Authors' Addresses 2606 Yong Cui 2607 Tsinghua University 2608 Beijing 100084 2609 P.R. China 2611 Phone: +86-10-6260-3059 2612 Email: yong@csnet1.cs.tsinghua.edu.cn 2614 Ian Farrer (editor) 2615 Deutsche Telekom AG 2616 CTO-ATI,Landgrabenweg 151 2617 Bonn, NRW 53227 2618 Germany 2620 Email: ian.farrer@telekom.de 2622 Mohamed Boucadair (editor) 2623 Orange 2624 Rennes 35000 2625 France 2627 Email: mohamed.boucadair@orange.com 2629 Qi Sun 2630 Tsinghua University 2631 Beijing 100084 2632 P.R. China 2634 Phone: +86-10-6278-5822 2635 Email: sunqi.ietf@gmail.com 2637 Linhui Sun 2638 Tsinghua University 2639 Beijing 100084 2640 P.R. China 2642 Phone: +86-10-6278-5822 2643 Email: lh.sunlinh@gmail.com 2644 Sladjana Zechlin 2645 Deutsche Telekom AG 2646 Landgrabenweg 151 2647 Bonn, NRW 53227 2648 Germany 2650 Email: sladjana.zechlin@telekom.de 2652 Rajiv Asati 2653 Cisco Systems, Inc. 2654 7025 Kit Creek Rd. 2655 RTP, NC 27709 2656 USA 2658 Email: Rajiva@cisco.com