TR069协议

TR069协议


TR069协议简述

  • 简单来说,TR069协议就是ACS(自动配置服务器Automatic Configuration Serve)和CPE(用户终端设备Customer Premise Equipment)之间沟通的通讯协议

  • 用下面一张图来表示:图中的CWMP指的就是TR069协议

TR069协议的协议栈

TR-069 采用了许多现存的、标准的协议以获得广泛的设备支持。采用 TCP/IP 协议来 保证 TR-069 独立于网络传输的物理介质,XML 来对设备和服务进行统一的描述,HTTP 协 议方便建立设备间的信息交互,在 SOAP 之上定义了用于配置、查询、诊断等操作的 RPC 方法,实现 CPE 与 ACS 之间的交互,SSL/TLS 增加了网络传输的安全。采用这些现存的、 广泛应用的协议能减少开发 TR-069 设备的工作量,使 TR-069 设备更好地融入现有网络

名称解释
CPE/ACS厂商自己实现
RPCRPC具体方法在TR069中定义
SOAP使用XML
HTTP使用HTTP1.1
SSL/TLS标准传输层安全协议
TCP/IP标准TCP/IP**

TR069协议的具体实现

1.宏观描述

如上面的协议栈所示,ACS和CPE之间通过调用PRC函数进行互操作。
CPE函数由ACS调用,用来对CPE进行管理如:设置CPE参数、获取CPE参数、硬件升级、重启设备等;
ACS函数由CPE调用,用来向ACS上报状态信息,请求硬件镜像文件下载(用来升级硬件)等等。

2.具体描述

  • 当调用函数时,ACS并不是直接调用CPE的函数,同理,CPE也不是直接调用ACS的函数。而是通过网络通信发送一段消息,消息中包含了调用哪个函数,以及函数相关参数,发送到对方后,对方调用对应的函数
  • 这段消息的包装就依靠上述协议栈实现。调用函数后,该函数首先使用SOAP(简单对象包装协议)包装,TR069中使用的是xml包装,解析
  • 然后将这段内容使用HTTP协议发送。这里使用的是HTTP中的POST,将上面所得到的xml作为POST的请求主题发送
  • 安全方面依靠SSL/TLS,HTTP具体数据传输依靠的是TCP

架构组件

1.RPC方法参数
- RPC方法:ACS可以根据它来读写参数已达到配置CPE和监控CPE的状态和统计信息。不同类CPE的参数定义在不同文档中
TR106:Data Model Template for TR069-Enabled Devices
TR098 : Internet Gateway Device Data Model for TR069
TR104 : Provisioning Parameters for VoIP CPE
- 参数的形式是键值对,并且拥有一个类似文件目录的分级结构,每一级之间用一个’.’分隔开。

2.文件传输
- 当由ACS发起时,CPE得到需要传输的文件的地址,使用HTTP/HTTPS,或者可选的使用FTP/SFTP/TFTP作为传输协议,然后CPE开始下载,并通知ACS传输失败或成功
- 当由CPE发起时,CPE首先向ACS请求一个特殊文件类型的下载,然后从ACS的响应开始,执行和由ACS发起时一样的下载过程
- 总的来说,就是ACS给CPE一个下载地址,然后CPE下载。

3.发起会话
- CPE发起会话

作用:CPE向对应的ACS通报各种状态,同时保证CPE-ACS通信的发生的最小频率

  • 发起会话的时机
    a.CPE初始安装发起建立通信的机制
    b.和ACS建立一个持续的周期性的会话(原文如下)
    (It also includes a mechanism to establish periodic communication with the ACS on an ongoing basis)
    c.事件发生时通知ACS,比如CPE的宽带IP地址改变时。
  • CPE标识自己的方法

    CPE使用工厂信息和序列号信息(以及可选的产品标识符)来唯一地标识自己,通过这种方式ACS可以知道自己和哪个CPE通讯

  • ACS发起的异步会话

    作用:异步地通知CPE配置的改变,使得自动配置机制服务能够用一种实时的方式配置CPE。可能用来提供给一个终端用户来立即接入或使用一个定制的服务或特征,而无需等待下一个通知间隔周期。

    a.ACS可以在任何时候向CPE发起连接请求的机制,通知CPE向ACS建立一个通讯会话。
    b.可以用CPE轮询代替ACS发起连接(我理解的CPE轮询就是CPE去挨个询问ACS是否需要建立连接)

ACS Discovery

