其中:UBOUND是RTO值的上限;例如:可以定义为1分钟,LBOUND是RTO值的下限,例如,可以定义为1秒;ALPHA is a smoothing factor (e.g., .8 to .9), and BETA is a delay variance factor (e.g., 1.3 to 2.0)。
SYN半连接队列的作用:
对于SYN半连接队列的大小是由(/proc/sys/net/ipv4/tcp_max_syn_backlog)这个内核参数控制的,有些内核似乎也受listen的backlog参数影响,取得是两个值的最小值。当这个队列满了,Server会丢弃新来的SYN包,而Client端在多次重发SYN包得不到响应而返回(connection time out)错误。但是,当Server端开启了syncookies,那么SYN半连接队列就没有逻辑上的最大值了,并且/proc/sys/net/ipv4/tcp_max_syn_backlog设置的值也会被忽略。
accept连接队列:
accept连接队列的大小是由backlog参数和(/proc/sys/net/core/somaxconn)内核参数共同决定,取值为两个中的最小值。当accept连接队列满了,协议栈的行为根据(/proc/sys/net/ipv4/tcp_abort_on_overflow)内核参数而定。 如果tcp_abort_on_overflow=1,server在收到SYN_ACK的ACK包后,协议栈会丢弃该连接并回复RST包给对端,这个是Client会出现(connection reset by peer)错误。如果tcp_abort_on_overflow=0,server在收到SYN_ACK的ACK包后,直接丢弃该ACK包。这个时候Client认为连接已经建立了,一直在等Server的数据,直到超时出现read timeout错误。