网络协议篇之CWMP协议(二)—— CWMP(TR-069)业务流程

article/2025/10/7 21:32:55

一、 CWMP(TR-069)业务流程

        软件架构以及协议的具体解析过程



二、 CWMP(TR-069)通信过程

        我们来看一个tr069协议完整的通信过程. 

(1) 建立TCP连接。

(2) SSL初始化,建立安全机制。

(3) CPE发送Inform报文,开始建立CWMP连接。Inform报文使用Eventcode字段描述发送Inform报文的原因,该举例为“6 CONNECTION REQUEST”,表示ACS要求建立连接。

(4 )如果CPE通过ACS的认证,ACS将返回Inform响应报文,连接建立。

(5) 如果CPE没有别的请求,就会发送一个空报文,以满足HTTP报文请求/响应报文交互规则(CWMP是基于HTTP协议的,CWMP报文作为HTTP报文的数据部分封装在HTTP报文中)。

(6) ACS查询CPE上设置的ACS URL的值。

(7) CPE把获取到的ACS URL的值回复给ACS。

(8) ACS发现CPE的ACS URL是本机URL的值,于是发起Set请求,要求将CPE的ACS URL设置为备用ACS的URL的值。

(9) 设置成功,CPE发送响应报文。

(10) ACS发送空报文通知CPE没有别的请求了。

(11) CPE关闭连接。

之后,CPE将向备用ACS发起连接。


一次GetParameterValues首先由CPE主动发送INFORM消息.

POST /openacs/acs HTTP/1.1  
Host: 192.168.7.1:9090  
User-Agent: BCM_TR69_CPE_04_00  
Connection: keep-alive  
SOAPAction:  
Content-Type: text/xml  
Content-Length: 2452<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 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-ENV:mustUnderstand="1">2044897763</cwmp:ID> </SOAP-ENV:Header>  <SOAP-ENV:Body> <cwmp:Inform> <DeviceId> <Manufacturer>Bellmann</Manufacturer>  <OUI>001F8F</OUI>  <ProductClass>HA930e</ProductClass>  <SerialNumber>27FD6001F8F748602</SerialNumber> </DeviceId>  <Event SOAP-ENC:arrayType="cwmp:EventStruct[1]"> <EventStruct> <EventCode>8 DIAGNOSTICS COMPLETE</EventCode>  <CommandKey/> </EventStruct> </Event>  <MaxEnvelopes>1</MaxEnvelopes>  <CurrentTime>2012-12-10T13:21:37+00:00</CurrentTime>  <RetryCount>0</RetryCount>  <ParameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[0008]"> <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceSummary</Name>  <Value xsi:type="xsd:string">InternetGatewayDevice:1.1[](Baseline:1, EthernetLAN:1, USBLAN:1, WiFiLAN:1, EthernetWAN:1, Time:1, IPPing:1, DeviceAssociation:1), VoiceService:1.0[1](Endpoint:1, SIPEndpoint:1)</Value> </ParameterValueStruct>  <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>  <Value xsi:type="xsd:string">1.0</Value> </ParameterValueStruct>  <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>  <Value xsi:type="xsd:string">HA930e_N_V2.0</Value> </ParameterValueStruct>  <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>  <Value xsi:type="xsd:string">HA930e_N_V1.00S</Value> </ParameterValueStruct>  <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>  <Value xsi:type="xsd:string"/> </ParameterValueStruct>  <ParameterValueStruct> <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>  <Value xsi:type="xsd:string">http://192.168.7.143:30005/</Value> </ParameterValueStruct>  <ParameterValueStruct> <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>  <Value xsi:type="xsd:string">unsetCommandKey</Value> </ParameterValueStruct>  <ParameterValueStruct> <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>  <Value xsi:type="xsd:string">192.168.7.143</Value> </ParameterValueStruct> </ParameterList> </cwmp:Inform> </SOAP-ENV:Body> 
</SOAP-ENV:Envelope>

ACS端回应INFORM Response.

