linux tcp窗口大小设置,高性能Linux:TCP/IP内核参数调优之TCP窗口扩大因子(TCP Window Scaling)选项(理论篇)...

TCP报文窗口字段介绍

在TCP报文头部,有一个16比特的窗口字段,用来表示接受方的缓冲区大小,发送方可以根据这个值的大小来调节发送的数据量,从而起到流控的目的。

443a143303a298c130b545dc84ab6fb9.png

TCP的流量控制由连接的每一端通过声明的窗口大小来提供 。窗口大小为字节数 ,起始于确认序号字段指明的值,这个值是接收端期望接收的字节。窗口大小是一个16 bit字段,因而窗口大小最大为65535字节。

窗口大小对性能的影响

TCP基于通告窗口大小的机制,运行发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。TCP传输速率和窗口大小成正相关,在某些情况下,提高窗口大小能够提高传输速率。但TCP窗口大小只有16bit,最大表示65535字节,对当前千兆接口已经是标配,在数据中心对服务器上开始部署10G接口的现实情况下,65535字节的窗口显然是不够的。

窗口扩大因子

TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节。RFC 7323 TCP Extension for High Performance中对相关选项进行了详细介绍,更详细信息可参考这个文档。

9e727dc51179d64cb57b91b1d185ec13.png

常见对TCP选项有7种,其中kind=3是窗口扩大因子选项。TCP连接初始化时,通信双方使用该选项来协商接收通过的窗口扩大因子。假设TCP头部中的通告窗口大小为N,窗口扩大因子(位移数)是M,那么TCP报文段的实际接收通告窗口大小为:N * (2 ** M)。M的取值范围为0 ~ 14。这样的话,通告窗口最大约为1GB,能够满足大部分应用的需求。

Linux下如何使能窗口扩大因子

从Linux内核2.6.8以后,TCP窗口扩大因子功能缺省是使能的。可以通过下面的命令来查看和设置:

cat /proc/sys/net/ipv4/tcp_window_scaling

echo "1" > /proc/sys/net/ipv4/tcp_window_scaling

参考资料

TCP/IP详解,卷一,第1版

RFC 7323 TCP Extension for High Performance

欢迎关注个人公众号

501639.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值