Project Clearwater Release 1.0
Total Page:16
File Type:pdf, Size:1020Kb
Project Clearwater Release 1.0 Apr 17, 2018 Overview 1 Latest Release 3 2 Architecture 5 3 Getting Started 7 4 Looking Deeper 9 5 Getting Source Code 11 6 Contributing 13 7 Help 15 8 License and Acknowledgements 17 8.1 Clearwater Architecture......................................... 17 8.2 Clearwater Tour............................................. 20 8.3 Exploring Clearwater........................................... 23 8.4 Support.................................................. 24 8.5 Troubleshooting and Recovery...................................... 25 8.6 Installation Instructions......................................... 28 8.7 All-in-one Images............................................ 29 8.8 Automated Install Instructions...................................... 31 8.9 Manual Install Instructions........................................ 32 8.10 All-in-one EC2 AMI Installation..................................... 41 8.11 All-in-one OVF Installation....................................... 41 8.12 Installing a Chef server.......................................... 43 8.13 Installing a Chef Client.......................................... 44 8.14 Creating a Chef deployment environment................................ 46 8.15 Creating a deployment with Chef.................................... 49 8.16 Making calls through Clearwater.................................... 51 8.17 Using the Android SIP Client with Clearwater............................. 53 8.18 Using Zoiper with Clearwater...................................... 54 8.19 Configuring Geographic redundancy................................... 55 8.20 Upgrading a Clearwater Deployment.................................. 57 8.21 Modifying Clearwater Settings...................................... 59 8.22 Clearwater Configuration Options Reference.............................. 61 i 8.23 Configuring an Application Server.................................... 73 8.24 External HSS Integration......................................... 76 8.25 OpenIMS HSS Integration........................................ 78 8.26 CDF Integration............................................. 80 8.27 Clearwater IP Port Usage........................................ 81 8.28 Clearwater DNS Usage.......................................... 85 8.29 ENUM Guide............................................... 93 8.30 Voxbone................................................. 100 8.31 SNMP Statistics............................................. 102 8.32 Stateful Statistics............................................. 108 8.33 SNMP Alarms.............................................. 109 8.34 Radius Authentication.......................................... 111 8.35 Application Server Guide........................................ 115 8.36 WebRTC support in Clearwater..................................... 117 8.37 IR.92 Supplementary Services...................................... 119 8.38 Backups................................................. 120 8.39 Call Barring............................................... 126 8.40 Call Diversion.............................................. 127 8.41 Elastic Scaling.............................................. 128 8.42 Privacy.................................................. 130 8.43 Off-net Calling with BGCF and IBCF.................................. 132 8.44 Multiple Domains............................................ 134 8.45 Multiple Network Support........................................ 135 8.46 Geographic redundancy......................................... 138 8.47 IPv6.................................................... 139 8.48 SIP Interface Specifications....................................... 140 8.49 SIP OPTIONS poll support in Clearawater............................... 157 8.50 Clearwater Automatic Clustering and Configuration Sharing...................... 158 8.51 Provisioning Subscribers......................................... 159 8.52 Dealing with Failed Nodes........................................ 161 8.53 Dealing with Multiple Failed Nodes................................... 162 8.54 Dealing with Complete Site Failure................................... 166 8.55 C++ Coding Guidelines......................................... 167 8.56 Ruby Coding Guidelines......................................... 168 8.57 Debugging Clearwater with GDB and Valgrind............................. 172 8.58 Pull Request Process........................................... 173 8.59 Unit tests................................................. 174 8.60 Stress Testing............................................... 176 8.61 Using Cacti with Clearwater....................................... 179 8.62 Running the Clearwater Live Tests.................................... 181 ii Project Clearwater, Release 1.0 Project Clearwater is an open-source IMS core, developed by Metaswitch Networks and released under the GNU GPLv3. You can find more information about it on our website. Overview 1 Project Clearwater, Release 1.0 2 Overview CHAPTER 1 Latest Release The latest release of Clearwater is “Zamîn”. 3 Project Clearwater, Release 1.0 4 Chapter 1. Latest Release CHAPTER 2 Architecture Clearwater is architected from the ground up to be fully horizontally scalable, modular and to support running in virtualized environments. See our Clearwater Architecture page for a bird’s eye view of a Clearwater deployment and a guided tour of the various functional components that comprise it. 5 Project Clearwater, Release 1.0 6 Chapter 2. Architecture CHAPTER 3 Getting Started • Installation Instructions • Making your first call • Running the live tests • A tour of Clearwater 7 Project Clearwater, Release 1.0 8 Chapter 3. Getting Started CHAPTER 4 Looking Deeper To look at the optional extra features and function of your Clearwater deployment and for discussions about Clearwater scaling and redundancy, see Exploring Clearwater. 9 Project Clearwater, Release 1.0 10 Chapter 4. Looking Deeper CHAPTER 5 Getting Source Code All the source code is on GitHub, in the following repositories (and their submodules). • chef- Chef recipes for Clearwater deployment • clearwater-infrastructure - General infrastructure for Clearwater deployments • clearwater-logging - Logging infrastructure for Clearwater deployments • clearwater-live-test - Live test for Clearwater deployments • clearwater-readthedocs - This documentation repository • crest - RESTful HTTP service built on Cassandra - provides Homer (the Clearwater XDMS) and Homestead- prov (the Clearwater provisioning backend) • ellis - Clearwater provisioning server • sprout - Sprout and Bono, the Clearwater SIP router and edge proxy • homestead - Homestead, the Clearwater HSS-cache. • ralf - Ralf, the Clearwater CTF. 11 Project Clearwater, Release 1.0 12 Chapter 5. Getting Source Code CHAPTER 6 Contributing You can contribute by making a GitHub pull request. See our documented Pull request process. If you want to contribute specifically to this documentation (e.g. to fix a typo or document a missing option), the Markdown files for it are at https://github.com/Metaswitch/clearwater-readthedocs. There is more information about contributing to Project Clearwater on the community page of our project website. 13 Project Clearwater, Release 1.0 14 Chapter 6. Contributing CHAPTER 7 Help If you want help, or want to help others by making Clearwater better, see the Support page. 15 Project Clearwater, Release 1.0 16 Chapter 7. Help CHAPTER 8 License and Acknowledgements Clearwater’s license is documented in LICENSE.txt. It uses other open-source components as acknowledged in README.txt. 8.1 Clearwater Architecture Clearwater was designed from the ground up to be optimized for deployment in virtualized and cloud environments. It leans heavily on established design patterns for building and deploying massively scalable web applications, adapting these design patterns to fit the constraints of SIP and IMS. The Clearwater architecture therefore has some similarities to the traditional IMS architecture but is not identical. In particular . • All components are horizontally scalable using simple, stateless load-balancing. • All long lived state is stored on dedicated “Vellum” nodes which make use of cloud-optimized storage technolo- gies such as Cassandra. No long lived state is stored on other production nodes, making it quick and easy to dynamically scale the clusters and minimizing the impact if a node is lost. • Interfaces between the front-end SIP components and the back-end services use RESTful web services inter- faces. • Interfaces between the various components use connection pooling with statistical recycling of connections to ensure load is spread evenly as nodes are added and removed from each layer. The following diagram illustrates the Clearwater architecture and its components. 8.1.1 Bono (Edge Proxy) The Bono nodes form a horizontally scalable SIP edge proxy providing both a SIP IMS Gm compliant interface and a WebRTC interface to clients. Client connections are load balanced across the nodes. The Bono node provides the anchor point for the client’s connection to the Clearwater system, including support for various NAT traversal 17 Project Clearwater, Release 1.0 Fig. 8.1: Architecture mechanisms. A client is therefore anchored to a particular Bono node for the duration of its registration, but can move to another Bono node if the connection or client fails. Clients can connect to Bono using SIP/UDP or SIP/TCP. Bono supports any WebRTC client that performs call setup signaling using SIP