006-tr069文档

2021-04-22  本文已影响0人  千转军师

时间:2021年4月22日
标题:客户端广域网管理协议(CPE WAN Management Protocol)CWMP

0、术语

名称 解释
ACS 自动配置服务器。是宽带网络中自动配置CPE先进服务器的组成部分。
B-NT 能够被ACS管理的宽带接入CPE的设备。
CPE 客户预定设备。DSL B-NT是宽带CPE的一种形式。
Internet Gateway Device 一种CPE设备,可以是B-NT或宽带路由器。
Option 一个可选的CPE功能,只能使用数字签名凭证来启用或禁用。
RPC 远程过程调用
Parameter 一个名称-值对,表示一个可管理的CPE参数,ACS可访问该参数进行读写。
Session CPE和ACS之间的连续事务序列。
Voucher 一种数字签名的数据结构,它指示特定的CPE启用或禁用Options,以及决定Options在何种条件下持久存在的特征。

1、介绍

1.1 基本模块

(1)自动配置和动态服务供应
给定参数;
添加指定供应商;
初始化连接时访问互联网,可重复供应;
提供可选工具,例如通过数字用户签名实现安全控制;
扩展以兼容其他版本。
(2)软件或固件镜像的管理
版本识别;
文件下载初始化(ACS初始化的下载,CPE可选的初始化下载);
下载成功或者失败的提示;
定义签名文件格式;包括可选的分包或者单独文件的下载方式;必须保证文件的完整性;附带安装指令
(3)状态和表现的监控
CPE提供状态和表项现的统计;
定义了一个共同的集合,例如参数;
提供一个标准给供应商定义新增的可用于监控的非标准参数;
定义CPE在什么条件下可以被激活,并把改动通报给ACS。
(4)诊断
提供与连接和服务事项的有用信息;
定义了共用集合譬如参数和新增供应商指定的诊断性能的机制。
(5)身份认证和web应用
支持通过基于web的应用来访问CPE的本地浏览器;
定义了一个可选机制,该机制用于允许web站点通过获取CPE的相关信息来客制化自己的内容;

1.2 在自动化配置构建中定位

1.3 安全的目标

1.4 构建目标

1.5 假定

在定义CPE广域网管理协议时所作的一些假设如下:

2、架构

2.1 协议组成

(1)CPE/ACS 应用
应用会使CWMP协议;但这些应用不会指定作为该协议的一部分;
(2)RPC方法
在CWMP协议中有所定义,包括了定义CPE参数用于访问一个ACS,用的时参数关联的RPC方法;指定的参数定义应用于网关设备;
(2)SOAP
一个标准的基于XML的语法,用于封装RPC(remote procedure calls),特别指定SOAP 1.1;
(3)HTTP
特别指定HTTP 1.1
(4)SSL/TLS
一个标准的传输层安全协议。特别的,SSL 3.0 (Secure Socket Layer), TLS 1.0 (Transport Layer Security)
(5)TCP/IP
标准的TCP/IP

2.2 安全机制

(1)安全初始化模型

2.3 构建组成

(1)参数

(2)文件传送

(3)CPE初始化通告

(4)异步ACS初始化通告

3、程序和要求

3.1 ACS发现

<1>CPE可能在本地配置了ACS的URL。例如,这可以通过局域网侧CPE自动配置协议。CPE将使用DNS解析来自ACS的URL主机名组件。
<2>作为IP层自动配置的一部分,接入网中的DHCP服务器可以被配置为包含ACS URL作为DHCP选项[12]。
CPE将使用DNS解析的IP地址,从URL的主机名组件ACS。在这种情况下,第二个DHCP选项可能是用于设置提供代码,它可以用来指示主要服务提供者和向ACS提供的其他信息;
CPE通过包含该字符串向DHCP服务器标识自己支持此方法," dslforum.org "(全小写)在供应商类标识符(DHCP选项60)的任何地方;
CPE可能使用从DHCP服务器接收到的Vendor Specific Information中的值
(DHCP选项43)设置相应参数,如表2所示。这个DHCP选项被编码为一个或多个封装供应商特定选项的列表,格式为[12]中定义的格式;
除了这里列出的选项外,这个列表可能还包括其他特定于供应商的选项。
<3>封装供应商的指定操作
ACS的URL:操作数 1,参数 InternetGatewayDevice.ManagementServer.URL
提供的代码:操作数 2, 参数 InternetGatewayDevice.DeviceInfo.ProvisioningCode
<4>CPE可能有一个默认的ACS URL,如果没有向它提供其他URL,它可以使用这个URL;
ACS地址必须是有效的HTTP或HTTPS地址[5];
使用HTTPS URL表示ACS支持SSL协议;
如果给出了一个HTTPS URL,而CPE不支持SSL,它可能会尝试使用HTTP,假设URL的其余部分没有改变。

3.2 连接的建立

