omnet++ community summit, 2016

37
OMNeT++ Community Summit, 2016 An outline of the new IEEE 802.11 model in the INET framework Brno University of Technology – Czech Republic – September 15-16, 2016 Levente Mészáros

Upload: others

Post on 12-Jan-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OMNeT++ Community Summit, 2016

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

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

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

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

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

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

Contents

Coordination Functions

Channel Access Functions

Procedures

Policies

Mac Data Service

Frame Exchange Sequences

Dynamic Model Behavior

Page 8: OMNeT++ Community Summit, 2016

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

Distributed Coordination Function (Dcf)

● Submodules communicate via direct C++ method calls

Page 10: OMNeT++ Community Summit, 2016

Hybrid Coordination Function (Hcf)

scary

Page 11: OMNeT++ Community Summit, 2016

Contents

Coordination Functions

Channel Access Functions

Procedures

Policies

Mac Data Service

Frame Exchange Sequences

Dynamic Model Behavior

Page 12: OMNeT++ Community Summit, 2016

Channel Access Functions

● Implemented as compound modules using C++ classes derived from cModule

– Dcaf

– Edcaf

Channel Access Function

Page 13: OMNeT++ Community Summit, 2016

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

Enhanced Distributed Channel Access (Edca)

● Edca contains one Edcaf per access category (AC)

● EdcaCollisionController resolves internal collisions

Page 15: OMNeT++ Community Summit, 2016

Contents

Coordination Functions

Channel Access Functions

Procedures

Policies

Mac Data Service

Frame Exchange Sequences

Dynamic Model Behavior

Page 16: OMNeT++ Community Summit, 2016

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

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

Contents

Coordination Functions

Channel Access Functions

Procedures

Policies

Mac Data Service

Frame Exchange Sequences

Dynamic Model Behavior

Page 19: OMNeT++ Community Summit, 2016

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

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

Contents

Coordination Functions

Channel Access Functions

Procedures

Policies

Mac Data Service

Frame Exchange Sequences

Dynamic Model Behavior

Page 22: OMNeT++ Community Summit, 2016

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

As Defined in the Standard

Page 24: OMNeT++ Community Summit, 2016

Correspondence to the Standard

Page 25: OMNeT++ Community Summit, 2016

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

Contents

Coordination Functions

Channel Access Functions

Procedures

Policies

Mac Data Service

Frame Exchange Sequences

Dynamic Model Behavior

Page 27: OMNeT++ Community Summit, 2016

Correspondence to the Standard

Page 28: OMNeT++ Community Summit, 2016

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

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

Contents

Coordination Functions

Channel Access Functions

Procedures

Policies

Mac Data Service

Frame Exchange Sequences

Dynamic Model Behavior

Page 31: OMNeT++ Community Summit, 2016

● 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

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

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

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

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

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

Questions and Answers

Levente Mészáros

Thank you for your kind attention!

Brno University of Technology – Czech Republic – September 15-16, 2016