omnet++ community summit, 2016
TRANSCRIPT
![Page 1: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/1.jpg)
OMNeT++ Community Summit, 2016
An outline of the new IEEE 802.11model in the INET framework
Brno University of Technology – Czech Republic – September 15-16, 2016 Levente Mészáros
![Page 2: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/2.jpg)
Quick Recap
● The old model was a dead end
● Design draft for a new model was presented at theOMNeT++ Community Summit 2015 in Zurich
● First version was released in INET-3.1.1, October, 2015
● The old model was replaced in INET-3.2, December, 2015
● Benjámin M. Seregi works on the model ever since
– First design draft has been significantly reworked
![Page 3: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/3.jpg)
Model Goals
● Full-featured and validated model
● Directly implement the standard
– Implementation mirrors the concepts in the Standard● Modular, pluggable architecture
– Allow experimentation
– Widely configurable
![Page 4: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/4.jpg)
Conceptual Architecture
Mac
Rx
Coordination Function
Tx
ProcedureProcedureProcedurePolicyPolicyPolicy
QueueQueueQueue
Mac Data Service
ProcessProcessProcessPolicyPolicyPolicy
Channel Access FunctionChannel Access FunctionChannel Access Function
Frame Sequence
![Page 5: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/5.jpg)
Some Experimentation Options
● New policies can be defined by the user to allow experimenting with non-standard scenarios
– Custom ACK policy (e.g. for long-range wifi)
– Custom policy for RTS/CTS protection
– Fragmentation/aggregation policy
– Block ACK agreement initiatation/termination policy● Custom rate selection and new rate control algorithms
● Custom backoff procedure
● New frame sequences
![Page 6: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/6.jpg)
Experimenting with Rate Management
● Rate selection
– Assigns rate based on frame type and receiver
● Rate control
– Determines optimal rates based on channel quality
![Page 7: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/7.jpg)
Contents
Coordination Functions
Channel Access Functions
Procedures
Policies
Mac Data Service
Frame Exchange Sequences
Dynamic Model Behavior
![Page 8: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/8.jpg)
Coordination Functions
● Implemented as compound modules using C++ classes derived from cModule
– Dcf
– Hcf (Edca only)
● Unimplemented
– Pcf
– McfIEEE 802.11 Mac
![Page 9: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/9.jpg)
Distributed Coordination Function (Dcf)
● Submodules communicate via direct C++ method calls
![Page 10: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/10.jpg)
Hybrid Coordination Function (Hcf)
scary
![Page 11: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/11.jpg)
Contents
Coordination Functions
Channel Access Functions
Procedures
Policies
Mac Data Service
Frame Exchange Sequences
Dynamic Model Behavior
![Page 12: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/12.jpg)
Channel Access Functions
● Implemented as compound modules using C++ classes derived from cModule
– Dcaf
– Edcaf
Channel Access Function
![Page 13: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/13.jpg)
Backoff Procedure
IDLE
DEFER
IFS BACKOFF
Start &Busy
Ch-FreeCh-Busy
Ch-Busy
Start &!Busy
Backoff-Done
IFS-Done
![Page 14: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/14.jpg)
Enhanced Distributed Channel Access (Edca)
● Edca contains one Edcaf per access category (AC)
● EdcaCollisionController resolves internal collisions
![Page 15: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/15.jpg)
Contents
Coordination Functions
Channel Access Functions
Procedures
Policies
Mac Data Service
Frame Exchange Sequences
Dynamic Model Behavior
![Page 16: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/16.jpg)
Procedures
● Procedures answer how to do something as opposed to when
● Our procedure implementations directly follow the standard
● Implemented as C++ classes
– Backoff procedure
– Ack procedure
– Rts/Cts procedure
– Block Ack Agreement procedure
– Block Ack procedure
– Recovery procedure
– Protection mechanism
– TxOp procedure
![Page 17: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/17.jpg)
Procedure Example
● Keeps track of frame reception statuses for block ack agreements
● RecipientBlockAckAgreementProcedure contains
map<pair<MACAddress, Tid>, BlockAckAgreement>
● BlockAckAgreement contains
Starting sequence number
Buffer size
Expiration time
BlockAckRecord● BlockAckRecord contains
pair<SeqNum, FragNum> → Status (arrived or not)
![Page 18: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/18.jpg)
Contents
Coordination Functions
Channel Access Functions
Procedures
Policies
Mac Data Service
Frame Exchange Sequences
Dynamic Model Behavior
![Page 19: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/19.jpg)
Policies
● Policies answer when as opposed to how
● Meant to be easily replaceable with custom versions
● Implemented as simple modules
– Ack policy
– Rts / Cts policy
– Fragmentation policy
– Aggregation policy
– Block ack agreement policy
![Page 20: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/20.jpg)
Policy Example
● OriginatorBlockAckAgreementPolicy determines
– when to initiate a new agreement
– when to terminte an existing agreement● OriginatorQoSAckPolicy determines
– ack policy subfield for outgoing data frames
NORMAL_ACK, BLOCK_ACK, NO_ACK
– when to send BlockAckReq
![Page 21: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/21.jpg)
Contents
Coordination Functions
Channel Access Functions
Procedures
Policies
Mac Data Service
Frame Exchange Sequences
Dynamic Model Behavior
![Page 22: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/22.jpg)
Coordination Function
Data Flow at the Originator
Frame(s)
Frame(s)
Pending queuePending queuePending queue
In progress framesIn progress framesIn progress frames
Mac Data Service
Process PolicyPolicyPolicyProcessProcess
![Page 23: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/23.jpg)
As Defined in the Standard
![Page 24: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/24.jpg)
Correspondence to the Standard
![Page 25: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/25.jpg)
Implementation
● Implemented as compound modules using C++ classes derived from cModule
● Contains processes implemented as C++ classes
– Sequence number assignment / Duplicate removal
– Fragmentation / Defragmentation
– Aggregation / Deaggregation
– Block Ack reordering● Contains policies as submodules
– Fragmentation policy
– Aggregation policy
Originator mac data service
![Page 26: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/26.jpg)
Contents
Coordination Functions
Channel Access Functions
Procedures
Policies
Mac Data Service
Frame Exchange Sequences
Dynamic Model Behavior
![Page 27: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/27.jpg)
Correspondence to the Standard
![Page 28: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/28.jpg)
Hcf Frame Sequence Example
Originator Recipient
RTS
CTS
Data
ACK
Qos Data
BlockAckReq
BlockAck
TxOp
RTS CTS (Data+individual) ACK (Data +QoS +individual +block-ack)(Data +QoS +individual +block-ack) BlockAckReq BlockAck
Qos Data
![Page 29: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/29.jpg)
Implementation
● Implemented as C++ classes
● Coordination functions have their own frame sequences directly corresponding to the 802.11 Annex G. (normative)
– DcfFs, PcfFs, HcfFs, and McfFs
● Building blocks
– SequentialFs, OptionalFs,RepeatingFs, AlternativeFs
– FragFrameFs, AckFs, SelfCtsFs, etc.
![Page 30: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/30.jpg)
Contents
Coordination Functions
Channel Access Functions
Procedures
Policies
Mac Data Service
Frame Exchange Sequences
Dynamic Model Behavior
![Page 31: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/31.jpg)
● Processing the Data Frame at the Originator– Data Frame Arrived → Backoff Procedure Started
– Backoff Procdedure Finished → Data Frame Extracted
– Data Frame Extracted→ Data Transmission Started
– Data Transmission Finished → Waiting for ACK Started
● Processing the Data Frame at the Recipient● Processing the ACK Frame at the Originator
Data ACK Frame Sequence Example
![Page 32: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/32.jpg)
Data Frame Arrived → Backoff Procedure Started
Mac DcfPendingQueue
BackoffProcedureDcaf
processUpperFrame()insert()
requestChannel()startBackoffProcedure()
waiting for backoff procedure to finish
handleMessage()
scheduleAt()
![Page 33: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/33.jpg)
Backoff Procdedure Finished → Data Frame Extracted
Dcaf DcfFrame
SequenceHandler
DcfFs
backoffProcedureFinished()
channelGranted()
startFrameSequence()
prepareStep()
BackoffProcedure
handleMessage()
extractFramesToTransmit()
MacDataService
Frag.Policy
computeFragmentSizes()
![Page 34: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/34.jpg)
Data Frame Extracted→ Data Transmission Started
Dcf TxRate
Selection
transmitFrame()
computeDataFrameMode()
waiting for Data transmission to finish
send()
transmitFrame()
FrameSequenceHandler
DcfDcafBackoff
Procedure
![Page 35: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/35.jpg)
Data Transmission Finished → Waiting for ACK Started
FrameSequenceHandler
DcfFsDcf
completeStep()
prepareStep()
scheduleStartRxTimeout()
waiting for ACK frame to arrive
transmissionComplete()
Tx
receiveSignal()
transmissionComplete()
scheduleAt()
Dcf
![Page 36: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/36.jpg)
Frequently Asked Questions
● When will it be available?
– Needs more work on: validation, logging, visualization● Is it compatible with the current version?
– It’s meant to be (Ieee80211CompatibleMac)
● What features are implemented?
– New: block ack, MSDU aggregation
– Still missing: Hcca, Pcf, Mcf, MPDU aggregation, frame lifetime, etc.
● Can I build a simplified MAC?
– Yes (work in progress)
![Page 37: OMNeT++ Community Summit, 2016](https://reader031.vdocuments.net/reader031/viewer/2022012121/61ddc4ac6f7d251fb8385145/html5/thumbnails/37.jpg)
Questions and Answers
Levente Mészáros
Thank you for your kind attention!
Brno University of Technology – Czech Republic – September 15-16, 2016