TCP Fast Open是啥

TCP Fast Open,以下简称TFO,即TCP快速打开,是TCP连接的一种简化握手手续的拓展,用于提高两端点间连接的打开速度

正常情况下,服务端和客户端相互建立连接需要握手三次,这会导致延时,启用 TFO 后,如果验证成功,它可以在三次握手最终的ACK包收到之前就开始发送数据,这样便减少了连接延迟

需要注意的是,TFO只是 降低了握手阶段的延迟,至于握手成功后数据传递的速度,和 TFO 没有关系

如何开启

首先检查一下服务器现在的状态

cat /proc/sys/net/ipv4/tcp_fastopen

将会返回一个数字,分别代表:

  • 0:关闭
  • 1:仅在传出连接上启用
  • 2:仅在侦听套接字上允许TFO
  • 3:客户端和服务端都启用TFO

更改设置的方法为:执行并在/etc/rc.local中添加

echo 'net.ipv4.tcp_fastopen=3' > /etc/sysctl.d/98-tcp_fastopen.conf

测试

测试客户端是否正常启用TFO:

运行几次curl --tcp-fastopen www.google.com

再运行ip tcp_metrics show | grep "fo_cookie"

如果有输出,则配置正确

Nginx设置

打开网站配置文件,在listen xxx后加上fastopen=[快速打开队列最大长度]

 

发表回复

您的电子邮箱地址不会被公开。