IPv6-to-IPv4 connectivity
To topBackground information
SIIT (Stateless IP/ICMP Translation) and NAT64 are technologies meant to communicate networking nodes which only speak IPv4 with nodes that only speak IPv6.
On the one hand, SIIT, also called Stateless NAT64, mangles packets, simply replacing IPv4 headers and IPv6 headers as described in [RFC 7915]. This method uses 1:1 address mapping and defines a class of IPv6 addresses called IPv4-mapped addresses, which have the prefix ::ffff:0:0/96 and may be written as ::ffff:a.b.c.d, where the IPv4 formatted address a.b.c.d refers to an IPv4-only node. This algorithm can be used in a solution that allows IPv4-only hosts to talk to IPv6-only hosts and vice versa.
On the other hand, Stateful NAT64 masks several IPv6 nodes behind an IPv4 address and thus it uses N:1 address mapping. NAT64 handles an IPv4-embedded IPv6 address as described in [RFC 6052] in which 32 bits have an IPv4 address encoded in them. The prefix can be 64:ff9b::/96 (well-known prefix) or a network-specific one defined by the Administrator. This algorithm can be used when an IPv6-only host needs to communicate with an IPv4-only host. Furthermore, it also uses a special DNS variant, DNS64 [RFC 6147], as a companion protocol.
Stateful NAT64
KTBRN1 Thread Border Router supports Stateful NAT64 off the shell. To this end, the Border Router uses the IPv4 address of its LAN interface.
By means of DHCPv6 server, the Thread devices can obtain additional information of services available in the Border Router such as DNS64, NTP (Network Time Protocol) as described in [RFC 5905] and so on, apart from acquiring an IPv6 address. Thereby, any Thread node can take advantage of these services, for instance, to resolve a domain name into an IP address or to synchronize its system clock to time server.
All information related to NAT64 is accessible through KiBRA Web Administration Panel, where the Administrator can check out the current NAT64 status and session table.
In the following diagram, it can be observed how NAT64 and DNS64 services work together to deliver a seamless IP connectivity between the Thread Network and Internet.
Validation
The test consists on sending out a ping request to www.kirale.com from Thread device R1 and receiving the reply from IPv4 server which is hosting that website.
After sending out the ping request, KiBRA will show the corresponding entry in the NAT64 session table in which the IP addressing used by the system can be seen.