基于應用類型的數(shù)據(jù)引流方法、裝置及系統(tǒng)的制作方法
【技術領域】
[0001] 本發(fā)明涉及通信技術領域,尤其涉及一種基于應用類型的數(shù)據(jù)引流方法、裝置及 系統(tǒng)。
【背景技術】
[0002] 當前,內(nèi)容分發(fā)網(wǎng)絡(ContentDeliveryNetwork,簡稱CDN)已經(jīng)在互聯(lián)網(wǎng)技術中 得到了廣泛的應用,其基本思路是盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性 的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母?、更穩(wěn)定。內(nèi)容分發(fā)網(wǎng)絡是通過在網(wǎng)絡各處放置CDN服務 器,能夠?qū)崟r地根據(jù)網(wǎng)絡流量和各CDN服務器的連接、負載狀況以及到用戶的距離和響應 時間等綜合信息將用戶的請求重新導向離用戶最近的CDN服務器上;其目的是使用戶可就 近取得所需內(nèi)容,解決互聯(lián)網(wǎng)擁擠的狀況,能夠提高用戶訪問網(wǎng)站等的響應速度。
[0003] 應用引流:又稱應用選路,是一種多鏈路負載的方法,當有多條出口時,可以選擇 某種應用走特定的出口,比如P2P應用走移動線路。
[0004] 在現(xiàn)有技術中,做應用引流的關鍵是做首包識別,就是鏈接的第一包就能把應用 識別出來,并引到對應的鏈路去;如果首包識別不出來,中間的包識別不出來了,就沒法做 引流了,因為出口線路會做源地址轉(zhuǎn)換,如果中間識別后,引導別的線路去,會導致前面的 源地址和后面引流后的源地址不同,會導致連接中斷。
[0005] 但對Web類基于TCP的應用,沒法基于內(nèi)容做首包識別,因為TCP的第一包是SYN 數(shù)據(jù)包,是不帶任何數(shù)據(jù)的。目前傳統(tǒng)的首包識別方法是基于"節(jié)點跟蹤"的方法。"節(jié)點跟 蹤"的意思是,第一次識別出應用時,不做引流,而是記錄一個"節(jié)點",這個"節(jié)點"包括這個 應用的目的IP和目的端口,"節(jié)點跟蹤"的邏輯是,當?shù)诙卧L問這個"節(jié)點"(目的IP+目 的端口)時,就認為這個連接的應用是"節(jié)點"上記錄的應用,并按這個應用來引流。但這 種方法對Web類應用沒法使用,因為同一"節(jié)點"下的web應用,可以根據(jù)里面的內(nèi)容不同, 會有完全不同應用,比如一種應用是web視頻應用,另一種應用是web游戲應用。另外,對 web應用,還應該考慮到CDN的存在,對同一個CDN節(jié)點,會被不同的網(wǎng)站提供服務,所以應 用也不相同。
[0006] 上述內(nèi)容僅用于輔助理解本發(fā)明的技術方案,并不代表承認上述內(nèi)容是現(xiàn)有技 術。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的主要目的在于提供一種基于應用類型的數(shù)據(jù)引流方法,旨在實現(xiàn)對web 類的應用數(shù)據(jù)進行引流,提高引流效率和網(wǎng)絡資源利用率。
[0008] 為實現(xiàn)上述目的,本發(fā)明提供一種基于應用類型的數(shù)據(jù)引流方法,該方法包括:
[0009] 接收客戶端發(fā)送的SYN數(shù)據(jù)包,并將所述接收的SYN數(shù)據(jù)包分別通過至少兩條鏈 路發(fā)送給服務器;
[0010] 接收所述服務器分別通過至少兩條鏈路返回的SYN+ACK數(shù)據(jù)包;并將最快返回的 SYN+ACK數(shù)據(jù)包發(fā)送給所述客戶端,將所述最快返回的SYN+ACK數(shù)據(jù)包對應的鏈路確定為 初步目標鏈路;
[0011] 接收所述客戶端發(fā)送的ACK數(shù)據(jù)包,并將所述接收的ACK數(shù)據(jù)包通過所述初步目 標鏈路發(fā)送給所述服務器;
[0012] 接收所述客戶端發(fā)送的業(yè)務數(shù)據(jù)包,并識別所述業(yè)務數(shù)據(jù)包對應的應用類型;
[0013] 根據(jù)所述業(yè)務數(shù)據(jù)包對應的應用類型和所述初步目標鏈路,確定最終目標鏈路, 將所述業(yè)務數(shù)據(jù)包通過所述確定的最終目標鏈路發(fā)送給所述服務器。
[0014] 可選的,所述根據(jù)所述業(yè)務數(shù)據(jù)包對應的應用類型和所述初步目標鏈路,確定最 終目標鏈路,將所述業(yè)務數(shù)據(jù)包通過所述確定的最終目標鏈路發(fā)送給所述服務器的步驟包 括:
[0015] 根據(jù)所述預設的應用類型與鏈路的映射關系,確定所述業(yè)務數(shù)據(jù)包對應的默認傳 輸鏈路;
[0016] 當判斷出所述業(yè)務數(shù)據(jù)包對應的默認傳輸鏈路與所述初步目標鏈路相同時,將所 述初步目標鏈路確定為最終目標鏈路;
[0017] 將所述業(yè)務數(shù)據(jù)包通過所述最終目標鏈路發(fā)送給所述服務器。
[0018] 可選的,所述根據(jù)所述業(yè)務數(shù)據(jù)包對應的應用類型和所述初步目標鏈路,確定最 終目標鏈路,將所述業(yè)務數(shù)據(jù)包通過所述確定的最終目標鏈路發(fā)送給所述服務器的步驟包 括:
[0019] 根據(jù)所述預設的應用類型與鏈路的映射關系,確定所述業(yè)務數(shù)據(jù)包對應的默認傳 輸鏈路;
[0020] 當判斷出所述業(yè)務數(shù)據(jù)包對應的默認傳輸鏈路與所述初步目標鏈路不相同時,將 所述默認傳輸鏈路確定為最終目標鏈路,并生成一個ACK數(shù)據(jù)包;
[0021] 將所述生成的ACK數(shù)據(jù)包通過所述最終目標鏈路發(fā)送給所述服務器;
[0022] 根據(jù)所述最終目標鏈路的序列號,修改所述業(yè)務數(shù)據(jù)包的確認號,生成新業(yè)務數(shù) 據(jù)包;
[0023] 將所述新業(yè)務數(shù)據(jù)包通過所述最終目標鏈路發(fā)送給所述服務器。
[0024] 可選的,所述根據(jù)所述業(yè)務數(shù)據(jù)包對應的應用類型和所述初步目標鏈路,確定最 終目標鏈路,將所述業(yè)務數(shù)據(jù)包通過確定的最終目標鏈路發(fā)送給所述服務器的步驟之后, 所述方法還包括:
[0025] 接收所述服務器通過所述最終目標鏈路返回的應答數(shù)據(jù)包;
[0026] 在所述最終目標鏈路與所述初步目標鏈路不相同時,根據(jù)所述最終目標鏈路的序 列號、初步目標鏈路的序列號,修改所述應答數(shù)據(jù)包的序列號,生成新應答數(shù)據(jù)包;
[0027] 將所述新應答數(shù)據(jù)包發(fā)送給所述客戶端;
[0028] 或者,
[0029] 在所述最終目標鏈路與所述初步目標鏈路相同時,將所述應答數(shù)據(jù)包發(fā)送給所述 客戶端。
[0030] 可選的,所述識別所述業(yè)務數(shù)據(jù)包對應的應用類型的步驟包括:
[0031] 分析所述業(yè)務數(shù)據(jù)包,得到統(tǒng)一資源定位符URL;
[0032] 根據(jù)所述URL確定所述業(yè)務數(shù)據(jù)包對應的應用類型。
[0033] 此外,為實現(xiàn)上述目的,本發(fā)明還提供一種基于應用類型的數(shù)據(jù)引流裝置,所述裝 置連接在客戶端與服務器之間,所述裝置包括:
[0034] 第一收發(fā)模塊,用于接收客戶端發(fā)送的SYN數(shù)據(jù)包,并將所述接收的SYN數(shù)據(jù)包分 別通過至少兩條鏈路發(fā)送給服務器;
[0035] 第二收發(fā)模塊,用于接收所述服務器分別通過至少兩條鏈路返回的SYN+ACK數(shù)據(jù) 包;并將最快返回的SYN+ACK數(shù)據(jù)包發(fā)送給所述客戶端;
[0036] 第一確定模塊,用于將所述最快返回的SYN+ACK數(shù)據(jù)包對應的鏈路確定為初步目 標鏈路;
[0037] 第三收發(fā)模塊,用于接收客戶端發(fā)送的ACK數(shù)據(jù)包,并將所述接收的ACK數(shù)據(jù)包通 過所述初步目標鏈路發(fā)送給所述服務器;及接收所述客戶端發(fā)送的業(yè)務數(shù)據(jù)包,并識別所 述業(yè)務數(shù)據(jù)包對應的應用類型;
[0038] 第二確定模塊,用于根據(jù)所述業(yè)務數(shù)據(jù)包對應的應用類型和所述初步目標鏈路, 確定最終目標鏈路;第四收發(fā)模塊,用于將所述業(yè)務數(shù)據(jù)包通過所述確定的最終目標鏈路 發(fā)送給所述服務器。
[0039] 可選的,所述第二確定模塊包括:
[0040] 第一確定單元,用于根據(jù)所述預設的應用類型與鏈路的映射關系,確定所述業(yè)務 數(shù)據(jù)包對應的默認傳輸鏈路;
[0041] 第二確定單元,用于當判斷出所述業(yè)務數(shù)據(jù)包對應的默認傳輸鏈路與所述初步目 標鏈路相同時,將所述初步目標鏈路確定為最終目標鏈路。
[0042] 可選的,所述第二確定模塊包括:第三確定單元,用于根據(jù)所述預設的應用類型與 鏈路的映射關系,確定所述業(yè)務數(shù)據(jù)包對應的默認傳輸鏈路;
[0043] 第四確定單元,用于當判斷出所述業(yè)務數(shù)據(jù)包對應的默認傳輸鏈路與所述初步目 標鏈路不相同時,將所述默認傳輸鏈路確定為最終目標鏈路;
[0044] 所述裝置還包括:第一生成模塊、第五收發(fā)模塊、第二生成模塊,
[0045] 所述第一生成模塊,用于當判斷出所述業(yè)務數(shù)據(jù)包對應的默認傳輸鏈路與所述初 步目標鏈路不相同時,生成一個ACK數(shù)據(jù)包;
[0046] 所述第五收發(fā)模塊,用于將所述生成的ACK數(shù)據(jù)包通過所述最終目標鏈路發(fā)送給 所述服務器;
[0047] 所述第二生成模塊,用于根據(jù)所述最終目標鏈路的序列號,修改所述業(yè)務數(shù)據(jù)包 的確認號,生成新業(yè)務數(shù)據(jù)包;
[0048] 所述第四收發(fā)模塊,還用于將所述新業(yè)務數(shù)據(jù)包通過所述最終目標鏈路發(fā)送給所 述服務器。
[0049] 可選的,所述裝置還包括第六收發(fā)模塊、第三生成模塊、第七收發(fā)模塊或者所述裝 置還包括第八收發(fā)模塊,其中:
[0050] 所述第六收發(fā)模塊,用于接收所述服務器通過所述最終目標鏈路返回的應答數(shù)據(jù) 包;
[0051] 所述第三生成模塊,用于在所述最終目標鏈路與所述初步目標鏈路不相同時,根 據(jù)所述最終目標鏈路的序列號、初步目標鏈路的序列號,修改所述應答數(shù)據(jù)包的序列號,生 成新應答數(shù)據(jù)包;
[0052] 所述第七收發(fā)模塊,用于在所述最終目標鏈路與所述初步目標鏈路相同時,將所 述應答數(shù)據(jù)包發(fā)送給所述客戶端;
[0053] 所述第八收發(fā)模塊,用于在所述最終目標鏈路與所述初步目標鏈路不相同時,將 所述新應答數(shù)據(jù)包發(fā)送給所述客戶端。
[0054] 此外,為實現(xiàn)上述目的,本發(fā)明還提供一種基于應用類型的數(shù)據(jù)引流系統(tǒng),所述系