CWMP工作原理
CWMP工作流程
如图5-2所示,通过ACS更改CPE的某参数的值为例,介绍CWMP的工作流程。
CWMP的工作流程如下:
- 会话连接初始化。CPE是会话的发起者。如果ACS需要主动发起会话的建立,ACS先给CPE发起Connection Request(这时CPE是作为HTTP Server)来触发CPE发起会话建立。
- SSL初始化,建立安全机制。
- CPE首先调用ACS的Inform RPC方法,通过向ACS发送Inform请求,上报设备信息,请求建立CWMP连接。
- 若CPE通过认证,ACS回应Inform response,Inform RPC方法处理结束,CWMP连接建立成功。
- CPE发送HTTP post(empty),表明CPE没有调用ACS支持的RPC方法。
- ACS通过向CPE调用GetParameterValues RPC方法,查询CPE的相关参数。
- CPE发送GetParameterValues response,告知ACS要查询的信息,GetParameterValues RPC方法调用结束。
- ACS通过向CPE调用SetParameterValues RPC方法,对CPE进行相关配置。
- CPE发送SetParameterValues response,告知参数配置情况,SetParameterValues RPC方法调用结束。
- ACS发送HTTP response(empty),表明ACS没有再调用CPE支持的RPC方法。
- CPE拆除连接,完成本次会话。
如图5-2所示,CWMP会话经历三个阶段。
会话发起
CPE发起连接
CPE启动后根据本地配置或DHCP服务器分配的ACS URL值找到相应的ACS,并自动发起连接。
CPE可以周期性发送Inform报文。当周期(如1小时)到达时,CPE会自动发送Inform报文来建立连接。
CPE可以定时发送Inform报文。当时间点到达时,CPE会自动发送Inform报文来建立连接。
如果当前会话没有结束,但是连接异常中断,而且CPE自动重新连接的次数还没有达到上限,此时,CPE也会自动发起连接。
ACS操作触发
ACS可以在任何时候自动向CPE发起连接请求(Connect Request),通过CPE的认证后,可以与CPE建立连接。
这种方式需要CPE与ACS已经进行过至少一次通信。在这次通信中,如果ACS希望以后先发起连接请求,它会将CPE的IP地址保存在地址列表中。
支持CPE和ACS之间通信时使用CPE和ACS鉴权。
ACS鉴权:当CPE向ACS发送Inform报文请求连接时,根据本地配置的ACS URL地址,请求与ACS建立连接,通过ACS的认证(即匹配ACS的用户名和密码)后,可以与ACS建立连接。
CPE鉴权:当ACS向CPE发送HTTP请求报文时,根据Inform报文里携带的CPE地址,请求与CPE建立连接,通过CPE的认证(即匹配CPE的用户名和密码)后,可以与CPE建立连接。
支持CPE和ACS之间通信时使用SSL(Security Socket Layer)认证。
它保证了事物处理的机密性,数据的完整性,以及CPE跟ACS之间的基于证书的鉴权。
SSL协议的优势在于它是与应用层协议独立无关的。高层的应用层协议(例如:HTTP、FTP、Telnet等)能透明的建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。数字证书包含了个人、企业或设备的信息和公钥:- 公钥:同时拥有一把公共密钥(公钥)对外开放,用于加密和验证签名。
- 私钥:每个用户拥有一把仅为本人所掌握的私有密钥(私钥),用于解密和签名。
- 签名:签字之后表示文件生成的作者,签名后其他人无权修改,所以也就保证了身份认证和文件的完整性。
会话通信
在会话已经成功发起,且在会话终止之前,CPE或ACS可以发送请求,另一方则接收请求,可进行查询/设置CPE的参数、上传/下载文件等操作。
会话终止
CPE是对ACS的连接的操纵方,由CPE来负责连接的终止。
在会话的过程中,ACS和CPE已经没有更多的请求发送给对方,都已经发送和接收了所有的响应消息时,CPE可终止会话。
CWMP操作方法
ACS对CPE的管理和监控是通过一系列的操作来实现的,这些操作在CWMP协议里称为RPC(Remote Procedure Call)方法。
支持的标准RPC方法有:
Generic Method:CPE和ACS都需支持该方法。如表5-1所示,CPE或ACS可以调用这个方法。
- CPE Methods:CPE需支持这些方法。如表5-2所示,只有ACS可以调用这些方法。
表5-2 CPE Methods
方式名
描述
SetParameterValues 用于ACS设置CPE的参数值 GetParameterValues 用于ACS获得CPE的参数值 GetParameterNames 用于ACS发现在一个特定的CPE中可访问的参数 SetParameterAttributes 用于ACS设置CPE的参数属性值 GetParameterAttributes 用于ACS获取CPE的参数属性 AddObject 用于ACS在设备的数据模型中创建对象实例 DeleteObject 用于ACS在设备的数据模型中删除对象实例 Download 用于ACS要求CPE到指定的URL地址下载指定的文件来更新CPE的本地文件 Upload 用于ACS要求CPE将指定的文件上传到ACS指定的位置 Reboot 用于当CPE故障或软件升级时,ACS对CPE进行远程重启 FactoryReset 用于ACS要求CPE恢复出厂配置 ScheduleInfrom 用于ACS设置CPE在指定的延时时间后发送inform报文 - ACS Methods:ACS需支持这些方法。如表5-3所示,只有CPE可以调用这些方法。