Lightweight 4over6: An Extension to
the DS-Lite ArchitectureTsinghua UniversityDepartment of Computer Science, Tsinghua UniversityBeijing100084P.R.China+86-10-62603059yong@csnet1.cs.tsinghua.edu.cnChina TelecomRoom 708, No.118, Xizhimennei StreetBeijing100035P.R.China+86-10-58552936sunqiong@ctbri.com.cnFrance TelecomRennes35000Francemohamed.boucadair@orange.comHuawei Technologies2330 Central ExpresswaySanta ClaraCA95050USA+1-408-330-4424tena@huawei.comComcastOne Comcast CenterPhiladelphiaPA19103USAyiu_lee@cable.comcast.comDeutsche Telekom AGGTN-FM4,Landgrabenweg 151BonnNRW53227Germanyian.farrer@telekom.deSoftwire Working GroupDS-Lite describes an architecture for
transporting IPv4 packets over an IPv6 network. This document specifies
an extension to DS-Lite called Lightweight 4over6 which moves the
Network Address Translation function from the DS-Lite AFTR to the B4,
removing the requirement for a Carrier Grade NAT function in the AFTR.
This reduces the amount of centralized state that must be held to a
per-subscriber level. In order to delegate the NAPT function and make
IPv4 Address sharing possible, port-restricted IPv4 addresses are
allocated to the B4s.Dual-Stack Lite (DS-Lite, ) defines a model
for providing IPv4 access over an IPv6 network using two well-known
technologies: IP in IP and Network Address
Translation (NAT). The DS-Lite architecture defines two major functional
elements as follows:A 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.An AFTR element is
the combination of an IPv4-in-IPv6 tunnel endpoint and an IPv4-IPv4
NAT implemented on the same node.As the AFTR performs the centralized NAT44 function, it
dynamically assigns public IPv4 addresses and ports to requesting host's
traffic (as described in ). To achieve this, the
AFTR must dynamically maintain per-flow state in the form of active NAPT
sessions. For service providers with a large number of B4 clients, the
size and associated costs for scaling the AFTR can quickly become
prohibitive. It can also place a large NAPT logging overhead upon the
service provider in countries where legal requirements mandate this.This document describes a mechanism called Lightweight 4 over 6
(lw4o6), which provides a solution for these problems. By relocating the
NAPT functionality from the centralized AFTR to the distributed B4s, a
number of benefits can be realised:NAPT44 functionality is already widely supported and used in
today's CPE devices. Lw4o6 uses this to provide
private<->public NAPT44, meaning that the service provider
does not need a centralized NAT44 function.The amount of state that must be maintained centrally in the AFTR
can be reduced from per-flow to per-subscriber. This reduces the
amount of resources (memory and processing power) necessary in the
AFTR.The reduction of maintained state results in a greatly reduced
logging overhead on the service provider.Operator's IPv6 and IPv4 addressing architectures remain independent
of each other as in DS-Lite. Therefore, flexible IPv4/IPv6 addressing
schemes can be deployed.Lightweight 4over6 provides a solution for a hub-and-spoke softwire
architecture only. It does not offer direct, meshed IPv4 connectivity
between subscribers without packets traversing the AFTR. If this type of
meshed interconnectivity is required, provides a suitable solution.The tunneling mechanism remains the same for DS-Lite and Lightweight
4over6. This document describes the changes to DS-Lite that are
necessary to implement Lightweight 4over6. These changes mainly concern
the configuration parameters and provisioning method necessary for the
functional elements.This document is an extended case, which covers address sharing for
. It is also a variant
of A+P called Binding Table Mode (see Section 4.4 of ).This document focuses on architectural considerations and
particularly on the expected behavior of the involved functional
elements and their interfaces. Deployment-specific issues are discussed
in a companion document. As such, discussions about redundancy and
provisioning policy are out of scope.The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in .The document defines the following terms:Lightweight 4over6 is an
IPv4-over-IPv6 hub and spoke mechanism, which extends DS-Lite by
moving the IPv4 translation (NAPT44) function from the AFTR to the
B4.A B4 element (Basic Bridging
BroadBand element ), which supports
Lightweight 4over6 extensions. An lwB4 is a function implemented on
a dual-stack capable node, (either a directly connected device or a
CPE), that supports port-restricted IPv4 address allocation,
implements NAPT44 functionality and creates a tunnel to an
lwAFTRAn AFTR element (Address
Family Transition Router element ), which
supports Lightweight 4over6 extension. An lwAFTR is an IPv4-in-IPv6
tunnel endpoint which maintains per-subscriber address binding only
and does not perform a NAPT44 function.A non-overlapping range of
allowed external ports allocated to the lwB4 to use for NAPT44.
Source ports of IPv4 packets sent by the B4 must belong to the
assigned port-set. The port set is used for all port aware IP
protocols (TCP, UDP, SCTP etc.)A public IPv4 address
with a restricted port-set. In Lightweight 4over6, multiple B4s may
share the same IPv4 address, however, their port-sets must be
non-overlapping.Throughout the remainder of this document, the terms B4/AFTR should
be understood to refer specifically to a DS-Lite implementation. The
terms lwB4/lwAFTR refer to a Lightweight 4over6 implementation.The Lightweight 4over6 architecture is functionally similar to
DS-Lite. lwB4s and an lwAFTR are connected through an IPv6-enabled
network. Both approaches use an IPv4-in-IPv6 encapsulation scheme to
deliver IPv4 connectivity services. The following figure shows the data
plane with main functional change between DS-Lite and lw4o6:There are three main components in the Lightweight 4over6
architecture:The lwB4, which performs the NAPT function and
encapsulation/de-capsulation IPv4/IPv6.The lwAFTR, which performs the encapsulation/de-capsulation
IPv4/IPv6.The provisioning system, which tells the lwB4 which IPv4 address
and port set to use.The lwB4 differs from a regular B4 in that it now performs the NAPT
functionality. This means that it needs to be provisioned with the
public IPv4 address and port set it is allowed to use. This information
is provided though a provisioning mechanism such as DHCP, PCP or
TR-69.The lwAFTR needs to know the binding between the IPv6 address of each
subscriber and the IPv4 address and port set allocated to that
subscriber. This information is used to perform ingress filtering
upstream and encapsulation downstream. Note that this is per-subscriber
state as opposed to per-flow state in the regular AFTR case.The consequence of this architecture is that the information
maintained by the provisioning mechanism and the one maintained by the
lwAFTR MUST be synchronized (See figure 2). The details of this
synchronization depend on the exact provisioning mechanism and will be
discussed in a companion draft.With DS-Lite, the B4 element only needs to be configured with a
single DS-Lite specific parameter so that it can set up the softwire
(the IPv6 address of the AFTR). Its IPv4 address can be taken from the
well-known range 192.0.0.0/29.In lw4o6, due to the distributed nature of the NAPT function, a
number of lw4o6 specific configuration parameters must be provisioned
to the lwB4. These are:IPv6 Address for the lwAFTR (as in DS-Lite)IPv4 External (Public) Address for NAPT44Restricted port-set to use for NAPT44An IPv6 address from an assigned prefix is also required for the
lwB4 to use as the encapsulation source address for the softwire.
Normally, this is the lwB4's globally unique WAN interface address
which can be obtained via an IPv6 address allocation procedure such as
SLAAC, DHCPv6 or manual configuration.In the event that the lwB4's encapsulation source address is
changed for any reason (such as the DHCPv6 lease expiring), the lwB4's
dynamic provisioning process must be re-initiated.For learning the IPv6 address of the lwAFTR, the lwB4 SHOULD
implement the method described in section 5.4 of and implement the DHCPv6 option defined in . Other methods of learning this address are also
possible.An lwB4 MUST support dynamic port-restricted IPv4 address
provisioning (unlike a DS-Lite B4). Several different mechanisms can
be used for provisioning the lwB4 with its port-restricted IPv4
address such as: DHCPv4, DHCPv6, PCP, PPP and IPCP. Some alternatives
are mentioned in Appendix A of this document.In this document, it is RECOMMENDED that the DHCPv4 provisioning
method is implemented as it is widely deployed in services providers
networks and supports all IPv4 and IPv6 addressing models. The DHCPv4
based provisioning model is described in section 7 of this
document.In the event that the lwB4 receives and ICMPv6 error message (type
1, code 5) originating from the lwAFTR, the lwB4 SHOULD interpret this
to mean that no matching entry in the lwAFTR's binding table has been
found. The lwB4 MAY then re-initiate the dynamic port-restricted
provisioning process. The lwB4's re-initiation policy SHOULD be
configurable.The DNS considerations described in Section 5.5 and Section 6.4 of
SHOULD be followed.Several sections of provide background
information on the B4's data plane functionality and MUST be
implemented by the lwB4 as they are common to both solutions. The
relevant sections are:Covering encapsulation and
de-capsulation of tunneled trafficCovering MTU and
fragmentation considerations (referencing )Covering tunneling and traffic class
mapping between IPv4 and IPv6 (referencing and )The lwB4 element performs IPv4 address translation (NAPT44) as well
as encapsulation and de-capsulation. It runs standard NAPT44 using the allocated port-restricted address as its
external IPv4 address and port numbers.Internally connected hosts source IPv4 packets with an address. When the lwB4 receives such an IPv4
packet, it performs a NAPT44 function on the source address and port
by using the public IPv4 address and a port number from the allocated
port-set. Then, it encapsulates the packet with an IPv6 header. The
destination IPv6 address is the lwAFTR's IPv6 address and the source
IPv6 address is the lwB4's IPv6 tunnel endpoint address. Finally, the
lwB4 forwards the encapsulated packet to the configured lwAFTR.When the lwB4 receives an IPv4-in-IPv6 packet from the lwAFTR, it
de-capsulates the IPv4 packet from the IPv6 packet. Then, it performs
NAPT44 translation on the destination address and port, based on the
available information in its local NAPT44 table.The lwB4 is responsible for performing ALG functions (e.g., SIP,
FTP), and other NAPT traversal mechanisms (e.g., UPnP, NAPT-PMP,
manual binding configuration, PCP) for the internal hosts. This
requirement is typical for NAPT44 gateways available today.It is possible that a lwB4 is co-located in a host. In this case,
the functions of NAPT44 and encapsulation/de-capsulation are
implemented inside the host.If the lwB4 is provisioned with a full port-set (e.g. all ports
from 0 to 65535), then it SHOULD behave as a 4 over 6 Initiator as
described in .The lwAFTR maintains an address binding table containing the
binding between the lwB4's IPv6 address, the allocated IPv4 address
and restricted port-set. Unlike the DS-Lite extended binding table
defined in section 6.6 of which is a 5-tuple
NAT table, each entry in the Lightweight 4over6 binding table contains
the following 3-tuples:IPv6 Address for a single lwB4Public IPv4 AddressRestricted port-setThe entry has two functions: the IPv6 encapsulation of
inbound IPv4 packets destined to the lwB4 and the validation of
outbound IPv4-in-IPv6 packets received from the lwB4 for
de-capsulation.The lwAFTR does not perform NAPT and so does not need session
entries.The lwAFTR MUST synchronize the binding information with the
port-restricted address provisioning process. If the lwAFTR does not
participate in the port-restricted address provisioning process, the
binding MUST be synchronized through other methods (e.g. out-of-band
static update).If the lwAFTR participates in the port-restricted provisioning
process, then its binding table MUST be created as part of this
process.For all provisioning processes, the lifetime of binding table
entries MUST be synchronized with the lifetime of address
allocations.Several sections of provide background
information on the AFTR's data plane functionality and MUST be
implemented by the lwAFTR as they are common to both solutions. The
relevant sections are:Covering encapsulation and
de-capsulation of tunneled trafficFragmentation and
re-assembly considerations (referencing )Covering tunneling and traffic class
mapping between IPv4 and IPv6 (referencing and )When the lwAFTR receives an IPv4-in-IPv6 packet from an lwB4, it
de-capsulates the IPv6 header and verifies the source addresses and
port in the binding table. If both the source IPv4 and IPv6 addresses
match a single entry in the binding table and the source port in the
allowed port-set for that entry, the lwAFTR forwards the packet to the
IPv4 destination.If no match is found (e.g., no matching IPv4 address entry, port
out of range, etc.), the lwAFTR MUST discard the packet. An ICMPv6
type 1, code 5 (source address failed ingress/egress policy) error
message MAY be sent back to the requesting lwB4. The ICMP policy
SHOULD be configurable.When the lwAFTR receives an inbound IPv4 packet, it uses the IPv4
destination address and port to lookup the destination lwB4's IPv6
address in its binding table. If a match is found, the lwAFTR
encapsulates the IPv4 packet. The source is the lwAFTR's IPv6 address
and the destination is the lwB4's IPv6 address from the matched entry.
Then, the lwAFTR forwards the packet to the lwB4 natively over the
IPv6 network.If no match is found, the lwAFTR MUST discard the packet. An ICMPv4
type 3, code 1 (Destination unreachable, host unreachable) error
message MAY be sent back. The ICMP policy SHOULD be configurable.The lwAFTR MUST support hairpinning of traffic between two lwB4s,
by performing de-capsulation and re-encapsulation of packets. The
hairpinning policy MUST be configurable.If the binding table entry has a full port-set (e.g. all ports from
0 to 65535) allocated for an lwB4 client, then the lwAFTR SHOULD
behave as a 4 over 6 concentrator as described in .The DHCPv4 based provisioning model uses DHCPv4 format messages
within an IPv6 packet as described in . This is used for configuring
the lwB4's public IPv4 address and port-set that will be used for the
softwire and NAPT44 function.The lwB4's steps for this configuration model are as follows:The lwB4 learns IPv6 Address of DHCPv4 over IPv6 ServerThe lwB4 sends a DHCPv4 over IPv6 request (Discover)
messageThe DHCPv4 over IPv6 response contains the public IPv4 address
and restricted port-set to configure NAPT44 and the softwireThe lwB4 must implement the Client Relay Agent function described
in . This function is
responsible for converting the DHCPv4 message's IPv4 transport to an
IPv6 transport.To learn the IPv6 unicast address of the DHCPv4 over IPv6 server or
relay, the lwB4 SHOULD implement the DHCPv6 option defined in .If the DHCPv4 over IPv6 client has multiple IPv6 addresses
assigned, the mechanisms defined in MUST be
applied for selecting the correct address as the source of the DHCPv4
over IPv6 request. A DHCPv4 over IPv6 client embedded within the lwB4
MUST use the same IPv6 address as the data plane encapsulation source
address for all DHCPv4 over IPv6 requests.To implement this provisioning model, the lwB4 MUST support public
IPv4 address and restricted port-set allocation over DHCPv4 according
to the mechanism described in (or evolution thereof).The DHCPv4 over IPv6 based provisioning process can be considered
out-of-band from the perspective of the lwAFTR in that the lwAFTR does
not need to be directly involved for the mechanism to function
correctly. However, the contents of the lwAFTR's binding table MUST be
synchronized with the DHCPv4 over IPv6 server.This is necessary to ensure that the IPv4 address and port-set that
is allocated in response to a specific client's DHCP request (e.g. the
originating IPv6 address of the request) matches the equivalent entry
in the lwAFTR's binding table. If this elements are not kept
synchronized, then the lwAFTR will either discard or mis-route packets
it receives.The lwAFTR MAY implement a local DHCPv4 over IPv6 server or Relay
Agent as described in .
If one of these is implemented, the lwB4s MAY send DHCPv4 over IPv6
messages to the lwAFTR which can then learn the bindings between IPv6
address and IPv4 address with port set directly.ICMP does not work in an address sharing environment without special
handling . Due to the port-set style address
sharing, Lightweight 4over6 requires specific ICMP message handling not
required by DS-Lite.The following behavior SHOULD be implemented by the lwAFTR to provide
ICMP error handling and basic remote IPv4 service diagnostics for a port
restricted CPE: for inbound ICMP messages, the lwAFTR MAY behave in two
modes:Either:Check the ICMP Type field.If the ICMP type is set to 0 or 8 (echo reply or request), then
the lwAFTR MUST take the value of the ICMP identifier field as the
source port, and use this value to lookup the binding table for an
encapsulation destination. If a match is found, the lwAFTR forwards
the ICMP packet to the IPv6 address stored in the entry; otherwise
it MUST discard the packet.If the ICMP type field is set to any other value, then the lwAFTR
MUST use the method described in REQ-3 of
to locate the source port within the transport layer header in ICMP
packet's data field. The destination IPv4 address and source port
extracted from the ICMP packet are then used to make a lookup in the
binding table. If a match is found, it MUST forward the ICMP reply
packet to the IPv6 address stored in the entry; otherwise it MUST
discard the packet.Or:Discard all inbound ICMP messages.The ICMP policy SHOULD be configurable.The lwB4 SHOULD implement the requirements defined in for ICMP forwarding. For ICMP echo request packets
originating from the private IPv4 network, the lwB4 SHOULD implement the
method described in and use an available port
from its port-set as the ICMP Identifier.For both the lwAFTR and the lwB4, ICMPv6 MUST be handled as described
in .As the port space for a subscriber shrinks due to address sharing,
the randomness for the port numbers of the subscriber is decreased
significantly. This means it is much easier for an attacker to guess the
port number used, which could result in attacks ranging from throughput
reduction to broken connections or data corruption.The port-set for a subscriber can be a set of contiguous ports or
non-contiguous ports. Contiguous port-sets do not reduce this threat.
However, with non-contiguous port-set (which may be generated in a
pseudo-random way ), the randomness of the port
number is improved, provided that the attacker is outside the
Lightweight 4over6 domain and hence does not know the port-set
generation algorithm.More considerations about IP address sharing are discussed in Section
13 of , which is applicable to this
solution.This document does not include an IANA request.The following are extended authors who contributed to the effort:Jianping Wu Tsinghua University Department of Computer Science, Tsinghua University
Beijing 100084
P.R.ChinaPhone: +86-10-62785983 Email:
jianping@cernet.edu.cnPeng Wu Tsinghua University Department of Computer Science, Tsinghua University
Beijing 100084
P.R.ChinaPhone: +86-10-62785822 Email:
pengwu.thu@gmail.comChongfeng Xie China Telecom Room 708, No.118, Xizhimennei Street Beijing 100035
P.R.ChinaPhone: +86-10-58552116 Email:
xiechf@ctbri.com.cnXiaohong Deng France TelecomEmail: xiaohong.deng@orange.comCathy Zhou Huawei Technologies Section B, Huawei Industrial Base, Bantian Longgang
Shenzhen 518129
P.R.ChinaEmail: cathyzhou@huawei.comAlain Durand Juniper Networks 1194 North Mathilda Avenue
Sunnyvale, CA 94089-1206 USAEmail: adurand@juniper.netReinaldo Penno Cisco Systems, Inc.
170 West Tasman Drive San Jose, California 95134
USAEmail: repenno@cisco.comAlex Clauberg Deutsche Telekom AG
GTN-FM4
Landgrabenweg 151 Bonn, CA 53227 GermanyEmail: axel.clauberg@telekom.deLionel Hoffmann Bouygues Telecom TECHNOPOLE 13/15 Avenue du
Marechal Juin Meudon 92360 FranceEmail: lhoffman@bouyguestelecom.frMaoke Chen FreeBit Co., Ltd. 13F E-space Tower, Maruyama-cho 3-6Shibuya-ku, Tokyo 150-0044JapanEmail: fibrib@gmail.comThe authors would like to thank Ole Troan, Ralph Droms for their
comments and feedback.This document is a merge of three documents: , and .Besides DHCPv4, other protocols for address and port-set provisioning
MAY also be implemented. Some possible alternatives include:PCP: a lwB4 MAY use to retrieve a restricted IPv4
address and a set of ports.DHCPv6: the DHCPv6 protocol MAY be extended to support port-set
allocation , along with
IPv6-mapped IPv4 address allocation.IPCP: IPCP MAY be extended to carry the port-set (e.g., ).In a Lightweight 4over6 domain, the same provisioning mechanism MUST
be enabled in the lwB4s, the AFTRs and the provisioning server.