美文网首页
实验1:tcp+路由器队列(过大)=bufferbloat问题

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

作者: 小咕咕coco | 来源:发表于2020-04-14 18:35 被阅读0次

    原理概述:

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

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

    • 拥塞窗口继续增加
    • 队列中开始堆积数据包
    • 吞吐率保持不变,延迟一直上升(因为包在堆积)

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

    • TCP传输通过控制拥塞窗口降低传输速率
    • 释放队列,降低延迟

    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——画图
    • 处理(删删减减,留下画图数据):(sublime

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

    1. 按下option键,可按列选取
    • 导入:numbers不行,wps的表格可以,分割什么的都很好用
    • 画图:用了散点和折线,先选数据,再插入图表

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/mcatvhtx.html