Chủ đề: "Mô phỏng mạng bằng công cụ NS2"
Do vừa phải làm bài tập lớn về mô phỏng một hệ thống mạng bằng công cụ mô phỏng NS2 xong. Nên mình viết bài này để chia sẻ kinh nghiệm của mình sau một thời gian tìm hiểu để những bạn nào muốn tìm hiểu về công cụ NS2 trong mô phỏng các hệ thống mạng đơn giản có thể dễ dàng nắm bắt được cách thức để xây dựng, mô phỏng cũng như tính toán một mạng hàng đợi đơn giản!
Trước tiên mình có sơ đồ mạng với các thông số mạng như sau:
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
Do vừa phải làm bài tập lớn về mô phỏng một hệ thống mạng bằng công cụ mô phỏng NS2 xong. Nên mình viết bài này để chia sẻ kinh nghiệm của mình sau một thời gian tìm hiểu để những bạn nào muốn tìm hiểu về công cụ NS2 trong mô phỏng các hệ thống mạng đơn giản có thể dễ dàng nắm bắt được cách thức để xây dựng, mô phỏng cũng như tính toán một mạng hàng đợi đơn giản!
Trước tiên mình có sơ đồ mạng với các thông số mạng như sau:
Trong đó sơ đồ mạng có 5 Router ( Ri, i=1->5)
Có 3 luồng dữ liệu, S1, S2, S3 truyền đi với số lượng gói
phát ra trên mỗi luồng tuân theo phân bố Poisson, 3 đích nhận dữ liệu D1, D2, D3.
Giả thiết định tuyến:
S1 -> R1
-> R2 -> R3 -> D1
S1 -> R1 -> R2 -> R4 -> R5 -> D2
S2 -> R1
-> R2 -> R4 -> R5 -> D3
S3 -> R1
-> R2 -> R3 -> D1
Ba nguồn dữ liệu Si phát ra các gói với tốc độ tuân theo phân
bố Poisson với tham số lamda =100 (gói/s) trạm phục vụ các gói với tốc độ cố định tải ᵨ=0.8
Trễ truyền lan trên các link là 10ms
Yêu cầu:
1.Dựng kịch bản mô phỏng hệ thống
thông tin trên trong thời gian mô phỏng 140s
2.Thu
thập vẽ đồ thị số liệu chiều dài hàng đợi, tính chiều dài hàng đợi trung bình
trên các link.
3.Thu
thập vẽ đồ thị số liệu, tính toán trễ toàn đường truyền, bỏ qua thời gian gói từ
Si vào R1
Trong trường hợp không có lỗi đường truyền.
Trong phạm vi bài này tôi sẽ hướng dẫn các bạn hoàn thành yêu cầu 1: Dựng kịch bản mô phỏng hệ thống. Giao thức sử dụng ở đây là TCP các bạn phân biệt với mạng gói UDP.
Các bạn thực hiện theo đoạn code sau đây(Mỗi đoạn code sẽ được hướng dẫn cụ thể):
#
Tao mot doi tuong mo phong
set
ns [ new Simulator]
#Tao
cac file Trace
#File out.tr bám vết các sự kiện diễn ra trong hệ thống mạng
set
tracefile [open out.tr w]
$ns
trace-all $tracefile
#Tao
cac file Name trace để vẽ trên Nam
set
namfile [open out.nam w]
$ns
namtrace-all $namfile
#Kich
thuoc hang doi:20
#Mặc định kích thước hàng đợi là 50
set
queuesize 20
#
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 namfile
$ns flush-trace
# Đóng các file bám vết trên lại.
close $tracefile
close $namfile
#Gọi thủ tục để vẽ file Nam
exec nam out.nam &
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
#Truong
hop khac co the su dung hang doi SFQ
#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
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
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
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
#Lap
lich cac su kien mo phong
$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\""
#
Thiet lap thoi gian mo phong
$ns
at 140.0 " finish "
#Chay
$ns
run
#Ket thuc
#Tất cả đoạn code trên các bạn lưu vào 1 file có đuôi .tcl: ở đây mình lưu thành file BTL.tcl
Sau đó bạn chạy file này bằng cách dẫn đường dẫn đến file chứa thư mục các bạn vừa tạo rồi sau đó dùng câu lệnh: ns BTL.tcl
Sau khi chạy bạn sẽ nhận được kết quả là một hình ảnh mô phỏng trên NAM như sau:
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
Em chào Anh. Em hiện là SV ngành CNTT. Em đang làm tiểu luận về đánh giá hiệu năng mạng. Em đang tìm code của giao thức SFED, PFED, FED để mô phỏng trên NS2. Anh có thể hướng dẫn em địa chỉ để tìm kiếm các code của các giao thức này và cho em tài liệu hướng dẫn để em thêm các giao thức này vào NS2. Em tên Thế Phương ở Bến Tre,email của em: thephuongvn0483@yahoo.com.vn. Được sự giúp đỡ của anh em thành thật biết ơn!
ReplyDeleteMình không tìm hiểu về lĩnh vực của bạn nên không thể giúp bạn được, có gì bạn google search nhé.
DeleteChúc vui!
Em chào anh, anh cho e hỏi là e tạo trước 1 file.tcl sau đó viết đoạn code trên vào có đúng k ạ nhưng sau khi viết xong thì lại có thêm 2 file .nam và .tr. Em chạy nhưng cứ báo thiếu file .nam là thế nào ạ. Em mới tìm hiểu về NS2 nên mong a chỉ giúp e với ạ, Thanks a nhìu!
ReplyDeleteBạn chạy đã xuất hiện file .nam rồi đúng không. Bạn thử vào trang này copy code vào file.tcl của bạn và chạy thử xem sao, nếu có vấn đề thì mình sẽ hỗ trợ bạn sau: http://khoanhkhaccuocsongviet.blogspot.com/2012/12/bai-5-file-btltcl-cho-mo-hinh-trong-bai.html
Deleteanh oi! cho em hoi, em hoc k55 a! :-D.
ReplyDeleteki nay em hoc mon co so truyen so lieu lop thay Hung, thay cung giao bai tap lon tuong tu nhu vay nhung em chua hieu la.
Tinh :
Chieu dai hang doi trung binh tai Ri la tinh N hay Nq
Thoi gian doi trung binh tai Ri la tinh T hay Tq
thanks anh nhieu :-)
Em cũng học thầy hưng k58,A có kinh nghiệm chỉ giùm e ạ, bài tập lớn thầy hỏi nhiều k a :)
Deletecác bạn cho mình hỏi là tại sao khi mình viết code lưu ở định dạng tenfile.tcl rồi ở lưu ngoài window, nhưng khi copy dán đoạn code vào trong ubutun ko được hả các bạn , hay là 2 hệ điều hành này ko cho phép lẫn nhau . ctrl + c ko được
ReplyDeleteminh cai ns2 xong test thanh cong n khi chay thu file mcast.tcl bi bao loi. ban xem sua giup minh voi
ReplyDeletehoalee@hoalee-desktop:~/ns-allinone-2.35/ns-2.35/tcl/ex$ ns mcast.tcl
running nam...
hoalee@hoalee-desktop:~/ns-allinone-2.35/ns-2.35/tcl/ex$ Can't find a usable init.tcl in the following directories:
/home/hoalee/ns-allinone-2.35/tcl8.5.10/library:/usr/lib /root/ns-allinone-2.35/lib/tcl8.5 ./lib/tcl8.5 ./lib/tcl8.5 ./library ./library ./tcl8.5.10/library ./tcl8.5.10/library
This probably means that Tcl wasn't installed properly.
Mình đang học môn này thầy cho bài tập mà mình chưa hình dung bài tập này làm thế nào, bạn có thể huớng dẫn mình đuợc không ạ, do mình học CNTT từ xa của Học viện bưu chính viễn thông !
ReplyDeleteBài tập thực hành NS-2
1. Tìm hiểu về ngôn ngữ OtcL thông qua (Otcl: The User Language) http://nile.wpi.edu/NS/
2. Đọc hiểu và chạy ví dụ mô phỏng đơn giản (Simple Simulation Example)
3. Đọc hiểu về Event Scheduler, Network Components, và Packet
4. Đọc hiểu về phân tích file Trace và hàng đợi:
a. Trace Analysis Example http://nile.wpi.edu/NS/
b. RED Queue Monitor Example http://nile.wpi.edu/NS/
c. Hiểu rõ cách rút trích và lọc dữ liệu đọc Chương 3 tài liệu http://www-sop.inria.fr/members/Eitan.Altman/COURS-NS/n3.pdf
5. Mô hình quả tạ (dumb-bell) đơn giản với 1 flow FTP hoạt động trên TCP
a. Kích thước Queue = BDP (DropTail). Hiển thị kết quả sự thay đổi congestion window size, và throughput.
b. Giảm kích thước Queue đi một nửa (DropTail). Hiển thị kết quả sự thay đổi congestion window size, và throughput.
c. Dùng RED với thông số mặt định. Hiển thị kết quả sự thay đổi congestion window size, và throughput.
d. Phân tích và so sánh các kết quả trên, và đưa ra nhận xét.
6. Sử dụng lại mô hình như câu 5, thay đổi delay giữa R1 và R2, biến thiên từ 5ms – 200ms, queue size = BDP, và dùng Droptail.
a. Hiển thị kết quả sự thay đổi congestion window size, throughput, và RTT.
b. So sánh các kết quả, và đưa ra nhận xét.
7. Sử dụng lại mô hình như câu 5, thay đổi delay giữa R1 và R2, biến thiên từ 5ms – 200ms, queue size = BDP, và dùng Droptail.
a. Hiển thị kết quả sự thay đổi congestion window size, throughput, và RTT.
b. So sánh các kết quả, và đưa ra nhận xét.
8. Mô hình quả tạ (dumb-bell) đơn giản với 2 flows FTP hoạt động trên TCP
Bottleneck queue size = max BDP, vẽ hình congestion window size, throughput của 2 flows và cho nhận xét.
9. Mô hình quả tạ (dumb-bell) đơn giản với 5 flows TCP với queue size = BDP. Tất cả các TCP flow được start đồng thời
a. Dùng Drop-tail, hãy vẽ hình congestion window và throughput. (Chú ý vấn đề global synchronization)
b. Dùng RED, hãy vẽ hình congestion window và throughput. So sánh với câu a. Cho nhận xét.
10. Cho mô hình như hình vẽ sau: 5 flows TCP, 1 UDP (rate = 2Mbps)
a.
b. Dùng Drop-tail, hãy vẽ hình congestion window và throughput.
c. Dùng RED, hãy vẽ hình congestion window và throughput. So sánh với câu a. Cho nhận xét.
Chào bạn Thứ lễ: Mình đang có đề tài về tìm hiểu luồng video video truyền qua mạng không dây. Mình cần bạn giúp liên hệ sdt mình: 01675587820 , sẽ hậu tạ bạn nếu ok.
ReplyDeleteban cho minh hoi doan tao cac tcp sao ban lai ket noi s1 vs dich d1 va d2; tao tcp2 cho s2 ket noi dich d3 ; tao tcp3 cho s3 ket noi voi dich d1. Minh nghi theo so do thi cac topo phai khac chu s1-d1 s2-d2 s3-d3 co ma.
ReplyDeletevì đề thầy Hưng cho như thế cậu ơi, nhưng code của ad bị thiếu. có n luồng thì cần n tác nhân
DeleteThis comment has been removed by the author.
ReplyDeleteAd cho mình hỏi ý nghĩa câu lệnh BEGIN {sent[5000];receiv[5000];delay[5000]} là gì với. Tks ad.
ReplyDeleteEm chao anh anh oi em co gap van de la file cua em bai8.tlc nhung khi thuc hien lenh tren terminal no bao ko co duong link cua bai8.tlc. nhung em kiem tra thi co duong link ay va no co chua file bai8.tlc. Anh giup em voi aj. Em cam on Anh a
ReplyDeleteanh ơi em em cài nam rồi nhưng chạy nó toàn báo lỗi phân khuc: core dumped là bị làm sao ạ?
ReplyDeletea ơi e đang có một bài tập lớn về mô phỏng hàng đợi RED sử dụng NS2. e đã cài đặt xong ns2 nhưng cẫn chưa hiểu được cách sử dụng các thành phần trong ns2 và cách mở code của bài mô phỏng
ReplyDeletea giúp e với ạ
cảm ơn a nhìu nhìu
em có bài tập mô phỏng trace driven trong ns2 , ai có thẻ giúp đỡ em không ạ
ReplyDeleteGreat and I have a neat supply: Where Is Charlotte Church House Renovation home addition builders near me
ReplyDelete