博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP window size
阅读量:5933 次
发布时间:2019-06-19

本文共 976 字,大约阅读时间需要 3 分钟。

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的一个很重要的因素吧。

转载于:https://www.cnblogs.com/zzSoftware/archive/2013/04/11/3012938.html

你可能感兴趣的文章
OSGI企业应用开发(十二)OSGI Web应用开发(一)
查看>>
Python 以指定概率获取元素
查看>>
微信公众平台图文教程(二) 群发功能和素材管理
查看>>
linux用户添加组
查看>>
关于System.Collections空间
查看>>
关于教师一职的思考
查看>>
Android APP分享(第三方友盟)
查看>>
BZOJ 1193--马步距离
查看>>
Cookie、Session和自定义分页
查看>>
8086汇编语言 调用声卡播放wav文件(sound blaster)
查看>>
Java 面向对象
查看>>
java final static
查看>>
delphi公用函数
查看>>
java九阴真经
查看>>
数据结构和算法基础
查看>>
Spring事务管理2----编程式事务管理
查看>>
0417 jsBom操作+Dom再次整理
查看>>
面试中常见的 MySQL 考察难点和热点
查看>>
Oracle 导出空表的新方法(彻底解决)
查看>>
设置模式讲解-索引
查看>>