Project

General

Profile

PBX

Core solution for call routing is based on Kamailio. Kamailio will serve even endpoint registration. All external communication to BESIP goes throw it. After all security tests and SIP normalisation, it will either use Asterisk for call mangling or services or will route calls directly without it.

Idea

First idea to use Kamailio for call routing was realized using kam3cfg PHP script. We created it to solve problem with complex kamailio configuration file. Directly from first project page:
Writing config for kamailio is not simple procedure. It takes long time to achieve needed results. There are some common configs which can be found and used, mostly from examples directory. But this does not fit all our needs. Sometime example is too complex and is hard to change only for specific scenario. Sometime it is too simple and does not fit all features. We wanted to create some tool, which will generate needed config file based on input parameters. So anybody can change parameters and features and generate its own config. Generated config should be editable and some parameters can be changed after generation. Many users awaiting similar tool, and many organizations do not use kamailio because of big config complexity. So we made this tool.

Reliability versus complexity

There are more levels of reliability. Because each complexity will decrease reliability, we decided to make it user configurable per number or per prefix. If somebody needs reliable call processing without PBX services, only Kamailio will be used for call routing. If user needs more complex PBX services, calls are routed to Asterisk.

Kam3cfg was not enough

Even kam3cfg could create simple Kamailio configs, it could not solve more complex situations with Asterisk integration. We need entire system preconfigured to do this. Simple change of routing can be high number of config changes. We decided to convert from simple-script based solution to more libraries and modular scripts. Next, we were searching some easiest way how to describe our system configuration. It should handle extensions, numbers, multi-domains, security etc. We have found YANG and yangcli to be good point of start. Now we are working on YANG module which can do all of this.

YANG BESIP module

Our YANG module will have all IP telephony parameters which we need. Our script in cooperation with yuma software will use part of configuration to parse and create configs for Asterisk, Kamailio and OpenWrt. Next, it will fill our databases with needed data for given config. Entire config of BESIP is NETCONF XML file or CLI script. No need of next configuration.

Interconnection between BEESIP and IPtelix

Anyone who uses BEESIP has available the list of SIP gateways from CESNET to use. It is predefined in a form of SIP trunks against those gateways. This is handled by embedded Asterisk in BEESIP system image.