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