`
izuoyan
  • 浏览: 9232503 次
  • 性别: 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

分享到:
评论

相关推荐

    Go-tr069-lib是一个用Go开发的tr069协议支持库

    Go-tr069-lib是一个基于Go语言编写的TR-069协议实现库,它为开发者提供了方便的工具来处理TR-069的消息编码与解码任务。 在Go-tr069-lib中,主要包含了以下几个关键知识点: 1. **TR-069协议基础**:TR-069协议由...

    TR-135协议

    这个数据模型是基于TR-069协议框架构建的,确保了与现有网络管理系统(NMS)的兼容性和一致性。 2. **远程配置与管理**:通过TR-135协议,服务提供商可以远程配置机顶盒的设置,如频道列表、视频编码格式、音频输出...

    mini-cwmp tr-069 tr069

    TR-069协议是基于SOAP(Simple Object Access Protocol)和HTTP的,它的主要目标是提供一个安全、高效且易于实施的远程管理框架。协议的核心功能包括自动配置、故障诊断、软件更新以及性能监控。TR-069由AC(Auto ...

    TR-069.zip

    TR-069.zip是一个压缩包,包含了与TR-069协议及其相关规范的完整文档集合。这个协议是通信设备远程管理的标准,由宽带论坛(Broadband Forum)制定,旨在简化和服务提供商对家庭和小型企业网络设备的自动化配置、...

    TR-069.pdf

    CWMP(CPE WAN Management Protocol)是TR-069技术规范的核心,它是一种用于管理和服务于家庭网络设备,特别是CPE(Customer Premises Equipment)的协议。TR-069,全称为“CPE广域网管理协议”,由DSL论坛(Digital...

    TR-069 中英文版

    1. **协议架构**:TR-069基于SOAP(Simple Object Access Protocol)和HTTP/HTTPS,通过XML数据格式传输管理信息。它分为两个主要组件:CPE(客户终端设备)和ACS(自动配置服务器)。CPE负责设备的本地管理,而ACS...

    TR-069d 协议说明文档

    TR-069,全称为"CPE广域网管理协议",是由DSL论坛开发的一种技术规范,旨在解决大规模家庭网络设备的远程集中管理和配置问题。该协议为运营商提供了一个通用框架,使得他们能够从网络侧对诸如网关、路由器、机顶盒等...

    tr069-master.zip_java ..tr069协议_tr-069 manager_tr069_tr069 java

    TR069(Technical Recommendation TR-069)是由DSL论坛(现为Broadband Forum)发布的一种通信协议,主要用于远程管理家庭和企业网络中的设备,如宽带调制解调器、路由器、IPTV机顶盒等。这个“tr069-master.zip_...

    tr-069技术文档

    TR-069协议是由DSL论坛(DSL Forum)发布的,该论坛是一个非盈利性组织,旨在为DSL网络系统的开发和部署提供指导和标准。 文档的主要内容包括序言、功能组件等章节。在功能组件部分,重点介绍了自动配置和动态服务...

    Java 下 简单 实现 tr069 协议

    这很可能是一个详细的技术报告,阐述了如何在Java环境下开发一个符合TR069标准的管理代理。它可能涵盖了以下内容: 1. **TR069协议基础**:TR069协议基于SOAP(Simple Object Access Protocol)和HTTP,采用XML作为...

    tr069 协议 java 开发

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

    open-tr069

    CWMP(CPE WAN Management Protocol),即客户驻地设备广域网管理协议,是TR-069的核心组件,它定义了一种安全的、基于HTTP/HTTPS的协议,使服务提供商能够远程监控和配置用户的CPE设备。 在开源社区中,存在许多...

    CWMP+(TR-069)技术介绍

    CWMP(CPE WAN Management Protocol,CPE广域网管理协议)是DSL论坛开发的一项技术规范,其编号为TR-069,因此也被广泛称为TR-069协议。这项技术的主要目的是提供一种对家庭网络设备进行远程管理的方法,特别是在下...

    TR-181_Issue-2_Amendment-11

    综上所述,TR-181 Issue 2 Amendment 11是一份非常重要的技术文档,为宽带网络设备制造商和服务提供商提供了一个标准的数据模型来实现基于TR-069协议的远程管理功能。它详细规定了设备的各种配置、状态和行为的数据...

    xacs.rar,本地tr069服务器软件

    这种工具对于开发和测试TR-069兼容设备的工程师来说非常有用,因为它可以创建一个可控的测试环境,无需依赖真实的运营环境,从而提高工作效率并降低调试成本。 TR-069协议基于SOAP(Simple Object Access Protocol...

    jCPE.rar_cpe_java tr-0_jcpe java_openacs_src_0.02.rar_tr069 open

    在Java环境下开发TR-069协议的CPE(Customer Premises Equipment,用户端设备)客户端是一项技术挑战,但同时也提供了强大的灵活性和跨平台性。标题中的"jcpe"即指Java编写的CPE客户端,"tr-0"是对TR-069协议的简写...

    TR-181_Issue-2_Amendment-2.pdf

    TR-181 Issue-2 Amendment-2是《宽带论坛》发布的一个技术报告,它定义了一个设备数据模型(Device Data Model),该模型用于支持TR-069标准,即广泛应用于家庭网络管理和远程控制的服务质量协议。这份文档的发布...

    TR-114 Issue: 3 Amendment 4

    标签“TR-069 TR-114”表示这份报告与另外一份技术报告TR-069有关联。TR-069,通常被称为“CPE WAN Management Protocol”,是宽带论坛制定的另一项技术标准,用于远程管理用户设备(CPE)。当标签中包含两个或多个...

    tr069主要协议规范

    1. "TR-069简体中文版.doc" 和 "TR069中文版.pdf":这两个文档提供了TR069协议的基础介绍和详细解释,适合初学者理解和应用。中文版的文档使得国内用户更容易理解协议内容。 2. "TR-069 Amendment2.pdf":这是TR069...

    cpe_cwmpc:该软件包实现TR-069协议客户端

    《CPE_CWMPC:基于Erlang实现的TR-069协议客户端详解》 TR-069协议,全称为Technical Report 069,是由DSL论坛(现为Broadband Forum)制定的一种通信协议,主要用于远程管理家庭网关、调制解调器和其他CPE...

Global site tag (gtag.js) - Google Analytics