(1)CPE连接的初始化
CPE可以在任何时候使用预先确定的ACS地址(见3.1节)发起到ACS的连接。CPE必须与ACS建立连接,并发出Inform RPC方法
(按照第3.7节所述的程序)在下列条件下:
<1>CPE首次在初始安装时与接入网建立连接;
<2>开机或复位
<3>每隔一次PeriodicInformInterval(例如,每24小时)
<4>当由可选的ScheduleInform方法指示时
<5>当CPE从ACS接收到一个有效的连接请求时(见3.2.2节)
<6>.当ACS的URL发生变化时
<7>当一个参数被修改时,就需要启动一个更改通知。在互联网网关设备的情况下,这包括以下更改(见A.3.3.1)
o默认宽带连接IP地址
o管理IP地址(与连接请求URL关联)
o发放代码
o软件版本
<8>当ACS通过SetParameterAttributes方法标记为活动通知的参数值被外部原因(不是ACS本身的原因)修改时。ACS本身通过SetParameterValues所做的参数更改绝对不能导致一个新的会话被启动。如果在CPE能够发起会话来执行通知之前,参数被修改了多次,则只执行一次通知;
当一个会话正在进行时,如果一个参数被外部原因修改了,这个更改会导致在当前会话终止后建立一个新的会话(绝对不能影响当前会话);
为了避免向ACS发送过多的流量,CPE可能对参数更改通知的频率设置本地指定的限制。这个限制应该被定义,只有在不寻常的情况下才会超过。如果超过了这个限制,CPE可能会延迟本地指定的发起会话的时间来通知ACS。在这个延迟之后,CPE必须向ACS发起一个会话,并指出自上次这样的通知以来发生的所有相关参数更改(那些标记为通知的参数)。

(2)ACS连接初始化

3.3 使用 SSL/TLS 和TCP

3.4 HTTP的使用

使用HTTP 1.1[5]在CPE和ACS之间传送SOAP消息,CPE作为HTTP客户端,ACS作为HTTP服务器。

(1)在HTPP之上封装SOAP

HTTP上的SOAP编码扩展了SOAP的基本HTTP配置文件,在[8]中描述如下:
<1>从ACS发送到CPE的SOAP请求是通过HTTP响应发送的,而CPE对ACS请求的SOAP响应是通过后续的HTTP post发送的。
<2>每个HTTP post或响应可能包含多个SOAP信封(在协商的限制内)。每个信封可能包含一个SOAP请求或响应,独立于任何其他信封。
<3>当一个HTTP请求中有多个信封时,SOAPAction报头在HTTP请求必须没有值(没有引号),表示此报头不提供关于消息意图的信息

HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8" 
Content-Length: xyz 
<soap:Envelope
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
 soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0"> 
 <soap:Header> 
 <cwmp:ID soap:mustUnderstand="1">1234</cwmp:ID> 
 </soap:Header> 
 <soap:Body>
 <cwmp:Response1> 
 <argument>value</argument> 
 </cwmp:Response1> 
 </soap:Body> 
</soap:Envelope> 
<soap:Envelope
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
 soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0"> 
 <soap:Body>
 <cwmp:Request2> 
 <argument>value</argument> 
 </cwmp:Request2> 
 </soap:Body> 
</soap:Envelope>

(2)事务会话

(3)文件传输

如果CPE按照ACS的来指示执行通过下载或上传文件传输,同时文件位置被指定为一个和ACS相同主机名的HTTP URL,那么CPE可以选择下列方式执行传送:
<1>CPE可以通过已经建立的连接发送HTTP get/post。一旦文件有被转移时,CPE可以继续向ACS发送额外的消息继续保持连接。
<2>CPE可以打开第二个连接来传输文件,同时维护可继续发送消息的会话。
<3>CPE可以终止与ACS的会话,然后进行转移。

(4)认证

3.5 SOAP的使用

CPE WAN管理协议将SOAP 1.1[8]定义为编码语法来传输附录A中定义的RPC方法调用和响应。
(1)下面描述了RPC方法到SOAP编码的映射:

<ParameterList soap:arrayType="cwmp:ParameterValueStruct[2]">
 <ParameterValueStruct> 
 <name>Parameter1</name> 
 <value xsi:type="someType">1234</value> 
 </ParameterValueStruct> 
 <ParameterValueStruct> 
 <name>Parameter2</name> 
 <value xsi:type="someType">5678</value> 
 </ParameterValueStruct> 
</ParameterList>
<xs:element Name="Fault"> 
 <xs:complexType>
<xs:sequence> 
 <xs:element Name="FaultCode" Type="unsignedInt"/> 
 <xs:element Name="FaultString" Type="string" minOccurs="0"/> 
 <xs:element Name="SetParameterValuesFault" minOccurs="0" maxOccurs="unbounded">
 <xs:complexType> 
 <xs:sequence> 
 <xs:element Name="ParameterName" Type="string"/> 
 <xs:element Name="FaultCode" Type="unsignedInt"/> 
 <xs:element Name="FaultString" Type="string" minOccurs="0"/> 
 </xs:sequence> 
 </xs:complexType> 
 </xs:element> 
 </xs:sequence> 
 </xs:complexType> 
</xs:element> 

下面是一个包含错误响应的示例信封d:
<soap:Envelope

 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
 soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0"> 
 <soap:Header> 
 <cwmp:ID soap:mustUnderstand="1">1234</cwmp:ID> 
 </soap:Header> 
 <soap:Body>
 <soap:Fault> 
 <faultcode>Client</faultcode> 
 <faultstring>CWMP fault</faultstring> 
 <detail> 
 <cwmp:Fault>
 <FaultCode>9000</FaultCode> 
 <FaultString>Upload method not supported</FaultString> 
 </cwmp:Fault>
 </detail> 
 </soap:Fault> 
 </soap:Body> 
</soap:Envelope>

