Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1552759 > unrolled thread
| Started by | Johannes Berg <johannes@sipsolutions.net> |
|---|---|
| First post | 2017-01-06 14:00 +0100 |
| Last post | 2017-01-11 10:20 +0100 |
| Articles | 20 on this page of 27 — 7 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-06 14:00 +0100
Re: [PATCH net-next] bridge: multicast to unicast Felix Fietkau <nbd@nbd.name> - 2017-01-06 15:00 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-06 15:00 +0100
Re: [PATCH net-next] bridge: multicast to unicast Felix Fietkau <nbd@nbd.name> - 2017-01-06 15:40 +0100
Re: [PATCH net-next] bridge: multicast to unicast "M. Braun" <michael-dev@fami-braun.de> - 2017-01-07 11:50 +0100
Re: [PATCH net-next] bridge: multicast to unicast Linus Lüssing <linus.luessing@c0d3.blue> - 2017-01-07 16:00 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-09 09:10 +0100
Re: [PATCH net-next] bridge: multicast to unicast "M. Braun" <michael-dev@fami-braun.de> - 2017-01-09 13:00 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-09 13:20 +0100
Re: [PATCH net-next] bridge: multicast to unicast michael-dev <michael-dev@fami-braun.de> - 2017-01-09 16:30 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-09 16:50 +0100
Re: [PATCH net-next] bridge: multicast to unicast Linus Lüssing <linus.luessing@c0d3.blue> - 2017-01-09 22:30 +0100
Re: [PATCH net-next] bridge: multicast to unicast Stephen Hemminger <stephen@networkplumber.org> - 2017-01-09 22:40 +0100
Re: [PATCH net-next] bridge: multicast to unicast Linus Lüssing <linus.luessing@c0d3.blue> - 2017-01-10 05:20 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-10 12:00 +0100
Re: [PATCH net-next] bridge: multicast to unicast Dave Taht <dave.taht@gmail.com> - 2017-01-10 18:20 +0100
Re: [PATCH net-next] bridge: multicast to unicast Felix Fietkau <nbd@nbd.name> - 2017-01-10 18:30 +0100
Re: [PATCH net-next] bridge: multicast to unicast Dave Taht <dave.taht@gmail.com> - 2017-01-10 19:30 +0100
Re: [PATCH net-next] bridge: multicast to unicast Felix Fietkau <nbd@nbd.name> - 2017-01-10 22:30 +0100
Re: [PATCH net-next] bridge: multicast to unicast Felix Fietkau <nbd@nbd.name> - 2017-01-11 12:40 +0100
Re: [PATCH net-next] bridge: multicast to unicast Felix Fietkau <nbd@nbd.name> - 2017-01-11 13:30 +0100
Re: [PATCH net-next] bridge: multicast to unicast Linus Lüssing <linus.luessing@c0d3.blue> - 2017-01-07 16:20 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-09 09:10 +0100
Re: [PATCH net-next] bridge: multicast to unicast Linus Lüssing <linus.luessing@c0d3.blue> - 2017-01-09 13:50 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-09 13:50 +0100
Re: [PATCH net-next] bridge: multicast to unicast Linus Lüssing <linus.luessing@c0d3.blue> - 2017-01-10 00:20 +0100
Re: [PATCH net-next] bridge: multicast to unicast Johannes Berg <johannes@sipsolutions.net> - 2017-01-11 10:20 +0100
Page 1 of 2 [1] 2 Next page →
| From | Johannes Berg <johannes@sipsolutions.net> |
|---|---|
| Date | 2017-01-06 14:00 +0100 |
| Subject | Re: [PATCH net-next] bridge: multicast to unicast |
| Message-ID | <sWChH-24g-11@gated-at.bofh.it> |
On Mon, 2017-01-02 at 20:32 +0100, Linus Lüssing wrote: > Implements an optional, per bridge port flag and feature to deliver > multicast packets to any host on the according port via unicast > individually. This is done by copying the packet per host and > changing the multicast destination MAC to a unicast one accordingly. How does this compare and/or relate to the multicast-to-unicast feature we were going to add to the wifi stack, particularly mac80211? Do we perhaps not need that feature at all, if bridging will have it? I suppose that the feature there could apply also to locally generated traffic when the AP interface isn't in a bridge, but I think I could live with requiring the AP to be put into a bridge to achieve a similar configuration? Additionally, on an unrelated note, this seems to apply generically to all kinds of frames, losing information by replacing the address. Shouldn't it have similar limitations as the wifi stack feature has then, like only applying to ARP, IPv4, IPv6 and not general protocols? Also, it should probably come with the same caveat as we documented for the wifi feature: Note that this may break certain expectations of the receiver, such as the ability to drop unicast IP packets received within multicast L2 frames, or the ability to not send ICMP destination unreachable messages for packets received in L2 multicast (which is required, but the receiver can't tell the difference if this new option is enabled.) I'll hold off sending my tree in until we see that we really need both features, or decide that we want the wifi feature *instead* of the bridge feature. johannes
[toc] | [next] | [standalone]
| From | Felix Fietkau <nbd@nbd.name> |
|---|---|
| Date | 2017-01-06 15:00 +0100 |
| Message-ID | <sWDdL-2Hu-5@gated-at.bofh.it> |
| In reply to | #1552759 |
On 2017-01-06 13:47, Johannes Berg wrote: > On Mon, 2017-01-02 at 20:32 +0100, Linus Lüssing wrote: >> Implements an optional, per bridge port flag and feature to deliver >> multicast packets to any host on the according port via unicast >> individually. This is done by copying the packet per host and >> changing the multicast destination MAC to a unicast one accordingly. > > How does this compare and/or relate to the multicast-to-unicast feature > we were going to add to the wifi stack, particularly mac80211? Do we > perhaps not need that feature at all, if bridging will have it? > > I suppose that the feature there could apply also to locally generated > traffic when the AP interface isn't in a bridge, but I think I could > live with requiring the AP to be put into a bridge to achieve a similar > configuration? > > Additionally, on an unrelated note, this seems to apply generically to > all kinds of frames, losing information by replacing the address. > Shouldn't it have similar limitations as the wifi stack feature has > then, like only applying to ARP, IPv4, IPv6 and not general protocols? > > Also, it should probably come with the same caveat as we documented for > the wifi feature: > > Note that this may break certain expectations of the receiver, > such as the ability to drop unicast IP packets received within > multicast L2 frames, or the ability to not send ICMP destination > unreachable messages for packets received in L2 multicast (which > is required, but the receiver can't tell the difference if this > new option is enabled.) > > > I'll hold off sending my tree in until we see that we really need both > features, or decide that we want the wifi feature *instead* of the > bridge feature. The bridge layer can use IGMP snooping to ensure that the multicast stream is only transmitted to clients that are actually a member of the group. Can the mac80211 feature do the same? - Felix
[toc] | [prev] | [next] | [standalone]
| From | Johannes Berg <johannes@sipsolutions.net> |
|---|---|
| Date | 2017-01-06 15:00 +0100 |
| Message-ID | <sWDdL-2Hu-13@gated-at.bofh.it> |
| In reply to | #1552802 |
> The bridge layer can use IGMP snooping to ensure that the multicast > stream is only transmitted to clients that are actually a member of > the group. Can the mac80211 feature do the same? No, it'll convert the packet for all clients that are behind that netdev. But that's an argument for dropping the mac80211 feature, which hasn't been merged upstream yet, no? johannes
[toc] | [prev] | [next] | [standalone]
| From | Felix Fietkau <nbd@nbd.name> |
|---|---|
| Date | 2017-01-06 15:40 +0100 |
| Message-ID | <sWDQt-3dX-5@gated-at.bofh.it> |
| In reply to | #1552804 |
On 2017-01-06 14:54, Johannes Berg wrote: > >> The bridge layer can use IGMP snooping to ensure that the multicast >> stream is only transmitted to clients that are actually a member of >> the group. Can the mac80211 feature do the same? > > No, it'll convert the packet for all clients that are behind that > netdev. But that's an argument for dropping the mac80211 feature, which > hasn't been merged upstream yet, no? Right. - Felix
[toc] | [prev] | [next] | [standalone]
| From | "M. Braun" <michael-dev@fami-braun.de> |
|---|---|
| Date | 2017-01-07 11:50 +0100 |
| Message-ID | <sWWJr-7wv-7@gated-at.bofh.it> |
| In reply to | #1552804 |
Am 06.01.2017 um 14:54 schrieb Johannes Berg: > >> The bridge layer can use IGMP snooping to ensure that the multicast >> stream is only transmitted to clients that are actually a member of >> the group. Can the mac80211 feature do the same? > > No, it'll convert the packet for all clients that are behind that > netdev. But that's an argument for dropping the mac80211 feature, which > hasn't been merged upstream yet, no? But there is multicast/broadcast traffic like e.g. ARP and some IP multicast groups that are not covered by IGMP snooping. The mac80211 patch converts this to unicast as well, which the bridge cannot do. That way, these features both complement and overlap each other. Regards, Michael
[toc] | [prev] | [next] | [standalone]
| From | Linus Lüssing <linus.luessing@c0d3.blue> |
|---|---|
| Date | 2017-01-07 16:00 +0100 |
| Message-ID | <sX0Dn-1H7-7@gated-at.bofh.it> |
| In reply to | #1553635 |
On Sat, Jan 07, 2017 at 11:32:57AM +0100, M. Braun wrote:
> Am 06.01.2017 um 14:54 schrieb Johannes Berg:
> >
> >> The bridge layer can use IGMP snooping to ensure that the multicast
> >> stream is only transmitted to clients that are actually a member of
> >> the group. Can the mac80211 feature do the same?
> >
> > No, it'll convert the packet for all clients that are behind that
> > netdev. But that's an argument for dropping the mac80211 feature, which
> > hasn't been merged upstream yet, no?
>
> But there is multicast/broadcast traffic like e.g. ARP and some IP
> multicast groups that are not covered by IGMP snooping. The mac80211
> patch converts this to unicast as well, which the bridge cannot do.
>
> That way, these features both complement and overlap each other.
Right, I'd agree with that.
I didn't write it explicitly in the commit message, but yes, the
like anything concerning bridge multicast snooping, bridge
multicast-to-unicast can only affect packets as noted in
RFC4541 ("Considerations for Internet Group Management Protocol (IGMP)
and Multicast Listener Discovery (MLD) Snooping Switches"), too.
So it is only working for IPv4 multicast, excluding link-local
(224.0.0.0/24), and IPv6 multicast, excluding all-host-multicast
(ff02::1).
And does not concern ARP in any way.
The nice complementary effect is, that the bridge can first sieve
out those IP packets thanks to IGMP/MLD snooping knowledge and for
anything else, like ARP, 224.0.0.x or ff02::1, the mac80211
multicast-to-unicast could do its job.
For APs with a small number of STAs (like your private home AP),
you might want to enable both bridge multicast-to-unicast and
mac80211 multicast-to-unicast for this complementary effect. While
on public APs with 30 to 50 STAs with varying distances and bitrates,
you might only one to enable the bridge one, because sending an ARP
packet 50x might actually reduce performance and airtime
significantly.
[toc] | [prev] | [next] | [standalone]
| From | Johannes Berg <johannes@sipsolutions.net> |
|---|---|
| Date | 2017-01-09 09:10 +0100 |
| Message-ID | <sXDbI-1Ae-7@gated-at.bofh.it> |
| In reply to | #1553672 |
On Sat, 2017-01-07 at 15:55 +0100, Linus Lüssing wrote:
> On Sat, Jan 07, 2017 at 11:32:57AM +0100, M. Braun wrote:
> > Am 06.01.2017 um 14:54 schrieb Johannes Berg:
> > >
> > > > The bridge layer can use IGMP snooping to ensure that the
> > > > multicast
> > > > stream is only transmitted to clients that are actually a
> > > > member of
> > > > the group. Can the mac80211 feature do the same?
> > >
> > > No, it'll convert the packet for all clients that are behind that
> > > netdev. But that's an argument for dropping the mac80211 feature,
> > > which
> > > hasn't been merged upstream yet, no?
> >
> > But there is multicast/broadcast traffic like e.g. ARP and some IP
> > multicast groups that are not covered by IGMP snooping. The
> > mac80211
> > patch converts this to unicast as well, which the bridge cannot do.
> >
> > That way, these features both complement and overlap each other.
>
> Right, I'd agree with that.
Ok.
> I didn't write it explicitly in the commit message, but yes, the
> like anything concerning bridge multicast snooping, bridge
> multicast-to-unicast can only affect packets as noted in
> RFC4541 ("Considerations for Internet Group Management Protocol (IGMP)
> and Multicast Listener Discovery (MLD) Snooping Switches"), too.
>
> So it is only working for IPv4 multicast, excluding link-local
> (224.0.0.0/24), and IPv6 multicast, excluding all-host-multicast
> (ff02::1).
>
> And does not concern ARP in any way.
>
>
> The nice complementary effect is, that the bridge can first sieve
> out those IP packets thanks to IGMP/MLD snooping knowledge and for
> anything else, like ARP, 224.0.0.x or ff02::1, the mac80211
> multicast-to-unicast could do its job.
>
>
> For APs with a small number of STAs (like your private home AP),
> you might want to enable both bridge multicast-to-unicast and
> mac80211 multicast-to-unicast for this complementary effect. While
> on public APs with 30 to 50 STAs with varying distances and bitrates,
> you might only one to enable the bridge one, because sending an ARP
> packet 50x might actually reduce performance and airtime
> significantly.
Does it make sense to implement the two in separate layers though?
Clearly, this part needs to be implemented in the bridge layer due to
the snooping knowledge, but the code is very similar to what mac80211
has now.
It would probably not make sense to combine the two options into one,
but it seems relatively simple for bridge to also implement the one
mac80211 tentatively has now, with multiple benefits:
* single place for configuration, leading to less possible confusion
* single implementation for all wireless devices, including ones with
Full-MAC firmware that don't use mac80211
* code sharing for the duplication, although admittedly not so much
Thoughts?
johannes
[toc] | [prev] | [next] | [standalone]
| From | "M. Braun" <michael-dev@fami-braun.de> |
|---|---|
| Date | 2017-01-09 13:00 +0100 |
| Message-ID | <sXGMi-3I7-1@gated-at.bofh.it> |
| In reply to | #1554136 |
Am 09.01.2017 um 09:08 schrieb Johannes Berg: > Does it make sense to implement the two in separate layers though? > > Clearly, this part needs to be implemented in the bridge layer due to > the snooping knowledge, but the code is very similar to what mac80211 > has now. Does the bridge always know about all stations connected? That is bridge fdb entries (need to) expire so the bridge might "forget" a still-connected station not sending but only consuming broadcast traffic. E.g. there is a television broadcast station here that receives a video stream (via wifi, udp packets) and then airs it (dvb-t) but (on its own) would not send any data packet on wifi (static ip, etc.). An other reason to implement this in mac80211 initially was that mac80211 could encapsulate broacast/multicast ethernet packtes in unicast A-MSDU packets in a way, so that the receiver would still see process ethernet packets (after conversion) but have unicast wifi frames. This cannot be done in bridge easily but one might want to add this later to mac80211. Michael
[toc] | [prev] | [next] | [standalone]
| From | Johannes Berg <johannes@sipsolutions.net> |
|---|---|
| Date | 2017-01-09 13:20 +0100 |
| Message-ID | <sXH5D-45j-15@gated-at.bofh.it> |
| In reply to | #1554249 |
On Mon, 2017-01-09 at 12:44 +0100, M. Braun wrote: > Am 09.01.2017 um 09:08 schrieb Johannes Berg: > > Does it make sense to implement the two in separate layers though? > > > > Clearly, this part needs to be implemented in the bridge layer due > > to > > the snooping knowledge, but the code is very similar to what > > mac80211 > > has now. > > Does the bridge always know about all stations connected? > > That is bridge fdb entries (need to) expire so the bridge might > "forget" a still-connected station not sending but only consuming > broadcast traffic. > > E.g. there is a television broadcast station here that receives a > video stream (via wifi, udp packets) and then airs it (dvb-t) but (on > its own) would not send any data packet on wifi (static ip, etc.). Ok, that I don't know. Somehow if you address a unicast packet there the bridge has to make a decision - so it really should know? Would it query the port somehow to see if the device is behind it, if getting a packet for a station it forgot about? > An other reason to implement this in mac80211 initially was that > mac80211 could encapsulate broacast/multicast ethernet packtes in > unicast A-MSDU packets in a way, so that the receiver would still see > process ethernet packets (after conversion) but have unicast wifi > frames. This cannot be done in bridge easily but one might want to > add this later to mac80211. Yes, DMG would have to be done in mac80211, but that's a lot clearer case too since it requires negotiation functionality etc. johannes
[toc] | [prev] | [next] | [standalone]
| From | michael-dev <michael-dev@fami-braun.de> |
|---|---|
| Date | 2017-01-09 16:30 +0100 |
| Message-ID | <sXK3w-5SD-33@gated-at.bofh.it> |
| In reply to | #1554266 |
Am 09.01.2017 13:15, schrieb Johannes Berg: >> That is bridge fdb entries (need to) expire so the bridge might >> "forget" a still-connected station not sending but only consuming >> broadcast traffic. > > Ok, that I don't know. Somehow if you address a unicast packet there > the bridge has to make a decision - so it really should know? If the bridge has not learned the unicast destination mac address on any port, it will flood the packet on all ports except the port it received the packet on. Regards, M. Braun
[toc] | [prev] | [next] | [standalone]
| From | Johannes Berg <johannes@sipsolutions.net> |
|---|---|
| Date | 2017-01-09 16:50 +0100 |
| Message-ID | <sXKmS-5Z0-5@gated-at.bofh.it> |
| In reply to | #1554420 |
On Mon, 2017-01-09 at 16:25 +0100, michael-dev wrote: > Am 09.01.2017 13:15, schrieb Johannes Berg: > > > That is bridge fdb entries (need to) expire so the bridge might > > > "forget" a still-connected station not sending but only consuming > > > broadcast traffic. > > > > Ok, that I don't know. Somehow if you address a unicast packet > > there > > the bridge has to make a decision - so it really should know? > > If the bridge has not learned the unicast destination mac address on > any port, it will flood the packet on all ports except the port it > received the packet on. Ok, so this really needs to be done in mac80211. I'll send out the pull request soon then. johannes
[toc] | [prev] | [next] | [standalone]
| From | Linus Lüssing <linus.luessing@c0d3.blue> |
|---|---|
| Date | 2017-01-09 22:30 +0100 |
| Message-ID | <sXPFT-SY-17@gated-at.bofh.it> |
| In reply to | #1554249 |
On Mon, Jan 09, 2017 at 12:44:19PM +0100, M. Braun wrote: > Am 09.01.2017 um 09:08 schrieb Johannes Berg: > > Does it make sense to implement the two in separate layers though? > > > > Clearly, this part needs to be implemented in the bridge layer due to > > the snooping knowledge, but the code is very similar to what mac80211 > > has now. > > Does the bridge always know about all stations connected? The bridge does not always know about all stations, especially the silent ones like in your DVB-T example. However, concerning IP multicast, there is IGMP/MLD. So the bridge does know about all stations which are interested in a specific IP multicast stream. (As long as there is a querier on the link, which periodically queriers for IGMP/MLD reports from any listener. If there is no querier then the bridge multicast snooping, including the bridge multicast-to-unicast will fall back to flooding) So if your television example uses IP multicast properly, it is completely doable with the bridge multicast-to-unicast, thanks to IGMP/MLD.
[toc] | [prev] | [next] | [standalone]
| From | Stephen Hemminger <stephen@networkplumber.org> |
|---|---|
| Date | 2017-01-09 22:40 +0100 |
| Message-ID | <sXPPz-W8-1@gated-at.bofh.it> |
| In reply to | #1554730 |
On Mon, 9 Jan 2017 22:23:45 +0100 Linus Lüssing <linus.luessing@c0d3.blue> wrote: > On Mon, Jan 09, 2017 at 12:44:19PM +0100, M. Braun wrote: > > Am 09.01.2017 um 09:08 schrieb Johannes Berg: > > > Does it make sense to implement the two in separate layers though? > > > > > > Clearly, this part needs to be implemented in the bridge layer due to > > > the snooping knowledge, but the code is very similar to what mac80211 > > > has now. > > > > Does the bridge always know about all stations connected? > > The bridge does not always know about all stations, especially the > silent ones like in your DVB-T example. > > However, concerning IP multicast, there is IGMP/MLD. So the bridge > does know about all stations which are interested in a specific IP > multicast stream. > > (As long as there is a querier on the link, which periodically > queriers for IGMP/MLD reports from any listener. If there is no > querier then the bridge multicast snooping, including the bridge > multicast-to-unicast will fall back to flooding) > > > So if your television example uses IP multicast properly, it is > completely doable with the bridge multicast-to-unicast, thanks to > IGMP/MLD. I wonder if MAC80211 should be doing IGMP snooping and not bridge in this environment.
[toc] | [prev] | [next] | [standalone]
| From | Linus Lüssing <linus.luessing@c0d3.blue> |
|---|---|
| Date | 2017-01-10 05:20 +0100 |
| Message-ID | <sXW4F-509-3@gated-at.bofh.it> |
| In reply to | #1554731 |
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. I personally like to go for simple solutions first :).
[toc] | [prev] | [next] | [standalone]
| From | Johannes Berg <johannes@sipsolutions.net> |
|---|---|
| Date | 2017-01-10 12:00 +0100 |
| Message-ID | <sY2jL-he-9@gated-at.bofh.it> |
| In reply to | #1554911 |
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
[toc] | [prev] | [next] | [standalone]
| From | Dave Taht <dave.taht@gmail.com> |
|---|---|
| Date | 2017-01-10 18:20 +0100 |
| Message-ID | <sY8fw-47w-9@gated-at.bofh.it> |
| In reply to | #1555148 |
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?)
[toc] | [prev] | [next] | [standalone]
| From | Felix Fietkau <nbd@nbd.name> |
|---|---|
| Date | 2017-01-10 18:30 +0100 |
| Message-ID | <sY8pc-4aE-5@gated-at.bofh.it> |
| In reply to | #1555722 |
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
[toc] | [prev] | [next] | [standalone]
| From | Dave Taht <dave.taht@gmail.com> |
|---|---|
| Date | 2017-01-10 19:30 +0100 |
| Message-ID | <sY9lf-4Jx-3@gated-at.bofh.it> |
| In reply to | #1555732 |
On Tue, Jan 10, 2017 at 9:23 AM, Felix Fietkau <nbd@nbd.name> wrote: > 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. I chopped this to something more reasonable but never got around to quantifying it, so never pushed the patch. I figured I'd measure ATF in a noisy environment (which I'd be doing now if it weren't for https://bugs.lede-project.org/index.php?do=details&task_id=368 ) first. >> 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 meant CS1=BK here. Tracing the path through the bridge code made my head hurt, I can go look at some aircaps to see if the mcast->unicast conversion respects those markings or not (my vote is *not*). >> 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. Except for the VO queue which cannot aggregate. And for that matter, using any other hardware queue than BE tends to eat a txop that would otherwise possibly be combined with an aggregate. (and the VI queue has always misbehaved, long on my todo list) > 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. The question was basically how far up does it scale. Arguably, for a very few, well connected stations, this patch would help. For a network with more - and more badly connected stations, I think it would hurt. What sorts of multicast traffic are being observed that flood the network sufficiently to be worth optimizing out? arp? nd? upnp? mdns? uftp? tv? (my questions above are related to basically trying to setup a sane a/b test, I've been building up a new testbed in noisy environment to match the one I have in a quiet one, and don't have any "good" mcast tests defined. Has anyone done an a/b test of this code with some repeatable test already?) (In my observations... The only truly heavy creator of a multicast "burp" has tended to be upnp and mdns on smaller networks. Things like nd and arp get more problematic as the number of stations go up also. I can try things like abusing vlc or uftp to see what happens?) I certainly agree multicast is a "problem" (I've seen 20-80% or more of a given wifi network eaten by multicast) but I'm not convinced that making it reliable, aggregatable unicast scales much past basement-level testing of a few "good" stations, and don't know which protocols are making it worse, the worst, in typical environments. Certainly apple gear puts out a lot of multicast. ... As best as I recall a recommendation in the 802.11-2012 standard was that multicast packets be rate-limited so that you'd have a fixed amount of crap after each beacon sufficient to keep the rest of the unicast traffic flowing rapidly, instead of dumping everything into a given beacon transmit. That, combined with (maybe) picking the "best" union of known rates per station, was essentially the strategy I'd intended[1] to pursue for tackling the currently infinite wifi multicast queue - fq the entries, have a fairly short queue (codel is not the best choice here) drop from head, and limit the number of packets transmitted per beacon to spread them out. That would solve the issue for sparse multicast (dhcp etc), and smooth out the burps from bigger chunks while impacting conventional unicast minimally. There's also the pursuit of less multicast overall at least in some protocols https://tools.ietf.org/html/draft-ietf-dnssd-hybrid-05 > > - Felix [1] but make-wifi-fast has been out of funding since august -- Dave Täht Let's go make home routers and wifi faster! With better software! http://blog.cerowrt.org
[toc] | [prev] | [next] | [standalone]
| From | Felix Fietkau <nbd@nbd.name> |
|---|---|
| Date | 2017-01-10 22:30 +0100 |
| Message-ID | <sYc9s-6qU-53@gated-at.bofh.it> |
| In reply to | #1555148 |
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
[toc] | [prev] | [next] | [standalone]
| From | Felix Fietkau <nbd@nbd.name> |
|---|---|
| Date | 2017-01-11 12:40 +0100 |
| Message-ID | <sYpq2-6jN-21@gated-at.bofh.it> |
| In reply to | #1555927 |
On 2017-01-11 12:26, IgorMitsyanko wrote: > On 01/11/2017 12:27 AM, Felix Fietkau wrote: >> 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 >> > > > Hi Felix, can we consider two examples configurations with multicast > traffic: > > 1. AP is a source of multicast traffic itself, no bridge on AP. For > example, wireless video server streaming to several clients. > In this situation, we can not make use of possible advantages given by > mc-to-uc conversion? You could simply put the AP interface in a bridge, no need to have any other bridge members present. > 2. A configuration with AP + STA + 3 client devices behind STA. > ----|client 1| > | > | mc |----|AP|----|STA|---|---|client 2| > |server| | > ----|client 3| > > Multicast server behind AP streams MC video traffic. All 3 clients > behind the STA have joined the multicast group. > I'm not sure if this case will be handled correctly with mc-to-uc > conversion in bridge on AP? What do you mean by "3 client devices behind STA"? Are you using a 4-addr STA, multicast routing, or some kind of vendor specific "client bridge" hackery? - Felix
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | linux.kernel
csiph-web