W3C home > Mailing lists > Public > public-web-mobile@w3.org > December 2014

Re: API for network optimization

From: Ilya Grigorik <igrigorik@gmail.com>
Date: Wed, 10 Dec 2014 14:59:18 -0800
Message-ID: <CAKRe7JG=t76_NfgTtRpPkX7DezOgJ3vPpS-bbE4WR0EEkyzB=Q@mail.gmail.com>
To: Natasha Rooney <nrooney@gsma.com>
Cc: Dominique Hazael-Massieux <dom@w3.org>, "public-web-mobile@w3.org" <public-web-mobile@w3.org>, "igrigorik@google.com" <igrigorik@google.com>
Hi all, apologies about the delayed reply!

On Wed, Nov 26, 2014 at 6:52 AM, Dominique Hazael-Massieux <dom@w3.org>
 wrote:

> I wonder if there is also any interest in working
> on an operator-neutral API that would let developers get some visibility
> as to how they should behave on the network to obtain optimal
> performances while reducing network load.
>
> I'm interested in feedback on the value of pushing such work, as well as
> on whether there is any realistic hope such information can be provided
> by (at least some) network operators.
>

Before I attempt to answer above questions, let me try to explain the
problem we're running up against (apologies about the length):

Mobile radio(s) consume a lot of energy and all existing standards design
the underlying protocols with an explicit goal of trying to power down the
radio as quickly as possible, and to keep it in that state for as long as
possible. Further, some standards define multiple radio states where small
amounts of data may be trickled out over a shared channel without causing a
full high power cycle on the radio. Also, each radio cycle incurs a lot of
coordination overhead in the carrier network ("signaling storms"), hence
it's also in carriers interest to try and keep the device in a shared
channel / radio-off state for as long as possible. So far so good...

The problem today is that all of that underlying logic is hidden from the
application layer, which leads to really painful edge-cases. A real-world
example to illustrate the point... We ran into an issue where the Google
Search was responding *really* slowly to user input (the autocomplete
results would take forever), but it only happened on a particular carrier.
After lots of trial and error (and poking in the dark), we realized that
the issue was that the amount of data we were sending (very small) was
causing that particular carrier to keep us in the "shared channel" and
hence the slow request-reply. Once we sent enough data everything was fast
again... After contacting the carrier, they confirmed that they recently
raised their limit for the shared channel, which triggered this condition
on our end. This took a long time to diagnose, and it affected a lot of
users. That said, nobody in particular is at fault: carrier wanted to
minimize signaling storms and reduce energy usage on device, our app wanted
to minimize data overhead, both of which are the right goals.

The above example generalizes into a recurring problem: interactive traffic
is being misclassified and is kept in the slow lane, causing unexpected
delays and high variability in response times. And at the same time we also
have the opposite problem: there are many cases where we're transferring
small-but-sufficiently large payloads which are *not* interactive, and
we're perfectly fine if they take longer to transmit but consume less
energy.

In effect, what's missing is a channel to communicate between the browser
(or any app working with sockets, this is not a "web only" thing) and the
underlying radio drivers + carrier logic that can indicate the type of
transmission (background vs. interactive). If such thing existed, the
browser could classify packets as interactive or background and defer to
the radio to make the right decisions.

Instead the "workaround solution" today is to pad transmissions from
app-space and force the radio into high-power state -- needless to say,
this is a terrible approach. In fact, we're stuck in an unfortunate loop:
developers pad more bytes, carriers raise limits, developers pad... At the
same time, we don't have a good solution for efficient background
transfers: different standards have different logic, different carriers
have different thresholds, and so on.

Solving this problem is a non-trivial exercise as we're talking about "app
> network driver > carrier" coordination, and I'm not sure that this is the
right forum for it? That said, perhaps someone else has some clever ideas
or insights on how this could be tackled, or knows the right people at
right places that can make it a reality? :-)

----

Independent of the above, what we have found very useful is data on how the
various networks are configured under the hood -- e.g. how long until radio
transitions from high state to low power, and so on. ATT's ARO project is a
rare (and very valuable) example of providing this data:
https://github.com/attdevsupport/ARO/blob/master/ARODataAnalyzer/src/lte.conf

As one idea and suggestion: I'd love to see similar configuration data for
other carriers. If available, it could be incorporated into developer
tools, simulators / emulators for energy use and latency, and so on.

---

All that said.. I'm also curious to hear any other ideas from both sides of
the table for what we could/should do better to deliver a better experience
to the user. Our goals are aligned, even if our APIs are not... (currently,
at least :)).

ig

On Thu, Nov 27, 2014 at 3:28 AM, Natasha Rooney <nrooney@gsma.com> wrote:

> Thanks for this Dom!
>
> Guys - please take a look at DomĀ¹s suggestion below and let the list know
> your thoughts (thanks to Kawada san for already doing this!). We will be
> having some discussions about this on the list and on the calls.
>
> >From a GSMA perspective I love the idea! It is a great initiative to ease
> network traffic, as well as provide more insight into how to react to
> certain network situations for developers.
>
> Thanks all!
>
>
> Natasha Rooney | Web Technologist | GSMA | nrooney@gsma.com | +44 (0) 7730
> 219 765 | @thisNatasha | Skype: nrooney@gsm.org
>
> Tokyo, Japan
>
>
>
>
>
>
>
> On 11/26/14, 23:52, "Dominique Hazael-Massieux" <dom@w3.org> wrote:
>
> >Hi all,
> >
> >Back at the Telcos@w3c breakout in TPAC, we ended the session discussing
> >how browser vendors and/or Web application developers could adapt their
> >network usage to the underlying network:
> >http://www.w3.org/2014/10/29-telcos-minutes.html#item04b
> >
> >Ilya (copied) explained how the specific network configuration (e.g. its
> >response to particular pattern of network traffic) can affect
> >dramatically the final performance of the Web app.
> >
> >While there are already ongoing discussions on an API to adapt to the
> >user's data plan [1], I wonder if there is also any interest in working
> >on an operator-neutral API that would let developers get some visibility
> >as to how they should behave on the network to obtain optimal
> >performances while reducing network load.
> >
> >I'm interested in feedback on the value of pushing such work, as well as
> >on whether there is any realistic hope such information can be provided
> >by (at least some) network operators.
> >
> >Thanks,
> >
> >Dom
> >
> >1.
> >http://lists.w3.org/Archives/Public/public-web-mobile/2014Oct/0004.html
> >
> >
> >
>
> This email and its attachments are intended for the above named only and
> may be confidential. If they have come to you in error you must take no
> action based on them, nor must you copy or show them to anyone; please
> reply to this email or call +44 207 356 0600 and highlight the error.
>
>
Received on Wednesday, 10 December 2014 23:00:26 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:59:05 UTC