Phần mềm mô phỏng mạng cảm biến

Một phần của tài liệu Nghiên cứu và ứng dụng ipv6 trên mạng cảm biến không dây (Trang 45)

V. Cấu trúc luận văn

3.2.1.2 Phần mềm mô phỏng mạng cảm biến

Hiện nay có rất nhiều phần mềm giả lập mạng cảm biến trên máy tính, cho phép người dùng mô phỏng lại hệ thống cảm biến một cách chính sác như trên phần cứng trong thực tế. Mỗi một phần mềm mô phỏng khác nhau cung cấp một tập hợp các mô hình mô phỏng với mức độ chính xác và chi tiết khác nhau.

Các nút cảm biến mô phỏng cho thấy những con đường lựa chọn bởi các giao thức định tuyến, cũng như số liệu thống kê định tuyến cho mỗi nút. Thời hạn cho thấy khi thu phát vô tuyến của thiết bị này bật hoặc tắt, cho phép người dùng trực quan kiểm tra hoạt động của hệ thống, và những tác động của nó chẳng hạn như va chạm.

44

Để phục vụ cho mục đích học tập và nghiên cứu người ta hay dùng các phần mềm mô phỏng sau: Ns2 NS3 OmNet++ Cooja 3.2.1.3 Hệ điều hành.

Hệ điều hành là một phần mềm chạy trên máy tính, dùng để điều hành, quản lý các thiết bị phần cứng, các tài nguyên và phần mềm trên máy tính. Hệ điều hành đóng vai trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng máy tính, cung cấp một môi trường cho phép người sử dụng phát triển và thực hiện các ứng dụng một cách dễ dàng.

Hiện nay có rất nhiều máy tính, thiết bị truy cập vào Internet song mỗi máy tính, thiết bị lại sử dụng những hệ điều hành khác nhau trong đó phổ biến hiện nay

Windown (Win XP, Win 7, 2000, Vista, server 2003, server 2008,…) Linux (Ubuntu, Fedora, Centos…)

Contiki ….

3.2.2 Công cụ lựa chọn 3.2.2.1 Máy ảo Vmware 3.2.2.1 Máy ảo Vmware

VMware Workstation là một phần mềm ảo hóa desktop mạnh mẽ dành cho các nhà phát triển/kiểm tra phần mềm và các chuyên gia IT cần chạy nhiều HĐH một lúc trên một máy PC. Người dùng có thể chạy các HĐH Windows, Linux, Netware hay Solaris x86 trên các máy ảo di động mà không cần phải khởi động lại hay phân vùng ổ cứng. VMware Workstation cung cấp khả năng hoạt động tuyệt vời và nhiều tính năng mới như tối ưu hóa bộ nhớ và khả năng quản lý các thiết lập nhiều lớp. Các tính năng thiết yếu như mạng ảo, chụp ảnh nhanh trực tiếp, kéo thả, chia sẻ thư mục và hỗ trợ PXE

45

khiến VMware Workstation trở thành công cụ mạnh mẽ nhất và không thể thiếu cho các nhà doanh nghiệp phát triển tin học và các nhà quản trị hệ thống.

3.2.2.2 Hệ điều hành Contiki

Hệ điều hành Contiki là hệ điều hành mã nguồn mở, được nghiên cứu, thiết kế và phát triển bởi một nhóm các nhà phát triển từ viện khoa học máy tính Thụy Điển, người đứng đầu là Adam Dunkels. Nhóm phát triển Contiki gồm nhiều thành viên đến từ SICS, SICSO, cùng nhiều tổ chức và các trường đại học khác trên thế giới. Hệ điều hành Contiki được thiết kế cho các vi điều khiển có bộ nhớ nhỏ với thông số 2KB ram và 40KB Rom. Nhờ đó, Contiki được sử dụng cho các hệ thống nhúng và các ứng dụng trong mạng cảm biến không dây. Contiki bắt đầu được nghiên cứu từ năm 2001 và phát triển phiên bản đầu tiên Contiki 1.0 năm 2003. Phiên bản hiện nay của Contiki là 2.7 với nhiều thay đổi, bổ xung và phát triển vượt bậc. Trong thực tế, Contiki đã được ứng dụng trong nhiều dự án như giám sát đường hầm xe lửa, theo dõi nước trong biển Baltic,... Nhiều cơ chế, ý tưởng trong Contiki đã được ứng dụng rộng rãi trong công nghiệp. Điển hình như mô hình uIP được phát hành năm 2001 đã được sử dụng trong hệ thống ứng dụng của hàng trăm công ty trong các lĩnh vực hàng hải, thông tin vệ tinh, khai thác dầu mỏ,...., mô hình Protothreads được công bố lần đầu tiên năm 2005, đến nay đã được sử dụng nhiều ứng dụng như bộ giải mã kỹ thuật số và thiết bị cảm biến rung không dây.

