Re: [Cerowrt-devel] [Bloat] blip: a tool for seeing internet latency with javascript

2013-04-28 Thread Rich Brown
This is indeed a cool hack. I was astonished for a moment, because it was a 
bedrock belief that you can't send pings from Javascript. And in fact, that is 
still true.

Apenwarr's code sends short HTTP queries of the format shown below to each of 
two hosts: 

http://gstatic.com/generate_204
http://apenwarr.ca/blip/

The Blip tool shows ~60-70ms for the gstatic host, and ~130 msec for the 
latter. Ping times are ~52 msec and 125msec, respectively. These times seem to 
track response times by my eye (no serious analysis) to load both on my primary 
(bloated) router and CeroWrt.

Still a cool hack.

Rich

-
HTTP Request & Response for typical blip "ping"

OPTIONS /generate_204 HTTP/1.1
Host: gstatic.com
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://gfblip.appspot.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 
(KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31
Access-Control-Request-Headers: accept, origin, x-requested-with
Accept: */*
Referer: http://gfblip.appspot.com/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP/1.1 204 No Content
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Date: Sun, 28 Apr 2013 12:37:17 GMT
Server: GFE/2.0


On Apr 26, 2013, at 7:04 PM, Dave Taht  wrote:

> Apenwarr has developed a really unique tool for seeing latency and
> packet loss via javascript. I had no idea this was possible:
> 
> http://apenwarr.ca/log/?m=201304#26
> 
> 
> 
> -- 
> Dave Täht
> 
> Fixing bufferbloat with cerowrt: 
> http://www.teklibre.com/cerowrt/subscribe.html
> ___
> Bloat mailing list
> bl...@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat

___
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel


Re: [Cerowrt-devel] [Bloat] blip: a tool for seeing internet latency with javascript

2013-04-28 Thread Maciej Soltysiak
At home with latest cero, I'm getting results similar to Rich.

I'm wondering how this will look tomorrow when I run it at company network,
which is incredibly complex WAN path, proxied, with things like riverbed
and checkpoint along the way.

Maciej



On Sun, Apr 28, 2013 at 4:56 PM, Rich Brown  wrote:

> This is indeed a cool hack. I was astonished for a moment, because it was
> a bedrock belief that you can't send pings from Javascript. And in fact,
> that is still true.
>
> Apenwarr's code sends short HTTP queries of the format shown below to each
> of two hosts:
>
> http://gstatic.com/generate_204
> http://apenwarr.ca/blip/
>
> The Blip tool shows ~60-70ms for the gstatic host, and ~130 msec for the
> latter. Ping times are ~52 msec and 125msec, respectively. These times seem
> to track response times by my eye (no serious analysis) to load both on my
> primary (bloated) router and CeroWrt.
>
> Still a cool hack.
>
> Rich
>
> -
> HTTP Request & Response for typical blip "ping"
>
> OPTIONS /generate_204 HTTP/1.1
> Host: gstatic.com
> Connection: keep-alive
> Access-Control-Request-Method: GET
> Origin: http://gfblip.appspot.com
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3)
> AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31
> Access-Control-Request-Headers: accept, origin, x-requested-with
> Accept: */*
> Referer: http://gfblip.appspot.com/
> Accept-Encoding: gzip,deflate,sdch
> Accept-Language: en-US,en;q=0.8
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
>
> HTTP/1.1 204 No Content
> Content-Length: 0
> Content-Type: text/html; charset=UTF-8
> Date: Sun, 28 Apr 2013 12:37:17 GMT
> Server: GFE/2.0
>
>
> On Apr 26, 2013, at 7:04 PM, Dave Taht  wrote:
>
> > Apenwarr has developed a really unique tool for seeing latency and
> > packet loss via javascript. I had no idea this was possible:
> >
> > http://apenwarr.ca/log/?m=201304#26
> >
> >
> >
> > --
> > Dave Täht
> >
> > Fixing bufferbloat with cerowrt:
> http://www.teklibre.com/cerowrt/subscribe.html
> > ___
> > Bloat mailing list
> > bl...@lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/bloat
>
> ___
> Cerowrt-devel mailing list
> Cerowrt-devel@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel
>
___
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel


Re: [Cerowrt-devel] [Bloat] blip: a tool for seeing internet latency with javascript

2013-04-28 Thread dpreed


 
Actually, using HTTP 1.1 GET  that generates a single packet in each direction 
for a ping is quite reasonable.  In fact, it is "better" for measuring actual 
path latencies, since ICMP pings *could* be discriminated against in a router 
along the way (in the "old days" people in the routing community suggested that 
ICMP should be diverted off of the "fast path" to avoid degrading the user 
experience).
 
I've been using this technique to measure bufferbloat-induced delays on Phones 
and Android phones for quite a while.  I have a couple of servers that use 
nginx "status" handlers to generate a short GET response without touching files 
as my "targets".
 
Since it depends on HTTP 1.1's re-use of the underlying TCP connection for 
successive GET commands, it's a bit fragile.
 
Javascript can be made to do a lot of performance testing - you can access both 
TCP and DNS protocols from the browser, so if you play cards right, you can 
cause single TCP exchanges and single UDP exchanges to happen with cooperative 
servers (web servers using HTTP 1.1 and DNS resolvers using uncacheable UDP 
name lookups).
 
 
 


On Sunday, April 28, 2013 10:56am, "Rich Brown"  said:



> This is indeed a cool hack. I was astonished for a moment, because it was a
> bedrock belief that you can't send pings from Javascript. And in fact, that is
> still true.
> 
> Apenwarr's code sends short HTTP queries of the format shown below to each of 
> two
> hosts:
> 
> http://gstatic.com/generate_204
> http://apenwarr.ca/blip/
> 
> The Blip tool shows ~60-70ms for the gstatic host, and ~130 msec for the 
> latter.
> Ping times are ~52 msec and 125msec, respectively. These times seem to track
> response times by my eye (no serious analysis) to load both on my primary
> (bloated) router and CeroWrt.
> 
> Still a cool hack.
> 
> Rich
> 
> -
> HTTP Request & Response for typical blip "ping"
> 
> OPTIONS /generate_204 HTTP/1.1
> Host: gstatic.com
> Connection: keep-alive
> Access-Control-Request-Method: GET
> Origin: http://gfblip.appspot.com
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31
> (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31
> Access-Control-Request-Headers: accept, origin, x-requested-with
> Accept: */*
> Referer: http://gfblip.appspot.com/
> Accept-Encoding: gzip,deflate,sdch
> Accept-Language: en-US,en;q=0.8
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
> 
> HTTP/1.1 204 No Content
> Content-Length: 0
> Content-Type: text/html; charset=UTF-8
> Date: Sun, 28 Apr 2013 12:37:17 GMT
> Server: GFE/2.0
> 
> 
> On Apr 26, 2013, at 7:04 PM, Dave Taht  wrote:
> 
> > Apenwarr has developed a really unique tool for seeing latency and
> > packet loss via javascript. I had no idea this was possible:
> >
> > http://apenwarr.ca/log/?m=201304#26
> >
> >
> >
> > --
> > Dave Täht
> >
> > Fixing bufferbloat with cerowrt:
> http://www.teklibre.com/cerowrt/subscribe.html
> > ___
> > Bloat mailing list
> > bl...@lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/bloat
> 
> ___
> Cerowrt-devel mailing list
> Cerowrt-devel@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel
>
 ___
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel


Re: [Cerowrt-devel] [Codel] [Bloat] blip: a tool for seeing internet latency with javascript

2013-04-28 Thread Jim Gettys
On Sun, Apr 28, 2013 at 2:52 PM,  wrote:

>  Actually, using HTTP 1.1 GET  that generates a single packet in each
> direction for a ping is quite reasonable.  In fact, it is "better" for
> measuring actual path latencies, since ICMP pings *could* be discriminated
> against in a router along the way (in the "old days" people in the routing
> community suggested that ICMP should be diverted off of the "fast path" to
> avoid degrading the user experience).
>

Yes, using HTTP is good in this respect.  I worked with the author of
httping to get support for persistent connections 18 months or so ago.

How to deal with proxies is one question, though one should mark the
response uncachable. (unless the intent is to just test the path as far as
the proxy.

In practice, I've never seen signs of ICMP being put off the fast path in
my testing; this doesn't mean it doesn't happen.

>
>
> I've been using this technique to measure bufferbloat-induced delays on
> Phones and Android phones for quite a while.  I have a couple of servers
> that use nginx "status" handlers to generate a short GET response without
> touching files as my "targets".
>
>
>
> Since it depends on HTTP 1.1's re-use of the underlying TCP connection for
> successive GET commands, it's a bit fragile.
>

I don't think this should be particularly fragile, unless you know
something I don't.

Jim



>
>
> Javascript can be made to do a lot of performance testing - you can access
> both TCP and DNS protocols from the browser, so if you play cards right,
> you can cause single TCP exchanges and single UDP exchanges to happen with
> cooperative servers (web servers using HTTP 1.1 and DNS resolvers using
> uncacheable UDP name lookups).
>
>
>
>
>
>
>
>
>
> On Sunday, April 28, 2013 10:56am, "Rich Brown" 
> said:
>
>  > This is indeed a cool hack. I was astonished for a moment, because it
> was a
> > bedrock belief that you can't send pings from Javascript. And in fact,
> that is
> > still true.
> >
> > Apenwarr's code sends short HTTP queries of the format shown below to
> each of two
> > hosts:
> >
> > http://gstatic.com/generate_204
> > http://apenwarr.ca/blip/
> >
> > The Blip tool shows ~60-70ms for the gstatic host, and ~130 msec for the
> latter.
> > Ping times are ~52 msec and 125msec, respectively. These times seem to
> track
> > response times by my eye (no serious analysis) to load both on my primary
> > (bloated) router and CeroWrt.
> >
> > Still a cool hack.
> >
> > Rich
> >
> > -
> > HTTP Request & Response for typical blip "ping"
> >
> > OPTIONS /generate_204 HTTP/1.1
> > Host: gstatic.com
> > Connection: keep-alive
> > Access-Control-Request-Method: GET
> > Origin: http://gfblip.appspot.com
> > User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3)
> AppleWebKit/537.31
> > (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31
> > Access-Control-Request-Headers: accept, origin, x-requested-with
> > Accept: */*
> > Referer: http://gfblip.appspot.com/
> > Accept-Encoding: gzip,deflate,sdch
> > Accept-Language: en-US,en;q=0.8
> > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
> >
> > HTTP/1.1 204 No Content
> > Content-Length: 0
> > Content-Type: text/html; charset=UTF-8
> > Date: Sun, 28 Apr 2013 12:37:17 GMT
> > Server: GFE/2.0
> >
> >
> > On Apr 26, 2013, at 7:04 PM, Dave Taht  wrote:
> >
> > > Apenwarr has developed a really unique tool for seeing latency and
> > > packet loss via javascript. I had no idea this was possible:
> > >
> > > http://apenwarr.ca/log/?m=201304#26
> > >
> > >
> > >
> > > --
> > > Dave Täht
> > >
> > > Fixing bufferbloat with cerowrt:
> > http://www.teklibre.com/cerowrt/subscribe.html
> > > ___
> > > Bloat mailing list
> > > bl...@lists.bufferbloat.net
> > > https://lists.bufferbloat.net/listinfo/bloat
> >
> > ___
> > Cerowrt-devel mailing list
> > Cerowrt-devel@lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/cerowrt-devel
> >
>
>
>
>
> ___
> Codel mailing list
> co...@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/codel
>
>
___
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel