CWMP开源代码研究1——开篇之作
原创作品,转载请注明出处,严禁非法转载。如有错误,请留言!
email:40879506@qq.com
声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的。 如有任何问题,欢迎和我交流。(企鹅号:408797506)
既然是开篇,暂时就给自己定一个文章计划列表
1. 开篇总介绍: 协议规范资料,acs环境,免费easycwmp开发设计思想,个人商业cwmp开发
2. easycwmp: 安装和使用
3. ACS介绍:openacs部署,联创平台acs,华为itms,Vigoracs,XACS等常见acs平台
4. cwmp知识储备:acs反向链接,http认证(摘要,基本认证),RPC method支持, Event事件Code等
5. 整体程序设计: 整个程序结构分为两部分,cwmp core和lib库,前者实现协议核心部分,后者独立动态库主要完成规范节点,私有节点,和RPC方法,事件通知,参数监测等功能
6. cwmp lib库: 如何根据自身设备进行开发功能,节点实现等
7. cwmp移植:cwmp依赖环境,交叉编译,测试使用
8. 高级功能介绍: stun的NAT穿透,SSL加密, IPV6双栈协议等。
一. 协议规范
关于协议理解不是本博文系列的重点,这里给出几篇文章作为读者的参考,已经介绍了很详细。不过,还是要建议必须完整阅读一遍TR069英文规范。
中英文规范:http://download.csdn.net/detail/eryunyong/9293103
H3C技术:http://www.h3c.com.cn/Service/Channel_Service/Operational_Service/ICG_Technology/201011/699658_30005_0.htm
实际应用:http://www.docin.com/p-1306443672.html
二. 开源代码介绍
关于CWMP代码的开源实现主要有如下四个:mini-cwmp-master,netcwmp-master, freecwmp, easycwmp。 其中,前两个开源程序mini-cwmp-master和netcwmp-master已经没有再继续被维护,而且netcwmp-master据说已经开始收费了,所以对于小公司为了节约成本建议看看后面两个开源程序的代码进行研究。easycwmp是freecwmp的升级版,对easycwmp的代码进行了相关优化,而且目前维护的最好(推荐新手拿这个来研究CWMP协议)!下面提供几个开源代码的下载地址和介绍
netcwmp-master: http://www.ymcn.org/d-cgqi.html 或者 http://download.csdn.net/detail/eryunyong/9293063
freecwmp: http://www.freecwmp.org/
easycwmp: http://www.easycwmp.org/或者http://support.easycwmp.org/my_view_page.php
三. ACS环境搭建
这里依然还是给一些参考文章,因为网上资料太多了。
后续文章会专门介绍ACS安装和测试
四. 开发设计来源
二次开发结构设计来源于开源程序EasyCwmp的设计理念,关于介绍可以参考官网:http://www.easycwmp.org

五. 二次开发
如何利用CWMP开源程序合理设计我们的架构,并快速地应用于商业产品是该博文的重点。
下面先介绍目前在我们的项目产品中如何重新设计CWMP的架构和实现,给需要的朋友做一个参考:
4.1 系统概述
系统名为“TR069平台”,属于远程网关系统的一个子系统。主要功能是通过CWMP协议来远程管理设备。该系统在整体系统中的位置如图所示:

