文/李向龍 位軍營(yíng) 劉淑霞 楊貴福
為確保校園網(wǎng)絡(luò)運(yùn)行穩(wěn)定和順暢,有效保證教學(xué)、科研和服務(wù)信息化所需網(wǎng)絡(luò)環(huán)境,多數(shù)學(xué)校都選擇兩個(gè)以上運(yùn)營(yíng)商接入校園網(wǎng),保障關(guān)鍵業(yè)務(wù)穩(wěn)定和師生用網(wǎng)體驗(yàn),達(dá)到提高校園網(wǎng)絡(luò)可用性的目的。文章研究多個(gè)運(yùn)營(yíng)商接入條件下,布置多個(gè)測(cè)速點(diǎn)模擬師生上網(wǎng)行為,分別通過(guò)不同運(yùn)營(yíng)商訪問(wèn)同一個(gè)目的地址;根據(jù)訪問(wèn)耗時(shí)結(jié)果調(diào)整路由表,有效保證了師生訪問(wèn)互聯(lián)網(wǎng)的路徑最優(yōu),時(shí)間最短;路由表的調(diào)整可以動(dòng)態(tài)在線實(shí)施,能保證總是選擇最快ISP出口。
隨著互聯(lián)網(wǎng)應(yīng)用的快速發(fā)展,師生對(duì)于網(wǎng)絡(luò)可用性要求越來(lái)越高。為保證路由表始終處于最優(yōu)狀態(tài),高校需要對(duì)比不同路由下訪問(wèn)同一目標(biāo)網(wǎng)頁(yè)的加載時(shí)間,根據(jù)加載時(shí)間長(zhǎng)短持續(xù)優(yōu)化路由表。因此,技術(shù)路線設(shè)計(jì)如下:依據(jù)源地址設(shè)定路由表,通過(guò)不同運(yùn)營(yíng)商循環(huán)訪問(wèn)特定的目的地址,將頁(yè)面加載時(shí)間計(jì)入數(shù)據(jù)庫(kù),通過(guò)數(shù)據(jù)分析,將特定網(wǎng)址的路由指定到耗時(shí)最短的運(yùn)營(yíng)商鏈路上,可以有效提高師生用網(wǎng)體驗(yàn)。該技術(shù)路線可分解為以下三個(gè)部分:
第一部分,在用戶側(cè)布置測(cè)速點(diǎn),依據(jù)源地址指定不同的運(yùn)營(yíng)商鏈路,測(cè)速點(diǎn)循環(huán)模擬師生網(wǎng)絡(luò)訪問(wèn)行為,記錄特定網(wǎng)頁(yè)加載時(shí)間并寫(xiě)入數(shù)據(jù)庫(kù)。
第二部分,對(duì)同一頁(yè)面在不同鏈路的加載時(shí)間分別進(jìn)行匯總分析,通過(guò)簡(jiǎn)單的均值比較得出耗時(shí)最短的運(yùn)營(yíng)商鏈路。
第三部分,根據(jù)數(shù)據(jù)分析結(jié)果,將特定網(wǎng)頁(yè)的路由表規(guī)劃結(jié)果以指令形式自動(dòng)發(fā)送給路由器,實(shí)現(xiàn)按地址智能調(diào)整路由的目的。
為了降低各部分之間的耦合度,便于未來(lái)擴(kuò)展和維護(hù),可將以上三個(gè)部分劃分為三個(gè)相互關(guān)聯(lián)又各自獨(dú)立的松耦合模塊。
第一個(gè)模塊為數(shù)據(jù)獲取模塊,主要是利用測(cè)速點(diǎn)獲取不同運(yùn)營(yíng)商鏈路的網(wǎng)絡(luò)訪問(wèn)時(shí)間并將結(jié)果寫(xiě)入數(shù)據(jù)庫(kù)中。
此功能模塊的難點(diǎn)在于如何獲取最接近師生的網(wǎng)絡(luò)訪問(wèn)數(shù)據(jù)。為此,本文設(shè)計(jì)利用普通PC執(zhí)行定時(shí)任務(wù),循環(huán)訪問(wèn)師生訪問(wèn)量較多的網(wǎng)站首頁(yè),將網(wǎng)頁(yè)從開(kāi)始加載到加載結(jié)束的時(shí)間作為訪問(wèn)時(shí)間存入數(shù)據(jù)庫(kù)。
第二個(gè)模塊是數(shù)據(jù)分析模塊,對(duì)測(cè)速點(diǎn)獲取并存儲(chǔ)到數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行匯總分析,隨著數(shù)據(jù)的增多,分析結(jié)果會(huì)越來(lái)越精準(zhǔn)地指導(dǎo)路由表調(diào)整。
此功能模塊的難點(diǎn)在于如何分析匯總的數(shù)據(jù)。由于影響網(wǎng)絡(luò)訪問(wèn)時(shí)間的因素很多,包括鏈路介質(zhì)、終端性能、訪問(wèn)時(shí)間、目的可達(dá)性和網(wǎng)頁(yè)內(nèi)嵌元素等,所以將超過(guò)3分鐘仍未加載完的網(wǎng)頁(yè)標(biāo)記為不可達(dá)。
第三個(gè)模塊是路由表變更模塊。通過(guò)解析路由器當(dāng)下配置文件,與第二個(gè)模塊的規(guī)劃結(jié)果進(jìn)行匹配,若路由表一致,則保持路由器配置不變;如不一致,則自動(dòng)發(fā)送指令更新路由表,并使之生效。
此功能模塊的難點(diǎn)在于如何抽取實(shí)際運(yùn)行設(shè)備上的路由配置文件,并將配置文件與規(guī)劃的路由表進(jìn)行比較,根據(jù)比較結(jié)果決定是否觸發(fā)路由更新的指令。
為獲取最接近師生的網(wǎng)絡(luò)訪問(wèn)數(shù)據(jù),需要在最接近師生的網(wǎng)絡(luò)環(huán)境中部署數(shù)據(jù)獲取設(shè)備,即測(cè)速點(diǎn),網(wǎng)絡(luò)拓?fù)淙鐖D1所示。
圖1 數(shù)據(jù)采集系統(tǒng)網(wǎng)絡(luò)拓?fù)?/p>
數(shù)據(jù)獲取模塊是系統(tǒng)中最基礎(chǔ)的模塊,獲取的數(shù)據(jù)直接關(guān)系到后續(xù)數(shù)據(jù)分析和路由調(diào)整的效果,因此測(cè)速點(diǎn)的數(shù)量和位置尤為關(guān)鍵。圖1的示例中,在兩個(gè)樓宇的網(wǎng)絡(luò)設(shè)備間布置兩個(gè)測(cè)速點(diǎn),分別為PC1和PC2,可根據(jù)需要隨時(shí)增加測(cè)速點(diǎn),在路由器上根據(jù)源地址路由設(shè)置測(cè)速點(diǎn)PC1走ISP1鏈路,設(shè)置測(cè)速點(diǎn)PC2走ISP2鏈路,在PC1和PC2上分別跑同樣的腳本,用來(lái)輪詢測(cè)量通過(guò)各自ISP鏈路訪問(wèn)同一目標(biāo)網(wǎng)站序列所需的每個(gè)頁(yè)面加載時(shí)間,然后將獲取到的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)的表結(jié)構(gòu)見(jiàn)表1。
表1 數(shù)據(jù)獲取模塊數(shù)據(jù)庫(kù)的表結(jié)構(gòu)
數(shù)據(jù)分析模塊是為了計(jì)算出網(wǎng)絡(luò)訪問(wèn)的最優(yōu)時(shí)間,從而為路由調(diào)整提供支持和依據(jù),達(dá)到提高用戶體驗(yàn)的目的。此功能模塊實(shí)現(xiàn)過(guò)程如下:
遍歷存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù),分域名查找出對(duì)應(yīng)的URL和Time值;
分別計(jì)算出在最近一段時(shí)間跨度范圍內(nèi),通過(guò)不同ISP鏈路訪問(wèn)同一URL的Time平均值,取較小值對(duì)應(yīng)的ISP作為對(duì)應(yīng)URL的最優(yōu)鏈路,結(jié)果表示為list
根據(jù)URL與IP的對(duì)應(yīng)關(guān)系,將最優(yōu)鏈路結(jié)果輸出為list
表2 URL與IP的對(duì)應(yīng)關(guān)系
1.如何實(shí)現(xiàn)
路由變更模塊主要是獲取當(dāng)下的路由表,與計(jì)算出的最優(yōu)路由表比較,根據(jù)比較結(jié)果決定是否更新路由表。此功能模塊實(shí)現(xiàn)過(guò)程如下:
(1)系統(tǒng)通過(guò)tftp協(xié)議下載路由器配置文件;
(2)利用ANTLR開(kāi)發(fā)文件解析程序,對(duì)下載的路由器配置文件進(jìn)行解析得到路由表的語(yǔ)法樹(shù);
(3)對(duì)比抽取出的路由表項(xiàng)與實(shí)測(cè)和分析所得的最優(yōu)路由表項(xiàng)是否一致,主要對(duì)比路由條目和路由指向;
(4)根據(jù)對(duì)比結(jié)果決定是否變更路由器中的路由配置。如果兩個(gè)路由表一致,則不變更路由表,如果兩個(gè)路由表不一致,則系統(tǒng)模擬登錄路由器,發(fā)送路由刪改指令,將路由器的路由配置變更為計(jì)算所得的最優(yōu)路由表。
程序解析和運(yùn)行時(shí)的數(shù)據(jù)流如圖2所示,數(shù)據(jù)流(文件內(nèi)容)介紹如下:
圖2 路由變更模塊的數(shù)據(jù)流
(1)Confg.g4:根據(jù)思科路由表語(yǔ)法編寫(xiě)的詞法語(yǔ)法文件,利用ANTLR可以生成對(duì)應(yīng)的解析器,將思科路由配置文件中的路由表部分解析為路由表的語(yǔ)法樹(shù);
(2)cisco-confg:思科路由器配置文件,通過(guò)tftp協(xié)議從路由器獲?。?/p>
(3)EvalVisitor.java:將解析完成的路由表的語(yǔ)法樹(shù)存儲(chǔ)到ArrayList中;
(4)GetIpaddressRange.java:獲取一條路由記錄的網(wǎng)絡(luò)范圍;
(5)MatchandAdd.java:匹配并且增加或者修改路由記錄;
(6)Router.java:功能模塊的主函數(shù),調(diào)用子函數(shù)完成計(jì)劃的功能,實(shí)現(xiàn)編碼目的。
2.如何執(zhí)行
(1)編寫(xiě)語(yǔ)法詞法文件Confg.g4。運(yùn)行ANTLR的包,對(duì)Confg.g4進(jìn)行翻譯,將其翻譯為可編譯的JAVA文件,把路由器配置文件中的路由表部分解析成語(yǔ)法樹(shù);
(2)將路由表的語(yǔ)法樹(shù)存儲(chǔ)到ArrayList中;
(3)與數(shù)據(jù)分析模塊中得到的最優(yōu)鏈路輸出結(jié)果list
(4)規(guī)劃路由變更條目,將增刪的路由表項(xiàng)輸出到ASCII文件中;
(5)系統(tǒng)模擬登錄路由器,將最新路由表項(xiàng)更新到路由器配置文件中,完成路由表項(xiàng)的智能變更。
本文以思科路由器7606為例,IOS版本 Version 15.1(2)SY2, RELEASE SOFTWARE(fc3),在客戶端機(jī)器上用tracert命令進(jìn)行測(cè)試路由更改情況。對(duì)于路由器等網(wǎng)絡(luò)交換設(shè)備,沒(méi)有類似SQL語(yǔ)法的修改(update)指令,對(duì)路由表項(xiàng)操作只能是增加(ip route)或刪除(no ip route)。
文章通過(guò)模擬師生上網(wǎng)行為獲取網(wǎng)絡(luò)消耗時(shí)間,對(duì)多次消耗時(shí)間進(jìn)行匯總分析,在確定條件下對(duì)比不同鏈路的數(shù)據(jù)質(zhì)量,獲得最優(yōu)的網(wǎng)絡(luò)出口路由表,從而對(duì)路由表進(jìn)行調(diào)整。隨著數(shù)據(jù)量的增多,包括提高采集頻率、增加測(cè)速點(diǎn)數(shù)量、增加被測(cè)目的地址數(shù)量等,計(jì)算結(jié)果一定會(huì)越來(lái)越精準(zhǔn),也越來(lái)越接近師生的真實(shí)體驗(yàn),從而使得路由智能變得更加完備,帶寬利用更加充分,師生用網(wǎng)體驗(yàn)更好。