CWMP协议(TR069协议)学习

article/2025/10/18 21:35:47

文中借鉴了一些大神的整理,后面会贴上链接,如侵删

目录

一、概念(来自百度百科)

二、网络元素

三、基本功能

四、CWMP协议栈

五、远程调用方法(RPC)详细的RPC方法定义请参见TR-069

六、inform的事件

七、TR069完整通信流程

八、详细业务流程可参考博客


一、概念(来自百度百科)

CWMP(CPE WAN Management Protocol,CPE 广域网管理协议),编号为TR-069,所以又被称为TR-069 协议。它提供了对下一代网络中家庭网络设备进行管理配置的通用框架、消息规范、管理方法和数据模型。

CWMP 主要应用于DSL 接入网络环境。在DSL 接入网络中,由于用户设备数量繁多、部署分散,通常位于用户侧,不易进行设备的管理和维护,CWMP 提出通过ACS(Auto-Configuration Server,自动配置服务器)对CPE(Customer Premises Equipment,用户侧设备)进行远程集中管理,解决CPE 设备的管理困难,节约维护成本,提高问题解决效率。

二、网络元素

·ACS:自动配置服务器,网络中的管理设备。

·CPE:用户端设备,网络中的被管理设备。

·DNS server:域名服务器。CWMP 协议规定ACS 和CPE 使用URL 地址来互相识别和访问,DNS 用于帮助解析URL 参数

·DHCP server:动态主机配置协议服务器。给ACS 和CPE 分配IP 地址,使用DHCP 报文中的option 字段给CPE 配置参数

主要框架为:

三、基本功能

1. ACS 和CPE 的自动连接

CPE可完成部分配置实现ACS与CPE的自动连接(比如说配置心跳上报周期等)

2. 支持ACS 对CPE 的自动配置

被管理设备(CPE)接收来自ACS发起的配置请求,请求包括了协议标准的参数(比如TR098、TR181等协议规定的数据模型),以及用户自定义的数据模型

3. 支持对CPE 系统启动文件和配置文件的上传/下载管理

被管理设备(CPE)可以从ACS服务器通过协议标准的数据模型上传或下载文件(包括升级软固件包、日志文件、性能统计文件等等)

4. 支持ACS 对CPE 状态和性能的监控

ACS可以通过标准定制的方法监控被管理设备(CPE)的状态和性能统计,同时CPE也可以主动通知ACS自身状态的更新

5.告警上报

被管理设备(CPE)可以主动向ACS服务器上传设备中的告警信息

四、CWMP协议栈

五、远程调用方法(RPC)详细的RPC方法定义请参见TR-069

测试中经常会用到的方法如下

CPE侧的RPC方法:

GetRPCMethods:获取RPC方法列表

SetParameterValues:ACS设置参数值

GetParameterValues:ACS获取参数值

GetParameterNames:ACS获取参数列表

SetParameterAttributes:ACS设置参数属性

GetParameterAttributes:ACS获取参数属性(也包含了参数权限)

AddObject:ACS增加一个实例对象

DeleteObject:ACS删除一个实例对象

Reboot:ACS下发重启命令到设备

Download:ACS从指定的下载目录下下载指定文件

Upload:ACS上传指定文件到指定目录下

FactoryReset:ACS下发恢复出厂命令到设备

ACS侧RPC方法:

GetRPCMethods:获取RPC方法列表

Inform:与ACS建立连接、通知

TransferComplete:通知传输完成,Download或Upload方法调用的传输文件已经结束(不管是成功还是失败都会返回,如果是失败,会有具体的参数返回对应的失败错误码)

AutonomousTransferComplete:通知传输完成(设置了自动传输的时候比如说定时上传,Upload方法调用的传输文件已经传输完成)

六、inform的事件

七、TR069完整通信流程

这篇文章写得很详细,可以参考:

