Johannes Berg
2017-Jan-10 10:56 UTC
[Bridge] [PATCH net-next] bridge: multicast to unicast
On Tue, 2017-01-10 at 05:18 +0100, Linus L?ssing wrote:> On Mon, Jan 09, 2017 at 01:30:32PM -0800, Stephen Hemminger wrote: > > I wonder if MAC80211 should be doing IGMP snooping and not bridge > > in this environment. > > In the long term, yes. For now, not quite sure.There's no "for now" in the kernel. Code added now will have to be maintained essentially forever. johannes
In the case of wifi I have 3 issues with this line of thought. multicast in wifi has generally supposed to be unreliable. This makes it reliable. reliability comes at a cost - multicast is typically set at a fixed low rate today. unicast is retried at different rates until it succeeds - for every station listening. If one station is already at the lowest rate, the total cost of the transmit increases, rather than decreases. unicast gets block acks until it succeeds. Again, more delay. I think there is something like 31 soft-retries in the ath9k driver.... what happens to diffserv markings here? for unicast CS1 goes into the BE queue, CS6, the VO queue. Do we go from one flat queue for all of multicast to punching it through one of the hardware queues based on the diffserv mark now with this patch? I would like it if there was a way to preserve the unreliability (which multiple mesh protocols depend on), send stuff with QoSNoack, etc - or dynamically choose (based on the rates of the stations) between conventional multicast and unicast. Or - better, IMHO, keep sending multicast as is but pick the best of the rates available to all the listening stations for it. Has anyone actually looked at the effects of this with, say, 5-10 stations at middlin to poor quality (longer distance)? using something to measure the real effect of the multicast conversion? (uftp, mdns?)
Felix Fietkau
2017-Jan-10 17:23 UTC
[Bridge] [PATCH net-next] bridge: multicast to unicast
On 2017-01-10 18:17, Dave Taht wrote:> In the case of wifi I have 3 issues with this line of thought. > > multicast in wifi has generally supposed to be unreliable. This makes > it reliable. reliability comes at a cost - > > multicast is typically set at a fixed low rate today. unicast is > retried at different rates until it succeeds - for every station > listening. If one station is already at the lowest rate, the total > cost of the transmit increases, rather than decreases. > > unicast gets block acks until it succeeds. Again, more delay. > > I think there is something like 31 soft-retries in the ath9k driver....If I remember correctly, hardware retries are counted here as well.> what happens to diffserv markings here? for unicast CS1 goes into the > BE queue, CS6, the VO queue. Do we go from one flat queue for all of > multicast to punching it through one of the hardware queues based on > the diffserv mark now with this patch? > > I would like it if there was a way to preserve the unreliability > (which multiple mesh protocols depend on), send stuff with QoSNoack, > etc - or dynamically choose (based on the rates of the stations) > between conventional multicast and unicast. > > Or - better, IMHO, keep sending multicast as is but pick the best of > the rates available to all the listening stations for it.The advantage of the multicast-to-unicast conversion goes beyond simply selecting a better rate - aggregation matters a lot as well, and that is simply incompatible with normal multicast. Some multicast streams use lots of small-ish packets, the airtime impact of those is vastly reduced, even if the transmission has to be duplicated for a few stations. - Felix
Felix Fietkau
2017-Jan-10 21:27 UTC
[Bridge] [PATCH net-next] bridge: multicast to unicast
On 2017-01-10 11:56, Johannes Berg wrote:> On Tue, 2017-01-10 at 05:18 +0100, Linus L?ssing wrote: >> On Mon, Jan 09, 2017 at 01:30:32PM -0800, Stephen Hemminger wrote: >> > I wonder if MAC80211 should be doing IGMP snooping and not bridge >> > in this environment. >> >> In the long term, yes. For now, not quite sure. > > There's no "for now" in the kernel. Code added now will have to be > maintained essentially forever.I'm not sure that putting the IGMP snooping code in mac80211 is a good idea, that would be quite a bit of code duplication. This implementation works, it's very simple, and it's quite flexible for a number of use cases. Is there any remaining objection to merging this in principle (aside from potential issues with the code)? - Felix