Firefox OS

Network Condition
Awareness

Graduate Research

University of Michigan

Graduate research lab on mobile performance

Mostly focused on Android on fast networks

But a lot of findings apply...

Poor Network Conditions

Full stack impact:

Dropped requests

Non-functional apps

Waste of user's money

Battery quickdeath

Load on base station

Very unhappy users

Very unhappy operators

Turns out...

Not new problems

Tons of research in the field

Little being applied on the Web

Huge wins possible

Tail Optimization

Radio chips: high/low power

Radio Resource Controls (RRC) timers

High power mode stays on after activity

wasted power: "tail energy"

Fast Dormancy

Tell chip that we're done

Little/no access via chipset vendors

Can infer via power measurement

But variable per chipset/network

Even so, problematic to have that access

"Yo, I'm done."

What to deux.

Proactive: piggybacking

Last network access timestamp?

"now is good" events?

Projections

Scheduling

XHR option to defer?

High Latency

Local passive measurement of cellular load

Complex, requires low-level radio access

Could measure requests on ongoing basis?

Still requires high-level positive patterns

Weak Link

Bars don't tell the whole story

Strong link != low latency

Weak link != high latency

Neither signal throughput

Network Information API

Bandwith quotes from provider are wrong

"if (fast) then..." not granular enough

TMI

Keep it simple for devs

Web Sweet Spot

Tail energy, weak signal, high latency

App developers shouldn't have to care

Positive patterns for built-in awareness

Education isn't enough

PSU Capstone Project

Experiment

Helper library

Surveys network conditions

Throughout the day

Predict opportunity windows

Other Research

Multipath TCP

QUIC

Traffic pre-caching

https://wiki.mozilla.org/FirefoxOS/Research

THANKS.