TR069 协议
TR069 (Technical Report 069), 即 CPE 用户终端设备广域网管理协议(CPE WAN Management Protocol, CWMP)。用于实现终端的自动配置。
CPE / ACS
TR069 里有两个重要的名词:
- 用户终端设备(Customer Premise Equipment,CPE)。在宽带接入中,CPE 指的就是家庭网关。any equipment used by customers which can be managed by the ACS (set-top boxes, VoIP-phones but also modems, routers, gateways, and more). CPE is commonly called a device.
- 自动配置服务器(Auto-Configuration Server,ACS)。ACS 的作用是管理 CPE。
作用
- 统一管理:电信公司对众多终端设备需要统一管理,这样可以保证服务质量。
- 自动初始化:实现用户设备的“零配置安装”功能,或是可以从网络侧控制业务参数的动态改变。
- 远程升级:ACS 可以识别用户设备的版本号,决定是否远程更新用户设备的软件版本,并且在更新完成后能够得知是否成功。
- 远程监控:对用户设备的状态和性能进行监测。类似 SNMP 的监控功能。
- 远程故障诊断
传输协议
TCP / HTTP 之上的 SOAP RPC (XML 格式)。
CPE 与 ACS 间支持的函数列表参考:
https://www.cnblogs.com/smillepro/articles/10573720.html
非常有必要浏览一遍,否则没法看懂服务端的代码逻辑(路由部分)
例如,对 CPE 发送来的数据进行解析,可以参考 golang 的一个实现:
https://github.com/CA17/TeamsACS/blob/main/tr069/handlers.go
数据流
首先是 CPE 向 ACS 发起初始化消息,然后才是后续的消息交互。例如 CPE 在上电启动过程中,从已有的配置文件中读取 ACS 的地址,然后通过这个地址向 ACS 发起会话请求,如果连接失败,则需要通过DHCP (Dynamic Host Configuration Protocol)来获得 ACS 地址,再尝试建立与 ACS 的连接。
CPE 维护用于侦听消息的 HTTP 端口,CPE 在初始化连接的时候把端口报给 ACS。 当 ACS 要对 CPE 进行管理时,ACS 建立传输控制协议(TCP)连接并向 CPE 发送 POST 消息,然后 CPE 与 ACS 建立 HTTP/HTTPS 连接,启动 ACS 的管理过程。
服务器为主然后向光终端下达命令的管理方式,终端主动上报告警信息或通知消息,这种主从模式标准的例子在传统的电信网络中经常可以看到。
具体参考 tr069 协议中,acs 与 cpe 的完整通信过程
南向接口 / 北向接口
- 南向接口: ACS 与 CPE 之间的接口称为南向接口
- 北向接口: 而 ACS 与电信运营商的业务管理系统、计费系统管理等之间的接口称为北向接口
Golang 实现
- https://github.com/it-man-cn/go-acs
- https://github.com/CA17/TeamsACS 一个完整的 ACS golang 实现
参考
- https://en.wikipedia.org/wiki/TR-069
- http://www.broadband-forum.org/technical/download/TR-069_Amendment-5.pdf
- https://www.avsystem.com/crashcourse/tr069
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式