Re: 6MAN Adoption call on raft-chakrabarti-nordmark-6man-efficient-nd-04

Andrew 👽 Yourtchenko <ayourtch@gmail.com> Fri, 10 January 2014 23:58 UTC

Return-Path: <ayourtch@gmail.com>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B61371AE0E2 for <ipv6@ietfa.amsl.com>; Fri, 10 Jan 2014 15:58:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.7
X-Spam-Level:
X-Spam-Status: No, score=-1.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, MIME_8BIT_HEADER=0.3, SPF_PASS=-0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nvfFMm4MDmjp for <ipv6@ietfa.amsl.com>; Fri, 10 Jan 2014 15:58:10 -0800 (PST)
Received: from mail-qa0-x22b.google.com (mail-qa0-x22b.google.com [IPv6:2607:f8b0:400d:c00::22b]) by ietfa.amsl.com (Postfix) with ESMTP id B6B171ACC8A for <ipv6@ietf.org>; Fri, 10 Jan 2014 15:58:09 -0800 (PST)
Received: by mail-qa0-f43.google.com with SMTP id k15so4776847qaq.30 for <ipv6@ietf.org>; Fri, 10 Jan 2014 15:57:59 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=lDxhEWPQv5MgYFKcVpLzrlr0azblcRYF2hc95Mdoul4=; b=MwOx7StwHkeNvwQDtyk+o4b65huzqZw18XpMo5eTrkdMdM7d/8ydGHxpaW8fHuIbC0 QbwZ6i7LzcjJ4RuCY2tXWfFtQvz8EnHy6uiH5zvwdSwGtL8IdfW9XSJusYX1FxVY8jg/ Pa2tt0GcIvi9mdccANAdhvzjtbT9FX1tVIa9mNCxy5lq9ErdoRtTGmNFaESTuVaPkr0G 3H/eVEMqAac9eouOodi5tbFAv9NHYhh8QwJD3OuodLDSRdM1eA29iKiIBkYJi/n5REnT ObaRxRlyNYb3UymAI21/sPbMBo/V64pR6GFi1sYnVxRstfdABHMxoFem1nwuNLbYQyQV 8J5A==
MIME-Version: 1.0
X-Received: by 10.49.52.102 with SMTP id s6mr13175744qeo.60.1389398279550; Fri, 10 Jan 2014 15:57:59 -0800 (PST)
Received: by 10.96.133.39 with HTTP; Fri, 10 Jan 2014 15:57:59 -0800 (PST)
In-Reply-To: <0D19594A-F434-44C8-B02D-67B6FD401A9E@steffann.nl>
References: <1F653502-AD41-4EB6-A43D-541356810DF2@employees.org> <CAKD1Yr1XPKibHenLMcNDRnfCht6X8tF2nMq1HgOiQv6eR9m6Yg@mail.gmail.com> <alpine.DEB.2.02.1401081305120.20074@uplift.swm.pp.se> <CAKD1Yr2AtF1CMqFxE1W63tXrS5OsbhJGfktN=sAaZtsBOSVg2Q@mail.gmail.com> <alpine.DEB.2.02.1401090707580.20074@uplift.swm.pp.se> <CAKD1Yr2yjPOWWHBx5dzwhNCT8fx9SEQg1wbPgGJSN3aS5bg5tg@mail.gmail.com> <alpine.DEB.2.02.1401090803040.20074@uplift.swm.pp.se> <CAKD1Yr25XJejF7sdHE2ycpcHNSyq=07+mKeLdj338=-LvsME-Q@mail.gmail.com> <alpine.DEB.2.02.1401090853090.20074@uplift.swm.pp.se> <CAKD1Yr03ZD3dDUpTWXUL_OiE_NYasUmpd9m1Ss6XoU0Qq_NCog@mail.gmail.com> <alpine.DEB.2.02.1401091342250.20074@uplift.swm.pp.se> <CAKD1Yr04gCBJsKBoVNGbjS0MV__4px_aspVPkD1+mLGPpdpj4w@mail.gmail.com> <0D19594A-F434-44C8-B02D-67B6FD401A9E@steffann.nl>
Date: Fri, 10 Jan 2014 23:57:59 +0000
Message-ID: <CAPi140NmPnzWz96A_3Kk9XFD-3g8W+LbwE5LMYSGwT7puBQMgQ@mail.gmail.com>
Subject: Re: 6MAN Adoption call on raft-chakrabarti-nordmark-6man-efficient-nd-04
From: Andrew 👽 Yourtchenko <ayourtch@gmail.com>
To: Sander Steffann <sander@steffann.nl>
Content-Type: text/plain; charset="ISO-8859-1"
X-Mailman-Approved-At: Fri, 10 Jan 2014 16:17:57 -0800
Cc: 6man Chairs <6man-chairs@tools.ietf.org>, 6man WG <ipv6@ietf.org>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 10 Jan 2014 23:58:12 -0000

