Cable modems get their operational parameters using config files. These config files define what the internet subscription will be, what additional services are activated and other configuration details. This blog post will get you started creating your own modem config file.

What’s a config file

The config file is sent to the cable modem as part of the provisioning process at boot time, using the TFTP protocol.

It’s a binary file consisting of different TLV (type-length-value) encodings. The value of a TLV can again be a TLV, thus creating a tree-like structure of TLVs and sub TLVs.

To create a config file, you can use a convenient textual form and leave the encoding to a software tool, e.g. our freely available DOCSIS config file editor.

The essentials

At the very least, these TLVs need to be present:

  • Network Access Control: enabling or disabling network access for the customer using the cable modem
  • Upstream Service Flow: describing how packets will be sent upstream (from the modem into the network)
  • Downstream Service Flow: describing how packets will be sent downstream (from the network to the modem)

Example:

Network Access Control:on
Upstream Service Flow Encodings
  Service Flow Reference:1
  Quality of Service Parameter Set:provisioned admitted active
Downstream Service Flow Encodings
  Service Flow Reference:2
  Quality of Service Parameter Set:provisioned admitted active

There, you’re done. You’ve just created a working config file! Note that this is the config file you start with when launching the DOCSIS config file editor. Two other necessary TLVs, CM and CMTS MIC are added automatically by the editor.

Adding a speed profile

All done? Well… there are a few shortcomings to this config file. It grants unlimited internet speed, to name but one.

So we need additional sub TLVs to refine the service flows. To create a 160/10 Mbps downstream/upstream internet subscription for example, you can use the following service flow configuration:

Upstream Service Flow Encodings
  Service Flow Reference:1
  Quality of Service Parameter Set:provisioned admitted active
  Upstream Maximum Sustained Traffic Rate:10000000
  Maximum Traffic Burst:10654
Downstream Service Flow Encodings
  Service Flow Reference:2
  Quality of Service Parameter Set:provisioned admitted active
  Downstream Maximum Sustained Traffic Rate:160000000
  Maximum Traffic Burst:10654

The Maximum Sustained Traffic Rate limits the speed, while the Maximum Traffic Burst setting allows tweaking the observed latency.  You can read the gory details, including a lot of other service flow encodings in the MULPI spec, Annex C.

Adding additional services

With our internet service completed, it’s time to add other services.

For a voice service e.g. the signaling packets (used to set up a call) need a higher priority than the internet packets. The actual voice packets will use a dynamically created service flow, so we don’t need to worry about those in our config file.

Let’s create the additional service flows (note the unique reference numbers):

Upstream Service Flow Encodings
  Service Flow Reference:3
  Quality of Service Parameter Set:provisioned admitted active
  Traffic Priority:7
Downstream Service Flow Encodings
  Service Flow Reference:4
  Quality of Service Parameter Set:provisioned admitted active
  Traffic Priority:7

Traffic Priority ranges from 0 to 7 (higher is more priority). Therefore these service flows will get priority over the internet service flows (with a default priority of 0).

Adding a classifier

To make sure that the voice signaling packets will use those newly defined service flows, and not the internet service flows, we add classifiers that map or “classify” a certain packet to a certain service flow, e.g. for an NCS-based VoIP service:

Upstream Packet Classification Encoding
  Classifier Reference:1
  Service Flow Reference:3
  IP Packet Classification Encodings
    IP Protocol:17
    TCP/UDP Source Port Start:2427
    TCP/UDP Source Port End:2427
    TCP/UDP Destination Port Start:2427
    TCP/UDP Destination Port End:2427
Downstream Packet Classification Encoding
  Classifier Reference:2
  Service Flow Reference:4
  IP Packet Classification Encodings
    IP Protocol:17
    TCP/UDP Source Port Start:2427
    TCP/UDP Source Port End:2427
    TCP/UDP Destination Port Start:2427
    TCP/UDP Destination Port End:2427

The modem will now classify upstream UDP packets originating from and destined to port 2427 on the service flow with reference 3, which is our high-priority service flow. Likewise, the CMTS will classify the downstream voice signaling packets on service flow with reference number 4.

All packets that are not matched by a classifier are put on the primary service flow, this is the first service flow that is encountered in the config file.

Adding SNMP access

A lot of operators are still using SNMPv2 as the main protocol to remotely manage the modems. A number of TLVs are available for easy configuration of this SNMP coexistence:

SNMPv1v2c Coexistence Configuration
  SNMPv1v2c Community Name:private
  SNMPv1v2c Transport Address Access
    SNMPv1v2c Transport Address:10.10.10.0/0
    SNMPv1v2c Transport Address Mask:255.255.255.0/0
  SNMPv1v2c Access View Type:read-write
  SNMPv1v2c Access View Name:docsisManagerView

These settings will allow SNMP v1/v2 read-write access from a management station within the 10.10.10.0/24 subnet to all the MIBs in the docsisManagerView (defined in the OSS spec, basically everything) using community string private.

