摘要:基于xDSL寬帶網絡測試系統的TL1通信協議模塊的設計與實現,以TCP/IP協議承載的TL1協議模塊在設備層提供TL1協議接C7,根據ADSL寬帶網絡測試系統的工作流程以及TL1協議進行研究分析,提出將TL1通信協議模塊劃分為多任務思想,主要采用基于嵌入式實時操作系統Vxworks的實時多任務的設計方法,對與客戶端進行連接請求、從客戶端讀TL1消息、TL1消息解析處理、發送TL1消息、線程調度、自治消息處理多個任務及它們之間的通信做較為深入地研究。
關鍵詞:寬帶網絡測試系統 TL1通信協議 VxWorks
中圖分類號:TP393文獻標識碼:A
0 引言
ISDN、xDSL、Cable、光纖等技術的出現,必將最終把人們帶入全新的數字寬帶上網時代。而在這眾多的寬帶技術中,xDSL正為越來越多的人所關注。xDSL(數字用戶線)是目前國際上最流行的寬帶接入技術,DSL技術主要分為對稱和非對稱兩大類。xDSL中“x”代表著不同種類的數字用戶線路技術。其中,ADSL的建設己經成為寬帶接入的主流模式。它利用現有的雙絞銅線能夠滿足用戶寬帶接入通信業務需求,是實現寬帶上網和網上高速沖浪的理想選擇。
隨著ADSL用戶規模的急劇膨脹,現有的ADSL業務維護流程給實際工作帶來了效率低、滿意度差等問題,嚴重制約和阻礙了中國ADSL業務的高速增長。同時,用戶對通信業務的質量要求越來越高,對于故障解決的及時性和有效性要求也越來越高。如何定位用戶側故障、線路故障和網絡側故障,如何快速解決故障,這些都成為DSL發展的新需求。目前,國內關于xDSL測試系統的研究和應用正處于啟動期,無論國內廠商還是國外廠商在中國都沒有投入應用的實例。本文基于xDSL寬帶網絡測試系統,主要討論TL1通信協議模塊的設計及實現。
1 ADSL寬帶網絡測試系統的總體設計
本節簡單介紹整個系統軟件總體的總體目標及軟件模塊的劃分,以及各模塊的目標及完成的功能以及各模塊之間的關系。并說明測試服務器與DSLAM網管接口、與112系統接口、與97資源數據庫接口。
1.1 軟件設計結構
1.1.1 客戶端軟件 ①測試服務器測試命令呈現界面(包括文本、圖形、報表顯示);同時匯總日報、周報、月報數據。②對ATP設備自身的管理界面(包括對設備的配置管理、故障管理、性能管理、拓撲管理等),相當于設備層面的EMS。③對應用系統的管理界面(包括用戶管理、白志管理、權限管理、用戶自定義設置)。
1.1.2 服務器軟件 ①相對于界面的后臺處理模塊,包括對測試命令的發送、解析(使用TL1協議);對前臺界面的相應處理。②提供與其他系統的API接口(包括112網關系統的接口;DSLAM設備網管的通信協議)。③支持ATP設備多級組網的要求。④支持多協議,如TL1,SNMP協議。
1.1.3 112網關軟件 ①112網關軟件提供和運營商112系統的接口,解析112接口協議格式。②112網關系統提供脫機存儲功能。
1.1.4 設備層通信軟件 ①在設備層提供TL1協議的接口,完成客戶端與測試探頭的通信,接收測試任務,發送測試任務,傳送設備處理后的相應數據。②支持被動測試和相關告警信息的主動上傳。被動測試返回結果打包成TL1響應消息格式,主動上傳的消息打包成TL1自治消息格式,發送給客戶端,以便客戶端進行識別。
2.2 測試服務器 測試服務器完成規范定義的測試工作,并完成對設備的管理層面的管理,采用J2EE的解決方案,實現系統跨平臺的處理方式。測試服務器主要包括ATP測試功能、ATP自維護功能、與DSLAM網管接口、與112系統接口、與97資源數據庫接口。
測試服務器與DSLAM網管接口,DRAM設備和ADSL測試設備之間需要提供測試總線和測試通信接口,當需要對某一用戶進行測試時,先將該用戶端口的內側或外側切換到測試總線上,然后通過測試通信接口發命令給測試設備啟動相關測試,并把測試結果返回給DSLAM設備,測試完畢后釋放端口與測試總線的連接。
測試服務器與112系統接口,ADSL測試服務器可以位于ADSL網管之外,測試服務器通過網絡與測試設備連接。ADSL網管和ADSL測試服務器分別和112連接,前者實現用戶端口查詢功能,后者實現測試設備測試功能。ADSL網管和112系統的接口是為了把ADSL障礙測試融合到112系統中,以實現ADSL障礙的集中受理、集中測試、集中派修和集中管理。當112系統受理到ADSL用戶報障后,112系統根據ADSL線路所在的位置〔局向、機框號、槽位、端口號)和需要做的測試命令發給ADSL網管,ADSL網管收到測試命令后,對相應端口進行測試,然后把測試結果返回到112系統。
測試服務器與97資源數據接口,應用服務器系統是從電信97工程的數據庫(97數據庫的數據)中通過API接口實現數據共享,提取97數據庫中的相關資源數據,例如:局、交換機、主配線架、交接箱、分線盒,端子、號碼等信息。
3 基于VxWorks的TL1通信協議模塊的設計與實現
3.1 TL1通信協議模塊在測試系統中的作用 對于被動測試任務,上位機下發測試任務即TL1測試輸入命令,TL1通信協議模塊(TLIAgent)接收到測試任務后,對相應的TL1輸入命令進行解析,如果解析后判斷是系統的測試任務參數或側試功能,則將相應的功能參數設定和測試任務發送給ATP,如不是系統的測試任務或下發功能參數錯誤將錯誤的消息對應的響應消息格式化并上報給上位機告知錯誤的命令,ATP探頭接到測試任務后進行測試及數據采集,將測試結果返回給TLIAgent,主要通過結構體定義數據的格式,如測試成功TL1Agent根據TL1通信協議將測得的數據結果打包成TLI通信協議響應格式,發給上位機,如測試失敗TLIAgent上報測試失敗,在客戶端顯示對應的測試結果,和相應的表格和波形,此項測試任務完成。
對于自治消息,下位機在進行測試時不斷檢查系統設備狀態,如風扇轉速,設備溫度等狀態,如出現異常,則將異常狀態通過TL1Agent上報(函數調用),TL1Agent將自治消息放入自治消息隊列,并發送給上位機,完成自治消息的上報。TLI協議用于承載由外接測試設備或內置測試板測試的內容,包括下發測試命令、測試模塊的復位等,該協議內容可隨測試內容而擴充更新。
此模塊在設備層提供TLI協議接口,是上位機和測試探頭之間的橋梁。不僅能夠配合完成被動測試任務,還能夠配合完成生產管理信息,自動上報告警信息,設備管理等功能。
3.2 TL1通信協議模塊的設計及實現 整個模塊采用實時多任務的設計方法。對于任務之間的通信,在VxWorks中,因為整個操作系統使用一個地址空間,所以沒必要對于進程之間的通信使用的信號量和消息隊列有一個全局的名字。信號量允許多個任務相互協調其活動,任務間最直接的通信方式是共享各式各樣的數據結構。由于VxWorks中所有任務存在于一個單一的線性地址空間,共享數據結構非常容易。在共享地址空間簡化數據交換的同時,需要保證這塊內存的互斥訪問,VxWorks提供了許多實現共享臨界區互斥訪問的機制,信號量就是其中的一種。本模塊使用二進制信號量,用于互斥臨界區的訪問和任務之間的同步。
二進制信號量可以作為資源可用于不可用的標志,當任務取一個二進制信號量時要調用semTake(),結果取決于調用時該二進制是否可用。如果可用,信號量將變得不可用,而任務繼續執行,如果信號量不可用,任務被掛起到任務阻塞隊列,直到該信號量可用。
當任務釋放一個信號量時要調用semGive(),結果也要依賴于調用時該信號量是否可用。如果可用,本次釋放信號量不起任何作用,如果信號量不可用,并且沒有在等待該信號量,那么信號量變為可用;如果信號量不可用,并且有一個或多個任務在等待該信號量,那么阻塞隊列中的第一個任務解除阻塞,而信號量仍不可用。
本模塊中各任務在設定優先級時都設為相同的優先級,每個任務在處理一條測試命令后將調用taskDelay() 函數,延時操作提供一個簡單的任務睡眠機制。taskDelayO用來移動調用任務到相同優先級就緒隊列的尾部。在本模塊中,通過調用taskDelay()自動將CPU讓給系統中同優先級的其他任務來進行處理消息,在嵌入式軟件中,除系統任務外,TL1通信協議的各任務優先級是最高的。
主控函數,將初始化參數。傳輸層協議TCP封裝,全局變量的初始化、各功能參數設定命令、測試命令的監聽、隊列、消息處理函數的各任務的創建;每個任務也就是一個線程,每個線程都被編制成無限循環的程序,等待特定的輸入,執行相應的任務。
對于TL1消息處理,在系統要進行測試任務之前,啟動嵌入式軟件,主控函數運行后,處理連接請求線程TL1ServerSession首先要處理來自上位機的連接請求,連接后,然后由TL1AsynClientSession線程從上位機的讀取TL1輸入消息,將獲得的輸入消息放入接收隊列,定義最大線程數為5,由線程調度進行判斷線程池,根據狀態來判斷將要進行的調度,是創建消息處理線程還是喚醒消息處理線程,由消息解析處理線程AsynTLlMessageHandler對輸入命令進行解析,解析后的消息出隊列等待消息的發送,對輸入命令進行解析,通過函數調用進行測試命令的下發,返回測試數據,將返回的測試數據進行TL1消息格式化處理,得到響應消息放入發送隊列,等待出隊列進行消息的發送即將響應消息返回上位機:TL1消息處理流程流程圖如圖2所示。
整個系統軟件劃分好模塊后,考慮TL1通信協議模塊與其它模塊之間的接口,本模塊對其它模塊有兩個接口,一個是與上位機(后臺處理模塊)之間的接口,另一個接口是與硬件驅動程序之間的接口。
與上位機之間的接口用套接口socket通信進行實現,流套接口提供了雙向的、有序的、無重復并且無數據邊界的數據流服務。套接口實現客戶端的連接,消息的讀取與發送消息。與硬件驅動程序之間的接口進行下發測試任務和讀取測試后的數據,用函數調用進行下發測試任務的實現,如果測試成功,對數據的讀取是通過對于本測試任務的一個全局變量來讀取,通過Sprintf函數對測試后的數據進行格式化,如果測試失敗,沒有測試后的數據的打包過程,直接進行響應消息的格式化;如果在測試過程中有異常情況要上報時是被調用的關系,一樣也使用函數調用來實現,下位機在不斷的檢查設備的狀態,如果一旦發現異常就調用此模塊的自治消息函數,上報異常情況,TLIAgent接到異常消息,通過自治消息通道將消息發給客戶端。模塊之間的接口如圖3所示。
4 結束語
本系統TL1通信協議模塊是基于VxWorks的多任務設計,使系統的實時性和穩定性都非常好。目前該ADSL寬帶網絡測試系統己通過多個城市電信組織的測試,達到了系統的設計要求和性能指標。該系統不僅提供中國電信規定的公有接口,還自己定義了一套私有接口,有利于系統的功能的擴充。目前系統軟件雖然完成了功能,也達到了預期的響應測試速度,但有一些設計上存在一些缺陷,如系統的時鐘,并不是由MPC860系統時鐘來進行控制的,而是在開發的過程中發現問題后改正的,因為當時硬件平臺MPC860已經開發完,無法進行改進,只能由軟件來自己定義一個時鐘,對于嵌入式軟件模塊如果有需要系統時間的就要通過函數調用來完成,這樣的顯示的時間未必很準確,會產生一定的誤差。此外,雖然在開發之前已經進行過需求分析,但在開發的過程中發現有些需求并不是很明確,影響到開發的進度,這在以后的產品的研發過程中要盡量的避免。
參考文獻:
[1]王金剛、宮霄霖等.基于VxWorks嵌入式實時系統設計.北京:清華大學出版社,2004.10.
[2]馮建和.ADSL寬帶接入技術及應用.北京:人民郵電出版社.2002.
[3]孔祥營.嵌入式實時操作系統VxWorks及開發環境Tornado.北京:中國電力出版社.2003.
[4]王東.NC-ATS TL1測試指令集.北京:北京中創信測科技股份公司.2003.
[5]馮濤.ATS項目總體方案設計.北京:北京中創信測科技股份公司.2003.
[6]羅國慶.VxWorks與嵌入式軟件開發.北京:機械工業出版社.2003.
[7][美]Richard.Steven著.施振川等譯.UNIX網絡編程.北京:清華大學出版社.2001.
[8]Andrew S.Tanenbaum著.能桂喜、王小虎等譯.計算機網絡(第三版).北京:清華大學出版社.1998.7.