Bridging atheros/ethernet seems incredibly slow

Sam Leffler sam at errno.com
Sat Dec 17 10:59:37 PST 2005


Nate Nielsen wrote:
> Sam Leffler wrote:
> 
>>adhoc mode is not intended for bridging; I'm a bit surprised it works at
>>all (I've never tried it).  
> 
> 
> Perhaps not in the atheros driver, or net80211 subsystem.

The atheros driver is irrelevant, it's just a packet pusher.

> 
> But general it does make sense. I'm setting up several point to point
> links with relays. The plan is that these relays bridge two freebsd
> boxes with a radio in each one.

You are describing a WDS link which is not implemented with adhoc mode.

> 
> There seems to be very poor interaction between the bridging code and
> the FreeBSD 802.11 subsystem. Perhaps because they're both on layer 2.

As I said before, Andrew Atrens did this exercise.  The bridge code puts 
the interface in promiscuous mode and this causes excess traffic due to 
packets being reflected.

> 
> 
>>There are special hacks in
>>ieee80211_deliver_data specific to hostap.  
> 
> 
> Yes, when I switched the bridging box to hostap mode, the bridge works
> at a decent rate (10+ Mbps).
> 
> However when I add the second hop in, performance is once again crap
> (500Kbps to 1Mbps). The setup looks like this (where '-' is ethernet,
> and '+' is wireless):

You've again put the interface in promiscious mode.  You will need to 
augment the net80211 layer to suppress certain traffic.  People have 
done this before; try searching with google.


> 
>                        The Relay
> ----- BOX A ++++++++ BOX B -- BOX C +++++++++ BOX D -----
>                  Bridged with Ethernet
> 
> BOX B and BOX C are in hostap mode. In the above setup BOX A has fast
> throughput to BOX C, and BOX B has equally fast throughput to BOX D.
> However BOX A to BOX D is slow.
> 
> Unless there's a simple fix (no pressure), I think I'm giving up on
> bridging the relay points. I'll be routing instead, even though that
> brings strange multicast problems (which I'll post about seperately).
> 

The code to do this is in the multi-bss vap project I did earlier this 
year.  Unfortunately, as I've said repeatedly, it will not come into 
freebsd until there are developers committed to handling updating the 
wireless drivers.

> 
>>>Doing a flood ping from BOX A to a machine bridged across the link is
>>>not lossy, instead the send rate is limited. That is, the ping packets
>>>are sent slowly.
> 
> 
> This is also the case over two bridges.
> 
> 
>>>>13 tx management frames
>>>>7 tx frames discarded prior to association
>>>>544 tx failed 'cuz too many retries
>>>>6014 long on-chip tx retries
>>>>876 tx frames with no ack marked
>>>>1952 rx failed 'cuz frame too short
>>>>5129 rx failed 'cuz of PHY err
>>>>   1524 OFDM timing
>>>>   3605 OFDM illegal rate
>>>>1 beacons transmitted
>>>>91 periodic calibrations
>>>>rssi of last ack: 36
>>>>avg recv rssi: 38
>>>>1 switched default/rx antenna
>>>>Antenna profile:
>>>>[1] tx     1192 rx    18513
>>>>[2] tx       68 rx        1
>>
>>These are not the stats you want :)  
> 
> 
> I thought (obviously wrongly) the 'OFDM illegal rate' may have something
> to do with it.
> 
> 
>>Look at the 802.11 layer.  FWIW I
>>recently reorgnized the tools and renamed them so the program you want
>>is now called wlanstats and is found in tools/tools/net80211.
> 
> 
> I'm using FreeBSD 6.0. Here's the output of 80211stats on the bridge.
> This is when running in adhoc mode. (ie: BOX B above):
> 
> 5 rx from wrong bssid
> 770 rx discard 'cuz dup
> 5617 rx beacon frames
> 3 active scans started
> 2 nodes timed out inactivity
> 
> And on the peer (ie: BOX A above):
> 
> 3015 rx discard 'cuz dup
> 6017 rx beacon frames
> 3 active scans started
> 2 nodes timed out inactivity
> 
> Cheers,
> Nate
> 
> 



More information about the freebsd-net mailing list