# Voice over IP/VoIP Gateways and PABX Integration
## Voice over IP Technology
### VoIP Gateway Systems

This chapter deals with the complex world of VoIP gateway systems. These systems are responsible for providing some amount of call control and routing from VoIP phone devices.
Each of these systems is responsible for receiving calls from a VoIP handset, ATA or softphone device via a supported VoIP protocol, consulting a dial-plan or other call routing table, and correctly routing the call. Other features made available by some or all of these gateways include:
Authentication - Ensuring that clients have permission to use VoIP resources.
Call Accounting - Providing tracking of calls via the gateway, including reports and cost controls.
Complex Dialplans - Most dialplans configured on simple devices such as ATAs and softphones only allow for a very straightforward dialplan configuration. Using a VoIP gateway such as Asterisk, factors such as time of day, or even values obtained from external sources can be used to determine which path a call should take.
Hardware Integration - Most gateways provide the ability to interface with physical hardware such as FXS (internal line) and FXO (PSTN line) cards to create a PBX system. They additionally provide the dialplan configuration to determine which calls should route via IP, and which should utilize a card. It is important when selecting gateway software to evaluate which devices they support, and ensure yours is listed. Some devices (for example, Cisco line cards) may require the vendor's specific implementation of VoIP gateway for any support at all.
Internal Numbering - Some gateways offer the ability to provide internal extension numbering for clients, allowing one VoIP device to dial another device registered on your local gateway using a short internal extension number.

#### When would you use a VoIP gateway?

In which situations would you use a VoIP gateway product?
Generally, if you require an advanced configuration such as advanced call accounting for billing, cost controls, complex dialplans, or the ability to call between extensions, you should implement a gateway solution.
If you are interested in integrating extra hardware such as FXO cards (interfaces to the PSTN) you MUST use a gateway product.
If you are designing VoIP solutions for mid-large size business, or will be requiring IVR (Interactive Voice Response) functionality, you should implement a VoIP gateway.
* Open-Source Gateways
* Asterisk
* Bayonne
* OpenSER
* SIP Express Router
* Yate
* YXA

#### Asterisk: The open-source PBX

Asterisk is an extremely popular open-source PBX system which runs on BSD, Linux, Mac OS X, and Windows. The project is sponsored by Digium, a PBX hardware manufacturer.
Asterisk has support for ENUM, e911, Caller ID, all call controls such as Forwarding, Conferencing, Hold, Transfer and Call Waiting. Additional features such as Call Monitoring, Call Recording and Privacy Controls also exist.
In addition to the above, Asterisk is able to provide IVR functions, allowing interactive voice prompts, call queuing, and many many advanced call routing features.
In all, Asterisk is a remarkably full featured commercial-grade PBX system available free of charge.

#### OpenSER

Web page: http://openser.org
OpenSER is a robust and powerful SIP server. Released under GPL, OpenSER is the first free server with integrated TLS, offering secure VoIP communications. It has an architecture designed for scalability and flexibility and high performances.
Main characteristics:
* SIP proxy/registrar/redirect server (RFC3261)
* transaction stateful
* UDP/TCP/TLS support
* modular architecture
* scripting configuration file with pseudo-variables
* authentication, authorization and accounting via database, radius or text files
* enum support
* NAT traversal system
* formatted logging
* least cost routing
* Call Processing Language (CPL)
* MySQL/Postgres/Flat files database backend
* sever monitoring

#### SIP Express Router

Web page: http://www.iptel.org/ser
SIP Express Router (SERi) is a high-performance, configurable, free SIP server licensed under the open-source GNU license . It can act as SIP (RFC 3261) registrar, proxy or redirect server. SER can be configured to serve specialized purposes such as load balancing or SIP front-end to application servers, SEMS for example.
SER features:
* complete support of RFC 3261 functionality,
* a variety of database backends (mysql, oracle, postgres, radius, text-db),
* management features (remote management via XML-RPC, load-balancing),
* NATi traversal, telephony features (LCR, speeddial),
* multidomain hosting, ENUM, presence, and even more.
SER is additionally enhanced by a variety of additional SIP tools, which provide functionality for management, media processing, CDRi processing, etc.
SER is today default part of numerous operating systems and their distributions: Debian, FreeBSD, Gentoo, NetBSD, OpenBSD, OpenSUSE, Solaris.
SER history spans back to the previous century. SER has been used since 2002 for various different purposes, frequently in the industry by major ISPs/ASPs and by universities to enable VoIPi services. SER's particular strength is its performance (SER runs well even under heavy load caused by large subscriber populations or abnormal operational conditions), flexibility (SER's genuine configuration language and module interface allow high degree of customization) and interoperability (tested and operated against tens of SIP products over the years, including but not limited to (Microsoft, Cisco, Mitel, snom, Pingtel, Siemens, xten, and many others).

#### Yate - Yet Another Telephony Engine

Yate is a next-generation telephony engine; while currently focused on Voice over Internet Protocol (VoIP), its power lies in its ability to be easily extended. Voice, video, data and instant messaging can all be unified under Yate's flexible routing engine, maximizing communications efficiency and minimizing infrastructure costs for businesses.
Yate can be used as a:
* VoIP server ****
* VoIP client
* VoIP to PSTN gateway
* PC2Phone and Phone2PC gateway
* H.323 gatekeeper
* H.323 multiple endpoint server
* SIP session border controller
* SIP router
* SIP registration server
* IAX server and client
* IP Telephony server and client
* Call center server
* IVR engine
* Prepaid and post-paid cards system

#### YXA

YXA is a SIP server written in the programming language Erlang at Kungliga Tekniska Högskolan and Stockholms universitet. Erlang was developed by Ericsson to program ordinary telephone switches, with the goal of making a programming system fault-tolerant and robust.
This helps YXA to be a robust SIP server/stack capable of serving tens of thousands of users.
The project's goal is to make YXA compliant to all RFC standards relevant to SIP.
* It is RFC3261 compliant SIP-server, capable of everything a generic domain needs:
** Registrar that keeps track of your users
** Handles incoming SIP requests to your domain
** Handles routing of requests from your users to remote domains
** TCP, UDP and TLS (including SIPS) support
** Automatically maps e-mail addresses of your users to their SIP addresses, if you have the e-mail addresses in LDAP
** Handles multiple domains using a single server instance
* ENUM support for PSTN-bypass whenever possible
* IPv6 support
* Forking, both parallel and sequential
* CPL (RFC3880) support for advanced user-control of events (currently incoming calls only)
* Modular user database, currently with LDAP, Mnesia, MySQL and text-file backends
* PSTN destination access control (per user or for anonymous users)