Tải bản đầy đủ (.pdf) (145 trang)

Báo cáo thực tập chuyên ngành

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 (2.01 MB, 145 trang )

OMNet++

Báo cáo th c tập chuyên ngành

PH N I - T NG QUAN V OMNET++ .....................................................................5
1. GI I THI U ..........................................................................................................5
1.1. OMNeT++ là gì?.............................................................................................5
1.2. Các thành ph n chính c a OMNeT++ ............................................................5
1.3. ng d ng ........................................................................................................5
1.4. Mơ hình trong OMNeT++ ..............................................................................6
2. T NG QUAN........................................................................................................7
2.1. Khái ni m mơ hình hoá...................................................................................7
2.1.1. C u trúc phân c p c a các module...........................................................7
2.1.2. Kiểu module.............................................................................................7
2.1.3. Message, c ng, liên k t............................................................................8
2.1.4. Mô hình truy n gói tin .............................................................................9
2.1.5. Tham s ..................................................................................................10
2.1.6. Ph ng pháp mơ t topology .................................................................10
2.2. Lập trình thuật tốn.......................................................................................10
2.3. S d ng OMNeT++ ......................................................................................11
2.3.1. Xây d ng và ch y th các mơ hình mơ ph ng ......................................11
2.3.2. H th ng file ..........................................................................................12
3. NGÔN NG NED...............................................................................................14
3.1 T ng quan v NED ........................................................................................14
3.1.1. Các thành ph n c a ngôn ng mơ t NED.............................................14
3.1.2. Các từ khố ............................................................................................14
3.1.3. Đặt tên....................................................................................................14
3.1.4. Chú thích................................................................................................15
3.2. Các chỉ dẫn import ........................................................................................15
3.3. Khai báo các kênh.........................................................................................15
3.4. Khai báo các module đ n gi n......................................................................16


3.4.1. Các tham s c a module đ n gi n .........................................................16
3.4.2. Các c ng c a module đ n gi n ..............................................................17
3.5. Khai báo module k t h p ..............................................................................18
3.5.1. Các tham s và c ng c a module k t h p..............................................19
3.5.2. Các module con......................................................................................19
3.5.3. Tham s tên kiểu module con ................................................................20
3.5.4. Gán giá trị cho các tham s c a các module con ...................................22
3.5.5. Khai báo kích th c c a các vector c ng c a module con ....................23
3.5.6. Khai báo gatesizes và tham s có đi u ki n...........................................23
3.5.7. K t n i....................................................................................................24
3.6. Khai báo m ng ..............................................................................................27
3.7. Các biểu th c ................................................................................................27
3.7.1. Hằng s ..................................................................................................28
3.7.2. Tham chi u.............................................................................................28
3.7.3. Các toán t .............................................................................................29
3.7.4. Toán t sizeof() và index .......................................................................30
3.7.5. Toán t xmldoc() ...................................................................................30
3.7.6. XML và XPath.......................................................................................31
3.7.7. Hàm........................................................................................................31
3.7.8. Giá trị ngẫu nhiên...................................................................................32
3.7.9. Khai báo m t hàm m i...........................................................................33
4. GI I THI U GNED ............................................................................................35
4.1. Giao di n.......................................................................................................35

Trang 1


OMNet++

Báo cáo th c tập chuyên ngành


4.2. M t s thao tác c b n ..................................................................................38
4.3. Làm vi c v i nhi u file NED - Các ch c năng chỉnh s a nâng cao .............43
5. MODULE Đ N GI N........................................................................................50
5.1 Module đ n gi n trong OMNeT++................................................................50
5.2 Các s ki n trong OMNeT++ ........................................................................50
5.3 Mơ hình hố ho t đ ng truy n gói tin............................................................50
5.4 Khai báo kiểu module đ n gi n .....................................................................51
5.4.1 T ng quan ...............................................................................................51
5.4.2 Đăng ký kiểu module ..............................................................................52
5.5 Xây d ng hàm cho Module............................................................................52
5.5.1 Hàm handleMessage() ............................................................................52
5.5.2 Hàm activity() .........................................................................................53
5.5.3 Hàm initialize() và finish()......................................................................54
5.6 G i và nhận các message ...............................................................................54
5.6.1 G i các message .....................................................................................54
5.6.2 Broadcasts ...............................................................................................54
5.6.3 G i có đ tr (Delayed sending) .............................................................55
5.6.4 G i tr c ti p message .............................................................................55
5.6.5 G i định kỳ .............................................................................................55
5.7 Truy nhập các c ng và k t n i .......................................................................55
5.7.1 Đ i t ng c ng (gate object) ..................................................................55
5.7.2 Các tham s k t n i.................................................................................56
5.8 T đ ng t o module .......................................................................................56
6. MESSAGE...........................................................................................................58
6.1. Message và Packet ........................................................................................58
6.1.1. L p cMessage ........................................................................................58
6.1.2. Self-Message..........................................................................................59
6.1.3. Mô hình hố gói tin................................................................................60
6.1.4. Đóng gói (Encapsulation) ......................................................................62

6.1.5. Thêm đ i t ng và tham s ...................................................................63
6.2. Định nghĩa message ......................................................................................64
6.2.1. Gi i thi u ...............................................................................................64
6.2.2. S d ng enum ........................................................................................66
6.2.3. Kh i t o cho m t message .....................................................................66
6.2.4. Quan h k thừa và h p thành ...............................................................69
6.2.5. S d ng các kiểu có sẵn c a C++ ..........................................................71
6.2.6. Thay đ i các file C++ ............................................................................72
6.2.7. S d ng STL trong các l p message .....................................................75
7. CH Y CÁC NG D NG OMNeT++ ...............................................................78
7.1 S d ng gcc....................................................................................................79
7.2 S d ng Microsoft Visual C++......................................................................79
8. MƠ HÌNH Đ N GI N - TICTOC......................................................................80
Ph n II – T NG QUAN V WLAN...........................................................................86
1. GI I THI U ........................................................................................................86
1.1 u điểm c a m ng LAN không dây ..............................................................86
1.2 M t s ng d ng th c t c a WLAN t i Vi t Nam.......................................88
1.2.1 ng d ng trong Wireless LAN Telemedicine ........................................88
1.2.2 H th ng WiFi VNN...............................................................................90
2. CÁC MƠ HÌNH M NG C B N......................................................................91
2.1 Mơ hình c s (Infrastructure network).........................................................91

