您的位置:首页 > 理论基础 > 计算机网络

linux kernel 3.6版本网络子系统新特性 - TCP

2013-03-19 12:49 387 查看
一,TCP fast open 客户端实现

这个特性是google提出并主导开发的。实现的原理是对于客户端允许发送syn请求时携带数据, 对于服务器端收到带有数据的syn请求后,可以立刻提交给用户层,并发送ack, 这样节省一个RTT时间。

这个特性对于短连接的业务类型比较有很大的帮助,据测试结果有4%~41%的性能提升。

这个特性需要客户端和服务器端的os都支持,并且未知window何时才支持这个特性。

另外,这个特性需要业务用户层代码相应的调整。估计在全网使用开还需要一定时间。

但是,对于手持设备,特别是基于android系统智能机而言,随着android内核分支逐渐向主线靠拢,

可以预见最先开疆扩土,并得到这个特性带来收益的将是基于linux的android上应用。

二,TCP small queues TCP小队列。

这个机制是用来针对缓存膨胀(bufferbloat),意思是在tcp传输路径中有中很多的缓存,比如socket buffer,qdisc的队列buffer,网卡驱动层也有队列buffer。 而这些buffer会缓存住数据包,但是对于tcp协议层而言,可能已经认为数据包已经发送到网络中,会增加数据包传输的rtt时间,而可以自定义的socket buffer 大小,qdisc队列长度,会膨胀放大延时。因此,可以通过tcp_limit_output_bytes这个proc参数让用户限制qdisc的队列和驱动层队列中所有数据包的总字节数,
默认是131072字节。

对于同等的带宽,启动这个功能后,延时变化情况:

1000M网卡: 小于 1ms on Gbit (之前是 50ms with TSO)

100M网卡: 小于 8ms on 100Mbit (之前是 132 ms)



针对缓存膨胀的其他方法是codel qdisc策略,以及基于字节的bql qdisc策略。

参考:https://lwn.net/Articles/507065/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: