Trong tất cả các dạng mạng thì bảo mật là một trong những nhân tố chính cho sự an toàn 
và tin cậy của việc truyền dữ liệu. Do tính chất của truyền dẫn không dây và sự phụ thuộc 
vào các nút trung gian trong định tuyến lưu lượng người dùng làm cho mạng không dây 
mesh rất dễ bị tấn công dưới nhiều dạng khác nhau. Các tấn công có thể thực hiện từ bên 
ngoài cũng như từ bên trong mạng.
                
              
                                            
                                
            
 
            
                 90 trang
90 trang | 
Chia sẻ: lylyngoc | Lượt xem: 3266 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu một số phương pháp bảo mật trong mạng không dây MESH, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hực hiện các thay đổi trên, ta dùng các lệnh make clean, make để biên dịch 
lại NS2. 
3.2.2. Thử nghiệm blackholeAODV 
Để thử nghiệm việc thực hiện giao thức blackholeAODV trong NS-2. Hai kịch bản được 
sử dụng để mô phỏng. Kịch bản thứ nhất không sử dụng nút Black Hole (nút thực hiện 
tấn công lỗ đen). Kịch bản thứ hai thêm vào nút Black Hole. Chương trình mô phỏng 
NAM (Network Animator) được sử dụng để so sánh kết quả giữa hai kịch bản mô phỏng. 
3.2.2.1. Thông số và các số đo mô phỏng: 
Mô phỏng sử dụng giao thức UDP. Nút nguồn duy trì gửi các gói tin UDP, thậm chí cả 
khi nút độc hại loại bỏ chúng (trong khi đó nút sẽ gửi sẽ ngừng gửi gói tin nếu sử dụng 
giao thức TCP). Do đó, ta có thể quan sát được dòng kết nối giữa nút gửi và nút nhận 
trong quá trình mô phỏng. Thêm vào đó ta có thể tính riêng các gói tin gửi và nhận trong 
kết nối UDP không bị mất trong quá trình mô phỏng. Nếu sử dụng giao thức TCP trong 
kịch bản mô phỏng, ta không thể tính toán gói tin gửi và nhận khi nút bắt đầu kết nối TCP 
sẽ kết thúc kết nối sau một thời gian không nhận được gói tin TCP ACK. 
Kịch bản tạo ra một mạng nhỏ gồm 7 nút di động (đánh số từ 2 đến 8), 1 nút có dây (Nút 
0) và 1 nút Base Station (Nút 1), trong đó nút có dây kết nối với nút Base Station qua một 
kết nối có dây. Mô phỏng tạo ra kết nối UDP giữa nút Base Station và Nút 3, gắn vào 
nguồn CBR (Constant Bit Rate) để sinh ra các gói tin không đổi cho kết nối UDP. Kích 
thước gói tin CBR là 512, tốc độ dữ liệu là 512kb. Trong khoảng thời gian 20 giây, nguồn 
CBR bắt đầu truyền vào khoảng thời gian 1 giây và tiếp tục truyền đến hết thời gian mô 
phỏng. Trong một không gian phẳng 500x500m. Vị trí của các nút được đặt thích hợp để 
- 57 - 
hiển thị dòng dữ liệu và mô phỏng thể hiện sự di chuyển của Nút 6 để chỉ ra sự thay đổi 
dòng dữ liệu trong mạng. 
3.2.2.2. Đánh giá mô phỏng 
Kịch bản đầu tiên không có nút Black Hole, kết nối giữa Base Station và Nút 3 sử dụng 
giao thức AODV. 
Hình 3.5: Dữ liệu truyền từ Base Station đến nút 3 bằng giao thức AODV khi nút 6 di chuyển 
Trong kịch bản mô phỏng thứ hai, ta thêm nút Black Hole là Nút 2 trong file Tcl bằng 3 
dòng lệnh sau: 
$ns_ node-config -adhocRouting blackholeAODV 
set node_(2) [ $ns_ node [lindex $temp 1] ] 
 $node_(2) set X_ 50.0 
 $node_(2) set Y_ 420.0 
 $node_(2) set Z_ 0.0 
$ns_ node-config -adhocRouting $opt(adhocRouting) 
 for {set j 3} {$j < [expr $val(nn)+ 2]} {incr j} { 
 set node_($j) [ $ns_ node [lindex $temp [expr $j- 1]] ] 
 } 