HTTP/1.1 200 OK  
Server: Apache-Coyote/1.1  
X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)/JBossWeb-2.0  
Set-Cookie: JSESSIONID=5CEB426075A42489AC3A7E6BAE004C61; Path=/  
Content-Type: text/xml  
Content-Length: 574  
Date: Sat, 01 Nov 2014 07:53:48 GMT<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">2044897763</cwmp:ID><cwmp:NoMoreRequests>0</cwmp:NoMoreRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:InformResponse xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><MaxEnvelopes>1</MaxEnvelopes></cwmp:InformResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

然后CPE端回应一个空的HTTP POST请求.

HTTP/1.1  
Host: 192.168.7.1:9090  
User-Agent: BCM_TR69_CPE_04_00  
Connection: keep-alive  
SOAPAction:  
Cookie: JSESSIONID=5CEB426075A42489AC3A7E6BAE004C61  
Content-Type: text/xml  
Content-Length: 0  

下面开始进入RPC阶段.由ACS发送RPC REQUEST,这里就是GetParameterValues, 目的是获得InternetGatewayDevice.DeviceSummary的值.

HTTP/1.1 200 OK  
Server: Apache-Coyote/1.1  
X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)/JBossWeb-2.0  
Content-Type: text/xml  
Content-Length: 722  
Date: Sat, 01 Nov 2014 07:53:48 GMT<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">ID:intrnl.unset.id.GetParameterValues1414832028729.539118694</cwmp:ID><cwmp:NoMoreRequests>0</cwmp:NoMoreRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:GetParameterValues><ParameterNames SOAP-ENC:arrayType="xsd:string[1]"><string>InternetGatewayDevice.DeviceSummary</string></ParameterNames></cwmp:GetParameterValues></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

CPE调用后台的脚本查找到InternetGatewayDevice.DeviceSummary的值, 然后回应ACS.

POST /openacs/acs HTTP/1.1  
Host: 192.168.7.1:9090  
User-Agent: BCM_TR69_CPE_04_00  
Connection: keep-alive  
SOAPAction:  
Cookie: JSESSIONID=5CEB426075A42489AC3A7E6BAE004C61  
Content-Type: text/xml  
Content-Length: 941<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 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-ENV:mustUnderstand="1">ID:intrnl.unset.id.GetParameterValues1414832028729.539118694</cwmp:ID> </SOAP-ENV:Header>  <SOAP-ENV:Body> <cwmp:GetParameterValuesResponse> <ParameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[0001]"> <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceSummary</Name>  <Value xsi:type="xsd:string">InternetGatewayDevice:1.1[](Baseline:1, EthernetLAN:1, USBLAN:1, WiFiLAN:1, EthernetWAN:1, Time:1, IPPing:1, DeviceAssociation:1), VoiceService:1.0[1](Endpoint:1, SIPEndpoint:1)</Value> </ParameterValueStruct> </ParameterList> </cwmp:GetParameterValuesResponse> </SOAP-ENV:Body> 
</SOAP-ENV:Envelope>
这个值是:InternetGatewayDevice:1.1[](Baseline:1, EthernetLAN:1, USBLAN:1, WiFiLAN:1, EthernetWAN:1, Time:1, IPPing:1, DeviceAssociation:1), VoiceService:1.0[1](Endpoint:1, SIPEndpoint:1.

最后, ACS结束这次会话.

HTTP/1.1 204 No Content  
Server: Apache-Coyote/1.1  
X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)/JBossWeb-2.0  
Date: Sat, 01 Nov 2014 07:53:53 GMT

整个通信过程我们需要注意以下几点.

什么时候Inform以及EventCode

每次Inform上报代表一次会话的开始, 因此Inform的时机很重要.我们至少需要实现:

CPE初次安装使用的时候. EventCode为BOOTSTRAP.

上电或者重启的时候. EventCode为BOOT.

每一个PeriodicInformInterval周期到来的时候. EventCode为PERIODIC.

ACS通过CPE的Httpd服务向CPE请求CONNECTION REQUEST的时候. EventCode为CONNECTION REQUEST.

Monitor的值发生改变的时候. EventCode要包含VALUE CHANGE.

更详细的支持需要查看手册.

