Tuesday 12 December 2017

Hands on with the updated Skype for Business Online & Teams Network Assessment Tool

Hello Readers,

Hope you're keeping warm (or cool depending on where you're reading this) this holiday season.

Microsoft released an update to their free Network Assessment tool for Skype for Business Online a couple of days ago.  

The updated tool is available for download here.

I wrote a hands on review of the tool which was released during the Ignite Conference in 2016.


The original tool was downloaded as a zip file (network-assessment-lib-6.0.8970.161.zipwhich you unpacked to a directory of your choosing.  The new tool downloads as MicrosoftSkypeForBusinessNetworkAssessmentTool.exe.  Running the new executable "installs" the tool to an unchangeable directory of 'C:\Program Files\Microsoft Skype for Business Network Assessment Tool', unpacking the contents in much the same way as the previous ZIP file.  

The Download site says that the tool supports Windows 7 or later and that the PC must meet the requirements for Skype for Business Online systems described here.  For server installs you need to enable the desktop experience.  It also says that you can only run a single instance of the tool at a time and that it isn't intended for load or stress testing.

If you compare the directories side-by-side you're notice that the new library has more in it.

As you can see there are more differences than similarities between the old and new tools.  The updated tool utilises the client SDK and Bot framework to connect to the Skype for Business Online and Teams Edge and place a series of actual 17 second calls, then tell you if the call was any good, based on the results.  

The tool was originally developed to check network performance on the network where it was run in order to determine if it meets the targets for media quality and network performance for using Skype for Business Online.

These are the targets for the Skype for Business client to the Edge

The tool reports on Packet Loss, Jitter, Round-Trip Latency and Reordered packet percentage to the nearest Microsoft Network Edge.

Usage

To run the tool you need an elevated command prompt or PowerShell window.  I used PowerShell for mine.

First, browse to the tool location
cd 'C:\Program Files\Microsoft Skype for Business Network Assessment Tool'
_________________________________________________________________________________
Pro tip: You can create a variable to browse to the file location.  This will save you having to type the above each time.  You just assign the full file path to a variable of your choosing.  I used $nat for Network Assessment Tool.

You can save time by creating a shortcut to open PowerShell directly to the folder.  Simply create a shortcut wherever you like with the following text in the Target.


C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -command cd "'C:\Program Files\Microsoft Skype for Business Network Assessment Tool'"

Better still, you can save even more time by creating a shortcut to run a single test and then leave PowerShell open to do more.  Simply create a shortcut wherever you like with the following text in the Target.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -command cd "'C:\Program Files\Microsoft Skype for Business Network Assessment Tool';.'.\NetworkAssessmentTool.exe'"
________________________________________________________________

Before I run something for the first time I like to see if there is some basic help on syntax.  I ran .\NetworkAssessmentTool.exe ?



The usage is NetworkAssessmentTool.exe [options] [arguments].  Running the tool with no options or arguments will perform the network quality check.  
.\NetworkAssessmentTool.exe
The first time I ran it I got a popup from Windows Firewall asking if I wanted to allow the connection.

These were the initial results for a single call

As you can see, it writes a results file to "%LocalAppData%\Microsoft Skype for Business Network Assessment Tool".  

One thing to note is that each time you run the tool the results of previous tests are replaced.  Or more accurately, the file is replaced with a new results file.

To analyse the results you need to run the ResultsAnalyzer.exe tool and input the file.
.\ResultsAnalyzer.exe "C:\Users\randy.chapman\AppData\Local\Microsoft Skype for Business Network Assessment Tool\performance_results.tsv"

The first time I ran it, I got an error that said that there was no data in the input file.

So I opened the TSV file and verified that it did indeed have data in it.  Hmmm!  I read the usage doc which has a troubleshooting section.  No specifics about that error unfortunately, so I decided to change the config file to give more results.

This is just as good a place as any to mention that there is a config file and there are a few parameters that can be changed in order to produce a different result.  The config file is called NetworkAssessmentTool.exe.config and it is saved in the same directory as the tool itself.  To modify it, you'll need to run notepad or or your favourite txt file editor with elevated privileges.

The usage doc has a table that lists all of the configurable parameters as well as an indication of what will fail if it is missing or misconfigured.

To save you time, I'll just say don't change anything but the following (with the exception of the Delimiter value, which must be a <TAB>).

The NumIterations is where you configure the number of times it will perform the test.  I changed this to 3 and left everything else as is.  Then I re-ran the ResultsAnalyzer tool and it found some data.

Bizarrely, the tool read 3 rows, skipped 2 and processed 1 and claiming that some rows were skipped as too few packets were received to make a meaningful measure of the network.  Again, hmmmm!

I can see that it did place the calls and that packets were sent and (all of them were) received.  Clearly, not enough for the tool to care.

The good news is that I PASSED.  Which basically indicates that Packet Loss, Jitter, Round-Trip Latency and Reordered packet percentage are within acceptable limits.

The bad news is that I had to change the config file to produce more than 1 row for the tool to pick up the data and analyse it.

You can also change the IntervalInSeconds.  This is the time to wait between tests.  The default is 5 seconds.  

I changed it to 10 seconds while also changing the NumIterations to 2 and reran it.  It did indeed run the assessment twice and it slept for 10 seconds between tests.  This time, the packets sent and received were at the 850 mark for both tests and the ResultsAnalyzer picked up both calls.

Now that I know that a call in the tool should send 850 packets, I now know that the problem reading the file was down to the tool itself not sending all of the packets during isolated tests.  In my case, it was the 1st and 3rd test.

I changed NumIterations back to 1 and re-ran the test and the call had 850 packets and the analyser was happy with the results.

I wrote this post over a span of a couple of days.  Interestingly, the first time I ran it I had another instance with only 283 packets sent and received.

So it seems that the tool is not perfect.  Hopefully Microsoft can fix these intermittent issues in the next release.  This issue is resolved in version 1.1.  See below.

The other two things you can change from that list are the location and name of the results files.  The usage doc says that if the file path is not an absolute file path, the tool will write to "%appdata%\..\local\Microsoft Skype for Business Network Assessment Tool".  

You can change the location by pasting in a file path inside the quotes.  The ResultsFilePath is the Network Quality test result file.  The OutputFilePath is the Connectivity test result file.


New Test Available

This brings me nicely onto the next part of this post.  That is to tell you that Microsoft added a new test to the tool, the Network Connectivity Test.  

The Network Connectivity Test verifies that your computer can reach a list of relay IP Addresses on the ports required for real time media traversal.  Effectively a port scanner.

To run the test, enter
.\NetworkAssessmentTool.exe /connectivitycheck
The result is thrilling.

To view the results you can simply open the txt based results file "%appdata%\..\local\Microsoft Skype for Business Network Assessment Tool\connectivity_results.txt"...

...or you can open it in the PowerShell session...
more "C:\Users\randy.chapman\AppData\local\Microsoft Skype for Business Network Assessment Tool\connectivity_results.txt"

...or, better yet, you can simply run the command with the verbose switch to show the tests and results at the same time.
.\NetworkAssessmentTool.exe /connectivitycheck \verbose

My PC tried about 56 relay IP addresses for connectivity to TCP port 443 and UDP ports 3478-3481.

As it happens, I even have the results from a test that failed.


Verdict

This is a nice evolution of a tool that can be used to perform basic tests around your network to make sure you can successfully use Skype for Business Online and Teams for calling.

If you do nothing else to test that your network is okay for Skype Online and Teams, do this.


Update

There is a new version of the tool available for download here.  Version 1.1.

Update: Make sure you uninstall the previous version before installing the new version.  The new version replaces some of the files, but not all in the directory.  If you just upgrade, the 283 packets bug is still present.  Starting from fresh eliminates the bug.  Thanks to Trevor Miller for a comment in a TechCommunity post for pointing this out.  And to Alex Grinman for letting me know.


I didn't look previously, but it also appears in Program Files.

There is no indication of any additional features and no release notes that I can find.  Initially I had simply "upgraded" and the 283 packets bug was still present in every other test.  Since uninstalling and reinstalling, the bug seems to be gone.  I can't say for sure, but I ran the test 12 times in a row and didn't have a repeat of the bug.


More Info

A really cool thing about tools that you run from PowerShell is that they can be used as part of even cooler tools.  One such tool is the Network Assessor for Skype for Business Online and Microsoft Teams.  This application was written by MVP James Cussen aka MySkypeLab on Twitter.  James has a huge list of handy tools and applications that should be in every Lync and Skype pro's arsenal.

This application makes use of the Network Assessment Tool executable and improves upon it by allowing you to run at a set interval over time and then graph the results.

When you first run the application you'll be asked to browse to the location of the NetworkAssessmentTool executable.  If, like me, you installed this tool early on and had it set to the unzipped directory, you will be prompted to re-point to the new Program Files location.  Alternatively, you can browse directly to the location in Settings.

__________________________________________________________________________

I hope you found this useful.  Thank you for reading.

If this or any other post has been useful to you please take a moment to share.  Comments are welcome.