IP-телефония на базе Asterisk
Введите свой номер телефона
и мы перезвоним вам
Решаем Ваши бизнес-задачи с помощью IT-технологий. Знаем, как сделать лучше, быстрее и дешевле. Наш опыт – на службе Вашего бизнеса.
База знаний Не все герои носят плащи. Сотни техических статей, написанных инженерами нашей компании. Делимся опытом и своими знаниями со всем сообществом.
Сотни функций и возможностей Asterisk помогут вывести коммуникации в Вашей компании на принципиально новый уровень. Технические ограничения – фантазия Заказчика.
IP-АТС Вы платите за систему, которая будет полностью соответствовать Вашим ожиданиям, требованиям и будет драйвером роста Вашего бизнеса
Идти в ногу со временем или оставаться на старых технологиях? Такой вопрос не стоит перед нашими клиентами. Решаем самые смелые задачи для Колл-Центров. Строим с нуля или работаем с существующими.
Поместите свой бизнес в эпицентр продаж. Интеграция IP-телефонии и CRM даст новый и мощный импульс Вашему Отделу Продаж и выведет компанию на три шага впереди конкурентов.
Подбираем для клиентов такие тарифы, которые ему редко получится найти на рынке самостоятельно. Работаем с 100+ операторов связи в интересах клиента.
Разработки, созданные нашей командой под запросы клиентов. Не отказывайтесь от инноваций. Мы поможем идти с ногу со временем.
Умные всю жизнь учатся, а остальные всегда все и так знают. Мы проводим обучение более 8 лет и выпустили более 1000 специалистов по Asterisk и Mikrotik. Проводим ежегодную конференцию Asterisk.
Купить наш опыт дешевле, чем набивать свои шишки. Мы реализовали более 800 проектов и накопили экспертизу для того, чтобы идеально выполнить Ваш проект.
Оборудование Правильный выбор оборудования позволяет сэкономить от 20 до 50% бюджета телефонии. Мы предельно внимательно подойдем к выбору «железа» в Ваш проект.
Наши цены доступны не только для Москвы, но и для регионов. А вложения в нашу экспертизу обычно окупаются за несколько месяцев.
О нас Работаем с 2011 года. Собрали отличную команду реальных фанатов своего дела. Подходим к работе с душой и ответственностью.
Asterisk уже много лет считается «золотым стандартом» для построения систем офисной телефонии. Но если заглянуть под капот, выясняется, что это не просто удобная программа, а огромный, тяжелый и местами довольно неповоротливый механизм. Проект живет за счет мощного комьюнити, но именно это порождает свои нюансы. Когда сотни людей пишут код в разные части системы, архитектура начинает напоминать лоскутное одеяло. Чтобы эффективно работать с этой АТС, нужно понимать, как она устроена на самом деле, какие костыли в ней заложены исторически и почему она иногда ведет себя непредсказуемо.
Многие привыкли воспринимать Asterisk как монолитное приложение, но на деле это классическая клиент-серверная архитектура. Основной программный код — это серверная часть. А когда мы запускаем в терминале команду asterisk -r, мы всего лишь открываем клиентское приложение. Этот клиент сам по себе не умеет ничего — он не обрабатывает звонки и не хранит настройки. Он просто подключается к серверу, чтобы показать нам, что там происходит.
Важный технический момент: связь между клиентом и сервером идет не через обычную сеть, а через UnixSocket. Это позволяет безопасно передавать данные внутри одной операционной системы. Именно через этот сокет клиент запрашивает информацию о состоянии каналов, эндпоинтах PJSIP или загруженных модулях. Если сервер «завис» или перегружен настолько, что перестал отвечать на запросы в сокет, ваш клиент -r тоже перестанет подавать признаки жизни.
Чтобы Asterisk вообще запустился, ему нужны определенные библиотеки. Без них ядро просто не соберется. Это своего рода «минимальный набор выживания»:
Это база. На нее уже сверху накручиваются модули, которые превращают голый код в полноценную телефонную станцию.
Вся мощь Asterisk — в его модульности. Но модули здесь не равноправны. Их можно разделить на три большие группы, и понимание этой разницы помогает при поиске проблем.
1. Модули ядра (Core)
Это «неотключаемые» части системы. Сюда входит сам механизм PBX, управление каналами (channels), работа с мостами (bridge) и система Stasis. Вы не можете просто взять и выгрузить модуль управления каналами, потому что на нем держится всё. Эти компоненты прописаны в самом сердце системы, и именно в них чаще всего зарыты самые сложные архитектурные проблемы.
2. Интерфейсные или загружаемые модули
Это драйверы протоколов и технологий.
3. Бизнес-модули
Это то, с чем мы работаем в диалплане. Функции вроде RAND, приложения для очередей или проигрывания файлов. Если вам не нужны очереди, вы можете просто не загружать соответствующий модуль, и система станет чуть легче.
Если зайти в Jira (систему трекинга задач) проекта Asterisk, можно увидеть реальную картину мира. Статистика впечатляет: за год пользователи создают тысячи тикетов.
external_address.Поскольку разработкой занимаются разные люди (мейнтейнеры), исправление ошибок может занимать месяцы. Один человек отвечает за AppDial, другой — за PJSIP. Если у того, кто пишет PJSIP, сейчас нет времени, ваш баг будет висеть долго, даже если он критический.
Asterisk написан на языке C. Для телефонии это круто, потому что это быстро. Но у C есть огромный минус — там нет автоматической очистки памяти. Разработчик сам должен выделить память под переменную и сам должен её освободить.
В проекте, которому 20 лет и в котором миллионы строк кода, уследить за этим невозможно. Утечки памяти — это верный спутник Asterisk. Если где-то в модуле забыли освободить пару байт при каждом звонке, то через неделю работы ваш сервер просто «съест» всю оперативку и упадет. Кроме того, ошибки с указателями приводят к так называемым Segmentation Fault. Это когда программа пытается обратиться к памяти, которая ей не принадлежит, и операционная система её мгновенно прибивает. Именно поэтому аудит IP-ATC часто выявляет нестабильность системы именно из-за накопленных ошибок в памяти.
Современный сервер — это много ядер и много потоков. Asterisk активно создает потоки для каждого звонка, для каждой задачи. И тут возникает главная архитектурная беда — Locks (блокировки).
Чтобы два потока не начали одновременно менять данные одного и того же канала (например, записывать в него звук), используется механизм Mutex. Когда один поток работает с объектом, он его «лочит» (блокирует). Все остальные потоки, которым нужен этот же объект, встают в очередь и ждут.
В чем здесь проблема:
Это родовая травма Asterisk. Переписать это невозможно, не переписав всё ядро с нуля. Поэтому на определенных нагрузках Asterisk начинает «захлебываться» вне зависимости от мощности железа.
Внутри Asterisk есть своя база данных — AstDB. Она построена на SQLite. Проблема в том, что по умолчанию она живет прямо на диске. Каждый раз, когда телефон регистрируется или меняет статус, происходит запись на диск.
Если у вас 1000 внутренних абонентов и они часто перерегистрируются, ваша дисковая подсистема будет постоянно занята. В то время как другие системы (например, FreeSwitch) давно хранят такие оперативные данные в памяти, Asterisk продолжает «мучить» жесткий диск или SSD. Если диск медленный или начал «сыпаться», тормозить будет вся телефония.
Часто спрашивают: «Сколько звонков выдержит Asterisk?». Ответ всегда индивидуален, но есть архитектурные пределы.
Bridge — это дополнительные блокировки и нагрузка на ядро.Для тех, кто хочет серьезно разобраться в настройке и оптимизации, существуют профильные курсы по Asterisk
, где эти моменты разбираются на практике.
Это, пожалуй, самая известная «болячка». Вы заходите в консоль и видите, что в системе висит 500 каналов, хотя на самом деле никто не разговаривает. Это происходит из-за того, что логика завершения звонка где-то дала сбой — либо из-за проблем в сети, либо из-за ошибки в коде модуля.
В индустрии есть негласное правило: сервер с Asterisk нужно перезагружать. Кто-то делает это раз в неделю, кто-то раз в 48 часов. Как бы хорошо вы ни настроили систему, со временем в ней накапливается «мусор»: утечки памяти, зависшие каналы, заблокированные объекты. Перезагрузка — это самый простой (хоть и не самый изящный) способ вернуть систему в чувство.
Чтобы Asterisk работал долго и счастливо, стоит придерживаться нескольких правил:
Asterisk — это легендарный продукт, но он не всесилен. Его архитектура несет в себе груз решений двадцатилетней давности. Понимая ограничения по количеству блокировок, специфику работы с памятью и диском, можно строить очень надежные системы. Главное — не пытаться сделать из Asterisk высоконагруженный операторский свитч на миллион абонентов без использования вспомогательных инструментов вроде Kamailio. В умелых руках это мощнейший конструктор, в неумелых — источник постоянных ребутов и жалоб на качество связи. Практическая ценность Asterisk в его гибкости, и именно за это ему прощают все архитектурные несовершенства.
Билеты уже в продаже!
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.