How to Assess End-User Network Experience for Microsoft Teams

Microsoft Teams is one of the most popular video conferencing services, and if you are supporting users on Teams, inevitably you will need to troubleshoot connectivity and user experience issues. The end product of the user experience can be affected by several factors, such as:

  • Network layer (WiFi, WAN, ISP, Microsoft Teams Cloud)
  • End-user device CPU and memory
  • Microsoft Teams backend server performance

Microsoft has done a good job in providing both quite some information as well as tools to help you troubleshoot network and connectivity problems. 

Browser Tool

As a first reference the article “Microsoft 365 network connectivity test tool” gives a good overview and several references about the web based “Microsoft 365 network connectivity test” that anyone can use to run a quick test.

As soon as you open the page and you provide your location (the zip code is enough), tests start running on your browser and give a high level assessment of your network connectivity quality.

This chart tells you where you rank within other users in your area. This gives you a qualitative assessment of your network connectivity to Microsoft 365, and some bragging rights potentially. On top of that, if you are on Windows, as soon as you open the page an executable is downloaded and you are prompted to run it in order to get more in depth information (you might be prompted to install  .NET Core 3.1 Desktop Runtime):

Once it’s done running all the tests you can open the “Details” tab of the same page and you will get a detailed report of your network performance.

First you get information about your location, DNS resolution time, and whether the tests go through a proxy or over a VPN:

Next, there test metrics about Microsoft Exchange, SharePoint and Teams:

On the bottom you get hop-by-hop path the traffic takes to get to outlook.office365.com, microsoft.sharepoint.com, and worldaz.tr.teams.microsoft.com

Network Assessment Tool

The convenience of the browser-based tool is that it’s easier to ask a non-skilled user to go to the page and run the tests (although you probably need to guide them through), and they can easily share the results with you via a link. Also, the browser-based tests work on both Windows and MAC, although the detailed testing works only on Windows.

Microsoft has another Windows test utility called “Teams Network Assessment Tool” which you can download from here. Once you download it run the installer, and then open Windows CMD or a Powershell command prompt and navigate to the folder “C:\Program Files (x86)\Microsoft Teams Network Assessment Tool” and for starters you can print the help information:

C:\>cd "C:\Program Files (x86)\Microsoft Teams Network Assessment Tool"

C:\Program Files (x86)\Microsoft Teams Network Assessment Tool>.\NetworkAssessmentTool.exe /help
Microsoft Teams - Network Assessment Tool

Usage:
    NetworkAssessmentTool.exe [options]
    [options]:
    <no option>                   Perform connectivity checks.
    /qualitycheck                 Perform quality checks with relay.
    /infraconnectivitytest        Perform HTTP stack infra tests.
    /location                     Perform lldp and geolocation checks.
    /usage or /?                  Print usage text.

If you run the tool without any arguments it performs a series of checks to verify all necessary ports are open to communicate with the Teams network. By default, it tests connectivity to the relay worldaz.tr.teams.microsoft.com (this is configurable).

C:\Program Files (x86)\Microsoft Teams Network Assessment Tool>.\NetworkAssessmentTool.exe
Microsoft Teams - Network Assessment Tool

Starting Relay Connectivity Check:
UDP, PseudoTLS, FullTLS, HTTPS connectivity will be checked to this relay (VIP) FQDN: worldaz.tr.teams.microsoft.com
If user wants to check connectivity to a particular relay (VIP) IP, please specify in NetworkAssessment.exe.config.

Connectivity check source port range: 50000 - 50019

Relay : 52.114.157.21   is the relay load balancer (VIP)
Relay : 52.114.157.21   is reachable using Protocol UDP and Port 3478

