In the first version, only FreeSwitch was used. It had a central role, worked well (there are still v1 in production) but posed some problems: the scalability was limited and could only work in an environment with a single server.
To answer this problem, a SIP server based on Kamailio was introduced upstream of the FreeSwitch. This evolution enabled a multi-server architecture, increased security, better performance and unlimited scalability without service interruption. This architecture coupled with infrastructure technologies as code and automation tools such as Ansible allows to set up complex automated solutions.
Now, I will quickly introduce the v3. SIP streams will be fully managed by Kamailio while RTP streams by RTPEngine. FreeSwitch or Asterisk will only be used for class 5 services. This will allow for better intrinsic performance and the possibility of adding new services via simple APIs.
PyFreeBilling evolves every day in order to offer a complete IP telephony solution to small operators, always more reliable and scalable.