Softwire Working Group Q. Sun
Internet-Draft H. Wang
Intended status: Standards Track Y. Cui
Expires: August 16, 2015 Tsinghua University
I. Farrer
Deutsche Telekom AG
M. Boucadair
France Telecom
R. Asati
Cisco Systems, Inc.
February 12, 2015
YANG Data Model for IPv4-in-IPv6 Softwire
draft-sun-softwire-yang-02
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 August 16, 2015.
Sun, et al. Expires August 16, 2015 [Page 1]
Internet-Draft YANG for softwire February 2015
Copyright Notice
Copyright (c) 2015 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 lwB4 . . . . . . . . . . . . . . . . . 5
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 . . . . . . . . . . 6
3.3. Lightweight 4over6 lwB4 Tree Diagrams . . . . . . . . . . 7
3.4. MAP-E Tree Diagrams . . . . . . . . . . . . . . . . . . . 9
3.5. MAP-T Tree Diagrams . . . . . . . . . . . . . . . . . . . 11
3.6. Notifications for Softwire YANG . . . . . . . . . . . . . 13
4. Softwire YANG Model . . . . . . . . . . . . . . . . . . . . . 13
5. Example of Configure Lw4over6 Binding-Table . . . . . . . . . 30
6. Security Considerations (TBD) . . . . . . . . . . . . . . . . 31
7. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 31
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.1. Normative References . . . . . . . . . . . . . . . . . . 32
9.2. Informative References . . . . . . . . . . . . . . . . . 32
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33
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
Sun, et al. Expires August 16, 2015 [Page 2]
Internet-Draft YANG for softwire February 2015
documents, this document focuses on the provisioning aspects for
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
Sun, et al. Expires August 16, 2015 [Page 3]
Internet-Draft YANG for softwire February 2015
[RFC6020].
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
lwB4 and lwAFTR are different. The lw4over6 AFTRs needs to maintain
the binding table of lwB4s. The lw4o6 lwB4s need to maintain the
NAPT table of hosts.
For the MAP-T and MAP-T, CE and BR both need to maintain the map-rule
table. Thus, there is no need to distinguish BR and CE.
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.
Sun, et al. Expires August 16, 2015 [Page 4]
Internet-Draft YANG for softwire February 2015
2.3. Lightweight 4over6 lwB4
The lw4over6 lwB4 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.
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 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 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.
Sun, et al. Expires August 16, 2015 [Page 5]
Internet-Draft YANG for softwire February 2015
3.2. Lightweight 4over6 AFTR Tree Diagrams
Figure 2 defines the softwire data model for Lightweight 4over6 AFTR:
+--rw softwire-config
| +--...
| +--rw lw4over6-aftr
| +--rw enable? boolean
| +--rw lw4over6-aftr-instances
| +--rw lw4over6-aftr-instance* [id]
| +--rw id uint32
| +--rw name? string
| +--rw softwire-num-threshold uint32
| +--rw binding-table
| +--rw binding-entries* [binding-ipv6-addr]
| +--rw binding-ipv6-addr inet:ipv6-address
| +--rw binding-ipv6-prefix inet:ipv6-prefix
| +--rw binding-ipv4-addr inet:ipv4-address
| +--rw port-set
| | +--rw offset uint8
| | +--rw psid uint16
| | +--rw psid-len uint8
| +--rw lwaftr-ipv6-addr? inet:ipv6-prefix
| +--rw lifetime? uint32
| +--rw active? boolean
+--ro softwire-state
+--...
+--ro lw4over6-aftr
+--ro enable? boolean
+--ro lw4over6-aftr-instances
+--ro lw4over6-aftr-instance* [id]
+--ro id uint32
+--ro name? string
+--ro active-softwire-num uint32
+--ro binding-table
+--ro binding-entries* [binding-ipv6-addr]
+--ro binding-ipv6-addr inet:ipv6-address
+--ro binding-ipv6-prefix inet:ipv6-prefix
+--ro binding-ipv4-addr inet:ipv4-address
+--ro port-set
| +--ro offset uint8
| +--ro psid uint16
| +--ro psid-len uint8
+--ro lwaftr-ipv6-addr? inet:ipv6-prefix
+--ro active? boolean
Figure 2: Softwire Lightweight 4over6 AFTR Data Model Structure
Sun, et al. Expires August 16, 2015 [Page 6]
Internet-Draft YANG for softwire February 2015
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
tunnels currently provisioned on the device.
o Node "offset" is used to set the number of offset bits as in the
PSID algorithm.
o Node "psid" is used to algorithmically identify a set of ports for
a specific softwire.
o Node "active" is used to add or delete a particular binding-entry.
3.3. Lightweight 4over6 lwB4 Tree Diagrams
Figure 3 defines the softwire data model for a Lightweight 4over6
lwB4 element:
Sun, et al. Expires August 16, 2015 [Page 7]
Internet-Draft YANG for softwire February 2015
module: ietf-softwire
+--rw softwire-config
| +--...
| +--rw lw4over6-b4
| +--rw enable? boolean
| +--rw lw4over6-b4-instances
| +--rw lw4over6-b4-instance* [binding-ipv6-addr]
| +--rw name? string
| +--rw b4-ipv6-addr-format boolean
| +--rw binding-ipv6-addr inet:ipv6-address
| +--rw binding-ipv6-prefix inet:ipv6-prefix
| +--rw binding-ipv4-addr inet:ipv4-address
| +--rw port-set
| | +--rw offset uint8
| | +--rw psid uint16
| | +--rw psid-len uint8
| +--rw lwaftr-ipv6-addr? inet:ipv6-prefix
| +--rw lifetime? uint32
| +--rw nat-table
| +--...
+--ro softwire-state
+--...
+--ro lw4over6-b4
+--ro enable? boolean
+--ro lw4over6-b4-instances
+--ro lw4over6-b4-instance* [binding-ipv6-addr]
+--ro name? string
+--ro b4-ipv6-addr-format boolean
+--ro binding-ipv6-addr inet:ipv6-address
+--ro binding-ipv6-prefix inet:ipv6-prefix
+--ro binding-ipv4-addr inet:ipv4-address
+--ro port-set
| +--ro offset uint8
| +--ro psid uint16
| +--ro psid-len uint8
+--ro lwaftr-ipv6-addr? inet:ipv6-prefix
+--ro nat-table
+--...
Figure 3: Softwire Lightweight 4over6 lwB4 Data Model Structure
o Node "b4-ipv6-addr-format" indicates the format of lwB4 IPv6
address. If set to true, it indicates that the IPv6 source
address of the lwB4 is constructed according to the description in
[I-D.ietf-softwire-lw4over6]; if set to false, the lwB4 can use
any /128 address from the assigned IPv6 prefix.
Sun, et al. Expires August 16, 2015 [Page 8]
Internet-Draft YANG for softwire February 2015
o Node "binding-ipv4-addr" is used to configure an IPv4 address to
the lwB4.
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 "bind-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 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:
Sun, et al. Expires August 16, 2015 [Page 9]
Internet-Draft YANG for softwire February 2015
module: ietf-softwire
+--rw softwire-config
| +--...
| +--rw map-e {map-e}?
| +--rw enable? boolean
| +--rw map-e-instances
| +--rw map-e-instance* [id]
| +--rw id uint32
| +--rw name? string
| +--rw map-rule-table
| | +--rw map-rules* [id]
| | +--rw id uint32
| | +--rw map-rule-type enumeration
| | +--rw rule-ipv6-prefix inet:ipv6-prefix
| | +--rw rule-ipv4-prefix inet:ipv4-prefix
| | +--rw port-set
| | | +--rw offset uint8
| | | +--rw psid uint16
| | | +--rw psid-len uint8
| | +--rw ea-len uint8
| +--rw br-ipv6-addr? inet:ipv6-address
+--ro softwire-state
+--...
+--ro map-e {map-e}?
+--ro enable? boolean
+--ro map-e-instances
+--ro map-e-instance* [id]
+--ro id uint32
+--ro map-rule-table
| +--ro map-rules* [id]
| +--ro id string
| +--ro map-rule-type enumeration
| +--ro rule-ipv6-prefix inet:ipv6-prefix
| +--ro rule-ipv4-prefix inet:ipv4-prefix
| +--ro port-set
| | +--ro offset uint8
| | +--ro psid uint16
| | +--ro psid-len uint8
| +--ro ea-len uint8
+--ro br-ipv6-addr inet:ipv6-address
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.
Sun, et al. Expires August 16, 2015 [Page 10]
Internet-Draft YANG for softwire February 2015
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.
3.5. MAP-T Tree Diagrams
Figure 5 defines the softwire data model for MAP-T:
Sun, et al. Expires August 16, 2015 [Page 11]
Internet-Draft YANG for softwire February 2015
module: ietf-softwire
+--rw softwire-config
| +--...
| +--rw map-t {map-t}?
| +--rw enable? boolean
| +--rw map-t-instances
| +--rw map-t-instance* [id]
| +--rw id uint32
| +--rw name? string
| +--rw map-rule-table
| | +--rw map-rules* [id]
| | +--rw id uint8
| | +--rw map-rule-type enumeration
| | +--rw rule-ipv6-prefix inet:ipv6-prefix
| | +--rw rule-ipv4-prefix inet:ipv4-prefix
| | +--rw port-set
| | | +--rw offset uint8
| | | +--rw psid uint16
| | | +--rw psid-len uint8
| | +--rw ea-len uint8
| +--rw dmr-ipv6-prefix? inet:ipv6-prefix
+--ro softwire-state
+--...
+--ro map-t {map-t}?
+--ro enable? boolean
+--ro map-t-instances
+--ro map-t-instance* [id]
+--ro id uint32
+--ro map-rule-table
| +--ro map-rules* [id]
| +--ro id uint32
| +--ro map-rule-type enumeration
| +--ro rule-ipv6-prefix inet:ipv6-prefix
| +--ro rule-ipv4-prefix inet:ipv4-prefix
| +--ro port-set
| | +--ro offset uint8
| | +--ro psid uint16
| | +--ro psid-len uint8
| +--ro ea-len uint8
+--ro map-t-ce {map-t-ce}?
+--ro dmr-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 "BMR" and "FMR".
Sun, et al. Expires August 16, 2015 [Page 12]
Internet-Draft YANG for softwire February 2015
o Node "dmr-ipv6-prefix" defines the DMR in MAP-T.
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.
3.6. Notifications for Softwire YANG
This section describes the diagram tree for the notifications. These
notifications pertain to configuration and monitoring portions of
specific Softwire machanisms. The logic is that, the softwire
instance notifies the NETCONF client with the index for a mapping
entry and then the NETCONF client retrieves the related information
from the operational datastore of that instance.
module: ietf-softwire
notifications:
+---n softwire-lwaftr-event {lw4over6-aftr}?
| +--ro lwaftr-id leafref
| +--ro exceed-sw-num-limit? boolean
| +--ro invalid-entry* leafref
| +--ro added-entry* inet:ipv6-address
| +--ro modified-entry* leafref
+---n softwire-lwb4-event {lw4over6-b4}?
| +--ro lwb4-binding-ipv6-addr-change inet:ipv6-address
+---n softwire-map-e-event {map-e}?
| +--ro map-e-id leafref
| +--ro invalid-entry-id* leafref
| +--ro added-entry* uint32
| +--ro modified-entry* leafref
+---n softwire-map-t-event {map-t}?
+--ro map-t-id leafref
+--ro invalid-entry-id* leafref
+--ro added-entry* uint32
+--ro modified-entry* leafref
Figure 6: Softwire Notifications Data Model Structure
4. Softwire YANG Model
This module imports typedefs from [RFC6991].
<CODE BEGINS> file "ietf-softwire@2015-02-10.yang"
Sun, et al. Expires August 16, 2015 [Page 13]
Internet-Draft YANG for softwire February 2015
module ietf-softwire {
namespace "urn:ietf:params:xml:ns:yang:softwire";
prefix "softwire";
import ietf-inet-types { prefix inet; }
organization "Softwire Working Group";
contact
"
Qi Sun sunqi@csnet1.cs.tsinghua.edu.cn
Hao Wang wangh13@mails.tsinghua.edu.cn
Yong Cui yong@csnet1.cs.tsinghua.edu.cn
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 2015-02-10 {
description
"Add notifications.";
}
revision 2015-02-06 {
description
"Correct grammar errors; Reuse groupings; Update descriptions.";
}
revision 2015-02-02 {
description
"Initial revision.";
}
/*
* Typedef
*/
Sun, et al. Expires August 16, 2015 [Page 14]
Internet-Draft YANG for softwire February 2015
/*
* Features
*/
feature lw4over6 {
description
"Lightweight 4over6 (lw4over6) is an IPv4-over-IPv6 tunnelling
transition mechanism. Lightweight 4over6 is a solution designed
specifically for complete independence between IPv6 subnet prefix
(and /128 IPv6 address) and IPv4 address with or without IPv4
address sharing. This is accomplished by maintaining state for each
softwire (per-subscriber state) in the central lwAFTR and a hub-and-spoke
forwarding architecture. In order to delegate the NAPT function and
achieve IPv4 address sharing, port-restricted IPv4 addresses needs to
be allocated to CPEs.";
reference
"I-D.ietf-softwire-lw4over6";
}
feature lw4over6-aftr {
if-feature lw4over6;
description
"The AFTRs (BRs) for Lightweight 4over6, so-called lwAFTR. This
feature indicates that a instance functions as a lwAFTR. A lwAFTR
is an IPv4-in-IPv6 tunnel concentrator that maintains per-subscriber
IPv4-IPv6 address binding.
";
}
feature lw4over6-b4 {
if-feature lw4over6;
description
"The B4s (CPEs) for Lightweight 4over6, so-called lwB4. This feature
indicates that a instance functions as a lwB4. A lwB4 is an IPv4-in-IPv6
tunnel initiator. It is dual-stack capable node, either a directly
connected end-host or a CPE. It sources IPv4 conncections using the
configured port-set and the public IPv4 address.
";
}
feature map-e {
description
"MAP-E is an IPv6 transition mechanism for transporting IPv4 packets
across an IPv6 network using IP encapsulation. MAP-E allows for
a reduction of the amount of centralized state using rules to express
IPv4/IPv6 address mappings. This introduces an algorithmic relationship
between the IPv6 subnet and IPv4 address. This relationship also allows
the option of direct, meshed connectivity between users. Alternatively,
Sun, et al. Expires August 16, 2015 [Page 15]
Internet-Draft YANG for softwire February 2015
MAP-E can be configured to support IPv4/IPv6 indepent binding. This feature
indicates the instance functions as a MAP-E instance.
";
reference
"I-D.ietf-softwire-map";
}
feature map-e-ce {
if-feature map-e;
description
"Indicates the instance functions as a MAP-E CPE.";
//Not sure if this is needed.
}
feature map-t {
description
"The Mapping of Address and Port - Translation (MAP-T) architecture
is a double stateless NAT64 based solution. It uses the stateless
algorithmic address & transport layer port mapping scheme defined in
MAP-E. The MAP-T solution differs from MAP-E in the use of IPv4-IPv6
translation, rather than encapsulation, as the form of IPv6 domain
transport. This feature indicates the instance functions as a MAP-T instance.
";
reference
"I-D.ietf-softwire-map-t";
}
feature map-t-ce {
if-feature map-t;
description
"Indicates the instance functions as a MAP-T CPE.";
//Not sure if this is needed.
}
/*
* Grouping
*/
grouping port-set {
description
"Use the PSID algorithm to represent a range of transport layer ports.";
leaf offset {
mandatory true;
type uint8 {
range 0..16;
}
description
Sun, et al. Expires August 16, 2015 [Page 16]
Internet-Draft YANG for softwire February 2015
"The number of offset bits. In Lightweight 4over6, the defaul value is 0
for assigning one contiguous port range. In MAP-E/T, the default value
is 6, which excludes system ports by default and assigns distributed
port ranges. If the this parameter is larger than 0, the value of offset
MUST be greater than 0.
";
}
leaf psid {
mandatory true;
type uint16;
description
"Port Set Identifier (PSID) value, which identifies a set of ports
algorithmically.";
}
leaf psid-len {
mandatory true;
type uint8 {
range 0..16;
}
description
"The length of PSID, representing the sharing ratio for a IPv4 address.";
}
}
grouping binding-entry {
description
"The lwAFTR maintains an address binding table that contains the
binding between the lwB4's IPv6 address, the allocated IPv4 address
and restricted port-set.
";
leaf binding-ipv6-addr {
mandatory true;
type inet:ipv6-address;
description
"The /128 IPv6 address of the lwB4, which is used to bind the
IPv4 address and port-set and source the tunnel.
";
}
leaf binding-ipv6-prefix {
mandatory true;
type inet:ipv6-prefix;
description
"The operator-assigned IPv6 prefix of the lwB4. ";
}
leaf binding-ipv4-addr {
mandatory true;
type inet:ipv4-address;
description
Sun, et al. Expires August 16, 2015 [Page 17]
Internet-Draft YANG for softwire February 2015
"The IPv4 address assigned to the lwB4, which is used as the
IPv4 External Address for lwB4 local NAPT44.
";
}
container port-set {
uses port-set {
refine offset {
default "0";
}
}
}
leaf lwaftr-ipv6-addr {
type inet:ipv6-prefix;
description
"The IPv6 address for lwaftr. Optional for the binding entry.";
}
}
grouping nat-table {
description
"Grouping 'nat-table' is not extended. The current mechanism is
focusing on the provisioning of external IP address and port set;
other NAT-specific considerations are out of scope for this model.";
}
grouping map-rule {
description
"A set of parameters describing the mapping between an IPv4 prefix,
IPv4 address or shared IPv4 address and an IPv6 prefix or address.
Each domain uses a differe mapping rule set.
";
leaf map-rule-type {
mandatory true;
type enumeration {
enum "BMR";
enum "FMR";
}
description
"The BMR and FMR share the rule format. BMR is used for a node
to configure itself with IPv4 information retrived from the rule.
FMR is designed for the in-domain 4-in-6 routing, used in mesh mode.
A BMR can be FMR in some case. The DMR for map-t is defined separately.
";
}
leaf rule-ipv6-prefix {
type inet:ipv6-prefix;
mandatory true;
description
Sun, et al. Expires August 16, 2015 [Page 18]
Internet-Draft YANG for softwire February 2015
"The Rule IPv6 prefix defined in the mapping rule.
";
}
leaf rule-ipv4-prefix {
type inet:ipv4-prefix;
mandatory true;
description
"The Rule IPv4 prefix defined in the mapping rule.
";
}
container port-set {
uses port-set{
refine offset {
default "6";
}
}
}
leaf ea-len {
mandatory true;
type uint8;
description
"Embedded Address (EA) bits are the IPv4 EA-bits in the IPv6
address identify an IPv4 prefix/address (or part thereof) or
a shared IPv4 address (or part thereof) and a port-set identifier.
The length of the EA-bits is defined as part of a MAP rule for
a MAP domain.
";
}
}
/*
* Configuration Data Nodes
*/
container softwire-config {
description
"The configuration data for Softwire instances. ";
leaf enable {
type boolean;
default "true";
description
"Enable/disable the Softwire function.";
}
leaf description {
type string;
description
"A textual description of Softwire.";
}
Sun, et al. Expires August 16, 2015 [Page 19]
Internet-Draft YANG for softwire February 2015
leaf tunnel-mtu {
mandatory true;
type uint32;
description
"The MTU for softwire tunnel.";
}
container lw4over6-aftr {
if-feature lw4over6-aftr;
description
"Indicate this instance supports the lwAFTR function. The
instances advertise the lw4over6-aftr feature through
the capability exchange mechanism when a NETCONF session
is established.";
leaf enable {
type boolean;
description
"Enable/disable the lwAFTR function.";
}
container lw4over6-aftr-instances {
description
"A set of lwAFTRs to be configured.";
list lw4over6-aftr-instance {
key "id";
leaf id {
type uint32;
}
leaf name {
type string;
description "The name for the lw4over6-aftr.";
}
leaf softwire-num-threshold {
mandatory true;
type uint32;
description
"The maximum number of tunnels that can be created on
the lwAFTR.";
}
container binding-table {
list binding-entries {
key "binding-ipv6-addr";
uses binding-entry;
leaf lifetime {
type uint32;
units seconds;
description
"The lifetime for the entry.";
}
leaf active {
Sun, et al. Expires August 16, 2015 [Page 20]
Internet-Draft YANG for softwire February 2015
type boolean;
default true;
description
"Establish or tear down the tunnel.";
}
}
}
}
}
}
container lw4over6-b4 {
if-feature lw4over6-b4;
description
"Indicate this instance supports the lwB4 function. The instances
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-instances {
description
"A set of lwB4s to be configured.";
list lw4over6-b4-instance {
key "binding-ipv6-addr";
leaf name {
type string;
description "The lw4over6-b4 name.";
}
leaf b4-ipv6-addr-format {
type boolean;
mandatory true;
description
"The format of lwB4 IPv6 address. If set to true, it indicates
that the IPv6 source address of the lwB4 is constructed according
to the description in [I-D.ietf-softwire-lw4over6]; if set to
false, the lwB4 can use any /128 address from the assigned IPv6
prefix.";
}
uses binding-entry;
leaf lifetime {
type uint32;
units seconds;
}
container nat-table {
uses nat-table;
description "To be extended.";
Sun, et al. Expires August 16, 2015 [Page 21]
Internet-Draft YANG for softwire February 2015
}
}
}
}
container map-e {
if-feature map-e;
description
"Indicate the instances support the MAP-E function. The instances
advertise the map-e feature through the capability exchange
mechanism when a NETCONF session is established.";
leaf enable {
type boolean;
default "true";
description
"Enable/disable the MAP-E function.";
}
container map-e-instances {
description
"A set of MAP-E instances to be configured, including BRs and CPEs.";
list map-e-instance {
key "id";
leaf id {
type uint32;
}
leaf name {
type string;
}
container map-rule-table {
list map-rules {
key "id";
leaf id {
type uint32;
}
uses map-rule;
}
}
leaf br-ipv6-addr {
//if-feature map-e-ce;
type inet:ipv6-address;
description
"The IPv6 address of the MAP-E BR.";
}
}
}
}
container map-t {
if-feature map-t;
description
Sun, et al. Expires August 16, 2015 [Page 22]
Internet-Draft YANG for softwire February 2015
"Indicate the instances support the MAP-T function. The instances
advertise the map-t feature through the capability exchange
mechanism when a NETCONF session is established.";
leaf enable {
type boolean;
default "true";
description
"Enable/disable the MAP-T function.";
}
container map-t-instances {
description
"A set of the MAP-T instances to be configured, including BRs
and CPEs.";
list map-t-instance {
key "id";
leaf id {
type uint32;
}
leaf name {
type string;
}
container map-rule-table {
list map-rules {
key "id";
leaf id {
type uint8;
}
uses map-rule;
}
}
leaf dmr-ipv6-prefix {
//if-feature map-t-ce;
type inet:ipv6-prefix;
description
"The IPv6 prefix of the MAP-T BR. ";
//I think both the BR and CE should be configured with this parameter for consistence.
}
}
}
}
}
/*
* Operational state Data Nodes
*/
container softwire-state {
config false;
Sun, et al. Expires August 16, 2015 [Page 23]
Internet-Draft YANG for softwire February 2015
description
"The operational state data for Softwire instances. ";
leaf enable {
type boolean;
description
"Status of the Softwire function.";
}
leaf description {
type string;
description
"A textual description of the softwire instances.";
}
leaf tunnel-mtu {
mandatory true;
type uint32;
description
"The tunnel MTU for softwire instances.";
}
container lw4over6-aftr {
if-feature lw4over6-aftr;
config false;
description
"Indicate this instance supports the lwAFTR function. The instances
advertise the lw4over6-aftr feature through the capability
exchange mechanism when a NETCONF session is established.";
leaf enable {
type boolean;
description
"Status of the lwAFTR function.";
}
container lw4over6-aftr-instances {
description
"A set of lwAFTRs.";
list lw4over6-aftr-instance {
key "id";
leaf id {
type uint32;
}
leaf name {
type string;
description "The name for this lw4over6-aftr.";
}
leaf active-softwire-num {
mandatory true;
type uint32;
description
"The number of currently active tunnels on the lw4over6 instance.";
}
Sun, et al. Expires August 16, 2015 [Page 24]
Internet-Draft YANG for softwire February 2015
container binding-table {
list binding-entries {
key "binding-ipv6-addr";
uses binding-entry;
leaf active {
type boolean;
description
"Status of a specific tunnel.";
}
}
}
}
}
}
container lw4over6-b4 {
if-feature lw4over6-b4;
config false;
description
"Indicate this instance supports the lwB4 function. The instances
advertise the lw4over6-b4 feature through the capability
exchange mechanism when a NETCONF session is established.";
leaf enable {
type boolean;
description
"Status of the lwB4 function.";
}
container lw4over6-b4-instances {
description
"A set of lwB4s.";
list lw4over6-b4-instance {
key "binding-ipv6-addr";
leaf name {
type string;
}
leaf b4-ipv6-addr-format {
mandatory true;
type boolean;
description
"The format of lwB4 IPv6 address. If the parameter is true,
it indicates that the IPv6 source address of the lwB4 is
constructed according to the description in [I-D.ietf-softwire-lw4over6];
if it's false, the lwB4 is using any /128 address from the assigned
IPv6 prefix.";
}
uses binding-entry;
container nat-table {
uses nat-table;
}
Sun, et al. Expires August 16, 2015 [Page 25]
Internet-Draft YANG for softwire February 2015
}
}
}
container map-e {
if-feature map-e;
config false;
description
"Indicate the instances support the MAP-E function. The instances
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-instances {
description
"A set of MAP-E instances, including BRs and CPEs.";
list map-e-instance {
key "id";
leaf id {
type uint32;
}
container map-rule-table {
list map-rules {
key "id";
leaf id {
type string;
}
uses map-rule;
}
}
leaf br-ipv6-addr {
if-feature map-e-ce;
mandatory true;
type inet:ipv6-address;
description
"The IPv6 address of the MAP-E BR.";
// Where should this be, inside or outside the list??
}
}
}
}
container map-t {
if-feature map-t;
config false;
description
"Indicate the instances support the MAP-T function. The instances
Sun, et al. Expires August 16, 2015 [Page 26]
Internet-Draft YANG for softwire February 2015
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-instances {
description
"A set of the MAP-T instances, including BRs and CPEs.";
list map-t-instance {
key "id";
leaf id {
type uint32;
}
container map-rule-table {
list map-rules {
key "id";
leaf id {
type uint32;
}
uses map-rule;
}
}
container map-t-ce {
if-feature map-t-ce;
leaf dmr-ipv6-prefix {
type inet:ipv6-prefix;
description
"The IPv6 prefix of the DMR (default mapping rule).";
}
}
}
}
}
}
/*
* Notifications
*/
notification softwire-lwaftr-event {
if-feature lw4over6-aftr;
leaf lwaftr-id {
mandatory true;
type leafref {
path
"/softwire-state/lw4over6-aftr/lw4over6-aftr-instances/"
+ "lw4over6-aftr-instance/id";
}
Sun, et al. Expires August 16, 2015 [Page 27]
Internet-Draft YANG for softwire February 2015
}
leaf exceed-sw-num-limit {
type boolean;
default false;
}
leaf-list invalid-entry {
type leafref {
path
"/softwire-state/lw4over6-aftr/lw4over6-aftr-instances/"
+ "lw4over6-aftr-instance[id=current()/../lwaftr-id]/"
+ "binding-table/binding-entries/binding-ipv6-addr";
}
description
"Notify the client that a specific binding entry has been
expired/invalid. The binding-ipv6-addr identifies an entry.";
}
leaf-list added-entry {
type inet:ipv6-address;
description
"Notify the client that a binding entry has been added.
The ipv6 address of that entry is the index. The client
get other information from the lwaftr about the entry
indexed by that ipv6 address.
";
}
leaf-list modified-entry {
type leafref {
path
"/softwire-state/lw4over6-aftr/lw4over6-aftr-instances/"
+ "lw4over6-aftr-instance[id=current()/../lwaftr-id]/"
+ "binding-table/binding-entries/binding-ipv6-addr";
}
}
}
notification softwire-lwb4-event {
if-feature lw4over6-b4;
leaf lwb4-binding-ipv6-addr-change {
mandatory true;
type inet:ipv6-address;
description
"The sourch tunnel IPv6 address of the lwB4. If 'b4-ipv6-addr-format'
is false, or the lwb4's binding-ipv6-address changes for any reason,
it SHOULD notify the NETCONF client.";
}
}
notification softwire-map-e-event {
if-feature map-e;
leaf map-e-id {
Sun, et al. Expires August 16, 2015 [Page 28]
Internet-Draft YANG for softwire February 2015
mandatory true;
type leafref {
path
"/softwire-state/map-e/map-e-instances/map-e-instance/id";
}
}
leaf-list invalid-entry-id {
type leafref {
path
"/softwire-state/map-e/map-e-instances/"
+ "map-e-instance[id=current()/../map-e-id]/map-rule-table/"
+ "map-rules/id";
}
}
leaf-list added-entry {
type uint32;
}
leaf-list modified-entry {
type leafref {
path
"/softwire-state/map-e/map-e-instances/"
+ "map-e-instance[id=current()/../map-e-id]/map-rule-table/"
+ "map-rules/id";
}
}
}
notification softwire-map-t-event {
if-feature map-t;
leaf map-t-id {
mandatory true;
type leafref {
path
"/softwire-state/map-t/map-t-instances/map-t-instance/id";
}
}
leaf-list invalid-entry-id {
type leafref {
path
"/softwire-state/map-t/map-t-instances/"
+ "map-t-instance[id=current()/../map-t-id]/map-rule-table/"
+ "map-rules/id";
}
}
leaf-list added-entry {
type uint32;
}
leaf-list modified-entry {
type leafref {
Sun, et al. Expires August 16, 2015 [Page 29]
Internet-Draft YANG for softwire February 2015
path
"/softwire-state/map-t/map-t-instances/"
+ "map-t-instance[id=current()/../map-t-id]/map-rule-table/"
+ "map-rules/id";
}
}
}
}
<CODE ENDS>
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 August 16, 2015 [Page 30]
Internet-Draft YANG for softwire February 2015
<rpc message-id="101" xmlns:nc="urn:params:xml:ns:yang:ietf-softwire:1.0">
// replace with IANA namespace when assigned.
<edit-config>
<target>
<running/>
</target>
<softwire-config>
<lw4over6-aftr>
<lw4over6-aftr-instances>
<lw4over6-aftr-instance>
<aftr-ipv6-addr>2001::2</aftr-ipv6-addr>
<binding-table>
<binding-entry>
<binding-ipv4-addr>123.1.1.1</binding-ipv4-addr>
<port-set>
<psid>1234</psid>
</port-set>
<binding-ipv6-addr>2001::1</binding-ipv6-addr>
<active>1</active>
</binding-entry>
</binding-table>
</lw4over6-aftr-instance>
</lw4over6-aftr-instances>
</lw4over6-aftr>
</softwire-config>
Figure 7: 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 August 16, 2015 [Page 31]
Internet-Draft YANG for softwire February 2015
9.1. Normative 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.
[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-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 August 16, 2015 [Page 32]
Internet-Draft YANG for softwire February 2015
[RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual-
Stack Lite Broadband Deployments Following IPv4
Exhaustion", RFC 6333, August 2011.
[RFC6470] Bierman, A., "Network Configuration Protocol (NETCONF)
Base Notifications", RFC 6470, February 2012.
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
Sun, et al. Expires August 16, 2015 [Page 33]
Internet-Draft YANG for softwire February 2015
Mohamed Boucadair
France Telecom
Rennes 35000
France
Email: mohamed.boucadair@orange.com
Rajiv Asati
Cisco Systems, Inc.
7025 Kit Creek Rd.
RTP, NC 27709
USA
Email: Rajiva@cisco.com
Sun, et al. Expires August 16, 2015 [Page 34]