Как выбрать SIP-сервер: Kamailio, OpenSIPS или FreeSWITCH — реальный выбор для бизнеса

Как выбрать SIP-сервер: Kamailio, OpenSIPS или FreeSWITCH — реальный выбор для бизнеса

Ты хочешь построить VoIP-инфраструктуру — звонки, конференции, интеграция с CRM, маршрутизация по регионам, отказоустойчивость. И тебе предлагают три варианта: Kamailio, OpenSIPS, FreeSWITCH. Все они open-source. Все «бесплатные». Но что выбрать, чтобы не потратить полгода на костыли и не уйти в технический долг?

Я не буду пересказывать документацию. Я скажу, что реально происходит, когда эти серверы ставят в продакшене — и как не попасть в ловушку, в которую попали сотни компаний до тебя.

Что вообще делают эти три сервера?

Все три — SIP-серверы. Но разница в том, как они это делают.

  • Kamailio — это как гоночный двигатель. Он не звонит, не воспроизводит аудио, не делает конференции. Он только маршрутизирует SIP-пакеты. Очень быстро. Очень надёжно. Для него задача — не обрабатывать звонок, а не дать ему упасть.
  • OpenSIPS — брат-близнец Kamailio, но с более дружелюбным API и чуть более развитой экосистемой для скриптов. Тоже фокус на маршрутизации, но проще настраивать, если ты не хочешь писать код на C.
  • FreeSWITCH — это целая телефонная станция. Он и маршрутизирует, и генерирует звук, и делает конференции, и говорит голосом, и записывает звонки. Он не просто пересылает SIP — он играет в телефон.

Если ты думаешь: «А что, разница большая?», — спроси себя: ты хочешь построить почтовый фильтр или почтовый ящик с голосовой почтой, автоответчиком и системой уведомлений?

Сравнение: что на самом деле отличает их в продакшене

Вот что реально важно, когда ты уже не в тестовом режиме, а в реальном бизнесе:

Критерий Kamailio OpenSIPS FreeSWITCH
Скорость обработки SIP Самый быстрый. До 100 000 вызовов/сек на одном ядре (при идеальной настройке) Очень высокая. Почти как Kamailio, но чуть медленнее из-за абстракций Умеренная. До 5 000–10 000 вызовов/сек на мощном сервере
Сложность настройки Высокая. Нужен опыт работы с SIP, понимание протоколов, умение читать код на C Средняя. Скрипты на языке OpenSIPS, понятнее, чем в Kamailio Средняя–высокая. Много возможностей, но конфиги громоздкие
Встроенные функции (аудио, конференции, IVR) Нет. Только SIP-маршрутизация Нет. Только SIP-маршрутизация Да. Всё включено: IVR, конференции, запись, TTS, ASR
Интеграция с БД и внешними системами Отличная. Поддержка MySQL, PostgreSQL, Redis, LDAP — всё на уровне ядра Отличная. Лучше документация и готовые модули Хорошая. Но требует дополнительных модулей и часто — кастомных скриптов
Масштабируемость Лучшая. Используется в крупных операторах (Vodafone, Deutsche Telekom) Отличная. Часто используется в телеком-стартапах Ограничена. Для 50 000+ одновременных вызовов нужна кластеризация, что сложно
Поддержка и сообщество Меньше новичков, но глубокая экспертиза. Много старых, но стабильных версий Активное сообщество. Часто обновляется, много примеров в интернете Самое большое сообщество. Много туториалов, но много «костылей» в примерах
Требования к серверу Низкие. Работает на 1–2 ядрах даже при высокой нагрузке Низкие. Почти как Kamailio Высокие. Требует много RAM и CPU для аудио-обработки

Важно: не сравнивай их как «кто лучше». Сравнивай как «кто подходит под твою задачу».

Когда выбирают Kamailio

