HNU-计算机网络-实验三
一、实验目的
熟悉并掌握各种不同rdt协议的运行环境和协议性能。
二、实验步骤
Ⅰ.运行环境为linux平台,可以在本机上安装虚拟机来搭建操作系统环境。
Ⅱ.将simulator中的文件拷贝到操作系统的相应目录下,编译并安装模拟器,具体安装过程可参考readme.txt文档。
Ⅲ.运行协议,完成sinulator文件夹中的exercises文件中的作业
三、具体实验
1.实验准备
(1)将文件拷贝到虚拟机ubuntu上后,在对应路径下打开终端输入命令make进行编译(会有些警告)


…
2.完成sinulator文件夹中的exercises文件中的作业
该模拟器为数据链协议实验提供了一个试验场。以下是一些使用该模拟器的建议学生项目。其中大多数项目都需要绘制大量图表,因此如果有一些将数字转换为k图表的工具可供使用将很有帮助。UNIX grap前端是troff的一个工具,但还有其他工具存在。
首先运行的命令是./sim,后面接上6个十进制参数依次是:
如要参数设置为6 1000000 40 20 10 3,将会运行协议6,处理100,000个事件,超时间隔为40个时钟周期,20%的包丢失率,10%的校验和错误率(通过的80%),并为每个发送或接收的帧打印一行。由于每个对等进程都由不同的UNIX进程表示,因此存在(准)并行处理。这意味着由于时间波动,连续运行将不会产生相同的结果。
前面已经打印了1000000条发送或接收的帧的信息
效率Efficiency表明了接收到的有效负载(Payloads accepted)占发送总数据帧的比例。58% 表示在发送的所有数据帧中,只有约 58% 的帧成功携带有效负载被接收,而其余帧要么被丢弃、超时重传、或未能接受有效负载。
(1)对于选定的一到多个协议,研究其性能,以每秒传送的负载为衡量标准,并作为校验和错误率、丢失包率和超时间隔的函数。例如,提供各种错误率下的负载/秒与超时间隔之间的关系的图表。你能得出什么结论?
我们以都用协议5,事件为1000,控制变量。
1) 探究有效负载和超时时间间隔的关系
部分截图:

可以发现随着超时时间间隔的增加,它的效率逐渐增大,当到达一定值时,效率接近100%。 因为在丢包率和错误率都为0的前提下,随着超时时间间隔的增加,发送出去的帧有效到达对方的个数增大,当增加到一定值时,基本上所有的帧都会被接收到。
2) 探究有效负载和丢失包率的关系(超时间隔统一为70)
部分截图:

可以发现随着丢包率的增大,效率逐渐减小。因为丢包率增大,发出去的帧丢包的概率增大,对方收到的帧数目会减少,效率下降。
3) 探究有效负载和的校验和错误率关系(超时间隔统一为70)
部分截图:

与丢包率差不多,随着错误率增大,效率下降。
(2)详细比较协议5和6在各种参数下的payload/秒和重传次数的性能表现。在何种情况下协议5更好?协议6呢?
1) 错误率都控制为0,比较不同丢包率下的性能(超时间隔为70)

2) 丢包率都控制为0,比较不同错误率下的性能(超时间隔为70)

综上数据显示,随着丢包率和错误率的增加,协议6的效率比协议5下降的慢得多,可知丢包率和错误率较大的情况下用协议6效果更好。因为协议5是GBN,协议6是选择性重传,选择性重传接收方有缓冲区可以缓存窗口内的任何接收的帧,而GBN只会接收窗口的第一个帧,收到后面的会丢弃,会导致重传。
(3)函数pick_event()内置了事件的优先级。例如,对于协议5来说,帧到达的优先级高于超时。尝试通过修改pick_event()函数中的语句顺序来改变这些优先级。你能得出什么结论?
pick_event()在worker.c文件里可以找到。
由于仅考虑协议5,所以只需要改变case5中的优先级顺序:
每次改完代码进行更改顺序后都要重新进行make编译
每次更改顺序后测量其Efficiency
令nframes为1,network_layer_status为2, check_timers为3
1) 顺序:123


2) 顺序:132


3) 顺序:231


4) 顺序:213


5) 顺序:312


6) 顺序:321


结论:通过上面六个表格的对比,可以看出在相同的条件下,当顺序为网络层准备、数据到达、超时处理时,得到的有效负载最大、重传次数最少。
(4)研究不同参数下,重传帧的数量随超时间隔的变化情况。你能确定最佳设置是什么吗?
运行协议5,丢包率和错误率都设为0,逐渐增加超时时间,观察重传帧的数目:
从表格中可以看出,当设置超时间隔为大于40左右时,重传数据降为0。即在超时时间间隔40之内,所有的帧都可以被传输到达对方。
我参考的是:
计算机实验三——Rdt协议对比(Flechazo_z)
其中我们计网老师给的sinulator文件有问题(Payloads accepted和Efficiency都为0),所以我用的也是上面这个博主上传的文件,不过他/她的Efficiency也会输出0,点开他/她的评论区有解决方法
更多推荐
所有评论(0)