通过在CPE上配置ACS的URL实现

  • CPE在本地配置好ACS的URL。例如:它可以通过LAN侧的CPE自动配置协议来实现。CPE通过DNS用URL中的host name组成部分找到ACS的IP地址。
  • 使用接入网的DHCP服务器可以把ACS URL作为DHCP option[14]来配置给CPE。如果CPE通过DHCP获取到一个无法到达的ACS URL(300s内无法建立TCP连接视为不可达),CPE必须发起一个DHCP Inform来重新搜索ACS URL如果CPE没有收到DHCP Inform的响应,它必须按照RFC2131来尝试重新获取
  • 关于使用上述两种机制中的哪一种?

    当CPE需要联系ACS时,首先自然是查看自己是否有本地配置好的ACS的URL,没有的话再看是否符合以下情况来使用DHCP:
    i)如果CPE拥有一个null值得ManagementServer.URL参数值
    ii)如果CPE不能联系到ACS,并且CPE**第一次**联系到ACS是通过DHCP

  • 关于失去联系要重新建立联系时采用哪种机制(下面是原文的描述)

    The CPE MUST remember the mechanism it used to locate the ACS the first time it successfully contacted it. If the CPE did not use DHCP to discover the ACS URL, then it SHOULD NOT fall back to using DHCP for ACS discovery. If the CPE originally used DHCP for ACS discovery, then when it fails to contact the ACS, it MUST perform re-discovery via DHCP. The last requirement holds even if the ACS URL has been subsequently set through a non-DHCP mechanism.

意思大致上就是说CPE第一次成功和ACS建立联系使用哪种方式,之后重新建立联系就使用哪种方式。

  • CPE有一个默认的ACS URL在没有其他的URL提供时使用
    这个ACS URL必须是一个有效的HTTP或HTTPS URL的格式。使用HTTPS URL 表示CPE必须跟ACS建立一个SSL或TLS链接。

CPE发起连接

CPE可以在任何时候使用预定的ACS地址向ACS发期建连下面情况下,CPE**必须**向ACS发起建连并发送Inform RPC method
a. CPE初始安装第一次向接入网发起建连
b. 上电或重启
c. 在每一个通知周期间隔
d. 当被optional ScheduleInform method 所指示需要如此执行
e. 一旦CPE接收ACS的有效链接请求时
f. 一旦ACS的URL发生改变时
g. 一旦一个在发生改变时需要发起一个Inform的参数发生了改变时
h. 一旦一个被ACS通过SetParameterAttributes method标识为”active notification”的参数由于一个外部修改而改变时,就是说不是ACS自己通过SetParameter Values改变的,就会引起一个新的会话发起。如果在CPE建立一个新的会话之前,这个参数发生了多次变化,CPE只发起一次会话。
当在会话过程中,这个被ACS通过SetParameterAttributes method标识为”active notification”的参数发生了改变,则在当前会话结束后发起一个通知的会话而不会去影响到当前的会话。
协议中还对不正常情况的时候做出了相应的建议(NOT MUST)

In order to avoid excessive traffic to the ACS, a CPE MAY place a locally specified limit on the frequency of parameter change notifications. This limit SHOULD be defined so that it is exceeded only in unusual circumstances. If this limit is exceeded, the CPE MAY delay by a locally specified amount initiation of a session to notify the ACS. After this delay, the CPE MUST initiate a session to the ACS and indicate all relevant parameter changes (those parameters that have been marked for notification) that have occurred since the last such notification.

意思就是说可以在CPE这里设置一个用于非正常情况下的对业务量进行限制的参数,使得在非正常情况下ACS的业务量不至于过多。实际做法就是延迟CPE会话发起的时间,周期增大。而每次发起通报就把上一次通报后发生的所有相关参数的修改给通报上去。
i. 当CPE进行下载或者上传时,无论操作成功与否,都需要(Must)通知ACS下载和上传的操作完成
j.不正常终结的会话要重建,重建时按照下述会话重建规程

会话重建规程

会话失败时,CPE需要记录会话失败的次数,按照次数选择一个时间再次发起会话,这个时间是有下述表格定义的,表中定义的只是一个时间范围,具体的时间CPE必须从post-reboot session retry count给定的一个范围中随机地选择一个值(秒级)来作为等待间隔时间。如果再次发生会话失败,就按照表格继续等待发起重建。
这里写图片描述

ACS发起连接

ACS可以在任何时候使用连接请求机制**请求CPE发起一个到ACS的连接**。CPE**需要(Requestd)**支持此机制,而在ACS侧**建议**支持此机制 此机制依赖于CPE要有一个可被ACS路由到的IP地址。在ACS和CPE之间,如果CPE在一个防火墙或NAT(网络转换技术,一种在IP封包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术)欺骗设备后面,ACS将完全无法连接到这个CPE。 具体做法

