báo cáo mô phỏng mạng di động bằng phương thức định tuyến AODV

1,049 views
Skip to first unread message

danhdung nguyen

unread,
Jun 18, 2012, 10:59:44 AM6/18/12
to VANETs-K54
Mô phỏng mạng di động bằng phương thức định tuyến AODV
1.1 Giới thiệu
NS-2 (phiên bản) là phần mềm mô phỏng mạng điều khiển sự kiện riêng rẽ
hướng đối tượng, được phát triển tại UC Berkely, viết bằng ngôn ngữ C+
+ và OTcl. NS rất hữu ích cho việc mô phỏng mạng diện rộng (WAN) và
mạng local (LAN). Bốn lợi ích lớn nhất của NS-2 phải kể đến đầu tiên
là:
• Khả năng kiểm tra tính ổn định của các giao thức mạng đang tồn tại
• Khả năng đánh giá các giao thức mạng mới trước khi đưa vào sử dụng
• Khả năng thực thi những mô hình mạng lớn mà gần như ta không thể
thực thi được trong thực tế
• Khả năng mô phỏng nhiều loại mạng khác nhau
Chúng ta cài đặt và thực thi NS2 trong môi trường Linux.
1.2 Chạy chương trình NS-2 và NAM
Hình sau biểu diễn kiến trúc thư mục NS-2 và NAM trong môi trường
Linux. NS-2 và NAM đều là các thư mục con của ns-allinone-2.28. NS-2
bao gồm các thực thi mô phỏng (bằng mã C++ và mã OTcl), các kịch bản
Otcl kiểm tra tính hiệu lực và các kịch bản OTcl minh họa.

Hình 1: Kiến trúc thư mục cài đặt của NS-2 và NAM trong môi trường
Linux
1.3 C++ và OTcl
Hình sau biểu diễn kiến trúc chung của NS. User có thể tưởng tượng
mình đang đứng ở góc trái dưới, thiết kế và chạy các mô phỏng trong
Tcl. Tcl dùng các đối tượng mô phỏng trong OTcl. Các đối tượng Bộ lập
lịch Sự kiện và hầu hết các đối tượng Thành phần Mạng thực thi bằng C+
+ và sẵn có cho OTcl qua một liên kết OTcl. Liên kết OTcl này được
thực thi dùng TclCL. Tất cả đã làm nên NS, bộ biên dịch Tcl mở rộng
hướng đối tượng và các thư viện mô phỏng mạng.


• NS sử dụng hai ngôn ngữ lập trình: Ngôn ngữ kịch bản (Tcl – Tool
Command Language, đọc là tickle) và Ngôn ngữ lập trình hệ thống (C/C+
+)
• NS là tầng biên dịch Tcl để chạy các kịch bản Tcl
• Bằng cách sử dụng C++/OTcl, bộ mô phỏng mạng phải hoàn toàn là hướng
đối tượng
Hình sau chỉ ra các đối tượng C++ có liên kết OTcl. Khi đó, nếu chúng
tạo nên một phân cấp thì các đối tượng OTcl cũng có một phân cấp tương
ứng như vậy.

Hình 5: C++ và OTcl: Sự đối ngẫu


1.4 Các đặc tính của NS-2
NS-2 thực thi những tính năng sau:
• Các kỹ thuật quản lý hàng đợi Router như DropTail, RED, CBQ,
• Multicasting
• Mô phỏng mạng không dây
o Được phát triển bởi Sun Microsystems + UC Berkeley (Dự án Daedalus)
o Thuộc mặt đất (di động, adhoc, GPRS, WLAN, BLUETOOTH), vệ tinh
o Chuẩn IEEE 802.11 có thể được mô phỏng, các giao thức Mobile-IP và
adhoc như DSR, TORA, DSDV và AODV
• Hành vi nguồn traffic – www, CBR, VBR
• Các agent truyền tải – UDP, TCP
• Định tuyến
• Luồng packet
• Mô hình mạng
• Các ứng dụng – Telnet, FTP, Ping
• Các packet tracing trên tất cả các link và trên các link xác định

1.5NAM
Khi mô phỏng kết thúc, nếu các script Tcl (OTcl) đầu vào yêu cầu thì
NS sẽ tạo ra các file text lưu chi tiết dữ liệu mô phỏng. Dữ liệu đó
có thể được dùng cho việc phân tích hay được dùng như đầu vào cho các
công cụ trình diễn mô phỏng đồ họa NAM.
NAM thực hiện lại những sự kiện từ file lần vết nam (nam tracefile).
File này có thể là khổng lồ khi thời gian mô phỏng lớn và sự kiện xảy
ra nhiều. Vì thế, phải hết sức cẩn thận. Ngoài ra, cần chú ý rằng các
thông tin đồ họa lại không được dùng để phân tích mô phỏng một cách
chính xác.
Có thể tóm tắt các tính năng của NAM như sau:
• Cung cấp trình diễn ảo cho mạng đã được tạo
• Có thể thi hành trực tiếp từ kịch bản Tcl
• NAM có giao diện đồ hoạ bắt mắt của CD player với các điều khiển bao
gồm play (chạy), stop (ngưng), fast forward (chạy tiếp nhanh), rw (lùi
lại), pause (tạm ngưng), điều khiển tốc độ trình diễn và tính năng
giám sát packet
• Biểu diễn thông tin như throughput (thông lượng), số packet trên
từng link
• Cung cấp giao diện rê và thả cho việc tạo ra các topology (mô hình).