TR-069 协议完整的通信过程_HotCook的博客-CSDN博客_tr069流程

 

  • (1) 设备启动;根据配置的ACS(自动配置服务器)地址,建立安全的HTTP连接以后,每次连接CPE都必须首先对ACS发出一个Inform的RPC调用请求来向ACS汇报本次连接的信息。ACS会返回给一个Inform response作为确认连接。
  • (2) ACS服务器接受到设备端(CPE端)发出的inform消息之后,会给予一个 informresponse响应机cwmp连接创建成功
  • (3) 设备端发送空消息,表示没有后续的请求
  • (4) ACS服务器收到空消息后,根据空消息中携带的序列号对设备进行合法性验证,若验证通过则进行后续操作,若不通过则下发消息提示设备非法。序列号的判断在ACS内部判断,未体现在报文中
  • (5) ACS验证设备序列号合法,发送消息要求设备端上报网管的账号信息
  • (6) 设备端接收该ACS服务器请求上报账号的消息后,将发送设备上配置的账号信息作为请求的响应
  • (7) ACS服务器收到消息后,根据消息中携带的账号信息进行合法性验证,若验证通过则进行后续操作,若不通过则下发消息提示账号非法。序列号的判断在ACS内部判断,未体现在报文中
  • (8) ACS验证账号合法,发送消息要求设备从特定URL上下载配置文件
  • (9) 设备接收到该消息之后,并根据消息中的URL地址下载配置文件并自动配置,同时给ACS服务器一个下载成功的响应消息
  • (10) ACS服务器发送消息,要求设备从特定的URL下载升级文件(是否升级可由用户自行决定)
  • (11) 设备接收到该消息之后,并根据消息中的URL地址获取升级文件,同时给予ACS服务器一个响应
  • (12) ACS服务器发送空消息结束流程
  • 八、详细业务流程可参考博客

该篇博客有完整的流程和报文,可参考

网络协议篇之CWMP协议(二)—— CWMP(TR-069)业务流程_zqixiao_09的博客-CSDN博客_cwmp协议


http://chatgpt.dhexx.cn/article/CQBG7PuV.shtml

相关文章

TR069是什么鬼

