Project Clearwater is an open source implementation of IP Multimedia Subsystem (IMS) developed for scalable deployment in the cloud to provide voice, video and messaging services. There has been work done before on orchestrating Clearwater in OpenStack using Cloudify. We, in cooperation with our partner – Citrix, present orchestration of this system in Apache CloudStack using OpenStack Heat with our recent plugin.
Clearwater architecture
Clearwater consists of six horizontally scalable interoperating components:
- Bono (Edge Proxy) provides SIP and WebRTC interfaces to clients.
- Sprout (SIP Router) handles client authentication and the IP multimedia Service Control (ISC) interface to application servers.
- Homestead (HSS Mirror) provides a Web services interface to Sprout for retrieving authentication credentials and user profile information.
- Ralf (Rf CFF) is used to provide offline billing based on the provided charging function.
- Homer (XDMS) is used to store multimedia telephony service users’ settings documents.
- Ellis is a provisioning portal providing a basic GUI.
More Clearwater architecture details can be found in the official Clearwater documentation.
[Clearwater architecture (from official Clearwater documentation)]
Clearwater orchestration
Following the official Clearwater installation instructions we’ve developed an init script setting up the specific Clearwater’s components on six virtual machines based on Ubuntu 14.04 – 64bit template. The script is injected on VM creation as userdata therefore it’s necessary for your template to pick up on init scripts (e.g. using cloud-init) in order to provision the components. Also the ACL provided for the Clearwater network must contain all required firewall rules.
The template orchestrates a network, six virtual machines connected to this network, public IPs and NATs between the public IP addresses and VM and provisions Clearwater components. All required properties are described in the project’s readme file. Once the appropriate property values are defined, a Clearwater stack can be simply created using heat stack-create command. The deployment may take a while but should be fully operational once all the components are provisioned.
User accounts can be managed at the ellis provisioning portal. We use Jitsi SIP client to connect into Clearwater using number and password provided by ellis.
Here are some screenshots from our environment:
[Clearwater resources displayed in CloudStack GUI]
[Established session using Jitsi SIP client]
The implemented plugin shows its capability orchestrating an IMS solution in CloudStack cloud, but there is still a lot of work to be done. We will continuously add resources and attributes that are officially supported in CloudStack but yet missing in the plugin. Also, since Clearwater’s components are horizontally scalable and we recently published work on reactive orchestration in hurtle, adding a dynamic component scaling aspect to this work is a next step forward. We will also take a look on Clearwater orchestration in CloudStack using cloudify and carry out a comparison with this Hurtle/Heat approach.
This work was made possible by the KTI ACEN project in collaboration with Citrix.