• TR069协议小结


        也称为CWMP,是在Internet网上通过wan口控制通信终端设备的协议。其协议流程如下图所示:

    具体网上有很多资料。其主要的两个内容是:HTTP Client模型、DATA模型。

     

        HTTP Client模型是精华,也是比较复杂的。目前较为可靠的开源库有libevent,网上有基于该开源库编写的Client模型,名字好像叫evcpe。在公司用的这套代码,我只是大概学习了下,很复杂。

        上图所示的是协议的一个完整的session,该session由终端设备发起,且不停地重复循环该session。当然,若ACS端没有指令(或终端没有更新等),那么session到Inform后就会终止。然后等待开始下一个session。

    终端设备主动发起协议session的方法有以下几种:(以下client即终端设备)

    1. client周期性的主动发起,即一个周期发起一次session;
    2. client端的参数有更新(如LAN端配置、手动配置等),会主动发起session;
    3. client在另一个端口上维护一个creq监听,当ACS端要求配置时,回向client的creq端口发请求,然后client被动发起session。
    4. 。。。。。。或者还有其他的吧。。。。。。

    把这些方法揉和在一起,实现起来时很复杂的,那套event的代码,我最终也没能全看明白,以后有机会再看吧。从测试的结果看,好像有这几种方法,不过也可能不对,姑且这样认为。

     

    DATA模型也是很重要的,大部分参数模型由TR098协议规定好了,只要照样子做就行。要做的工作主要两个方面:

    1. 在终端本地,用一种方式来表示数据,与ACS端的数据对应。这里我们用的是xml文件,按照tr098把参数写在xml文件中,方便参看。系统启动后,读取该xml文件,并在内核中建立一个庞大的类似于数组的结构存储这些参数。并且在该数组结构和xml文件间实现一种类似文件系统中的磁盘更新的机制。
    2. 是各种get/set作用到实际的系统中去。这里要根据各平台的特性来做了。

     

    要讲的也很少,有时间还是去看看那个代码,应该是很有价值的。

  • 相关阅读:
    IP地址结构分类(包括主机号和网络好计算)
    抓包工具fiddler的Https证书设置
    获取目录结构,并写到txt文档里
    十五、React:简单点餐实例:知识点,html解析写法
    git commit -m 和 git commit -am 区别
    用Git管理项目进行版本控制
    pycharm 设置项目的编译器
    十四、 React路由(react-router4.x): 动态路由、get传值、React中使用url模块
    十三、react-router 4.x的基本配置
    进程间的通讯
  • 原文地址:https://www.cnblogs.com/zmkeil/p/3229224.html
Copyright © 2020-2023  润新知