Trang 2


OMNet++

Báo cáo th c tập chuyên ngành

2.1.1 Tập h p dịch v c b n (BSS - Basic Service Set).................................92

2.1.2 Tập h p các dịch v m r ng (ESS Extended Service Set)....................92
2.2 Mơ hình Adhoc đ c lập (Independent network) ............................................96
3. HO T Đ NG C A CÁC CHU N LIÊN QUAN .............................................97
3.1 Các băng t n ISM...........................................................................................97
3.1.1 Băng t n ISM (ISM bands) .....................................................................97
3.1.2 Băng t n UNII (UNII bands) ..................................................................98
3.2 Các chu n 802.11 (IEEE 802.11 family) .......................................................99
3.2.1 IEEE 802.11............................................................................................99
3.2.2 IEEE 802.11b..........................................................................................99
3.2.3 IEEE 802.11a ..........................................................................................99
3.2.4 IEEE 802.11g..........................................................................................99
3.2.5 M t s chu n khác trong h IEEE 802.11 ............................................100
4. MƠ HÌNH C U TRÚC C A M NG WLAN .................................................103
4.1 T ng vật lý (PHY layer)...............................................................................103
4.1.1 Các kỹ thuật tr i ph .............................................................................104
4.1.2 C u trúc khung PLCP (General PLCP Frame Format).........................108
4.1.3 PLCP trong d i ph dịch t n FHSS ......................................................109
4.1.4 PLCP cho DSSS và HR/DSSS..............................................................109
4.1.5 PLCP trong OFDM ...............................................................................110
4.1.6 Th t c truy n PLCP ............................................................................110
4.1.7 Th t c nhận PLCP...............................................................................111
4.1.8 T ng PMD ( PMD sublayer)................................................................112
4.2 T ng kiểm soát truy nhập đ ng truy n – MAC .........................................113
4.2.1 DCF - Distributed Coordination Function ............................................113
4.2.2 PCF – Point Coordination Function......................................................116
4.2.3 Phân tích các ho t đ ng c b n.............................................................116
4.3 T ng m ng và các giao th c dẫn đ ng trong WLAN................................121
4.3.1 Các giao th c tìm đ ng trong m ng Ad-hoc ......................................122
4.3.2 Các giao th c m r ng cho MANET....................................................123
4.3.3 Mô t chi ti t giao th c AODV.............................................................125

PH N III – PHÂN TÍCH THI T K
NG D NG MƠ PH NG M NG ADHOC
....................................................................................................................................130
1. MƠ HÌNH CHUNG...........................................................................................130
2. C U TRÚC H TH NG ..................................................................................131
2.1 T ng vật lý (Physical model) .......................................................................131
2.2 T ng đi u khiển truy nhập (Mac Layer) ......................................................131
2.3 T ng m ng (Routing model)........................................................................133
2.4 Mobility models ...........................................................................................136
2.5 T ng ng d ng .............................................................................................137
2.6 Liên k t gi a các t ng ..................................................................................138
2.7 Thi t lập các thông s cho h mô ph ng......................................................138
2.7.1 Thông s c a Map và Hosts..................................................................138
2.7.2 Physical Layer.......................................................................................139
2.7.3 Mac Layer .............................................................................................139
2.7.4 Routing..................................................................................................139
2.7.5 Application............................................................................................140
3. K T QU TH C HI N ...................................................................................141
3.1 Topo .............................................................................................................141
3.2 G i các gói tin Hello....................................................................................142

Trang 3


OMNet++

Báo cáo th c tập chuyên ngành

3.3 G i gói tin RREQ ........................................................................................142
Ph n IV - PH L C ..................................................................................................143

1. SO SÁNH OMNET++ VÀ NS/2.......................................................................143
2.TÀI LI U THAM KH O ..................................................................................145

Trang 4


OMNet++

Báo cáo th c tập chuyên ngành

PH N I - T NG QUAN V OMNET++
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 tin, tuy nhiê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 kiểu hàng đ i (queueing networks) hay các ki n trú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 module) đ 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 di n đ ho , t ng ng v i các mơ
hình c u trúc c a nó đ ng th i ph n nhân mô ph ng (simulation 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++




















1.3.

Th vi n ph n nhân mơ ph ng (simulation kernel)
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 network editor) cho các file NED (GNED)
Giao di n đ ho th c hi 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 th c hi n mơ ph ng (Cmdenv)
Công c (giao di n đ ho ) v đ thị k t qu vector

đ u ra (Plove)

Công c (giao di n đ ho ) mô t k t qu vô h


đ u ra (Scalars)

ng

Công c tài li u hố 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...

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 thi 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
Trang 5


OMNet++












Báo cáo th c tập chun ngành

Mơ hình giao th c
Mơ hình hố các m ng kiểu hàng đ i
Mơ hình hố các h th ng đa b vi x lý (multiprocesser) hoặc các h th ng
ph n c ng theo mơ hình phân tán khác (distributed 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 trong OMNeT++ bao g m các module l ng nhau có c u trú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ó thể biểu di n các c u trúc logic c a các h th ng trong th c t bằng các c u
trúc mơ hình. Các module trao đ i thông tin v i nhau thông qua vi c g i các message
(message). Các message này có thể có c u trúc ph c t p tuỳ ý. Các module có thể g i
các message này theo hai cách, m t là g i tr c ti p t i địa chỉ nhận, hai là g i đi theo
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 module và để biểu di n cho topology 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 coi 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.

Trang 6



OMNet++

Báo cáo th c tập chuyên ngành

2. T NG QUAN
2.1. Khái ni m mơ hình hố
OMNeT++ cung c p cho ng
c a các h th ng th c t .

i s d ng nh ng công c hi u qu để mô t c u trúc

Các module l ng nhau có c u trúc phân c p
Các module là các đ i t

ng c thể c a các kiểu module

Các module trao đ i thông tin bằng các message qua các kênh
Các tham s c a module linh 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 module 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 biểu di n
cho m t h th ng m ng. Module 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ó thể d dàng biểu di n m t c u trúc logic
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ể đ
module h th ng


c mơ t bằng ngơn ng NED c a OMNeT++
module đ n gi n

module k t h p

Hình I-2.1 - Các module đơn giản và kết hợp
Các module có thể ch a nhi u module con và đ c g i là module k t h p. Các
module đ n gi 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 tố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 th vi n mô ph ng c a OMNeT++.

2.1.2. Kiểu module
T t c các module dù là đ n gi 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 kiểu

Trang 7


OMNet++

Báo cáo th c tập chuyên ngành

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 kiể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.
Khi 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 gi n hay ph c t p. Đi u này cho phép ng i s

d ng có thể 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 gi 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
d ng có thể nhóm các kiểu module l i và t o ra m t th vi n thành ph n

is

2.1.3. Message, cổng, liên kết
Các module trao đ i thông tin 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 tin (packet) đ c truy n đi trong m ng. Các
message có thể có c u trúc ph c t p tuỳ ý. Các module đ n gi n có thể g i các
message đi m t cách tr c ti p đ n vị trí nhận hoặc g i đi theo 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 time) 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 th i).
C ng (gate) là các giao ti p vào ra c a module. Message đ
và đ c nhận vào thông qua các c ng vào.

