Internet Performance Test - Advanced Results

M-Lab Testing Platform

M-Lab provides one of the largest collection of open Internet performance data. As a consortium of research, industry, and public interest partners, M-Lab is dedicated to providing an ecosystem for the open, verifiable measurement of global network performance. All of the data collected by M-Lab's global measurement platform is made openly available, and all of the measurement tools hosted by M-Lab are open source.

The .CA Internet Performance Test (IPT) uses vendor-neutral test servers located throughout Canada at various Internet Exchange Points (IXPs). Server nodes in the Canadian Internet Exchange Points located in Toronto, Montreal and Calgary are running the M-LAB platform, which offers a number of different tests to measure network speed and latency, blocking and throttling.  The IPT utilizes the Network Diagnostic Test (NDT) to provide the speed and diagnostic information regarding your configuration and network infrastructure. 

Using the Data

As each user performs a test, their data is anonymously collected and aggregated into a large dataset that spans Canada. Researchers will be able to understand the capabilities of Canada’s Internet infrastructure. As the reporting infrastructure grows, we will be able to overlay demographic and social data to help understand who is getting the best benefits from this great technology.  All tests performed using the M-Lab NDT platform have the data stored within the M-Lab database and available through Google’s BigQuery Data.

Once a sufficient amount of Internet Performance Test data has been collected, CIRA will provide an easy to use way to access this data. In the meantime you can access all the data M-Lab collects (including IPT data) directly via:

The Network Diagnostic Test (NDT) Results

M-Lab’s Network Diagnostic Test (NDT) connects your computer to one of our servers within Canadian IXPs to provide network configuration and performance testing.  It communicates with a Web100-enhanced server to perform diagnostic functions and then displays the results to the test users.  For additional details on the NDT test itself, refer to the links below:

Web 100 Detailed Results

For a more detailed description and up-to-date list of the results, please view the current version of the tcp-kis.txt file. 
The particular values are separated with commas without any spaces. The following results are stored: 

Variable

Description

X_Rcvbuf

The socket receive buffer size in octets. Note that the meaning of this variable is implementation dependent. In particular, it may or may not include the reassembly queue.

X_Sndbuf

The socket send buffer size in octets. Note that the meaning of this variable is implementation dependent. Particularly, it may or may not include the retransmit queue.

AckPktsIn

The number of valid pure ack packets that have been received on this connection by the Local Host.

AckPktsOut

The number of pure ack packets that have been sent on this connection by the Local Host.

bad_cable

A detected bad cable condition.
This variable can have the following values:

  • 0 - no bad cable condition was detected
  • 1 - possible bad cable condition was detected

BytesRetrans

The number of octets retransmitted.

CongAvoid

The number of times the congestion window has been increased by the Congestion Avoidance algorithm.

congestion

A detected congestion condition.
This variable can have the following values:

  • 0 - no congestion condition was detected
  • 1 - possible congestion condition was detected (it means that other network traffic was congesting the link during the test)

CongestionOverCount

The number of congestion events which were 'backed out' of the congestion control state machine such that the congestion window was restored to a prior value. This can happen due to the Eifel algorithm [RFC3522] or other algorithms which can be used to detect and cancel spurious invocations of the Fast Retransmit Algorithm.

CongestionSignals

The number of multiplicative downward congestion window adjustments due to all forms of congestion signals, including Fast Retransmit, ECN and timeouts. This object summarizes all events that invoke the MD portion of AIMD congestion control, and as such is the best indicator of how cwnd is being affected by congestion.

CountRTT

The number of round trip time samples included in tcpEStatsPathSumRTT and tcpEStatsPathHCSumRTT.

CurCwnd

The current congestion window, in octets.

CurMSS

The current maximum segment size (MSS), in octets.

CurRTO

The current value of the retransmit timer RTO.

CurRwinRcvd

The most recent window advertisement received, in octets.

CurRwinSent

The most recent window advertisement sent, in octets.

CurSsthresh

The current slow start threshold in octets.

c2sdata