Cookie的作用

我们注意到Inform完成后, ACS和CPE使用同一个Cookie通信, 直到本次会话结束. 事实上由于HTTP协议是无状态协议, 为了能够建立通信过程的顺序,维持状态机的正常工作,两边都是通过Cookie来进行的.

XML节点的type

我们注意到在SOAP消息中,XML节点是包含类别的.比如xsi:type=”xsd:string”, 说明这个Value值是String类型. 虽然在某些ACS上即使去掉这些值也能工作, 但是不同的ACS对参数的检查严格程度不一样, 建议一定要加上.









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

相关文章

关于CWMP基础(一)----(TR069)

CWMP&#xff08;TR069&#xff09; 概述TR069协议族主要功能网络架构关于RPC协议基础RPC协议的处理流程回路&#xff1a;SOAP协议基础CWMP基本功能 概述 1.为什么需要TR069? 随着VoIP、IPTV等越来越多IP终端设备的普及&#xff08;尤其在家庭中的普及&#xff09;&#xff…

CWMP (TR-069)技术介绍

CWMP (TR-069)技术介绍-新华三集团-H3C 目 录 CWMP (TR-069) CWMP&#xff08;TR-069&#xff09;概述 CWMP网络框架 CWMP基本功能 CWMP实现机制 CWMP (TR-069) CWMP&#xff08;TR-069&#xff09;概述 CWMP&#xff08;CPE WAN Management Protocol&#xff0c;CPE广域网管理…

CWMP协议简介

CWMP协议 1、概念2、网络架构3、协议栈结构协议各层概要 4、基本功能①ACS和CPE自动连接&#xff0c;CPE可以通过发送Inform报文自动连接ACS②支持ACS对CPE的自动配置③支持对CPE系统镜像文件和配置文件的上传/下载管理④支持ACS对CPE状态和性能的监控 5、TR-069主要方法①CPE …

神经网络算法详解 01:人工神经网络基础

本文介绍了人工智能的发展历史&#xff0c;基本概念&#xff0c;应用领域&#xff1b;神经元模型&#xff0c;神经元的学习规则以及神经网络工作原理。本系列文章来自阿里云大学人工智能学习路线中的《神经网络概览及神经网络算法详解》课程。 系列文章&#xff1a; 【神经网络…

神经网络算法总结

文章目录 前馈神经网络1. 单层前馈神经网络&#xff08;单层感知器&#xff09;2. 多层感知器 反馈神经网络径向基函数网络&#xff08;RBF网络&#xff09;1. 径向基函数2. 径向基函数网络的结构3. 径向基函数网络原理 Hopfield网络1. Hopfield网络结构2. Hopfield神经网络的两…

卷积神经网络有哪些算法,卷积神经网络算法实现

卷积神经网络通俗理解 。 卷积神经网络&#xff08;ConvolutionalNeuralNetworks,CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff08;FeedforwardNeuralNetworks&#xff09;&#xff0c;是深度学习&#xff08;deeplearning&#xff09;的代表算法…

神经网络算法---手写数字体识别

文章目录 神经网络的背景多层向前神经网络设计神经网络结构交叉验方法 Backpropagation 算法激活函数手写数字例子 神经网络的背景 1&#xff0c;1980年backpropagation是神经网络算法最著名的算法&#xff0c;以人脑中的神经网络为启发。 多层向前神经网络 backpropagation…

遗传算法和神经网络算法区别与联系

1、关于遗传算法&#xff0c;模糊数学&#xff0c;神经网络三种数学的区别和联系 遗传算法是一种智能计算方法&#xff0c;针对不同的实际问题可以设计不同的计算程序。它主要有复制&#xff0c;交叉&#xff0c;变异三部分完成&#xff0c;是仿照生物进化过程来进行计算方法的…

卷积神经网络算法三大类,卷积神经网络算法实现

卷积神经网络算法是什么&#xff1f; 一维构筑、二维构筑、全卷积构筑。 卷积神经网络&#xff08;ConvolutionalNeuralNetworks,CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff08;FeedforwardNeuralNetworks&#xff09;&#xff0c;是深度学习&a…

