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/ |