Thực thi hàm OF dựa trên ETX và Energy trong hệ điều hành Contiki

Một phần của tài liệu Nghiên cứu và thử nghiệm các phương pháp phát hiện và ngăn chặn tấn công mạng (Trang 45 - 52)

Contiki

Trong Contiki, các mô-đun lớp mạng n m trong <Thư mục Contiki >\core\net. Việc thực hiện các RPL được mô hình hóa trong thư mục <Thư mục Contiki >\core\net\rpl.

Mỗi một file code C với sẽ đặc tả một ph n cụ thể của quá trình định tuyến: - rpl.c: khởi tạo của quá trình định tuyến, quản l các tuyến đường; - rpl-dag.c: tất cả các cơ chế c n thiết để xây dựng và duy trì một

45

- rpl-icmpv6.c: đ u vào và đ u ra của bản tin ICMPv6 (DIO, DAO, DIS, DAO ACK)

- rpl-timers.c: Bộ đình thời của bản tin DIO và DAO - rpl-of-etx-energy.c: thực hiện OF-ETX-ENERGY;

- rpl-conf.h: file chứa khai báo tĩnh của các h ng số được s dụng trong cấu hình RPL. Những giá trị này có thể được s a đổi tùy thuộc vào ứng dụng, kích thước của mạng và các đặc điểm khác có liên quan; - rpl.h: file chứa khai báo tĩnh các giá trị phụ thuộc vào các tiêu chu n

của giao thức RPL và các dự thảo liên quan

Quảng bá n ng lƣợng tiêu thụ của m t node

Như đã trình bày trong ph n 1.3 một nút sẽ g i một bản tin DIO khi: - Bộ định thời bản tin DIO của nó hết hạn

- Nó nhận được một bản tin DIO hữu ích (từ một nút có rank thấp hơn, trong đó giới thiệu những thay đổi như là rank hoặc cha mẹ ưa thích - Phát hiện có một mâu thuẫn (nhận được bản tin DIO từ một nút có rank

cao hơn, phát hiện vòng lặp..)

Trong quá trình chạy một node không c n thiết phải thường xuyên tính toán lượng năng lượng nó đã tiêu thụ mà ch c n tính toán khi nó chu n bị g i một bản tin DIO mới, để quảng bá ước lượng năng lượng của nó một cách chính xác nhất.

Để thực hiện một dự toán năng lượng của một node hệ diều hành Contiki cung cấp một mô-đun Energest để thực hiện việc đó. Mô-đun này liên tục cập nhật tổng thời gian hoạt động của một node trong bốn trạng thái hoạt động

46

của nó là LISTEN, TR NSMIT, LPM, CPU. Các giá trị trả về dưới dạng số tick của bộ vi x l . Từ tốc độ của bộ vi x l chúng ta dễ dàng quy đổi thời gian hoạt động của mỗi trạng thái về đơn vị giây sau đó có thể tính được tổng năng lượng tiêu thụ của một node dựa vào công thức được trình bày trong mục 3.1.1 Với một node cảm biển s dụng nền tảng Zolertia Z1 mà chúng ta dùng để mô phỏng trong ph n tiếp theo. Nó có tốc độ của bộ vi x l là 8MHz/1024 = 7812.5 ticks/second và có mức điện năng tiêu thụ cho từng trạng thái như bảng sau:

State Current [mA]

(Z1 spreadsheet) Power [mW] (voltage = 3V) ENERGEST_TYPE_CPU 1.8 5.4 ENERGEST_TYPE_LPM 0.545 1.635 ENERGEST_TYPE_TRANSMIT 17.7 53.1 ENERGEST_TYPE_LISTEN 20 60

Bảng 4: Mức tiêu thụ điện năng cho từng trạng thái [2]

Như đã nêu trong tài liệu đặc tả [13 , Z1 có thể được cấp năng lượng b ng nhiều cách, tùy thuộc vào các ứng dụng. Tuy nhiên, thông thường nhất Z1 s dụng pin để cung cấp năng lượng cho mình. Tùy thuộc vào loại pin mà tổng điện năng của nó sẽ n m trong khoảng [300, 3000] mAh.

Biết tổng điện năng và điện áp s dụng, chúng ta có thể dễ dàng để tính toán được tổng năng lượng ET của một node và từ đó tính được ước lượng năng lượng đã tiêu thụ của một node tại một thời gian nhất đinh. Thách thức khi thực hiện OF này là việc thực hiện tính toán mức năng lượng đã tiêu thụ

47

của nó. Bởi vì đặc trưng Contiki là nó đã không thể làm việc với các kiểu số thực và số nguyên dài bởi sự hạn chế của bộ nhớ. Vì vậy tất cả các giá trị c n thiết sẽ được nhân với 104

để ta ch c n làm việc với các giá trị số nguyên (uint32_t). Ngoài ra còn có một vấn đề nữa c n phải giải quyết là tổng điện năng của một node là khá lớn trong khi tốc độ xả pin khá chậm nên trong mô phỏng tôi sẽ ch thiết lập điện năng của một node z1 s dụng pin là 1m h để chúng ta có thể mô phỏng được một node mạng từ khi bắt đ u hoạt động cho đến khi bị đánh sập do cạn kiệt năng lượng trong một thời gian hợp l .

Hàm getResidualEnergy() sẽ được gọi mỗi khi có một DIO mới được g i đi. Nó sẽ ch thiết lập giá trị của trường E_E trong buffer của bản tin DIO đối với các B-node như sau:

Hình 6: Thiết lập giá trị của trường E_E trong buffer của bản tin DIO

Hình 7: Hàm getResidualEnergy()

Biên dịch điều kiện của hàm OF ETX và Energy sang mã nguồn trong hệ điều hành Contiki

48

Một khi các thông tin số liệu định tuyến c n thiết được thiết lập trong bản tin DIO. Công việc của chúng ta là biên dịch những điều kiện được mô tả trong ph n 3.1.1 sang mã nguồn trong Contiki. Điều này được thực hiện b ng cách tạo ra một tập tin mới là rpl-etx-energy.c và nó sẽ chịu trách nhiệm thực hiện các tác vụ sau:

- Tính toán chi phí của các con đường khi đi qua một node cha mẹ nhất định.

Hình 8: Hàm tính path metric

49

Hình 9: Hàm lựa chọn best parent

50

Hình 10: Hàm tính rank

51

Hình 11: Hàm cập nhật metric

Một phần của tài liệu Nghiên cứu và thử nghiệm các phương pháp phát hiện và ngăn chặn tấn công mạng (Trang 45 - 52)

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

(71 trang)