前言:tcp連接時(shí),一直以來(lái)都是只能綁定一個(gè)ip地址,但是隨著多網(wǎng)卡主機(jī)越來(lái)越多,從一個(gè)主機(jī)到另一個(gè)主機(jī)往往都會(huì)有多條鏈路可以到達(dá),這種情況下,如何充分利用這多條鏈路進(jìn)行并行的傳輸或者作為鏈路備份,就變得十分有意義,本篇就簡(jiǎn)單介紹其中一種多路徑傳輸?shù)姆椒?mdash;多路徑TCP。
以上就是其中的一個(gè)重要的應(yīng)用場(chǎng)景,解下來(lái)我們重點(diǎn)說(shuō)明一下其中的一種實(shí)現(xiàn)方法—MPTCP。
多路徑流量的調(diào)度和擁塞控制。
多路徑的流量調(diào)度是指對(duì)于存在的多個(gè)子路徑,如何分配流量到各個(gè)子路徑,以達(dá)到盡可能提高帶寬的目的。但另一方面,又需要對(duì)各個(gè)子路徑進(jìn)行統(tǒng)一的擁塞控制,當(dāng)一條鏈路上的流量發(fā)送擁塞時(shí),把流量導(dǎo)到另一條鏈路上去。
路徑發(fā)送失敗后的重傳。
既然依然是可靠通信,那么就會(huì)涉及到失敗后的重傳問(wèn)題。重傳的時(shí)候自然就要找到對(duì)應(yīng)的序列號(hào),然而,在多路徑傳輸時(shí),本來(lái)序列號(hào)連續(xù)的包可能被調(diào)度到不同的鏈路中發(fā)送,導(dǎo)致出現(xiàn)一個(gè)問(wèn)題:在每個(gè)鏈路中發(fā)送的包的序列號(hào)不是連續(xù)的,在網(wǎng)絡(luò)傳輸中可能會(huì)被網(wǎng)絡(luò)安全設(shè)備攔截下來(lái)。所以需要解決重傳時(shí)的序列號(hào)的問(wèn)題。
建立和管理子路徑。
對(duì)于傳輸時(shí)的多路徑,需要對(duì)路徑進(jìn)行管理,以便能夠知曉鏈路情況,在鏈路被移除的時(shí)候,通知對(duì)端不再使用這條鏈路。在鏈路添加的時(shí)候,使能對(duì)應(yīng)的鏈路。
在第一節(jié)中我們提到了多路徑傳輸,從實(shí)現(xiàn)的層次來(lái)說(shuō),可以分為網(wǎng)絡(luò)層實(shí)現(xiàn),傳輸層實(shí)現(xiàn),應(yīng)用層實(shí)現(xiàn)。首先說(shuō)這個(gè)應(yīng)用層實(shí)現(xiàn),這個(gè)實(shí)施起來(lái)代價(jià)最高,因?yàn)樾枰膭?dòng)現(xiàn)有的應(yīng)用程序。而在網(wǎng)絡(luò)層實(shí)現(xiàn)在面對(duì)流量控制等問(wèn)題時(shí)時(shí)又困難重重,只有在傳輸層可以借助天然的TCP的可靠性機(jī)制,進(jìn)行改造。
多路徑tcp的功能和過(guò)程如下:
初始化時(shí),是通過(guò)SYN,SYN/ACK,ACK報(bào)文交互后完成的,在這些報(bào)文的tcp選項(xiàng)中,帶有這一端使能的標(biāo)志---MP_CAPABLE。同時(shí)也會(huì)傳遞一個(gè)生成的64位的key值來(lái)標(biāo)示這條連接,在后面有新的子流添加到這條連接時(shí),就會(huì)用來(lái)進(jìn)行鑒權(quán)(確切說(shuō)是以這個(gè)key生成的token)。
新聞熱點(diǎn)
疑難解答
圖片精選