◆王小群 何榮毅 陳凱豐
(山東大學(xué)(威海)網(wǎng)絡(luò)與信息管理中心 山東 264209)
科研機(jī)構(gòu)及高校的校園網(wǎng)通常有多個(gè)出口,包括中國(guó)教育科研網(wǎng)(下文簡(jiǎn)稱為教育網(wǎng))、中國(guó)聯(lián)通、中國(guó)電信、中國(guó)移動(dòng)等,科研機(jī)構(gòu)的工作人員以及高校老師和學(xué)生經(jīng)常需要訪問一些專業(yè)的學(xué)術(shù)網(wǎng)站,有的可能是國(guó)外的網(wǎng)站,通常情況下,這些專業(yè)類的,學(xué)術(shù)類的網(wǎng)站資源不是特別豐富,可能只有電信,或者只有教育網(wǎng)資源,而出口選擇是隨機(jī)的,因此經(jīng)常會(huì)出現(xiàn)相同的網(wǎng)站某些人訪問很順暢,有的人就會(huì)無法訪問的情況,經(jīng)排查發(fā)現(xiàn)是因?yàn)樵L問這些網(wǎng)站時(shí)隨機(jī)選擇的公網(wǎng)出口不同導(dǎo)致的。
如圖1所示,本校校園網(wǎng)有多個(gè)出口,采用的是目的地址路由方式,路由表建在核心交換機(jī)上,根據(jù)用戶所訪問的網(wǎng)址,動(dòng)態(tài)選擇互聯(lián)網(wǎng)出口。
根據(jù)目的地址來進(jìn)行路由規(guī)劃的好處是:(1)數(shù)據(jù)到達(dá)目的時(shí)經(jīng)過的路徑短,經(jīng)過的故障點(diǎn)相對(duì)較少;(2)用戶通過相應(yīng)互聯(lián)網(wǎng)出口來訪問對(duì)應(yīng)運(yùn)營(yíng)商內(nèi)部的資源,速度快,用戶體驗(yàn)較好。
但是這種規(guī)劃也有缺點(diǎn):(1)有很多資源我們并不知道是處于哪個(gè)運(yùn)營(yíng)商的運(yùn)營(yíng)范圍,這樣的情況只能走默認(rèn)路由;(2)由于各運(yùn)營(yíng)商所擁有的資源量不同,導(dǎo)致各出口之間帶寬利用不平衡而導(dǎo)致某些出口很擁堵的同時(shí)另一些出口比較空閑,仍然會(huì)出現(xiàn)訪問某些網(wǎng)站出現(xiàn)卡頓或無法打開網(wǎng)頁的情況[1];(3)用戶無法得知自己是通過哪個(gè)出口訪問的互聯(lián)網(wǎng)同時(shí)用戶也無法對(duì)自己訪問互聯(lián)網(wǎng)的出口進(jìn)行更改。由于學(xué)術(shù)資源尤其國(guó)外的學(xué)術(shù)資源往往比較有限,因此經(jīng)常出現(xiàn)訪問某些網(wǎng)站卡頓,或者有的用戶打不開的情況,對(duì)師生的學(xué)術(shù)研究造成不便。
為此我們開發(fā)了這個(gè)用戶自主選擇校園網(wǎng)出口的系統(tǒng),用戶可以利用該系統(tǒng)自主選擇互聯(lián)網(wǎng)出口。
圖1 校園網(wǎng)出口示意圖
本系統(tǒng)采用Web的界面交互方式,選用Linux系統(tǒng)、MySQL數(shù)據(jù)庫、通過Telnet協(xié)議利用腳本對(duì)核心交換機(jī)上的策略路由進(jìn)行更改。
校園內(nèi)既有公有地址,也有私有地址,環(huán)境較為復(fù)雜,在保證大多數(shù)師生科研需求的前提下為了簡(jiǎn)化系統(tǒng),我們規(guī)劃了其中有或可能有自主選擇互聯(lián)網(wǎng)出口需求的師生約20個(gè)VLan,主要集中在教室、實(shí)驗(yàn)室以及圖書館。這20個(gè)VLan每個(gè)VLan有1個(gè)C類ip地址。每個(gè)VLan對(duì)應(yīng)教育網(wǎng)、聯(lián)通、電信、移動(dòng)四個(gè)互聯(lián)網(wǎng)出口可選擇,因此每個(gè)VLan對(duì)應(yīng)了4個(gè)不同的acl。為了可以快速定位用戶選擇的出口,我們提前在核心交換機(jī)上做好了每段地址對(duì)應(yīng)的不同出口的策略路由,并且在服務(wù)器上設(shè)置了對(duì)應(yīng)的表格,如表1(因篇幅原因不將內(nèi)容一一列出)。
表1 數(shù)據(jù)庫內(nèi)容示例
本系統(tǒng)具體工作流程如圖2。
當(dāng)用戶打開出口選擇頁面時(shí),服務(wù)器會(huì)根據(jù)用戶的 ip地址來查詢數(shù)據(jù)庫中是否有相關(guān)的記錄,數(shù)據(jù)庫中記錄的是每一個(gè)選擇了出口的ip地址所對(duì)應(yīng)的VLan號(hào)和acl_num號(hào),如果有記錄,則將該記錄取出,并和表1進(jìn)行匹配,得到該ip地址目前所選擇的互聯(lián)網(wǎng)出口線路,并在用戶打開的頁面中顯示出來,如果數(shù)據(jù)庫中沒有記錄,則說明該ip地址選擇的是默認(rèn)路由,在用戶打開的頁面中顯示當(dāng)前選擇的互聯(lián)網(wǎng)出口是校園網(wǎng)。當(dāng)用戶對(duì)校園網(wǎng)出口做出選擇之后,首先判斷用戶是否選擇了校園網(wǎng)為互聯(lián)網(wǎng)出口,如果是,則直接刪除掉數(shù)據(jù)庫中原有的關(guān)于該ip地址的記錄,并通過腳本文件Telnet到核心交換機(jī)上,修改策略路由為默認(rèn)路由表,修改完成在后當(dāng)前頁面顯示出用戶當(dāng)前選擇的互聯(lián)網(wǎng)出口。如果用戶選擇的是其他互聯(lián)網(wǎng)出口,則首先根據(jù)表1通過用戶ip地址和他所選擇的互聯(lián)網(wǎng)出口檢索出對(duì)應(yīng)的acl_num,再通過腳本文件Telnet到核心交換機(jī)上,修改策略路由到相應(yīng)的互聯(lián)網(wǎng)出口,同樣修改完成后在當(dāng)前頁面顯示出用戶所選擇的互聯(lián)網(wǎng)出口。
圖2 系統(tǒng)工作流程
腳本文件使用的是Perl語言,Perl一種功能豐富的計(jì)算機(jī)程序語言,具有簡(jiǎn)單靈活的特點(diǎn),在Linux 系統(tǒng)下Perl是隨系統(tǒng)安裝的。具體實(shí)現(xiàn)方法如下:
首先將獲得到的用戶的ip地址,acl_num,acl_old等參數(shù)傳到腳本中,然后我們可以直接調(diào)用Perl的Net::Telnet模塊來登錄核心交換機(jī)并進(jìn)行修改。
登錄交換機(jī)命令:
判斷如果acl_old為0,則直接將ip地址添加到新的acl_num對(duì)應(yīng)的acl中,否則需要先刪除掉舊的acl中該用戶的數(shù)據(jù),再添加到新的acl中,為了避免acl中rule_num有重復(fù),我們將每個(gè)ip地址的最后一組數(shù)據(jù)作為該ip地址的rule_num。
本校核心交換機(jī)使用的是H3C的S12510-X,策略路由使用policy-based-route命令實(shí)現(xiàn),具體實(shí)現(xiàn)方法以 10.161.20.0/24段地址為例[2]:
首先將所需要的acl策略建好。
然后使用policy-based-route命令來做路徑選擇:
最后將該策略路由應(yīng)用到相應(yīng)的網(wǎng)關(guān)上:
如果選擇某一互聯(lián)網(wǎng)出口,只需在相應(yīng)的acl下,將用戶的ip地址添加進(jìn)去即可:
交互界面采用Web界面,使用PHP編寫,選擇相應(yīng)的出口點(diǎn)擊提交即可,如圖3所示。
圖3 Web交互界面
本文介紹了一種適用于科研機(jī)構(gòu)和校園網(wǎng)的用戶自主選擇互聯(lián)網(wǎng)出口系統(tǒng),系統(tǒng)不需要串接在核心交換機(jī)與各出口路由器之間,不會(huì)成為出口的帶寬瓶頸,用戶可以登錄Web界面來選擇互聯(lián)網(wǎng)出口,增強(qiáng)了內(nèi)網(wǎng)用戶訪問互聯(lián)網(wǎng)的靈活性,也提高了用戶網(wǎng)絡(luò)體驗(yàn)的滿意度。