Cài đặt giao thức RAODV làm giảm ảnh hưởng tấn công lỗ đen

Một phần của tài liệu (LUẬN văn THẠC sĩ) đánh giá về an toàn giao thức định tuyến trong mạng manet phonesavanh phongsenpheng (Trang 56)

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.

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

Với RAODV sẽ có hàm recvReverse() để nhận và xử lý R-RREQ. Vì RRREQđượ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

if (rq->rq_src_seqno > rt0->rt_seqno ) { rt0->pc_insert(ih->saddr());

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); } 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) {

Tiếp đến, đồng thời kiểm tra tuyến đường đến đã phải là tureen đí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.

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.

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); } if (rp->rp_dst != index) {

if ((rt0->rt_seqno < rp->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; } } }

// 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;

48

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.

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

// 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;

//Xác định là route mới hơn hay không từ chính node trước đó

if ( (rt0->rt_seqno < rp->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 }

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)));

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

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

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;

50

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

3.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 tureen 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

ih->daddr() = IP_BROADCAST; // IP Broadcast ih->sport() = RT_PORT;

ih->dport() = RT_PORT;

ih->ttl_ = NETWORK_DIAMETER;

Scheduler::instance().schedule(target_, p, 0); }

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ạn

-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 <num of nodes> -p <pausetime> -s <maxspeed> -t <simtime>

-x <maxx> -y <maxy>><outdir>/<scenario-file>/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

52

./setdest –n 50 –p 10 –s 15.0 –t 600 –x 1000 – y 1000> kichban4-n50-t600- s15-1000-1000 ./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] ><outdir>/<scenario-file>

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:

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:

# 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_

for {set i 0} {$i < $val(nnaodv)} {incr i} { set node_($i) [$ns_ 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 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 Số kết nối

Kích thước gói tin 512 bytes

Tiến hành mô 4 gói/s

3.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.

}

# 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\""

54

Để đá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.

- “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àotrong mô hình OSI (trường thứ 19trong tệp tr bao gồm cácgiá 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:

* Tốc độ 0m/s:

Bảng 3.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 (%) R AODV (%) 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 3.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

56

Bảng 3.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) R AODV (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

Bảng 3.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) R AODV (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

58

* Tốc độ 5m/s:

Bảng 3.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 (%) R AODV (%) 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 3.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

Bảng 3.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) R AODV (ms) 0% 41.43 50.86 426.03 2% 30.28 100.2 255.74 4% 218.07 94.43 332.59 6% 28.86 133.9 148.58 8% 20.71 197.68 210.36 10% 15.3 82.16 188.87

60

Bảng 3.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

Một phần của tài liệu (LUẬN văn THẠC sĩ) đánh giá về an toàn giao thức định tuyến trong mạng manet phonesavanh phongsenpheng (Trang 56)

Tải bản đầy đủ (PDF)

(89 trang)