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