原理概述:
- 路由器中设置了缓存队列(为了不丢包?),发送量大于BDP(时延带宽积)时并不丢包
- TCP协议通过拥塞窗口控制发送速率,如果不丢包,就一直增加拥塞窗口
——进而
当单位时间内数据包发送量位于BDP~BDP+bufsize之间时:
- 拥塞窗口继续增加
- 队列中开始堆积数据包
- 吞吐率保持不变,延迟一直上升(因为包在堆积)
直到超过BDP+bufsize开始丢包:
- TCP传输通过控制拥塞窗口降低传输速率
- 释放队列,降低延迟
bufferbloat问题就是这种周期性的RTT增加,如图:
以下分别为拥塞窗口、队列长度、rtt随时间的变化
图片1.png
解决策略也可以从产生原因的几个方面考虑,比如改进tcp机制,改进队列(长度/管理)。实验这里只讨论了几种队列管理策略,统一思路是,试图在满之前(RTT很大之前)通知(通过丢包)tcp,使其及时控制拥塞窗口 ,降低流量,缓解rtt上升
主要管理策略:taildrop、RED、Codel,具体内容略
效果如下:(纵轴可以视为rtt
image.png
可以看出:
- taildrop的效果并不理想,无法避免某些带宽下高延迟的出现
- RED相比taildrop效果有显著提升,但是并不稳定,在某些带宽下效果不明显,甚至不如taildrop
- DoRel的效果相对较明显且稳定
实验过程
- mininet+python脚本的使用:
- 脚本可以看懂逻辑的,老师课上也会介绍,自己稍微理理思路可以回看课件,就懂个大概了。
- 然后明晰要做的事情,抽数据,一步一步来。
- 数据处理——导入excel——画图
- 处理(删删减减,留下画图数据):(sublime
1.删除包含某个关键字的行:
选中该关键字-->Ctrl + CMD + G (Quick find all)-->CMD + L (Expand selection to line)-->按下Delete键删除即可
- 按下option键,可按列选取
- 导入:numbers不行,wps的表格可以,分割什么的都很好用
- 画图:用了散点和折线,先选数据,再插入图表
网友评论