A link type detected by the Bottleneck Link Detection algorithm using the Client --> Server data packets' inter-packet arrival times.
This variable can have the following values:

  • -1 - System Fault
  • 0 - RTT
  • 1 - Dial-up Modem
  • 2 - Cable/DSL modem
  • 3 - 10 Mbps Ethernet or WiFi 11b subnet
  • 4 - 45 Mbps T3/DS3 or WiFi 11 a/g subnet
  • 5 - 100 Mbps Fast Ethernet subnet
  • 6 - a 622 Mbps OC-12 subnet
  • 7 - 1.0 Gbps Gigabit Ethernet subnet
  • 8 - 2.4 Gbps OC-48 subnet
  • 9 - 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
  • 10 - Retransmissions

c2sack

A link type detected by the Bottleneck Link Detection algorithm using the Client <-- Server Ack packets' inter-packet arrival times.
This variable can have the same values as the c2sdata variable

C2S throughput speed

Measured throughput speed from client to server (value in kb/s).

DSACKDups

The number of duplicate segments reported to the local host by D-SACK blocks.

DataBytesIn

The number of octets contained in received data segments, including retransmitted data. Note that this does not include TCP headers.

DataBytesOut

The number of octets of data contained in transmitted segments, including retransmitted data. Note that this does not include TCP headers.

DataPktsIn

The number of segments received containing a positive length data segment.

DataPktsOut

The number of segments sent containing a positive length data segment.

DupAcksIn

The number of duplicate ACKs received.

DupAcksOut

The number of duplicate ACKs sent.

Duration

The seconds part of the time elapsed between StartTimeStamp and the most recent protocol event (segment sent or received).

ECNEnabled

Enabled(1) if Explicit Congestion Notification (ECN) has been negotiated on, selfDisabled(2) if it is disabled or not implemented on the local host, or peerDisabled(3) if not negotiated by the remote hosts.

FastRetran

The number of invocations of the Fast Retransmit algorithm.

Half_duplex

A detected half duplex condition.
This variable can have the following values:

  • 0 - no half duplex condition was detected (it means a full duplex subnet in the case of the Fast Ethernet link)
  • 1 - possible half duplex condition was detected (it means a half duplex subnet in the case of the Fast Ethernet link) 

Jitter

The variance of latency. In NDT it is calculated as the difference between the maximum and minimum recorded round trip times

Link

 

A detected link type by the set of custom heuristics.
This variable can have the following values:

  • 100 - link type cannot be detected (tests did not recognize the link)
  • 0 - detection algorithm failed (due to some error condition)
  • 10 - Ethernet link (Fast Ethernet)
  • 3 - wireless link
  • 2 - DSL/Cable modem link

MaxCwnd

The maximum congestion window used during Slow Start, in octets.

MaxMSS

The maximum MSS, in octets.

MaxRTO

The maximum value of the retransmit timer RTO.

MaxRTT

The maximum sampled round trip time.

MaxRwinRcvd

The maximum window advertisement received, in octets.

MaxRwinSent

The maximum window advertisement sent, in octets.

MaxSsthresh

The maximum slow start threshold, excluding the initial value.

MinMSS

The minimum MSS, in octets.

MinRTO

The minimum value of the retransmit timer RTO.

MinRTT

The minimum sampled round trip time.

MinRwinRcvd

The minimum window advertisement received, in octets.

MinRwinSent

The minimum window advertisement sent, excluding the initial unscaled window advertised on the SYN, in octets.

mismatch

A detected duplex mismatch condition.
This variable can have the following values:

  • 0 - no duplex mismatch condition was detected
  • 1 - possible duplex mismatch condition was detected by the Old Duplex-Mismatch algorithm
  • 2 - possible duplex mismatch condition was detected by the new algorithm: Switch=Full and Host=Half

NagleEnabled

True(1) if the Nagle algorithm is being used, else false(2).

OtherReductions

The number of congestion window reductions made as a result of anything other than AIMD congestion control algorithms. Examples of non-multiplicative window reductions include Congestion Window Validation [RFC2861] and experimental algorithms such as Vegas.

PktsIn

The total number of segments received.

