+ All Categories
Home > Engineering > Measuring latency from the browser

Measuring latency from the browser

Date post: 28-Jan-2018
Category:
Upload: agustin-formoso
View: 588 times
Download: 0 times
Share this document with a friend
36
Measuring latency from the browser Paper presented at #WebBR2015 Agustín Formoso - LACNIC Labs simon.lacnic.net
Transcript
Page 1: Measuring latency from the browser

Measuring latency from the browser

Paper presented at #WebBR2015 Agustín Formoso - LACNIC Labs

simon.lacnic.net

Page 2: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Agenda

• O projeto

• Latencia, Javascript, e TCP

• Os testes

• Próximos pasos

Page 3: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The project

Page 4: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The projectThe problem

• Connectivity in LAC is good but not optimal

• Presence of IXPs, but inter-country connectivity still has to be improved

• Information about connectivity is not easy to find or updated

The solution• Objective

Provide representative and up-to-date connectivity measurements to anyone interested in them

• HowLatency measurements from many origins, to many destinations, via different protocols

Page 5: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The projectReports

BR <—> BR

BR <—> MX BR <—> Region

Connectivity information regarding a certain country against

• The country itself • Other countries • The LAC region

Page 6: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

LatencyOne way

• Two clocks • Clocks sync • Hard

RTT• One clock • Easier • Everything running in one endpoint

(the application) • Send packet and time the RTT • Paths!

Page 7: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Why bother with the browser?Pros

• Standard and widely-used technologies

• Ran at the end user • Can trigger measurements

automatically • Scales fast

Cons• Browser and operating system

combination differences - TCP connections are handled differently

by browser and OS combination! - Browser Javascript engines vary - OSes handle processes differently

• Need of normalising different environments!

Page 8: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Why bother with the browser?

Page 9: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Why bother with the browser?Cons

• Where is the delay happening?

• Do we need to know where is it happening?

• Black-box test them!

Page 10: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Latency, Javascript and TCP

Page 11: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Latency, Javascript and TCP Some code

$.jsonp({

type: 'GET',

url: 'http://mytestpoint.net/1442778041426',

error: function () {

rtt = (+new Date - ts);

}

});

ts = +new Date;

Page 12: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Latency, Javascript and TCP Connection establishment

• TCP connection overhead

• One time only

• Keep it open

Page 13: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Latency, Javascript and TCP Successive “GETs”

• Used every time after TCP connection has been made

Page 14: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Latency, Javascript and TCP Successive “GETs”

• High level HTTP RTT

• t0, t1, d1, d2

• data

t0

t1

}d1

}d2

Ifd1→0 and

d2→0then

t1 - t0→RTT (http)

Page 15: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Latency, Javascript and TCP Successive “GETs”

• High level HTTP RTT

• t0, t1, d1, d2

• data

“RTT (http)”

Page 16: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Latency, Javascript and TCP Comparison

• Tester running at the client

• tcpdump running at the client

• Save both tcpdump and tester output

⬆ ~200

⬆ ~210

Page 17: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests

Page 18: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests Testing our tool in Browserstack

• Cloud-based testing service aimed at web developers to check the look & feel and responsiveness of their sites

• We use it to run our Javascript tool over many different OS and browser combination

• We used automated Selenium tests

Page 19: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests Javascript tool

• Ran in the virtual instance • Fixed origin, fixed destination • Simple HTTP GET • Time the RTT • Parallel sessions with a reference environment always present

Page 20: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests The data: first glance

⬆ ~360

⬆ ~350

Page 21: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests The data: time anomalies

Page 22: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests The data: serious time anomalies

Page 23: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests The data: IQR filtering

Page 24: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests The data: second glance

11 ms

Page 25: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests The data: adjusting it

+11 ms

Page 26: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests Normalising results

Windows 7 Windows 8.1 OS X Windows XP Windows 8

Chrome family 0 +1.9 -7.2 -1.4 +0.1

Firefox family -3.9 -2.8 -11.4 -4.8 -5.6

Our reference environment[Results are in ms]

Page 27: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

The tests Normalising results

• Two distinct behaviours

- Firefox vs. Chrome

- OS X versus the rest

[Lighter blue means faster]

Page 28: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Still…

• Uncertainties on virtualisation software

• No tests for mobile or Linux yet (~8% of seen traffic)

Page 29: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Test conclusions

• The browser: great tool for delivering large-scale measurements but

- Huge variety

- Measurement noise can be high

Page 30: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

LAC regional matrix

[Lighter blue means faster]

• Origins on the left

• Destinations on the top

Page 31: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Next steps

Page 32: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Next steps WebResourceAPI

Page 33: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Next steps WebResourceAPI

• connectStart

• connectEnd

• RTT = connectEnd - connectStart (kind of)

Page 34: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Next steps Doing HTTP HEAD

• No data payload!

• Get rid of big 404 pages.}payload

Page 35: Measuring latency from the browser

@proyectosimonhttp://simon.lacnic.net

Next steps

• We need more tests! (currently at ~1.5K daily)

• More information at AS level

• Customised reports

• traceroutes (currently ICMP Pinging only)


Recommended