郝曉強(qiáng)++劉海客++周文斐
摘 要: HTTP協(xié)議作為瀏覽網(wǎng)頁的多交互式協(xié)議,給用戶帶來了很好的上網(wǎng)體驗(yàn),當(dāng)其應(yīng)用于高延時(shí)衛(wèi)星網(wǎng)絡(luò)環(huán)境下時(shí),會(huì)嚴(yán)重影響Web訪問的效率。針對(duì)該問題提出一種適用于衛(wèi)星網(wǎng)絡(luò)的HTTP加速技術(shù)解決方案,主要采用將緩存和預(yù)取相結(jié)合的方法達(dá)到對(duì)HTTP協(xié)議加速的效果。Web預(yù)取和緩存技術(shù)以期降低用戶的訪問延遲,提高網(wǎng)絡(luò)瀏覽速度,在高延時(shí)的情況下達(dá)到很好的用戶體驗(yàn)。
關(guān)鍵詞: HTTP加速; Web預(yù)取; Web緩存; 衛(wèi)星網(wǎng)絡(luò)
中圖分類號(hào): TN927+.2?34; TP393.0 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)09?0046?04
Abstract: HTTP protocol, as a multi?interactive protocol for webpage browsing, has brought a good Internet experience for users. When WWW is applied to the long?delay satellite network environment, it will seriously affect on the efficiency of Web access. Aiming at this problem, a new solution of HTTP acceleration technology suitable for satellite network is proposed. The method of combining caching and prefetching is used to reach the effect of HTTP protocol acceleration. The Web prefetching and caching technologies can reduce the access delay of users, improve the network browsing speed, and reach a better user experience in the case of long delay.
Keywords: HTTP acceleration; Web prefetching; Web caching; satellite network
0 引 言
近些年衛(wèi)星網(wǎng)絡(luò)在通信系統(tǒng)中占據(jù)著舉足輕重的地位,Web作為衛(wèi)星網(wǎng)絡(luò)的核心應(yīng)用,緩解了當(dāng)前地面網(wǎng)絡(luò)的壓力,但是由于衛(wèi)星網(wǎng)絡(luò)的高延時(shí)、高誤碼和帶寬資源受限等特性[1],其訪問流量和訪問速度成為用戶最關(guān)心的問題,也是目前衛(wèi)星網(wǎng)絡(luò)發(fā)展的主要障礙。
HTTP協(xié)議是一種串行的流水線多交互式協(xié)議,采用“請(qǐng)求?應(yīng)答”的模式傳輸數(shù)據(jù),其適用于分布式超媒體信息系統(tǒng)[2]。HTTP應(yīng)用在時(shí)延較小的局域網(wǎng)中效率較高、性能較好,但應(yīng)用在長(zhǎng)延時(shí)的衛(wèi)星鏈路中會(huì)使其傳輸效率嚴(yán)重下降,用戶的體驗(yàn)度也會(huì)大大降低[3?4]。所以必須對(duì)原有的HTTP協(xié)議進(jìn)行修改,研究一種適合于衛(wèi)星網(wǎng)絡(luò)的HTTP協(xié)議加速技術(shù)來解決上述問題。
目前很多國(guó)外的專業(yè)衛(wèi)星通信設(shè)備服務(wù)商的加速網(wǎng)關(guān)設(shè)備能提供很好的HTTP加速功能,技術(shù)已經(jīng)相當(dāng)成熟,比如iDirect,Cisco,Xtar,Newtec等。由于國(guó)外網(wǎng)絡(luò)興起較早,對(duì)HTTP加速技術(shù)的研究也很成熟,而且大多技術(shù)成果都得到廣泛應(yīng)用,但由于商業(yè)原因?qū)ο嚓P(guān)HTTP加速設(shè)備的關(guān)鍵技術(shù)知之甚少[5?6]。
HTTP加速技術(shù)的常用手段有Web緩存技術(shù)和Web預(yù)取技術(shù)[7]。緩存技術(shù)的關(guān)鍵問題是選擇緩存替換算法。目前常用的緩存替換算法主要有三種:
(1) 基于訪問頻度的LFU緩存替換方法,該方法是將頁面訪問次數(shù)最少的對(duì)象換出;
(2) 基于訪問時(shí)間間隔的LRU緩存替換方法,該方法是將緩存中最近最少被訪問的對(duì)象換出;
(3) 基于文檔大小的SIZE緩存替換方法,選擇將最大的緩存對(duì)象替換出去[8]。
雖然緩存技術(shù)在互聯(lián)網(wǎng)上有著非常廣泛的應(yīng)用,可以有效地減少重復(fù)數(shù)據(jù)包的傳輸,但是隨著Web內(nèi)容的豐富,個(gè)性化服務(wù)的比重增加,緩存技術(shù)對(duì)網(wǎng)絡(luò)性能的改善已不再顯著[9?10]。預(yù)取技術(shù)作為緩存技術(shù)的一種必要補(bǔ)充手段,是突破緩存性能上限最有效的方法,也是提高網(wǎng)絡(luò)服務(wù)質(zhì)量的關(guān)鍵技術(shù),如何使緩存和預(yù)取更好地協(xié)同工作正成為HTTP加速技術(shù)領(lǐng)域研究的熱點(diǎn)。按照預(yù)取位置的不同可以將預(yù)取分為客戶端預(yù)取,代理服務(wù)器預(yù)取和服務(wù)器預(yù)取[11]。
1 衛(wèi)星網(wǎng)絡(luò)HTTP加速系統(tǒng)設(shè)計(jì)
1.1 HTTP加速系統(tǒng)架構(gòu)設(shè)計(jì)
本文主要使用緩存和預(yù)取相結(jié)合的方法達(dá)到HTTP加速的效果。緩存的實(shí)現(xiàn)是在衛(wèi)星鏈路兩端分別部署一個(gè)主控站緩存和多個(gè)衛(wèi)星終端緩存,一個(gè)主控站可以為多個(gè)衛(wèi)星終端服務(wù),所有衛(wèi)星終端緩存的內(nèi)容都會(huì)在主控站有拷貝,這樣的架構(gòu)大大減少了對(duì)原始服務(wù)器的訪問,更適合應(yīng)用在高延時(shí)的衛(wèi)星網(wǎng)絡(luò)中。綜合以上對(duì)預(yù)取結(jié)構(gòu)的分析考慮,首先選擇的是代理服務(wù)器預(yù)取,可以更好地為本群體內(nèi)的用戶提供個(gè)性化服務(wù)。預(yù)取如果放到衛(wèi)星終端的話,預(yù)取的內(nèi)容可能還在衛(wèi)星鏈路上傳輸,此時(shí)客戶端已經(jīng)發(fā)起了請(qǐng)求,所以命中率不會(huì)太高。從性能上講衛(wèi)星終端也是遠(yuǎn)遠(yuǎn)不及主控站,所以預(yù)取放到主控站代理服務(wù)器性能更好,一旦主控站預(yù)取到Web對(duì)象,就會(huì)自動(dòng)調(diào)用Push方法[12],利用客戶端的訪問時(shí)間間隔將預(yù)取的內(nèi)容直接推送到客戶端所在的衛(wèi)星終端代理服務(wù)器,這樣當(dāng)用戶請(qǐng)求這些對(duì)象時(shí),衛(wèi)星終端Cache就可以直接命中,相當(dāng)于在局域網(wǎng)內(nèi)訪問資源,速度顯然會(huì)有所提高。
HTTP加速示意圖見圖1。
圖1中的RPA代表遠(yuǎn)端網(wǎng)頁加速器,HPA代表中心網(wǎng)頁加速器。從協(xié)議圖來看,HTTP加速協(xié)議修改了正常的HTTP協(xié)議。
如果代理服務(wù)器緩存和預(yù)取模塊性能足夠好,客戶端訪問廣域網(wǎng)就等價(jià)為在局域網(wǎng)內(nèi)的請(qǐng)求,在高延時(shí)的衛(wèi)星網(wǎng)絡(luò)中會(huì)節(jié)省大量的鏈路傳輸時(shí)間。但是如果請(qǐng)求的內(nèi)容沒有命中或者預(yù)取內(nèi)容不準(zhǔn)確,這樣用戶等待的時(shí)間就會(huì)大大增加。在衛(wèi)星鏈路中,這種訪問的重復(fù)性會(huì)導(dǎo)致同樣一份數(shù)據(jù)在鏈路上傳輸很多次,這不但會(huì)浪費(fèi)寶貴的帶寬資源,而且會(huì)導(dǎo)致每次重復(fù)訪問時(shí)用戶都要承受長(zhǎng)達(dá)幾十RTT甚至上百個(gè)RTT(600 ms)的訪問延遲,既浪費(fèi)了用戶的寶貴時(shí)間,也會(huì)增加服務(wù)器的負(fù)載,但是隨著緩存和預(yù)取技術(shù)的推廣,這種重復(fù)性會(huì)不斷減少。加速系統(tǒng)架構(gòu)圖如圖2所示。
從圖2來看,加速系統(tǒng)不過是在客戶端和服務(wù)器之間架設(shè)了兩個(gè)代理服務(wù)器,正是因?yàn)橛辛诉@兩個(gè)代理服務(wù)器才起到加速作用。
但是使用代理服務(wù)器不一定會(huì)有加速效果,如果是這個(gè)代理服務(wù)器上第一個(gè)訪問目的網(wǎng)站的用戶,使用代理服務(wù)器的訪問速度不僅不會(huì)提高,可能還會(huì)有所降低;如果不是第一個(gè)訪問目的網(wǎng)站的用戶,速度有可能提高,這是因?yàn)槟康木W(wǎng)站的對(duì)象可能已經(jīng)緩存在代理服務(wù)器上,此時(shí)頁面內(nèi)容直接命中,可以直接發(fā)給客戶端。兩臺(tái)代理服務(wù)器集成了多個(gè)模塊,尤其主控站服務(wù)器作為系統(tǒng)的核心部分,集成了HTTP連接控制模塊、協(xié)議處理模塊、緩存管理模塊、緩存超時(shí)檢查模塊、后臺(tái)預(yù)取控制模塊。若想要達(dá)到很好的加速效果,就必須使每個(gè)模塊協(xié)調(diào)工作,將每個(gè)模塊的作用發(fā)揮到最大化,想要做到這一點(diǎn)也不太容易,需要經(jīng)過大量的實(shí)驗(yàn)數(shù)據(jù)來驗(yàn)證。
緩存管理模塊、緩存超時(shí)檢查模塊、后臺(tái)預(yù)取控制模塊是代理服務(wù)器最重要的幾個(gè)部分,關(guān)系到最終的加速效果。緩存管理模塊主要用來緩存用戶訪問過的Web對(duì)象和日志信息,以便下次訪問該對(duì)象時(shí)直接從Cache取到應(yīng)答給用戶,提高緩存命中率,減少訪問時(shí)間,降低網(wǎng)絡(luò)開銷。當(dāng)緩存達(dá)到設(shè)定的極限值時(shí),需要啟用相關(guān)的緩存替換算法對(duì)緩存進(jìn)行清理。緩存超時(shí)檢查模塊用來定期檢查緩存,對(duì)過期的數(shù)據(jù)進(jìn)行刪除或重取,減少Cache的冗余度,更好地利用緩存空間。后臺(tái)預(yù)取控制模塊則在客戶端需要的對(duì)象在本地沒有命中時(shí)才會(huì)啟用,然后到后端服務(wù)器獲取相關(guān)對(duì)象,將取來的對(duì)象發(fā)送給客戶端,同時(shí)在本地拷貝一份;已緩存的對(duì)象便于下次客戶端有相同的請(qǐng)求時(shí),能在本地緩存中找到并做出快速應(yīng)答。
1.2 HTTP加速系統(tǒng)工作流程
HTTP加速代理服務(wù)器主要設(shè)置在局域網(wǎng)與衛(wèi)星網(wǎng)絡(luò)以及衛(wèi)星網(wǎng)絡(luò)和服務(wù)器之間,代理服務(wù)器作為提供轉(zhuǎn)接功能的服務(wù)器,在訪問網(wǎng)站時(shí),在瀏覽器地址欄內(nèi)輸入要訪問的網(wǎng)站,瀏覽器會(huì)自動(dòng)先訪問代理服務(wù)器,然后代理服務(wù)器會(huì)自動(dòng)轉(zhuǎn)接到目標(biāo)網(wǎng)站。由此可見代理服務(wù)器起著橋梁作用,連接著客戶端和服務(wù)器。
對(duì)于局域網(wǎng)用戶,HTTP加速代理接收客戶端的請(qǐng)求,充當(dāng)一個(gè)服務(wù)器的角色;對(duì)于原始服務(wù)器,HTTP加速代理向相關(guān)服務(wù)器發(fā)起請(qǐng)求,充當(dāng)一個(gè)客戶端的角色。加速系統(tǒng)中主控站代理服務(wù)器的主要工作流程如圖3所示。
主控站代理服務(wù)器支持壓縮和預(yù)取模塊。客戶端經(jīng)衛(wèi)星終端站請(qǐng)求網(wǎng)頁后,經(jīng)過主控站到服務(wù)器,服務(wù)器會(huì)給出應(yīng)答主頁index.html。主控站得到index.html文件后,首先轉(zhuǎn)發(fā)給客戶端同時(shí)備份一份,然后對(duì)index.html文件進(jìn)行壓縮檢測(cè)。若是經(jīng)過壓縮的需先解壓再解析獲得主頁的URL,然后檢查緩存中是否有這些對(duì)象,若有就直接從緩存中獲取,調(diào)用Push方法將內(nèi)容推送到衛(wèi)星終端;如果發(fā)現(xiàn)請(qǐng)求的內(nèi)容沒有被緩存,就會(huì)調(diào)用預(yù)取模塊進(jìn)行預(yù)取,一旦主控站預(yù)取到新的內(nèi)容,如果內(nèi)容經(jīng)過壓縮則直接緩存同時(shí)調(diào)用Push方法推送到衛(wèi)星終端;如果沒有壓縮則先對(duì)內(nèi)容壓縮并寫入緩存,同時(shí)調(diào)用Push方法,直接將最新內(nèi)容推送并緩存在衛(wèi)星終端。
從圖4可以看出,衛(wèi)星終端與主控站工作方式有所不同,不同的地方主要是衛(wèi)星終端代理服務(wù)器不支持壓縮和預(yù)取模塊,但是衛(wèi)星終端緩存的內(nèi)容和主控站是相同的。客戶端發(fā)起請(qǐng)求后會(huì)先在衛(wèi)星終端查找Cache,如果Cache沒有命中則必須要經(jīng)過長(zhǎng)延時(shí)的衛(wèi)星鏈路到真正的服務(wù)器去讀取,這樣整個(gè)訪問時(shí)間就會(huì)大大增加。
2 分析與評(píng)價(jià)
為了驗(yàn)證HTTP加速系統(tǒng)的有效性,對(duì)系統(tǒng)進(jìn)行測(cè)試。測(cè)試系統(tǒng)的配置如下:
(1) 模擬多個(gè)客戶端訪問服務(wù)器,忽略客戶端到衛(wèi)星終端服務(wù)器和主控站服務(wù)器到真正服務(wù)器之間的延時(shí),模擬客戶端和服務(wù)器之間的衛(wèi)星鏈路的單跳延時(shí)是300 ms;
(2) 客戶端訪問Web頁面的時(shí)間間隔服從均勻分布。
整個(gè)測(cè)試分為兩個(gè)過程:
(1) 連續(xù)兩次訪問同一個(gè)頁面,對(duì)比響應(yīng)時(shí)間。測(cè)試步驟如下:
① 沒有HTTP加速代理;
② 有HTTP加速代理(衛(wèi)星終端和主控站都有緩存);
③ 有HTTP加速代理(衛(wèi)星終端和主控站都有緩存,主控站有壓縮);
④ 有HTTP加速代理(衛(wèi)星終端和主控站都有緩存,主控站有壓縮和預(yù)?。y(cè)試結(jié)果如表1所示。
(2) 與第一個(gè)過程的測(cè)試內(nèi)容有所不同,第二個(gè)測(cè)試是先訪問主頁面,記錄頁面響應(yīng)時(shí)間,緊接著訪問主頁面內(nèi)的子頁面,記錄子頁面的響應(yīng)時(shí)間。測(cè)試的步驟同上,測(cè)試結(jié)果如表2所示。
3 結(jié) 論
衛(wèi)星網(wǎng)絡(luò)的帶寬限制和高延時(shí)導(dǎo)致Web 訪問傳輸性能下降。HTTP協(xié)議的頻繁交互是影響其在衛(wèi)星網(wǎng)絡(luò)中傳輸性能的主要因素,若想要達(dá)到可觀的加速效果,就必須對(duì)原有的HTTP協(xié)議進(jìn)行修改。為了改善這種“請(qǐng)求?響應(yīng)”交互模式對(duì)衛(wèi)星網(wǎng)絡(luò)中HTTP協(xié)議性能的影響,本文提出在原有的系統(tǒng)基礎(chǔ)上增設(shè)兩級(jí)代理服務(wù)器,在代理服務(wù)器上實(shí)現(xiàn)預(yù)取和緩存技術(shù)的結(jié)合,設(shè)計(jì)了有效的HTTP加速代理方案。
Web緩存利用較高的命中率來減少鏈路上的數(shù)據(jù)傳輸,節(jié)省了大量的訪問時(shí)間,但只依賴緩存技術(shù)實(shí)現(xiàn)理想的加速效果是不太現(xiàn)實(shí)的;Web預(yù)取則克服了Web緩存在利用WWW訪問時(shí)空間局部性的缺陷,使緩存機(jī)制可以盡量擺脫時(shí)間局部性和空間局部性的束縛。作為提升高速緩存命中率的一種手段,預(yù)取技術(shù)已經(jīng)越來越顯示出它的重要性。在很大程度上能縮短在衛(wèi)星網(wǎng)絡(luò)中使用Web訪問的響應(yīng)時(shí)間,充分節(jié)約衛(wèi)星帶寬資源。Web緩存和預(yù)取技術(shù)為提高網(wǎng)絡(luò)性能帶來了新的機(jī)遇,同時(shí)也遇到了一些新的挑戰(zhàn)。就目前來看,仍有以下問題有待進(jìn)一步探討和研究:
(1) 如何提高緩存命中率。由于價(jià)格的因素,緩存的存儲(chǔ)往往有大小限制,必須要明確緩存的內(nèi)容,舍棄對(duì)用戶無用的內(nèi)容。緩存是從無到有的,在最初階段不能發(fā)揮作用,而且在不能命中的情況下服務(wù)器性能會(huì)出現(xiàn)顛簸,所以提高命中率應(yīng)該是研究緩存的核心任務(wù)。
(2) 如何解決緩存的更新、清除和同步問題。隨著Web內(nèi)容的豐富,更新速度的提升,客戶可能只是關(guān)心實(shí)時(shí)信息動(dòng)態(tài),所以要有一個(gè)很好的緩存刷新機(jī)制,及時(shí)清理緩存的垃圾,讓更重要的內(nèi)容進(jìn)入緩存。如何實(shí)現(xiàn)主控站緩存和衛(wèi)星終端緩存的同步在整個(gè)項(xiàng)目中也花費(fèi)了大量的時(shí)間,經(jīng)過反復(fù)調(diào)研,采用主控站主動(dòng)向衛(wèi)星終端Push的方法。是否有更好的解決方法應(yīng)該也是以后工作的重點(diǎn)。
(3) 如何正確獲得用戶會(huì)話集,并能使用恰當(dāng)?shù)姆椒ㄟM(jìn)行處理,以期提高預(yù)取的準(zhǔn)確率。已有預(yù)取算法的研究主要集中在日志文件的挖掘以及對(duì)URL的分析,日志文件按照同一個(gè)IP 地址劃分成不同的會(huì)話集。 由于有很多用戶可能共用一個(gè)IP,而且用戶的訪問也是隨機(jī)的,所以會(huì)話集并不能真正地代表某個(gè)用戶的訪問序列。所以在存在很多噪聲的情況下,如何精確地確定預(yù)取對(duì)象應(yīng)該是以后研究的重點(diǎn)。
參考文獻(xiàn)
[1] 翟鴻雁.廣域網(wǎng)優(yōu)化技術(shù)及其應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2007(5):69?71.
[2] 上野宣.圖解HTTP[M].于均良,譯.北京:人民郵電出版社,2014.
[3] 尹昊.Windows Mobile平臺(tái)下HTTP代理系統(tǒng)的研究與設(shè)計(jì)[D].大連:大連理工大學(xué),2007:15?16.
[4] 何辭,張亞生,彭華.一種適用于衛(wèi)星網(wǎng)絡(luò)的HTTP加速技術(shù)[J].無線電通信技術(shù),2013,39(5):15?17.
[5] 胡偉之,沈富可.基于Web訪問特性的緩存替換策略[J].計(jì)算機(jī)應(yīng)用,2008,28(z2):48?50.
[6] MAHANTI A, EAGER D, WILLIAMSON C. Temporal locality and its impact on Web proxy cache performance [J]. Performance evaluation, 2000, 42(2/3): 187?203.
[7] 郝沁汾,祝明發(fā),郝繼升.WWW業(yè)務(wù)訪問特性分布研究[J].計(jì)算機(jī)研究與發(fā)展,2001,38(10):1172?1180.
[8] 黃敏,蔡志剛.緩存替換算法研究綜述[J].計(jì)算機(jī)科學(xué),2006,33(12):191?193.
[9] XU Huanqing, WANG Yongcheng. A Web pre?fetching model based on analyzing user access pattern [J]. Journal of software, 2003, 14(6): 1142?1147.
[10] BENEVENUTO F, DUARTE F, ALMEIDA V, et al. Web cache replacement policies: properties, limitations and implications [C]// Proceedings of the 3rd Latin American Web Congress. Los Alamitos, CA: IEEE, 2005: 197?204.
[11] 班志杰,古志民,金瑜.Web預(yù)取技術(shù)綜述[J].計(jì)算機(jī)研究與發(fā)展,2009,46(2):202?210.
[12] CHEN H, ABRAMS M, JOHNSON T, et al. Wormhole caching with HTTP push method for satellite?based Web content multicast and replication system [C]// Proceedings of 1999 the 4th International Web Caching Workshop. [S.l.]: IEEE, 1999: 1?7.