付 超,曹祁生
(1.武漢郵電科學(xué)研究院,湖北 武漢 430073;2.烽火通信科技股份有限公司,湖北 武漢 430073)
責(zé)任編輯:許 盈
隨著FTTx在國(guó)內(nèi)的迅速建設(shè)和家庭網(wǎng)絡(luò)技術(shù)的發(fā)展,家庭網(wǎng)關(guān)以其自身優(yōu)勢(shì),提供更多的功能和業(yè)務(wù),滿足大部分家庭用戶的需求,成為了網(wǎng)絡(luò)時(shí)代的潮流應(yīng)用。早期,運(yùn)營(yíng)商采用一對(duì)一的人工服務(wù)方式對(duì)終端設(shè)備進(jìn)行維護(hù)和管理,在設(shè)備初始安裝、業(yè)務(wù)開(kāi)通的時(shí)候,以及在后期運(yùn)行中業(yè)務(wù)配置變更、軟件升級(jí)或出現(xiàn)故障的時(shí)候,需要派維護(hù)人員上門進(jìn)行安裝或調(diào)試終端設(shè)備,通過(guò)提供的Web界面,完成相關(guān)配置或故障診斷的工作。這種方式增加了運(yùn)維的成本,降低了管理的效率,顯然給運(yùn)營(yíng)商帶來(lái)巨大的負(fù)擔(dān)。
為了有效地幫助運(yùn)營(yíng)商解決上述服務(wù)難題,便于家庭網(wǎng)絡(luò)業(yè)務(wù)的開(kāi)展,數(shù)字用戶線(DSL)論壇專門制定了一個(gè)面向終端設(shè)備的網(wǎng)管協(xié)議——TR-069協(xié)議[1]。該協(xié)議包含了一些特有的組件,同時(shí)也使用了一些標(biāo)準(zhǔn)協(xié)議。比如,傳輸層基于TCP/IP協(xié)議或安全套接層/安全傳輸層協(xié)議(SSL/TLS),會(huì)話層基于HTTP協(xié)議的簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP),SOAP協(xié)議定義和封裝了標(biāo)準(zhǔn)的遠(yuǎn)程過(guò)程調(diào)用方法(RPC Method),用于實(shí)現(xiàn)一些特定的管理功能。目前,各大運(yùn)營(yíng)商采用基于TR-069實(shí)現(xiàn)零配置快速開(kāi)通的方案[2],極大提高了管理效率,降低了管理成本。以PON上行網(wǎng)關(guān)為例,當(dāng)設(shè)備上電后,在設(shè)備注冊(cè)頁(yè)面輸入LOID(邏輯序列號(hào)),點(diǎn)擊注冊(cè)。設(shè)備管理系統(tǒng)平臺(tái)會(huì)根據(jù)LOID匹配的工單信息,將寬帶上網(wǎng)、語(yǔ)音或其他基本業(yè)務(wù)參數(shù),如寬帶賬號(hào)/密碼、電話號(hào)碼等,下發(fā)到設(shè)備上,實(shí)現(xiàn)業(yè)務(wù)的自動(dòng)開(kāi)通。還可以通過(guò)設(shè)備管理系統(tǒng)平臺(tái),查詢到線路信息、上網(wǎng)信息、LAN側(cè)連接情況等,以及對(duì)終端設(shè)備下發(fā)一些遠(yuǎn)程指令或操作,比如重啟、軟件版本升級(jí)、恢復(fù)出廠設(shè)置等。
根據(jù)TR-069協(xié)議定義的內(nèi)容和數(shù)據(jù)模型存儲(chǔ)的方式,按照功能模塊化設(shè)計(jì)的思想,可以劃分為3個(gè)部分:協(xié)議棧模塊、應(yīng)用模塊和數(shù)據(jù)(DB)模塊,如圖1所示。
圖1 基于TR-69協(xié)議的參數(shù)配置管理功能模塊
TR-069模型中各模塊的功能如下所述:協(xié)議棧模塊主要負(fù)責(zé)客戶端認(rèn)證/服務(wù)器認(rèn)證,SOAP編碼/解析、RPC方法調(diào)度等功能。其中,RPC方法調(diào)用和業(yè)務(wù)會(huì)話流程的實(shí)現(xiàn)由TR-069引擎模塊負(fù)責(zé)。應(yīng)用模塊主要負(fù)責(zé)初始化QoS模塊、VOIP模塊和配置管理(Manager)模塊等,以及執(zhí)行RPC方法。其中,Manager模塊負(fù)責(zé)配置管理參數(shù)模型結(jié)構(gòu)和數(shù)據(jù)儲(chǔ)存。DB模塊是整個(gè)協(xié)議所支持的參數(shù)的數(shù)據(jù)庫(kù),應(yīng)用模塊通過(guò)數(shù)據(jù)庫(kù)接口來(lái)獲取和設(shè)置參數(shù)值。該模塊主要由一個(gè)基于XML格式的數(shù)據(jù)配置文件和一個(gè)用于讀寫這個(gè)文件的程序組成[3]。
根據(jù)TR-069協(xié)議棧中對(duì)各種業(yè)務(wù)邏輯實(shí)現(xiàn)的描述,協(xié)議棧模塊可以劃分為5個(gè)模塊,即HTTP_SERVER模塊、HTTP_CLIENT模塊、HTTP_AUTHOR 模塊、HTTP_SCHDULE模塊和HTTP_DOWNLOAD模塊,如圖2所示。其中,HTTP_Client模塊負(fù)責(zé)建立CPE與ACS之間的會(huì)話連接,并收發(fā)、存貯數(shù)據(jù)。HTTP_Server模塊負(fù)責(zé)監(jiān)聽(tīng)ACS主動(dòng)發(fā)起連接的請(qǐng)求,處理響應(yīng)[4]。HTTP_Author模塊主要完成HTTP報(bào)文的解析,并實(shí)現(xiàn)HTTP客戶端的認(rèn)證和HTTP服務(wù)器的認(rèn)證。HTTP_SCHDULE模塊主要完成SOAP報(bào)文的解析與構(gòu)建[5],及RPC方法的調(diào)度運(yùn)算。HTTP_Upload模塊和HTTP_Download模塊主要實(shí)現(xiàn)HTTP文件的上傳和下載。
圖2 TR-069協(xié)議棧模塊
在應(yīng)用模塊中包括一些特定的服務(wù)模塊,如QoS,VOIP,STB,IPTV模塊等,并且這些服務(wù)模塊的相應(yīng)服務(wù)或者設(shè)備對(duì)象均存在于參數(shù)模型中。通過(guò)TR-069協(xié)議來(lái)實(shí)現(xiàn)遠(yuǎn)程設(shè)備管理和服務(wù)管理,其具體的交互方式是基于SOAP的遠(yuǎn)程調(diào)用的。
如果從SOAP報(bào)文中解析出的RPC方法與參數(shù)配置的操作相關(guān),比如 Addobject,Deleteobject,SetParameterValues,GetParameterValues等,則Manager模塊通過(guò)讀取消息隊(duì)列中來(lái)自協(xié)議棧模塊內(nèi)的TR-069引擎模塊的請(qǐng)求,調(diào)用參數(shù)或?qū)ο蠓椒ㄟM(jìn)行處理,然后將處理的結(jié)果通過(guò)消息隊(duì)列返回給協(xié)議棧模塊。如果RPC方法與參數(shù)配置的操作無(wú)關(guān),如 Reboot,Upload,Download,F(xiàn)actoryReset等操作,則由協(xié)議棧模塊進(jìn)行處理,實(shí)現(xiàn)設(shè)備重啟、配置文件上傳、下載、恢復(fù)出廠設(shè)置等功能。
在該設(shè)計(jì)方案中,DB模塊的數(shù)據(jù)配置文件對(duì)于實(shí)現(xiàn)配置管理功能是不可缺少的,必須依賴這個(gè)文件配合完成參數(shù)模型的存儲(chǔ)和配置。這里選擇XML格式的param.xml文件作為該文件的設(shè)計(jì)形式。XML即擴(kuò)展標(biāo)記語(yǔ)言[6],作為一種簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)語(yǔ)言,用元素和屬性來(lái)描述數(shù)據(jù),將數(shù)據(jù)以純文本的格式存儲(chǔ)。在數(shù)據(jù)交換過(guò)程中,將數(shù)據(jù)封裝成XML,通過(guò)不兼容的應(yīng)用程序和系統(tǒng)平臺(tái)之間交換數(shù)據(jù)。鑒于XML的優(yōu)點(diǎn),Web服務(wù)器用XML在系統(tǒng)之間交換數(shù)據(jù),使用SOAP協(xié)議作為通信的主要協(xié)議。因此,XML正好符合TR-069協(xié)議的設(shè)計(jì)和實(shí)現(xiàn)的需要。
param.xml文件既存儲(chǔ)參數(shù)模型的結(jié)構(gòu),同時(shí)存儲(chǔ)所有參數(shù)的管理配置值。通過(guò)配置管理的統(tǒng)一接口,完成對(duì)param.xml中的參數(shù)或?qū)ο筮M(jìn)行的一些操作,包括param.xml的加載、動(dòng)態(tài)對(duì)象實(shí)例的增刪、參數(shù)值的查詢和修改。最后,將數(shù)據(jù)和參數(shù)模型均儲(chǔ)存在這個(gè)文件中。
param.xml給出了TR-069規(guī)定的分層次結(jié)構(gòu)的參數(shù)模型[7],即一種樹(shù)結(jié)構(gòu),它從“根部”開(kāi)始,然后擴(kuò)展到“樹(shù)葉”。在參數(shù)模型中,首先,設(shè)置了一個(gè)設(shè)備根對(duì)象InternetGatewayDevice作為管理的起點(diǎn),然后在其下面是一些管理內(nèi)容的子對(duì)象,如 DeviceInfo,Services,WANDevice,ManagementServer等,并且在這些對(duì)象以及對(duì)象下面分別定義了一組標(biāo)準(zhǔn)(以及擴(kuò)展)的參數(shù)和屬性。廠商根據(jù)自己的需求增加一些參數(shù),但是需要按照規(guī)定的格式(即X_<VENDOR>_VendorSpecificName)對(duì)其進(jìn)行命名,其中VENDOR(唯一廠商標(biāo)示符)可以為OUI(組織唯一標(biāo)識(shí))或者域名,VendorSpecificName代表一個(gè)有效的字符串,不超過(guò)256個(gè)字符。例如X_CT-COM_UplinkQoS,X_CT-COM_UserInfo,X_FIB_COM_FlagReboot。
作為對(duì)象(obj),均設(shè)計(jì)有名稱(name)、讀寫屬性(rw)、關(guān)鍵字(key)等屬性。比如<o(jì)bj name="X_CT-COM_UplinkQoS"rw="0"key="0"> </obj>。rw 屬性用于判斷參數(shù)或?qū)ο蟮淖x寫狀態(tài),用0,1,2這3個(gè)數(shù)值標(biāo)識(shí),rw為0表示參數(shù)只可讀,對(duì)于對(duì)象實(shí)例不可以增加或者刪除,如<o(jì)bj name="IPInterface"rw="0"key="0"> </obj>,表示IPInterface對(duì)象不可以被增刪;rw為1,表示參數(shù)只可寫,暫沒(méi)有給對(duì)象定義;rw為2,表示參數(shù)既可讀又可寫,對(duì)于對(duì)象實(shí)例可以被增刪,例如<o(jì)bj name="Alarm-Config"rw="2"key="0"max="10"> < /obj>,表示AlarmConfig對(duì)象可以增加或者刪除其實(shí)例。key屬性定義參數(shù)為關(guān)鍵參數(shù)(或?qū)ο?或非關(guān)鍵參數(shù)(或?qū)ο?,在執(zhí)行本地恢復(fù)出廠設(shè)置或者遠(yuǎn)程出廠設(shè)置時(shí),根據(jù)參數(shù)的key值決定是否保留修改后的對(duì)象實(shí)例或參數(shù)值。
根據(jù)給每個(gè)對(duì)象定義的rw屬性,對(duì)象可分為靜態(tài)對(duì)象和動(dòng)態(tài)對(duì)象,如果對(duì)象的rw取0,則定義為靜態(tài)對(duì)象,不允許增刪該對(duì)象,例如<o(jì)bj name="PortFilter"rw="0"key="1"> < /obj>,表示PortFilter為靜態(tài)對(duì)象,其下的實(shí)例數(shù)為8個(gè),始終保留不變。如果對(duì)象的rw取2,則定義為動(dòng)態(tài)對(duì)象,可以增加或刪除一個(gè)或者多個(gè)實(shí)例對(duì)象。動(dòng)態(tài)對(duì)象除了具有共有的屬性外還有max屬性,用于規(guī)定該對(duì)象可支持的最大實(shí)例數(shù)。例如:<o(jì)bj name="AlarmConfig"rw="2"key="0"max="10"> < /obj>,表明AlarmConfig對(duì)象可以支持的最大實(shí)例數(shù)目為10個(gè)。在動(dòng)態(tài)對(duì)象下面必須增加一個(gè)默認(rèn)的實(shí)例模板,即對(duì)象為0的節(jié)點(diǎn),用于記錄該動(dòng)態(tài)對(duì)象的默認(rèn)節(jié)點(diǎn)和參數(shù)值,不允許刪減。例如<o(jì)bj name="0"rw="0"key="1"></obj>,該節(jié)點(diǎn)即為復(fù)制實(shí)例的模板。
作為參數(shù)param,除了具有和對(duì)象相同的屬性之外,還設(shè)計(jì)有 value,type,dev_func等屬性。例如:<param name="Bandwidth"rw="2"type="u"key="0"dev_func="dev_X_CT_COM_UplinkQoS_Bandwidth"value="0"></param>。value屬性用于記錄參數(shù)的值,type屬性定義數(shù)據(jù)的類型,dev_func屬性是一種對(duì)參數(shù)進(jìn)行讀寫的方法。當(dāng)需要讀取參數(shù)值或者有參數(shù)值寫入時(shí),由type,dev_func屬性控制參數(shù)的讀寫操作。若參數(shù)的rw為1或2時(shí),通過(guò)調(diào)用其dev_func方法,將符合type數(shù)據(jù)類型的值允許被寫入?yún)?shù)中。若rw取0或2時(shí),通過(guò)調(diào)用其dev_func方法,將參數(shù)的值從param.xml中讀取出來(lái)。例如<param name="Enable"rw="2"type="b"key="0"dev_func="dev_WANEth_If_Enable"value="1"></param>,參數(shù)Enable的value值的類型為bool型,允許對(duì)這個(gè)參數(shù)的值進(jìn)行修改。
在整個(gè)讀寫param.xml文件的過(guò)程中,param.xml文件的正確性、完整性尤其重要。因此,需要對(duì)這個(gè)讀寫過(guò)程作特殊的處理和保護(hù)。
當(dāng)?shù)谝淮斡信渲脤懭雰?nèi)存,系統(tǒng)目錄中會(huì)自動(dòng)創(chuàng)建一個(gè)記錄文件param.log,用于記錄參數(shù)寫配置的動(dòng)作。每次配置先更新內(nèi)存,操作成功后再將更新信息記錄到param.log中,待下次開(kāi)機(jī)時(shí)將param.log中的配置信息一次性全部寫入param.xml文件中。這種新機(jī)制避免了配置頻繁寫入文件的操作,減少了Flash寫入次數(shù),提高了程序執(zhí)行效率。
為保證當(dāng)前寫入或存在的param.xml文件的完整性和結(jié)構(gòu)正確性,利用創(chuàng)建的一個(gè)讀寫標(biāo)志位節(jié)點(diǎn)和XML檢查工具對(duì)該文件進(jìn)行檢查。每次寫入param.xml文件之前創(chuàng)建備份文件,然后將標(biāo)志位置于寫入狀態(tài),然后開(kāi)始寫入數(shù)據(jù),數(shù)據(jù)寫入完成后利用XML檢查工具檢查param.xml文件。假若param.xml文件完整并且結(jié)構(gòu)正確,則將標(biāo)志位重置為讀狀態(tài)。在讀取param.xml過(guò)程,首先檢查標(biāo)志位write_tag是否為讀狀態(tài),假若write_tag為讀狀態(tài),則上次寫入過(guò)程正確,可以使用該文件讀取;否則使用從備份文件拷貝的文件中讀取。
日前,烽火通信已開(kāi)發(fā)了一款基于Marvell芯片的PON上行家庭網(wǎng)關(guān)產(chǎn)品,該設(shè)備集EPON上行和GPON于一體,能依據(jù)光信號(hào)的類型自動(dòng)適配PON接口。作為家庭網(wǎng)絡(luò)中的核心設(shè)備,家庭網(wǎng)關(guān)提供用戶側(cè)接口與家庭網(wǎng)絡(luò)內(nèi)部各種終端進(jìn)行通信,對(duì)經(jīng)過(guò)其的數(shù)據(jù)和應(yīng)用進(jìn)行轉(zhuǎn)發(fā)、控制和管理,并通過(guò)網(wǎng)絡(luò)側(cè)接口與遠(yuǎn)程網(wǎng)管系統(tǒng)交互。圖3是該網(wǎng)關(guān)產(chǎn)品的組網(wǎng)拓?fù)浣Y(jié)構(gòu)。用戶側(cè)通過(guò)RJ-45口與PC或IPTV機(jī)頂盒相連,通過(guò)RJ-11口與話機(jī)等設(shè)備相連,通過(guò)WiFi與筆記本等設(shè)備相連。網(wǎng)絡(luò)側(cè)則通過(guò)與OLT設(shè)備相連,接受設(shè)備管理系統(tǒng)平臺(tái)和PON網(wǎng)管系統(tǒng)的管理。
圖3 組網(wǎng)拓?fù)浣Y(jié)構(gòu)圖
針對(duì)上述網(wǎng)關(guān)產(chǎn)品,根據(jù)中國(guó)電信規(guī)定的《e家終端測(cè)試要求(EPON上行)》進(jìn)行了測(cè)試。其中,對(duì)于TR-069模塊的測(cè)試項(xiàng)和測(cè)試結(jié)果如表1所示。通過(guò)設(shè)備管理系統(tǒng)平臺(tái)對(duì)設(shè)備進(jìn)行操作,測(cè)試結(jié)果均為通過(guò)。該測(cè)試結(jié)果驗(yàn)證了本文的設(shè)計(jì)方案具備可行性和實(shí)用價(jià)值。
本文主要介紹了一種實(shí)現(xiàn)TR-069參數(shù)模型配置管理功能的模塊設(shè)計(jì)方案。通過(guò)一個(gè)param.xml文件的配合,完成對(duì)各種業(yè)務(wù)數(shù)據(jù)的集中配置與存儲(chǔ)。從根本上提高配置管理的效率,增強(qiáng)程序和參數(shù)模型的可擴(kuò)展性[8]。
表1 TR-069模塊測(cè)試項(xiàng)和測(cè)試結(jié)果
[1]DSL Forum.TR-069,CPE WAN management protocol[S].2004.
[2]劉國(guó)萍,譚國(guó)權(quán),楊明川.基于TR-069實(shí)現(xiàn)寬帶接入業(yè)務(wù)零配置快速開(kāi)通解決方案[J].電信科學(xué),2009(S2):31-35.
[3]王遠(yuǎn)波.家庭網(wǎng)關(guān)遠(yuǎn)程管理功能模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2009.
[4]馬素剛,王力,許振文.基于嵌入式Linux的Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2010(9):183-186.
[5]郝穎,丁月華,文貴華.SOAP及其應(yīng)用研究[J].計(jì)算機(jī)工程,2001(6):128-130.
[6]XML 教程[EB/OL].[2012-05-06].http://www.w3school.com.cn/xml/index.asp.
[7]TR-098 Amendment 2,Internet gateway device data model for TR-069[S].2008.
[8]唐珂,王民.TR-069在家庭網(wǎng)關(guān)中的應(yīng)用[J].中興通訊技術(shù),2006(8):38-40.