UDT协议深入解析
-
UDT協議是什么?是一種基于UDP的數據傳輸協議(UDP-based Data Transfer Protocol,簡稱UDT)。
-
UDT協議的主要作用是什么?UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標準數據傳輸協議TCP在高帶寬長距離網絡上性能很差。
-
那么UDT與UDP的區別又是什么?UDT建于UDP之上,并引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。
-
UDT的使用場景是什么?由于UDT完全在UDP上實現,它也可以應用在除了高速數據傳輸之外的其它應用領域,例如點到點技術(P2P),防火墻穿透,多媒體數據傳輸等等。
UDT協議的主要特性有哪些?
-
基于UDP的應用層協議: 有基本網絡知識的朋友都知道TCP和UDP的區別和使用場景,但是有沒有一種協議能同時兼顧TCP協議的安全可靠和UDP協議的高效,那么UDT就是一種。
-
面向連接的協議:面向連接意味著兩個使用協議的應用在彼此交換數據之前必須先建立一個連接,當然UDT是邏輯上存在的連接通道。這種連接的維護是基于握手、Keep-alive(保活)以及關閉連接。
-
可靠的協議:依靠包序號機制、接收者的ACK響應和丟包報告、ACK序號機制、重傳機制(基于丟包報告和超時處理)來實現數據傳輸的可靠性。
-
雙工的協議:每個UDT實例包含發送端和接收端的信息。
-
單播的數據流。
-
新的擁塞算法,并且具有可擴展的擁塞控制框架:新的擁塞控制算法不同于基于窗口的TCP擁塞控制算法(慢啟動和擁塞避免),是混合的基于窗口的、基于速率的擁塞控制算法。可擴展的擁塞控制框架開源的代碼和擁塞控制的C++類架構,可支持開發者派生專用的擁塞控制算法。
-
帶寬估計:UDT使用對包(PP -- Packet pair)的機制來估計帶寬值。即每16個包為一組,最后一個是對包,即發送方不用等到下一個發送周期內再發送。接收方接收到對包后對其到達時間進行記錄,可結合上次記錄的值計算出鏈路的帶寬(計算的方法稱為中值過濾法), 并在下次ACK中進行反饋。
UDT一些主要特性的實現
-
new congestion control
-
DAIMD rate control
-
dynamic window control
UDT支持哪些數據傳輸類型
-
基于流的send, recv。
-
基于數據報sendmsg,recvmsg。
-
文件傳輸sendfile,recvfile。
下面我們結合UDT version 4版本來給大家分析下這個版本的UDT所擁有的一些新的特性。
-
使用了UDP multiplexer(UDP多路復用)機制,這樣做的好處是:
-
UDT流控采用可配置的擁塞控制算法,你可以關閉它、配置它,改良它來實現自己需要的流控策略。
-
采用新的資源管理(內存管理)和共享的擁塞控制方法來支持更多并發的UDT連接。有關內存管理的介紹如下:
-
UDT4 has a new buffer management module that enables all UDT sockets in one process can share protocol buffer. The goodness it brings is the much less memory usage for multiple UDT connections compared to previous versions.
-
UDT4 can automatically resize its buffer in order to reduce memory usage while providing maximum throughput.
-
Because of the new memory management scheme, overlapped IO has been removed from UDT4. If your existing code uses overlapped IO, you need to modify it to use regular IO. This is the only change needed for exiting code to move from UDT3 to UDT4.
-
-
其他的特點:
-
不和原生socket api沖突;
-
線程安全;
-
進程間不共享句柄;
-
錯誤處理;
-
防火墻穿透;
-
安全性好;
-
建立連接快速;
-
總結
- 上一篇: 客户端网络库实现真的很简单吗?
- 下一篇: 网络编程释疑之:TCP连接拔掉网线后会发