c g i đi qua các c ng ra

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 trong 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ó thể đ c t o ra gi a các c ng t ng ng c a hai 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

S1

module cha
S2

module con k t n i v i nhau

S1

S2

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 trúc phân c p c a m t mơ hình, các message th ng di chuyển
qua m t lo 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.

Trang 8


OMNet++

Báo cáo th c tập chun ngành

2.1.4. Mơ hình truyền gói tin
M t k t n i có thể có ba tham 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 truy 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à tuỳ ch n. Giá trị c a các tham s này là khác nhau trê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à kiểu c a kênh truy n - channel
type).
Đ tr đ

ng truy n là t ng th i gian đ n c a message bị tr đi khi truy n qua kênh.

Tỉ s l i bit nh h ng đ n quá trình truy n message qua kênh. Tỉ s này là xác su t
các bit bị truy n sai. Do đó xác su t để m t message đ dài n bit 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 bit 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 đ
message có l i.

c thi t lập khi vi c truy n

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. Khi 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 vi c truy n bit đ u tiên và message đ c tính là đ n n i sau khi
bên nhận đã nhận đ c bit cu i cùng.

A

tA

B

tB

Message g i đi
truy n bị tr

Đ tr đ

ng truy n
Message nhận đ


c

Hình I-2.3 - Truyền message

Trang 9


OMNet++

Báo cáo th c tập chuyên ngành

2.1.5. Tham số
Các module có thể các tham s .Các tham s này có thể đ
NED hoặc các file c u hình ompnetpp.ini.

c đặt giá trị trong các file

Các tham s này có thể đ c dùng để thay đ i các thu c tính c a các module đ n gi n
hoặc dùng để biểu di n cho topology c a mơ hình.
Các tham s có thể có kiểu là chu i, s h c, giá trị logic hoặc cũng có thể 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ó kiểu s có thể đ c dùng để c u hình topology r t d dàng. Nằm trong
các module k t h p, các tham s này có thể đ 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 Description) để mô t c u trúc c a các

mơ hình

2.2. Lập trình thuật tốn
Các module đ n gi n có thể ch a các thuật toán nh các hàm c a C++. S linh 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 vi c mô
t theo s ki n hay theo ti n trình, có thể d dàng s d ng nh ng khái ni 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 q 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 Container (m ng, hàng đ i...)
Các l p Data Collection

Các l p này có thể đ 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 th mơ hình đ ng th i hiển thị thông tin v
chúng nh tên c a đ i t ng, tên l p, các bi n tr 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 trong đ c che đi.

Trang 10


OMNet++

2.3. S

Báo cáo th c tập chuyên ngành

d ng OMNeT++

2.3.1. Xây dựng và chạy thử các mơ hình mơ phỏng
M t mơ hình OMNeT++ bao g m nh ng ph n sau:





Ngơn ng mơ t topology - NED (file có ph n m r ng .ned): mô t c u trúc
c a module v i các tham s , các c ng... Các file .ned có thể đ c vi t bằng b t
kỳ b so n th o hoặc s d ng ch ng trình GNED có trong OMNeT++.
Định nghĩa c u trúc c a các message (các file có ph n m r ng .msg): Ng i
s d ng có thể định nghĩa r t nhi u kiểu messsage và thêm các tr ng d li u
cho chúng. OMNeT++ s dịch nh ng định nghĩa này sang các l p C++ đ y đ .
Mã ngu n c a các module đ n gi n. Đây là các file C++ v i ph n m r ng
là .h hoặc .cc.


H th ng mô ph ng cung c p cho ta các thành ph n sau:




Ph n nhân mơ ph ng. Ph n này ch a code để qu n lý q trình mơ ph ng và
các th vi n l p mơ ph ng. Nó đ c vi t bằng C++, đ c biên dịch và đ c
đặt cùng d ng v i các file th vi n (các file có ph n m r ng là .a hoặc .lib).
Giao di n ng i s d ng. Giao di n này đ c s d ng khi th c hi n q trình
mơ ph ng, t o s d dàng cho quá trình s a l i, biểu di n (demonstration)
hoặc khi th c hi n mô ph ng theo từng kh i (batch execution of simulations).
Có m t vài kiểu giao di n trong OMNeT++, t t c đ u đ c vi t bằng C++,
đ c biên dịch và đặt cùng nhau trong các th vi n (các file có ph n m r ng
là .a hoặc .lib).

Thực hiện mơ phỏng và phân tích kết quả
Các ch ng trình th c hi n mơ ph ng (the simulation executable) là các ch ng trình
đ c lập, t c là nó có thể ch y trên các máy khác khơng cài đặt OMNeT++ hay các file
mơ hình t ng ng. Khi ch ng trình kh i đ ng, nó bắt đ u đ c file c u hình (thơng
th ng là file omnetpp.ini). File này ch a các thi t lập để đi u khiển quá trình mô
ph ng th c hi n, các bi n cho các tham s c a mơ hình... File c u hình cũng có thể
đ c s d ng để đi u khiển nhi u q trình mơ ph ng, trong tr ng h p đ n gi n
nh t là các q trình mơ ph ng này s đ c th c hi n l n l t b i m t ch ng trình
mơ ph ng (simulation program).
Đ u ra c a q trình mơ ph ng là các file d li u. Các file này có thể là các file vector,
các file vô h ng hoặc các file c a ng i s d ng. OMNeT++ cung c p m t công c
đ ho Plove để xem và v ra n i dung c a các file vector. Tuy nhiên chúng ta cũng
nên hiểu rằng khó mà có thể x lý đ y đ các file k t qu mà chỉ dùng riêng
OMNeT++; các file này đ u là các file có định d ng để có thể đ c đ c b i các gói
x lý tốn h c c a các ch ng trình nh Matlab hay Octave, hoặc có thể đ c đ a

