IP-телефония на базе Asterisk
Введите свой номер телефона
и мы перезвоним вам
Решаем Ваши бизнес-задачи с помощью IT-технологий. Знаем, как сделать лучше, быстрее и дешевле. Наш опыт – на службе Вашего бизнеса.
Не все герои носят плащи. Сотни техических статей, написанных инженерами нашей компании. Делимся опытом и своими знаниями со всем сообществом.
Сотни функций и возможностей Asterisk помогут вывести коммуникации в Вашей компании на принципиально новый уровень. Технические ограничения – фантазия Заказчика.
Вы платите за систему, которая будет полностью соответствовать Вашим ожиданиям, требованиям и будет драйвером роста Вашего бизнеса
Идти в ногу со временем или оставаться на старых технологиях? Такой вопрос не стоит перед нашими клиентами. Решаем самые смелые задачи для Колл-Центров. Строим с нуля или работаем с существующими.
Поместите свой бизнес в эпицентр продаж. Интеграция IP-телефонии и CRM даст новый и мощный импульс Вашему Отделу Продаж и выведет компанию на три шага впереди конкурентов.
Подбираем для клиентов такие тарифы, которые ему редко получится найти на рынке самостоятельно. Работаем с 100+ операторов связи в интересах клиента.
Разработки, созданные нашей командой под запросы клиентов. Не отказывайтесь от инноваций. Мы поможем идти с ногу со временем.
Умные всю жизнь учатся, а остальные всегда все и так знают. Мы проводим обучение более 8 лет и выпустили более 1000 специалистов по Asterisk и Mikrotik. Проводим ежегодную конференцию Asterisk.
Купить наш опыт дешевле, чем набивать свои шишки. Мы реализовали более 800 проектов и накопили экспертизу для того, чтобы идеально выполнить Ваш проект.
Правильный выбор оборудования позволяет сэкономить от 20 до 50% бюджета телефонии. Мы предельно внимательно подойдем к выбору «железа» в Ваш проект.
Наши цены доступны не только для Москвы, но и для регионов. А вложения в нашу экспертизу обычно окупаются за несколько месяцев.
Работаем с 2011 года. Собрали отличную команду реальных фанатов своего дела. Подходим к работе с душой и ответственностью.
Это скорее лирическая импровизация, основанная на реальных событиях. История о ситуации, которая в определённый момент добавила немало нервозности и ввела в замешательство, но в итоге привела к полезным выводам.
Рассматриваемая система построена из следующих компонентов:
Приложение, работающее в связке с этой системой, в реальном времени обрабатывает PCM-аудио. Для получения аудио Kamailio отправляет команду в RTP Engine на начало передачи медиапотока. При этом Kamailio через Redis передаёт данные о звонке (начало и завершение) в приложение. Логика проста: два события — INVITE и BYE, публикуемые в Redis, и команда RTP Engine Start Forwarding.
Первоначальные тесты показали, что система выдерживает 100–150 CPS (calls per second). На этой отметке разработка продолжилась. Однако при внедрении у заказчика проявилось резкое ограничение — на нагрузке около 30 CPS начинались проблемы: повторные INVITE, потеря BYE, при этом сбои происходили внутри Kamailio, а общая загрузка системы оставалась низкой (load average ~0.5).
Первое предположение — проблемы в RTP Engine. Его отключение действительно снимало сбои в Kamailio. Логи подтверждали: при возникновении проблем Kamailio не мог связаться с RTP Engine. Однако дальнейшее исследование показало, что RTP Engine работал корректно, за исключением отсутствия настройки параметра FinalTimeout. Это могло приводить к «зависанию» портов при перезапуске Kamailio, но в данном случае влияние было исключено.
Следующий кандидат — RTP Engine Recording. Предполагалось, что запись медиа может блокировать RTP Engine из-за высокой нагрузки на диск. Однако архитектура записи устроена так, что RTP Engine и модуль записи разделяют каталог для обмена метаданными, и запись не блокирует RTP Engine — обмен идёт через inotify, а звуковой поток читается асинхронно. Тесты с медленным диском не воспроизвели проблему.
Далее исследование ушло в настройки ядра Linux — были опробованы наборы «оптимизаций» для UDP highload. Это оказалось бесполезным и даже потенциально опасным из-за изменения распределения портов.
Возникла гипотеза о проблемах в прикладной части. При тестах с отключённой публикацией событий в Redis система работала без сбоев, но терялась информация о звонках. Увеличение числа SIP-процессов Kamailio (children) с 8 до 512 улучшало ситуацию, но не решало проблему.
Расследование показало, что после обновления библиотеки работы с Redis изменился пул соединений. Каждое медиаприложение держало собственное соединение с Redis. Количество подключений выросло с 64 до 640. Поскольку публикация (PUBLISH) в Redis отправляется на все подписанные клиенты, время публикации увеличилось в 10 раз. Это приводило к тому, что данные о звонке публиковались медленнее, чем таймер повторной отправки INVITE. При этом повторные INVITE повторно публиковались, что ещё сильнее нагружало Kamailio.
Ключевой момент: публикация в Redis в Kamailio — синхронная операция, блокирующая обработку SIP-пакета. Рост времени публикации блокировал все процессы Kamailio, что и приводило к обвалу.
В новой архитектуре медиатрафик обрабатывался акторной моделью в одном процессе, который держал одно соединение с Redis. Механизм публикации был изменён:
Альтернативой могло бы быть использование асинхронных HTTP-запросов или модулей присутствия в Kamailio/OpenSIPS, но в рамках текущей реализации Redis оказался быстрее адаптирован к новым требованиям.
Проблема оказалась скрытой: внешне система не была перегружена, но из-за синхронного вызова и роста числа подписчиков возникал каскадный сбой. После архитектурных изменений система вернулась к стабильной работе и сохранила запас по нагрузке.
Билеты уже в продаже!
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.