The VoIP Server is the piece of software that the client connects to it to make or to receive a call. Without a server, a lot of services would not be possible.
This chapter is divided into VoIP Server functionalities in general and an overview of the Yate Server components. Yate Server can control all the types of communication that could take part in a VoIP environment as we will see below.
VoIP Server functionalities
- First of all, a server takes care of routing. It finds the paths between two endpoints along with which pieces of information will pass from one to the other. There are different algorithms for determining that, varying from the shortest path to the most secure or the fastest. This is done automatically, so there is no need for human intervention.
- The VoIP server can also be used to make communication possible through a lot of types of protocols. Modules that implement different protocols can be added. But what happens if the caller knows a protocol and the other one doesn’t know it. It is just like two different people are trying to talk to each other, but they speak different languages. In this case, the role of the translator can be taken by the server. This function is called proxying.
- Finally, the server has to look after the network’s clients. It handles a list with every client that is allowed to use that network’s VoIP.
- Some of the functions that a server may implement are listed below:
- Anonymous Call Rejection – you can reject all the incoming calls that you cannot find out their number
- Blacklist – maintain a list of numbers that your phone will not accept
- Call Forwarding – redirect incoming phones to another telephone
- Call Return – redial the last called number automatically
- Call Waiting – make a beep when you have a second incoming call
- Caller ID – find out the number of the person that is calling
- Caller ID Blocking – make a phone without sending out your number
The Yate Server can be considered Yate's package main component. It is the telephony engine that controls all the types of communication that could take part in a VoIP environment.
They range from:
- routing information
- managing different protocols
- handling audio and video data
- registering users
- communicating with PSTN, a PC or a VoIP regular phone.
First, the important thing you have to know is that it is available for Linux and Windows, too. The executable that installs with the Yate Package in Windows is called Yate Console.
Here is a list of the software modules integrated in the Yate Server, which Yate loads at startup:
- h323chan - this module handles the H323 protocol through the OpenH323 library
- ysipchan - this module handles the SIP protocol through its YASS – Yet Another SIP Stack implementation
- yiaxchan - this module handles IAX and IAX2 routing
- osschan - this module is for sound card suport
- tonegen - this module supports the tones (dial, busy, congestion) for Yate
- wavefile - this module can play or record on a certain channel
- faxchan - this module can transmit and receive a fax, is based on spandsp
- yrtpchan - Yate native rtp channel (for Yate versions after 0.9)
Yate supports the use of Sangoma cards for interfacing with PSTN and also some of the cards made by Digium through the Zaptel Interface.
Yate functionalities as a server
Besides the software and hardware interfaces dedicated, the actual functionality in Yate as a server is provided by the next categories of modules:
- Routing modules used as it states to route the calls, this being done through more then one module, one example being the module based on regular expressions
- Registering modules, used for authentication and registration of the call parties
- Call data recording modules, used for gathering and managing information about the incoming and outgoing calls
- External Module which offers support for writing external scripts, used for building applications like an IVR for example based on the Yate server
More about all these Yate Server components can be found in the "Yate modules" chapter,to see what capabilities provides the Yate Server.
Let's take a close look on Yate console now started in Windows platforms. Below is a picture of how it looks right after it has been launched.
Observe that Yate console first prints on the screen the date it was started and then loads the modules that are registered to it. After that it is trying to initialize them, showing errors or warnings.
In this case, you can see that all the modules have been properly initialized. After that, the console waits for something to happen (someone to interact with it). Possible things may be interaction using rmanager or YateGUI.
The Console itself doesn't provide input possibility, maintaining the modular Yate philosophy, which provides its flexibility. The console represents only the VoIP engine. Tools for controlling it are run separately.