OMNeT++ Community Summit, 2016 An outline of the new IEEE 802.11 - - PowerPoint PPT Presentation

omnet community summit 2016
SMART_READER_LITE
LIVE PREVIEW

OMNeT++ Community Summit, 2016 An outline of the new IEEE 802.11 - - PowerPoint PPT Presentation

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 Mszros Quick Recap The old model was a dead end Design


slide-1
SLIDE 1

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

slide-2
SLIDE 2

Quick Recap

  • The old model was a dead end
  • Design draft for a new model was presented at the

OMNeT++ 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

slide-3
SLIDE 3

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

slide-4
SLIDE 4

Conceptual Architecture

Mac Rx Coordination Function Tx Procedure Procedure Procedure Policy Policy Policy Queue Queue Queue Mac Data Service Process Process Process Policy Policy Policy Channel Access Function Channel Access Function Channel Access Function Frame Sequence

slide-5
SLIDE 5

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
slide-6
SLIDE 6

Experimenting with Rate Management

  • Rate selection

Assigns rate based on frame type and receiver

  • Rate control

Determines optimal rates based on channel quality

slide-7
SLIDE 7

Contents

Coordination Functions Channel Access Functions Procedures Policies Mac Data Service Frame Exchange Sequences Dynamic Model Behavior

slide-8
SLIDE 8

Coordination Functions

  • Implemented as compound modules using C++ classes

derived from cModule

Dcf

Hcf (Edca only)

  • Unimplemented

Pcf

Mcf

IEEE 802.11 Mac

slide-9
SLIDE 9

Distributed Coordination Function (Dcf)

  • Submodules communicate via direct C++ method calls
slide-10
SLIDE 10

Hybrid Coordination Function (Hcf)

scary

slide-11
SLIDE 11

Contents

Coordination Functions Channel Access Functions Procedures Policies Mac Data Service Frame Exchange Sequences Dynamic Model Behavior

slide-12
SLIDE 12

Channel Access Functions

  • Implemented as compound modules using C++ classes

derived from cModule

Dcaf

Edcaf

Channel Access Function

slide-13
SLIDE 13

Backoff Procedure

IDLE DEFER IFS BACKOFF Start & Busy Ch-Free Ch-Busy Ch-Busy Start & !Busy Backoff-Done IFS-Done

slide-14
SLIDE 14

Enhanced Distributed Channel Access (Edca)

  • Edca contains one Edcaf per access category (AC)
  • EdcaCollisionController resolves internal

collisions

slide-15
SLIDE 15

Contents

Coordination Functions Channel Access Functions Procedures Policies Mac Data Service Frame Exchange Sequences Dynamic Model Behavior

slide-16
SLIDE 16

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

slide-17
SLIDE 17

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)

slide-18
SLIDE 18

Contents

Coordination Functions Channel Access Functions Procedures Policies Mac Data Service Frame Exchange Sequences Dynamic Model Behavior

slide-19
SLIDE 19

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

slide-20
SLIDE 20

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

slide-21
SLIDE 21

Contents

Coordination Functions Channel Access Functions Procedures Policies Mac Data Service Frame Exchange Sequences Dynamic Model Behavior

slide-22
SLIDE 22

Coordination Function

Data Flow at the Originator

Frame(s) Frame(s) Pending queue Pending queue Pending queue In progress frames In progress frames In progress frames Mac Data Service Process Policy Policy Policy Process Process

slide-23
SLIDE 23

As Defined in the Standard

slide-24
SLIDE 24

Correspondence to the Standard

slide-25
SLIDE 25

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

slide-26
SLIDE 26

Contents

Coordination Functions Channel Access Functions Procedures Policies Mac Data Service Frame Exchange Sequences Dynamic Model Behavior

slide-27
SLIDE 27

Correspondence to the Standard

slide-28
SLIDE 28

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

slide-29
SLIDE 29

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.

slide-30
SLIDE 30

Contents

Coordination Functions Channel Access Functions Procedures Policies Mac Data Service Frame Exchange Sequences Dynamic Model Behavior

slide-31
SLIDE 31
  • 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

slide-32
SLIDE 32

Data Frame Arrived → Backoff Procedure Started

Mac Dcf Pending Queue Backoff Procedure Dcaf processUpperFrame() insert() requestChannel() startBackoffProcedure() waiting for backoff procedure to finish handleMessage() scheduleAt()

slide-33
SLIDE 33

Backoff Procdedure Finished → Data Frame Extracted

Dcaf Dcf Frame Sequence Handler DcfFs backoffProcedureFinished() channelGranted() startFrameSequence() prepareStep() Backoff Procedure handleMessage() extractFramesToTransmit() MacData Service Frag. Policy computeFragmentSizes()

slide-34
SLIDE 34

Data Frame Extracted→ Data Transmission Started

Dcf Tx Rate Selection transmitFrame() computeDataFrameMode() waiting for Data transmission to finish send() transmitFrame() Frame Sequence Handler Dcf Dcaf Backoff Procedure

slide-35
SLIDE 35

Data Transmission Finished → Waiting for ACK Started

Frame Sequence Handler DcfFs Dcf completeStep() prepareStep() scheduleStartRxTimeout() waiting for ACK frame to arrive transmissionComplete() Tx receiveSignal() transmissionComplete() scheduleAt() Dcf

slide-36
SLIDE 36

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)

slide-37
SLIDE 37

Questions and Answers

Levente Mészáros

Thank you for your kind attention!

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