TR-069简介

相关缩略语 

ACS:Auto-Configuration Server (自动配置服务器)

CPE:Customer Premise Equipment(用户终端设备)

CWMP:CPE WAN Management Protocol(用户终端设备广域网管理协议)

DSL: Digital Subscriber Line(数字用户线)

HTTP:Hypertext Transfer Protocol(超文本传输协议)

RPC: Remote Procedure Call(远程过程调用)

SOAP: Simple Object Access Protocol(简单对象访问协议)

SSL: Secure Socket Layer(安全套接层)

TLS: Transport Layer Security(安全传输层)

URL:Uniform Resource Location(统一资源定位)

XML: Extensible Markup Language(可扩展标记语言)

1、 TR069简介 

         TR069 全称是“用户终端设备广域网管理协议(CWMP)”,是由DSL Forum制定的一种网管协议,适用于远程终端管理技术,DSL论坛中,用于承载该协议的文档编号为TR069,简称TR069协议。随着VoIP、 IPTV等大量IP终端设备(尤其在家庭中)的普及,设备的配置和维护变得越来越困难,传统的SNMP协议已不能满足相应的管理维护需求,而TR069协 议更适应于广域网终端上的应用。 TR069相对SNMP有如下的优点:

l  连接模型灵活,允许ACS和CPE两端都可以发起连接请求;

l  节省带宽,不必维护长期连接;

l  功能丰富,软件升级,业务推送等。

2、TR069协议组网模型

TR069组网模式与SNMP类似,采用Server/Client(Agent)模式。

TR-069简介 - 白丁 - 白丁 的博客

上图中,ACS为自动配置服务器,负责对终端设备CPE进行管理。ACS与CPE间的接口为南向接口,ACS与管理系统间的接口为北向接口。TR069协议定义了南向接口。

3、TR069协议功能 

CWMP支持管理CPE的一组功能,主要包括:

l  自动配置和动态服务供给: ACS可以在CPE第一次上线或上线后的任何时候对CPE进行配置(Set方法)。

l  软件/固件的映像管理: CPE和ACS都可以主动发起下载,CPE下载结果通知ACS( Download、Upload、Inform 方法)。

l  状态与性能监控:协议支持CPE向ACS提供可能用于状态和性能统计数据(Inform方法),如非ACS导致的参数更改、告警信息等。 

l  诊断:协议支持CPE向ACS提供可用于诊断连接性和服务的信息。本协议定义一组公用参数集合,以及厂商添加自定制诊断能力的通用机制,如Ping命令、Reset命令等。 

l  WEB应用的身份管理。协议的可选功能,需要ACS支持Kicked方法,该功能允许用户通过统一的Website来对某台CPE进行管理。 


===========================================================================

4、TR069协议组成

TR-069简介  转 - 白丁 - 白丁 的博客
 

CPE/ACS Application: 运行于ACS和CPE的CWMP应用,可以理解为被管理的参数,如设备序列号、IP地址、注册服务器域名等信息,这些参数在其它TR称为Data Model,对不同类型的设置有不同的Data Model。Data Model本身不属于CWMP,但协议支持ACS对这些Data Modle的自动发现。与SNMP类似,Data Modle组成为树状结构,如: 

l  InternetGatewayDevice.ManagementServer.PeriodicInformEnable 

l  InternetGatewayDevice.ManagementServer.PeriodicInformInterval 

l  InternetGatewayDevice.Services.VoiceService.VoiceProfile.SIP.RegisterExpires

l  InternetGatewayDevice.Services.VoiceService.VoiceProfile.SIP.RegisterRetryInterval

 

RPC Methods:由ACS/CPE提供、供对方调用的标准函数,用于承载ACS和CPE之间的管理请求和应答,TR069分别了规定由ACS和CPE提供的RPC方法,包括可选的方法和必选的方法,如下表所示。

 TR-069简介  转 - 白丁 - 白丁 的博客

每中方法都有请求和应答,请求和应答都包含的规定参数,应答中应该包含执行结果,由原因码体现,如果成功则原因码为0,否则使用协议定义的相应错误原因码。

======================================================================

SOAP: 简单对象访问协议,SOAP信元是一个包含可选的SOAP Head和必选的SOAP Body组成的XML文档,用于对RPC 编码,即RPC的具体体现形式。协议要求支持SOAP 1.1。一个HTTP报文可以包含若干个SOAP信元,该最大信元数由ACS和CPE分别指定并通知对方。所有的连接都是由CPE主动发起的,CPE发起 连接时先调用Inform方法,Inform中有一个参数是MaxEnvelopes,它告诉ACS CPE可以支持的最大SOAP信元,而ACS对Inform的响应中也包含着MaxEnvelopes告诉CPE它可以支持的最大SOAP信元。(有些版 本的TR069中MaxEnvelopes一直是1,接收方忽略响应中MaxEnvelopes的值)

SOAP构成如下图所示:

TR-069简介  转 - 白丁 - 白丁 的博客


SOAP报文结构

 

HTTP用于承载SOAP报文,要求支持HTTP1.1,协议允许ACS和CPE都可以主动发起连接。

 

SSL/TLS:可选的安全组件,TR069允许使用如下安全机制: 

l  ACE和CPE之间使用SSL/TLS,提供认证、保证数据机密和完整性; 

l  HTTP层提供的另一种基于共享密钥的CPE认证方法。

 

TCP用于承载HTTP报文。 