下面是一个包含SetParameterValues方法调用的错误响应的示例封装:

 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
 soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0"> 
 <soap:Header> 
 <cwmp:ID soap:mustUnderstand="1">1234</cwmp:ID> 
 </soap:Header> 
 <soap:Body>
 <soap:Fault> 
 <faultcode>Client</faultcode> 
 <faultstring>CWMP fault</faultstring> 
 <detail> 
 <cwmp:Fault>
 <FaultCode>9003</FaultCode> 
 <FaultString>Invalid arguments</FaultString> 
 <SetParameterValuesFault> 
 <ParameterName> 
 InternetGatewayDevice.Time.LocalTimeZone 
 </ParameterName> 
 <FaultCode>9012</FaultCode> 
 <FaultString>Not a valid time zone value</FaultString>
 </SetParameterValuesFault> 
 <SetParameterValuesFault> 
 <ParameterName> 
 InternetGatewayDevice.Time.LocalTimeZoneName 
 </ParameterName> 
 <FaultCode>9012</FaultCode> 
 <FaultString>String too long</FaultString> 
 </SetParameterValuesFault>
</cwmp:Fault>
 </detail> 
 </soap:Fault> 
 </soap:Body> 
</soap:Envelope>
<soap:Envelope
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
 soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0"> 
 <soap:Header> 
 <cwmp:ID soap:mustUnderstand="1">1234</cwmp:ID> 
 <cwmp:HoldRequests soap:mustUnderstand="1">0</cwmp:HoldRequests> 
 <cwmp:NoMoreRequests>1</cwmp:NoMoreRequests> 
 </soap:Header>
<soap:Body>
 <cwmp:Action> 
 <argument>value</argument> 
 </cwmp:Action> 
 </soap:Body> 
</soap:Envelope>

3.6 RPC支持要求

下表提供了所有方法的摘要,并指出了附录a中定义的每个RPC方法的实现是必需的还是可选的条件

CPE methods Responding Calling
GetRPCMethods Required Optional
SetParameterValues Required Required
GetParameterValues Required Required
GetParameterNames Required Required
SetParameterAttributes Required Optional
GetParameterAttributes Required Optional
AddObject Required Optional
DeleteObject Required Optional
Reboot Required Optional
Download Required4 Required
Upload Optional Optional
FactoryReset Optional Optional
GetQueuedTransfers Optional Optional
ScheduleInform Optional Optional
SetVouchers Optional5 Optional
GetOptions Optional Optional
Server methods Calling Responding
GetRPCMethods Optional Required
Inform Required Required
TransferComplete Required6 Required7
RequestDownload Optional Optional
Kicked Optional Optional

3.7 交流会话程序

CPE操作

(1)会话初始化
根据3.2.1节中列出的条件,CPE将向ACS发起一个事务会话。一旦与ACS的连接成功建立,CPE通过向ACS发送初始的Inform请求发起会话。
这向ACS指示CPE的当前状态,并且CPE已经准备好接受来自ACS的请求。在这个携带Inform请求的初始HTTP帖子中,只允许一个SOAP信封。
Inform响应中的maxenvelope参数表示后续HTTP发送可能携带的信封的最大数量。CPE只有在锁定了通过此接口可访问的参数,以确保不能通过任何其他机制更改这些参数时才应该发起会话。CPE应该维护这个锁,直到会话终止。
(2)即将到来的请求

(4)会话终止
CPE在一下条件发生是,必须终止会话:
<1>ACS不再发送请求到CPE情况下,假如
<a>最近的来自ACS的HTTP回应里,不包含封装;
<b>最近的来自ACS的HTTP封装内容里,包含一个NoMoreRequests 头部,并且数值为真(CPE使用这个头是可选的);
<2>CPE不再发送请求到ACS了;
<3>CPE已经接收完所有来自ACS的的明显回应;
<4>CPE发送明显的回复信息给ACS,但是却导致优先的请求。

ACS操作

(1)会话初始化

交互的例子

CPE -------------------------> ACS 打开连接
CPE <==============> ACS SSL的初始化
CPE --------------------------> ACS HTTP post和Inform 请求
CPE <------------------------- ACS HTTP 回应和Infrom 回应
CPE -------------------------> ACS HTTP post
CPE <------------------------- ACS HTTP回应和 GetParameterValues请求
CPE -------------------------> ACS HTTP post和 GetParameterValues回应
CPE <------------------------- ACS HTTP回应和 SetParameterValues请求
CPE -------------------------> ACS HTTP post和 SetParameterValues请回应
CPE <------------------------- ACS HTTP回应
CPE -------------------------> ACS 关闭连接
(2)MaxEnvelopes在CPE和ACS下都为3的例子
该例子中,允许在两个方向上使用消息管道,也显示了来自ACS的一些额外请求。

CPE -------------------------> ACS 打开连接
CPE <==============> ACS SSL的初始化
CPE --------------------------> ACS HTTP post、Inform 请求
CPE <------------------------- ACS HTTP 回应、Infrom 回应、GetParameterValues 请求、ScheduleInform 请求
CPE -------------------------> ACS HTTP post、
、GetParameterValues 回应、ScheduleInform 回应
CPE <------------------------- ACS HTTP回应、SetParameterValues 请求、AddObject 请求、AddObject 请求
CPE -------------------------> ACS HTTP post、
SetParameterValues 回应、AddObject 回应、AddObject 回应
CPE <------------------------- ACS HTTP回应
CPE -------------------------> ACS 关闭连接

4、附件A:RPC方法

4.1 介绍

4.2 RPC的使用方法

数据类型