Ты выбираешь Kamailio, если:

  1. Ты строишь SIP-прокси для оператора, телеком-стартапа или корпоративной АТС с тысячами одновременных вызовов.
  2. Тебе нужна максимальная стабильность и минимальная задержка — даже если это значит, что тебе придётся писать 500 строк скриптов на C для простого правила маршрутизации.
  3. У тебя есть инженер, который уже знает SIP-протокол на уровне пакетов, а не «по настройке в GUI».
  4. Ты не хочешь, чтобы сервер тормозил из-за обработки аудио — ты выносишь медиа на отдельные серверы (например, на Asterisk или FreeSWITCH).

Пример: компания из Восточной Европы, которая обслуживает 80 000 абонентов в 15 странах. Они используют Kamailio как ядро маршрутизации, а аудио-обработку и IVR делают через отдельные FreeSWITCH-кластеры. Почему? Потому что Kamailio не упадёт, даже если FreeSWITCH-узел перегрузится.

Когда выбирают OpenSIPS

OpenSIPS — выбор, если ты хочешь то же, что и Kamailio, но с меньшим порогом входа.

  1. Ты хочешь высокую производительность, но не хочешь писать на C.
  2. Тебе нужна гибкость: маршрутизация по региону, балансировка нагрузки, фильтрация по номеру, интеграция с CRM через API.
  3. У тебя есть DevOps-инженер, который умеет писать скрипты на Python или Lua — и тебе важно, чтобы логика была читаемой.
  4. Ты не хочешь тратить месяц на настройку, но тебе важна масштабируемость.

Пример: SaaS-платформа для аутсорсинговых колл-центров. Они используют OpenSIPS для маршрутизации звонков по региону и статусу агента (онлайн/офлайн/занят), а базу данных с клиентами подключают через PostgreSQL. Всё работает на 4-ядерном сервере с 16 ГБ RAM. Настройка заняла 3 недели — и они до сих пор не меняли архитектуру.

Когда выбирают FreeSWITCH

FreeSWITCH — это когда ты хочешь «всё в одном».

  1. Ты строишь небольшую АТС для компании с 50–500 сотрудниками.
  2. Тебе нужны: автоответчик, запись звонков, голосовые меню, IVR с распознаванием речи, конференции, звонки в WhatsApp через SIP-шлюз.
  3. Ты не хочешь управлять тремя разными серверами — хочешь один, который делает всё.
  4. Ты готов платить за это ценой: больше ресурсов, выше сложность отладки, меньше масштабируемости.

Пример: клиника с 200 врачей. Они используют FreeSWITCH как центральный коммутатор: звонки идут на номера врачей, при пропущенном вызове — голосовое сообщение с просьбой оставить запись, звонки перенаправляются на администратора, все звонки записываются для аудита. Всё — на одном сервере. Не для 10 000 одновременных вызовов, но для 200 — идеально.

Частые ошибки, которые ломают проекты

Вот что я видел десятки раз — и каждый раз это приводило к остановке проекта на 2–3 месяца:

  • «Возьму FreeSWITCH, потому что он «всё умеет»» — и потом понимаешь, что при 1000 одновременных вызовов сервер уходит в swap, а IVR начинает отвечать с задержкой 5 секунд. FreeSWITCH — не для масштаба, а для функционала.
  • «Kamailio — самый быстрый, значит, он лучший» — и тратишь 6 месяцев, пытаясь заставить его воспроизводить звук. Он не умеет. Это как купить гоночный двигатель и надеяться, что он сам заведёт машину.
  • «Надо интегрировать с CRM — возьму OpenSIPS» — и потом обнаруживаешь, что для связи с PostgreSQL нужно писать модуль на C, а документация устарела. Опыт показывает: если ты не знаешь, как работает SIP-регистрация — OpenSIPS тебя убьёт.
  • «Все пишут про FreeSWITCH — значит, он проще» — и ты копируешь конфиг из YouTube. Через месяц звонки пропадают, потому что ты не понял, как работает модуль mod_sofia и почему он не видит твой DNS.
  • «Я не буду тестировать под нагрузкой» — и в первый день после запуска система падает при 300 одновременных вызовах. Потому что ты тестировал на 10.

