2. ความรู้เบื้องต้นเกี่ยวกับ OMNeT++

25/06/2014 4:36 PM คอมพิวเตอร์ 944 views

 

หลังจากที่ได้ติดตั้งโปรแกรม OMNeT++ ไปแล้วผมก็ได้ศึกษารายละเอียดเบื้องต้นเกี่ยวกับโปรแกรม
อยากจะบอกว่าหาภาษาไทยอ่านไม่ได้เลย (อาจจะมีแต่หาไม่เจอ) เพราะเป็นโปรแกรมเฉพาะด้าน ส่วนมากจะใช้ในการทำงานวิจัยมากกว่า ในเว็บ 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 and Compound Module

ส่วนประกอบของโปรแกรม
เมื่อเราต้องการสร้างหรือจำลองการทำงานใดๆ จะประกอบด้วย 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 ในการทำงานของโปรแกรม

 

, , , , , , , , , ,