Kamailio — это SIP сервер выполняющий обработку SIP сообщений, умеющий манипулировать SIP заголовками (добавлять, удалять, изменять), поддерживает передачу RTP через rtpengine, rtpproxy и д.р.
Сама архитектура состоит из модулей, которые добавляют функционал. К примеру, модуль dispatcher — позволяет обеспечить распределение нагрузки между media серверами (об в одной из следующих статей), модуль registrar позволяет обрабатывать запросы регистрации от пользователей, nathelper — для прохода NAT и.т.д.
В этой серии статей мы реализуем следующую схему:
Где Kamailio будет заниматься обработкой SIP сигнализации, а также терминацией WSS трафика для WebRTC (звонки из браузера). Media сервера — занимаются обработкой непосредственно голоса и предоставлением бизнес логики (IVR, очереди, Call Center…), эти сервера могут быть реализованы через Asterisk/FreeSWITCH или любых других SoftSwitch 5 класса. В базе данных хранятся все dialplan’ы, SIP аккаунты и в принципе все данные для которых нужно долговременное хранение.
Необходимо выполнить последовательно следующие команды от пользователя с root привелегиями / правами.
Ставим Kamailio stable release v5.7:
echo deb http://kamailio.sipwise.com/debian/kamailio57 stretch main >> /etc/apt/sources.list.d/kamailio.list
echo deb-src http://kamailio.sipwise.com/debian/kamailio57 stretch main >> /etc/apt/sources.list.d/kamailio.list
wget -O- http://deb.kamailio.org/kamailiodebkey.gpg | sudo apt-key add -
apt update && apt install kamailio
Ставим RTPEngine stable release v11.5:
echo deb http://kamailio.sipwise.com/debian/rtpengine-mr11.5 bookworm >> /etc/apt/sources.list.d/rtpengine.list
echo deb-src http://kamailio.sipwise.com/debian/rtpengine-mr11.5 bookworm >> /etc/apt/sources.list.d/rtpengine.list
wget -O- http://kamailio.sipwise.com/debian/kamailiodebkey.gpg | sudo apt-key add -
apt update && apt install rtpengine
После установки, в директории /etc/kamailio/ будет автоматически создан конфигурационный файл kamailio.cfg. Рекомендую сохранить его как пример, к нему иногда придется обращаться, чтобы посмотреть как разработчики реализовали тот или иной функционал.
После того, как сохранили стандартный конфиг, например переименовав его в kamailio.cfg.example, необходимо создать пустой файл kamailio.cfg в директории /etc/kamailio.
Для обеспечения минимальной работоспособности, в конфиг необходимо добавить следующие строки:
request_route {
exit;
}
request_route — это главный маршрут через который проходит любой SIP запрос. Это значит, что получив, например SIP сообщение о регистрации, обработка этого сообщения начнется с request_route.
Как вы могли заметить, маршруты обрамляются в фигурные скобки {}. Это правило действует на все созданные маршруты.
Этот конфиг ничего не делает, на каждое SIP сообщение он выходит т.к указана функция прерывания и выхода — exit. Конец строки, как и в языке С заканчивается точкой с запятой «;».
Теперь можно запустить балансировщик с помощью systemd демона. Это делается вызовом команды:
systemctl enable --now kamailio
В следующей статье мы начнем реализовывать схему описанную ранее и начнем с добавления обработки запросов REGISTER, а также подключим базу данных для хранения SIP аккаунтов в ней.