You are here

Arris TM602G NCS configuration

Forums: 

We're trying to deploy an Arris MTA using NCS firmware to a Cisco uBR7246VXR... provisioning is ISC DHCP. We're fighting an issue with how we want the cable modems and then the MTA to come online. We want the cable modem to grab a level of service config file under it's cable MAC address, and then the MTA to make it's own DHCP request under the MTA mac address and grab a file macaddy.mta

When we use the SNMPmib of arrisMTAProvMethodIndicator.0 gupiMacMta, the cable modem will boot, but the MTA never makes it's DHCP request. When we use .9 gupiMacMta, the cable modem boots, and the MTA makes a DHCP request, but it hangs on option 122.3 which is the provisioning server. I've seen multiple references to option docsis-mta.provision-server being either an IP address or a string. Which is it? Has anyone gotten a TM602G to work in this way?

Thanks.

gupiMacMTa only works for SIP so stay away from it. I just set this up for a system we have. Here is the relevent info you will need:

in dhcpd option docsis-mta.provision-server is a string in the following format

mta.domain.net becomes

option docsis-mta.provision-server 0 "\003mta\006domain\003net\000";
0 is the identifier in theory you can have multiple provisioning servers though I have only seen it set up with one
\003 is the length of mta
\006 is the length of domain
\003 is the length of net
\000 is null terminating the srting

dhcpd.conf snippet (modem)  Please Note I have a separate Modem dhcp server and a client DHCP server so some of the config is tailored that way so disreguard those parts if you have a all in one setup.

# Map option 122 values for booting packetcable Devices
option space docsis-mta;
option docsis-mta.dhcp-server-1 code 1 = ip-address;
option docsis-mta.dhcp-server-2 code 2 = ip-address;
option docsis-mta.provision-server code 3 = { integer 8, string };
option docsis-mta.as-req-as-rep-1 code 4 = { integer 32, integer 32, integer 32 };
option docsis-mta.as-req-as-rep-2 code 5 = { integer 32, integer 32, integer 32 };
option docsis-mta.krb-realm-name code 6 = string;
option docsis-mta.tgs-util code 7 = integer 8;
option docsis-mta.timer code 8 = integer 8;
option docsis-mta.ticket-ctrl-mask  code 9 = integer 16;
option docsis-mta-pkt code 122 = encapsulate docsis-mta;

class "CM" {
        # only match if first 6 chars of option 61 are docsis
        match if (substring(option vendor-class-identifier,0,6) = "docsis");      
        spawn with hardware;
}

# Match anything Else Only modems should be hitting this server so log any other devices that aren't CM or MTA
class "Unknown" {
        match if ((substring(option vendor-class-identifier,0,6) != "docsis") and (substring(option vendor-class-identifier,0,5) != "pktc1"));
        spawn with hardware;
#       log (info, concat("Unknown device hit modems DHCP Server Identifier given was: ", option vendor-class-identifier));
}

shared-network ModemPool {
        option tftp-server-name "192.168.143.13";
        option time-servers 192.168.136.1;
        option log-servers 192.168.143.13;
        next-server 192.168.143.13;
        # Time offset
        option time-offset -21600;
        # Subnet for Authorized Modems
        subnet 10.0.0.0 netmask 255.255.192.0 {
                option subnet-mask 255.255.192.0;
                option routers 10.0.0.1;
                pool {
                        deny unknown-clients;
                        range 10.0.0.10 10.0.61.254;
                        allow members of "CM";                      
                        deny members of "Unknown";
                        option domain-name "mta.domain.net";
                        option docsis-mta.dhcp-server-1 192.168.143.14;
                }
        }
}

dhcpd.conf (client/Mta)

# Map option 122 values for booting packetcable Devices
option space docsis-mta;
option docsis-mta.dhcp-server-1 code 1 = ip-address;
option docsis-mta.dhcp-server-2 code 2 = ip-address;
option docsis-mta.provision-server code 3 = { integer 8, string };
option docsis-mta.as-req-as-rep-1 code 4 = { integer 32, integer 32, integer 32 };
option docsis-mta.as-req-as-rep-2 code 5 = { integer 32, integer 32, integer 32 };
option docsis-mta.krb-realm-name code 6 = string;
option docsis-mta.tgs-util code 7 = integer 8;
option docsis-mta.timer code 8 = integer 8;
option docsis-mta.ticket-ctrl-mask  code 9 = integer 16;
option docsis-mta-pkt code 122 = encapsulate docsis-mta;

class "CM" {
        # only match if first 6 chars of option 61 are docsis
        match if (substring(option vendor-class-identifier,0,6) = "docsis");
        spawn with hardware;      
}

# Match Clients as determined by option 61
class "Client" {
        match if ((substring(option vendor-class-identifier,0,6) != "docsis") and (substring(option vendor-class-identifier,0,5) != "pktc1"));
        spawn with hardware;
}

# Match MTAs that Identify themselves as pktc1
class "MTA" {
        match if ((substring(option vendor-class-identifier,0,5) = "pktc1")  );        
        spawn with hardware;
}

shared-network ClientsBehindAuthedModems {
        # Subnet for Authorized Modems defined in Modem DHCP Server
        subnet 10.0.0.0 netmask 255.255.192.0 {

        }
        # MGCP MTAs
        subnet 192.168.140.0 netmask 255.255.254.0 {
                option subnet-mask 255.255.254.0;
                option routers 192.168.140.1;                
                pool {
                        range 192.168.140.2 192.168.141254;
                        deny unknown-clients;
                        allow known-clients;
                        allow members of "MTA";
                        deny members of "CM";
                        deny members of "Client";
                        option domain-name "mta.domain.net";
                        # our provider requires the hostname to start with a letter so I prepend mta to the macaddress so that it complies with their restriction
                        # this long piece of code just sets the hostname to the macaddress of the mta i.e. mta001122334455
                        option host-name = concat ("mta",suffix (concat ("0", binary-to-ascii (16, 8, "", substring (hardware, 1, 1))),2), "", suffix (concat ("0", binary-to-ascii (16, 8, "", substring (hardware, 2, 1))),2), "", suffix (concat ("0", binary-to-ascii (16, 8, "", substring (hardware, 3, 1))),2), "", suffix (concat ("0", binary-to-ascii (16, 8, "", substring (hardware, 4, 1))),2), "", suffix (concat ("0", binary-to-ascii (16, 8, "", substring (hardware, 5, 1))),2), "", suffix (concat ("0", binary-to-ascii (16, 8, "", substring (hardware, 6, 1))),2));
                        option docsis-mta.provision-server 0 "\003mta\006domain\003net\000";
                        option docsis-mta.krb-realm-name "\005BASIC\0011\000";
                        option domain-name-servers 192.168.143.14, 66.218.245.10;
                        option log-servers 192.168.143.14;
                        option bootfile-name "mta.bin";
                        filename "mta.bin";
                        option tftp-server-name "192.168.143.13";
                        next-server 192.168.143.13;
                }
        }
}

that should be enough info to get you to the next stage.