As per my promise in my prior blog :-) Here are the details on a Web Conferencing Escalation/Debug we did recently. Thank you also to Jigar Dani (our latest addition to the team) who helped with troubleshooting.
Symptom:
=========
External Live Meeting client cannot join meeting. However Communicator can sign in remotely.
You could even use the OCS Event Log to find this information: Log Name: Office Communications Server Source: OCS Data MCU Date: 8/9/2010 6:50:42 PM Event ID: 41061 Task Category: (1018) Level: Error Keywords: Classic User: N/A Computer: <Your Front End Server> Description: Failed to connect external users because the list of proxies is empty. Failure occurrences: 1, since 8/9/2010 6:49:42 PM.
You could even use the OCS Event Log to find this information:
Log Name: Office Communications Server
Source: OCS Data MCU
Date: 8/9/2010 6:50:42 PM
Event ID: 41061
Task Category: (1018)
Level: Error
Keywords: Classic
User: N/A
Computer: <Your Front End Server>
Description:
Failed to connect external users because the list of proxies is empty.
Failure occurrences: 1, since 8/9/2010 6:49:42 PM.
Cause:
======
Plan of Action:
1) Get the LiveMeeting uccp api logs
2) Get the Live Meeting Pwconsole logs
In the UCCP log, observe that the Live Meeting Client can join the Focus without any issues, which means:
For e.g.: The SIP Transaction for INVITE sip:ContosoA@contoso.com;gruu;opaque=app:conf:focus:id:1ada91750b3b457fa0ca51612e3efa22 SIP/2.0
completes successfully with 200 OK and ACK.
After this transaction you will see:
Subscription for the “Event: conference” which also completes successfully.
SIP INFO request for “Content-Type: application/cccp+xml” (Content-Type: application/cccp+xml, response to "addUser" request ), complete successfully with 202 Accepted.
Following this a SIP INFO is received (“Content-Type: application/cccp+xml” (Content-Type: application/cccp+xml, response to "addUser" response) which contains information about the WebConferencing Server. This step is where we generally see issues (symtoms/causes):
In the SIP INFO look for these specific key-value pairs:
<key>serverURL</key>
<value></value>
</entry>
<key>numberOfProxies</key>
<value>0</value>
Did a quick MSDN search for “numberOfProxies”. Found the following link:
http://msdn.microsoft.com/en-us/library/dd908054(office.12).aspx. It says:
numberOfProxies: An xs:string value containing a decimal string indicating how many proxy servers are being communicated from the Web Conferencing MCU to the client. This value is used by the client to look for specific keys of the form proxy[N].FQDN and proxy[N].Port. The Web Conferencing MCU MUST send this key to the client if it also sent the pwrpc.modes key with a value of "fwdtls".
So at this point it looked like having Server Side OCSLogger.exe logs for SipStack, MCUInfra, MCU and DataMCU (as per the diagram here: http://msdn.microsoft.com/en-us/library/dd923510(v=office.12).aspx)
will help find the reason, which was not the correct decision, since we have tools to identify the problem, without taking these logs.
Goto the OCS admin tool, Right Click the FE Server and you will find the option to “Validate WebConferencing Server”.
BTW if you did go into digging the SIpStack, MCUInfra, Focus, DataMCU logs you will find the following traces to prove the point, when you search for your edge server fqdn or the
30638 TL_INFO(TF_COMPONENT) [0]12F0.106C::08/09/2010-23:07:59.509.00007227 (DataMCU,FocusAdapter.ConstructLmf:focusadapter.cs(126))( 00000000026E410A )Construct lmf - add proxy data
30639 TL_INFO(TF_COMPONENT) [0]12F0.106C::08/09/2010-23:07:59.509.00007228 (DataMCU,FocusAdapter.ConstructLmf:focusadapter.cs(130))( 00000000026E410A ) proxyHeader=’….'
30640 TL_INFO(TF_COMPONENT) [0]12F0.106C::08/09/2010-23:07:59.509.00007229 (DataMCU,FocusAdapter.ConstructLmf:focusadapter.cs(149))( 00000000026E410A ) fqdn==<your web conferencing edge server> is not running
30641 TL_INFO(TF_COMPONENT) [0]12F0.106C::08/09/2010-23:07:59.509.0000722a (DataMCU,FocusAdapter.ConstructLmf:focusadapter.cs(181))( 00000000026E410A )Construct lmf - Exit
The OCS DataMCU (Web Conferencing Server) detects that it cannot communicate with the Internal Edge of the WebConferencing Edge Server on the generally default 8057 port and hence OCS DataMCU (Web Conferencing Server) sets the numberOfProxies=0.
The Live Meeting Client sees numberOfProxies = 0 in the SIP INFO and it does not have an Internet facing Server to connect to for PSOM (Web Conferencing) communication and hence it fails to join the meeting.
Solution:
========
Look at any errors on the Validation wizard and resolve them. In our particular scenario: Basically the Communication from the OCS DataMCU or Front-Server to WebConferencing Edge Server was being blocked for the port that the WebConferencing Edge Server (Internal Edge) is listening on, typically this is 8057 by default. The case was more complicated because the Live Meeting join only failed when the particular DataMCU was used so the situation seemed like a random failure. Once the communication from the OCS DataMCU or Front-Server to WebConferencing Edge Server was working fine and Validation of Web COnferencing showed no errors, the Live Meetin client UCC API log shows the correct numberofProxies and also provides the proxy[N].FQDN and proxy[N].Port key value pairs in the SIP INFO (Content-Type: application/cccp+xml, response to "addUser" request in prior SIP INFO) received at the Live Meeting Client.
For e.g.
<entry> <key>proxy[0].FQDN</key> <value>testedge.contoso.com</value> </entry> <entry> <key>proxy[0].Port</key> <value>446</value> </entry>
<entry>
<key>proxy[0].FQDN</key>
<value>testedge.contoso.com</value>
<key>proxy[0].Port</key>
<value>446</value>