1. Nội dung thiết kế tốt nghiệp:
4.1.2.2 Chạy các ứng dụng trong OMNeT++
Như đã trình bày ở phần mở đầu, một hệ thống mạng mô phỏng trong OMNeT++ gồm các thành phần sau:
Các file.ned mô tả topo mạng.
Các file có phần mở rộng .msg chứa khai báo các message.
Các file C++ (có phần mở rộng là .cc trong UNIX hoặc .cpp
trong Windows)
Quá trình xây dựng một chương trình mô phỏng
Đầu tiên, dịch các file NED và các file message thành C++, sử
dụng NED compiler (nedc) và message compiler (opp_msgc).
Quá trình tiếp theo giống như biên dịch mã nguồn C/C++
Trong Linux: các file .cc → file.o.
Trong Windows: các file .cpp → file .obj.
Sau đó tất cả các file trên sẽ được liên kết (link) với các
thư viện cần thiết để tạo thành file .exe. Cụ thể ta cần phải liên kết với các thư viện sau:
Phần nhân mô phỏng được gọi là sim_std (như các file
libsim_std.a, sim_std.lib, etc)
Giao diện người dùng: cung cấp thư viện môi trường (file
libenvir.a, etc) và các tiện ích tkenv và cmdenv (libtkenv.a, libcmdenv.a, etc). Các file .o (hoặc .obj) phải được liên kết tới thư viện môi trường cùng với hoặc tkenv hoặc cmdenv.
Hình dưới đây cho chúng ta hình ảnh quá trình xử lý khi mô hình được xây dựng và hoạt động
*.ned là các file mô tả topo mạng cũng như cấu trúc của các modul, nó sự dụng ngôn ngữ NED (Nework Description ), là ngôn ngữ chuyên biệt dùng riêng cho OmNet++. Sự phát triển tiếp theo của NED là GNED (Graphic NED) làm cho việc mô tả topo mạng được trực quan hơn bằng cách dùng các công cụ đồ hoạ để mô tả. Các file ned sau đó được NEDC (NED compiler) dich sang code C++ để mô tả cấu trúc mạng sang ngôn ngữ C++ dưới dạng file *_.cc.
Các file xử lý của các simple moduls là phần cốt lõi khi viết chương trình mô phỏng và được viết bằng ngôn ngữ C++ bằng cách kế thừa các lớp có sẵn của OmNet++, người viết triển khai các hoạt động của mạng như định tuyến, xử lí gói tin đến và đi, xác định hành vi của các simple modul được mô tả trong *.ned khi có sự kiện xảy ra với nó….
File mô tả cấu trúc mạng *.ned File xử lý của simple modules *.cc
Thư viện lõi của chương trình mô phỏng *.lib / *.a
Thư viện giao diện người dùng
*.lib / *.a
File mô tả cấu trúc mạng sau khi dịch *_n.cc C++ compiling Linking Chương trình mô phỏng Chạy chương trình File cấu hình Omnetpp.ini File kết quả *.vec, *.sna, *.sca NEDC compling
Hình 4.3 Lược đồ xây dựng và chạy một chương trình mô phỏng OMNeT++
Thư viện lõi của chương trình mô phỏng được cung cấp bởi OmNet++, nó bao gồm rất nhiều các lớp và các hàm có sẵn phục vụ cho chương trình mô phỏng như các lớp cSimplemodul, cMessage..., các hàm ngẫu nhiên… Thư viện giao diện người dùng cung cấp giao diện cho chương trình mô phỏng. OmNet++ với các phiên bản gần đây sử dụng hai kiểu giao diện là giao diện dòng lệnh cmd (command) và giao diện đồ hoạ dựa trên tcl/tk. Giao diện đồ hoạ rất trực quan nên được ưa dùng hơn. Sau khi dịch và liên kết ta được một chương trình mô phỏng dựa trên nền OmNet++.
File omnetpp.ini để khởi động các giá trị cần thiết. omnetpp.ini do người lập trình viết, nó rất quan trọng để chạy một chương trình mô phỏng với các tham số được thay đổi để có được kết quả thống kê mong muốn.
Cuối cùng là các file kết quả bao gồm file *.vec là các file vector, nó là các biến thay đổi theo thời gian trong quá trình mô phỏng, giá trị của biến và thời gian tương ứng được lưu vào file này. Trong quá trình viết code sẽ xác định biến nào được lưu. File *.sna phục vụ cho quá trình sửa lỗi. File *.sca (scalar file) lưu các giá trị thống kê có được sau khi kết thúc mô phỏng, ví dụ như số cuộc gọi đã thực hiện số cuộc gọi bị từ chối… Để xử lí kết quả thống kê đạt được, ta có thể viết một chương trình nhỏ hoặc sử dụng các công cụ có sẵn. OmNet++ cung cấp chương trình Plove để vẽ các file *.vec, còn đối với các file *.sca ta có thể dùng một chương trình tính toán bất kì.