- Dòng lệnh “$ns node-config -adhocRouting blackholeAODV” nhằm thêm giao 
thức blackholeAODV để tạo nút. 
- Dòng lệnh thứ hai: định nghĩa Nút 2 là nút Black Hole 
- Dòng lệnh thứ ba: chuyển sang tạo các nút bằng giao thức AODV. 
Nút 2 là nút Black Hole hấp thụ tất cả các gói tin từ đường truyền từ nút Base Station đến 
nút 3. Hình dưới đây chỉ ra cách nút blackholeAODV hấp thụ lưu lượng truyền. 
- 58 - 
Hình 3.6: Nút 2 (nút Black Hole) hấp thụ kết nối từ Base Station đến nút 3 
3.3. Giải pháp chống lại tấn công lỗ đen và hiệu quả của nó 
3.3.1. Ý tưởng thực hiện 
Ở phần trước đã trình bày tấn công lỗ đen, thực hiện tấn công mô phỏng trên NS-2 và 
trình bày kết quả đạt được của tấn công. Khi kiểm tra tệp vết (trace file) của mô phỏng 
trong đó có 1 nút Black Hole ta nhận thấy một thời gian sau khi thông báo RREP thứ nhất 
(thông báo của nút Back Hole) đến nút nguồn thì thông báo RREP thứ hai đến nút nguồn 
là thông báo của nút đích thực sự. 
Qua phân tích tệp vết của kịch bản mô phỏng ở Hình 3.6, với Nút Base Station là nút gửi, 
Nút 3 là nút nhận và Nút 2 là nút Black Hole. Trong bảng dưới đây, ta dễ dàng nhận thấy 
có hai thông báo RREP. Thông báo thứ nhất gửi từ nút Blackhole (Nút 2) đến nút nguồn 
tại thời điểm 1.004809200s. Thông báo thứ hai gửi từ nút đích (Nút 3) đến nút nguồn tại 
thời điểm 1.080309923s. 
s -t 1.004809200 -Hs 2 -Hd 4194304 -Ni 2 -Nx 50.00 -Ny 420.00 -Nz 0.00 
-Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md 0 -Ms 1 -Mt 800 -Is 
4194305.255 -Id 4194304.255 -It AODV -Il 102 -If 0 -Ii 0 -Iv 30 -P 
aodv -Pt 0x4 -Ph 1 -Pd 4194306 -Pds -1 -Pl 10.000000 -Pc REPLY 
... 
s -t 1.080309923 -Hs 3 -Hd 4194311 -Ni 3 -Nx 480.00 -Ny 50.00 -Nz 0.00 
-Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md 7 -Ms 2 -Mt 800 -Is 
4194306.255 -Id 4194304.255 -It AODV -Il 102 -If 0 -Ii 0 -Iv 30 -P 
aodv -Pt 0x4 -Ph 1 -Pd 4194306 -Pds 4 -Pl 10.000000 -Pc REPLY 
Khi nút Black Hole gửi thông báo RREP không cần kiểm tra bảng định tuyến, ta giả định 
rằng nhiều khả năng thông báo RREP đầu tiên sẽ đến từ nút Black Hole. Trong một số 
- 59 - 
trường hợp, ý tưởng này không thực hiện được. Ví dụ, thông báo RREP thứ hai có thể 
được tiếp nhận ở nút nguồn từ một nút trung gian nào đó mà thông tin không đủ mới 
(fresh) về nút đích hoặc thông báo RREP thứ hai có thể là thông báo đến từ nút Black 
Hole nếu nút đích thực sự của nó gần nút nguồn hơn nút Black Hole. Các ví dụ này có thể 
mở rộng với điều kiện cấu trúc nút mạng như trên. Do vậy, phương pháp này cố gắng tìm 
cách giảm thiểu hiệu ứng lỗ đen trong các mạng AODV nếu nó làm giảm hiệu suất mạng. 
3.3.2. Cài đặt giao thức giải pháp trên NS-2 
Hiệu quả của chống lại tấn công lỗ đen được đánh giá dựa trên bộ mô phỏng NS-2. Giao 
thức AODV được sao chép và đổi tên thành “idsaodv” giống như thực hiện giao thức 
“blackholeaodv” trước đó. Để thực hiện giao thức blackholeAODV, ta thay đổi hàm 
nhận RREQ (recvRequest) của file blackholeaodv.cc; nhưng để thực hiện giải pháp cho 
giao thức idsAODV ta thay đổi hàm nhận RREP (recvReply) và tạo ra cơ chế đệm cho 
RREP để đếm thông báo RREP thứ hai. 
Đoạn mã dưới đây thể hiện cơ chế đệm RREP. Hàm “rrep_insert” dùng để thêm thông 
báo RREP, hàm “rrep_lookup” dùng để tìm kiếm bất kỳ thông báo RREP nào nếu nó tồn 
tại, hàm “rrep_remove” dùng để gỡ bỏ bất kỳ thông báo RREP nào đến từ một nút xác 
định và hàm “rrep_purge” dùng để xoá định kỳ danh sách đã hết hạn (nếu có). Trong 
trường hợp này chọn thời gian “BCAST_ID_SAVE” là 6 (có nghĩa là 3 giây). 
void 
idsAODV::rrep_insert(nsaddr_t id) { 
 idsBroadcastRREP *r = new idsBroadcastRREP(id); 
 assert(r); 
 r->expire = CURRENT_TIME + BCAST_ID_SAVE; 
 r->count ++; 
 LIST_INSERT_HEAD(&rrephead, r, link); 
} 
idsBroadcastRREP * 
idsAODV::rrep_lookup(nsaddr_t id) { 
 idsBroadcastRREP *r = rrephead.lh_first; 
 for( ; r; r = r->link.le_next) { 
if (r->dst == id) 
return r; 
} 
 return NULL; 
} 
void 
idsAODV::rrep_remove(nsaddr_t id) { 
 idsBroadcastRREP *r = rrephead.lh_first; 
 for( ; r; r = r->link.le_next) { 
 if (r->dst == id) 
LIST_REMOVE(r,link); 
delete r; 
break; 
} 
} 
void 
idsAODV::rrep_purge() { 
 idsBroadcastRREP *r = rrephead.lh_first; 
- 60 - 
 idsBroadcastRREP *rn; 
 double now = CURRENT_TIME; 
 for(; r; r = rn) { 
rn = r->link.le_next; 
if(r->expire <= now) { 
LIST_REMOVE(r,link); 
delete r; 
} 
} 
} 
Trong hàm “recvReply”, đầu tiên ta kiểm soát nếu thông báo RREP đến chính nó. Nếu 
đúng, hàm sẽ tìm kiếm thông báo RREP nếu nó tồn tại; nếu không, nó chèn thông báo 
thông báo RREP cho địa chỉ đích của nó và trả về hàm. Nếu thông báo RREP được lưu 
trữ trước đó có cùng địa chỉ đích, hàm RREP thông thường được thực hiện. Sau đó, nếu 
thông báo RREP không dành cho chính nó, nút sẽ chuyển tiếp thông báo đến nút lân cận 
thích hợp. Đoạn mã sau đây thể hiện cách hàm nhận thông báo RREP của giao thức 
idsAODV thực hiện: 
idsAODV::recvReply(Packet *p) { 
idsBroadcastRREP * r = rrep_lookup(rp->rp_dst); 
 if(ih->daddr() == index) { 
 if (r == NULL) { 
 count = 0; 
 rrep_insert(rp->rp_dst); 
 } else { 
 r->count ++; 
 count = r->count; 
 } 
 CẬP NHẬT BẢNG ĐỊNH TUYẾN 
 } else { 
 Forward(p); 
 } 
} 
3.3.3. Thử nghiệm giao thức idsAODV 
Giao thức idsAODV được thực hiện trên bộ mô phỏng NS-2 với kịch bản 7 nút cố định 
và vị trí nút tương tự như kịch bản của hình 3.6. Trong mô phỏng này, giao thức 
idsAODV được sử dụng thay cho giao thức AODV áp dụng cho tất cả các nút không dây 
kể cả nút Base Station trừ nút Black Hole (Nút 2). Để chuyển giao thức AODV thành 
idsAODV ta chỉ cần thay đổi dòng lệnh “$ns node-config -adhocRouting idsAODV”. Khi 
mô phỏng được thực hiện, ta sẽ nhận thấy nút gửi gửi thông báo đến nút nhận đúng cách. 
Hình 3.7 dưới đây cho biết các gói tin CBR đã đến đích như mong đợi. 
- 61 - 
Hình 3.7: Kết quả thực hiện giao thức idsAODV khi có tấn công blackhole 
3.4. Mô phỏng và phân tích kết quả. 
Qua phần thử nghiệm hai giao thức blackholeAODV và giao thức idsAODV ở phần trên 
cho thấy hai giao thức cài đặt thêm vào hoạt động đúng như mong đợi. Tuy nhiên, với 
việc thực hiện trên một mạng nhỏ với 7 nút và 1 Base Station cũng như các nút đặt ở 
những vị trí xác định trước sẽ không thể hiện rõ được ảnh hưởng của tấn công lỗ đen lên 
mạng không dây mesh cũng như hiệu quả của giao thức phòng ngừa tấn công lỗ đen trên 
các mạng này. 
Các kịch bản dưới đây được xây dựng mô phỏng một mạng không dây mesh với nhiều 
nút di động và nhiều trạm cơ sở hơn. Kịch bản cố gắng xây dựng một mạng “thật” nhất 
qua đó đánh giá hiệu quả của các giao thức được cài đặt qua tỉ lệ gửi và nhận gói tin đồng 
thời tính toán số lượng gói tin bị loại bỏ do tấn công lỗ đen. Từ đó đưa ra kết luận về ảnh 
hưởng của tấn công lỗ đen trên giao thức AODV sử dụng cho mạng không dây mesh và 
hiệu quả của giao thức ngăn chặn tấn công lỗ đen khi thay cho giao thức AODV trên các 
mạng này. 
3.4.1. Các tham số mô phỏng 
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. 
- 62 - 
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]] 
- 63 - 
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 
for {set j 0} {$j < $val(nn)} {incr j} { 
- 64 - 
 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 
Hình 3.8: Một kịch bản mô phỏng mạng 
- 65 - 
3.4.2. Phân tích kết quả mô phỏng 
3.4.2.1. Phân tích tệp vết 
Tệp vết của chương trình mô phỏng có phần mở rộng là tr. Tệp vết bao gồm tất cả các sự 
kiện trong chương trình mô phỏng như khi gửi gói tin, nút nào sinh ra chúng, nút nào 
nhận được, dạng gói tin gửi đi, tại sao nó bị loại bỏ (nếu bị loại bỏ). Kịch bản mô phỏng 
này sử dụng dạng file “new-trace” được đặc biệt sử dụng trong các mạng không dây và 
bao gồm thông tin chi tiết về các sự kiện. 
Để nhận được kết của quả tệp vết, ta cần loại sự kiện tại Field 0; node id (-Ni) và cấp độ 
vết (-Nl) ở Field 4; địa chỉ nguồn, địa chỉ đích và loại gói tin ở Field 5. Với tất cả các đầu 
ra, ta chỉ cần: 
- Giá trị “s” ở Field 0, đếm bao nhiêu gói tin CBR được gửi bởi nút gửi. 
- Giá trị “r” ở Field 0, đếm bao nhiêu gói tin CBR được nhận bởi nút nhận. 
- Giá trị “node id” của thông tin về id của nút ở Field 4, là id của nút gửi hoặc nút nhận. 
- Giá trị “MAC” của thông tin cấp độ vết ở Field 4, dùng để lọc địa chỉ MAC. 
- Giá trị “source address” và “destination address” của thông tin địa chỉ nút nguồn và 
nút đích ở Field 5, để đếm số gói tin đến từ nút gửi đến nút nhận. 
- Giá trị “cbr” của thông tin về loại gói tin ở Field 5, dùng để lọc gói tin CBR. 
s -t 50.171961661 -Hs 16 -Hd 4194355 -Ni 16 -Nx 731.22 -Ny 677.03 -Nz 
0.00 -Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md 33 -Ms c -Mt 800 -Is 
4194316.0 -Id 4194317.0 -It cbr -Il 590 -If 0 -Ii 3006 -Iv 30 -Pn cbr 
-Pi 120 -Pf 0 -Po 0 
r -t 50.176670144 -Hs 19 -Hd 4194319 -Ni 19 -Nx 349.85 -Ny 176.81 -Nz 
0.00 -Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md f -Ms 10 -Mt 800 -Is 
4194320.0 -Id 4194321.0 -It cbr -Il 532 -If 0 -Ii 3008 -Iv 30 -Pn cbr 
-Pi 120 -Pf 1 -Po 0 
Để lọc các thông tin này, ta sử dụng lệnh “grep” trong UNIX để đọc file được sinh ra bởi 
lệnh “cat” và cho đầu ra của nó làm đầu vào của lệnh “wc” (word count) để đếm thông 
tin được lọc và ghi vào file mới. 
Ví dụ: 
- Đếm số gói tin CBR được gửi bởi Nút i và nút nhận là Nút j ta sử dụng lệnh: 
s=`grep "s $l MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
- Đếm số gói tin CBR được nhận bởi Nút j và nút gửi là Nút i ta sử dụng lệnh: 
r=`grep "r $m MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
Từ số lượng gói tin gửi và số lượng gói tin nhận, ta tính được số gói tin bị mất dựa trên 
phép trừ số lượng gói tin. Tất cả các lệnh tính số gói tin này trên tất cả các nút được tính 
toán và tích hợp trên một file batch (.sh) được trình bày trong phần phụ lục. 
- 66 - 
3.4.2.2. Phân tích kết quả: 
Qua 5 kịch bản mô phỏng với việc tính toán tỷ lệ gói tin bị mất khi sử dụng hai giao thức 
AODV và idsAODV có tấn công/không có tấn công lỗ đen, kết quả mô phỏng thể hiện 
như sau: 
- Khi thực hiện tấn công lỗ đen trên mạng sử dụng giao thức AODV ta nhận thấy tỉ lệ gói 
tin bị mất tăng lên rất nhiều so với khi không bị tấn công lỗ đen. Điều này cũng cho thấy 
ảnh hưởng của tấn công lỗ đen đến kết nối của toàn mạng và số lượng tấn công lỗ đen 
tăng thì tỉ lệ mất gói tin cũng tăng lên. 
- Khi sử dụng giao thức idsAODV thay cho giao thức AODV, trên các kịch bản tương tự, 
tỉ lệ mất gói tin khi có tấn công lỗ đen cũng giảm xuống. Tuy nhiên, trong trường hợp 
không có tấn công lỗ đen, tỉ lệ mất gói tin của idsAODV lại cao hơn của AODV. 
Bảng tổng kết dưới đây cho biết kết quả của việc áp dụng tấn công lỗ đen vào giao thức 
AODV và khi áp dụng giao thức idsAODV chống lại tấn công lỗ đen: 
BẢNG SO SÁNH TỈ LỆ MẤT GÓI TIN SỬ DỤNG GIAO THỨC AODV 
KHI KHÔNG CÓ VÀ CÓ TẤN CÔNG BLACK HOLE 
Kịch bản 
Giao thức AODV 
không có tấn công Blackhole 
Giao thức AODV 
có tấn công Blackhole 
Tăng lên 
Kịch bản 1 18.85% 94.97% 76.12% 
Kịch bản 2 26.01% 97.31% 71.30% 
Kịch bản 3 16.74% 98.50% 81.76% 
Kịch bản 4 22.90% 98.49% 75.59% 
Kịch bản 5 24.22% 98.59% 74.37% 
Trung bình 21.75% 97.57% 75.82% 
BẢNG SO SÁNH TỈ LỆ MẤT GÓI TIN SỬ DỤNG GIAO THỨC IDSAODV 
KHI KHÔNG CÓ VÀ CÓ TẤN CÔNG BLACK HOLE 
Kịch bản Giao thức idsAODV 
không có tấn công Blackhole 
Giao thức idsAODV 
có tấn công Blackhole 
Tăng lên 
Kịch bản 1 25.21% 92.96% 67.75% 
Kịch bản 2 35.15% 93.23% 58.08% 
Kịch bản 3 25.67% 91.40% 65.73% 
Kịch bản 4 29.08% 91.89% 62.81% 
Kịch bản 5 24.22% 93.09% 68.87% 
Trung bình 27.87% 92.51% 64.65% 
BẢNG SO SÁNH TỈ LỆ GÓI TIN BỊ LOẠI BỎ BỞI CÁC NÚT BLACKHOLE KHI SỬ 
DỤNG GIAO THỨC AODV VÀ IDSAODV 
- 67 - 
Kịch bản Sử dụng giao thức AODV Sử dụng giao thức idsAODV Giảm xuống 
Kịch bản 1 48.84% 23.27% 25.57% 
Kịch bản 2 58.03% 24.87% 33.16% 
Kịch bản 3 53.40% 25.48% 27.92% 
Kịch bản 4 50.75% 27.32% 23.43% 
Kịch bản 5 54.21% 22.49% 31.73% 
Trung bình 53.05% 24.69% 28.36% 
Từ bảng kết quả tính toán ở trên, ta dễ dàng nhận thấy khi không có tấn công lỗ đen, việc 
áp dụng giao thức AODV hiệu quả hơn so với việc áp dụng giao thức idsAODV. Điều 
này có được là do giao thức AODV áp dụng triệt để đường định tuyến ngắn nhất dựa trên 
việc sử dụng thông báo RREP đầu tiên trong khi giao thức idsAODV sử dụng thông báo 
RREP thứ hai nếu nó đến nằm trong khoảng thời gian định trước. Tuy nhiên, khi có tấn 
công lỗ đen thì việc sử dụng giao thức idsAODV thay cho giao thức AODV sẽ đem lại 
hiệu quả hơn nhiều do cơ chế sử dụng thông báo RREP thứ hai. Do vậy, việc cân nhắc sử 
dụng giao thức nào trong từng trường hợp cụ thể để đạt được hiệu quả cao nhất cho hiệu 
suất của mạng là vấn đề người dùng cần cân nhắc và quyết định. 
- 68 - 
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 
Mạng không dây mesh đang nổi lên như là một công nghệ đầy hứa hẹn cho các công 
nghệ mạng thế hệ tiếp theo với tính linh động, khả năng thích nghi cao và kiến trúc tự cấu 
hình lại trong khi đưa các giải pháp hiệu quả về chi phí cho người cung cấp dịch vụ. 
Mạng không dây mesh có nhiều thuận lợi so với các mạng không dây khác trong việc cài 
đặt đơn giản, năng lực của băng thông và khả năng kháng lỗi vốn có trong trường hợp 
mạng bị lỗi. Triển khai mạng không dây mesh cũng khá đơn giản. Chúng tự cấu hình và 
tự tổ chức một cách tự động với các nút có sẵn trong mạng bởi việc tự động thiết lập và 
duy trì kết nối mạng dựa trên các nút vì vậy mạng không dây mesh mang lại vùng dịch vụ 
tin cậy trong mạng. 
Trong tất cả các dạng mạng thì bảo mật là một trong những nhân tố chính cho sự an toàn 
và tin cậy của việc truyền dữ liệu. Do tính chất của truyền dẫn không dây và sự phụ thuộc 
vào các nút trung gian trong định tuyến lưu lượng người dùng làm cho mạng không dây 
mesh rất dễ bị tấn công dưới nhiều dạng khác nhau. Các tấn công có thể thực hiện từ bên 
ngoài cũng như từ bên trong mạng. Một số lỗ hổng tồn tại trong các giao thức dùng cho 
mạng không dây mesh có thể bị lợi dụng bởi những kẻ tấn công nhằm làm giảm hiệu suất 
của mạng trong đó tấn công lỗ đen (black hole) là một ví dụ điển hình. 
Đề tài "Nghiên cứu một số phương pháp bảo mật trong mạng không dây mesh" là một đề 
tài khá mới mẻ ở Việt Nam và chưa có nhiều khai thác, ứng dụng. Đề tài đã lần lượt tìm 
hiểu những kiến thức về mạng không dây mesh như: khái niệm, kiến trúc, đặc điểm và 
các ứng dụng,... nhằm làm rõ các đặc trưng của mạng không dây mesh so với các công 
nghệ mạng không dây hiện có. 
Phần hai của đề tài tập trung nghiên cứu các vấn đề liên quan đến bảo mật trong mạng 
không dây mesh bao gồm: Các dạng tấn công có thể thực hiện trên mạng không dây mesh 
và các phương pháp chống lại các dạng tấn công này. Phần này của luận văn cũng đánh 
giá một số giao thức bảo mật đã được đề xuất áp dụng cho mạng không dây mesh. 
Phần ba của đề tài trình bày chi tiết một dạng tấn công trong mạng không dây mesh là tấn 
công lỗ đen (black hole) trên giao thức định tuyến AODV. Trong phần này ngoài việc giải 
thích cơ chế hoạt động của giao thức AODV và phương thức tấn công lỗ đen trên giao 
thức AODV, phần thực nghiệm đã mô phỏng các tấn công này trên bộ mô phỏng NS-
2.34. Từ những đánh giá sự ảnh hưởng của tấn công lỗ đen trên giao thức, đề tài đã đề 
xuất một phương pháp chống lại tấn công lỗ đen trên giao thức AODV bằng cách tạo ra 
một giao thức mới dựa trên giao thức AODV gọi là giao thức idsAODV. Bằng việc áp 
dụng giao thức này thay cho giao thức AODV và thực hiện mô phỏng tấn công lỗ đen 
trên giao thức đã đề xuất, đề tài đã đánh giá được hiệu quả của giao thức idsAODV trong 
việc chống lại các tấn công lỗ đen. 
Tuy nhiên, giao thức đề xuất cũng không tránh khỏi một số hạn chế như việc áp dụng 
- 69 - 
giao thức idsAODV sẽ không hiệu quả hơn giao thức AODV trong trường hợp không có 
tấn công lỗ đen hoặc tấn công lỗ đen không ảnh hưởng đến các nút đang truyền dữ liệu. 
Do đó, việc áp dụng giao thức nào để đạt được hiệu quả tối ưu nhất cho hiệu năng hoạt 
động của mạng vẫn còn phụ thuộc vào người dùng. 
Từ những ưu điểm và hạn chế của giao thức đề xuất ở trên, hướng nghiên cứu tiếp theo 
của đề tài sẽ tập trung vào một số vấn đề sau đây: 
- Nghiên cứu hoàn thiện giao thức đã đề xuất nhằm nâng cao hiệu quả định tuyến 
chống lại tấn công black hole trên giao thức AODV và các giao thức khác . 
- Nghiên cứu đề xuất thêm giao thức chống lại tấn công greyhole trên giao thức AODV. 
- Nghiên cứu, xây dựng, triển khai và đánh giá hiệu quả của giao thức idsAODV trên 
các mạng thực. 
- 70 - 
TÀI LIỆU THAM KHẢO 
Tiếng Việt 
[1] Nguyễn Đại Thọ (2009), Bài giảng An toàn mạng, Trường Đại học Công nghệ - Đại 
học Quốc gia Hà Nội. 
[2] Nguyễn Đình Việt (2009), 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 
[3] F. Akyildiz, X. Wang, and W. Wang (2005). “Wireless mesh networks: a survey”, 
Journal of Computer Networks, Vol 47, No 4, pp. 445 – 487. 
[4] M. Al-Shurman, S. Yoo, and S. Park (2004), “Black hole attack in mobile ad hoc 
networks”, Proceedings of the 42nd Annual Southeast Regional Conference, 
Huntsville, Alabama, April 2004. 
[5] Semih Dokurer, Y. M. Erten, Can Erkin Acar (2007), “Performance analysis of ad hoc 
networks under black hole attacks”, SoutheastCon, 2007. Proceedings. IEEE. 
[6] A.Gerkis (2006), “A Survey of Wireless Mesh Networking Security Technology and 
Threats”, SANS Institute InfoSec Reading Room. 
[7] Changhua He and John C. Mitchell (2004), “Analysis of the 802.11i 4-way hand-
shake”, WiSEı04, Philadelphia. 
[8] Jaydip Sen (2011), “Secure Routing in Wireless Mesh Networks”, Cryptography 
andSecurity (cs.CR); Networking and Internet Architecture (cs.NI), Innovation Lab, 
Tata Consultancy Services Ltd, India. 
[9] Arunesh Mishra and A. William Arbaugh (2002), “An Initial Security Analysis of the 
IEEE 802.1X Standard”, Technical report CS-TR-4328, Department of Computer 
Science, University of Maryland, February 2002. 
[10] Anjum Naveed and Salil S. Kanhere (2006), “Security vulnerabilities in channel 
assignment of multi-radio multi-channel wireless mesh networks”, Proceedings of 
IEEE GLOBECOM, November 2006. 
[11] P. Nicopolitidis, M. S. Obaidat, G. I. Papadimitriou and A. S. Pomportsis (2003), 
Wireless NetWorks, John Wiley & Sons Ltd. 
[12] C. E. Perkins and E. M. Royer (1999), “Ad Hoc On-Demand Distance Vector 
Routing”, Proceedings of IEEE Workshop on Mobile Computing Systems and 
Applications. 
[13] Sanjay Ramaswamy, Huirong Fu, Manohar Sreekantaradhya, John Dixon and 
Kendall E. Nygard (2003), “Prevention of cooperative black hole attacks in wireless 
ad hoc networks”, International Conference on Wireless Networks. 
[14] Naouel Ben Salem, Jean-Pierre Hubaux (2010), “Securing Wireless Mesh 
Networks”, Laboratory of Computer Communications and Applications (LCA) 
EPFL – Lausanne, Switzerland. 
[15] Mihail L. Sichitiu (2006), “Wireless Mesh Networks Challenges and 
- 71 - 
Opportunities”, Electrical and Computer Eng. Dept.NC State University, Raleigh, 
NC, USA. 
[16] Muhammad Shoaib Siddiqui, Choong Seon Hong (2007), “Security Issues in 
Wireless Mesh Networks”, 2007 International Conference on Multimedia and 
Ubiquitous Engineering (MUE’07). 
[17] D. Whiting, R. Housley, and N. Ferguson (2003), “Counter with CBC-MAC 
(CCM)”, RFC 3610. 
[18] Yan Zhang, Jun Zheng, Honglin Hu (2008), "Auerbach Security in Wireless Mesh 
Networks, CRC Press, Auerbach Publications, Taylor & Francis Group 6000 Broken 
Sound Parkway NW, Suite 300 Boca Raton. 
[19] IEEE Std. 802.11i-2004, Wireless Medium Access Control (MAC) and Physical 
Layer (PHY) Specifications: Medium Access Control (MAC) Security 
Enhancements, July 2004, 
2004.pdf. 
[20] Wireless Mesh Networks,  
[21]  
- 72 - 
PHỤ LỤC 
PHỤ LỤC 1: File Tcl mô phỏng cho mạng 7 nút (Hình 3.5, 3.6, 3.7) 
# Define options 
# ====================================================================== 
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(nn) 7 ;# number of mobilenodes 
set opt(adhocRouting) AODV (hoặc idsAODV) ;# routing protocol 
set val(nn) 7 ;# total number of mobilenodes 
set val(nnaodv) 7 ;# number of AODV mobilenodes 
set opt(cp) "" ;# connection pattern file 
set opt(sc) "" ;# ncen-3-testode movement file. 
set opt(x) 500 ;# x coordinate of topology 
set opt(y) 500 ;# y coordinate of topology 
set opt(seed) 0.0 ;# seed for random number gen. 
set opt(stop) 20 ;# time to stop simulation 
set val(cstop) 19 
#------------------------------------------------------------------------ 
# check for boundary parameters and random seed 
if { $opt(x) == 0 || $opt(y) == 0 } { 
 puts "No X-Y boundary values given for wireless topology\n" 
} 
if {$opt(seed) > 0} { 
 puts "Seeding Random number generator with $opt(seed)\n" 
 ns-random $opt(seed) 
} 
#----------------------------------------------------------------------- 
# create simulator instance 
set ns_ [new Simulator] 
# set up for hierarchical routing 
$ns_ node-config -addressType hierarchical 
AddrParams set domain_num_ 2 ;# number of domains 
lappend cluster_num 1 1 ;# number of clusters in each domain 
AddrParams set cluster_num_ $cluster_num 
lappend eilastlevel 1 8 ;# number of nodes in each cluster 
AddrParams set nodes_num_ $eilastlevel ;# of each domain 
#----------------------------------------------------------------------- 
$ns_ use-newtrace 
set tracefd [open mtest.tr w] 
#$ns_ trace-all $tracefd 
$ns_ trace-all $tracefd 
#line defines the number of nodes in each of these clusters which is "1 1 8" 
set namtrace [open mtest.nam w] 
$ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y) 
#----------------------------------------------------------------------- 
- 73 - 
# Create topography object 
set topo [new Topography] 
# define topology 
$topo load_flatgrid $opt(x) $opt(y) 
# create God 
create-god [expr $opt(nn) + 1] 
#----------------------------------------------------------------------- 
# Nut co day 
set W(0) [$ns_ node [lindex 0.0.0]] 
#----------------------------------------------------------------------- 
# configure for base-station node 
$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 
#create base-station node 
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} ;# hier address to be used for wireless 
domain 
# Basetation 
set BS(1) [$ns_ node [lindex $temp 0]] 
$BS(1) random-motion 0 ;# disable random motion 
$BS(1) set X_ 230.0 
$BS(1) set Y_ 420.0 
$BS(1) set Z_ 0.0 
# Tao ket noi giua nut co day va Base Station 
$ns_ duplex-link $W(0) $BS(1) 5Mb 2ms DropTail 
$ns_ duplex-link-op $W(0) $BS(1) orient down 
#----------------------------------------------------------------------- 
#configure for mobilenodes 
$ns_ node-config -wiredRouting OFF 
 for {set j 2} {$j < [expr $val(nn)+ 2]} {incr j} { 
 set node_($j) [ $ns_ node [lindex $temp [expr $j- 1]] ] 
 $node_($j) base-station [AddrParams addr2id [$BS(1) node-addr]] 
 } 
