Ứng dụng OMNeT+++ và những điều cần biết
OMNet++
Tran
1
1. GIỚI THIỆU
1.1.
OMNeT++
là
gì?
OMNeT++
l
à
viế
t
t
ắ
t
của
cụm
t
ừ
Objective
Modular
Network
Testbed
in
C++.
OMNeT++
l
à
mộ
t
ứng
dụng
cung
cấp
cho
ngườ
i
sử
dụng
mô
i
trường
để
ti
ến
hành
mô
phỏng
hoạ
t
động
của
mạng.
Mục
đích
ch
í
nh
của
ứng
dụng
l
à
mô
phỏng
hoạ
t
động
mạng
thông
ti
n,
tuy
nh
i
ên
do
tí
nh
phổ
cập
và
linh
hoạ
t
của
nó,
OMNeT++
còn
được
sử
dụng
trong
nhiều
l
ĩnh
vực
khác
như
mô
phỏng
các
hệ
thống
thông
tin
phức
t
ạp,
các
mạng
k
i
ểu
hàng
đợ
i
(queueing
networks)
hay
các
kiến
t
rúc
phần
cứng...
OMNeT++
cung
cấp
sẵn
các
thành
phần
t
ương
ứng
vớ
i
các
mô
hình
thực
t
ế.
Các
thành
phần
này
(còn
được
gọ
i
là
các
modu
l
e)
được
l
ập
trình
theo
ngôn
ngữ
C++,
sau
đó
được
t
ập
hợp
l
ạ
i
thành
những
thành
phần
hay
những
mô
hình
l
ớn
hơn
bằng
mộ
t
ngôn
ngữ
bậc
cao
(NED).
OMNeT++
hỗ
trợ
giao
d
i
ện
đồ
hoạ,
t
ương
ứng
vớ
i
các
mô
hình
cấu
t
rúc
của
nó
đồng
t
hờ
i
phần
nhân
mô
phỏng
(simu
l
ation
kernel)
và
các
module
của
OMNeT++
cũng
rấ
t
dễ
dàng
nhúng
vào
trong
các
ứng
dụng
khác.
1.2.
Các
thành
phần
chính
của
OMNeT++
•
Thư
viện
phần
nhân
mô
phỏng
(simulat
i
on
kerne
l
)
•
Trình
biên
dịch
cho
ngôn
ngữ
mô
t
ả
hình
trạng
(topology
description
language)
-
NED
(nedc)
•
Trình
biên
t
ập
đồ
hoạ
(graphical
ne
t
work
editor)
cho
các
fi
l
e
NED
(GNED)
•
Giao
diện
đồ
hoạ
thực
h
i
ện
mô
phỏng,
các
li
ên
kế
t
bên
trong
các
file
thực
hiện
mô
phỏng
(Tkenv)
•
Giao
diện
dòng
l
ệnh
t
hực
hiện
mô
phỏng
(Cmdenv)
•
Công
cụ
(giao
diện
đồ
hoạ)
vẽ
đồ
thị
kế
t
quả
vec
t
or
ở
đầu
ra
(Plove)
•
Công
cụ
(giao
diện
đồ
hoạ)
mô
t
ả
kế
t
quả
vô
hướng
ở
đầu
ra
(Scalars)
•
Công
cụ
tài
li
ệu
hoá
các
mô
hình
•
Các
ti
ện
ích
khác
•
Các
t
à
i
li
ệu
hướng
dẫn,
các
v
í
dụ
mô
phỏng...
1.3.
Ứng
dụng
OMNeT++
l
à
mộ
t
công
cụ
mô
phỏng
các
hoạ
t
động
mạng
bằng
các
module
được
th
i
ế
t
kế
hướng
đố
i
t
ượng.
OMNeT++
thường
được
sử
dụng
trong
các
ứng
dụng
chủ
yếu
như
:
•
Mô
hình
hoạ
t
động
của
các
mạng
thông
tin
OMNet++
Tran
2
•
Mô
hình
giao
thức
•
Mô
hình
hoá
các
mạng
k
i
ểu
hàng
đợ
i
•
Mô
h
ì
nh
hoá
các
hệ
thống
đa
bộ
vi
xử
lý
(mu
lti
processer)
hoặc
các
hệ
thống
phần
cứng
theo
mô
h
ì
nh
phân
tán
khác
(distribu
t
ed
hardware
systems)
•
Đánh
giá
kiến
trúc
phần
cứng
•
Đánh
giá
hiệu
quả
hoạ
t
động
của
các
hệ
thống
phức
t
ạp...
1.4.
Mô
hình
trong
OMNeT++
Mộ
t
mô
hình
t
rong
OMNeT++
bao
gồm
các
module
l
ồng
nhau
có
cấu
t
rúc
phân
cấp.
Độ
sâu
của
của
các
module
l
ồng
nhau
l
à
không
giớ
i
hạn,
đ
i
ều
này
cho
phép
ngườ
i
sử
dụng
có
t
hể
biểu
diễn
các
cấu
t
rúc
l
ogic
của
các
hệ
thống
trong
t
hực
t
ế
bằng
các
cấu
trúc
mô
hình.
Các
module
trao
đổ
i
thông
ti
n
vớ
i
nhau
thông
qua
việc
gử
i
các
message
(message).
Các
message
này
có
t
hể
có
cấu
trúc
phức
t
ạp
tuỳ
ý.
Các
module
có
thể
gử
i
các
message
này
t
heo
hai
cách,
mộ
t
l
à
gử
i
trực
ti
ếp
t
ớ
i
địa
chỉ
nhận,
ha
i
là
gử
i
đ
i
t
heo
mộ
t
đường
dẫn
được
định
sẵn,
thông
qua
các
cổng
và
các
kế
t
nối.
Các
module
có
thể
có
các
tham
số
của
riêng
nó.
Các
tham
số
này
có
thể
được
sử
dụng
để
chỉnh
sửa
các
thuộc
tính
của
modu
l
e
và
để
biểu
diễn
cho
topo
l
ogy
của
mô
hình.
Các
module
ở
mức
thấp
nhấ
t
trong
cấu
trúc
phân
cấp
đóng
gói
các
thuộc
tính.
Các
module
này
được
co
i
l
à
các
module
đơn
giản,
và
chúng
được
l
ập
trình
trong
ngôn
ngữ
C++
bằng
cách
sử
dụng
các
thư
viện
mô
phỏng.
OMNet++
Tran
3
2. TỔNG QUAN
2.1.
Khái
niệm
mô
hình
hoá
OMNeT++
cung
cấp
cho
ngườ
i
sử
dụng
những
công
cụ
hiệu
quả
để
mô
t
ả
cấu
trúc
của
các
hệ
thống
thực
t
ế.
Các
modu
l
e
l
ồng
nhau
có
cấu
trúc
phân
cấp
Các
modu
l
e
là
các
đố
i
t
ượng
cụ
thể
của
các
k
i
ểu
module
Các
modu
l
e
trao
đổ
i
thông
tin
bằng
các
message
qua
các
kênh
Các
tham
số
của
module
li
nh
hoạ
t
Ngôn
ngữ
mô
t
ả
topology
2.1.1.
Cấu
trúc
phân
cấp
của
các
module
Mộ
t
mô
hình
trong
OMNeT++
chứa
các
modu
l
e
l
ồng
nhau
có
cấu
trúc
phân
cấp,
trao
đổ
i
thông
tin
vớ
i
nhau
bằng
cách
gử
i
các
message.
Mỗ
i
mô
h
ì
nh
này
thường
b
i
ểu
d
i
ễn
cho
mộ
t
hệ
thống
mạng.
Modu
l
e
mức
cao
nhấ
t
trong
cấu
trúc
phân
cấp
được
gọ
i
l
à
module
hệ
thống.
Module
này
có
thể
chứa
các
module
con,
các
module
con
cũng
có
thể
chứa
các
module
con
của
riêng
nó.
Độ
sâu
phân
cấp
đố
i
vớ
i
các
module
là
không
giớ
i
hạn,
đ
i
ều
này
cho
phép
ngườ
i
sử
dụng
có
t
hể
dễ
dàng
biểu
diễn
mộ
t
cấu
t
rúc
l
ogic
của
mộ
t
hệ
thống
trong
thực
t
ế
bằng
cấu
trúc
phân
cấp
của
OMNeT++.
Cấu
trúc
của
mô
h
ì
nh
có
thể
được
mô
t
ả
bằng
ngôn
ngữ
NED
của
OMNeT++
module
hệ
thống
module
đơn
g
i
ản
module
kế
t
hợp
Hình
I-2.1
-
Các
module
đơn
g
i
ản
và
kết
hợp
Các
modu
l
e
có
thể
chứa
nhiều
modu
l
e
con
và
được
gọ
i
là
module
kế
t
hợp.
Các
module
đơn
g
i
ản
là
các
module
có
cấp
thấp
nhấ
t
trong
cấu
trúc
phân
cấp.
Các
module
đơn
giản
chứa
các
thuậ
t
toán
của
mô
hình.
Ngườ
i
sử
dụng
triển
khai
các
module
đơn
giản
bằng
ngôn
ngữ
C++,
sử
dụng
các
t
hư
viện
mô
phỏng
của
OMNeT++.
2.1.2.
Kiểu
module
Tấ
t
cả
các
module
dù
là
đơn
g
i
ản
hay
phức
t
ạp
đều
là
các
đố
i
t
ượng
cụ
thể
của
các
kiểu
module.
Trong
khi
mô
t
ả
các
mô
hình,
ngườ
i
sử
dụng
định
nghĩa
ra
các
k
i
ểu
OMNet++
Tran
4
module;
các
đố
i
t
ượng
cụ
thể
của
các
kiểu
module
này
được
sử
dụng
như
các
thành
phần
của
các
kiểu
module
phức
t
ạp
hơn.
Cuố
i
cùng,
ngườ
i
sử
dụng
t
ạo
module
hệ
thống
như
mộ
t
đố
i
t
ượng
cụ
thể
của
k
i
ểu
module
đã
được
định
nghĩa
trước
đó,
t
ấ
t
cả
các
module
của
mạng
đều
là
module
con
(hoặc
là
con
của
module
con)
của
module
hệ
thống.
Kh
i
mộ
t
kiểu
module
được
sử
dụng
như
mộ
t
khố
i
dựng
sẵn
(building
block),
sẽ
không
thể
phân
biệ
t
đó
là
mộ
t
module
đơn
g
i
ản
hay
phức
t
ạp.
Đ
i
ều
này
cho
phép
ngườ
i
sử
dụng
có
t
hể
t
ách
các
module
đơn
giản
ra
thành
nhiều
module
đơn
giản
được
nhúng
trong
mộ
t
module
kế
t
hợp,
và
ngược
l
ạ
i
có
thể
t
ập
hợp
các
chức
năng
của
mộ
t
module
kế
t
hợp
trong
mộ
t
module
đơn
g
i
ản
mà
không
ảnh
hưởng
g
ì
đến
các
kiểu
module
đã
được
ngườ
i
sử
dụng
định
nghĩa.
Kiểu
module
có
thể
được
l
ưu
trữ
trong
mộ
t
file
riêng
rẽ.
Đ
i
ều
này
cho
phép
ngườ
i
sử
dụng
có
t
hể
nhóm
các
kiểu
module
l
ạ
i
và
t
ạo
ra
mộ
t
thư
viện
thành
phần
2.1.3.
Message,
cổng,
liên
kết
Các
modu
l
e
trao
đổ
i
thông
ti
n
bằng
việc
gử
i
các
message.
Trong
thực
t
ế,
message
có
dạng
khung
(frame)
hoặc
là
các
gói
ti
n
(packe
t
)
được
truyền
đ
i
t
rong
mạng.
Các
message
có
thể
có
cấu
t
rúc
phức
t
ạp
tuỳ
ý.
Các
module
đơn
giản
có
t
hể
gử
i
các
message
đ
i
mộ
t
cách
trực
ti
ếp
đến
vị
trí
nhận
hoặc
gử
i
đ
i
t
heo
mộ
t
đường
dẫn
định
sẵn
thông
qua
các
cổng
và
các
li
ên
kết.
“Thờ
i
gian
mô
phỏng
địa
phương”
(local
simulation
ti
me)
của
mộ
t
module
t
ăng
lên
khi
module
nhận
được
mộ
t
message.
Message
có
thể
đến
t
ừ
mộ
t
module
khác
hoặc
đến
t
ừ
cùng
mộ
t
module
(message
của
chính
bản
thân
module
-
self-message
được
dùng
để
thực
hiện
bộ
định
t
hời).
Cổng
(gate)
là
các
giao
ti
ếp
vào
ra
của
module.
Message
được
gử
i
đ
i
qua
các
cổng
ra
và
được
nhận
vào
thông
qua
các
cổng
vào.
Mỗ
i
kế
t
nố
i
(connection)
hay
còn
gọ
i
là
li
ên
kế
t
(link)
được
t
ạo
bên
trong
mộ
t
mức
đơn
t
rong
cấu
trúc
phân
cấp
của
các
module:
bên
trong
mộ
t
module
kế
t
hợp,
mộ
t
kế
t
nố
i
có
t
hể
được
t
ạo
ra
g
i
ữa
các
cổng
t
ương
ứng
của
ha
i
module
con,
hoặc
giữa
cổng
của
module
con
vớ
i
cổng
của
module
kế
t
hợp.
module
cha
module
cha
S1
S2
S1
S2
module
con
kế
t
nố
i
vớ
i
nhau
module
con
kế
t
nố
i
vớ
i
module
cha
Hình
I-2.2
-
Các
kết
nố
i
Tương
ứng
vớ
i
cấu
t
rúc
phân
cấp
của
mộ
t
mô
hình,
các
message
thường
di
chuyển
qua
mộ
t
l
oạ
t
các
kế
t
nố
i
vớ
i
đ
i
ểm
bắ
t
đầu
và
kế
t
thúc
là
các
module
đơn
giản.
Tập
các
kế
t
nố
i
đ
i
t
ừ
mộ
t
module
đơn
giản
và
đến
mộ
t
module
đơn
giản
được
gọ
i
là
route.
Các
module
kế
t
hợp
hoạ
t
động
giống
như
các
“cardboard
box”
trong
mô
h
ì
nh,
“trong
suốt”
trong
việc
chuyển
ti
ếp
các
message
giữa
các
thành
phần
bên
trong
và
thế
giớ
i
bên
ngoà
i
.
OMNet++
Tran
5
2.1.4.
Mô
hình
truyền
gói
tin
Mộ
t
kế
t
nố
i
có
thể
có
ba
t
ham
số
đặc
trưng.
Những
tham
số
này
rấ
t
thuận
ti
ện
cho
các
mô
h
ì
nh
mô
phỏng
mạng
thông
tin
nhưng
không
hữu
dụng
l
ắm
cho
các
kiểu
mô
hình
khác.
Ba
tham
số
này
bao
gồm:
•
Độ
trễ
đường
t
ruyền
(propagation
delay)
tính
bằng
s
-
giây.
•
Tỉ
số
l
ỗ
i
bit,
được
tính
bằng
số
l
ỗi/bit.
•
Tỉ
số
dữ
li
ệu,
được
tính
bằng
số
bit/s.
Các
tham
số
này
l
à
t
uỳ
chọn.
Giá
t
rị
của
các
tham
số
này
l
à
khác
nhau
t
rên
t
ừng
kế
t
nối,
phụ
thuộc
vào
kiểu
của
li
ên
kế
t
(hay
còn
gọ
i
l
à
k
i
ểu
của
kênh
t
ruyền
-
channe
l
type).
Độ
trễ
đường
t
ruyền
là
t
ổng
thờ
i
gian
đến
của
message
bị
trễ
đ
i
khi
truyền
qua
kênh.
Tỉ
số
l
ỗ
i
b
it
ảnh
hưởng
đến
quá
trình
truyền
message
qua
kênh.
Tỉ
số
này
l
à
xác
suấ
t
các
b
it
bị
truyền
sai.
Do
đó
xác
suấ
t
để
mộ
t
message
độ
dà
i
n
b
it
truyền
đ
i
ch
í
nh
xác
là:
P(message
gử
i
đ
i
được
nhận
chính
xác)
=
(1
-
ber)n
trong
đó
ber
l
à
t
ỉ
số
l
ỗ
i
b
it
và
n
l
à
số
bit
của
message.
Các
message
truyền
đ
i
đều
có
mộ
t
cờ
l
ỗi,
cờ
này
sẽ
được
t
h
i
ế
t
l
ập
kh
i
việc
truyền
message
có
l
ỗi.
Tỉ
số
dữ
li
ệu
được
tính
theo
đơn
vị
bit/s,
và
nó
được
sử
dụng
để
tí
nh
thờ
i
gian
để
truyền
mộ
t
gói
tin.
Kh
i
t
ỉ
số
này
được
sử
dụng,
quá
trình
gử
i
message
đ
i
trong
mô
hình
sẽ
t
ương
ứng
vớ
i
v
i
ệc
truyền
bit
đầu
ti
ên
và
message
được
tính
l
à
đến
nơ
i
sau
kh
i
bên
nhận
đã
nhận
được
b
it
cuố
i
cùng.
A
B
Message
gử
i
đ
i
truyền
bị
trễ
Độ
trễ
đường
t
ruyền
t
A
t
B
Message
nhận
được
Hình
I-2.3
-
Truyền
message
OMNet++
Tran
6
2.1.5.
Tham
số
Các
module
có
thể
các
tham
số.Các
tham
số
này
có
thể
được
đặ
t
g
i
á
t
rị
trong
các
f
i
le
NED
hoặc
các
file
cấu
h
ì
nh
ompnetpp.ini.
Các
tham
số
này
có
t
hể
được
dùng
để
thay
đổ
i
các
thuộc
tính
của
các
module
đơn
g
i
ản
hoặc
dùng
để
biểu
d
i
ễn
cho
t
opo
l
ogy
của
mô
h
ì
nh.
Các
tham
số
có
t
hể
có
k
i
ểu
là
chuỗi,
số
học,
giá
t
rị
logic
hoặc
cũng
có
t
hể
chứa
cây
dữ
li
ệu
XML
(XML
data
tree).
Các
biến
kiểu
số
trong
các
biểu
thức
có
thể
nhận
giá
trị
t
ừ
các
tham
số
khác,
gọ
i
hàm,
sử
dụng
các
biến
ngẫu
nhiên
t
ừ
các
nguồn
phân
tán
hoặc
nhận
giá
trị
trực
ti
ếp
được
nhập
vào
bở
i
ngườ
i
sử
dụng.
Các
tham
số
có
k
i
ểu
số
có
t
hể
được
dùng
để
cấu
h
ì
nh
topology
rấ
t
dễ
dàng.
Nằm
t
rong
các
module
kế
t
hợp,
các
tham
số
này
có
t
hể
được
dùng
để
chỉ
ra
số
module
con,
số
cổng
giao
ti
ếp
và
cách
các
kế
t
nố
i
nộ
i
bộ
được
t
ạo
ra.
2.1.6.
Phương
pháp
mô
tả
topology
Ngườ
i
sử
dụng
dùng
ngôn
ngữ
NED
(Network
Descr
i
ption)
để
mô
t
ả
cấu
t
rúc
của
các
mô
hình
2.2.
Lập
trình
thuật
toán
Các
modu
l
e
đơn
giản
có
thể
chứa
các
thuậ
t
toán
như
các
hàm
của
C++.
Sự
li
nh
hoạ
t
và
sức
mạnh
của
C++,
kế
t
hợp
vớ
i
các
thư
viện
mô
phỏng
của
OMNeT++
t
ạo
đ
i
ều
kiện
dễ
dàng
cho
ngườ
i
sử
dụng.
Các
l
ập
trình
viên
mô
phỏng
có
thể
chọn
l
ựa
v
i
ệc
mô
t
ả
theo
sự
kiện
hay
t
heo
ti
ến
t
rình,
có
thể
dễ
dàng
sử
dụng
những
khái
n
i
ệm
của
l
ập
trình
hướng
đố
i
t
ượng
(như
đa
hình,
kế
thừa)
và
thiế
t
kế
các
mẫu
thử
(pattern)
để
mở
rộng
chức
năng
của
quá
trình
mô
phỏng.
Các
đố
i
t
ượng
mô
phỏng
(message,
module,
queue...)
được
thể
hiện
qua
các
l
ớp
của
C++.
Mộ
t
số
l
ớp
cơ
bản
trong
thư
viện
mô
phỏng
của
OMNeT++
:
•
Module,
cổng,
li
ên
kết...
•
Các
tham
số
•
Message
•
Các
l
ớp
Con
t
ainer
(mảng,
hàng
đợi...)
•
Các
l
ớp
Da
t
a
Collection
Các
l
ớp
này
có
t
hể
được
sử
dụng
như
những
công
cụ
cho
phép
ngườ
i
sử
dụng
có
thể
duyệ
t
qua
t
ấ
t
cả
các
đố
i
t
ượng
khi
chạy
t
hử
mô
hình
đồng
thờ
i
h
i
ển
thị
thông
tin
về
chúng
như
tên
của
đố
i
t
ượng,
tên
l
ớp,
các
biến
t
rạng
thái
và
nộ
i
dung
bên
trong.
Đặc
đ
i
ểm
này
cũng
cho
phép
t
ạo
ra
các
mô
h
ì
nh
mô
phỏng
có
giao
diện
đồ
hoạ
(GUI)
vớ
i
phần
cấu
trúc
bên
t
rong
được
che
đi.
thông tin tài liệu
Tài liệu cung cấp những kiến thức cơ bản về Ứng dụng OMNeT+++ mà bạn cần biết
tài liệu mới trong mục này
tài liệu hot trong mục này