锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 基于UDP的数据传输协议UDT / UDP多路复用和UDT定时器
服务方向
软件开发
办公财务MIS
股票
设备监控
网页信息采集及控制
多媒体
软件开发培训
Java 安卓移动开发
Java Web开发
HTML5培训
iOS培训
网站前端开发
VC++
C++游戏开发培训
C#软件
C语言(Linux)
ASP.NET网站开发(C#)
C#软件+ASP.NET网站
SOCKET网络通信开发
COMOLE和ActiveX开发
C++(Linux)
汇编和破解
驱动开发
SkinMagicVC++换肤
流媒体开发
MicroStation二次开发
计算机英语翻译
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

五、UDP多路复用


一个UDP多路复用,被用来处理共享同一个UDP端口的多个并发的UDT连接。

UDP多路复用,根据包头的目标Socket ID,将接收到的不同的UDT包分发给相应 的UDT Socket。

换言之,多个UDT Socket绑定到不同的UDP端口时,必然被各自的UDP多路复用 分发处理。

一个UDP多路复用维护两个队列:发送队列和接收队列。

发送队列包含Socket信息的链表。链表节点的Socket必须包含至少一个计划发送的 信息包。Sockets按照下一个信息包发送的时间进行排序。

发送队列维护一个高性能的计时器。当队列的Socket包发送时间到时,队列头部的 Socket的包被发送,并且头部的Socket从队列中删除。如果头部Socket包含多个计划信 息包时,该头部Socket将被重新插入到发送队列里。

接收队列读取输入的信息包,并分发信息包到相应的UDT Socket。如果目标Socket ID 是0,信息包将被分发给当前正在监听的Socket,或者被分发给会合的连接 (Rendezvous connection)。

和发送队列相似,接收队列也包含等待接收信息包的Socket信息链表。如果队列的任 意一个Socket的SYN间隔时间到时,接收队列会检测该Socket的“任意一个定时器”(参 见定时器)是否期满。


六、UDT定时器

UDT使用4种定时器,用来触发不同的周期性事件。不同事件的周期是相对独立的。这 些定时器使用系统时间作为参考源。

例如,一个UDT的周期性事件E,假定事件的时间变量是ET(记录当前的系统时间), 事件的周期是p。如果事件E在系统时间t0(ET = t0)被注册或者复位,那么在任意时间 t1,(t1 – ET >= p)作为条件,用来检查事件E是否需要被触发。

UDT 的4 种定时器包括: ACK(acknowledgement) 、NAK(negative acknowledgement)、EXP(Expire)和SND(Send)。

SND只被用在发送端,用来处理基于速率的信息包发送。其它3种定时器只被用于接 收端。

ACK定时器被用来触发一个ACK事件。ACK的周期被拥塞控制(CC)模块设置。即使拥 塞控制不需要基于定时器的ACK,UDT 也会每隔不超过0.01 秒发送一个ACK。这里, 0.01秒被定义为SYN时间(或同步时间),并且这个SYN时间影响着其它的UDT定时器。

NAK定时器被用来触发一个否定应答事件。NAK的周期会动态地更新成“4*RTT + RTTVar + SYN”,RTTVar是RTT采样的偏差值。

EXP 定时器被用来触发数据包的重传和维护连接状态。EXP 的周期动态地更新成 “N*(4*RTT + RTTVar + SYN)”,N是连续超时的次数。为了避免不必要的超时,一个最 小阈值(例如0.5秒)可以在协议实现时参与控制。

推荐的周期粒度是微秒。然而精确的计时是没有必要的,除了SND定时器有需求之外。

文档的下文里,时间变量命名的含义取决于所在的上下文语境,即可以表示为相关的 事件,也可以表示为定时器,或者表示为周期值。例如,ACK可表示为ACK事件,或者 ACK的周期值。

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市文化路47号院1号楼4层(47-1楼位于文化路和红专路十字路口东北角,郑州大学工学院招待所南边,工学院科技报告厅西边。)