现在的位置: 首页 > 综合 > 正文

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

2014年01月19日 ⁄ 综合 ⁄ 共 836字 ⁄ 字号 评论关闭

一,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/ 

抱歉!评论已关闭.