实验1:tcp+路由器队列(过大)=bufferbloat问题

2020-04-14  本文已影响0人  小咕咕coco

原理概述:

  1. 路由器中设置了缓存队列(为了不丢包?),发送量大于BDP(时延带宽积)时并不丢包
  2. TCP协议通过拥塞窗口控制发送速率,如果不丢包,就一直增加拥塞窗口
    ——进而

当单位时间内数据包发送量位于BDP~BDP+bufsize之间时:

直到超过BDP+bufsize开始丢包:

bufferbloat问题就是这种周期性的RTT增加,如图:
以下分别为拥塞窗口、队列长度、rtt随时间的变化


图片1.png

解决策略也可以从产生原因的几个方面考虑,比如改进tcp机制,改进队列(长度/管理)。实验这里只讨论了几种队列管理策略,统一思路是,试图在满之前(RTT很大之前)通知(通过丢包)tcp,使其及时控制拥塞窗口 ,降低流量,缓解rtt上升

主要管理策略:taildrop、RED、Codel,具体内容略
效果如下:(纵轴可以视为rtt


image.png

可以看出:

  1. taildrop的效果并不理想,无法避免某些带宽下高延迟的出现
  2. RED相比taildrop效果有显著提升,但是并不稳定,在某些带宽下效果不明显,甚至不如taildrop
  3. DoRel的效果相对较明显且稳定

实验过程

  1. mininet+python脚本的使用:
  1. 数据处理——导入excel——画图

1.删除包含某个关键字的行:
选中该关键字-->Ctrl + CMD + G (Quick find all)-->CMD + L (Expand selection to line)-->按下Delete键删除即可

  1. 按下option键,可按列选取
上一篇下一篇

猜你喜欢

热点阅读