Creating DOCSIS Cable modem configuration files

Creating DOCSIS Cable modem configuration files


1)Basics

First one must obtain a program to convert text config files to binary DOCSIS format.

A free, console program is found here. Install as usual, problems with compilation are to be expected.. (docsis program last update was in 2006).

Another program can be downloaded from here(Windows only). It supports GUI and tree like view.

2) Basic settings

Our first file will just allow network acces and limit download/upload speeds:

Main
{
  NetworkAccess 1;            /* enables packet forwarding */
  GlobalPrivacyEnable 0;      /* disables BPI(encryption) */
  UsServiceFlow               /* creates an upstream service flow */
  {
    UsServiceFlowRef 1;       /* SF number */
    QosParamSetType 7;        /* activates SF */
    TrafficPriority 3;        /* sets medium priority */
    MaxRateSustained 128000;  /* max upstream transfer rate - 128kb/s */
  }
  
  DsServiceFlow               /* creates an downstream service flow */
  {
    DsServiceFlowRef 2;       /* SF number */
    QosParamSetType 7;        /* activates SF */
    TrafficPriority 3;        /* sets medium priority */
    MaxRateSustained 1000000; /* max downstream transfer rate - 1Mb/s */
  }

}  

Reader's comment: Please note that Ds/UsServiceRef numbers must be unique in cable modem config. 
On Cisco CM with same Ds and UsServiceFlowRef will end up with reject(c) status.

3) Adding advanced parameters

This file includes DS frequency, US channel number, 1 classifier, 3 service flows and limits user devices connected to modem.

Main
{
    NetworkAccess 1;                   /* enables packet forwarding */
    GlobalPrivacyEnable 0;             /* disables BPI(encryption) */
    DownstreamFrequency 410000000;     /* sets DS frequency to 410MHz */
    UpstreamChannelId 3;               /* sets 3rd US channel */
    MaxCPE 3;                          /* allows max 3 user devices */
    CpeMacAddress 00:00:00:00:00:00;   /* device #1 MAC is 00:00... */
    CpeMacAddress 11:11:11:11:11:11;   /* device #2 MAC is 11:11... */
    
    DsPacketClass
    {
      ClassifierRef 2;                 /* Classifier number */
      ServiceFlowRef 4;                /* forwards packets using SF #4 */
      RulePriority 3;                  /* Low priority classifier */
      ActivationState 1;               /* enables classifier */
      IpPacketClassifier
      {
        IpTos 0x0808ff;                /* matches ToS 0x08 */
      }
    }
    
    UsServiceFlow
    {
      UsServiceFlowRef 1;              /* SF number */
      QosParamSetType 7;               /* activates SF */
      TrafficPriority 3;               /* sets medium priority */
      MaxRateSustained 128000;         /* max transfer rate - 128kb/s */
    }
    
    DsServiceFlow
    {
      DsServiceFlowRef 2;              /* SF number */
      QosParamSetType 7;               /* activates SF */
      TrafficPriority 3;               /* sets medium priority */
      MaxRateSustained 1000000;        /* max transfer rate - 1Mb/s */
    }
    
    DsServiceFlow
    {
      DsServiceFlowRef 4;              /* SF number */
      QosParamSetType 7;               /* activates SF */
      TrafficPriority 3;               /* sets medium priority */
      MaxRateSustained 2000000;        /* max transfer rate - 2Mb/s */
    }
}
4) Global Parameters explained
NameDescriptionValues
NetworkAccess Controlls whether modem forwards data between USB/Ethernet and RF interfaces 0 - forwarding disabled
1 - forwarding enabled
GlobalPrivacyEnable Enables BPI(encryption on RF interface) 0 - disables BPI
1 - enables BPI
DownstreamFrequency Specifies downstream channel frequency in Hz Frequency in HZ
UpstreamChannelId Specifies the upstream channel number for that downstream Desired upstream channel number
MaxCPE Number of MAC addresses(computers, network devices), that modem will learn and forward packets from. This includes managed switches, APs etc. Number of such devices
CpeMacAddress Specifies MAC address of a computer/device. Number of CpeMacAddress commands must be less or equal MaxCPE. Usefull when you don't want the modem to learn Access point's IP address MAC address of one device
MaxClassifiers Maximum number of admitted and active upstream classifiers, that modem is allowed to have  
DocsisTwoEnable Enables DOCSIS 2.0 0 - disabled, 1 - enabled
GenericTLV Allows to enter TLVs unsupported by program Sytnax: TlvCode XXX TlvLength X TlvValue 0xXX
SwUpgradeFilename Specifies firmware filename on TFTP server. "filename"
SwUpgradeServer Specifies TFTP server IP address IP address
SnmpMibObject Specifies OID to set Syntax: OID type value
SnmpWriteControl    
MfgCVCData Producers certificate used for firmware upgrade. Must be used several times to represent whole certificate. Can specify 254 hex chars max at a time.
MtaConfigDelimiter    

