module ietf-softwire-ce {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-softwire-ce";
prefix softwire-ce;
import ietf-inet-types {
prefix inet;
reference
"RFC 6991: Common YANG Data Types, Section 4";
}
import ietf-interfaces {
prefix if;
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
import ietf-softwire-common {
prefix softwire-common;
reference
"RFC 8676: YANG Modules for IPv4-in-IPv6 Address plus Port
Softwires";
}
import iana-tunnel-type {
prefix iana-tunnel-type;
reference
"RFC 8675: A YANG Data Model for Tunnel Interface Types";
}
organization
"IETF Softwire Working Group";
contact
"WG Web:
WG List:
Author: Qi Sun
Author: Linhui Sun
Author: Yong Cui
Editor: Ian Farrer
Author: Sladjana Zoric
Editor: Mohamed Boucadair
Author: Rajiv Asati
";
description
"This document defines a YANG module for the configuration and
management of A+P Softwire Customer Premises Equipment (CEs).
It covers Lightweight 4over6, MAP-E, and MAP-T mechanisms.
Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8676; see
the RFC itself for full legal notices.";
revision 2019-11-16 {
description
"Initial revision.";
reference
"RFC 8676: YANG Modules for IPv4-in-IPv6 Address plus Port
(A+P) Softwires";
}
/*
* Features
*/
feature binding-mode {
description
"Binding is used for configuring the Lightweight 4over6
mechanism.
Binding-based softwire mechanisms are IPv4-over-IPv6 tunneling
transition mechanisms specifically intended for complete
independence between the IPv6 subnet prefix (and IPv6 address)
and IPv4 address, with or without IPv4 address sharing.
This is accomplished by maintaining state for each softwire
(per-subscriber state) in the central Border Relay (BR) and
using a hub-and-spoke forwarding architecture. In order to
delegate the NAPT function and achieve IPv4 address sharing,
port-restricted IPv4 addresses needs to be allocated to CEs.
This feature indicates that the network element can function
as one or more binding-based softwire instances.";
reference
"RFC 7596: Lightweight 4over6: An Extension to the Dual-Stack
Lite Architecture
RFC 7597: Mapping of Address and Port with Encapsulation
(MAP-E)
RFC 7599: Mapping of Address and Port using Translation
(MAP-T)";
}
feature map-e {
description
"MAP-E is an IPv6 transition mechanism for transporting IPv4
packets across an IPv6 network using IP encapsulation. MAP-E
allows for a reduction of the amount of centralized state
using rules to express IPv4/IPv6 address mappings. This
introduces an algorithmic relationship between the IPv6
subnet and IPv4 address.
This feature indicates that the network element can function
as one or more MAP-E softwire instances.";
reference
"RFC 7597: Mapping of Address and Port with
Encapsulation (MAP-E)";
}
feature map-t {
description
"MAP-T is an IPv6 transition mechanism for transporting IPv4
packets across an IPv6 network using IP translation. It
leverages a double stateless NAT64-based solution as well as
the stateless algorithmic address and transport layer port
mapping algorithm defined for MAP-E.
This feature indicates that the network element can function
as one or more MAP-T softwire instances.";
reference
"RFC 7599: Mapping of Address and Port using Translation
(MAP-T)";
}
// Binding Entry
grouping binding-entry {
description
"The binding BR (Border Relay) maintains an address
binding table that contains the binding between the CE's
IPv6 address, the allocated IPv4 address, and the
restricted port-set.";
leaf binding-ipv6info {
type union {
type inet:ipv6-address;
type inet:ipv6-prefix;
}
description
"The IPv6 information for a binding entry.
When the IPv6 prefix type is used,
the IPv6 source address of the CE is constructed
according to the description in RFC 7596.
If the IPv6 address type is used, the CE can use
any valid /128 address from a prefix assigned to
the CE.";
reference
"RFC 7596: Lightweight 4over6: An Extension
to the Dual-Stack Lite Architecture, Section 5.1";
}
leaf br-ipv6-addr {
type inet:ipv6-address;
mandatory true;
description
"The IPv6 address of the binding BR.";
}
}
// configuration and stateful parameters for softwire CE interface
augment "/if:interfaces/if:interface" {
when "derived-from(if:type, 'iana-tunnel-type:aplusp')";
description
"Softwire CE interface configuration";
leaf softwire-payload-mtu {
type uint16;
units "bytes";
description
"The payload IPv4 MTU for the softwire tunnel.";
}
leaf softwire-path-mru {
type uint16;
units "bytes";
description
"The path MRU for the softwire (payload + encapsulation
overhead).";
reference
"RFC 4213: Basic Transition Mechanisms for IPv6 Hosts and
Routers";
}
choice ce-type {
description
"Sets the softwire CE mechanism";
case binding {
if-feature "binding-mode";
description
"CE binding configuration";
uses binding-entry;
}
case algo {
if-feature "map-e or map-t";
description
"CE algorithm configuration";
container algo-instances {
description
"Collection of MAP-E/MAP-T parameters";
list algo-instance {
key "name";
description
"MAP forwarding rule instance for
MAP-E/MAP-T";
leaf name {
type string;
mandatory true;
description
"The name is used to uniquely identify an algorithm
instance.
This name can be automatically assigned
or explicitly configured.";
}
uses softwire-common:algorithm-instance;
}
}
}
}
}
augment "/if:interfaces/if:interface/if:statistics" {
when "derived-from(../if:type, 'iana-tunnel-type:aplusp')";
description
"Softwire CE interface statistics.";
uses softwire-common:traffic-stat;
}
/*
* Notifications
*/
notification softwire-ce-event {
if-feature "binding-mode";
description
"CE notification";
leaf ce-binding-ipv6-addr-change {
type inet:ipv6-address;
mandatory true;
description
"This notification is generated whenever the CE's binding
IPv6 address changes for any reason.";
}
}
}