顾雅珍,唐慧佳
(1.赤峰学院 计算机系,内蒙古 赤峰 024000;2.西南交通大学 信息科学与技术学院,四川 成都 610031)
TR-069协议中RPC方法的实现研究
顾雅珍1,2,唐慧佳2
(1.赤峰学院 计算机系,内蒙古 赤峰 024000;2.西南交通大学 信息科学与技术学院,四川 成都 610031)
随着电信业务的发展,家庭网关需要更加智能化的管理.应运而生的TR-069协议被应用于网络终端,实现了对网络终端的远程配置与管理.协议中的自动配置服务器ACS和远程终端CPE之间的通信需要通过远程过程调用,即RPC方法来实现.介绍了TR-069协议中的树形数据模型,以此为基础阐述了RPC方法在网关设备上的实现.
TR-069;RPC;ACS;CPE;数据模型
随着社会高度信息化的发展,一些中小企业需要以更智能化、更易于管理的网关设备作为纽带,来实现语音、视频、媒体、信息化等业务的综合服务.中国电信也随之推出了相应的策略,进一步改善和提升管理服务水平.通过ITMS(终端综合管理系统)对企业网关设备进行统一管理,两者之间的交互基于TR-069协议.协议中有两个逻辑主体,一个是自动配置服务器ACS,一个是用户侧设备CPE.ACS与CPE之间通信,传递信息是通过远程过程调用(remote procedure call)即RPC方法实现的.在TR-069协议中定义了基于可扩展标记语言描述的远程过程调用(RPC),目前的Issue 1 Amendment 2版本中为CPE定义了10种基本RPC、7种可选RPC,为ACS定义了2种基本RPC、4种可选RPC.除此之外用户还可根据需要自己定义RPC方法,扩展当前应用.
TR-069属于协议栈协议,用于描述ACS和CPE之间的通信规范.与之配套的几个协议描述了基于TR-069协议设备的数据模型.其中TR-098协议定义了网关设备的数据模型.
在TR-098中定义了网关设备的树状参数模型.树上的每个节点都代表用户角度的一个参数,参数名的命名使用了类似目录树的层级方式,两个节点名字通过点号(.)连接而成,组成一个参数名.与MIB树不同的是由点号(.)分隔的层级名字之间具有包含与被包含的关系.在TR-098中定义的节点可分为三种类型:索引节点(index),对象节点(object),叶子节点.
如:InternetGatewayDevice.LANDevice.{i}.Hosts.Host.{i}.IPAddress路径中
InternetGatewayDevice.是Object类型的对象节点,对应一个网关设备
InternetGatewayDevice.LANDevice.{i}.是Index类型的索引节点,对应一个Lan设备实例.
InternetGatewayDevice.LANDevice.{i}.Hosts.Host.{i}.IPAddress是叶子节点,表示一个属性或配置,此处对应Lan设备下连接的主机的IP地址.
每个节点定义时都有五个属性:Name(参数名)、Type(类型)、Write(可写性)、Default(默认值)、Vertion(版本).比如在协议中有如下表-1的定义:
表1
InternetGatewayDevice.LANDevice.{i}.LANHostConfig-Management.IPInterface.{i}.是节点名,类型为object,可读写,无默认值.TR-098就是按上述方式定义了网关设备的各方面的配置参数.当然协议中还规定可以由用户自己定义节点,并对节点命名方式给出了定义.
在TR-069协议中,使用远程过程调用机制来实现CPE与ACS两端的通信,即RPC方法.RPC方法按是否为REQUIRED分为标准RPC和可选RPC,按支持对象分为ACS的RPC方法、CPE的RPC方法和通用RPC方法.通用RPC方法目前定义的只有一个GetRpcMethod,此方法既可以由ACS调用也可以由CPE端调用,来获取对方支持的RPC方法集.返回的值是字符串列表,若是ACS发送请求,则由CPE给予响应,返回CPE支持的RPC方法列表.ACS支持的RPC方法由CPE负责调用,如:Inform、TransferComplete,相应的CPE支持的RPC方法由ACS来调用,如:SetParameterValues、GetParameterValues、AddObject、Download 等.
在企业网关中支持TR-069协议可以分模块实现.RPC方法的实现可以作为单独的模块来处理.在模块中首先要将RPC方法注册到系统中,组成一个链表,被系统所认识,再由处理模块调用.注册与使用流程见图1:
图1 RPC方法注册与使用流程
在TR-069的初始化函数Initdata()中完成RPC方法的注册.注册的意思,就是将每个RPC方法的基本信息进行赋值后,通过RegRPCMds()函数将RPC方法结构体挂到全局链表上,注册完毕.RPC方法结构体成员基本信息如下:
RPC方法名字,即协议中定义的RPC方法名称,如“GetParameterValues”.当一个报文解析时,就通过RPC方法名字和长度两个参数确定RPC方法在链表中的位置.注册时要设置各处理函数的函数指针,RPC方法的处理函数分为两种,一种是处理请求(RPC request)的函数,比如SetParameterValues方法,CPE会调用它的请求处理函数进行处理;另一种是处理ACS响应(RPC response)的函数,例如Inform方法,CPE发送Inform消息后ACS会回复Inform response报文,CPE端调用Inform响应处理函数处理该消息.
由于ACS只支持3种RPC方法,CPE调用ACS的RPC时,只可能发出这三种类型的调用请求.所以对于CPE端只有 GetRpcMethod,Inform,TransferComplete这三个 RPC方法会有请求类型,这三个方法除了有请求类型外,与其他不同的还有处理构造请求的函数,处理ACS响应的函数.同时,这三个方法的处理请求的函数都为空函数.
其余的RPC方法都是CPE支持的,只能被ACS调用,CPE端请求类型均设为空.只有处理ACS请求的函数,而没有处理响应和处理构造请求的函数,特别的GetRPCMethods方法ACS端和CPE端都支持,所以这个方法既有处理请求的回调函数又有处理响应的回调函数.
当CPE端收到报文时,从SOAP消息体的标签中找到RPC方法.首先验证RPC方法的合法性,判断解析得到的RPC方式是否是已注册方法,如果该RPC方法未知,则构造不支持的RPC方法报文并发送,结束处理.对于已注册的RPC方法,会通过RPC注册的链表找到该RPC方法的处理函数.
ACS端欲查询InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Uptime叶子节点的值,发送GetParameterValues Request报文,报文中SOAP消息体为:
CPE中TR-069的处理模块解析得到的报文是请求报文,调用GetParameterValues的RPC请求处理函数,在函数中获取节点的信息并验证数据的合法性,验证成功则构造统一格式的配置管理消息,下发给配置管理平面.配置管理平面通知应用模块—WAN模块处理,WAN模块找到设备的第一个WAN口下的第二个子接口,并查询此口下PPP连接持续的时间.查询的结果通过配置管理平面返回给TR-069模块,构造相应的响应报文,发送给ACS.
目前,TR-069协议已经在家庭网关与小型企业网关中得到应用.对于TR-069的树模型结构,虽然是从用户角度定义,很容易理解,可是对于编程人员来说实现庞大的树型结构,还存在一定弊端.RPC方法是ACS和CPE之间通信的关键手段,具有很大的灵活性,可由用户自己定义,方便以后进行扩充.相信RPC方法的实现会成为研究TR-069协议的一个重点,会得到更多的关注.
〔1〕TechnicalReportDSL Forum.TR- 098 Internet Gateway Device Data Model For TR-069 [R].A-mendment1.DSLHome- TechnicalWorkingGroup,November 2006.
〔2〕Technical Report DSL Forum.TR-069 CPE WAN Management Protocol v1.1 [R].Issue 1 Amendment 2.DSLHome-TechnicalWorkingGroup,November 2007.
〔3〕W3C.Simple ObjectAccessProtocol(SOAP)1.1.May 2000.
〔4〕李维.C++Builder 6 SOAP/Web Service 开发[M].武汉:华中科技大学出版社,2002.
〔5〕唐珂,王民.TR-069在家庭网关中的应用.中兴通讯技术,2006(8).
〔6〕孟德峰,郑崇苏,王俊宝.TR-069 协议实现研究[J].中国新通信,2008(12).
〔7〕陈毅文,刘同佩,孙晶.基于TR-069的终端管理系统的设计和实现[J].计算机工程与设计,2008,29(5):1108-1109
〔8〕熊琦.TR-069协议在家庭网关中的实现[D].武汉:华中科技大学,2007.
〔9〕马千里.CWMP协议在网关设备上的实现 [D].北京:北京邮电大学,2010.
TN393.2
A
1673-260X(2012)03-0024-02
四川省科技支撑计划(2010GZ0189)