$ns_ node-config -wiredRouting OFF 
$ns_ node-config -adhocRouting blackholeAODV 
set node_(2) [ $ns_ node [lindex $temp 1] ] 
 $node_(2) set X_ 50.0 
 $node_(2) set Y_ 420.0 
 $node_(2) set Z_ 0.0 
$ns_ node-config -adhocRouting $opt(adhocRouting) 
 for {set j 3} {$j < [expr $val(nn)+ 2]} {incr j} { 
 set node_($j) [ $ns_ node [lindex $temp [expr $j- 1]] ] 
 $node_($j) base-station [AddrParams addr2id [$BS(1) node-addr]] 
 } 
- 74 - 
$ns_ at 0.0 "$W(0) label \"Wired Node\"" 
$ns_ at 0.0 "$BS(1) label \"Base Station\"" 
$ns_ at 0.0 "$node_(3) label \"Receiving Node\"" 
$ns_ at 0.0 "$node_(6) label \"Moving Node\"" 
 $node_(2) set X_ 50.0 
 $node_(2) set Y_ 420.0 
 $node_(2) set Z_ 0.0 
 $node_(3) set X_ 480.0 
 $node_(3) set Y_ 50.0 
 $node_(3) set Z_ 0.0 
 $node_(4) set X_ 50.0 
 $node_(4) set Y_ 100.0 
 $node_(4) set Z_ 0.0 
 $node_(5) set X_ 120.0 
 $node_(5) set Y_ 250.0 
 $node_(5) set Z_ 0.0 
 $node_(6) set X_ 280.0 
 $node_(6) set Y_ 320.0 
 $node_(6) set Z_ 0.0 
 $node_(7) set X_ 380.0 
 $node_(7) set Y_ 300.0 
 $node_(7) set Z_ 0.0 
 $node_(8) set X_ 430.0 
 $node_(8) set Y_ 180.0 
 $node_(8) set Z_ 0.0 