ACS使用的连接请求时一个到CPE指定的URL的HTTP1.1(不能是HTTPS,并且这个GET不能带参数) GET。这个URL时CPE上随机生成的。CPE使用摘要鉴权来对ACS进行认证,成功的话使用HTTP的状态码“200(OK)”或“204(Not Content)”来响应。响应中的消息体长度必须为0。

SSL/TLS和TCP的使用

  • CPE必须支持SSL/TLS 中的一种或两种
  • 两种都支持的话具体使用哪一个由ACS选择
  • 使用客户端证书来唯一地标识一个CPE或者ACS都是可选的

HTTP的使用

CPE和ACS之间的SOAP消息承载于HTTP1.1上,CPE做客户端,ACS做服务器端。

SOAP的使用

使用的是HTTP的post,传送的内容是soap(这里用的是xml)
下面这个例子是ACS的一个相应,消息体是一个xml

HTTP/1.1 200 OK
Content-Type:text/xml;charset="utf-8"
Content-Length:xyz

<soap:Envelope
    xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/
    xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
        <soap:Body>
            <cwmp:Request>
                <argument>value</argument>
            </cwmp:Request>
        </soap:Body>
</soap:Envelope>

再给一个更具体的例子感受下SOAP的使用

<soap:Envelope
    xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:soap="http://schemas.xmlsoap.org/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">
        <soap-env:Header>
            <cwmp:ID soap:mustUnderstand="1">0</cwmp:ID>
        </soap-env:Header>
        <soap-env:Body>
            <cwmp:GetParameterNames>
                <ParameterPath>Object</ParameterPath>
                <NextLevel>0</NextLevel>
            </cwmp:GetParameterNames>
        </soap-env:Body>
</soap:Envelope>

基于TR069实现的网管功能

(1)配置管理
TR069协议的配置管理由ACS控制发起,通过Get/SetParamerterValue RPC来完成对CPE参数的比较和设置,通过在ACS上配置管理策略,由CPE来主动请求管理,可以简化设备配置的工作量。
(2)版本管理
在TR069协议中CPE可以主动请求版本/固件更新,也可由以ACS强制进行版本的升级。无论是哪种方式,版本控制的决策都由ACS来控制。基于此功能不仅仅可以实现传统意义上的版本升级,同时还能与配置功能配合实现业务的动态下载控制,为运营商部署增值业务提供手段。
(3)性能监控
ACS可以通过使用GetParamerterValues RPC来实时查询设备状态,也可以通过上载(Upload)获取设备的日志文件来分析CPE的历史状态信息。
(4)诊断
在TR069中没有定义专门的诊断RPC,而是使用Set/GetParameterValues RPC的组合来实现诊断功能,通过设置操作设置诊断参数触发诊断处理,通过获取操作读取设备诊断结果。
(5)告警
CPE主动发送事件报告来实现设备的实时告警。

RPC方法

RPC方法分为ACS支持的方法和CPE支持的方法。ACS支持的方法实际上就是CPE能够远程调用的方法,CPE支持的方法实际上就是ACS能够远程调用的方法。

CPE支持的方法,就是说ACS可以远程调用的方法,换句话说,就是ACS让CPE执行,然后返回参数的话就返回到ACS这边

名称解释
GetParameterValues获得一个或多个CPE参数
SetParameterValues修改CPE的一个或多个参数
GetParameterNames获得参数名称
GetParameterAttributes用来获得参数的特性如读写
SetParameterAttributes用来设定参数的特性如读写
AddObject增加对象,对象是参数的容器
DeleteObject删除对象,应该就是删除自己定的参数
Reboot重启终端
Download让终端下载文件
Upload终端上传文件,应该主要是日志文件
FactoryReset回复出厂设置

上面的方法中,
Get方法所获得的参数就是要返回给ACS的,这样ACS就可以获得这些值,而Set方法就是ACS去设置CPE的时候用的,作用于CPE。
Download和Upload就是ACS告知CPE该上传或者下载了,然后CPE调用自己的Download从ACS上下载东西,具体下载过程在本文的文件传输那部分介绍。上传则是CPE上传给ACS,项目中的话我想应该就是传些日志文件吧,可以用于诊断CPE的状态这样
Reboot和FactoryReset也是指的CPE的重启和回复出厂设置
ACS支持的方法,就是说CPE可以远程调用的方法,换句话说,CPE让ACS执行的方法,返回值返回到ACS这边

名称解释
Inform通常终端调用这个是通知服务器开始传送消息,说自己上线了
TransferCompleteCPE告诉服务器传送完毕
RequestDownload请求下载

