Sunday, May 6, 2007

Exchange/sipX Timeout Problems Resolved

Thanks to the efforts of Scott Lawrence and Mike Eklund from the sipX-users forum, I have updated my previous post with instructions on how to configure sipX to use SIP/TCP when communicating with the Exchange server. Mike has been working on this problem for a while, and with Scott's guidance, was able to determine the appropriate configuration modifications needed to resolve the issue. Thanks guys, a job well done and I'm sure that many others will appreciate your efforts.

Previously, sipX made 4 attempts to contact the Exchange server using SIP/UDP, before falling back to SIP/TCP. This caused a 5 second delay before a connection was made, and about 50% of the time, the call timed out before the Exchange server had a chance to answer it. To resolve this, we are now able to get sipX to use SIP/TCP for all communications with our Exchange UM server.

Unfortunately, we can't do this through the web interface at this stage, but I believe the sipX developers may be working on adding more direct support for Exchange UM in a future release. In the mean time, we must create some additional XML files, and modify the sipX configuration file. Full details are available in the updated post. If you have already followed the older instructions, then please delete the Exchange dial plan you configured before proceeding.

Please note that if you have the Unified Messaging role installed on a server that has the Mailbox role installed, there may be resource contention issues that result in timeouts and/or broken speech synthesis. Basically, the store.exe process is designed to agressively cache mailbox data into RAM. As the UM processes are infrequently used, they are paged out to disk to free up RAM for store.exe. When you try and call the Exchange server, Windows has to load these pages back into RAM, resulting in further timeout delays. The call usually times out, but will connect straight away if you call again shortly after.

I recommend installing the UM role on a dedicated server (or one that at least does not have the Mailbox role installed) in a production environment. In a lab environment, you can change the size of the store.exe cache to relieve these issues be following the instructions at http://support.microsoft.com/default.aspx?kbid=815372&product=exch2003 (instructions are for Exchange 2003, but are the same for 2007).

4 comments:

Dino Caputo said...

Thanks for the great post. Is there a way to register a SIP phone directly with the Exchange 2007 UM role or must you use a phone switch or products like SIPx/Asterisk to for SIP phone registration? Any comments on this are appeciated.

Ryan said...

Hi Dino,

Exchange is designed to work with an IP-PBX. It cannot perform the roles of an IP-PBX itself such as call routing. However, for testing purposes, Microsoft have a UM test softphone C:\Program Files\Microsoft\Exchange Server\Bin\ExchangeUMTestPhone.exe. You can use it to place calls to the services on the Exchange Server.

sip phone said...

It is really nice for me to see you and your great hardwork again.Every piece of your work look excellent.Looking forward to learing more from you!

Call Centers said...

Your work has always been a great source of inspiration for me. I refer you blog to many of my friends as well.