Technical walkthrough of Conaito VoIP EVO conferencing
The Conaito VoIP EVO client is a network enabled application which requires a Conaito VoIP EVO server to connect to in order to interact with other users. The Conaito VoIP EVO server's tasks are very simple in the sense that all it does is keep track of where users are located and forward the voice-data it receives from a user to other users in the same conference.
VoIP EVO Client/Server interaction
A VoIP EVO client connects to a server by first opening a TCP connection (typically to port 10300) and afterwards sends a UDP "hello" packet (typically to port 10301) to the server. The TCP connection is used for handling all "administrative" commands like joining and leaving channels whereas the UDP connection is only used for handling voice-data. All administrative commands sent on the TCP connection are human readable and it's fairly simple to interact with a Conaito VoIP EVO server using e.g. Telnet in a Linux-shell or Windows command-prompt. The VoIP EVO SDK contains a list of all the administrative commands which can be issued to the server.
Voice-data recorded by a Conaito VoIP EVO client is transmitted to users in the same conference by sending the voice-data to the Conaito VoIP EVO server which then forwards the voice-data to the other users. By having the server forward the voice-data takes the load of the clients so each client doesn't have to send its voice-data packet to every other user in the same conference. Since voice-data is simply forwarded by the VoIP EVO server, a client can receive voice-data from multiple users at the same time. This increases the load on the client's download bandwidth but since a conference typically only have one speaker it's not a big issue and today's ADSL and cable internet users typically have higher download than upload speed. Given this information it's possible to calculate the bandwidth required for the server to host, say a 12 user conference. If one user is talking and uses a 2 KBytes/sec voice quality the server must transmit (12 - 1) * 2 KBytes/sec = 22 KBytes/sec. If three users are talking it's 3 * 22 KBytes/sec = 66 KBytes/sec in bandwidth usage on the server. For each "non-talking" client participating in this conference where three people are talking they must have a downstream of at least 3 * 2 KBytes/sec = 6 KBytes/sec.
Integrating the Conaito VoIP EVO client
The Conaito VoIP EVO client is available as a Win32 DLL with a C-interface, a Win32 COM control and a Win32 OCX. All client implementations provide pretty much the same interface only with minor differences in the naming of functions. Visual Basic and .NET users will probably be most comfortable with the COM control whereas C++ developers are most likely to prefer the C-interface DLL. The DLL, however, requires thorough knowledge of HWND and Win32 message passing (PostMessage, SendMessage and GetMessage).
The licensed Conaito VoIP EVO SDK is available in both an encrypted (Enterprise Secure Edition) and an unencrypted (Enterprise Edition) version. For most applications the unencrypted (Enterprise Edition) version provides enough security in the way that a server and the channels on a server can be password-protected so unauthorized users are denied access. If, however, it is also important that the data being transmitted between clients and the server then it is necessary to use the encrypted (Enterprise Secure Edition) version of the SDK which uses SSL encryption for TCP data transmission and Blowfish encryption for UDP data transmission. The API exposed by the VoIP clients in both the encrypted (Enterprise Secure Edition) and unencrypted (Enterprise Edition) SDK are exactly the same.