ietf-dslite.OGyang   ietf-dslite.yang 
module ietf-dslite { module ietf-dslite {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dslite"; namespace "urn:ietf:params:xml:ns:yang:ietf-dslite";
prefix dslite; prefix dslite;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"Section 4 of RFC 6991"; "Section 4 of RFC 6991";
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import iana-if-type {
import iana-if-type {
prefix ianaift; prefix ianaift;
reference reference
"RFC 7224: IANA Interface Type YANG Module"; "RFC 7224: IANA Interface Type YANG Module";
} }
import ietf-nat { import ietf-nat {
prefix nat; prefix nat;
reference reference
"RFC 8512: A YANG Module for Network Address Translation (NAT) "RFC 8512: A YANG Module for Network Address Translation (NAT)
and Network Prefix Translation (NPT)"; and Network Prefix Translation (NPT)";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference reference
"Section 3 of RFC 6991"; "Section 3 of RFC 6991";
} }
organization "IETF Softwire Working Group"; organization
"IETF Softwire Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/softwire/> "WG Web: <https://datatracker.ietf.org/wg/softwire/>
WG List: <mailto:softwires@ietf.org> WG List: <mailto:softwires@ietf.org>
Editor: Mohamed Boucadair Editor: Mohamed Boucadair
<mailto:mohamed.boucadair@orange.com> <mailto:mohamed.boucadair@orange.com>
Author: Christian Jacquenet Author: Christian Jacquenet
<mailto:christian.jacquenet@orange.com> <mailto:christian.jacquenet@orange.com>
Author: Senthil Sivakumar Author: Senthil Sivakumar
skipping to change at line 53 skipping to change at line 47
WG List: <mailto:softwires@ietf.org> WG List: <mailto:softwires@ietf.org>
Editor: Mohamed Boucadair Editor: Mohamed Boucadair
<mailto:mohamed.boucadair@orange.com> <mailto:mohamed.boucadair@orange.com>
Author: Christian Jacquenet Author: Christian Jacquenet
<mailto:christian.jacquenet@orange.com> <mailto:christian.jacquenet@orange.com>
Author: Senthil Sivakumar Author: Senthil Sivakumar
<mailto:ssenthil@cisco.com>"; <mailto:ssenthil@cisco.com>";
description
"This module is a YANG module for DS-Lite AFTR and B4
implementations.
description Copyright (c) 2018 IETF Trust and the persons identified as
"This module is a YANG module for DS-Lite AFTR and B4 authors of the code. All rights reserved.
implementations.
Copyright (c) 2018 IETF Trust and the persons identified as
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 8513; see This version of this YANG module is part of RFC 8513; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2018-12-14 { revision 2018-12-14 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 8513: A YANG Data Model for Dual-Stack Lite (DS-Lite)"; "RFC 8513: A YANG Data Model for Dual-Stack Lite (DS-Lite)";
} }
/* /*
* Features * Features
*/ */
feature b4 { feature b4 {
description description
"The B4 element is a function implemented on a dual-stack-capable "The B4 element is a function implemented on a dual-stack-capable
node, either a directly connected device or Customer Premises node, either a directly connected device or Customer Premises
Equipment (CPE), that creates a tunnel to an AFTR."; Equipment (CPE), that creates a tunnel to an AFTR.";
reference reference
"Section 5 of RFC 6333"; "Section 5 of RFC 6333";
} }
feature aftr { feature aftr {
description description
"An AFTR element is the combination of an IPv4-in-IPv6 tunnel "An AFTR element is the combination of an IPv4-in-IPv6 tunnel
endpoint and an IPv4-IPv4 NAT implemented on the same node."; endpoint and an IPv4-IPv4 NAT implemented on the same node.";
reference reference
"Section 6 of RFC 6333"; "Section 6 of RFC 6333";
} }
/* /*
* Augments * Augments
*/ */
augment "/if:interfaces/if:interface" { augment "/if:interfaces/if:interface" {
when 'derived-from(if:type, "ianaift:tunnel")'; when 'derived-from(if:type, "ianaift:tunnel")';
description description
"Augments Interface module with DS-Lite parameters. "Augments Interface module with DS-Lite parameters.
IANA interface types are maintained at this registry: IANA interface types are maintained at this registry:
<https://www.iana.org/assignments/ianaiftype-mib/>. <https://www.iana.org/assignments/ianaiftype-mib/>.
tunnel (131), -- Encapsulation interface"; tunnel (131), -- Encapsulation interface";
skipping to change at line 136 skipping to change at line 127
192.0.0.1 is reserved for the AFTR element, while 192.0.0.1 is reserved for the AFTR element, while
192.0.0.0/29 is reserved for the B4 element. 192.0.0.0/29 is reserved for the B4 element.
This address can be used to report ICMP problems and will This address can be used to report ICMP problems and will
appear in traceroute outputs."; appear in traceroute outputs.";
reference reference
"RFC 6333: Dual-Stack Lite Broadband Deployments Following "RFC 6333: Dual-Stack Lite Broadband Deployments Following
IPv4 Exhaustion"; IPv4 Exhaustion";
} }
leaf aftr-ipv6-addr { leaf aftr-ipv6-addr {
if-feature b4; if-feature "b4";
type inet:ipv6-address; type inet:ipv6-address;
description description
"Indicates the AFTR's IPv6 address to be used by a B4 "Indicates the AFTR's IPv6 address to be used by a B4
element."; element.";
reference reference
"RFC 6333: Dual-Stack Lite Broadband Deployments Following "RFC 6333: Dual-Stack Lite Broadband Deployments Following
IPv4 Exhaustion"; IPv4 Exhaustion";
} }
leaf tunnel-mtu { leaf tunnel-mtu {
type uint16; type uint16;
description description
"Configures a tunnel MTU. "Configures a tunnel MTU.
RFC 6908 specifies that since fragmentation and reassembly RFC 6908 specifies that since fragmentation and reassembly
are not optimal, the operator should do everything possible are not optimal, the operator should do everything possible
to eliminate the need for them. If the operator uses simple to eliminate the need for them. If the operator uses simple
IPv4-in-IPv6 softwire, it is recommended that the MTU size IPv4-in-IPv6 softwire, it is recommended that the MTU size
of the IPv6 network between the B4 and the AFTR account of the IPv6 network between the B4 and the AFTR account
skipping to change at line 177 skipping to change at line 165
According to Section 2.10 of RFC 6908, operators should According to Section 2.10 of RFC 6908, operators should
use the uniform model by provisioning the network such use the uniform model by provisioning the network such
that the AFTR/B4 copies the DSCP value in the IPv4 header that the AFTR/B4 copies the DSCP value in the IPv4 header
to the Traffic Class field in the IPv6 header, after the to the Traffic Class field in the IPv6 header, after the
IPv4-in-IPv6 encapsulation."; IPv4-in-IPv6 encapsulation.";
reference reference
"Section 2.10 of RFC 6908"; "Section 2.10 of RFC 6908";
} }
} }
augment "/nat:nat/nat:instances/nat:instance/nat:policy" { augment "/nat:nat/nat:instances/nat:instance/nat:policy" {
when "derived-from-or-self(/nat:nat/nat:instances/nat:instance/" + when "derived-from-or-self(/nat:nat/nat:instances/nat:instance/" +
"nat:type, 'nat:napt44')" + "nat:type, 'nat:napt44')" +
" and /nat:nat/nat:instances/nat:instance/" + " and /nat:nat/nat:instances/nat:instance/" +
"nat:per-interface-binding='dslite'"; "nat:per-interface-binding='dslite'";
if-feature aftr; if-feature "aftr";
description description
"Augments the NAPT44 module with AFTR parameters."; "Augments the NAPT44 module with AFTR parameters.";
leaf max-softwires-per-subscriber { leaf max-softwires-per-subscriber {
type uint8; type uint8;
default 1; default "1";
description description
"Configures the maximum softwires per subscriber feature. "Configures the maximum softwires per subscriber feature.
A subscriber is uniquely identified by means A subscriber is uniquely identified by means
of a subscriber-mask (subscriber-mask-v6). of a subscriber-mask (subscriber-mask-v6).
This policy aims to prevent a misbehaving subscriber from This policy aims to prevent a misbehaving subscriber from
mounting several DS-Lite softwires that would consume mounting several DS-Lite softwires that would consume
additional AFTR resources (e.g., get more external ports additional AFTR resources (e.g., get more external ports
if the quota was enforced on a per-softwire basis and if the quota was enforced on a per-softwire basis and
skipping to change at line 202 skipping to change at line 188
A subscriber is uniquely identified by means A subscriber is uniquely identified by means
of a subscriber-mask (subscriber-mask-v6). of a subscriber-mask (subscriber-mask-v6).
This policy aims to prevent a misbehaving subscriber from This policy aims to prevent a misbehaving subscriber from
mounting several DS-Lite softwires that would consume mounting several DS-Lite softwires that would consume
additional AFTR resources (e.g., get more external ports additional AFTR resources (e.g., get more external ports
if the quota was enforced on a per-softwire basis and if the quota was enforced on a per-softwire basis and
consume extra processing due to a large number of active consume extra processing due to a large number of active
softwires)."; softwires).";
reference reference
"Section 4 of RFC 7785"; "Section 4 of RFC 7785";
} }
leaf state-migrate { leaf state-migrate {
type boolean; type boolean;
default true; default "true";
description description
"State migration is enabled by default. "State migration is enabled by default.
In the event a new IPv6 address is assigned to the B4 element, In the event a new IPv6 address is assigned to the B4 element,
the AFTR should migrate existing state to be bound to the new the AFTR should migrate existing state to be bound to the new
IPv6 address. This operation ensures that traffic destined to IPv6 address. This operation ensures that traffic destined to
the previous B4's IPv6 address will be redirected to the newer the previous B4's IPv6 address will be redirected to the newer
B4's IPv6 address. The destination IPv6 address for tunneling B4's IPv6 address. The destination IPv6 address for tunneling
return traffic from the AFTR should be the last seen as the return traffic from the AFTR should be the last seen as the
B4's IPv6 source address from the user device (e.g., CPE). B4's IPv6 source address from the user device (e.g., CPE).
skipping to change at line 226 skipping to change at line 210
the previous B4's IPv6 address will be redirected to the newer the previous B4's IPv6 address will be redirected to the newer
B4's IPv6 address. The destination IPv6 address for tunneling B4's IPv6 address. The destination IPv6 address for tunneling
return traffic from the AFTR should be the last seen as the return traffic from the AFTR should be the last seen as the
B4's IPv6 source address from the user device (e.g., CPE). B4's IPv6 source address from the user device (e.g., CPE).
The AFTR uses the subscriber-mask-v6 to determine whether two The AFTR uses the subscriber-mask-v6 to determine whether two
IPv6 addresses belong to the same CPE (e.g., if the IPv6 addresses belong to the same CPE (e.g., if the
subscriber-mask-v6 is set to 56, the AFTR concludes that subscriber-mask-v6 is set to 56, the AFTR concludes that
2001:db8:100:100::1 and 2001:db8:100:100::2 belongs to the same 2001:db8:100:100::1 and 2001:db8:100:100::2 belongs to the same
CPE assigned with 2001:db8:100:100::/56)."; CPE assigned with 2001:db8:100:100::/56).";
reference reference
"RFC 7785: Recommendations for Prefix Binding in the Context "RFC 7785: Recommendations for Prefix Binding in the Context
of Softwire Dual-Stack Lite"; of Softwire Dual-Stack Lite";
} }
leaf b4-address-change-limit { leaf b4-address-change-limit {
type uint32; type uint32;
units "seconds"; units "seconds";
default '1800'; default "1800";
description description
"Minimum number of seconds between a successive B4's IPv6 "Minimum number of seconds between a successive B4's IPv6
address change from the same prefix. address change from the same prefix.
Changing the source B4's IPv6 address may be used as an attack Changing the source B4's IPv6 address may be used as an attack
vector. Packets with a new B4's IPv6 address from the same vector. Packets with a new B4's IPv6 address from the same
prefix should be rate-limited. prefix should be rate-limited.
It is recommended that this rate limit be set to 30 minutes; It is recommended that this rate limit be set to 30 minutes;
other values can be set on a per-deployment basis."; other values can be set on a per-deployment basis.";
skipping to change at line 246 skipping to change at line 228
description description
"Minimum number of seconds between a successive B4's IPv6 "Minimum number of seconds between a successive B4's IPv6
address change from the same prefix. address change from the same prefix.
Changing the source B4's IPv6 address may be used as an attack Changing the source B4's IPv6 address may be used as an attack
vector. Packets with a new B4's IPv6 address from the same vector. Packets with a new B4's IPv6 address from the same
prefix should be rate-limited. prefix should be rate-limited.
It is recommended that this rate limit be set to 30 minutes; It is recommended that this rate limit be set to 30 minutes;
other values can be set on a per-deployment basis."; other values can be set on a per-deployment basis.";
reference reference
"RFC 7785: Recommendations for Prefix Binding in the Context "RFC 7785: Recommendations for Prefix Binding in the Context
of Softwire Dual-Stack Lite"; of Softwire Dual-Stack Lite";
} }
container mss-clamping { container mss-clamping {
description description
"MSS rewriting configuration to avoid IPv6 fragmentation."; "MSS rewriting configuration to avoid IPv6 fragmentation.";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable/disable MSS rewriting feature."; "Enable/disable MSS rewriting feature.";
} }
leaf mss-value { leaf mss-value {
type uint16; type uint16;
units "octets"; units "octets";
description description
"Sets the MSS value to be used for MSS rewriting."; "Sets the MSS value to be used for MSS rewriting.";
} }
} }
} }
augment "/nat:nat/nat:instances/nat:instance/" +
augment "/nat:nat/nat:instances/nat:instance/"+
"nat:mapping-table/nat:mapping-entry" { "nat:mapping-table/nat:mapping-entry" {
when "derived-from-or-self(/nat:nat/nat:instances/nat:instance/" + when "derived-from-or-self(/nat:nat/nat:instances/nat:instance/" +
"nat:type, 'nat:napt44')" + "nat:type, 'nat:napt44')" +
" and /nat:nat/nat:instances/nat:instance/" + " and /nat:nat/nat:instances/nat:instance/" +
"nat:per-interface-binding='dslite'"; "nat:per-interface-binding='dslite'";
if-feature aftr; if-feature "aftr";
description description
"Augments the NAPT44 mapping table with DS-Lite specifics."; "Augments the NAPT44 mapping table with DS-Lite specifics.";
container b4-ipv6-address { container b4-ipv6-address {
description description
"Records the IPv6 address used by a B4 element and the last "Records the IPv6 address used by a B4 element and the last
time that address changed."; time that address changed.";
leaf address { leaf address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Corresponds to the IPv6 address used by a B4 element."; "Corresponds to the IPv6 address used by a B4 element.";
reference reference
"RFC 6333: Dual-Stack Lite Broadband Deployments Following "RFC 6333: Dual-Stack Lite Broadband Deployments Following
IPv4 Exhaustion"; IPv4 Exhaustion";
} }
leaf last-address-change { leaf last-address-change {
type yang:date-and-time; type yang:date-and-time;
description description
"Records the last time that the address changed."; "Records the last time that the address changed.";
} }
} }
leaf v6-dscp { leaf v6-dscp {
when "/if:interfaces/if:interface/" + when "/if:interfaces/if:interface/" +
"dslite:v6-v4-dscp-preservation='true'"; "dslite:v6-v4-dscp-preservation='true'";
type inet:dscp; type inet:dscp;
description description
"DSCP value used at the softwire level (i.e., IPv6 header)."; "DSCP value used at the softwire level (i.e., IPv6 header).";
} }
leaf internal-v4-dscp { leaf internal-v4-dscp {
when "/if:interfaces/if:interface/" + when "/if:interfaces/if:interface/" +
"dslite:v6-v4-dscp-preservation='true'"; "dslite:v6-v4-dscp-preservation='true'";
type inet:dscp; type inet:dscp;
description description
"DSCP value of the encapsulated IPv4 packet."; "DSCP value of the encapsulated IPv4 packet.";
} }
leaf external-v4-dscp { leaf external-v4-dscp {
when "/if:interfaces/if:interface/" + when "/if:interfaces/if:interface/" +
"dslite:v6-v4-dscp-preservation='true'"; "dslite:v6-v4-dscp-preservation='true'";
type inet:dscp; type inet:dscp;
description description
"DSCP value of the translated IPv4 packet as marked by "DSCP value of the translated IPv4 packet as marked by
the AFTR."; the AFTR.";
} }
} }
augment "/nat:nat/nat:instances/nat:instance/" +
augment "/nat:nat/nat:instances/nat:instance/nat:statistics/" + "nat:statistics/nat:mappings-statistics" {
"nat:mappings-statistics" { if-feature "aftr";
if-feature aftr;
description description
"Indicates the number of active softwires."; "Indicates the number of active softwires.";
leaf active-softwires {
leaf active-softwires{
type yang:gauge32; type yang:gauge32;
description description
"The number of currently active softwires on the AFTR "The number of currently active softwires on the AFTR
instance."; instance.";
} }
} }
/* /*
* Notifications * Notifications
*/ */
notification b4-address-change-limit-policy-violation { notification b4-address-change-limit-policy-violation {
if-feature aftr; if-feature "aftr";
description description
"Generates notifications when a B4 unsuccessfully attempts "Generates notifications when a B4 unsuccessfully attempts
to change the IPv6 address in a time shorter than the value to change the IPv6 address in a time shorter than the value
of b4-address-change-limit. of b4-address-change-limit.
Notifications are rate-limited (notify-interval)."; Notifications are rate-limited (notify-interval).";
leaf id { leaf id {
type leafref { type leafref {
path "/nat:nat/nat:instances/nat:instance/nat:id"; path "/nat:nat/nat:instances/nat:instance/nat:id";
} }
mandatory true; mandatory true;
description description
"NAT instance identifier."; "NAT instance identifier.";
} }
leaf policy-id { leaf policy-id {
type leafref { type leafref {
path "/nat:nat/nat:instances/nat:instance/nat:policy/nat:id"; path "/nat:nat/nat:instances/nat:instance/nat:policy/nat:id";
} }
mandatory true; mandatory true;
description description
"Policy identifier."; "Policy identifier.";
} }
leaf address { leaf address {
type inet:ipv6-address; type inet:ipv6-address;
mandatory true; mandatory true;
description description
"B4's IPv6 address."; "B4's IPv6 address.";
} }
} }
} }
 End of changes. 45 change blocks. 
68 lines changed or deleted 37 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/