TR协议编程基础知识.docx
- 文档编号:25047221
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:24
- 大小:211.47KB
TR协议编程基础知识.docx
《TR协议编程基础知识.docx》由会员分享,可在线阅读,更多相关《TR协议编程基础知识.docx(24页珍藏版)》请在冰豆网上搜索。
TR协议编程基础知识
TR069协议编程需掌握知识
TR069
1、TR069协议是由DSL所开发的技术规范,它提供了对网络设备进行管理配置的通用框架和协议,用于从网络侧对网关、FEMTO、路由器等设备进行远程管理。
当前在统一网管的实现过程中需要处理TR069协议包数据,为了能够正确的处理设备的请求响应,就必须对TR069协议包数据内容有所了解。
协议组成
2、协议组成如下图
层描述:
3、我们所关心的层主要是RPCMethods层、SOAP层以及HTTP层。
下面具体介绍RPCMethods层的内容,首先我们需要知道ACS和CPE建立连接的方式。
这里列出封装RPC方法的SOAP信息的格式。
理解它们有助于组包解包。
ACS与CPE的连接建立
4、ACS和CPE的连接建立:
ACS与CPE建立连接的方式,按连接发起方划分可以分为两种方式:
CPE发起连接、ACS主动建立连接
CPE发起连接有以下几种情况:
(1)CPE第一次建立网络连接,对应RPC命令INFORM+"0BOOTSTRAP";
(2)加电或者重置,对应的RPC命令INFORM+"1BOOT"
(3)每个周期上报时间,对应的RPC命令INFORM+"2PERIODIC"
(4)可选的ScheduleInform方法被要求,对应RPC命令是的是INFORM+"3SCHEDULED"
(5)CPE接收到来自ACS的有效连接请求,对应的RPC命令INFORM+"6CONNECTIONREQUEST"
(6)ACS的URL发生变化,对应的RPC命令是对应RPC命令INFORM+"0BOOTSTRAP"
(7)CPE的参数发生更改,如CPE的IP地址;
(8)CPE的参数值发生变化,并且这个变化不是由ACS引起的,对应对应的RPC命令是INFORM+"4VALUECHANGE"
CPE与ACS连接示意图如下:
ACS发起连接:
ACS向CPE发起连接通过HTTPGET请求;
(1)需要注意的是连接使用的必须是HTTP请求而不是HTTPS
(2)并且GET通告中不需要包含其它数据,即使有数据也会被CPE忽略。
(3)CPE接到GET请求后与ACS建立连接,并在成功建立连接后发送一条INFORM报文。
连接建立示意图
ACS与CPE之间结束会话:
ACS与CPE之间的会话如果要正常结束需要以下条件:
(1)CPE不再有请求发给ACS
(2)ACS也没有请求发给CPE
(3)CPE已经发送完毕ACS的请求响应
(4)ACS已经发送完毕CPE的请求响应
RPC方法
方法列表
方法介绍
1、Inform信息:
由CPE传送到网管,CPE事件通过绑定Inform信息进行上报;事件的EVENT_CODE有
(1)"0BOOTSTRAP",表示会话发起的原因是CPE首次安装或者是ACS的URL发生变化。
网管接收到后要执行注册流程
(2)"1BOOT",表示会话发起的原因是CPE通电启动或者是重置,包括系统首次启动,以及任何原因引起的重启,或者是事件"MReboot"引起的;
(3)"2PERIODIC",表示会话发起的原因是因为定时Inform策略引起的。
(4)"3SCHEDULED",表示会话发起的原因是因为CPE定时调用了ScheduleInform方法引起的。
该EVENT_CODE必须位于"MScheduleInform"中。
(5)"4VALUECHANGE",表示会话发起的原因是CPE的一个或者多个参数值发生变化。
(6)"5KICKED",表示会话发起的原因是为了Web标识管理(?
)
(7)"6CONNECTIONREQUEST",表示会话发起的原因是源自ACS的ConnectionRequestNotification
(8)"7TRANSFERCOMPLETE",表示会话发起的原因是上传或者下载成功(不管是否真的成功)
(9)"8DIAGNOSTICSCOMPLETE",当完成由ACS要求的诊断测试后,重新与ACS建立连接时用
(10)"9REQUESTDOWNLOAD",表示会话发起的原因是CPE要求调用RequestDownload方法
(11)"10AUTONOMOUSTRANSFERCOMPLETE",表示会话发起的原因是由CPE主动的上传或者下载成功,而不是ACS的请求
(11)"MReboot","MScheduleInform","MDownload","MUpload",带有“M“字符说明这个是执行ACS请求方法的结果,里面一般含有其它的EVENT_CODE;如:
"MReboot"含有"1BOOT","MScheduleInform"含有"3SCHEDULED"
(12)"X_CU_ALARM","X_DISCOVER"厂商自定以规范前者表示告警信息,后者表示发现信息
2、GetParameterNames:
由ACS发起,用于发现CPE上的可访问参数。
涉及到的数据表有
命令请求操作处理:
CO_RTU,CO_PROTOCOL,CO_CHANEL;回应信息处理:
CO_PARAM_LIST,CO_NE_PARAM,CO_CWMP_PARAM_LIST
3、GetParameterValues:
由ACS发起,用于查找CPE上一个或者多个参数的值。
4、SetParameterAttributes:
由ACS发起,用于修改CPE上一个或者多个参数的属性。
5、SetParameterValues:
由ACS发起,用于修改CPE上一个或者多个参数的值。
6、AddObject:
由ACS发起,用于对一个特定的多实例对象创建一个新的实例。
7、DeleteObject:
由ACS发起,用于删除一个对象的特定实例
8、Reboot:
由ACS发起,用于重启指定的CPE终端
9、DownLoad:
由ACS发起,用于要求CPE终端在指定的位置下载指定的文件
10、Upload:
由ACS发起,用于要求CPE终端向指定位置上传某一特定文件
11、FactoryReset:
由ACS发起,用于要求特定的CPE终端恢复出厂设置。
12、GetRpcMethods由CPE或者是ACS发起,用于发现另一方所支持的方法集。
方法参数详解
1INFORM参数
内容见下表:
参数
类型
描述
DeviceID
DeviceIdStruct
Manufactucer,OUI,ProductClass(用于标识产品或者产品类型),SerialNumber
Event
EventStruct
说明引发会话建立的一个或者多个事件
MaxEnvelope
Unsignedint
CPE能够从ACS接受的一个HTTP回复中的最大SOAP信包数目。
若为0则说明没有限制
CurrentTime
dateTime
CPE当前日期时间
RetryCount
Unsignedint
在完成对inform方法的调用前,进行进行了多少次调用尝试,在每次非成功的尝试后增加1。
非成功的尝试包括发送Inform报文以及与ACS建立连接,或每次对Inform的报文的不成功调用,如:
接收到错误应答或没有接收应答。
在已经发送了Inform报文并成功得到应答后该值被重置为0
ParameterList
ParameterValueStruct
CPE在Inform请求中包含的参数信息表,每次上报必须包含一些参数:
硬件版本、软件版本、ManagementServer.ConnectionRequestURL、CommandKey等
2GetRpcMethods参数
内容见下表
参数
类型
描述
该方法没有调用参数
3GetRpcMethodsResponse参数
参数
类型
描述
MethodList
String()[]
字符串数组,包含支持的每一个RPC名称。
例如:
CPE返回方法列表给ACS:
“GetRPCMethods”
“SetParameterValues”
“GetParameterValues”
“SetParameterNames”
“GetParameterNames”
“AddObject”
“DeleteObject”
“Reboot”
4SetParameterValues参数
参数
类型
描述
ParameterList
ParamterValueStruct[]
一个Name-Value的键值对数组。
对每个Name-ValueCPE会将对应参数到的值设为指定值
ParameterKey
String(32)
设置ParameterKey的参数值。
该值可以用于acs,来识别参数更新,或者让其为空
5SetParameterValuesResponse参数
参数
类型
描述
Status
int[0:
1]
对该方法的成功应答返回一个整数型的枚举值定义如下:
0=参数的改动已经验证并应用。
1=参数的改动已经验证并提交,只是尚未应用(比如,在新的参数值应用前需要进行重新启动)。
6ParameterValueStruct定义
参数
类型
描述
Name
string(256)
参数的名称。
Value
任意类型
需要设置的值
7GetParameterNames参数
参数
类型
描述
ParameterPath
string(256)
包括一个完整参数名或部分路径名的字符串,代表名称层次的一个子集。
空字符串代表名称空间的顶层。
部分路径名必须在层次中的最后一个节点名称后面以“.”(点)结尾。
下面是完整参数名的例子:
InternetGatewayDevice.DeviceInfo.SerialNumber
下面是部分路径名的一个例子:
InternetGatewayDevice.DeviceInfo.
NextLevel
boolean
如果值为false,则CPE响应将列出所有以ParameterPath参数指定字符串开始的参数的完整路径名。
如果值为true,则CPE响应只列出指定的ParameterPath下一层的部分路径名。
例如,如果ParameterPath是“InternetGatewayDevice.LANDevice.”,响应可能列出“InternetGatewayDevice.LANDevice.1.”和“InternetGatewayDevice.LANDevice.2.”,而不会列出在该层次下面的所有参数。
8GetParameterNamesResponse参数
参数
类型
描述
ParameterList
ParameterInfoStruct[]
结构数组,每个包含一个参数的名称和其它信息,见下表的定义。
当NextLevel是false时,这一方法返回所有名称以ParameterPath参数指定的字符串开头的所有可访问的参数及其信息。
如果ParameterPath参数是一个空字符串,则将返回该CPE上所有可访问的参数名称。
当NextLevel是true时,这一列表包括以ParameterPath指明路径的下一层的所有部分路径名。
9ParameterInfoStruct参数
参数
类型
描述
Name
string(256)
这是参数的名称或部分路径名。
Writable
boolean
是否该参数值能够用SetParameterValues方法来覆盖。
如果因NextLevel值为true,该名称是一个部分路径名,则表明是否AddObject和DeleteObject可以被用于该层次来移除该实例或增加其它的实例。
10SetParameterAttributes参数
参数
类型
描述
ParameterList
SetParameterAttributesStruct[]
列出用于更改一组参数的属性改动值。
该数组中的每项条目是一个SetParameterAttributesStruct结构,在下表中定义。
11SetParameterAttributesStruct参数
参数
类型
描述
Name
string(256)
这是应用新属性的参数的名称。
另一种方式是,该名称可以是一个部分路径名,表明新的属性应当应用于命名层次中该节点下的所有参数。
部分路径名必须在层次中的最后一个节点名称后面以“.”(点)结尾。
空字符串代表名称空间的顶层。
NotificationChange
boolean
如果为true,Notification的值将替换该参数或参数组的当前notification的设置。
如果是false,则不作任何notification设置的改动。
Notification
int[0:
2]
指定是否CPE应当将指定的该(或多个)参数的变化值放到其Inform报文中,以及是否当指定参数的值发生变化时,CPE应当发起一个到ACS的会话。
值的定义如下:
0=Notification关闭。
CPE不必通过ACS指定参数的变化。
1=被动式Notification。
当指定的参数值变化时,CPE必须在下一次建立与ACS的会话时,将这一新值包含在Inform报文的ParameterList中。
2=主动式Notification。
一旦指定参数的值发生变化,CPE必须发起与ACS的会话,将新值包含在相应的Inform报文的ParameterList中。
因非零的Notification设置引起发送的Inform报文中参数发生变化,事件代码“4VALUECHANGE”必须包括在事件列表中。
如果试图给一个不适合设置notification值的参数(比如一个持续变化的统计值)设置notification值,CPE可以返回一个“notificationrequestrejected”错误。
AccessListChange
boolean
如果为true,AccessList的值会替换该参数或参数组的当前accesslist值。
如果为false,accesslist不作改动。
AccessList
String(64)[]
零个或多个实体的数组,该实体对指定的参数有写权限。
如果数组中不包含条目,则只允许ACS有写权限。
目前,只定义了一类实体可以包含在该列表中:
“Subscriber”指明由LAN上的Subscriber控制的设备拥有写权限。
比如通过LAN端的DSLCPE配置协议或通过UPnP。
默认情况下,在ACS对accesslist作改动前,上述的所有实体应当被赋予写访问权。
12SetParameterAttributesResponse参数
参数
类型
描述
-
void
该方法的应答没有参数。
13GetParameterAttributes参数
参数
类型
描述
ParameterNames
string(256)[]
字符串数组,每一条对应所请求的参数的名称。
如果参数名是以部分路径名的方式出现,则该请求需被解释为请求返回命名层次中共用相同前缀的该分支的所有参数。
部分路径名必须在层次的最后一个节点名称后面以“.”(点)结尾。
空字符串代表整个层次名称的顶部。
下面是完整参数名称的例子:
InternetGatewayDevice.DeviceInfo.SerialNumber
下面是部分路径名称的例子:
InternetGatewayDevice.DeviceInfo.
14GetParameterAttributesResponse参数
参数
类型
描述
ParameterList
ParameterAttributeStruct[]
列示指定的参数集的accesscontrol信息。
该数组中的每一条目是一个ParameterAcessStruct结构,在下表中定义。
15ParameterAttributesStruct参数
参数
类型
描述
Name
string(256)
这是给出属性值的参数名称。
Notification
int[0:
2]
指定是否CPE应当将指定的该(或多个)参数的变化值放到其Inform报文中,以及是否当指定参数的值发生变化时,CPE应当发起一个到ACS的会话。
值的定义如下:
0=Notification关闭。
CPE不必通过ACS指定参数的变化。
1=被动式Notification。
当指定的参数值变化时,CPE必须在下一次建立与ACS的会话时,将这一新值包含在Inform报文的ParameterList中。
2=主动式Notification。
一旦指定参数的值发生变化,CPE必须发起与ACS的会话,将新值包含在相应的Inform报文的ParameterList中。
AccessList
string(64)[]
零个或多个实体的数组,该实体对指定的参数有写权限。
如果数组中不包含条目,则只允许ACS有写权限。
目前,只定义了一类实体可以包含在该列表中:
“Subscriber”指明由LAN上的Subscriber控制的设备拥有写权限。
比如通过LAN端的DSLCPE配置协议或通过UPnP。
16AddObject参数
参数
类型
描述
objectName
string(256)
要建立新实例的对象集合的路径名称。
路径名必须在该对象的层次名称的最后节点后加上“.”(点)结尾。
ParameterKey
string(32)
需要设置的ParameterKey参数的值。
该参数由服务器决定,并可以为空。
17AddObjectResponse参数
参数
类型
描述
InstanceNumber
unsignedInt[1:
]
新建对象的实例号码。
在对象建立后,可以在路径名中使用该实例号码来引用该对象的参数或子对象。
由CPE指定的实例号码是任意的,并且与后续的AddObject调用分配的号码无需连续。
CPE不应当将曾经分配出去的现已删除的对象使用过的号码再分配给新的实例。
CPE应当在耗尽某指定对象的整个整数值空间后再重用实例号码。
Status
int[0:
1]
对该方法的成功应答返回一个整数型的枚举值定义如下:
0=对象已经建立。
1=对象的建立已经验证并提交,只是尚未应用(比如,增加新对象前需要进行重新启动)。
18DeleteObject参数
参数
类型
描述
objectName
string(256)
欲删除的对象实例的路径名。
路径名必须以对象的实例号码后加“.”(点)来结尾。
ParameterKey
string(32)
需要设置的ParameterKey参数的值。
该参数由服务器决定,并可以为空。
19DeleteObjectResponse参数
参数
类型
描述
Status
int[0:
1]
对该方法的成功应答返回一个整数型的枚举值定义如下:
0=对象已经建立。
·1=对象的建立已经验证并提交,只是尚未应用(比如,增加新对象前需要进行重新启动)。
20DownLoad参数
参数
类型
描述
CommandKey
string(32)
CPE用来指向特定下载的字符串。
该参数在方法TransferComplete和GetQueuedTransfers中引用。
FileType
string(64)
一个整数,其后是一个空格,再其后是一个文件类型说明。
目前FileType参数仅定义了以下值:
"1FirmwareUpgradeImage"
"2WebContent"
"3VendorConfigurationFile"
下列格式用于定义唯一的厂商自定义文件类型:
"X
其中,
URL
string(256)
URL说明源文件的位置。
必须支持HTTP传输。
可以支持其它可选的传输方式,如节的定义。
Username
string(256)
CPE用于认证文件服务器的用户名。
如果不需要认证,则该字符串设置为空串。
Password
string(256)
CPE用于认证文件服务器的密码。
如果不需要认证,则该字符串设置为空串。
FileSize
unsignedInt
以字节为单位的要传输文件的大小。
TargetFileName
string(256)
在目标文件系统中应使用的文件名。
DelaySeconds
unsignedInt
从本方法被调用到CPE被要求开始下载之间的时间间隔。
如果值为零表明不需要延迟。
如果是非零值,则下载不应当使用与该请求相同的事务会话。
SuccessURL
string(256)
在能应用的情况下,本参数包含在下载成功完成后,CPE应当将用户的浏览器重定向到哪一URL。
在不需要这样的URL的情况下,这一参数应当为空。
FailureURL
string(256)
在能应用的情况下,本参数包含在下载未成功完成后,CPE应当将用户的浏览器重定向到哪一URL。
在不需要这样的URL的情况下,这一参数应当为空。
Staus
int[0:
1]
对该方法的成功应答返回一个整数型的枚举值定义如下:
0=下载已结束并已应用。
1=下载还没有结束(比如,CPE需要重新启动后才能执行文件的下载)。
如果该参数的值非零,则CPE必须在本会话的后续时间,或者在其后的会话中,调用TransferComplete方法来说明本次下载的完成状态(成功或者失败)。
StartTime
dateTime
下载开始的日期和时间(UTC)。
只有在下载结束后该值才需要填写。
CompleteTime
dateTime
下载完全结束并应用时的日期和时间(UTC)。
只有在下载结束后该值才需要填写。
21Reboot参数
参数
类型
描述
CommandKey
string(32)
当CPE重新启动并调用Inform方法时,将在InfromStruct的CommandKey元素中返回该元素值。
22RebootResponse参数
参数
类型
描述
-
void
该响应方法无参数。
23CPE的错误码
参数
描述
9000
方法不支持
9001
拒绝请求(未说明原因)
9002
内部错误
9003
无效参数
9004
资源超限(当用于SetParameterValues的关联时,它不得用来指示参数错误)
9005
无效参数名(与Se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TR 协议 编程 基础知识
![提示](https://static.bdocx.com/images/bang_tan.gif)