1. Các kết quả của luận văn
Luận văn đã tập trung nghiên cứu về các thách thức, mối đe dọa an ninh,
ảnh hưởng của tấn công lỗ đen trong giao thức AODV, trình bày một số giải
pháp phòng chống tấn công lỗ đen là IDSAODV và RAODV. Đồng thời luận
văn cũng đã sử dụng công cụ mô phỏng NS-2, thực hiện mô phỏng quá trình tấn
công lỗ đen và giải pháp phòng chống làm giảm ảnh hưởng của tấn công lỗ đen
thông qua một số kịch bản khác nhau. Kết quả mô phỏng cho thấy các kết luận
như sau:
- Trong điều kiện bình thường, khi các nút mạng di chuyển với tốc độ từ 0
- 20m/s, giao thức AODV và IDSAODV đạt hiệu suất rất cao, giao thức
RAODV thấp hơn một chút.
- Khi mạng xuất hiện tấn công lỗ đen và số lượng nút lỗ đen tăng dần,
hiệu suất của giao thức AODV giảm rõ rệt gây ra sự mất mát gói tin lớn. Giao
thức IDSAODV tuy có làm giảm ảnh hưởng xấu từ nút lỗ đen, nhưng hiệu quả
chưa cao, ưu điểm của giải pháp này là không phát sinh gói tin mới, không gây
ra trễ trong mạng. Giao thức RAODV đạt hiệu suất cao và ổn định hơn hẳn giải
pháp trước, tuy nhiên nhược điểm của giải pháp này là gây ra trễ trong mạng,
tổng phí cao hơn nhiều lần so với 2 giao thức AODV và IDSAODV.
2. Hướng phát triển của đề tài
Do hạn chế về mặt thời gian nên luận văn mới dừng lại ở mức độ nghiên
cứu giao thức điển hình AODV và các giải pháp phòng chống tấn công lỗ đen
trên giao thức này. Trong thời gian tới tác giả sẽ tiếp tục nghiên cứu mô phỏng,
đánh giá kết quả của giải pháp với nhiều kiểu tấn công khác nhau trên các giao
thức DSDV, DSR, OLSR
Ngoài ra còn có một số vấn đề khác của các giao thức cần được xem xét
như bảo mật kết hợp đảm bảo chất lượng dịch vụ.
85 trang |
Chia sẻ: yenxoi77 | Lượt xem: 634 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Đánh giá về an toàn giao thức định tuyến trong mạng Manet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
dây đặc biệt
MANET: AODV, DSDV, DSR, TORA...
- Hỗ trợ liên mạng sử dụng vệ tinh (Satellite Networking).
* Trong lĩnh vực mạng hỗn hợp có dây và không dây: - Hỗ trợ các trạm cơ sở đóng vai trò cổng chuyển giữa mạng có dây và
mạng không dây.
- Hỗ trợ Snoop TCP.
4.2.4. Thiết lập mô phỏng mạng MANET trong NS-2
Mô hình không dây chủ yếu bao gồm nút di động (MobileNode) ở lõi, với
các đặc điểm hỗ trợ mở rộng cho phép mô phỏng các mạng MANET, mạng
không dây Đối tượng MobileNode là một đối tượng tách biệt. Lớp
MobileNode được thừa kế từ lớp cha Node trong C++. Do đó lớp MobileNode
là đối tượng Node cơ bản với các chức năng thêm vào của nút không dây và di
động như là khả năng di chuyển trong hình trạng mạng cho trước, khả năng nhận
và truyền các tín hiệu tới và từ kênh không dây. Trong mục này chúng ta sẽ mô
tả các thành phần bên trong của MobileNode bao gồm các kỹ thuật định tuyến,
việc tạo ngăn xếp mạng cho phép truy cập kênh trong MobileNode, mô tả ngắn
gọn của mỗi thành phần ngăn xếp, hỗ trợ dò vết và tạo ra các ngữ cảnh di
chuyển/lưu lượng cho mô phỏng không dây.
* Nút di động:
Nút di động (MobileNode) là một đối tượng ns Node cơ bản với các chức
năng mở rộng như sự di chuyển, khả năng truyền và nhận trên kênh mà cho
phép nó có thể sử dụng để tạo sự di động trong các môi trường mô phỏng không
dây. Các đặc điểm di động bao gồm việc di chuyển nút, các cập nhật vị trí định
kỳ, bảo đảm đường biên của hình trạng mạng được thực thi trong C++ trong khi
các thành phần mạng trong bản thân MobileNode (như bộ phân loại, dmux, LL,
Mac, Channel) lại được thực thi trong Otcl. Các hàm và thủ tục được mô tả
dưới đây có thể tìm thấy trong ~ns/common/mobilenode.{cc,h}, ~ns/tcl/lib/ns-
mobilenode.tcl, và ~ns/tcl/mobility/aodv.tcl. Các kịch bản ví dụ có thể tìm thấy
trong ~ns/tcl/ex/wireless-test.tcl và ~ns/tcl/ex/wireless.tcl.
45 Giao thức định tuyến mạng không dây được hỗ trợ trong NS-2 bao gồm
AODV, DSDV, DSR và TORA. Việc tạo các nút di động phụ thuộc vào giao
thức định tuyến được sử dụng. Hiện nay NS-2 hỗ trợ API tạo nút di động được
mô tả như sau:
$ns_ node-config -adhocRouting $opt(adhocRouting) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-propInstance [new $opt(prop)] \
-phyType $opt(netif) \
-channel [new $opt(chan)] \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
API ở trên cấu hình cho nút di động với tất cả các giá trị của giao thức
định truyến trong MANET như ngăn xếp mạng, cấu trúc mạng, mô hình kênh
truyền. Tiếp đến chúng ta tạo các nút di động như sau:
for {set i 0} {$i < $val(nnaodv)} {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;# disable random motion
}
Thủ tục trên tạo ra các đối tượng nút di động, tạo tác tử định tuyến mạng
MANET, tạo ngăn xếp mạng bao gồm lớp liên kết, hàng đợi, lớp MAC và giao
diện mạng với ăng ten, sử dụng mô hình truyền thông được định nghĩa, kết nối
các thành phần và kết nối ngăn xếp vào kênh.
* Quy trình mô phỏng mạng MANET với NS-2:
Quá trình mô phỏng mạng MANET với bộ mô phỏng NS-2 [1] thông
thường trải qua các bước như sau trong việc xây dựng tệp kịch bản:
- Tạo bộ lập lịch các sự kiện
+ Tạo bộ lập lịch
set ns_ [new Simulator]
+ Lập lịch sự kiện
$ns at
46 + Khởi động bộ lập lịch
$ns run
- Ghi lại vết các sự kiện của mạng mô phỏng
+ Dò vết các gói tin trên tất cả các liên kết, xuất ra tệp traceout.tr
$ns trace-all [open traceout.tr w]
+ Dò vết các gói tin trên tất cả các liên kết, xuất ra định dạng dùng trong
NAM
$ns namtrace-all [open traceout.nam w]
+ Cũng có thể dò vết một số tham số, ví dụ:
$ns trace-queue $n0 $n1
$ns nam trace-queue $n0 $n1
- Thiết lập mạng mô phỏng
+ Thiết lập tô-pô mạng
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
# Create God
create-god $val(nn)
- Cấu hình nút di động
+ Cấu hình nút di động
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-channel $chan_1_
+ Thiết lập vị trí ban đầu
$node_(0) set X_ 1.0
$node_(0) set Y_ 3.0
$node_(0) set Z_ 0.0
47 $node_(1) set X_ 4.0
$node_(1) set Y_ 6.0
$node_(1) set Z_ 0.0
+ Thiết lập sự di chuyển cho các nút di động ta dùng
$ns_ at 10.0 “$node_(0) setdest 20.0 10.0 15.0”
- Tạo ra các nguồn sinh lưu lượng
+ Tạo lưu lượng
set udp_(0) [new Agent/UDP]
$ns_ attach-agent $node_(0) $udp_(0)
set null_(0) [new Agent/Null]
$ns_ attach-agent $node_(1) $null_(0)
set cbr_(0) [new Application/Traffic/CBR]
$cbr_(0) set packetSize_ 512
$cbr_(0) set interval_ 4.0
$cbr_(0) set random_ 1
$cbr_(0) set maxpkts_ 10000
$cbr_(0) attach-agent $udp_(0)
$ns_ connect $udp_(0) $null_(0)
$ns_ at 158.7047093914378 "$cbr_(0) start"
+ Việc tạo lưu lượng có thể lấy từ tệp sinh lưu lượng của công cụ có sẵn
cbrgen trong bộ mô phỏng NS-2.
4.3. Cài đặt bổ sung các giao thức Trong phiên bản NS-2.35 đã hỗ trợ các giao thức định tuyến trong mạng
MANET như AODV, DSDV, DSR, Tuy nhiên, không hỗ trợ sẵn giao thức
mô phỏng lỗ đen, chống tấn công lỗ đen như IDSAODV và RAODV. Luận văn
dựa trên ý tưởng và mã nguồn của tác giả Semih Dokurer, nhóm tác giả
Chonggun Kim, Elmurod Talipov và Byoungchul Ahn, thông qua việc nghiên
cứu cụ thể các mã nguồn trên cũng như tham khảo rất kỹ trong tài liệu [8] để
tiến hành cài đặt các giao thức định tuyến mới. Quá trình cài đặt cụ thể như sau:
4.3.1. Cài đặt giao thức blackholeAODV mô phỏng tấn công lỗ đen
Việc cài đặt giao thức blackholeAODV chỉ là chỉnh sửa lại của giao thức
gốc AODV. Trong đó chỉ thay đổi hành vi của nút trung gian đóng vai trò nút
độc hại sửa đổi gói tin RREP để chiếm quyền điều khiển tuyến, thực hiện loại bỏ
gói tin.
- Thứ nhất, chỉnh sửa tệp “\tcl\lib\ns-lib.tcl”, đây là nơi chứa các thủ tục
khai báo các giao thức. Khi node sử dụng giao thức blackholeAODV, agent này
48 sẽ được lập lịch để bắt đầu quá trình mô phỏng và nó được gán thuộc tính của
agent này cho những nút sẽ sử dụng giao thức blackholeAODV.
Đoạn mã như sau:
blackholeAODV {
set ragent [$self create-blackholeaodv-agent $node]
}
Simulator instproc create-blackholeaodv-agent { node } {
set ragent [new Agent/blackholeAODV [$node node-addr]]
$self at 0.0 "$ragent start" # start BEACON/HELLO Messages
$node set ragent_ $ragent
return $ragent
}
- Thứ hai, tập tin được điều chỉnh là “/makefile” trong thư mục gốc “ns-
2.35”. Thêm các dòng mã như sau:
blackholeaodv/blackholeaodv_logs.o blackholeaodv/blackholeaodv.o \
blackholeaodv/blackholeaodv_rtable.o blackholeaodv/blackholeaodv_rqueue.o \
Cho tới lúc này, về mặt hình thức đã tạo xong giao thức định tuyến mới
blackholeAODV. Tuy nhiên về bản chất để nó thực hiện đúng cơ chế loại bỏ gói
tin như mong muốn cần phải tiến hành sửa đổi cơ chế làm việc của giao thức
AODV trong tệp blackholeaodv.cc. Hành vi của các nút được giải thích cụ thể
như sau:
Khi một gói tin được nhận bởi hàm “recv” trong tệp “aodv/aodv.cc”, nó
xử lý gói tin tùy theo loại gói tin này. Nếu gói tin là một trong số các gói thông
tin điều khiển quá trình định tuyến AODV, nó sẽ gửi gói tin tới hàm
“recvAODV” được giải thích ở dưới. Còn nếu gói tin nhận được là gói dữ liệu,
thì theo thông thường nó sẽ được chuyển tới đích, nhưng với hành vi của nút lỗ
đen nó sẽ loại bỏ toàn bộ gói tin mà không cần thiết với nó. Trong đoạn mã dưới
đây, điều kiện if đầu tiên xử lý quá trình nhận dữ liệu nếu đúng là địa chỉ đích,
điều kiện else nút độc hại sẽ loại bỏ toàn bộ dữ liệu nhận được. Đoạn mã như sau:
if ((u_int32_t)ih->saddr() == index)
forward((blackholeaodv_rt_entry*) 0, p, NO_DELAY);
else
drop(p, DROP_RTR_ROUTE_LOOP);
Trường hợp gói tin là một trong số các gói thông tin điều khiển định tuyến
AODV, hàm “recv” sẽ gửi chúng tới hàm “recvblackholeAODV”. Tại đây hàm
này sẽ kiểm tra loại của gói tin điều khiển AODV và dựa trên loại gói tin đó sẽ
gửi chúng đến các hàm tương ứng bằng câu lệnh case. Ví dụ, nếu gói tin là
49 RREQ sẽ được gửi đến hàm “recvRequest”, nếu là gói RREP sẽ được gửi tới
hàm “recvReply”. Đoạn mã như sau:
case AODVTYPE_RREQ:
recvRequest(p);
break;
case AODVTYPE_RREP:
recvReply(p);
break;
case AODVTYPE_RERR:
recvError(p);
break;
case AODVTYPE_HELLO:
recvHello(p);
break;
default:
fprintf(stderr, "Invalid blackholeAODV type (%x)\n", ah>ah_type);
exit(1);
Trong đó chú ý tới hành vi của nút lỗ đen thông qua hàm xử lý gói tin
RREQ để trả lời gói tin giả mạo RREP. Nút độc hại cố gắng đánh lừa các nút
gửi bằng gói RREP của mình với giá trị của số SN được gán giá trị cao nhất
4294967295 và hop count gán bằng 1. Giá trị cụ thể của gói tin sai RREP được
minh họa dưới đây:
sendReply(rq->rq_src, // IP Destination
1, // Hop Count
index, // Dest IP Address
4294967295, // Highest Dest Sequence Num
MY_ROUTE_TIMEOUT, // Lifetime
rq->rq_timestamp); // timestamp
Sau khi thực hiện những thay đổi trên, tiến hành biên dịch lại NS-2 để tạo
các đối tượng tệp.
4.3.2. Cài đặt giao thức IDSAODV làm giảm ảnh hưởng tấn công lỗ
đen
Để cài đặt giải pháp IDSAODV, phải tiến hành thay đổi hàm nhận gói
RREP (recvReply) và tạo cơ chế bộ đệm gói tin RREP để đếm số gói tin RREP
thứ hai. Cụ thể như sau:
50 Cơ chế bộ đệm gói RREP được tạo thành với các hàm chức năng:
“rrep_insert” có chức năng lưu đệm gói RREP, “rrep_lookup” có chức năng tìm
kiếm bất kỳ gói RREP nếu nó tồn tại, “rrep_remove” loại bỏ tuyến đường với
RREP đến từ nút được xác định và “rrep_purge” có chức năng xóa định kỳ từ
danh sách những gói tin RREP đã hết hạn. Ở đây chọn thời gian hết hiệu lực
(BCAST_ID_SAVE) đối với gói tin RREP trùng với thời gian hết hiệu lực trong
giao thức AODV là 3s. Đoạn mã dưới đây mô tả cơ chế bộ đệm gói tin RREP:
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;
}
}
51 void
idsAODV::rrep_purge() {
idsBroadcastRREP *r = rrephead.lh_first;
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;
}
}
}
Tiếp đến là sửa đổi hàm recvReply, đầu tiên là việc kiểm soát nếu gói tin
RREP đến cho chính nó thì chức năng “rrep_lookup” được gọi tới nếu gói tin
được nhận, ngược lại chức năng “rrep_insert” được gọi để chèn các gói RREP
cho các đích tương ứng của nó. Nếu gói tin RREP đã được lưu trước đó cho
cùng địa chỉ đích thì chức năng RREP thông thường sẽ được thực hiện. Nếu
không có nghĩa là gói tin RREP được chuyển tiếp tới các hàng xóm thích hợp
của nó. Đoạn mã dưới đây cho thấy chức năng nhận gói tin RREP của
IDSAODV được 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;
}
UPDATE ROUTE TABLE
} else {
Forward(p);
}
}
52 Sau khi tất cả thay đổi kết thúc, tiến hành biên dịch lại tất cả các tệp trong
phần mềm NS-2.
4.3.3. Cài đặt giao thức RAODV làm giảm ảnh hưởng tấn công lỗ đen
Việc cài đặt giao thức RAODV được thực hiện trong tệp tin raodv.cc. Cụ
thể như sau:
Khi nhận được 1 RREQ, RAODV sẽ kiểm tra số SN để xác định đây là
một tuyến đường có hiệu lực đến nút đích.
if (rq->rq_src_seqno > rt0->rt_seqno ) {
rt0->pc_insert(ih->saddr());
Trước khi gửi lại R-RREQ, tiến hành kiểm tra xem nút nhận có phải là
nút đích hay không. Nếu đúng sẽ sử dụng sendReverse() để quảng bá R-RREQ
cho các nút hàng xóm với dữ liệu vào là thông tin của nút nhận.
if(rq->rq_dst == index) // Kiểm tra node nhận được có phải nút đích hay
không
{
seqno = max(seqno,rq->rq_dst_seqno) + 1;
if (seqno%2) seqno++;
sendReverse(rq->rq_src);
Packet::free(p);
}
Với RAODV sẽ có hàm recvReverse() để nhận và xử lý R-RREQ. Vì R-
RREQ được quảng bá nên trước hết cần tiến hành kiểm tra xem gói tin vừa gửi
có xuất phát từ chính nút đó hay không. Trong khi ở AODV thì không cần thiết
việc này.
void
RAODV::recvReverse(Packet *p) {
//struct hdr_cmn *ch = HDR_CMN(p);
struct hdr_ip *ih = HDR_IP(p);
struct hdr_raodv_reply *rp = HDR_RAODV_REPLY(p);
char suppress_reply = 0;
double delay = 0.0;
raodv_rt_entry *rtc;
raodv_rt_entry *rt0;
// Kiểm tra gói tin nhận được có phải xuất phát từ chính node đó
if (rp->rp_src == index) {
Packet::free(p);
53 return;
}
// Kiểm tra rt entry, nếu chưa có thì add vào route table
rt0 = rtable.rt_lookup(rp->rp_src);
if(rt0 == 0) {
rt0 = rtable.rt_add(rp->rp_src);
}
Tiếp đến, đồng thời kiểm tra tuyến đường đến đã phải là tuyến đích hay
chưa. Nếu chưa sẽ thực hiện nghiệp vụ xem đây có phải là tuyến mới với số hop
ngắn hơn không, đồng thời cập nhật lại route entry.
if (rp->rp_dst != index)
{
if ((rt0->rt_seqno rp_dst_seqno ) || route mới hơn
(( rt0->rt_seqno == rp->rp_dst_seqno) &&
( rt0->rt_hops > rp->rp_hop_count ))) {
rt0->rt_expire = max(rt0->rt_expire,
(CURRENT_TIME+REV_ROUTE_LIFE));
rt0->pc_insert(ih->saddr());
// Update the rt entry
rt_update(rt0, rp->rp_dst_seqno, rp->rp_hop_count,ih->saddr(),
max(rt0->rt_expire, (CURRENT_TIME + REV_ROUTE_LIFE)));
if (rt0->rt_req_timeout > 0.0 ) {
//reset lại state của route
rt0->rt_req_cnt = 0;
rt0->rt_req_timeout = 0.0;
rt0->rt_req_last_ttl = rp->rp_hop_count;
rt0->rt_expire=CURRENT_TIME + ACTIVE_ROUTE_TIMEOUT;
}
}
}
Sau đấy RAODV sẽ kiểm tra nếu message gửi đi đã từng nhận được hay
chưa. Hủy nếu đã từng có, cập nhật thêm mới nếu chưa.
// Kiểm tra nếu đã từng nhận được message này trước đó. Nếu có - hủy
if (id_lookup(rp->rp_src, rp->rp_bcast_id)) {
Packet::free(p);
return;
54 }
// Cập nhật thêm mới message
id_insert(rp->rp_src, rp->rp_bcast_id);
Nếu nút đến là đích thì cần xác định tuyến mới có phải xuất phát từ cùng
một nút trước đó không. Cập nhật lại route entry trong bảng định tuyến.
//Xác định là route mới hơn hay không từ chính node trước đó
if ( (rt0->rt_seqno rp_dst_seqno ) || // route mới hơn ?
(( rt0->rt_seqno == rp->rp_dst_seqno) &&
( rt0->rt_hops > rp->rp_hop_count )) && (rt0->rt_nexthop==ih-
>saddr()) ) /* từ chính nút node trước đó */ {
//Tạo mới hoặc update route entry trong route table
rt0->rt_expire = max(rt0->rt_expire,
(CURRENT_TIME+REV_ROUTE_LIFE));
// Update the rt entry
rt_update(rt0, rp->rp_dst_seqno, rp->rp_hop_count,ih->saddr(),
max(rt0->rt_expire, (CURRENT_TIME + REV_ROUTE_LIFE)));
if (rt0->rt_req_timeout > 0.0 ) {
rt0->rt_req_cnt = 0;
rt0->rt_req_timeout = 0.0;
rt0->rt_req_last_ttl = rp->rp_hop_count;
rt0->rt_expire=CURRENT_TIME + ACTIVE_ROUTE_TIMEOUT;
}
rt0->rt_disc_latency[rt0->hist_indx] = (CURRENT_TIME - rp-
>rp_timestamp) / (double) rp->rp_hop_count;
rt0->hist_indx = (rt0->hist_indx + 1) % MAX_HISTORY;
rtable.order_routes(rp->rp_src);
//rt_print(rp->rp_src); //Print Source Node's Routing Table
}
Nếu không phải thì đây sẽ là một tuyến mới từ một nút đến khác nút trước
đó. Thêm mới và cập nhật lại route entry trong bảng định tuyến.
else if ((rp->rp_dst_seqno >= rt0->rt_seqno)) { // && (rtable.total_rts(rp-
>rp_src)< 5)) {
rt0=rtable.rt_add(rp->rp_src);
rt_update(rt0, rp->rp_dst_seqno, rp->rp_hop_count,ih->saddr(),
max(rt0->rt_expire, (CURRENT_TIME + REV_ROUTE_LIFE)));
if (rt0->rt_req_timeout > 0.0 ) {
55 rt0->rt_req_cnt = 0;
rt0->rt_req_timeout = 0.0;
rt0->rt_req_last_ttl = rp->rp_hop_count;
rt0->rt_expire=CURRENT_TIME + ACTIVE_ROUTE_TIMEOUT;
}
rtable.order_routes(rp->rp_src);
rt0->rt_disc_latency[rt0->hist_indx] = (CURRENT_TIME - rp-
>rp_timestamp) / (double) rp->rp_hop_count;
rt0->hist_indx = (rt0->hist_indx + 1) % MAX_HISTORY;
rt_print(rp->rp_src); //Print Source Node's Routing Table
Thay vì gửi lại một RREP trở lại nút nguồn như AODV thì giao thức
RAODV tạo ra một gói reverse route request (R-RREQ) và quảng bá cho các
nút lân cận giống như RREQ của nút nguồn đã làm.
void
RAODV::sendReverse(nsaddr_t dst) {
Packet *p = Packet::alloc();
struct hdr_cmn *ch = HDR_CMN(p);
struct hdr_ip *ih = HDR_IP(p);
struct hdr_raodv_reply *rp = HDR_RAODV_REPLY(p);
raodv_rt_entry *rt = rtable.rt_lookup(dst);
assert(rt);
rp->rp_type = RAODVTYPE_RQREP;
//rp->rp_flags = 0x00;
rp->rp_hop_count = 1;
rp->rp_dst = dst;
rp->rp_bcast_id = bid++;
rp->rp_src = index; //
rp->rp_dst_seqno = seqno;
rp->rp_timestamp = CURRENT_TIME; // Thời gian hiện tại
ch->ptype() = PT_RAODV;
ch->size() = IP_HDR_LEN + rp->size();
ch->iface() = -2;
ch->error() = 0;
ch->addr_type() = NS_AF_NONE;
ch->prev_hop_ = index;
ch->direction() = hdr_cmn::DOWN;
ih->saddr() = index;
56 ih->daddr() = IP_BROADCAST; // IP Broadcast
ih->sport() = RT_PORT;
ih->dport() = RT_PORT;
ih->ttl_ = NETWORK_DIAMETER;
Scheduler::instance().schedule(target_, p, 0);
}
Sau khi tất cả thay đổi kết thúc, tiến hành biên dịch lại tất cả các tệp trong
phần mềm NS-2.
4.4. Mô phỏng, đánh giá ảnh hưởng và giải pháp làm giảm hiệu ứng
của tấn công lỗ đen
Trong phần này luận văn sẽ trình bày việc tiến hành mô phỏng đánh giá
ảnh hưởng và giải pháp làm giảm ảnh hưởng của tấn công lỗ đen trong mạng
MANET. Để tiếp cận một cách có hệ thống, trước tiên ta phải xác định được các
tham số của môi trường (hệ thống) trong quá trình mô phỏng, các độ đo hiệu
năng được chọn làm tiêu chuẩn để so sánh. Sau đó thực hiện các thí nghiệm với
các kịch bản khác nhau nhằm đưa ra được lượng thông tin lớn nhất về ảnh
hưởng của tấn công lỗ đen. Cuối cùng là việc phân tích, đánh giá các kết quả thu
được dưới dạng bảng, biểu từ đó đưa ra kết luận, nhận xét.
a. Các độ đo hiệu năng được đánh giá
- Tỷ lệ phân phát gói tin thành công (PDR - Packet Delivery Ratio): Là tỷ
lệ giữa số gói tin được phân phát thành công tới đích so với số gói tin được gửi
đi nguồn phát. Giá trị của tỉ số này càng lớn chứng tỏ hiệu năng hoạt động của
mạng càng cao.
- Độ trễ trung bình (End-to-End Delay): Thời gian trung bình để gửi một
gói dữ liệu tới đích. Nó bao gồm cả độ trễ gây ra bởi quá trình khám phá tuyến
và dữ liệu truyền tải nằm trong hàng đợi. Chỉ các gói dữ liệu được truyền thành
công tới đích mới được tính.
- Tổng phí (Routing Overhead): Là tổng của tất cả các gói tin điều khiển
như gói tin yêu cầu tuyến, gói tin trả lời tuyến và các gói tin lỗi trên đường
truyền từ cả hai phía nguồn và đích.
b. Thiết lập các lựa chọn, tham số mô phỏng
Như đã trình bày ở trên, do đặc thù của mạng MANET là mạng động với
băng thông thấp, năng lượng của nút hạn chế cho nên khi nghiên cứu về ảnh
hưởng của tấn công lỗ đen trong mạng MANET ta cần chú ý đến một số lựa
chọn, tham số mô phỏng như:
- Kích thước mạng (độ lớn của mạng): Số lượng nút trong mạng
57 - Mật độ nút: Tính theo số hàng xóm trung bình hoặc theo số nút trung
bình trong diện tích phủ sóng (radio range) của một nút.
- Độ linh động của mạng: Được đo bằng tốc độ chuyển động trung bình
của các nút mạng.
- Các mẫu lưu lượng: Hệ thống với các mẫu lưu lượng như CBR (truyền
bằng giao thức UDP) hoặc FTP (truyền bằng giao thức TCP).
c. Các kịch bản mô phỏng
Kịch bản mô phỏng trong mạng MANET được cấu thành bởi các yếu tố
như tô-pô mạng, mô hình chuyển động, mô hình sinh lưu lượng, diện tích và
hình dạng vùng mô phỏng, thời gian hoạt động của các nguồn sinh lưu lượng,
thời gian mô phỏng. Bằng cách thay đổi các yếu tố kể trên sẽ cho chúng ta
những ngữ cảnh mạng khác nhau.
Trong luận văn này, kịch bản mô phỏng được xây dựng gồm 50 nút có vị
trí khởi tạo ngẫu nhiên trong một vùng địa lý có kích thước 1000m x 1000m với
phạm vi truyền sóng vô tuyến của mỗi nút là 250m (bán kính). Tọa độ của mỗi
nút tại một vị trí trong vùng mô phỏng có dạng (x,y,z) trong đó z có giá trị bằng 0.
Nút di chuyển theo mô hình Random Waypoint [11], được hiểu là đầu
tiên nút có một vị trí ngẫu nhiên trong khu vực mô phỏng và ở tại đó một
khoảng thời gian gọi là thời gian tạm dừng. Khi quãng thời gian này hết hạn, nút
chọn ngẫu nhiên một đích trong khu vực mô phỏng và một tốc độ được phân bố
đều giữa [min Speed, max Speed]. Sau đó, nút di chuyển tới vị trí mới với tốc độ
đã chọn. Khi tới vị trí mới, nút dừng một khoảng thời gian được chọn theo phân
bố đồng đều giữa [Pmin, Pmax] và sau đó tiếp tục lại quá trình. Trong mô phỏng
việc khởi tạo vị trí các nút và quá trình di chuyển theo mô hình trên được thực
hiện bằng cách sử dụng công cụ “./setdest”- một ứng dụng đã được cài đặt trong
bộ mô phỏng NS-2. Chạy setdest với các tham số sau để tạo hình trạng mạng với
các tốc độ di chuyển khác nhau là 0, 5, 10, 15, 20m/s :
./setdest -n -p -s -t
-x -y >/
./setdest –n 50 –p 10 –s 0.0 –t 600 –x 1000 – y 1000> kichban1-n50-t600-
s0-1000-1000
./setdest –n 50 –p 10 –s 5.0 –t 600 –x 1000 – y 1000> kichban2-n50-t600-
s5-1000-1000
./setdest –n 50 –p 10 –s 10.0 –t 600 –x 1000 – y 1000> kichban3-n50-t600-
s10-1000-1000
./setdest –n 50 –p 10 –s 15.0 –t 600 –x 1000 – y 1000> kichban4-n50-t600-
s15-1000-1000
58 ./setdest –n 50 –p 10 –s 20.0 –t 600 –x 1000 – y 1000> kichban5-n50-t600-
s20-1000-1000
Thực thể truyền thông CBR được được tôi thiết lập tốc độ phát gói tin
không đổi là 4 gói tin/giây và các gói tin có kích thước là 512 byte. Việc sinh ra
các lưu lượng bao gồm 10 kết nối được cho bởi công cụ cbrgen đã được tích hợp
sẵn trong phần mềm NS-2 với cú pháp như sau:
ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections]
[-rate rate] >/
ns cbrgen.tcl –type cbr –nn 50 –seed 1.0 –mc 10 –rate 4.0 > cbr
Việc sử dụng các công cụ setdest và cbrgen này giúp người nghiên cứu dễ
dàng tạo ra các kịch bản truyền thông cũngnhư di chuyển của mạng với số lượng
các nút di động là tương đối lớn.
Các kịch bản tiến hành có thời gian mô phỏng là 600s.
Sau khi đã tạo các ngữ cảnh về mô hình di chuyển, nguồn lưu lượng, tiếp
đến là việc tạo các nút đúng theo quy trình đã nêu ở phần trên.
Việc tạo cấu hình các nút không dây cho bởi đoạn mã sau:
# configure node, please note the change below.
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-channel $chan_1_
Tạo các nút với vòng lặp for và thay đổi giao thức cho mỗi kịch bản được
cho bởi đoạn mã sau:
for {set i 0} {$i < $val(nnaodv)} {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;#disable random motion
59 }
# Creating Black Hole nodes for simulation
$ns_ node-config -adhocRouting blackholeAODV
for {set i $val(nnaodv)} {$i < $val(nn)} {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;#disable random motion
$ns_ at 0.01 "$node_($i) label \"blackhole node\""
Trong đó các giá trị nnaodv và giá trị rp có thể thay đổi tùy từng kịch bản
như đã đề cập ở trên.
Trong mỗi ngữ cảnh mô phỏng, một số tham số mô phỏng được tôi giữ
không thay đổi, trình bày ở bảng sau:
Thông số Giá trị
Cấu hình chung
Khu vực địa lý 1000 x 1000m
Tổng số nút 50 nút
Vùng thu phát sóng 250 m
Cấu hình di chuyển
Tốc độ di chuyển nhanh nhất 20 m/s 72 km/h
Tốc độ di chuyển chậm nhất 0 m/s Đứng yên
Cấu hình truyền dữ liệu
Nguồn sinh lưu lượng CBR
Số kết nối 10
Kích thước gói tin 512 bytes
Tốc độ phát gói 4 gói/s
4.5. Tiến hành mô phỏng, phân tích tệp vết để tính các tham số hiệu
năng
Luận văn mô phỏng các kịch bản như đã nêu ở trên để thu được các tệp
vết. Tệp vết là tệp chứa tất cả các sự kiện trong mô phỏng như thời điểm gói tin
được gửi, nút nào sinh ra chúng, nút nào đã nhận chúng, kiểu của gói tin gửi,
nếu bị loại bỏ thì lý do bị loại bỏ là gì? Trong các mô phỏng này, sử dụng định
dạng tệp “new trace” cho môi trường mạng không dây.
Để đánh giá các tham số hiệu năng, luận văn tập trung vào các trường sau
trong tệp .tr:
- “s” giá trị của thông tin sự kiện trong trường 0 để đếm xem có bao nhiêu
gói CBR được gửi bởi nút gửi.
60 - “r” giá trị của thông tin sự kiện trong trường 0 để đếm xem có bao nhiêu
gói CBR được nhận bởi nút nhận.
- “node id” giá trị thông tin chỉ số nút trong trường 4, chỉ ra chỉ số nút gửi,
nút nhận.
Ngoài ra căn cứ vào dấu hiệu trường 19 - Trace Level chỉ ra gói tin gửi, nhận ở
tầng nào trong mô hình OSI (trường thứ 19 trong tệp .tr bao gồm các giá trị như MAC,
RTR, AGT tương ứng với các tầng MAC, tầng Network và tầng Transpot).
Ở đây luận văn tạo ra các kịch bản như sau: Ứng với mỗi tốc độ di
chuyển, sẽ tiến hành cài đặt các giao thức AODV, IDSAODV và RAODV với tỷ
lệ nút lỗ đen tăng dần trên tổng số nút mạng. Sau khi xác định rõ các trường
trong tệp .tr cho việc tính toán các tham số hiệu năng. Luận văn sử dụng ngôn
ngữ AWK để tiến hành tính toán. Nội dung tệp ketqua.awk được trình bày trong
phụ lục 2.
Kết quả phân tích các giao thức với tốc độ di chuyển của nút mạng và tỷ
lệ nút lỗ đen tăng dần trên tổng số nút mạng được thể hiện như sau:
61 * Tốc độ 0m/s: Bảng 4.1. Tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 0m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(%)
IDSAODV
(%)
RAODV
(%)
0% 95.58 91.17 79.34
2% 12.99 32.21 71.32
4% 10.44 40.36 72.94
6% 9.58 10.31 71.55
8% 0.00 2.79 72.71
10% 0.00 9.19 73.68
Hình 4.1. Biểu đồ thể hiện tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 0m/s
0
20
40
60
80
100
120
0% 2% 4% 6% 8% 10%
Tỷ l
ệ ph
ân p
hát
gói
tin
thà
nh
côn
g (%
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tỷ lệ phân phát gói tin thành công
AODV
IDSAODV
RAODV
62 Bảng 4.2. Độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần và tốc độ 0m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(ms)
IDSAODV
(ms)
RAODV
(ms)
0% 131.06 109.38 147.65
2% 22.71 31.05 216.26
4% 7.15 28.43 191.92
6% 14.64 58.28 220.03
8% 18.90 25.52 173.62
10% 17.45 61.07 189.06
Hình 4.2. Biểu đồ thể hiện độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần
và tốc độ 0m/s
0
50
100
150
200
250
0% 2% 4% 6% 8% 10%
Thờ
i gia
n (m
s)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Độ trễ trung bình
AODV
IDSAODV
RAODV
63 Bảng 4.3. Tổng phí với tỷ lệ nút lỗ đen tăng dần và tốc độ 0m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(gói)
IDSAODV
(gói)
RAODV
(gói)
0% 36244 39482 223006
2% 14314 9804 196450
4% 5045 10573 179208
6% 2974 11688 189184
8% 575 10433 176904
10% 544 12330 165983
Hình 4.3. Biểu đồ thể hiện tổng phí với tỷ lệ nút lỗ đen tăng dần
và tốc độ 0m/s
0
50000
100000
150000
200000
250000
0% 2% 4% 6% 8% 10%
Tổn
g ph
í (gó
i tin
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tổng phí
AODV
IDSAODV
RAODV
64 * Tốc độ 5m/s: Bảng 4.4. Tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 5m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(%)
IDSAODV
(%)
RAODV
(%)
0% 98.86 93.98 83.42
2% 16.42 27.64 85.26
4% 6.38 18.18 85.45
6% 8.83 19.73 88.06
8% 5.37 15.52 87.02
10% 3.53 8.11 88.47
Hình 4.4. Biểu đồ thể hiện tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 5m/s
0
20
40
60
80
100
120
0% 2% 4% 6% 8% 10%
Tỷ l
ệ ph
ân p
hát
gói
tin
thà
nh
côn
g (%
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tỷ lệ phân phát gói tin thành công
AODV
IDSAODV
RAODV
65 Bảng 4.5. Độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần và tốc độ 5m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(ms)
IDSAODV
(ms)
RAODV
(ms)
0% 41.43 50.86 426.63
2% 30.28 100.20 255.74
4% 218.07 94.43 332.59
6% 28.86 133.90 184.58
8% 20.71 197.68 210.36
10% 15.30 82.16 188.87
Hình 4.5. Biểu đồ thể hiện độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần
và tốc độ 5m/s
0
50
100
150
200
250
300
350
400
450
0% 2% 4% 6% 8% 10%
Thờ
i gia
n (m
s)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Độ trễ trung bình
AODV
IDSAODV
RAODV
66 Bảng 4.6. Tổng phí với tỷ lệ nút lỗ đen tăng dần và tốc độ 5m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(gói)
IDSAODV
(gói)
RAODV
(gói)
0% 13166 15284 298873
2% 14721 20655 297404
4% 13201 16706 291804
6% 8676 17317 270966
8% 7682 15899 265998
10% 6646 17999 259335
Hình 4.6. Biểu đồ thể hiện tổng phí với tỷ lệ nút lỗ đen tăng dần
và tốc độ 5m/s
0
50000
100000
150000
200000
250000
300000
350000
0% 2% 4% 6% 8% 10%
Tổn
g ph
í (gó
i tin
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tổng phí
AODV
IDSAODV
RAODV
67 * Tốc độ 10m/s: Bảng 4.7. Tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 10m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(%)
IDSAODV
(%)
RAODV
(%)
0% 95.92 86.99 81.04
2% 8.76 35.10 81.00
4% 6.03 26.80 80.23
6% 9.29 17.55 82.31
8% 4.24 16.90 81.01
10% 3.87 15.52 83.71
Hình 4.7. Biểu đồ thể hiện tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 10m/s
0
20
40
60
80
100
120
0% 2% 4% 6% 8% 10%
Tỷ l
ệ ph
ân p
hát
gói
tin
thà
nh
côn
g (%
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tỷ lệ phân phát gói tin thành công
AODV
IDSAODV
RAODV
68 Bảng 4.8. Độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần và tốc độ 10m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(ms)
IDSAODV
(ms)
RAODV
(ms)
0% 111.78 198.07 174.54
2% 119.63 109.82 183.43
4% 17.08 50.23 182.65
6% 230.71 188.91 187.19
8% 17.35 353.69 142.82
10% 20.28 167.80 161.51
Hình 4.8. Biểu đồ thể hiện độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần
và tốc độ 10m/s
0
50
100
150
200
250
300
350
400
0% 2% 4% 6% 8% 10%
Thờ
i gia
n (m
s)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Độ trễ trung bình
AODV
IDSAODV
RAODV
69 Bảng 4.9. Tổng phí với tỷ lệ nút lỗ đen tăng dần và tốc độ 10m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(gói)
IDSAODV
(gói)
RAODV
(gói)
0% 29512 52484 260260
2% 17826 25216 259762
4% 13952 20236 247105
6% 17264 22463 232714
8% 8682 21954 228592
10% 11205 18583 218018
Hình 4.9. Biểu đồ thể hiện tổng phí với tỷ lệ nút lỗ đen tăng dần và tốc độ 10m/s
0
50000
100000
150000
200000
250000
300000
0% 2% 4% 6% 8% 10%
Tổn
g ph
í (gó
i tin
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tổng phí
AODV
IDSAODV
RAODV
70 * Tốc độ 15m/s: Bảng 4.10. Tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 15m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(%)
IDSAODV
(%)
RAODV
(%)
0% 90.62 76.36 79.09
2% 9.89 25.95 78.57
4% 10.54 14.28 79.69
6% 4.84 15.30 80.63
8% 5.00 10.80 80.70
10% 7.03 14.95 80.97
Hình 4.10. Biểu đồ thể hiện tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 15m/s
0
10
20
30
40
50
60
70
80
90
100
0% 2% 4% 6% 8% 10%
Tỷ l
ệ ph
ân p
hát
gói
tin
thà
nh
côn
g (%
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tỷ lệ phân phát gói tin thành công
AODV
IDSAODV
RAODV
71 Bảng 4.11. Độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần và tốc độ 15m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(ms)
IDSAODV
(ms)
RAODV
(ms)
0% 167.83 309.02 181.41
2% 341.19 213.15 174.08
4% 270.61 197.95 152.16
6% 24.18 242.78 153.64
8% 22.14 197.76 149.06
10% 76.29 404.72 189.35
Hình 4.11. Biểu đồ thể hiện độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần
và tốc độ 15m/s
0
50
100
150
200
250
300
350
400
450
0% 2% 4% 6% 8% 10%
Thờ
i gia
n (m
s)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Độ trễ trung bình
AODV
IDSAODV
RAODV
72 Bảng 4.12. Tổng phí với tỷ lệ nút lỗ đen tăng dần và tốc độ 15m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(gói)
IDSAODV
(gói)
RAODV
(gói)
0% 57502 77727 213941
2% 31620 35761 209142
4% 20047 32724 200690
6% 14507 24568 185845
8% 12099 26664 177134
10% 10915 21823 172479
Hình 4.12. Biểu đồ thể hiện tổng phí với tỷ lệ nút lỗ đen
tăng dần và tốc độ 15m/s
0
50000
100000
150000
200000
250000
0% 2% 4% 6% 8% 10%
Tổn
g ph
í (gó
i tin
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tổng phí
AODV
IDSAODV
RAODV
73 * Tốc độ 20m/s: Bảng 4.13. Tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 20m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(%)
IDSAODV
(%)
RAODV
(%)
0% 95.61 90.41 80.42
2% 19.07 34.25 81.52
4% 14.88 25.24 79.20
6% 11.29 20.79 80.32
8% 13.65 21.36 83.52
10% 8.96 18.86 84.29
Hình 4.13. Biểu đồ thể hiện tỷ lệ phân phát gói tin thành công
với tỷ lệ nút lỗ đen tăng dần và tốc độ 20m/s
0
20
40
60
80
100
120
0% 2% 4% 6% 8% 10%
Tỷ l
ệ ph
ân p
hát
gói
tin
thà
nh
côn
g (%
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tỷ lệ phân phát gói tin thành công
AODV
IDSAODV
RAODV
74 Bảng 4.14. Độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần và tốc độ 20m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(ms)
IDSAODV
(ms)
RAODV
(ms)
0% 89.92 90.18 378.84
2% 235.46 193.03 355.77
4% 114.94 158.12 461.40
6% 129.51 140.17 329.31
8% 88.31 79.43 250.90
10% 60.97 40.64 192.10
Hình 4.14. Biểu đồ thể hiện độ trễ trung bình với tỷ lệ nút lỗ đen tăng dần
và tốc độ 20m/s
0
50
100
150
200
250
300
350
400
450
500
0% 2% 4% 6% 8% 10%
Thờ
i gia
n (m
s)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Độ trễ trung bình
AODV
IDSAODV
RAODV
75 Bảng 4.15. Tổng phí với tỷ lệ nút lỗ đen tăng dần và tốc độ 20m/s
Tỷ lệ nút lỗ đen
(%)
AODV
(gói)
IDSAODV
(gói)
RAODV
(gói)
0% 35431 38399 290298
2% 23521 28944 272388
4% 24846 27760 283920
6% 18804 29136 258589
8% 16602 23643 248834
10% 12614 23586 232169
Hình 4.15. Biểu đồ thể hiện tổng phí với tỷ lệ nút lỗ đen
tăng dần và tốc độ 20m/s
4.6. Đánh giá ảnh hưởng của tấn công lỗ đen trong các giao thức định
tuyến AODV, IDSAODV và RAODV Với kết quả cấu hình mô phỏng đã được xây dựng, luận văn đã tiến hành
mô phỏng, phân tích kết quả, vẽ biểu đồ các tham số hiệu suất với 5 kịch bản:
- Kịch bản 1: So sánh hiệu suất của 3 giao thức AODV, IDSAODV và
RAODV với số nút lỗ đen tăng dần và nút mạng đứng yên.
- Kịch bản 2: So sánh hiệu suất của 3 giao thức AODV, IDSAODV và
RAODV với tỷ lệ nút lỗ đen trên tổng số nút mạng tăng dần và tốc độ di chuyển
của nút mạng là 5m/s.
0
50000
100000
150000
200000
250000
300000
350000
0% 2% 4% 6% 8% 10%
Tổn
g ph
í (gó
i tin
)
Tỷ lệ nút lỗ đen tăng dần (%)
Biểu đồ thể hiện Tổng phí
AODV
IDSAODV
RAODV
76 - Kịch bản 3: So sánh hiệu suất của 3 giao thức AODV, IDSAODV và
RAODV với tỷ lệ nút lỗ đen trên tổng số nút mạng tăng dần và tốc độ di chuyển
của nút mạng là 10m/s.
- Kịch bản 4: So sánh hiệu suất của 3 giao thức AODV, IDSAODV và
RAODV với tỷ lệ nút lỗ đen trên tổng số nút mạng tăng dần và tốc độ di chuyển
của nút mạng là 15m/s.
- Kịch bản 5: So sánh hiệu suất của 3 giao thức AODV, IDSAODV và
RAODV với tỷ lệ nút lỗ đen trên tổng số nút mạng tăng dần và tốc độ di chuyển
của nút mạng là 20m/s.
Khi trong mạng chưa xuất hiện nút tấn công lỗ đen:
Với giao thức AODV, tỷ lệ phân phát gói tin thành công luôn đạt xấp xỉ
95% đối với cả 5 kịch bản. Độ trễ trung bình dao động thấp nhất là 41.43ms
(hình 4.5) khi tốc độ di chuyển 5m/s và cao nhất là 167.83ms (hình 4.11) khi tốc
độ di chuyển 15m/s.
Với giao thức IDSAODV, tỷ lệ phân phát gói tin thành công không có
nhiều khác biệt so với giao thức AODV, luôn đạt tỷ lệ rất cao xấp xỉ 90%, cá
biệt khi tốc độ di chuyển mạng thay đổi 15m/s ở hình 4.10, tỷ lệ chỉ đạt 76.36%.
Độ trễ trung bình cũng tương tự như giao thức AODV, thấp nhất là 50.86ms
(hình 4.5) khi tốc độ di chuyển 5m/s và cao nhất là 309.02ms (hình 4.11) khi tốc
độ di chuyển 15m/s.
Với giao thức RAODV, tỷ lệ phân phát gói tin thành công đạt khoảng
80%. Độ trễ trung bình cũng lớn hơn so với 2 giao thức trên, thấp nhất là
147.65ms và cao nhất là 426.63ms.
Tổng phí của giao thức RAODV cao hơn hẳn so với 2 giao thức AODV
và IDSAODV, do RAODV quảng bá gói tin R-RREQ để tìm con đường đến nút
nguồn thay vì truyền unicast giống AODV và IDSAODV.
Như vậy, khi không xuất hiện tấn công lỗ đen trong mạng, hiệu suất của
giao thức RAODV thấp hơn một chút so với 2 giao thức AODV và IDSAODV.
Khi trong mạng xuất hiện tấn công lỗ đen:
Với giao thức AODV, tỷ lệ phân phát gói tin thành công giảm mạnh khi
trong mạng xuất hiện nút lỗ đen. Với 1 nút lỗ đen, tỷ lệ phân phát gói tin thành
công chỉ đạt từ 8.76% - 19.07% tùy theo tốc độ di chuyển của nút mạng. Khi
tăng dần số lượng nút lỗ đen trong mạng, tỷ lệ phân phát thành công giảm xuống
dưới 10%, đặc biệt khi có 5 nút lỗ đen xuất hiện tỷ lệ phân phát thành công là
0% khi nút mạng đứng yên (hình 4.1). Độ trễ trung bình không thay đổi nhiều so
với khi mạng không có tấn công lỗ đen, dao động ở mức 41.43ms - 167.83ms.
77 Với giao thức IDSAODV, khi mạng xuất hiện 1 nút lỗ đen, tỷ lệ phân
phát gói tin thành công hiệu quả hơn so với giao thức AODV, từ 25.95% -
35.10% tùy theo tốc độ di chuyển của nút mạng. Khi số lượng nút lỗ đen tăng
dần, tỷ lệ phân phát gói tin thành công cũng giảm dần, khi tốc độ di chuyển của
nút mạng thay đổi, thấp nhất là 2.79% (hình 4.1) và cao nhất là 40.36% (hình
4.1). Độ trễ trung bình có gia tăng khi số lượng nút lỗ đen tăng dần, cao nhất là
404.72ms (hình 4.11) với tốc độ di chuyển nút mạng 15m/s.
Với giao thức RAODV, tỷ lệ phân phát gói tin thành công rất cao, luôn
giữ ở mức ổn định xấp xỉ 80% kể cả khi số lượng nút lỗ đen trong mạng tăng
dần, và ở các tốc độ di chuyển khác nhau. Tuy nhiên, độ trễ trung bình không
thay đổi nhiều so với khi mạng không có tấn công lỗ đen, độ trễ tương đối cao,
từ 142.82ms (hình 4.8) lên đến 461.40ms (hình 4.14).
Tổng phí của giao thức RAODV vẫn không thay đổi so với khi không có
nút lỗ đen, cao hơn rất nhiều so với 2 giao thức AODV và IDSAODV.
Như vậy, hiệu suất của giao thức RAODV cao hơn hẳn so với giao thức
IDSAODV khi có tấn công lỗ đen xảy ra trong mạng.
78 KẾT LUẬN
1. Các kết quả của luận văn
Luận văn đã tập trung nghiên cứu về các thách thức, mối đe dọa an ninh,
ảnh hưởng của tấn công lỗ đen trong giao thức AODV, trình bày một số giải
pháp phòng chống tấn công lỗ đen là IDSAODV và RAODV. Đồng thời luận
văn cũng đã sử dụng công cụ mô phỏng NS-2, thực hiện mô phỏng quá trình tấn
công lỗ đen và giải pháp phòng chống làm giảm ảnh hưởng của tấn công lỗ đen
thông qua một số kịch bản khác nhau. Kết quả mô phỏng cho thấy các kết luận
như sau:
- Trong điều kiện bình thường, khi các nút mạng di chuyển với tốc độ từ 0
- 20m/s, giao thức AODV và IDSAODV đạt hiệu suất rất cao, giao thức
RAODV thấp hơn một chút.
- Khi mạng xuất hiện tấn công lỗ đen và số lượng nút lỗ đen tăng dần,
hiệu suất của giao thức AODV giảm rõ rệt gây ra sự mất mát gói tin lớn. Giao
thức IDSAODV tuy có làm giảm ảnh hưởng xấu từ nút lỗ đen, nhưng hiệu quả
chưa cao, ưu điểm của giải pháp này là không phát sinh gói tin mới, không gây
ra trễ trong mạng. Giao thức RAODV đạt hiệu suất cao và ổn định hơn hẳn giải
pháp trước, tuy nhiên nhược điểm của giải pháp này là gây ra trễ trong mạng,
tổng phí cao hơn nhiều lần so với 2 giao thức AODV và IDSAODV. 2. Hướng phát triển của đề tài
Do hạn chế về mặt thời gian nên luận văn mới dừng lại ở mức độ nghiên
cứu giao thức điển hình AODV và các giải pháp phòng chống tấn công lỗ đen
trên giao thức này. Trong thời gian tới tác giả sẽ tiếp tục nghiên cứu mô phỏng,
đánh giá kết quả của giải pháp với nhiều kiểu tấn công khác nhau trên các giao
thức DSDV, DSR, OLSR
Ngoài ra còn có một số vấn đề khác của các giao thức cần được xem xét
như bảo mật kết hợp đảm bảo chất lượng dịch vụ.
79 TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Nguyễn Đình Việt, “Bài giảng đánh giá hiệu năng mạng máy tính”, 2010
Tiếng Anh 2. C.Perkins,“(RFC) Request for Comments 3561”, Category: Experimental,
Network, Working Group, July 2003
3. Dr.Satya Prakash Singh, Ramveer Singh (2012), “Security challenges in
mobile adhoc network”, International Journal of Applied Engineering
Research, Volume 7 (11)
4. S. Mehla, B. Gupta, P. Nagrath, “Analyzing Security of Authenticated
Routing Protocol (ARAN)”, International Journal of Computer Science and
Engineering (IJCSE), Vol. 02, No. 03, 2010, 664-668, 2010
5. Manel Guerrero Zapata (2002), “Secure Ad hoc On-Demand Distance
Vector Routing”, ACM Mobile Computing and Communications Review
(MC2R), 6(3):106-107, July 2002
6. C. Kim, E. Talipov, and B. Ahn, “A Reverse AODV Routing Protocol in
Ad Hoc Mobile Networks”, The International Conference on Emerging
Directions in Embedded and Ubiquitous Computing (EUC’06), Seoul, 1-4
August 2006, pp.522-531. Springer, 2006
7. S. Dokurer, “Simulation of Black hole attack in wireless ad-hoc networks”
Thesis Master in Computer Engineering Atihm University, September
2006
8. F.J.Ros and P.M.Ruiz (2004), “Implementing a New Manet Unicast
Routing Protocol in NS-2”, December, 2004
9. C. P. Vandana and A. F. S. Devaraj, “MLDW - A MultiLayered Detection
mechanism for Wormhole attacks in AODV based MANET”, in
International Journal of Security, Privacy and Trust Management
(IJSPTM) vol. 2, no. 3, (2013) June
10. H. Deng, W. Li and D. P. Agrawal (2002), “Routing Security in Wireless
Ad Hoc Networks”,University of Cincinnati, IEEE Communication
Magazine, October 2002
11. The VINT Project, “The NS manual”, A Collaboration between
researches at UC Berkeley, LBL, USC/ISI, and Xerox PARC, March
14,2008
12. https://en.wikipedia.org/wiki/Open_Shortest_Path_First
80 13. Elizabeth M.Royer, C-K Toh (1999), “A review of current routing
protocol for Ad hoc Mobile Wireless Networks”, IEEE Personal
Communications, 6(2):46–55, April 1999
14. Charles E. Perkins, Pravin Bhagwat, “Highly Dynamic Destination-
Sequenced Distance Vector Routing (DSDV) for Mobile Computers”,
Comp Commun Rev, Oct. 1994
15. David B. Johnson, David A. Maltz, Josh Broch, “DSR: The Dynamic
Source Routing Protocol for Multi-hop Wireless Ad Hoc Networks”, t.
Imielinski and H.Korth , Eds Kluwer, 1996
16. Jathe S.R., Dakhane D.M. (2012), “A Review Paper on Black Hole Attack
and Comparison of Different Black Hole Attack Tech-niques”,
International Journal of Cryptography and Security, ISSN: 2249-7013 &
E-ISSN: 2249-7021, Volume 2, Issue 1, pp.-22-26
17. Kimaya Sanzgiri, Bridget Dahill, Brian N. Levine, and Elizabeth M.
Belding-Royer, “A Secure Routing Protocol for Ad Hoc Networks”.
Proceedings of 10th IEEE International Conference on Network Protocols
(ICNP’02), Paris, France, November 2002, pp. 78-90
18. Yi-an Huang and Wenke Lee, “Attack analysis and Detection for Ad-hoc
Routing protocols”. Proceedings of the 7th International Symposium on
Recent Advances in Intrusion Detection (RAID'04), French Riviera,
France. September 2004
19. Mishra Amitabh, Nadkarni Ketan M., Ilyas Mohammad, “Chapter 30:
Security in wireless ad-hoc networks, the handbook of Ad hoc wireless
network”, CRC PRESS Publisher, 2003
20. C.Siva Ram Murthy, B. S. Manoj, “Ad hoc wireless networks:
Architecture and Protocols”. Prentice Hall Publishers, May 2004, ISBN
013147023X
21. William Stallings, “Network Security essentials: Application and
Standards”, Pearson Education , Inc 2003, ISBN 0130351288
22. Preeti Sachan, Pabitra Mohan Khilar (2011), “Securing AODV routing
protocol in MANET based cryptographic authentication”, International
Journal of Network Security & Its Applications, Volume 3 (5)
81 PHỤ LỤC
Phụ lục 1 - Kịch bản mô phỏng
# Define options
set val(chan) Channel/WirelessChannel ;#Channel Type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 150 ;# max packet in ifq
set val(nn) 50 ;# total number of mobilenodes
set val(nnaodv) 49 ;# number of AODV mobilenodes
set val(rp) AODV ;# routing protocol
set val(x) 1000 ;# X dimension of topography
set val(y) 1000 ;# Y dimension of topography
set val(cstop) 600 ;# time of connections end
set val(stop) 600 ;# time of simulation end
set val(cp) "/kichban-n50-t600-1000-1000" ;#Connection Pattern
Connections
set val(cc) "/cbr" ;#CBR Connections
set ns_ [new Simulator]
$ns_ use-newtrace
set tracefd [open aodv1.tr w]
$ns_ trace-all $tracefd
set namtrace [open aodv1.nam w]
$ns_ namtrace-all-wireless $namtrace $val(x) $val(y)
# set up topography object
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
# Create God
create-god $val(nn)
# Create channel #1 and #2
set chan_1_ [new $val(chan)]
set chan_2_ [new $val(chan)]
set god_ [God instance]
# configure node, please note the change below.
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-channel $chan_1_
# Creating mobile AODV nodes for simulation
puts "Creating nodes..."
for {set i 0} {$i < $val(nnaodv)} {incr i} {
82
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;#disable random motion
}
# Creating Black Hole nodes for simulation
$ns_ node-config -adhocRouting blackholeAODV
for {set i $val(nnaodv)} {$i < $val(nn)} {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;#disable random motion
$ns_ at 0.01 "$node_($i) label \"blackhole node\""
}
puts "Loading random connection pattern..."
source $val(cp)
# CBR Connections generated by cbrgen
source $val(cc)
# Define initial node position
for {set i 0} {$i < $val(nn) } {incr i} {
$ns_ initial_node_pos $node_($i) 30
}
# CBR connections stops
for {set i 0} {$i < 9 } {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 $val(stop).000000001 "$node_($i) reset";
}
# Ending nam and simulation
$ns_ at $val(stop) "finish"
$ns_ at $val(stop).0 "$ns_ trace-annotate \"Simulation has ended\""
$ns_ at $val(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt"
proc finish {} {
global ns_ tracefd namtrace
$ns_ flush-trace
close $tracefd
close $namtrace
# exec nam aodv1.nam &
exit 0
}
puts "Starting Simulation..."
$ns_ run
83 Phụ Lục 2 – Tính toán các tham số hiệu năng
# ============================= ketqua.awk ========================
BEGIN {
sends=0;
recvs=0;
droppedPackets=0;
highest_packet_id=0;
sum=0;
recvnum=0;
routing_packets=0;
}
{
time = $3;
packet_id = $41;
#============= TINH TY LE PHAN PHOI GOI TIN THANH CONG ================
if (( $1 == "s") && ( $35 == "cbr" ) && ( $19=="AGT" )) { sends++; }
if (( $1 == "r") && ( $35 == "cbr" ) && ( $19=="AGT" )) { recvs++; }
#============= TINH DO TRE TRUNG BINH =================================
if ( start_time[packet_id] == 0 ) start_time[packet_id] = time;
if (( $1 == "r") && ( $35 == "cbr" ) && ( $19=="AGT" )) { end_time[packet_id] =
time; }
else { end_time[packet_id] = -1; }
#============= TINH TONG PHI ==========================================
if (($1 == "s" || $1 == "f") && $19 == "RTR" && $35 =="AODV") routing_packets++;
#============= SO GOI TIN BI MAT ======================================
if (( $1 == "d" ) && ( $35 == "cbr" ) && ( $3 > 0 ))
{
droppedPackets=droppedPackets+1;
}
#find the number of packets in the simulation
if (packet_id > highest_packet_id)
highest_packet_id = packet_id;
}
END {
for ( i in end_time )
{
start = start_time[i];
end = end_time[i];
packet_duration = end - start;
if ( packet_duration > 0 ) { sum += packet_duration; recvnum++; }
}
delay = sum/recvnum;
PDR = (recvs/sends)*100;
printf("So goi tin phat = %.2f\n",sends);
printf("So goi tin nhan = %.2f\n",recvs);
printf("Ti le phan phat thanh cong = %.2f\n",PDR);
printf("Do tre trung binh (ms)= %.2f\n",delay*1000);
printf("So goi tin bi mat (packets) = %d\n",droppedPackets);
printf("Tong phi = %d\n",routing_packets);
}
Các file đính kèm theo tài liệu này:
- luan_van_danh_gia_ve_an_toan_giao_thuc_dinh_tuyen_trong_mang.pdf