



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、UDT协议-基于UDP的可靠数据传输协议分类:其他发布时间:2006-09-0111:13:03来源:技术文档大全UDT 协议-基于 UDP 的可靠数据传输协议1 .介绍随着网络带宽时延产品(BDP)的增加,通常的TCP协议开始变的低效。这是因为它的AIMD(additiveincreasemultiplicativedecrease)算法彻底减少了TCP拥塞窗口,但不能快速的恢复可用带宽。理论上的流量分析表明TCP在BDP增加到很高的时候比较容易受包损失攻击。另外,继承自TCP拥塞控制的不公平的RTT也成为在分布式数据密集程序中的严重问题。拥有不同RTT的并发TCP流将不公平地分享带宽。尽管
2、在小的BDP网络中使用通常的TCP实现来相对平等的共享带宽,但在拥有大量BDP的网络中,通常的基于TCP的程序就必须承受严重的不公平的问题。这个RTT基于的算法严重的限制了其在广域网分布式计算的效率,例如:internet上的网格计算。一直到今天,对标准的TCP的提高一直都不能在高BDP环境中效率和公平性方面达到满意的程度(特别是基于RTT的问题)。例如:TCP的修改,RFC1423(高性能扩展),RFC2018(SACK)、RFC2582(NewReno)、RFC2883(D-SACK)、和RFC2988(RTO计算)都或多或少的提高了点效率,但最根本的AIMD算法没有解决。HSTCP(RF
3、C3649)通过根本上改变TCP拥塞控制算法来在高BDP网络中获得高带宽利用率,但公平性问题仍然存在。考虑到上面的背景,需要一种在高BDP网络支持高性能数据传输的传输协议。我们推荐一个应用程序级别的传输协议,叫UDT或基于UDP的数据传输协议并拥有用塞控制算法。本文描述两个正交的部分,UDP协议和UDT拥塞控制算法。一个应用层级别的协议,位于UDP之上,使用其他的拥塞算法,然而这些本文中描述的算法也可以在其他协议中实现,例如:TCP。一个协议的参考实现叫UDT;详细的拥塞控制算法的性能分析在GHG04中可以找到。2 .设计目标UDT主要用在小数量的bulk源共享富裕带宽的情况下,最典型的例子就
4、是建立在光纤广域网上的网格计算,一些研究所在这样的网络上运行他们的分布式的数据密集程序,例如,远程访问仪器、分布式数据挖掘和高分辨率的多媒体流。UDT的主要目标是效率、公平、稳定。单个的或少量的UDT流应该利用所有高速连接提供的可用带宽,即使带宽变化的很剧烈。同时,所有并发的流必须公平地共享带宽,不依赖于不同的带宽瓶劲、起始时间、RTTo稳定性要求包发送速率应该一直会聚可用带宽非常快,并且必须避免拥塞碰撞。UDT并不是在瓶劲带宽相对较小的和大量多元短文件流的情况下用来取代TCP的。UDT主要彳为TCP的朋友,和TCP并存,UDT分配的带宽不应该超过根据MAX-MIN规则的最大最小公平共享原则。
5、(备注,最大最小规则允许UDT在高BDP连接下分配TCP不能使用的可用带宽)。我们3 .协议说明3.1. 概述UDT是双工的,每个UDT实体有两个部分:发送和接收。发送者根据流量控制和速率控制来发送(和重传)应用程序数据。接收者接收数据包和控制包,并根据接收到的包发送控制包。发送和接收程序共享同一个UDP端口来发送和接收。接收者也负责触发和处理所有的控制事件,包括拥塞控制和可靠性控制和他们的相对机制,例如RTT估计、带宽估计、应答和重传。UDT总是试着将应用层数据打包成固定的大小,除非数据不够这么大。和TCP相似的是,这个固定的包大小叫做MSS(最大包大小)。由于期望UDT用来传输大块数据流,
6、我们假定只有很小的一部分不规则的大小的包在UDTsession中。MSS可以通过应用程序来安装,MTU是其最优值(包括所有包头)。UDT拥塞控制算法将速率控制和窗口(流量控制)合并起来,前者调整包的发送周期,后者限制最大的位被应答的包。在速率控制中使用的参数通过带宽估计技术来更新,它继承来自基于接收的包方法。同时,速率控制周期是估计RTT的常量,流控制参数依赖于对方的数据到达速度,另外接收端释放的缓冲区的大小。3.2. 包结构UDT有两种包:数据包和控制包。他们通过包头的第一位来区分(标志位)。如果是0,表示是数据包,1表示是控制包。3.2.1.数据包数据包结构如下显示:01340123456
7、78901234567890123456789010I 包序号应用数据包序号是UDT数据包头中唯一的内容。它是一个无符号整数,使用标志位后的31位,UDT使用包基础的需要,例如,每个非重传的包都增加序号1。序号在到达最大值2A31-1的时候覆盖。紧跟在这些数据后面的是应用程序数据。3.2.2.控制包控制包结构如下:013401234567890123456789012345678901类型保留 ACK 序号控制信息字段有6种类型的控制包在UDT中,bit1-3表示这些信息。前32位在包头中必须存在。控制信息字段包括0(例如,它不存在)或者多个32位无符号整数,这由包类型决定。UDT使用应答子序
8、号的方法。每个ACK/ACK2包有一个无符号的16位序号,它独立于数据包需要。它使用位16-31。应答需要从0到(2人16-1)。位16-31在其他控制包中没有定义。类型说明控制信息000协议连接握手.32 位 UDT 版本32 位内部顺序号32 位 MSS(字节)4.32 位最大流量窗口大小(字节)001保活没有010应答,位 16-31 是应答序号1.32 位包序号,先前接收到的包序号e5232 位,RTT(微秒)e5232 位,RTT 变量或者 RTTVar(微秒)e5232 位,流量窗口大小(包的数量)e5232 位,连接容量估计(每秒包的数量)011Negative 应答(NAK)丢
9、失信息的 32 位整数数组,见 3.9 节100保留这种类型的控制信息保留作为拥塞警告使用,从接收到发送端。 一个拥塞警告能被 ECN 或包延迟增加趋势的度量方法触发。101关闭110应答一个应答(ACK2)16-31 位,应答序号。1114-15 的解释保留将来使用注意,对于数据和控制包来说,可以从UDP协议头中得到实际的包大小。包大小信息能被用来得到有效的数据负载和NAK包中的控制信息字段大小。3.3. 定时器UDT在接收端使用4个定时器来触发不同的周期事件,包括速率控制、应答、丢失报告(negative应答)和重传/连接维护。UDT中的定时器使用系统时间作为源。UDT接收端主动查询系统时
10、间来检查一个定时器是否过期。对于某个定时器T来说,其拥有周期TP,将定变量t用来记录最近T被设置或复位的时间。如果T在系统时间t0(t=t0)被复位,那么任何t1(t1-t=TP)是T过期的条件。四个定时器是:RC定时器、ACK定时器、NAK定时器、EXP定时器。他们的周期分别是:RCTP、ATP、NTP、ETP。RC定时器用来触发周期性的速率控制。ACK定时器用来触发周期性的有选择的应答(应答包)。RCTP和ATP是常量值,值为:RCTP=ATP=0.01秒。NAK被用来触发negative应答(NAK包)。重传定时器被用来触发一个数据包的重传和维护连接状态。他们周期依赖于对于RTT的估计。
11、ETP值也依赖于连续EXP时间溢出的次数。推荐的RTT初始值是0.1秒,而NTP和ETP的初始值是:NTP=3*RTT,ETP=3*RTT+ATP。在每次boundedUDP接收操作(如果收到一个UDP包,一些额外的必须的数据处理时间)时查询系统时间来检查四个定时器是否已经过期。推荐的周期粒度是微秒。UDP接收时间溢出值是实现的一个选择,这依赖于循环查询的负担和事件周期精确度之间的权衡。速率控制事件更新包发送周期,UDT发送端使用STP来安排数据包的发送。假定一个在时间t0被发送,那么下一次包发送时间是(t0+STP)。换句话说,如果前面的包发送花费了t时间,发送端将等待(STP-t)来发送下
12、一个数据包(如果STP-t0,就不需要等待了)。这个等待间隔需要一个高精确度的实现,推荐使用CPU时钟周期粒度。3.4. 发送端算法3.4.1.数据结构和变量A.SNDPKT 历史窗口:一个循环数组记录每个数据包的开始时间B.发送端丢失链表:发送段丢失列表是一个连接链表,用来存储被接收方 NAK 包中返回的丢失包序号。这些数字以增加的顺序存储。3.4.2.数据发送算法A.如果发送端的丢失链表是非空的,重传第一个在 list 中的包,并删除该成员,到 5。B.等待有应用程序数据需要发送C.如果未应答的包数量超过了两量窗口的大小,转到 1。如果不是包装一个新的包并发送它。D.如果当前包的序号是 1
13、6n,n 是一个整数,转第 2 步。E.在 SNDPKT 历史窗口中记录包的发送时间F.如果这是自上次发送速率降低之后的第一个包,等外 SYN 时间。G.等外(STP-1)时间,t 是第 1 到第 4 步之间的总时间,然后转到 1。3.5. 接收端算法3.5.1.数据结构和变量A.接收端丢失链表:是一个 duple 连接链表,元素的值包括:丢失数据包的序号、最近丢失包的反馈时间和包已经被反馈的次数。值以包序号增序的方式存储。B.应答历史窗口:每个发送 ACK 的和时间一个循环数组;由于其循环的特性,意味着如果数组中没有更多空间的时候新的值将覆盖老的值。C.RCVPKT 历史窗口:一个用来记录每
14、个包到达时间的循环数组。D.对包窗口:一个用来记录每个探测包对之间的时间间隔。E.LRSN:一个用来记录最大接收数据包需要的变量。LRSN 被初始化为初始序号减 1。据接收算法A.查询系统时间来检查 RC、ACK、NAK、或 EXP 定时器是否过期。如果任一定时器过期,处理事件(本节下面介绍)并复位过期的定时器。B.启动一个时间 boundedUDP 接收。如果每个包到,转 1。C,设置 exp-count 为 1,并更新 ETP 为:ETP=RTT+4*RTTVar+ATP。D.如果所有的发送数据包已经被应答,复位 EXP 时间变量。E.检查包头的标志位。如果是一个控制包,根据类型处理它,然
15、后转 1。F.如果当前数据包的需要是 16n+1,n 是一个整数,记录当前包和上个在对包窗口中数据包的时间间隔。G.在 PKT 历史窗口中记录包到达时间H.如果当前数据包的序号大于 LRSN+1,将所有在(但不包括)这两个值之间的序号放入接收丢失链表,并在一个 NAK 包中将这些序号发送给发送端。如果序号小于 LRSN,从接收丢失链表中删除它。I.更新 LRSN,车专1。C 定时器到通过速率控制算法来更新STP(见3.6节)。过程如下:A.按照下面的原则查找接收端所接收到的所有包之前的序号:如果接收者丢失链表是空的,ACK 号码是LRSN+1,否则是在接收丢失队列中的最小序号。B.如果应答号不大于曾经被 ACK2 应答的最大应答号,或等于上次应答的应答号并且两次应答之间的时间间隔小于RTT+4*RTTVar,停止(不发送应答)。C.分配这个应答一个唯一增加的 ACK 序列号,推荐采用 ACK 序列号按步骤 1 增加,并且重叠在达到最大值之后。D.根据下面的算法来计算包的抵达速度:使用 PKT 历史窗口中的值计算最近 16 个包抵达间隔(AI)中值。在这 16 个值中, 删除那些大于 AI*8 或小于 AI*8 的包, 如果最后剩余 8 个值, 计算他们的平均值(AI,) 包抵达速度是 1/AI(每秒包的数量),否则是 0。E.根据 3.7 节中的内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化认同的行政管理试题及答案
- 煤矿安全培训教师教学能力竞赛方案
- 房建项目安全培训体系构建
- 规划学习步伐审计师试题及答案
- 管理思想史发展演进
- 航空维修记录管理试题及答案
- 对数函数的图像与性质课件
- 小学数学符号教育课件
- 2024年河北省大名县北峰乡卓越学校数学三年级第一学期期末检测模拟试题含解析
- 2024年安徽省六安市数学三年级第一学期期末预测试题含解析
- 草木缘情:中国古典文学中的植物世界
- 中国绝缘材料产品及应用手册
- 擒拿格斗课件
- 中国马克思主义与当代思考题(附答案)
- 绿篱带钢筋骨架施工方案
- 智能建造施工技术应用实施方案
- 医院发生意外自杀的应急预案流程
- 哈姆莱特必修下第三幕公开课一等奖课件省赛课获奖课件
- 国际志愿服务培训与实践-浙江外国语学院中国大学mooc课后章节答案期末考试题库2023年
- 其他常见疾病的康复
- WELL健康建筑标准介绍20200220
评论
0/150
提交评论