报文示例:ACS的HTTP应答报文,包含一个Inform方法的应答和一个GetRPCMethods方法的请求两个信元。

HTTP/1.1 200 OK 

Content-Type: text/xml; charset="utf-8"

Content-Length: nnn 

<soap:Envelope 

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

xmlns:cwmp="urn:dslforum-org:cwmp-1-0">

<soap:Header>

<cwmp:ID soap:mustUnderstand="1">919</cwmp:ID>

</soap:Header>

<soap:Body>

<cwmp:InformResponse> 

                  <MaxEnvelopes>3</MaxEnvelopes>

</cwmp:nformResponse> 

</soap:Body>

</soap:Envelope> 

<soap:Envelope 

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

xmlns:cwmp="urn:dslforum-org:cwmp-1-0">

<soap:Body>

<cwmp:GetRPCMethods/> 

</soap:Body>

</soap:Envelope> 

5、TR069会话连接 5.1 由CPE主动发起(使用HTTP POST)

前提:

CPE已经获取ACS的URL。获取方法:

l  本地配置。

l  DHCP Option。

l  缺省。

触发会话连接请求条件:

l  上电或复位(包括初始化安装)。

l  每个PeriodicInformInterval。

l  由ScheduleInform 方法触发。

l  收到ACS的有效连接请求。

l  ACS的URL发生变化。

l  部分参数由非ACS导致的变化,而这些参数的改变必须向ACS上报。

l  Download或者upload完成后要ACS上报状态。

l  重新尝试一次失败的会话。

会话要求:

l 由CPE发起会话时,CPE必须首先调用Inform方法。

l 当一次会话非正常结束或者CPE向ACS上报事情的会话不能正常建立时,CPE必须根据“SessionRetry Policy”重新发起会话或者丢弃事件。

5.2 由ACS主动发起(使用HTTP GET) 

前提: 

l  ACS获取CPE的URL,该URL由ACS通过InternetGatewayDevice.ManagementServer. ConnectionRequestURL参数获取,这意味着ACS此前至少有一次由CPE发起的通信。 

l  网络可达。

触发会话连接请求条件:

l ACS可以在任何时候用ConnectionRequest mechanism使CPE发起连接,使用HTTPGet通知CPE。经过必要的摘要认证后,CPE使用预先确定的URL发起会话连接请求。

会话要求:

l ACS必须使用HTTP 1.1 GET 语法CPE的URL,CPE的URL是随机生成的,也是唯一的。

l 必须使用HTTP,而不是HTTPS。

l ACS的HTTPGET不包含任何数据。

l CPE使用Digest认证,认证不过CPE不向ACS发起连接。

l CPE接受任何请求只要认证能通过。

l  CPE向ACS回复200 (OK)或者204(No Content),而且回复优先于发起连接。 

l  CPE限制ACS的ConnectionRequest频率,如果频率高于限制,CPE向ACS回复503 (Service Unavailable)。

l  ACS认证通过后,CPE必须在30秒内向ACS发起连接,在Inform中包含6 CONNECTION REQUEST 事件代码。

l 如果ACS认证通过但在30内没接受到CPE的连接请求就重复ConnectionRequest。

l 如果CPE发起连接请求之前又接受到几个ConnectionRequest,它发起一次连接。

l 如果CPE中会话状态中,那么它要么拒绝ConnectionRequest,要么会话结束后发起一次连接请求。

l 除了以上情况,CPE不能拒绝其它的ConnectionRequest。

 

 

5.3 会话终止 

当没有需要处理的事务时(包括超时),CPE必须结束会话,并结束tcp连接。

只有如下条件都满足时,CPE才能终止会话。

l  ACS没有向CPE的请求,CPE接受到的ACS的最后一个响应是空。

l  CPE没有向ACS的语法,CPE向ACS发起一个空的HTTPPOST,而且HoldRequests为false。

l  CPE接受能了所有曾经几ACS请求的响应。

l  CPE向ACS发出了所有请求的响应。

l  ACS响应超时或者接收到错误响应代码。

因为所有的连接都是CPE向ACS主动发起的,所以ACS不负责连接的发起和终止,但以下条件都满足时ACS认为连接已经终止。

l  CPE没有更多的向ACS的请求,ACS接收到CPE的空HTTP POST,并且HoldRequests 为false。

l  ACS没有向CPE的请求,并且向CPE发出了空的响应。

l  ACS已经发出了所有请求对应的响应。

l  ACS接收到了已经发出的所有请求对应的响应。

l  CPE响应超时、返回错误代码或者CPE请求不对时给CPE返回错误代码。

5.3 会话示例 

TR-069简介  转 - 白丁 - 白丁 的博客


========================================================================

TR-069 Open source

1. Perl CWMP Server

- https://github.com/dpavlin/perl-cwmp

2. mini-cwmp

- https://github.com/petersho/mini-cwmp

- http://mini-cwmp.sourceforge.net/

3. open-tr069

- http://code.google.com/p/open-tr069/

4. OpenACS

- http://sourceforge.net/projects/openacs/

5. jCPE

- http://code.google.com/p/jcpe/

6. netcwmp

- http://code.google.com/p/netcwmp/

7. jCWMPServer

- http://sourceforge.net/projects/jcwmpserver/

- http://ftp.heanet.ie/mirrors/sourceforge/j/project/jc/jcwmpserver/

8. cwmpclient

https://bitbucket.org/spapas/cwmpclient

你可能感兴趣的:(TR-069简介)