此规范中定义的RPC方法使用了缺省SOAP数据类型的有限子集
[8]。表6列出了该规范中使用的完整类型集以及用来表示这些类型的符号。
(1)string
对于本规范中列出的字符串,最大允许长度可以使用字符串(N)的形式列出,其中N是字符中的最大字符串长度。对于所有字符串,组成字符串的元素的大小可以显式地指示或暗示最大长度。
对于内容为枚举的字符串,最长的枚举值决定最大长度。如果字符串没有显式指定的最大长度或不是枚举,则默认的最大长度为16个字符。动作参数包含的字符串长度超过了指定的最大长度可能会导致无效参数错误响应。
(2)int
2147483648 ~ +2147483647(含2147483647)的整数。对于列出的某些int类型,取值范围使用int[Min:Max]的形式给出,其中Min和Max值包括在内。如果缺少Min或Max,则表示没有限制。
(3)unsignedInt
无符号整数,取值范围0 ~ 4294967295(含)。
对于列出的一些unsignedInt类型,一个取值范围使用unsignedInt[Min:Max]的形式给出,其中Min和Max值包括在内。如果缺少Min或Max,则表示没有限制。
(4)boolean
布尔值,1 = true, 0 = false
(5)dataTime
由SOAP dateTime类型定义的ISO 8601日期-时间格式的子集。除非另有明确声明,否则所有时间都用UTC(通用协调时间)表示。如果绝对时间对CPE不可用,它应该指示自启动以来的时间。例如,自启动以来的2天3小时4分5秒将表示为0000-00-02T03:04:05。
(6)base64
Base64编码的二进制文件。
允许的最大长度可以使用base64(N)的形式列出,其中N是base64编码后字符的最大长度
(7)any
包含该表中列出的任何类型的元素。
根据SOAP规范[8],指定为这种类型的元素必须包含一个type属性,以指示元素的实际类型。例如:

<Parameter> 
 <Name>InternetGatewayDevice.ProvisioningCode</Name> 
 <Value xsi:type="xsd:string">code12345</Value> 
</Parameter>

上面使用的名称空间xsi和xsd在[8]中定义。

(8)说明

其他要求

4.3 RPC信息的基线

通常的方法

CPE设备和服务器均需要支持本节所列方法。一个CPE或Server可以调用这些方法。
(1)GetRPCMethods

"GetRPCMethods" 
"SetParameterValues" 
"GetParameterValues" 
"GetParameterNames" 
“SetParameterAttributes” 
“GetParameterAttributes” 
“AddObject” 
“DeleteObject” 
“Reboot” 
“Download”

CPE方法

本节中列出的方法定义为在CPE设备上支持。只有服务器可以调用这些方法。
【具体参数查看文档 31-39页的详解】
(1)SetParameterValues
设置参数的值
(2)GetParameterValues
获取参数的数值
(3)GetParameterNames
获取参数名
(4)SetParameterAttributes
设置参数名
(5)GetParameterAttributes
获取参数的属性
(6)AddObject
添加对象
(7)DeleteObject
删除对象
(8)Download
下载
(9)重启

服务器的方法

本节中列出的方法定义为在服务器上受支持。只有CPE可以调用这些方法。
【具体参数查看文档 39-43页的详解】
(1)Inform
在与ACS连接建立时,CPE必须调用Inform方法来初始化启动事务序列。这个方法的调用参数定义在表31中。响应中的参数定义在表32中。
(2)TransferComplete
-此方法通知服务器由先前的Download或Upload方法调用发起的文件传输完成(成功或不成功)。只有当关联的Download或Upload响应指出传输当时还没有完成时(通过响应中Status参数的非零值表示),才必须调用此函数。
-在这种情况下,它可以在任何序列会话或者同一个传送已被初始化的会话中调用。当使用时,只有在传输完成(或失败)后才应该调用此方法。 CPE用这个标准来确定在传送完成的时候CPE的动作。

4.4 可选的RPC信息

CPE方法

本节中列出的方法可能在CPE设备上被选择性地支持。只有服务器可以调用这些方法。
【具体参数查看文档 43-47页的详解】
(1)GetQueuedTransfers
服务器可以使用此方法来确定先前请求的下载或上传的状态。
(2)ScheduleInform
服务器可以使用此方法请求CPE安排一次性的Inform方法调用
(与它的定期Inform方法调用不同)。
(3)SetVouchers
服务器可以使用此方法在CPE中设置一个或多个选项凭证。
(4)GetOptions
服务器可以使用此方法来获取CPE中当前设置的选项列表及其相关的状态信息。
(5)Upload
服务器可以使用此方法使CPE将指定的文件上传到指定的位置。
(6)FactoryReset
此方法将CPE重置为出厂默认状态。使用这种方法时应格外小心。

服务器方法

在服务器上可以选择支持本节中列出的方法。只有CPE可以调用这些方法。
【具体参数查看文档 47-?页的详解】
(1)Kicked
CPE在附录D中描述的CPE被“踢开”时调用此方法。
(2)RequestDownload
这种方法允许CPE请求从服务器下载文件。在收到这一请求后
服务器可以调用Download方法来初始化下载。

4.5 错误处理

CPE的错误码

CPE可返回的故障码如下表所示。请注意,错误代码值以十进制表示。

错误码 描述
9002 内部错误
9003 无效参数
9004 资源超出(当与SetParameterValues一起使用时,这不能用于指示错误中的参数)
9005 无效参数名(与Set/GetParameterValues关联时,此参数不能用于指示错误中的参数)
9005 无效参数名(与Set/GetParameterValues, GetParameterNames,

Set/GetParameterAttributes相关联)
9006|无效的参数类型(与SetParameterValues相关联)
9007|无效的参数值(与SetParameterValues相关联)
9008|尝试设置一个不可写的参数(与SetParameterValues相关联)
9009|通知请求被拒绝(与SetParameterAttributes方法相关联)。
9010|下载失败(与Download或TransferComplete方法相关)。
9011|上传失败(与Upload或TransferComplete方法相关)。
9012|文件传输服务器鉴权失败(与Upload、Download、TransferComplete方法相关)。
9013|不支持的文件传输协议(与上传、下载方式关联)。
9800-9899|厂商定义的故障码