4.2 设计的需求
TR069主体架构与设备相关进行分离,达到各产品使用相同的框架,设备相关的编译成一个Library。通过不断的实践,可以使TR069主体框架不断成熟。并且对于同款产品供应给不同的通讯商(电信,移动,联通等),相同的功能,通过可能仅需要改变XML,而不需要改变代码来达到目的。
4.3 设计的原理
1) 对于在设备上实现多个TR069客户端的考虑
基于公司目前有自主研发的网管平台,可以管理所有出厂的公司设备,而运营商也有网管平台,这时候就需要考虑在设备上实现多个TR069客户端的需求。考虑过使用多线程的方式来实现这一需求,但还是觉得用进程来实现,从逻辑上来说简单清晰一点。
2) 对于协议的扩展的考虑
对于TR069协议来说,有些东西是可以扩展的。譬如事件,可以有自定义的事件。譬如方法,也可以扩展自定义方法。这些都需要在实现的时候考虑清晰。
3) 对于不同设备,不同产品线差异的考虑
需要在配置文件中体现出来。
4) 对于不同TR069客户端之间冲突的考虑
在通过TR069改变系统配置的时候,考虑使用进程间互斥来达到目的。
4.3 代码架构设计流程
在开发过程中,协议本身的架构一般情况下并不需要我们修改,因为我们抽离了业务相关(和设备相关)的代码为library。
CWMP开源代码研究1——开篇之作的更多相关文章
- CWMP开源代码研究——git代码工程
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...
- CWMP开源代码研究5——CWMP程序设计思想
声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...
- CWMP开源代码研究2——easycwmp安装和学习
声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.n ...
- CWMP开源代码研究3——ACS介绍
声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...
- CWMP开源代码研究——cwmp移植
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...
- CWMP开源代码研究7——cwmp移植
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...
- CWMP开源代码研究6——libcwmp动态库开发
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 为了使程序具有通用性,便于扩展和维护.采用了"模块"插入的思想.将设备业务相 ...
- CWMP开源代码研究4——认证流程
TR069 Http Digest 认证流程 一 流程及流程图 1.1盒端主动发起Http Digest认证流程 盒端CPE ...
- CWMP开源代码研究——stun的NAT穿透
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 参考: http://www.cnblogs.com/myblesh/p/6259765.htm ...
随机推荐
- java——获取从控制台输入的数据的方法
一.使用标准输入串System.in System.in.read(); //一次只读入一个字节数据,但是我们往往希望获得的是一个字符串或者一组数字 二.使用Scanner获得一个字符串或一组 ...
- Linux 定时任务crontab
crontab定时任务格式 1 * * * * * command 2 第1列表示分钟1-59 每分钟用*或者 */1表示 3 第2列表示小时1-23(0表示0点) 4 第3列表示日期1-31 5 第 ...
- [注意]SerialPort操作PCI-1621D多串口卡,出现异常"参数不正确"
开发LED大屏显示.40-20mA模拟量输出的时候,经常要与串口打交道.但是Windows自带的SerialPort串口操作组件貌似兼容性 不是太好,或是SerialPort本身有BUG,在操作PCI ...
- 功能强大的滚动播放插件JQ-Slide
查看效果:http://keleyi.com/keleyi/phtml/jqplug/4.htmJQ-Slide插件功能强大,滚动方式自由多样全部滚动方式 方式一 方式二 方式三 方式四 方式五 方式 ...
- 单行文字滚动就用myslider
单行文字滚动就用myslider,myslider是一个小型的内容滚动jquery插件. 首先请看实例:http://keleyi.com/jq/myslider/demo/4.htm 然后来看代码: ...
- H5中的touch事件
touch中共有touchstart.touchmove和touchend三个事件: touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend:触摸结 ...
- iOS适配 旧项目工程在iOS9下不能正常显示
在iOS开发中,很多时候会用到旧项目,比如版本的升级.使用Demo等等, iOS SDK正在不断的升级,不断的升级给iOS开发带来了新的活力. 然而在iOS SDK新的版本出来之后,旧项目可能会出现新 ...
- DevExpress TreeList使用心得
来自:http://www.cnblogs.com/sndnnlfhvk/archive/2011/05/15/2046920.html 最近做项目新增光纤线路清查功能模块,思路和算法已经想好了,些代 ...
- ReactiveCocoa代码实践之-更多思考
三.ReactiveCocoa代码实践之-更多思考 1. RACObserve()宏形参写法的区别 之前写代码考虑过 RACObserve(self.timeLabel , text) 和 RACOb ...
- Objective-C Runtime 运行时之一:类与对象
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...