# Generation of movements 
$ns_ at 2.0 "$node_(6) setdest 150.0 10.0 20.0" 
#------------------------------------------------------------------------ 
 set udp_(1) [new Agent/UDP] 
 $ns_ attach-agent $BS(1) $udp_(1) 
 set null_(1) [new Agent/Null] 
 $ns_ attach-agent $node_(3) $null_(1) 
 #Attach CBR application; 
 set cbr_(1) [new Application/Traffic/CBR] 
 puts "cbr_(1) has been created over udp_(1)" 
 $cbr_(1) set packet_size_ 512 
 $cbr_(1) set interval_ 1 
 $cbr_(1) set rate_ 512kb 
 $cbr_(1) set random_ false 
 $cbr_(1) attach-agent $udp_(1) 
 $ns_ connect $udp_(1) $null_(1) 
 puts "udp_(1) and null_(1) agents has been connected each other" 
 $ns_ at 1.0 "$cbr_(1) start" 
#------------------------------------------------------------------------ 
$ns_ trace-all $tracefd 
# Define initial node position in nam 
for {set i 2} {$i < [expr $val(nn) + 2] } {incr i} { 
 $ns_ initial_node_pos $node_($i) 30 
 } 
# CBR connections stops 
 $ns_ at $val(cstop) "$cbr_(1) stop" 
