Work In progress
Work in Progress
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.sudo systemctl enable isc-dhcp-server isc-dhcp-server6 radvd
sudo systemctl restart isc-dhcp-server
sudo systemctl restart isc-dhcp-server6
sudo systemctl restart radvd
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 nf_defrag_ipv4 sudo modprobe nf_defrag_ipv6
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 | 8 | 8 | +---------------------------------------------+--------------------+----------------+----+ akhil@CHTSL00399:~$ sudo jool_mapt instance display +--------------------+-----------------+-----------+ | Namespace | Name | Framework | +--------------------+-----------------+-----------+ | 89628c00 | BR | netfilter | +--------------------+-----------------+-----------+ akhil@CHTSL00399:~$
sudo ip route replace 192.168.20.0/24 via 192.168.122.82 sudo iptables -t nat -I POSTROUTING -s 192.168.20.0/24 ! -d 192.168.20.0/24 -j MASQUERADE sudo iptables -I FORWARD -s 192.168.20.0/24 -j ACCEPT sudo iptables -I FORWARD -d 192.168.20.0/24 -j ACCEPT sudo sysctl -qw net.ipv4.ip_forward=1
DISTRO_FEATURES_append = " feature_mapt"
DISTRO_FEATURES_append = " nat46"
Enable MAPT in BPI using the mapt rfc datatmodel
root@Filogic-GW:~# dmcli eRT getv Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.MAP-T.Enable
CR component name is: eRT.com.cisco.spvtg.ccsp.CR
subsystem_prefix eRT.
Execution succeed.
Parameter 1 name: Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.MAP-T.Enable
type: bool, value: true
Check map0 interface created and erouter0 should have only IPv6 addr
root@Filogic-GW:~# ifconfig map0
map0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: fe80::c534:91eb:b45d:b579/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:123 errors:0 dropped:0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5161 (5.0 KiB) TX bytes:0 (0.0 B)
root@Filogic-GW:~# ifconfig erouter0
erouter0 Link encap:Ethernet HWaddr 02:01:00:39:58:64
inet6 addr: 2001:558:6013:100::175f/128 Scope:Global
inet6 addr: fe80::1:ff:fe39:5864/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:637 errors:0 dropped:0 overruns:0 frame:0
TX packets:599 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:105610 (103.1 KiB) TX bytes:105608 (103.1 KiB)
root@Filogic-GW:~#
Ping and Internet should work in CE and connected clients
root@Filogic-GW:~# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=110 time=322.241 ms 64 bytes from 8.8.8.8: seq=1 ttl=110 time=357.163 ms 64 bytes from 8.8.8.8: seq=2 ttl=110 time=145.545 ms 64 bytes from 8.8.8.8: seq=3 ttl=110 time=163.061 ms ^C --- 8.8.8.8 ping statistics --- root@Filogic-GW:~# ping -4 gmail.com PING gmail.com (142.250.207.69): 56 data bytes 64 bytes from 142.250.207.69: seq=0 ttl=110 time=204.645 ms 64 bytes from 142.250.207.69: seq=1 ttl=110 time=228.521 ms 64 bytes from 142.250.207.69: seq=2 ttl=110 time=260.954 ms 64 bytes from 142.250.207.69: seq=3 ttl=110 time=276.700 ms ^C --- gmail.com ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss
root@Filogic-GW:~# iptables -L -v -n | grep map0
0 0 ACCEPT 47 -- map0 * 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- map0 map0 0.0.0.0/0 0.0.0.0/0
0 0 wan2lan all -- map0 br106 0.0.0.0/0 0.0.0.0/0
0 0 wan2lan all -- map0 brlan1 0.0.0.0/0 0.0.0.0/0
0 0 lan2wan all -- br106 map0 0.0.0.0/0 0.0.0.0/0
0 0 lan2wan all -- brlan1 map0 0.0.0.0/0 0.0.0.0/0
0 0 wan2lan all -- map0 br403 0.0.0.0/0 0.0.0.0/0
110 9240 wan2lan all -- map0 brlan0 0.0.0.0/0 0.0.0.0/0
0 0 lan2wan all -- br403 map0 0.0.0.0/0 0.0.0.0/0
587 52500 lan2wan all -- brlan0 map0 0.0.0.0/0 0.0.0.0/0
root@Filogic-GW:~#
root@Filogic-GW:~# ip6tables -L -v -n | grep map0
212 58132 wan2lan all erouter0 map0 ::/0 ::/0
1086 216K lan2wan all map0 erouter0 ::/0 ::/0
root@Filogic-GW:~#
chtspc0041@chtspc0041-OptiPlex-7010:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=248 time=5.26 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=248 time=5.56 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=248 time=7.65 ms ^C --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 5.260/6.160/7.653/1.063 ms chtspc0041@chtspc0041-OptiPlex-7010:~$ ping -4 gmail.com PING gmail.com (142.250.207.69) 56(84) bytes of data. 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=2 ttl=109 time=494 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=3 ttl=109 time=312 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=4 ttl=109 time=543 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=5 ttl=109 time=364 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=6 ttl=109 time=182 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=7 ttl=109 time=200 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=8 ttl=109 time=1006 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=9 ttl=109 time=59.2 ms 64 bytes from hkg12s32-in-f5.1e100.net (142.250.207.69): icmp_seq=10 ttl=109 time=605 ms ^C --- gmail.com ping statistics --- 10 packets transmitted, 9 received, 10% packet loss, time 9011ms
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
RFC7599: https://www.rfc-editor.org/rfc/rfc7599
Mapt simulation tool: https://map46.cisco.com/
Jool official: https://www.jool.mx/en/map-t.html
Mapt physical setup link: MAP-T Physical setup
1 Comment
Manigandan Gopalakrishnan
Apr 09, 2026Simple and clear documentation.