WEB开发网
开发学院操作系统Linux/Unix 为 TCP 的重新传输实现更低的计时器粒度 阅读

为 TCP 的重新传输实现更低的计时器粒度

 2008-08-23 08:18:30 来源:WEB开发网   
核心提示:使用实现重新传输计时器的计时器轮算法来减少每个计时单元 (tick) 处理的开销,AIX® 传输控制协议(Transmission Control Protocol,为 TCP 的重新传输实现更低的计时器粒度,TCP)共有七个计时器(每个连接),并使用全局计时器函数和两种粒度来实现这些计时器,那么每秒钟将损失掉

使用实现重新传输计时器的计时器轮算法来减少每个计时单元 (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 的吞吐量。因此,我们需要一种更好的方法来处理高速的和低延迟的网络。

1 2 3 4  下一页

Tags:TCP 重新 传输

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接