建立连接前 CPE 需要的配置
- ACS 的 URL 地址
- CPE 与 ACS 的通信频率。Inform Interval。两者间不是长期保持连接,而是周期性的通信一会,大概几秒钟,即可完成关键数据的交换。这个短暂的过程称为 provisioning session。
- 用户名/密码。验证是可选的,这取决于 ACS 是否需要验证,及安全级别。
会话 (Session) 发起者
CPE,即由设备向 ACS 发起会话。
注意:ACS 并不能发起 session 会话,只能由 CPE 发起。
但是,ACS 可以向 CPE 请求 (Connection Request),请求 CPE 发起会话。 对应的场景是,当配置需要立即下发到 TPE 中。
认证过程
会话发起时,ACS 会验证 CPE 提供的账号密码(设备端配置)。密码验证的过程使用了 HTTP Digest method,非 HTTP 明文。为了提高安全性,也可以启用 HTTPS。
CPE 设备标识
由设备序列号(serial number)及生产厂家的唯一标识组成,类似一个联合唯一索引。而设备的 MAC 地址并不作为唯一标识,但是 ACS 依然会保存设备的 Mac 地址,用于 GUI 后台界面的显示,及查询。
设备上的任务执行
在设备认证之后,ACS 会发起一系列的任务 (task)。包括:参数的读取及保存,执行诊断,重启,文件传输等。
CPE 何时向 ACS 发起会话
- BOOTSTRAP: 当在设备上配置 ACS URL 发生更改时,或者恢复出厂设置。从 ACS 获取初始化的账号和密码。
- PERIODIC: 到了新的会话周期。因为 CPE 与 ACS 通信是周期性的,即,按照 Periodic Inform Interval 参数设置的时间间隔发起会话。
- CONNECTION REQUEST: 对 ACS 请求的回复 (response)。
- VALUE CHANGE: 参数修改,并且设置了 notification。
- BOOT: 设备重置,或重新上电。
- SCHEDULED: 在上一次会话时,ACS 命令 CPE 上报信息(我感觉我理解的不对), 使用 ScheduleInform 命令。
- TRANSFER COMPLETE: 设备上报任务进度(上传、下载文件)
- DIAGNOSTIC COMPLETE: 也是完成了 ACS 分配的诊断任务。
teamsacs 定义 events 在代码文件 common/cwmp/Message.go:
const (
// EventBootStrap first connection
EventBootStrap string = "0 BOOTSTRAP"
// EventBoot reset or power on
EventBoot string = "1 BOOT"
// EventPeriodic periodic inform
EventPeriodic string = "2 PERIODIC"
// EventScheduled scheduled infrorm
EventScheduled string = "3 SCHEDULED"
// EventValueChange value change event
EventValueChange string = "4 VALUE CHANGE"
// EventKicked acs notify cpe
EventKicked string = "5 KICKED"
// EventConnectionRequest cpe request connection
EventConnectionRequest string = "6 CONNECTION REQUEST"
// EventTransferComplete download complete
EventTransferComplete string = "7 TRANSFER COMPLETE"
// EventClientChange custom event client online/offline
EventClientChange string = "8 CLIENT CHANGE"
)
参考
- https://www.avsystem.com/crashcourse/tr069/
- CPE 和 ACS 是什么
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式