之前看了些预备知识,最近在利用这些技巧来实现科协布置的项目:根据tr-069协议实现模拟的ACS端和CPE端。好不容易把CPE端写出了个“形”,迫不及待的就想晒晒心得。先介绍一下这个协议吧:
<!----><!---->
<!---->TR-069
规范是
属于
TR-046
规定的
B-NT
自动配置框架中高级复杂业务协议配置部分。主要由自动配置管理服务器
(
Automatic Configuration Server
ACS
),用户驻地设备(
Customer Premises Equipment
CPE
,即被管终端),业务配置管理服务器以及一些必要的管理接口组成。它通过定义一套
ACS
和
CPE
之间自动协商交互协议,实现远程管理的功能。如图1
所示,宏观上主要有两个接口,一个时完成从业务或服务提供商向
ACS
下发业务配置的北向接口(
ACS Northbound Interface
),另外一个是完成从
ACS
到
CPE
配置管理的南向接口(
ACS
Southbound Interface
)。
我实现的这个CPE端的功能大致如下:首先,使用HTTPClient提供的API向ACS服务器发送一个没有内容的HTTP-Get请求——模拟CPE上电后的首次建连;在收到服务器返回的响应后,通过HTTP-Post发送一封
SOAP
内含Inform请求——请求建立一个会话;如果紧接着收到一封包含InformResponse方法的SOAP回复,按协议的说法表明会话已经成功建立,再次发送一个空的HTTP请求——告诉服务器可以开始远程管理了……会话的连通过程中,服务器可以发送协议规定的SOAP请求到CPE端,CPE作相应的解析、处理、回复。最后服务器Post一个空的HTTP请求来关闭这次会话。
实现程序里的连接服务器功能的是HTTPClient(Apache的项目)提供的GetMethod和PostMethod方法。大概用法是:
// Create an instance of HttpClient.
HttpClient client = new HttpClient();
// Set authentication.
client.getState().setCredentials(
new AuthScope(AuthScope.ANY_HOST, 8080, AuthScope.ANY_REALM),
new UsernamePasswordCredentials("username", "password"));
// Create a method instance.
//PostMethod is similar
GetMethod get = new GetMethod(URL);
// Tell the GET method to automatically handle authentication.
get.setDoAuthentication(true);
// Provide custom retry handler .
get.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
int status;
// Execute the method.
try {
status = client.executeMethod(get);
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
get.releaseConnection();
}
HTTPClient的功能很全面,还能处理、设置各种报头。
SOAP消息的生成和解析就用到了我之前的文章里提供的方法:“建厂”->实现信封->实现header->实现body。而功能逻辑参考了OpenACS的解析方法。在调试程序的各项功能的时候,一个“泥潭”让我深刻认识到SOAP(或者说是解析SOAP的API)是区分大小写的。这个泥潭出现在一个前缀:“SOAP-ENV”上:开始我把body元素的这个前缀弄成了小写,因为这个前缀是API自动生成的,没有在代码里显示,我也压根没考虑它的大小写问题。我用服务器向客户端发送SOAP消息,报头的信息都能正确得到,状态码也是200,可就是获取不了SOAP消息。我尝试删除一些SOAP内容,最后就发现问题出在了加载这个前缀的那行代码上,于是就发现了这个问题。改成大写的,一切OK。
event.setAttribute("SOAP-ENV:arrayType", "xsd:EventStruct[64]");
- 描述: 图1
- 大小: 60.3 KB
分享到:
相关推荐
java 写的tr069协议CPE客户端程序
ExcelMAX HDD CPE 半双工室外用户端pdf,ExcelMAX HDD CPE 半双工室外用户端
ExcelMAX FDD CPE 全双工室外用户端pdf,ExcelMAX FDD CPE 全双工室外用户端
如果部署了软件定义CPE,运营商就可以通过软件升级方式来演进其集客接入网。在非-SDN 阶段,CPE被配置成传统的PTN或IP RAN设备。需要SDN的时候,就将CPE升级成支持OpenFlow 的设备。在未来,还可以将其继续升级成...
本人根据ISC2官方的CPE英文要求文档,翻译的中文版。文档适合ISC2的各种认证。由于本人英文水平欠佳,可能有不正确的地方,可以参考官方指南来看。 概述 CPE的一般要求 所需的CPE学分数目 专注 多个证书 延期的CPE ...
Software-Defined CPE Software-defined CPE is a new class of CPE device demanded by carriers for their SDN deployments due to its inherent support of: • Forwarding functions such as L2 switching, MPLS...
基于CPE进化教学法的Java SE课程教学改革实践
TD-LTE_MiFi&CPE终端测试规范,中国移动要求
9341双功放cpe固件
max232cpe RS232通信 tms320f2812 modbus
OTN CPE
此文件中包含有Comfast 两个CPE间如何进行传输和接收的设置; 请于官网购买正版设备。
本文档描述CPE WAN 管理协议,适用于CPE与自动配置服务器(ACS)间的通信。CPE WAN管理协议定义包括安全地自动配置CPE以及在公用框架下的其它CPE管理功能。
完美支持tr069报文调试,支持反向链接,0 /1/2/4/等事件,支持信令,支持流程组合,支持PNP,告警等
MAX232CPE芯片资料,英文原版ELECTRICAL CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS—
本文档包含华为5G CPE拆机详细过程,对balong 5000模块外围框架、工作原理进行描述,所用IC 也进行了标注。
CISA官方-CPE_中文说明, 包括每年CPE积累要求,哪些内容可积累CPE
1电脑固定IP地址:192.168.62.X (旧版是192.168.1.X ) 2.POE正常链接网桥 ...6.进入配置首页 (因CPE是成对使用,分中心端与接收端两种设置放) 一.配置中心端。(第一步配置中心端) 1.选择网桥模式(图1)
进联CPE接线端子样本pdf,进联CPE接线端子参数介绍
注册信息系统审计师继续职业教育政策 CISA CPE 政策要求文档