- 75 - 
# Tell all nodes when the simulation ends 
for {set i 2} {$i < [expr $val(nn)+ 2] } {incr i} { 
 $ns_ at $opt(stop).000000001 "$node_($i) reset"; 
 } 
# Ending nam and simulation 
$ns_ at $opt(stop) "finish" 
$ns_ at $opt(stop).0 "$ns_ trace-annotate \"Simulation has ended\"" 
$ns_ at $opt(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt" 
proc finish {} { 
 global ns_ tracefd namtrace 
 $ns_ flush-trace 
 close $tracefd 
 close $namtrace 
 exec nam mtest.nam & 
 exit 0 
 } 
puts "Starting Simulation..." 
$ns_ run 
- 76 - 
PHỤ LỤC 2: File Tcl mô phỏng thực nghiệm mạng 50 nút không có tấn công 
Blackhole(4 nút có dây, 4 base station, 50 nút di động) 
# Define options 
# ====================================================================== 
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 
set val(nn) 50 ;# total number of mobilenodes 
set val(cp) "meshnode_1" ;#Connection Pattern 
set opt(x) 1000 ;# x coordinate of topology 
set opt(y) 1000 ;# y coordinate of topology 
set opt(seed) 0.0 ;# seed for random number gen. 
set opt(stop) 500 ;# time to stop simulation 
set val(cstop) 451 
#------------------------------------------------------------------------ 
# check for boundary parameters and random seed 
if { $opt(x) == 0 || $opt(y) == 0 } { 
 puts "No X-Y boundary values given for wireless topology\n" 
} 
if {$opt(seed) > 0} { 
 puts "Seeding Random number generator with $opt(seed)\n" 
 ns-random $opt(seed) 
} 
#----------------------------------------------------------------------- 
# create simulator instance 
set ns_ [new Simulator] 
# set up for hierarchical routing 
$ns_ node-config -addressType hierarchical 
AddrParams set domain_num_ 2 ;# number of domains 
lappend cluster_num 1 1 ;# number of clusters in each domain 
AddrParams set cluster_num_ $cluster_num 
lappend eilastlevel 4 54 ;# number of nodes in each cluster 
AddrParams set nodes_num_ $eilastlevel ;# of each domainsegmentation fault 
#----------------------------------------------------------------------- 
$ns_ use-newtrace 
set tracefd [open mesh50_aodv_1.tr w] 
$ns_ trace-all $tracefd 
#line defines the number of nodes in each of these clusters which is "1 1 8" 
set namtrace [open mesh50_aodv_1.nam w] 
$ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y) 
#----------------------------------------------------------------------- 
# Create topography object 
set topo [new Topography] 
# define topology 
$topo load_flatgrid $opt(x) $opt(y) 
# create God 
- 77 - 
create-god [expr $val(nn) + 4] 
#----------------------------------------------------------------------- 
# Nut co day 
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]] 
$W(0) set X_ 250.0 
$W(0) set Y_ 250.0 
$W(0) set Z_ 0.0 
$W(1) set X_ 750.0 
$W(1) set Y_ 250.0 
$W(1) set Z_ 0.0 
$W(2) set X_ 750.0 
$W(2) set Y_ 750.0 
$W(2) set Z_ 0.0 
$W(3) set X_ 250.0 
$W(3) set Y_ 750.0 
$W(3) set Z_ 0.0 
#----------------------------------------------------------------------- 
# configure for base-station node 
$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 
#create base-station node 
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} ;# hier address to be used for wireless domain 
# Basetation 
set BS(0) [$ns_ node [lindex $temp 0]] 
$BS(0) random-motion 0 ;# disable random motion 
$BS(0) set X_ 300.0 
$BS(0) set Y_ 300.0 
$BS(0) set Z_ 0.0 
set BS(1) [$ns_ node [lindex $temp 1]] 
$BS(1) random-motion 0 ;# disable random motion 
$BS(1) set X_ 700.0 
$BS(1) set Y_ 300.0 
$BS(1) set Z_ 0.0 
set BS(2) [$ns_ node [lindex $temp 2]] 
$BS(2) random-motion 0 ;# disable random motion 
$BS(2) set X_ 700.0 
$BS(2) set Y_ 700.0 
- 78 - 
$BS(2) set Z_ 0.0 
set BS(3) [$ns_ node [lindex $temp 3]] 
$BS(3) random-motion 0 ;# disable random motion 
$BS(3) set X_ 300.0 
$BS(3) set Y_ 700.0 
$BS(3) set Z_ 0.0 
#----------------------------------------------------------- 
# Tao ket noi giua nut co day va Base Station 
$ns_ duplex-link $W(0) $BS(0) 5Mb 2ms DropTail 
$ns_ duplex-link-op $W(0) $BS(0) orient down 
$ns_ duplex-link $W(1) $BS(1) 5Mb 2ms DropTail 
$ns_ duplex-link-op $W(1) $BS(1) orient down 
$ns_ duplex-link $W(2) $BS(2) 5Mb 2ms DropTail 
$ns_ duplex-link-op $W(2) $BS(2) orient down 
$ns_ duplex-link $W(3) $BS(3) 5Mb 2ms DropTail 
$ns_ duplex-link-op $W(3) $BS(3) orient right-down 
#----------------------------------------------------------------------- 
#configure for mobilenodes 
$ns_ node-config -wiredRouting OFF 
for {set j 0} {$j < $val(nn)} {incr j} { 
 set node_($j) [ $ns_ node [lindex $temp [expr $j + 4]] ] 
 $node_($j) random-motion 0 
 } 
