为 TCP 的重新传输实现更低的计时器粒度
2008-08-23 08:18:30 来源:WEB开发网核心提示: 使用计时器轮算法的 RTO 实现这个部分说明了在 AIX 中使用计时器轮算法的重新传输超时 (RTO) 实现,在 AIX 中,为 TCP 的重新传输实现更低的计时器粒度(3),将计时器轮中的槽位数目选择为 N=7000,该计时器轮实现的槽位时间间隔 (si) 可以使用 no 选项和 tim
使用计时器轮算法的 RTO 实现
这个部分说明了在 AIX 中使用计时器轮算法的重新传输超时 (RTO) 实现。在 AIX 中,将计时器轮中的槽位数目选择为 N=7000。该计时器轮实现的槽位时间间隔 (si) 可以使用 no 选项和 timer_wheel_tick 来进行配置。timer_wheel_tick 的取值范围从 0 到 100 个计时单元,其中每个计时单元 = 10 毫秒。因此,如果将 timer_wheel_tick 设置为 1,例如 10 毫秒,那么该计时器每个周期的计时时长是 N x si = 70 秒。因为 AIX TCP RTO 的最大值 (tmax) 是 64 秒,所以这个值足够大,可以确保在一个槽位中所有的重新传输计时器同时计时到期,而不需要等到后继的周期。
可以使用 no 选项和 tcp_low_rto 来配置 RTO 值。tcp_low_rto 的取值范围从 0 到 3000 毫秒。如果配置了该值,那么会将这个 RTO 值设置为该系统中所有 TCP 连接的初始重新传输超时。
即使配置了 tcp_low_rto,也只有在出现丢包的情况下,该算法才会对连接生效,如下面的图 2 所示。否则,使用这个算法是无效的。在重新传输计时器实现(用于未出现丢包情况的连接)的传统方法中,您所需要做的是,在 TCP 的控制块中设置计时单元数以启动重新传输计时器。当确认信息到达的时候,通过将该值设置为 0 来停止重新传输计时器。在重新传输计时器不可能计时到期的情况下,使用这一方法来进行启动或者停止是最有效的。
您可以继续使用重新传输计时器实现的传统方法,直到出现下面的任何一种情形为止:
重新传输计时器计时到期
对于某个连接,打开了快速重新传输阶段
图 2. 低粒度连接
更多精彩
赞助商链接