I found that running routing and remote access on a Windows server with VMWare virtual machines causes the virtual machines to receive duplicate (in some cases multiple duplicates) response packets which drastically lowers the network adapters through put.
Recently I have setup a new IP PBX for my office lines and desk phones. We also decided to give the new unified messaging service in Microsoft Exchange a spin which offers a wide range of handy features for remote workers / field workers (http://www.microsoft.com/exchange/2007/evaluation/unifiedmessaging/).
To get Exchange UM talking with our IP PBX (Asterisk / Trixbox) we have opted to install SipX server which provides a bridge between the Asterisk PBX (which uses SIP over TCP) and Exchange UM (which uses SIP over UDP). A good tutorial to accomplish this setup (Asterisk + SipX + Exchange UM) is available at:
In this example the author uses VMWare virtual machines to run the SipX and Asterisk servers on Windows Vista / XP / Server, we opted for this setup for ease of portability in the future.
After configuring and testing the Asterisk server we found the voice quality dialling inbound (from a normal landline) and outbound (to a normal landline) was extremely poor and broken, internal calls were fine. After a few minutes of investigation I found the problem was that the two virtual machines running Asterisk and SipX were receiving duplicate ping responses when pinging a host outside of our LAN. As they were receiving duplicate ping response packets I also confirmed (using Wireshark) that they were receiving duplicate responses for SIP packets which they were. It worked out that for every one response the machines should be receiving they were actually receiving five, this obviously results in a hell of a lot more work for the NICs to deal with and is the most likely culprit for our bad line quality!
After searching Google for reasons that VMWare virtual machines should be receiving more than one response I found that switching the machines form a bridged connection to NAT or local host cured the problem, not much use for VOIP servers that need independent IP addresses though!
One of the suggestions I found put the problem down to the switch replicating packets another common cause was binding the bridged interface to a WLAN connection (which we didn’t do, our virtual machines were bridged to an Ethernet LAN connection). After trying a five or so suggestions I still had no improvement, time for some more detective work.
I fired Wireshark backup and found that the source for the repeated packets was the host server that the VMWare machines were running on. After a little more detective work I found the application source on the host server, the routing and remote access service within Windows Server 2008 was repeating the packets to the virtual machines. Disabling the service fixed the problem, not good if you need the service but at least we found the cause.
More coming soon on exactly which component / configuration of Routing & Remote access was causing this.