Starting Service Connectivity Check:
Relay : 52.114.157.21   is QOS (Media Priority) enabled
Relay : 52.114.157.21   is the relay load balancer (VIP)
Relay : 52.114.157.21   is reachable using Protocol PseudoTLS and Port 443
Relay : 52.114.157.21   is the relay load balancer (VIP)
Relay : 52.114.157.21   is reachable using Protocol FullTLS and Port 443
Relay : 52.114.157.21   is the relay load balancer (VIP)
Relay : 52.114.157.21   is reachable using Protocol HTTPS and Port 443
Relay : 52.115.157.84   is the actual relay instance (DIP)
Relay : 52.115.157.84   is reachable using Protocol UDP and Port 3478
Relay : 52.115.157.84   is the actual relay instance (DIP)
Relay : 52.115.157.84   is reachable using Protocol UDP and Port 3479
Relay : 52.115.157.84   is the actual relay instance (DIP)
Relay : 52.115.157.84   is reachable using Protocol UDP and Port 3480
Relay : 52.115.157.84   is the actual relay instance (DIP)
Relay : 52.115.157.84   is reachable using Protocol UDP and Port 3481

Relay connectivity and Qos (Media Priority) check is successful for all relays.
Service verifications completed successfully

Service connectivity result has been written to: C:\Users\panos\AppData\Local\Microsoft Teams Network Assessment Tool\202202072234040043_service_connectivity_check_results.txt

In the example above everythings looks good, and the results are also printed in the file “C:\Users\panos\AppData\Local\Microsoft Teams Network Assessment Tool\202202072234040043_service_connectivity_check_results.txt”

To perform a quality check of the connection you run the following:

C:\Program Files (x86)\Microsoft Teams Network Assessment Tool>.\NetworkAssessmentTool.exe /qualitycheck

Microsoft Teams - Network Assessment Tool


Initializing media flow.

***************
Starting new call

Media flow will start after allocating with relay VIP FQDN: worldaz.tr.teams.microsoft.com
If user wants to allocate with a particular relay VIP IP address, please specify in NetworkAssessment.exe.config.

Waiting for call to end after 300 seconds, displaying call quality metrics every ~5 seconds.
Change the 'MediaDuration' field in the NetworkAssessmentTool.exe.config file to change the media flow duration.

TIMESTAMP is in UTC. LOSS RATE is in percentage, out of 100.
LATENCY and JITTER are in milliseconds, and are calculated as averages in ~5-second windows.
PROTOCOL displays whether UDP, TCP (PseudoTLS/FullTLS), or HTTPS protocol was used to allocate with the relay server.
Note that for PROTOCOL, UDP protocol is attempted first to connect to the relay, by default.
LOCAL ADDRESS is the local client IP and port that media is flowing from.
REMOTE ADDRESS is the peer (relay server) destination IP and port that media is flowing to.
IS PROXIED PATH shows whether a proxy server is used to connect to the relay, only applies to TCP/HTTPS connections
LAST KNOWN REFLEXIVE IP shows what your latest public (NAT translated) IP and port is that the relay sees during media flow.

[If LOSS RATE is 100%, the output lines here will be in red]

Quality check source port range: 50000 - 50019

Call Quality Metrics:

2022-02-08 18:11:53            Loss Rate: 0          Latency: 68.52      Jitter: 13.5       Protocol: UDP
Local IP: 172.31.0.222:50016                         Remote IP: 52.115.170.204:3478
Is Proxied Path: False                               Last Known Reflexive IP: 99.35.16.139:50016

…

2022-02-08 18:16:44            Loss Rate: 0          Latency: 72.04      Jitter: 30.55      Protocol: UDP
Local IP: 172.31.0.222:50016                         Remote IP: 52.115.170.204:3478
Is Proxied Path: False                               Last Known Reflexive IP: 99.35.16.139:50016

2022-02-08 18:16:52            Loss Rate: 0          Latency: 69.31      Jitter: 26.28      Protocol: UDP
Local IP: 172.31.0.222:50016                         Remote IP: 52.115.170.204:3478
Is Proxied Path: False                               Last Known Reflexive IP: 99.35.16.139:50016

