一 引言 "w,r$?.o8O:X#E-OMSCBSC 移動(dòng)通信論壇 CDMA 20001x系統(tǒng)為移動(dòng)數(shù)據(jù)增值業(yè)務(wù)的開展提供了高速的空中傳輸保證,運(yùn)營商基于CDMA移動(dòng)分組網(wǎng)開展了豐富多彩的移動(dòng)數(shù)據(jù)業(yè)務(wù)。其中WAP業(yè)務(wù)以其業(yè)務(wù)內(nèi)容豐富、使用簡單等特點(diǎn)得到迅速發(fā)展。隨著業(yè)務(wù)的開展,如何從技術(shù)上優(yōu)化WAP系統(tǒng)性能,提高用戶的使用感受變得十分必要,
二 HTTP重定向問題 1. CDMA WAP業(yè)務(wù)上HTTP重定向的應(yīng)用 CDMA WAP業(yè)務(wù)和計(jì)費(fèi)系統(tǒng)中大量采用重定向技術(shù),完成CP內(nèi)容掛接,相關(guān)的瀏覽、下載以及后臺(tái)計(jì)費(fèi)等業(yè)務(wù)。WAP計(jì)費(fèi)網(wǎng)關(guān)、WAP網(wǎng)關(guān)對(duì)于HTTP重定向的缺省處理是簡單轉(zhuǎn)發(fā),也就是將來自WAP Portal或者CP服務(wù)器的HTTP重定向響應(yīng),返回給移動(dòng)終端,由終端的瀏覽器進(jìn)行解析和處理。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖如圖1所示。
2x+b;q/F2U移動(dòng)通信,通信工程師的家園,通信人才,求職招聘,網(wǎng)絡(luò)優(yōu)化,通信工程,出差住宿,通信企業(yè)黑名單圖1 CDMA WAP業(yè)務(wù)上HTTP重定向網(wǎng)絡(luò)拓?fù)鋱D 終端瀏覽器在收到HTTP重定向響應(yīng)后,提取其中響應(yīng)頭Location的值,作為新的URL,重新發(fā)起HTTP請(qǐng)求,這些操作并沒有用戶的干預(yù),用戶并不知曉是否發(fā)生了重定向操作。重新發(fā)起的HTTP請(qǐng)求經(jīng)過服務(wù)器處理后,將得到新資源對(duì)應(yīng)的結(jié)果,并顯示給用戶。
2. WAP業(yè)務(wù)中HTTP重定向?qū)I(yè)務(wù)性能的負(fù)面影響 WAP1.x系列移動(dòng)終端通過WAP1.x網(wǎng)關(guān)進(jìn)行WAP業(yè)務(wù)的訪問。在重定向過程中,由于存在重定向,終端瀏覽器從發(fā)起瀏覽請(qǐng)求到最后看到響應(yīng)結(jié)果,至少額外需要兩個(gè)Round-Trip的時(shí)間開銷。除此之外,還在WAP實(shí)際數(shù)據(jù)通路上的各個(gè)功能部件上,額外增加了很多計(jì)算開銷。這些開銷增加了通信過程的遲滯時(shí)間,嚴(yán)重地影響了用戶的使用體驗(yàn)。 而在WAP2.0系列移動(dòng)終端通過WAP2.0網(wǎng)關(guān)進(jìn)行WAP業(yè)務(wù)訪問時(shí),在重定向過程中,由于存在重定向,WAP2.0網(wǎng)關(guān)和終端之間增加了兩個(gè)Round-Trip的時(shí)間開銷,而在WAP2.0網(wǎng)關(guān)和業(yè)務(wù)系統(tǒng)之間增加了兩個(gè)Round-Trip和一次建立TCP連接的三路握手的時(shí)間開銷。除此之外,還增加了額外的各功能模塊的計(jì)算開銷。
3.HTTP重定向所導(dǎo)致性能損耗的解決方案 WAP業(yè)務(wù)系統(tǒng)中頻繁發(fā)生的重定向操作將是整個(gè)WAP業(yè)務(wù)訪問的致命障礙,額外的時(shí)間開銷和運(yùn)算消耗將會(huì)大大降低這些業(yè)務(wù)的使用性能,在實(shí)際應(yīng)用中,是不能允許的。 理論分析和實(shí)際測試數(shù)據(jù)都表明,大量存在的HTTP重定向操作,顯著地依賴效率低下的移動(dòng)終端的處理能力,顯著占用了緩慢的空中接口通信開銷,空中無線傳輸效率較低,實(shí)際情況一般在9k-100k之間。而WAP網(wǎng)關(guān)、WAP業(yè)務(wù)平臺(tái)等后臺(tái)網(wǎng)絡(luò)系統(tǒng)一般通信帶寬都能保證在100M以上,所以,如何將重定向操作所產(chǎn)生的空中來回傳輸過程轉(zhuǎn)移到后臺(tái)網(wǎng)絡(luò)系統(tǒng)上來,將本該由低效緩慢的移動(dòng)終端處理的重定向計(jì)算功能轉(zhuǎn)移到后臺(tái)系統(tǒng)上來,是本解決方案的核心思想。 在后臺(tái)系統(tǒng)中,設(shè)計(jì)添加一個(gè)功能部件,專門負(fù)責(zé)攔截過濾所有的HTTP請(qǐng)求和響應(yīng),對(duì)于發(fā)生重定向操作的HTTP響應(yīng),WAP網(wǎng)關(guān)和計(jì)費(fèi)網(wǎng)關(guān)缺省處理是透明地轉(zhuǎn)發(fā)給客戶端,而本模塊將攔截所有發(fā)生重定向的HTTP響應(yīng),進(jìn)行特殊處理,如圖2所示。
*@,u+q"Q(W.a:Tmscbsc 移動(dòng)通信論壇擁有30萬通信專業(yè)人員,超過50萬份GSM/3G等通信技術(shù)資料,是國內(nèi)領(lǐng)先專注于通信技術(shù)和通信人生活的社區(qū)。2J9P9d8B6Z)@ | 國內(nèi)領(lǐng)先的通信技術(shù)論壇圖2 HTTP重定向性能損耗解決方案 每個(gè)從業(yè)務(wù)系統(tǒng)(WAP Portal、計(jì)費(fèi)網(wǎng)關(guān)或CP服務(wù)器)返回的HTTP響應(yīng),需要進(jìn)行過濾處理:獲取HTTP響應(yīng)的狀態(tài)碼,如果為301,302,303,則判斷發(fā)生了重定向操作。從響應(yīng)的HTTP頭中讀取Location頭域的值,這個(gè)值就是要重定向過去的真實(shí)的絕對(duì)URL。對(duì)這個(gè)URL進(jìn)行解析,分析出主機(jī)地址、端口、路徑等信息。清除掉或者緩沖剛才建立到業(yè)務(wù)系統(tǒng)的TCP連接,清除此刻前的HTTP響應(yīng)的內(nèi)容,重新發(fā)起新的HTTP請(qǐng)求,并等候新請(qǐng)求對(duì)應(yīng)的結(jié)果。得到結(jié)果后進(jìn)行判斷,如果是正常響應(yīng),就生成客戶的HTTP響應(yīng),并在返回給客戶的響應(yīng)頭中添加Content-Location頭域,域值為剛才Location域值的內(nèi)容,以便終端能識(shí)別出本系統(tǒng)處理重定向后的新的內(nèi)容。 重定向操作全部被重定向代理攔截并代理移動(dòng)終端來予以處理,需要終端配合的所有操作過程全部不存在了,這大大縮短了訪問過程的延遲時(shí)間。 此外,系統(tǒng)設(shè)計(jì)時(shí)根據(jù)需要添加了特殊措施,防止出現(xiàn)無限次的相互遞歸重定向,從而導(dǎo)致系統(tǒng)出現(xiàn)工作邏輯上的死循環(huán)。遞歸重定向是一個(gè)常見的網(wǎng)絡(luò)陷阱,很多攻擊手段中都利用處理重定向操作的漏洞來使整個(gè)后臺(tái)網(wǎng)絡(luò)系統(tǒng)癱瘓。
二 TCP連接優(yōu)化 WAP1.x的所有業(yè)務(wù)訪問,在到達(dá)WAP網(wǎng)關(guān)之后,全部是基于TCP連接上的HTTP數(shù)據(jù)傳輸;而WAP2.0的業(yè)務(wù)訪問,從移動(dòng)終端開始,經(jīng)過WAP2.0網(wǎng)關(guān)的所有環(huán)節(jié)全部都是采用TCP連接和HTTP數(shù)據(jù)通信。通過TCP連接承載的HTTP數(shù)據(jù)業(yè)務(wù)內(nèi)容,將嚴(yán)重依賴TCP連接的建立機(jī)制、拆除方法、連接維持及數(shù)據(jù)傳輸效率等。對(duì)于成千上萬的并發(fā)用戶的訪問,TCP連接的建立、拆除、數(shù)據(jù)傳輸、等候響應(yīng)等變得異常頻繁。TCP連接的任何一點(diǎn)變動(dòng),經(jīng)過瞬間成千上萬用戶的同時(shí)在線請(qǐng)求,在宏觀上將出現(xiàn)非常明顯的變化,直接影響到用戶的使用體驗(yàn)。
1. CDMA WAP 系統(tǒng)中存在的TCP連接 先從微觀分析發(fā)生一次用戶瀏覽操作必須經(jīng)歷的TCP連接全部過程,通過對(duì)這個(gè)過程的詳細(xì)分析,來探討技術(shù)上的改進(jìn)方案。 第一步,用戶通過移動(dòng)終端,發(fā)起瀏覽請(qǐng)求,WAP1.x首先建立WSP會(huì)話,在這個(gè)會(huì)話基礎(chǔ)上發(fā)送WSP-Method請(qǐng)求到網(wǎng)關(guān),WAP2.0終端先建立到WAP2.0網(wǎng)關(guān)的TCP連接,在這個(gè)連接基礎(chǔ)上發(fā)送HTTP-Method請(qǐng)求到網(wǎng)關(guān)。對(duì)這一步,本優(yōu)化方案將不涉及任何內(nèi)容。 第二步,從WAP網(wǎng)關(guān)開始,隨后發(fā)生的數(shù)據(jù)通信全部是基于TCP連接的。WAP網(wǎng)關(guān)收到移動(dòng)終端的Method請(qǐng)求后,進(jìn)行相關(guān)處理,開始建立到計(jì)費(fèi)網(wǎng)關(guān)的TCP連接,建立成功后,通過這個(gè)連接將HTTP請(qǐng)求數(shù)據(jù)發(fā)送過去,并等待響應(yīng)結(jié)果。等待一定時(shí)間后,可能會(huì)出現(xiàn)兩種結(jié)果:一是計(jì)費(fèi)網(wǎng)關(guān)長時(shí)間沒有發(fā)送響應(yīng),網(wǎng)關(guān)等候超時(shí)了,這時(shí)網(wǎng)關(guān)將給移動(dòng)終端反饋超時(shí)等候信息提示;二是計(jì)費(fèi)網(wǎng)關(guān)發(fā)送回來了響應(yīng),網(wǎng)關(guān)將這些結(jié)果反饋給移動(dòng)終端顯示。 第三步,從計(jì)費(fèi)網(wǎng)關(guān)之后,所有的數(shù)據(jù)交換全部是基于TCP連接。通過TCP連接進(jìn)行數(shù)據(jù)傳輸?shù)娜窟^程完全類似WAP網(wǎng)關(guān)。
2. WAP網(wǎng)關(guān)到計(jì)費(fèi)網(wǎng)關(guān)和CP的TCP連接分析及優(yōu)化措施 (1) 網(wǎng)關(guān)到計(jì)費(fèi)網(wǎng)關(guān)之間需要建立很多個(gè)TCP連接,一般是WAP網(wǎng)關(guān)接收到一個(gè)終端請(qǐng)求,就建立一個(gè)到計(jì)費(fèi)網(wǎng)關(guān)的TCP連接。TCP連接建立過程要經(jīng)歷三路握手,三路握手的時(shí)間開銷是很大的,至少消耗掉1.5個(gè)Round-Trip的時(shí)延。此外,用戶請(qǐng)求成千萬,每來一個(gè)請(qǐng)求就建立一個(gè)TCP連接,很容易讓系統(tǒng)產(chǎn)生大量的激活TCP連接,而操作系統(tǒng)瞬間能支撐的并發(fā)TCP連接個(gè)數(shù)非常有限。在TCP連接數(shù)目達(dá)到一定極限后,隨后的TCP連接請(qǐng)求將會(huì)失敗,這導(dǎo)致很多用戶的請(qǐng)求不被受理,用戶被告知系統(tǒng)繁忙,而無法得到正確結(jié)果。 優(yōu)化措施: ● 采用TCP連接池機(jī)制,維持一定數(shù)目的連接數(shù)量。每個(gè)TCP連接完成數(shù)據(jù)傳輸后,并不是馬上被拆除掉,而是將它回收到連接池中進(jìn)行管理。當(dāng)一個(gè)新的請(qǐng)求到來時(shí),無需花費(fèi)三路握手過程來新建立一個(gè)連接,而是從連接池中取出一個(gè)TCP連接即可。 ● 采用請(qǐng)求隊(duì)列來排隊(duì)用戶的請(qǐng)求,采用先進(jìn)先出的策略,防止大并發(fā)訪問量下的用戶請(qǐng)求被拒絕的情況發(fā)生。為了保障系統(tǒng)能滿負(fù)荷,但又高效快速的工作,到計(jì)費(fèi)網(wǎng)關(guān)之間的TCP連接總數(shù)必須保證低于一個(gè)極限值,超過這個(gè)極限值的請(qǐng)求將被送到緩沖隊(duì)列中,排隊(duì)等候,等系統(tǒng)騰出時(shí)間或者不忙時(shí),采用先到先處理的方法。 通過上述兩種措施,可以極大地縮短WAP網(wǎng)關(guān)到計(jì)費(fèi)網(wǎng)關(guān)之間的數(shù)據(jù)傳輸時(shí)間,提高系統(tǒng)處理終端用戶的并發(fā)訪問量。 (2) 終端用戶每次發(fā)起一個(gè)瀏覽請(qǐng)求,都在WAP網(wǎng)關(guān)那里激活一個(gè)事務(wù)處理流程:接受并理解用戶的請(qǐng)求,將請(qǐng)求轉(zhuǎn)發(fā)到計(jì)費(fèi)網(wǎng)關(guān),等候結(jié)果。所以,這個(gè)流程大部分時(shí)間出于等待狀態(tài)。在某一個(gè)瞬間,并發(fā)存在的事務(wù)處理流程總個(gè)數(shù)是有一定數(shù)目限制的,超過這個(gè)限制的后續(xù)終端用戶請(qǐng)求將被拒絕,用戶被告知系統(tǒng)繁忙或者訪問錯(cuò)誤,而無法得到正確結(jié)果。 優(yōu)化措施: 這個(gè)問題導(dǎo)致的結(jié)果是影響用戶單位時(shí)間內(nèi)的并發(fā)訪問量。優(yōu)化的關(guān)鍵是如何提高單位時(shí)間內(nèi)事務(wù)處理的流程數(shù)量。提高數(shù)量有兩種途徑: ● 提高硬件系統(tǒng)的配置,增加內(nèi)存、增加CPU數(shù)量、增大CPU處理速度,從而提高處理能力。這種方法需要增大硬件投入。 ● 將每一個(gè)處理流程的等候時(shí)間縮短,縮短到用戶體驗(yàn)被認(rèn)可的最高值。比如,用戶發(fā)起一個(gè)請(qǐng)求后,10秒鐘還沒有結(jié)果顯示,可能用戶就放棄這次瀏覽,但WAP網(wǎng)關(guān)可能在處理這個(gè)請(qǐng)求的等待時(shí)間是60秒。我們將等候時(shí)間從60秒縮短到20秒,那么原來要等候60秒,現(xiàn)在只能等候20秒,騰出來的40秒用于別的用戶請(qǐng)求。這樣,將大大增加了單位時(shí)間內(nèi)用戶請(qǐng)求的數(shù)量,從而提高效率。 但計(jì)費(fèi)網(wǎng)關(guān)不同于WAP網(wǎng)關(guān)的地方是,WAP網(wǎng)關(guān)只需將所有的HTTP請(qǐng)求全部通過與計(jì)費(fèi)網(wǎng)關(guān)相連的TCP通道,轉(zhuǎn)發(fā)給計(jì)費(fèi)網(wǎng)關(guān);而計(jì)費(fèi)網(wǎng)關(guān)則需要對(duì)所有的HTTP請(qǐng)求進(jìn)行域名解析,根據(jù)解析的地址,建立能到達(dá)該地址的TCP連接。所以,計(jì)費(fèi)網(wǎng)關(guān)建立TCP連接的情形比WAP網(wǎng)關(guān)要復(fù)雜很多。 計(jì)費(fèi)網(wǎng)關(guān)TCP連接比較復(fù)雜的原因主要是:用戶請(qǐng)求的內(nèi)容是位于互聯(lián)網(wǎng)上的CP服務(wù)器里的,CP服務(wù)器的位置和網(wǎng)絡(luò)環(huán)境是千差萬別的,有的CP服務(wù)器與計(jì)費(fèi)網(wǎng)關(guān)之間的帶寬足夠?qū)挘械膭t很窄,有的CP服務(wù)器域名或者IP地址解析和反向解析消耗的時(shí)間非常長,有的則很短。正是由于這些因素的存在,從計(jì)費(fèi)網(wǎng)關(guān)到CP服務(wù)器的TCP連接建立可能很容易,也可能非常費(fèi)時(shí),甚至很長時(shí)間都建立不起來。這樣,計(jì)費(fèi)網(wǎng)關(guān)在長時(shí)間得不到CP服務(wù)器的響應(yīng)時(shí),將一直不給WAP網(wǎng)關(guān)應(yīng)答,WAP網(wǎng)關(guān)也不給用戶應(yīng)答,用戶將守候移動(dòng)終端屏幕,看不到任何結(jié)果。 這個(gè)過程的最糟糕情況是:如果很多用戶同時(shí)在訪問這種建立TCP連接有問題的CP服務(wù)器,將會(huì)使得WAP網(wǎng)關(guān)、計(jì)費(fèi)網(wǎng)關(guān)全部處于等候狀態(tài),這些系統(tǒng)資源將會(huì)全部消耗在長時(shí)間的等候中,新的用戶請(qǐng)求不能得到處理,如同整個(gè)后臺(tái)系統(tǒng)完全崩潰一樣。 對(duì)于計(jì)費(fèi)網(wǎng)關(guān)這一步,出現(xiàn)這種異常情況的概率非常大,系統(tǒng)很容易處于休克狀態(tài),從而使計(jì)費(fèi)網(wǎng)關(guān)在整個(gè)WAP業(yè)務(wù)訪問環(huán)節(jié)中,顯得比較脆弱和易受攻擊。 針對(duì)這種情況,對(duì)計(jì)費(fèi)網(wǎng)關(guān)的TCP連接管理和控制,提出了若干改進(jìn)措施,分別如下: ● 改善網(wǎng)絡(luò)硬件環(huán)境,尤其是對(duì)DNS服務(wù)器的全球同步和緩存進(jìn)行優(yōu)化配置。計(jì)費(fèi)網(wǎng)關(guān)的域名查找效率提高了很多,對(duì)外建立TCP連接的速度從網(wǎng)絡(luò)環(huán)境上得到保障。 ● 采用非阻塞通信機(jī)制,優(yōu)化計(jì)費(fèi)網(wǎng)關(guān)的TCP通信處理。非阻塞通信方式能防止一些異常極端情況所導(dǎo)致的系統(tǒng)處于服務(wù)停滯現(xiàn)象,如當(dāng)某個(gè)CP提供的URL對(duì)應(yīng)的主機(jī)域名不存在或者剛剛申請(qǐng),全球域名系統(tǒng)還沒有完全同步時(shí),域名的解析將非常耗時(shí);或者某個(gè)CP的IP地址是個(gè)虛擬IP,或者是個(gè)IP陷阱,那么建立到這個(gè)IP的連接會(huì)非常耗時(shí),等待時(shí)間一般都是以分鐘為數(shù)量級(jí)的,且有大量的并發(fā)用戶同時(shí)訪問這個(gè)陷阱CP時(shí),阻塞通信方式的結(jié)果是所有的工作進(jìn)程/線程全部被阻塞,新的用戶請(qǐng)求就會(huì)被拒絕,系統(tǒng)處于休克死亡狀態(tài)。非阻塞通信方式并不會(huì)將工作進(jìn)程/線程阻塞,而是將這種等待操作交給事件監(jiān)聽模塊,采用異步通知機(jī)制提醒解析成功或者連接成功或者讀寫成功,如果這些操作被阻塞掉,并輔以定時(shí)器的控制,系統(tǒng)仍然繼續(xù)如常地處理(下轉(zhuǎn)第5頁)(上接第23頁)和響應(yīng)用戶的新請(qǐng)求。 ● 提高單位時(shí)間內(nèi)計(jì)費(fèi)網(wǎng)關(guān)的用戶請(qǐng)求通過和處理量。這個(gè)措施主要包括兩項(xiàng)內(nèi)容:一是縮短每一個(gè)請(qǐng)求的處理時(shí)間,從以前的60秒,縮短到20秒,如果20秒內(nèi)TCP連接沒有建立成功,或者沒有得到響應(yīng)結(jié)果,系統(tǒng)將終止這個(gè)請(qǐng)求的處理,返回異常給WAP網(wǎng)關(guān)。二是系統(tǒng)太繁忙而來不及處理新的請(qǐng)求時(shí),不能拒絕新的請(qǐng)求,而是將這些請(qǐng)求放到請(qǐng)求隊(duì)列中緩沖起來,等系統(tǒng)不忙時(shí),繼續(xù)處理緩沖中保存的客戶請(qǐng)求。 通過對(duì)WAP網(wǎng)關(guān)到計(jì)費(fèi)網(wǎng)關(guān)和CP的TCP連接優(yōu)化,WAP后臺(tái)業(yè)務(wù)處理系統(tǒng)從處理性能上得到了顯著改善,系統(tǒng)崩潰和服務(wù)被拒絕的可能性大大降低。 以上論述主要針對(duì)CDMA WAP系統(tǒng)中對(duì)用戶訪問速度和系統(tǒng)性能影響比較大的方面進(jìn)行有針對(duì)性地分析,并進(jìn)而提出若干優(yōu)化措施,希望能夠?qū)\(yùn)營商CDMA WAP系統(tǒng)的建設(shè)有所幫助。