服务器错误码

服务器返回的故障码如下表所示。请注意,错误代码值以十进制表示。

故障代码 描述
8000 不支持方法
8001 请求被拒绝(未说明原因)
8002 内部错误
8003 无效的参数
8004 资源超过了
8005 重试请求
8800-8899 供应商提供的错误码

服务器方法的重试行为

5、附件B:CPE参数

5.1 介绍

本附录定义了Internet网关设备的所有CPE参数,可通过
附录a中定义的RPC参数相关方法
CPE中的必填项以及可选项。

5.2 CPE参数

数据类型

(1)object
参数和(或者)其他对象的容器。参数的完整路径名=object完整路径名 + 参数名。
(2)string
对于本规范中列出的字符串,最大允许长度可以使用字符串(N)的形式列出,其中N是字符中的最大字符串长度。
对于所有字符串,组成字符串的元素的大小可以显式地指示或暗示最大长度。对于内容为枚举的字符串,最长的枚举值决定最大长度。如果字符串没有显式指定的最大长度或不是枚举,则默认的最大长度为16个字符。
(3)int
整数范围为-2147483648到+2147483647,包括在内。
对于列出的某些int类型,取值范围使用int[Min:Max]的形式给出,其中Min和Max值包括在内。如果缺少Min或Max,则表示没有限制。
(4)unsignedInt
无符号整数,取值范围0 ~ 4294967295(含)。
对于列出的一些unsignedInt类型,一个取值范围使用unsignedInt[Min:Max]的形式给出,其中
最小值和最大值包含在内。如果缺少Min或Max,则表示没有限制。
(5)boolean
1 = true 0=false
(6)dataTime
由SOAP dateTime类型定义的ISO 8601日期-时间格式的子集。
除非另有明确声明,否则所有时间都用UTC(通用协调时间)表示。
如果绝对时间对CPE不可用,它应该指示自启动以来的时间。例如,自启动以来的2天3小时4分5秒将表示为0000-00-02T03:04:05
(7)base64
Base64编码的二进制文件。
允许的最大长度可以使用base64(N)的形式列出,其中N是base64编码后字符的最大长度。
(8)IP和MAC地址
所有IP地址和子网掩码都表示为IPv4点分十进制格式的字符串。注意,在这个附录中描述的参数列表中,目前没有IPv6支持。
所有MAC地址都是由12个十六进制数字(数字0-9,字母A-F或A-F)组成的字符串,以冒号分隔。

供应商自定义参数

参数列表

【参见文档的53-90页】

6、附件C:签署凭证

6.1 介绍

6.2 对使用凭证选项的控制

-选项可以是禁用、启用或启用过期的。

6.3 凭证定义

指定操作的定义

【参见文档92页】
(1)VseriaNum
string(64)
识别特定凭证的唯一序列号。对于一个给定的ACS,每个新创建的凭证必须分配一个不同的凭证列号。该值在ACS管理的所有CPE和在不同时间发给给定CPE的所有凭证中必须是唯一的。
(2)DeviceId
DeviceIdStruct
这个结构体唯一标识凭证所应用的CPE。表63定义了这个结构。
在收到凭证后,CPE必须确保设备ID中的信息与它的实际身份相符。如果不是,则必须忽略凭证和响应请求拒绝错误。
(3)OptionIdent
string(64)
辨认特定操作是使能还是非使能。
(4)OpeionDesc
string(256)
操作的文档描述
(5)StartData
dataTime
属于可选的元素。选项要启用的UTC日期和时间(只有当Mode = EnableWithExpiration或
EnableWithoutExpiration)。如果此元素不存在,或者指定的时间已经过去,一个Option会被立即启用。
(6)Duration(持续)
unsignedInt
如果模式= EnableWithExpiration,则为必需。对于启用了过期的Option,此元素指定了该Option将以DurationUnits为单位保持启用的持续时间。如果指定了开始日期,则持续时间相对于该开始日期。
(7)DurationUnits
string
如果模式= EnableWithExpiration,则为必需。此元素指定duration元素所指定的单位。允许的值是:
“Days”
“Months”
(8)Mode
string
此元素指定指定的选项是启用还是禁用,如果启用,则是否指定过期时间。允许的值是:
“Disable”
“EnableWithExpiration
“EnableWithoutExpiration
(9)Transferable
boolean
可选的元素。值为true(1)表示Option被认为是可转让的,这意味着Option将一直启用到任何指定的截止日期,而不管服务提供者发生了什么变化。
如果该元素为假(0)或不存在,则该选项被认为是不可转让的,要求在服务提供商发生变更时禁用该选项,该变更与附录B中定义的规定代码的任何变更相关。

DeviceIdStruct定义

(1)Manufacturer(制造商)
string(64)
设备的制造商。此参数仅用于显示,不需要作为验证的一部分进行检查。
(2)OUI
string(6)
设备制造商的组织唯一标识符。表示为使用所有大写字母并包括前导零的6个十六进制数字值。该值必须是[9]中定义的有效OUI
(3)ProductClass
string(64)
序列号适用的产品类别的标识符。也就是说,对于给定的制造商,此参数用于标识SerialNumber参数是唯一的产品或产品类别。
(4)SerialNumber
string(64)
特定设备的标识符,对于所指示的产品类别和制造商是唯一的。

例子

