04/09/2026

Kamailio 25: софтсвич ягодка опять

 
           Проект Kamailio отмечает 25 лет с момента начала разработки, которая стартовала 2 сентября 2001 года в исследовательском институте FhG Fokus в Берлине под названием SIP Express Router (SER).
          Познакомился я с ним довольно поздно в районе 2019
Увы, где я с ним был основные задачи были по переносу клиентов на РТУ, но с синтаксисом познакомился плотно.

Основные вехи проекта

🔘2001 год: Начало разработки системы SER (предшественника Kamailio).
🔘2005 год: Появление ответвления OpenSER.
🔘2008 год: Проект переименован в Kamailio из-за торговых знаков.
🔘2012 год: Официальное объединение кодовой базы с SER.
🔘2026 год: Выход мажорной версии v6.1 и празднование 25-летия проекта на конференции Kamailio World в Берлине

Особенности платформы

Назначение: Масштабируемый SIP-сервер с открытым исходным кодом (GPLv2) для VoIP, WebRTC и систем реального времени.

Производительность: Написан на языке Си для Unix/Linux, обрабатывает тысячи вызовов в секунду.

Применение: Используется крупными операторами связи и провайдерами по всему миру

Kamailio — это не классическая АТС (IP-PBX), а высокопроизводительный SIP-прокси-сервер и маршрутизатор сигнального трафика.
Он не обрабатывает медиа-потоки (аудио/видео) напрямую, а занимается исключительно маршрутизацией SIP-сообщений.

Ключевые компоненты архитектуры:

Ядро (Core): Написано на чистом языке C. Отвечает за низкоуровневые операции: сетевой ввод-вывод (сервер основан на многопроцессной модели fork()), парсинг SIP-пакетов, управление памятью (разделяемая память shm и приватная память pkg) и базовый тайм-менеджмент.

Модульная система: Почти вся логика вынесена в динамические модули (их более 150 и с каждым годов количество ростет). Модули отвечают за аутентификацию (AUTH), работу с базами данных (DB_MYSQL, DB_POSTGRES и др.), учет вызовов (ACC) и интеграцию с другими системами.

Скрипт маршрутизации (kamailio.cfg): Это сердце настройки и часто все что надо знать :). Язык конфигурации Kamailio похож на язык программирования. Он позволяет перехватывать каждый SIP-запрос или ответ и применять к нему кастомную логику (маршруты request_route, reply_route, failure_route). Для сложной логики также поддерживается интеграция с Lua, Python и JavaScript (KEMI).

Транспортный уровень: Из коробки поддерживает протоколы UDP, TCP, TLS, SCTP, а также WebSocket (и Secure WebSocket) для работы с WebRTC прямо из браузера.


Как понять что готов к Камаилио: должен +/- понимать что здесь творится и желать это повторить самому

# Handle requests within SIP dialogs
route[WITHINDLG] {
  if (!has_totag()) return;

  # sequential request withing a dialog should
  # take the path determined by record-routing
  if (loose_route()) {
    route(DLGURI);
    if (is_method("BYE")) {
      setflag(FLT_ACC); # do accounting ...
      setflag(FLT_ACCFAILED); # ... even if the transaction fails
    } else if ( is_method("ACK") ) {
      # ACK is forwarded statelessly
      route(NATMANAGE);
    } else if ( is_method("NOTIFY") ) {
      # Add Record-Route for in-dialog NOTIFY as per RFC 6665.
      record_route();
    }
    route(RELAY);
    exit;
  }

  if (is_method("SUBSCRIBE") && uri == myself) {
    # in-dialog subscribe requests
    route(PRESENCE);
    exit;
  }
  if ( is_method("ACK") ) {
    if ( t_check_trans() ) {
      # no loose-route, but stateful ACK;
      # must be an ACK after a 487
      # or e.g. 404 from upstream server
      route(RELAY);
      exit;
    } else {
      # ACK without matching transaction ... ignore and discard
      exit;
    }
  }
  sl_send_reply("404","Not here");
  exit;
}


Всем связь!

 

 

 

 

 

 

 

 

Kamailio 25: софтсвич ягодка опять

             Проект Kamailio отмечает 25 лет с момента начала разработки, которая стартовала 2 сентября 2001 года в исследовательском инстит...