Trong những bài trước mình đã đưa ra một ví dụ về một mô hình mạng, cách thức mô phỏng một mô hình mạng đơn giản bằng công cụ mô phỏng NS2 đồng thời trong bài cũng đưa ra cách vẽ đồ thị bằng công cụ Xgraph, cách tạo một file đuôi .awk để tính toán trễ đường truyền End to end, chiều dài hàng đợi trung bình và thức thời.
Để kết thúc chuỗi bài "Hướng dẫn mô phỏng mạng đơn giản bằng công cụ NS2" này mình sẽ đưa ra file tổng hợp BTL.tcl để các bạn có cái nhìn tổng thể hơn về các bước để thực hiện một bài toán mô phỏng mạng hàng đợi bằng công cụ mô phỏng NS2, qua đó các bạn có thể ứng dụng để xây dựng bài toán mô phỏng của riêng mình.
Do thời gian tìm hiểu công cụ NS2 và kiến thức trong mạng thông tin còn hạn chế, vì vậy nếu có gì còn chưa chuẩn xác thì mong nhận được sự góp ý của các bạn quan tâm!
BTL.tcl
# BAI TAP LON CO SO TRUYEN SO LIEU
# De tai: Mo phong chieu dai hang doi MM1 va
# tre duong truyen trong truong hop co loi
# Sinh vien TH: Argan Sv
# Duong Van Hao
#---------------------Begin------------------------------
# Tao mot doi tuong mo phong
set ns [ new Simulator]
#Tao cac file Trace
set tracefile [open out.tr w]
set winfile [open WinFile w]
$ns trace-all $tracefile
#Tao file luu cua so tac nghen nguon TCP1
set cwnd_s1 [open cwnd1.tr w]
#Tao file luu cua so tac nghen nguon TCP2
set cwnd_s2 [open cwnd2.tr w]
#Tao file luu cua so tac nghen nguon TCP3
set cwnd_s3 [open cwnd3.tr w]
#Tao cac file Name trace
set namfile [open out.nam w]
$ns namtrace-all $namfile
#Kich thuoc hang doi:100000
#(xem nhu hang doi co chieu dai vo han)
set queuesize 100000
#set packetsize 1500
#Tham so tien trinh toi nguon s1 lambda1 = 100.0
set lambda1 100.0
#Tham so tien trinh phuc vu m1 = lambda / d
#trong do d =0,8
set m1 120.0
#Tham so tien trinh toi nguon s2 lambda2 = 100.0
set lambda2 100.0
#Tham so tien trinh phuc vu m2
set m2 120.0
#Tham so tien trinh toi nguon s3 lambda3 = 100.0
set lambda3 100.0
#Tham so tien trinh phuc vu m3
set m3 120.0
# Tao 1 co bao hieu viec gui du lieu:
# Co bao hieu ghi du lieu luong 1
set flag1 0
# Co bao hieu ghi du lieu luong 2
set flag2 0
# Co bao hieu ghi du lieu luong 3
set flag3 0
#--------------------Khai bao thu tuc "finish"-----------------------
proc finish {} {
global ns tracefile cwnd_s1 cwnd_s2 cwnd_s3 namfile
$ns flush-trace
close $tracefile
close $namfile
close $cwnd_s1
close $cwnd_s2
close $cwnd_s3
exec nam out.nam &
# Chieu dai hang doi tai cac thoi diem tren truc thoi gian
# Cho thay su bien dong cua chieu dai hang doi
exec awk -f queuesize1_2.awk out.tr > queuesize1_2.tr
exec awk -f queuesize2_3.awk out.tr > queuesize2_3.tr
exec awk -f queuesize2_4.awk out.tr > queuesize2_4.tr
exec awk -f queuesize4_5.awk out.tr > queuesize4_5.tr
# Chieu dai hang doi trung binh duoc luu trong file .tr tuong ung
exec awk -f Nq1_2.awk qm1.out > Nq1_2.tr
exec awk -f Nq2_3.awk qm2.out > Nq2_3.tr
exec awk -f Nq2_4.awk qm3.out > Nq2_4.tr
exec awk -f Nq4_5.awk qm4.out > Nq4_5.tr
# Chieu dai hang doi trung binh toan mang
exec awk -f Nq.awk out.tr &
# Tre truyen giua cac link
exec awk -f delayflow1_1.awk out.tr > delayflow1_1.tr
exec awk -f delayflow1_2.awk out.tr > delayflow1_2.tr
exec awk -f delayflow2_3.awk out.tr > delayflow2_3.tr
exec awk -f delayflow3_1.awk out.tr > delayflow3_1.tr
# Tre truyen trung binh duoc luu trong file .tr tuong ung
exec awk -f tretb1_1.awk out.tr > tretb1_1.tr
exec awk -f tretb1_2.awk out.tr > tretb1_2.tr
exec awk -f tretb2_3.awk out.tr > tretb2_3.tr
exec awk -f tretb3_1.awk out.tr > tretb3_1.tr
# Ve do thi bang ham Xgraph:
# Do thi "Tre truyen trung binh"
exec xgraph delayflow1_1.tr -geometry 800x400 -t " Time Delay 1_1 " -x " Packet" -y " Time (sec) " &
exec xgraph delayflow1_2.tr -geometry 800x400 -t " Time Delay 1_2 " -x " Packet" -y " Time (sec) " &
exec xgraph delayflow2_3.tr -geometry 800x400 -t " Time Delay 2_3 " -x " Packet" -y " Time (sec) " &
exec xgraph delayflow3_1.tr -geometry 800x400 -t " Time Delay 3_1 " -x " Packet" -y " Time (sec) " &
# Do thi "Chieu dai hang doi"
exec xgraph queuesize1_2.tr -geometry 800x400 -t " Queue Length 1_2 " -x " Time (sec) " -y " Packet " &
exec xgraph queuesize2_3.tr -geometry 800x400 -t " Queue Length 2_3 " -x " Time (sec) " -y " Packet " &
exec xgraph queuesize2_4.tr -geometry 800x400 -t " Queue Length 2_4 " -x " Time (sec) " -y " Packet " &
exec xgraph queuesize4_5.tr -geometry 800x400 -t " Queue Length 4_5 " -x " Time (sec) " -y " Packet " &
# Do thi "Cua so tac nghen"
# exec xgraph cwnd1.tr cwnd2.tr cwnd3.tr -bg white -zg blue -t "Cua so tac nghen s1,s2&s3" &
exec xgraph cwnd1.tr cwnd2.tr cwnd3.tr &
exit 0
}
#----------------Tao ra topo mang------------------------------------
#Mau sac cac luong thong tin
$ns color 1 Red
$ns color 2 Green
$ns color 3 Blue
#Tao ra cac node nguon va node dich
#Nguon s1
set s1 [$ns node]
$s1 color Red
$s1 shape box
#Nguon s2
set s2 [$ns node]
$s2 color Red
$s2 shape box
#Nguon s3
set s3 [$ns node]
$s3 color Red
$s3 shape box
#Dich d1
set d1 [$ns node]
$d1 color Black
$d1 shape hexagon
#Dich d2
set d2 [$ns node]
$d2 color Black
$d2 shape hexagon
#Dich d3
set d3 [$ns node]
$d3 color Black
$d3 shape hexagon
#Tao cac Router mang Ri
set r1 [$ns node]
$r1 color blue
set r2 [$ns node]
$r2 color blue
set r3 [$ns node]
$r3 color blue
set r4 [$ns node]
$r4 color blue
set r5 [$ns node]
$r5 color blue
#Thiet lap lien ket giua cac node mang
$ns duplex-link $s1 $r1 100Mb 10ms DropTail
$ns duplex-link $s2 $r1 100Mb 10ms DropTail
$ns duplex-link $s3 $r1 100Mb 10ms DropTail
$ns duplex-link $r1 $r2 6Mb 10ms DropTail
$ns duplex-link $r2 $r3 7Mb 10ms DropTail
$ns duplex-link $r2 $r4 4Mb 10ms DropTail
$ns duplex-link $r4 $r5 4Mb 10ms DropTail
$ns duplex-link $r3 $d1 27Mb 10ms DropTail
$ns duplex-link $r5 $d2 15Mb 10ms DropTail
$ns duplex-link $r5 $d3 20Mb 10ms DropTail
#Sap xep topo mang(dung cho hien thi NAM)
$ns duplex-link-op $s1 $r1 orient right-down
$ns duplex-link-op $s2 $r1 orient right
$ns duplex-link-op $s3 $r1 orient right-up
$ns duplex-link-op $r1 $r2 orient right
$ns duplex-link-op $r2 $r4 orient down
$ns duplex-link-op $r4 $r5 orient right
$ns duplex-link-op $r2 $r3 orient right
$ns duplex-link-op $r3 $d1 orient right
$ns duplex-link-op $r5 $d2 orient right-up
$ns duplex-link-op $r5 $d3 orient right-down
#Kich thuoc hang doi
$ns queue-limit $r1 $r2 $queuesize
$ns queue-limit $r2 $r3 $queuesize
$ns queue-limit $r2 $r4 $queuesize
$ns queue-limit $r4 $r5 $queuesize
#Quan li hang doi
$ns duplex-link-op $r1 $r2 queuePos 0.5
$ns duplex-link-op $r2 $r3 queuePos 0.5
$ns duplex-link-op $r2 $r4 queuePos 0.5
$ns duplex-link-op $r4 $r5 queuePos 0.5
#-----------Tao mot mo hinh loi tren lien ket --------------------------
set loss_module1 [new ErrorModel]
$loss_module1 set rate _0.05
$loss_module1 ranvar [new RandomVariable/Uniform]
$loss_module1 drop-target [new Agent/Null]
$ns lossmodel $loss_module1 $r1 $r2
#$ns lossmodel $loss_module $r2 $r3
#$ns lossmodel $loss_module $r2 $r4
#$ns lossmodel $loss_module $r4 $r5
set loss_module2 [new ErrorModel]
$loss_module2 set rate _0.05
$loss_module2 ranvar [new RandomVariable/Uniform]
$loss_module2 drop-target [new Agent/Null]
$ns lossmodel $loss_module2 $r2 $r3
set loss_module3 [new ErrorModel]
$loss_module3 set rate _0.05
$loss_module3 ranvar [new RandomVariable/Uniform]
$loss_module3 drop-target [new Agent/Null]
$ns lossmodel $loss_module3 $r2 $r4
set loss_module4 [new ErrorModel]
$loss_module4 set rate _0.05
$loss_module4 ranvar [new RandomVariable/Uniform]
$loss_module4 drop-target [new Agent/Null]
$ns lossmodel $loss_module4 $r4 $r5
#-----------Tao nguon TCP1 cho node s1 va ket noi voi dich d1 & d2------
#Nguon TCP1
set tcp1 [new Agent/TCP]
$ns attach-agent $s1 $tcp1
$tcp1 set class_ 1
$tcp1 set fid_ 1
#Dich d1-sink1
set sink1 [new Agent/TCPSink]
$ns attach-agent $d1 $sink1
$ns connect $tcp1 $sink1
#Dich d2-sink2
set sink2 [new Agent/TCPSink]
$ns attach-agent $d2 $sink2
$ns connect $tcp1 $sink2
#Tao kich thuoc cua so cho nguon tcp1 la 32
$tcp1 set window_ 32
# Tien trinh toi co khoang thoi gian den tuan theo phan bo ham mu
set InterArrivalTime1 [ new RandomVariable/Exponential]
$InterArrivalTime1 set avg_ [expr 1/$lambda1]
# Tien trinh phuc vu co toc do tuan theo phan bo ham mu
set pktSize1 [ new RandomVariable/Exponential]
$pktSize1 set avg_ [ expr 100000.0/(8*$m1)]
# Thu tuc bat dau gui du lieu
proc sendpacket1 {} {
global ns tcp1 InterArrivalTime1 pktSize1 flag1
set time [$ns now]
if [expr $flag1 == 0] {
$ns at [ expr $time + [$InterArrivalTime1 value]] "sendpacket1"
set bytes [ expr round ([$pktSize1 value])]
$tcp1 send $bytes
}
}
#----------Tao nguon TCP2 cho node s2 ket noi voi dich d3------------------------
#Nguon TCP2
set tcp2 [new Agent/TCP]
$ns attach-agent $s2 $tcp2
$tcp2 set class_ 2
$tcp2 set fid_ 2
#Dich d3-sink3
set sink3 [new Agent/TCPSink]
$ns attach-agent $d3 $sink3
$ns connect $tcp2 $sink3
#Tao kich thuoc cua so cho nguon tcp2 la 32
$tcp2 set window_ 32
# Tien trinh toi co toc do tuan theo phan bo ham mu
set InterArrivalTime2 [ new RandomVariable/Exponential]
$InterArrivalTime2 set avg_ [expr 1/$lambda2]
# Tien trinh phuc vu co toc do tuan theo phan bo ham mu
set pktSize2 [ new RandomVariable/Exponential]
$pktSize2 set avg_ [ expr 100000.0/(8*$m2)]
# Thu tuc bat dau gui du lieu
proc sendpacket2 {} {
global ns tcp2 InterArrivalTime2 pktSize2 flag2
set time [$ns now]
if [expr $flag2 == 0] {
$ns at [ expr $time + [$InterArrivalTime2 value]] "sendpacket2"
set bytes [ expr round ([$pktSize2 value])]
$tcp2 send $bytes
}
}
#-------------Tao nguon TCP3 cho node s3 ket noi voi dich d1--------------------------
#Nguon s3-TCP3
set tcp3 [new Agent/TCP]
$ns attach-agent $s3 $tcp3
$tcp3 set class_ 3
$tcp3 set fid_ 3
#Dich d1-sink1
$ns connect $tcp3 $sink1
#Tao kich thuoc cua so cho nguon tcp3 la 32
$tcp3 set window_ 32
# Tien trinh toi co toc do tuan theo phan bo ham mu
set InterArrivalTime3 [ new RandomVariable/Exponential]
$InterArrivalTime3 set avg_ [expr 1/$lambda3]
# Tien trinh phuc vu co toc do tuan theo phan bo ham mu
set pktSize3 [ new RandomVariable/Exponential]
$pktSize3 set avg_ [ expr 100000.0/(8*$m3)]
# Thu tuc bat dau gui du lieu
proc sendpacket3 {} {
global ns tcp3 InterArrivalTime3 pktSize3 flag3
set time [$ns now]
if [expr $flag3 == 0] {
$ns at [ expr $time + [$InterArrivalTime3 value]] "sendpacket3"
set bytes [ expr round ([$pktSize3 value])]
$tcp3 send $bytes
}
}
#---------------Ham record-----------------------------------
# Ham record:
proc record {} {
global tcp1 tcp2 tcp3 cwnd_s1 cwnd_s2 cwnd_s3
set ns [Simulator instance]
#Sau thoi gian 0.1s thi ghi lay mau 1 lan
set time 0.1
#Tao bien cwnd1,cwnd2,cwnd3 lay gia tri thuoc tinh cwnd_ cua tcp1,tcp2,tcp3
set cwnd1 [$tcp1 set cwnd_]
set cwnd2 [$tcp2 set cwnd_]
set cwnd3 [$tcp3 set cwnd_]
#cai dat thoi gian hien tai
set now [$ns now]
#set cwnd1 [$tcp1 set cwnd_]
#set now [$ns now]
#Ghi gia tri thoi gian va cwnd1 vao file
puts $cwnd_s1 "$now [expr $cwnd1/1]"
puts $cwnd_s2 "$now [expr $cwnd2/1]"
puts $cwnd_s3 "$now [expr $cwnd3/1]"
$ns at [expr $now+$time] "record"
}
#-----------------Giam sat hang doi--------------------------------------
#Lay mau hang doi nut that co chai 0.1s mot lan
set qmon [$ns monitor-queue $r1 $r2 [open qm1.out w] 0.1];
[$ns link $r1 $r2] queue-sample-timeout;
set qmon [$ns monitor-queue $r2 $r3 [open qm2.out w] 0.1];
[$ns link $r2 $r3] queue-sample-timeout;
set qmon [$ns monitor-queue $r2 $r4 [open qm3.out w] 0.1];
[$ns link $r2 $r4] queue-sample-timeout;
set qmon [$ns monitor-queue $r4 $r5 [open qm4.out w] 0.1];
[$ns link $r4 $r5] queue-sample-timeout;
#---------------------------Finish----------------------------------------
puts "\n BAI TAP LON MON CO SO TRUYEN SO LIEU \n"
puts "\n GVHD: Ts. Nguyen Tai Hung \n"
puts "\n Sinh vien TH: Sai Van Oanh 20091993 \n"
puts "\n Duong Van Hao 20093433 \n"
puts "\n Processing! About 30 seconds for Nam and 30 seconds for Xgraph \n"
puts "\n Please wait...\n"
#Lap lich cac su kien mo phong
$ns at 0.0 "record"
$ns at 0.0 "$s1 label \"S1\""
$ns at 0.0 "$s2 label \"S2\""
$ns at 0.0 "$s3 label \"S3\""
$ns at 0.0 "$r1 label \"R1\""
$ns at 0.0 "$r2 label \"R2\""
$ns at 0.0 "$r3 label \"R3\""
$ns at 0.0 "$r4 label \"R4\""
$ns at 0.0 "$r5 label \"R5\""
$ns at 0.0 "$d1 label \"D1\""
$ns at 0.0 "$d2 label \"D2\""
$ns at 0.0 "$d3 label \"D3\""
$ns at 0.0001 "sendpacket1"
$ns at 0.0001 "sendpacket2"
$ns at 0.0001 "sendpacket3"
# Thiet lap thoi gian mo phong
$ns at 140.0 " finish "
#Chay
$ns run
#Ket thuc
Tài liệu tham khảo tiếng Việt về mô phỏng trong NS2:
-> Tài liệu 1: Tải về
-> Tài liệu 2: Tải về
Bài 2: Chạy mô phỏng truyền dữ liệu trong NS2
-> Download file chạy .tcl và file .awk của Project này:
-> Download file .awk: Tải về
-> Download file .tcl: Tải về
Chú ý: Để máy tính hoạt động trơn tru và được bảo dưỡng tự động thường xuyên, các bạn nên cài một số phần mềm chăm sóc hệ thống. Mình đã và đang sử dụng phần mềm chăm sóc hệ thống Glary Utilities Pro và thấy rất tốt, các bạn có thể Download và cài đặt bản full có kèm theo Key (serial) đầy đủ ( đã test) rất đơn giản tại đây: Tải về
- Để bảo vệ máy tính tốt hơn chống lại các phần mềm gián điệp, virus độc hại mà không ngốn quá nhiều tài nguyên máy tính ngay cả ở chế độ hoạt động và chế độ chờ, mình khuyến nghị các bạn cài đặt và sử dụng phần mềm diệt Virus Avast internet security( Kèm theo key/Serial đã test): Tại đây
Để kết thúc chuỗi bài "Hướng dẫn mô phỏng mạng đơn giản bằng công cụ NS2" này mình sẽ đưa ra file tổng hợp BTL.tcl để các bạn có cái nhìn tổng thể hơn về các bước để thực hiện một bài toán mô phỏng mạng hàng đợi bằng công cụ mô phỏng NS2, qua đó các bạn có thể ứng dụng để xây dựng bài toán mô phỏng của riêng mình.
Do thời gian tìm hiểu công cụ NS2 và kiến thức trong mạng thông tin còn hạn chế, vì vậy nếu có gì còn chưa chuẩn xác thì mong nhận được sự góp ý của các bạn quan tâm!
BTL.tcl
# BAI TAP LON CO SO TRUYEN SO LIEU
# De tai: Mo phong chieu dai hang doi MM1 va
# tre duong truyen trong truong hop co loi
# Sinh vien TH: Argan Sv
# Duong Van Hao
#---------------------Begin------------------------------
# Tao mot doi tuong mo phong
set ns [ new Simulator]
#Tao cac file Trace
set tracefile [open out.tr w]
set winfile [open WinFile w]
$ns trace-all $tracefile
#Tao file luu cua so tac nghen nguon TCP1
set cwnd_s1 [open cwnd1.tr w]
#Tao file luu cua so tac nghen nguon TCP2
set cwnd_s2 [open cwnd2.tr w]
#Tao file luu cua so tac nghen nguon TCP3
set cwnd_s3 [open cwnd3.tr w]
#Tao cac file Name trace
set namfile [open out.nam w]
$ns namtrace-all $namfile
#Kich thuoc hang doi:100000
#(xem nhu hang doi co chieu dai vo han)
set queuesize 100000
#set packetsize 1500
#Tham so tien trinh toi nguon s1 lambda1 = 100.0
set lambda1 100.0
#Tham so tien trinh phuc vu m1 = lambda / d
#trong do d =0,8
set m1 120.0
#Tham so tien trinh toi nguon s2 lambda2 = 100.0
set lambda2 100.0
#Tham so tien trinh phuc vu m2
set m2 120.0
#Tham so tien trinh toi nguon s3 lambda3 = 100.0
set lambda3 100.0
#Tham so tien trinh phuc vu m3
set m3 120.0
# Tao 1 co bao hieu viec gui du lieu:
# Co bao hieu ghi du lieu luong 1
set flag1 0
# Co bao hieu ghi du lieu luong 2
set flag2 0
# Co bao hieu ghi du lieu luong 3
set flag3 0
#--------------------Khai bao thu tuc "finish"-----------------------
proc finish {} {
global ns tracefile cwnd_s1 cwnd_s2 cwnd_s3 namfile
$ns flush-trace
close $tracefile
close $namfile
close $cwnd_s1
close $cwnd_s2
close $cwnd_s3
exec nam out.nam &
# Chieu dai hang doi tai cac thoi diem tren truc thoi gian
# Cho thay su bien dong cua chieu dai hang doi
exec awk -f queuesize1_2.awk out.tr > queuesize1_2.tr
exec awk -f queuesize2_3.awk out.tr > queuesize2_3.tr
exec awk -f queuesize2_4.awk out.tr > queuesize2_4.tr
exec awk -f queuesize4_5.awk out.tr > queuesize4_5.tr
# Chieu dai hang doi trung binh duoc luu trong file .tr tuong ung
exec awk -f Nq1_2.awk qm1.out > Nq1_2.tr
exec awk -f Nq2_3.awk qm2.out > Nq2_3.tr
exec awk -f Nq2_4.awk qm3.out > Nq2_4.tr
exec awk -f Nq4_5.awk qm4.out > Nq4_5.tr
# Chieu dai hang doi trung binh toan mang
exec awk -f Nq.awk out.tr &
# Tre truyen giua cac link
exec awk -f delayflow1_1.awk out.tr > delayflow1_1.tr
exec awk -f delayflow1_2.awk out.tr > delayflow1_2.tr
exec awk -f delayflow2_3.awk out.tr > delayflow2_3.tr
exec awk -f delayflow3_1.awk out.tr > delayflow3_1.tr
# Tre truyen trung binh duoc luu trong file .tr tuong ung
exec awk -f tretb1_1.awk out.tr > tretb1_1.tr
exec awk -f tretb1_2.awk out.tr > tretb1_2.tr
exec awk -f tretb2_3.awk out.tr > tretb2_3.tr
exec awk -f tretb3_1.awk out.tr > tretb3_1.tr
# Ve do thi bang ham Xgraph:
# Do thi "Tre truyen trung binh"
exec xgraph delayflow1_1.tr -geometry 800x400 -t " Time Delay 1_1 " -x " Packet" -y " Time (sec) " &
exec xgraph delayflow1_2.tr -geometry 800x400 -t " Time Delay 1_2 " -x " Packet" -y " Time (sec) " &
exec xgraph delayflow2_3.tr -geometry 800x400 -t " Time Delay 2_3 " -x " Packet" -y " Time (sec) " &
exec xgraph delayflow3_1.tr -geometry 800x400 -t " Time Delay 3_1 " -x " Packet" -y " Time (sec) " &
# Do thi "Chieu dai hang doi"
exec xgraph queuesize1_2.tr -geometry 800x400 -t " Queue Length 1_2 " -x " Time (sec) " -y " Packet " &
exec xgraph queuesize2_3.tr -geometry 800x400 -t " Queue Length 2_3 " -x " Time (sec) " -y " Packet " &
exec xgraph queuesize2_4.tr -geometry 800x400 -t " Queue Length 2_4 " -x " Time (sec) " -y " Packet " &
exec xgraph queuesize4_5.tr -geometry 800x400 -t " Queue Length 4_5 " -x " Time (sec) " -y " Packet " &
# Do thi "Cua so tac nghen"
# exec xgraph cwnd1.tr cwnd2.tr cwnd3.tr -bg white -zg blue -t "Cua so tac nghen s1,s2&s3" &
exec xgraph cwnd1.tr cwnd2.tr cwnd3.tr &
exit 0
}
#----------------Tao ra topo mang------------------------------------
#Mau sac cac luong thong tin
$ns color 1 Red
$ns color 2 Green
$ns color 3 Blue
#Tao ra cac node nguon va node dich
#Nguon s1
set s1 [$ns node]
$s1 color Red
$s1 shape box
#Nguon s2
set s2 [$ns node]
$s2 color Red
$s2 shape box
#Nguon s3
set s3 [$ns node]
$s3 color Red
$s3 shape box
#Dich d1
set d1 [$ns node]
$d1 color Black
$d1 shape hexagon
#Dich d2
set d2 [$ns node]
$d2 color Black
$d2 shape hexagon
#Dich d3
set d3 [$ns node]
$d3 color Black
$d3 shape hexagon
#Tao cac Router mang Ri
set r1 [$ns node]
$r1 color blue
set r2 [$ns node]
$r2 color blue
set r3 [$ns node]
$r3 color blue
set r4 [$ns node]
$r4 color blue
set r5 [$ns node]
$r5 color blue
#Thiet lap lien ket giua cac node mang
$ns duplex-link $s1 $r1 100Mb 10ms DropTail
$ns duplex-link $s2 $r1 100Mb 10ms DropTail
$ns duplex-link $s3 $r1 100Mb 10ms DropTail
$ns duplex-link $r1 $r2 6Mb 10ms DropTail
$ns duplex-link $r2 $r3 7Mb 10ms DropTail
$ns duplex-link $r2 $r4 4Mb 10ms DropTail
$ns duplex-link $r4 $r5 4Mb 10ms DropTail
$ns duplex-link $r3 $d1 27Mb 10ms DropTail
$ns duplex-link $r5 $d2 15Mb 10ms DropTail
$ns duplex-link $r5 $d3 20Mb 10ms DropTail
#Sap xep topo mang(dung cho hien thi NAM)
$ns duplex-link-op $s1 $r1 orient right-down
$ns duplex-link-op $s2 $r1 orient right
$ns duplex-link-op $s3 $r1 orient right-up
$ns duplex-link-op $r1 $r2 orient right
$ns duplex-link-op $r2 $r4 orient down
$ns duplex-link-op $r4 $r5 orient right
$ns duplex-link-op $r2 $r3 orient right
$ns duplex-link-op $r3 $d1 orient right
$ns duplex-link-op $r5 $d2 orient right-up
$ns duplex-link-op $r5 $d3 orient right-down
#Kich thuoc hang doi
$ns queue-limit $r1 $r2 $queuesize
$ns queue-limit $r2 $r3 $queuesize
$ns queue-limit $r2 $r4 $queuesize
$ns queue-limit $r4 $r5 $queuesize
#Quan li hang doi
$ns duplex-link-op $r1 $r2 queuePos 0.5
$ns duplex-link-op $r2 $r3 queuePos 0.5
$ns duplex-link-op $r2 $r4 queuePos 0.5
$ns duplex-link-op $r4 $r5 queuePos 0.5
#-----------Tao mot mo hinh loi tren lien ket --------------------------
set loss_module1 [new ErrorModel]
$loss_module1 set rate _0.05
$loss_module1 ranvar [new RandomVariable/Uniform]
$loss_module1 drop-target [new Agent/Null]
$ns lossmodel $loss_module1 $r1 $r2
#$ns lossmodel $loss_module $r2 $r3
#$ns lossmodel $loss_module $r2 $r4
#$ns lossmodel $loss_module $r4 $r5
set loss_module2 [new ErrorModel]
$loss_module2 set rate _0.05
$loss_module2 ranvar [new RandomVariable/Uniform]
$loss_module2 drop-target [new Agent/Null]
$ns lossmodel $loss_module2 $r2 $r3
set loss_module3 [new ErrorModel]
$loss_module3 set rate _0.05
$loss_module3 ranvar [new RandomVariable/Uniform]
$loss_module3 drop-target [new Agent/Null]
$ns lossmodel $loss_module3 $r2 $r4
set loss_module4 [new ErrorModel]
$loss_module4 set rate _0.05
$loss_module4 ranvar [new RandomVariable/Uniform]
$loss_module4 drop-target [new Agent/Null]
$ns lossmodel $loss_module4 $r4 $r5
#-----------Tao nguon TCP1 cho node s1 va ket noi voi dich d1 & d2------
#Nguon TCP1
set tcp1 [new Agent/TCP]
$ns attach-agent $s1 $tcp1
$tcp1 set class_ 1
$tcp1 set fid_ 1
#Dich d1-sink1
set sink1 [new Agent/TCPSink]
$ns attach-agent $d1 $sink1
$ns connect $tcp1 $sink1
#Dich d2-sink2
set sink2 [new Agent/TCPSink]
$ns attach-agent $d2 $sink2
$ns connect $tcp1 $sink2
#Tao kich thuoc cua so cho nguon tcp1 la 32
$tcp1 set window_ 32
# Tien trinh toi co khoang thoi gian den tuan theo phan bo ham mu
set InterArrivalTime1 [ new RandomVariable/Exponential]
$InterArrivalTime1 set avg_ [expr 1/$lambda1]
# Tien trinh phuc vu co toc do tuan theo phan bo ham mu
set pktSize1 [ new RandomVariable/Exponential]
$pktSize1 set avg_ [ expr 100000.0/(8*$m1)]
# Thu tuc bat dau gui du lieu
proc sendpacket1 {} {
global ns tcp1 InterArrivalTime1 pktSize1 flag1
set time [$ns now]
if [expr $flag1 == 0] {
$ns at [ expr $time + [$InterArrivalTime1 value]] "sendpacket1"
set bytes [ expr round ([$pktSize1 value])]
$tcp1 send $bytes
}
}
#----------Tao nguon TCP2 cho node s2 ket noi voi dich d3------------------------
#Nguon TCP2
set tcp2 [new Agent/TCP]
$ns attach-agent $s2 $tcp2
$tcp2 set class_ 2
$tcp2 set fid_ 2
#Dich d3-sink3
set sink3 [new Agent/TCPSink]
$ns attach-agent $d3 $sink3
$ns connect $tcp2 $sink3
#Tao kich thuoc cua so cho nguon tcp2 la 32
$tcp2 set window_ 32
# Tien trinh toi co toc do tuan theo phan bo ham mu
set InterArrivalTime2 [ new RandomVariable/Exponential]
$InterArrivalTime2 set avg_ [expr 1/$lambda2]
# Tien trinh phuc vu co toc do tuan theo phan bo ham mu
set pktSize2 [ new RandomVariable/Exponential]
$pktSize2 set avg_ [ expr 100000.0/(8*$m2)]
# Thu tuc bat dau gui du lieu
proc sendpacket2 {} {
global ns tcp2 InterArrivalTime2 pktSize2 flag2
set time [$ns now]
if [expr $flag2 == 0] {
$ns at [ expr $time + [$InterArrivalTime2 value]] "sendpacket2"
set bytes [ expr round ([$pktSize2 value])]
$tcp2 send $bytes
}
}
#-------------Tao nguon TCP3 cho node s3 ket noi voi dich d1--------------------------
#Nguon s3-TCP3
set tcp3 [new Agent/TCP]
$ns attach-agent $s3 $tcp3
$tcp3 set class_ 3
$tcp3 set fid_ 3
#Dich d1-sink1
$ns connect $tcp3 $sink1
#Tao kich thuoc cua so cho nguon tcp3 la 32
$tcp3 set window_ 32
# Tien trinh toi co toc do tuan theo phan bo ham mu
set InterArrivalTime3 [ new RandomVariable/Exponential]
$InterArrivalTime3 set avg_ [expr 1/$lambda3]
# Tien trinh phuc vu co toc do tuan theo phan bo ham mu
set pktSize3 [ new RandomVariable/Exponential]
$pktSize3 set avg_ [ expr 100000.0/(8*$m3)]
# Thu tuc bat dau gui du lieu
proc sendpacket3 {} {
global ns tcp3 InterArrivalTime3 pktSize3 flag3
set time [$ns now]
if [expr $flag3 == 0] {
$ns at [ expr $time + [$InterArrivalTime3 value]] "sendpacket3"
set bytes [ expr round ([$pktSize3 value])]
$tcp3 send $bytes
}
}
#---------------Ham record-----------------------------------
# Ham record:
proc record {} {
global tcp1 tcp2 tcp3 cwnd_s1 cwnd_s2 cwnd_s3
set ns [Simulator instance]
#Sau thoi gian 0.1s thi ghi lay mau 1 lan
set time 0.1
#Tao bien cwnd1,cwnd2,cwnd3 lay gia tri thuoc tinh cwnd_ cua tcp1,tcp2,tcp3
set cwnd1 [$tcp1 set cwnd_]
set cwnd2 [$tcp2 set cwnd_]
set cwnd3 [$tcp3 set cwnd_]
#cai dat thoi gian hien tai
set now [$ns now]
#set cwnd1 [$tcp1 set cwnd_]
#set now [$ns now]
#Ghi gia tri thoi gian va cwnd1 vao file
puts $cwnd_s1 "$now [expr $cwnd1/1]"
puts $cwnd_s2 "$now [expr $cwnd2/1]"
puts $cwnd_s3 "$now [expr $cwnd3/1]"
$ns at [expr $now+$time] "record"
}
#-----------------Giam sat hang doi--------------------------------------
#Lay mau hang doi nut that co chai 0.1s mot lan
set qmon [$ns monitor-queue $r1 $r2 [open qm1.out w] 0.1];
[$ns link $r1 $r2] queue-sample-timeout;
set qmon [$ns monitor-queue $r2 $r3 [open qm2.out w] 0.1];
[$ns link $r2 $r3] queue-sample-timeout;
set qmon [$ns monitor-queue $r2 $r4 [open qm3.out w] 0.1];
[$ns link $r2 $r4] queue-sample-timeout;
set qmon [$ns monitor-queue $r4 $r5 [open qm4.out w] 0.1];
[$ns link $r4 $r5] queue-sample-timeout;
#---------------------------Finish----------------------------------------
puts "\n BAI TAP LON MON CO SO TRUYEN SO LIEU \n"
puts "\n GVHD: Ts. Nguyen Tai Hung \n"
puts "\n Sinh vien TH: Sai Van Oanh 20091993 \n"
puts "\n Duong Van Hao 20093433 \n"
puts "\n Processing! About 30 seconds for Nam and 30 seconds for Xgraph \n"
puts "\n Please wait...\n"
#Lap lich cac su kien mo phong
$ns at 0.0 "record"
$ns at 0.0 "$s1 label \"S1\""
$ns at 0.0 "$s2 label \"S2\""
$ns at 0.0 "$s3 label \"S3\""
$ns at 0.0 "$r1 label \"R1\""
$ns at 0.0 "$r2 label \"R2\""
$ns at 0.0 "$r3 label \"R3\""
$ns at 0.0 "$r4 label \"R4\""
$ns at 0.0 "$r5 label \"R5\""
$ns at 0.0 "$d1 label \"D1\""
$ns at 0.0 "$d2 label \"D2\""
$ns at 0.0 "$d3 label \"D3\""
$ns at 0.0001 "sendpacket1"
$ns at 0.0001 "sendpacket2"
$ns at 0.0001 "sendpacket3"
# Thiet lap thoi gian mo phong
$ns at 140.0 " finish "
#Chay
$ns run
#Ket thuc
Tài liệu tham khảo tiếng Việt về mô phỏng trong NS2:
-> Tài liệu 1: Tải về
-> Tài liệu 2: Tải về
Bài 2: Chạy mô phỏng truyền dữ liệu trong NS2
-> Download file chạy .tcl và file .awk của Project này:
-> Download file .awk: Tải về
-> Download file .tcl: Tải về
Chú ý: Để máy tính hoạt động trơn tru và được bảo dưỡng tự động thường xuyên, các bạn nên cài một số phần mềm chăm sóc hệ thống. Mình đã và đang sử dụng phần mềm chăm sóc hệ thống Glary Utilities Pro và thấy rất tốt, các bạn có thể Download và cài đặt bản full có kèm theo Key (serial) đầy đủ ( đã test) rất đơn giản tại đây: Tải về
- Để bảo vệ máy tính tốt hơn chống lại các phần mềm gián điệp, virus độc hại mà không ngốn quá nhiều tài nguyên máy tính ngay cả ở chế độ hoạt động và chế độ chờ, mình khuyến nghị các bạn cài đặt và sử dụng phần mềm diệt Virus Avast internet security( Kèm theo key/Serial đã test): Tại đây
chao a! e co lam 1 bai dua vao goi y cua a. nhung khi cho chuong trinh chay thi bao loi ben duoi:
ReplyDelete"vanquy@ubuntu:~$ ns baitaplon/btl.tcl
invalid command name "simulator"
while executing
"simulator create _o3 "
invoked from within
"catch "$className create $o $args" msg"
invoked from within
"if [catch "$className create $o $args" msg] {
if [string match "__FAILED_SHADOW_OBJECT_" $msg] {
delete $o
return ""
}
global errorInfo
error "class $..."
(procedure "new" line 3)
invoked from within
"new simulator"
invoked from within
"set ns [new simulator]"
(file "baitaplon/btl.tcl" line 8) "
mong a giai thich giup e voi nha. e moi hoc nen chua co kinh nghiem. chan thanh cam on an. chuc a luon thanh con.
chào bạn , bạn đã giải ra lỗi mà bạn vừa post lên chưa bạn , mình cũng bị lỗi như bạn mà ko biết làm thế nào nữa
Deletebạn ơi , mình có cho chạy bài 5 của bạn nhưng mà báo lỗi là:
ReplyDeletens: _o124 queue-sample-timeout: erro writing "file10": no space left on device
while excuting
puts $qtrace_ "[$ns_ now] [$from node_ id] [$tonode_ id] $qavg""
(procedure "_o124 " line7)
simplelink queu-sample-timeout line 7)
invoked from within
"_o124 queu-sample-timeout"
mình đang làm về đánh giá hiệu năng trong mạng adhoc,cho mình xin mấy cái file.awk với tính thông lượng, tỉ lệ mất gói tin, độ trễ... gmail của mình là hoale.dtvt@gmail.com
ReplyDeletecho minh xin dia chi mail cua thu le voi hoa le oi
Deleteho luda cho em xin nữa được không ạ hungmanhvnn@gmail.com
Deleteho luda cho em xin nữa được không ạ hungmanhvnn@gmail.com
Deletecho e xin nữa ạ :)
Deletecảm ơn bạn thứ lễ, mình nhận được rồi. hi vọng được bạn giúp đỡ nhiều
ReplyDeleteAi có mail của a ad main thứ lễ k? gửi cho mình xin với !
ReplyDeletemail của mình là tvgiang.bkan@gmail.com
ReplyDelete# Tien trinh phuc vu co toc do tuan theo phan bo ham mu
ReplyDeleteset pktSize3 [ new RandomVariable/Exponential]
$pktSize3 set avg_ [ expr 100000.0/(8*$m3)]
# Thu tuc bat dau gui du lieu
proc sendpacket3 {} {
global ns tcp3 InterArrivalTime3 pktSize3 flag3
set time [$ns now]
if [expr $flag3 == 0] {
$ns at [ expr $time + [$InterArrivalTime3 value]] "sendpacket3"
set bytes [ expr round ([$pktSize3 value])]
$tcp3 send $bytes
}
}
Anh cho em hỏi đoạn code trên với ạ, là cái $flag3 == 0 có nghĩa là gì ạ? Với cả cái pksize em tưởng là kích thước gói sao anh lại chú thích là tốc độ phục vụ ạ?. Vì tốc độ phục vụ e tưởng là phải tính theo bandwidth của link truyền ạ? Em cảm ơn anh trước nha :D
chao thu le
ReplyDeleteminh chay thu bai nay cua ban thi bao loi ngay tu dong dau tien la dong chu thich.
minh khong biet nhu nao nua. mong ban jup do
Xin cam on
Chào Thứ Lễ!
ReplyDeleteCho mình xin mấy cái file.awk với. Mail của mình hobangocd11vt6@gmail.com
Chào ad Thứ Lễ! Mình muốn xin các file .awk trong các bài ad đã đăng. Mail của mình là nguyenngoctuyen279@gmail.com. Thank you very much!
ReplyDeletead ơi cho em hỏi làm thế nào để chạy dc cái code ni vs lại ren mà e làm kéo thả trong ns2 rồi chạy không biết làm cách nào để hiện ra xgraph, e cảm ơn!
ReplyDelete$pktSize1 set avg_ [ expr 100000.0/(8*$m1)]
ReplyDeleteAnh cho em hoi tai sao lai set kich thuoc goi tin trung binh la nhu the voi a.
chào anh. em có 1 bài tập lớn như sau:
ReplyDeleteMô phỏng mạng WlAN :
-10-20 người sử dụng
-CSMA/CA
-phát nguồn Exponetial(không dùng CBR)
-tóc độ trung binhg, tùy chọn
-chạy NAM, vẽ đồ thị
mô phỏng 20 lần hiệu suất sử dụng kênh truyền, độ trễ trung binhg của lưu lượng qua mạng wlan.
mong được anh gợi ý. em cám ơn