Design Philosophy

Hardware is cheap

You can achieve high availability with lots of smaller, cheaper servers. Need more capacity? Add a server or two. Think blade systems; think Google architecture.

No single point of failure

Every feature (call-processing, voicemail, menus, ..) can be duplicated and distributed among multiple physical systems. Ideally these systems should be geographically dispersed, but your Business Continuity Plan should be the main driving factor.

SIP the way it was meant to be

We're designing with SIP, end-to-end, the way it was meant to be designed, with strong DNS SRV support.

Load-balancing, hot-hot

All configured servers are active servers; we do not want to waste "cold" standby servers.
Load-balancing also means the optimal cost solution is to pair hardware systems, with each system able to support 50% of the maximum load for the pair. (You can always add more systems to a cluster, but then the total load gets spread thinner.)

This isn't virtualization. This isn't "HA".

We're thinking dozens of thousands of servers; hundreds of thousands of users. Your systems may be all over the globe. You may have one in each of your retail locations. Or at each of your managed customers. They may have high bandwidth links between them; or not.
CarrierClass.net doesn't need heartbeat. CarrierClass.net doesn't require lots of bandwidth.

All OpenSource

The design is open; the software is open.

This project is based on the realization that all the components actually are already there; one just has to stitch them together. Other people have done what we are doing before, behind close doors. We're just opening the doors and providing people access to a coherent, well-designed architecture.

Vendor-independent

You should be able to use the IP Phones you want, the gateway you wants, and ultimately, the software components you want.

Interchangeable components

Today we use OpenSER and Asterisk because they are what we know best. Over time we will add other components (SipX, Bayonne, FreeSwitch) to allow you to pick the software you want for the features it supports best.

Ease of management

Ultimately a design is only useful if it can be implemented and supported relatively easily. We will provide the tools needed to facilitate the deployment of large-scale systems by continuously listening to the system's users and provide the tools they need.