Sander thanks!

all,

first off - apologies for the length of this mail, I tried to
structure it so that first I talk about what I think the
multicast-related issues are on the WiFi (what Sander asked), and then
add a few thoughts overall that I finally have managed to put on
paper. So feel free to doze off while reading, as you see fit :-)

There are two main issues related to "too much" multicast packets on WiFi:

1) Indeed the multicast frames are transmitted at a lower rate (and as
the SO entry tells, also the mileage varies)

That said, 1Mbps rate is becoming somewhat of a corner case - usually
those rates are disabled due to their general poor throughput and
realistically it will probably be 11Mbps rate, the highest for 802.11b
devices - or 12Mbps in case you do not support 802.11b-only clients
(most of the client gear today supports either 802.11g or 802.11n).

So this becomes somewhat less of a problem, though considering that
"WiFi guys" are generally reluctant to even advertise an extra SSID
with no clients (overhead being 10pps of broadcasted beacon frames at
low data rate), you will notice every PPS helps. Andrew von Nagy has a
great calculator telling exactly how much it helps, for the extra SSID
case, at [3]. But I think we can creatively equate it to each
additional 10pps of all-hosts multicast. As you see, it's noticeable.

2) The bigger problem - the battery life:

WiFi is a pretty expensive thing to do, power-wise. To help extend the
battery, the mobile devices try very hard to shut off the radio
whenever they can. The wireless station would go to sleep, and inform
the AP about this fact - so the AP can buffer the frames for it [1].
Further optimizations in this area were introduced by 802.11e (WMM-PS)
[2], where the frames destined to workstation could be transmitted
more efficiently and radio duty cycle is reduced.

Spontaneous all-hosts multicasts interfere with these mechanisms, thus
the battery drain on the devices is much higher - especially in a
typical network where the mobile devices move, and might trigger an
RS/RA on each L2 roam between BSSIDs.

So, if a host typically gets one packet burst per minute, and, say, it
decides to put the radio to sleep 15 seconds after no packets, it will
have 25% power consumption compared to the case where the same host
needs to process a 0.1pps (one packet in 10 seconds) of all-hosts
mcast.
So, that means if the gadget survives 8 hours in a quiet home network,
now it will die after 2 hours [4].

This issue especially manifesting itself in the high-density/event
wifi deployments, generally people are very upset when their gadgets
run out of juice.


All of the above said:

both of these issues are already somewhat taken care of by the tweaks
at the data-link layer: e.g. my employer's wifi gear will replicate
the RAs as unicast packets over the radio, and also if so configured,
it can both block the excessive multicast RA sent to all-hosts, as
well as track which clients were originating the RS, and prune the
unicast over-the-air delivery to only those hosts that have just sent
"unanswered" RS messages. (This is fixable much easier at the router
by sending solicited RAs unicast, but this is a different story).
Also, both ARP and ND are proxied to some extent, given that the
controller (a box that centrally handles the traffic from APs and
their configurations) has a very good awareness of the clients and can
judge about their addresses to some extent by their traffic.

For the roaming: any WiFi network with more than 1 access-points does
a lot of roaming stuff at L2 already, tries to do it as fast as
possible, and it's even standardized in 802.11r [6], so approaching it
with an L3-only hat on as if it is a brand new problem, is suboptimal
IMHO.

I hear someone saying: "Yes, but this is all about wireless, DC is all
different story - it's all switches, they don't hold the state!" - yes
and no. The hosts in the DC are increasingly VMs, which run on top of
the hypervisor - and is there something with *more* state related to
the host than the hypervisor running such a host ?

This is my concern with adding a relatively large chunk of a protocol
on top of the existing crutches: how much does it get us compared to
what we have already, and at what cost...

To summarize:

I do think the problems this draft talks about are real. But after a
*lot* of deliberation I think the solution should be more lightweight
and more incrementally implementable/deployable than what the draft
offers wholesale.

At a non-100% deployed rate the approach in the draft will add more
headaches to the administrators and users than help IMHO.


Now, while I have a mic, let me take my napkin with some sketches ... ;-)

Maybe worth to split the problem area into smaller subsets and see
whether a "cheaper" solutions are possible. Let's first take the
"multicast RAs" problem, and assume we do the below steps:

a) Allow the environments that wish to do so, to send solicited RAs
unicast. (standard already permits to do so).

b) Have the hosts restart the  Resilient RS [5] process at 1/2 or so
of router lifetime expiry: the router now can have the heuristic to
know which hosts are supporting the "unicast RA update" mechanism
*and* did not receive the periodic RA which would have been sent
usually at 1/3 the lifetime expiry (three RAs per lifetime rule of
thumb).

c) bump up the allowable MaxRtrAdvInterval and AdvDefaultLifetime to
their maximum theoretically possible values (spec says the hosts
should already be able to handle those, I did not test though) - this
would allow to further reduce the periodic RA frequency, from 2.5
hours today to ~18.2 hours, or, if we feel adventurous, put all-ones
to be a "solicited-only RAs by default" - thus, unless another router
sends an RA with different lifetime, refreshing the router info
becomes host-driven, with an option for a router to override at any
time.

