本申請涉及虛擬專用網(wǎng)絡領域,特別是涉及一種基于噴泉碼的隧道可靠傳輸方法及裝置。
背景技術:
虛擬專用網(wǎng)絡(Virtual Private Network,VPN)基于廣泛分布的Internet網(wǎng)絡,便于部署、成本低廉、可擴展性好,在企業(yè)網(wǎng)中得到廣泛應用。隧道是實現(xiàn)VPN的關鍵技術,主要利用隧道協(xié)議來實現(xiàn)。隧道協(xié)議把一種網(wǎng)絡協(xié)議的數(shù)據(jù)幀或數(shù)據(jù)包封裝進另一種協(xié)議的數(shù)據(jù)幀中,在兩主機間建立虛擬專有連接,封裝的數(shù)據(jù)包就像普通的數(shù)據(jù)包一樣進行傳輸,實現(xiàn)了在公共網(wǎng)絡上傳輸私有數(shù)據(jù)。
隨著網(wǎng)絡技術的快速發(fā)展,涌現(xiàn)出了大量的多媒體業(yè)務,這些業(yè)務對數(shù)據(jù)傳輸?shù)膶崟r性和可靠性都有很高的要求?,F(xiàn)有的隧道傳輸方法,由于Internet鏈路、節(jié)點阻塞、防火墻過濾等因素的影響,造成隧道內(nèi)會出現(xiàn)數(shù)據(jù)丟包的情況,此時網(wǎng)絡中會出現(xiàn)大量的ACK確認包和重傳包,增加了網(wǎng)絡負載,加劇了網(wǎng)絡擁塞,嚴重時還會出現(xiàn)網(wǎng)絡癱瘓,導致隧道傳輸可靠性低。例如,如果隧道基于UDP協(xié)議建立,丟包會導致網(wǎng)絡傳輸可靠性降低,用戶的應用數(shù)據(jù)不能正確傳輸,影響用戶體驗;如果隧道基于TCP建立,出現(xiàn)丟包時TCP協(xié)議會重傳數(shù)據(jù)包,以提高數(shù)據(jù)傳輸可靠性,但是網(wǎng)絡中大量的重傳包,加大阻塞程度,降低網(wǎng)絡傳輸效率。目前還沒有應用噴泉碼來提高隧道可靠性的方法。
技術實現(xiàn)要素:
本申請實施例目的在于提供一種基于噴泉碼的隧道可靠傳輸方法及裝置,以提高隧道數(shù)據(jù)傳輸?shù)目煽啃?。具體技術方案如下:
一種基于噴泉碼的隧道可靠傳輸方法,應用于發(fā)送端,所述方法包括:
獲得遵從網(wǎng)絡層協(xié)議的IP包;
將所述IP包中的IP數(shù)據(jù)包緩存至發(fā)送緩存區(qū)域;
當所述發(fā)送緩存區(qū)域滿足預設的數(shù)據(jù)編碼條件時,根據(jù)預設編碼矩陣,對所述發(fā)送緩存區(qū)域內(nèi)已緩存的IP數(shù)據(jù)包進行噴泉編碼處理,獲得編碼包集合;
在所述編碼包集合中每一編碼包的首部添加第一標識和第二標識,其中,所述第一標識用于表示編碼包在所述編碼包集合中的序號,所述第二標識用于表示所述編碼包集合的標識;
對所述編碼包集合中添加標識后的每一編碼包進行封裝處理得到第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包發(fā)送至接收端。
較佳地,所述數(shù)據(jù)編碼條件包括:
所述發(fā)送緩存區(qū)域所緩存的IP數(shù)據(jù)包數(shù)量不小于預設數(shù)量;或者
所述緩存區(qū)域超過預設時間未緩存新的IP數(shù)據(jù)包。
較佳地,所述IP包,包括:IP數(shù)據(jù)包和IP控制包;
在所述獲得遵從網(wǎng)絡協(xié)議的IP包之后,還包括:
對所述IP控制包進行封裝處理,并將封裝處理后得到的第二數(shù)據(jù)包發(fā)送至接收端。
較佳地,本申請實施例還提供一種基于噴泉碼的隧道可靠傳輸方法,應用于接收端,所述方法包括:
接收發(fā)送端發(fā)送的第一數(shù)據(jù)包,并對所述第一數(shù)據(jù)包進行解封裝處理,獲得第一編碼包;
將所述第一編碼包緩存至接收緩存區(qū)域;
基于所述第一編碼包中的第二標識,確定所述第一編碼包所屬的編碼包集合,其中,所述第二標識為用于表示編碼包所屬的編碼包集合的標識;
當所述編碼包集合中編碼包數(shù)目不小于預設數(shù)目時,根據(jù)預設編碼矩陣、所述編碼包集合的各個編碼包中的第一標識以及所述編碼包集合的各個編碼包中的第二標識,對所述編碼包集合進行解碼處理,獲得IP數(shù)據(jù)包,其中,所述第一標識用于表示編碼包在所屬編碼包集合中的序號。
較佳地,所述方法還包括:
接收發(fā)送端發(fā)送的第二數(shù)據(jù)包;
對所述第二數(shù)據(jù)包進行解封裝處理,獲得IP控制包。
另一方面,本申請實施例還提供一種基于噴泉碼的隧道可靠傳輸裝置,應用于發(fā)送端,所述裝置包括:
獲得模塊,用于獲得遵從網(wǎng)絡層協(xié)議的IP包;
發(fā)送緩存模塊,用于將所述IP包中的IP數(shù)據(jù)包緩存至發(fā)送緩存區(qū)域;
編碼模塊,用于當所述發(fā)送緩存區(qū)域滿足預設的數(shù)據(jù)編碼條件時,根據(jù)預設編碼矩陣,對所述發(fā)送緩存區(qū)域內(nèi)已緩存的IP數(shù)據(jù)包進行噴泉編碼處理,獲得編碼包集合;
標記模塊,用于在所述編碼包集合中每一編碼包的首部添加第一標識和第二標識,其中,所述第一標識用于表示編碼包在所述編碼包集合中的序號,所述第二標識用于表示所述編碼包集合的標識;
第一發(fā)送模塊,用于對所述編碼包集合中添加標識后的每一編碼包進行封裝處理得到第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包發(fā)送至接收端。
較佳地,所述數(shù)據(jù)編碼條件包括:
所述發(fā)送緩存區(qū)域所緩存的IP數(shù)據(jù)包數(shù)量不小于預設數(shù)量;或者
所述緩存區(qū)域超過預設時間未緩存新的IP數(shù)據(jù)包。
較佳地,所述IP包,包括:IP數(shù)據(jù)包和IP控制包;
在獲得模塊之后,還包括:
第二發(fā)送模塊,用于對所述IP控制包進行封裝處理,并將封裝處理后得到的第二數(shù)據(jù)包發(fā)送至接收端。
另一方面,本申請實施例還提供一種基于噴泉碼的隧道可靠傳輸裝置,應用于接收端,所述裝置包括:
第一接收模塊,用于接收發(fā)送端發(fā)送的第一數(shù)據(jù)包,并對所述第一數(shù)據(jù)包進行解封裝處理,獲得第一編碼包;
接收緩存模塊,用于將所述第一編碼包緩存至接收緩存區(qū)域;
確定模塊,用于基于所述第一編碼包中的第二標識,確定所述第一編碼包所屬的編碼包集合,其中,所述第二標識為用于表示編碼包所屬的編碼包集合的標識;
解碼模塊,用于當所述編碼包集合中編碼包數(shù)目不小于預設數(shù)目時,根據(jù)預設編碼矩陣、所述編碼包集合的各個編碼包中的第一標識以及所述編碼包集合的各個編碼包中的第二標識,對所述編碼包集合進行解碼處理,獲得IP數(shù)據(jù)包,其中,所述第一標識用于表示編碼包在所屬編碼包集合中的序號。
較佳地,所述裝置還包括:
第二接收模塊,用于接收發(fā)送端發(fā)送的第二數(shù)據(jù)包,并對所述第二數(shù)據(jù)包進行解封裝處理,獲得IP控制包。
本申請實施例提供的一種基于噴泉碼的隧道可靠傳輸方法及裝置,發(fā)送端將待發(fā)送的遵從網(wǎng)絡層協(xié)議的IP數(shù)據(jù)包緩存至發(fā)送緩存區(qū)域,在發(fā)送緩存區(qū)域滿足預設的噴泉編碼條件的情況下,對上述發(fā)送緩存區(qū)域內(nèi)的IP數(shù)據(jù)包進行噴泉編碼、封裝處理,并將進行上述處理后的數(shù)據(jù)包發(fā)送至接收端。由于數(shù)據(jù)包經(jīng)過噴泉編碼后,接收端只要接收到一定數(shù)量的編碼包即可恢復出所有的數(shù)據(jù)包,所以,在網(wǎng)絡傳輸丟包率高時,接收端只要接收到了一定數(shù)量的數(shù)據(jù)包,就可以通過對所接收的數(shù)據(jù)包進行解封裝、譯碼處理,恢復出發(fā)送端發(fā)送的所有數(shù)據(jù)包,而無需發(fā)送端再次發(fā)送丟失的數(shù)據(jù)包。因此,應用本申請實施例提供的方案,在存在網(wǎng)絡丟包的情況下,由于無需重傳丟失的數(shù)據(jù)包,也就不會增大網(wǎng)絡的阻塞程度,進而也就不會進一步增加丟包率,可見,能夠提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法的流程圖;
圖2為本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法的另一流程圖;
圖3為本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸裝置的結(jié)構(gòu)示意圖;
圖4為本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸裝置的另一結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
本申請實施例提供了一種基于噴泉碼的隧道可靠傳輸方法及裝置,以解決數(shù)據(jù)傳輸時可靠性低的問題。
下面首先對本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法進行介紹。
需要說明的是,本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法應用于隧道的發(fā)送端服務器。另外,在執(zhí)行本數(shù)據(jù)發(fā)送方法之前,發(fā)送端和接收端之間已經(jīng)通過VPN服務器驗證,建立網(wǎng)絡隧道連接。
如圖1所示,本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法,可以包括如下步驟:
S101:獲得遵從網(wǎng)絡層協(xié)議的IP包;
具體的,所述IP(Internet Protocol,網(wǎng)絡互連協(xié)議)數(shù)據(jù)包為發(fā)送端服務器將待發(fā)數(shù)據(jù)包去掉MAC(Media Access Control,媒體訪問控制)源目的地址得來。
需要說明的是,根據(jù)具體的、隧道所使用的協(xié)議,上述獲得的IP包可以為普通的遵從網(wǎng)絡層協(xié)議的數(shù)據(jù)包,同時也可以為加密處理后的、遵從網(wǎng)絡層協(xié)議的數(shù)據(jù)包,其中,上述加密處理為現(xiàn)有技術,在此不作贅述。
S102:將所述IP包中的IP數(shù)據(jù)包緩存至發(fā)送緩存區(qū)域;
由于后續(xù)步驟需要對數(shù)據(jù)包進行噴泉編碼,而噴泉編碼的編碼要求為:存在多組待編碼的數(shù)據(jù)(此處為多個IP數(shù)據(jù)包)。因此,本申請實施例提供發(fā)送緩存區(qū)域,目的在于存儲每一次獲取的IP數(shù)據(jù)包,以達到擁有多個IP數(shù)據(jù)包(即噴泉編碼要求)的目的,以便進行下一步驟。
S103:當所述發(fā)送緩存區(qū)域滿足預設的數(shù)據(jù)編碼條件時,根據(jù)預設編碼矩陣,對所述發(fā)送緩存區(qū)域內(nèi)已緩存的IP數(shù)據(jù)包進行噴泉編碼處理,獲得編碼包集合;
上述預設編碼矩陣可以是由工程師根據(jù)鏈路情況預先設定的,在一種實現(xiàn)方式中,所述編碼矩陣可以為LT(Luby Transform Code,盧比變換碼),當然所述編碼矩陣還可以是其他噴泉碼矩陣。
具體的,噴泉碼是一種刪除編碼,與物理層信道編碼不同,它以符號(比特組)為編碼單位。發(fā)送端按照預設的噴泉碼編碼矩陣對數(shù)據(jù)進行編碼,接收端只要接收到了足夠多的數(shù)據(jù)包(即本申請實施例的第一數(shù)據(jù)包)即可高概率成功恢復出待發(fā)送數(shù)據(jù)包。
在本申請的一種實現(xiàn)方式中,噴泉碼的具體編碼方式可以為:將所述緩存區(qū)域內(nèi)的至少兩個IP數(shù)據(jù)包進行異或運算,得到一個編碼包;接著多次重復上述步驟以得到多個編碼包。需要強調(diào)的是,為保證編碼后數(shù)據(jù)能夠充分體現(xiàn)IP數(shù)據(jù)包的內(nèi)容,所述編碼包數(shù)目不少于所述IP數(shù)據(jù)包的數(shù)目。
進一步需要說明的是,所述編碼包集合,由所述發(fā)送緩存區(qū)域內(nèi)所有IP數(shù)據(jù)包編碼而得。例如,當前發(fā)送緩存區(qū)域中包含5個IP數(shù)據(jù)包,那么在一種實現(xiàn)方式中,發(fā)送端可以將上述5個IP數(shù)據(jù)包根據(jù)預設的編碼矩陣編為15個編碼包,進而獲得15個編碼包。則所述編碼包集合包含15個編碼包。
具體的,預設的數(shù)據(jù)編碼條件可以為所述發(fā)送緩存區(qū)域所緩存的IP數(shù)據(jù)包數(shù)量不小于預設數(shù)量。緩存預設數(shù)量的IP數(shù)據(jù)包的目的是達到噴泉編碼的要求,即存在多組待編碼的數(shù)據(jù)(此處為多個IP數(shù)據(jù)包)。
進一步的,由于待發(fā)送IP數(shù)據(jù)包本身數(shù)目有限或者發(fā)送中斷等因素,在最后一次緩存IP數(shù)據(jù)包時,有可能出現(xiàn)待發(fā)送IP包數(shù)目小于預設數(shù)量的情況,相應地緩存區(qū)域所緩存的IP數(shù)據(jù)包數(shù)目同樣無法達到預設數(shù)量。因此,預設的數(shù)據(jù)編碼條件還可以為:所述緩存區(qū)域超過預設時間未緩存新的IP數(shù)據(jù)包。也就是說,當緩存區(qū)域超過預設時間未緩存新的IP數(shù)據(jù)包時,即使當前緩存區(qū)域的IP數(shù)據(jù)包數(shù)目未達到預設數(shù)量,同樣執(zhí)行編碼操作。
需要說明的是,上述預設數(shù)量可以是根據(jù)待發(fā)送數(shù)據(jù)包數(shù)量所確定的任一數(shù)值,也可以是根據(jù)實際傳輸需求設定的任一數(shù)值,上述預設時間可以由實際的鏈路的暢通情況決定,具體決定方法為現(xiàn)有技術,在此不作贅述。
S104:在所述編碼包集合中每一編碼包的首部添加第一標識和第二標識,其中,所述第一標識用于表示編碼包在所述編碼包集合中的序號,所述第二標識用于表示所述編碼包集合的標識;
具體的,發(fā)送端執(zhí)行完一次噴泉編碼操作所得到的編碼包屬于同一編碼包集合。接收端可以通過上述第二標識識別所接收的數(shù)據(jù)包屬于哪一編碼包集合,接著通過上述第一標識識別所接收到的數(shù)據(jù)包在所述編碼包集合的順序。
具體的,在一種實現(xiàn)方式中,假設當前編碼包集合中有15個編碼包,那么首先在第1個編碼包的首部添加第一標識,即表明此編碼包在所述編碼包集合中的序號的標識,接著添加第二標識,第二標識用于區(qū)別當前編碼包集合與其他編碼包集合;接著在第2個編碼包的首部執(zhí)行同樣操作,以此類推,直至當前編碼包集合中所有編碼包被添加第一標識和第二標識。
S105:對所述編碼包集合中添加標識后的每一編碼包進行封裝處理得到第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包發(fā)送至接收端。
具體的,首先對第1個填加標識后的編碼包進行封裝處理,得到第一數(shù)據(jù)包,并發(fā)送至接收端;接著對第2個添加標識后的編碼包進行封裝處理,得到新的第一數(shù)據(jù)包,發(fā)送至接收端;以此類推,直至處理完所有添加標識后的編碼包。
由于IP包包括IP數(shù)據(jù)包以及IP控制包,IP數(shù)據(jù)包為用于承載用戶數(shù)據(jù)的IP包,IP控制包為用于維持隧道連接的IP包。鑒于此,為了保證發(fā)送端所發(fā)送的第一數(shù)據(jù)包能夠到達接收端,本申請實施例還包括:
S106:在所述獲得遵從網(wǎng)絡層協(xié)議的IP包之后,對所述IP控制包進行封裝處理,并將封裝處理后得到的第二數(shù)據(jù)包發(fā)送至接收端。
具體的,發(fā)送端將所述IP控制包添加UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)頭、IP頭,以達到封裝IP控制包的目的,其中,由于加TCP封裝會導致隧道層面的二次重傳,所以此處可選使用UDP封裝。
需要說明的是,本申請并不限定S106和S102-S105的執(zhí)行順序,例如,S106和S102-S105可以是并行的也可以是順序執(zhí)行。也就是說,本申請實施例可以首先對IP數(shù)據(jù)包進行處理,然后對IP控制包進行處理;或者首先對IP控制包進行處理,然后對IP數(shù)據(jù)包進行處理。
本申請實施例提供的一種基于噴泉碼的隧道可靠傳輸方法,發(fā)送端將待發(fā)送的遵從網(wǎng)絡層協(xié)議的IP數(shù)據(jù)包緩存至發(fā)送緩存區(qū)域,在發(fā)送緩存區(qū)域滿足預設數(shù)據(jù)編碼條件的情況下,對上述緩存區(qū)域的IP數(shù)據(jù)包進行噴泉編碼、封裝處理,并將進行上述處理后的數(shù)據(jù)包發(fā)送至接收端。由于數(shù)據(jù)包經(jīng)過噴泉編碼后,接收端只要接收到一定數(shù)量的第一數(shù)據(jù)包即可恢復出所有IP數(shù)據(jù)包,所以,在網(wǎng)絡傳輸丟包率高時,接收端只要接收到了一定數(shù)量的數(shù)據(jù)包,就可以通過對所接收的數(shù)據(jù)包進行解封裝、譯碼處理,恢復出發(fā)送端所發(fā)送的所有數(shù)據(jù)包,而無需發(fā)送端再次發(fā)送丟失的數(shù)據(jù)包。因此,應用本申請實施例提供的方案,在存在網(wǎng)絡丟包的情況下,由于無需重傳丟失的數(shù)據(jù)包,也就不會增大網(wǎng)絡的阻塞程度,進而也就不會進一步增大丟包率,可見,能夠提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
更進一步的,為了完成數(shù)據(jù)的完整傳輸,本申請實施例還提供了一種基于噴泉碼的隧道可靠傳輸方法,應用于接收端,是上述數(shù)據(jù)發(fā)送方法的逆過程。下面,對本申請實施例所提供的,應用于接收端的一種基于噴泉碼的隧道可靠傳輸方法進行詳細介紹。
如圖2所示,本申請實施例所提供的應用于接收端的一種基于噴泉碼的隧道可靠傳輸方法,可以包括如下步驟:
S201:接收發(fā)送端發(fā)送的第一數(shù)據(jù)包,并對所述第一數(shù)據(jù)包進行解封裝處理,獲得第一編碼包;
由于發(fā)送端發(fā)送的數(shù)據(jù)包為進行封裝處理后的數(shù)據(jù)包,所以,接收端接收到第一數(shù)據(jù)包后,首先需對第一數(shù)據(jù)包進行解封裝處理。
S202:將所述第一編碼包緩存至接收緩存區(qū)域;
具體的,由于接收端需要接收一定數(shù)量的、同一編碼包集合的編碼包,才進行解碼處理,所以本申請實施例設定接收緩存區(qū)域用來存儲接收到的第一編碼包。其中,第一編碼包為接收端對所接收的第一數(shù)據(jù)包進行解封處理所得。
S203:基于所述第一編碼包中的第二標識,確定所述第一編碼包所屬的編碼包集合,其中,所述第二標識為用于表示編碼包所屬的編碼包集合的標識;
需要說明的是,在一種實現(xiàn)方式中,發(fā)送端將不同編碼包集合中的編碼包標記不同第二標識,將相同編碼包集合中的編碼包標記相同第二標識,具體的,同一編碼包集合的編碼包為發(fā)送端在同一次編碼時所得。
相應的,接收端在識別所述第一編碼包中的第二標識時,可以判斷所述第一編碼包由哪次編碼所得,即判斷所述第一編碼包所述的編碼包集合,進而為解碼做準備。
S204:當所述編碼包集合中編碼包數(shù)目不小于預設數(shù)目時,根據(jù)預設編碼矩陣、所述編碼包集合的各個編碼包中的第一標識以及所述編碼包集合的各個編碼包中的第二標識,對所述編碼包集合進行解碼處理,獲得IP數(shù)據(jù)包,其中,所述第一標識用于表示編碼包在所屬編碼包集合中的序號;
具體的,當所述編碼包集合中的編碼包數(shù)目不小于預設數(shù)目時,即說明編碼包數(shù)目達到解碼要求,進而根據(jù)所述編碼包內(nèi)的第二標識,對同一編碼包集合內(nèi)的編碼包進行解碼。
所述第二標識為發(fā)送端所添加的,用于表示編碼包在編碼包集合內(nèi)的序號,即在本次編碼內(nèi)當前編碼包于第幾個產(chǎn)生。具體的,在一種實現(xiàn)方式中,假設當前編碼包在本次編碼中第一個產(chǎn)生,則當前編碼包的第一標識可以為1。相應的,在接收端所接收的上述編碼包,同樣帶有標記為1的第一標識,進而接收端可以判斷上述編碼包在編碼包集合中(即一次編碼時)的順序,進而解碼。
需要說明的是,所述編碼矩陣可以為噴泉碼中的任意一種。
較佳地,當發(fā)送和接收雙方選擇有加密的隧道協(xié)議建立隧道連接時,發(fā)送端數(shù)據(jù)需要經(jīng)過加密處理,相應于發(fā)送端的傳輸方法,接收端的傳輸方法增加相同的解密機制。隧道協(xié)議為現(xiàn)有技術,在此不作贅述。
可以理解的是,當恢復出發(fā)送端所發(fā)送的原始數(shù)據(jù)時,為了防止數(shù)據(jù)解錯而不符合協(xié)議規(guī)定,而使得接收端處理器處理錯誤,因此本申請實施例對上述IP數(shù)據(jù)包進行驗證處理,進而驗證數(shù)據(jù)的合法性,驗證過程為現(xiàn)有技術,在此不做贅述。
由于數(shù)據(jù)鏈路幀包含IP數(shù)據(jù)包以及IP控制包,IP控制包用于維持隧道連接。為了保證所發(fā)送的第一數(shù)據(jù)包能夠成功到達接收端,故發(fā)送端發(fā)送上述第二數(shù)據(jù)包。鑒于此,為了保證發(fā)送端、接收端的隧道連接,進而使接收端接收第一數(shù)據(jù)包,本申請實施例還包括:
S205:接收發(fā)送端發(fā)送的第二數(shù)據(jù)包;
具體的,所述第二數(shù)據(jù)包為發(fā)送端所發(fā)送的,經(jīng)過發(fā)送端封裝處理后的IP控制包。
需要說明的是,發(fā)送端待發(fā)送的IP包包括IP數(shù)據(jù)包和IP控制包,進而發(fā)送端分別對IP數(shù)據(jù)包和IP控制包進行處理,最后得到發(fā)送端發(fā)送的數(shù)據(jù)。因此,相應地,接收端除了會收到S201中的第一數(shù)據(jù)包,同樣會收到發(fā)送端處理IP控制包后所得并發(fā)送的第二數(shù)據(jù)包。
S206:對所述控制包進行解封裝處理,獲得IP控制包。
較佳地,為保證IP控制包能夠正常被讀取,在獲得IP控制包后,驗證上述IP控制包的合法性,驗證過程為現(xiàn)有技術,在此不做贅述。
需要說明的是,S201-S204與S205-S206之間不存在先后順序。也就是說,接收端可以先接收所述第一數(shù)據(jù)包,然后接收所述第二數(shù)據(jù)包;還可以是接收端先接收第二數(shù)據(jù)包,然后接收第一數(shù)據(jù)包。上述兩種情況都是合理的,根據(jù)實際接收到的順序做出相應的處理。
本申請實施例提供的一種基于噴泉碼的隧道可靠傳輸,接收端接收發(fā)送端發(fā)送的第一數(shù)據(jù)包,上述第一數(shù)據(jù)包經(jīng)過噴泉編碼,接著緩存第一數(shù)據(jù)包并識別第一數(shù)據(jù)包所屬的編碼包集合,當同一編碼包集合的第一數(shù)據(jù)包達到預設數(shù)量時,對編碼包集合進行解碼處理,獲得數(shù)據(jù)包集合,進而獲得發(fā)送端所發(fā)送的IP數(shù)據(jù)包。由于數(shù)據(jù)包經(jīng)過噴泉編碼后,接收端只要接收到一定數(shù)量的第一數(shù)據(jù)包即可恢復出所有的數(shù)據(jù)包,所以,在網(wǎng)絡傳輸丟包率高時,接收端只要接收到了一定數(shù)量的數(shù)據(jù)包,就可以通過對所接收的數(shù)據(jù)包進行解封裝、譯碼處理,恢復出發(fā)送端所發(fā)送的所有數(shù)據(jù)包,而無需發(fā)送端再次發(fā)送丟失的數(shù)據(jù)包。因此,應用本申請實施例提供的方案,在存在網(wǎng)絡丟包的情況下,由于無需重傳丟失的數(shù)據(jù)包,也就不會增大網(wǎng)絡的阻塞程度,進而也就不會進一步增大丟包率,可見,能夠提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
為了更清楚解釋本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法,下面結(jié)合一種應用場景進行介紹。
執(zhí)行本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法的發(fā)送端、接收端VPN服務器可以為云主機。具體的,在發(fā)送端云主機和接收端云主機間建立網(wǎng)絡層隧道連接,接著發(fā)送端、接收端分別執(zhí)行本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法,完成數(shù)據(jù)傳輸。由于云主機之間的丟包率高,傳輸可靠性低,而現(xiàn)有的利用TCP來提高可靠性的方法又會導致在大量丟包時網(wǎng)絡傳輸效率低。在此場景下應用本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法,可以高程度提高隧道可靠性。
進一步的,由于隧道服務提供商無法對應用層、物理層等數(shù)據(jù)進行更改,因此應用于網(wǎng)絡層的本申請實施例所提供的一種基于噴泉碼的隧道可靠傳輸方法可以方便應用于隧道服務器中,無需對客戶終端或者物理層進行改動。
相應于上述方法,如圖3所示,本申請實施例還提供了一種基于噴泉碼的隧道可靠傳輸裝置,詳細介紹如下:
一種數(shù)據(jù)發(fā)送裝置,應用于發(fā)送端,所述裝置包括:
獲得模塊310,用于獲得遵從網(wǎng)絡層協(xié)議的IP包;
發(fā)送緩存模塊320,用于將所述IP包中的IP數(shù)據(jù)包緩存至發(fā)送緩存區(qū)域;
編碼模塊330,用于當所述發(fā)送緩存區(qū)域滿足預設的數(shù)據(jù)編碼條件時,根據(jù)預設編碼矩陣,對所述發(fā)送緩存區(qū)域內(nèi)已緩存的IP數(shù)據(jù)包進行噴泉編碼處理,獲得編碼包集合;
標記模塊340,用于在所述編碼包集合中每一編碼包的首部添加第一標識和第二標識,其中,所述第一標識用于表示編碼包在所述編碼包集合中的序號,所述第二標識用于表示所述編碼包集合的標識;
第一發(fā)送模塊350,用于對所述編碼包集合中添加標識后的每一編碼包進行封裝處理得到第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包發(fā)送至接收端。
較佳地,所述數(shù)據(jù)發(fā)送條件包括:
所述發(fā)送緩存區(qū)域所緩存的IP數(shù)據(jù)包數(shù)量不小于預設數(shù)量;或者
所述緩存區(qū)域超過預設時間未緩存新的IP數(shù)據(jù)包。
較佳地,所述IP包,包括:IP數(shù)據(jù)包和IP控制包;
獲得模塊之后,還包括:
第二發(fā)送模塊,用于對所述IP控制包進行封裝處理,并將封裝處理后得到的第二數(shù)據(jù)包發(fā)送至接收端。
本申請實施例提供的一種基于噴泉碼的隧道可靠傳輸裝置,應用于發(fā)送端,發(fā)送端將遵從網(wǎng)絡層協(xié)議的IP包中的IP數(shù)據(jù)包緩存至發(fā)送緩存區(qū)域,在發(fā)送緩存區(qū)域滿足預設數(shù)據(jù)編碼條件的情況下,對上述緩存區(qū)域的IP數(shù)據(jù)包進行噴泉編碼、封裝處理,并將進行上述處理后的數(shù)據(jù)包發(fā)送至接收端。由于數(shù)據(jù)包經(jīng)過噴泉編碼后,接收端只要接收到一定數(shù)量的編碼包即可恢復出所有的數(shù)據(jù)包,所以,在網(wǎng)絡傳輸丟包率高時,接收端只要接收到了一定數(shù)量的數(shù)據(jù)包,就可以通過對所接收的數(shù)據(jù)包進行解封裝、譯碼處理,恢復出發(fā)送端所發(fā)送的所有數(shù)據(jù)包,而無需發(fā)送端再次發(fā)送丟失的數(shù)據(jù)包。因此,應用本申請實施例提供的方案,在存在網(wǎng)絡丟包的情況下,由于無需重傳丟失的數(shù)據(jù)包,也就不會增大網(wǎng)絡的阻塞程度,進而也就不會進一步增大丟包率,可見,能夠提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
另一方面,如圖4所示,本申請實施例還提供另一種基于噴泉碼的隧道可靠傳輸裝置,應用于接收端,所述裝置包括:
第一接收模塊410,用于接收發(fā)送端發(fā)送的第一數(shù)據(jù)包,并對所述第一數(shù)據(jù)包進行解封裝處理,獲得第一編碼包;
接收緩存模塊420,用于將所述第一編碼包緩存至接收緩存區(qū)域;
確定模塊430,用于基于所述第一編碼包中的第二標識,確定所述第一編碼包所屬的編碼包集合,其中,所述第二標識為用于表示編碼包所屬的編碼包集合的標識;
解碼模塊440,用于當所述編碼包集合中編碼包數(shù)目不小于預設數(shù)目時,根據(jù)預設編碼矩陣、所述編碼包集合的各個編碼包中的第一標識,對所述編碼包集合的各個編碼包進行解碼處理,獲得IP數(shù)據(jù)包,其中,所述第一標識用于表示編碼包在所屬編碼包集合中的序號。
較佳地,所述裝置還包括:
第二接收模塊,用于接收發(fā)送端發(fā)送的第二數(shù)據(jù)包,并對第二數(shù)據(jù)包進行解封裝處理,獲得IP控制包;
本申請實施例提供的一種基于噴泉碼的隧道可靠傳輸裝置,應用于接收端,接收端接收發(fā)送端發(fā)送的第一數(shù)據(jù)包,上述第一數(shù)據(jù)包經(jīng)過噴泉編碼,接著緩存第一數(shù)據(jù)包并識別第一數(shù)據(jù)包所屬的編碼包集合,當同一編碼包集合的第一數(shù)據(jù)包達到預設數(shù)量時,對編碼包集合進行解碼處理,獲得數(shù)據(jù)包集合,并對數(shù)據(jù)包集合進行解封裝、譯碼處理獲得發(fā)送端所發(fā)送的IP數(shù)據(jù)包。由于數(shù)據(jù)包經(jīng)過噴泉編碼后,接收端只要接收到一定數(shù)量的第二數(shù)據(jù)包即可恢復出所有IP數(shù)據(jù)包,所以,在網(wǎng)絡傳輸丟包率高時,接收端只要接收到了一定數(shù)量的數(shù)據(jù)包,就可以通過對所接收的數(shù)據(jù)包進行解封裝、譯碼處理,恢復出發(fā)送端所發(fā)送的所有數(shù)據(jù)包,而無需發(fā)送端再次發(fā)送丟失的數(shù)據(jù)包。因此,應用本申請實施例提供的方案,在存在網(wǎng)絡丟包的情況下,由于無需重傳丟失的數(shù)據(jù)包,也就不會增大網(wǎng)絡的阻塞程度,進而也就不會進一步增大丟包率,可見,能夠提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本申請的較佳實施例而已,并非用于限定本申請的保護范圍。凡在本申請的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本申請的保護范圍內(nèi)。