Where is my ICE ICE Baby? V6 is gone!
Posted on March 01, 2016 by Richard Brynteson in Skype for Business
Before we get into the changes in the Office 2016 and Skype for Business 16.x client a quick note of what ICE is. According to Microsoft’s SDP Extension document:
Interactive Connectivity Establishment (ICE): A methodology that was established by the Internet Engineering Task Force (IETF) to facilitate the traversal of network address translation (NAT) by media.
What does that really mean? It’s the method by which the clients share information to stand up media, in particular, through a NAT or firewall. It’s the basis for all audio/video traffic in SfB (and all the way back to OCS 2007).
If you want a great article on how SDP and ICE work, you should check out this article from the NextHop Team: How Communicator Uses SDP and ICE To Establish a Media Channel.
What Has Changed?
Starting in OCS 2007 R2, Microsoft started offering both ICE v6 and ICE v19 in the initial SDP. ICE v6 was considered the fallback protocol. If you looked at the SDP of your initial INVITE you would see something like this:
You can see the Content-Disposition includes a ms-proxy-2007fallback tag and the initial ICE candidate list is formatted in v6. The easiest way to know is by looking right after the a=candidate we see they are not numbered.
If you look at a SfB/Office 2016 initial invite it will look like this:
When looking at this invite, we see that there is no reference to the fallback option and the SDP itself starts with the v19 formatted candidate list. The easy way to know is the a=candidate is formatted as 1 1 and 1 2 (for the first pair) and you see IPv6 support, which wasn’t included in v6.
I’ve tested this across multiple workstations running Office 2016/SfB 16.x and they all show the same thing. I have reached out to Microsoft to confirm this was intended and not a bug but haven’t heard anything back yet.
Why Do We Care?
First, I don’t recall Microsoft ever telling anyone they were dropping ICE v6 support from the client. Obviously, it would be nice if they told the community of semi-major plumbing changes between clients.
Second, there are some interrop issues you might need to worry about. Obviously, the OCS 2007 client didn’t support ICE v19, so if you were calling a customer who is still on OCS 2007 your call will not connect.
Third, Exchange 2007 didn’t support ICE v19, so if your customer is still using an old 2007 Exchange UM Server you won’t be able to leave a voicemail for that user. This is how I initial learned of the problem. We were troubleshooting an issue where we could not leave a VM for a customer after they patched their Lync 2010/Exchange 2007 environment.
In the end, this is primarily random trivia for you to remember, but if you see a problem connecting to some really old clients/exchange servers you might know why now.