`
izuoyan
  • 浏览: 9019203 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于TR-069 协议的开发(一)

阅读更多

TR 069是DSL Fourm提出来的一种协议,即CWMP协议,主要是对 用户终端设备的管理。
其功能主要有两块组成ACS(Auto Config Server)和CPE(Customer Pression Equalment)。其具体功能请参考TR-069协议,网络上也有介绍,在此不再多说了。
最近公司接到了一个项目,主要是对电信的AP(Access Point)设备进行性能监控和管理。我也是项目组的开发人员,主要是负责ACS的搭建。
根据协议的描述 CPE会定时呼叫ACS,ACS也可以呼叫CPE。ACS呼叫CPE的时候,其实是
向CPE发送一个ConnectionRequest,经过授权认证等过程后,CPE会发个Inform给ACS,
其中包含了EventCode,根据EnventCode我们就可已知道是CPE主动呼叫的,还是ACS呼叫后,CPE才建立的连接。TR-069规定响应ACS的呼叫后的Inform Event Code是6 Connection Request。
我也是第一次进行通信方面的开发,以前没有接触过的东西。首先得要下个协议,在这里我有个感受,就是要下个原版的TR-069协议,自己去慢慢的理解,不懂单词要查,虽然是全英文的,但是也是最权威的,也是原滋原味的。
可 能看了协议后会觉得很蒙,很多代名词都不懂。SOAP,RPC。SOAP和PRC感觉有点像WebService,其实我也没有webservice的开 发经验,但是我觉得在TR-069协议中,ACS通过SOAP协议指定要调用CPE的哪些方法,以及需要的参数。然后通过RPC在CPE端执行指定的方 法,返回方法执行后的结果。然后在通过SOAP协议返回执行后的结果给CPE。
假如A系统有个查询手机号码的归属地的功能,那么B 系统中也要实现这个功能,那么两个系统可以通过通信的方式进行数据交互。B系统通过SOAP协议指定需要执行的功能(方法)和参数(手机号码),然后发送 给A系统。A系统接受了SOAP协议包含的XML,开始解析,然后调用自身的method,然后将执行后的结果封装成XML 格式的数据后发给B系统,B系统解析后获取执行的结果。总之,最重要的是通信。


ACS和CPE都是支持HTTP协议, 所有ACS只需要有HTTP容器就可以了。所以很自然的,我们就想到了Servlet来实现。我也不知道是啥格式的XML,但是公司催的紧,所有赶紧开工 了。既然不知道怎么实现,但是CPE会定时呼叫的,所有先把它呼叫后的东西接收过来看看,到底是什么。

目前测试的CPE是H3C的AP。
第一,创建ACSServlet,准备接收消息。
代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.seahigh.tyt.acs.util.AcsUtil;


/**
* ACS serverImp
*
* @author 汪心利
* @Create Time 2009-1-4下午04:34:42 (c)copy right seahigh 2009
*/
public class ACSServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// session 记住已执行的method

InputStream in = request.getInputStream();
String ip = request.getRemoteAddr();
InputStreamReader ir = new InputStreamReader(request.getInputStream());
BufferedReader input = new BufferedReader(ir);
String line;
String xml = "";
while ((line = input.readLine()) != null) {
if (line.trim().length() <= 0)
continue;
xml += line;
}
in.close();
input.close();
System.out.println(ip+"Post:"+xml);

}
}


然后在web.xml中配置Servlet了

<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cwmp="urn:dslforum-org:cwmp-1-0"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Header>
<cwmp:ID soap:mustUnderstand="1">1</cwmp:ID>
</soap:Header>
<soap:Body>
<cwmp:Inform>
<DeviceId>
<Manufacturer>H3C</Manufacturer>
<OUI>000FE2</OUI>
<ProductClass>Gateway</ProductClass>
<SerialNumber>210235A32MC085003208</SerialNumber>
</DeviceId>
<Event soapenc:arrayType="cwmp:EventStruct[1]">
<EventStruct>
<EventCode>0 BOOTSTRAP</EventCode>
<CommandKey></CommandKey>
</EventStruct>
</Event>
<MaxEnvelopes>1</MaxEnvelopes>
<CurrentTime>2000-05-10T09:55:50</CurrentTime>
<RetryCount>0</RetryCount>
<ParameterList soapenc:arrayType="cwmp:ParameterValueStruct[8]">
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceSummary</Name>
<Value soap:type="soap:string">InternetGatewayDevice:1.0[](Baseline:1)</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
<Value soap:type="soap:string">1.0</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
<Value soap:type="soap:string">Ver.A</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
<Value soap:type="soap:string">V100R001B47D011SP01</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
<Value soap:type="soap:string">ProvisioningCode</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
<Value soap:type="soap:string">http://192.168.1.200:7547/cpe </Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
<Value soap:type="soap:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.ExternalIPAddress</Name>
<Value soap:type="soap:string">192.168.1.200</Value>
</ParameterValueStruct>
</ParameterList>
</cwmp:Inform>

</soap:Body>
</soap:Envelope>

更多内容详见: http://www.tr069bbs.com

分享到:
评论

相关推荐

    tr069 协议 java 开发

    tr069 协议 java 开发 包括acs与ape的基础知识的研究 1.基于TR069协议的运营商终端管理.pdf 2.TR069协议实现研究.pdf 3.TR-069Amendment2.pdf 4.ACSDemo+for+TR069.rar

    蓝牙TR-BC03模块硬件规格书

    该模块可用于开发基于蓝牙 4.0(BLE,低功耗蓝牙)的消费类电子产品, 手机外设产品等,为客户产品与智能移动设备通讯提供快速的 BLE 解决方案。 TR-BC03 模块含有一个 32 位、48MHzARM Cortex-M0 处理器,它包括 ...

    【重磅资料】NB-IoT物联网精品资料合集.zip

    3GPP NB-IoT标准文档(3GPP Rel13- TR 36802-NB-IoT) 5G测试需求及热点方案研究NB-IoT专题 2019 年中国窄带物联网NB-IoT 行业市场研究 2020物联网白皮书(含NB-IoT) 2021工业互联网和物联网无线电频率使用指南 ...

    基于SIP开发软件电话的一些资源(转自YOUTOO)

    由于oSIP是比较底层的SIP协议栈实现,新手较难上手,而官方的示例大都是一些伪代码,需要有实际的例子程序参考学习,而最好的例子就是同样官方发布的oSIP的扩展开发库exosip2,使用exoSIP可以很...

    Java SOAP协议

    本文的预定作者应该对SOAP1.1的基本规范有所了解,并熟悉了j2ee的基本开发,如果不熟悉的话,可以看一下我的Blog:使用SOAP开发java web服务--Axis开发方案 ,详细标准可以查看w3c的官方网站,连接如下:...

    SAP R/3 事务码速查手册SAP R/3 事务码速查手册

    9.3.2 SD-SLS-OA 草案协议 (客户) 227 9.4 SD-SHP 装运 227 9.4.1 SD-SHP-GF 基本功能 229 9.4.2 SD-SHP-PI 拣配 230 9.4.3 SD-SHP-PA 包装 230 9.5 SD-TRA 运输 231 9.5.1 SD-TRA-FC 货物处理 232 9.6 SD-FT-PRO ...

    传感网应用开发:ESP通信模块介绍.pptx

    ESP8266/ESP8285 系列模组是深圳市安信可科技有限公司开发的一系列基于乐鑫ESP8266EX/ESP8285的低功耗UART-WiFi芯片模组,可以方便地进行二次开发,接入云端服务,实现手机3/4G全球随时随地的控制,加速产品原型设计...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    各浏览器开发商已经达成协议,对XML实行严格而挑剔的解析,任何细小的错误都会被报告。你可以将上面的myfile.xml修改一下,比如将改为,然后用IE5直接打开myfile.xml,会得到一个出错信息页面: &lt;title&gt;XML轻松...

    (精品word)NS2网络仿真实验.doc

    NS2 是一款开放源代码的网络模拟软件,最初由 UC Berkeley 开发。它是一种面向对象的网络模拟器,其本质上是一个离散事件模拟器,其本身有一个模拟时钟,所有的模拟都由离散事件驱动。NS2 将数据通道和控制通道的...

    HttpClient以及获取页面内容应用

    通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。 ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer???? ...

    cms后台管理

    D:\Tomcat 6.0\webapps\),启动tomcat,在地址栏中输入http://localhost:8080/jeecms, 您将看到第一步安装过程中的《用户许可协议》,勾选“我已经阅读并同意此 协议”,点击下一步, 接下来第二步安装过程中设置...

    使用Html5 Stream开发实时监控系统

    在网上搜索web直播/摄像头直播等关键词找到了H5Stream,这是一个可以基于Native H5 Video标签实现直播的解决方案。当然它也支持其他的RTMP/HLS等。 发流服务通过RTSP地址从摄像头采集视频,在代码中可以通过配置文件...

    网上教学系统

    &lt;/strong&gt;1.1 大学生学习网远程教育网络服务有限公司(Huaxia Dadi Distance Learning Services Co,Ltd.)(以下简称“大学生学习网”)同意按照本协议的规定及其不时发布的操作规则提供基于互联网以及移动网的相关...

    html入门到放弃笔记

    WEB,是基于Internet上的一种应用程序(网页应用程序) WEB页面,简称WEB页(网页),就是保存在服务器端上的一个具体的页面( **.html / **.htm 作为结尾的文件) 2、WEB浏览器 1、功能 1、提交用户请求 (UA : User ...

Global site tag (gtag.js) - Google Analytics