#configure for mobilenodes 
$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 
# $node_($j) base-station [AddrParams addr2id [$BS(1) node-addr]] 
 } 
#====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\"" 
} 
puts "Loading random connection pattern..." 
set god_ [God instance] 
source $val(cp) 
#------------------------------------------------------------------------ 
$ns_ at 0.0 "$W(0) label \"Wired Node\"" 
$ns_ at 0.0 "$W(1) label \"Wired Node\"" 
$ns_ at 0.0 "$W(2) label \"Wired Node\"" 
$ns_ at 0.0 "$W(3) label \"Wired Node\"" 
$ns_ at 0.0 "$BS(0) label \"Base Station\"" 
$ns_ at 0.0 "$BS(1) label \"Base Station\"" 
$ns_ at 0.0 "$BS(2) label \"Base Station\"" 
$ns_ at 0.0 "$BS(3) label \"Base Station\"" 
#----------Tao ket noi giua cac Base station den cac nut tu 0 den 3-------------- 
 for {set i 0} {$i < 4} {incr i} { 
 set udp_($i) [new Agent/UDP] 
 $ns_ attach-agent $BS($i) $udp_($i) 
 set null_($i) [new Agent/Null] 
Không có tấn công 
Blackhole 
Có tấn công 
Blackhole 
- 79 - 
 $ns_ attach-agent $node_($i) $null_($i) 
 set cbr_($i) [new Application/Traffic/CBR] 
 puts "cbr_($i) has been created over udp_($i)" 
 $cbr_($i) set packet_size_ 512 
 $cbr_($i) set interval_ 1 
 $cbr_($i) set rate_ 10kb 
 $cbr_($i) set random_ false 
 $cbr_($i) attach-agent $udp_($i) 
 $ns_ connect $udp_($i) $null_($i) 
 puts "udp_($i) and null_($i) agents has been connected each other" 
 $ns_ at 1.0 "$cbr_($i) start" 
 } 