What’s next?

Glueing the pieces from the previous paragraphs together, you’ve created an SNMPv2 manageable cable modem with a 160/10 internet subscription and high-priority voice signaling.

Other services (like e.g. eRouter or L2VPN) or configuration options (like filters, software upgrade parameters or vendor specific settings) can simply be added to this config file. Annex C of the MULPI spec gives a full overview of the possible TLVs in a config file.

Comments

I see Euro DOCSIS support but what about US DOCSIS support?
Hi John. Basically, (US) DOCSIS and EuroDOCSIS config files are the same. So our config file editor supports both.
Hello,
i created a cable modem config file i need but how to make it work now (how to make mondem read that file, ty.
Hi Luja,
The operator controls the config file a modem will get at boot time through the provisioning process (it's a DHCP option).
There is no need to add "End of File" marker in the end? Cisco specs for config files says "the configuration file MUST have an "End of File" marker. This in done by a data maker, the values MUST be ff.. "
Hi Alex,
Yes, an End of File marker (0xFF) needs to be present, as you can see in the first paragraph ("What’s a config file"). The Excentis Config File Editor will automatically add the EoF (or End-Of-Data EOD) marker to your file when you save it. It also automatically adds the CM and CMTS MICs, you also don't need to specify those in the GUI editor.
We are a small private cable operator (PCO) in US, and we are using wireless cable modems. We will like to set some parameters using the CM config file for wireless on the cable modem... e.g. wifi channel and SSID and enable remote access. How do we do that using the config file ? Do you have a sample config file you can provide.

Thanks for all your great work!
Hi Carl,
Configuring wireless on the cable modem is typically done using MIBs, either vendor specific or e.g. using the CLAB-WIFI-MIB. You can add those MIBs to the config file using TLV-11 (SNMP MIB Object).
Example, to configure the SSID name:
SNMP MIB Object(clabWIFISSIDName.10101):1.3.6.1.4.1.4491.2.5.1.1.4.1.5.10101, Octet String, MySSID
Ok let's say I'm about to piece together the config file from this information. How does one get it to the modem and upload/install/place the file on the modem? And where do I put it?
Hi Jesse,
Fetching the config file is part of the provisioning process controlled by the operator. So, once you've created a config file, you (as an operator) put in on a tftp server and configure the dhcp server to include the tftp server address and file name in the modem's dhcp options. Usually, these functions (dhcp, tftp) are integrated in provisioning server systems.
So the modem gets the config file name from its dhcp options and then fetches it using tftp. Next, the modem sends the contents of the config file to the CMTS in the registration process, thus putting the settings into action.
Hi I am trying to enable DUT filtering on a basic docsis config file to have the CM work on a TLS (transparent LAN service) setup, any guidance on doing so is greatly appreciated!
thanks
Carlos
Hi Carlos,
That's TLV 45, to generally enable DUT filtering, simply add

Downstream Unencrypted Traffic Filtering
DUT Control:on

to your config file.
Hello

I work in French Guyane with operateur telecom GUYACOM , I take care of the network HFC in Cayenne , now i work in projet DOCSIS with Teleste and i have probleme with configuration the file for configuraiton DHCP .
do you can help me please for this problemes .$

thank you
Hi Nadioui,
Thanks for your question. We will get in touch with you to see what we can do to help you out.
Hi,
How can I specify certicficate/mfgcvcdata for modem update using Excentis?
Hi Cristian,
You can use TLV 32 (Manufacturer Code Verification Certificate) for that. Easiest way is to add the CVC file using the GUI.
Hello again David,
Thanks for last time, it's working :), but now I can't set the username and password for a Technicolor/Thomson modem TC7210. Could you help me with this one also? Thanks in advance :)
Best regards,
Cristian
Hi Cristian,
That's typically done using TLV43 (Vendor Specific Extension Field). For the exact encoding there, you'll need to check with Technicolor/Thomson, since this field is -as it says- vendor specific.
Another option would be to use TLV11 (MIB) and add the vendor proprietary MIB.
Hi to all
I am facing a problem with the VOIP.
I use Cable Modems CBN CH6541e / CH6643e on Motorola BSR 64000 CMTS.

Are there any general/specific MIBs for these models in order to negotiatie and/or manually specify the codec i want to use for SIP.

For eg. i want to specify codec PCMA.
Thank you for your time.

Endrit.H
Hi Endrit,
The voice parameters are configured using the EDVA config file, not the modem config file. We have a separate blog post on that:
https://www.excentis.com/blog/packetcable-20-edva-config-files
I need to update the speed in bootfile qbp.cfg , please let me know how
I can download this bootfile and update the speed. Upstream and Downstream values.

Thanks in Advance.
Hi Sastivel,
Once you've updated the speed values in the configuration file, you need to upload it to the TFTP server and reboot the modem, so that it fetches the new bootfile containing the new speed values.
Thanks for your response David, the file which I mentioned "bootfile qbp.cfg" is placed in router or Server or CMTS I'm not sure about it, but I'm able to see the file name in router config steps,

So please advice how I can download this file "bootfile qbp.cfg" ?
Hi Sastivel,
The filename is in the DHCP message towards the CM. The file itself is placed on the TFTP server, where the CM will fetch it after it completes its DHCP cycle.
I work with CM CISCO DPC3008, they are in bridge mode, I need them not to do it. I need you to assign a different IP range on the client side. Thank you
Hi Marcelo,
If your CM supports the eRouter spec, you can configure it using the eRouter TLVs in the CM config file, e.g. to put it into IPv4 router mode:
eRouter Configuration Encodings
eRouter Initialization Mode Encoding:IPv4

If your CM does not support the eRouter spec, you'll need to look into vendor specific MIBs to do so in the config file. Same for changing the IP range on the client side.
Thanks David for the clarification, Why docsis config file editor not allowing to update the downstream value more than 55216000.
Hi Sastivel,
That limitation is present only in the DOCSIS 1.0 Class of Service encoding. That was the very first version of DOCSIS and downstream speeds were indeed physically limited to that value.
Thanks for the clarification it's really helpful, we have currently 50Mbps Output Line, But with these values we can only able to transmit up to 3Mbps via CMTS, we have checked in the main line and CPE's.

The current Values in the Server as follows:
*Euro-DOCSIS 1.0 Class of Service Configuration*
Class ID:1
Maximum Downstream Rate:55216000
Maximum Upstream Rate:10240000
Upstream Channel Priority:7
Class-of-Service Privacy Enable:0

We are updating in Arris Correnerstone CMTS docsis 1.1

Thanks a lot for your help.
i am a lan technician and new to the CMTS for forgive what may be an obvious question. my client current has .cm configuration files in their CMTS since network is so small. how can i use your Docsis configuration tool to define new configuration files. for example I want to enable SNMP on the cable modem and saw your example. but I'm not sure if i can simply copy and paste your config example into the CMTS. thanks
Hi Tony,
So you mean that the CMTS is acting as provisioning system (or at least TFTP server) as well? You can't simply copy-paste, since config files are binary, so you'll need to write the binary version (with added integrity checks), but you can do that with our DOCSIS Configfile Editor, yes.
I work with an ISP and I have built a config file that we are going to be using with the CM1000 on D3.1 plant, but I need to setup Remote management credentials. I'm able to hit the CM1000 remotely via the mgmt IP, but the credentials I use locally to login do not work. I would like to setup a password via the config file.
For DPoG its the same?
Hi Jonathan, as already said in the support portal, you need a private mib for that.
Hi Pablo, what exactly do you mean?
Hi Guys, here it is my question, how can we enable syslog messages in a cable modem in otder to be sent to a CMTS? I know that SNMP notification and syslog message can be set in the CM's configuration file. Do you have a exaple?
Hi Raul,
This can be configured using MIBs, and MIBs can be added in the configfile using TLV-11.
As an example, for the syslog server, this would look like the following
(ipv4 10.0.0.1 address):
SNMP MIB Object(docsDevEvSyslogAddressType.0):1.3.6.1.2.1.69.1.5.9.0,
Integer, 1
SNMP MIB Object(docsDevEvSyslogAddress.0):1.3.6.1.2.1.69.1.5.10.0, Octet String, 10.0.0.1
Hi David, I am trying to get some Arris (TG1652)modem in Lan Pass Thru mode, by means of the config file via eRouter MIB Objet. Seem the command is not accepted, but config file is loaded. SNMP command via MIB browser works. Any idea what could be the reason?
Is the line eRouter SNMPv1v2c Coexistence Configuration neede in the config file in this case?
Hi Mario,
Adding
eRouter Configuration Encodings
eRouter Initialization Mode Encoding:Disabled
to your modem config file should be enough.
There are some exceptions, please check chapter 6 (eRouter initialization) of the eRouter spec (CM-SP-eRouter-I20-190515).
Hi,
we are small ISP in Slovakia. I need to help with a specific problem. We used CM Cisco CM3010 and Arris CM820S combinated with old models arris cm550B in our docsis networks. If I am testing speed behind the CMTS with PC plug direct to a docsis 3.0 modem, there is about 120-160Mbps downsteam with 8channels bonding with DS SNR more than 42, ping latency about 13ms - This is a maximum speed limit if CMTS 3.0 is behind the microwave radio (we used Alcoma, SIAE, Ericsson). If i connect CMTS direct in our switch in server room (without microwave), there is speed more than 300Mbps with similar docsis parameters. But if i test a speed behind a microwave (before cmts), the speed is ok, full speed of microwave capacity - like 660Mbps, 2ms ping. Please, where may be a problem? We try to many changes in cm file, but problem still occurs.
Thanks
Andy

Add new comment