Package: inet.linklayer.ieee80211.mac.coordinationfunction
Dcf
compound moduleIEEE 802.11 Distributed Coordination Function
Usage diagram
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
Used in compound modules
Name | Type | Description |
---|---|---|
Ieee80211Mac | compound module |
Implementation of the 802.11b MAC protocol. This module is intended to be used in combination with the Ieee80211Radio module as the physical layer. (The SnrEval80211 and Decider80211 modules should also work if per-packet bitrate setting gets implemented.) |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
maxQueueSize | int | 100 | -1 means unlimited |
rxModule | string | ||
txModule | string | ||
rateControlType | string | "" | |
prioritizeMulticast | bool | false |
if true, prioritize multicast frames (9.3.2.1 Fundamental access) |
Properties
Name | Value | Description |
---|---|---|
class | Dcf | |
display | i=block/queue |
Signals
Name | Type | Unit |
---|---|---|
NF_LINK_BREAK | inet::ieee80211::Ieee80211DataOrMgmtFrame | |
NF_PACKET_DROP | inet::ieee80211::Ieee80211Frame |
Unassigned submodule parameters
Name | Type | Default value | Description |
---|---|---|---|
channelAccess.contention.initialChannelBusy | bool | true |
assume that channel was busy before the simulation started |
channelAccess.contention.backoffOptimization | bool | true |
we can pretend the frame has arrived into the queue a little bit earlier, and may be able to start transmitting immediately |
rateSelection.multicastFrameBitrate | double | -1bps | |
rateSelection.responseAckFrameBitrate | double | -1bps | |
rateSelection.responseCtsFrameBitrate | double | -1bps | |
rateSelection.dataFrameBitrate | double | -1bps |
fastest |
rateSelection.mgmtFrameBitrate | double | -1bps |
fastest |
rateSelection.controlFrameBitrate | double | -1bps | |
recoveryProcedure.shortRetryLimit | int | 7 | |
recoveryProcedure.longRetryLimit | int | 4 | |
originatorProtectionMechanism.rateSelectionModule | string | ||
originatorAckPolicy.rateSelectionModule | string | ||
originatorAckPolicy.ackTimeout | double | -1s | |
recipientAckPolicy.rateSelectionModule | string | ||
rtsPolicy.rateSelectionModule | string | ||
rtsPolicy.ctsTimeout | double | -1s | |
rtsPolicy.rtsThreshold | int | 2346B | |
ctsPolicy.rxModule | string | ||
ctsPolicy.rateSelectionModule | string |
Source code
// // IEEE 802.11 Distributed Coordination Function // module Dcf { parameters: int maxQueueSize = default(100); // -1 means unlimited string rxModule; string txModule; string rateControlType = default(""); bool prioritizeMulticast = default(false); // if true, prioritize multicast frames (9.3.2.1 Fundamental access) *.rateSelectionModule = "^.rateSelection"; *.rxModule = "^." + this.rxModule; @class(Dcf); @display("i=block/queue"); @signal[NF_LINK_BREAK](type=inet::ieee80211::Ieee80211DataOrMgmtFrame); @signal[NF_PACKET_DROP](type=inet::ieee80211::Ieee80211Frame); submodules: channelAccess: Dcaf { parameters: @display("p=150,100"); } originatorMacDataService: OriginatorMacDataService { parameters: @display("p=150,200"); } recipientMacDataService: RecipientMacDataService { parameters: @display("p=150,300"); } rateSelection: RateSelection { parameters: rateControlModule = "^.rateControl"; @display("p=400,100"); } rateControl: <rateControlType> like IRateControl if rateControlType != "" { parameters: @display("p=400,200"); } recoveryProcedure: NonQoSRecoveryProcedure { parameters: cwCalculatorModule = "^.channelAccess"; rtsPolicyModule = "^.rtsPolicy"; @display("p=400,300"); } originatorProtectionMechanism: OriginatorProtectionMechanism { parameters: @display("p=400,400"); } originatorAckPolicy: OriginatorAckPolicy { parameters: @display("p=650,100"); } recipientAckPolicy: RecipientAckPolicy { parameters: @display("p=650,200"); } rtsPolicy: RtsPolicy { parameters: @display("p=650,300"); } ctsPolicy: CtsPolicy { parameters: @display("p=650,400"); } }File: src/inet/linklayer/ieee80211/mac/coordinationfunction/Dcf.ned