神经网络的基本原理,神经网络算法三大类

1、神经网络是什么&#xff1f; 生物神经网络主要是指人脑的神经网络&#xff0c;它是人工神经网络的技术原型。 人脑是人类思维的物质基础&#xff0c;思维的功能定位在大脑皮层&#xff0c;后者含有大约10^11个神经元&#xff0c;每个神经元又通过神经突触与大约103个其它神…

神经网络的算法有哪些,神经网络算法包括哪些

卷积神经网络算法是什么&#xff1f; 一维构筑、二维构筑、全卷积构筑。 卷积神经网络&#xff08;ConvolutionalNeuralNetworks,CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff08;FeedforwardNeuralNetworks&#xff09;&#xff0c;是深度学习&a…

反馈神经网络算法

典型的卷积神经网络&#xff0c;开始阶段都是卷积层以及池化层的相互交替使用&#xff0c;之后采用全连接层将卷积和池化后的结果特征全部提取进行概率计算处理。 在具体的误差反馈和权重更新的处理上&#xff0c;不论是全连接层的更新还是卷积层的更新&#xff0c;使用的都是经…

神经网络算法实例说明,简单神经网络算法原理

神经网络算法实例说明有哪些&#xff1f; 在网络模型与算法研究的基础上&#xff0c;利用人工神经网络组成实际的应用系统&#xff0c;例如&#xff0c;完成某种信号处理或模式识别的功能、构作专家系统、制成机器人、复杂系统控制等等。 纵观当代新兴科学技术的发展历史&…

算法评价与神经网络算法

前言 随着大数据和信息传输技术的兴起、人们的数据处理工作指数型增长&#xff0c;传统的编程方法和数学模型不再适用于这样大数据量、高噪音的工作&#xff0c;神经网络的使用就变得愈加广泛。作为传统机器学习的一个分支&#xff0c;神经网络实现了更高层次的自动化。对于多…

神经网络算法可以用来干什么

神经网络算法可以解决的问题有哪些 人工神经网络&#xff08;Artificial Neural Networks&#xff0c;ANN&#xff09;系统是 20 世纪 40 年代后出现的。它是由众多的神经元可调的连接权值连接而成&#xff0c;具有大规模并行处理、分布式信 息存储、良好的自组织自学习能力等特…

Matlab实现神经网络算法

线性关系可以说是最简单的关系&#xff0c;但在大多数实际问题求解中&#xff0c;线性关系往往不能体现事物之间的复杂关系。而神经网络算法具有非线性关系的逼近能力。在以往所学的算法中&#xff0c;往往是通过得到一个f(x)函数来描述y和x之间的关系的&#xff0c;但神经网络…

神经网络算法的基本原理,神经网络算法通俗解释

神经网络算法原理 4.2.1概述人工神经网络的研究与计算机的研究几乎是同步发展的。 1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型&#xff0c;20世纪50年代末&#xff0c;Rosenblatt提出了感知器模型&#xff0c;1982年&#xff0c;Hopfiled引入了能量…

神经网络算法的基本原理,神经网络算法都有哪些

神经网络算法的三大类分别是&#xff1f; 神经网络算法的三大类分别是&#xff1a;1、前馈神经网络&#xff1a;这是实际应用中最常见的神经网络类型。第一层是输入&#xff0c;最后一层是输出。如果有多个隐藏层&#xff0c;我们称之为“深度”神经网络。他们计算出一系列改变…

神经网络算法介绍

引言 人工神经网络&#xff08;Artificial Neural Networks&#xff0c;ANN&#xff09;最早起源于1943年&#xff0c;受“脑神经元学说”的启发&#xff0c;心理学家WMcculloch和数理逻辑学家WPitts首次提出基于神经元的数学模型&#xff0c;后来经过无数人的改进和完善&…

深度神经网络算法有哪些,最简单的神经网络算法

常见的深度学习算法主要有哪些&#xff1f; 深度学习常见的3种算法有&#xff1a;卷积神经网络、循环神经网络、生成对抗网络。 卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks)&#xff0c;是深度…