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 ...
随机推荐
- Javaweb——过滤器映射
什么是过滤器? 过滤器:从字面上看,可以理解为将具有杂质的水过滤,留下干净的水.那么从IT的角度上理解.过滤器:是处在源数据(数据库之类的)和目标数据(显示页面)的中间组件.对于Web应用来说,过滤器 ...
- vmwawre 虚拟机优化配置
vmware虚拟机如何设置不当的话会造成运行速度慢,并影响主机运行,甚至会出现死机. 一下是提高vmware虚拟机运行速度的几个技巧, 文章来自:http://blog.csdn.net/shanzh ...
- 如何基于OM模型使用C#在程序中给SharePoint的BCS外部数据类型的字段赋值
概述: 外部内容类型和数据,SharePoint从2010这个版本开始就对BCS提供非常强大的支持,点点鼠标就可以取代以前直接编辑XML的方式来设置SharePoint到SQL数据库的连接.非常方便地 ...
- iOS之两个ImageView实现图片滚动
原创作者:codingZero 导语 在不少项目中,都会有图片轮播这个功能,现在网上关于图片轮播的框架层出不穷,千奇百怪,笔者根据自己的思路,用两个imageView也实现了图片轮播,这里说说笔者的主 ...
- 友盟(Swift)-集成、统计用户数量、具体页面访问数量、具体按钮点击数量
什么是友盟.有什么用? 这些傻瓜问题这里就不解释了,可以自己百度去. 友盟提供的文档和demo都是oc的,这里用swift写了一个小demo,在此分享一下. 步骤1:友盟后台注册应用(iOS),拿到a ...
- iOS crash 追终 ,iOS 如何定位crash 位置
https://developer.apple.com/library/ios/technotes/tn2151/_index.html 错误分析是基于设备中的crash log 与 编译文件时生成的 ...
- RecyclerView-------MainActivity代码
package com.example.administrator.recyclerview; import android.support.v7.app.AppCompatActivity; imp ...
- iOS 常用三方类库整理
iOS 常用三方类库整理 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://gi ...
- IOS RunLoop浅析 一
RunLoop犹如其名循环. RunLoop 中有多重模式. 在一个“时刻”只能值执行一种模式. 因此在使用RunLoop时要注意所实现的效果有可能不是你想要的. 在这里用NSTimer展示一下Run ...
- Core Data的一些常见用法
一.简介 Core Data是一个纯粹的面向对象框架,其本质就是一个ORM(对象关系映射:Object Relational Mapping),能以面向对象的方式操作SQLite数据库.在实际开发中绝 ...