为 TCP 的重新传输实现更低的计时器粒度
2008-08-23 08:18:30 来源:WEB开发网A. 触发低 RTO 特性 连接的重新传输计时器首次计时到期,或者 打开了快速重新传输阶段。您为这个连接启用了更低粒度的重新传输计时器,并重新发送数据包。因为这是一次重新传输,所以您没必要为了响应时间跟踪 (RTT) 计算而对这个分段进行计时。通过将该计时器插入到计时器轮中合适的槽位来启动重新传输计时器。 B. 确认接收 接收到重新传输数据包的确认。删除重新传输计时器(从计时器轮中删除该计时器)。 C. 对分段进行计时 使用序列 'b' 发送一个分段,并且启动重新传输计时器。您可以通过存储时间戳对这个分段进行计时,以用于 RTT 计算。通过将该计时器插入到计时器轮中合适的槽位来启动重新传输计时器。 D. 处理计时分段接收到的 ACK 带有确认 'c' 的 ACK 比接收到的 'b' 更大。通过将计时器从计时器轮中删除,您可以停止重新传输计时器。当使用序列 'b' 发送该分段的时候,测量新的 RTT,使用当前时间减去存储的时间戳。所测量的 RTT 用于计算新的重新传输超时值。 E. 使用 RTO(作为每个低 RTO 特性进行计算)传输分段 将重新传输计时器插入到计时器轮中合适的槽位。 F. 重新传输计时器计时到期 一个使用计时器轮算法的连接的重新传输计时器计时到期。指针在计时器轮中移动到先前插入重新传输计时器的槽位。调用一个计时器处理例程以处理重新传输计时器的计时到期。
总结
使用计时器轮方法,在启动和停止计时器时将付出很大的代价。如果将槽位中的计时器实现为链表,那么在向该列表添加计时器或者从该列表删除计时器时,必须使用槽位链锁对其进行同步操作。
另一方面,使用计时器轮算法实现重新传输计时器,具有减少每个计时单元处理开销的优势。使用计时轮,当指针到达某个槽位时,只有该槽位中的计时器计时到期。您不需要扫描所有的 PCB,以检查为各个连接所设置的计时器。
更低粒度的计时器实现允许管理员配置低至 10 毫秒的 RTO 值。对于在高速的和低延迟的网络(如千兆位的和万兆位的以太网,可能会出现丢包的情况)中运行的 TCP 连接来说,这是特别有用的。
更多精彩
赞助商链接