Hello all,
Getting cable modems to work is a piece of cake for me. Getting Analog Telephone Adapters to work with Asterisk over cable modems is easy for me too. For some reason, I am having troubles with the EMTAs specifically the Arris TM502G. The funny thing is that I have access to Arris and ALL of the documentation. I have the cable modem part working fine. The thing I can't figure out is how to tell the Linux dhcpd.conf to send DHCP option 122 to the cable modem part of the TM502G to trigger the dhcp/tftp process of its MTA. Can anyone give me some clues on this?
Thanks,
Eric
Jus an FYI that the CMTS 1000 is 1.0 and will not allow for priotritization of VoIP traffic. Are you able to sell service with little to no QOS?
Just curious
Hi,
QoS can be handled at the router level too. Also, it's actually a CMTS 1500.
Thanks,
Eric
If you do, I may have a solution that does not use Option 122.
Hello,
Please don't keep it a secret.
Thanks,
Eric
We specify two subinterfaces in the Cadent 3 CMTS. This allows us to basically have two distinct DHCP Helpers. We create a scope for thye CM on one subnet and another for the MTA.
Simple DHCP setup, twop subnets, two scopes, no Option 122.
option CableLabs-Client-Configuration code 122 = array of integer 8;
option CableLabs-Client-Configuration 1, 4, NN, NN, NN, NN;
option CableLabs-Client-Configuration 2, 4, NN, NN, NN, NN;
This is for a Primary and Secondary DHCP server with IP addresses of NN, NN, NN, NN (each set is differnt)
I did it like this (some of the options are actually not needed, but for the sake of compliancy with i-dunno-which-rfc they're there):
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, ip-address };
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 = boolean;
option docsis-mta.timer code 8 = integer 8;
option docsis-mta-pkt code 122 = encapsulate docsis-mta;
shared-network something {
option time-servers ;
option time-offset 3600;
option log-servers {ip of the syslog serve};
option docsis-mta.dhcp-server-1 {ip of the MTA dhcp server, probably the same one you're configuring now};
option docsis-mta.provision-server 1 {ip of the MTA tftp server};
Another thing worth mentioning is, MTAs MUST have a FQDN, no "special characters" like underscores and such (took me 3 days to troubleshoot that), and the command, if it's not set globally, should be set at least individually, is "use-host-decl-names on". Then all you do is set up a host statement with the mac, filename and ip, separate from the modem, for the MTA part:
host vvoi-user243 { hardware ethernet 00:15:a2:dd:13:86; fixed-address 192.168.14.243; filename "voip/602164.mta"; use-host-decl-names on; }
That should do the trick.
BR
Neven
Neven,
Thanks to your post I've been able to get our TM502G's up and registered with the Asterisk proxy.
Problem is now that whenever I send a call to the MTA it refuses with a 480 Temporarily Unavailable message. When I try to use the phone attached to the MTA it never sends the call to Asterisk.
The MTA is registered with Asterisk however.
Any thoughts?
Thanks
Mark
I assume you are using your arris modem with sip firmware rather than using it with packet cable firmware (if your not then I know someone who has Asterisk working in Packetcable mode as well)
In order to work with Asterisk you need to add the following SNMP Mib setting to your cable modems config file
.1.3.6.1.4.1.4115.1.3.3.1.2.3.6.0 (aka arrisMtaDevProvMethod)
set it to 9 (aka gupiMacMta) which uses the mac address of the device as the MTA config file name i.e. 001122334455.bin
Obviously you will need the actual .bin file on your asterisk server.
This is very easy to do with Arris PacketAce software contact their support to get access to it if you do not have.
As far as dhcpd.conf goes
Here is my working sanitized dhcpd.conf file
# Define option 122
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;
# I globally set option 122 settings just in case
option docsis-mta.dhcp-server-1 192.168.2.40;
option docsis-mta.provision-server 0 "\003mta\006domain\003net\000";
option docsis-mta.krb-realm-name "\005BASIC\0011\000";
# Define a class for cable modems
# looks at the vendor-class-identifier for the string "docsis"
# spawn with option agent.remote-id; is used because the cmts is acting as a proxy for the dhcp request and if we used the mac it would be the CMTS mac not customer mac.
# only option 122 setting needed is dhcp-server-1 dhcp-server-2 is optional
# the modem config files are defined further down.
class "CM" {
match if substring(option vendor-class-identifier,0,6) = "docsis";
spawn with option agent.remote-id;
vendor-option-space docsis-mta;
default-lease-time 604800;
max-lease-time 604800;
min-lease-time 302400;
option time-offset -21600;
next-server 192.168.0.40;
option tftp-server-name "192.168.0.40";
option time-servers 192.168.0.33;
option log-servers 192.168.0.40;
option domain-name "mta.domain.net";
ddns-updates off;
option routers 10.1.6.1;
option subnet-mask 255.255.0.0;
option docsis-mta.dhcp-server-1 192.168.0.40;
}
# Define a class for MTAs
# looks at the vendor-class-identifier for the string "pktc1"
# spawn with option agent.remote-id; is used because the cmts is acting as a proxy for the dhcp request
# MTAs want FQDNs so first we set the domain name
# option domain-name "mta.domain.net";
# then we set the host name
# option host-name = host-decl-name; <- which is the mac address
# then you need to set the option 122 settings
# notably missing here is the other option 122 settings
# we use the Arris modems with sip firmware which have much of those settings in config files rather than dhcp.
class "MTA" {
match if substring(option vendor-class-identifier,0,5) = "pktc1";
spawn with option agent.remote-id;
default-lease-time 21600;
max-lease-time 21600;
min-lease-time 10800;
option domain-name "mta.domain.net";
ddns-updates off;
option domain-name-servers 66.218.245.13, 66.218.245.10;
option subnet-mask 255.255.0.0;
option routers 10.1.6.1;
option log-servers 192.168.0.40;
option time-servers 192.168.0.33;
option tftp-server-name "192.168.0.40";
next-server 192.168.0.40;
option time-offset -18000;
option host-name = host-decl-name;
option docsis-mta.provision-server 0 "\003mta\006domain\003net\000";
option docsis-mta.krb-realm-name "\005BASIC\0011\000";
}
# Define our servers subnet just so dhcpd knows about it
subnet 192.168.0.32 netmask 255.255.255.224 {
}
# now we setup our shared network
shared-network cableplant {
# this subnet is the one DHCP requests come accross to the server i.e. the IP of dhcp server is in this subnet
subnet 192.168.1.0 netmask 255.255.255.0 {
}
# This is our modem and mta pools
subnet 10.1.0.0 netmask 255.255.0.0 {
pool {
range 10.1.60.2 10.1.64.254;
allow members of "MTA";
deny unknown-clients;
}
pool {
range 10.1.65.2 10.1.69.254;
allow members of "CM";
deny unknown-clients;
}
}
}
# we use groups to define service levels for the modem
group BroadbandPlus {
filename "BroadbandPlus.bin";
option bootfile-name "BroadbandPlus.bin";
}
# We have a Voice only tier as well with the Ethernet disabled.
group VoipOnly {
filename "VoipOnly.bin";
option bootfile-name "VoipOnly.bin";
}
#here is what CM and MTA entries look like.
# these entries don't exist in our dhcpd.conf because
# we use OMAPI to update the dhcp server while it is running.
# but this is what they look like
## MTA
# nothing special except the mac address
host nh47ab20ee08ad7930 {
hardware ethernet 00:15:a4:85:15:0c;
}
## CM
# just need mac address
# and Group name for service level
host nh47a1fed108891ba0 {
hardware ethernet 00:15:a4:2b:31:4d;
group "BroadbandPlus";
}
Hello,
I do thank you for your help. This is the farthest we've ever been on this. However, we are stuck again. The CM is online and the MTA is registered to the Asterisk server. When we try to call the MTA we get this:
-- Executing [7@default:1] Dial("SIP/sipura1-081ed660", "SIP/MTA") in new stack
-- Called MTA
-- Got SIP response 480 "Temporarily Unavailable" back from 192.168.0.44
-- SIP/MTA-081f15c8 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
== Auto fallthrough, channel 'SIP/sipura1-081ed660' status is 'CONGESTION'
When we call out from the phone on the MTA, we just get a fast busy no matter what we dial.
Any more ideas?
Eric
Make sure in your MTA sip Configuration file that Nat = no Some asterisk distros have that default to yes which has caused similar probs for me in the past.
BTW what does the Web interface on the CM say for the MTA status?
If it still does not work could you post your Mta config sanitized of course.
Hello,
The web interface says "Enabled" and "Up" for the MTA. Here is my MTA config file:
TelephonyConfigFileBeginEnd = 1
SnmpMib = pktcMtaDevEnabled.0 true
SnmpMib = ifAdminStatus.9 up
SnmpMib = pktcNcsEndPntConfigMWD.9 2
SnmpMib = sipCfgPortUserName.1 "MTA"
SnmpMib = sipCfgPortDisplayName.1 "MTA"
SnmpMib = sipCfgPortLogin.1 "MTA"
SnmpMib = sipCfgPortPassword.1 "sipura"
SnmpMib = ifAdminStatus.10 up
SnmpMib = sipCfgPortUserName.2 "MTA2"
SnmpMib = sipCfgPortDisplayName.2 "MTA2"
SnmpMib = sipCfgPortLogin.2 "MTA2"
SnmpMib = sipCfgPortPassword.2 "sipura"
SnmpMib = pktcNcsEndPntConfigMWD.10 2
SnmpMib = sipCfgPortFeatureSettings.1 hexstr: 2
SnmpMib = sipCfgPortFeatureSettings.2 hexstr: 2
SnmpMib = sipCfgProxyAdr.0 "192.168.0.12"
SnmpMib = sipCfgProxyType.0 ipv4
SnmpMib = sipCfgRegistrarAdr.0 "192.168.0.12"
SnmpMib = sipCfgRegistrarType.0 ipv4
SnmpMib = sipCfgSipFeatureSwitch.0 hexstr: 0.80.0.0
VendorSpecific = 00.00.CA (ARRIS)
SIPDigitMap = "[2-9]xxxxxx[t#]|[2-9]xx[2-9]xxxxxx|[01][2-9]xx[2-9]xxxxxx|101xxxx[2-9]xx[2-9]xxxxxx|101xxxx[01][2-9]xx[2-9]xxxxxxx|[2-9]x#|#[2-9]xxx[2-9]xxxxxx|101xxxx[01][2-9]xx[2-9]xxxxxxx|[2-9]x#|#[2-9]x"
SnmpMib = sipCfgProvisionedCodecArray.0 "G729;PCMU"
VendorSpecific = 00.00.CA (ARRIS)
SIPDigitMap = "8888|0[t#]|00|101xxxx0[t#]|01[2-9]XXXXXXX.[t#]|101xxxx01[2-9]XXXXXXX.[T#]|011xxxxxxx.[t#]|101xxxx011xxxxxxx.[t#]|[2-9]11|[01][2-9]11|101xxxx[2-9]11|101xxxx[01][2-9]11|*xx|11xx|[2-9]xxxxxx[t#]|[01][2-9]xxxxxx[t#]|101xxxx[2-9]xxxxxx[t#]|101xxxx[01]"
SnmpMib = sipCfgPacketizationRate.0 twentyMilliSeconds
SnmpMib = ppCfgMtaCountryTemplate.0 northAmerica57
SnmpMib = sipCfgCallerIdSendCapability.0 hexstr: FF.FF.FF.FC
VendorSpecific = 00.00.CA (ARRIS)
SIPDialFeatMap = "*70,1170, ,CALWD|*77,1177, ,anncj|*87,1187, ,ANCJD|*78,1178, ,clwpd|*72,1172, ,CALFV|*79,1179, ,CFFDS|*65,1165, ,CIDPB|*82,1182, ,CIDTE|*67,1167, ,CIDTB|*69,1169, ,CALRT|"
TelephonyConfigFileBeginEnd = 255
Thanks for all of your help,
Eric
Not sure what the problem is from that
Ours look very similar, but I noticed on my proxy and registrar line I have the port as well as the IP separated by a semicolon
SnmpMib = sipCfgRegistrarAdr.0 "192.168.0.1;5060"
These lines have to due with caller id
SnmpMib = sipCfgMediaLoopbackNumber.0 "9119119111"
SnmpMib = sipCfgPacketLoopbackNumber.0 "9119119111"
My sipFeatureSwitch line is a little different too
SnmpMib = sipCfgSipFeatureSwitch.0 hexstr: 4.80.80.0
And our codec line is a bit different
SnmpMib = sipCfgProvisionedCodecArray.0 "PCMU;telephone-event"
Here is mine sanitized of course.
TelephonyConfigFileBeginEnd = 1
VendorSpecific = 00.00.CA (ARRIS)
SIPDigitMap = "*[0-4]x|*50x.*x.[T#]|*5[356]x.[T#]|*5[47]|*6[1359]|*6[27]x.[T#]|*7[02]x.[T#]|*7[389]|*74xx*x.[T#]|*75xx|*80*x.*x.*x.[T#]|*82x.[T#]|*8[89]|*9[02689]x.[T#]|*93|"
VendorSpecific = 00.00.CA (ARRIS)
SIPDigitMap = "0[T#]|011x.[T#]|101x.[T#]|1411|[0-1][2-9]xxxxxxxxx|[2-9]11|[2-9]xxxxxx[T#]|[2-9]xxxxxxxxx"
SnmpMib = pktcMtaDevEnabled.0 true
SnmpMib = ppCfgMtaTeleSyslogServIpAddr.0 10.10.10.10
SnmpMib = sipCfgPortUserName.1 "5554443333"
SnmpMib = sipCfgPortDisplayName.1 "5554443333"
SnmpMib = sipCfgPortLogin.1 "5737746322"
SnmpMib = sipCfgPortPassword.1 "692427618"
SnmpMib = pktcNcsEndPntConfigMWD.9 2
SnmpMib = ifAdminStatus.9 up
SnmpMib = sipCfgProxyAdr.0 "192.168.0.1;5060"
SnmpMib = sipCfgProxyType.0 ipv4
SnmpMib = sipCfgRegistrarAdr.0 "192.168.0.1;5060"
SnmpMib = sipCfgRegistrarType.0 ipv4
SnmpMib = sipCfgSipFeatureSwitch.0 hexstr: 4.80.80.0
SnmpMib = sipCfgProvisionedCodecArray.0 "PCMU;telephone-event"
SnmpMib = sipCfgPacketizationRate.0 twentyMilliSeconds
SnmpMib = sipCfgMediaLoopbackNumber.0 "9119119111"
SnmpMib = sipCfgPacketLoopbackNumber.0 "9119119111"
TelephonyConfigFileBeginEnd = 255
If your still having trouble Asterisk is a supported backend by Arris, they may be able to help you further.
Hi,
Question, how much does the FQDN stuff have to do with anything? I guess a peek at sterilized copies of your sip.conf and cable modem config file would answer my question. You have been very helpful. Those two files are the only things I haven't completely changed.
Thanks,
Eric
For the MTA to work it needs a FQDN, It is an absolute necessity. It does not have to be legit or resolve but it must have one.
I accomplish it with these two lines in dhcpd.conf
option host-name = host-decl-name;
option domain-name "mta.domain.net";
This makes the fqdn mac_address.mta.domain.net
When I get to office on Monday i will get you a modem config.
Hi,
I'm having exactly the same problem as Erik. I've been trying to make TM502B with sip firmware work with asterisk 1.4. After booting the emta would let you make some calls, but after would shurely start to malfunction: fast beep when you pick up the phone and "480" error on an incomming call.
Then I've downgraded asterisk to 1.2. The problem occurance frequency has diminished greatly, but has not disappeared completely.
Please, if someone have found a reason/solution of/for this problem, post it on this forum...
Hi,
I really believe it's in either the sip.conf or the cable modem config file. I would be eternally greatfull if I could see copies of yours. It's weird. The MTA registers with Asterisk, but I can't make calls in or out. One red flag is a SIP message from the MTAs web interface that says:
Call Signalling LOG 15
2008-2-28,13:44:27.0
-MSG-> Message Received
SIP/2.0 401 Unauthorized
From: 12345;tag=94af8d18-c0a80028-13c4-45026-1e-7b1b121d-1e
To: 12345;tag=as02e3011b
Call-ID: 94af2580-c0a80028-13c4-45026-1e-5ab3aa8f-1e
CSeq: 9 REGISTER
Via: SIP/2.0/UDP 192.168.0.40:5060;received=192.168.0.40;branch=z9hG4bK-143-4ef7f-769356da
User-Agent: Asterisk PBX
Supported: replaces
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY
WWW-Authenticate: Digest realm="asterisk",nonce="136480ee",algorithm=MD5
Content-Length: 0
This sight gives a couple of clues too:
http://forum.sipphone.com/viewtopic.php?p=10685&sid=9855e3f43ac54c27ef1c...
Thanks,
Eric
NetworkAccess = 1
SnmpMib = arrisCmDevHttpWanAccess.0 advanced
SnmpMib = docsDevSwAdminStatus.0 allowProvisioningUpgrade
MaxCpeAllowed = 3
MaxClassifiers = 20
PrivacyEnable = 1
SnmpMib = arrisMtaDevProvMethodIndicator.0 gupiMacMta
UpgradeServer = 192.168.1.40
UpgradeFileName = "TS050237C_112907_NA.MODEL_4_5_6.SIP.img"
ManufacturerCVC = hexstr: Hexcode
BaselinePrivacy =
AuthorizeWaitTimeout = 10
ReauthorizeWaitTimeout = 10
KekGraceTime = 600
OpWaitTimeout = 10
RekeyWaitTimeout = 10
TekGraceTime = 600
AuthorizeRejectWaitTimeout = 60
SAMapWaitTimeout = 1
SAMapMaxRetries = 4
UpstreamServiceFlow =
SfReference = 1
SfQosSetType = 7
SfTrafficPriority = 1
SfMaxTrafficRate = 256000
SfSchedulingType = 2
SfRqTxPolicy = 138
UpstreamServiceFlow =
SfReference = 2
SfQosSetType = 7
SfTrafficPriority = 7
SfMaxTrafficRate = 256000
SfSchedulingType = 2
SfRqTxPolicy = 138
UpstreamPacketClassification =
PcReference = 2
PcServiceFlowReference = 2
PcIpClassification =
PcIpDestAddress = 192.168.1.4
PcIpProtocol = 257
PcIpDestMask = 255.255.255.255
PcActivationState = 1
DownstreamServiceFlow =
SfReference = 101
SfQosSetType = 7
SfTrafficPriority = 1
SfMaxTrafficRate = 1500000
DownstreamServiceFlow =
SfReference = 102
SfQosSetType = 7
SfTrafficPriority = 7
SfMaxTrafficRate = 256000
DownstreamPacketClassification =
PcReference = 102
PcServiceFlowReference = 102
PcRulePriority = 1
PcActivationState = 1
PcIpClassification =
PcIpProtocol = 257
PcIpSourceAddress = 192.168.1.4
PcIpSourceMask = 255.255.255.255
As for my SIP.conf file, my test bench network is in pieces, when it is reassembled next week I should be able to get you a sip.conf file.
It looks like a SIP config problem to me. If I had to guess that is where it would be.