[Ns-developers] static InterferenceHelper::CalculateTxDuration()
Mathieu Lacage
mathieu.lacage at sophia.inria.fr
Tue Jul 14 11:19:12 PDT 2009
my only comment is that you can move the content of
interference-helper-tx-duration-test.h into
interference-helper-tx-duration-test.cc: this is usually what we have
done for tests.
Other than that, looks good for commit :)
thanks for your work,
Mathieu
On Tue, 2009-07-14 at 18:23 +0200, Nicola Baldo wrote:
> Hi all,
>
> I was trying to simulate a scenario with 802.11b using short preamble,
> and I realized that frame durations were not calculated appropriately.
> Thinking about how to fix this issue, it emerged that there are actually
> several other associated issues.
>
> In the end, I prepared a patch that does following things to address the
> whole problem:
>
> 1) make InterferenceHelper::CalculateTxDuration() a static method.
> Currently, InterferenceHelper has several member variables which store
> PHY related parameters such as the standard being used and the duration
> of the PLCP preamble. This information is used to calculate the duration
> of received frames. This makes it not feasible to simulate scenarios in
> which several configurations co-exist in the same channel (e.g., a BSS
> using short preamble and another BSS using long preamble).
>
> 2) add several convenience methods:
> static WifiMode GetPlcpHeaderMode (WifiMode, WifiPreamble);
> static uint32_t GetPlcpHeaderDurationMicroSeconds (WifiMode,
> WifiPreamble);
> static uint32_t GetPlcpPreambleDurationMicroSeconds (WifiMode,
> WifiPreamble);
> static uint32_t GetPayloadDurationMicroSeconds (size, WifiMode);
> the introduction of the above methods makes IMHO the code more readable
> and makes it possible to remove several switch statements (there were
> many of them for calculating preamble durations at different locations).
> Particular care was taken in making all calculations according to the
> standard. I put comments referring to specific sections in the IEEE Std.
> 802.11-2007 for the majority of these calculations, in the hope that it
> is easier for everybody to check that the code does the right thing.
>
> 3) (I'm sure I'll have to fight to get this one accepted ;-) )
> Added a WifiPhyStandard member variable to WifiMode.
> I think from a logical perspective it makes sense, since there is a
> 1-to-1 relationship between a WifiMode and a WifiPhyStandard. Even if,
> for example, 802.11a and 802.11g modes are very similar, the standard
> makes an explicit distinction between them (OFDM at 5Hz vs ERP-OFDM and
> DSSS-OFDM at 2.4Ghz), and the duration of their frames would differ due
> to different PLCP.
>
> 4) added a unit test (interference-helper-tx-duration-test) which makes
> sure that the code calculating frame durations returns the correct value
> for some known cases. I've added a lot of cases for 802.11b; for 802.11a
> there are only 3 test cases, if somebody could provide more it would be
> great.
>
> 5) let m_maxPacketDuration be set automatically based on received
> packets. This makes it possible for a device using a "fast" standard to
> use the correct interference duration when other devices using "slow"
> standard are present in the same channel. Conceptually, this issue is
> similar to issue 1), and this is the reason why it is included in the
> same patch.
>
> 6) in InterferenceHelper, I removed several member variables which
> became unused, and removed as well all
> InterferenceHelper::Configure80211*Parameters() methods, which were not
> needed any more.
>
>
> The patch is here for review:
> http://codereview.appspot.com/91110
>
> as a final note, I would like to say that the patch passes regression
> tests, so even though most of the CalculateTxDuration code was
> re-implemented the result is consistent at least in a few cases.
>
> That's all! I am looking forward to seeing your comments...
>
> Regards,
>
> Nicola
>
>
>
More information about the Ns-developers
mailing list