这几个方法就是由CPE调用,ACS执行的了,像Inform方法,应该就是说CPE通过远程调用,告知ACS自己上线了。ACS获知CPE上线这个消息就是去执行Inform这个方法。TransferComplete这个方法也是如此,就是让ACS获得某个消息的。

<think>好的,我现在需要回答用户关于TR069协议的问题,包括介绍、用途和实现方式。首先,我应该回忆一下TR069的基本信息,可能涉及相关的技术规范和组成部分。根据用户提供的引用内容,TR069属于一系列协议中的一部分,包括TR069TR098、TR106、TR181和TR111,其中TR069主要处理通信协议和交互过程,而其他如TR098和TR181则是数据模型的定义规范。TR111可能涉及STUN应用的标准。 接下来,我需要明确TR069的主要用途。根据常见知识,TR069通常用于设备管理,特别是在CPE(客户终端设备)和自动配置服务器(ACS)之间进行通信,实现远程管理、配置、固件升级和状态监控等。用户提到的引用中提到的Easycwmp可能是一个实现TR069协议的开源工具,这可能在实现方式部分需要提及。 关于实现方式,需要涵盖协议的核心机制,比如基于HTTP/HTTPS的通信、SOAP协议的使用,以及数据模型的定义。可能还需要提到ACS和CPE之间的交互流程,比如CPE主动连接ACSACS主动发起连接。此外,安全机制如认证和加密也是实现的重要部分,可能涉及SSL/TLS或Digest认证。 用户提供的引用中还提到了iText的开源协议问题,但TR069本身是技术规范,可能涉及商业应用时的协议合规问题,比如是否需要购买许可,但根据引用[1],TR069的规范需要阅读,而引用[2]提到AGPL协议可能与iText相关,这里可能需要注意区分,避免混淆。 在组织回答时,需要结构清晰,分点说明介绍、用途和实现方式。同时,生成的相关问题要围绕TR069的组成部分、通信机制、安全性、与其他协议的关系,以及实际应用案例等。 需要确保使用正确的中文表达,并且内联公式或变量使用$...$格式,但在这个问题中可能涉及较少数学内容,但如果有涉及技术参数的描述,需要遵循格式。不过TR069协议相关内容可能更多是技术术语而非数学公式,所以可能不需要使用数学格式,但需要保持LaTeX正确,例如协议名称如TR-069可能需要正确连字符。 最后,检查是否符合用户提供的引用内容,特别是引用[1]中提到的各个TR协议的分工,以及Easycwmp作为实现工具的例子。确保回答真实可靠,并正确添加引用标识。</think>### TR069协议介绍、用途及实现方式 #### 1. TR069协议介绍 TR069(全称Technical Report 069)是宽带论坛(Broadband Forum)制定的设备管理协议,主要用于**用户终端设备(CPE)**与**自动配置服务器(ACS)**之间的远程通信与管理。其核心规范包括: - **通信协议**:定义CPE与ACS的交互流程,基于HTTP/HTTPS传输,使用SOAP协议封装数据[^1]。 - **数据模型**:通过TR-098和TR-181定义设备参数(如接口状态、服务配置),支持标准化管理[^1]。 - **扩展功能**:TR-111规范支持NAT穿透(基于STUN协议),解决内网设备的管理难题[^1]。 #### 2. 主要用途 - **远程配置**:批量修改设备参数(如Wi-Fi密码、QoS策略)。 - **状态监控**:实时获取设备运行状态(如CPU负载、在线时长)。 - **固件升级**:推送并验证固件更新,降低运维成本。 - **故障诊断**:通过日志采集和远程重启快速定位问题。 #### 3. 实现方式 ##### 架构设计 - **ACS(服务器端)**:提供管理接口,支持策略下发和数据处理。 - **CPE(客户端)**:内置TR069客户端,周期性与ACS通信(如心跳机制)。 ##### 关键技术 - **通信机制**:CPE通过HTTP/HTTPS主动连接ACS,或由ACS触发连接。 - **数据封装**:使用SOAP协议传输XML格式的RPC(远程过程调用)指令。 - **安全机制**:支持SSL/TLS加密和Digest认证,防止数据篡改。 ##### 开源实现 - **Easycwmp**:基于C语言的开源TR069客户端,支持ACS交互和基础数据模型,适用于嵌入式设备。 #### 4. 典型应用场景 - **运营商网络**:大规模管理家庭网关(如中国电信的IPTV机顶盒)。 - **物联网设备**:远程配置智能电表、摄像头等终端。 - **企业IT运维**:集中管理分支机构的路由器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值