Maximizing IPv4 Utilization with IPv6-Only Data Centers and SIIT-DC
26/04/2022

Few network environments are better suited to single-stack operation as data centers. Dual-stack operation with IPv4 and IPv6 running in parallel only causes an increased complexity and administrative overhead. There is very little reason to want to maintain two sets of ACLs, two addressing plans, two troubleshooting procedures, and so forth, when one is enough.
When designing a data center network, the question then becomes: IPv4 or IPv6?
There are advantages to both. For IPv4, the most important advantage is that essentially all applications support it, even legacy and unmaintained ones. On the other hand, globally unique IPv4 addresses are scarce and expensive. The natural workaround is to use private (RFC 1918) addresses instead. However, this is not without disadvantages of its own, particularly that it requires the introduction of stateful NAT devices in the network to translate between the global IPv4 Internet on the outside, and the private addresses used on the inside.
Another disadvantage is obviously that it is not particularly future-proof, as the global Internet slowly but steadily is migrating to IPv6.
So how about building an IPv6-only data center network instead? If there are no legacy IPv4-only applications to worry about, IPv6 is a sound choice. IPv6 addresses are plentiful and easy to come by, and are well supported by most modern operating systems and applications. If one starts out with IPv6, there will be no complicated IP version migration projects to lose sleep over in the future.
The only remaining thing to consider is how to enable IPv4-only end users on the Internet to access the services and applications hosted in the IPv6-only data center. One particularly neat way to do so is to use SIIT-DC – SIIT-DC: Stateless IP/ICMP Translation for IPv6 Data Center Environments (RFC 7755). SIIT-DC performs a stateless packet-by-packet conversion from IPv4 to IPv6 and vice versa, leaving the payload (typically TCP) intact. SIIT-DC provides the «glue» that makes it possible for an IPv4-only end user to communicate with an IPv6-only server.
(Free access, no subscription required)
A SIIT-DC translator contains a table with IPv4 and IPv6 address pairs, for example:
IPv4 | IPv6 |
---|---|
198.51.100.0 | 2001:db8::1234 |
198.51.100.1 | 2001:db8:abcd::42 |
…and so on.
When the SIIT-DC translator receives an IPv4 packet destined for one of the IPv4 addresses in the table, it will remove the IPv4 header and replace it with an IPv6 header where the destination address is swapped according to the table. The source address of the IPv6 header will be the original IPv4 address of the end user, with a special 96-bit IPv6 prefix prepended.
The views expressed by the authors of this blog are their own and do not necessarily reflect the views of LACNIC.