#-------------Tao ket noi giua nut le voi nut chan bat dau tu nut 4------------------- 
 set j 4 
 for {set i 4} {$i < 45} {incr i} { 
 #Create a UDP and NULL agents, then attach them to the appropriate nodes 
 set udp_($j) [new Agent/UDP] 
 $ns_ attach-agent $node_($i) $udp_($j) 
 set null_($j) [new Agent/Null] 
 $ns_ attach-agent $node_([expr $i + 1]) $null_($j) 
 #Attach CBR application; 
 set cbr_($j) [new Application/Traffic/CBR] 
 puts "cbr_($j) has been created over udp_($j)" 
 $cbr_($j) set packet_size_ 512 
 $cbr_($j) set interval_ 1 
 $cbr_($j) set rate_ 10kb 
 $cbr_($j) set random_ false 
 $cbr_($j) attach-agent $udp_($j) 
 $ns_ connect $udp_($j) $null_($j) 
 puts "udp_($j) and null_($j) agents has been connected each other" 
 $ns_ at 1.0 "$cbr_($j) start" 
 set j [expr $j + 1] 
 set i [expr $i + 1] 
} 
#------------------------------------------------------------------------ 
$ns_ trace-all $tracefd 
# Define initial node position in nam 
for {set i 0} {$i < $val(nn) } {incr i} { 
 $ns_ initial_node_pos $node_($i) 10 
 } 
# CBR connections stops 
for {set i 0} {$i < 24 } {incr i} { 
 $ns_ at $val(cstop) "$cbr_($i) stop" 
 } 
# Tell all nodes when the simulation ends 
for {set i 0} {$i < $val(nn)} {incr i} { 
 $ns_ at $opt(stop).000000001 "$node_($i) reset"; 
 } 
# Ending nam and simulation 
$ns_ at $opt(stop) "finish" 
$ns_ at $opt(stop).0 "$ns_ trace-annotate \"Simulation has ended\"" 
$ns_ at $opt(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt" 
proc finish {} { 
 global ns_ tracefd namtrace 
 $ns_ flush-trace 
- 80 - 
 close $tracefd 
 close $namtrace 
 exec nam mesh50_aodv_1.nam & 
 exit 0 
 } 
puts "Starting Simulation..." 
$ns_ run 
- 81 - 
PHỤ LỤC 3: Phân tích tệp vết .tr 
Trường 0: Loại sự kiện 
s: send r: receive d: drop f: forward 
Trường 1: Nhãn chung 
-t: time 
Trường 2: Thông tin về chặng tiếp theo 
-Hs: id for this node 
-Hd: id for next hop towards the destination 
Trường 3: Đặc tính của nút 
-Ni: node id 
-Nx –Ny -Nz: node’s x/y/z coordinate 
-Ne: node energy level 
-Nl: trace level, such as AGT, RTR, MAC (agent, route, mac) 
-Nw: reason for the event 
Trường 4: thông tin gói tin tại tầng MAC 
-Ma: duration 
-Md: dest’s ethernet address 
-Ms: src’s ethernet address 
-Mt: ethernet type 
Trường 5: thông tin gói tin tại tầng IP 
-Is: source address. Source port number 
-Id: dest address.Dest port number 
-It: packet type 
-Il: packet size 
Ghi chú: Trong các tệp vết ns2, một địa chỉ IP có thể được viết bằng nhiều dạng,trong khi luôn đề cập đến cùng một 
địa chỉ. Ví dụ: dạng có thứ bậc: "0.1.0"; Dạng Interger: 2048 (là 0.1.0 đại diện như là một số thập phân 32 
bits)); hoặc dạng ID: 4 (địa chỉ thứ 4 được xây dựng bởi chương trình NS2). 
Cách đổi địa chỉ từ dạng thứ bậc sang dạng Integer như sau: “x.y.z” = x*4194304 + y*2048 + z 
Ví dụ: 
Hierarchical Address Integer Address TG Address note 
"0.0.0" 0 0 
"1.0.0" 4194304 1 
"1.0.1" 4194305 2 (eg, 4194304*1 + 1) 
"2.0.0" 8388608 3 (eg, 4194304*2 + 0) 
"3.0.0" 12582912 4 
"4.0.0" 16777220 5 
- 82 - 
PHỤ LỤC 4: Nội dung file batch tính toán số liệu từ file .tr 
for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 
mesh50_blackhole_ids_4 mesh50_blackhole_ids_5; do 
rm ${fn}.tr -f 
rm ${fn}.nam -f 
rm ${fn}.txt -f 
done 
rm mesh50_blackhole_ids_ketqua.txt -f 
echo Files are deleted 
echo 
for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 
mesh50_blackhole_ids_4 mesh50_blackhole_ids_5 ; do 
ns ${fn}.tcl 
echo ${fn}.tcl is interpreted 
echo ---------------------------------------------------------------------- 
done 
echo 
for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 
mesh50_blackhole_ids_4 mesh50_blackhole_ids_5 ; do 
cat ${fn}.tr | awk '{print $1 " " $9 " " $19 " " $21 " " $31 " " $33 " " $35}' >> ${fn}.txt 
echo ${fn}.txt is created 
done 
echo 
for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 
mesh50_blackhole_ids_4 mesh50_blackhole_ids_5; do 
# Simulation results for $fn 
echo Simulation_results_for_$fn >> mesh50_blackhole_ids_ketqua.txt 
echo >> mesh50_blackhole_ids_ketqua.txt 
ss=0; 
sr=0; 
lb=0; 
#-------------Tinh toan tu Base Station den nut 0 den 3------------------------------------------------------------------- 
for k in 0 1 2 3; do 
d=0; 
l=`expr $k + 4` 
m=`expr $k + 8` 
i=`expr $k + 4194304` 
j=`expr $i + 4` 
s=`grep "s $l MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
r=`grep "r $m MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d1=`grep "d 54 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d2=`grep "d 55 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d3=`grep "d 56 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d4=`grep "d 57 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
ss=`expr $ss + $s` 
sr=`expr $sr + $r` 
d=`expr $d1 + $d2 + $d3 + $d4` 
lb=`expr $lb + $d` 
echo "Base station $k --> node $k 
Gui: $s 
Nhan: $r 
Loai bo: $d" >> mesh50_blackhole_ids_ketqua.txt 
- 83 - 
done 
#-------------------------------------------------------------------------------- 
for k in 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52; do 
d=0; 
g=`expr $k - 8` 
n=`expr $g + 1` 
l=`expr $k + 1` 
i=`expr 4194300 + $k` 
j=`expr $i + 1` 
s=`grep "s $k MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
r=`grep "r $l MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d1=`grep "d 54 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d2=`grep "d 55 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d3=`grep "d 56 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
d4=`grep "d 57 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` 
ss=`expr $ss + $s` 
sr=`expr $sr + $r` 
d=`expr $d1 + $d2 + $d3 + $d4` 
lb=`expr $lb + $d` 
echo "Node $g --> Node $n 
Gui: $s 
Nhan: $r 
Loai bo: $d" >> mesh50_blackhole_ids_ketqua.txt 
done 
echo "So goi tin gui: $ss" >> mesh50_blackhole_ids_ketqua.txt 
echo "So goi tin nhan: $sr" >> mesh50_blackhole_ids_ketqua.txt 
echo "So goi loai bo: $lb" >> mesh50_blackhole_ids_ketqua.txt 
per=`expr \( $sr \* 100 \) / $ss` 
echo "Ti le goi tin gui thanh cong: $per" >> mesh50_blackhole_ids_ketqua.txt 
echo "----------------------------------------------------" >> mesh50_blackhole_ids_ketqua.txt 
done 
echo 
echo .........ALL DONE............. 
- 84 - 
PHỤ LỤC 5: Tổng hợp kết quả tính toán các kịch bản mô tả 
TỔNG HỢP KẾT QUẢ TÍNH TOÁN 
Kịch 
bản 
Số gói 
tin gửi 
Số gói 
tin nhận 
Số gói tin 
bị loại bỏ 
bởi nút 
blackhole 
Tỉ lệ gửi 
thành 
công 
Tỉ lệ gửi 
không 
thành công 
Tỉ lệ gói tin 
bị loại bỏ 
bởi nút 
black hole 
S1 25142 20403 - 81.15% 18.85% - 
S2 23249 17201 - 73.99% 26.01% - 
S3 24905 20735 - 83.26% 16.74% - 
S4 23511 18127 - 77.10% 22.90% - 
S5 24568 18617 - 75.78% 24.22% - 
AODV 
TB 24275 19017 - 78.25% 21.75% - 
S1 24538 18351 - 74.79% 25.21% - 
S2 23134 15002 - 64.85% 35.15% - 
S3 24843 18465 - 74.33% 25.67% - 
S4 23215 16465 - 70.92% 29.08% - 
S5 24568 18617 - 75.78% 24.22% - 
idsAODV 
TB 24060 17380 - 72.13% 27.87% - 
S1 27499 1382 13430 5.03% 94.97% 48.84% 
S2 27581 741 16005 2.69% 97.31% 58.03% 
S3 27541 412 14706 1.50% 98.50% 53.40% 
S4 27537 417 13975 1.51% 98.49% 50.75% 
S5 27592 389 14958 1.41% 98.59% 54.21% 
AODV with 
blackhole 
attack 
TB 27550 668 14615 2.43% 97.57% 53.05% 
S1 27375 1926 6370 7.04% 92.96% 23.27% 
S2 27407 1856 6817 6.77% 93.23% 24.87% 
S3 27169 2336 6923 8.60% 91.40% 25.48% 
S4 27321 2217 7463 8.11% 91.89% 27.32% 
S5 27440 1896 6170 6.91% 93.09% 22.49% 
idsAODV 
with 
blackhole 
attack 
TB 27342 2046 6749 7.49% 92.51% 24.69% 
            Các file đính kèm theo tài liệu này:
 LUẬN VĂN-NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP BẢO MẬT TRONG MẠNG KHÔNG DÂY MESH.pdf LUẬN VĂN-NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP BẢO MẬT TRONG MẠNG KHÔNG DÂY MESH.pdf