DECT-Manager

Overview

Telephony systems based on Ascom IP-DECT consist (somewhat simplified) of two components: portable phones and antennas. At the time, all antennas had to be configured and managed independently.

With an ever-growing number of antennas, keeping track of changes and keeping always up-to-date configuration backups quickly turns into a huge unmaintainable mess. I decided to build a web-based solution that automatically creates versionized configuration backups of all 3’500 antennas in place. In future versions, automated provisioning could have been added to the solution, but it was never done.

The service was built on Go and classical web technologies like Twitter’s Bootstrap and HTML/CSS/JS.

 

Details

The company I worked for had a huge number of Ascom IP-DECT based phones in place. Many people were involved in maintaining the solution. While my colleagues and myself were engineering/maintaining the platform as a whole, another team performed installations on site, simple troubleshooting and add/move/change operations.

No central configuration tool existed at the time that would allow a proper maintenance of thousands of antennas. Everyone performing modifications to the system was instructed to keep a backup of the most recent configuration file in a folder, but with this large number there were always gaps.

In case of a service disruption, there was no way to tell what change caused it, let alone undo a mistake in configuration. To reduce the amount of manual work, I sat down and designed a simple, but effective solution to automate this process.

Design & Function

base-station.png

The antennas can be fed with an URL. Each antenna calls it when booted and at regular intervals. The URL and interval can be either set manually, or provided using DHCP options. The latter enabled us to roll out at scale using our an IP Address Management system.

mod cmd UP0 scfg http://backup-server/
config write
config activate

When booting, the antenna would call the URL, expecting a snippet of configuration back as shown on the right. This instructs the antenna to save its configuration as a payload of a HTTP PUT request to the specified URL.

The system then creates a hash of the entire configuration received and compares it against its database. If the hash matches, there was no change and nothing happens. If it does not, a new version is added to the history of this antenna.

 

Technical stuff

The tool is open-source (free for everyone to use) and can be found on a Github repository.

Configuration

The configuration is done using a JSON file, an example can be found in the repository. The service was designed to run on a GNU/Linux system. Go is platform-independent and as no architecture-specific libraries are being used, there is no reason it shouldn’t also run on any other platform.

Previous
Previous

Busylight for Cisco and Lync

Next
Next

Game-clone “Crusher”