#
# ftp
# \
# tcp
# \
# n0 sink
# \ /
# \ /
# n1---5M 2ms---n3
# / \
# / \
# n2 null
# /
# udp
# /
# cbr
set ns [new Simulator]
set f [open out.tr w]
$ns trace-all $f
set nf [open out.nam w]
$ns namtrace-all $nf
proc finish {} {
global ns nf f
$ns flush-trace
close $f
close $nf
exec nam out.nam &
exit 0
}
#设置并连接4个节点
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
$ns duplex-link $n0 $n1 5M 2ms DropTail
$ns duplex-link $n2 $n1 5M 2ms DropTail
$ns duplex-link $n3 $n1 5M 2ms DropTail
$ns duplex-link-op $n0 $n1 orient right-down
$ns duplex-link-op $n2 $n1 orient right-up
$ns duplex-link-op $n1 $n3 orient right
#设置传输层并连接
set tcp [new Agent/TCP]
$ns attach-agent $n0 $tcp
set udp [new Agent/UDP]
$ns attach-agent $n2 $udp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
set null [new Agent/Null]
$ns attach-agent $n3 $null
$ns connect $tcp $sink
$ns connect $udp $null
#设置应用层
set ftp [new Application/FTP]
$ftp attach-agent $tcp
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
#设置执行与停止顺序
$ns at 0.05 "$ftp start"
$ns at 0.30 "$cbr start"
$ns at 0.50 "finish"
$ns run