Skip to content
collina edited this page Feb 17, 2013 · 70 revisions

“Prison is like, there’s no bandwidth.”
— Eric Schmidt, Google Executive Chairman, Mobile World Congress. February 28, 2012

  1. Equations

Context

About-Measurement-Lab

NDT Metrics

Things that Matter to Me

  • Oh, damn. This is a metric of where to put proxy servers.
  • ASNs reporting speeds over third quantile
  • National variance — if (asn_clients > threshold): compare(asn, all_asns) for similar fluctuation across month
  • National trends — max, median, mean
  • Histogram of speeds for download tests in Iran
  • In addition to measuring the familiar upload and download speeds of a user’s connection, NDT also performs tests that can assess factors such as latency, packet loss, congestion, bad cables, out of order delivery and bottlenecks on the end-to-end path from client to server (on either side of the connection).

Needs

  • Visualization of centrality of TCI in international Internet traffic (scamper in all blocks)

Local Server Selection

Select servers for evaluation based on high average throughput and lower latencies (GR, GB, FR).

Country Tests Clients Max Thru Average Thru Min MinRTT Avg MinRTT Min MaxRTT Avg MaxRTT
GR 1,802 1,498 0.8316 0.0501 135.0000 319.1315 168.0000 703.1498
US 629 523 0.4858 0.0403 126.0000 330.1971 242.0000 723.2544
GB 458 348 1.0188 0.0495 104.0000 269.8777 161.0000 674.7707
FR 357 292 0.6942 0.0449 108.0000 280.4510 210.0000 661.6667
DE 77 73 0.3381 0.0297 117.0000 283.4675 297.0000 772.0519
TW 2 2 0.0525 0.0330 453.0000 492.0000 664.0000 865.5000
JP 1 1 0.0103 0.0103 394.0000 394.0000 665.0000 665.0000
December 2012, Country Aggregated Data

Questions

  • Does the selection mechanism bias different ASNs or Routes?

Notes on Data

  • Times are recorded in GMT

Data Sources


SELECT
	web100_log_entry.log_time,
	web100_log_entry.connection_spec.remote_ip,
	web100_log_entry.snap.HCThruOctetsAcked,
	web100_log_entry.snap.SndLimTimeRwin,
	web100_log_entry.snap.SndLimTimeCwnd,
	web100_log_entry.snap.SndLimTimeSnd,
	web100_log_entry.snap.MinRTT,
	web100_log_entry.snap.MaxRTT,
	web100_log_entry.snap.SumRTT,
	web100_log_entry.snap.CountRTT,
	web100_log_entry.snap.MaxMSS,
	web100_log_entry.snap.SegsRetrans,
	web100_log_entry.snap.SegsOut,
	web100_log_entry.snap.DataSegsOut,
	web100_log_entry.snap.CongSignals,
	web100_log_entry.snap.Timeouts,
	web100_log_entry.snap.DupAcksOut,
	web100_log_entry.snap.ECNsignals,
	connection_spec.client_geolocation.country_code,
	connection_spec.server_geolocation.country_code
FROM [measurement-lab:m_lab.2010_01],
	[measurement-lab:m_lab.2010_02], 
	[measurement-lab:m_lab.2010_03], 
	[measurement-lab:m_lab.2010_04], 
	[measurement-lab:m_lab.2010_05], 
	[measurement-lab:m_lab.2010_06], 
	[measurement-lab:m_lab.2010_07], 
	[measurement-lab:m_lab.2010_08], 
	[measurement-lab:m_lab.2010_09], 
	[measurement-lab:m_lab.2010_10], 
	[measurement-lab:m_lab.2010_11], 
	[measurement-lab:m_lab.2010_12], 
	[measurement-lab:m_lab.2011_01],
	[measurement-lab:m_lab.2011_02], 
	[measurement-lab:m_lab.2011_03], 
	[measurement-lab:m_lab.2011_04], 
	[measurement-lab:m_lab.2011_05], 
	[measurement-lab:m_lab.2011_06], 
	[measurement-lab:m_lab.2011_07], 
	[measurement-lab:m_lab.2011_08], 
	[measurement-lab:m_lab.2011_09], 
	[measurement-lab:m_lab.2011_10], 
	[measurement-lab:m_lab.2011_11], 
	[measurement-lab:m_lab.2011_12], 
	[measurement-lab:m_lab.2012_01],
	[measurement-lab:m_lab.2012_02], 
	[measurement-lab:m_lab.2012_03], 
	[measurement-lab:m_lab.2012_04], 
	[measurement-lab:m_lab.2012_05], 
	[measurement-lab:m_lab.2012_06], 
	[measurement-lab:m_lab.2012_07], 
	[measurement-lab:m_lab.2012_08], 
	[measurement-lab:m_lab.2012_09], 
	[measurement-lab:m_lab.2012_10], 
	[measurement-lab:m_lab.2012_11], 
	[measurement-lab:m_lab.2012_12], 
	[measurement-lab:m_lab.2013_01],
	[measurement-lab:m_lab.2013_02] 
WHERE
	IS_EXPLICITLY_DEFINED(project)
	AND project = 0
	AND IS_EXPLICITLY_DEFINED(connection_spec.data_direction)
	AND connection_spec.data_direction = 1
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.is_last_entry)
	AND web100_log_entry.is_last_entry = True
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.HCThruOctetsAcked)
	AND web100_log_entry.snap.HCThruOctetsAcked >= 8192
	AND web100_log_entry.snap.HCThruOctetsAcked < 1000000000
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.SndLimTimeRwin)
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.SndLimTimeCwnd)
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.SndLimTimeSnd)
	AND (web100_log_entry.snap.SndLimTimeRwin +
	   web100_log_entry.snap.SndLimTimeCwnd +
	   web100_log_entry.snap.SndLimTimeSnd) >= 9000000
	AND (web100_log_entry.snap.SndLimTimeRwin +
	   web100_log_entry.snap.SndLimTimeCwnd +
	   web100_log_entry.snap.SndLimTimeSnd) < 3600000000
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.log_time)
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.connection_spec.remote_ip)
	AND IS_EXPLICITLY_DEFINED(web100_log_entry.connection_spec.local_ip)
	AND connection_spec.client_geolocation.country_code = 'IR'
  1. Equations
Data Point Units Equation
Packet loss (S2C) Percentage of Packets \frac{CongSignals}{SegsOut}
Average Latency Milliseconds \frac{SumRTT}{CountRTT}
Network-Limited Time Ratio Percentage of Time \frac{SndLimTimeCwnd}{SndLimTimeRwin + SndLimTimeCwnd + SndLimTimeSnd}
Network Throughput (S2C) Kilobits per Second \frac{HCThruOctetsAcked}{SndLimTimeRwin + SndLimTimeCwnd + SndLimTimeSnd}*8*1000
Retransmissions (S2C) Percentage of Segments \frac{SegsRetrans}{DataSegsOut}
Packets Arriving Out of Order Percentage of Packets \frac{DupAcksIn}{HCThruOctetsAcked}
  • Retransmissions is a probability metric, and should be computed as SUM/SUM * 100
  • but it does not return the “commonly” expected result. I.e., it does not return the avg RTT between server and client, because, as soon as the congestion reaches congestion, RTT gets longer. That’s why I used MinRTT.

Clone this wiki locally