vào b ng tính c a các ch ng trình nh OpenOffice Calc, Gnumeric hay Microsoft
Excel. T t c các ch ng trình này đ u có ch c năng chun d ng trong vi c phân
tích s hố, v biểu di n (visualization) v t qua kh năng c a OMNeT++.
Các file vơ h ng cũng có thể đ c biểu di n bằng cơng c Scalar. Nó có thể v đ c
các biểu đ , các đ thị d a vào tập h p các to đ (x, y) và có thể xu t d li u vào
clipboard để có thể s d ng trong các ch ng trình khác nhằm đ a nh ng phân tích
chi ti t h n.

Trang 11


OMNet++

Báo cáo th c tập chuyên ngành

Giao diện người sử dụng
M c đích chính c a giao di n ng i s d ng là che nh ng ph n ph c t p bên trong
c u trúc c a các mơ hình đ i v i ng i s d ng, d dàng đi u khiển q trình mơ
ph ng, và cho phép ng i s d ng có kh năng thay đ i các bi n hay các đ i t ng
bên trong c a mơ hình. Đi u này là r t quan tr ng đ i v i pha phát triển và s a l i
trong d án. Giao di n đ ho cũng có thể đ c s d ng để trình di n ho t đ ng c a
mơ hình.
Cùng m t mơ hình ng i s d ng có thể trên nhi u giao di n khác nhau mà không
c n ph i thay đ i gì trong các file mơ hình. Ng i s d ng có thể kiểm th và s a l i
r t d dàng qua giao di n đ ho , cu i cùng có thể ch y nó d a trên m t giao di n đ n
gi n và nhanh chóng có h tr th c hi n theo kh i (batch execution).
Các thư viện thành phần
Các kiểu module có thể đ c l u t i nh ng vị trí đ c lập v i ch mà chúng th c s
đ c s d ng. Đặc điểm này cung c p cho ng i s d ng kh nhóm các kiểu module
l i v i nhau và t o ra các th vi n thành ph n.

Các chương trình mơ phỏng độc lập
Các ch ng trình th c hi n q trình mơ ph ng có thể đ c l u nhi u l n, khơng ph
thu c vào các mơ hình, s d ng cùng m t thi t lập cho các module đ n gi n. Ng i
s d ng có thể chỉ ra trong file c u hình mơ hình nào s đ c ch y. Đi u này t o kh
năng cho ng i s d ng có thể xây d ng nh ng ch ng trình th c hi n l n bao g m
nhi u q trình mơ ph ng, và phân ph i nó nh m t cơng c mô ph ng đ c lập. Kh
năng linh ho t c a ngôn ng mô t topology cũng h tr cho h ng ti p cận này.

2.3.2. Hệ thống file
Sau khi cài đặt OMNet++, th m c omnetpp trên h th ng máy c a b n nên ch a các
th m c con d i đây.
H th ng mô ph ng:
omnetpp/
bin/
include/
lib/
bitmaps/
doc/
manual/
tictoc-tutorial/
api/
nedxml-api/
src/
src/
nedc/
sim/
parsim/
netbuilder/
envir/
cmdenv/


th m c g c c a OMNeT++
các công c trong OMNeT++ (GNED, nedtool...)
các file header cho mô hình mơ ph ng
các file th vi n
các biểu t ng đ ho
các file h ng dẫn, readme...
file h ng dẫn d ng HTML
gi i thi u s d ng OMNeT++
API tham chi u d ng HTML
API tham chi u cho th vi n NEDXML
mã ngu n c a tài li u
mã ngu n c a OMNeT++
nedtool, trình biên dịch message
ph n nhân mô ph ng
các file dành cho vi c th c hi n phân tán
các file dành cho vi c đ c đ ng các file NED
mã ngu n cho giao di n ng i s d ng
giao di n ng i dùng dòng l nh

Trang 12


OMNet++

Báo cáo th c tập chuyên ngành

tkenv/
gned/
plove/

scalars/
nedxml/
utils/
test/

giao di n ng i s d ng d a trên Tcl/tk
công c so n th o file NED
cơng c v và phân tích đ u ra d ng vector
công c v và phân tích đ u ra d ng vơ h ng
th vi n NEDXML
các ti n ích khác...
b kiểm th lùi
b kiểm th lùi cho th vi n mô ph ng
b kiểm th lùi

core/
distrib/
...
Các q trình mơ ph ng mẫu đ c ch a trong th m c samples
samples/
th m c ch a các mơ hình mơ ph ng mẫu
aloha/
mơ hình c a giao th c Aloha
cqn/
Closed Queue Network
...
Th m c contrib ch a các ch ng trình có thể k t h p v i OMNeT++
contrib/
octave/
script c a Octave dùng để x lý k t qu

emacs/
b đánh d u cú pháp NED cho Emacs
Ngồi ra b n cũng có thể tìm th y các th m c khác nh msvc/, ch a các thành ph n
tích h p cho Microsoft Visual C++...

Trang 13


OMNet++

3. NGÔN NG

Báo cáo th c tập chuyên ngành

NED

3.1 T ng quan v NED
NED đ c s d ng để mơ t topology c a m t mơ hình trong OMNeT++. NED s
d ng ph ng pháp mô t module hố. Đi u này có nghĩa là m t m ng có thể đ c mơ
t nh m t tập h p các mô t thành ph n (các kênh, các kiểu module đ n gi n hay k t
h p). Các kênh, các kiểu module đ n gi n và k t h p đ c s d ng để mơ t m t
m ng nào đó có thể đ c s d ng l i khi mô t m t m ng khác.
Các file ch a mô t m ng th ng có ph n m r ng là .ned. Các file NED có thể đ c
load đ ng vào các ch ng trình mơ ph ng, hay có thể đ c dịch sang C++ bằng b
biên dịch c a NED và đ c liên k t bên trong các ch ng trình th c hi n.