46

Hình 18 Lịch sử phát triển của Contiki

Hệ điều hành Contiki được lập trình bằng ngôn ngữ C, hoạt động dựa trên cơ chế event – driven và có những đặc điểm phù hợp với các hệ thống nhúng và mạng cảm biến không dây:

- Contiki được chia thành nhiều modul hoạt động độc lập. Nhờ đó các ứng dụng có thể sử dụng các modul một cách linh động và chỉ load những modul cần thiết.

- Cơ chế hoạt động điều khiển sự kiện làm giảm năng lượng tiêu hao và hẹn chế dung lượng bộ nhớ cần sử dụng.

- Có thể sử dụng IP trong mạng cảm biến thông qua uIP stack được xây dựng trên nền TCP/IP.

- Có những modul cho phép ước lượng và quản lý năng lượng một cách hiệu quả.- Các giao thức tương tác giữa các lớp và các nút trong mạng dễ dàng hơn

- Sử dụng RIME stack phục vụ các giao thức dành cho mạng năng lượng thấp một cách hiệu quả.

Bên cạnh đó Contiki còn cung cấp những công cụ hỗ trợ mô phỏng với giao diện đơn giản và dễ sử dụng và hỗ trợ tốt những thiết bị trong thực, phục vụ những mục đích nghiên cứu, mô phỏng và triển khai những giao thức mới.

3.2.2.3 Phần mềm mô phỏng Cooja

Cooja là phần mềm mô phỏng hệ thống mạng được tích hợp trong hệ điều hành Contiki. Công cụ này cho phép người sử dụng thay đổi các thông số như vị trí, phạm vi kết nối, tỉ lệ truyền gói thành công,… Nhờ đó người sử dụng có thể mô phỏng và đánh giá kết quả một cách hiệu quả hơn.

47

Hình 19 Màn hình mô phỏng Cooja.

Từ hình có thể nhận thấy giao diện của chương trình thân thiện và dễ sử dụng, với một màn hình cho phép hiển thị các quá trình hoạt động của nút, có khả năng thay đổi vị trí, phạm vi phủ sóng của mỗi nút. Bên cạnh đó Cooja cung cấp một số các cửa sổ theo dõi sự kiện như Log listener, Radio listener cho phép người sử dụng tìm kiếm những sự kiện theo một số thông số nhất định, theo dõi sự giao tiếp giữa một số nút cụ thể, ….Có thể nói, đây là một công cụ mô phỏng khá trực quan và dễ sử dụng, phục vụ tốt cho quá trình nghiên cứu, mô phỏng, đánh giá.

3.3 Kịch bản thử nghiệm

Xây dựng mạng cảm biến để đo nhiệt độ ở các điểm khác nhau. Đưa ra thông báo khi có nhiệt độ tại một nút vượt ngưỡng cho phép.

48

3.3.1 Phân tích kịch bản

Các Nút cảm nhận sẽ đo nhiệt độ ở môi trường trong các khu vực khác nhau sau đó gửi dữ liệu các nút trung gian, các nút này sẽ tập hợp rồi về Server thông qua mạng cảm biến không dây. Nút server sẽ nhận các dữ liệu do mạng cảm biến gửi về, xử lý các dữ liệu đó rồi đưa ra thông báo cho người dùng nhiệt độ tại các khu vực đồng thời thông báo cho người dùng biết nếu nhiệt độ tại một khu vực nào đó vượt ngưỡng cho phép.

3.3.2 Mô hình mạng cảm biến thử nghiệm

Hình 20 Mô hình bài toán mạng cảm biến

3.3.3 Thiết kế mạng

Mạng gồm các nút cảm nhận được gắn với đầu đo nhiệt độ, nút server

Các nút bao gồm có nút cảm nhận, nút trung gian, nút server. Các nút cảm nhận thì đo nhiệt độ rồi chuyển về nút trung gian, các nút trung gian nhận dữ liệu từ các nút cảm nhận gửi về rồi gửi cho nút server. Tại nút này sẽ phân tích dữ liệu gửi về từ các nút cảm biến sau đó dẽ đưa ra thông số về nhiệt độ của các nút tại các vị trí, nếu có nút nào đó có nhiệt độ vượt ngưỡng cho phép thì sẽ đưa ra cảnh báo.

49

Kiến trúc mạng được sử dụng là kiến trúc hình cây do số lượng các nút mạng trong thực nghiệm là nhỏ.

3.3.4 Thuật toán

B1: Nhiệt độ được đo tại các nút cảm biến

B2: Dữ liệu nhiệt độ đo được tại các nút cảm biến được gửi về nút trung gian ( hoặc gửi trực tiếp tới nút server nếu nút cảm biến và nút server nằm trong vùng phủ sóng của nhau).

