HỆ ĐIỀU HÀNH CONTIK
3.2.1 Thủ tục truyền thông uIP
TCP/IP là giao thức cơ bản sử dụng cho những mục đích truyền tải các trang Web, gửi-nhận email, gửi file và những mạng peer-to-peer thông qua mạng Internet. Đối với các hệ thống nhúng sử dụng được TCP/IP sẽ có khả năng kết nếỉ những hệ thống trực tiếp đến một mạng nội bộ, hoặc thậm chí là một mạng toàn cầu.Những thiết bị nhúng có khả năng đáp ứng được đầy đủ những đặc tính của TCP/EP sẽ là những thiết bị có tính ưu việt, có khả năng giao tiếp một cách đầy đủ với tất cả các thiết bị khác trong mạng.Tuy nhiên, việc triển khai giao thức TCP/IP truyền thống đòi hỏi quá nhiều tài nguyên gồm cả dung lượng code và bộ nhớ sử đụng, không thể được đáp ứng trong các hệ thống nhủng 8 hoặc 16 bit.
Xuất phát từ ý tưởng đó, thủ tục truyền thông uIP (hình 3.4) được thiết kế với mục tiêu tổỉ ưu hóa các đặc tính cần thiết cho một thủ tục truyền thông TCP/IP đầy đủ. uIP chỉ có thể hoạt động vói một giao diện mạng duy nhất và bao gồm các giao thức: IP, ICMP, UDP, TCP. uIP được lập trình bằng ngôn ngữ C bởi A.Dunkels - một thành viên trong tổ chức nghiên cửu và phát triển Contiki.
Network
Hình 3.4 Thủ tục truyền thông uIP.
3.3.2 Thủ tục truyền thông Rỉme
Thủ tục truyền thông Rỉme cung cấp một cấu trúc phân lớp của giao thức mạng cảm biến không dây, từ thủ tục phát quảng bá đơn giản tới giao thức định tuyến phức tạp ưong toàn mạng.Rime triển khai một giao thức phức tạp thành nhiều module, mỗi modulecó thể gồm những module nhỏ lẻ đơn giản hơn. Hình
3.5 trình bày toàn thể tổ chức của giao thức Rỉme.
Transport TCP UDP
IPv6 IPv4 ICMP
Datalink
Physical
SICSLowpan
IEEE 802.15.4 MAC
Sau đây là mô tả ngắn gọn về các module cơ bản của Rime:
❖ Abcigửi quảng bá không có địa chỉ nút gửi, nó chỉ gửi một gói tin qua các trình điều khiểnvô tuyển và nhận tất cả các gói tin từ các trình điều khiển vô tuyến khác vàchấp nhận chúng để đến các lớp trên.
❖ Broadcast: gửỉquảng bá có địa chỉ nút gửi đề gửi đi các gói dữ liệu và chuyển nó vào module abc.
❖ Unicast:phương thúc gửi có địa chỉ nút nhận.Module này gắn thêm địa chỉ đích cho các gói tin được truyền cho khối phát sóng.ở bên nhận, nếu địa chỉ đích của gói tin không phù hợp với địa chỉ của nút, gói tin sẽ bị loại.
❖ Stunicast: là các unicast “cứng đầu”, khi được hỏi để gửi một gói tin đến một nút, nó sẽ gửi nó nhiều lần YỚi một khoảng thời gian nhất định cho đến khi yêu cầu dừng lại.
❖ Runicast:phương thức unicast tin cậy. Theo phưomg thức này, nút gửi sẽ gửi một gói tin bằng cách sử dụng các stunicast và chờ một gói tin xác nhận. Khi nhận được, nút gửi dừng việc truyền gói tin. Một số lượng tối đa lần tmyền các gói tin phải được xác định, để tránh gửi vô hạn.
❖ Polite và ipolỉte: hai module tưomg đưomg nhau, trước khi một nút định
gửi gói tin đi trong một khung thời gian xác định, nút gửi sẽ chờ một khoảng bằng nửa khung thời gian đó, kiểm ừa xem có nhận được gói tin nào trùng với gói tin định gửi không? Nếu nhận được gói tin trùng thì nút gửi sẽ hủy gói tin đinh gửi, nếu không thì gói tin dự định gửi sẽ được gửi đi.Điều này rấthữu ích cho các kỹ thuật flooding để tránh việc truyền lại không cần thiết.
❖ Multihop: module này đòi hỏi chức năng của bảng định tuyến, khi nút
dự định gửi một gói tin, nút gửi yêu cầu bảng định tuyến cho biết chặng tiếp theo là nút nào và gửi gói tin đến nút đó bằng truyền thông unicast. Khi nút nhận được một gói tin, nếu nút đó là đích, gói tin sẽ được truyền lên lớp trên, nếu không nút sẽ yêu cầu thông tin về chặng tiếp theo từbảng định tuyến và chuyển tiếp các gói tin đến chặng đó.
Khi gói tin được gửi đi, các ứng dụng lưu gói tin vào bộ nhớ đệm và gọi các hàm xử lý liên quan để gửi gói đi. Khi nhận được một gói tin, sẽ lưu gói nhận được trong bộ đệm gói, đồng thời thủ tục truyền thông Rime gọi các hàm “callback” tưomg ứng để xử lý gói đầu vào.
Hình 3.6 Quả trình trao đổi dữ liệu trong Contỉki.