To take a look at this issue, we created the following test scenario. We setup an Enterprise Consolidated Configuration with two Front-end servers in the Pool with an F5 load balancer that also had two Standard Edition Servers in a Director Array with an F5 load balancer.  We were testing a three way conference in Communicator 2007 which switches the conversation over from peer to peer to the IMMCU.  In this scenario the client sees in his IM window ‘Joining Meeting’ and then he gets an error ‘Join Meeting failed’.

To troubleshoot the issue I used OCSLogger Debug Tool to gather the IMMCU, MCUFactory, MCUInfra and SIPStack logs.  The IMMCU and MCUFactory logs were empty which tells me we were not able to setup a session with the IMMCU.  I checked the Event log on the Server and I got the following Event ID.

Event Type:    Error
Event Source:    OCS MCU Infrastructure
Event Category:    (1022)
Event ID:    61013
Date:        1/2/2008
Time:        4:05:07 PM
User:        N/A
Computer:    OC01
Description:
The process IMMcuSvc(7356) failed to send health notifications to the MCU factory at https://POOL01.domain.com:444/LiveServer/MCUFactory/.
Failure occurrences: 13, since 1/2/2008 4:01:52 PM.

Note: The most common cause of this error is having a Certificate that supports both Client and Server Authentication and the Trusted Root Properties are set to allow only Server authentication.  In that case the resolution is to add Client Authentication as an allowed purpose.  Below is an example of a Root Certificate Authority with only Server Authentication allowed.

In the MCUInfra Log I got the following Errors:

TL_ERROR(TF_COMPONENT) [0]0910.13CC::01/02/2008-22:36:39.374.000000f7 (MCUInfra,ExceptionTracer.WriteLine:1243.idx(26))An exception 'System.Net.WebException' was thrown while processing '64323994' at '   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult)
   at Microsoft.Rtc.Server.McuInfrastructure.HttpTransport.GetStreamCallback(IAsyncResult asyncResult)'. Message 'The underlying connection was closed: An unexpected error occurred on a send. [INNER MESSAGE START] Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. [INNER MESSAGE END] [INNER STACK START]    at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)
   at System.Net.PooledStream.EndWrite(IAsyncResult asyncResult)
   at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar) [INNER STACK END] [INNER MESSAGE START] An existing connection was forcibly closed by the remote host [INNER MESSAGE END] [INNER STACK START]    at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) [INNER STACK END]'
TL_ERROR(TF_COMPONENT) [0]0910.13CC::01/02/2008-22:36:39.374.000000f8 (MCUInfra,CccpMessage.set_IMessage.Status:500.idx(464))( 02A5A1D9 )Message Health@1/2/2008 10:36:30 PM not successfully sent.

The MCUInfra log is what caused me to take a trace of the problem while it was happening.  I setup the Microsoft Network Monitor on the client and both Frontend servers.  Below is a screen shot of the connection being reset in Network Monitor.

In the trace you can see it tried to setup a session on port 444 to the Pool which IP address is the VIP 10.137.2.11.  We get a reply back from the other Frontend server IP address and the VIP so we reset (Flag=R) the connection.  This behavior caused us to look at the Load Balancer and we find that the Load Balancer was not configured for SNAT.  We change the configuration on the Load Balancer to do SNAT and now we no longer get the error and we can do a successful three way conversation.

- Louis Hardy
Support Escalation Engineer

Published Tuesday, January 08, 2008 11:51 AM by octeam
Filed Under: IM/Presence, Conferencing