Tải bản đầy đủ (.docx) (23 trang)

MÔ PHỎNG MÔ HÌNH MẠNG BẰNG PHẦN MỀM OMNET++

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.1 MB, 23 trang )

Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

BÁO CÁO LAB 1
MÔ PHỎNG MÔ HÌNH MẠNG BẰNG PHẦN MỀM
OMNET++
Môn học An toàn mạng không dây và di động
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Trang 1 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

I. YÊU CẦU 1 – Tìm hiểu phần mềm OMNET++
1. Làm quen với OMNET++ bằng xây dựng mô hình mạng tictoc đầu tiên.
Bước 1: Tạo project với tên là demo_tictoc

Bước 2: Tạo tập tin mô phỏng mạng tictoc1.ned

Trang 2 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh


Bước 3: Chuyển qua tab Source và viết code
simple Computer
{
gates:
input in;
output out;
}
network Network
{
@display("bgb=411,206");
submodules:
computer1: Computer {
@display("p=78,153");
}
computer2: Computer {
@display("p=273,55");
}
connections:
computer1.out --> computer2.in;
computer2.out --> computer1.in;
}
Bước 4: Tạo tập tin Source cho module Computer(Source File) tên computer.cc
Trang 3 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Cùng với code


Trang 4 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class Computer : public cSimpleModule
{
protected:
// The following redefined virtual function holds the algorithm.
virtual void initialize();
virtual void handleMessage(cMessage *msg);
};
Define_Module(Computer);
void Computer::initialize()
{
//Nếu tên của computer là computer1 thì sẽ gửi tin nhắn trước.
if (strcmp("computer1", getName()) == 0)
{
cMessage *msg = new cMessage("tictocMsg");
send(msg, "out");
}
}
void Computer::handleMessage(cMessage *msg)
{

send(msg, "out");
}

Trang 5 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Bước 5: Build Project

Bước 6: Tạo và cấu hình tập tin .ini

Tạo tập tin *.ini

Trang 6 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Nhấn Next > Next. Ta được

Trang 7 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ

Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Hoặc chỉnh lại bằng code trong tập tin .ini với tên network đã khai báo trong tập tin
tictoc1.ned

Bước 7: Chạy mô phỏng

Trang 8 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Bấm Run để chạy mô phỏng, Stop để dừng.

2. Cải tiến mô hình mạng TicToc.
a. Thiết lập thêm icon cho computer1 và computer2
Sửa lại source code tập tin tictoc1.ned như sau

Trang 9 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Sau đó ta được

b. Giới hạn số gói tin gửi đi giữa computer1 và computer2 là 10 gói.


Trang 10 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Khai báo thêm biến counter.
Trong hàm initialize() khởi tạo giá trị cho counter = 10
Trong hàm handleMessage(), giảm giá trị counter xuống 1 đơn vị mỗi khi có gói tin
đến. Nếu couter = 0 thông báo computerX đã hết gói tin, ngược lại in ra số gói tin
còn lại.

Trang 11 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

c. Thêm cấu hình vào tệp tin omnetpp.ini để giới hạn số lượng gói tin.
Tạo tập tin tictoc4.ned với code như sau.

Tạo tập tin txc4.cc và code như sau.
Trang 12 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ

Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Sửa lại tập tin omnetpp.ini

Kết quả

Trang 13 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

d. Kế thừa
Tạo tập tin tictoc5.ned với code như sau

Trang 14 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Tạo tập tin txc5.cc giống với txc4.cc nhưng thay Txc4 thành Txc5

Trang 15 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ

Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Chỉnh lại tập tin omnetpp.ini

Build và chạy mô phỏng

Trang 16 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

II. Yêu cầu 2 – Thực hành tictoc tutorial để làm quen với môi trường Omnet++
1. Lập mô hình xử lý trễ.
Trong các mô hình trước, tic và toc đã gửi ngay tin nhắn ngay khi đã nhận. Ở đây
chúng ta sẽ chờ một khoảng thời gian: tic và toc sẽ giữ thông điệp trong 1s mô phỏng
sau đó gửi lại cho bên kia. Trong OMNeT++ thời gian đó đạt được bằng mô-đun hẹn
giờ tự gửi tin nhắn.
Tạo tập tin tictoc6.ned tương tự tập tin tictoc1.ned

Trang 17 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Tạo tập tin txc6.cc


Trang 18 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Khai báo thêm 2 biến con trỏ là event và tictocMsg.
Biến event sẽ được gửi khi đến một thời gian nhất định
Biến tictocMsg là biến lưu trữ giá trị tin nhắn.

Trang 19 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Trong hàm initialize() khai báo thông điệp “event” cho biến event, và sau đó ưu tiên
máy có tên tic sẽ gửi thông điệp trước.
Tại dòng scheduleAt(5.0, event). Hàm này có chức năng lập lịch, hẹn một khoảng thời
gian t ở đây là 5.0s rồi kích hoạt sự kiện handleMessage() với tham số là event.
Trong hàm handleMessage() sẽ kiểm tra xem nếu là thông điệp tự gửi của máy tic:
if(msg == event) sẽ gửi về máy Toc thông điệp “tictocMsg” được lưu trong biến
tictocMsg.
Khi thông điệp đến máy Toc hàm handleMessage() sẽ chạy trường hợp else bên trên
lúc này mã chạy đến dòng scheduleAt(simTime()+1.0, event). Bộ lập lịch sẽ chờ một
khoảng thời gian là 1.0s rồi sẽ tự kích hoạt sự kiện handleMessage(), sau đó sẽ là máy
Toc gửi thông điệp đến máy Tic và quá trình sẽ lặp đi lặp lại mãi.
Kết quả.

Trang 20 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

2. Số ngấu nhiên và tham số.
Trong bước này chúng ta sẽ giới thiệu số ngẫu nhiên. Chúng ta thay đổi độ trễ từ 1s
sang một giá trị ngẫu nhiên có thể được thiết lập từ tập tin NED hoặc omnetpp.ini.
Các tham số của mô đun có thể trả về các biến ngẫu nhiên; tuy nhiên, để sử dụng tính
năng này chúng ta phải đọc tham số trong handleMessage() mỗi khi chúng ta sử
dụng nó.
Tạo tập tin tictoc7.ned

Trang 21 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ
Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Với biến delayTime là một biến có giá trị ngẫu nhiên.
Tạo tập tin txc7.cc

Trang 22 / 23


Báo cáo Lab 1
Sinh viên 1: 14520541 – Đỗ Bá Tứ Mỹ

Sinh viên 2: 14520842 – Nguyễn Hoàng Thanh

Hàm uniform() tạo ra giá trị ngẫu nhiên trong [0;1], nếu giá trị < 0,1 thì giả lập bị mất
gói tin (thông điệp).
Biến delayTime sẽ có giá trị ngẫu nhiên, và mỗi lần lập lịch thì thời gian sẽ khác
nhau chứ không cố định như bước trên.
Chỉnh sửa tệp omnetpp.ini

Tạo ra giá trị ngẫu nhiên cho biến delayTime.
Trang 23 / 23



×