5.1 Gi ới thiệu chung về OMNeT++
5.1.5 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ộtchươ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ốngnhư 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 quá trình xử lý khi mô hình được xây dựng và hoạtđộng
Hình 5.3: Lược đồ xây dựng và chạy chương trình mô phỏng OMNeT++
File mô tả cấu trúc mạng *.ned
File xử lý của simple module *.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
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 Linking NEDC compiling
C++ compiling
*.ned là các file mô tả topo mạng cũng như cấu trúc của các module, 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ụđồ họađể mô tả. Các file ned sau đó được NEDC (NED compiler) dịch 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ạngnhưđị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ó….
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 cSimplemodule, 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ộtchươ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 đượclưu vào file này. Trong quá trình viết code sẽ xác định biến nào đượclư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ộtchương trình tính toán bất kì.