At Facebook, we believe in empowering individuals and communities with the tools for communication. This is particularly relevant in rural areas, where traditional methods of building network infrastructure — such as centralized telecom roll-outs — are often infeasible for financial reasons.
Today we are announcing the release of the Community Cellular Manager (CCM) open source project. CCM is a software management and deployment suite enabling the operation of small-scale cellular networks that can also be used with the OpenCellular platform we announced in June. It makes it possible for organizations with limited technical capacity to leverage OpenCellular or third-party radio access network (RAN) solutions to build small-scale cellular networks in their own communities.
- CCM is designed for reliable operation in environments with unreliable power and backhaul, providing fully disconnected operation for local voice and SMS services.
- CCM requires only basic technical literacy, with a simple web interface for users of the system.
- CCM makes coverage possible in areas where it was not economically viable with existing mobile network infrastructure: It can be run as a stand-alone system by small community network operators, or as a network service by larger operators who wish to leverage the power of community networking in rural areas.
- Local agents use CCM's cloud UI or SMS-based interfaces to manage their networks, allowing people in areas without coverage to install and operate the networks using local knowledge, infrastructure, and tooling, dramatically lowering the expense of bringing access to areas far from traditional centralized infrastructure.
The CCM system consists of two primary components: The first is the CCM client, which supports local breakout and disconnected operation (e.g., caching of messages during network disconnects) and automatic deployment and runs on a variety of hardware platforms. The second is the CCM cloud, which allows for the centralized management (e.g., subscriber management, billing, and upgrading) and control (e.g., routing and configuration) of small-scale mobile networks.
Each base station runs the CCM client, a management agent that communicates with the CCM cloud for device registration, configuration, reporting, and management services. The agent acts as a coordinator and integration point for various other software components:
- Radio network stack: A third-party software solution providing a complete “network in a box” implementation of radio access protocols and local termination of core network services. For example, the Osmocom project provides an open-source implementation of the GSM stack, and has an integration component provided by CCM.
- Local voice and SMS services: A programmable software switch allowing for local routing of SMS and voice calls. Packet (IP) data services connect directly to whatever Internet service is available at each base station, without having to be sent to/from a traditional core network.
- Persistent storage and asynchronous communication: A local database provides persistent storage of messages, and asynchronous communication services handle delivery to remote recipients whenever connectivity is available.
The CCM cloud is a Django-based web application providing simple registration of base stations and an interface for users to configure them. Operators use this cloud UI to set prices in their network, monitor usage on clients, and provision new subscribers on client networks. CCM clients maintain a connection to the CCM cloud, which configures each client node and synchronizes subscriber balances among all client devices in a network.
The CCM cloud also includes a number of open source backend systems to interconnect the local voice and SMS service on CCM clients to the global telephony network using standard SIP providers. The CCM cloud is multi-tenant by design, allowing a single installation of the cloud to support a number of separate CCM networks, each with their own billing policies and subscribers.
Finally, the CCM development environment includes configuration files for standard virtualization solutions, allowing for local installation and testing of both the client and cloud components.
With OpenCellular, CCM, and an open source software radio stack (e.g., Osmocom or OpenBTS), it is now feasible to build an entire functional 2G cellular network with open source components; from hardware to routing to management to interconnect.
In the Philippines, we've partnered with Globe Telecom and the University of the Philippines to practically validate this model of rural access. The first network utilizing the CCM software went up in a rural area lacking cellular coverage approximately 1.5 hours outside of Manila. The local community, primarily subsiding on agriculture and tourism, now has access to cellular connectivity. In conjunction with Globe and hardware vendor partners we're in the process of scaling out this model of rural cellular access in the Philippines. Globe will leverage CCM to manage prepaid charging while forging business partnerships with organizations who can provide the local resources to carry out on ground operations.
The code for CCM is available at https://github.com/facebookincubator/CommunityCellularManager. We welcome contributions to the project via GitHub.