Trong nghiên cứu, phát triển và ứng dụng mạng cảm biến không dây, mô phỏng là việc quan trọng và rất cần thiết. Việc mô phỏng sẽ giúp ta phân tích hiệu năng của mạng. Trong giai đoạn thiết kế, thiết lập mạng việc mô phỏng sẽ cho phép ta dễ dàng dự đoán về hiệu năng mạng và có thể so sánh được các hệ thống khác nhau để qua đó đưa ra các lựa chọn phù hợp mục đích, ứng dụng và người dùng. Hơn nữa, việc mô phỏng cho phép ta so sánh các cấu hình khác nhau của mạng, khi có những thay đổi về các yếu tố trong mạng như môi trường đặt hệ thống cảm biến, giao thức định tuyến, v.v... Hiện nay, đã có nhiều phần mềm mô phỏng mạng cảm biến như NS2 (Network Simulator version2), NS3 (Network Simulator version3), OPNET (Optimized Network Engineering Tools), NETSIM (Network Based Environment for Modelling and Simulation), OMNET++ (Optical Micro-Networks Plus Plus), JSIM (Java-based simulation), REAL (REalistic And Large), SENSE () hoặc những phần mềm kỹ thuật có hỗ trợ các công cụ mô phỏng mạng cảm biến như Matlab & Simulink.
2.5.1. Phần mềm mô phỏng NS:
Phần mềm mô phỏng NS có hai phiên bản là NS2 [102] và NS3 [105]. Phiên bản NS2 được phát triển năm 1995 tại Đại học California. NS2 được phát triển với sự kết hợp giữa ngôn ngữ C++ và Otcl [103][104]. Ngô ngữ C++ được sử dụng để thiết kế với hiệu quả cao, thực hiện các vấn đề giao thức mạng, còn Otcl được sử dụng để dễ dàng trong hiển thị và biểu diễn đồ họa cho người dùng kiểm soát các kịch bản mô phỏng và lên lịch các sự kiện. Hình 2.17 mô tả cấu trúc cơ bản của phần mềm NS2.
Hình 2.17. Cấu trúc cơ bản của NS2 [102]
NS2 cung cấp một môi trường mô phỏng các sự kiện rời rạc, chủ yếu hỗ trợ cho mô phỏng các chức năng mạng, các giao thức, định tuyến và các phần tử trên mạng có dây và không dây. Tuy nhiên, việc sử dụng NS2 với mạng cảm biến bị hạn chế bởi khả năng mở rộng do thiếu mô hình ứng dụng và khó khăn trong việc phát triển các phần mở rộng [119] và gây ra một số trở ngại trong việc mô phỏng WSN. Hơn nữa, NS2 không có khả năng mô phỏng các vấn đề về mức năng lượng trong mạng cảm biến [106].
Phiên bản NS3 là phần mềm mô phỏng hướng đối tượng rời rạc trong mạng tương tự như NS2, chủ yếu sử dụng trong nghiên cứu và đào tạo. Cấu trúc cơ bản của NS3 được biểu diễn như Hình 2.18.
Hình 2.18. Cấu trúc cơ bản của NS3 [105]
Phầm mền NS3 và NS2 có những sự khác biệt [106], như NS3 với giao diện kịch bản Python chú ý đến tính hiện thực, các thực thể giao thức được thiết kế gần gũi hơn với máy tính thực. Hơn nữa, NS3 tích hợp nhiều phần mềm mã nguồn mở hơn và giảm bớt các yêu cầu viết lại mô hình mô phỏng, hỗ trợ ảo hóa, các máy ảo được thiết lập và sử dụng trong mô phỏng, NS3 phát triển một bảng theo dõi và thống kê các đầu ra cho phép tùy biến mà không cần thay đổi lại phần lõi mô phỏng.
Tuy nhiên, NS3 vẫn đang trong quá trình phát triển và cần được cải thiện về độ tin cậy. NS3 là phần mềm với mã nguồn mở đang phát triển cho Internet và cho phép cộng động sử dụng cũng như phát triển một cách tự do để nó có thể trở nên hữu dụng hơn, hiệu quả hơn. Điều này cũng chính là một vấn đề cần suy tính đối với người sử dụng có nên lựa chọn NS3 hay không cho nghiên cứu của mình.
2.5.2. Phần mềm mô phỏng SENS
Phần mềm mô phỏng mạng cảm biến SENS [107], có cấu trúc mô phỏng bao gồm các nút cảm biến được mô phỏng tương tác với một thành phần môi trường. Hình 2.19 biểu diễn cấu trúc mô phỏng của SENS.
Mỗi nút cảm biến trong SENS được mô hình hóa với ba thành phần là ứng dụng, mạng và vật lý. Thành phần ứng dụng thực thi các công việc trên nút cảm biến, kết nối với thành phần vật lý để đọc các giá trị cảm biến và kết nối với thành phần mạng để gửi hoặc nhận các bản tin từ các nút cảm biến khác trong mạng. Thành phần vật lý mô hình hóa các cảm biến, nguồn điện và tương tác với môi trường. Các thành phần được thiết kế độc lập và có thể hoán đổi cho nhau. Người dùng có thể sử dụng bất kỳ dịch vụ nào mà SENS cung cấp, sửa đổi các thành phần hiện có hoặc viết các thành phần hoàn toàn mới cho các mô hình ứng dụng, mô hình mạng, khả năng cảm biến hoặc môi trường. Điểm mạnh nổi bật của SENS là khả năng mô hình hóa các môi trường vật lý.
SENS cũng có đề cập đến mô phỏng việc sử dụng năng lượng của nút. Tuy nhiên, việc mô phỏng về năng lượng mới dừng ở mức rất đơn giản. Năng lượng sử dụng của nút chỉ tính theo giá trị dòng điện danh định nhân với một điện áp là 3V và được tích lũy theo thời gian. Hiện tại, trình mô phỏng chưa có mô hình pin, cũng không có sự đề cập về giao thức định tuyến, mô-đun mô phỏng và trực quan hóa. Hơn nữa, không có sách hướng dẫn nào được xuất bản [108]. Điều này làm cho việc phát triển mô phỏng các vấn đề năng lượng, truyền thông cũng như tiếp cận để sử dụng phần mềm gặp nhiều khó khăn.
2.5.3. Phần mềm mô phỏng OMNeT ++:
Phần mềm mô phỏng OMNeT++ [109] là một trình mô phỏng mạng với sự kiện rời rạc mã nguồn mở được phát triển ban đầu để mô phỏng các giao thức truyền thông. OMNeT++ cung cấp một thư viện chức năng cơ bản cho mô phỏng và giao diện đồ họa. Hình 2.20 mô tả cấu trúc logic của phần mềm mô phỏng OMNeT++.
Hình 2.20. Cấu trúc logic của trình mô phỏng OMNeT++ [109].
Phần cốt lõi của OMNeT++ là hạt nhân mô phỏng (SIM), có sự kết nối với giao diện người dùng cơ sở (ENVIR). Người dùng có thể tùy chỉnh toàn bộ môi trường mô phỏng. Thư viện mô hình thành phần (Model Component Library) bao gồm mã của các mô-đun đã được biên dịch. Các mô-đun được khởi tạo và mô hình hóa cụ thể được xây dựng bởi hạt nhân mô phỏng khi bắt đầu thực hiện mô phỏng. Mô phỏng thực hiện trong môi trường được cung cấp bởi các thư viện giao diện người dùng (ENVIR, CMDENV và TKENV). Các môi trường này xác định dữ liệu đầu vào đến từ đâu, kết quả mô phỏng đi đến đâu, điều gì sẽ xảy ra với việc gỡ lỗi đầu ra đến từ
mô hình mô phỏng, điều khiển việc thực hiện mô phỏng. OMNeT++ cung cấp mô hình mô phỏng (Simulation Model) bao gồm các giao thức mạng và mô hình giao tiếp được chứa trong thư viện mô hình. Môi trường mô phỏng OMNeT++ cho phép người dùng có thể thiết kế các mô đun và có thể tạo thư viện người dùng, các mô đun này có thể được sử dụng như một phần tử chức năng và có thể được dùng trong nhiều mục đích khác nhau.
Tuy nhiên, lĩnh vực ứng dụng chính của OMNeT ++ là mô phỏng mạng truyền thông [110][111], chú trọng đến các giao thức mạng. OMNeT ++ có kiến trúc tổng quát và linh hoạt nên thường được sử dụng trong mô phỏng hệ thống công nghệ thông tin, cấu trúc mạng tuần tự, kiến trúc phần cứng.
2.5.4. Phần mềm mô phỏng OPNET
OPNET [112] là một phần mềm mô phỏng, nghiên cứu và phát triển mạng được sử dụng nhiều vào hơn chục năm về trước, nhất là năm 2008. Môi trường OPNET cung cấp bốn lớp mô hình bao gồm mạng, nút, xử lý và tham số được tổ chức phân cấp như Hình 2.21.
Hình 2.21. Tổ chức phân cấp trong môi trường OPNET [112].
Mô hình mạng (Network) được sử dụng định cấu trúc liên kết vật lý của mạng truyền thông như xác định vị trí và kết nối giữa các thực thể truyền thông. Mô hình nút (Node) được thể hiện dưới dạng các mô đun được kết nối với nhau. Các mô đun nút này có thể có các đặc tính được xác định trước với một tập hợp tham số có sẵn. Mô hình quy trình (Process) được sử dụng để mô phỏng quá trình logic và các hành vi của bộ xử lý. Mô hình tham số (Parameter) cung cấp các bộ tham số sử dụng cho mô phỏng. Người dùng có thể sử dụng và tùy chỉnh bốn mô hình này để thiết lập một mô hình mạng.
OPNET thường được sử dụng trong lĩnh vực nghiên cứu các mạng truyền thông với các thiết bị, các giao thức truyền thông và các ứng dụng. OPNET là môi trường đồ họa tương đối mạnh với các hình ảnh của đối tượng và hỗ trợ đồ họa cho người dùng. Giao diện đồ họa giúp người dùng có thể xây dựng các cấu trúc mạng và các thành phần, đối tượng từ lớp ứng dụng đến lớp vật lí, cho phép tạo ra và sử dụng các hình ảnh để thiết kế đồ họa, xây dựng hình ảnh hệ thống tương đối như thực tế. Các thông số trong OPNET dựa trên cơ chế hệ thống sự kiện rời rạc qua đó các hành vi được mô phỏng bằng mô hình các sự kiện mạng theo thứ tự mà người dùng đã thiết lập trong các kịch bản mô phỏng hệ thống. Với công cụ mô phỏng GUI của OPNET
chúng ta có thể quan sát được trên giao diện mô phỏng về cấu trúc mạng và các kết quả mô phỏng của hệ thống [113].
2.5.5. Phần mềm mô phỏng J-Sim
Trong khi, các phần mềm mô phỏng trên sử dụng ngôn ngữ C++ thì J-Sim (Java
Simulation) [114] lại được thực hiện bởi ngôn ngữ Java. J-Sim được phát triển với sự
thừa kế các ý tưởng bị dừng lại khi chưa hoàn thành của trình mô phỏng mạng SensorSim [115]. Trình mô phỏng J-Sim có kiến trúc dựa trên những thành phần độc lập với ba mô hình cơ bản gồm nút đích (Target node), nút cảm biến (Sensor node) và nút cơ sở (Sink node). Mỗi phần tử cơ bản có thể thực hiện một chức năng nhiệm vụ nhất định với các cổng vào và cổng ra để thực hiện liên kết giữa các phần tử. Hình 2.22 mô tả mô hình môi trường mạng cảm biến không dây điển hình của J-Sim.
Hình 2.22. Mô hình môi trường WSNs điển hình của J-Sim [114].
Nút mục tiêu tạo sự kiện cần quan tâm và thông qua các nút cảm biến, dữ liệu được gửi về nút cơ sở để xử lý. Kiến trúc phần tử linh hoạt của trình mô phỏng cho phép các thành phần có thể được thiết kế, thực thi và chạy thử một cách độc lập[116][117], khả năng này cũng giống với một số phần mềm mô phỏng khác chẳng hạn LabVIEW[118].
Phần mềm J-Sim có khả năng mô phỏng trên quy mô lớn và khả năng mở rộng tốt hơn so với NS, nhưng cũng giống như các phần mềm mô phỏng trên là chú trọng hỗ trợ các giao thức định tuyến cho mạng, và thường mô phỏng mạng ít biến động, chẳng hạn các nút mục tiêu cũng được xác định ngay từ đầu trong kiến trúc mạng.
2.5.6. Phần mềm mô phỏng SENSE
Trình mô phỏng và giả lập mạng cảm biến SENSE [119] dựa trên phương pháp mô phỏng định hướng thành phần. Trung tâm của trình mô phỏng là mô hình nút cảm biến có cấu trúc được biểu diễn như Hình 2.23. Cấu trúc nút bao gồm các thành phần truyền thông, pin, nguồn, cảm biến, di động.
Hình 2.23. Cấu trúc nút trong SENSE [119].
SENSE cũng giống các phần mềm khác, tập trung phát triển các vấn đề mô phỏng về truyền thông mạng. Trình mô phỏng cung cấp một số các thành phần phục vụ truyền thông như mô hình điều phối phân tán theo chuẩn IEEE 802.11, mô hình giao thức định tuyến véc tơ khoảng cách theo yêu cầu (AODV), mô hình định tuyến nguồn động (DSR). Ngoài ra, mô hình pin, nguồn và cảm biến cũng được đề cập đến. Tuy nhiên, mô hình pin được đưa ra là hai mô hình pin rất đơn giản mang tính minh họa về nguồn cung cấp năng lượng. Mô hình nguồn trong SENSE có chức năng quản lí nguồn hoạt động của nút trong các chế độ truyền thông. Năng lượng được quản lí theo phương thức rất đơn giản, tính theo một tỉ lệ nào đó cho các chế độ truyền thông, còn các mô hình về năng lượng chưa được đưa ra. Các phần còn lại như mô hình cảm biến, mô hình di động không được đưa ra ở đây. Hơn nữa, không có công cụ trực quan nào xuất hiện trong SENSE.
Các phần mềm mô phỏng mạng cảm biến hầu như sử dụng ngôn ngữ lập trình C++ với phương pháp lập trình hướng đối tượng để thực hiện chương trình, việc lựa chọn này là hợp lý. Các phần mềm này chủ yếu hướng tới hỗ trợ mô phỏng mạng với các vấn đề liên quan cấu trúc mạng, giao thức định tuyến truyền thông hoặc trạng thái dữ liệu trong truyền thông của các mô hình kênh truyền thông không dây. Năng lượng là vấn đề được coi là ít quan trọng hơn. Một số bộ mô phỏng đề cập đến mô hình năng lượng nhưng chỉ giới hạn ở nguồn pin, bộ vi điều khiển và bộ thu phát sóng vô tuyến, mà bỏ qua các mô hình thiết bị khác như cảm biến, thu năng lượng từ môi trường. Điều này có thể là kết quả của quá trình lịch sử phát triển từ việc mô phỏng các mạng truyền thông truyền thống, nơi truyền thông được quan tâm hàng đầu. Vì vậy, việc phát triển mở rộng các phần mềm này theo hướng mô phỏng về năng lượng sẽ gặp phải rất nhiều khó khăn và phức tạp.
Mô phỏng mạng cảm biến tính đến yếu tố năng lượng, quan tâm đến hiệu năng và tuổi thọ mạng cần xem xét đến quá trình năng lượng ở mức độ sâu hơn như quá trình năng lượng và mức tiêu thụ của nút cảm biến ở từng chế độ hoạt động, để từ đó có thể tính toán và mô phỏng được quá trình, trạng thái năng lượng, tuổi thọ của nút và toàn mạng.