B3: Nút trung gian sau khi nhận dữ liệu từ các nút cảm biến gửi về sẽ gửi lại về nút server.

B4: Nút server nhận dữ liệu từ nút trung gian sau đó đưa ra giá trị nhiệt độ tại các nút.

50

3.3.5 Sơ đồ khối

51

Mô tả sơ đồ

Dữ liệu nhiệt độ sẽ được đo tại nút cảm biến sau đó gửi về bước trung gian, nút trung gian sẽ nhận và chuyển tiếp dữ liệu đến nút Server.

Tại nút Server sẽ đọc dữ liệu và xử lý dữ liệu chuyển về (so sánh nhiệt độ nhận được với ngưỡng nhiệt dộ cho phép, nếu vượt ngưỡng cho phép thì sẽ đưa ra cảnh báo). Sau đó lại quay lại đọc dữ liệu từ Server. Nếu không có dữ liệu thì việc đọc được thực hiện liên tục.

3.3.6 Thực hiện

Để có thể đánh giá được ưu điểm của IPv6 so với IPv4 trên mạng cảm biến không dây ta tiến hành thực hiện bài toán trên cả hai giao thức IPv4 và IPv6.

3.3.6.1 Mô hình mô phỏng IPv4 trên mạng cảm biến không dây

Thiết lập một mạng cảm biến không dây với:

+ 1 nút server: chạy IPv4 và thiết lập 1 kết nối UDP với địa chỉ 0.0.0.0 với địa chỉ này thì tương đương với việc cho phép mọi địa chỉ khác trong mạng có thể kết nối với socket udp này. Thiết lập địa chỉ IPv4 cho Nút server là 172.16.1.0 đây là địa chỉ mặc định của nút có id là 1 trong contiki. Ta có thể thiết lập địa chỉ IP bất kì nhưng để tiện dụng thì ta dùng địa chỉ này cho nút server. Tạo một kết nối với socket có local port là 12345 và remote port là 54321 và liên kết với udp.

+ 5 nút client( có thể nhiều hơn): chạy IPv4 và kết nối với local và remote port có giá trị ngược lại với giá trị ở trên. Cụ thể là local port là 54321 và remote port là 12345. Giá trị IP được thiết lập theo giá trị dựa theo ID của nút tương tự như server. Ví dụ nút có ID là 4 thì địa chỉ IP của nó sẽ là 172.16.4.0

+ Phân bố các nút trong Cooja: Để nút server có thể liên lạc với tất cả các nút trong không gian thì việc sắp xếp các nút client sao cho có thể liên lạc trực tiếp hay gian tiếp với server được. Cooja hỗ trợ tool hiển thị radio enveroment để biết được phạm vi liên lạc giữa các nút. Hình dưới mô tả việc liên lạc với các nút client với server.

52

Hình 22 Mô tả khả năng liên lạc của các nút client và server

Hình bên trên cho ta thấy vòng tròng màu xanh là vòng tròng chỉ phạm vi phủ sóng của nút 1. Tất cả các nút nằm trong vòng màu xanh này sẽ liên lạc trực tiếp đến nút 1. Ta dễ dàng nhận thấy được là các nút 2,3,5,6 có thể truyền trực tiếp dữ liệu đến nút 1. Nhưng nút 4 vì nằm ngoài vùng phủ sóng nên để có thể truyền tin đến nút 1 thì nút 4 phải truyền chuyển tiếp qua nút 3.

+ Quá trình giao tiếp: Mỗi nút gửi thông tin nhiệt độ xung quanh của nút (nút sky) qua cảm biến và gửi đến nút server trong một khoảng thời gian ngẫu nhiên từ 0 đến 10 giây. Nút server lắng nghe và phân tích thông tin gửi về để lấy ra giá trị nhiệt độ của nút đó. Nếu nhiệt độ của nút client vừa gửi lớn hơn ngưỡng nhiệt độ đặt trước thì sẽ có cảnh báo để thông báo.

53

+ Quan sát hộp thoại mote output để biết IP của nút có giá trị ở trên và giá trị kết nối liên kết UDP.

Đánh giá IPv4

Tool hỗ trợ:

Mỗi gói tin được gửi đi trong Cooja đều được phân tích. Cooja hỗ trợ tool Radio Messages để bắt gói tin radio được chuyển ra ngoài môi trường cooja bởi các nút. Để mở tool ta chọn: Tool → Radio Messages. Hộp thoại được mở ra như hình dưới.

Hình 23 Tool Radio Messages của IPv4

Ta quan tâm đến các trường sau:

- From: ID của gói tin được gửi từ nút nào.

- To: ID của nút nhận được gói tin.

- Data: Hiển thị chiều dài và thông tin của gói tin gửi đi.

- Vùng hiện thị nội dung data