Note: to create Mfg CVC Data, take mfg cert and then:

  hexdump -v -e ' 2/1 "%02X" ' -n 254 cert.cer

The complete MfgCVCData option would be MfgCVCData 0xOUTPUT_FROM_ABOVE; 
To create next portion just skip first 254 chars with -s:

   hexdump -v -e ' 2/1 "%02X" ' -n 254 -s 254 cert.cer

Increase -s by 254 for next portions.

5)Service flow parameters explained
General SF parameters:
NameDescriptionValues
QosParamSetType Quality of Service Parameter Set Type. Describes whether service flow is: Provisioned, Admitted and Active. Bit0 - Provisioned flag, Bit1 - Admitted flag, Bit2 - Active flag. For a servce flow to be working all 3 bits must be set to 1. Binary 111 equals 7 deciminal. 7 - Active
other - disabled
TrafficPriority Sets priority for packets matching that service flow. CMTS should serve first SFs with higher priority. 0 - lowest (default)
7 - highest
MaxRateSustained Maximal transfer speed in b/s. Speed in b/s
MaxTrafficBurst Specifies how much data can be sent in one burst. Value in bytes
MinReservedRate Minimal bandwidth reserverd for that service flow Speed in b/s
MinResPacketSize Used for calculating minreserved rate, when smaller packets are sent, size from this field is taken for calculations instead of actual packet size. Size in bytes.
ActQosParamsTimeout Specifies how long CMTS reserves resources for that(active) service flow. Value in seconds.
AdmQosParamsTimeout Specifies how long CMTS reserves resources for that(admitted) service flow. Value in seconds.
ServiceClassName Specifies service class which that servce flow is part of "service_class_name"
Downstream specific parameters:
NameDescriptionValues
DsServiceFlow Creates downstream service flow none
DsServiceFlowRef Number of downstream service flow - must match ServiceFlowRef in packet clasifiers(if exists). Service flows with lowest numbers are taken as default - no classifiers needed there. any number (1-65535)
MaxDsLatency Sprecifies maximal time between reception of packet and forwarding it to RF interface on t-he CMTS Value in micro seconds.
Upstream specific parameters:
NameDescriptionValues
UsServiceFlow Creates upstream service flow none
UsServiceFlowRef Number of upstream service flow - must match ServiceFlowRef in packet clasifiers(if exists). Service flows with lowest numbers are taken as default - no classifiers needed there. any number (1-65535)
MaxConcatenatedBurst Maximum data in bytes to be transmited in one concatenation burst Size in bytes, default 1522
SchedulingType Scheduling type to be used in service flow 2- Best effort, 3 - Non-Real-Time Polling, 4 - Real-Time Polling, 5 - Unsolicited Grant Service with Activity Detection, 6 - Unsolicited Grant Service
RequestOrTxPolicy Request/Transmission Policy - specifies behaviour of a serice flow There are 16 bits numbered from 15 to 0.
Bit0 disables all cm opportunities, bit1 disables Priority Request multicast opportunities, bit2 disables Request/Data opportunities for Requests bit3 same for data, bit4 disables piggyback requests with data, bit5 disables concatenation, bit6 disables fragmentation, bit7 disables payload header suppression, bit8 enables droping of packets that do not fit in the Unsolicited Grant. Example: 0x000001ff; Size
IpTosOverwrite Enables overwriting ToS values for matchin packets New ToS=(Old Tos AND AA) OR OO,example: 0xAAOO

I've purposely omited information about other sheduling types: UGS, UGS with AD, non real-time polling, real-time polling.
Test revealed that they are only useful with VOIP and/or streaming video. One may use source ip or destination port based classifier to capture voip traffic and limit UP- and down-stream service flows to no more than 128k. Since its uselles for browsing the internet no one should exploit that SF. With streaming video destiantion IP of video server must be known because high speed, low latency connection is VERY likely to be exploited if unprotected properly. It might be good idea for voip to create separate IP address class for voip gateways and create best effort service flows with highest traffic priority. Adding MinReservedRate may give even better results.

