I just recently noticed something interesting. I'm generating my config files using the open source docsis program that's on sourceforge. Recently a customer started complaining that his speeds were not running as high as they should, so i started looking at his modem to make sure it had the correct provisioning.
Through snmp, I can see that he is getting the correct config file, but I also see this:
IF-MIB::ifType.1 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.2 = INTEGER: docsCableMaclayer(127)
IF-MIB::ifType.3 = INTEGER: docsCableDownstream(128)
IF-MIB::ifType.4 = INTEGER: docsCableUpstream(129)
IF-MIB::ifType.5 = INTEGER: usb(160)
IF-MIB::ifSpeed.1 = Gauge32: 100000000
IF-MIB::ifSpeed.2 = Gauge32: 0
IF-MIB::ifSpeed.3 = Gauge32: 30341646
IF-MIB::ifSpeed.4 = Gauge32: 5120000
IF-MIB::ifSpeed.5 = Gauge32: 12000000
I've decompiled my config file and verified that it has the correct settings. The decompiled file is:
[code]
Main
{
NetworkAccess 1;
MaxCPE 4;
ClassOfService
{
ClassID 1;
MaxRateDown 1500000;
MaxRateUp 512000;
PrivacyEnable 0;
PriorityUp 3;
GuaranteedUp 0;
MaxBurstUp 1600;
}
SnmpMibObject iso.3.6.1.2.1.69.1.6.3.0 Integer 2 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.3.1 Integer 1 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.4.1 Integer 0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.5.1 Integer 3 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.6.1 Integer 2 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.7.1 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.8.1 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.9.1 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.10.1 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.11.1 Integer 17 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.14.1 Integer 135 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.15.1 Integer 139 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.2.1 Integer 4 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.3.2 Integer 1 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.4.2 Integer 0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.5.2 Integer 3 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.6.2 Integer 2 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.7.2 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.8.2 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.9.2 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.10.2 IPAddress 0.0.0.0 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.11.2 Integer 256 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.14.2 Integer 445 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.15.2 Integer 445 ;
SnmpMibObject iso.3.6.1.2.1.69.1.6.4.1.2.2 Integer 4 ;
/* CmMic 4469d2cb4ded3425074b25d653b01587; */
/* CmtsMic 0eaddc6e4fba1044e6e6d35d491f42c6; */
/*EndOfDataMkr*/
/* Pad */
/* Pad */
}
[/code]
So, is the speed reported by the ifspeed MIB the Max speed of the interface...not the max speed defined by the config file? If so is there a MIB that shows what speeds the modem is running at based on the config file? Does the config file I'm using look okay? I seem to remember running some benchmarking on a version of that file (with different up/down numbers), and it bench-marked right where it should have.
what did you use to poll or snmp get for the modem? if the modem is configured for 1.5 Mb down and 512k up, what does he get for speeds and where other pc's connected to the modem at the same time? configured for 4 pc's and shared bandwidth. other things to consider, the speed doesn't take into consideration the docsis overhead. should increase the 1.5 to 1.7 for example.
how many pc's are connected to the same upstream port, what is the modulation and channel width for the upstream port.
what is the modulation downstream and if it's a single unit instead of a chassis, what is the downstream modulation and total number of modems?
what do you use for a cmts? can you run a show cable modem svc-flow-id for example to confirm the modem's downstream and upstream speed? I would double the max bustup as well.
I polled the modem using netSNMP compiled under Linux (snmpwalk).
I started investigating because he was reporting that he was getting 500k down and 200k up, and we do have a config file in the system for those speeds. So I was making sure that the modem was being assigned the proper config file. Unfortunately, he rebooted his modem before I had a chance to look at it, so I'm not sure if he was somehow being assigned the wrong config when he was having the problems.
I didn't take the call directly...I just got the email describing the issue and started investigating. So I don't know if he has more then one CPE attached the modem. With this config, does the modem split the bandwidth evenly between each connected device? The only reason I have MaxCPE set to 4 is because we had a few customers who liked to switch computers around, but had modems that were having problems releasing the MAC cache, so we'd have to manually remove the modem from the CMTS every time. Upping MaxCPE to 4 fixed that.
I thought about docsis overhead, but I don't believe that it would be enough to cause a 60% drop in performance.
I'd have to check on the specifics of the upstream. I know the entire plant services 100 to 150 people which are load balanced across two upstream channels. I believe the upstream is running qpsk, but I can't quote the channel width. The CMTS is a BlonderTongue which is a rebadged EVR. To my knowledge is doesn't have an equivalent to the svc-flow-id command.
I( am leaning towards his modem just having been assigned the wrong config file because of all the people running his level of service, he was the only one that complained.
Not sure if this is helpful, but we ran into the same problem when we moved to our bsr64k. What it was was a missing command on the cmts - cable upstream 0 rate-limit and cable downstream 0 rate-limit. Without those commands, even if the modem takes the speed limits, the cmts won't limit. Hopefully this is the same issue and this was of some use.
Thanks
Since your using Docsis 1.0 the MIB you should be looking at is docsIf mib specifically the 1.3.6.1.2.1.10.127.1.1.3.1 OID. More information can be found Here
Also note that some CMTSes also offer the ability to see the Class of Service and/or the Service Flows (docsis 1.1+) attached to the modem.
for example on Cisco CMTSes if you use the command
show cable modem <ip or mac> qos
it will show you what they are provisioned for as well as what they are using in real time.