[RFE] NAT64 support with neutron
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Expired
|
Wishlist
|
Unassigned |
Bug Description
In some deployment scenarios, it is likely that the new clients will be
IPv6-only and they will want to connect to the existing IPv4-only servers.
In order for all of these devices to be able to communicate, they all need to
talk IPv6 or have some sort of translator involved. Translation requires
technology such as NAT64. NAT64 allow IPv6 hosts to communicate
with IPv4 servers by creating a NAT-mapping between the IPv6 and the IPv4
address. While supporting IPv4/IPv6 translation means providing separate IPv4
and IPv6 connectivity thus incurring additional complexity as well as
additional operational and administrative costs, sometimes its a necessary
step towards transition to the pure IPv6 networks.
We would like to propose NAT64 support by following similar method as FIP allocation for fixed IPv4 address, but this time assigning IPv6 address.
Consider the topology like in the following diagram.
Allow to associate a IPv6 floating IP allocated on the "external network" to a fixed IP on private network.
+------------+
| external |
| network |IPv6 floating-ip
|------------+
|
|
| router |
|
|
| private |
| network | fixed-ip
For API, the following changes are necessary:
* Add an extension "nat64" for the feature discovery.
The extension does not add any resources or attributes to the REST API.
* Allow IPv6 floating IP association via a router gateway interface.
* The existing l3 create floating IP logic should be updated to allow
IPv6 external subnet for the floating IP allocation.
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
tags: | added: ipv6 |
tags: | added: ip |
tags: |
added: l3-ipam-dhcp removed: ip |
Changed in neutron: | |
status: | New → Confirmed |
importance: | Undecided → Wishlist |
This is an unusual deployment of NAT64. NAT64 should be deployed by the client's provider to provide connectivity to the IPv4 internet.
To provide services to IPv6 client it would be preferable to either:
* Configure the servers in a dual stack configuration.
* Use a dual stack load balancer, this as the advantage the the backend servers themselves can be IPv6 only and provide services to both IPv4 and IPv6 clients.
In general routing IPv6 is preferred to NATing IPv6 which in turn is preferred to protocol translation (NAT64).
Implementing NAT64 in the Neutron router would limit future implementations such as an OVS native L3 solution, since protocol translation is significantly more complex than forwarding or NAT.