You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Introduction 

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.

MAP-T High-Level Architecture


MAPT Configuration

Customer Edge: Enable/Disable MAPT feature with below distro's from build

DISTRO_FEATURES_append = " feature_mapt"
DISTRO_FEATURES_append = " nat46"

Border Relay: Setup done in ubuntu machine ( linux kernel 5.15 )
Installation
  1. sudo apt-get install isc-dhcp-server
  2. Open file /etc/dhcp/dhcpd.conf and update as below

    ddns-update-style none;
    default-lease-time 3600;
    max-lease-time 7200;
    authoritative;
    option custom-upstream-rate code 242 = unsigned integer 32;
    option custom-downstream-rate code 243 = unsigned integer 32;

    option domain-name "hsd.pa.crnrstn.comcast.net" ;

    subnet 10.42.0.0 netmask 255.255.255.0 {
        option routers 10.42.0.10;
        option broadcast-address 10.42.0.255;
        option domain-name-servers 1.1.1.1, 8.8.8.8;
        range 10.42.0.3 10.42.0.254;

    }

  3. Open file /etc/radvd.conf

    interface eth1 {
        AdvSendAdvert on;
        AdvManagedFlag on;
        AdvOtherConfigFlag on;

        prefix 2001:558:6013:100::/64 {
            AdvOnLink on;
            AdvAutonomous on;
        };

    };

  4. Open file  /etc/dhcp/dhcpd6.conf and update as below 

    ddns-update-style none;
    default-lease-time 3600;
    max-lease-time 7200;
    option dhcp-renewal-time 1800;
    option dhcp-rebinding-time 2880;
    option client-class-information code 97 = string;
    authoritative;
    option dhcp6.map-option code 95 = string;
    subnet6 2001:558:6013:0100::/64 {
        range6 2001:558:6013:0100::1000 2001:558:6013:0100::1fff;
        prefix6 2001:558:6013:0100:: 2001:558:6013:fe00:: /56;
        option dhcp6.map-option 00:59:00:16:00:08:18:c0:a8:14:00:30:20:01:05:58:60:13:00:5d:00:04:08:08:00:00:00:5b:00:09:40:00:64:ff:9b:00:00:00:00;
        option dhcp6.name-servers
        2001:4860:4860::8888,
        2001:4860:4860::8844;
    }

  5. Once all changes are done, restart the dhcpd and radvd service.
    sudo systemctl restart isc-dhcp-server
    sudo systemctl restart isc-dhcp-server6
    sudo systemctl restart radvd
    isc-dhcp-server status
    ● 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.

  6.  
Jool Installation
Jool Installation
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

Once build completed, below modules will be generated in respective paths, add those modules to kernel path

MAPT Modules
akhil@CHTSL00399:~/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


Datamodels


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 




  • No labels