netstat -s输出解析(一)


当执行以下命令查看netstat统计信息来源时,发现一个重要的来源是/proc/net/snmp接口的输出信息
因此在刨根问底分析源码的过程中,找到了这个接口对应的RFC2012文档。本wiki就记录下
相关的解读,以便后续更加透彻的立即netstat的统计信息。

# strace -e open netstat -s

注:netstat -s的另一个重要的数据来源是/proc/net/netstat下的信息,但鉴于
该接口信息量较大,因此会单独独立整理。

Read More

阅读周记(第一期)


Save Some Bandwidth By Turning Off TCP Timestamps

想法: tcp timestamp选项会引入额外的12字节的包头开销,因此关闭tcp timestamp选项理论上能够少量的提高有效数据的吞吐率
评测: 使用qperf benchmark评测关闭tcp timestamp后,能提升大约1%的吞吐率
      对于10GE NIC,关闭timestamp能将下载速度从9370Mbits/s提升至9460Mbits/s
点评: 关闭timestamp正常情况下确实能提高有效数据的吞吐率,但在某些情况下可能就不那么理想了。
      比如timestamp提出的初衷之一就是解决RTT测量不准,导致spurious retransmission的情况。如果关闭timestamp导致了更多的RTO,则肯定是划不来的。  
      正如文中建议的:
        Results show that it is reasonable to turn off timestamps on 10GE interfaces, 
        but keep in mind that it should be performed only in low latency networks.
      使用10GE网卡是为了1%的提升效果更明显,强调低延迟是因为RTO有系统最小值200ms限制。低延迟下更难出现spurious retransmission

相关阅读:
Is it fine to turn off tcp window scaling and tcp timestamps on server?
What benefit is conferred by TCP timestamp?

Read More

聊一聊重传次数


RTO的计算方法中,介绍了RFC6298对于RTO的计算和RTO timer的管理算法。
但有一个重要的问题RFC没有提到,那就是如果出现了超时重传,那重传多少次可以放弃呢?
当然这是一个实现相关的细节,不同的操作系统可能有不同的实现策略。
在这篇wiki中,就来介绍一下Linux中是怎么限制超时重传次数的。

Read More