一,TR069是什么 1,概念 搞嵌入式或通信设备的,或多或少都会听说TR069。那他是什么鬼? TR069,就是CPE广域网管理协议。 它用于ACS和CPE之间的自动协商交互,能够实现终端的自动配置。( ACS&#x…

TR069协议详解

一、关于TR069协议 TR069, 全称“Technical Report 069”是由DSL Forum(一个非盈利性的全球行业联盟,致力于发展宽带网络范, 其成员包括通讯、设备、计算机、网络和服务提供商等行业的领先厂商,现已更名为“Broadband Forum”)修…

TR-069协议介绍

一、概念 关于TR-069 ①协议命名 TR-069, 全称“Technical Report 069”是由DSL Forum(一个非盈利性的全球行业联盟,致力于发展宽带网络范)。其成员包括通讯、设备、计算机、网络和服务提供商等行业的领先厂商,现已更名为“Broadband Forum…

apache多个php版本fcgi,apache使用mod_proxy_fcgi实现多版本php共存

2019-08-02 apache使用mod_proxy_fcgi实现多版本php共存 首先配置php 安装你想用的php版本,找到你的php-fpm.conf配置文件 将listen换成你想要的端口 比如listen 127.0.0.1:9099 注意,如果你的fpm系变量配置文件在php-fpm.d的www.conf下面,请…

搭建nginx+fcgi并使用Holer实现内外网访问

1、环境搭建 本文使用了ubuntu20.04系统进行搭建。 1.1搭建nginx服务器 到Nginx的官网(http://nginx.org/en/download.html)上去下载最新的源码包,本文使用的是nginx-1.20.0.tar.gz (1)执行tar -zxvf nginx-1.20.0.tar.gz 命令解压文件到当…

web服务选择lighttpd,采用fcgi组件技术扩展处理业务层

目录 一、简介fcgi:web和web服务器间数据传输的桥梁... 2 二、源码编译配置ARM Lighttpd Fastcgi C.. 3 【1】交叉编译。源文件都从官网下载。 Fcgi lighttpd zlib. 3 【2】配置服务器server.document-root"/www" fastcgi.server "bin-path&quo…

Nginx运行FastCGI程序(ngx_http_fastcgi_module模块、fcgi库、spwan-fcgi进程管理器)

一、什么是CGI 通用网关接口(Common Gateway Interface、CGI)描述了客户端和服务器程序之间传输数据的一种标准,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。 CGI 独立于任何语言的,CGI 程序可…

php运行方式fpm fcgi,php如何从fpm-fcgi切换运行模式到cli

在使用一个php爬虫的时候提示一定要用cli环境 我查看了当前php版本信息如下: 我打印 PHP_SAPI 显示 fpm-fcgi 如何才能变成 cli 服务器环境是linux+nginx 补充:我能不能理解为cli一定是要命令行模式? 刚刚在命令行里测试了PHP_SAPI 输出了cli 问:能不能http模拟调用实现cli…

spwan-fcgi和fcgi 关系

spwan-fcgi: 举个例子: spawn-fcgi -a 127.0.0.1 -p 10000 -f ./login spwan-fcgi.c: main 函数 会执行参数解析过程 获得 ip 端口 和 执行文件的路径。 bind_socket 函数会执行 sockt 的 绑定监听过程, 函数 fcgi_spawn_connection 会通过系统调用d…

nginx+spawn-fcgi+demo+fcgi库函数

由于项目中用到了nginxFastCGI相关内容,所以这段时间学习了一下,顺便记下相关内容。 我是在远程工作机上实验的,有个缺点就是没有root权限,所以有些步骤我就没做了,比如make install(nginx)、添…

【fcgi-2.4.0】移植fcgi-2.4.0到armv7平台

源码下载链接 Index of /lookaside/extras/fcgi/fcgi-2.4.0.tar.gz/d15060a813b91383a9f3c66faf84867e (fedoraproject.org)https://src.fedoraproject.org/lookaside/extras/fcgi/fcgi-2.4.0.tar.gz/d15060a813b91383a9f3c66faf84867e/下载fcgi-2.4.0.tar.gz 解压源码 tar …

程序异常捕获库 - CrashRpt

CrashRpt.dll用来在应用程序出现异常crash时,捕获到错误,并收集出错信息:MiniDump文件、硬件信息、系统信息、出错信息、进程信息、服务信息、驱动信息、启动信息、软件列表、端口信息、磁盘分区、WinSock LSP、IE插件、网卡信息。 1、使用方…

CrashRpt.dll用来在应用程序出现异常crash

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c 编程经验,就来吧!158427611 欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c 编程经验,就来吧&a…

crashRpt使用方法

从官网上下载crashRpt的源码,按说明编译出相应的lib和dll 1 在编译crashRpt的时候,在环境变量中设置 crashrptDirD:\work\AIW\WebMicaps\WebMicapsServer\src\CrashRpt,以简化编译 2 在主程序运行的工作目录下要拷贝crashRpt编译后生成…

CrashRpt使用

CrashRpt 中除了错误处理之外值得学习的地方还是不少的,如屏幕截图、邮件 发送。 这里主要提取屏幕截图的功能。 1. 从 CrashRpt 源码目录中分别复制 minizip 、 zlib 、 libpng 到一个目录作为公 共库使用,并分别编译它们生成 lib ,需要设置…

crashRpt用法

从官网上下载crashRpt的源代码,按说明编译出对应的lib和dll 1 在编译crashRpt的时候,在环境变量中设置 crashrptDirD:\work\AIW\WebMicaps\WebMicapsServer\src\CrashRpt,以简化编译 2 在主程序执行的工作文件夹下要拷贝crashRpt编译后生…

捕获Windows C/C++程序异常奔溃工具CrashRpt

背景 在Windows环境下做C/C程序开发有段时间了,经常遇到程序奔溃时缺无法捕获,经同事推荐,知道了CrashRpt这个捕获C/C程序异常的工具,让我省去了通过增加打印调试去查询程序异常的繁琐方式。下面记录下使用这个工具的一些方法。 …

关于CrashRpt的研究

CrashRpt是轻量级的开源错误报告库 官网下载链接 ##编译工程 从官网下载下最新版(v.1.4.3_r1645),解压后发现是visual studio的工程,使用的是vs2010。但我用得是vs2017,所以在编译之前要做一下处理: 对于…

C++接入CrashRpt并上报分析崩溃信息

项目需要监测在Windows平台的崩溃情况,折腾了两天终于弄好了,记录一下。 1.捕获崩溃信息 接到这个需求,心想应用崩溃系统会收到信号,应该有相应的函数可以监听,上网搜索,果不其然函数 SetUnhandledExcep…

计算机中丢失crashrpt,修复crashrpt.dll

crashrpt.dll是电脑系统必备的一个DLL组件修复程序。系统重要文件 crashrpt.dll 。crashrpt.dll(含64位)在电脑中起着重要作用。比如电脑中的部分软件的正常运行就离不开它,如果缺少这款dll,会给用户带来不少麻烦。一旦发现自己的电脑这款crashrpt.dll出…