有线场景TCP快速重传和快速恢复算法的演示

原链接:http://blog.chinaunix.net/u3/105477/showart_2092728.html

 

 

 

 

#TCP快速重传和快速恢复过程的模拟演示
#场景:
#   四个节点: n0, n1,n2, n3
#   n1 和 n2 之间设置带宽瓶颈;
#   主要监控模拟过程中丢失包发生后cwnd和ssthresh 以及重复确定的情况;  
#  运行命令:ns tcpsim_fz.tcl

set ns [new Simulator]
set nf [open tcpnam.nam w]
$ns namtrace-all $nf
set ftr [open tcpsim_slidewin.tr w]
$ns trace-all $ftr
 
foreach i "0 1 2 3" {
    set n$i [$ns node]
 }
#创建节点间的连接, 在n1~n2间设置一个带宽较小的链路;
$ns duplex-link $n0 $n1 5Mb 20ms DropTail
$ns duplex-link $n1 $n2 0.5Mb 100ms DropTail
$ns duplex-link $n2 $n3 5Mb 20ms DropTail
 $ns queue-limit $n1 $n2 5
 
$ns duplex-link-op $n0 $n1 orient right
$ns duplex-link-op $n1 $n2 orient right
$ns duplex-link-op $n2 $n3 orient right
 
 #设置队列在Nam中的显示方向
 $ns duplex-link-op $n1 $n2 queuePos 0.5
 #TCP/Reno已经实现了快速重传和快速回复算法;
set tcp [new Agent/TCP/Reno]
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
$ns connect $tcp $sink

#增加业务流量, 使用FTP
set ftp [new Application/FTP]
$ftp attach-agent $tcp
 
 
 #用于统计和绘图
set f0 [open cwndrec.tr w]
proc Record {} {
    global f0 tcp ns
  set intval 0.1
  set now [$ns now]
 set cwnd [$tcp set cwnd_]
 puts $f0 "$now $cwnd"
 $ns at [expr $now+$intval] "Record"
 }
 
proc finish {} {
    global ns nf
 $ns flush-trace
 close $nf
 
 exec nam tcpnam.nam &
 exec xgraph cwndrec.tr -x "Simulation Time" -y "Win_Size" &
 exit 0
 }
 
# 设置监控变量, 用于Nam演示时实时显示这些参数的变化;
# 一下代码需要添加在TCP代理创建之后;
$tcp set nam_tracevar_ true      ;# 打开Nam的跟踪变量
$ns add-agent-trace $tcp tcp     ;# 新增对TCP代理的跟踪并设置跟踪标签为 “tcp”
$ns monitor-agent-trace $tcp     ;# 监控跟踪对象
$tcp tracevar cwnd_              ;# 设置需要监控的变量名, cwnd值
$tcp tracevar ssthresh        ;# 慢启动门限
$tcp tracevar masseq_            ;# 已发送的最大包序号
$tcp tracevar ack_               ;# 已接收的最大确定序号
$tcp tracevar dupacks_           ;# 重复ACK计数器

$ns at 0.0 "$n0 label TCP"
$ns at 0.0 "$n3 label TCP"
$ns at 0.0 "$ns trace-annotate /"TCP Reno: Fast Recovery/""
$ns at 0.0 "Record"
$ns at 0.1 "$ftp start"
$ns at 5.0 "$ftp stop"
$ns at 5.25 "finish"
$ns run

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值