UDT源码分析(1):UDT协议是什么?

来源:互联网 发布:python developer 编辑:程序博客网 时间:2024/05/21 10:55

现如今,计算机网络的概念已经普及大众,互联网也给我们的生活带来了便利和活力。
作为一个软件开发者,说到计算机网络,自然会想到网络设备,网络通讯的概念,想到Berkeley套接字,TCP/IP协议细节。
今天开始介绍一种高性能的网络传输协议:UDT协议

一 UDT协议是什么?

UDT是一种基于UDP的互联网数据传输协议。
UDT的主要目的是支持高速广域网上的海量数据传输,而互联网上的标准数据传输协议TCP在高带宽长距离网络上性能很差。
UDT建于UDP之上,并引入新的拥塞控制和数据可靠性控制机制。
UDT是面向连接的双向的应用层协议。它同时支持可靠的数据流传输和部分可靠的数据报传输。 由于UDT完全在UDP上实现,它也可以应用在除了高速数据传输之外的其它应用领域,
例如点到点技术(P2P),防火墙穿透,多媒体数据传输等等。

二 设计目标

UDT主要用在小数量的bulk源共享富裕带宽的情况下,最典型的例子就是建立在光纤广域网上的网格计算,一些研究所在这样的网络上运行他们的分布式的数据密集程式,例如,远
程访问仪器、分布式数据挖掘和高分辨率的多媒体流。
UDT的主要目标是效率、公平、稳定。单个的或少量的UDT流应该利用任何高速连接提供的可用带宽,即使带宽变化的很剧烈。同时,任何并发的流必须公平地共享带宽,不依赖于不
同的带宽瓶颈、起始时间、RTT。稳定性需要包发送速率应该一直会聚可用带宽很快,并且必须避免拥塞碰撞。
UDT并不是在瓶颈带宽相对较小的和大量多元短文档流的情况下用来取代TCP的。
UDT主要作为TCP的朋友,和TCP并存,UDT分配的带宽不应该超过根据MAX-MIN规则的最大最小公平共享原则。
(备注,最大最小规则允许UDT在高BDP连接下分配TCP不能使用的可用带宽)。

三 效率和公平性

UDT能够充分利用当前有线网络的独立于连接容量的可用带宽、RTT、后台共存流、给定的连接比特错误率。UDT在没有数据包丢失的情况下从0bits/s到90%带宽需要一个常量时间,

这个时间是7.5秒。

UDT并不适合无线网络。

UDT的确满足单瓶劲网络拓扑的最大-最小公平性。在多个瓶劲情况下,根据最大最小原则它能保证较小瓶劲连接或者至少一半的平等共享(it guarantees that flows over smaller bottleneck links obtain at least half of their fair share according to max-min rule)。RTT对公平性都一点影响。

当和大块的TCP流共存的时候,TCP能占用比UDT更多的带宽,除了三种情况:

1.网络BDP非常大,TCP不能利用他们的公平共享带宽。这种情况下,UDT将占用TCP不能利用的带宽。

2.连接容量是如此的小,从而导致UDT的带宽估计技术不能最有的工作;模拟显示这个极限连接容量大约是100kb/s。

3.在使用FIFO队列作为网络路径的网络中,如果队列大小大于BDP,TCP的共享带宽随着队列大小的增加而降低。然而,抵达UDT的共享带宽是,队列大小通常超过实际路由器/交换机提供的数量。

当短(timewise)类似web的TCP流和小的并发UDT流共存的时候,UDT在TCP流上的效果非常小。

关于UDP协议的具体说明及代码分析会在后续文档阐述。

原创粉丝点击