Как лучше сделать: 3 сценария выбора

Вот как я бы поступил, если бы стоял перед этим выбором.

Сценарий 1: У тебя маленький бизнес, 10–200 сотрудников, хочешь всё в одном

Выбирай FreeSWITCH.

  • Установи на Ubuntu 22.04 LTS.
  • Настрой IVR через XML-файлы (документация на FreeSWITCH.org — хорошая).
  • Подключи запись звонков в папку на диске — и включи архивацию по месяцам.
  • Интегрируй с CRM через REST API (модуль mod_http_cache + Lua-скрипт).

Плюс: всё работает через веб-интерфейс. Минус: не масштабируется. Но тебе это не нужно — пока.

Сценарий 2: Ты телеком-стартап или корпорация с 1000+ одновременных вызовов

Выбирай OpenSIPS.

  • Настрой маршрутизацию по региону и по номеру (например, вызовы из США — через Twilio, из России — через SIP-провайдер).
  • Используй Redis для хранения сессий — это быстрее, чем база данных.
  • Интегрируй с PostgreSQL для хранения логов и статистики.
  • Вынеси аудио на отдельные серверы с FreeSWITCH или Asterisk — и используй OpenSIPS только как «диспетчер».

Это классический паттерн: OpenSIPS — как мозг, FreeSWITCH — как руки.

Сценарий 3: Ты оператор, крупный провайдер, или строишь инфраструктуру для миллионов звонков

Выбирай Kamailio.

  • Собери его из исходников с оптимизацией под твой CPU (AVX2, SSE4).
  • Используй MySQL или PostgreSQL для хранения пользователей и правил.
  • Подключи модуль tm для отказоустойчивости и sl для логирования.
  • Сделай мониторинг через Prometheus + Grafana — Kamailio умеет экспортировать метрики.

Ты не будешь делать IVR на Kamailio. Ты не будешь записывать звонки. Ты будешь делать то, что никто другой не может: держать 50 000 вызовов в секунду без сбоев.

Что делать прямо сейчас

Не трать время на сравнение теорий. Сделай это:

  1. Определи: сколько одновременных звонков тебе нужно поддерживать? (Не «сколько пользователей», а именно одновременных вызовов.)
  2. Нужны ли тебе: IVR, запись, конференции, голосовые меню? Если да — FreeSWITCH. Если нет — Kamailio или OpenSIPS.
  3. Есть ли у тебя в команде человек, который понимает SIP-заголовки, кодеки, транзакции? Если нет — не трогай Kamailio. Бери OpenSIPS.
  4. Скачай Docker-образы всех трёх и запусти локально. Сделай простой сценарий: звонок из 1001 → 1002. Запусти 50 вызовов одновременно. Посмотри, как ведёт себя память и CPU.
  5. Почитай последние 3–5 статей в блогах: opensips.org, kamailio.org, freeswitch.org. Увидишь, кто активно пишет — значит, проект живой.

Ты не выбираешь «лучший» сервер. Ты выбираешь правильный инструмент для своей задачи.

Итог: что брать

  • Для малого бизнеса, IVR, записей, простой АТС — FreeSWITCH. Он не идеален, но он работает «из коробки».
  • Для масштабируемой маршрутизации, телеком-проектов, интеграций — OpenSIPS. Баланс между мощью и удобством.
  • Для операторов, миллионов вызовов, высокой отказоустойчивости — Kamailio. Если ты не знаешь, что такое SIP-регистрация, не трогай его.

Никто не спасёт тебя, если ты выберешь не тот инструмент. Но если ты поймёшь, что именно тебе нужно — ты выберешь правильно. И не будешь тратить полгода на то, чтобы понять, почему звонки не идут.

Информация в этой статье носит ознакомительный характер. Выбор и настройка SIP-инфраструктуры требуют технической экспертизы. Перед внедрением в продакшен проконсультируйтесь с инженером, имеющим опыт в VoIP-системах.

Virtual SIM — eSIM и виртуальные номера по всему миру