These steps take care of the "multicast RA" problem. But again, also,
each of them by itself brings incremental usefulness, and is doable on
a single device => no "chicken and egg", they gradually shrink the
issue - and are compatible with the existing tweaks that solve the
same problem (in a more layer-violating way).

Now let's think of updating the various caches while roaming:

d) we could make a tweak to allow the solicited unicast RA from (a) to
contain an arbitrary blob created by the router, and require that the
"router refresh" (b) RSes from the host to contain this blob from the
router that they are currently using as the default router.

e) Request the host to send this "refresh" RS ahead of time if they
get a notification from a data-link layer that a link has changed.
AFAIK this is something that already happens today, at least for some
hosts.

f) Define the magic pixel dust that is put into a blob by a router,
such that the receiving router could un-dust this blob in the
subsequent "refresh" RS and do the necessary notifications/updates
(this protocol would be entirely at router-switch side and would not
need any more mods by hosts).

These three would help with quicker refresh of L3/L2 data while
roaming, and also each of them brings some incremental benefits of
various sorts, is doable on a single device, and can make use of the
lower-layer optimizations if necessary.

NB: the above does not take care of the "defending the host's address
on behalf of the sleeping node" problem. I think there is a good use
in splitting it as a separate function, because "sleeping node" can be
rather a "node on the very expensive bandwidth" - so something
developed here could also apply to e.g. 3G/LTE devices, instead of
today's diode firewalls - and would not necessarily be limited to
current segment, nor hard-coupled with the router function. But the
magic pixel dust from (f) above could supposedly be a building block
for such a protocol of for a part thereof.

NB2: the above is nothing more than a napkin-sketch of what I think
may work, I have not thought about the corner cases of it, etc. If the
community thinks it would be interesting to transfer the above from a
napkin onto a draft or drafts, I could do it.

If you made it to here - thanks for reading ! :-)

[1] http://en.wikipedia.org/wiki/Delivery_traffic_indication_message

[2] http://en.wikipedia.org/wiki/IEEE_802.11e-2005#APSD

[3] https://www.dropbox.com/s/imjrugrpyyscd7/Wi-Fi%20SSID%20Overhead%20Calculator.xlsx

[4] this is a SWAG. I do not have hard data, just the theoretical
knowledge of what is at play, and the empirical observations from
various networks. The activity to measure it is on my todo list.

[5] http://tools.ietf.org/html/draft-ietf-6man-resilient-rs-02

[6] http://www.cwnp.com/cmsAdmin/uploads/802-11_rsn_ft.pdf

--a


On 1/9/14, Sander Steffann <sander@steffann.nl> wrote:
> Hi,
>
> Op 9 jan. 2014, om 14:33 heeft Lorenzo Colitti <lorenzo@google.com> het
> volgende geschreven:
>
>> On Thu, Jan 9, 2014 at 9:44 PM, Mikael Abrahamsson <swmike@swm.pp.se>
>> wrote:
>>
>> They would be rate-limited, just like any other ND packets on any
>> implementation worth its salt. I think an NS is 72 bytes including ICMPv6
>> header; if so, then even if you send out 500 of them per second, that's 36
>> kB/s. What sort of link has a problem carrying 36 kB/s? How many NSes per
>> second can routers send out anyway?
>>
>> I don't know, people seem to indicate that there is a problem with
>> multicast pps on wifi links. I haven't seen any hard data on this, it was
>> just my interpretation that this was considered a problem.
>>
>> Knowing nothing about this, I will cite http://stackoverflow.com/a/4341485
>> , hoping that the draft authors will come along with more detailed data
>> (which hopefully they have already presented to justify their use case and
>> which I missed):
>>
>> ===
>> With unicast the access point tracks what data rate every particular
>> receiver can reliably receive at, and sends about that rate. With
>> multicast the access point does not know which receivers are interested in
>> the data, so simple access points send the data at the slowest possible
>> rate (1Mb/s). Better implemented access points may send the data at the
>> rate that the slowest connected client is using, and the best access
>> points use IGMP snooping to see who's receiving each IP multicast stream,
>> and they will choose the slowest rate out of the receivers for that
>> stream.
>> ===
>>
>> Even 1Mbps is still a fair number of ND packets though.
>
> I think the issue is that, while 1Mbps is enough for ND, it is lowering the
> speed for the whole channel. So in the time that the 72 byte packet is sent
> at 1Mbps there *could* have been 3888 bytes at 54Mbps. And I have no idea if
> the speed switch itself takes up any time.
>
> I know that Andrew Yourtchenko has some real life experience with this
> stuff, so I'll put him in CC in case he has something to add.
>
> Cheers,
> Sander
>
>