计算机实验TCPNewReno与SACK运行机制的比较分析
实验二、TCP NewReno与SACK运行机制对比分析
实验的目的:
学习TCP拥塞控制机制,了解TCP NewReno和TCP SACK协议的工作机制及各自的特点。
实验环境:
Ubuntu NS2 2.35
实验内容:
绘制了Reno、NewReno、SACK三个TCP版本的仿真图,并根据图形对它们的运行机制进行了比较分析。
实验步骤:
在接下来的实验中,将观察Reno、NewReno、SACK的3个TCP版本
1 .模拟的网络结构图:
实验性的网络拓扑和链路参数配置(FTP代表方适用一定的流量CBR ) ) )。
2.TCL程序代码(参见附录lab12.tcl )
3 .执行方法和结果($是shell的队列符号) )。
3.1观察Reno版本的congestion window的变化:
Tahoe算法是TCP的初始版本。 其中心思想是将cwnd按指数快速逼近可用信道容量,并逐渐接近均衡。 Tahoe有三种基本的拥塞控制算法:“慢启动”、“避免拥塞”和“快速重发”。
? (1)慢启动:避免了建立连接时突发数据流对网络的冲击。
? 默认情况下,cwnd为1,它将以指数方式增加,直到cwnd超过ssthresh。
? 当cwnd=ssthresh时,Tahoe进入避免拥塞阶段。
? )2)避免拥塞)限制传输中无限制的速度增加,避免由此导致的拥塞。
? cwnd呈直线增长。
? 如果发生超时或连续接收到三个重复的ACK,Tahoe将认为发生了拥塞。
? 如果超时,则将ssthresh设置为当前拥塞窗口的一半,并在cwnd=1时转移到慢启动。
? 如果收到三个连续的ACK,Tahoe将进入快速重传阶段。
? 3 )高速重发)根据3个重复的响应消息判断分组丢失,减少超时重发的发生,加快源端对拥塞的响应,可以迅速消除拥塞。 将ssthresh设置为当前拥塞窗口的一半,然后立即重新发送丢失的包,同时cwnd=1转至慢启动。
Tahoe算法有不足之处。 如果收到三个重复的ACK或超时,Tahoe会将cwnd设置为1,然后进入慢启动阶段。 这一方面会引起网络的剧烈振动,另一方面会大幅降低网络的利用率。
在本例中,将队列大小设置为15个数据包。 粗略估计,如果路径上的数据包数量超过16.4个,则会开始丢弃数据包。 在TCP Tahoe/Reno中容易发生Timeout的发送端,由于发送速度过快,容易发生多包丢失。
$ns lab12.tcl Reno
结果如下。
on path : 16.44包
average throughput : 924.8 kbps
使用gnuplot观察cwnd的变化值:
$Startxwin.bat
$gnuplot
Gnuplotset title “Reno”
Gnuplotset xlabel “time”
Gnuplotset ylabel “cwnd”
Gnuplotset terminal gif
Gnuplotset output “cwnd-Reno.gif”
guplotplot“cwnd-Reno.tr”withlinespoints
您可以选择在命令行中逐步执行并生成结果,也可以创建一个文档,将代码复制到文档中,然后在名为Gnuplot的文档中生成结果。
之后打开cwnd-Reno.gif图像,如图1所示。
为了观察从R0到R1的链路的使用情况,lab12.tcl脚本使用awk程序记录队列长度的变化,使用gnuplot绘制queue_length-Reno.tr文件,将图2显示为
Gnuplotset title “Reno”
Gnuplotset xlabel “time”
Gnuplotset ylabel “queue length”
Gnuplotset terminal gif
guplotsetoutput“queue _ length _ Reno.gif”
guplotplot“queue _ length _ Reno.tr”withlinespoints 1
设置标题“Reno”
设置标签“时间”
设置标签“queue length”
设置终端千兆赫
set output“queue _ length _ Reno.gif”
plot“queue _ length _ Reno.tr”withlinespoints 1
3.2观察新版本congestion window的变化:
NewReno是从Reno修改的TCP版本。 在这个版本中主要是TCP Reno的