Các node ước lượng thời gian khứ hồi để phân biệt giữa báo nhận báo phát hiện mất gói tin và báo nhận dữ liệu mới.
c, Báo nhận lựa chọn
DTC sử dụng lựa chọn TCP SACK để vừa phát hiện mất gói tin vừa đóng vai trò như cơ chế báo hiệu giữa các node DTC. DTC thông tin cho các node khác về các segment bị khóa trong bộ nhớ của chúng. Khi nhận một ACK TCP với số báo nhận nhỏ hơn số thứ tự của segment lưu trong bộ nhớ, node sẽ thực hiện các hành động sau:
- Nếu số thứ tự (cached) của segment lưu trữ của một node không có trong khối
SACK, node sẽ truyền lại segment lưu trữ. Trước khi truyền ACK TCP về phía bộ
gửi, node thêm cached vào khối SACK. Hơn nữa, cached đầy các khe, ví dụ tất cả
các segment với số thứ tự lớn nhất trong khối SACK đã được báo nhận, node có thể xóa báo nhận.
- Node xóa bộ nhớ nếu số thứ tự của segment có trong khối SACK. Điều này có nghĩa là bộ nhận đã nhận được segment tương ứng hoặc segment đó được lưu trữ và khóa bởi một node gần bộ nhận hơn.
Thậm chí nếu bộ gửi không hỗ trợ SACK, trạm cơ sở hoặc node đầu tiên trong mạng cảm biến có thể thêm hoặc xóa lựa chọn SACK để cho phép báo hiệu SACK cho DTC.
d, Tóm tắt thuật toán
Thuật toán chúng ta đang sử dụng hiện tại cho các node DTC như sau: 1. Nhận gói dữ liệu với số thứ tự seqNr:
Nếu bộ nhớ không bị khóa lưu trữ với tần suất nhất định
Nếu bộ nhớ rỗng lưu trữ
chuyển tiếp trừ khi node đã truyền lại có cùng seqNr trong khoảng thời gian giới
hạn.
đặt timeout ACK mức liên kết
2. Hết thời gian chờ ACK mức liên kết: khóa bộ nhớ
đặt bộ định thời truyền lại
3. Nhận ACK với số báo nhận ackSeq và số thứ tự cached trong bộ nhớ:
cập nhật RTT nội bộ
Nếu ackSeq > cached
Tắt bộ định thời đếm lại Xóa bộ nhớ
3.2 Nếu ackSeq = cached
Nếu thời gian từ lần truyền cuối cùng > RTT nội bộ * hệ số Truyền lại segment được lưu trữ
3.3 Nếu ackSeq < cached đặt lựa chọn SACK Xóa bộ nhớ nếu cached có trong khối SACK Nếu cached không có trong khối SACK
Truyền lại
Thêm seqNr được lưu trữ vào khối SACK
Nếu các khe đầy Bỏ ACK
3.4 Nếu ackSeq < cached và không có lựa chọn SACK và bộ nhớ bị khóa Thêm lựa chọn SACK với seqNr được lưu trữ như khối SACK
4. Trong thời gian timeout truyền lại nội bộ: Truyền lại segment lưu trữ
Đặt bộ định thời truyền lại
Khi một node trung gian nhận được một segment và bộ nhớ không bị khóa, node lưu trữ segment chỉ với xác suất 50%. Điều này dẫn đến sự phân bố các segment được lưu trữ tốt hơn so với lưu trữ mọi segment mới khi bộ nhớ không bị khóa.
DTC xem thời gian timeout mức liên kết như một chỉ báo rõ về segment dữ liệu đã bị mất. Khi hết thời gian chờ báo nhận mức liên kết, DTC khóa bộ nhớ và đặt bộ định thời truyền lại cho việc truyền lại nội bộ các segment lưu trữ.
Hình 2.13: DTC - SACK
Hình 2.13 là ví dụ trong hình 2.11 sử dụng SACK. Khi nhận được segment 3, bộ nhận gửi báo nhận ACK 1 với khối SACK cho segment 3. Khi nhận được báo nhận này, node 7 truyền lại segment 2. Theo hoạt động 3.3, node 7 thêm khối SACK cho segment 2 và forward báo nhận. Cuối cùng node 5 nhận báo nhận này và truyền lại segment 1. Khi tất cả các khe đầy, node 5 loại bỏ báo nhận. Khi đã nhận được segment 1 và segment 2, bộ nhận truyền ACK 4.
Việc sử dụng tùy chọn SACK cho thấy bộ nhận đã nhận segment không theo thứ tự hoặc node gần với bộ nhận hơn đã lưu trữ segment này trong bộ nhớ của nó. Nếu bộ nhận và bộ gửi không hỗ trợ cơ chế SACK, các node DTC có thể thêm vào tùy chọn này.
2.3 Kết luận
Chương này tập trung đã xử lý các vấn đề cụ thể để TCP/IP trở thành một giao thức có thể hoạt động trong mạng cảm biến không dây với các cảm biến có nguồn tài nguyên hạn chế. Một số vấn đề nảy sinh khi sử dụng TCP/IP cho mạng cảm biến không dây: gán địa chỉ IP, chi phí tiêu đề TCP/IP, định tuyến địa chỉ trung tâm, giới hạn node và hiệu quả về năng lượng và hiệu suất TCP. Các giải pháp để giải quyết các vấn đề này là: cơ chế gán địa chỉ IP theo không gian trong đó các node xây dựng địa chỉ dựa vào vị trí không gian của chúng, nén tiêu đề theo ngữ cảnh dựa vào bản chất chia sẻ ngữ cảnh trong mạng cảm biến, định tuyến ứng dụng phủ cho phép thực hiện định tuyến dữ liệu trung tâm và tập trung dữ liệu và cơ chế lưu trữ TCP phân tán cải thiện chất lượng TCP và hiệu quả năng lượng. Sự tích hợp TCP/IP vào mạng cảm biến không dây cho phép truyền thông thông suốt giữa WSN và mạng TCP/IP mà không cần các thiết bị trung gian như proxy hay gateway dẫn đến giảm thời gian xử lý và chi phí thực hiện.
CHƯƠNG 3: PHÂN TÍCH, ĐÁNH GIÁ CÁC GIẢI PHÁP ĐỀ XUẤT
3.1 Đánh giá các giải pháp để sử dụng TCP/IP cho mạng WSN 3.1.1 Gán địa chỉ IP theo không gian
Gán địa chỉ IP cho mỗi node mạng là một vấn đề quan trọng khi áp dụng TCP/IP trong mạng cảm biến không dây. Các cơ chế gán địa chỉ trong mạng IP thông thường không phù hợp với mạng cảm biến phạm vi rộng. Ở chương II ta đã giới thiệu hai cơ chế gán địa chỉ IP: gán địa chỉ theo không gian (SIPA) và gán địa chỉ quét dòng (SLIPA) dựa vào vị trí tọa độ của mỗi node.
Với cơ chế SIPA, mỗi node tập trung và gửi thông tin về vị trí của nó tới trạm cơ sở. SIPA chọn tọa độ (x,y) của node để tạo hai octet cuối cùng trong địa chỉ IP. Trong phương pháp này, SIPA đã tận dụng được mối quan hệ giữa các vị trí không gian để tạo ra giao thức định tuyến và không cần server trung tâm hoặc giao tiếp giữa các node cảm biến. Tuy nhiên, trong cơ chế này không có sự đảm bảo địa chỉ mỗi node là duy nhất vì hai hoặc nhiều hơn các node cảm biến lân cận có thể có cùng địa chỉ IP. Cơ chế gán địa chỉ theo đường quét đã khắc phục được nhược điểm của cơ chế SIPA với mỗi node có một địa chỉ duy nhất. Trong phần này ta sẽ so sánh hai cơ chế này thông qua các đồ thị trong mô phỏng của tác giả Ray-I Chang [5] và đánh giá hiệu quả của cơ chế gán địa chỉ trong mạng cảm biến so với các mạng IP truyền thống.
Thông qua ví dụ mô phỏng này, ta đánh giá và so sánh sự thành công trong việc gán địa chỉ của cơ chế SIPA và SLIPA. Việc gán địa chỉ không thành công nếu hai hoặc nhiều hơn các node có cùng địa chỉ. Thuật toán được thực hiện 1000 lần để tính toán tỷ lệ gán thành công và tăng số node cảm biến cho tới khi tỷ lệ thành công giảm 0%. Hai phân bố khác nhau của các node cảm biến áp dụng cho thuật toán này là phân bố ngẫu nhiên và phân bố theo chiều dọc. Dải phân bố của các node như sau:
- Phân bố ngẫu nhiên: Xm = 0~255, Ym = 0~255. - Phân bố theo chiều dọc: Xm = 122~131, Ym = 0~255.
Kết quả mô phỏng thu được thể hiện trong hình 3.1 và hình 3.2 với đồ thị màu xanh biểu diễn SIPA và đồ thị màu đỏ biểu diễn SLIPA. Với các node phân bố ngẫu nhiên, tỷ lệ gán thành công trong SIPA giảm dần với số node tăng từ 1 đến 1000 node và SLIPA giảm dần khi số node tăng từ 700 đến 1250 node. Đồ thị cho thấy số node cảm biến càng tăng thì tỷ lệ gán thành công càng giảm, SLIPA đảm bảo gán thành công 100% với số node nhỏ hơn 700 nhưng SIPA đảm bảo tỷ lệ gán thành công khi chỉ có một node. Tỷ lệ gán thành công của SLIPA giảm xuống 0% khi số node vượt quá 1250 node trong khi SIPA giảm xuống 0% khi có hơn 1000 node trong mạng cảm biến.
Hình 3.1: Tỷ lệ gán thành công đối với các node cảm biến phân bố ngẫu nhiên
Đối với trường hợp các node cảm biến phân bố theo chiều dọc, tỷ lệ gán địa chỉ thành công giảm nhanh hơn so với khi các node phân bố ngẫu nhiên. Đồ thị của SIPA giảm dần khi số node tăng từ 1 đến 200 node trong khi đồ thị SLIPA giảm dần với số node tăng từ 400 đến 550 node.
Hình 3.2: Tỷ lệ gán thành công đối với các node cảm biến phân bố theo chiều dọc
Tỷ lệ gán thành công của SIPA không bao giờ đạt đến 100%. Điều này hợp lý bởi vì hai hoặc nhiều hơn các node chắc chắn sẽ phân bố gần nhau trong một số trường hợp vì vậy chúng có cùng địa chỉ IP.
Bảng 3.1 chỉ ra mối quan hệ giữa số node và tỷ lệ gán thành công đối với hai phân bố khác nhau của các node cảm biến:
Bảng 3.1: Tỷ lệ gán thành công với các phân bố khác nhau
Tỷ lệ thành công 100% 75% 50% 25% 0% Kiểu gán địa chỉ SIPA SLIPA SIPA SLIPA SIPA SLIPA SIPA SLIPA SIPA SLIPA Phân bố ngẫu
nhiên 1 700 194 892 310 944 425 1024 1000 1250 Phân bố theo
chiều dọc 1 400 30 460 60 477 85 495 200 550
Bảng 3.1 cho thấy cơ chế SLIPA tốt hơn SIPA trong các phân bố. SLIPA thực hiện tốt hơn với các node phân bố ngẫu nhiên. Phân bố theo chiều dọc hạn chế không gian nơi SLIPA có thể di chuyển các node vì vậy làm giảm khả năng của SLIPA.
Cơ chế SLIPA di chuyển các node để tránh tạo ra cùng địa chỉ IP. Tuy nhiên, cơ chế SLIPA bị lỗi khi số đường quét SN đạt đến 256 vì octet cuối cùng trong địa chỉ IP không vượt quá 255. Số lần di chuyển các node tăng thì chỉ số SN đạt đến 256 nhanh hơn. Để tăng tỷ lệ thành công của SLIPA phải giảm tần số của hoạt động di chuyển node.
Một số ứng dụng trong mạng WSN không yêu cầu nhất thiết mỗi node phải có địa chỉ duy nhất. Vì vậy, tùy theo từng ứng dụng cụ thể trong mạng WSN, ta có thể áp dụng cơ chế gán địa chỉ SLIPA hoặc SIPA.
Các cơ chế gán địa chỉ theo không gian được xây dựng theo đặc trưng riêng của mạng cảm biến, cung cấp địa chỉ IP cho từng node mạng và là một trong các giải pháp đề xuất để có thể sử dụng trực tiếp bộ giao thức TCP/IP trong mạng cảm biến không dây. Hướng nghiên cứu tiếp theo sẽ tập trung giải quyết các hạn chế của các cơ chế này để nâng cao hiệu quả và khả năng ứng dụng thực tế.
3.1.2 Nén tiêu đề
Thực hiện trực tiếp bộ giao thức TCP/IP trong mạng cảm biến cho phép truyền thông thông suốt giữa mạng cảm biến và bất kỳ mạng TCP/IP nào. Tuy nhiên do hạn chế về mặt năng lượng của các node cảm biến, TCP/IP được xem là “quá nặng” khi thực hiện trong mạng này. Năng lượng tiêu thụ tổng cộng giảm đáng kể bằng cách giảm số lần truyền gói tin và chiều dài gói tin. Nén tiêu đề là một cách tiếp cận để duy trì năng lượng bằng cách loại bỏ phần dư thừa trong tiêu đề gói tin và vì vậy truyền đi các gói tin với chiều dài ngắn hơn. Nén tiêu đề loại bỏ phần dư thừa trong tiêu đề các gói liên tiếp nhau bằng cách bỏ đi các giá trị tất định và tĩnh trong quá trình truyền. Trong các mạng trên nền TCP/IP, các trường tiêu đề có sự tượng tự cao của các gói tin được truyền trong một phiên kết nối. Trong mạng WSN, các đặc tính tương tự về trường tiêu đề cũng được xem xét như là khi các gói tin mang dữ liệu cảm nhận được thường chuyển đến node tiếp theo theo hướng tới node sink và vì vậy có các trường đồng nhất như địa chỉ đích.
Thuật toán nén tiêu đề hoạt động trong mạng WSN thường dựa trên sự thiết lập ngữ cảnh kết nối thông dụng bao gồm các thông tin bị bỏ qua từ các tiêu đề liên tiếp. Các thuật toán nén này giảm được phần lớn lượng thông tin dựa vào ngữ cảnh đã xác định trước đó.
Kỹ thuật nén tiêu đề hỗ trợ định tuyến RAHC là một cơ chế nén tiêu đề phù hợp nhất đối với mạng đa hop. Không giống với các cơ chế nén tiêu đề khác, thuật toán RAHC làm việc giữa các đầu cuối thông qua một số hop định tuyến. Thuật toán dùng thông tin từ giao thức định tuyến lớp dưới để phát hiện sự thay đổi tuyến và đa tuyến.
Ngoài ra một số kỹ thuật nén tiêu đề theo ngữ cảnh trong mạng cảm biến không dây đã được phát triển như là nén tiêu đề stateful. Được thiết kế đặc biệt cho cả các node cảm biến cố định và di động, kỹ thuật nén này có thể giảm kích thước tiêu đề lên tới 60% giữa hai node di động.
Như vậy, với các kỹ thuật nén tiêu đề thì tiêu đề TCP/IP đã được giảm và không còn trở ngại đối với sự hạn chế về nguồn tài nguyên của các node trong mạng cảm biến.
3.1.3 Bộ giao thức TCP/IP uIP
Trong luận văn này, một câu hỏi được đặt ra là nếu bộ giao thức TCP/IP có thể triển khai được thì nó có phù hợp với một hệ thống ràng buộc khắt khe về bộ nhớ hay không. Sau khi giải quyết vấn đề triển khai TCP/IP với nguồn tài nguyên giới hạn, câu hỏi đã được trả lời: Bộ giao thức TCP/IP uIP có thể thực hiện bằng cách sử dụng một lượng nhỏ về dung lượng bộ nhớ.
Bộ giao thức uIP thỏa mãn đầy đủ các yêu cầu RFC1122 đối với truyền thông host-to- host hoàn chỉnh. Hệ thống xử lý uIP đáp ứng hầu hết các cơ chế của bộ giao thức TCP/IP như là điều khiển luồng và dữ liệu khẩn. Mặc dù nhỏ và đơn giản uIP không đòi hỏi các thiết bị ngang hàng phức tạp và hỗ trợ bộ giao thức đầy đủ, có thể kết nối với các thiết bị ngang hàng chạy bộ giao thức “nhẹ” tương tự.
Phần này ta phân tích một số kết quả mô phỏng [8] để thấy rõ hiệu quả chất lượng của uIP về báo nhận trễ. Trong mô phỏng, kết nối PC chạy FreeBSD 4.7 tới một bảng mạch Ethernut thông qua mạng Ethernet 10 megabit/second dành riêng. Bảng mạch Erthernut là một hệ thống nhúng thương mại sẵn có được trang bị một bộ điều khiển RealTek RTL8019AS Ethernet và một vi điều khiển Atmel Atmega128 AVR với 128 kilobyte bộ nhớ flash ROM lưu trữ mã và 32 kilobyte RAM. Host FreeBSD được cấu hình để chạy phần mềm mô phỏng trễDummynet để điều khiển trễ đối với truyền thông giữa PC và hệ thống nhúng.
Trong hệ thống nhúng này, một web server đơn giản chạy trên nền uIP. Sử dụng tiện ích tìm kiếm file, một file được tải 10 lần từ hệ thống nhúng và tính toán lưu lượng trung
bình. Kích thước file khoảng 200 kilobyte nên không thể lưu toàn bộ trong bộ nhớ hệ thống nhúng. Thay vào đó, file tạo bởi web server khi nó được gửi lên mạng.
Tiêu thụ bộ nhớ tổng cộng TCP/IP trong hệ thống nhúng được thay đổi bằng cách thay đổi kích thước cửa sổ gửi. Kích thước cửa sổ gửi thay đổi giữa 50 byte và 1450 byte theo bước nhảy 50 byte. Sử dụng bộ nhớ RAM tổng cộng thay đổi theo cấu hình cửa sổ gửi giữa 400byte và 3 kilobyte.
Hình 3.3: uIP gửi dữ liệu với trễ mô phỏng 10ms
Hình 3.3 thể hiện lưu lượng trung bình của 10 lần tải file từ web server chạy trên nền uIP. Hai đường đồ thị thể hiện lưu lượng đo được khi cho phép và không cho phép báo nhận trễ tại host FreeBSD. Hình vẽ cho thấy chất lượng suy giảm khi có báo nhận trễ tăng