Ringfree makes use of a combination of proprietary and open source technologies in order to provide phone service to its customers. The phone service itself is provided by the Asterisk IP PBX software with a variety of tools and platforms built around it in order to guarantee reconfigurability, scalability, and most importantly reliability.
There is a popular open source project called FreePBX which, in the most basic of terms, is a glorified Asterisk configuration interface. FreePBX offers their own CentOS based Linux distribution containing their software along with Asterisk and a number of other preconfigured tools assembled with the goal of being able to quickly and easily deploy a fully functional IP PBX.
Ringfree maintains a highly optimized fork of the FreePBX distribution called Ringfree OS which contains Ringfree specific tools and configurations. Each Ringfree OS instance has two web interfaces for PBX management: an admin interface capable of administering almost any aspect of the PBX, and an end use interface with configuration options limited to a few extension features specific to a single extension.
Nodes and Containers
Ringfree operates several physical servers dubbed nodes which serve as hosts to numerous virtual machines called containers. The virtualization platform is OpenVZ and the overwhelming majority of the containers run Ringfree OS. When a new customer is being on-boarded, a new container with a new Ringfree OS instance is created and configured for that customer’s specific requirements.
Each node is capable of handling numerous dozens of Ringfree OS containers. While those make up the bulk of what’s on the nodes, there are other containers which contain web servers, phone provisioning servers, and other bits of infrastructure to be described later.
Session Border Controllers
One of the primary pieces of infrastructure within Ringfree are Session Border Controllers, or SBCs, manufactured by Sansay. Within Ringfree, the terms Sansay and SBC are used almost interchangeably. The SBCs control VoIP traffic to and from the various Ringfree OS containers in addition to working as a strong layer of security.
Use of the SBCs allows Ringfree to direct all VoIP traffic to a single public IP address thus obscuring the IP addresses of the Ringfree OS containers. There are numerous methods used by hackers to take advantage of IP PBX software in the wild and the SBCs mitigate the overwhelming majority of them.
Because the SBCs are so critical to Ringfee’s operation, they are deployed as pairs configured for full replication and failover.
As you can imagine, managing hundreds of IP PBXs at a time can be a somewhat daunting process. To assist with this, a PBX management platform called the Papal Mainframe (a Dr. Who reference) was developed. Papal serves as a means of quickly accessing the admin and user interfaces for all of the Ringfree OS containers. Additionally it contains customer data, hardware provisioning options, DID management, and will soon contain the bulk of Ringfree’s internal billing.
The server where Papal operates is in a datacenter completely independent of the rest of Ringfree’s infrastructure. Papal is a stateless application written in PHP and can be deployed on most Linux servers capable of handling a standard LAMP stack and occasionally running a Java application necessary for communication with the SBCs.
Customer Premises Equipment
The bulk of customer premises equipment, or CPE, in use for Ringfree’s phone service are IP phones manufactured by Polycom and Yealink. In past years Ringfree primarily deployed Polycom units and in 2016 this shifted to Yealink for a variety of reasons beyond the scope of this article. There are occasionally other brands of phones in use, normally by customers who had existing equipment prior to moving their phone service.
Additional VoIP CPE sometimes includes Mediatrix ATAs in use for fax machines, Panasonic wireless DECT phones, paging devices manufactured by companies such as Algo, and Yealink DECT range extenders.
In almost all cases Ringfree or an IT provider will make recommendations to customers regarding their internal networking equipment and ISP. While Ringfree does not maintain internal networks or ISP relations for customers, it is necessary to ensure that the network can be reliably configured for VoIP traffic.
Many forms of IP phones and related equipment can be set up for remote provisioning. Ringfree operates provisioning servers for Polycom and Yealink devices. Functionally a SIP device requires four settings to be able to communicate with a Ringfree operated PBX: hostname, username, password, and outbound proxy; so the provisioning servers provide this information along with other settings proprietary to the manufacturer.
Compatible IP phones can be configured to communicate with Ringfree’s provisioning servers directly from the hardware supplier. Compatible IP phones sourced elsewhere can generally be configured to communicate with the associated provisioning server directly within the phone’s configuration.
Provisioning servers have several notable benefits over per-device configuration. Most notably they allow for system wide changes to be rolled out in a substantially more rapid fashion. Additionally they allow for Ringfree employees to quickly and effectively reprovision phones and diagnose various provisioning issues.
Ringfree operates a number of other servers to perform various tasks. Included are a VoipMonitor server, an internal Nagios server, a Shinken server, an HAProxy and Apache Reverse NAT server, and a few others. Specific information regarding these servers is outside the scope of normal day to day operations and as such they will be addressed in other documentation later on.