3.1.1. Các thành phần c a ngôn ngữ mô tả NED
M t filel NED bao g m các ph n nh sau:









Các chỉ dẫn import
Khai báo các kênh
Khai báo các module đ n gi n và k t h p
Khai báo m ng

3.1.2. Các từ khoá
Ng i s d ng c n ph i chú ý không s d ng nh ng từ khố có sẵn c a NED để đặt
tên cho các đ i t ng khác. Các từ khoá c b n c a NED bao g m:
import channel endchannel simple endsimple module endmodule error delay datarate
const parameters gates submodules connections atesizes if for do endfor network
endnetwork nocheck ref ancestor true false like input numeric string bool char xml
xmldoc

3.1.3. Đặt tên
Trong NED ng i s d ng có thể đặt tên cho các module, các kênh, các module con,
các tham s , các c ng, các thu c tính và hàm ch c năng c a kênh... Các tên này có thể
bao g m các ch cái ti ng Anh, các ch s và d u g ch d i “_”. Tên luôn đ c đặt
bắt đ u bằng ch cái hoặc d u g ch d i. Trong tr ng h p mu n đặt tên bắt đ u
bằng ch s , b n có thể s d ng thêm m t d u g ch d i đặt đ u, ví d nh
_3Com...
N u tên bao g m nhi u từ nên vi t hoa đ u m i từ hoặc có thể s d ng d u g ch
d i. Tên c a các module, kênh và m ng nên bắt đ u bằng ch cái in hoa còn tên c a
tham s , c ng và các module con nên bắt đ u bằng ch cái th ng.
NED là m t ngơn ng có phân bi t hoa th


ng.

Trang 14


OMNet++

Báo cáo th c tập chun ngành

3.1.4. Chú thích
Các dịng chú thích có thể đặt b t kì vị trí nào trong file NED. T
pháp c a C++, các dòng chú thích trong NED bắt đ u bằng d u ‘//’.

ng t nh cú

Chú thích trong NED có thể đ c s d ng trong nh ng công c t o tài li u (document
generator) nh JavaDoc, Doxygen

3.2. Các chỉ dẫn import
Từ khoá import đ c s d ng để thêm các khai báo trong các file mô t khác. Sau khi
đã import, ng i s d ng có thể s d ng t t c các thành ph n đã đ c định nghĩa
trong file mơ t đó.
Chú ý khi thêm m t file mơ t , chỉ có các thông tin khai báo đ c s d ng. Cũng
t ng t nh vậy khi m t file đ c thêm vào khơng có nghĩa là nó s đ c dịch khi
file ch a nó đ c dịch. Ng i s d ng s ph i dịch t t c các file ch không ph i chỉ
là file m c cao nh t.
B n có thể xác định m t file thêm vào mà có hoặc khơng vi t ph n m r ng.
Ví d :
import “ethenet”;


//import ethernet.ned

B n cũng có thể s d ng đ ng dẫn trong khi s d ng từ khoá import hoặc t t h n là
b n s d ng trình biên dịch c a NED v i tham s -I để đặt tên cho th m c ch a các
file mà b n mu n import.

3.3. Khai báo các kênh
M t định nghĩa kênh đ c dùng để xác định kiểu k t n i. Tên c a kênh có thể đ
s d ng sau đó trong file để t o các liên k t v i các tham s khác.

c

Cú pháp:
channel Tên kênh
//...
endchannel
Ba tham s có thể đ c gán giá trị trong ph n thân c a đo n mã khai báo kênh, t t c
các tham s này đ u là các tuỳ ch n: đ tr , l i và t c đ d li u (datarate). Đ tr là
th i gian tr trên đ ng truy n đ c tính bằng giây. L i là tham s đặc tr ng cho xác
su t truy n sai m t bit trên đ ng truy n. T c đ d li u là tham s đ c tính bằng đ
r ng băng thông c a kênh truy n, đ c tính bằng bit/s và đ c dùng để tính th i gian
truy n c a m t gói tin. Các thu c tính có thể xu t hi n theo b t kỳ th t nào trong
khai báo.
Giá trị c a các tham s (thu c tính) nên là các hằng s .
Ví d :
channel LeasedLine
delay 0.0018 // sec

Trang 15



OMNet++

Báo cáo th c tập chuyên ngành

error 1e-8
datarate 128000 // bit/sec
endchannel

3.4. Khai báo các module đ n gi n
Các module đ n gi n là các kh i ch ng trình đ c xây d ng sẵn cho các module
khác (có thể là các module k t h p). Các module đ c khai báo bằng tên và theo quy
c tên c a các module này đ c đặt tên bắt đ u bằng ch cái in hoa.
Các module đ n gi n đ

c khai báo thông qua các c ng và các tham s .

Cú pháp:
simple SimpleModuleName
parameters:
//...
gates:
//...
endsimple

3.4.1. Các tham số c a module đơn giản
Các tham s là các bi n ph thu c vào từng mơ hình. Tham s c a các module đ n
gi n đ c s d ng b i các hàm (hay còn đ c g i là các thuật toán c a module) khai
báo trong chính module. Theo quy c các tham s s đ c đặt tên bắt đ u bằng ch

cái th ng.
Các tham s đ c khai báo bằng cách li t kê tên sau từ khoá parameters. Kiểu c a các
tham s có thể là kiểu s (numeric), hằng s (numeric const hay vi t g n là const), giá
trị logic (bool), kiểu chu i (string) hoặc xml. Khi tham s khơng khai báo rõ kiểu thì
mặc định kiểu c a tham s đó là numeric.
Ví d :
simple TrafficGen
parameters:
interarrivalTime,
numOfMessages : const,
address : string;
gates: //...
endsimple
Các tham s có thể đ c gán giá trị từ NED (khi các module đ c s d ng nh các
kh i d ng sẵn c a m t kh i k t h p l n h n) hoặc từ file c u hình omnetpp.ini.
Tham số ngẫu nhiên và hằng số

Trang 16


OMNet++

Báo cáo th c tập chuyên ngành

