Wednesday, July 29, 2009

Improving call quality with Dialogic gateways

I've implemented my fair share of Microsoft OCS Enterprise Voice projects and each one has it's own nuances around voice quality. I've gathered a list of the common issues encountered with Dialogic gateways and their fixes which have worked well for me.


Tanjay phone doesn’t produce “comfort noise”

Description: When a user from a “Tanjay” phone calls a PSTN user across a voice gateway such as a Dialogic, the PSTN user doesn’t hear the white noise (comfort noise) typically present on traditional phone conversations. The PSTN user assumes the line has been disconnected and often will say “hello, are you still there?”.

Resolution (Dialogic): Typically you don’t want to enable VAD (Voice Activity Detection) on the gateway however this feature fixes this issue. From the voice gateway click on VOIP then Media and set the VAD to “on”.


Audio levels rise and fall through conversation

Description: When an OCS user calls a PSTN user through a voice gateway, the audio levels rise and fall as though something is adjusting volume. Also at the beginning of a phone call the audio is lower than normal.

Resolution (Dialogic): Set the Automatic Gain Control (AGC) for both IP to TDM and TDM to IP calls to “off”. The reason for this change is that in R2 they included AGC as part of the base application. Levels are automatically adjusted at the client device (and server).


The ringback tone continues to play after the caller picks up

This issue is caused by the gateway not accepting “early media”. With the release of OCS R2, “early media” is a feature which permits OCS devices to complete the call setup quicker. The Dialogic gateway must be set to “Always” for this to function properly.


I hope this helps some of you out there.


Wednesday, July 15, 2009

Undocumented ports for load balancing OCS 2007 R2?

Well it might not be "undocumented" exactly if you're reading the right documentation. Download the .chm file from Microsoft ( and you'll be okay whereas some of the online documentation I've seen seems to leave out a few critical ports. For those of you load balancing OCS 2007 R2 Enterprise Edition pools, here is the difinitive port list:
  • 5060 (Client to server SIP communication over TCP. Not required typically.)
  • 5061 (Client to Front End Server SIP communication over TLS)
  • 5065 (Used for incoming SIP listening requests for application sharing over TCP)
  • 5069 (Used by QoE Agent on Front End Servers, needs to be open only if this pool sends QoE data to Monitoring Server)
  • 5071 (SIP requests to Response Group service)
  • 5072 (SIP requests to Conferencing Attendant)
  • 5073 (SIP requests to Conferencing Attendant Announcement Server)
  • 5074 (SIP requests for Outside Voice Control)
  • 135 (To move users and perform other pool level Windows Management Instrumentation (WMI) operations over DCOM)
  • 444 (Communication between the internal components that manage conferencing and the conferencing servers)
  • 443 (HTTPS traffic to the pool URLs)
  • 80 (Used by Tanjay update process. This port is undocumented but required.)

Also the following attributes/settings must be in place:

  • The load balancer must provide TCP-level affinity. This means that the load balancer must ensure that TCP connections can be established with one Office Communications Server 2007 R2 in the pool and all traffic on that connection destined for that same Office Communications Server 2007 R2.
  • The load balancer must provide a configurable TCP idle-timeout interval with a maximum value greater than or equal to the minimum of the REGISTER refresh or SIP Keep-Alive interval of 30 minutes.
  • The load balancer should support a rich set of metrics (round robin, least connections, weighted, and so forth). A weighted least connections-based load balancing mechanism is recommended for the load balancer. This means that the load balancer will rank all Office Communications Servers 2007 R2 based on the weight assigned to them and the number of outstanding connections. This rank will then be used to pick the Office Communications Server 2007 R2 to be used for the next connection request.
  • The load balancer must be able to detect Office Communications Server 2007 R2 availability by establishing TCP connections to either port 5060 or 5061, depending on which is active (often called a heartbeat or monitor). The polling interval must be a configurable value with a minimum value of at least five seconds. The load balancer must not select an Office Communications Server 2007 R2 that shuts down until a successful TCP connection (heartbeat) can be established again.
  • Every Office Communications Server 2007 R2 must have exactly one network adapter. Multihoming an Office Communications Server 2007 R2 is not supported.
  • The network adapter must have exactly one static IP address. This IP address will be used for the incoming load-balanced traffic.
  • The computer must have a registered FQDN. The IP address registered for this FQDN must be publicly accessible from within the enterprise.


