Multiple IPv4 - IPv6 address mapping translator (M46T)
Naoki Matsuhira
WIDE Project
Japan
naoki.matsuhira@gmail.com
4 April 2022
Transport Area
IPv6
Draft
This document specifies Multiple IPv4 - IPv6 address mapping Translator (M46T) specification. M46T enable access to IPv4 only host from IPv6 host. IPv4 host is identified as M46 address in IPv6 address space. The address assigned to IPv4 host may be global IPv4 address or private IPv4 address. M46T does not support access to IPv6 host from IPv4 only host.

Requirements Language
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 RFC 2119.

Introduction
This document specifies Multiple IPv4 - IPv6 address mapping Translator (M46T) specification. M46T enable access to IPv4 only host from IPv6 host. IPv4 host is identified as M46 address in IPv6 address space. The address assigned to IPv4 host may be global IPv4 address or private IPv4 address. M46T does not support access to IPv6 host from IPv4 only host.

M46T Architecture

M46 address
Figure 1 show M46A.

 |     96 - m bits       |          m bits          |     32 bits  |
 +-----------------------+--------------------------+--------------+
 |     M46A prefix       |  IPv4 network plane ID   | IPv4 address |
 +-----------------------+--------------------------+--------------+

Mapping IPv4 address and IPv6 address
M46A contain IPv4 address. Mapping IPv4 host address to IPv6 address space is already done with M46A. Address translation for IPv4 address is same as resolving M46A.
IPv6 host address and corresponding IPv4 address should manage.

Address Translation Table
Figure 2 shows translation table for M46T. Translation table contain three value, IPv6 adddress ot IPv6 host, mapped IPv4 address for the IPv6 host, and extry expire timer for remove the entry.

 +----------------------+----------------------+--------------------+
 | Address of IPv6 host | mapped IPv4 address  | entry expire timer |
 |                      | for IPv6 host        |                    |
 +----------------------+----------------------+--------------------+
 |         :            |          :           |         :          |
 ~         :            ~          :           ~         :          ~
 |         :            |          :           |         :          |
 +----------------------+----------------------+--------------------+
 | Address of IPv6 host | mapped IPv4 address  | entry expire timer |
 |                      | for IPv6 host        |                    |
 +----------------------+----------------------+--------------------+

DNS mapping of IPv4 only host
In the Domain Name System, hostnames are mapped to IPv6 addresses by AAAA resource records. M46 address can be mapped to IPv4 only host name.

Sample Configuration

M46 address and IPv4 network plane ID
In this example, M46A prefix length is 64bits, and IPv4 network plane ID length is 32 bits. M46A prefix value is 2001:0DB8:0:46, and IPv4 network plane ID value is 0:46. Figure 3 shows these value.

 |     64  bits          |          32 bits         |     32 bits  |
 +-----------------------+--------------------------+--------------+
 | M46A prefix           |  IPv4 network plane ID   | IPv4 address |
 | (2001:0DB8:0:46)      | (0:46)                   |              |
 +-----------------------+--------------------------+--------------+

Network Configuration
Figure 4 shows sample network configuration. IPv6 network have 2001:0DB8:1:0/64 network prefix and IPv4 network have 10.0.0.0/24 network prefix.

  +----------------+
  |  IPv6 host     |
  |          2001:0DB8:1.0::10
  +----------------+
         |
         | 2001:0DB8:1:0/64
         |
  +----------------+
  |      2001:0DB8:1:0::1
  |                |
  |    M46T        |
  |           address pool for IPv6 host mapping
  |              192.168.0.0/24
  |                |
  |           10.0.0.1
  +----------------+
         |
         | 10.0.0.0/24
         |
  +----------------+
  | IPv4 only host |
  |                |
  |     ipv4onlyhost10.example.com
  |     10.0.0.10  |
  |     (2001:0DB8:0:46:0:64:10.0.0.10)
  |                |
  +----------------+

IPv6 host address is 2001:0DB8:1:0::10. IPv4 only host address is 10.0.0.10. M46 address for IPv4 only host is 2001:0DB8:0:46:0:64:10.0.0.10. FQDN of IPv4 only host is ipv6onlyhost10.example.com. Figure 5 shows DNS entry in IPv4 address space, and Figure 6 shows DNS entry in IPv6 space.

ipv6onlyhost10.example.com IN A 10.0.0.10

ipv6onlyhost10.example.com IN AAAA 2001:0DB8:0:46:0:64:10.0.0.10

The address of IPv4 interface of M46T is 10.0.0.1, and the address of IPv6 interface of M46T is 2001:0DB8:1:0::1. M46T have also IPv4 address pool for IPv6 host mapping. This example, the IPv4 address pool is 192.168.0.0/24.
The default router for IPv4 only host is M46T's IPv4 interface address, 10.0.0.1.

Routing
If using M46T in own routing domain, M46T advertise M46 address prefix for IPv4 only host, 2001:0DB8:0:46:0:64:10.0.0.0/120.

Processing of M46T

Configuration of M46T
1. M46A prefix for route advertisement (2001:0DB8:0:46:0:64:10.0.0.0/120)
2. IPv4 address pool for IPv6 hosts
3. entry expire default time (TBD)
M46A contain IPv4 network plane ID, so M46T know IPv4 network plane ID from M46A prefix.

Processing from IPv6 to IPv4
1. M46T examine the exists of the entry for IPv6 host, that is source IPv6 address of IPv6 packet.
2. If there is no entry, get IPv4 address for mapping of IPv6 host from IPv4 address pool, and make entry to the translation table.
3. IF there is the entry, resove mapped IPv4 address for IPv6 host.
4. Make IPv4 header, source address is mapped IPv4 address, and destination address is from M46 address.
5. Translate IPv6 packet to IPv4 packet, and send it, and reset entry expire timer.
The example addess translation table is shown in Figure 7. In this example, IPv6 host address is mapped to 192.168.0.200.

 +----------------------+----------------------+--------------------+
 | Address of IPv6 host | mapped IPv4 address  | entry expire timer |
 |                      | for IPv6 host        |                    |
 +----------------------+----------------------+--------------------+
 | 2001:0DB8:1.0::10    | 192.168.0.200        | TBD                |
 +----------------------+----------------------+--------------------+

Processing from IPv6 to IPv4
1. Search address translation table with key destination IPv4 address, and resolve corrensponding IPv6 address.
2. Resolve source IPv6 address from sourve IPv4 address with M46 address generation rule.
3. Translate IPv4 packet to IPv6 packet, and sent it, and reset extry expire timer.

Other processing
1. Remove the entry of address translation table if expire.

IANA Considerations
This document may requests IANA to assign IPv6 prefix for M46 Global address.

Security Considerations
Security consideration does not discussed in this memo, at this time.

Normative References
[I-D.draft-matsuhira-m46a]

Multiple IPv4 - IPv6 mapped IPv6 address
N. Matsuhira
1 June 2019