Các tham s có kiểu s có thể đ c đặt để tr v m t giá trị ngẫu nhiên theo d ng
phân ph i đ u (uniformly distributions) hoặc các d ng phân ph i khác
Trong đa s tr ng h p, các tham s th ng chỉ nhận giá trị ngẫu nhiên khi bắt đ u
kh i gán, sau đó giá trị này đ c gi nguyên. Khi đó các tham s này ph i đ c khai
báo là hằng s - const. Khai báo m t tham s là const thì giá trị c a tham s s đ c
xác định m t l n duy nh t khi bắt đ u th c hi n mô ph ng và sau đó giá trị đó s đ c

coi là hằng s . (Chú ý OMNeT++ khuy n khích vi c khai báo m i tham s là const
trừ nh ng tr ng h p b n mu n s d ng ch c năng t o s ngẫu nhiên).
Tham số XML
Đôi khi các module c n đ u vào là nh ng thông tin ph c t p h n kh năng mơ t c a
các tham s , khi đó b n có thể s d ng m t file c u hình m r ng. OMNeT++ có thể
đ c và x lý các file này thông qua m t tham s ch a tên c a file.
Từ các phiên b n 3.0 tr lên, XML đ c coi là m t d ng chu n cho các file c u hình
và OMNeT++ cũng tích h p sẵn các cơng c cho phép ng i s d ng có thể làm vi c
đ c v i các file XML. OMNeT++ ch a b phân tích cú pháp XML (XML parser),
có kh năng đ c các file DTD, s d ng b nh đ m để nh các file (trong tr ng h p
m t file XML đ c tham chi u t i nhi u module thì nó s cũng chỉ ph i load m t l n),
cung c p cho ng i s d ng kh năng ch n l c các ph n trong tài li u thông qua
XPath, thể hi n n i dung c a file XML thông qua DOM.

3.4.2. Các cổng c a module đơn giản
C ng là các điểm k t n i c a module. Điểm bắt đ u và k t thúc m t k t n i gi a hai
module chính là các c ng. OMNeT++ h tr kiểu k t n i m t chi u (đ n công) do đó
có hai lo i c ng là c ng vào và c ng ra. Các message đ c g i đi từ c ng ra và đ c
nhận vào từ c ng vào. Theo quy c, các c ng đ c đặt tên bắt đ u bằng ch cái
th ng.
đây chúng ta có khái ni m v các vector c ng trong đó m t vector c ng là m t tập
h p bao g m nhi u c ng đ n.
C ng đ c khai báo bằng cách khai báo tên sau từ khoá gates. Cặp d u [] thể hi n
m t vector c ng. Các thành ph n c a m t vector c ng đ c đánh s bắt đ u từ 0.
Ví d :
simple NetworkInterface
parameters: //...
gates:
in: fromPort, fromHigherLayer;
out: toPort, toHigherLayer;

endsimple
simple RoutingUnit
parameters: //...
gates:
in: output[];

Trang 17


OMNet++

Báo cáo th c tập chuyên ngành

out: input[];
endsimple
Kích th c c a m t vector c ng có thể đ c xác định sau do đó m i đ i t
c a m t mơ hình có thể có các vector c ng có kích th c khác nhau.

ng c thể

3.5. Khai báo module k t h p
Module k t h p là các module có thể ch a m t hoặc nhi u các module con. B t kỳ
kiểu module nào (đ n gi n hay k t h p) đ u có thể đ c dùng nh là m t module con.
Cũng gi ng nh các module đ n gi n, các module k t h p cũng có các c ng, các
tham s và chúng có thể đ c s d ng b t kỳ ch nào mà các module đ n gi n có
thể đ c s d ng.
Hình t ng hố chúng ta có thể t ng t ng các module k t h p gi ng nh các h p
bìa c ng mà chúng ta có thể gi u ph n mơ hình mơ ph ng và các c u trúc ph c t p
bên trong nó. Khơng có các hành vi tích c c (active behaviour) nào liên quan đ n các
module k t h p - chúng chỉ đ n gi n là m t nhóm các module k t h p trong m t

thành ph n l n h n để có thể đ c s d ng nh m t mơ hình hoặc nh m t kh i d ng
sẵn cho các module k t h p khác.
Theo quy c, tên c a các module (bao g m c kiểu module k t h p) đ u đ
đ u bằng ch hoa.

c bắt

Các module con có thể s d ng các tham s c a module cha. Các module con này có
thể k t n i v i nhau hoặc/và k t n i v i module k t h p ch a chúng.
Vi c khai báo các module k t h p cũng t ng t nh khai báo các module đ n gi n.
Ph n khai báo cũng bao g m các từ khố parameters và gates, ngồi ra nó cịn s
d ng thêm hai từ khố là submodules và connections.
Cú pháp:
module Tên_module
parameters:
//...
gates:
//...
submodules:
//...
connections:
//...
endmodule
Chú ý là t t c các khai báo trên (parameters, gates, submodules, connections) chỉ là
tuỳ ch n.

Trang 18


OMNet++


Báo cáo th c tập chuyên ngành

3.5.1. Các tham số và cổng c a module kết hợp
Các tham s và c ng c a module k t h p cũng đ c khai báo và ho t đ ng t
nh các tham s và c ng c a các module đ n gi n.

ng t

Các tham s c a module k t h p có thể đ c s d ng b i các module con và th
đ c dùng để kh i t o giá trị cho các tham s c a các module con.

ng

Các tham s cũng có thể đ c s d ng để xác định c u trúc bên trong c a các module
k t h p: s các module con, kích th c c a các vector c ng mặt khác các tham s này
cũng có thể đ c s d ng để xác định các k t n i bên trong module k t h p.
Các tham s nh h ng đ n c u trúc bên trong c a module nên đ c khai báo là const
để giá trị c a tham s không thay đ i theo các l n truy nhập. Trái l i n u các tham s
đ c khai báo là các giá trị ngẫu nhiên, ng i s d ng có thể s có các giá trị khác
nhau m i l n tham s đ c truy nhập trong quá trình x lý c a module k t h p.
Ví d :
module Router
parameters:
packetsPerSecond : numeric,
bufferSize : numeric,
numOfPorts : const;
gates:
in: inputPort[];
out: outputPort[];

submodules: //...
connections: //...
endmodule

3.5.2. Các module con
Các module con đ c khai báo sau từ khoá submodules. Theo quy
con đ c đặt tên bắt đ u v i ch cái th ng.

