关于tr069网管开发系列教程
原创作品,转载请注明出处,严禁非法转载。如有错误,请留言!
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核心部分:设计思想,代码框架,实现功能等
7. cwmp lib库: 如何开发自己的节点,功能等
8. cwmp移植:cwmp依赖环境,交叉编译,测试使用
9. 高级功能介绍: stun的NAT穿透,SSL加密等(待续)
10.Android终端及其实现TR069网管代理的方法(未完)
一. 协议规范
关于协议理解不是本博文系列的重点,这里给出几篇文章作为读者的参考,已经介绍了很详细。不过,还是要建议必须完整阅读一遍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。
关于tr069网管开发系列教程的更多相关文章
- C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- C#微信公众号开发系列教程四(接收普通消息)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- EcShop二次开发系列教程–总纲
EcShop作为老牌的B2C独立网店系统,功能非常全名,强大的文件.数据库缓存机制,保证前后台系统执行速度更快.系统平稳运行.但是过多的功能也或多或少的会影响到系统的整个效率,所有在使用EcShop搭 ...
- Arcgis for Androd API开发系列教程(一)——地图显示与GPS定位
序:最近呢,工作鸭梨不是怎么大,对于自己爱折腾的想法又冒出了水面,开始自己的android开发的学习之旅.但是呢,本人是做GIS的,所以呢,就打算从这方面入手看看,是不是有什么比较好玩的玩意呢,这才导 ...
- C#微信公众号开发系列教程三(消息体签名及加解密)
http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...
- C#微信公众号开发系列教程二(新手接入指南)
http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...
- 微信公众号开发系列教程一(调试环境部署续:vs远程调试)
http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- HTML5游戏开发系列教程7(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-7/ 今天我们将完成我们第一个完整的游戏--打砖块.这次教程中,将 ...
随机推荐
- 剑指Offer-求1+2+3+...+n
package Other; /** * 求1+2+3+...+n * 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句( ...
- weka实际操作--构建分类、回归模型
weka提供了几种处理数据的方式,其中分类和回归是平时用到最多的,也是非常容易理解的,分类就是在已有的数据基础上学习出一个分类函数或者构造出一个分类模型.这个函数或模型能够把数据集中地映射到某个给定的 ...
- TCP 详解
计算机网络中比较中要的无非就是 TCP/IP 协议栈,以及应用层的 HTTP 和 HTTPS . 前几天一直炒的的比较火的就是 HTTP/2.0 了,但是其实 HTTP/2.0 早在2015年的时候就 ...
- 【Java】 重拾Java入门
[概论与基本语法] 取这个标题,还是感觉有些大言不惭.之前大三的时候自学过一些基本的java知识,大概到了能独立写一个GUI出来的水平把,不过后来随着有了其他目标,就把这块放下了.之后常年没有用,早就 ...
- shiro权限框架(五)
五.与Spring集成 5.1 环境准备 <dependency> <groupId>org.apache.shiro</groupId> <artifact ...
- 小程序实现非swiper组件的自定义伪3D轮播图
效果如下: 我用了很笨的方法实现的,大致就是: 1.当前点击的div(view)如果前后都有内容,那么,当前div(view)就设置到中间,前一个就设置到左边,前一个的前面所有全部设置到最左边,后面一 ...
- Eclipse项目中web app libraries和 Referenced Libraries区别
Referenced Libraries是编译环境下使用的JAR包,所谓编译环境下使用的JAR包, 就是说你在Eclipse中进行源文件的编写的时候,所需要引用到的类都从Referenced Li ...
- JavaScript(第二十七天)【错误处理与调试】
JavaScript在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑.ECMAScript第3版为了解决这个问题引入了try...catch和throw语句以及一些错误类型 ...
- bug终结者 团队作业第二周
bug终结者 团队作业第二周 我们小组选取游戏"开心消消乐",回答问题: 1. 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的? 他们的目标都是盈利 ...
- Linux下vim上编辑实现进度条
1.效果展示: 进度条,先来看一个效果: 这是进度结果,模拟实现了进度条的前进.百分比的现实.以及稍微的动画特效. 2.原理描述: 因为Linux系统下的输出有缓存,如果及时刷新显示,就可以得到我们想 ...