目录
环境(详细说明实验运行的操作系统,网络平台,机器的配置)
- 主机操作系统WIN10
- 开源虚拟机管理软件Oracle VM VirtualBox
- GNS3网络平台
- SEED Ubuntu16.04 32bit虚拟机
实验目的
- 掌握实验网络配置
- 理解Linux内核支持的三种拥塞控制算法
- 掌握通过对每种拥塞控制算法进行性能测试的方法步骤
- 对实验结果进行分析和比较三种拥塞控制算法
实验步骤(包括主要流程和说明)
GNS3下的TCP Congestion测试
- VirtualBox中通过完全复制来创建3个虚拟机(SEED-Client、SEED-Router、SEED-Server)
- 在GNS3中创建一个新项目,并为每个虚拟机配置3个网卡
- 将三台SEED虚拟机按照如图方式连接起来并启动,第一个网卡不在GNS3中使用,以便可以连接外网
- 在VirtualBox中为每个虚拟机配置eth0网卡,
- 检查是否可联网,如果网络不稳定,可能是由于主机网络不稳定导致
- 分别为三个虚拟机配置ip和路由
Client:192.168.1.2
Router:192.168.0.1和192.168.1.1
Server:192.168.0.2
- 测试三台虚拟机是否能ping通
- 在SEED-Client和SEED-Server上安装iperf软件
设置SEED-Client共享文件夹
Linux下的TCP拥塞控制算法=cubic
- 列出Client和Server所有直接编译到内核的拥塞控制算法并且修改当前的拥塞控制算法为cubic
- 在SEED-Server端开启iperf的服务器,让其运行守护在5001端口
- 在SEED-Client端运行以下命令,利用Linux内核tcp_probe模块监控连接中的参数变化。
- 观察tcp拥塞控制窗口变化情况
- 在SEED-Router连接SEED-Server网卡上设置
- 设置丢包为4%
- 设置延迟为30ms 10ms
- 设置丢包为%2
- 设置延迟为40ms 10ms
Linux下的TCP拥塞控制算法=reno
- 修改SEED-Client
- 修改SEED-Server
- 修改丢包和延迟操作均相同
Linux下的TCP拥塞控制算法=westwood
- 修改SEED-Client
- 修改SEED-Server
- 修改丢包和延迟操作均相同
实验结果和分析
文件数据总览
Cubic拥塞控制算法
延迟由30ms增加到40ms时,拥塞窗口变大,并且只有当发生丢包时拥塞窗口才会降低,如上图cubicdely30ms 10ms发生丢包,于是窗口降低。对比发现cubic算法的拥塞窗口会随时延的增大而增大。
增加丢包率,拥塞窗口大小基本处于较低水平,对比发现cubic算法的拥塞窗口会随丢包率的增大而减小。
Reno拥塞控制算法
由于reno拥塞控制算法周期性产生丢包,且需要较长时间回复,如上图。对比可知,reno算法随着时延的增加,拥塞窗口大小呈上升趋势。
由图对比可知,当丢包率增加时,明显看出拥塞窗口从40-120下降到0-60,最后丢包率为4%时下降到0-30,故而reno算法随着丢包率的增大,拥塞窗口大小呈下降趋势。
Westwood拥塞控制算法
由上图可知,延迟从30 ms增加到40 ms时,拥塞窗口的大小始终在增加,当发生丢包时,拥塞窗口大小才会发生降低。通过对比可知, westwood算法的拥塞窗口会随着延迟的增大而增大。
设置丢包率后,Westwood算法中的拥塞窗口和慢启动阈值剧烈变化,拥塞控制机制被频繁调用,使网络带宽利用率降低。由上图比较可知,当丢包率设置增大时,拥塞窗口的大小虽然会有所降低,但不会如cubic算法那样剧烈降低。
总结
Cubic算法的优点在于只要没有出现丢包,就不会主动降低自己的发送速度,可以最大程度的利用网络剩余带宽,提高吞吐量,在高带宽、低丢包率的网络中可以发挥较好的性能。但是,Cubic无法区分拥塞丢包和传输错误丢包,只要发现丢包,就会减小拥塞窗口,降低发送速率,而事实上传输错误丢包时网络不一定发生了拥塞,但是传输错误丢包的概率很低,所以对Cubic算法的性能影响不是很大。Cubic算法的另一个不足之处是过于激进,在没有出现丢包时会不停地增加拥塞窗口的大小,向网络注入流量,将网络设备的缓冲区填满,出现Bufferbloat(缓冲区膨胀)。由于缓冲区长期趋于饱和状态,新进入网络的的数据包会在缓冲区里排队,增加无谓的排队时延,缓冲区越大,时延就越高。另外Cubic算法在高带宽利用率的同时依然在增加拥塞窗口,间接增加了丢包率,造成网络抖动加剧。
适用场景:适用于高带宽、低丢包率网络,能够有效利用带宽。
Reno算法将收到ACK这一信号作为拥塞窗口增长的依据,在早期低带宽、低时延的网络中能够很好的发挥作用,但是随着网络带宽和延时的增加,Reno的缺点就渐渐体现出来了,发送端从发送报文到收到ACK经历一个RTT,在高带宽延时网络中,RTT很大,导致拥塞窗口增长很慢,传输速度需要经过很长时间才能达到最大带宽,导致带宽利用率将低。
适用场景:适用于低延时、低带宽的网络。
Westwood的核心在于“丢包并处理完重传后cwnd以及ssthresh的设置”,既精确定位拥塞丢包重传恢复后窗口应该降低到多少。缺点无法区分网络拥塞丢包和无线随机错误丢包,尤其是无线网络时延抖动和随机错误丢包会被误认为是网络拥塞,大大降低网络带宽利用。
适用场景:适用于高丢包率、低带宽的网络