TCP window size

摘要:
我对WIFI协议有很好的理解,但我没有接触过TCP协议。当我在隧道WIFI吞吐量时,我遇到了TCPACK窗口大小的影响。如果TCP窗口太小,一次涌入WiFi的数据包数量太少,这使得无法充分利用WiFi的吞吐量。Tx的缓冲区大小是动态调整的,这受网络吞吐量和延迟的影响,特别是另一方的TCPACK。如果在一段时间内没有收到相应的TCPACK,则会发生重传。一旦发生重传,TCP窗口大小估计将减小。当然,TCP窗口过大也有其缺点。延迟可能会增加,因为一次向驱动程序抛出的数据包太多,导致驱动程序花费一些时间来发送数据包。

Win8,WinBlue对P2P这块很重视,加了很多P2P的功能,性能的测试。

自己对WIFI的协议比较了解,不过对TCP协议没接触过,在tune WIFI throughput的时候,遇到了TCP ACK windows size的影响。

TCP windows size太小的话,一次性灌到wifi的包数量太少,导致没法充分利用WIFi的吞吐量。

如果只有64k的windows size,那么一次性灌到diver只有40来个Packet(每个包1.4k左右)。

40来个包对于WiFi来说,两次aggregation,4ms不到就传完了,所以TCP stack反而成了bottle neck。

TCP的Windows size取决于两个值,对方Rx的buffer size, 自己Tx的buffer size,并且取Min(Rx,Tx).

Rx的buffer size应该是起socket的时候固定配好的,估计不少程序默认都是64k吧。

Tx的buffer size是动态调整的,受网络throughput,latency等影响,尤其是对方的TCP ACK.

如果一段时间内没收到对应的TCP ACK,那么就会发生重传,一旦发生重传,TCP的windows size估计就会减小。

在我的环境下,由于WiFi需要同时在不同的信道上支持多个连接,legacy的AP,有需要支持P2P联系,类似于虚拟了块无线网卡吧。

有时候不可避免,TCP在Driver Pending的时间会比较长,可能Tx在发完一个TCP Packet之后,需要等80ms才能收到对方的TCP ACK.

有时候Tx等不及这么长时间,就TCP 重传了,Windows size自然就下来了,throughput也跟着下来。

当然,WiFi基于无线,有时候也会发生丢包,那么也会导致TCP重传。

当然TCP window过大也有坏处,latency可能会增加,因为一次性丢给driver太多的包,导致driver需要花费些时间来发送这个包。

Window Size的存在,估计是TCP的throughput比不上UDP的一个很重要的因素吧。

免责声明:文章转载自《TCP window size》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇维纳滤波(1)C#控制台进度条(Programming Progress bar in C# Consle application)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Zabbix故障处理系列

然后,您还需要重新启动zabbix porxy。我刚重启了zabbix特工。然而,Zabbix网络界面的图形中没有数据。此时,重新启动zabbix代理以解决相应的问题。Zbx在Zabbix监控的网页上也显示为灰色。有时,其中一些可能是绿色的,如下所示:问题2:当Zabbix代理未升级时,无法在Zabbix监控页面上监控数据。原因:ZABBIX4.0版本存在兼...

Notepad++正则表达式查找替换文本中文字符

测试需求测试工具中xml配置文件中的注释字段包含中文字符。Win10系统中使用的工具中偶尔会出现中文乱码,导致配置文件无效。解决方案是将配置文件中的中文注释替换为英文注释,或者直接替换和删除。如何查找和删除配置文件中的汉字?“记事本”中使用正则表达式[^x00 xff]来匹配汉字。替换完成如下3。所有汉字已被替换。...

DB2锁表或超时解决方案

命令如下:db2"forceapplication"4、使用命令listapplication查看是否已经断开了哪些进行了死锁的进程。...

Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud的jar包

Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud jar包1.手动逐个启动:nohupjavajarurekaserver。jar˃../logs/eurekaserver.log2˃&1&nohupjavajarconfigserver。jar˃../logs/configserver.log2˃&a...

不同版本的Unity要求的NDK版本和两者对应关系表(Unity NDK Version Match)

下面介绍方法来获取Unity需要的ndk版本。Unity2019和Unity2020要求的NDK19.0下载地址:https://dl.google.com/android/repository/android-ndk-r19-windows-x86_64.zip手动修改ndk版本号这个方法是修改ndk的属性文件,把版本号修改为unity要求的版本号,我这样...

天猫魔盒TMB100C短接刷机教程

你需要先制作一个TF卡引导盘。a、 解压缩SDcardMaker.rar,双击以运行SDcardMaker.exe(建议操作系统使用Windows XP,Windows Vista及以上系统应以管理员身份运行。不支持Windows 8)。b、 选择SD卡对应的驱动器号,然后根据提示将其格式化为FAT32,以制作引导卡。将recovery.img复制到SD卡;...