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. NetBeez has a solution to monitor MS Teams, thanks to a target template that allows you to easily track key performance metrics.
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”. 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.
Running the MS Teams Network Assessment Tools
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 everything 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”
Connection Quality Check
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:
Metric | Target |
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 |
Infrastructure Connectivity Test
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.
NetBeez Teams Monitoring
At NetBeez we solve that exact problem: monitor availability and quality of service for applications like Teams, Zoom, and others. Agent installed on end-user laptops as well as cloud instances measure continuously latency, jitter, MOS, and other metrics, aggregating results that are presented to administrators on a dashboard. The following screenshot displays the change in latency to MS Teams over a period of time from a dozen remote end-users.
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. Organizations that need to automate this type of monitoring and troubleshooting, can rely on NetBeez digital experience monitoring to be proactive, and efficient in dealing with Teams issues. Request a demo to learn more about NetBeez!