顧雅珍,唐慧佳
(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)