MAP-T (RFC 7599) is a stateless IPv4/IPv6 transition mechanism that enables IPv4 services over an IPv6-only network using algorithmic translation.
Translation happens at:
MAP Customer Edge (CE): A device functioning as a Customer Edge
router in a MAP deployment. A typical MAP CE
adopting MAP Rules will serve a residential
site with one WAN-side IPv6-addressed
interface and one or more LAN-side interfaces
addressed using private IPv4 addressing.
MAP Border Relay (BR): A MAP-enabled router managed by the service
provider at the edge of a MAP domain. A BR
has at least an IPv6-enabled interface and an
IPv4 interface connected to the native IPv4
network. A MAP BR may also be referred to as
simply a "BR" within the context of MAP.
DISTRO_FEATURES_append = " feature_mapt"
DISTRO_FEATURES_append = " nat46"
ddns-update-style none; option domain-name "hsd.pa.crnrstn.comcast.net" ; subnet 10.42.0.0 netmask 255.255.255.0 { } |
interface eth1 { prefix 2001:558:6013:100::/64 { }; |
ddns-update-style none; |
sudo systemctl restart isc-dhcp-server
sudo systemctl restart isc-dhcp-server6
sudo systemctl restart radvd
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2026-04-06 15:22:33 IST; 135ms ago
Docs: man:dhcpd(8)
Main PID: 45322 (dhcpd)
Tasks: 4 (limit: 18942)
Memory: 4.6M
CPU: 24ms
CGroup: /system.slice/isc-dhcp-server.service
└─45322 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf eth1
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: PID file: /run/dhcp-server/dhcpd.pid
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Wrote 3 leases to leases file.
Apr 06 15:22:33 CHTSL00399 sh[45322]: Wrote 3 leases to leases file.
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Listening on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 sh[45322]: Listening on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 sh[45322]: Sending on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 sh[45322]: Sending on Socket/fallback/fallback-net
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Sending on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Sending on Socket/fallback/fallback-net
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Server starting service.
● isc-dhcp-server6.service - ISC DHCP IPv6 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server6.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2026-04-06 15:22:33 IST; 122ms ago
Docs: man:dhcpd(8)
Main PID: 45333 (dhcpd)
Tasks: 4 (limit: 18942)
Memory: 3.3M
CPU: 18ms
CGroup: /system.slice/isc-dhcp-server6.service
└─45333 dhcpd -user dhcpd -group dhcpd -f -6 -pf /run/dhcp-server/dhcpd6.pid -cf /etc/dhcp/dhcpd6.conf eth1
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: PID file: /run/dhcp-server/dhcpd6.pid
Apr 06 15:22:33 CHTSL00399 sh[45333]: Wrote 0 NA, 0 TA, 0 PD leases to lease file.
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Wrote 0 NA, 0 TA, 0 PD leases to lease file.
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Bound to *:547
Apr 06 15:22:33 CHTSL00399 sh[45333]: Bound to *:547
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Listening on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 sh[45333]: Listening on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 sh[45333]: Sending on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Sending on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Server starting service.
● radvd.service - Router advertisement daemon for IPv6
Loaded: loaded (/lib/systemd/system/radvd.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2026-04-06 15:22:33 IST; 37ms ago
Docs: man:radvd(8)
Process: 45348 ExecStartPre=/usr/sbin/radvd --logmethod stderr_clean --configtest (code=exited, status=0/SUCCESS)
Process: 45349 ExecStart=/usr/sbin/radvd --logmethod stderr_clean (code=exited, status=0/SUCCESS)
Main PID: 45350 (radvd)
Tasks: 2 (limit: 18942)
Memory: 516.0K
CPU: 64ms
CGroup: /system.slice/radvd.service
├─45350 /usr/sbin/radvd --logmethod stderr_clean
└─45351 /usr/sbin/radvd --logmethod stderr_clean
Apr 06 15:22:33 CHTSL00399 systemd[1]: Starting Router advertisement daemon for IPv6...
Apr 06 15:22:33 CHTSL00399 radvd[45348]: config file, /etc/radvd.conf, syntax ok
Apr 06 15:22:33 CHTSL00399 radvd[45349]: version 2.18 started
Apr 06 15:22:33 CHTSL00399 systemd[1]: Started Router advertisement daemon for IPv6. |
Note: If using shared to other computers networkmanager will take care of sharing ipv4 and ipv6 internet. If using manual IP add required FORWARD rules in iptables.
To ping IPv6 add sudo ip6tables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo apt update sudo apt upgrade sudo apt install build-essential pkg-config sudo wget https://github.com/NICMx/Jool/releases/download/v4.2.0-rc2/jool-4.2.0.rc2.tar.gz sudo tar -xzf jool-4.2.0.rc2.tar.gz sudo /sbin/dkms install jool-4.2.0.rc2/ cd jool-4.2.0.rc2/ sudo ./configure sudo make sudo make install |
ubuntu:~/jool-4.2.0~rc2$ find . -iname jool*ko ./src/mod/mapt/jool_mapt.ko ./src/mod/common/jool_common.ko ./src/mod/nat64/jool.ko /src/mod/siit/jool_siit.ko |
sudo modprobe jool_common sudo modprobe jool_mapt sudo modprobe jool Enable below modules as well if not enabled netfilter/nf_defrag_ipv4.ko netfilter/nf_defrag_ipv6.ko |
ubuntu:~/ lsmod | grep jool* |
sudo jool_mapt instance add "BR" --netfilter --dmr 64:ff9b::/64 sudo jool_mapt -i "BR" fmrt add 2001:558:6013::/48 192.168.20.0/24 8 8 sudo jool_mapt -i "BR" global update map-t-type BR |
akhil@CHTSL00399:~$ sudo jool_mapt -i BR fmrt display +---------------------------------------------+--------------------+----------------+----+ | IPv6 Prefix | IPv4 Prefix | EA-bits Length | a | +---------------------------------------------+--------------------+----------------+----+ | 2001:558:6013::/48 | 192.168.20.0/24 | 16 | 6 | +---------------------------------------------+--------------------+----------------+----+ akhil@CHTSL00399:~$ sudo jool_mapt instance display +--------------------+-----------------+-----------+ | Namespace | Name | Framework | +--------------------+-----------------+-----------+ | 89628c00 | BR | netfilter | +--------------------+-----------------+-----------+ akhil@CHTSL00399:~$ |
root@Filogic-GW:~# dmcli eRT getv Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.
CR component name is: eRT.com.cisco.spvtg.ccsp.CR
subsystem_prefix eRT.
Execution succeed.
Parameter 1 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapTransportMode
type: string, value: MAPT
Parameter 2 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapBRPrefix
type: string, value: 64:ff9b::/64
Parameter 3 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapRuleIPv4Prefix
type: string, value: 192.168.20.0
Parameter 4 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapRuleIPv6Prefix
type: string, value: 2001:558:6013::/48
Parameter 5 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapEALen
type: uint, value: 8
Parameter 6 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapPSIDOffset
type: uint, value: 8
Parameter 7 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapPSIDLen
type: uint, value: 8
Parameter 8 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapPSID
type: uint, value: 0
Parameter 9 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapIsFMR
type: bool, value: false
Parameter 10 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapIpv4Address
type: string, value: 192.168.20.254
Parameter 11 name: Device.DHCPv6.Client.1.X_RDKCENTRAL-COM_RcvOption.MapRatio
type: uint, value: 1 |