为 TCP 的重新传输实现更低的计时器粒度
2008-08-23 08:18:30 来源:WEB开发网核心提示: 使用重新传输计时器来实现更低粒度的一种方式是,使用 TCP 的快速计时器(200 毫秒),为 TCP 的重新传输实现更低的计时器粒度(2),可以将其缺省值设置为 50 毫秒,取代了原来的 200 毫秒,目前,指针处于槽位 1,这种方法所带来的缺点是,处理以更高的速率扫描所有协议控制块 (P
使用重新传输计时器来实现更低粒度的一种方式是,使用 TCP 的快速计时器(200 毫秒),可以将其缺省值设置为 50 毫秒,取代了原来的 200 毫秒。这种方法所带来的缺点是,处理以更高的速率扫描所有协议控制块 (PCB) 的开销。PCB 是为连接保存控制信息的一种内部结构。本文说明了基于计时器轮算法实现 TCP 的重新传输计时器的一种备选方法。
计时器轮算法
一个计时轮包含 N 个槽位。一个槽位代表一个时间单元,如 si(槽位时间间隔)。每经过一个时间单元,计时轮中的指针移动一个位置,就像时钟中的秒针一样。当指针移动到一个槽位时,例如 cs(当前槽),这表示在这个槽位中的计时器列表(如果存在的话)立即计时到期,或者当指针在后续周期中到达相同槽位时计时到期。
在将具有某个计时间隔的新的计时器,如 ti(时间间隔),添加到这个计时器轮时,将计算出这个新计时器的槽位 ts(计时器槽位),具体如下所示:
ts = ( cs + (ti / si)) % N
假定所有计时器的最大计时时间间隔都不超过某个上限(tmax)。如果 N 足够大,能够在从当前指针位置开始的一周之内容纳 tmax,那么当指针移动到一个特定的槽位时,该槽位中的所有计时器立即同时计时到期(而不是后继周期)。这样可以避免遍历该列表以检查现在哪些计时器计时到期,以及在后继周期中哪些计时器将计时到期。
例如,在下面的图 1 所示的计时轮中,共有 8 个槽位,编号从 0 到 7。您可以观察以槽位 1、3、5、4 和 6 为中心的计时器条目。目前,指针处于槽位 1。以该槽位为中心的三个计时器将立即计时到期、或者在后继周期中当指针达到相同槽处时计时到期。
图 1. 计时轮
更多精彩
赞助商链接