本技術(shù)涉及數(shù)據(jù)傳輸,尤其涉及一種基于quic的多路徑數(shù)據(jù)傳輸方法、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、基于用戶數(shù)據(jù)報(bào)協(xié)議(udp,user?datagram?protocol)的quic協(xié)議,是一種0往返時(shí)延(rtt,round-trip?time)快速握手、解決頭端阻塞、運(yùn)行在用戶態(tài)的安全、高效傳輸協(xié)議。其中,quic中具有多個(gè)空間,每個(gè)空間的數(shù)據(jù)包都會(huì)被分配一個(gè)單調(diào)遞增的序號(hào)?;趒uic協(xié)議的發(fā)送端和接收端,會(huì)根據(jù)數(shù)據(jù)包的序號(hào),確定是否存在丟包的情況,并對(duì)丟失的數(shù)據(jù)包進(jìn)行重傳,從而確保數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
2、在相關(guān)技術(shù)中,為實(shí)現(xiàn)數(shù)據(jù)的多路徑可靠傳輸,quic協(xié)議可以為不同的路徑,分配單獨(dú)的數(shù)據(jù)包序號(hào)空間,每個(gè)數(shù)據(jù)包序號(hào)空間中的數(shù)據(jù)包序號(hào)單獨(dú)計(jì)算,并在根據(jù)數(shù)據(jù)包序號(hào)判斷數(shù)據(jù)包丟包時(shí),執(zhí)行數(shù)據(jù)包的重傳,以及該路徑擁塞控制算法指標(biāo)的反饋,包括rtt、丟包率、擁塞窗口、發(fā)送速度等指標(biāo)的影響。在這種情況下,數(shù)據(jù)傳輸過(guò)程中需要對(duì)每個(gè)數(shù)據(jù)包序號(hào)空間進(jìn)行單獨(dú)管理,并通過(guò)引進(jìn)擴(kuò)展的特殊確認(rèn)幀,單獨(dú)反饋該路徑的數(shù)據(jù)發(fā)送情況。這會(huì)使多路徑數(shù)據(jù)傳輸?shù)鸟詈隙容^高,而導(dǎo)致數(shù)據(jù)重傳的效率較低。
3、上述內(nèi)容僅用于輔助理解本技術(shù)的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的主要目的在于提供一種基于quic的多路徑數(shù)據(jù)傳輸方法、設(shè)備及存儲(chǔ)介質(zhì),旨在解決基于quic的多路徑數(shù)據(jù)傳輸?shù)鸟詈隙容^高,而導(dǎo)致數(shù)據(jù)重傳和路徑擁塞控制的反饋的效率較低的技術(shù)問(wèn)題。
2、為實(shí)現(xiàn)上述目的,本技術(shù)提供一種基于quic的多路徑數(shù)據(jù)傳輸方法,應(yīng)用于發(fā)送端,所述的方法包括以下步驟:
3、將待傳輸數(shù)據(jù)封裝為至少一個(gè)數(shù)據(jù)幀,并于連接級(jí)包序號(hào)空間中,為所述數(shù)據(jù)幀分配單調(diào)遞增的數(shù)據(jù)包序號(hào);
4、在數(shù)據(jù)傳輸路徑中選取目標(biāo)傳輸路徑,根據(jù)所述數(shù)據(jù)幀、所述數(shù)據(jù)包序號(hào)和/或所述目標(biāo)傳輸路徑,生成數(shù)據(jù)包;
5、通過(guò)所述目標(biāo)傳輸路徑,將所述數(shù)據(jù)包發(fā)送至接收端,并記錄所述目標(biāo)傳輸路徑的數(shù)據(jù)包發(fā)送記錄;
6、接收所述接收端反饋的確認(rèn)幀,并根據(jù)所述確認(rèn)幀和所述數(shù)據(jù)包發(fā)送記錄,確定待重傳數(shù)據(jù)包。
7、在一實(shí)施例中,所述接收所述接收端反饋的確認(rèn)幀,并根據(jù)所述確認(rèn)幀和所述數(shù)據(jù)包發(fā)送記錄,確定待重傳數(shù)據(jù)包的步驟包括:
8、接收所述確認(rèn)幀,并獲取所述確認(rèn)幀中所述目標(biāo)傳輸路徑的接收序號(hào)序列;
9、獲取所述數(shù)據(jù)包發(fā)送記錄中所述數(shù)據(jù)包的發(fā)送序號(hào)序列;
10、在丟包判定范圍中,對(duì)比所述發(fā)送序號(hào)序列與所述接收序號(hào)序列,根據(jù)對(duì)比結(jié)果確定所述待重傳數(shù)據(jù)包。
11、在一實(shí)施例中,所述在丟包判定范圍中,對(duì)比所述發(fā)送序號(hào)序列與所述接收序號(hào)序列,根據(jù)對(duì)比結(jié)果確定所述待重傳數(shù)據(jù)包的步驟包括:
12、基于預(yù)設(shè)的重傳閾值參數(shù)和所述發(fā)送序號(hào)序列中的最大包序號(hào),確定所述發(fā)送序號(hào)序列在所述丟包判定范圍的目標(biāo)序號(hào)序列;
13、通過(guò)對(duì)比所述目標(biāo)序號(hào)序列和所述接收序號(hào)序列,確定所述接收序號(hào)序列于所述目標(biāo)序號(hào)序列的缺失數(shù)據(jù)包序號(hào);
14、根據(jù)所述缺失數(shù)據(jù)包序號(hào),確定所述待重傳數(shù)據(jù)包;
15、獲取所述待重傳數(shù)據(jù)包中的待重傳數(shù)據(jù),并將所述待重傳數(shù)據(jù)增加至所述待傳輸數(shù)據(jù)。
16、在一實(shí)施例中,所述接收所述確認(rèn)幀,并獲取所述確認(rèn)幀中所述目標(biāo)傳輸路徑的接收序號(hào)序列的步驟之后,還包括:
17、于所述確認(rèn)幀中,確定所述接收序號(hào)序列的最大包序號(hào);
18、在所述數(shù)據(jù)包發(fā)送記錄中,確定所述最大包序號(hào)的目標(biāo)數(shù)據(jù)包的發(fā)送時(shí)間;
19、根據(jù)所述發(fā)送時(shí)間和所述確認(rèn)幀的接收時(shí)間,計(jì)算所述目標(biāo)數(shù)據(jù)包的往返時(shí)延。
20、在一實(shí)施例中,所述根據(jù)所述發(fā)送時(shí)間和所述確認(rèn)幀的接收時(shí)間,計(jì)算所述目標(biāo)數(shù)據(jù)包的往返時(shí)延的步驟之后,還包括:
21、根據(jù)所述往返時(shí)延、所述接收序號(hào)序列和所述待重傳數(shù)據(jù)包,確定所述目標(biāo)傳輸路徑的堵塞程度;
22、根據(jù)所述堵塞程度,計(jì)算并調(diào)整所述目標(biāo)傳輸路徑的所述數(shù)據(jù)包的發(fā)送速度和擁塞窗口;
23、基于所述發(fā)送速度和所述擁塞窗口,控制所述目標(biāo)傳輸路徑執(zhí)行數(shù)據(jù)包發(fā)送動(dòng)作。
24、在一實(shí)施例中,所述接收所述確認(rèn)幀,并獲取所述確認(rèn)幀中所述目標(biāo)傳輸路徑的接收序號(hào)序列的步驟包括:
25、在接收到所述接收端反饋的所述確認(rèn)幀后,讀取所述確認(rèn)幀中的所述接收確認(rèn)信息;
26、根據(jù)所述接收確認(rèn)信息,獲取目標(biāo)數(shù)據(jù)包序號(hào);
27、基于序號(hào)大小對(duì)所述目標(biāo)數(shù)據(jù)包序號(hào)進(jìn)行排序,根據(jù)排序結(jié)果確定所述接收序號(hào)序列。
28、在一實(shí)施例中,所述在數(shù)據(jù)傳輸路徑中選取目標(biāo)傳輸路徑,根據(jù)所述數(shù)據(jù)幀、所述數(shù)據(jù)包序號(hào)和/或所述目標(biāo)傳輸路徑,生成數(shù)據(jù)包的步驟包括:
29、對(duì)所述數(shù)據(jù)幀進(jìn)行加密,生成加密數(shù)據(jù)幀;
30、選取所述數(shù)據(jù)傳輸路徑中的所述目標(biāo)傳輸路徑,生成所述數(shù)據(jù)包序號(hào)和所述目標(biāo)傳輸路徑的元數(shù)據(jù),并根據(jù)所述元數(shù)據(jù)構(gòu)建所述數(shù)據(jù)包的頭文件;
31、通過(guò)組合所述頭文件和所述加密數(shù)據(jù)幀,生成所述數(shù)據(jù)包。
32、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種基于quic的多路徑數(shù)據(jù)傳輸方法,應(yīng)用于接收端,所述的方法包括以下步驟:
33、接收發(fā)送端發(fā)送的數(shù)據(jù)包,并確定所述數(shù)據(jù)包的數(shù)據(jù)包序號(hào)和目標(biāo)傳輸路徑;
34、獲取所述目標(biāo)傳輸路徑接收的目標(biāo)數(shù)據(jù)包序號(hào),以及所述目標(biāo)數(shù)據(jù)包序號(hào)對(duì)應(yīng)的接收確認(rèn)信息;
35、根據(jù)所述目標(biāo)數(shù)據(jù)包序號(hào)中的最大包序號(hào)和所述接收確認(rèn)信息,生成確認(rèn)幀;
36、將所述確認(rèn)幀反饋至所述發(fā)送端。
37、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種基于quic的多路徑數(shù)據(jù)傳輸設(shè)備,所述設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序配置為實(shí)現(xiàn)如上所述的基于quic的多路徑數(shù)據(jù)傳輸方法的步驟。
38、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的基于quic的多路徑數(shù)據(jù)傳輸方法的步驟。
39、本技術(shù)提出的一個(gè)或多個(gè)技術(shù)方案,至少具有以下技術(shù)效果:
40、本技術(shù)將待傳輸數(shù)據(jù)封裝為至少一個(gè)數(shù)據(jù)幀,通過(guò)該待傳輸數(shù)據(jù)的連接級(jí)包序號(hào)空間,為數(shù)據(jù)幀所在包分配單調(diào)遞增的數(shù)據(jù)包序號(hào),以及在數(shù)據(jù)傳輸路徑中選取目標(biāo)傳輸路徑,根據(jù)數(shù)據(jù)幀、數(shù)據(jù)包序號(hào)和/或目標(biāo)傳輸路徑,生成數(shù)據(jù)包,通過(guò)目標(biāo)傳輸路徑,將數(shù)據(jù)包發(fā)送至接收端,記錄所述目標(biāo)傳輸路徑的數(shù)據(jù)包發(fā)送記錄,接收所述接收端反饋的確認(rèn)幀,并根據(jù)確認(rèn)幀和數(shù)據(jù)包發(fā)送記錄,確定待重傳數(shù)據(jù)包,從而在基于quic的多路徑數(shù)據(jù)傳輸過(guò)程中,通過(guò)連接級(jí)包序號(hào)空間,為數(shù)據(jù)包分配數(shù)據(jù)包序號(hào),根據(jù)各個(gè)路徑接收數(shù)據(jù)包的數(shù)據(jù)包序號(hào)單調(diào)遞增的特性,分別記錄各個(gè)路徑的數(shù)據(jù)包發(fā)送記錄,而無(wú)需為每個(gè)路徑分配單獨(dú)的數(shù)據(jù)包序號(hào)空間,在實(shí)現(xiàn)多路徑可靠性傳輸?shù)倪^(guò)程中,降低數(shù)據(jù)傳輸?shù)鸟詈隙?,提高?shù)據(jù)包重傳效率。此外,本技術(shù)根據(jù)確認(rèn)幀的最大數(shù)據(jù)包序號(hào),計(jì)算該路徑的往返時(shí)延(rtt,round-trip?time),同時(shí)也是很重要地,根據(jù)確認(rèn)信息計(jì)算該路徑能承載的有效傳輸量和丟包率,從而以合理的、標(biāo)準(zhǔn)的手法測(cè)量出該路徑的性質(zhì),并據(jù)此評(píng)估該路徑的堵塞狀況,得到該路徑上合理的發(fā)送速度,進(jìn)而達(dá)成任一路徑都能獨(dú)立自主地控制可靠傳輸?shù)男Ч?/p>