传输控制协议( TCP)是Internet 中使用最广泛的传输层协议。常见应用如HT T P、F TP、BitTorrent 等都使用它来传输数据。在传输过程中, 数据发送受到不止一种因素的限制,比如发送方、接收方和网络。当用户数据下载速率不快时,他们希望了解下载过程中限制数据发送的主要因素。 这是因为,一旦能够诊断出数据传输中的限制因素,用户就可以通过消除这种限制因素来提高连接的传输速率。比如当限制因素是接收方时,用户可以通过修改主机的配置来提高传输速率; 而当限制因素是发送方或者网络时,用户可以通过向服务提供商和ISP反映来解决问题。
限制因素的诊断方法取决于测量点的位置。 当测量点在数据发送方时, Web100系统可以直接从数据发送方的TCP 协议栈读取数据发送限制因素。而普通用户没有从web或FTP服务器直接读取其协议栈信息的权限,因此他们只能根据在数据接收方或者网络中测量到的报文进行估计。在非数据发送方诊断数据发送限制因素的基本方法是在连接路径上的某一测量点监听报文,首先获取该连接每一时刻的飞行字节数,然后通过分析飞行字节数的动态变化规律来确定每一时刻的限制因素。在该方法中,因为飞行字节数是后面分析的基础,所以准确估计飞行字节数非常重要,但目前所有的工作都无法做到这一点。
对上面非数据发送方的诊断方法提出了2 点改进。首先,本文使用TCP时间戳选项来确定报文间的引发关系。无论测量点在什么位置,该方法都能准确地确定报文间的引发关系,从而计算出准确的飞行字节数。其次,本文提出了一种相对鲁棒的方法通过分析飞行字节数的变化规律来确定每一时刻的数据发送限制因素。
在一条TC P连接中,某一时刻的飞行字节数是指当时在发送方看来那些已经发送但尚未被确认的总字节数。TC P速率控制的基本原理是让发送方通过限制飞行字节数来限制其数据发送速率。TC P批量数据传输是指在连接进行的过程中, 上层应用程序始终有新数据发送,数据发送方不会因缺少数据而暂停发送。很多重要的应用如HT TP、FTP都是这种类型,其飞行字节数受下面3种因素的限制:
1)发送方缓存: 上层应用的数据会首先被拷贝到发送方缓存中,连接最大的飞行字节数不可能大于发送方缓存的大小。 当数据发送受发送方缓存限制时,飞行字节数将一直等于发送方缓存。
2)接收方缓存: 接收方缓存也会限制飞行字节数,当数据发送受接收方缓存限制时,飞行字节数将一直等于接收方缓存。
3)拥塞窗口: 拥塞窗口是TCP协议为避免网络拥塞而用来限制飞行字节数的窗口。 拥塞窗口随时间动态变化,在没有丢包的时候,拥塞窗口随时间不断增长。因此,当飞行字节数受该因素限制时,它会随时间不断增长。
由上面的分析可知,当飞行字节数受不同因素限制时,其变化规律是不一样的。因此,通过分析飞行字节数的变化规律可以确定它的限制因素。[1]
T D - S C D M A 系统中的切换是为保证移动用户通信的连续性或者基于网络负载和操作维护等原因,将用户从当前的通信链路转移到其他小区的过程。切换过程的优化设计对于任何一个蜂窝通信系统都十分重要。因为从网络效率的角度出发,当用户终端处于不适合的服务小区进行通信时,不仅会影响通信质量,同时也将增加整个网络的负荷,甚至造成干扰。移动用户应当使用网络中最优化的通信链路与相应的基站建立连接。
在第一代模拟系统和第二代 G S M 系统中都采用越区硬切换技术,硬切换的实现方式是 U E 需要先删除原有的无线链路(R L),然后启用新的无线链路与接入侧进行通信。该技术使系统在切换过程中大约丢失 300 ms 的信息,占用的信道资源较多。在 TD - SCDMA 系统中除采用硬切换外,还采用接力切换。接力切换是介于硬切换和软切换之间的一种新切换方法,具有较高的切换成功率、较低的掉话率及较小的上行干扰等,接力切换的突出优点是切换高成功率和信道高利用率。因此进一步优化接力切换的具体技术,是切换技术研究的一个热点。
实现接力切换的必要条件 :网络要准确获得 U E 的位置信息,包括 U E 的信号到达方向 D O A, U E 与基站之间的距离。在 T D - S C D M A 系统中,由于采用了智能天线和上行同步技术,系统可以较为容易获得 UE 的位置信息。
接力切换分为 4 个步骤,即测量过程、预同步过程、判决过程和执行过程。接力切换利用智能天线和上行同步等技术,根据 U E 的方位以及 U E 和节点 B 间的距离作为辅助信息来判断目前 U E 是否移动到了可进行切换的相邻节点 B 的临近区域。如果 U E 进入切换区域,则无线网络控制器(R N C)通知该节点 B 做好切换准备,这个过程类似田径比赛中的接力赛跑传递接力棒,因而形象地称之为接力切换。在 U E 和节点 B 通信过程中,U E 需要对本小区节点 B 和相邻小区节点 B 的导频信号强度进行测量。U E 的测量是由 R N C 指定的,可以周期性进行,也可以由事件触发进行。接力切换的预同步过程属于开环预同步,在 U E 对本小区节点 B 和相邻小区节点 B 的导频信号强度进行测量的同时,记录来自各邻近小区节点 B 的信号与来自本小区节点 B 信号的时延差,预先取得与目标小区的同步参数,并通过开环方式保持与目标小区的同步。
目标小区确定后,R N C 根据目标小区与原小区的关系判决是硬切换(归属不同的 R N C)或者接力切换(归属同一个 R N C)。假设所有小区都归属同一 R N C, 即判决 U E 进行接力切换。R N C 将执行接力切换。首先对目标小区发送无线链路建立请求。当 R N C 收到目标小区的无线链路建立完成之后,向原小区和目标小区同时发送业务数据承载,这些数据从原小区和目标小区的空口发送出去,同时 R N C 向 U E 发送物理信道重配置消息命令,即切换命令。
U E 接收到切换命令后,由原小区接收下行承载业务以及信令,而由目标小区发射上行的承载业务和信令。同时,利用事先获取的原小区和目标小区之间的功率差值△P和时间差值△t,通过开环同步和功率控制,在目标小区发射上行的承载业务和信令。持续一段时间后,开始使用新配置在目标小区接收下行数据,实现闭环功率和同步控制,中断从原小区接收下行数据,完成切换过程。在切换命令发出后,如 R N C 收到来自 U E 的切换成功消息,则 RNC 向原小区发出请求,删除原小区的无线链路。
根据以上介绍,可以总结接力切换的特征有两点 :(1)在接力切换过程中,目标小区和原小区都在发送下行数据。(2)整个接力切换过程中,U E 只收到一次从 R N C 发送来的重配置命令,U E 根据该命令重配置自己的上行信道;但是下行信道的配置是根据经验值的定时来触发,也就是从接到重配置命令后,UE 自己设置一个定时器,定时器到时后,重配下行信道的配置。而对应第一个特征,当同时向两条 R L 发送数据报文时,需要判断发送有效数据的时间点。
如果在新 R L 刚建立时,立刻向下发送用户数据,该 R L 对应的基带侧将该用户数据在空口发送出去,这时发送的数据是在小区全向发送的,对于这条 RL 而言,其发射功率不能到达小区边缘,而切换时的 U E 大多数是在小区边缘。如果 U E 收不到数据,则该数据就无效;同时该数据在空口无效发送也会对其他 UE 造成干扰。
为了解决在目标小区新 R L 刚建立时,U E 在切换区域接收不到目标小区发送的用户数据,同时该数据的无效发送也会对目标小区其他 U E 造成干扰的问题和不足,本文提出可提高新 R L 的发射功率,保证 U E 在切换区域接收到目标小区发送的用户数据,同时可避免对其他 U E 造成干扰的接力切换中目标小区用户数据发送点的选择方法。技术方案如下。
(1)U E 要切换的目标小区确定后,R N C 在发出切换命令之前,对目标小区发送无线链路建立请求。当 R N C 收到目标小区无线链路建立完成的消息之后,向原小区的节点 A 和目标小区的节点 B 同时发送下行用户数据,由原小区的空口向移动终端发送该下行用户数据,目标小区的空口丢弃该下行用户数据,仅发送特殊突发。当节点 B 收到终端的上行信号后再开启功率进行数据下发,以此降低 U E 切换过程中目标小区无线链路对原小区无线链路的干扰。
(2)利用 T D - S C D M A 独特的帧结构,减少同频同时隙的干扰。即原小区与目标小区的业务承载信道可选择不同的时隙。例如 :原小区上行链路可以选择 T S2,下行链路选择 T S4,而目标小区则相应地选择 TS3 和 TS6。
(3)利用智能天线技术,R N C 通过原小区的 R L 向 U E 发送物理层重配置命令,该种配置命令包括物理信道重配置命令、传输信道重配置命令和无线承载(R B)重配置命令 ;U E 收到重配置命令后,根据重配置命令的参数判断此切换为接力切换时,对上行信道进行重配置,并向目标小区的节点 B 发送特殊突发,在可能的情况下 U E 可继续在原小区发送上行用户数据 ;所述目标小区的节点 B 根据该特殊突发信号的波束赋形,将其智能天线的主瓣方向对准移动终端,大大提高了新 R L的发射功率,可有效保证 U E 在切换区域接收到目标小区发送的用户数据,同时,避免了切换过程中该数据的无效发送对目标小区其他 U E 造成的干扰 ;然后目标小区的空口停止发送特殊突发,节点 B 开始发送下行用户数据,并在无下行用户数据时发送特殊突发。[2]
随着平板显示系统分辨率的提高, 显示模式为SVGA(800×600,数据传输率120Mb/ s)和XGA(1024×768, 数据传输率195Mb/s)的显示器已经产品化。设计高分辨率平板显示界面最大的瓶颈, 莫过于在数据传输期间不可避免的电磁干扰, 数据满摆幅平行传输所带来的高功耗、低速也是传统数字视频界面难以解决的问题。 对系统高性能的要求促使微处理器及存储器有了飞速发展。然而, I/O的速度往往滞后于系统带宽的要求。 传统数字视频界面一般直接将主机LCD 控制器与平板显示器连接起来,大量并行传输线满摆幅传输视频信号。 平板显示器分辨率的提高要求数据传输率也相应地提高, 然而, 大量并行的信号线及数据的满摆幅传输使得线间有较强的电磁干扰, 数据传输的可靠性较低。当数据传输率提高时, 高频率的数据切换使得该效应明显加强。同时, 高功耗也是该界面不可避免的问题。因此,本文针对传统数字视频界面在高速传输数据时难以克服的瓶颈, 给出了一种以ANSI/TIA/ EIA-644为性能指标参考的低压差分信号数据传输系统。低压差分信号LVDS 是一种以非常低的电压摆幅(约350mV)在差分PCB板线或平衡电缆上传输信号的通讯技术, 广泛地用于局域网、PC等的通讯。它最主要的特性有:
(1)电流模、低摆幅意味着数据可高速、低功耗传输;
(2)较少的并行传输线数, 电磁辐射干扰小;
(3)差分传输线, 线间电磁干扰可部分补偿, 共模噪声抑制强;
(4)与传输线特征阻抗匹配的端电阻减少了信号反射;
(5)标准 CMOS 工艺实现, 成本低。
提出的基于 LVDS 标准的发送器由 4 路通道构成 , 用以将 28 位并行红、绿、蓝数据及控制信号转换为 4路并行数据传输, 系统时钟为 32MHz ~ 112MHz , 故每一路通道的最大数据传输率为 784Mb/ s, 满足 SVGA , XGA , SXGA 等多种显示模式的要求。 少的并行传输线(仅 5 对电缆)及数据低电压摆幅串行传输(7 路并行数据串行化), 降低了电磁干扰和功耗, 提高了数据传输率。
为解决传统的高分辨率平板显示系统数据视频界面强电磁干扰、高功耗等问题。该发送系统包括4 个视频数据发送通道, 传统的数字视频界面随着数据传输率的提高, 会产生难以解决的高电磁干扰、高功耗问题。 电荷泵锁相环及参考源是公用的。每一路通道由7:1并-串转换器、低压差分电流模驱动器构成。系统时钟经电荷泵锁相环产生7相与系统时钟频率相同的时钟M -CLK(n)n=1, 2, … , 7, 用以控制7:1并-串转换器, 利用相邻两相时钟上升沿的间隔, 将7路并行数据转换为串行数据。 被串行化的数据控制低压差分电流模驱动器输出电流的方向, 在平衡电缆对上产生摆幅约350mV 的差分信号。系统时钟经第5 个驱动器也转换为LVDS 信号,与4 路低压差分数据及控制输出信号一起发送给平板显示控制专用芯片。 参考源为低压差分电流模驱动器提供稳定的参考电压, 并自适应地调节驱动器的输出电流, 使输出摆幅在工艺、电源电压、温度变化时仍能保持恒定。系统的时钟频率为32MHz ~112MHz ,7 :1 并-串转换器使每路通道数据传输率为224Mb/s ~784Mb/s,故系统总的数据传输率为112Mb/s ~392Mb/s,可满足高分辨率如SXGA 显示器的要求。PWDN 信号为系统提供省电模式,4 个控制信号HSYNC 、VSYNC 、CNTL1、CNTL2 用于视频信号的水平、垂直同步及处理。24 位RGB 像素数据与4 位控制信号分为4 路并行传输。
整个系统采用0.18μm CMOS 工艺模型设计,并、串结合的体系结构及低摆幅差分输出驱动器, 使得该视频数据发送界面具有低成本、低功耗、高可靠性等特点, 适合于三维动画, 多媒体等高速、高清晰度视频系统的通讯接口要求。
1.电荷泵锁相环
电荷泵锁相环由鉴相器、环滤波器、电荷泵、压控振荡器构成。 14 级压控振荡器产生 7 相与系统时钟同频率的时钟M -CLK(n )n =1 , 2,…, 7, 将时钟周期均分为 7 等份, 相邻时钟最小上升沿间隔为 1.27ns。 延迟单元采用全差分结构, 压控电流源和电流受环滤波器产生的控制信号的控制, 根据系统时钟的变化, 延迟单元差分输出的摆幅也相应地变化, 以跟踪系统时钟的相位。7 相时钟由相间隔的延迟单元产生,压控振荡器主环路与多相时钟产生回路相分离, 使每一个延迟单元的电容负载相同, 减小了压控振荡器的设计难度。与传统的产生多相时钟的压控振荡器相比, 该振荡器不需要多相时钟灵敏放大器和缓冲器, 减小了硬件复杂性和噪声敏感性。电荷泵采用两级负反馈机制, 自适应地调节环滤波器RC回路的充放电,因此使锁相环具有很好的相位跟踪特性和对时钟相位震颤噪声的抑制能力。 环滤波器中的电阻、电容分别采用传输门、NMOS 管实现,节省了芯片面积。在TTT(3.3V ,50℃,TT CMOS 模型)情况下用HSPICE 得到的仿真结果表明,产生的7 相时钟间隔均匀,相位震颤噪声小。
2.并-串转换器
并排的7 个功能块是数据选择单元, 由二级D触发器构成。它们的使能端分别接由电荷泵锁相环产生的7 相时钟。数据选择单元的另外两个输入端接两相同步时钟, 确保相邻并行数据在串行化时数据时序歪斜最小。并行数据在多相时钟的作用下,经数据选择单元转换为串行数据后, 经双端变单端的缓冲器, 将串行数据波形整型, 整型后的波形作为低压差分电流模驱动器的输入。
3.低压差分电流模驱动器
主要由电流切换开关,压控电流源, PVT自适应偏置构成。串行CMOS级数据经两路倒相缓冲器变为互补信号, 用以控制电流切换开关, 改变输出电流的方向, 输出电流在传输线端电阻产生所需的电压。输出电流典型值约为3.5mA ,跨接在传输线对上的端电阻典型值为100Ψ,因此输出的差分信号为350mV 。为了保证输出信号的电压摆幅在各种PVT 情况下保持恒定,驱动器的偏置采用反馈环路动态调节压控电流源的电流大小。 设偏置电路晶体管尺寸及电阻大小与对应的驱动器电流通路上的晶体管尺寸及电阻大小完全匹配, 两个运放的负向端分别接由参考源产生的恒定电压, 这两个电压的大小设定了驱动器输出电压所需的高低电平。 两个运放的正向输入端分别接在与传输线端电阻相匹配的外接电阻的两端, 输出端电压作为两个压控电流源的控制电压, 运放输入的虚地效应使得正、负向端的电平在反馈环路平衡态时相等。 由于偏置电路与驱动器电流通路完全匹配, 因此, 传输线端电阻的电压及电流与偏置电路外接电阻上的电压及电流分别相等。 外接电阻及传输线端电阻可以调节, 以匹配传输线特征阻抗的变化, 减小输出信号的反射。当PVT 的波动引起外接电阻两端的电压发生变化时, 偏置电路的负反馈机制会动态调节该变化, 使外接电阻两端的电压与参考源产生的电压动态相等。因此, 传输线端电阻上电压及电流在PVT 发生变化时仍能[3]
测控通信软件是测控系统的核心与控制中枢, 其任务是以时间为基准, 由通信传输系统实时获取各测量设备对目标的测量数据, 经过合理性选择、误差修正后进行轨迹解算处理和推理判断做出实时决策, 将结果输出到显示、控制设备, 完成对被测目标的实时监控。一个健壮的测控通信软件必须注意下面几个问题:
①实时性, 即在给定的时间期限(< l00ms)内必须完成定量数据的网络通信和数据处理任务。结合宿主系统的硬件特性灵活应用高效率的网络通信技术。
②可靠性, 即测控通信软件是一个高风险系统,微小的差错将导致灾难性后果。特别要求软件注重容错设计, 不能有单点故障, 信号或事件的处理具有原子性。
③扩展性, 基于以太网的测控通信软件应符合系统的松耦合特性, 尽量使设计的程序独立于网络规模的变化, 满足系统配置的灵活性要求。基于 Internet 的网络通信协议有两个 , 一个是TCP( Transfer Control Protocol,传输控制协议) , 它是一种面向连接的协议 ; 另一个是 UDP(User DatagramProtocol, 用户数据报协议), 它是一种面向无连接的协议。基于 TCP 协议的网络通信曾是实时测控软件所使用的主要技术之一。然而, 它在系统的容错和可扩展性设计方面都或多或少存在着问题, 更重要的是不能满足测控通信软件的实时需求。因此, 本设计采用UDP 协议,突出的好处是: 基于UDP 协议的数据传输速率无阻碍, 能够尽可能地以全速发送数据(即充分发挥物理通信设备的速度),这点在测控通信系统中尤为重要。本设计考虑到UDP 不能保证数据可靠、无差错地传输, 也就是说数据在传输过程中有可能出现数据的丢失、差错、篡改等, 而使对方无法接收到正确的数据, 因此, 在软件中需要设计数据发送机制, 以保证数据传输的实时性和正确性。
发送定时器对发送的数据进行定时计数, 它是一种减法计数器, 当计数值变为0 时, 数据仍没有收到相应的应答, 表示发送的数据已经超过定时范围, 需要重发或丢弃。从常规上来说, 在发送一个数据的同时, 需要启动一个数据发送定时器, 如果在定时器时限范围内该数据被确认, 则关闭该定时器, 否则需要发送该数据( 并且该定时器重新开始计时) 。本文结合测控通信软件的特点, 发送定时器采用一种新的设计方法, 它包括发送缓冲区队列、发送定时器的定时算法、发送定时器的定时值、发送缓冲区的空间收集等四个模块。
2
(1)数据发送缓冲区队列
为了解决数据发送出现问题后重新发送数据, 创建一个发送缓冲区来存放数据副本。发送缓冲区队列的记录由五个字段组成,它们分别为DevNo 字段、Data 字段、DataType 字段、SendTimes 字段和OverTime 字段,发送缓冲区的大小由应用程序来决定。
①DevNo 字段:发送数据目的终端编号。Data 字段: 系统所要发送的数据; DataType 字段: 记录当前项Data 字段里数据的类型,用以加速与应答的匹配速度。
②SendTimes 字段:主要用来记录Data 字段中的数据可重发的次数, 同时它反映了相应数据项的状态, 数据每次重发一次, 它的值就会被减1。如果该字段的值变为0,则表示数据无法到达目的地址,应该丢失该数据, 并向上层模块通知出错信息; 如果该字段为- 1,则说明该数据已经成功到达对方并得到对方的应答; 如果数据发送超时, 只要该字段不为0, 即数据的重发次数没有超过规定的次数( 如: 3 次) , 数据将被重发, 并被重新压到队列尾部。
③OverTime 字段:说明该项数据距下次发送还剩余的时间单位数, 它是一个相对值。如果该字段的值变为0 且SendTimes 不为0,则重发此数据。
( 2) 发送定时器的定时算法
由于定时器的精确度要求相对比较高, 且维护频率比较频繁, 如果对每个数据都进行独立的计数器管理, 则会消耗系统的大量CPU 资源, 从而影响整个测控通信系统的效率和吞吐率, 因此本测控通信系统采用相对定时的方法, 即每个数据项的实际定时时间是前面的所有项的定时时间与本身的定时时间的总和。它的相对定时时间为2 个时间单位, 而它实际的定时时间为10+8+2+3+2+5+2=32个时间单位。 数据项的二元组分别表示数据的相对定时时间和数据剩余发送次数, 如二元组( 10, 0) 表示该数据相对的定时时间为10 个时间单元,而它的重发机会只有0 次了。也就是说,数据如果在其定时器时限范围内不能收到应答, 就可断定数据无法到达目的地, 将被丢弃。由于测控系统一般网络结构不是太复杂, 所以数据发送定时时间设为固定值, 从而可知先入队的数据肯定先超时, 不可能出现排在队列后面的数据比先前的数据更早地超时。这种计算定时时间的方法, 只有队列头所对应数据的定时时间是绝对值, 而其他数据的定时值全是相对值, 所以无论缓冲队列中有多少数据, 只要维护队列头指针所对应的数据项的定时器, 就可以完成维护所有数据定时器的任务, 从而减少了维护定时器的频率, 减轻了系统的工作量。
(3)发送定时器的定时值
前面提到本设计的定时值是固定的, 那么这个值应该设为多长? 这个时隔短会引起不必要的发送, 正如Jacobson 记述的那样,当网络已经处于饱和状态时, 不必要的发送会增加网络的负载, 对网络而言这就像在火上浇油一样; 时隔长会影响测控性能。
从理论上这个问题的解决方法是根据网络性能的不断测定, 通过一种动态的算法来不断调整, 才能达到一种最佳效果。如TCP 通常采用的Jacobson 算法, 对于每一条连接, 它保存一个变量RTT, 存放当前到目的端往返时间最接近的估计值, 当发送一个数据段, 同时启动相应的定时器后, 如果时间太长就触发重发机制。如果在定时器超过定时值之前得到了确认, TCP 测量该确认花费了多长时间( 假定为M) , 那么根据公式RTT=σRTT+(1- σ)M 来修正原有的RTT值。σ是一个推荐值为0.9 的平滑因子(Smoothing Factor) ,决定以前的RTT 值的权值(即所占比例)。但由于本测控通信系统路由器和网络流量均变化很小,同时为了减小系统的复杂度, 所以采用固定的定时值。经过测试得到数据在网络中一个往返传输时间的概率密度, 显然将定时值设为 40毫秒较合理, 因为在这个时间内, 绝大部分数据在网络没有故障的情况下都能够收到应答。研究与开发
(4)发送定时器的定时改进算法
从上面的定时算法可以看出, 其时钟的维护频率为一个计时单位(1ms),这样维护频率显然还是比较高。为了进一步减少定时器计数的维护频率, 使用定制时钟的方法, 即将队列头指针所对应的数据项的定时时间也改为相对值, 其值就是该项数据成为队列头时的时间。也就是说, 当一个数据移到队列头时, 就可以为其定制一个时钟, 其时钟的间隙即为该数据所对应的OverTime 字段值,这个时钟维护信息一到,队列头所对应数据肯定超时, 这样一个数据在一次发送过程中最多只会引发一次时钟维护, 大大降低了定时时钟的维护频率。设数据入队列的时刻为Ta,当前时刻为Tn,则当前数据已经逝去的时间为Tp=Tn- Ta。因此当数据入队列时, 操作与先前有所不同, 不能简单根据所有的OverTime 累加值来计算自己的相对值,而必须考虑Tp值:当数据由于超时重发而重新进入队列时, Tn= Ta, 即Tp=0, 计算方法与改进前无变化; 当新的数据入队列时, 则必须在改进前算法结果减去Tp值。再压入一个新的数据,则它的定时时间应为40- (10+8+2+3+2+5+2- Tp)=8+Tp。
当时钟维护信息到来时, 队列头数据项可能出现三种不同的情况, 第一种情况:数据已经收到应答, 但为了保持定时计数的准确性, 不是从缓冲队列中删除, 而是将数据直接出队, 不再保留该项数据; 第二种情况:数据没有收到相应的代应答, 但其发送次数没有超过规定次数( 如3 次) , 这计时将数据出队, 送到发送模块对数据进行发送, 数据
(5)发送定时器的发送缓冲区的空间收集
相对定时的算法有效地解决了维护多个定时器而使系统增加的系统运行压力, 同时也带来了一定的负面作用, 发送缓冲区队列是一个有限的空间, 而相对定时算法, 其定时计算与它前面的数据项有着紧密的联系, 因此不能随便地增减队列中的数据项, 否则将引起系统定时的混乱。也就是说即使某项数据已经收到了应答, 也不能马上从队列中删除, 所以在某些情况下会造成严重的资源浪费, 甚至会导致队列空间的不足, 无法容纳更多需发送的数据。缓冲区空间收集就是解决这个问题的, 它会在需要的情况下对缓冲区队列的空间进行重新整理,释放不必要的空间,以使缓冲区队列拥有最大的可利用的空间。
整理缓冲区队列空间最主要的整理对象就是那些已经收到应答, 但为了保持定时正确性而不得不留在缓冲区队列中的数据项, 将它们所占用的空间释放出来, 同时必须保证定时器的正确性。当清除一项数据时,该数据所对应的OverTime 值必须累加到下一个数据项上。队列的倒数第二项数据原来OverTime 值为10,在空间收集时,其前一数据项的空间被收集, 则前一项的相对定时值2被累加到该项上,故OverTime=OverTime+2=12。如果缓冲区队列中所有数据项都收到了应答, 则将缓冲队列清空。[4]