c các module

Các module con có thể là m t module đ n gi n hoặc m t module k t h p. Trình biên
dịch NED ph i bi t đ c kiểu c a module do đó các module con ph i đ c khai báo
s m h n hoặc đ c import từ các file NED khác.
Ng i s d ng cũng có kh năng t o ra các vector module con và kích th c c a
vector này có thể nhận vào từ giá trị c a m t tham s . Khi khai báo các module con,
b n c n ph i gán giá trị cho các tham s c a module và n u kiểu module t ng ng có
s d ng các vector c ng thì b n ph i xác định cho nó m t kích th c c thể.
Ví d :
module Tên_Module_k t_h p
//...
submodules:

Trang 19


OMNet++

Báo cáo th c tập chuyên ngành

tên_module_con_1: Kiểu_Module_1

parameters:
//...
gatesizes:
//...
tên_module_con_2: Kiểu_Module_2
parameters:
//...
gatesizes:
//...
endmodule
Vector module
Vector module là m t tập h p (m t m ng) các module con. Kích th c c a vector có
thể đ c biểu di n bằng m t biểu th c đặt trong cặp d u ngoặc vuông ‘[]’. Biểu th c
này có thể tham chi u đ n các tham s c a module. Giá trị 0 cho s các module cũng
đ c ch p nhận.
Ví d :
module CompoundModule
parameters:
size: const;
submodules:
submod1: Node[3]
//...
submod2: Node[size]
//...
submod3: Node[2*size+1]
//...
endmodule

3.5.3. Tham số tên kiểu module con
Vi c s d ng tên c a các kiểu module nh các tham s t o đi u ki n d dàng cho s

d ng các module con. L y ví d , cho rằng m c đích c a q trình mơ ph ng là so
sánh s khác nhau gi a các thuật tốn tìm đ ng. Gi s b n đã lập trình các thuật
tốn tìm đ ng c n thi t nh các module đ n gi n DistVecRoutingNode,
AntNetRouting1Node, AntNetRouting2Node, ... B n cũng đã t o ra m t topology
m ng nh m t module k t h p g i là RountingTestNetwork để ph c v cho vi c đánh
giá ho t đ ng c a các thuật toán. Hi n t i RountingTestNetwork đang s d ng thuật
toán DistVecRoutingNode (t t c các module con đ u có kiểu này) và b n mu n có

Trang 20


OMNet++

Báo cáo th c tập chuyên ngành

thể chuyển đ i qua l i m t cách d dàng gi a các thuật toán để ti n l i cho vi c đánh
giá.
Để th c hi n đi u này ta có thể s d ng thêm m t bi n là routingNodeType cho
module RoutingTestNetwork. Đ ng th i b n cũng khai báo cho NED các module con
c a RoutingTestNetwork khơng có kiểu c định, mà kiểu c a các module này đ c là
giá trị c a bi n routingNodeType. Khi đó m ng mơ ph ng c a b n có thể d dàng
thay đ i các thuật tốn
trên thơng qua giá trị c a tham s nh
“DistVectRoutingNode”, “AntNetRouting1Node” hoặc “AntNetRouting2Node”.
Trong tr ng h p giá trị c a tham s là sai (ch a tên c a m t kiểu khơng t n t i) q
trình mơ ph ng s bị l i khi bắt đ u ch y - module type definition not found (khai báo
kiểu module khơng đ c tìm th y).
Bên trong module RoutingTestNetwork, ta có thể gán giá trị cho các tham s và ti n
hành k t n i v i các module ch a các thuật tốn tìm đ ng t ng ng. Tuy nhiên để
tăng tính chính xác, đ m b o tên c a tham s và c ng mà b n s d ng là chính xác,

NED c n có s giúp đỡ từ b n. B n có thể khai báo thêm m t module (gi s tên là
RoutingNode) và ph i đ m b o chắc chắn rằng t t c các module mà định s d ng
thơng qua tham s routingNodeType đ u có các tham s và các c ng gi ng nh c a
module RoutingNode.
Cú pháp:
module RoutingTestNetwork
parameters:
routingNodeType: string; // should hold the name
// of an existing module type
gates: //...
submodules:
node1: routingNodeType like RoutingNode;
node2: routingNodeType like RoutingNode;
//...
connections nocheck:
node1.out0 --> node2.in0;
//...
endmodule
Đo n mã này n u nhìn theo góc đ c a ngơn ng C++ thì RoutingNode đóng vai trị
c a m t l p c s , DistVecRoutingNode, AntNetRouting1Node là các l p k thừa từ
l p RoutingNode. Tham s routingNodeType t ng ng v i con tr tr t i l p c s .
Module RoutingNode không c n đ c th c hi n trong C++ b i khơng có đ i t ng c
thể nào c a nó đ c t o ra, nó chỉ đ n thu n đ c dùng để kiểm tra tính chính xác c a
file NED. Mặt khác, các module th c s s đ c thay thể (ví d nh
DistVecRoutingNode, AntNetRouting1Node,...) s khơng c n ph i khai báo trong file
NED.

Trang 21



OMNet++

Báo cáo th c tập chuyên ngành

Từ khoá like cho phép b n t o ra m t h các module ph c v cho cùng m t m c đích,
có cùng giao ti p gi ng nhau (có cùng các tham s và các c ng) và s d ng chúng
thay th nhau trong file NED.

3.5.4. Gán giá trị cho các tham số c a các module con
Có thể gán giá trị cho các tham s c a các module con trong ph n khai báo
parameters c a các module con. Các tham s c a module con có thể đ c gán giá trị
nh các hằng s hoặc có thể s d ng ngay các tham s c a module k t h p ch a nó,
hoặc cũng có kh i gán bằng m t biểu th c.
Khơng bắt bu c t t c các tham s đ u ph i kh i gán giá trị. Giá trị c a tham s có thể
nhận trong lúc th c hi n hoặc nhận từ file c u hình hoặc trong tr ng h p giá trị c a
tham s khơng có trong file c u hình, q trình mơ ph ng s nhắc b n. Tuy nhiên n u
các tham s để trong file c u hình, s d dàng h n cho vi c s a ch a giá trị c a các
tham s .
Ví d :
module CompoundModule
parameters:
param1: numeric,
param2: numeric,
useParam1: bool;
submodules:
submodule1: Node
parameters:
p1 = 10,
p2 = param1+param2,
p3 = useParam1==true ? param1 : param2;

