Đây là bài tập đơn giản giúp bạn làm quen với phần mềm Omnet trong việc mô phỏng kỹ thuật viễn thông. Trong tài liệu trình bày chi tiết về cách thức thực hiện như các viết code,cách mô phỏng...ho bạn thấy một số cách thông thường dùng với các tiện ích Omnet++.
Hướng dẫn TicToc cho Omnet++ ng dn ngng dn v Omnet++ giúp bn do qua mt ví d cho vic mô hình hóa và mô phng, cho bn thy mt s ng dùng vi các tin ích Omnet++. Bài này da trên ví d mô phng TicToc, bn có th tìm thy ví d này trong c samples/tictoc ca b cài Omnet++, nên bn có th th ngay lp tc cách các ví d làm vic th nào. Tuy nhiên, bn s tìm thy nhing dn hu bn thc s thc hành ít nhu tiên mô t Chú ý: Chúng tôi gi s ng bt b cài làm vic Omnet++. Chúng tôi s rng bn có mt kin thc tt v C++, và b thuc vi vic phát trin C/C++ (chnh sa file ngun, dch, bt l u hành ca bn. (u va ri là ngoài phm vi ca chúng tôi - có nhiu cung dn tu bn cn cp nht kin thc ngh s dng phát trin tích hp Omnet++ cho vic chnh sa và xây dng các mô phng ca bn. làm các ví d d t c các code ngun s c nêu mà ch c nêu tên, bn s t tìm c samples/tictoc. Tài liu này và mô hình TicToc là mt phiên bc m rng bng dn TicToc gc t Ahmet Sekercioglu (i hc Monash). Ni dung: I.Khởi đầu II.Tăng cường thành 2-node TicToc III.Chuyển thành một mạng thực tế hơn I.Khởi đầu: Sources: tictoc1.ned, txc1.cc, omnetpp.ini Vì vùng ng dng ph bin nht ca Omnet++ là mô phng các mng truyn thông, chúng ta s làm vi ch này t vi bu, chúng ta bu vi mt mng bao gm 2 node. Các node s làm vài vin: mt trong các node s to mt packet, và 2 node s gi vic qua li cùng gói tin vào và ra. Chúng ta g c bn thc hin mô phu tiên ca bn t u: 1.To mc làm vic gi là tictoc và cd (lnh cd ca dos) c này 2.Mô t mng ví d ca bn bng vic to mt file topology. Mt file topology là mnode ca mng và các liên kt gia chúng. Bn có th to nó vi trình chnh sa bt tên cho nó là tictoc1.ned: // // This file is part of an OMNeT++/OMNEST simulation example. // // Copyright (C) 2003 Ahmet Sekercioglu // Copyright (C) 2003-2008 Andras Varga // // This file is distributed WITHOUT ANY WARRANTY. See the file // `license' for details on this and other legal matters. // simple Txc1 { gates: input in; output out; } // // Two instances (tic and toc) of Txc1 connected both ways. // Tic and toc will pass messages to one another. // network Tictoc1 { submodules: tic: Txc1; toc: Txc1; connections: tic.out > { delay = 100ms; } > toc.in; tic.in < { delay = 100ms; } < toc.out; } c tt nht là t i lên. n nói: -TicToc1 là mt mc tp hp t hai module con, tic và toc. Tic và toc là các th hin ca cùng 1 kiu module gi là Txc1. Chúng ta kt ni cng ra ca n cng vào cc l tr 100ms vi c ng. -Txc1 là mt kic nguyên t trong ngôn ng Ned, và s t trong C++). Txc1 có 1 cng vào tên là in, và mt cng ra tên là out. 3.Chúng ta ct chn Txc1. Vi tr bi mt file C++ tên là txc1.cc: // // This file is part of an OMNeT++/OMNEST simulation example. // // Copyright (C) 2003 Ahmet Sekercioglu // Copyright (C) 2003-2008 Andras Varga // // This file is distributed WITHOUT ANY WARRANTY. See the file // `license' for details on this and other legal matters. // #include <string.h> #include <omnetpp.h> class Txc1 : public cSimpleModule { protected: // The following redefined virtual function holds the algorithm. virtual void initialize(); virtual void handleMessage(cMessage *msg); }; // The module class needs to be registered with OMNeT++ Define_Module(Txc1); void Txc1::initialize() { // Initialize is called at the beginning of the simulation. // To bootstrap the tic-toc-tic-toc process, one of the modules needs // to send the first message. Let this be `tic'. // Am I Tic or Toc? if (strcmp("tic", getName()) == 0) { // create and send first message on gate "out". "tictocMsg" is an // arbitrary string which will be the name of the message object. cMessage *msg = new cMessage("tictocMsg"); send(msg, "out"); } } void Txc1::handleMessage(cMessage *msg) { // The handleMessage() method is called whenever a message arrives // at the module. Here, we just send it to the other module, through // gate `out'. Because both `tic' and `toc' does the same, the message // will bounce between the two. send(msg, "out"); } Kic mô t bi lp C++ : Txc1, cái này là mt lp con t l Omnet++ vi macro c t cSimpleModule: c triu gi t nhân mô phng: cái u tiên ch duy nht 1 ln, còn cái th hai thì khi mn ti mt module. Trong initialize() chúng ta to mp (cMessage), và gi nó ra ngoài qua cng out. Vì cc kt nn cng ra ca module khác, nhân mô phng s n module khác trong handleMessage()sau truyn thông tr liên kt trong file Ned. Module khác gi nó quay li (v tr 100ms), nên nó s có h qu u ng ping-pong liên tc. kin (các b nh thi, c môt t tt c bng cMessage( hoc các lp con ca nó) trong Omnet++. Sau khi bn gi hoc lên lch cho chúng, chúng s c t chc bi nhân mô ph kit l kin n khi thi gian cc phân phn các module thông qua handleMessage(). Chú ý rng u kin dng cho mô phng này: nó s tip tn mãi mãi. Bn có th dng nó t giao dii dùng. (Bn có th nh thi gian gii hn cho mô phng hoc gii hn thi gian cho CPU trong file cu ng dn này). 4. Chúng ta bây gi to Makefile cái này s giúp chúng ta dch và liên kt to file tictoc có kh y: $ opp_makemake Lnh này s phi to ra mt makefc làm vic tictoc: 5.Gi ta dch và liên kt mô phu tiên ca chúng ta bng vic dùng lnh make: $ make 6.Nu bn bu chy bây gi, nó s gii thích nó không th tìm thy file omnetpp.ini, nên bn phi to my. omnetpp.ini nói v trình mô phng cái mng bn mun mô phng (vâng, 1 vài mng có th sng ng), bn có th cho mô nh chính xác các seed cho vic sinh s ng To mt file omnetpp.ini r [General] Network=Tictoc1 Tictoc2 và cho tt c c sau file omnetpp.ini sau: # This file is shared by all tictoc simulations. # Lines beginning with `#' are comments [General] # nothing here [Config Tictoc1] network = Tictoc1 [Config Tictoc2] network = Tictoc2 [Config Tictoc3] network = Tictoc3 [Config Tictoc4] network = Tictoc4 Tictoc4.toc.limit = 5 [Config Tictoc5] network = Tictoc5 **.limit = 5 [Config Tictoc6] network = Tictoc6 [Config Tictoc7] network = Tictoc7 # argument to exponential() is the mean; truncnormal() returns values from # the normal distribution truncated to nonnegative values Tictoc7.tic.delayTime = exponential(3s) Tictoc7.toc.delayTime = truncnormal(3s,1s) [Config Tictoc8] network = Tictoc8 [Config Tictoc9] network = Tictoc9 [Config Tictoc10] network = Tictoc10 [Config Tictoc11] network = Tictoc11 [Config Tictoc12] network = Tictoc12 [Config Tictoc13] network = Tictoc13 7.Khi b c trên, bn chy mô phng bng lnh này: $ ./tictoc Và hi vng bc ca s mô phng Omnet++ 8.n nút Run trên thanh công c khng mô phng. Bn s thy cais cách p vi nhau. Công c ca s chính hin th thi gian mô phng. Thi gian này là thi gian o, không có gì n thi gian thng h ng) v y. Thc s, s giây bn có th chy trong th gii thc ph thuc cao vào t ca phn cng ca bn và thng phc tp ca chính mô hình mô phng. Chú ý rng thi gian mô phng cho m x lí tin nhn là bng 0. Ch nhng th i gian mô phng qua l tr trong các kt ni. 9.Bn có th làm chnh hoi thanh cun trên nh ca s ha. Bn có th dng môt hình bng n nút stop trên toolbar), chy tc (f4), chay nó vi f5 hoc thoát khi hình nh (f6). 10.Bn có th thoát kh ng bng vic click vào biu ng close hoc la chn File|Exit II.Bổ sung thêm cho 2 node TicToc: Bước 2: thêm ảnh đồ họa, và thêm đầu ra gỡ lỗi Sources: tictoc2.ned, txc2.cc, omnetpp.ini u file images/block/routing.png) và tô nó màu tía cho tic và vàng cho toc. Vic bng vic thêm chui hin th n file NED. Th i= trong chui hin th nh icon. // "block/routing" icon to the simple module. All submodules of type // Txc2 will use this icon by default // simple Txc2 { parameters: @display("i=block/routing"); // add a default icon gates: input in; output out; } // // Make the two module look a bit different with colorization effect. // Use cyan for `tic', and yellow for `toc'. // network Tictoc2 { submodules: tic: Txc2 { parameters: @display("i=,cyan"); // do not change the icon (first arg of i=) just colorize it } toc: Txc2 { parameters: @display("i=,gold"); // here too } connections: Bn s thy kt qu nh s p g li cho Txc1 bng vic chuy \ Và EV<<-\ Khi bn chy mô phng trong giao din Tkenv c xut hin trên ca s n: Bn có th m mt dãy các ca s u ra cho tic và toc bng vic n chut phi trên bing và la chn module output t menu. Tin ích này s hu ích khi bn có mt môt hình và bn ch p ghi li ca module c th Bước 3: thêm một biến trạng thái Sources: tictoc3.ned, txc3.cc, omnetpp.ini c này chúng ta thêm mt b p sau i. Chúng ta thêm b p: class Txc3 : public cSimpleModule { private: int counter; // Note the counter here protected: Chúng ta thit lp bin giá tr là 10 trong initialize() và gim trong m v 0, mô phng s ht s kin và hy. Chú ý dòng: WATCH(counter); Dòn trong mà ngun: vic này làm có th nhìn thy giá tr b m trong Tkenv. t vào bing ca chn ni dung trang Content t ca s theo dõi: . Tictoc1 [Config Tictoc2 ] network = Tictoc2 [Config Tictoc3 ] network = Tictoc3 [Config Tictoc4 ] network = Tictoc4 Tictoc4 .toc.limit = 5 [Config Tictoc5 ] network = Tictoc5 **.limit. dẫn TicToc cho Omnet+ + ng dn ngng dn v Omnet+ + giúp bn do qua mt ví d cho vic mô hình hóa và mô phng, cho bn thy mt s ng dùng vi các tin ích Omnet+ + nonnegative values Tictoc7 .tic.delayTime = exponential(3s) Tictoc7 .toc.delayTime = truncnormal(3s,1s) [Config Tictoc8 ] network = Tictoc8 [Config Tictoc9 ] network = Tictoc9 [Config Tictoc1 0]