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