//...
endmodule
Trong khi mơ hình ho t đ ng, các biểu th c gán giá trị vẫn đ c tính tốn n u các
tham s t ng ng đ c g i đ n. Ngoài ra để g i m t tham s c a module con ta có
thể s
d ng cú pháp nh
sau: submodule.parametername (hoặc
submodule[index].parametername).
Từ khố input
Khi m t tham s không nhận giá trị tr c ti p trong file NED hoặc trong file c u hình,
ng i s d ng s đ c nhắc để nhập giá trị cho tham s khi q trình mơ ph ng bắt
đ u th c hi n. Tuy nhiên n u b n mu n ch đ ng nhập giá trị tham s khi bắt đ u q
trình mơ ph ng, b n có thể s d ng từ khoá input. Từ khoá input cũng cho phép ng i
s d ng có thể thi t lập thơng báo nhập giá trị hay đặt giá trị mặc định cho tham s .
Cú pháp:
parameters:

Trang 22


OMNet++

Báo cáo th c tập chuyên ngành

numCPUs = input(10, "Number of processors?"), //giá trị mặc
//định, d u nhắc
processingTime = input(10ms), //thơng báo nhập giá trị
cacheSize = input;

3.5.5. Khai báo kích thước c a các vector cổng c a module con

Kích th c c a các vector c ng đ c khai báo bằng từ khố gatesizes. Kích th
có thể đ c khai báo nh m t hằng s , m t tham s hay m t biểu th c.

c này

Ví d :
simple Node
gates:
in: inputs[];
out: outputs[];
endsimple
module CompoundModule
parameters:
numPorts: const;
submodules:
node1: Node
gatesizes:
inputs[2], outputs[2];
node2: Node
gatesizes:
inputs[numPorts], outputs[numPorts];
//...
endmodule
gatesizes là không bắt bu c, n u b n mu n b qua vi c khai báo gatesizes cho vector
c ng nó s đ c đặt bằng 0. M t lý do để b qua vi c gán giá trị cho gatesizes là b n
s s d ng gate++ (“extend gate vector with a new gate” - vector c ng m r ng v i
m t c ng m i). gate++ s đ c trình b y kĩ h n trong ph n Connection.

3.5.6. Khai báo gatesizes và tham số có điều kiện
Kích th c c a vector c ng và các tham s trong module con th

kèm thêm đi u ki n.

ng đ

c khai báo

Ví d :
module Chain
parameters: count: const;

Trang 23


OMNet++

Báo cáo th c tập chuyên ngành

submodules:
node : Node [count]
parameters:
position = "middle";
parameters if index==0:
position = "beginning";
parameters if index==count-1:
position = "end";
gatesizes:
in[2], out[2];
gatesizes if index==0 || index==count-1:
in[1], out[1];
connections:

//...
endmodule
Chú ý các giá trị mặc định nên đ c khai báo đ u tiên b i vì NED s duy t từ trên
xu ng d i, n u gặp đi u ki n đúng thì các giá trị t ng ng s đ c chèn vào các giá
trị mặc định tr c đó. Trong tr ng h p khai báo giá trị mặc định cu i cùng, giá trị
mặc định s có thể chèn vào giá trị c a m t tr ng h p đi u ki n đúng tr c đó.

3.5.7. Kết nối
Các k t n i chỉ ra c thể cách các c ng c a module k t h p giao ti p v i các c ng
t ng ng c a module con.
K t n i có thể đ c t o ra gi a hai module con hoặc gi a module con v i module cha
(module k t h p) tr c ti p ch a nó (trong m t s ít tr ng h p, m t k t n i cũng có
thể đ c t o ra gi a hai c ng c a cùng m t module k t h p). Đi u này có nghĩa là
NED không cho phép m t k t n i đa c p (k t n i gi a hai module xa nhau trong c u
trúc phân c p). H n ch này làm tăng tính đ c lập và kh năng dùng l i c a m i
module. Ngoài ra, h ng c a module cũng r t trong quan tr ng khi t o k t n i. Không
thể t o m t k t n i gi a hai c ng ra hoặc gi a hai c ng vào v i nhau.
NED chỉ h tr kiểu k t n i m t-m t do đó m t c ng riêng bi t đ c s d ng chỉ xu t
hi n m t l n trong m t k t n i. Kiểu k t n i m t-nhi u và nhi u-m t cũng có thể
đ c t o ra bằng cách s d ng các module đ n gi n trong đó các lu ng message đ c
nhân đôi hoặc đ c ghép thêm (duplicate message or merge message flows).
Các k t n i đ
ch m ph y.

c li t kê sau từ khoá connections và đ

c phân tách v i nhau bằng d u

Ví d :
module CompoundModule

parameters: //...
gates: //...

Trang 24


OMNet++

Báo cáo th c tập chuyên ngành

submodules: //...
connections:
node1.output --> node2.input;
node1.input <-- node2.output;
//...
endmodule
C ng ngu n có thể là c ng ra c a các module con hoặc là c ng vào c a module k t
h p và c ng đích có thể là c ng vào c a module con hay c ng ra c a module k t h p.
Mũi tên có thể chỉ theo chi u từ trái qua ph i hoặc theo chi u ng c l i.
Chú thích gate++ cho phép ng i s d ng có thể m t vector c ng v i m t c ng m i,
mà không c n ph i khai báo trong gatesizes.
Ví d :
simple Node
gates:
in: in[];
out: out[];
endsimple
module SmallNet
submodules:
node: Node[6];

connections:
node[0].out++ --> node[1].in++;
node[0].in++ <-- node[1].out++;
node[1].out++ --> node[2].in++;
node[1].in++ <-- node[2].out++;
node[1].out++ --> node[4].in++;
node[1].in++ <-- node[4].out++;
node[3].out++ --> node[4].in++;
node[3].in++ <-- node[4].out++;
node[4].out++ --> node[5].in++;
node[4].in++ <-- node[5].out++;
endmodule
M t k t n i:


Có thể có các thu c tính (đ tr , tỉ s bit l i, t c đ truy n d li u) hoặc s
d ng m t kênh truy n đã đ c đặt tên.

Trang 25


×