Softwire Working Group Q. Sun Internet-Draft H. Wang Intended status: Standards Track Y. Cui Expires: June 28, 2015 Tsinghua University I. Farrer Deutsche Telekom AG M. Boucadair France Telecom December 25, 2014 YANG Data Model for IPv4-in-IPv6 Softwire draft-sun-softwire-yang-01 Abstract This document defines a YANG data model for the configuration and management of IPv4-in-IPv6 Softwire Border Routers and Customer Premises Equipment. It covers Lightweight 4over6, MAP-E and MAP-T Softwire mechanisms. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on June 28, 2015. Sun, et al. Expires June 28, 2015 [Page 1] Internet-Draft YANG for softwire December 2014 Copyright Notice Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. YANG Modelling of NAT44 Functionality . . . . . . . . . . 4 2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Common . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Lightweight 4over6 AFTR . . . . . . . . . . . . . . . . . 4 2.3. Lightweight 4over6 B4 . . . . . . . . . . . . . . . . . . 4 2.4. MAP-E . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.5. MAP-T . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Softwire YANG Tree Diagrams . . . . . . . . . . . . . . . . . 5 3.1. Common Tree Diagrams . . . . . . . . . . . . . . . . . . 5 3.2. Lightweight 4over6 AFTR Tree Diagrams . . . . . . . . . . 5 3.3. Lightweight 4over6 B4 Tree Diagrams . . . . . . . . . . . 7 3.4. MAP-E Tree Diagrams . . . . . . . . . . . . . . . . . . . 9 3.5. MAP-T Tree Diagrams . . . . . . . . . . . . . . . . . . . 11 4. Softwire YANG Model . . . . . . . . . . . . . . . . . . . . . 12 5. Example of Configure Lw4over6 Binding-Table . . . . . . . . . 26 6. Security Considerations (TBD) . . . . . . . . . . . . . . . . 27 7. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 27 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 9.1. Normative References . . . . . . . . . . . . . . . . . . 28 9.2. Informative References . . . . . . . . . . . . . . . . . 28 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 1. Introduction The IETF Softwire Working Group has developed several IPv4-in-IPv6 Softwire mechanisms to address various deployment contexts and constraints. As a companion to the architectural specification documents, this document focuses on the provisioning aspects for Sun, et al. Expires June 28, 2015 [Page 2] Internet-Draft YANG for softwire December 2014 softwire functional elements that are: Border Routers (BRs) and Customer Premises Equipment (CPEs). This document defines a YANG data model that can be used for the configuration and management of IPv4-in-IPv6 Softwire BRs and/or CPEs. To ensure interoperability in mixed vendor environments, it is important that the models can be easily reused between different vendors and implementations. Due to the inherent similarities of the data plane forwarding, the configuration and management parameters of the different softwire mechanisms are defined in the same YANG model. Parameters that are common to all solutions are abstracted in the common module while specific parameters are defined in individual modules that are specific to a given mechanism (see for example, [I-D.ietf-softwire-unified-cpe]). Each specific softwire mechanism has their own individual YANG modules: o Lightweight 4over6 [I-D.ietf-softwire-lw4over6] o MAP-E [I-D.ietf-softwire-map] o MAP-T [I-D.ietf-softwire-map-t] This model is structured into two root containers: 1. Container "softwire-config" holds the collection of YANG definitions common to all softwire configuration of BRs and CPEs. 2. Container "softwire-state" holds YANG definitions for the operational state of the Softwire BRs and CPEs. This approach has been taken so that the model can be easily extended in the future to support additional softwire mechanism, should this be necessary. 1.1. Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. The reader should be familiar with the terms defined in [I-D.ietf-softwire-lw4over6] [I-D.ietf-softwire-map] [I-D.ietf-softwire-map-t] , and the YANG data modelling language [RFC6020]. Sun, et al. Expires June 28, 2015 [Page 3] Internet-Draft YANG for softwire December 2014 A simplified graphical representation of the data model is provided in this document. [RFC6087] provides definitions of the symbols used in these diagrams. 1.2. YANG Modelling of NAT44 Functionality This documented model does not include NAT-specific provisioning parameters other than the external IP address and port set which a softwire client may use for NAT44. Additional NAT-specific considerations are out of scope. 2. Objectives This document defines a YANG data model that can be used to configure and manage BRs and CPEs for the following IPv4-in-IPv6 Softwire mechanisms: Lightweight 4over6, MAP-E and MAP-T. For the lightweight 4over6, the configure and manage information of B4 (CPE) and AFTR (BR) are different. The lw4o6 AFTRs needs to maintain the binding table of B4s. The lw4o6 B4s need to maintain the NAPT table of hosts. For the MAP-T and MAP-T, CPE and BR both need to maintain the map- rule table. Thus, there is no need to distinguish BR and CPE. 2.1. Common This common model abstracts the shared features of different BRs and CPEs such as softwire type, maximum number of softwires, etc. The following sections of the document are structured with the root of the softwire YANG model (common to all mechanisms) described first. The subsequent sections describe the models relevant to the different softwire mechanisms. All functions are listed, but the YANG models use the "feature" statement to distinguish among the different softwire mechanisms. 2.2. Lightweight 4over6 AFTR The lw4over6 AFTR holds configuration for IPv4-IPv6 address bindings. This is used for the forwarding of traffic originating from lwB4s. 2.3. Lightweight 4over6 B4 The lw4over6 B4 is configured with the relevant parameters for establishing the IPv4 in IPv6 tunnel including an IPv6 address for the lwAFTR and the IPv4 configuration for NAPT44. Sun, et al. Expires June 28, 2015 [Page 4] Internet-Draft YANG for softwire December 2014 2.4. MAP-E MAP-E elements (BR and CPE) are provisioned with the MAP rules necessary for defining MAP domains and forwarding rules. 2.5. MAP-T MAP-E elements (BR and CPE) are provisioned with the MAP rules necessary for defining MAP domains and forwarding rules. MAP-T CPEs an additional "ipv6-prefix" parameter is also configured. 3. Softwire YANG Tree Diagrams 3.1. Common Tree Diagrams Figure 1 describes the softwire data model which is common to all of the different softwire mechanisms listed in Section 1: +--rw softwire-config | +--rw enable boolean | +--rw name? string | +--rw description? string | +--rw tunnel-mtu uint32 | +--rw lw4over6-aftr | +--rw lw4over6-b4 | +--rw map-e | +--rw map-t | +--ro softwire-state +--ro enable boolean +--ro name? string +--ro description? string +--ro tunnel-mtu uint32 +--ro lw4over6-aftr +--ro lw4over6-b4 +--ro map-e +--ro map-t Figure 1: Softwire Common Data Model Structure The mechanism specific models for lw4over6-aftr, lw4over6-b4, MAP-E and MAP-T are described in detail in the following sections. 3.2. Lightweight 4over6 AFTR Tree Diagrams Figure 2 defines the softwire data model for Lightweight 4over6 AFTR: Sun, et al. Expires June 28, 2015 [Page 5] Internet-Draft YANG for softwire December 2014 +--rw softwire-config | +--... | +--rw lw4over6-aftr | +--rw enable boolean | +--rw lw4over6-aftr-devices | +--rw lw4over6-aftr-device* [id] | +--rw id uint32 | +--rw softwire-num-threshold uint32 | +--rw binding-table | +--rw binding-entry* [id] | +--rw id uint32 | +--rw binding-ipv4-addr inet:ipv4-address | +--rw port-set | | +--rw offset uint8 | | +--rw psid yang:hex-string | | +--rw psid-len uint8 | +--rw binding-ipv6-addr inet:ipv6-address | +--rw binding-ipv6-prefix inet:ipv6-prefix | +--rw active boolean | +--rw lifetime yang:timestamp | +--ro softwire-state +--... +--ro lw4over6-aftr +--ro enable boolean +--ro lw4over6-aftr-devices +--ro lw4over6-aftr-device* [id] +--ro id uint32 +--ro active-softwire-num uint32 +--ro binding-table +--ro binding-entry* [id] +--ro id uint32 +--ro binding-ipv4-addr inet:ipv4-address +--ro port-set | +--ro offset uint8 | +--ro psid yang:hex-string | +--ro psid-len uint8 +--ro binding-ipv6-addr inet:ipv6-address +--ro binding-ipv6-prefix inet:ipv6-prefix +--ro active boolean +--ro lifetime yang:timestamp Figure 2: Softwire Lightweight 4over6 AFTR Data Model Structure o Node "softwire-num-threshold" is used to set the maximum number of tunnels that can be created on the lw4over6 device simultaneously. o Node "active-softwire-num" is used to present the number of Sun, et al. Expires June 28, 2015 [Page 6] Internet-Draft YANG for softwire December 2014 tunnels currently provisioned on the device. o Node "offset" is used to set the number of offset bits in the PSID. o Node "psid" is used to algorithmically identify a set of ports exclusively for a specific softwire. o Node "active" is used to add or delete a particular binding-entry. o Node "lifetime" is used to define the lifetime for a particular binding-table. The value of this parameter is likely to less than the lease time returned in DHCP for instance. 3.3. Lightweight 4over6 B4 Tree Diagrams Figure 3 defines the softwire data model for a Lightweight 4over6 B4 element: Sun, et al. Expires June 28, 2015 [Page 7] Internet-Draft YANG for softwire December 2014 +--rw softwire-config | +--... | +--rw lw4over6-b4 | +--rw enable boolean | +--rw lw4over6-b4-devices | +--rw lw4over6-b4-device* [id] | +--rw id uint32 | +--rw b4-ipv6-addr-format boolean | +--rw binding-ipv4-addr inet:ipv4-address | +--rw port-set | | +--rw offset uint8 | | +--rw psid yang:hex-string | | +--rw psid-len uint8 | +--rw hint-ipv6-prefix inet:ipv6-prefix | +--rw aftr-ipv6-addr inet:ipv6-address | +--rw nat-table | +--rw nat-entry* [id] | +--... | +--ro softwire-state +--... +--ro lw4over6-b4 +--ro enable boolean +--ro lw4over6-b4-devices +--ro lw4over6-b4-device* [id] +--ro id uint32 +--ro b4-ipv6-addr-format boolean +--ro binding-ipv4-addr inet:ipv4-address +--ro port-set | +--ro offset uint8 | +--ro psid yang:hex-string | +--ro psid-len uint8 +--ro hint-ipv6-prefix inet:ipv6-prefix +--ro aftr-ipv6-addr inet:ipv6-address +--ro nat-table +--ro nat-entry* [id] +--... Figure 3: Softwire Lightweight 4over6 B4 Data Model Structure o Node "b4-ipv6-addr-format" indicates that the default mode for building the lwB4 IPv6 address is used ([I-D.ietf-softwire- lw4over6]) if set to "1"; if set to "0", the lwB4 can use any address from the assigned IPv6 prefix. The default value is "1". o Node "binding-ipv4-addr" is used to allocate an IPv4 address to the lwB4. Sun, et al. Expires June 28, 2015 [Page 8] Internet-Draft YANG for softwire December 2014 o Node "offset" is used to set the number of offset bits. o Node "psid" is used to algorithmically identifies a set of ports exclusively, it is allocated by vendors and calculated by devices. o Node "hint-ipv6-prefix" is used to perform a longest prefix match against the active IPv6 addresses configured on the lwB4 so that a suitable tunnel source address prefix can be selected. o Node "active" is used to add or delete a particular binding-entry. o Node "lifetime" is used to define a lifetime for a particular binding-table. The value of this parameter is likely to be less than the lease time returned in DHCP for instance. o Container "nat-table" is not extended. It means that the focus is on the provisioning of the external IP address and/or port set; other NAT-specific considerations are out of scope. 3.4. MAP-E Tree Diagrams Figure 4 defines the softwire data model for MAP-E: +--rw softwire-config | +--... | +--rw map-e | +--rw enable boolean | +--rw map-e-devices | +--rw map-e-device* [id] | +--rw id unit32 | +--rw map-rules* [id] | | +--rw id uint8 | | +--rw map-rule-type enumeration | | +--rw map-rule-table | | +--rw map-rule-entry* [id] | | +--rw id uint8 | | +--rw ipv6-prefix inet:ipv6-prefix | | +--rw ipv6-prefix-len uint8 | | +--rw ipv4-prefix inet:ipv4-prefix | | +--rw ipv4-prefix-len uint8 | | +--rw port-set | | | +--rw offset uint8 | | | +--rw psid yang:hex-string | | | +--rw psid-len uint8 | | +--rw ea-len uint8 | | +--rw active boolean | +--rw map-e-cpe | +--rw cpe-ipv6-prefix inet:ipv6-prefix Sun, et al. Expires June 28, 2015 [Page 9] Internet-Draft YANG for softwire December 2014 | +--ro softwire-state +--... +--ro map-e +--ro enable boolean +--ro map-e-devices +--ro map-e-device* [id] +--ro id uint32 +--ro map-rules* [id] | +--ro id uint8 | +--ro map-rule-type enumeration | +--ro map-rule-table | +--ro map-rule-entry* [id] | | +--ro id uint8 | | +--ro ipv6-prefix inet:ipv6-prefix | | +--ro ipv6-prefix-len uint8 | | +--ro ipv4-prefix inet:ipv4-prefix | | +--ro ipv4-prefix-len uint8 | | +--ro port-set | | | +--ro offset uint8 | | | +--ro psid yang:hex-string | | | +--ro psid-len uint8 | | +--ro ea-len boolean | | +--ro active boolean | +--ro active-map-rule-num uint8 +--ro map-e-cpe +--ro cpe-ipv6-prefix inet:ipv6-prefix Figure 4: Softwire MAP-E Data Model Structure o Node "map-rule-type" is used to define the type of map rule. The data type is enumeration, which are "BMR" and "FMR". o Node "offset" is used to set the number of offset bits. o Node "psid" is used to algorithmically identify a set of ports exclusively for a specific softwire. o Node "ea-len" is used to set the length of the Embedded- Address (EA), which defined in the mapping rule for a MAP domain. o Node "active" is used to add or delete a particular map-rule- entry o Node "active-map-rule-num" is used to present the number of map- rule-entries running on the device currently. Sun, et al. Expires June 28, 2015 [Page 10] Internet-Draft YANG for softwire December 2014 3.5. MAP-T Tree Diagrams Figure 5 defines the softwire data model for MAP-T: +--rw softwire-config | +--... | +--rw map-t | +--rw enable boolean | +--rw map-t-devices | +--rw map-t-device* [id] | +--rw id unit32 | +--rw map-rules* [id] | | +--rw id uint8 | | +--rw map-rule-type enumeration | | +--rw map-rule-table | | +--rw map-rule-entry* [id] | | +--rw id uint8 | | +--rw ipv6-prefix inet:ipv6-prefix | | +--rw ipv6-prefix-len uint8 | | +--rw ipv4-prefix inet:ipv4-prefix | | +--rw ipv4-prefix-len uint8 | | +--rw port-set | | | +--rw offset uint8 | | | +--rw psid yang:hex-string | | | +--rw psid-len uint8 | | +--rw ea-len uint8 | | +--rw active boolean | +--rw map-t-cpe | +--rw cpe-ipv6-prefix inet:ipv6-prefix | +--ro softwire-state +--... +--ro map-t +--ro enable boolean +--ro map-t-devices +--ro map-t-device* [id] +--ro id uint32 +--ro map-rules* [id] | +--ro id uint8 | +--ro map-rule-type enumeration | +--ro map-rule-table | +--ro map-rule-entry* [id] | | +--ro id uint8 | | +--ro ipv6-prefix inet:ipv6-prefix | | +--ro ipv6-prefix-len uint8 | | +--ro ipv4-prefix inet:ipv4-prefix | | +--ro ipv4-prefix-len uint8 | | +--ro port-set Sun, et al. Expires June 28, 2015 [Page 11] Internet-Draft YANG for softwire December 2014 | | | +--ro offset uint8 | | | +--ro psid yang:hex-string | | | +--ro psid-len uint8 | | +--ro ea-len boolean | | +--ro active boolean | +--ro active-map-rule-num uint8 +--ro map-t-cpe +--ro cpe-ipv6-prefix inet:ipv6-prefix Figure 5: Softwire MAP-T Data Model Structure o Node "map-rule-type" is used to define the type of map rule. The data type is enumeration, which are "DMR", "BMR" and "FMR". o Node "offset" is used to set the number of offset bits. o Node "psid" is used to algorithmically identify a set of ports exclusively for a specific softwire. o Node "ea-len" is used to set the length of the Embedded- Address (EA), which defined in the mapping rule for a MAP domain. o Node "active" is used to add or delete a particular map-rule- entry o Node "active-map-rule-num" is used to present the number of map- rule-entries running on the device currently. 4. Softwire YANG Model This module imports typedefs from [RFC6991]. file "ietf-softwire@2014-12-14.yang" module softwire { namespace "urn:ietf:params:xml:ns:yang:softwire"; prefix "softwire"; import ietf-inet-types { prefix inet; } import ietf-yang-types { prefix yang; } organization "softwire"; contact " Qi Sun sunqi@csnet1.cs.tsinghua.edu.cn Hao Wang wangh13@mails.tsinghua.edu.cn Yong Cui yong@csnet1.cs.tsinghua.edu.cn Sun, et al. Expires June 28, 2015 [Page 12] Internet-Draft YANG for softwire December 2014 Ian Farrer ian.farrer@telekom.de Mohamed Boucadair mohamed.boucadair@orange.com Rajiv Asati rajiva@cisco.com "; description "This document defines a YANG data model for the configuration and management of IPv4-in-IPv6 Softwire Border Routers and Customer Premises Equipment. It covers Lightweight 4over6, MAP-E and MAP-T Softwire mechanisms. Copyright (c) 2014 IETF Trust and the persons identified as authors of the code. All rights reserved. This version of this YANG module is part of RFC XXX; see the RFC itself for full legal notices."; revision 2014-12-14 { description "Initial revision."; } /* * Typedef */ /* * Features */ feature lw4over6 { description "Lightweight 4over6 moves the Network Address and Port Translation (NAPT) function from the centralized DS-Lite tunnel concentrator to the tunnel client located in the Customer Premises Equipment (CPE). This removes the requirement for a Carrier Grade NAT function in the tunnel concentrator and reduces the amount of centralized state that must be held to a per-subscriber level. In order to delegate the NAPT function and make IPv4 Address sharing possible, port-restricted IPv4 addresses are allocated to the CPEs."; reference "I-D.ietf-softwire-lw4over6"; } feature lw4over6-aftr { if-feature lw4over6; description "The AFTRs (BRs) for Lightweight 4over6, so-called lwAFTR. Sun, et al. Expires June 28, 2015 [Page 13] Internet-Draft YANG for softwire December 2014 It means an AFTR element (Address Family Transition Router element [RFC6333]), which supports Lightweight 4over6 extension. An lwAFTR is an IPv4-in-IPv6 tunnel endpoint which maintains per-subscriber address binding only and does not perform a NAPT44 function."; } feature lw4over6-b4 { if-feature lw4over6; description "The B4s (CPEs) for Lightweight 4over6, so-called lwB4. It means A B4 element (Basic Bridging BroadBand element [RFC6333]), which supports Lightweight 4over6 extensions. An lwB4 is a function implemented on a dual-stack capable node, (either a directly connected device or a CPE), that supports port-restricted IPv4 address allocation, implements NAPT44 functionality and creates a tunnel to an lwAFTR."; } feature map-e { description "MAP-E is a mechanism for transporting IPv4 packets across an IPv6 network using IP encapsulation, and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports."; reference "I-D.ietf-softwire-map"; } feature map-e-cpe { if-feature map-e; description "The CPEs for MAP-E."; } feature map-t { description "MAP-T is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation, and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports."; reference "I-D.ietf-softwire-map-t"; } feature map-t-cpe { if-feature map-t; description Sun, et al. Expires June 28, 2015 [Page 14] Internet-Draft YANG for softwire December 2014 "The CPEs for MAP-T."; } /* * Grouping */ grouping port-set { description "A range of transport layer ports."; leaf offset { type uint8; default "6"; description "The number of offset bits."; } leaf psid { type yang:hex-string; description "Port Set Identifier (PSID), which identifies a set of ports algorithmically."; } leaf psid-len { type uint8; description "The length of PSID."; } } grouping binding-table { description "The lwAFTR maintains an address binding table containing the binding between the lwB4's IPv6 address, the allocated IPv4 address and restricted port-set."; list binding-entry { key "id"; leaf id { type uint32; } leaf binding-ipv4-addr { type inet:ipv4-address; description "The IPv4 address assigned to a lwB4, which is used as the IPv4 External Address for lwB4 local NAPT44. One of three elemnts constructing a binding-entry."; } container port-set { Sun, et al. Expires June 28, 2015 [Page 15] Internet-Draft YANG for softwire December 2014 uses port-set { refine offset { default "0"; } } } leaf binding-ipv6-addr { type inet:ipv6-address; description "The IPv6 address of the lwB4, which is used to bind the IPv4 address and port-set."; } leaf binding-ipv6-prefix { type inet:ipv6-prefix; description "The IPv6 prefix of the lwB4."; } leaf active { type boolean; default "1"; description "Used to add or delete a particular binding-entry."; leaf lifetime { type yang:timestamp; description "Lifetime for a binding-entry."; } } } grouping nat-table { description "Grouping 'nat-table' is not extended. It means that we are focusing on the provisioning of external IP address and port set; other NAT-specific considerations are out of scope." } grouping map-rule-table { description "The (conceptual) table containing rule Information for a specific mapping rule. It can also be used for row creation."; list map-rule-entry { key "id"; leaf id { type uint8; } leaf IPv6-prefix { type inet:ipv6-prefix; Sun, et al. Expires June 28, 2015 [Page 16] Internet-Draft YANG for softwire December 2014 description "The IPv6 prefix defined in the mapping rule which will be assigned to CE."; } leaf IPv6-prefix-len { type uint8; description "The length of the IPv6 prefix defined in the mapping rule. As a parameter for the mapping rule, it will be also assigned to CE."; } leaf IPv4-prefix { type inet:ipv4-prefix; description "The IPv4 prefix defined in the mapping rule which will be assigned to CE."; } leaf IPv4-prefix-len { type uint8; description "The length of the IPv4 prefix defined in the mapping rule. As a parameter for the mapping rule, it will be also assigned to CE."; } container port-set { uses port-set; } leaf ea-len { type uint8; description "The length of the Embedded-Address (EA) defined in mapping rule for a MAP domain. This dictates the sharing ratio (i.e. Maximum number of CE sharing the same IPv4 address) used in MAP domain."; } leaf active { type boolean; default "1"; description "Used to add or delete a particular map-rule-entry."; } } } grouping map-rules { list map-rules { key "id"; leaf id { Sun, et al. Expires June 28, 2015 [Page 17] Internet-Draft YANG for softwire December 2014 type uint8; } leaf map-rule-type { type enumeration { enum "BMR"; enum "FMR"; } } container map-rule-table { uses map-rule-table; } } } /* * Configuration Data Nodes */ container softwire-config { description "The configuration data for devices in Softwire. "; leaf enable { type boolean; default "1"; description "Enable/disable the Softwire function."; } leaf name { type string; description "The name of Softwire."; } leaf description { type string; description "A textual description of Softwire."; } leaf tunnel-mtu { type uint32; description "The MTU of tunnel payload on the Softwire devices."; } container lw4over6-aftr { if-feature lw4over6-aftr; description "Indicate this device supports the lwAFTR function. Devices advertise the lw4over6-aftr feature through the capability exchange mechanism when a NETCONF session is established."; Sun, et al. Expires June 28, 2015 [Page 18] Internet-Draft YANG for softwire December 2014 leaf enable { type boolean; default "1"; description "Enable/disable the lwAFTR function."; } container lw4over6-aftr-devices { description "Refer to lwAFTRs."; list lw4over6-aftr-device { key "id"; leaf id { type uint32; } leaf softwire-num-threshold { type uint32; description "The maximum number of tunnels that can be created on the lwAFTR."; } container binding-table { uses binding-table; } } } } container lw4over6-b4 { if-feature lw4over6-b4; description "Indicate this device supports the lwB4 function. Devices advertise the lw4over6-b4 feature through the capability exchange mechanism when a NETCONF session is established."; leaf enable { type boolean; default "1"; description "Enable/disable the lwB4 function."; } container lw4over6-b4-devices { description "Refer to lwB4s."; list lw4over6-b4-device { key "id"; leaf id { type uint32; } leaf b4-ipv6-addr-format { type boolean; Sun, et al. Expires June 28, 2015 [Page 19] Internet-Draft YANG for softwire December 2014 default "1"; description "The format of lwB4 IPv6 address. If set to "1" indicates that the default mode for building the lwB4 IPv6 address is used ([I-D.ietf-softwire-lw4over6]); if set to "0", the lwB4 can use any address from the assigned IPv6 prefix."; } leaf binding-ipv4-addr { type inet:ipv4-address; description "The allocated IPv4 address of lwB4, which binding with the port-set."; } container port-set { uses port-set { refine offset { default "0"; } } } leaf hint-ipv6-prefix { type inet:ipv6-prefix; description "'hint-ipv6-prefix' is used to longest prefix match."; } leaf aftr-ipv6-addr { type inet:ipv6-address; description "The IPv6 address of lwAFTR."; } container nat-table { uses nat-table; } } } } container map-e { if-feature map-e; description "Indicate the devices support the MAP-E function. Devices advertise the map-e feature through the capability exchange mechanism when a NETCONF session is established."; leaf enable { type boolean; default "1"; description "Enable/disable the MAP-E function."; } Sun, et al. Expires June 28, 2015 [Page 20] Internet-Draft YANG for softwire December 2014 container map-e-devices { description "Refer to the MAP-E devices, includes BRs and CPEs."; list map-e-device { key "id"; leaf id { type uint32; } uses map-rules; container map-e-cpe { if-feature map-e-cpe; leaf cpe-ipv6-prefix { type inet:ipv6-prefix; description "The IPv6 prefix of the MAP-E CPE."; } } } } } container map-t { if-feature map-t; description "Indicate the devices support the MAP-T function. Devices advertise the map-t feature through the capability exchange mechanism when a NETCONF session is established."; leaf enable { type boolean; default "1"; description "Enable/disable the MAP-T function."; } container map-t-devices { description "Refer to the MAP-T devices, includes BRs and CPEs."; list map-t-device { key "id"; leaf id { type uint32; } uses map-rules { refine map-rule-type { type enumeration { enum "DMR"; enum "BMR"; enum "FMR"; } } Sun, et al. Expires June 28, 2015 [Page 21] Internet-Draft YANG for softwire December 2014 } container map-t-cpe { if-feature map-t-cpe; leaf cpe-ipv6-prefix { type inet:ipv6-prefix; description "The IPv6 prefix of the MAP-T CPE."; } } } } } } /* * Operational state Data Nodes */ container softwire-state { config false; description "The operational state data for devices in softwire. "; leaf enable { type boolean; description "Status of the Softwire function."; } leaf name { type string; description "The name of the softwire devices."; } leaf description { type string; description "A textual description of the softwire devices."; } leaf tunnel-mtu { type uint32; description "The MTU of tunnel payload on the softwire devices."; } container lw4over6-aftr { if-feature lw4over6-aftr; description "Indicate this device supports the lwAFTR function. Devices advertise the lw4over6-aftr feature through the capability exchange mechanism when a NETCONF session is established."; Sun, et al. Expires June 28, 2015 [Page 22] Internet-Draft YANG for softwire December 2014 leaf enable { type boolean; description "Enable/disable the lwAFTR function."; } container lw4over6-aftr-devices { description "Refer to lwAFTRs."; list lw4over6-aftr-device { key "id"; leaf id { type uint32; } leaf active-softwire-num { type uint32; description "The number of tunnels running on the lw4over6 device."; } container binding-table { uses binding-table; } } } } container lw4over6-b4 { if-feature lw4over6-b4; description "Indicate this device supports the lwB4 function. Devices advertise the lw4over6-b4 feature through the capability exchange mechanism when a NETCONF session is established."; leaf enable { type boolean; description "Enable/disable the lwB4 function."; } container lw4over6-b4-devices { description "Refer to lwB4s."; list lw4over6-b4-device { key "id"; leaf id { type uint32; } leaf b4-ipv6-addr-format { type boolean; description "The format of lwB4 IPv6 address. If set to "1" indicates that the default mode for building the lwB4 IPv6 address Sun, et al. Expires June 28, 2015 [Page 23] Internet-Draft YANG for softwire December 2014 is used ([I-D.ietf-softwire-lw4over6]); if set to "0", the lwB4 can use any address from the assigned IPv6 prefix."; } leaf binding-ipv4-addr { type inet:ipv4-address; description "The allocated IPv4 address of lwB4, which binding with the port-set."; } container port-set { uses port-set; } leaf hint-ipv6-prefix { type inet:ipv6-prefix; description "'hint-ipv6-prefix' is used to longest prefix match."; } leaf aftr-ipv6-addr { type inet:ipv6-address; description "The IPv6 address of lwAFTR."; } container nat-table { uses nat-table; } } } } container map-e { if-feature map-e; description "Indicate the devices support the MAP-E function. Devices advertise the map-e feature through the capability exchange mechanism when a NETCONF session is established."; leaf enable { type boolean; description "Status of the MAP-E function."; } container map-e-devices { description "Refer to the MAP-E devices, includes BRs and CPEs."; list map-e-device { key "id"; leaf id { type uint32; } leaf map-rule-type { Sun, et al. Expires June 28, 2015 [Page 24] Internet-Draft YANG for softwire December 2014 type enumeration { enum "BMR"; enum "FMR"; } } container map-rule-table { uses map-rule-table; } container map-e-cpe { if-feature map-e-cpe; leaf cpe-ipv6-prefix { type cpe-ipv6-prefix; description "The IPv6 prefix of the MAP-E CPE."; } } } } } container map-t { if-feature map-t; description "Indicate the devices support the MAP-T function. Devices advertise the map-t feature through the capability exchange mechanism when a NETCONF session is established."; leaf enable { type boolean; description "Status of the MAP-T function."; } container map-t-devices { description "Refer to the MAP-T devices, includes BRs and CPEs."; list map-t-device { key "id"; leaf id { type uint32; } leaf map-rule-type { type enumeration { enum "DMR"; enum "BMR"; enum "FMR"; } } container map-rule-table { uses map-rule-table; } Sun, et al. Expires June 28, 2015 [Page 25] Internet-Draft YANG for softwire December 2014 container map-t-cpe { if-feature map-t-cpe; leaf dmr-ipv6-prefix { type inet:ipv6-prefix; description "The IPv6 prefix of the DMR (default mapping rule)."; } leaf cpe-ipv6-prefix { type inet:ipv6-prefix; description "The IPv6 prefix of the MAP-T CPE."; } } } } } } } 5. Example of Configure Lw4over6 Binding-Table The lwAFTR maintains an address binding table which contains the following 3-tuples: o IPv6 Address for a single lwB4 o Public IPv4 Address o Restricted port-set The entry has two functions: the IPv6 encapsulation of inbound IPv4 packets destined to the lwB4 and the validation of outbound IPv4-in- IPv6 packets received from the lwB4 for de-capsulation. Requirement: Add an entry that maintain the relationship between 3-tuples of lwB4 (2001::1) in binding-table, which on the lwAFTR (2001::2). The data value of this 3-tuples are '2001::1', '123.1.1.1' and '1234' respectively. Here is the example binding-table configuration xml: Sun, et al. Expires June 28, 2015 [Page 26] Internet-Draft YANG for softwire December 2014 // replace with IANA namespace when assigned. 2001::2 123.1.1.1 1234 2001::1 1 Figure 6: Lw4over6 Binding-Table Configuration XML 6. Security Considerations (TBD) TBD 7. IANA Considerations (TBD) TBD 8. Acknowledgements The authors would like to thank Lishan Li and Rajiv Asati for their contributions to this work. 9. References Sun, et al. Expires June 28, 2015 [Page 27] Internet-Draft YANG for softwire December 2014 9.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, October 2010. [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG Data Model Documents", RFC 6087, January 2011. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011. [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, July 2013. 9.2. Informative References [I-D.ietf-softwire-lw4over6] Cui, Y., Qiong, Q., Boucadair, M., Tsou, T., Lee, Y., and I. Farrer, "Lightweight 4over6: An Extension to the DS- Lite Architecture", draft-ietf-softwire-lw4over6-13 (work in progress), November 2014. [I-D.ietf-softwire-map] Troan, O., Dec, W., Li, X., Bao, C., Matsushima, S., Murakami, T., and T. Taylor, "Mapping of Address and Port with Encapsulation (MAP)", draft-ietf-softwire-map-12 (work in progress), November 2014. [I-D.ietf-softwire-map-t] Li, X., Bao, C., Dec, W., Troan, O., Matsushima, S., and T. Murakami, "Mapping of Address and Port using Translation (MAP-T)", draft-ietf-softwire-map-t-08 (work in progress), December 2014. [I-D.ietf-softwire-unified-cpe] Boucadair, M., Farrer, I., Perreault, S., and S. Sivakumar, "Unified IPv4-in-IPv6 Softwire CPE", draft- ietf-softwire-unified-cpe-01 (work in progress), May 2013. Sun, et al. Expires June 28, 2015 [Page 28] Internet-Draft YANG for softwire December 2014 [RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual- Stack Lite Broadband Deployments Following IPv4 Exhaustion", RFC 6333, August 2011. Authors' Addresses Qi Sun Tsinghua University Beijing 100084 P.R. China Phone: +86-10-6278-5822 Email: sunqi@csnet1.cs.tsinghua.edu.cn Hao Wang Tsinghua University Beijing 100084 P.R. China Phone: +86-10-6278-5822 Email: wangh13@mails.tsinghua.edu.cn Yong Cui Tsinghua University Beijing 100084 P.R. China Phone: +86-10-6260-3059 Email: yong@csnet1.cs.tsinghua.edu.cn Ian Farrer Deutsche Telekom AG CTO-ATI,Landgrabenweg 151 Bonn, NRW 53227 Germany Email: ian.farrer@telekom.de Mohamed Boucadair France Telecom Rennes 35000 France Email: mohamed.boucadair@orange.com Sun, et al. Expires June 28, 2015 [Page 29]