摘要: 我们之前介绍SACK选项的时候说过,SACK可以把接收端系列号空间的洞反映给发送端,因此发送端可以更充分的理解接收端的情况,而进行更好的重传恢复过程。这种过程有时候也叫做advanced loss recovery。 一、数据接收端SACK行为 我们通过一个wireshark示例来说明接收端的SAC 阅读全文
posted @ 2016-11-07 13:51 lshs 阅读(10897) 评论(20) 推荐(6)
摘要: 一、快速重传介绍 按照TCP协议,RTO超时重传是一个非常重要的事件,当RTO超时的时候,TCP会同时通过两种方式非常谨慎的降低发送数据包的速率,一种是基于拥塞控制削减发送窗口的大小,另外一个是通过指数回退增加每次RTO超时的时间(即karn算法的第二部分)。所以RTO超时后有可能会导致网络容量的利 阅读全文
posted @ 2016-11-07 13:51 lshs 阅读(13661) 评论(0) 推荐(1)
摘要: 之前我们介绍的都是协议中给出的RTO计算方法,下面我们看一下linux实现中RTO的计算方法。在linux中维护了srtt、mdev、mdev_max、rttvar、rtt_seq几个状态变量用来计算RTO,其中linux实现中的mdev变量相当于协议中的RTTVAR变量。rtt_seq状态变量用来控制一个RTT时间窗,linux在一个RTT时间窗内部更新状态变量的方式与RTT时间窗结束更新状态变... 阅读全文
posted @ 2016-11-07 13:50 lshs 阅读(4573) 评论(2) 推荐(0)
摘要: 1、查看是否打开了coredump lybxin@Inspiron:~/MyRes/miscellany/test/01_coredump$ulimit -c #这里可以看到ulimit限制coredump的产生 0 lybxin@Inspiron:~/MyRes/miscellany/test/0 阅读全文
posted @ 2016-11-07 13:50 lshs 阅读(2492) 评论(0) 推荐(0)
摘要: 一、Karn算法 在RTT采样测量过程中,如果一个数据包初传后,RTO超时重传,接着收到这个数据包的ACK报文,那么这个ACK报文是对应初传TCP报文还是对应重传TCP报文呢?这个问题就是retransmission ambiguity problem。当没有使用TSOPT选项,单纯的ACK报文并不 阅读全文
posted @ 2016-11-07 13:48 lshs 阅读(5639) 评论(4) 推荐(1)
摘要: 从上一篇示例中我们可以看到在TCP中有一个重要的过程就是决定何时进行超时重传,也就是RTO的计算更新。由于网络状况可能会受到路由变化、网络负载等因素的影响,因此RTO也必须跟随网络状况动态更新。如果TCP过早重传,则可能会向网络中注入很多重复报文,如果过晚重传,则在丢包时候则会影响滑窗前行可能会降低 阅读全文
posted @ 2016-11-07 13:48 lshs 阅读(8124) 评论(1) 推荐(1)
摘要: 在前面我们概述了TCP的超时重传之后我们简单的看一下tcp超时重传的示例。首先简单的描述一下测试过程1、设置/proc/sys/net/ipv4/tcp_early_retrans为2,关掉TLP功能(后面内容介绍TLP)。设置/proc/sys/net/ipv4/tcp_retries2为8,减少重传次数,这样方便wireshark抓包演示。同时设置/proc/sys/net/i... 阅读全文
posted @ 2016-11-07 13:47 lshs 阅读(10991) 评论(4) 推荐(0)
摘要: 在最开始介绍TCP的时候,我们就介绍了TCP的三个特点,分别是面向连接、可靠、字节流式。前面内容我们已经介绍过了TCP的连接管理,接下来的这部分内容将会介绍与TCP可靠性强关联的TCP重传。 很多网络协议都提供了checksum或者CRC手段来检测收到的数据包是否发生错误,但是检测到数据包错误后很多协议都不会进行重传等操作来可靠的修复错误。例如常见的IP和UDP协议完... 阅读全文
posted @ 2016-11-07 13:45 lshs 阅读(5760) 评论(1) 推荐(1)
摘要: 这部分内容涉及较多linux实现,可以跳过。一、listen系统调用对backlog的处理当socket处于LISTEN或者CLOSED状态时,fastopen队列的长度可以通过TCP_FASTOPEN选项进行设置。对于listen的入参backlog,内核会限制backlog=min(backlog,/proc/sys/net/core/somaxconn)如果当前打开了TFO的server端开... 阅读全文
posted @ 2016-11-07 13:44 lshs 阅读(3373) 评论(2) 推荐(0)
摘要: 整理自man 8 crash 1、简介 Crash工具可以用来分析一个正在运行的内核,也可以用来分析一个内核的crash dump文件,这里说的是内核代码异常产生的crash dump文件,不是应用层程序运行异常产生的core dump文件,它支持分析由netdump, diskdump, LKCD 阅读全文
posted @ 2016-11-07 13:43 lshs 阅读(6081) 评论(0) 推荐(0)