+ gói tin IPv4: với mô phỏng IPv4 ở trên ta có kết quả ở trong hình. Ở đây ta thấy nút client gửi một gói tin có nội dung: “ gia tri nhiet do hien tai: <gia tri nhiet do>”. Với giá trị nhiệt độ là giá trị sensor đo được.

Ví dụ: Ở bên trên ta có thể dễ dàng thấy được tại thời điểm 05:52:034 nút 2 gửi thông tin gới nút 1 với nội dung là nhiệt độ hiện tại là 32 độ và với chiều dài gói tin là 78 byte.

54

Hình 24 Cảnh báo nếu nhiệt độ vượt ngưỡng

Từ hình ảnh cho ta thấy được khi mà một nút nào đó ( ở đây là nút 2) có nhiệt độ vượt ngưỡng nhiệt độ cho ngưỡng thì server sẽ đưa ra thông báo cảnh báo về mức nhiệt độ này.

3.3.6.2 Mô hình mô phỏng IPv6 trên mạng cảm biến không dây

Thiết lập một mạng cảm biến không dây trên cooja dùng IPv6 với:

+ 1 nút server: Có chức năng thiết lập kết nối udp chạy trên nền IPv6. Nút thiết lập kết nối udp với local port là 5678 và remote port là 8765. Địa chỉ kết nối udp là 0.0.0.0.( với địa chỉ này server chấp nhận mọi địa chỉ IP có yêu cầu kết nối tới nó). Cooja hỗ trợ tạo địa chỉ IPv6 dựa theo địa chỉ Mac của nút hoặc ta có thể tạo một giá trị IPv6 cố định cho nút. Ở trong mô hình này ta đặt giá trị địa chỉ IPv6 cho server < 0xaaa:0:0:0:0:00ff:fe00:1> bằng hàm trong code IPv6 server.c:

uip_ip6addr(&ipaddr, 0xaaaa,0,0,0,0,0x00ff,0xfe00, 1); uip_ds6_addr_add(&ipaddr, 0, ADDR_MANUAL);

55

Mục đích của việc cài đặt cứng này để các nút client biết địa chỉ server để liên lạc. Nút server có chức năng lắng nghe và cảnh báo khi nhiệt độ của nút client vượt 1 ngưỡng giới hạn là 30 độ.

+ 5 nút client (có thể nhiều hơn) : Kết nối udp với server nút với local port 8765 và remote port là 5678. Khác với server địa chỉ IP của các nút client được cài dựa theo địa chỉ MAC của nút trong code IPv6_client.c bằng hàm:

uip_ds6_addr_add(&ipaddr, 0, ADDR_AUTOCONF); marco ADDR_AUTOCONF: cài tự động theo MAC

Vì địa chỉ MAC là duy nhất trên thế giới nên cũng đồng nghĩa với địa chỉ Ip là cố định không trùng với nút nào trên mạng. Ví dụ địa chỉ của nút 2 là : fe80::212:7402:2:202.

Nút client gửi một gói tin cập nhật nhiệt độ của nó đến server.

+ Phân bố các nút trong mô phỏng cooja: tương tự như với IPv4 các nút client nên phân bổ sao cho các nút có thể truyền trực tiếp tới nút server hoặc qua một vài nút trung gian.

+ Định tuyến RPL: Các nút chạy IPv6 theo chuẩn 6Lowpan nên việc định tuyến sẽ theo giao thức RPL. Nghĩa là sẽ có các gói tin được gửi quảng bá ( broadcast) để phục vụ định tuyến.

+ Quá trình trao đổi thông tin giữa các nút client với server: Tương tự như mô hình IPv4 ở trên. Các nút client cập nhật thông tin nhiệt độ môi trường xung quanh và nút server thu thập thông tin và bật cảnh báo khi giá trị nhiệt độ nào đó của client vượt ngưỡng.

Đánh giá IPv6:

+ Thiết lập mạng như trên và chạy mô phỏng.

+ Quan sát hộp thoại mote output để biết địa chỉ IP của nút có giá trị như ở trên và quá trình kết nối liên kết UDP.

56

Hình 25 Tool Radio Message của IPv6

Dựa vào tool Radio Messages thì ta bắt bất kì một gói tin nào mà phần vùng hiển thị nội dung data chứa nội dung “ gia tri nhiet do hien tai:” như hình ở dưới thì ta biết đó chính xác là gói data mà client gửi để cho server( quan sát qua trường From và trường To). Dựa vào trường Data và vùng hiển thị nội dung ta thấy số lượng byte mà gói tin này gửi đi là 66byte.

Hình 26Cảnh báo nếu nhiệt độ vượt ngưỡng

Server sẽ cảnh báo về nút mà nhiệt độ của nó vượt ngưỡng cho phép.

Một phần của tài liệu Nghiên cứu và ứng dụng ipv6 trên mạng cảm biến không dây (Trang 45)