下载极限速度如何达到?----快速回ACK

怎么测试一个设备下载速度的极限?

** 测试场景 **

通过 http 或者 FTP下载,客户端查看下载速率,
查看设备能够达到的下载极限是多少?
这方面专门有个标准-----TR143协议文档

为什么主要关注下载速率?
普通终端用户,绝大部分场景是下载,看网页是下载,看视频也是下载,点播节目还是下载,上传也有,但是不构成瓶颈。

设备下载速率慢的原因是什么呢?
这个原因与环境相关的因素有很多,网络环境中丢包,乱序,服务器或者终端拥塞……,一个与环境无关的一个重要因素是 客户端的报文的处理流程太长.

要想到达极限速率,外在因素需要尽量排除环境的影响。内在因素需要减少TCP报文,在终端的处理流程。

具体来看,在物理端口收到报文之后,都要经过,下面几个步骤:
L1-->L2-->L3-->L4-->CPU-->L4-->L3-->L2--L1 的层层解析,层层处理,最后再发出设备。

已有的优化流程
首包走全流程,后续包从2.5层快转掉。

在下载的流程中,只有首包(第一个出的TCP SYN报文),需要走这个过程,但是建立TCP链接之后,就没有必要走全部的流程了.

通过第一个报文(首包)记录下来,SMAC, DMAC,SIP,DIP,Sport,Dport,也就是说的五元组。

其实不止这些东西,还有VLAN,pppoe的sessionId等,记录这些的目的是为了在这个TCP连接里面的其他报文没有必要再走一遍首包的流程,只用按照首包的流程转发就可以了.

这里还要注意要想达到极限的下载速度,就要快速回ACK,因此ACK里面的信息一定是需要的 .

还要考虑其他情况,
比如分片报文:
分片报文对首包,回复ACK,非首包就不用回复了.
非测速报文:
不进入,测速的缓存收包队列
滑动窗口也要能动态的调整

重传的情况?
重传的报文直接丢弃,怎么判断重传,根据序列号来,如果序列号小于当前就丢弃,那么序列号翻转的情况呢?----翻转的流程要放在这个的前面处理

怎么才能做好这个需求?

1:熟悉TCP的流程,怎么才能熟悉TCP的流程?
对着TCP/IP 卷一里面TCP章节的内容,看看各个过程中的注意事项.

怎么创建环形队列?
怎么在环形队列中插入删除?
不能进入环形队列的报文需要丢弃还是缓存?如果是缓存缓存队列多大?
为了提高效率,环形队列中申请的内存不能释放,需要增加内存使用与否的标记.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,099评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,138评论 6 174
  • 20.1 引言 在第15章我们看到TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送...
    张芳涛阅读 888评论 0 2
  • 紧张的感觉挥之不去。
    统一冰红茶阅读 246评论 0 1
  • “崔小姐。因为不容易 所以怕失去”“我一直在你左右”“没有不相信,但就是心慌”“慌的噶卵哒”“我没有做好,让你觉着...
    豆豆叔叔阅读 295评论 0 1