Với những kết quả nghiên cứu mà luận văn đã đạt được, ta có được cái nhìn khái quát về mối quan hệ giữa sự linh động của các nút với tính hiệu quả của các giao thức định tuyến trong mạng AD HOC. Tuy nhiên, còn rất nhiều các vấn đề khác của các giao thức cần được xem xét như sau:
Đánh giá ảnh hưởng của sự di động của nút mạng đến hiệu quả của những giao thức khác: TORA, ZRP …
Định tuyến multicast,…
Nghiên cứu, xây dựng và triển khai các vấn đề về an ninh cho mạng vô tuyến Ad hoc.
Vấn đề giảm phụ tải truyền thông trong mạng MANET.
Các yêu cầu hiệu suất liên quan tới các ứng dụng cụ thể như vấn đề đảm bảo chất lượng dịch vụ (QoS),…
TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Nguyễn Đình Việt (2008), Bài giảng đánh giá hiệu năng mạng máy tính, Trường Đại học Công nghệ - Đại học quốc gia Hà Nội.
Tiếng Anh
2. Andrea Goldsmith (2005), Wireless Communications, Cambridge University Press. 3. Eitan Altman, Tania Jiménez (2003), NS Simulator for beginners,
4. Stefano Basagni, Marco Conti, Silvia Giordano and Ivan Stojmenovic (2004),
Mobile AdHoc Networking, A John Wiley & Sons., Publication.
5. Torbjörn Grape (2003), Wireless LANs Real-Time Traffic, Master’s Thesis, Linköping University, Sweden.
6. Yasser Kamal Hassan, Mohamed Hashim Abd El-Aziz and Ahmed Safwat Abd El- Radi (2010), Performance Evaluation of Mobility Speed over MANET Routing Protocols, International Journal of Network Security.
7. P. Nicopolitidis, M.S.Obaidat, G.I.Papadimitriou, A.S.Pomportsis (2003), Wireless
networks, John Wiley & Son Ltd.
8. Timo Ralli (2006), National strategies for public WLAN roaming, Master’s Thesis, Technology Helsinki.
9. Mohd Izuan Mohd Saad, Zuriati Ahmad Zukarnain (2009), Performance Analysis of Random-Based Mobility Models in MANET Routing Protocol, European
Journal of Scientific Research.
10.Subir Kumar Sarkar, T G Basavaraju, C Puttamadappa, Ad Hoc Mobile Wireless
Networks, Auerbach Publications.
11.Yinfei Pan, Design Routing Protocol Performance Comparison in NS2: AODV comparing to DSR as Example
12.VINT Project, UC Berkely, LBL, USC/ISI, and Xerox PARC. (2005), The ns
Manual (formerly ns Notes and Documentation)
13.http://www.eetimes.com 14.http://www.flickr.com
15.http://www.isi.edu/nsnam/ns/tutorial/ 16.http://en.wikipedia.org/
18.http://4ellene.net/tt/1077 19.http://mailman.isi.edu/pipermail/ns-users/2007-August/060797.html 20.http://toilers.mines.edu/Public/Code/Nsinspect.html 21.http://masimum.inf.um.es/?Software:UM-OLSR:Installation 22.http://users.crhc.illinois.edu/thkim/ece439/ns2_assignment2.htm PHỤ LỤC dsdv-cbr10-rwp0-speed10.tcl # ============================================================ # Define options # ============================================================ set val(chan) Channel/WirelessChannel
set val(prop) Propagation/TwoRayGround set val(netif) Phy/WirelessPhy
set val(mac) Mac/802_11
set val(ifq) Queue/DropTail/PriQueue set val(ll) LL
set val(ant) Antenna/OmniAntenna
set val(x) 1500 ;# X dimension of the topography set val(y) 900 ;# Y dimension of the topography set val(ifqlen) 50 ;# max packet in ifq
set val(seed) 1.0
set val(adhocRouting) DSDV
set val(nn) 50 ;# how many nodes are simulated set val(cp) "/home/phd1983/ns-2.34/protocols/cbr/cbr-50-10-4"
set val(sc) "/home/phd1983/ns-2.34/protocols/scen/rwp/rwp-1500-900-50-0-10-0" set val(stop) 900.0 ;# simulation time
# ============================================================ # Main Program
# ============================================================ #
# Initialize Global Variables #
# create simulator instance set ns_ [new Simulator] # setup topography object
set topo [new Topography] # create trace object for ns and nam
set tracefd [open dsdv-cbr10-rwp0-speed10-out.tr w] set namtrace [open dsdv-cbr10-rwp0-speed10-out.nam w] $ns_ trace-all $tracefd
$ns_ namtrace-all-wireless $namtrace $val(x) $val(y) # define topology
$topo load_flatgrid $val(x) $val(y) #
# Create God #
set god_ [create-god $val(nn)] #
# define how node should be created #
#global node setting
$ns_ node-config -adhocRouting $val(adhocRouting) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -movementTrace ON \
-macTrace OFF #
# Create the specified number of nodes [$val(nn)] and "attach" them to the channel. #
for {set i 0} {$i < $val(nn) } {incr i} { set node_($i) [$ns_ node]
$node_($i) random-motion 0 ; # disable random motion }
#
# Define node movement model #
puts "Loading connection pattern..." source $val(cp)
#
# Define traffic model #
puts "Loading scenario file..." source $val(sc)
# Define node initial position in nam for {set i 0} {$i < $val(nn)} {incr i} {
$ns_ initial_node_pos $node_($i) 50 }
#
# Tell nodes when the simulation ends #
for {set i 0} {$i < $val(nn) } {incr i} {
$ns_ at $val(stop).0 "$node_($i) reset"; }
$ns_ at $val(stop).0002 "puts \"NS EXITING...\" ; $ns_ halt"
puts $tracefd "M 0.0 nn $val(nn) x $val(x) y $val(y) rp $val(adhocRouting)" puts $tracefd "M 0.0 sc $val(sc) cp $val(cp) seed $val(seed)"
puts "Starting Simulation..." $ns_ run
average_end-end_delay.pl
# type: perl average_end-end_delay.pl <trace file>
# --- $infile=$ARGV[0]; $speed=$ARGV[1]; $sum=0; $recvnum=0; # --- open (DATA,"<$infile") || die "Can't open $infile $!";
while (<DATA>) { @x = split(' ');
for ($x[5]) {
if (( $x[0] eq "s") && ( $x[6] eq "cbr" ) && ( $x[3] eq "AGT" )) {$start_time = $x[1]; }
if (( $x[0] eq "r") && ( $x[6] eq "cbr" ) && ( $x[3] eq "AGT" )) {$end_time = $x[1]; $recvnum++;}
$packet_duration =$end_time - $start_time;
if ( $packet_duration > 0 ) { $sum += $packet_duration; } }
}
# --- $delay=$sum/$recvnum;
#print STDOUT "Total delay time of packets = $sum\n"; #print STDOUT "Total packets = $recvnum\n";
print STDOUT "$speed", " ", "$delay\n"; close DATA;
exit(0);
normalized_routing_overhead.pl
# type: perl normalized_routing_overhead.pl <trace file>
# --- $infile=$ARGV[0]; $speed=$ARGV[1]; $routing_packets=0; $sum_received=0; # --- open (DATA,"<$infile") || die "Can't open $infile $!";
while (<DATA>) { @x = split(' ');
if (( $x[0] eq "r") && ( $x[6] eq "cbr" ) && ( $x[3] eq "AGT" )) {$sum_received++; }
if (( $x[0] eq "s" || $x[0] eq "f") && ( $x[6] eq "message" ) && ( $x[3] eq "RTR" )) {$routing_packets++; }
}
# --- $normalized_routing_overhead=($routing_packets/$sum_received); #print STDOUT "Total packets received = $sum_received\n";
#print STDOUT "Total routing packets sent & forward = $routing_packets\n"; print STDOUT "$speed", " ", "$normalized_routing_overhead \n";
close DATA; exit(0);
packet_delivery_fraction.pl
# type: perl packet_delivery_fraction_ratio.pl <trace file> # --- $infile=$ARGV[0]; $speed=$ARGV[1]; $sum_sent=0; $sum_received=0; # --- open (DATA,"<$infile") || die "Can't open $infile $!";
while (<DATA>) { @x = split(' ');
if (( $x[0] eq "s") && ( $x[6] eq "cbr" ) && ( $x[3] eq "AGT" )) {$sum_sent++; }
if (( $x[0] eq "r") && ( $x[6] eq "cbr" ) && ( $x[3] eq "AGT" )) {$sum_received++; }
}
# --- $packet_delivery_ratio=($sum_received/$sum_sent)*100; #print STDOUT "Total packets sent = $sum_sent\n";
#print STDOUT "Total packets received = $sum_received\n"; print STDOUT "$speed", " ", "$packet_delivery_ratio\n"; close DATA;
throughput.pl
# type: throughput.pl <trace file>
# --- $infile=$ARGV[0]; $speed=$ARGV[1]; $recvdSize = 0; $startTime = 1000; $stopTime = 0; # --- open (DATA,"<$infile") || die "Can't open $infile $!";
while (<DATA>) { @x = split(' '); $pkt_size = $x[7]; # Store start time
if (($x[3] eq "AGT") && ($x[0] eq "s") && ($pkt_size >= 512)) { if ($x[1] < $startTime) {
$startTime = $x[1]; }
}
# Update total received packets' size and store packets arrival time if (($x[3] eq "AGT") && ($x[0] eq "r") && ($pkt_size >= 512)) {
if ($x[1] > $stopTime) { $stopTime = $x[1]; }
# Rip off the header
$hdr_size = $pkt_size % 512; $pkt_size -= $hdr_size; # Store received packet's size $recvdSize += $pkt_size; }
}
#print("Average Throughput[kbps] = ",($recvdSize/($stopTime-$startTime)) * (8/1000)," ",$startTime," ","$stopTime\n");
print STDOUT "$speed", " ", ($recvdSize/($stopTime-$startTime))*(8/1000),"\n"; close DATA;