(1)指定Option

<dsig:Object xmlns="" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="option0"> 
 <Option> 
 <VSerialNum>987654321</VSerialNum> 
 <DeviceId> 
 <Manufacturer>2Wire</Manufacturer> 
 <OUI>00D09E</OUI> 
 <ProductClass>Gateway</ProductClass> 
 <SerialNumber>123456789</SerialNumber> 
 </DeviceId> 
 <OptionIdent>Option Name</OptionIdent> 
 <OptionDesc>Option Description</OptionDesc> 
 <StartDate>20021025T12:06:34</StartDate> 
 <Duration>280</Duration> 
 <DurationUnits>Days</DurationUnits> 
 <Mode>EnableWithExpiration</Mode> 
 </Option> 
</dsig:Object>

签署凭证的例子

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
 <SignedInfo> 
 <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-
20010315"></CanonicalizationMethod> 
 <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa�sha1"></SignatureMethod> 
 <Reference URI="#option0"> 
 <Transforms> 
 <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-
20010315"></Transform> 
 </Transforms> 
 <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod> 
 <DigestValue>TUuSqr2utLtQM5tY2DB1jL3nV00=</DigestValue> 
 </Reference> 
 <Reference URI="#option1"> 
 <Transforms> 
 <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-
20010315"></Transform> 
 </Transforms> 
 <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod> 
 <DigestValue>/YX1C/E6zNf0+w4lG66NeXGOQB0=</DigestValue> 
 </Reference> 
 </SignedInfo> 
 <SignatureValue> 
 KAMfqOSnmGH52qRVGLNFEEM4PPkRSmMUGr2D8E3vwwW280e1Bn5pwQ== 
 </SignatureValue> 
 <KeyInfo> 
 <KeyValue> 
 <DSAKeyValue> 
 <P> 
 /X9TgR11EilS30qcLuzk5/YRt1I870QAwx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9s 
 ubVWzXgTuAHTRv8mZgt2uZUKWkn5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7g/bT 
 xR7DAjVUE1oWkTL2dfOuK2HXKu/yIgMZndFIAcc= 
 </P> 
 <Q>l2BQjxUjC8yykrmCouuEC/BYHPU=</Q>
<G> 
 9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFn 
 Ej6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTx 
 vqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSo= 
 </G> 
 <Y> 
 TBASA/mjLI8bc2KM7u9X6nHHvjmPgZtTBhr1/Fzs2AkdYCYMwyy+v+OXU7u5e18JuK 
 G7/uolVhjXNSn6ZgObF+wuMoyP/OUmNbSkdN1aRXXHPRsW2CcG3vjfV+Csg/LP3zfD 
 xDkImsC8LuKXht/g4+nksA/3icRQXWagQJU9pUQ= 
 </Y> 
 </DSAKeyValue> 
 </KeyValue> 
 <X509Data> 
 <X509IssuerSerial> 
 <X509IssuerName> 
 EMAILADDRESS=name@2wire.com,CN=2Wire,OU=CMS,O=2Wire,L=San\20Jose, 
ST=California,C=US 
 </X509IssuerName> 
 <X509SerialNumber>4</X509SerialNumber> 
 </X509IssuerSerial> 
 <X509SubjectName> 
 CN=eng.bba.certs.2wire.com,OU=CMS,O=2Wire,L=San\20Jose,ST=CA,C=US 
 </X509SubjectName> 
 <X509Certificate> 
MIIEUjCCA7ugAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgT 
CkNhbGlmb3JuaWExETAPBgNVBAcTCFNhbiBKb3NlMQ4wDAYDVQQKEwUyV2lyZTEMMAoGA1UECxMD 
Q01TMQ4wDAYDVQQDEwUyV2lyZTEfMB0GCSqGSIb3DQEJARYQZWJyb3duQDJ3aXJlLmNvbTAeFw0w 
MjA5MDUyMDU4MTZaFw0xMjA5MDIyMDU4MTZaMG0xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTER 
MA8GA1UEBxMIU2FuIEpvc2UxDjAMBgNVBAoTBTJXaXJlMQwwCgYDVQQLEwNDTVMxIDAeBgNVBAMT 
F2VuZy5iYmEuY2VydHMuMndpcmUuY29tMIIBtzCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIp 
Ut9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdr 
mVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iID 
GZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC 
+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWR 
bqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYQAAoGATBAS 
A/mjLI8bc2KM7u9X6nHHvjmPgZtTBhr1/Fzs2AkdYCYMwyy+v+OXU7u5e18JuKG7/uolVhjXNSn6 
ZgObF+wuMoyP/OUmNbSkdN1aRXXHPRsW2CcG3vjfV+Csg/LP3zfDxDkImsC8LuKXht/g4+nksA/3 
icRQXWagQJU9pUSjgdAwgc0wHQYDVR0OBBYEFMTl/ebdHLjaEoSS1PcLCAdFX32qMIGbBgNVHSME 
gZMwgZChgYqkgYcwgYQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMREwDwYDVQQH 
EwhTYW4gSm9zZTEOMAwGA1UEChMFMldpcmUxDDAKBgNVBAsTA0NNUzEOMAwGA1UEAxMFMldpcmUx 
HzAdBgkqhkiG9w0BCQEWEGVicm93bkAyd2lyZS5jb22CAQAwDgYDVR0PAQH/BAQDAgeAMA0GCSqG 
SIb3DQEBBQUAA4GBAF1PGAbyvA0p+6o7nXfF3jzAdoHdaZh55C8sOQ9J62IF8D1jl6JxR7pjcCp2 
iYmWkwQMncGfq+X8xP7BIqntDmIlYXuDTlXbyxXsu6lnT7nCbJwMwlLOxFwN+Axy7BM3NkAFE5Mb 
aaoJWtmD1QrvcAFfDhLeBT+tIRueK7Pq9LDS 
 </X509Certificate> 
 <X509Certificate> 
