UDT协议-基于UDP的可靠数据传输协议
日期:2007年8月7日 作者: 查看:[大字体 中字体 小字体]-
100保留这种类型的控制信息保留作为拥塞警告使用,从接收到发送端。一个拥塞警告能被ECN或包延迟增加趋势的度量方法触发。101关闭110应答一个应答(ACK2)16-31位,应答序号。1114-15的解释保留将来使用
注意,对于数据和控制包来说,可以从UDP协议头中得到实际的包大小。包大小信息能被用来得到有效的数据负载和NAK包中的控制信息字段大小。
3.3.定时器
UDT在接收端使用4个定时器来触发不同的周期事件,包括速率控制、应答、丢失报告(negative应答)和重传/连接维护。
UDT中的定时器使用系统时间作为源。UDT接收端主动查询系统时间来检查一个定时器是否过期。对于某个定时器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的估计。ETP值也依赖于连续EXP时间溢出的次数。推荐的RTT初始值是0.1秒,而NTP和ETP的初始值是:NTP=3*RTT,ETP=3*RTT+ATP。
在每次bounded UDP接收操作(如果收到一个UDP包,一些额外的必须的数据处理时间)时查询系统时间来检查四个定时器是否已经过期。推荐的周期粒度是微秒。UDP接收时间溢出值是实现的一个选择,这依赖于循环查询的负担和事件周期精确度之间的权衡。
速率控制事件更新包发送周期,UDT发送端使用STP来安排数据包的发送。假定一个在时间t0被发送,那么下一次包发送时间是(t0+ STP)。换句话说,如果前面的包发送花费了t’时间,发送端将等待(STP-t’)来发送下一个数据包(如果STP-t’ <0,就不需要等待了)。这个等待间隔需要一个高精确度的实现,推荐使用CPU时钟周期粒度。
3.4.发送端算法
3.4.1. 数据结构和变量
A.SND PKT历史窗口:一个循环数组记录每个数据包的开始时间
B.发送端丢失链表:发送段丢失列表是一个连接链表,用来存储被接收方NAK包中返回的丢失包序号。这些数字以增加的顺序存储。
3.4.2. 数据发送算法
A.如果发送端的丢失链表是非空的,重传第一个在list中的包,并删除该成员,到5。
B.等待有应用程序数据需要发送
C.如果未应答的包数量超过了两量窗口的大小,转到1。如果不是包装一个新的包并发送它。
D.如果当前包的序号是16n,n是一个整数,转第2步。
E.在SND PKT历史窗口中记录包的发送时间
F.如果这是自上次发送速率降低之后的第一个包,等外SYN时间。
上一篇:[项目管理]管理中的人
