TR-069
# TR-069
TR-069 == CWMP
# TR-069介绍
TR-069 是 CPE 和 ACS 之间沟通的通讯协定。
CPE 可以借着这个协定完成服务开通、功能设定、档案上传下载、系统检测等初始化及运营管理的必须动作。
TR-069 全名 Technical Report - 069 。
CWMP(CPE WAN Management Protocol,CPE广域网管理协议),是由 DSL(Digital Subscriber’s Line) 开发的技术规范,编号为 TR-069,所以又被称为 TR-069 协议。它提供了对下一代网络中家庭网络设备进行管理配置的通用框架、消息规范、管理方法和数据模型。
# 为什么需要 TR-069
CWMP 主要应用于 DSL 接入网络环境。在 DSL 接入网络中,由于用户设备数量繁多、部署分散,且通常位于用户侧,不易进行设备的管理和维护,CWMP 提出通过 ACS(Auto-Configuration Server,自动配置服务器)对CPE(Customer Premises Equipment,用户侧设备)进行远程集中管理,解决 CPE 设备的管理困难,节约维护成本,提高问题解决效率。
# TR-069 主要功能
提供自动配置和动态服务:该机制设计到的参数既有一般规定的参数,也可以包含用户自定义的参数,为软件实现留下更大的自主空间。
软件和固件镜像文件管理:CPE 可以下载和上传文件,协议提供了检查软件或固件的版本方法,还可以对签名数据文件进行处理。在文件传输结束后,通知 ACS,返回成功或者失败。
诊断:TR-069协议为 CPE 生成有效的诊断信息提供支持,ACS 可以使用这些信息来诊断和解决连通或业务问题,同时提供执行预先定义好的诊断测试能力。
告警:CPE 主动发送事件报告来实现设备的实时告警。
穿越 NAT 连接:TR069 本身允许 ACS 管理 NAT 后的设备,但限制了 ACS 不能主动发起会话。TR111 的机制则是对 TR069 这部分的补充,可以使 ACS 主动发起会话。初始安装时,CPE 会自动寻找 ACS 服务器(CPE 出厂时配置一个默认的 URL 地址,用户将该地址指向 ACS 服务器),建立连接后即可与 ACS 通信、下载配置等,可完美解决 NAT 网关之后的管理难题。
# TR-069 网络架构
下图描述了TR069协议在自动配置网络构架中的定位。ACS与CPE之间的接口为南向接口,ACS与第三方网管系统、业务管理系统之间的接口为北向接口。TR069协议主要定义了南向接口标准。
CWMP网络元素主要有:
ACS:自动配置服务器,网络中的管理设备。
CPE:用户端设备,网络中的被管理设备。
DNS server:域名服务器。CWMP协议规定ACS和CPE使用URL地址来互相识别和访问,DNS用于帮助解析URL参数。
DHCP server:动态主机配置协议服务器。给ACS和CPE分配IP地址,使用DHCP报文中的option字段给CPE配置参数。
协议栈结构如下
协议层 | 描述 |
---|---|
CPE/ACS Management Application | 应用可以在CPE和ACS端分别实现CWMP协议,应用可以进行本地的定义,而不必是CWMP的一部分 |
RPC Methods | 在CWMP中定义的各种RPC方法,实现ACS与CPE之间的交互 |
SOAP | 编码远程过程调用的基于XML语法的标准,避免了与防火墙的冲突 |
HTTP | HTTP 1.1 |
SSL/TLS | 标准的互联网传输层安全协议(可选) |
TCP/IP | 标准的TCP/IP |
RPC:远程过程调用是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。TR069为CPE定义了9种基本RPC方法,6种可选RPC方法;为ACS定义了2种基本RPC方法,2种可选的的RPC方法(CPE方法,CPE设备支持,可以被ACS调用;ACS方法,ACS设备支持,可以被CPE调用)。此外,TR069还对RPC方法中使用的数据类型做了定义,只能使用SOAP定义的的数据类型中的部分。 SOAP、HTTP:在Internet环境下实现分布式组件互操作有一个很重要的问题需要解决,那就是所谓的防火墙问题。大多数的防火墙都是基于端口扫描的,而基于CORBA的RPC使用的都不是常用的端口。如果不经过特殊配置,基于CORBA分布式组件调用将被作为恶意访问而拒绝。所以,TR069使用SOAP简单对象访问协议作为RPC报文的封装,利用标准HTTP协议来传送的方式。TR069规定将SOAP与HTTP绑定,以RPC方法调用来实现设备的管理。把SOAP绑定到HTTP提供了同时利用SOAP的分散性、灵活性的特点以及HTTP丰富的特征库的优点。在HTTP上传送SOAP并不是说SOAP会覆盖现有的HTTP语义,而是HTFP上的SOAP语义会自然的映射到HTTP语义。在使用HTTP作为绑定协议时,一个RPC调用自然地映射到一个HTTP请求,RPC应答同样映射到HTTP应答。一般情况下,一个完整的SOAP包的结构包括:一个信封(Envelope)、一个头部(Header)(可选)、一个SOAP体(Body)(必需)。SOAP协议中未说明一个SOAP包中可以包含多个Envelope,TR069采用了多个信封机制,这样增加了一次交换所带的信息量,减少了网络设备之间的数据交换次数。
SSL:SSL协议指定了一种在应用程序协议和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器人证、消息完整性以及可选的客户机人证,确保数据在传送中不被改变。TR069协议实现的是远程管理,安全的信息交换是必需的。采用128bit加密算法、数字认证机制,实现CPE和ACS之间的安全信息交换。
# TR-069 基本功能
## ACS 和 CPE 的自动连接
CPE 可以通过发送 Inform 报文自动连接 ACS。触发连接的方式有以下几种:
a – CPE启动,根据获取的 URL 值找到相应的ACS,并自动发起连接。
b – CPE使能了周期性发送 Inform 报文功能,当周期(比如1小时)到达,CPE 会自动发送 Inform 报文来建立连接。
c – CPE使能了定时发送 Inform 报文功能,当时间点到达时,CPE 会自动发送 Inform 报文来建立连接。
d – 如果当前绘画没有结束,但是连接异常中断,而且 CPE 自动重新连接的次数没有达到上限,此时,CPE 也会自动建立连接。
ACS 可以在任何时候自动向 CPE 发起连接请求(Connect Request),通过 CPE 的认证(即匹配CPE URL、CPE用户名、CPE密码)后,可以与 CPE 建立连接。
## 支持 ACS 对 CPE 的自动配置
当CPE上线时,ACS可以自动下发一些配置给CPE,完成对CPE的自动配置。设备支持的自动配置项参数主要包括(不仅限于此):
a – 配置文件(ConfigFile)
b – ACS地址(URL)
c – ACS用户名(Username)
d – ACS密码(Password)
e – Inform报文自动发送使能标志(PeriodicInformEnable)
f – Inform报文周期发送时间间隔(PeriodicInformInterval)
g – Inform报文定期发送日期(PeriodicInformTime)
h – CPE用户名(ConnectionRequestUsername)
i – CPE密码(ConnectionRequestPassword)
## 支持对CPE系统启动文件和配置文件的上传/下载管理
网络管理员可以将系统启动文件、配置文件等重要文件保存在ACS上,当ACS发现某个文件的版本有更新,将会通知CPE进行下载。CPE收到ACS的下载请求后,能够根据ACS报文中提供的下载地址和文件名,自动到指定的文件服务器下载文件。下载完成后,对下载文件的合法性做相应的检查,并将下载结果(成功或失败)反馈给ACS。目前,设备不支持以数字签名的方式进行的文件下载。
目前,设备支持下载的文件类型有:系统启动文件和配置文件。
同样,为了实现对重要数据的备份,CPE将根据ACS的要求将当前的配置文件上传到指定的服务器。目前,设备支持上传的文件类型有:配置文件。
## 支持ACS对CPE状态和性能的监控
ACS可以监控与其相连的CPE的各种参数。由于不同的CPE具有不同的性能,可执行的功能也各异,因此ACS必须能识别不同类型CPE的性能,并监控到CPE的当前配置以及配置的变更。CWMP还允许网络管理人员自定义监控参数并通过ACS获取这些参数,以便了解CPE的状态和统计信息。
ACS能够监控的状态和性能有:厂商名称(Manufacturer)、厂商标识OUI(ManufacturerOUI)、序列号(SerialNumber)、硬件版本号(HardwareVersion)、软件版本号(SoftwareVersion)、设备状态(DeviceStatus)、启动时间(UpTime)、配置文件、ACS地址、ACS用户名、ACS密码、Inform报文自动发送使能标志、Inform报文周期发送时间间隔、Inform报文定期发送日期、CPE地址、CPE用户名、CPE密码等。
# 细节 & 实现
## session 和 connection 的不同
- 连接(connection)是一个物理的概念,它指的是一个通过网络建立的客户端和专有服务器(Dedicated Server)或调度器(Share Server)的一个网络连接。
- 会话(session)是一个逻辑的概念,它是存在于实例中的。
一个连接可以拥有多个会话也可以没有会话,同一个连接上的不同会话之间不会相互影响。