6)Classifies
IP and port based classifier
UsPacketClass {
  ServiceFlowRef 3;
  ClassifierRef 11;
  RulePriority 68;
  ActivationState 1;
  IpPacketClassifier {          /* Matches: */
    IpSrcAddr 192.168.0.0;      /* source IPs from 192.168.0.0 */
    IpSrcMask 255.255.255.0;    /* to 192.168.0.255 */
    SrcPortStart 1024;          /* source ports from 1024 */
    SrcPortEnd 2000;            /* to 2000 */
    IpDstAddr 113.206.95.144;   /* destination IPs from 113.206.95.144 */
    IpDstMask 255.255.255.248;  /* to 113.206.95.151 */
    DstPortStart 80;            /* destination port 80 */
    DstPortEnd 80;
    IpProto 6;                  /* TCP protocol */
  }
}
MAC address based classifier
UsPacketClass {
  ServiceFlowRef 3;
  ClassifierRef 11;
  RulePriority 68;
  ActivationState 1;
  LLCPacketClassifier {         
    SrcMacAddress 00:11:22:33:44:55 /* Matches that MAC address  */
  }
}
General classifier parameters:
NameDescriptionValues
DsPacketClass Creates downstream classifier none
UsPacketClass Creates upstream classifier none
ClassifierRef Number of classifier, must be unique in config file any number (1-255)
ServiceFlowRef ServiceFlowRef - number of service flow, which is used if packets matches that classifier. Number of existing SF
RulePriority Specifies the priority for the classifier. Higher number - higher priority. Classifiers with higher priority are checked first. any number (0-255)
ActivationState Enables classfier 1 - enabled,0 - disabled?
DscAction What to do with classifier when Dynamic Service Change Request is recived 0 - Add clasifier,1 - replace classifier, 2 - delete classifier

IP classifier parameters:
NameDescriptionValues
IpPacketClassifier Creates IP classifier match none
IpTos Matches ToS values 0xLLHHMM, where LL - low tos, HH -high tos, MM - tos mask. Matches packets, where LL >= (tos AND MM) <= HH.
IpSrcAddr Matches source IP IP address
IpSrcMask Specifies source mask. Match = SrcIP AND SrcMask IP address
IpDstAddr Matches destination IP IP address
IpDstMask Specifies destination mask. Match = DstIP AND DstMask IP address
SrcPortStart Matches source ports staring from that value 0(default)-65535
SrcPortEnd Matches source ports ending on that value 0-65535(default)
DstPortStart Matches destination ports staring from that value 0(default) - 65535
DstPortEnd Matches destination ports ending on that value 0-65535(default)
IpProto Matches IP protocol 1 - ICMP, 6 - TCP, 17- UDP 
256 - any, 257 - TCP+UDP, 0 - ignore this field

LLC classifier parameters:
NameDescriptionValues
LLCPacketClassifier Creates LLC(MAC) classifier match none
DstMacAddress Matches destination MAC MAC address
SrcMacAddress Matches source MAC MAC address
EtherType Matches ethertype Ethertype in hex

802.1q classifier parameters:
NameDescriptionValues
IEEE802Classifier Creates 802.1P/Q classifier match none
UserPriority Matches priority field 0-7
VlanID Matches vlan ID field 0-4095

IP, LLC and IEEE802 matches may be used together in one classifier.

7) SNMP parameters for use in docsis configuration files
SNMP v1 access table:

Allows read-only access for community string some_password from 192.168.0.1/24 coming only from RF interface of a CM.
.1 means that it's first entry - remember to change when adding more.

SnmpMibObject docsDevNmAccessStatus.1 Integer 4; /* createAndGo */
SnmpMibObject docsDevNmAccessIp.1 IPAddress 192.168.0.1 ;
SnmpMibObject docsDevNmAccessIpMask.1 IPAddress 255.255.255.0 ;
SnmpMibObject docsDevNmAccessControl.1 Integer 2; /* read */
SnmpMibObject docsDevNmAccessInterfaces.1 HexString 0x40;
SnmpMibObject docsDevNmAccessCommunity.1 String "some_password" ;
Nmaccess entries explained:
NameDescriptionValues
docsDevNmAccessStatus Configures row creation and it's activation 1 - active, 2 - inactive, 4 - create and activate, 5 - create and deactivate, 6 - delete. Stick wtih 4.
docsDevNmAccessIp Specifies source IP of a SNMP query matching this rule. IP address
docsDevNmAccessIpMask Specifies source IP mask of a SNMP query matching this rule. mask address
docsDevNmAccessControl Specifies access privileges 2 - RO, 3 - RW, 4 - RO with traps, 5 - RW with traps, 6 - traps
docsDevNmAccessInterfaces Specifies matching interface 0x40 - cable, 0x80 - ethernet, 0xC0,0x00 - both
docsDevNmAccessCommunity Specifies the community string "desired_community_string"
Firewall rule:

This firewall rule prevents users from sending mail using port 25(SMTP). 
Note that by setting docsDevFilterIpDefault to 2(drop) one can allow only selected traffic insted of droping it.

SnmpMibObject docsDevFilterIpControl.7 Integer 1; /* discard */
SnmpMibObject docsDevFilterIpIfIndex.7 Integer 0 ;
SnmpMibObject docsDevFilterIpDirection.7 Integer 3; /* both */
SnmpMibObject docsDevFilterIpBroadcast.7 Integer 2; /* false */
SnmpMibObject docsDevFilterIpSaddr.7 IPAddress 0.0.0.0 ;
SnmpMibObject docsDevFilterIpSmask.7 IPAddress 0.0.0.0 ;
SnmpMibObject docsDevFilterIpDaddr.7 IPAddress 0.0.0.0 ;
SnmpMibObject docsDevFilterIpDmask.7 IPAddress 0.0.0.0 ;
SnmpMibObject docsDevFilterIpProtocol.7 Integer 6 ;
SnmpMibObject docsDevFilterIpSourcePortLow.7 Integer 0 ;
SnmpMibObject docsDevFilterIpSourcePortHigh.7 Integer 65535 ;
SnmpMibObject docsDevFilterIpDestPortLow.7 Integer 25 ;
SnmpMibObject docsDevFilterIpDestPortHigh.7 Integer 25 ;
SnmpMibObject docsDevFilterIpStatus.7 Integer 4; /* createAndGo */
Notable parameters
NameDescriptionValues
docsDevFilterIpControl Discards or accepts the traffic 1 - discard, 2 - accept
docsDevFilterIpDirection Specifies the direction of packet to match. 1 - incoming, 2 - outgoing, 3 - both directions
docsDevFilterIpBroadcast Matches ONLY broadcast traffic. 1 - yes, 0 - no
Other:

Specifies maximal number of source IPs that modem is forwarding from Ethernet and USB interfaces. 
WARNING: Undesired operation on some modems - allows only 1 IP per MAC address. This may sound good but PCs get modem assigned(192.168.100.X) and windows private IPs all the time. Result: no network access.

SnmpMibObject docsDevCpeIpMax.0 Integer 3 ;
8) Other configuarion parameters

Currently other parameters are only listed. Will write descriptions when there's time.

Baseline Privacy, must be turned on by GlobalPrivacyEnable.
NameDescriptionValues
SAMapWaitTimeout    
SAMapMaxRetries    
BaselinePrivacy Specifies BPI options none - tree
AuthTimeout    
ReAuthTimeout    
AuthGraceTime    
ReKeyTimeout    
TEKGraceTime    
AuthRejectTimeout    
SNMPv3 specific:
NameDescriptionValues
SnmpV3Kickstart Specifies SNMPv3 engine options none - tree
SnmpV3SecurityName    
SnmpV3MgrPublicNumber    

NameDescriptionValues
SnmpV3TrapReceiver Specifies SNMPv3 traps settings none - tree
SnmpV3TrapRxIP    
SnmpV3TrapRxPort    
SnmpV3TrapRxType    
SnmpV3TrapRxTimeout    
SnmpV3TrapRxRetries    
SnmpV3TrapRxFilterOID    
SnmpV3TrapRxSecurityName   "security_name"
PHS - Payload header supression:
NameDescriptionValues
PHS Specifies PHS options none - tree
PHSClassifierRef    
PHSClassifierId    
PHSServiceFlowRef    
PHSServiceFlowId    
PHSField    
PHSIndex    
PHSMask    
PHSSize    
PHSVerify    
Vendor specific:
NameDescriptionValues
VendorSpecific Specifies vendor specific options none - tree
VendorIdentifier Specifies vendor identifier vendor id - 0xIIIIII
Modem Capabilities:

Everything shuld be enabled by default so use it only to disable things.


NameDescriptionValues
ModemCapabilities Starts the tree none
ConcatenationSupport    
ModemDocsisVersion    
FragmentationSupport    
PHSSupport    
IGMPSupport    
BaselinePrivacySupport    
DownstreamSAIDSupport    
UpstreamSIDSupport    
DCCSupport    
SubMgmtControl    
SubMgmtFilters  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值