MIICeTCCAeICAQAwDQYJKoZIhvcNAQEEBQAwgYQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp 
Zm9ybmlhMREwDwYDVQQHEwhTYW4gSm9zZTEOMAwGA1UEChMFMldpcmUxDDAKBgNVBAsTA0NNUzEO 
MAwGA1UEAxMFMldpcmUxHzAdBgkqhkiG9w0BCQEWEGVicm93bkAyd2lyZS5jb20wHhcNMDEwNzMx 
MDMwNjQ5WhcNMDcwMTIxMDMwNjQ5WjCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3Ju 
aWExETAPBgNVBAcTCFNhbiBKb3NlMQ4wDAYDVQQKEwUyV2lyZTEMMAoGA1UECxMDQ01TMQ4wDAYD 
VQQDEwUyV2lyZTEfMB0GCSqGSIb3DQEJARYQZWJyb3duQDJ3aXJlLmNvbTCBnzANBgkqhkiG9w0B 
AQEFAAOBjQAwgYkCgYEA1ISJbL6i0J/6SBoet3aA8fki8s7pb/QUZueWj+0YKoDaQWh4MUCT0K06 
N/0Z2cLMVg8JyezEpdnh3lVM/Ni5ow2Mst4dpdccQQEHouqwNUWIBFU196/LPRyLjoM2NeIXSKMj 
AdPwvcenxmqeVBr/ZUmr4JQpdSI2AZJuHvCIjUsCAwEAATANBgkqhkiG9w0BAQQFAAOBgQBa3CCX 
ga9L0qrGWxpNj312Az+tYz8bpEp2e2pAVrJHdW/CJ0uRlE341oTkhfYFa5CuuieF7Jcwf1B3+cGo 
JrLWqeKqsNnrbmMFC/9hnrLlgZKEKi0POaGSFS/Pw9nodGWFZCiaQmeG+J6CWeASiFMdwgRGvESW 
axfzzIKiXsXwkA== 
 </X509Certificate> 
 </X509Data> 
 </KeyInfo> 
 <dsig:Object xmlns="" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="option0"> 
 <Option> 
 <VSerialNum>987654321</VSerialNum> 
 <DeviceId> 
 <Manufacturer>2Wire</Manufacturer> 
 <OUI>00D09E</OUI> 
 <ProductClass>Gateway</ProductClass> 
 <SerialNumber>123456789</SerialNumber> 
 </DeviceId> 
 <OptionIdent>First option name</OptionIdent>
<OptionDesc>First option description</OptionDesc> 
 <StartDate>20021025T12:06:34</StartDate> 
 <Duration>280</Duration> 
 <DurationUnits>Days</DurationUnits> 
 <Mode>EnableWithExpiration</Mode> 
 </Option> 
 </dsig:Object> 
 <dsig:Object xmlns="" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="option1"> 
 <Option> 
 <VSserialNum>987654322</VSerialNum> 
 <DeviceId> 
 <Manufacturer>2Wire</Manufacturer> 
 <OUI>00D09E</OUI> 
 <ProductClass>Gateway</ProductClass> 
 <SerialNumber>123456789</SerialNumber> 
 </DeviceId> 
 <OptionIdent>Second option name</OptionIdent> 
 <OptionDesc>Second option description</OptionDesc> 
 <StartDate>20021025T12:06:34</StartDate> 
 <Duration>280</Duration> 
 <DurationUnits>Days</DurationUnits> 
 <Mode>EnableWithExpiration</Mode> 
 </Option> 
 </dsig:Object> 
</Signature>

7、WEB身份管理

7.1 介绍

7.2 使用被驱逐的RPC方法

7.3 WEB身份管理程序

(1)Web身份管理机制基于一种模型,在这种模型中Web服务器与ACS相关联并可以与ACS进行通信。每当此web服务器希望识别用户的CPE或使CPE为其他目的与ACS建立通信时,就会发生以下事件序列(在正常情况下):
<1>用户的浏览器访问的网页需要了解用户的CPE或与用户的CPE进行通信。
<2>该网站将浏览器重定向到一个只能从CPE的私有网络访问的特定URL(LAN)接口,浏览器通过该接口“踢”CPE,通过CGI参数向CPE提供执行后续步骤所需的信息(参见D.4节)。
<3>CPE通知ACS它已经被踢出,使用定义中的“踢出”RPC方法调用附录A.在这个方法调用中,CPE识别自身并传递信息来唯一地识别浏览器会话。
<4>ACS通过传递一个URL来响应这个方法调用,CPE应该重定向用户的浏览器。这个URL通常包含标识会话状态的CGI参数。当连接打开时,ACS还可以启动任何其他适当的RPC事务。
<5>CPE通过将浏览器重定向到ACS指示的URL来响应浏览器的HTTP请求。
(2)

(3)例子


图片.png

7.4 LAN侧的接口

