OMNeT++
1.ติดตั้ง OMNeT ++ บน Ubuntu
วันนี้ได้ทดลองติดตั้งโปรแกรมที่จะใช้จำลองการประมวลงานงานเกี่ยวกับโครงงานครับ การทดลองนี้ติดตั้งบน Ubuntu Desktop 12.04 ซึ่งได้ติดตั้ง Ubunt บน Virtual Machine อีกทีนึงครับ
หลังจากที่ติดตั้ง Ubuntu เรียบร้อย ต่อไปก็จะมีติดตั้ง OMNeT++ ซึ่งเป็นตัวที่ใช้จำลองการทำงาน ประมาณว่าเป็น Server จำลอง โดยที่เราไม่ต้องมีเครื่องจริง สามารถสร้าง Network จำลองแล้วส่งงานเข้าไปประมวลผลได้
Step 1: ติดตั้ง packet ที่จำเป็น โดยขั้นตอนนี้สามารถทำได้ 2 แบบคือ
1. แบบ Command line หรือพิมพ์คำสั่งเอง เข้าไปที่ terminal แล้วพิมพ์ตามด้านล่างได้เลย
$ sudo apt-get install build-essential gcc g++ bison flex perl tcl-dev tk-dev blt libxml2-dev zlib1g-dev default-jre doxygen graphviz libwebkitgtk-1.0-0 openmpi-bin libopenmpi-dev libpcap-dev
$ sudo apt-get install build-essential gcc g++ bison flex perl tcl-dev tk-dev blt libxml2-dev zlib1g-dev default-jre doxygen graphviz libwebkitgtk-1.0-0 openmpi-bin libopenmpi-dev libpcap-dev
ถ้าเจอคำถามนี้ (Do you want to continue? [Y/N]) ก็ตอบ Y ครับ
2.แบบ Graphical หรือติดตั้งผ่านโปรแกรม
เราจะต้องติดตั้งโปรแกรม Synaptic package manager ก่อนเพื่อที่จะใช้โปรแกรมนี้ค้นหา packet ที่ต้องการอีกที
เราจะต้องติดตั้งโปรแกรม Synaptic package manager ก่อนเพื่อที่จะใช้โปรแกรมนี้ค้นหา packet ที่ต้องการอีกที
$ sudo apt-get install synaptic
เมื่อติดตั้งเสร็จลองเข้าไปดูใน Dash Home จะเจอโปรแกรม Synaptic package manager หน้าตาประมาณนี้ครับ
เมื่อติดตั้งเสร็จลองเข้าไปดูใน Dash Home จะเจอโปรแกรม Synaptic package manager หน้าตาประมาณนี้ครับ
เมื่อเข้าหน้าโปรแกรมแล้วก็เลือกแพ็กเก็จที่ต้องติดตั้งตามด้านล่างได้เลย
build-essential, gcc, g++, bison, flex, perl, tcl-dev, tk-dev, blt, libxml2-dev, zlib1gdev, default-jre, doxygen, graphviz, libwebkitgtk-1.0-0, openmpi-bin, libopenmpi-dev, libpcap-dev
build-essential, gcc, g++, bison, flex, perl, tcl-dev, tk-dev, blt, libxml2-dev, zlib1gdev, default-jre, doxygen, graphviz, libwebkitgtk-1.0-0, openmpi-bin, libopenmpi-dev, libpcap-dev
*เมื่อเจอ packet ที่ต้องการก็ “Mark to Installation” พอเลือกครบแล้วค่อย Apply ทีเดียวครับ
*ขั้นตอนนี้ติดตั้งนานพอสมควรครับ
*ขั้นตอนนี้ติดตั้งนานพอสมควรครับ
Step 2: Download โปรแกรม OMNeT++
เวอร์ชั่นที่ผมใช้ปัจจุบันเป็น OMNeT++ 4.3 ข้างในก็ประกอบด้วย source + IDE เป็น tgz (บน windows ก็ประมาณ winzip) ตามลิ้งนี้เลยครับ http://www.omnetpp.org/omnetpp/cat_view/17-downloads/1-omnet-releases
เมื่อโหลดเสร็จจะได้ไฟล์ omnetpp-4.3-src.tgz ให้ย้ายไปไว้ที่ตำแหน่ง /home/<you> ครับ
จากนั้นเราจะแตกไฟล์ tgz โดยใช้คำสั่ง
$ tar xvfz omnetpp-4.3-src.tgz
จากนั้นเราจะแตกไฟล์ tgz โดยใช้คำสั่ง
$ tar xvfz omnetpp-4.3-src.tgz
Step 3: Setup the environment variables
จริงๆแล้ว OMNeT++ ต้องติดตั้งไว้ใน Directory /bin ครับแต่เราติดตั้งไว้ที่ /home แล้วก็ไม่เป็นไร เราจะต้องมา config ค่าให้มันก่อน
$ cd omnetpp-4.3
$ . setenv
$ gedit ~/.bashrc
แล้วก็เพิ่มคำสั่งนี้เข้าไปในท้ายของไฟล์ .bashrc ที่มันเด้งขึ้นมา
export PATH=$PATH:$HOME/omnetpp-4.3/bin
$ . setenv
$ gedit ~/.bashrc
แล้วก็เพิ่มคำสั่งนี้เข้าไปในท้ายของไฟล์ .bashrc ที่มันเด้งขึ้นมา
export PATH=$PATH:$HOME/omnetpp-4.3/bin
Step 4: Configuring and Building OMNeT++
ขั้นตอนนี้จะทำหลังจาก Step 1 ที่เราติดตั้ง packet ที่จำเป้นเสร็จแล้ว
เราจำ config โปรแกรม OMNeT++ กับ packet ที่ติดตั้งไปให้ทำงานร่วมกัน
เราจำ config โปรแกรม OMNeT++ กับ packet ที่ติดตั้งไปให้ทำงานร่วมกัน
โดยเราจะต้องอยู่ใน Directory ของ OMNeT++ แล้วพิมพ์คำสั่ง
$ ./configure
$ ./configure
มันก็จะะตรวจสอบดังรูป (รูปที่แสดงคือทำตอนที่ยังติดตั้ง packet ไม่เสร็จ เลยเช็คพวก g++,c++ และตัวอื่นๆไม่เจอ)
เสร็จแล้วจะ compile ตัว simulator เมื่อพิมพ์คำสั่งด้านล่างเสร็จก็รอปล่อยมัน compile ทิ้งไว้ครับ
$ make
$ make
หลังจาก compile เสร็จ จะได้ดังรูป
ในขั้นตอนนี้บางครั้งการ configure อาจเกิดปัญหาตอนเขียน Module แล้วไม่สามารถ compile ได้
เพราะ configure ไม่สำเร็จให้เรา reconfigure libraries ก่อนแล้ว configure ใหม่อีกครั้ง
เพราะ configure ไม่สำเร็จให้เรา reconfigure libraries ก่อนแล้ว configure ใหม่อีกครั้ง
$ ./configure
$ make cleanall
$ make
$ make cleanall
$ make
โดยปกติการ configure จะ compile ทั้งแบบ debug และ release ถ้าต้องการ config เฉพาะแบบใดแบบหนึ่ง
ก็สามารถทำได้ ตามคำสั่ง
ก็สามารถทำได้ ตามคำสั่ง
$ ./configure
$ make MODE=release หรือ
$ make MODE=debug
$ make MODE=release หรือ
$ make MODE=debug
Step 5: Testing and Implementation
ขั้นตอนนี้จะแสดงตัวอย่างโดยจำลองการทำงานที่ติดมากับโปรแกรมแล้วว่าจะแสดงผลยังไงบ้าง
$ cd samples/dyna
$ ./dyna
$ cd samples/dyna
$ ./dyna
รูป 1 แสดงหน้าโปรแกรมแบบ Graphical รูป 2 แสดงการ run ของโปรแกรม
เมื่อเรากด run ตัว simulater ก็จะทำงาน
รูป 1 จะแสดงการส่งข้อมูลระหว่าคอมพิวเตอร์กับ server แบบ Graphical
รูป 2 จะแสดงข้อมูลว่าแต่ละเครื่องส่งอะไรหากันบ้าง
รูป 1 จะแสดงการส่งข้อมูลระหว่าคอมพิวเตอร์กับ server แบบ Graphical
รูป 2 จะแสดงข้อมูลว่าแต่ละเครื่องส่งอะไรหากันบ้าง
Step 6: Starting the IDE
หลังจากติดตั้งโปรแกรมและ packet ที่จำเป็นเสร็จแล้วก็เริ่มใช้โปรแกรมได้เลย
โดยต้องเข้าโปรแกรมผ่าน command line ของ terminal
$ cd omnetpp-4.3
$ omnetpp
โดยต้องเข้าโปรแกรมผ่าน command line ของ terminal
$ cd omnetpp-4.3
$ omnetpp
อีกหนึ่งวิธีสำหรับคนที่ไม่ต้องการเข้าโปรแกรมผ่าน Terminal สามารถสร้าง Icon ไว้บน Desktop ได้เช่นกัน
$ make install-desktop-icon
$ make install-desktop-icon
จะแสดงผลโปรแกรมดังรูป มีหน้าตาคล้ายกับ eclipse เลย
ข้อมูลเพิ่มเติม
https://omnetpp.org/doc/omnetpp/InstallGuide.pdf
2.ความรู้เบื้องต้นเกี่ยวกับ OMNeT++
หลังจากที่ได้ติดตั้งโปรแกรม OMNeT++ ไปแล้วก็ได้ศึกษารายละเอียดเบื้องต้นเกี่ยวกับโปรแกรม
อยากจะบอกว่าหาภาษาไทยอ่านไม่ได้เลย (อาจจะมีแต่หาไม่เจอ) เพราะเป็นโปรแกรมเฉพาะด้าน ส่วนมากจะใช้ในการทำงานวิจัยมากกว่า ในเว็บ omnetpp.org ก็มีคู่มือให้ศึกษาเหมือนกันแต่เป็นภาษาอังกฤษหมดเลย ไหนๆก็ต้องอ่านอยู่แล้วเพราะต้องทำโครงงาน
อยากจะบอกว่าหาภาษาไทยอ่านไม่ได้เลย (อาจจะมีแต่หาไม่เจอ) เพราะเป็นโปรแกรมเฉพาะด้าน ส่วนมากจะใช้ในการทำงานวิจัยมากกว่า ในเว็บ omnetpp.org ก็มีคู่มือให้ศึกษาเหมือนกันแต่เป็นภาษาอังกฤษหมดเลย ไหนๆก็ต้องอ่านอยู่แล้วเพราะต้องทำโครงงาน
พออ่านเข้าใจบ้างเลยเขียนสรุปเก็บไว้ เพื่อผู้ที่สนใจจะได้เอาไว้ศึกษาครับหรือโหลดคู่มือภาษาอังกฤษตาม link นี้ได้เลยครับ คลิ๊ก หรือสนใจจะอ่าน slide สรุปก็ได้ครับ ผมก็อ่านจากคู่มือก่อนแต่เห็นว่ามันกว้างไป ตามด้วยอ่าน slide ก็จะได้ขอบเขตว่ามีประเด็นไหนบ้างที่สำคัญและมาสรุปทำความเข้าใจอีกที
โปรแกรมนี้เรียกว่า OMNeT++ (โอเอ็มเน็ตพลัส พลัส) ย่อมาจากคำว่า Objective Modular Network Testbed in C++ เป็นโปรแกรมหรือเครื่องมือที่ใช้สำหรับจำลองการทำงานที่มีลักษณะเป็นเชิงวัตถุ ซึ่งสามารถทำงานได้หลากหลาย เช่น
- การสร้างแบบจำลองเครือข่ายการสื่อสารโทรคมนาคม
- การสร้างแบบจำลองโปรโตคอล
- การสร้างแบบจำลองคิวงาน
- การสร้างแบบจำลองสำหรับระบบแบบ Multiprocessor หรือ Distribute
- การสร้างแบบจำลองสำหรับประมวลผลงานเพื่อจำลองการทำงานจากระบบจริง
- อื่นๆ
Modelling Concept
Model ของ OMNeT++ มีอยู่ 2 แบบคือ Simple module และ Compound Module ดังรูป
Simple Module เป็นโมดูลที่ทำงานทั่วไปเราสามารถเขียนคำสั่งให้ทำงานเชื่อต่อกับโมดูลผ่าน port/gate หรืออยู่ทำงานเอง เมื่อหลายๆ Simple Module มารวมกัน ทำงานซับซ้อนมากขึ้นก็จะเป็นเป็น Compound Module ซึ่งแต่ละโมดูละต้องทำงานอยู่ภายใต้ Network เดียวกัน
Simple Module เป็นโมดูลที่ทำงานทั่วไปเราสามารถเขียนคำสั่งให้ทำงานเชื่อต่อกับโมดูลผ่าน port/gate หรืออยู่ทำงานเอง เมื่อหลายๆ Simple Module มารวมกัน ทำงานซับซ้อนมากขึ้นก็จะเป็นเป็น Compound Module ซึ่งแต่ละโมดูละต้องทำงานอยู่ภายใต้ Network เดียวกัน
ส่วนประกอบของโปรแกรม
เมื่อเราต้องการสร้างหรือจำลองการทำงานใดๆ จะประกอบด้วย 3 ส่วน ได้แก่
เมื่อเราต้องการสร้างหรือจำลองการทำงานใดๆ จะประกอบด้วย 3 ส่วน ได้แก่
- NED File – เป็นภาษาเฉพาะของโปรแกรมที่ใช้สร้าง Network graphic and animation
- .cc File – ใช้สำหรับ implement ให้แต่ละโมดูลทำงานโดยใช้ภาษา C++
- omnetpp.ini File – สำหรับตั้งค่าทั่วไปของโปรแกรมเมื่อเริ่มหรือขณะทำงาน เช่น กำหนดเวลา กำหนด delay time ฯลฯ
NED – Network Description Language
NED เป็นไฟล์ที่ใช้ออกแบบโครงสร้างของเครือข่าย (network) และการเชื่อมต่อระหว่างโมดูล (connection) ทั้ง simple และ compound module ให้สามารถสื่อสารกันได้ผ่านช่องทางที่กำหนด (channel) โดยเก็บไว้ในไฟล์ .ned สิ่งที่อยู่ใน NED ที่ควรรู้ ได้แก่
- Channel เป็นการระบุช่องสัญญานการเชื่อมต่อให้กับโมดูลโดยกำหนดลักษณะต่างๆ
มีพารามิเตอร์ที่เกี่ยวข้อง ได้แก่- delay – ความล่าช้าในการกระจายข้อมูลผ่าน channel
- error – ความน่าจะเป็นที่จะเปิดความผิดพลาดในการส่งข้อมูล หน่วยเป็น bit
- datarate – แบนด์วิดธ์ของช่องสัญญาน หน่วยเป็น bit per second (bps)
ตัวอย่างของ channel จะแสดงให้ดูอีกครั้งให้ตัวอย่างท้ายๆ ครับ
- Simple Module เป็นการสร้างบล๊อกทั่วไปหรือพื้นฐานในการสร้างโมดูลให้ทำงานซับซ้อนมากขึ้น (Compound Module) ภายในประกอบด้วย
- Parameter เป็นการเชตค่าให้กับโมดูลเมื่อทำงาน เช่น การแสดงผล ตำแหน่งของโมดูล
- Gates เป็นช่องทางการเชื่อมต่อของโมดูล เพื่อส่งและรับข้อมูล
- Syntax- ของ Simple Module
- ตัวอย่างของ simple module
- ตัวอย่างของ gates vector
- Compound Module เป็นโมดูลที่มีความซับซ้อนมากขึ้น อาจประกอบด้วย submodules หรือหลายๆ simple module มารวมกันและเชื่อมโยงเข้าด้วยกันผ่าน connection ภายใน submodule ก็ประกอบด้วย parameter และ gate เช่นกัน
- Syntax- ของ Simple Module
- ตัวอย่างของ simple module
- Connection เป็นการเชื่อมต่อโมดูลต่าๆเข้าด้วยกันเพื่อสามารถรับส่งข้อความหากันได้ใน Compound Module โดยจะระบุว่า gate ในแต่ละ submodule จะติดต่อกันยังไงผ่านช่องทางไหน
- ตัวอย่างของ Connection แบบพื้นฐาน
- ตัวอย่างของ Connection โดยใช้ Channel
- ตัวอย่างของ Connection โดยใช้ gate vector
.cc File ใช้สำหรับ implement
- .cc จะเป็น File ที่ใช้ให้แต่ละโมดูลมีการทำงานโดยจะใช้ภาษา C++ ในการ implement เป็นการสร้างรายละเอียดการทำงานให้แต่ละ module ว่าจะต้องการมีให้มีการประมวลผลของข้อมูลในแบบลักษณะตามที่ต้องการ และสร้างอัลกอริทึมที่มีการประมวลผลข้อมูลที่มีขนาดใหญ่ได้ มีการ รับ-ส่ง ข้อมูลออกทาง cMessage ซึ่งจะเก็บบันทึกไว้ในไฟล์ .cc
omnetpp.ini File
- เป็นการตั้งค่าการทำงานทั่วไปของโปรแกรมเมื่อมีการเริ่มทำงานต้องการให้อยู่ในเครือข่ายใดในการทำงาน ในการสร้างโปรเจคขึ้นมาในหนึ่งโปรเจคการจำลองนั้น อาจจะสร้างการจำลองที่มีหลายแบบที่ทำงาน หรืออัลกอริทึมการทำงานที่ต่างกัน จึงจำเป็นที่จะต้องมีเครือข่าย (network) บอกให้ทราบว่าจะให้การจำลองแบบใด และมีกำหนดเวลา กำหนด delay time ในการทำงานของโปรแกรม
ความคิดเห็น
แสดงความคิดเห็น