Cửa sổ minh hoạ NAM
Khi một file trace được tải vào nam (bằng lệnh ‘Open’ hay từ command
line) thì một cửa sổ minh hoạ NAM sẽ xuất hiện. Giao diện chính có
menu bar (thanh lệnh chính), control bar (thanh điền khiển), main
display (màn hình minh họa chính). Ngoài ra, khi lựa chọn một số chức
năng từ menu hay bằng cách click chuột thì còn có thêm các cửa sổ con
xuất hiện.

Hình 7: Mô tả các công cụ của NAM

1.6Các thuật toán định tuyến
Chúng ta sẽ nói về vector khoảng cách theo yêu cầu đặc biệt-AODV

AODV là một kiểu định tuyến vector khoảng cách. Nó không đòi hỏi các
node phải duy trì các đường định tuyến tới các đích bởi vì không phải
lúc nào chúng cũng được sử dụng.
Chỉ cần các điểm đầu nút của một kết nối có một đường định tuyến phù
hợp để đi được tới nhau là được. Giao thức này sử dụng các bản tin
khác nhau để tìm ra và duy trì các kết
nối, chúng gồm có: bản tin yêu cầu định tuyến (RREQs), bản tin phản
hồi yêu cầu định tuyến (RREPs) và bản tin báo lỗi định tuyến (RERRs).
Các loại bản tin này được nhận
thông qua giao thức UDP và normal IP header processing applies.

AODV gán số thứ tự cho từng đường định tuyến. Số thứ tự của đích đến
được tạo ra
bởi các đích đến như là một tham số trong thông tin định tuyến mà nó
gửi đi tới các nút đang yêu cầu định tuyến tới nó. Sử dụng các số thứ
tự này đảm bảo sẽ không xuất hiện hiện tượng lặp (loop) và cho phép
chúng ta biết đường định tuyến nào là tốt hơn. Để chọn lựa giữa hai
đường định tuyến tới cùng một đích, nút gửi yêu cầu định tuyến luôn
luôn chọn đường số thứ tự tương ứng cao nhất. Các nút mà là một phần
của mộtđường định tuyến vẫn dùng được có thể đưa ra thông tin kết nối
bằng cách quảng bá định kỳ ra hàng xóm xung quanh nó bản tin Hello (là
một bản tin RREP đặc biệt). Nếu bản tin Hello không còn nhận được từ
một hàng xóm nào đó sau một khoảng thời gian định trước thì có nghĩa
làcó thể đã mất kết nối tới vị hàng xóm đó.

Khi một nút phát hiện ra đường đi tới một nút hàng xóm không còn dùng
được nữa nósẽ xóa thông tin đường này và gửi đi một bản tin RERR tới
các hàng xóm còn lại, việc nàygiúp duy trì danh sách các hàng xóm vẫn
còn liên lạc được. Thủ tục này sẽ được lặp lại tại các nút nhận được
bản tin RERR. Một nút mà nhận được một bản tin RERR có thể lại gửi đi
một bản tin RREQ.

AODV không cho phép điều khiển các kết nối theo một hướng duy nhất.


1.7.Các thành phần cơ bản trong mô phỏng NS2
• Khởi tạo và kết thúc
………………………………………………
• Định nghĩa 1 mạng các liên kết và các nút
………………………………………………
• Tác nhân và ứng dụng
………………………………………………
• Lập lịch sự kiện
………………………………………………
• Hiển thị dùng NAM
………………………………………………
• Bám vết
………………………………………………..
• Biến ngẫu nhiên
……………………………………………….
Các ví dụ:
Kịch bản otcl thứ 1:
Kịch bản OTcl này sẽ thực hiện những việc sau:
• Tạo hai node, thêm duplex-link giữa hai node với các tham số cấu
hình thích hợp
• Thêm agent UDP và agent UDPsink tương ứng gắn vào node 0 và 1
• Thêm ứng dụng lưu lượng CBR vào agent UDP
• Kết nối các agent và chạy mô phỏng trong 5 giây
Gọi NAM để minh hoạ hoạt động của topology này
Code:
# Create a simulator object
set ns [new Simulator]

# Open the nam trace file, associated with nf,
set nf [open out.nam w]
$ns namtrace-all $nf

# Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
#Close the trace file
close $nf
#Execute nam on the trace file
exec nam out.nam &
exit 0
}

#Create two nodes
set n0 [$ns node]
set n1 [$ns node]

#Create a duplex link between the nodes
$ns duplex-link $n0 $n1 1Mb 10ms DropTail

