Hình 3.9 minh họa mô hình cấu trúc thực thi giao thức RPL trên hệ điều hành Contiki.
Lớp ứng dụng
Lớp giao vận (TCP/UDP)
Ngăn xếp truyền thông uIPv6
Lớp MAC, PHY theo chuẩn IEEE
802.15.4
ContikiRPL
ICMPv6 (DIO, DIS, DAO)
Tìm kiếm các nút lân cận
Thiết lập tuyến đường
Các gói tin dữ liệu và điều khiển
Khối ước lượng chất lượng liên kết
Thông tin phản hồi về chất lượng liên kết
ETX
Hình 3.9: Thực thi giao thức RPL trên hệ điều hành Contiki [12].
Ngăn xếp truyền thông uIPv6 gọi đến module ContikiRPL khi nhận được bản tin ICMPv6 (DIO, DIS, DAO) hoặc khi cần tìm kiếm các nút lân cận. Module ContikiRPL gọi đến ngăn xếp truyền thông uIPv6 để thiết lập tuyến đường trong các bảng định tuyến. Module ContikiRPL sử dụng thước đo định tuyến chất lượng
liên kết ETX (Expected Transmission) để thiết lập truyến đường trong mạng. Thông tin phản hồi về chất lượng liên kết được thực hiện bời khối ước lượng chất lượng liên kết (Link Estimator).
Hình 3.10 minh họa cấu trúc các thành phần trong module ContikiRPL.
ContikiRPL
Quản lý cấu trúc liên kết DAG
Quản lý các bản tin điều khiển
Quản lý các
nút lân cận Hàm mục tiêu Quản lý các
bộ định thời
Hình 3.10: Cấu trúc các thành phần trong module Contiki RPL. Contiki RPL bao gồm các thành phần chính:
Quản lý cấu trúc liên kết DAG: Khối này quản lý quá trình tham gia, xây dựng, duy trì DAG. Khối này cung cấp những phương thức quản lý DAG (khởi tạo DAG, giải phóng DAG, lấy thông tin về DAG), xử lý thông tin khi nhận bản tin DIO, xử lý thông tin khi có sự kiện cập nhật rank của nút cha, không xác định được nút cha phù hợp, thêm, tìm kiếm, lựa chọn nút cha, quản lý (thêm, xóa) các tuyến đường trong bảng định tuyến.
Quản lý các bản tin điều khiển: Các bản tin điều khiển RPL – ICMP gồm 3 loại bản tin chính DIS, DIO, DAO. Khối này quản lý các chức năng kiểm tra, xử lý các bản tin ICMP đầu vào, tạo và gửi các bản tin ICMP đầu ra.
Quản lý các bộ định thời: Bao gồm 4 bộ định thời chính, được xây dựng dựa trên những bộ định thời sẵn có của Contiki.
+ Periodic Timer: Có chức năng định thời kiểm tra và làm mới bảng định tuyến, xóa những node trong bảng định tuyến có lifetime bằng 0.
+ DIS Timer: Quản lý gửi các bản tin DIS. Khi hoạt động định thời diễn ra, DIS timer sẽ gọi hàm dis_output() để tạo một bản tin DIS và gửi vào mạng. + DIO Timer: Định thời gửi bản tin DIO vào mạng, nhằm xây dựng và duy trì DAG trong mạng, xác định mối quan hệ giữa các node. Khi bộ định thời
hết hạn sẽ gọi hàm dio_output() để tạo và gửi DIO tới những node khác trong mạng.
+ DAO Timer: Định thời tạo và gửi bản tin DAO sau khi node đã tham gia vào một DAG trong mạng.
Quản lý thông tin về các nút lân cận: Thông tin về số lần truyền của gói tin gửi, số lần truyền của gói tin nhận, địa chỉ của nút lân cận.
Hàm mục tiêu: Thực hiện chức năng tính toán rank, xác định nút cha tốt nhất.