一種在多服務(wù)器之間進(jìn)行會(huì)話遷移的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種在多服務(wù)器之間進(jìn)行會(huì)話遷移的方法,具體來(lái)說(shuō),是指一種TCP會(huì)話的遷移方法,屬于多媒體通信領(lǐng)域。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)應(yīng)用日益增多,網(wǎng)絡(luò)負(fù)載的日趨增大,服務(wù)器的性能、穩(wěn)定性和可靠性正面臨嚴(yán)峻的考驗(yàn)。雖然P2P的網(wǎng)絡(luò)服務(wù)模式正在興起,但是目前互聯(lián)網(wǎng)上的主導(dǎo)服務(wù)模式仍然是C / S或B / S,針對(duì)這種情況,人們紛紛采用負(fù)載均衡、雙機(jī)備份等技術(shù)來(lái)提供更為穩(wěn)定的服務(wù)。為了給用戶提供更好的服務(wù)以及減少網(wǎng)絡(luò)負(fù)載,基于TCP連接遷移的方法逐漸開(kāi)始出現(xiàn)。
[0003]TCP是一個(gè)端到端的傳輸層協(xié)議,處于應(yīng)用層和網(wǎng)絡(luò)層之間。在數(shù)據(jù)傳輸之前,由TCP模塊在運(yùn)行于不同主機(jī)上的兩個(gè)應(yīng)用程序之間建立直接連接,通常稱為虛擬連接,其后的TCP報(bào)文在此連接的接觸上進(jìn)行傳輸。TCP協(xié)議在IP協(xié)議提供的服務(wù)基礎(chǔ)上,提供了面向連接的、可靠的、全雙工的數(shù)據(jù)流傳輸服務(wù)。TCP協(xié)議通過(guò)三個(gè)報(bào)文段完成連接的建立,也就是俗稱的三次握手協(xié)議。當(dāng)主動(dòng)方發(fā)出SYN連接請(qǐng)求后,等待對(duì)方回答SYN,ACK。這種建立連接的方法可以防止產(chǎn)生錯(cuò)誤的連接,TCP使用的流量控制協(xié)議是可變大小的協(xié)議。第一次握手:建立連接時(shí),客戶端發(fā)送SYN包(SEQ=X)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)。第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN(ACK=X+1),同時(shí)自己也送一個(gè)SYN包(SEQ=Y),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)。
[0004]第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ACK =Y+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入Established狀態(tài),完成三次握手。
[0005]TCP連接遷移是將一個(gè)TCP連接的一個(gè)端點(diǎn)遷移到另一個(gè)節(jié)點(diǎn),而整個(gè)遷移過(guò)程對(duì)于連接的另一端點(diǎn)來(lái)說(shuō)是透明的。所以,前端服務(wù)器能夠利用TCP連接遷移將客戶的連接遷移至后端某一臺(tái)或者多臺(tái)服務(wù)器上。此后,前端服務(wù)器就擔(dān)當(dāng)路由器,將該客戶發(fā)來(lái)的報(bào)文轉(zhuǎn)發(fā)給后端服務(wù)器,而后端服務(wù)器則將服務(wù)數(shù)據(jù)直接發(fā)送給客戶,即不經(jīng)過(guò)前端服務(wù)器中轉(zhuǎn),大大減輕前端服務(wù)器的負(fù)擔(dān)。
[0006]M-TCP (Migratory TCP)是由 Rutgers University 的Distributed Computing Lab的研究人員開(kāi)發(fā)的,其解決方法是提出一種新的傳輸層協(xié)議,該協(xié)議是傳統(tǒng)TCP協(xié)議的擴(kuò)展,稱為M-TCP協(xié)議。使用該協(xié)議的服務(wù)器集群中的服務(wù)器之間可以實(shí)現(xiàn)TCP連接的的動(dòng)態(tài)遷移,但遷移是由客戶方主動(dòng)發(fā)起的,對(duì)客戶方不透明。方法的初衷在于與客戶端已經(jīng)建立TCP會(huì)話的服務(wù)器端因某種不可期的原因宕機(jī),客戶端向另一個(gè)備用服務(wù)器重新發(fā)起恢復(fù)會(huì)話的請(qǐng)求。使用此方法需要修改主機(jī)的操作系統(tǒng),在BSD上實(shí)現(xiàn),并且服務(wù)程序也必須使用M-TCP提供的API重新編寫(xiě)。
[0007]TCPCP是一種基于TCP連接遷移技術(shù)的解決方法。通過(guò)將TCP連接一端的套接字從一臺(tái)主機(jī)遷移到另一臺(tái)主機(jī),就像是在同一臺(tái)主機(jī)上傳遞一個(gè)文件描述符一樣。整個(gè)過(guò)程中,連接不會(huì)中斷,不需要重新建立連接。其核心技術(shù)分為兩個(gè)部分:TCP連接狀態(tài)信息的存儲(chǔ)與遷移,以及狀態(tài)信息的恢復(fù)。它們通過(guò)TCPCP提供的一些列函數(shù)來(lái)實(shí)現(xiàn)。TCPCP使用一個(gè)稱為ICI的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)TCP連接的狀態(tài)信息,它作為連接狀態(tài)信息的載體,在遷移的整個(gè)過(guò)程中起到非常重要的作用。而對(duì)于信息的遷移,TCPCP則通過(guò)第三方軟件來(lái)實(shí)現(xiàn)。借住遷移來(lái)的ICI數(shù)據(jù)結(jié)構(gòu),TCPCP提供了一系列的函數(shù)來(lái)講ICI數(shù)據(jù)結(jié)構(gòu)中重要參數(shù)重新注入到目的主機(jī)的內(nèi)核中,并恢復(fù)連接。
[0008]在移動(dòng)IP網(wǎng)絡(luò)環(huán)境下,一旦客戶端與服務(wù)器建立上連接,如果用戶的位置發(fā)生變化,通過(guò)其他的接入服務(wù)器連接,可能會(huì)有更好的服務(wù)器能夠給用戶提供支持,但是在現(xiàn)有的情況下,客戶端還是只有從已連接服務(wù)器獲得數(shù)據(jù),只有當(dāng)用戶與原服務(wù)器斷開(kāi)過(guò)后,才能與新的更好的服務(wù)器進(jìn)行連接,這一過(guò)程會(huì)使用戶明顯的感覺(jué)到網(wǎng)絡(luò)的中斷,并且會(huì)使用戶接受的連續(xù)文件的已接受部分失效,同時(shí)加重網(wǎng)絡(luò)系統(tǒng)的負(fù)載。
[0009]基于TCP遷移的技術(shù),能夠使服務(wù)器根據(jù)客戶的狀態(tài),按照一定的調(diào)度規(guī)則,將客戶方與當(dāng)前服務(wù)器的TCP連接對(duì)除傳輸層以外各層透明的遷移到另外一個(gè)服務(wù)器,將用戶需要的數(shù)據(jù)通過(guò)較近的服務(wù)器發(fā)送,即有效的減少了客戶端的響應(yīng)延遲,又大大降低了整個(gè)網(wǎng)絡(luò)的負(fù)載,從而有效的提聞?wù)麄€(gè)系統(tǒng)的性能。
[0010]如圖1所示,用戶從區(qū)域#11首先連接接入網(wǎng)關(guān)#11,并向⑶N鏡像#1發(fā)起TCP會(huì)話,當(dāng)用戶漫游移出接入網(wǎng)關(guān)#11的區(qū)域,進(jìn)入并連接接入網(wǎng)關(guān)#12,此時(shí)由于接入網(wǎng)關(guān)#11和#12均位于區(qū)域I內(nèi),所以由⑶N鏡像#1提供數(shù)據(jù)傳輸較為快速,因此可以糾正相應(yīng)的數(shù)據(jù)傳輸路徑。
[0011]當(dāng)用戶繼續(xù)漫游并最終連接接入網(wǎng)關(guān)#21時(shí),由于接入網(wǎng)關(guān)#21位于區(qū)域2,所以由⑶N鏡像#2為之提供數(shù)據(jù)傳輸更為優(yōu)化。
[0012]現(xiàn)有的移動(dòng)性管理協(xié)議出于保持會(huì)話連續(xù)性的考慮,會(huì)始終與⑶N鏡像#1聯(lián)系并請(qǐng)求數(shù)據(jù)。若想要在接入網(wǎng)關(guān)#21處從⑶N鏡像#2取得數(shù)據(jù),必須重新發(fā)起連接請(qǐng)求,也即必須重新進(jìn)行全部的“鑒權(quán)、會(huì)話協(xié)商、身份驗(yàn)證、內(nèi)容請(qǐng)求”等操作。
[0013]退一步講,即使現(xiàn)有移動(dòng)性管理協(xié)議可以將數(shù)據(jù)流走向糾正,由于⑶N鏡像#2上起初并沒(méi)有與用戶建立TCP會(huì)話,且傳輸層的會(huì)話建立需要三次握手過(guò)程,所以現(xiàn)有協(xié)議、方法無(wú)法進(jìn)行此類會(huì)話的遷移。
【發(fā)明內(nèi)容】
[0014]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種在多服務(wù)器之間進(jìn)行會(huì)話遷移的方法,由此使得用戶可以于任意時(shí)刻在保證會(huì)話不重新建立的前提下總與拓?fù)渚嚯x最近的鏡像服務(wù)器連接,進(jìn)而獲取數(shù)據(jù)資源。
[0015]本發(fā)明解決上述技術(shù)問(wèn)題所采取的技術(shù)方案如下:
[0016]一種在多服務(wù)器之間進(jìn)行會(huì)話遷移的方法,包括:
[0017]第二鏡像服務(wù)器接收到來(lái)自于第二地址轉(zhuǎn)換設(shè)備傳送的客戶端數(shù)據(jù)包,其中,所述客戶端當(dāng)前由第一鏡像服務(wù)器通過(guò)第一地址轉(zhuǎn)換設(shè)備進(jìn)行數(shù)據(jù)服務(wù);
[0018]當(dāng)需要進(jìn)行會(huì)話遷移的時(shí)候,在不中斷第一鏡像服務(wù)器和客戶端當(dāng)前數(shù)據(jù)服務(wù)的情況下,第二鏡像服務(wù)器通過(guò)第二地址轉(zhuǎn)換設(shè)備向所述客戶端發(fā)送一個(gè)連接遷移請(qǐng)求包;
[0019]判斷是否接收到客戶端返回的響應(yīng)所述連接遷移請(qǐng)求包的確認(rèn)包;
[0020]其中,當(dāng)接收到所述客戶端返回的確認(rèn)包以后,第二鏡像服務(wù)器通知管理節(jié)點(diǎn)關(guān)閉所述客戶端與第一鏡像服務(wù)器之間的連接,并與所述客戶端建立連接以提供后續(xù)的數(shù)據(jù)服務(wù)。
[0021]進(jìn)一步地,優(yōu)選的方法是,當(dāng)未接收到客戶端返回的響應(yīng)所述連接遷移請(qǐng)求包的確認(rèn)包的時(shí)候,第一鏡像服務(wù)器和客戶端繼續(xù)進(jìn)行當(dāng)前的數(shù)據(jù)服務(wù)。
[0022]進(jìn)一步地,優(yōu)選的方法是,所述第二鏡像服務(wù)器接收到來(lái)自于第二地址轉(zhuǎn)換設(shè)備傳送的客戶端數(shù)據(jù)包后,進(jìn)一步包括:
[0023]判斷所述客戶端數(shù)據(jù)包中的五元組信息是否保存在所述第二鏡像服務(wù)器記錄的已有會(huì)話列表中,其中,當(dāng)并未在所述第二鏡像服務(wù)器所記錄的已有會(huì)話列表中,則認(rèn)為所述客戶端需要進(jìn)行數(shù)據(jù)服務(wù)會(huì)話遷移。
[0024]進(jìn)一步地,優(yōu)選的方法是,第二鏡像服務(wù)器接收到來(lái)自于第二地址轉(zhuǎn)換設(shè)備傳送的客戶端數(shù)據(jù)包之前,進(jìn)一步包括:
[0025]管理節(jié)點(diǎn)判斷當(dāng)前會(huì)話是否需要進(jìn)行鏡像服務(wù)器之間的遷移;
[0026]其中,確認(rèn)遷移后,修改接入路由器的路由表,并將客戶端數(shù)據(jù)包發(fā)送給相應(yīng)的第二地址轉(zhuǎn)換設(shè)備;
[0027]所述第二