Upload
agustin-formoso
View
588
Download
0
Embed Size (px)
Citation preview
Measuring latency from the browser
Paper presented at #WebBR2015 Agustín Formoso - LACNIC Labs
simon.lacnic.net
@proyectosimonhttp://simon.lacnic.net
Agenda
• O projeto
• Latencia, Javascript, e TCP
• Os testes
• Próximos pasos
@proyectosimonhttp://simon.lacnic.net
The project
@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
@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
@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!
@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!
@proyectosimonhttp://simon.lacnic.net
Why bother with 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!
@proyectosimonhttp://simon.lacnic.net
Latency, Javascript and TCP
@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;
@proyectosimonhttp://simon.lacnic.net
Latency, Javascript and TCP Connection establishment
• TCP connection overhead
• One time only
• Keep it open
@proyectosimonhttp://simon.lacnic.net
Latency, Javascript and TCP Successive “GETs”
• Used every time after TCP connection has been made
@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)
@proyectosimonhttp://simon.lacnic.net
Latency, Javascript and TCP Successive “GETs”
• High level HTTP RTT
• t0, t1, d1, d2
• data
“RTT (http)”
@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
@proyectosimonhttp://simon.lacnic.net
The tests
@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
@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
@proyectosimonhttp://simon.lacnic.net
The tests The data: first glance
⬆ ~360
⬆ ~350
@proyectosimonhttp://simon.lacnic.net
The tests The data: time anomalies
@proyectosimonhttp://simon.lacnic.net
The tests The data: serious time anomalies
@proyectosimonhttp://simon.lacnic.net
The tests The data: IQR filtering
@proyectosimonhttp://simon.lacnic.net
The tests The data: second glance
11 ms
@proyectosimonhttp://simon.lacnic.net
The tests The data: adjusting it
+11 ms
@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]
@proyectosimonhttp://simon.lacnic.net
The tests Normalising results
• Two distinct behaviours
- Firefox vs. Chrome
- OS X versus the rest
[Lighter blue means faster]
@proyectosimonhttp://simon.lacnic.net
Still…
• Uncertainties on virtualisation software
• No tests for mobile or Linux yet (~8% of seen traffic)
@proyectosimonhttp://simon.lacnic.net
Test conclusions
• The browser: great tool for delivering large-scale measurements but
- Huge variety
- Measurement noise can be high
@proyectosimonhttp://simon.lacnic.net
LAC regional matrix
[Lighter blue means faster]
• Origins on the left
• Destinations on the top
@proyectosimonhttp://simon.lacnic.net
Next steps
@proyectosimonhttp://simon.lacnic.net
Next steps WebResourceAPI
@proyectosimonhttp://simon.lacnic.net
Next steps WebResourceAPI
• connectStart
• connectEnd
• RTT = connectEnd - connectStart (kind of)
@proyectosimonhttp://simon.lacnic.net
Next steps Doing HTTP HEAD
• No data payload!
• Get rid of big 404 pages.}payload
@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)
Obrigado!Perguntas
/LACNIC/simon Colabore!
@proyectosimon Compartilhe!
simon.lacnic.net Visite!
@aguformoso