I have some trouble in WME in madwifi, which was CVS checked out from
HEAD in 2005/10/22.
In brief, Etherreal shows madwifi WME actually correctly assigned three
bits UP field
in QoS Control field based on the assigned Access Category value,
but our following test showed that the consumed bandwith under
flows with different ACs did not always match the specification.
I am afraid I am missing something and would like you to give any
comments or suggestions.
Thanks a lot.
<<< profile with my environment >>>
- 802.11g infrastructure mode
- configuration : AP and one client with Monitor node (run etherreal)
PC1（Managed Mode:802.11g）→→→→→PC2（Master Mode:802.11g）
- Traffic generator on PC1 sends two UDP flows to PC2 and the receiver
on PC2 prints out the receiving throughput with each flow.
- different Access Category is assigned to each flow and
one flow has AC_BK,AC_BE and the another flow has AC_VI,AC_VO
More specifically, the traffic generator sets TOS value (for change AC
for each flow over setsockopt() function and the TOS value is mapped to
AC_BK/BE and AC_VI/VO respectively.
<<< Test scenario >>>
1st UDP flow :
the traffic generator (TG) starts one UDP flow with 30Mbps load
(intensionally too high).
On minute later, TG starts another UDP flow with 10Mbps and this flow
its load to 30Mbps by the 10Mbps step per minute.
( in other words, 20Mbps at 120sec and 30Mbps at 180sec )
After four minutes from the beginning, the receiving throughput of each flow
is measured at PC2. By comparing the throughput of these two flows which
assigned different AC value, the following result was figured out.
AC_BE = AC_VI > AC_BK = AC_VO
For example, The test with AC_VO(voice) for 1st flow and with AC_BE
for 2nd flow showed that the 2nd flow (Best Effort) pushed out the 1st flow
and BE consumed all bandwidth which VO got nothing.
But apparently, this is against the specification in which Voice has
high priority over Best Effort.
Therefore, in my case WME is actually prioritizing the flows based on ACs
but the prioritizing result was against my expectation, Strangely enough.
Did I miss something to set HAL for enable WME?
PC3 is set Monitor mode and packet capture with ethereal.
I check packet's QoS Control Field, Sequence Control Field, and so on and
found every fields set correctly.
I also checked that IEEE80211_C_WME,IEEE80211_F_WME,IEEE80211_NODE_QOS
by enabling debug print, but found nothing wrong.