Don't collocate CWA with OCS...but if you want to, read on....

So I've come across this several times before.....the client is starting to frown when you say that CWA needs to be installed on a separate server and the 'village of servers' begins to grow. The following steps will illustrate how to install CWA on the same server as OCS. There are a few key steps necessary so be sure to read in detail:

Before I get into the specifics, CWA is not officially supported in a collocated configuration. Now onto the meat.....the 2 primary things you need to watch out for is the multitude of IP's you need on the server and how DNS will react to this. Ultimately you're binding as many as 3 IP's to the same NIC which will accept connections to the OS for port 443 among other things. To avoide collision you need to separate OCS from CWA logically as follows:

  • Install OCS as you normally would (Enterprise or Standard; it doesn't matter).
  • If you're setting up CWA for both Internal and External clients you will need 2 additional IP addresses. Add these IP's to the same NIC used for OCS. Oh and if you're using NIC teaming, you may as well undo the team and go back to one card as this isn't a supported configuration (Audio/Video issues will be seen with teamed NIC's).While you're in the TCP/IP properties of your NIC, be sure to uncheck the DNS registration option.
  • If you added the IP's before disabling automatic DNS registration you may need to go back into your DNS server and remove all the A records corresponding to your server. If not, simply remove the single A record for your server. Then, manually add the A record back in to ensure it isn't 'expired' from the DNS server.

Now you're ready to modify OCS:

  • Open the OCS Admin tool.
  • Expand the pool (or server node if you're using Standard Edition) and right-click the node and choose Properties, then Front End Properties.
  • On the General tab, double-click the Addresses section and change the address to reflect the same one you entered in DNS for the server name (pool IP).
  • Next, click the IM Conferencing tab and change the IP address drop-down to the pool IP.
  • Next, click the Telephony Conferencing tab and do the same then click OK to close the window.
  • Right-click the server name again in the OCS Admin tool, navigate to Properties, then Web Conferencing Server properties.
  • Change the IP address to reflect your pool IP then click OK to close the window.
  • Right-click the server again and choose Properties, then A/V Conferencing properties.
  • Change the IP address to reflect your pool IP then click OK to close the window.
  • Right-click the server again and choose Properties, then Application Sharing properties.
  • Change the IP as you've done above.
  • Finally, open IIS and set the port 80 and 443 listeners for the Default Web Site to the pool IP.
  • Reboot your OCS server and make sure all services start properly.

You're now done with the OCS portion and need to begin on the CWA preparation and installation.

  • Create your DNS entries for CWA. If you have a split horizon DNS you'll want to create an internal A record entry (i.e. pointing to the second IP of the OCS server. Then you'll want to create another A record entry (i.e. pointing to the public IP being NAT'd to the third IP of the OCS server. What you end up with is something like: = = NAT'd to =

That should be it. Now you have IIS bound to specific IP addresses hosting different web sites (Web Components for OCS, CWA for Internal, and CWA for External).


Friday, July 3, 2009

Passed OCS voice exam!

I finally passed this one. I wrote the beta exam some time last year and failed it by 1 or 2 questions. The beta exam was based on R1 features and had quite a few spelling mistakes and poorly worded questions. I was surprised to notice this exam I just wrote had the same content (R1 and not R2) along with the same mistakes.

Anyway, for those of you wishing to write this exam, brush up on your OCS R1 technologies including the old method of updating Tanjay phones through SharePoint....