PktsOut

The total number of segments sent.

PktsRetrans

The number of segments transmitted containing at least some retransmitted data.

RcvWinScale

The value of Rcv.Wind.Scale. Note that RcvWinScale is either zero or the same as WinScaleSent.

SACKEnabled

True(1) if SACK has been negotiated on, else false(2).

SACKsRcvd

The number of SACK options received.

SendStall

The number of interface stalls or other sender local resource limitations that are treated as congestion signals.

SlowStart

The number of times the congestion window has been increased by the Slow Start algorithm.

SampleRTT

The most recent raw round trip time measurement used in calculation of the RTO.

SmoothedRTT

The smoothed round trip time used in calculation of the RTO. See SRTT in [RFC2988].

Sndbuf

The socket send buffer size in octets. Note that the meaning of this variable is implementation dependent. Particularly, it may or may not include the retransmit queue.

SndLimTimeRwin

The cumulative time spent in the 'Receiver Limited' state.

SndLimTimeCwnd

The cumulative time spent in the 'Congestion Limited' state.

SndLimTimeSender

The cumulative time spent in the 'Sender Limited' state.

SndLimTransRwin

The number of transitions into the 'Receiver Limited' state from either the 'Congestion Limited' or 'Sender Limited' states. This state is entered whenever TCP transmission stops because the sender has filled the announced receiver window.

SndLimTransCwnd

The number of transitions into the 'Congestion Limited' state from either the 'Receiver Limited' or 'Sender Limited' states. This state is entered whenever TCP transmission stops because the sender has reached some limit defined by congestion control (e.g. cwnd) or other algorithms (retransmission timeouts) designed to control network traffic.

SndLimTransSender

The number of transitions into the 'Sender Limited' state from either the 'Receiver Limited' or 'Congestion Limited' states. This state is entered whenever TCP transmission stops due to some sender limit such as running out of application data or other resources and the Karn algorithm. When TCP stops sending data for any reason which cannot be classified as Receiver Limited or Congestion Limited it MUST be treated as Sender Limited.

SndLimBytesRwin

The cumulative bytes sent while in the 'Receiver Limited' state, as determined by the Local Host, when the Local Host is a sender. This state is entered whenever TCP transmission stops due to Receiver not being able to receive data.

SndLimBytesCwnd

The cumulative bytes sent while in the 'Congestion Limited' state, as determined by the Local Host, when the Local Host is a sender. This state is entered whenever TCP transmission stops due to congestion.

SndLimBytesSender

The cumulative bytes sent while in the 'Sender Limited' state, as determined by the Local Host, when the Local Host is a sender. This state is entered whenever TCP transmission stops because there is no more data in sender's buffer.

SndWinScale

The value of Snd.Wind.Scale. Note that SndWinScale is either zero or the same as WinScaleRcvd.

StartTimeUsec

The value of sysUpTime at the time this listener was established. If the current state was entered prior to the last re-initialization of the local network management subsystem, then this object contains a zero value.

SubsequentTimeouts

The number of times the retransmit timeout has expired after the RTO has been doubled. See section 5.5 in RFC2988.

SumRTT

The sum of all sampled round trip times.

s2cdata

A link type detected by the Bottleneck Link Detection algorithm using the Server --> Client data packets' inter-packet arrival times.

This variable can have the same values as the c2sdata variable

s2cack

A link type detected by the Bottleneck Link Detection algorithm using the Server <-- Client Ack packets' inter-packet arrival times.

This variable can have the same values as the c2sdata variable

S2C throughput speed

measured throughput speed from server to client (value in kb/s).

Timeouts

The number of times the retransmit timeout has expired when the RTO backoff multiplier is equal to one.

TimestampsEnabled

Enabled(1) if TCP timestamps have been negotiated on, selfDisabled(2) if they are disabled or not implemented on the local host, or peerDisabled(3) if not negotiated by the remote hosts.

WinScaleRcvd

The value of the received window scale option if one was received; otherwise, a value of -1.

WinScaleSent

The value of the transmitted window scale option if one was sent; otherwise, a value of -1.