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 |
Chia sẻ: lylyngoc | Lượt xem: 2953 | 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