声明:原创作品,涉及的开源程序代码学习和研究,严禁用于商业目的。 如有任何问题,欢迎和我交流:408797506@qq.com(微信:408797506)。
1. 开篇总介绍: 协议规范资料,acs环境,免费easycwmp开发设计思想,个人商业cwmp开发
3. ACS介绍:openacs部署,联创平台acs,华为itms,Vigoracs,XACS等常见acs平台
4. cwmp知识储备:acs反向链接,http认证(摘要,基本认证),RPC method支持, Event事件Code等
5. 整体程序设计: 整个程序结构分为两部分,cwmp core和lib库,前者实现协议核心部分,
后者独立动态库主要完成规范节点,私有节点,和RPC方法,事件通知,参数监测等功能
11. 实现将源码移植到自己的产品
相关视频学习链接:
一. 协议规范
tr069协议主要涉及到tr069,tr098,tr111,tr069主要是通信协议的规范,交互的过程。tr098是数据节点的定义和数据模型,tr111是stun穿透的标准。建议必须熟悉TR069的相关英文规范。
中英文规范:http://download.csdn.net/detail/eryunyong/9293103
除此之外,还有一些国内运营商测试的需求规范等。
二. 开源代码介绍
目前开源cwmp中,维护最好、商用最广泛的就是easycwmp了。easycwmp是freecwmp的升级版,对easycwmp的代码进行了相关优化,同时也是openwrt项目应用的packet之一,推荐新手拿这个来研究CWMP协议,但是easycwmp还有一个纯C语言编写的商业版,毕竟是商业源码,推荐去看官网,商业和开源的差距:
- Commercial solution implemented with C. This solution is recommended for big DataModels. With shell solution, the execution of GetParameterValue of the whole DataModel tree containing more than 150 parameters, can take more than 20 seconds. However, with the C solution it takes a few milliseconds.
官网: easycwmp: http://www.easycwmp.org/
三. ACS环境搭建
了解ACS一些常见软件,比如openacs(鼻祖)、华为的itms、国外的vigoracs、还有xacs等等。
在后续文章会专门介绍ACS安装和测试。
四. 开发设计来源
如果要实现自己的产品开发,借鉴来自于EasyCwmp的设计理念,主要分为两个层次:分别是协议core层和数据模型datamodel层。 更多设计和开发过程可以参考官网:http://www.easycwmp.org
五. 如何开发
如何利用CWMP开源程序来进行产品的节点开发,并快速地应用于商业产品是博文系列的重点。
下面先简单介绍目前在一些主流的家用路由、企业网关、语音电话等产品中网络的网管架构部分,可以做一个参考:
4.1 系统概述
系统名为“TR069平台”,属于远程网关系统的一个子系统。主要功能是通过CWMP协议(基于可靠链接的TCP协议)来远程管理设备。该系统在整体系统中的位置如图所示:
4.2 设计的需求
TR069主体架构与设备相关进行分离,达到各产品使用相同的框架,设备相关的编译成一个动态Library或者静态库形式。通过不断的实践,可以使TR069主体框架不断成熟。并且对于同款产品供应给不同的通讯商(电信,移动,联通等),相同的功能,通过可能仅需要改变XML,而不需要改变代码来达到目的。
4.3 设计的原理
1) 对于在设备上实现TR069客户端的考虑
一般来说,除了Web网页或者SNMP代理等方式进行设备管理操作之外,设备还需要通过tr069协议连接到运营商的网管平台或者其他公司的对接平台进行管理,这时候就需要考虑在设备上实现TR069客户端的需求。
2) 对于协议的扩展的考虑
对于TR069协议来说,有些东西是可以扩展的。譬如事件,可以有自定义的事件。譬如方法,也可以扩展自定义方法。这些都需要在实现的时候考虑清晰。
3) 对于不同设备,不同产品线差异的考虑
需要在配置文件中体现出来。
4.4 代码架构设计流程
在开发过程中,协议本身的架构一般情况下并不需要我们修改,因为我们抽离了业务相关(和设备相关)的代码为DataModel层。