Bug 11150 - Wireless Bridging
: Wireless Bridging
Status: NEW
Product: SqueezePlay
Classification: Unclassified
Component: Networking
: unspecified
: PC Other
: P3 normal with 17 votes (vote)
: ---
Assigned To: Felix Mueller
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2009-02-21 21:15 UTC by Felix Mueller
Modified: 2011-01-14 00:24 UTC (History)
3 users (show)

See Also:
Category: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Felix Mueller 2009-02-21 21:15:41 UTC
Implement bridging between ethernet and wireless.
Comment 1 Felix Mueller 2009-06-05 06:04:07 UTC
Added simple setup applet allowing enabling/disabling of Wireless Bridging. r6013
Comment 2 Blackketter Dean 2009-07-22 08:51:26 UTC
Felix, is this done?
Comment 3 Blackketter Dean 2009-07-22 09:01:57 UTC
Moving to the product SqueezePlay because this bug appears to apply to any player based on that application code.  Feel free to move it back if it's specific to the original product.
Comment 4 Felix Mueller 2009-07-30 02:12:41 UTC
Short answer: no

Long answer:

Bridging between a _wireless_ and _wired_ interface is not trivial and cannot be done with the standard bridging capabilities already included in the kernel, i.e. brctrl.

Kernel bridging requires an interface to be capable (or to allow) packets being sent with source mac address that are not its own, but the one from the client behind the bridge. This allows to route the answer back to the real client rather than the bridge interface. (BTW: The bridge interface is in promiscuous mode to be able to 'see' these packets.)

Unfortunately _wireless_ interfaces (drivers) do not allow packets being sent containing not its own mac address. The driver silently drops packets with a manipulated mac address. Apart from that it seems that wpa_supplicant is confused about the situation and I've seen the wireless connection going up and down.

Possible solution:

A solution - which is what is currently implemented - is the use of proxy arp together with a DHCP forwarding daemon. Proxy arp adds a route for the client behind the bridge which singles out that one IP address to the other side of the bridge. The bridge then answers to arp requests regarding the client so packets gets sent to the bridge and are then forwarded to the client.

To allow a client to get an IP address via DHCP an additional daemon is needed which listens for DHCP requests and relays them. This daemon currently is also responsible to add the proper route depending on what IP address the client gets.

Know issues:

a) Dynamically added routes for clients are lost when Fab4 is power-cycled
b) If a client is removed, the route isn't removed automatically
c) A client cannot use a static IP address as the route is then missing
d) Network setup changes, i.e. using wired instead of wireless does not disable bridging

Possible solutions:

a) Save routes and re-establish them after reboot
b) Monitor arp cache and if client isn't in there anymore, remove route
c) UI which allows to enter IP address of client which then adds the route
d) Hook into the network setup process and disable bridging if wired is used

Or, find another solution altogether which does a better job than arp proxying and works with wireless interfaces.
Comment 5 Chris Owens 2009-10-21 09:49:27 UTC
moving current p2 bugs to p3 to make room for moving p1.5 bugs to p2
Comment 6 Pat Ransil 2009-10-23 05:11:12 UTC
Administrative move of 7.5 bugs. All P2, P3, P4 being downgraded one level. Will then split P1s.
Comment 7 Pat Ransil 2009-10-23 05:17:19 UTC
Administrative move of 7.5 bugs. All P2, P3, P4 being downgraded one level. Will then split P1s.
Comment 8 Felix Mueller 2009-10-24 04:07:17 UTC
Additional known issue of the current implementation:

e) UDP packets are not bridged / forwarded

Possible solution:

e) Add yet another daemon taking care of UDP packets
Comment 9 Peter Watkins 2009-12-27 09:41:39 UTC
Do you have a good idea what customers use bridging for, and what % of use cases would be satisfied with simple iptables NAT "IP masquerading"? While some things like bidirectional BitTorrent traffic don't work with NAT, could you satisfy 80-90% of the users with simple IP masquerading that would be easy to implement?
Comment 10 Peter Watkins 2009-12-29 09:15:28 UTC
A new forum thread illustrates another use case for simple NAT/IP Masquerading:

Squeezebox Radio In Hotel?
http://forums.slimdevices.com/showthread.php?t=73156
"As long as the hotel room has free wi-fi I should be able to use the radio there no problem right?"

If the customer used Radio to access the WLAN and SNATed a laptop/netbook through Radio's ethernet port, the WLAN portal would see both as having Radio's MAC, and the customer could use Radio in the hotel (assuming the hotel infrastructure allowed this, etc.)
Comment 11 Chris Owens 2010-03-08 11:33:02 UTC
Moving lower-priority bugs to next target
Comment 12 Felix Mueller 2011-01-14 00:24:45 UTC
Unfortunately there is no simple solution (i.e. using kernel bridging capabilities) if the wireless interface doesn't allow for packets being sent that do not use its own MAC address which is the case with Marvells wireless chipset used in Fab4.

The proxy-arp way I looked at in the past is not user very friendly (see known issues in comment #4) and far from being done.

Removing the target since it will not be fixed in the next release.