Kịch bản mô phỏng được thiết kế trên một không gian phẳng diện tích 1000m × 1000m
với 4 nút có dây nối với 4 nút không dây làm Base Station. Các nút này được đặt ở những vị trí xác định trong mạng. Ngoài ra, có 50 nút được tạo ra với vị trí đặt tại các toạ độ khác nhau và chuyển động khác nhau với mục đích mô phỏng các mesh router và mesh client trong mạng không dây mesh.
Các kết nối được thiết lập giữa các nút nhằm mô phỏng sự truyền dữ liệu giữa các nút trong mạng không dây mesh. Trong đó:
- 4 kết nối từ 4 Base Station đến các nút tương ứng từ 0 đến 3: BS0 → N(0); BS1 → N(1); BS2 → N(2); BS3 → N(3). Các thực thể UDP được gắn vào các Base Station và các thực thể NULL được gắn vào các nút từ 0 đến 3.
- 21 kết nối giữa các nút với nhau từ nút 4 đến nút 45 trong đó các nút chẵn gửi dữ liệu đến các nút lẻ có số ngay sau nó theo từng cặp tương ứng: N(4) → N(5); N(6) → N(7); N(8) → N(9); … ; N(44) → N(45). Các thực thể UDP được gắn vào các nút chẵn và các thực thể NULL được gắn vào các nút lẻ.
- 4 nút N(46), N(47), N(48), N(49) không kết nối với nút nào trong mạng. Các nút này chỉ thực hiện chức năng chuyển tiếp dữ liệu khi mô phỏng mạng với các giao thức AODV và idsAODV hoặc được cài đặt giao thức blackholeAODV trong các tấn công lỗ đen.
Nguồn CBR (Constant Bit Rate) được gắn vào các thực thể UDP để sinh ra các gói lưu lượng không đổi. Thời lượng kết nối là 500s và nguồn CBR bắt đầu từ giây thứ hai đến giây thứ 450. Thông số của nguồn CBR bao gồm:
- Kích thước gói tin: 512 bytes. - Tốc độ truyền 10kb.
- Không sử dụng gói tin ngẫu nhiên trong mô phỏng.
Tất cả các kết nối UDP luôn giống nhau giữa các nút. Trong từng kịch bản, từng nút được đặt tại các toạ độ khác nhau và thực hiện các chuyển động khác nhau. Điều này giúp cho việc đưa ra các kết quả khác nhau với vị trí nút và chuyển động được sinh ra ngẫu nhiên bởi lệnh “./setdest” trong NS2. Có 5 file movement pattern được sinh ra bởi lệnh
“./setdest” với 50 nút được đặt ngẫu nhiên trong không gian phẳng 1000m × 1000m, tốc
độ di chuyển tối đa 10m/s trong khoảng thời gian 500s. Mỗi kịch bản mô phỏng sẽ sử dụng 5 file này làm thông số cho vị trí và sự chuyển động của 50 nút di động. Các lệnh sinh ra file movement pattern được thực hiện như sau:
./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_1 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_2 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_3 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_4 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_5
Các nút có dây được tạo ra bởi các lệnh sau:
set W(0) [$ns_ node [lindex 0.0.0]] set W(1) [$ns_ node [lindex 0.0.1]]
set W(2) [$ns_ node [lindex 0.0.2]] set W(3) [$ns_ node [lindex 0.0.3]]
Các nút Base Station và các nút di động trong mạng được cấu hình tương tự nhau. Tuy nhiên, do các nút Base Station kết nối với các nút có dây nên cấu hình wiredRouting là ON. Trường hợp cấu hình các nút di động, wiredRouting được chuyển sang OFF.
set opt(chan) Channel/WirelessChannel ;# channel type
set opt(prop) Propagation/TwoRayGround ;# radio-propagation model set opt(netif) Phy/WirelessPhy ;# network interface type set opt(mac) Mac/802_11 ;# MAC type
set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type set opt(ll) LL ;# link layer type set opt(ant) Antenna/OmniAntenna ;# antenna model set opt(ifqlen) 50 ;# max packet in ifq set opt(adhocRouting)AODV hoặc idsAODV ;# routing protocol
Cấu hình nút mạng cho Base Station và nút di động
$ns_ node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channelType $opt(chan) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace OFF \ -routerTrace OFF \ -macTrace ON
# hierachical address to be used for wireless domain
set temp {1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53} # Create Base-Station
set BS(0) [$ns_ node [lindex $temp 0]]
$BS(0) random-motion 0 ;# disable random motion set BS(1) [$ns_ node [lindex $temp 1]]
$BS(1) random-motion 0 ;# disable random motion set BS(2) [$ns_ node [lindex $temp 2]]
$BS(2) random-motion 0 ;# disable random motion set BS(3) [$ns_ node [lindex $temp 3]]
$BS(3) random-motion 0 ;# disable random motion
Tạo các nút Base Station
Các nút di động trong mô phỏng được tạo ra bởi lệnh vòng lặp “for”. Trước khi thực hiện các lệnh này, câu lệnh “$ns_ node-config -wiredRouting OFF” được thực hiện để huỷ bỏ định tuyến có dây.
Trong các kịch bản không có tấn công lỗ đen, tất cả 50 nút được tạo ra với giao thức được định trước là AODV hoặc idsAODV. Đoạn mã tạo ra các nút như sau:
#configure for mobilenodes
$ns_ node-config -wiredRouting OFF
set node_($j) [ $ns_ node [lindex $temp [expr $j + 4]] ] $node_($j) random-motion 0
}
Tạo các nút di động
Trong các kịch bản có tấn công lỗ đen, vòng lặp đầu tiên sinh ra 46 nút sử dụng đoạn code như hình dưới. Lệnh “$ns_ node-config -adhocRouting blackholeAODV” thay đổi giao thức định tuyến cấu hình nút thành nút blackholeAODV. Sau lệnh này, vòng lặp thứ hai tạo ra 4 nút cuối.
f$ns_ node-config -wiredRouting OFF for {set j 0} {$j < 46} {incr j} {
set node_($j) [ $ns_ node [lindex $temp [expr $j + 4]] ] $node_($j) random-motion 0
}
#====Set blackhole nodes======================================= $ns_ node-config -adhocRouting blackholeAODV
for {set i 46} {$i < $val(nn)} {incr i} {
set node_($i) [$ns_ node [lindex $temp [expr $i + 4]] ] $node_($i) random-motion 0 ;#disable random motion $ns_ at 0.01 "$node_($i) label \"blackhole node\"" }
Tạo các nút di động và nút blackhole