#Create a UDP agent and attach it to node n0
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0

# Create a CBR traffic source and attach it to udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.1
$cbr0 attach-agent $udp0

#Create a Null agent(a traffic sink), attach it to node n1
set null0 [new Agent/Null]
$ns attach-agent $n1 $null0

#Connect the traffic source with the traffic sink
$ns connect $udp0 $null0

# Schedule events for the CBR agent
$ns at 0.5 "$cbr0 start"
$ns at 4.5 "$cbr0 stop"
#Call the finish procedure after 5 seconds of simulation
time
$ns at 5.0 "finish"

# Run the simulation
$ns run

Kết quả:


Kịch bản otcl thứ 2:
Kịch bản OTcl thứ 2 thực hiện
• Tạo sau node, hai node gắn vào agent Ping, hai node gắn vào agent
UDP
• Những node này sẽ gửi dữ liệu đến node 3 thông qua node 2
• Vì băng thông của link giữa hai node 2 và 3 không đáp ứng đủ nên sẽ
có một hàng đợi có packet bị huỷ
Code:
# Create a simulator object
set ns [new Simulator]

# Open a trace file
set nf [open simu.tr w]
$ns namtrace-all $nf

# Define different colors for data flows
$ns color 1 Blue
$ns color 2 Red

# Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all $nf

# Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
#Close the trace file
close $nf
#Execute nam on the trace file
exec nam out.nam &
exit 0
}

# Create four nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]

# Pinging Nodes
set n4 [$ns node]
set n5 [$ns node]
set p0 [new Agent/Ping]
$ns attach-agent $n4 $p0
set p1 [new Agent/Ping]
$ns attach-agent $n5 $p1
set p2 [new Agent/Ping]
$ns attach-agent $n3 $p2
set p3 [new Agent/Ping]
$ns attach-agent $n3 $p3

#Connect the two agents
$ns connect $p0 $p2

#Connect the two agents
$ns connect $p1 $p3
$n2 color red
$n3 color blue
$n4 color SeaGreen
$n5 color SeaGreen

# Define a 'recv' function for the class 'Agent/Ping'
Agent/Ping instproc recv {from rtt} {
$self instvar node_
puts "node [$node_ id] received ping answer from \
$from with round-trip-time $rtt ms."
}

#Create links between the nodes
$ns duplex-link $n0 $n2 1Mb 10ms DropTail
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n3 $n2 1Mb 10ms SFQ
$ns duplex-link $n4 $n2 1Mb 10ms DropTail
$ns duplex-link $n5 $n2 1Mb 10ms DropTail
$ns duplex-link-op $n0 $n2 orient right-down
$ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient right

# Monitor the queue for the link between node 2 and node 3
$ns duplex-link-op $n2 $n3 queuePos 0.5

# Create a UDP agent and attach it to node n0
set udp0 [new Agent/UDP]
$udp0 set class_ 1
$ns attach-agent $n0 $udp0

# Create a CBR traffic source and attach it to udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0

# Create a UDP agent and attach it to node n1
set udp1 [new Agent/UDP]
$udp1 set class_ 2
$ns attach-agent $n1 $udp1

# Create a CBR traffic source and attach it to udp1
set cbr1 [new Application/Traffic/CBR]
$cbr1 set packetSize_ 500
$cbr1 set interval_ 0.005
$cbr1 attach-agent $udp1

#Create a Null agent (a traffic sink) and attach it to node n3
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0

#Connect the traffic sources with the traffic sink
$ns connect $udp0 $null0
$ns connect $udp1 $null0

#Schedule events for the CBR agents
$ns at 0.5 "$cbr0 start"
$ns at 0.6 "$p0 send"
$ns at 0.8 "$p0 send"
$ns at 0.9 "$p0 send"
$ns at 0.6 "$p1 send"
$ns at 0.8 "$p1 send"
$ns at 0.9 "$p1 send"
$ns at 1.0 "$cbr1 start"
$ns at 4.0 "$cbr1 stop"
$ns at 4.5 "$cbr0 stop"

#Call the finish proc. after 5 seconds of simulation time
$ns at 5.0 "finish"
#Run the simulation
$ns run

Kết quả hiển thị:

Hieu Tu

unread,
Dec 16, 2012, 5:28:10 PM12/16/12
to vanet...@googlegroups.com
aflm thía nào để tải đc cả bản ni về nhỉ?


Vào 21:59:44 UTC+7 Thứ hai, ngày 18 tháng sáu năm 2012, danhdung nguyen đã viết:

Nguyễn Tiến Sáng

unread,
Oct 15, 2013, 8:41:36 AM10/15/13
to vanet...@googlegroups.com
Chao anh chi. Em dang co mot de tai nghien cuu va mo phong mang adhoc ( cu the la mo phong AODV cac dinh tuyen khac) nhung em chua chi moi cai xong ns2. Mong moi nguoi co the chi giao va share cho em mot so tai lieu duoc khong a! cam on ca nha!
Reply all
Reply to author
Forward
0 new messages