draft-ietf-softwire-dslite-yang-00.txt   draft-ietf-softwire-dslite-yang-01.txt 
Network Working Group M. Boucadair Network Working Group M. Boucadair
Internet-Draft C. Jacquenet Internet-Draft C. Jacquenet
Intended status: Standards Track Orange Intended status: Standards Track Orange
Expires: February 4, 2017 S. Sivakumar Expires: May 18, 2017 S. Sivakumar
Cisco Systems Cisco Systems
August 3, 2016 November 14, 2016
A YANG Data Model for the DS-Lite Address Family Transition Router A YANG Data Model for the DS-Lite
(AFTR) draft-ietf-softwire-dslite-yang-01
draft-ietf-softwire-dslite-yang-00
Abstract Abstract
This document defines a YANG data model for the DS-Lite Address This document defines a YANG data model for the DS-Lite Address
Family Transition Router (AFTR). Family Transition Router (AFTR) and Basic Bridging BroadBand (B4)
elements .
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on February 4, 2017. This Internet-Draft will expire on May 18, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 10 skipping to change at page 2, line 10
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 2 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 2
2. DS-Lite AFTR YANG Data Model . . . . . . . . . . . . . . . . 3 2. DS-Lite YANG Data Model . . . . . . . . . . . . . . . . . . . 3
3. AFTR YANG Module . . . . . . . . . . . . . . . . . . . . . . 8 3. DS-Lite YANG Module . . . . . . . . . . . . . . . . . . . . . 9
4. Security Considerations . . . . . . . . . . . . . . . . . . . 32 4. Security Considerations . . . . . . . . . . . . . . . . . . . 40
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 33 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 40
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.1. Normative references . . . . . . . . . . . . . . . . . . 33 7.1. Normative references . . . . . . . . . . . . . . . . . . 41
7.2. Informative references . . . . . . . . . . . . . . . . . 34 7.2. Informative references . . . . . . . . . . . . . . . . . 41
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42
1. Introduction 1. Introduction
This document defines a data model for DS-Lite [RFC6333], using the This document defines a data model for DS-Lite [RFC6333], using the
YANG data modeling language [RFC6020]. Only the Address Family YANG data modeling language [RFC6020]. Both the Address Family
Transition Router (AFTR) element is covered by this specification. Transition Router (AFTR) and Basic Bridging BroadBand (B4) elements
As a reminder, [RFC6334] can be used to configure the name of the are covered by this specification.
AFTR to a Basic Bridging BroadBand (B4) element.
DS-Lite deployment considerations are discussed in [RFC6908]. DS-Lite deployment considerations are discussed in [RFC6908].
This document follows the guidelines of [RFC6087]. This document follows the guidelines of [RFC6087].
This document uses the common YANG types defined in [RFC6991]. This document uses the common YANG types defined in [RFC6991].
1.1. Terminology 1.1. Terminology
This document makes use of the terms defined in [RFC6333]. This document makes use of the terms defined in [RFC6333].
skipping to change at page 3, line 14 skipping to change at page 3, line 14
o Symbols after data node names: "?" means an optional node, "!" a o Symbols after data node names: "?" means an optional node, "!" a
container with presence, and "*" denotes a "list" or "leaf-list". container with presence, and "*" denotes a "list" or "leaf-list".
o Parentheses enclose choice and case nodes, and case nodes are also o Parentheses enclose choice and case nodes, and case nodes are also
marked with a colon (":"). marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not o Ellipsis ("...") stands for contents of subtrees that are not
shown. shown.
2. DS-Lite AFTR YANG Data Model 2. DS-Lite YANG Data Model
Figure 1 depicts the YANG data model for the AFTR element. Figure 1 depicts the YANG data model for the AFTR and B4 elements.
A device can enable multiple AFTR instances; each responsible to The model supports enabling one or more instances of the AFTR
service a group of B4s. The data model assumes that each AFTR function on a device; each instance is responsible for serving a
instance can: be enable/disabled, be provisioned with a dedicated group of B4s. The data model assumes that each AFTR instance can: be
configuration data, and maintain its own mapping table. The data enable/disabled, be provisioned with dedicated configuration data,
model assumes that pools of IPv4 addresses can be provisioned to the and maintain its own mapping table. The data model assumes that
AFTR. These pools may be contiguous or non-contiguous. Also, it pools of IPv4 addresses can be provisioned to the AFTR. These pools
assumes that an AFTR can either assign individual port numbers or may be contiguous or non-contiguous. Also, it assumes that an AFTR
port sets. can either assign individual port numbers or port sets.
This document assumes [RFC4787][RFC5382][RFC5508] are enabled by This document assumes [RFC4787][RFC5382][RFC5508] are enabled by
default. Also, the data model relies on the recommendations in default. Also, the data model relies on the recommendations in
[RFC6888] and [RFC7857]. In addition, the data model supports state [RFC6888] and [RFC7857]. In addition, the data model supports state
migration as per [RFC7785]. migration as per [RFC7785].
PCP-related considerations are out of scope of the document. A YANG PCP-related considerations are out of scope of the document. A YANG
data model for PCP is documented in [I-D.boucadair-pcp-yang]. data model for PCP is documented in [I-D.boucadair-pcp-yang].
module: ietf-dslite-aftr module: ietf-dslite
+--rw dslite-aftr-config +--rw dslite-config
| +--rw enable? boolean | +--rw dslite-aftr-config {aftr}?
| +--rw dslite-aftr-instances | | +--rw enable? boolean
| +--rw dslite-aftr-instance* [id] | | +--rw dslite-aftr-instances
| +--rw id uint32 | | +--rw dslite-aftr-instance* [id]
| +--rw name? string | | +--rw id uint32
| +--rw dslite-aftr-ip-address* [address-id] | | +--rw name? string
| | +--rw address-id uint32 | | +--rw dslite-aftr-ipv6-address* [address-id]
| | +--rw ip-address? inet:ipv6-address | | | +--rw address-id uint32
| +--rw ipv4-address? inet:ipv4-address | | | +--rw ipv6-address? inet:ipv6-address
| +--rw tunnel-mtu? uint16 | | +--rw ipv4-address? inet:ipv4-address
| +--rw external-ip-address-pool* [address-id] | | +--rw tunnel-mtu? uint16
| | +--rw address-id uint32 | | +--rw external-ip-address-pool* [address-id]
| | +--rw external-ip-pool? inet:ipv4-prefix | | | +--rw address-id uint32
| +--rw subscriber-mask? uint8 | | | +--rw external-ip-pool? inet:ipv4-prefix
| +--rw nat-mapping-type? enumeration | | +--rw subscriber-mask? uint8
| +--rw nat-filtering-type? enumeration | | +--rw nat-mapping-type? enumeration
| +--rw port-quota uint16 | | +--rw nat-filtering-type? enumeration
| +--rw exclude-ports* [id] | | +--rw port-quota uint16
| | +--rw id uint16 | | +--rw exclude-ports* [id]
| | +--rw (port-type)? | | | +--rw id uint16
| | +--:(single-port-number) | | | +--rw (port-type)?
| | | +--rw single-port-number? inet:port-number | | | +--:(single-port-number)
| | +--:(port-range) | | | | +--rw single-port-number? inet:port-number
| | +--rw start-port-number? inet:port-number | | | +--:(port-range)
| | +--rw end-port-number? inet:port-number | | | +--rw start-port-number? inet:port-number
| +--rw port-set | | | +--rw end-port-number? inet:port-number
| | +--rw port-set-enable? boolean | | +--rw port-set
| | +--rw port-set-size? uint16 | | | +--rw port-set-enable? boolean
| | +--rw port-set-timeout? uint32 | | | +--rw port-set-size? uint16
| +--rw enable-app? boolean | | | +--rw port-set-timeout? uint32
| +--rw max-softwire-per-subscriber? uint8 | | +--rw enable-app? boolean
| +--rw transport-protocol* [transport-protocol-id] | | +--rw max-softwire-per-subscriber? uint8
| | +--rw transport-protocol-id uint8 | | +--rw transport-protocol* [transport-protocol-id]
| +--rw new-mappings-rate-limit? uint32 | | | +--rw transport-protocol-id uint8
| +--rw mss-clamping-enable? boolean | | +--rw new-mappings-rate-limit? uint32
| +--rw port-randomization-enable? boolean | | +--rw mss-clamping
| +--rw port-preservation-enable? boolean | | | +--rw mss-clamping-enable? boolean
| +--rw port-parity-preservation-enable? boolean | | | +--rw mss-value? uint16
| +--rw udp-lifetime? uint32 | | +--rw port-randomization-enable? boolean
| +--rw tcp-idle-timeout? uint32 | | +--rw port-preservation-enable? boolean
| +--rw tcp-trans-open-timeout? uint32 | | +--rw port-parity-preservation-enable? boolean
| +--rw tcp-trans-close-timeout? uint32 | | +--rw address-roundrobin-enable? boolean
| +--rw tcp-in-syn-timeout? uint32 | | +--rw udp-lifetime? uint32
| +--rw fragment-min-timeout? uint32 | | +--rw tcp-idle-timeout? uint32
| +--rw icmp-timeout? uint32 | | +--rw tcp-trans-open-timeout? uint32
| +--rw hold-down-timeout? uint32 | | +--rw tcp-trans-close-timeout? uint32
| +--rw v6-v4-dscp-preservation boolean | | +--rw tcp-in-syn-timeout? uint32
| +--rw logging-info | | +--rw fragment-min-timeout? uint32
| | +--rw logging-enable? boolean | | +--rw icmp-timeout? uint32
| | +--rw destination-address? inet:ip-prefix | | +--rw hold-down-timeout? uint32
| | +--rw destination-port? inet:port-number | | +--rw v6-v4-dscp-preservation boolean
| +--rw notify-address-pool-usage | | +--rw logging-info
| | +--rw pool-id? uint32 | | | +--rw logging-enable? boolean
| | +--rw notify-pool-hi-threshold percent | | | +--rw destination-address? inet:ip-prefix
| | +--rw notify-pool-low-threshold? percent | | | +--rw destination-port? inet:port-number
| +--rw ftp-alg-enable? boolean | | | +--rw (protocol)?
| +--rw tftp-alg-enable? boolean | | | +--:(syslog)
| +--rw sip-alg-enable? boolean | | | | +--rw syslog? boolean
| +--rw rtsp-alg-enable? boolean | | | +--:(ipfix)
| +--rw h323-alg-enable? boolean | | | | +--rw ipfix? boolean
| +--rw all-algs-enable? boolean | | | +--:(ftp)
| +--rw mapping-table | | | +--rw ftp? boolean
| +--rw mapping-entry* [index] | | +--rw notify-address-pool-usage
| +--rw index uint32 | | | +--rw pool-id? uint32
| +--rw status? enumeration | | | +--rw notify-pool-hi-threshold percent
| +--rw type? enumeration | | | +--rw notify-pool-low-threshold? percent
| +--rw b4-ip-address inet:ipv6-address | | +--rw ftp-alg-enable? boolean
| +--rw internal-ip-address inet:ipv4-prefix | | +--rw tftp-alg-enable? boolean
| +--rw internal-port | | +--rw sip-alg-enable? boolean
| | +--rw (port-type)? | | +--rw rtsp-alg-enable? boolean
| | +--:(single-port-number) | | +--rw h323-alg-enable? boolean
| | | +--rw single-port-number? inet:port-number | | +--rw all-algs-enable? boolean
| | +--:(port-range) | | +--rw mapping-table
| | +--rw start-port-number? inet:port-number | | +--rw mapping-entry* [index]
| | +--rw end-port-number? inet:port-number | | +--rw index uint32
| +--rw external-ip-address inet:ipv4-address | | +--rw status? enumeration
| +--rw external-port | | +--rw type? enumeration
| | +--rw (port-type)? | | +--rw b4-ip-address inet:ipv6-address
| | +--:(single-port-number) | | +--rw internal-ip-address inet:ipv4-prefix
| | | +--rw single-port-number? inet:port-number | | +--rw internal-port
| | +--:(port-range) | | | +--rw (port-type)?
| | +--rw start-port-number? inet:port-number | | | +--:(single-port-number)
| | +--rw end-port-number? inet:port-number | | | | +--rw single-port-number? inet:port-number
| +--rw transport-protocol uint8 | | | +--:(port-range)
| +--rw lifetime uint32 | | | +--rw start-port-number? inet:port-number
| +--rw v6-dscp? uint8 | | | +--rw end-port-number? inet:port-number
| +--rw internal-v4-dscp? uint8 | | +--rw external-ip-address inet:ipv4-address
| +--rw external-v4-dscp? uint8 | | +--rw external-port
| +--rw description? string | | | +--rw (port-type)?
+--ro dslite-aftr-state | | | +--:(single-port-number)
+--ro dslite-aftr-instances | | | | +--rw single-port-number? inet:port-number
+--ro dslite-aftr-instance* [id] | | | +--:(port-range)
+--ro id int32 | | | +--rw start-port-number? inet:port-number
+--ro name? string | | | +--rw end-port-number? inet:port-number
+--ro aftr-capabilities | | +--rw transport-protocol uint8
| +--ro eim-support? boolean | | +--rw lifetime uint32
| +--ro eif-support? boolean | | +--rw v6-dscp? uint8
| +--ro edm-support? boolean | | +--rw internal-v4-dscp? uint8
| +--ro edf-support? boolean | | +--rw external-v4-dscp? uint8
| +--ro adm-support? boolean | | +--rw description? string
| +--ro adf-support? boolean | +--rw dslite-b4-config {b4}?
| +--ro pcp-support? boolean | +--rw enable? boolean
| +--ro subscriber-mask-support? boolean | +--rw dslite-b4-instances
| +--ro port-set-support? boolean | +--rw dslite-b4-instance* [id]
| +--ro self-state-migration-support? boolean | +--rw id uint32
| +--ro mss-clamping-support? boolean | +--rw name? string
| +--ro port-randomization-support? boolean | +--rw aftr-ipv6-addr inet:ipv6-address
| +--ro port-preservation-suport? boolean | +--rw ipv4-address? inet:ipv4-address
| +--ro port-parity-preservation-support? boolean | +--rw tunnel-mtu? uint16
| +--ro transport-proto-capabilities* [transport-protocol-id] | +--rw v6-v4-dscp-preservation boolean
| | +--ro transport-protocol-id uint8 +--rw dslite-state
| +--ro v6-v4-dscp-preservation-support? boolean +--ro dslite-aftr-state {aftr}?
| +--ro logging-support? boolean | +--ro dslite-aftr-instances
| +--ro ftp-alg-support? boolean | +--ro dslite-aftr-instance* [id]
| +--ro tftp-support? boolean | +--ro id int32
| +--ro sip-alg-support? boolean | +--ro name? string
| +--ro rtsp-alg-support? boolean | +--ro aftr-capabilities
| +--ro h323-alg-support? boolean | | +--ro eim-support? boolean
+--ro aftr-current-config | | +--ro eif-support? boolean
| +--ro dslite-aftr-ip-address* [address-id] | | +--ro edm-support? boolean
| | +--ro address-id uint32 | | +--ro edf-support? boolean
| | +--ro ip-address? inet:ipv6-address | | +--ro adm-support? boolean
| +--ro ipv4-address? inet:ipv4-address | | +--ro adf-support? boolean
| +--ro tunnel-mtu? uint16 | | +--ro pcp-support? boolean
| +--ro external-ip-address-pool* [address-id] | | +--ro subscriber-mask-support? boolean
| | +--ro address-id uint32 | | +--ro port-set-support? boolean
| | +--ro external-ip-pool? inet:ipv4-prefix | | +--ro self-state-migration-support? boolean
| +--ro subscriber-mask? uint8 | | +--ro mss-clamping-support? boolean
| +--ro port-quota uint16 | | +--ro port-randomization-support? boolean
| +--ro exclude-ports* [id] | | +--ro port-preservation-support? boolean
| | +--ro id uint16 | | +--ro port-parity-preservation-support? boolean
| | +--ro (port-type)? | | +--ro transport-proto-capabilities* [transport-protocol-id]
| | +--:(single-port-number) | | | +--ro transport-protocol-id uint8
| | | +--ro single-port-number? inet:port-number | | +--ro v6-v4-dscp-preservation-support? boolean
| | +--:(port-range) | | +--ro logging-support? boolean
| | +--ro start-port-number? inet:port-number | | +--ro ftp-alg-support? boolean
| | +--ro end-port-number? inet:port-number | | +--ro tftp-support? boolean
| +--ro port-set | | +--ro sip-alg-support? boolean
| | +--ro port-set-enable? boolean | | +--ro rtsp-alg-support? boolean
| | +--ro port-set-size? uint16 | | +--ro h323-alg-support? boolean
| | +--ro port-set-timeout? uint32 | +--ro aftr-current-config
| +--ro enable-app? boolean | | +--ro dslite-aftr-ipv6-address* [address-id]
| +--ro max-softwire-per-subscriber? uint8 | | | +--ro address-id uint32
| +--ro transport-protocol* [transport-protocol-id] | | | +--ro ipv6-address? inet:ipv6-address
| | +--ro transport-protocol-id uint8 | | +--ro ipv4-address? inet:ipv4-address
| +--ro new-mappings-rate-limit? uint32 | | +--ro tunnel-mtu? uint16
| +--ro mss-clamping-enable? boolean | | +--ro external-ip-address-pool* [address-id]
| +--ro port-randomization-enable? boolean | | | +--ro address-id uint32
| +--ro port-preservation-enable? boolean | | | +--ro external-ip-pool? inet:ipv4-prefix
| +--ro port-parity-preservation-enable? boolean | | +--ro subscriber-mask? uint8
| +--ro udp-lifetime? uint32 | | +--ro nat-mapping-type? enumeration
| +--ro tcp-idle-timeout? uint32 | | +--ro nat-filtering-type? enumeration
| +--ro tcp-trans-open-timeout? uint32 | | +--ro port-quota uint16
| +--ro tcp-trans-close-timeout? uint32 | | +--ro exclude-ports* [id]
| +--ro tcp-in-syn-timeout? uint32 | | | +--ro id uint16
| +--ro fragment-min-timeout? uint32 | | | +--ro (port-type)?
| +--ro icmp-timeout? uint32 | | | +--:(single-port-number)
| +--ro hold-down-timeout? uint32 | | | | +--ro single-port-number? inet:port-number
| +--ro v6-v4-dscp-preservation boolean | | | +--:(port-range)
| +--ro logging-info | | | +--ro start-port-number? inet:port-number
| | +--ro logging-enable? boolean | | | +--ro end-port-number? inet:port-number
| | +--ro destination-address? inet:ip-prefix | | +--ro port-set
| | +--ro destination-port? inet:port-number | | | +--ro port-set-enable? boolean
| +--ro notify-address-pool-usage | | | +--ro port-set-size? uint16
| +--ro pool-id? uint32 | | | +--ro port-set-timeout? uint32
| +--ro notify-pool-hi-threshold percent | | +--ro enable-app? boolean
| +--ro notify-pool-low-threshold? percent | | +--ro max-softwire-per-subscriber? uint8
+--ro mapping-table | | +--ro transport-protocol* [transport-protocol-id]
| +--ro mapping-entry* [index] | | | +--ro transport-protocol-id uint8
| +--ro index uint32 | | +--ro new-mappings-rate-limit? uint32
| +--ro status? enumeration | | +--ro mss-clamping
| +--ro type? enumeration | | | +--ro mss-clamping-enable? boolean
| +--ro b4-ip-address inet:ipv6-address | | | +--ro mss-value? uint16
| +--ro internal-ip-address inet:ipv4-prefix | | +--ro port-randomization-enable? boolean
| +--ro internal-port | | +--ro port-preservation-enable? boolean
| | +--ro (port-type)? | | +--ro port-parity-preservation-enable? boolean
| | +--:(single-port-number) | | +--ro address-roundrobin-enable? boolean
| | | +--ro single-port-number? inet:port-number | | +--ro udp-lifetime? uint32
| | +--:(port-range) | | +--ro tcp-idle-timeout? uint32
| | +--ro start-port-number? inet:port-number | | +--ro tcp-trans-open-timeout? uint32
| | +--ro end-port-number? inet:port-number | | +--ro tcp-trans-close-timeout? uint32
| +--ro external-ip-address inet:ipv4-address | | +--ro tcp-in-syn-timeout? uint32
| +--ro external-port | | +--ro fragment-min-timeout? uint32
| | +--ro (port-type)? | | +--ro icmp-timeout? uint32
| | +--:(single-port-number) | | +--ro hold-down-timeout? uint32
| | | +--ro single-port-number? inet:port-number | | +--ro v6-v4-dscp-preservation boolean
| | +--:(port-range) | | +--ro logging-info
| | +--ro start-port-number? inet:port-number | | | +--ro logging-enable? boolean
| | +--ro end-port-number? inet:port-number | | | +--ro destination-address? inet:ip-prefix
| +--ro transport-protocol uint8 | | | +--ro destination-port? inet:port-number
| +--ro lifetime uint32 | | | +--ro (protocol)?
| +--ro v6-dscp? uint8 | | | +--:(syslog)
| +--ro internal-v4-dscp? uint8 | | | | +--ro syslog? boolean
| +--ro external-v4-dscp? uint8 | | | +--:(ipfix)
| +--ro description? string | | | | +--ro ipfix? boolean
+--ro statistics | | | +--:(ftp)
| +--ro traffic-statistics | | | +--ro ftp? boolean
| | +--ro sent-packet? yang:zero-based-counter64 | | +--ro notify-address-pool-usage
| | +--ro sent-byte? yang:zero-based-counter64 | | | +--ro pool-id? uint32
| | +--ro rcvd-packet? yang:zero-based-counter64 | | | +--ro notify-pool-hi-threshold percent
| | +--ro rcvd-byte? yang:zero-based-counter64 | | | +--ro notify-pool-low-threshold? percent
| | +--ro dropped-packet? yang:zero-based-counter64 | | +--ro ftp-alg-enable? boolean
| | +--ro dropped-byte? yang:zero-based-counter64 | | +--ro tftp-alg-enable? boolean
| +--ro mapping-table-stats | | +--ro sip-alg-enable? boolean
| +--ro current-mt-size? yang:zero-based-counter64 | | +--ro rtsp-alg-enable? boolean
| +--ro max-mt-size? uint32 | | +--ro h323-alg-enable? boolean
| +--ro total-tcp-mappings? uint32 | | +--ro all-algs-enable? boolean
| +--ro total-udp-mappings? uint32 | +--ro mapping-table
| +--ro total-icmp-mappings? uint32 | | +--ro mapping-entry* [index]
+--ro available-capacity-client? percent | | +--ro index uint32
+--ro available-capacity-ext? percent | | +--ro status? enumeration
+--ro address-pool-in-use? percent | | +--ro type? enumeration
+--ro port-in-use? percent | | +--ro b4-ip-address inet:ipv6-address
| | +--ro internal-ip-address inet:ipv4-prefix
| | +--ro internal-port
| | | +--ro (port-type)?
| | | +--:(single-port-number)
| | | | +--ro single-port-number? inet:port-number
| | | +--:(port-range)
| | | +--ro start-port-number? inet:port-number
| | | +--ro end-port-number? inet:port-number
| | +--ro external-ip-address inet:ipv4-address
| | +--ro external-port
| | | +--ro (port-type)?
| | | +--:(single-port-number)
| | | | +--ro single-port-number? inet:port-number
| | | +--:(port-range)
| | | +--ro start-port-number? inet:port-number
| | | +--ro end-port-number? inet:port-number
| | +--ro transport-protocol uint8
| | +--ro lifetime uint32
| | +--ro v6-dscp? uint8
| | +--ro internal-v4-dscp? uint8
| | +--ro external-v4-dscp? uint8
| | +--ro description? string
| +--ro statistics
| | +--ro traffic-statistics
| | | +--ro sent-packet? yang:zero-based-counter64
| | | +--ro sent-byte? yang:zero-based-counter64
| | | +--ro rcvd-packet? yang:zero-based-counter64
| | | +--ro rcvd-byte? yang:zero-based-counter64
| | | +--ro dropped-packet? yang:zero-based-counter64
| | | +--ro dropped-byte? yang:zero-based-counter64
| | +--ro mapping-table-stats
| | +--ro current-mt-size? yang:zero-based-counter64
| | +--ro max-mt-size? uint32
| | +--ro total-tcp-mappings? uint32
| | +--ro total-udp-mappings? uint32
| | +--ro total-icmp-mappings? uint32
| +--ro available-capacity-client? percent
| +--ro available-capacity-ext? percent
| +--ro address-pool-in-use? percent
| +--ro port-in-use? percent
+--ro dslite-b4-state {b4}?
+--ro dslite-b4-instances
+--ro dslite-b4-instance* [id]
+--ro id int32
+--ro name? string
+--ro b4-capabilities
| +--ro ipv4-address-modify? boolean
| +--ro tunnel-mtu-support? boolean
| +--ro v6-v4-dscp-preservation-support boolean
+--ro b4-state
+--ro status? boolean
+--ro aftr-ipv6-addr inet:ipv6-address
+--ro ipv4-address-configured? inet:ipv4-address
+--ro v6-v4-dscp-preservation-enabled? boolean
Figure 1: YANG Data Model for DS-Lite AFTR Figure 1: YANG Data Model for DS-Lite AFTR
The following notifications are supported. These notifications are The following notifications are supported. These notifications are
triggered by configurable parameters. triggered by configurable parameters.
notifications: notifications:
+---n dslite-aftr-event +---n dslite-aftr-event
+--ro id? -> /dslite-aftr-state/dslite-aftr-instances/ +--ro id? -> /dslite-state/dslite-aftr-state/
| dslite-aftr-instance/id | dslite-aftr-instances/dslite-aftr-instance/id
+--ro notify-pool-threshold percent +--ro notify-pool-threshold percent
3. AFTR YANG Module 3. DS-Lite YANG Module
<CODE BEGINS> file "ietf-dslite-aftr@2016-07-27.yang" <CODE BEGINS> file "ietf-dslite@2016-11.14"
module ietf-dslite-aftr { module ietf-dslite {
namespace "urn:ietf:params:xml:ns:yang:ietf-dslite-aftr"; namespace "urn:ietf:params:xml:ns:yang:ietf-dslite";
prefix dslite-aftr; prefix dslite;
import ietf-inet-types { prefix inet; } import ietf-inet-types { prefix inet; }
import ietf-yang-types { prefix yang; } import ietf-yang-types { prefix yang; }
organization "Softwire Working Group"; organization "Softwire Working Group";
contact contact
"Mohamed Boucadair <mohamed.boucadair@orange.com> "Mohamed Boucadair <mohamed.boucadair@orange.com>
Christian Jacquenet <christian.jacquenet@orange.com> Christian Jacquenet <christian.jacquenet@orange.com>
Senthil Sivakumar (ssenthil) <ssenthil@cisco.com>"; Senthil Sivakumar <ssenthil@cisco.com>";
description description
"This module is a YANG module for DS-Lite AFTR "This module is a YANG module for DS-Lite AFTR
implementations. implementations.
Copyright (c) 2016 IETF Trust and the persons identified as Copyright (c) 2016 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
skipping to change at page 9, line 4 skipping to change at page 10, line 8
Copyright (c) 2016 IETF Trust and the persons identified as Copyright (c) 2016 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2016-11-14 {
description "Integrates the comments from Ian:
add B4 module, add an MSS leaf, add more details about
logging protocols, and other edits.";
reference "-ietf-01";
}
revision 2016-07-27 { revision 2016-07-27 {
description "-00 IETF version."; description "-00 IETF version.";
reference "-ietf-00"; reference "-ietf-00";
} }
revision 2016-06-13 { revision 2016-06-13 {
description "Update the module."; description "Update the module.";
reference "-04"; reference "-04";
} }
revision 2015-12-16 { revision 2015-12-16 {
description "Fix an error."; description "Fix an error.";
reference "-03"; reference "-03";
} }
revision 2015-09-01 { revision 2015-09-01 {
description "Add port treshhold notifications."; description "Add port threshold notifications.";
reference "-02"; reference "-02";
} }
revision 2015-08-31 { revision 2015-08-31 {
description "Fix a timeout issue."; description "Fix a timeout issue.";
reference "-01"; reference "-01";
} }
revision 2015-08-17 { revision 2015-08-17 {
description "First spec."; description "First spec.";
skipping to change at page 9, line 47 skipping to change at page 11, line 11
// Typedef // Typedef
typedef percent { typedef percent {
type uint8 { type uint8 {
range "0 .. 100"; range "0 .. 100";
} }
description description
"Percentage"; "Percentage";
} }
// FEATURES
feature aftr {
description
"An AFTR element is the combination of
an IPv4-in-IPv6 tunnel endpoint and an
IPv4-IPv4 NAT implemented on the same node.";
reference
"RFC6333";
}
feature b4 {
description
"The B4 element is a function implemented
on a dual-stack-capable node, either a directly
connected device or a CPE, that creates
a tunnel to an AFTR.";
reference
"RFC6333";
}
/* /*
* Grouping * Grouping
*/ */
// port numbers: single or port range // port numbers: single or port range
grouping port-number { grouping port-number {
description description
"Individual port or a range of ports."; "Individual port or a range of ports.";
choice port-type { choice port-type {
default single-port-number; default single-port-number;
description description
"Port type: single or port-range."; "Port type: single or port-range.";
case single-port-number { case single-port-number {
skipping to change at page 10, line 25 skipping to change at page 12, line 13
type inet:port-number; type inet:port-number;
description description
"Used for single port numbers."; "Used for single port numbers.";
} }
} }
case port-range { case port-range {
leaf start-port-number { leaf start-port-number {
type inet:port-number; type inet:port-number;
description description
"Begining of the port range."; "Beginning of the port range.";
} }
leaf end-port-number { leaf end-port-number {
type inet:port-number; type inet:port-number;
description description
"End of the port range."; "End of the port range.";
} }
} }
} }
} }
// Timeout variables // Timeout variables
grouping lifetime { grouping lifetime {
description description
"Configure values of various timeouts."; "Configure values of various timeouts.";
leaf udp-lifetime { leaf udp-lifetime {
type uint32; type uint32;
units "seconds";
default 120; default 120;
description description
"UDP inactivity timeout [RFC4787]."; "UDP inactivity timeout [RFC4787].";
} }
leaf tcp-idle-timeout { leaf tcp-idle-timeout {
type uint32; type uint32;
units "seconds";
default 7440; default 7440;
description description
"TCP Idle timeout as per RFC 5382 should be no "TCP Idle timeout as per RFC 5382 should be no
more than 2 hours and 4 minutes."; more than 2 hours and 4 minutes.";
} }
leaf tcp-trans-open-timeout { leaf tcp-trans-open-timeout {
type uint32; type uint32;
units "seconds";
default 240; default 240;
description description
"The value of the transitory open connection "The value of the transitory open connection
idle-timeout. idle-timeout.
Section 2.1 of [RFC7857] clarifies that a NAT Section 2.1 of [RFC7857] clarifies that a NAT
should provide different configurable should provide different configurable
parameters for configuring the open and parameters for configuring the open and
closing idle timeouts. closing idle timeouts.
To accommodate deployments that consider To accommodate deployments that consider
a partially open timeout of 4 minutes as being a partially open timeout of 4 minutes as being
excessive from a security standpoint, a NAT may excessive from a security standpoint, a NAT may
allow the configured timeout to be less than allow the configured timeout to be less than
4 minutes. 4 minutes.
However, a minimum default transitory connection However, a minimum default transitory connection
idle-timeout of 4 minutes is recommended."; idle-timeout of 4 minutes is recommended.";
} }
leaf tcp-trans-close-timeout { leaf tcp-trans-close-timeout {
type uint32; type uint32;
units "seconds";
default 240; default 240;
description description
"The value of the transitory close connection "The value of the transitory close connection
idle-timeout. idle-timeout.
Section 2.1 of [RFC7857] clarifies that a NAT Section 2.1 of [RFC7857] clarifies that a NAT
should provide different configurable should provide different configurable
parameters for configuring the open and parameters for configuring the open and
closing idle timeouts."; closing idle timeouts.";
} }
leaf tcp-in-syn-timeout { leaf tcp-in-syn-timeout {
type uint32; type uint32;
units "seconds";
default 6; default 6;
description description
"6 seconds, as defined in [RFC5382]."; "6 seconds, as defined in [RFC5382].";
} }
leaf fragment-min-timeout { leaf fragment-min-timeout {
type uint32; type uint32;
units "seconds";
default 2; default 2;
description description
"As long as the AFTR has available resources, "As long as the AFTR has available resources,
the AFTR allows the fragments to arrive the AFTR allows the fragments to arrive
over fragment-min-timeout interval. over fragment-min-timeout interval.
The default value is inspired from RFC6146."; The default value is inspired from RFC6146.";
} }
leaf icmp-timeout { leaf icmp-timeout {
type uint32; type uint32;
units "seconds";
default 60; default 60;
description description
"60 seconds, as defined in [RFC5508]."; "60 seconds, as defined in [RFC5508].";
} }
leaf hold-down-timeout { leaf hold-down-timeout {
type uint32; type uint32;
units "seconds";
default 120; default 120;
description description
"Hold down timer. Ports in the "Hold down timer. Ports in the
hold down pool are not reassigned till hold down pool are not reassigned until
this timer expires. this timer expires.
The length of time and the maximum The length of time and the maximum
number of ports in this state must be number of ports in this state must be
configurable by the administrator configurable by the administrator
[RFC6888]. This is necessary in order [RFC6888]. This is necessary in order
to prevent collisions between old to prevent collisions between old
and new mappings and sessions. It ensures and new mappings and sessions. It ensures
that all established sessions are broken that all established sessions are broken
instead of redirected to a different peer. instead of redirected to a different peer.
The default value is defined in REQ#8 The default value is defined in REQ#8
skipping to change at page 13, line 8 skipping to change at page 15, line 4
description description
"set one or multiple IP addresses for "set one or multiple IP addresses for
the dslite-aftr"; the dslite-aftr";
leaf address-id { leaf address-id {
type uint32; type uint32;
description description
"The identifier of the address"; "The identifier of the address";
} }
leaf ipv6-address { leaf ipv6-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 address of the dslite-aftr."; "IPv6 address of the dslite-aftr.";
} }
} }
leaf ipv4-address { leaf ipv4-address {
type inet:ipv4-address; type inet:ipv4-address;
default "192.0.0.1";
description description
"IPv4 address of the DS-Lite AFTR. "IPv4 address of the DS-Lite AFTR.
192.0.0.1 is reserved for the AFTR element 192.0.0.1 is reserved for the AFTR element
[RFC6333]. [RFC6333].
This address can be used to report ICMP This address can be used to report ICMP
problems and will appear in traceroute problems and will appear in traceroute
outputs."; outputs.";
} }
leaf tunnel-mtu { leaf tunnel-mtu {
skipping to change at page 14, line 32 skipping to change at page 16, line 28
} }
default "56"; default "56";
description description
"The subscriber-mask is an integer that indicates "The subscriber-mask is an integer that indicates
the length of significant bits to be applied on the length of significant bits to be applied on
the source IPv6 address (internal side) to the source IPv6 address (internal side) to
unambiguously identify a CPE. unambiguously identify a CPE.
Subscriber-mask is a system-wide configuration Subscriber-mask is a system-wide configuration
parameter that is used to enforce generic parameter that is used to enforce generic
per-subscriberpolicies (e.g., port-quota). per-subscriber policies (e.g., port-quota).
The enforcement of these generic policies does not The enforcement of these generic policies does not
require the configuration of every subscriber's prefix. require the configuration of every subscriber's prefix.
Example: suppose the 2001:db8:100:100::/56 prefix is Example: suppose the 2001:db8:100:100::/56 prefix is
assigned to a DS-Lite enabled CPE. Suppose also that the assigned to a DS-Lite enabled CPE. Suppose also that the
2001:db8:100:100::1 is the IPv6 address used by the 2001:db8:100:100::1 is the IPv6 address used by the
B4 that resides in that CPE. When the AFTR B4 that resides in that CPE. When the AFTR
receives a packet from this client, receives a packet from this client,
it applies the subscriber-mask (e.g., 56) on it applies the subscriber-mask (e.g., 56) on
skipping to change at page 16, line 45 skipping to change at page 18, line 43
leaf port-set-size { leaf port-set-size {
type uint16; type uint16;
description description
"Indicates the size of assigned port sets."; "Indicates the size of assigned port sets.";
} }
leaf port-set-timeout { leaf port-set-timeout {
type uint32; type uint32;
description description
"Inactivty timeout for port sets."; "Inactivity timeout for port sets.";
} }
} }
leaf enable-app { leaf enable-app {
type boolean; type boolean;
default true; default true;
description description
"Enable/disable the IP address "Enable/disable the IP address
pooling behavior of Paired (APP). pooling behavior of Paired (APP).
APP is recommended in REQ-2 from APP is recommended in REQ-2 from
[RFC4787]."; [RFC4787].";
} }
leaf max-softwire-per-subscriber { leaf max-softwire-per-subscriber {
type uint8; type uint8;
default 1; default 1;
description description
"Configures the maximum softwire per subscriber "Configures the maximum softwire per subscriber
feature as per Section 4 of [RFC7785]. feature as per Section 4 of [RFC7785].
skipping to change at page 17, line 17 skipping to change at page 19, line 15
APP is recommended in REQ-2 from APP is recommended in REQ-2 from
[RFC4787]."; [RFC4787].";
} }
leaf max-softwire-per-subscriber { leaf max-softwire-per-subscriber {
type uint8; type uint8;
default 1; default 1;
description description
"Configures the maximum softwire per subscriber "Configures the maximum softwire per subscriber
feature as per Section 4 of [RFC7785]. feature as per Section 4 of [RFC7785].
A subscriber is uniquely identified by means
of subscriber-mask.
This policy aims to prevent a misbehaving This policy aims to prevent a misbehaving
subscriber from mounting several DS-Lite subscriber from mounting several DS-Lite
softwires that would consume additional AFTR softwires that would consume additional AFTR
resources (e.g., get more external ports if resources (e.g., get more external ports if
the quota were enforced on a per-softwire basis, the quota were enforced on a per-softwire basis,
consume extra processing due to a large number consume extra processing due to a large number
of active softwires)."; of active softwires).";
} }
list transport-protocol { list transport-protocol {
key "transport-protocol-id"; key "transport-protocol-id";
description description
"Set of (transport) protocols supported by "Set of (transport) protocols supported by
the AFTR. Default must be set to the AFTR. Default must be set to
TCP and UDP."; TCP and UDP.";
leaf transport-protocol-id { leaf transport-protocol-id {
type uint8; type uint8;
description description
"Identifier of the transport protocol. "Identifier of the transport protocol.
IANA Protocol Numbers maintianed in IANA Protocol Numbers maintained in
http://www.iana.org/assignments/ http://www.iana.org/assignments/
protocol-numbers are used."; protocol-numbers are used.";
} }
} }
leaf new-mappings-rate-limit { leaf new-mappings-rate-limit {
type uint32; type uint32;
description description
"Rate-limit sessions per subscriber. "Rate-limit sessions per subscriber.
The goal is to prevent a single subscriber The goal is to prevent a single subscriber
from consuming excessive CPU resources from from consuming excessive CPU resources from
the AFTR."; the AFTR.";
} }
leaf mss-clamping-enable { container mss-clamping {
type boolean;
description description
"Enable/disable MSS rewritting feature."; "Manages port-set assignments.";
}
leaf mss-clamping-enable {
type boolean;
description
"Enable/disable MSS rewriting feature.";
}
leaf mss-value {
type uint16;
units "octets";
description
"Indicates the MSS value to be used for
MSS rewriting.";
}
}
leaf port-randomization-enable { leaf port-randomization-enable {
type boolean; type boolean;
description description
"Enable/disable port randomization feature. "Enable/disable port randomization feature.
Section 9 of [RFC7857] specifies that a NAT Section 9 of [RFC7857] specifies that a NAT
should follow the recommendations in should follow the recommendations in
Section 4 of RFC6056."; Section 4 of RFC6056.";
} }
skipping to change at page 19, line 38 skipping to change at page 22, line 4
type inet:ip-prefix; type inet:ip-prefix;
description description
"Address of the collector that receives "Address of the collector that receives
the logs."; the logs.";
} }
leaf destination-port { leaf destination-port {
type inet:port-number; type inet:port-number;
description description
"Destination port of the collector."; "Destination port of the collector.";
}
choice protocol {
description
"Enable the protocol to be used for
the retrieval of logging entries.";
case syslog {
leaf syslog {
type boolean;
description
"Used if SYSLOG is in use.";
}
}
case ipfix {
leaf ipfix {
type boolean;
description
"Used if IPFIX is in use.";
}
}
case ftp {
leaf ftp {
type boolean;
description
"Used if FTP is in use.";
}
} }
}
} }
container notify-address-pool-usage { container notify-address-pool-usage {
description description
"Notification of Pool usage when certain criteria "Notification of Pool usage when certain criteria
is met."; is met.";
leaf pool-id { leaf pool-id {
type uint32; type uint32;
description description
skipping to change at page 20, line 20 skipping to change at page 23, line 18
notification is required when the pool utilization notification is required when the pool utilization
reaches 90%, this configuration parameter must be reaches 90%, this configuration parameter must be
set to 90%."; set to 90%.";
} }
leaf notify-pool-low-threshold { leaf notify-pool-low-threshold {
type percent; type percent;
description description
"Notification must be generated when the defined "Notification must be generated when the defined
low threshold is reached. For example, if a low threshold is reached. For example, if a
notificationis required when the pool utilization notification is required when the pool utilization
reaches below 10%, this configuration parameter reaches below 10%, this configuration parameter
must be set to 10%."; must be set to 10%.";
} }
} }
leaf ftp-alg-enable { leaf ftp-alg-enable {
type boolean; type boolean;
description description
"Enable/Disable FTP ALG."; "Enable/Disable FTP ALG.";
} }
skipping to change at page 23, line 26 skipping to change at page 26, line 25
mandatory true; mandatory true;
description description
"Upper-layer protocol associated with this mapping. "Upper-layer protocol associated with this mapping.
Values are taken from the IANA protocol registry. Values are taken from the IANA protocol registry.
For example, this field contains 6 (TCP) for a TCP For example, this field contains 6 (TCP) for a TCP
mapping or 17 (UDP) for a UDP mapping."; mapping or 17 (UDP) for a UDP mapping.";
} }
leaf lifetime { leaf lifetime {
type uint32; type uint32;
units "seconds";
mandatory true; mandatory true;
description description
"Lifetime of the mapping."; "Lifetime of the mapping.";
} }
leaf v6-dscp { leaf v6-dscp {
type uint8; type uint8;
description description
"DSCP value used at the softwire level "DSCP value used at the softwire level
(i.e., IPv6 header)."; (i.e., IPv6 header).";
} }
leaf internal-v4-dscp { leaf internal-v4-dscp {
type uint8; type uint8;
description description
"DSCP value of the enacapsulated IPv4 packet."; "DSCP value of the encapsulated IPv4 packet.";
} }
leaf external-v4-dscp { leaf external-v4-dscp {
type uint8; type uint8;
description description
"DSCP value of the translated IPv4 packet "DSCP value of the translated IPv4 packet
as marked by the AFTR."; as marked by the AFTR.";
} }
leaf description { leaf description {
type string; type string;
description description
"A description string associated with the mapping."; "A description string associated with the mapping.";
} }
} }
/* /*
* DS-Lite AFTR Configuration * DS-Lite AFTR Configuration
*/ */
container dslite-config {
description
"AFTR and B4 configuration.";
container dslite-aftr-config { container dslite-aftr-config {
if-feature aftr;
description description
"dslite-aftr"; "dslite-aftr";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable/Disable dslite-aftr function."; "Enable/Disable dslite-aftr function.";
} }
container dslite-aftr-instances { container dslite-aftr-instances {
skipping to change at page 25, line 17 skipping to change at page 28, line 21
description description
"dslite-aftr mapping entry."; "dslite-aftr mapping entry.";
uses mapping-entry; uses mapping-entry;
} }
} }
} }
} }
} }
/* /*
* DS-Lite B4 Configuration
*/
container dslite-b4-config {
if-feature b4;
description
"dslite-b4";
leaf enable {
type boolean;
description
"Enable/Disable dslite-b4 function.";
}
container dslite-b4-instances {
description
"dslite-b4 instances";
list dslite-b4-instance {
key "id";
description
"a dslite-b4 instance.";
leaf id {
type uint32;
description
"dslite-b4 instance identifier.";
}
leaf name {
type string;
description
"A name associated with the dslite-b4 instance.";
}
leaf aftr-ipv6-addr {
type inet:ipv6-address;
mandatory true;
description
"The AFTR's IPv6 address.";
}
leaf ipv4-address {
type inet:ipv4-address;
default "192.0.0.2";
description
"IPv4 address of the DS-Lite B4.
192.0.0.0/29 is reserved for the B4 element
[RFC6333].
This address can be used to report ICMP
problems and will appear in traceroute
outputs.";
}
leaf tunnel-mtu {
type uint16;
description
"Configures a tunnel MTU.
[RFC6908] specifies that since
fragmentation and reassembly is not
optimal, the operator should do
everything possible to eliminate
the need for it. If the operator uses
simple IPv4-in-IPv6 softwire, it is
recommended that the MTU size of the IPv6
network between the B4 and the AFTR
accounts for the additional overhead
(40 bytes).";
}
leaf v6-v4-dscp-preservation {
type boolean;
mandatory true;
description
"Copies the DSCP value from the IPv6 header
and vice versa.
According to Section 2.10 of [RFC6908],
operators should use this model
by provisioning the network such that
the AFTR copies the DSCP value in the IPv4
header to the Traffic Class field in
the IPv6 header, after the encapsulation
for the downstream traffic.";
}
}
}
}
}
/*
* DS-Lite State
*/
container dslite-state {
description
"dslite-aftr and b4 state.";
/*
* DS-Lite AFTR State * DS-Lite AFTR State
*/ */
container dslite-aftr-state { container dslite-aftr-state {
if-feature aftr;
config false; config false;
description description
"dslite-aftr"; "dslite-aftr";
container dslite-aftr-instances { container dslite-aftr-instances {
description description
"dslite-aftr instances"; "dslite-aftr instances";
list dslite-aftr-instance { list dslite-aftr-instance {
skipping to change at page 31, line 42 skipping to change at page 37, line 4
description description
"Ratio of the shared address pool."; "Ratio of the shared address pool.";
} }
leaf port-in-use { leaf port-in-use {
type percent; type percent;
description description
"Ratio of the port usage."; "Ratio of the port usage.";
} }
} }
}
}
/*
* DS-Lite B4 State
*/
container dslite-b4-state {
if-feature b4;
config false;
description
"dslite-b4";
container dslite-b4-instances {
description
"dslite-b4 instances";
list dslite-b4-instance {
key "id";
description
"dslite-b4 instance";
leaf id {
type int32;
description
"The identifier of the dslite-b4 instance.";
}
leaf name {
type string;
description
"The name of the dslite-b4 instance.";
}
// B4 Capabilities
container b4-capabilities {
description
"B4 capabilities";
leaf ipv4-address-modify {
type boolean;
description
"Indicates whether it is possible
to configure an IPv4 address
for the B4 element.";
}
leaf tunnel-mtu-support {
type boolean;
description
"Indicates whether it is possible to
configure a tunnel MTU.
";
}
leaf v6-v4-dscp-preservation-support {
type boolean;
mandatory true;
description
"Indicates whether it supports
DSCP preservation.
";
}
}
// B4 State
container b4-state {
description
"B4 capabilities";
leaf status {
type boolean;
description
"Indicates whether the instance is
enabled or disabled.
";
}
leaf aftr-ipv6-addr {
type inet:ipv6-address;
mandatory true;
description
"The AFTR's IPv6 address.";
}
leaf ipv4-address-configured {
type inet:ipv4-address;
default "192.0.0.2";
description
"The B4's IPv4 address.";
}
leaf v6-v4-dscp-preservation-enabled {
type boolean;
description
"Indicates whether this feature is
enabled/disabled.
";
}
}
}
} }
}
} }
/* /*
* Notifications * Notifications
*/ */
notification dslite-aftr-event { notification dslite-aftr-event {
description description
"Notifications must be generated when the defined "Notifications must be generated when the defined
high/low threshold is reached. Related configuration high/low threshold is reached. Related configuration
parameters must be provided to trigger parameters must be provided to trigger
the notifications."; the notifications.";
leaf id { leaf id {
type leafref { type leafref {
path path
"/dslite-aftr-state/dslite-aftr-instances/" "/dslite-state/dslite-aftr-state/dslite-aftr-instances/"
+ "dslite-aftr-instance/id"; + "dslite-aftr-instance/id";
} }
description description
"AFTR instance ID."; "AFTR instance ID.";
} }
leaf notify-pool-threshold { leaf notify-pool-threshold {
type percent; type percent;
mandatory true; mandatory true;
description description
"A treshhold has been fired."; "A threshold has been fired.";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
4. Security Considerations 4. Security Considerations
The YANG module defined in this memo is designed to be accessed via The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the support of SSH is mandatory to secure transport layer and the support of SSH is mandatory to
implement secure transport [RFC6242]. The NETCONF access control implement secure transport [RFC6242]. The NETCONF access control
skipping to change at page 33, line 5 skipping to change at page 40, line 30
modified and deleted (i.e., config true, which is the default). modified and deleted (i.e., config true, which is the default).
These data nodes are considered sensitive. Write operations (e.g., These data nodes are considered sensitive. Write operations (e.g.,
edit-config) applied to these data nodes without proper protection edit-config) applied to these data nodes without proper protection
can negatively affect network operations. can negatively affect network operations.
5. IANA Considerations 5. IANA Considerations
This document requests IANA to register the following URI in the This document requests IANA to register the following URI in the
"IETF XML Registry" [RFC3688]: "IETF XML Registry" [RFC3688]:
URI: urn:ietf:params:xml:ns:yang:ietf-dslite-aftr URI: urn:ietf:params:xml:ns:yang:ietf-dslite
Registrant Contact: The IESG. Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
This document requests IANA to register the following YANG module in This document requests IANA to register the following YANG module in
the "YANG Module Names" registry [RFC6020]. the "YANG Module Names" registry [RFC6020].
name: ietf-dslite-aftr name: ietf-dslite
namespace: urn:ietf:params:xml:ns:yang:ietf-dslite-aftr namespace: urn:ietf:params:xml:ns:yang:ietf-dslite
prefix: dslite-aftr prefix: dslite
reference: RFC XXXX reference: RFC XXXX
6. Acknowledgements 6. Acknowledgements
Thanks to Q. Wu for identifying a compiling error. Thanks to Q. Wu for identifying a compiling error.
Many thanks to Ian Farrer for the review and comments.
7. References 7. References
7.1. Normative references 7.1. Normative references
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<http://www.rfc-editor.org/info/rfc3688>. <http://www.rfc-editor.org/info/rfc3688>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
skipping to change at page 34, line 36 skipping to change at page 42, line 19
[RFC5508] Srisuresh, P., Ford, B., Sivakumar, S., and S. Guha, "NAT [RFC5508] Srisuresh, P., Ford, B., Sivakumar, S., and S. Guha, "NAT
Behavioral Requirements for ICMP", BCP 148, RFC 5508, Behavioral Requirements for ICMP", BCP 148, RFC 5508,
DOI 10.17487/RFC5508, April 2009, DOI 10.17487/RFC5508, April 2009,
<http://www.rfc-editor.org/info/rfc5508>. <http://www.rfc-editor.org/info/rfc5508>.
[RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, Data Model Documents", RFC 6087, DOI 10.17487/RFC6087,
January 2011, <http://www.rfc-editor.org/info/rfc6087>. January 2011, <http://www.rfc-editor.org/info/rfc6087>.
[RFC6334] Hankins, D. and T. Mrugalski, "Dynamic Host Configuration
Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite",
RFC 6334, DOI 10.17487/RFC6334, August 2011,
<http://www.rfc-editor.org/info/rfc6334>.
[RFC6888] Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa, [RFC6888] Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa,
A., and H. Ashida, "Common Requirements for Carrier-Grade A., and H. Ashida, "Common Requirements for Carrier-Grade
NATs (CGNs)", BCP 127, RFC 6888, DOI 10.17487/RFC6888, NATs (CGNs)", BCP 127, RFC 6888, DOI 10.17487/RFC6888,
April 2013, <http://www.rfc-editor.org/info/rfc6888>. April 2013, <http://www.rfc-editor.org/info/rfc6888>.
[RFC6908] Lee, Y., Maglione, R., Williams, C., Jacquenet, C., and M. [RFC6908] Lee, Y., Maglione, R., Williams, C., Jacquenet, C., and M.
Boucadair, "Deployment Considerations for Dual-Stack Boucadair, "Deployment Considerations for Dual-Stack
Lite", RFC 6908, DOI 10.17487/RFC6908, March 2013, Lite", RFC 6908, DOI 10.17487/RFC6908, March 2013,
<http://www.rfc-editor.org/info/rfc6908>. <http://www.rfc-editor.org/info/rfc6908>.
 End of changes. 58 change blocks. 
278 lines changed or deleted 639 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/