原创作品,转载请注明出处,严禁非法转载。如有错误,请留言!

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——开篇之作的更多相关文章

  1. CWMP开源代码研究——git代码工程

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...

  2. CWMP开源代码研究5——CWMP程序设计思想

    声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...

  3. CWMP开源代码研究2——easycwmp安装和学习

    声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.n ...

  4. CWMP开源代码研究3——ACS介绍

    声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...

  5. CWMP开源代码研究——cwmp移植

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...

  6. CWMP开源代码研究7——cwmp移植

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...

  7. CWMP开源代码研究6——libcwmp动态库开发

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 为了使程序具有通用性,便于扩展和维护.采用了"模块"插入的思想.将设备业务相 ...

  8. CWMP开源代码研究4——认证流程

    TR069 Http Digest 认证流程   一 流程及流程图 1.1盒端主动发起Http Digest认证流程  盒端CPE                                    ...

  9. CWMP开源代码研究——stun的NAT穿透

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 参考: http://www.cnblogs.com/myblesh/p/6259765.htm ...

随机推荐

  1. adb命令

    一下是记录一些日常经常用的adb command, adb root: adb shell -> su -> return -> adb root(首先让安卓设备获得root权限,然 ...

  2. ATM跨行取款的清算方式

    ATM跨行取款和POS机是类似的,因为没有商户参与,所以不需要收单清算,过程更为简单. 回到文章最开头的例子:你拿着一张工行卡去建行的ATM取了100元,这个跨行业务在CNAPS体系中的过程如下: 你 ...

  3. Combobox的使用

    第一次写博客,只是对自己在工作中遇到的问题进行一次总结回顾,为以后有同样的错误有一个参考: 由于最近空余时间很少,只是零零散散的把平时记录的笔记搬到博客园而已,博客中可能出现一些低级错误,希望互相学习 ...

  4. hive 删除分区数据

    alter table 表 drop partition(分区); 例: 表是:  user_all_info 分区是 day_id,month_id 我要删除10月10号的数据 那么: alter ...

  5. jQuery刮彩票兑奖效果

    效果体验:http://keleyi.com/a/bjad/uaq24pxt.htm 其中拖拽刮涂层效果使用jquery UI的draggable方法,请参考:http://keleyi.com/a/ ...

  6. JS学习笔记10之Math对象

    -->Math对象 常用属性和方法-->使用Math对象制作相应的效果 Math对象用于执行数学任务 一.Math对象的属性: 二.Math对象的方法: 三.常用属性和方法: Math.P ...

  7. RegExp类型exec()方法的返回值说明

    之前看别人写的插件经常会用到RegExp对象来验证输入,并且获取一些那时我并不晓得是什么东西的数组,来取值进行自定义的逻辑处理.今天学习了一下RegExp类型.终于有了一个初步的了解,至少不会看一会就 ...

  8. 屌丝giser成长记-研一篇(上)

    2011年本科毕业之后,我选择了保研GIS研究生,继续了我的GIS研究生涯,读研的童鞋们注意了,读研选择什么样的导师很重要,因为不同的导师有不同的人脉,从浅一点的来说,导师手头的开发项目多的话,你自己 ...

  9. iOS 事件处理之UIResponder简介

    在用户使用app过程中,会产生各种各样的事件 iOS中的事件可以分为3大类型:触摸事件.加速计事件.远程控制事件 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处 ...

  10. Azure IoT带来更高效的新能源生产和会看人脸色的无人超市

    全球分析机构都认为物联网将在未来几年呈现爆发式增长,到2020年,各种传感器.新型物联网设备,再加上传统PC.智能手机.平板电脑.网络电视,以及各类可穿戴智能设备,将交织成一个由300亿到500亿台设 ...