为 TCP 的重新传输实现更低的计时器粒度
2008-08-23 08:18:30 来源:WEB开发网使用实现重新传输计时器的计时器轮算法来减少每个计时单元 (tick) 处理的开销。AIX® 传输控制协议(Transmission Control Protocol,TCP)共有七个计时器(每个连接),并使用全局计时器函数和两种粒度来实现这些计时器。在本文中,将研究如何通过使用 AIX TCP 快速计时器使重新传输计时器实现更低的粒度,并了解使用更低的计时器粒度的其他优点。
引言
AIX® 传输控制协议(Transmission Control Protocol,TCP)为每个连接维护七个计时器:
连接建立 (Connection establishment)
重新传输 (Retransmission)
延迟确认(Delayed acknowledgment,ACK)
持续 (Persist)
保持连接 (Keepalive)
FIN_WAIT_2
TIME_WAIT
为了实现这些每个连接都包含的计时器,TCP 使用了一些全局计时器函数,它们提供了两种粒度:
tcp_fasttimo:每 200 毫秒调用它一次,并实现了快速计时器。
tcp_slowtimo:每 500 毫秒调用它一次,并实现了慢速计时器。
在 TCP 的重新传输计时器实现中,将重新传输超时存储于 TCP 控制块的计时单元中,其中一个计时单元 = 500 毫秒。当 TCP 的慢速计时器每隔 500 毫秒计时到期的时候,将调用 tcp_slowtimo。这个例程将遍历 TCP 控制块表,并且对每个连接的超时(以计时单元为单位进行指定)进行递减操作,即每次减一。当计时器的计时单元数达到零时,它将调用超时处理程序例程为该连接处理相应的超时。这个实现要求 TCP 计时器的下限为 500 毫秒。
正如您所知道的,TCP 根据所测量的往返时间,动态地计算超时。目前,TCP 重新传输超时的最小时间为 3 秒。然而,对于一些高速网络,如千兆位的以太网和万兆位的以太网,预期的往返时间(因此重新传输超时)要低得多。如果不进行传输,那么每秒钟将损失掉 120MB 的吞吐量。因此,我们需要一种更好的方法来处理高速的和低延迟的网络。
更多精彩
赞助商链接