电缆数据服务接口规格(DOCSIS)电缆设备中的机顶盒是电缆调制解调器(CM)的特殊情况。 机顶盒使用相同的步骤来上线并接收网络连接。但是,机顶盒通常具有标准CM所不具备的额外功能级别,例如电视服务、按次付费和电子节目指南。
因此,机顶盒可能要求调配系统为其提供额外的信息,以帮助初始化或配置额外的功能。
在本文档中,介绍了Motorola DCT5000机顶盒的示例。当此设备从调配系统获取DHCP租用时,还需要为其提供充当设备起始页的URL。否则,此特定品牌的机顶盒无法正确使用所有级别的功能。
注意:请勿将本文档用作调配Motorola DCT5000机顶盒的参考。请参阅Motorola文档作为规范参考。
在本文档中,使用的DHCP服务器系统是Cisco Network Registrar(CNR)5.06版。可以使用早期的CNR版本,但过程不同。您需要以ASCII格式输入信息,这可能是一个耗时且复杂的过程。
注意:建议使用本文档中介绍的流程,而不是手动定义选项43的值,如早期版本的CNR所示。
本文档没有任何特定的要求。
本文档中的信息基于CNR版本5.06。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
供应商类标识符(选项60)可由DHCP客户端用于标识DHCP客户端的供应商和功能。该信息是可变长度字符串或二进制八位数,具有DHCP客户端供应商指定的含义。
DHCP客户端可以通信它使用某种类型的硬件或固件的方法之一,是在其DHCP请求中设置一个值,称为供应商类标识符(VCI)(选项60)。 例如,基于DOCSIS 1.0的CM必须将此DHCP选项的值设置为字符串docsis1.0,而基于DOCSIS 1.1的CM将此值设置为docsis1.1。此方法的DHCP服务器区分两种CM,并处理来自两种CM的请求调制解调器类型。
某些类型的机顶盒还设置VCI(选项60),以通知DHCP服务器设备的硬件类型和功能。此选项设置为的值为DHCP服务器提供有关此客户端在DHCP响应中需要的任何所需额外信息的提示。
代码 | 长度 | 供应商类标识符 | ||
---|---|---|---|---|
60 | n | i1 | i2 | ............。 |
注意:选项60在RFC 2132中定义 。
机顶盒希望根据发送的VCI返回其他供应商特定信息的最常见选项是通过称为供应商特定信息选项(选项43)的DHCP选项。 此选项的格式在RFC 2132中定义 。但是,此选项返回的值的定义由涉及的供应商指定。
根据RFC 2132第8.4 节,此选项通常以类型、长度、值(TLV)样式格式化,其中不同的信息片段可由不同的子选项类型表示。值字段的含义由终端设备的制造商定义。
代码 | 长度 | 数据项 | 代码 | 长度 | 数据项 | ||||
---|---|---|---|---|---|---|---|---|---|
T1 | n | d1 | d2 | ......... | T2 | n | D1 | D2 | ........ |
当Motorola DCT5000机顶盒发送DHCP请求时,它将VCI(选项60)设置为值dct5000.008X。X可以是0到F的十六进制数字,具体取决于机顶盒的功能。CNR使用此信息确定DHCP客户端确实是DCT5000机顶盒。
当CNR识别到DHCP请求来自DCT5000时,CNR需要在DHCP响应中返回起始URL,以便Motorola DCT5000正确初始化。Motorola决定,此开始URL需要作为供应商特定信息选项(选项43)中的子选项类型2发送。
代码 | 长度 | 数据项 |
---|---|---|
2 | 61 | http://172.16.1.10/dtv/app/servicemanager/servicemanager.html |
在CNR中需要执行的第一步是向CNR告知机顶盒使用的VCI。通过在CNR命令行界面实用程序中发出nrcmd命令来完成此操作: vendor-option <vendor-option-name>创建<Vendor-class-identifier>。
注意:此配置只能使用nrcmd命令执行。不能为这些命令使用GUI界面。
其中:
vendor-option-name — 表示发送VCI的客户端类型的标识符。
供应商类标识符 — 供应商信息选项(选项60)由特定类型的设备设置的值。
注意:命令中的vendor-option-name字段应以所有小写形式指定。如果使用大写字母,则它们会转换为小写字母。Vendor-class-identifier字段可以有大写和小写字母。
对于DCT5000机顶盒,这些是已定义的供应商选项,可反映不同类型的DCT5000:
Vendor-option dct5000_80 create dct5000.0080 vendor-option dct5000_81 create dct5000.0081 vendor-option dct5000_82 create dct5000.0082 vendor-option dct5000_83 create dct5000.0083 vendor-option dct5000_84 create dct5000.0084 vendor-option dct5000_85 create dct5000.0085 vendor-option dct5000_86 create dct5000.0086 vendor-option dct5000_87 create dct5000.0087 vendor-option dct5000_88 create dct5000.0088 vendor-option dct5000_89 create dct5000.0089 vendor-option dct5000_8a create dct5000.008A vendor-option dct5000_8b create dct5000.008B vendor-option dct5000_8c create dct5000.008C vendor-option dct5000_8d create dct5000.008D vendor-option dct5000_8e create dct5000.008E vendor-option dct5000_8f create dct5000.008F
如果将来在您的网络中部署其他类型的机顶盒,并且这些机顶盒使用不同的VCI,则可以稍后定义。
目前,CNR中没有解决方案将这些不同的VCI合并到一个条目中。CNR将它们视为完全独立的实体。
下一步是将子选项类型2定义为每个VCI的有效类型。
子选项类型是通过使用nrcmd 命令vendor-option <vendor-option-name> definesuboption <suboption-name> <suboption-type-number> <option-data-type>创建的。
其中:
vendor-option-name — 为表示客户端类型而选择的标识符。
suboption-name — 所创建子选项的名称。这应代表子选项的功能。
suboption-type-number — 此子选项的子选项类型编号。
option-data-type — 此子选项使用的数据类型。例如,IPADDR、STRING、BYTE_ARRAY。使用nrcmd命令(option-datatype列表)可以看到其他类型。
注意:此命令中的vendor-option-name和suboption-name字段应在所有小写中指定。如果使用大写字母,则它们会转换为小写字母。option-data-type字段可以有大写和小写字母。
在本例中,您需要为起始URL定义子选项类型2。由于URL是文本字符串,因此请发出type STRING命令作为option-data-type。
Vendor-option dct5000_80 definesuboption start_url 2 STRING vendor-option dct5000_81 definesuboption start_url 2 STRING vendor-option dct5000_82 definesuboption start_url 2 STRING vendor-option dct5000_83 definesuboption start_url 2 STRING vendor-option dct5000_84 definesuboption start_url 2 STRING vendor-option dct5000_85 definesuboption start_url 2 STRING vendor-option dct5000_86 definesuboption start_url 2 STRING vendor-option dct5000_87 definesuboption start_url 2 STRING vendor-option dct5000_88 definesuboption start_url 2 STRING vendor-option dct5000_89 definesuboption start_url 2 STRING vendor-option dct5000_8a definesuboption start_url 2 STRING vendor-option dct5000_8b definesuboption start_url 2 STRING vendor-option dct5000_8c definesuboption start_url 2 STRING vendor-option dct5000_8d definesuboption start_url 2 STRING vendor-option dct5000_8e definesuboption start_url 2 STRING vendor-option dct5000_8f definesuboption start_url 2 STRING
如果将来在机顶盒上定义额外功能,并且需要定义其他子选项,则可以在后续阶段以类似方式指定这些子选项。
该流程的最后一步是将定义的供应商选项与策略相关联,并指定各个子选项应采用的值。这是使用nrcmd 命令policy <policy-name> setvendoroption <vendor-option-name> <suboption-name> <suboption-value>执行的。
其中:
policy-name — 机顶盒接收选项的DHCP策略的名称。这之前已配置。
vendor-option-name — 为表示客户端类型而选择的标识符。
suboption-name — 子选项的名称。
suboption-value — 在DHCP响应中为子选项指定的值。应根据定义子选项时指定的option-data-type输入此值。
注意:vendor-option-name和suboption-name字段区分大小写。务必确保这些字段以小写形式指定。子选项值字段可以用大写或小写指定。仅当接收子选项的客户端需要其区分大小写时,子选项值字段才区分大小写。
在本例中,假设已创建机顶盒的策略,称为STB_policy。此外,请将这些类型的机顶盒的起始URL指定为http://172.16.1.10/dtv/app/servicemanager/servicemanager.htmlhttp://www.lookuptables.com/。
使用以下nrcmd命令执行此操作:
policy STB_policy setvendoroption dct5000_80 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_81 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_82 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_83 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_84 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_85 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_86 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_87 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_88 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_89 start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_8a start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_8b start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_8c start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_8d start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_8e start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html policy STB_policy setvendoroption dct5000_8f start_url http://172.16.1.10/dtv/app/ servicemanager/servicemanager.html
如果指定了其他子选项类型的VCI,则它们可以以类似方式与策略和分配值相关联。
在此阶段,将保存配置更改,并重新加载DHCP服务器以应用更改。使用以下命令nrcmd可以完成此操作:dhcp保存并重新加载。
在CNR的早期版本中,高级供应商特定信息选项功能不可用。相反,必须在策略中手动配置供应商特定选项(选项43)。在CNR 5.0中无法执行此操作。如果需要接收选项43中的值,则必须发出vendor-option和policy setvendoroption 命令套件。
在5.0之前的CNR版本中,为了配置策略以为供应商特定信息选项(选项43)提供值,请发出命令policy <policy-name>setoption vendor-encapsulated-option <value-byte-array>。
其中:
policy-name — 机顶盒接收选项的DHCP策略的名称。这之前已配置。
value-byte-array — 返回的供应商特定信息选项(选项43)的全部取值,指定为十六进制字节数组。
由于供应商特定信息选项(选项43)中包含的值列为十六进制字节数组,并且由于没有设置子类型定义,因此必须将整个必填字段解码为适当的ASCII代码。
使用文本到ASCII十六进制转换表(如http://www.lookuptables.com/上的表 ),可以将URL http://172.16.1.10/dtv/app/servicemanager/servicemanager.html转换为等效的十六进制值。
此URL变为此值:
68:74:74:70:3a:2f:2f:31:37:32:2e:31:36:2e:31:2e:31:30:2f:64: 74:76:2f:61:70:70:2f:73:65:72:76:69:63:65:6d:61:6e:61:67:65: 72:2f:73:65:72:76:69:63:65:6d:61:6e:61:67:65:72:2e:68:74:6d:6c
要正确格式化供应商特定信息选项(选项43),您需要在此阵列开头添加类型和长度字段。
代码 | 长度 | 数据项 |
---|---|---|
2 | 61 | http://172.16.1.10/dtv/app/servicemanager/servicemanager.html |
代码 | 长度 | 数据项 |
---|---|---|
02 | 3d | 68:74:74:70:3a:2f:2f:31:37:32:2e:31:36:2e:31:2e:31:30:2f:64:74:76:2f:61:70:70:2f:73:65:72:76:69:63:65:6d:61:6e:61:67:65:72:2f:73:65:72:76:69:63:65:6d:61:6e:61:67:65:72:2e:68:74:6d:6c |
如下表所示,十六进制字节61:3d需要在代表起始URL的十六进制字符串前面加上。通过发出以下nrcmd命令,可以指定供应商特定信息选项(选项43)的整个值:
policy STB_policy setoption vendor-encapsulated-option
02:3d:68:74:74:70:3a:2f:2f:31:37:32:2e:31:36:2e:31:2e:31:30:2f:64:74:76:2f:61:70:70:2f:73:65:72:76:69:63:65:6d:61:
6e:61:67:65:72:2f:73:65:72:76:69:63:65:6d:61:6e:61:67:65:72:2e:68:74:6d:6c
注意:此整个命令在一行上执行。
要验证是否正确输入了配置命令,可以发出nrcmd命令。
第一个命令是vendor-option list。如此输出所示,此命令的输出提供供应商选项列表,提供vendor-option-name、vendor-class-id和vendor-option功能read_only。
nrcmd> vendor-option list 100 Ok dct5000_80: name = dct5000_80 read-only = disabled vendor-class-id = dct5000.0080 dct5000_81: name = dct5000_81 read-only = disabled vendor-class-id = dct5000.0081 dct5000_82: name = dct5000_82 read-only = disabled vendor-class-id = dct5000.0082 dct5000_83: name = dct5000_83 read-only = disabled vendor-class-id = dct5000.0083 dct5000_84: name = dct5000_84 read-only = disabled vendor-class-id = dct5000.0084 dct5000_85: name = dct5000_85 read-only = disabled vendor-class-id = dct5000.0085 dct5000_86: name = dct5000_86 read-only = disabled vendor-class-id = dct5000.0086 dct5000_87: name = dct5000_87 read-only = disabled vendor-class-id = dct5000.0087 dct5000_88: name = dct5000_88 read-only = disabled vendor-class-id = dct5000.0088 dct5000_89: name = dct5000_89 read-only = disabled vendor-class-id = dct5000.0089 dct5000_8a: name = dct5000_8a read-only = disabled vendor-class-id = dct5000.008A dct5000_8b: name = dct5000_8b read-only = disabled vendor-class-id = dct5000.008B dct5000_8c: name = dct5000_8c read-only = disabled vendor-class-id = dct5000.008C dct5000_8d: name = dct5000_8d read-only = disabled vendor-class-id = dct5000.008D dct5000_8e: name = dct5000_8e read-only = disabled vendor-class-id = dct5000.008E dct5000_8f: name = dct5000_8f read-only = disabled vendor-class-id = dct5000.008F
注意:默认情况下禁用vendor-option只读功能。如果要启用此功能,请发出vendor-option name enable read-only命令。在使用策略名称setVendoroption命令中的选项来设置选项的数据之前,应启用供应商特定DHCP选项的只读功能。
要验证给予每个供应商选项的子选项列表,请发出命令vendor-option vendor-option-name listsuboptions。使用此命令,您可以看到子选项类型和值。在此输出中,它是字符串类型,其值为start_url。
nrcmd> vendor-option dct5000_80 listsuboptiovns 100 OK start_url(2) : string nrcmd> vendor-option dct5000_81 listsuboptions 100 OK start_url(2) : string
为了验证供应商特定信息选项(选项43)的正确值正在返回给终端客户端,可以在CNR中激活扩展调试,以查看DHCP响应中客户端的DHCP选项的内容。有关在CNR中打开扩展调试的详细信息,请参阅使用Cisco Network Registrar调试排除有线网络中的DHCP问题。