Call Quality Check Has Finished

Call Quality Check result has been written to: C:\Users\panos\AppData\Local\Microsoft Teams Network Assessment Tool\202202081011444452_quality_check_results.csv

As you can see, this runs tests every 5 seconds for 5 minutes, and with every result it displays the information on the dashboard. Finally, the results are printed in CSV format in the file “C:\Users\panos\AppData\Local\Microsoft Teams Network Assessment Tool\202202081011444452_quality_check_results.csv”

If you open the spreadsheet you will see the measurements for packet loss, round trip time, and jitter for each test:

You can check if the values are within the limits Microsoft considers acceptable listed here. In summary, here is what Microsoft publishes as acceptable values:

MetricTarget
Latency (one way)< 30ms
Latency (RTT)< 60ms
Burst packet loss<1% during any 200 ms interval
Packet loss<0.1% during any 15s interval
Packet inter-arrival Jitter<15ms during any 15s interval
Packet reorder<0.01% out-of-order packets

The last option, “/infraconnectivitytest” does a series of checks towards the Teams infrastructure.

C:\Program Files (x86)\Microsoft Teams Network Assessment Tool>.\NetworkAssessmentTool.exe /infraconnectivitytest
Microsoft Teams - Network Assessment Tool

2022-02-08 10:23:29.314 [#71c822d5-S] T#5772 [DEBUG2] [auf.log_config] Log console updated, adding log console
2022-02-08 10:23:29.314 [#40548b1b-S] T#5772 [DEBUG4] [auf.log_config] Not persisting log config, disabled

…


==== Summary ====

Successful connections to URLs
        CONFIGS         URL
        9/9             'https://go.trouter.teams.microsoft.com/'
        9/9             'https://ic3.events.data.microsoft.com/Collector/3.0/'
        9/9             'https://config.teams.microsoft.com/config/'
        9/9             'https://api.flightproxy.teams.microsoft.com/api/v1/health'

Successful connections using ECS configuration
        URLs            CONFIG
        4/4             '{}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":0, "GenericTcpConnect_Version":1, "IPv6_Killswitch_Enabled":0}}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":0, "GenericTcpConnect_Version":1, "IPv6_Killswitch_Enabled":1}}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":0, "GenericTcpConnect_Version":2, "Proxy_RespectSystemProxy":1, "IPv6_Killswitch_Enabled":0}}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":0, "GenericTcpConnect_Version":2, "Proxy_RespectSystemProxy":1, "IPv6_Killswitch_Enabled":1}}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":1, "GenericTcpConnect_Version":1, "IPv6_Killswitch_Enabled":0}}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":1, "GenericTcpConnect_Version":1, "IPv6_Killswitch_Enabled":1}}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":1, "GenericTcpConnect_Version":2, "Proxy_RespectSystemProxy":1, "IPv6_Killswitch_Enabled":0}}'
        4/4             '{"Regular":{"TLS_Force_Full_Handshake":1, "GenericTcpConnect_Version":2, "Proxy_RespectSystemProxy":1, "IPv6_Killswitch_Enabled":1}}'

And after printing a ton of debugging information it gives a summary of the results at the end. In the example above all tests passed.

Conclusion

Overall, Microsoft provides some very useful tools to assess a user’s network and connectivity to the Teams and Office 365 services from the user’s perspective. These tools though have to be executed by the user, and if you have hundreds or thousands of them it’s not easy to ask them to do this to assess if their network connectivity is up to par for their video conferencing needs.

At NetBeez we solve that exact problem: monitor availability and quality of service for applications like Teams, Zoom, and others. Agent installed on hundreds or thousands of user laptop measure continuously latency, jitter, MOS, and other metrics and aggregate results are presented to user administrators on a dashboard. For example, here is how latency to Teams looked like yesterday from a dozen different users working remotely at NetBeez:

Request a NetBeez demo