王新成
【摘 要】互聯網行業快速發展,天津鐵通為了更好地滿足互聯網用戶不斷提升的服務質量要求,不斷優化互聯網出口質量以滿足用戶更好的上網體驗。
【關鍵字】互聯網出口;出口質量;多線程;C#
中圖分類號: F752.62;F626 文獻標識碼: A 文章編號: 2095-2457(2019)24-0100-002
DOI:10.19694/j.cnki.issn2095-2457.2019.24.046
【Abstract】With the rapid development of the Internet industry, Tianjin Tietong is constantly optimizing the quality of Internet exports to meet the continuous improvement of service quality requirements of Internet users.
【Key words】Internet export; Export quality; Multithreading
1 研究背景和可行性分析
在本項目開發前,互聯網出口質量監測主要依靠互聯網網管中心的PRTG流量軟件監控,該軟件不具備對租用其他資源的二級出口商的監控識別功能,無法發現次優路由等網絡問題;雖然通過PRTG流量圖可反映各出口的流量情況,發現異常流量,但是只有在流量出現大幅度變化時才能反映出網絡問題,無法精細反映互聯網出口的各項質量指標。由于在出口質量監測方面存在的不足使我們在互聯網出口質量優化工作中遇到過很多棘手問題,最主要體現在三個方面:首先,用戶體驗下降,出口質量下降導致用戶投訴忙時上網速度慢;其次,出口投入使用前,只能通過人工手動測試或者少量導入部分用戶流量的方式對其進行質量測試,由于測試目的地址的基數太小往往無法反應出口的實際質量;第三,出口存在繞轉問題,網絡延時和丟包率高,導致出口質量沒有保障,故障處理延時長。
上述這些問題,維護人員通過現有監控手段很難及時發現,本次軟件研發要實現自動化測試,研發一套針對三方出口和游戲出口綜合質量指標的自動化監控系統,從而幫助分公司從網絡質量指標、出口供應商合同履行情況、網絡路由優化等多個維度對互聯網出口的質量進行有效監控。
2 數據處理和流程設計
2.1 數據處理
實現軟件系統需求,要解決三個主要問題:一是測試IP地址樣本,二是實現自動撥測,三是自動生成報表。
首先,需要確定測試IP地址樣本。它應滿足:覆蓋全國主流網站、游戲、郵件等服務器IP地址。我們經過分析研究后,互聯網網管中心核心路由器存儲了大量的出網IP地址記錄,于是通過英諾威爾數據網管系統的netflow功能將記錄的所有出網目的IP地址,以5分鐘間隔生成一份日志文本文件,通過ftp模式將這些文件批量導出,再經過數據預處理、數據轉換、去重處理、IP地址分類等,我們獲得了400多萬活躍聯通IP地址和200多萬活躍電信IP地址。將這些數據導入至ORACLE數據庫的電信/聯通測試IP地址樣本表中。這為系統提供了極其豐富的IP地址測試資源,大數量級的壓力測試使這套系統更能準確反映各個出口的實際質量,使測試結果更具有說服力。
其次,實現自動撥測程序。對這些測試IP地址樣本進行大數量級隨機測試,使用C#語言針對Windows系統的API接口開發出可以與測試服務器操作系統交互信息的撥測模塊。該模塊根據程序定義的撥測動作自動調用Windows系統cmd模式進行“ping”、“tracert”等測試,并通過交互接口將測試結果采集、匯總最終寫入數據庫的測試結果表。
最后,實現系統自動生成Excel報表。對測試結果,按照制定的路由規則和算法進行計算、統計、分析獲得互聯網出口的質量指標值,最終實現自動生成互聯網出口質量報表。
解決上述三個主要數據處理問題,從而實現互聯網出口質量自動撥測,完成我們的研究目標。
2.2 流程設計
3 詳細設計和關鍵技術實現
3.1 數據庫設計和關鍵技術
為了滿足自動撥測系統高效率、高可靠性、高吞吐量數據庫的需求,更好的支撐系統運行,本項目采用優秀的Oracle數據庫進行搭建。通過對數據源分析、數據流程和系統功能模塊的梳理,最終規劃和定義數據庫結構,數據庫包括測試地址池表(分電信出口、聯通出口和游戲出口IP地址表)、現網出口資源信息表、ping測試結果表、tracert測試結果表、路由匹配表等一系列數據庫表,并對每張表進行優化,所有字段名稱及屬性做出了詳細定義,形成數據字典。在數據庫設計過程中,我們使用了Oracle數據庫的序列、觸發器和視圖等關鍵技術。
3.2 測試IP地址樣本導入數據庫和關鍵技術
為了將測試IP地址樣本導入數據庫,采用C#編程技術開發Winform程序讀取文本文件,使用StreamReader以流的方式將文本文件內容讀取并保存到內存表中,再利用內存表高性能的優勢批量寫入數據庫測試IP地址樣本表中。此處使用了內存表關鍵技術。
3.3 隨機獲取測試IP地址和關鍵技術
為了保證測試IP地址樣本的平均分布,每次對獲取測試IP地址采用了隨機函數以搖號的方式提取,保證測試樣本在地域上的隨機分布。并且針對電信出口、聯通出口、游戲出口分別提取后,二次進行隨機排序,保證各個出口測試在時間軸上的隨機分布。此處使用了Oracle數據庫隨機函數關鍵技術。
Oracle隨機函數:即dbms_random是oracle提供的一個隨機函數包,函數包提供了一系列隨機值獲取函數以及相關存儲過程。隨機函數保證了樣本的隨機分布。
3.4 自動撥測和關鍵技術
為了實現系統自動撥測,項目使用C#語言開發了探針模塊,部署在探針服務器上。探針模塊實現以下功能:添加測試任務,定制周期化測試任務;隨機抽取測試IP地址添加到測試IP地址池;啟動64線程(可定制線程數量)測試任務,調用操作系統API接口執行Ping命令測試;采集Ping命令的測試結果,寫入數據庫表;調用操作系統API接口執行Tracert命令測試;采集Tracert測試結果,寫入數據庫表;執行路由規則分析,判斷路由歸屬、路由走向、是否違規;生成路由質量匯總表;檢測測試任務運行狀態,判斷是否有臨期任務,是否有任務正在運行,是否有任務需要結束,并做出相應的處理動作。此處使用了API接口調用、多線程、內存表、LINQ、正則表達式、大數據分析和自主研發路由繞行算法等關鍵技術。
API接口調用:即Application Programming Interface,是一些預先定義的函數,或指軟件系統不同組成部分銜接的約定。目的是提供應用程序與開發人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問原碼,或理解內部工作機制的細節。
多線程:線程(Thread)是進程中的基本執行單元,是操作系統分配CPU時間的基本單位,一個進程可以包含若干個線程,在進程入口執行的第一個線程被視為這個進程的主線程。多線程即除了主線程外,程序還擁有一個或者多個線程。使用多線程的優點:可以同時完成多個任務;可以使程序的響應速度更快;可以讓占用大量處理時間的任務或當前沒有進行處理的任務定期將處理時間讓給別的任務;可以隨時停止任務;可以設置每個任務的優先級以優化程序性能。
大數據分析:是指對規模巨大的數據進行分析。大數據作為時下最火熱的IT行業的詞匯,隨之而來的數據倉庫、數據安全、數據分析、數據挖掘等等圍繞大數據的商業價值的利用逐漸成為行業人士爭相追捧的利潤焦點。隨著大數據時代的來臨,大數據分析也應運而生。
路由繞行算法:制定兩種路由繞行算法,第一是出口提供商未按要求提供直接接入電信/聯通匯聚層的違規情況;第二是網絡次優路徑情況,如因路由指向不合理導致電信/聯通IP地址從聯通/電信出口發送,造成過大的網絡延時和丟包等情況。此算法不但可以有效監控出口資源是否存在級聯或繞行接入等違規情況,還可以實現對現網存在的次優路由的自動監測。
3.5 自動生成報表和關鍵技術
自動撥測完成后,對數據結果進行報表,通過調用預先定義好的固定格式的報表模板,依次將測試結果中數據寫入到報表模板中,再轉存生成新的Excel報表文件。此處使用API接口調用Excel關鍵技術。
3.6 實時查看任務狀態和Queue技術
系統在測試過程中,可以實時監控軟件運行狀態,利用C#語言中的隊列Queue類,封裝一些處理方法,實現實時對任務狀態跟蹤。此處我們使用了Queue關鍵技術。
4 研發應用和實踐總結
本文通過對系統基本原理進行分析,通過制定繞行算法、分析測試結果和列舉自動生成報表等關鍵技術最終完成系統開發的研究。軟件開發完成后我們進行了應用實踐,均圓滿地完成了測試任務?;ヂ摼W出口質量自動撥測系統依靠自主研發,深入分析網絡現狀和用戶不斷提升的服務質量需求,是真正大數量級互聯網出口自動撥測,填補了壓力測試的空白,為互聯網游戲出口測試、出口提供商違規行為監測、大數量級自動撥測、網絡次優路由發現、新出口入網測試這五方面提出了全新的解決方案。