CPE可以通过提供一个局域网端web URL来支持web身份管理,该URL可以通过本地网络上的浏览器访问。
CPE中的相关web服务器应该支持CGI参数传递给附录a中定义的kick RPC方法中的相应参数。推荐的参数列在表64中。
(1)推荐用于kick URL的CGI参数
<1>command
string(32)
在kick方法调用的Command参数中传递的值。这个CGI参数允许ACS识别它要执行的命令,以响应所产生的kicking方法调用。
<2>arg
string(256)
在kick方法调用的Arg参数中传递的值。ACS可以使用这个CGI参数为相应的命令传递参数。这个参数的特定用途没有定义。
<3>next
string(1024)
要在kick方法调用的Next参数中传递的值。这包含网站希望浏览器在踢出过程完成后发送的URL。ACS处理。kick方法可能覆盖这个请求,并在kick响应中返回一个不同的URL。
(2)

http://cpe-host-name/kick.html?command=<#>&arg=<arg>&next=<url>

CPE收到相应的HTTP GET请求后,CPE应该发起一个kicking方法调用,使用CGI参数填写附录a中定义的方法参数。
CPE应该将每小时发送给ACS的kick方法调用的数量限制为一个定义的最大值。接收会导致超过这个最大值的kick请求被认为是安全违规,不应该导致调用kick方法。

8、签名包的格式

8.1 介绍

8.2 签名包格式结构体

包格式

(1)固定长度的头
报头是一个固定长度的结构,包括序言、格式版本以及命令列表和有效负载组件的长度
(2)命令列表
命令列表包含在提取和安装包中包含的文件时要遵循的一系列指令。
每条命令都采用TLV (type-length-value)形式。
(3)签名
包的这一部分包含一个PKCS #7数字签名块,其中包含一组如E.5所述的零个或多个数字签名。
(4)负载文件
软件包的这一部分包含一个或多个要按照命令列表中的说明安装的文件。
本文档没有定义任何特定的有效载荷文件格式。

编码环境

除非另有明确说明,以下编码约定贯穿本规范:
(1)多八位数字值以网络字节顺序编码(大端字节格式)。
(2)文件或目录路径名以UNIX格式指定(例如:“/dir/dir/base.ext”)。

8.3 头部格式

有签名的包头是一个固定长度的24字节结构。标题的格式定义在表66。
(1)Preamble(序言)
8字节
包含以下十六进制值的固定八位序列:
32 57 49 52 45 5f 53 50
经过签名的包格式的解释器必须验证该前缀是否包含此值序列,这样才能认为该包有效。
(2)Major version
32位的整形数据
一个包含报文格式版本的主要部分的数值。符合此规范的实现的主要版本为1。更换为主版本表示此格式的不完整更改。
(3)Minor version
32位的整形数据
该数值表示包格式版本的次要组件。符合此规范的实现有一个小版本0(0)。
对次要版本的更改表示对包格式的兼容更改。实现该规范版本的实现应该能够解释使用具有不同次要版本值的格式编码的包
(4)Command list length
32位的整形数据
命令列表的长度
(5)Payload length
32位的整形数据
负载的长度

8.4 命令列表的格式

格式
(1)Type
32位的整形数据
指定特定的命令
(2)Length
32位的整形数据
指定Value字段的长度(以字节为单位)。该命令的总长度为length + 8个字节。
(3)Value
数据格式看情况
与特定命令类型相关的零个或多个参数字节。

命令类型

结束命令

该命令表示命令列表的结束。此命令不需要出现在命令列表中,但如果遇到,收件人必须停止解析包的命令列表部分的其余部分。
该命令的Length参数必须为0(零),表示后面没有Value字段。

提取和添加命令

删除命令

删除命令包括删除文件、删除版本文件和删除子树。

移动命令

版本和描述命令

超时命令

上面的状态图用于在下载期间确定使用哪个超时值。与timeout命令相关联的每个超时类型的定义如表73所示。
(1)Initial Timeout
初始化超时
(2)Initial Activity Timeout
初始化活动的超时
(3)Recoverable Timeout
可恢复的超时
(4)Unrecoverable Timeout
不可恢复的超时

重启命令

此命令指示收件人重新启动以完成安装过程。如果使用,该命令必须是命令列表中的最后一个命令(End,如果存在)。
该命令的Length参数必须为0(零),表示后面没有Value字段。

格式化文件系统

此命令指示收件人在安装过程中重新格式化其文件系统。如果使用此命令,则意味着文件系统中的所有现有文件(或与安装过程相关的文件系统部分)将被清除,并由包中的新文件覆盖。
该命令的Length参数必须为0(零),表示后面没有Value字段。

最小和最大版本命令

角色命令

最小存储命令

请求属性命令

8.5 签名

签名部分紧跟着包文件的命令列表部分。签名部分由一个使用PKCS #7签名语法[14]的数字签名块组成。
特别地,签名块只包含一个PKCS #7 SignedData对象,它包含0个或多个签名,并且有以下约束:
(1)签名是“外部签名”,这意味着已签名的消息没有封装在SignedData对象中。相反,已签名的消息数据由包的头和命令列表组件构成的八位字符串组成。
(2)contentInfo的contentType元素必须指明类型“data”。
(3)contentInfo的content元素必须为空,因为这是一个外部签名,消息数据驻留在签名本身之外。
(4)每个签名使用的摘要算法必须是SHA-1类型。
(5)每个签名使用的digestEncryptionAlgorithm必须是RSA类型。
(6)Tag值表示与整个SignedData对象关联的标识符必须小于或等于30,导致标识符的单字节编码。
(7)如果签名块中没有签名,则没有扩展的证书或证书撤销列表,SignerInfo集将为空,digestAlgorithms集可能为空。
SignedData中的所有其他字段必须正常显示。
请注意,空签名块的内容独立于包的内容,因此可以预先计算为固定的字节序列。

上一篇 下一篇

猜你喜欢

热点阅读