среда, 26 марта 2025 г.

История создания IP-PBX Asterisk: эволюция открытой телефонии

IP-PBX Asterisk — это одна из самых популярных и гибких систем IP-телефонии в мире. Она изменила представление о телефонных системах, сделав их доступными и настраиваемыми для широкого круга пользователей. История Asterisk начинается в начале 2000-х годов, когда рынок телефонии был монополизирован крупными вендорами. В этой статье мы подробно разберем ключевые этапы становления Asterisk, его развитие и влияние на сферу VoIP.


Иллюстрация 0: Марка Спенсера в ранние годы разработки Asterisk 2014 год.

Ранние годы: как появилась идея Asterisk

1999 год – начало пути

Разработка Asterisk началась в 1999 году. Создателем проекта стал Марк Спенсер (Mark Spencer), выпускник Auburn University, который основал компанию Digium. На тот момент он работал над программным обеспечением для поддержки своей IT-компании Linux Support Services, но столкнулся с необходимостью построения телефонной системы, которая могла бы обрабатывать вызовы через Интернет.



✍️ Иллюстрация 1: Репродукция как выглядел первый офис Марка Спенсера.


Первые версии и ключевые решения

2000-2003 годы – выход первых версий

Первая версия Asterisk была написана на языке C и предназначалась для работы в среде Linux. Марк Спенсер принял радикальное решение – сделать проект открытым. Он выложил код в открытый доступ под лицензией GNU General Public License (GPL), что позволило разработчикам по всему миру вносить свой вклад в развитие системы.

✍️ Иллюстрация 2: Скриншот первой версии интерфейса Asterisk CLI (Command Line Interface).

Ключевые технологии, которые были внедрены в Asterisk на ранних этапах:

  • Поддержка протоколов SIP и H.323

  • Функции автоматического распределения вызовов (ACD)

  • Интерактивные голосовые меню (IVR)

  • Возможность записи и переадресации звонков


Расширение функционала и поддержка сообщества

2004-2008 годы – рост популярности

К середине 2000-х Asterisk стал полноценной IP-PBX-системой, способной конкурировать с проприетарными решениями таких компаний, как Cisco и Avaya. В 2004 году Digium выпустила первую коммерческую версию Asterisk Business Edition.

✍️ Иллюстрация 3: Логотип Digium и Asterisk в 2005 году.

Главные события этого периода:

  • Поддержка стандарта IAX (Inter-Asterisk eXchange), который позволил эффективно связывать серверы Asterisk.

  • Внедрение AGI (Asterisk Gateway Interface) для интеграции с внешними приложениями.

  • Появление первых графических интерфейсов (FreePBX, Elastix) для удобной настройки системы.


Asterisk в коммерческом секторе

2009-2015 годы – индустриализация VoIP

К этому времени Asterisk стал стандартом де-факто для VoIP-инфраструктуры в малом и среднем бизнесе. Digium активно развивала проект, выпуская улучшенные версии и предлагая аппаратные решения, такие как карты для аналоговых и цифровых линий.

✍️ Иллюстрация 4: Пример использования Asterisk в корпоративной среде (схема соединений).

Ключевые моменты:

  • Расширение совместимости с различными аппаратными устройствами.

  • Улучшенная поддержка кодеков для высококачественной передачи голоса (Opus, G.722).

  • Развитие облачных решений на базе Asterisk.


Современные тенденции и будущее Asterisk

2016 – настоящее время

В последние годы Asterisk продолжает оставаться лидером среди открытых VoIP-платформ. Digium была приобретена компанией Sangoma в 2018 году, что дало новый импульс развитию системы. Сегодня Asterisk используется в облачных телефониях, колл-центрах и даже в проектах с искусственным интеллектом.

✍️ Иллюстрация 5: Логотип Sangoma после поглощения Digium.

Новые функции Asterisk в 2020-х:

  • Интеграция с WebRTC для браузерных звонков.

  • Расширенная поддержка шифрования и безопасности.

  • Использование AI для обработки звонков и анализа речи.



Asterisk совершил настоящую революцию в IP-телефонии, сделав доступными функции, ранее эксклюзивные для крупных корпораций. Благодаря открытости кода и поддержке сообщества, система продолжает развиваться, адаптируясь под современные вызовы. Впереди у Asterisk новые горизонты, связанные с AI, облачными вычислениями и IoT-технологиями.

 Сравнительная таблица функционала Asterisk и коммерческих IP-PBX.

Функция

Asterisk (Open Source)

Коммерческие IP-PBX

Лицензирование

Бесплатно (GPL)

Платное, лицензии на пользователей/модули

Гибкость и кастомизация

Максимальная, можно изменять код и логику

Ограниченная, зависит от производителя

Поддержка SIP и других протоколов

SIP, IAX2, H.323, SCCP, MGCP и др.

Обычно поддержка SIP, возможно H.323

Встроенные функции колл-центра

Есть, но требуется настройка и доработка

Встроены, удобный интерфейс

Голосовые меню (IVR)

Гибкие, настраиваются через dialplan

Предустановленные, могут быть ограничены

Конференц-связь

Есть встроенные модули

Поддерживается, но может требовать доп. лицензий

Поддержка внешних CRM

Возможна интеграция с любыми CRM через API

Ограничена официальными интеграциями

Функции записи разговоров

Встроены, требуют настройки

Встроены, удобный интерфейс

Обновления и поддержка

Сообщество и платные коммерческие версии (AsteriskNOW, FreePBX)

Профессиональная поддержка от производителя

Масштабируемость

Высокая, зависит от серверных мощностей

Ограничена линейкой устройств

Веб-интерфейс для управления

Есть (например, FreePBX), но не в базовой версии

Встроенный, удобный интерфейс

Надежность и отказоустойчивость

Зависят от конфигурации, возможны кластеры

Высокая, предусмотрены резервные механизмы

Стоимость владения

Низкая (бесплатное ПО, но нужна настройка)

Высокая (стоимость лицензий, оборудования, поддержки)

Если у вас есть опыт работы с Asterisk или вы только планируете его внедрение, делитесь своими впечатлениями и вопросами в комментариях!

пятница, 21 марта 2025 г.

Реализация распределенной VoIP-сети с помощью DUNDi в Asterisk

DUNDi (Distributed Universal Number Discovery) — это распределённый механизм маршрутизации вызовов в Asterisk, который позволяет серверам находить и маршрутизировать вызовы между собой без централизованной базы данных.

DUNDi не передаёт голосовой трафик, а только маршруты. Голосовая передача происходит через SIP, IAX2 или другие протоколы.


1. Архитектура сети с DUNDi

Основные компоненты:

  • Несколько Asterisk-серверов (например, asterisk-moscow, asterisk-dubai, asterisk-london).
  • DUNDi для обмена маршрутами между серверами.
  • SIP или IAX2 для передачи аудиопотока.

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


2. Настройка DUNDi на Asterisk

Рассмотрим настройку на примере двух серверов:

  • asterisk-moscow (10.10.10.1)
  • asterisk-dubai (10.10.20.1)

Шаг 1: Установите DUNDi
DUNDi встроен в Asterisk, но его нужно активировать:

module load pbx_dundi.so

Если модуля нет, загрузите его:

module reload pbx_dundi.so

Шаг 2: Настройка ключей шифрования (для безопасности)
Генерируем ключи на обоих серверах:

mkdir /var/lib/asterisk/keys cd /var/lib/asterisk/keys astgenkey -n dundi

Это создаст файлы dundi.pem и dundi.pub.

Скопируйте dundi.pub между серверами:

scp /var/lib/asterisk/keys/dundi.pub root@10.10.20.1:/var/lib/asterisk/keys/

Шаг 3: Конфигурация dundi.conf Файл /etc/asterisk/dundi.conf на asterisk-moscow (10.10.10.1):

[general] department=IT organization=MyCompany locality=Moscow state=RU country=RU email=admin@mycompany.com bindaddr=0.0.0.0 bindport=4520 cachetime=5 ttl=32 autokill=yes [dundi-pub] inkey=dundi outkey=dundi include=priv permit=10.10.20.1 qualify=yes [mappings] priv => dundi_exten,0,IAX2/dundi:${NUMBER}@10.10.20.1,60

Файл /etc/asterisk/dundi.conf на asterisk-dubai (10.10.20.1):

[general] department=IT organization=MyCompany locality=Dubai state=AE country=AE email=admin@mycompany.com bindaddr=0.0.0.0 bindport=4520 cachetime=5 ttl=32 autokill=yes [dundi-pub] inkey=dundi outkey=dundi include=priv permit=10.10.10.1 qualify=yes [mappings] priv => dundi_exten,0,IAX2/dundi:${NUMBER}@10.10.10.1,60

Шаг 4: Настроим extensions.conf Добавляем в диалплан на asterisk-moscow:

[dundi-lookup] exten => _XXXX,1,GotoIf(${DB_EXISTS(dundi/${EXTEN})}?local:remote) exten => _XXXX,n(local),Dial(SIP/${EXTEN},20) exten => _XXXX,n,Hangup() exten => _XXXX,n(remote),Macro(dundi-lookup,${EXTEN})

На asterisk-dubai:

[dundi-lookup] exten => _XXXX,1,GotoIf(${DB_EXISTS(dundi/${EXTEN})}?local:remote) exten => _XXXX,n(local),Dial(SIP/${EXTEN},20) exten => _XXXX,n,Hangup() exten => _XXXX,n(remote),Macro(dundi-lookup,${EXTEN})

Шаг 5: Добавляем IAX2-соединение для голосового трафика Файл /etc/asterisk/iax.conf на asterisk-moscow:

[dundi] type=friend host=10.10.20.1 secret=dundi-secret context=from-dundi

На asterisk-dubai:

[dundi] type=friend host=10.10.10.1 secret=dundi-secret context=from-dundi

3. Проверка работы

1. Запускаем DUNDi и проверяем доступные маршруты

asterisk -rx "dundi show mappings"

Вы должны увидеть список номеров и маршрутов.

2. Ищем номер в сети

dundi lookup 1001@priv

Если номер найден, он будет направлен на нужный сервер.

3. Проверяем связь между серверами Попробуйте вызвать абонента с другого сервера:

sip show peers iax2 show peers

Если всё работает, вызовы будут направляться автоматически.


4. Преимущества и недостатки DUNDi

✅ Преимущества:

  • 🔹 Нет централизованной БД — маршруты находятся динамически.
  • 🔹 Поддержка множества серверов — легко добавлять новые узлы.
  • 🔹 Гибкая маршрутизация — звонки идут кратчайшим путём.
  • 🔹 Высокая отказоустойчивость — если один сервер недоступен, вызов пойдёт по альтернативному маршруту.

❌ Недостатки:

  • DUNDi не передаёт голос, только маршруты — для голосового трафика нужен IAX/SIP.
  • Не работает через NAT без дополнительных настроек — требуется прямое соединение между серверами.
  • Требует настройки безопасности — иначе возможны атаки на маршруты.

5. Когда использовать DUNDi?

Для распределённых VoIP-сетей с множеством офисов.
Для отказоустойчивых решений (если один сервер выходит из строя, другие могут перенять вызовы).
Для маршрутизации номеров между независимыми Asterisk-серверами без единого центра.


DUNDi — это мощный механизм для построения распределённых VoIP-сетей без централизованной базы данных. Он позволяет серверам Asterisk обмениваться маршрутами в реальном времени, обеспечивая гибкость и отказоустойчивость системы. 🚀

Как построить распределённую VoIP-сеть на базе Asterisk с использованием протоколов SIP и IAX для 5000 абонентов?

Построение распределенной VoIP-сети на базе Asterisk с поддержкой 5000 абонентов по SIP и IAX требует грамотного подхода к проектированию инфраструктуры. Ниже приведен план развертывания с учетом отказоустойчивости, масштабируемости и высокой производительности.


1. Архитектура сети

Для обеспечения стабильной работы сети на 5000 абонентов необходимо организовать кластер Asterisk с балансировкой нагрузки. Используем SIP для подключения абонентов и IAX для взаимодействия между серверами.

Основные компоненты:

  • SIP-серверы (Asterisk)
    • Обслуживают абонентов, регистрируют устройства.
  • IAX-транк для межсерверного взаимодействия
    • Снижает нагрузку на сеть за счет меньшего количества пакетов.
  • Сервер базы данных (MySQL, PostgreSQL)
    • Для хранения информации о пользователях и настройках.
  • Балансировщики нагрузки (HAProxy, Kamailio, OpenSIPS)
    • Для распределения нагрузки на SIP-сервера.
  • Сервер мониторинга (Grafana + Prometheus)
    • Для контроля состояния системы.
  • Сервер записи звонков (Asterisk + FFMPEG)
    • Для хранения записей разговоров.

2. Распределение нагрузки

Для стабильной работы сети необходимо использовать кластеризацию Asterisk:

  • Фронтальные SIP-серверы принимают подключения.
  • Бэкэнд-серверы обрабатывают звонки и маршрутизацию.
  • База данных хранит учетные записи и состояние клиентов.

Балансировка:

  • SIP: Kamailio или OpenSIPS (фронтенд для регистрации и маршрутизации).
  • RTP-медиа: Asterisk Media Proxy или RTPEngine.
  • IAX: используется для связи между датацентрами (меньше нагрузки, чем SIP).

3. Протоколы связи

SIP

  • Используется для подключения конечных пользователей.
  • Требует NAT-traversal (STUN/TURN/ICE) для работы через интернет.
  • Балансировка через Kamailio/OpenSIPS.

IAX

  • Используется для связи между серверами Asterisk.
  • Работает через один порт UDP (4569), что снижает требования к NAT.
  • Поддерживает компактное кодирование и уменьшает нагрузку.

4. Серверная инфраструктура

  • Минимальные требования к серверу Asterisk:
    • 8 CPU vCores
    • 16 GB RAM
    • SSD NVMe (для записи CDR и хранения записей разговоров)
    • 1 Gbps сеть
  • Минимальные требования к базе данных:
    • 16 CPU vCores
    • 32 GB RAM
    • SSD RAID10

5. Кодеки

Для обеспечения качества связи и минимизации нагрузки на сеть:

  • G.711 (внутри сети, высокая нагрузка на канал)
  • G.729 (экономия трафика, лицензия нужна)
  • Opus (адаптивный, хорошее качество при слабом интернете)
  • Speex (для низкоскоростных каналов)

6. Безопасность

  • Fail2Ban — защита от брутфорса.
  • TLS + SRTP — шифрование сигнала и аудиопотока.
  • ACL — ограничение доступа по IP-адресам.
  • Kamailio/OpenSIPS — защита от DDoS и флуда.

7. Масштабирование

Для поддержки 5000 абонентов сеть можно горизонтально масштабировать:

  • Добавлять SIP/Asterisk-серверы по мере роста нагрузки.
  • Использовать IAX для межсерверного взаимодействия.
  • Хранить учетные записи и состояние в распределенной базе данных (Galera Cluster, PostgreSQL + TimescaleDB).

8. Мониторинг и логирование

  • Prometheus + Grafana — мониторинг ресурсов и нагрузки.
  • ELK Stack (Elasticsearch + Logstash + Kibana) — логирование и анализ SIP/IAX-трафика.
  • sngrep — удобный инструмент для диагностики SIP-звонков.

9. Автоматизация

  • Ansible — для настройки и обновления серверов.
  • Docker + Kubernetes — если нужен контейнерный подход.

Для построения сети на 5000 абонентов необходимо:

  1. Развернуть кластер Asterisk с балансировкой нагрузки.
  2. Использовать SIP для абонентов и IAX для межсерверного взаимодействия.
  3. Внедрить балансировку (Kamailio, OpenSIPS) и отказоустойчивость.
  4. Защитить сеть с помощью TLS, SRTP, Fail2Ban.
  5. Настроить мониторинг (Prometheus, Grafana) и логирование (ELK).
  6. Оптимизировать кодеки и сеть для экономии ресурсов.

Такой подход обеспечит устойчивость, отказоустойчивость и гибкость системы. 🚀


Как сделать перемешанный диалплан внутренних номеров в Asterisk, чтобы абоненты не были привязаны к одному офису?

Когда компания имеет несколько офисов или сотрудников на удалённой работе, важно, чтобы внутренние номера были независимы от географии. Это позволяет пользователям звонить друг другу по коротким номерам, независимо от их физического местоположения.


Варианты реализации распределённого диалплана

1. Централизованный Asterisk с SIP-регистрацией удалённых абонентов

  • Все телефоны регистрируются на едином сервере Asterisk.
  • Внутренние номера (например, 1000-5999) могут быть назначены случайным образом или по логике бизнеса.
  • Плюсы:
    • Простота управления.
    • Все абоненты работают как единая система.
    • Нет сложностей с маршрутизацией между офисами.
  • Минусы:
    • Централизованный сервер требует мощного хостинга.
    • Зависимость от интернет-канала каждого филиала.

2. Использование IAX или SIP-транков между Asterisk-серверами

  • В каждом офисе локальный Asterisk, связанный с другими через IAX2 или SIP-транки.
  • В диалплане каждого сервера прописаны правила, куда передавать вызовы:
    exten => _1XXX,1,Dial(IAX2/office2/${EXTEN}) exten => _2XXX,1,Dial(IAX2/office3/${EXTEN})
  • Можно использовать динамическую маршрутизацию:
    • База данных с таблицей номер → сервер.
    • Asterisk делает SQL-запрос перед маршрутизацией.
  • Плюсы:
    • Каждый офис имеет локальный сервер, что снижает зависимость от интернета.
    • Возможность балансировки нагрузки между серверами.
  • Минусы:
    • Требуется синхронизация данных (например, с помощью MySQL или Redis).

3. Использование Kamailio/OpenSIPS в качестве SIP-роутера

  • Kamailio/OpenSIPS обрабатывает входящие SIP-регистрации и маршрутизирует звонки.
  • У каждого абонента есть внутренний номер, но его сервер регистрации определяется динамически.
  • Пример логики:
    1. Абонент 1001 регистрируется в Москве → маршрутизация на сервер asterisk-moscow
    2. Абонент 1002 в Дубае → маршрутизация на asterisk-dubai
    3. Если абонент перемещается, маршрутизация обновляется.
  • Плюсы:
    • Высокая отказоустойчивость.
    • Централизованное управление с распределёнными серверами.
    • Гибкость (можно менять номера без привязки к конкретным серверам).
  • Минусы:
    • Требует знаний Kamailio/OpenSIPS.
    • Дополнительная инфраструктура (база данных, балансировка).

4. SIP-роуминг с динамическим определением местоположения

  • Используем два сервера Asterisk:
    • home-asterisk (базовый сервер).
    • office-asterisk (сервер для роуминга).
  • Абоненты регистрируются там, где им удобнее, а Asterisk направляет вызовы по текущему местоположению.
  • Реализуется через:
    • Реестр (MySQL/PostgreSQL/Redis), в котором хранятся "где зарегистрирован номер".
    • При вызове делается SQL-запрос:
      SELECT server FROM sip_users WHERE extension='1001';
    • Если server=office2, вызываем через SIP-транк:
      exten => 1001,1,Dial(SIP/1001@office2)
  • Плюсы:
    • Абоненты могут перемещаться между офисами без смены номера.
    • Поддержка роуминга без изменения конфигурации телефонов.
  • Минусы:
    • Требуется интеграция с базой данных.
    • Усложняется поддержка.

Как выбрать лучший вариант?

ВариантПростотаМасштабируемостьГибкостьТребования
Централизованный сервер✅ Легко❌ Ограничено❌ Не гибкоХороший интернет
SIP/IAX транки⚠ Средне✅ Высокая⚠ СредняяСвязь между серверами
Kamailio/OpenSIPS❌ Сложно✅ Очень высокая✅ Очень гибкоDevOps-опыт
SIP-роуминг⚠ Средне✅ Высокая✅ ГибкоИнтеграция с БД

Вывод

  • Для малого бизнеса (1-2 офиса) → SIP/IAX-транки между серверами.
  • Для среднего бизнеса (3-5 офисов) → динамическая маршрутизация через БД.
  • Для большого бизнеса (10+ офисов) → Kamailio/OpenSIPS + Asterisk.

Таким образом, можно создать гибкий, отказоустойчивый и масштабируемый диалплан, независимый от географии. 🚀

четверг, 20 марта 2025 г.

Как определить доступность мобильного абонента: интеграция со CRM и Колл-Центром

В работе колл-центров и CRM-систем важно знать, доступен ли абонент перед отправкой SMS, совершением звонка или запуском рекламной кампании. Это позволяет снизить затраты, повысить эффективность коммуникаций и улучшить клиентский сервис. В данной статье мы разберем основные способы определения статуса мобильного абонента и их интеграцию с бизнес-процессами.

1. HLR-запрос (Home Location Register)

HLR-запрос — это один из самых надежных способов проверки доступности абонента. Он позволяет получить данные из регистра оператора о текущем статусе абонента:

  • Включен ли телефон

  • В сети ли он

  • Находится ли в роуминге

  • Какой последний зарегистрированный коммутатор (MSC)

Интеграция в CRM/Колл-центр:

  • Автоматическая проверка перед отправкой SMS или звонком

  • Фильтрация номеров с ошибками (неактивные, заблокированные)

  • Оптимизация маршрутизации звонков

2. Отправка Silent SMS (невидимого SMS)

Silent SMS — это скрытое сообщение, которое не отображается на экране телефона, но фиксируется в сети оператора. Оно используется для проверки доступности абонента.

Преимущества:

  • Работает незаметно для клиента

  • Позволяет определить, находится ли телефон в сети

  • Используется в системах безопасности и банках

Как использовать:

  • Интеграция с SMS-шлюзами

  • Автоматическая проверка перед отправкой важных сообщений

3. Анализ статуса доставки SMS (DLR)

Если отправить обычное SMS, можно получить отчет о его доставке (Delivery Report, DLR). По статусу можно определить, активен ли номер:

  • DELIVERED – абонент в сети

  • FAILED/EXPIRED – телефон выключен или вне зоны действия

  • UNKNOWN – номер может быть недействительным

Интеграция в CRM/Колл-центр:

  • Автоматический запуск звонка только на активные номера

  • Исключение недоступных номеров из рассылок

4. Прозвон с анализом гудков (Call Check)

Один из самых простых способов – позвонить на номер и анализировать результат:

  • Гудки идут – телефон включен, абонент доступен

  • Автоответчик сразу включается – возможно, телефон выключен

  • Абонент временно недоступен – вне зоны покрытия

Автоматизация в CRM:

  • Роботизированный обзвон перед основной кампанией

  • Исключение неактивных номеров из базы

5. USSD-запросы

Некоторые операторы позволяют выполнять USSD-запросы для проверки статуса номера. Например, команды *#62# или *#21# позволяют узнать состояние переадресации вызовов.

Использование:

  • Автоматический запрос через API оператора

  • Проверка активности номера перед звонком

6. VLR-запрос (Visitor Location Register)

VLR-запрос работает аналогично HLR, но позволяет определить, в каком регионе или сети зарегистрирован телефон. Используется редко из-за сложности доступа.

7. Проверка через мессенджеры

Многие мессенджеры, такие как WhatsApp, Telegram и Viber, позволяют определить активность номера:

  • WhatsApp API позволяет проверить, зарегистрирован ли номер

  • Telegram показывает последний вход

  • Viber сообщает, доступен ли пользователь

Применение в CRM:

  • Определение предпочтительного канала связи

  • Отправка сообщений только в активные мессенджеры

Заключение

Выбор метода проверки зависит от задач бизнеса, доступных технологий и бюджета. Наиболее надежный способ – HLR-запрос, но можно также использовать Silent SMS, DLR-статусы или прозвон. Интеграция этих методов в CRM и колл-центры позволяет:

  • Сократить затраты на связь

  • Улучшить клиентский сервис

  • Повысить эффективность маркетинговых кампаний

Какие методы используете вы в своей работе? Делитесь опытом в комментариях!

Организация Колл-Центра на базе IP АТС Asterisk

Колл-центр — это ключевой элемент бизнеса, обеспечивающий взаимодействие с клиентами. Создание колл-центра на базе IP АТС Asterisk позволяет получить гибкое, экономичное и масштабируемое решение. В этой статье разберём особенности организации такого колл-центра, технические требования, настройку и функциональные возможности.

Особенности организации колл-центра на Asterisk

  1. Гибкость и масштабируемость

    • Asterisk поддерживает широкие возможности настройки, позволяя адаптировать систему под нужды бизнеса.

    • Простота интеграции с CRM-системами и другими бизнес-инструментами.

  2. Оборудование и инфраструктура

    • Сервер с достаточными ресурсами для обработки звонков.

    • IP-телефоны или софтфоны для операторов.

    • Надёжное интернет-соединение и SIP-провайдер.

  3. Функциональные возможности

    • Очереди вызовов и маршрутизация.

    • Автоответчики и голосовые меню (IVR).

    • Запись разговоров для контроля качества.

    • Интерактивная статистика и мониторинг операторов.

    • Поддержка многоканальности для обработки большого количества звонков.

    • Интерактивное голосовое меню (IVR) для автоматической обработки вызовов.

    • Интеграция с CRM для автоматической идентификации клиентов.

    • Настройка приоритетов вызовов и стратегий распределения звонков.

    • Контроль времени ожидания и возврат звонков в очередь.

Технические решения для колл-центра на Asterisk

  • Predictive Dialer – система автоматического обзвона клиентов.

  • QueueMetrics – мощная система аналитики для мониторинга работы операторов.

  • FreePBX или Issabel – удобные графические интерфейсы для управления Asterisk.

  • SIP-транки – обеспечение связи с операторами связи.

  • Call Recording – возможность записи всех звонков для последующего анализа.

Инструкция по настройке колл-центра в Asterisk

1. Установка Asterisk

2. Настройка SIP-транков

  • Открыть файл /etc/asterisk/sip.conf.

  • Добавить настройки провайдера SIP:

  • Перезапустить Asterisk: sudo systemctl restart asterisk.

3. Создание очередей вызовов

Очереди позволяют распределять звонки между агентами.

  • Открыть /etc/asterisk/queues.conf и добавить:

4. Настройка агентов

  • Операторы регистрируются в /etc/asterisk/agents.conf:

5. Настройка IVR (Голосового меню)

  • Открыть /etc/asterisk/extensions.conf и добавить:

6. Подключение операторов

  • В файле /etc/asterisk/sip.conf добавить:

7. Запуск и тестирование

  • Перезапустить Asterisk: sudo systemctl restart asterisk.

  • Проверить регистрацию операторов командой: asterisk -rvvv.

  • Провести тестовые звонки и убедиться в корректной маршрутизации.

Описание ключевых параметров Asterisk

  • strategy – метод распределения звонков (roundrobin, leastrecent, random и др.).

  • timeout – максимальное время ожидания ответа от оператора.

  • retry – время до повторного вызова свободного оператора.

  • wrapuptime – пауза между вызовами для оператора.

  • maxlen – максимальное количество ожидающих в очереди.

  • announce-holdtime – включает уведомление о времени ожидания.

  • context – задаёт область видимости для вызовов.

  • callerid – идентификатор звонящего.

Выбор тарифов и операторов связи

Правильный выбор оператора связи – один из ключевых аспектов, влияющих на затраты и качество работы колл-центра. Основные критерии:

  • Стоимость исходящих и входящих звонков.

  • Наличие безлимитных тарифов.

  • Качество связи и наличие резервных каналов.

  • Возможность интеграции с SIP-транками.


Колл-центр на Asterisk – это эффективное решение для бизнеса, позволяющее оптимизировать работу операторов и снизить затраты. Грамотный выбор оборудования, настройка системы и подбор тарифов обеспечат бесперебойную работу и высокий уровень обслуживания клиентов.

вторник, 4 марта 2025 г.

Подробное описание маршрутизации SMS через SMPP в сети провайдера.

Что такое SMPP?

SMPP (Short Message Peer-to-Peer) — это открытый телекоммуникационный протокол, используемый для передачи SMS-сообщений между системами, такими как SMS-центры (SMSC), шлюзы и серверы приложений.

Протокол SMPP разработан для высокоскоростной передачи SMS и широко используется в телекоммуникациях для взаимодействия между сервисами, которые отправляют и получают сообщения, например, операторами мобильной связи, сервисами аутентификации и маркетинговыми платформами.


Как работает SMPP?

SMPP использует модель клиент-сервер, где:

  • ESME (External Short Messaging Entity) — это клиент (например, веб-приложение, сервер рассылки), который подключается к SMSC.
  • SMSC (Short Message Service Center) — это сервер, который отвечает за прием, обработку и доставку SMS.
  • SMPP-сервер — это посредник, который принимает соединения от клиентов (ESME) и передает их в SMSC.

Основные этапы работы:

  1. Установление соединения: Клиент (ESME) подключается к серверу (SMSC) через TCP/IP, используя команду Bind (bind_transmitter, bind_receiver, bind_transceiver).
  2. Аутентификация: Происходит проверка учетных данных клиента.
  3. Отправка SMS: Клиент отправляет команду Submit_SM, передавая текст и параметры сообщения.
  4. Подтверждение доставки: SMSC отправляет статус доставки с помощью Delivery Report (если включено).
  5. Закрытие соединения: После завершения работы клиент отправляет Unbind, и соединение закрывается.

SMPP использует порт 2775 по умолчанию и поддерживает различные кодировки (ASCII, UCS2, Latin-1).


Где используется SMPP?

SMPP применяется в различных областях, где требуется массовая или автоматизированная отправка SMS:

  1. Мобильные операторы — для передачи SMS между сетями.
  2. Банки и финансовые организации — для отправки одноразовых паролей (OTP) и уведомлений.
  3. Маркетинговые компании — для массовых SMS-рассылок.
  4. Системы уведомлений — оповещения клиентов о статусе заказов, доставке и др.
  5. Двухфакторная аутентификация (2FA) — для подтверждения личности пользователей.

Пример работы SMPP на Python с библиотекой smpplib

Этот код подключается к SMSC, отправляет SMS и закрывает соединение:

import smpplib.client import smpplib.consts client = smpplib.client.Client('smsc.example.com', 2775) # Подключение и аутентификация client.connect() client.bind_transmitter(system_id='user', password='password') # Отправка SMS client.send_message({ 'short_message': 'Hello, SMPP!', 'source_addr': 'SenderID', 'destination_addr': '79991112233', 'esm_class': 0, 'data_coding': smpplib.consts.SMPP_ENCODING_DEFAULT }) # Закрытие соединения client.unbind() client.disconnect()

Этот код показывает базовый принцип работы SMPP, но на практике операторы предоставляют доступ через авторизованные SMPP-шлюзы.

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

Зачем был разработан SMPP?

SMPP (Short Message Peer-to-Peer) был разработан специально для передачи SMS между различными системами в телекоммуникационных сетях. Его создание обусловлено несколькими факторами:

  1. Эффективность и скорость – До SMPP передача SMS осуществлялась через протоколы SS7, которые не были оптимизированы для взаимодействия с внешними приложениями. SMPP позволил приложениям взаимодействовать с SMSC через IP-сети, что увеличило производительность и уменьшило задержки.

  2. Поддержка массовых отправок – SMPP предоставляет надежную архитектуру для отправки и получения большого количества SMS в секунду, что необходимо для маркетинговых сервисов и уведомлений.

  3. Гибкость – В отличие от USSD или SS7, SMPP поддерживает разные кодировки сообщений (ASCII, UCS2, Binary) и позволяет передавать не только текстовые SMS, но и мультимедийные данные (WAP Push, MMS).

  4. Двусторонняя передача SMS – SMPP поддерживает как отправку SMS (MT — Mobile Terminated), так и прием (MO — Mobile Originated), что важно для двухфакторной аутентификации (2FA), уведомлений и чатов.


На каком уровне OSI работает SMPP?

SMPP работает на сеансовом уровне (Session Layer, уровень 5 модели OSI), так как он управляет установлением, поддержанием и завершением соединения между SMSC и клиентом.

Однако он опирается на более низкие уровни:

  • Транспортный уровень (Layer 4) – использует TCP для передачи данных.
  • Сетевой уровень (Layer 3) – задействует IP для маршрутизации пакетов через сеть.

Архитектура SMPP

SMPP использует модель клиент-сервер, где взаимодействуют три ключевых компонента:

  1. ESME (External Short Messaging Entity) – это клиентское приложение (например, сервер SMS-рассылки или CRM-система), отправляющее и получающее SMS через SMSC.
  2. SMSC (Short Message Service Center) – центральный узел оператора мобильной связи, который принимает, обрабатывает и отправляет SMS к конечному абоненту.
  3. SMPP-сервер или SMS-шлюз – может быть промежуточным сервером между ESME и SMSC, обеспечивая балансировку нагрузки и маршрутизацию.

🔹 Режимы работы SMPP:

  • Transmitter (TX) – клиент только отправляет SMS.
  • Receiver (RX) – клиент только принимает SMS.
  • Transceiver (TRX) – клиент может как отправлять, так и принимать SMS (используется чаще всего).

Формат PDU (Protocol Data Unit) SMPP

SMPP использует двоичный формат сообщений (PDU — Protocol Data Unit). Структура PDU включает заголовок и тело сообщения.

1. SMPP-заголовок (PDU Header)

Все PDU-сообщения содержат фиксированный заголовок из 16 байт:

ПолеРазмер (байт)Описание
command_length4Длина всего PDU (включая заголовок и тело)
command_id4Тип SMPP-команды (например, 0x00000004 для Submit_SM)
command_status4Код ошибки (0 = успех, остальные коды – ошибки)
sequence_number4Уникальный идентификатор сообщения

2. SMPP-тело (Body, PDU Payload)

Содержит поля, которые зависят от типа PDU. Рассмотрим наиболее важные команды:

📨 Submit_SM (отправка SMS)

Структура PDU для отправки SMS (Submit_SM):

ПолеРазмер (байт)Описание
service_type6Тип сервиса (обычно NULL)
source_addr_ton1Тип номера отправителя (1 = International, 5 = Alphanumeric)
source_addr_npi1План нумерации (1 = E.164)
source_addrДо 21Номер отправителя (например, "MyCompany")
dest_addr_ton1Тип номера получателя
dest_addr_npi1План нумерации получателя
destination_addrДо 21Номер получателя
esm_class1Флаг расширенных сообщений (0 = обычное SMS, 64 = сообщение с Delivery Report)
protocol_id1ID протокола (0 = обычное SMS)
priority_flag1Приоритет (0 = обычное, 1 = приоритетное)
schedule_delivery_time1Время отложенной отправки (NULL – сразу)
validity_period1Время жизни сообщения
registered_delivery1Требуется ли отчет о доставке (1 = да, 0 = нет)
data_coding1Кодировка сообщения (0 = ASCII, 8 = UCS2)
sm_length1Длина текстового сообщения
short_messageДо 255Текст SMS

Пример бинарного пакета Submit_SM:

0000003C 00000004 00000000 00000001 00 01 01 73706D70 01 01 3737393939313132323333 00 00 00 00 08 11 48 65 6C 6C 6F

(Где Hello – это сообщение, закодированное в UCS2)

📩 Deliver_SM (получение SMS)

Используется для доставки входящего SMS от SMSC клиенту. Поля аналогичны Submit_SM, но содержит message_id.

📜 Deliver_SM_RESP (подтверждение доставки SMS)

Отправляется сервером в ответ на Deliver_SM.


Пример работы SMPP

Простой Python-скрипт, отправляющий SMS через SMPP:

import smpplib.client import smpplib.consts # Подключение к SMPP-серверу client = smpplib.client.Client('smsc.example.com', 2775) client.connect() client.bind_transceiver( system_id='user', password='password' ) # Отправка SMS client.send_message({ 'short_message': 'Test message', 'source_addr': 'MyCompany', 'destination_addr': '79991112233', 'esm_class': 0, 'data_coding': smpplib.consts.SMPP_ENCODING_DEFAULT }) client.unbind() client.disconnect()

🔹 SMPP был разработан для эффективной отправки SMS по IP-сетям, заменяя старые протоколы.
🔹 Работает на сеансовом уровне OSI (Layer 5), используя TCP для транспорта.
🔹 Использует бинарные PDU с заголовками и параметрами сообщений.
🔹 Поддерживает массовые SMS, двустороннюю связь, маркетинг, уведомления и 2FA.

Этот протокол остается стандартом в индустрии и широко используется сервисами SMS-рассылки. 🚀

Что такое PDU в SMPP?

PDU (Protocol Data Unit) – это двоичный пакет данных, который передается между клиентом (ESME) и сервером (SMSC) в рамках SMPP-протокола.

Каждое сообщение в SMPP представляется в формате PDU и включает:

  1. Заголовок – содержит идентификатор команды, статус выполнения и длину пакета.
  2. Тело – содержит параметры, такие как номер отправителя, номер получателя, текст сообщения и кодировка.

Сколько SMS можно отправить в одном пакете или за одну сессию?

1. В одном пакете (PDU)

📦 Одна PDU-посылка может содержать только одно SMS.

SMPP не позволяет отправлять несколько сообщений в одном PDU. Однако, если сообщение длиннее 160 символов (в ASCII) или 70 символов (в UCS2), оно разбивается на несколько сегментов (multipart SMS) с заголовком UDH (User Data Header).

2. В одной сессии

🔄 Одна SMPP-сессия позволяет отправить тысячи SMS.

Количество сообщений, отправляемых за одну сессию, зависит от:

  • Полосы пропускания сети.
  • Ограничений на стороне SMSC.
  • Конфигурации SMPP-клиента (например, через window_size, который определяет, сколько сообщений можно отправлять без подтверждения).

Сервер может ограничить максимальную скорость отправки (например, 100 SMS в секунду).


Какого максимального размера может быть SMS?

Максимальный размер SMS зависит от кодировки:

КодировкаМаксимальная длина одного SMSДлина сегмента в multipart SMS
GSM 7-bit (латиница)160 символов153 символа
UCS2 (UTF-16) (кириллица, иероглифы)70 символов67 символов

Если сообщение длиннее, оно разбивается на части по 153 символа (GSM 7-bit) или 67 символов (UCS2) с добавлением UDH-заголовка (6 байт), который связывает сегменты.

Пример разбиения длинного SMS

Исходный текст (200 символов, латиница):

Hello, this is a long message that exceeds 160 characters. It needs to be split into multiple parts so that it can be transmitted via SMS without losing any information.

Разделение на 2 части:

  1. 153 символа (PDU 1)
  2. Оставшиеся 47 символов (PDU 2)

PDU-фрагменты будут содержать заголовки UDH, которые указывают, что это часть длинного сообщения.


Как отправляется самое короткое SMS?

Самое короткое SMS – это пустое сообщение (длиной 0 байт).

Пример PDU для самого короткого SMS (Submit_SM)

0000001D 00000004 00000000 00000001 00 01 01 73706D70 01 01 3737393939313132323333 00 00 00 00 08 00

🔹 В этом пакете:

  • 0000001D – длина PDU.
  • 00000004 – команда Submit_SM.
  • 73706D70 – отправитель.
  • 3737393939313132323333 – номер получателя.
  • 08 – UCS2 кодировка.
  • 00 – длина сообщения (то есть, пустое SMS).

Такое сообщение может быть интерпретировано оператором как "пинг" или сигнал активности.


Примеры работы SMPP с длинными и короткими SMS на Python

1. Отправка обычного SMS

import smpplib.client import smpplib.consts client = smpplib.client.Client('smsc.example.com', 2775) client.connect() client.bind_transmitter(system_id='user', password='password') client.send_message({ 'short_message': 'Hello!', 'source_addr': 'MyCompany', 'destination_addr': '79991112233', 'esm_class': 0, 'data_coding': smpplib.consts.SMPP_ENCODING_DEFAULT }) client.unbind() client.disconnect()

2. Отправка длинного SMS (разбиение на сегменты)

long_message = "This is a long SMS that exceeds 160 characters. It needs to be split into multiple parts to ensure proper delivery without loss of information." client.send_message({ 'short_message': long_message, 'source_addr': 'MyCompany', 'destination_addr': '79991112233', 'esm_class': 64, # Включает UDH 'data_coding': smpplib.consts.SMPP_ENCODING_DEFAULT })

SMPP автоматически разобьет это сообщение на multipart SMS.

3. Отправка самого короткого SMS (пустого)

client.send_message({ 'short_message': '', 'source_addr': 'MyCompany', 'destination_addr': '79991112233', 'data_coding': smpplib.consts.SMPP_ENCODING_DEFAULT })

✅ SMPP использует PDU для передачи SMS и поддерживает массовую отправку.
✅ Одно SMS = один PDU (но длинные сообщения разбиваются на несколько PDU).
✅ Максимальная длина 160 символов (GSM) или 70 символов (UCS2), длинные SMS разбиваются на части.
✅ Самое короткое SMS – пустое (short_message = ''), передается в минимальном PDU.

SMPP остается стандартом для операторов связи и сервисов SMS-рассылок 🚀.

Полный процесс передачи SMS от ESME до мобильного телефона (кнопочного и смартфона)

Передача SMS от ESME (External Short Messaging Entity) (например, сервер отправки SMS) до мобильного телефона проходит через несколько узлов телекоммуникационной сети.

🔹 Основные участники процесса:

  1. ESME (SMS-шлюз или приложение отправки SMS)
  2. SMPP-сервер (SMSC – Short Message Service Center)
  3. HLR (Home Location Register) / VLR (Visitor Location Register)
  4. MSC (Mobile Switching Center)
  5. BSC (Base Station Controller) / RNC (Radio Network Controller)
  6. BTS (Base Transceiver Station) / NodeB / eNodeB / gNodeB
  7. Мобильное устройство (кнопочный телефон или смартфон)

🔗 Подробное описание маршрута SMS

1. ESME отправляет SMS через SMPP

  • ESME (например, банковский сервер или маркетинговая платформа) соединяется с SMSC через SMPP-протокол.
  • Отправляет команду Submit_SM с номером получателя, текстом сообщения и другими параметрами.
  • SMSC подтверждает прием SMS ответом Submit_SM_RESP.

📌 На этом этапе сообщение пока не доставлено абоненту, оно хранится в SMSC!


2. SMSC проверяет статус получателя

  • SMSC запрашивает в HLR (Home Location Register) текущее местоположение абонента.
  • HLR отвечает, где находится телефон (номер MSC/VLR, к которому он подключен).
  • Если телефон недоступен – SMS сохраняется в SMSC и будет доставлено позже.

3. SMSC отправляет SMS в сеть оператора (через MSC)

  • SMSC передает сообщение в соответствующий MSC (Mobile Switching Center), который управляет зоной, где находится телефон.
  • MSC определяет, куда именно передать SMS (ищет в VLR).
  • Если телефон в роуминге, SMS отправляется в другой MSC через SS7-сигнализацию.

4. Доставка SMS через базовые станции (BTS, BSC, RNC, NodeB)

  • MSC отправляет SMS в BSC (Base Station Controller) – контроллер базовых станций.
  • BSC передает сообщение в BTS (Base Transceiver Station) – это вышка мобильной связи.
  • BTS передает SMS через радиоканал на телефон с помощью SACCH (Slow Associated Control Channel).

📌 SMS передается в момент ожидания или во время голосового вызова, используя специальные сигнальные каналы.


5. Телефон принимает SMS и сохраняет в памяти

  • Кнопочный телефон или смартфон получает SMS через GSM/UMTS/LTE/5G радиоканал.
  • Телефон отправляет подтверждение доставки (Delivery Report) в SMSC.
  • SMSC отвечает ESME (если запрошен статус доставки) через Deliver_SM_RESP.

📌 Теперь сообщение отображается в SMS-приложении телефона!


📡 Полный маршрут SMS на схемах

📍 Сценарий 1: Телефон включен, сообщение доставляется сразу

ESME → SMPP → SMSC → HLR/VLR → MSC → BSC → BTS → Телефон 📲
  1. ESME отправляет SMS в SMSC через SMPP.
  2. SMSC запрашивает HLR, чтобы узнать, где находится телефон.
  3. HLR сообщает MSC, который управляет зоной телефона.
  4. MSC передает SMS через BSC и BTS в телефон.
  5. Телефон принимает SMS и отправляет Delivery Report обратно в SMSC.

📍 Сценарий 2: Телефон выключен, SMS хранится в SMSC

ESME SMPP SMSC HLR: Телефон недоступен SMSC хранит сообщение 🕒
  1. SMSC отправляет запрос в HLR – где находится телефон?
  2. HLR отвечает: телефон отключен.
  3. SMSC сохраняет сообщение в памяти и ждет, когда телефон появится в сети.
  4. Когда телефон включится, SMSC повторит отправку SMS.

📊 Отличия в доставке SMS на кнопочные телефоны и смартфоны

ФакторКнопочный телефонСмартфон
Технология передачиGSM (2G)GSM, UMTS, LTE, 5G
Каналы передачиSACCH (Slow Associated Control Channel)NAS (Non-Access Stratum)
Обработка SMSSIM-карта или память телефонаSMS-приложение или SIM-карта
Форматы SMSТекстовые и бинарные (Ringtones, WAP Push)Текстовые, MMS, RCS (если поддерживается)

🔹 Смартфоны могут использовать альтернативные сервисы (RCS, мессенджеры), но SMS остается основным каналом связи.


💡 Пример работы протокола SMPP для отправки SMS

import smpplib.client import smpplib.consts # Подключаемся к SMSC client = smpplib.client.Client('smsc.example.com', 2775) client.connect() client.bind_transceiver(system_id='user', password='password') # Отправляем SMS client.send_message({ 'short_message': 'Привет! Это тестовое SMS.', 'source_addr': 'MyCompany', 'destination_addr': '79991112233', 'esm_class': 0, # Обычное SMS 'data_coding': smpplib.consts.SMPP_ENCODING_DEFAULT }) # Закрываем соединение client.unbind() client.disconnect()

📌 Этот код отправит SMS через SMPP в SMSC, а затем оно пройдет через всю сеть до телефона получателя!


📌 Вывод

🔹 SMS проходит через множество узлов сети (SMSC, HLR, MSC, BSC, BTS).
🔹 HLR играет ключевую роль, определяя, где находится абонент.
🔹 Телефон получает SMS через радиоканалы (SACCH, NAS).
🔹 SMPP используется для взаимодействия с SMSC, а затем SMS передается через SS7/GSM-сети.
🔹 Если телефон недоступен, SMS хранится в SMSC и отправляется позже.

📱 Даже в эпоху мессенджеров SMS остаются важным каналом связи, особенно для банков, авторизаций и экстренных уведомлений! 🚀


🔹 Что такое HLR/VLR и их роль в мобильных сетях?

HLR (Home Location Register) и VLR (Visitor Location Register) – это базы данных, которые управляют мобильными абонентами в сети оператора.

🔹 HLR (Главный регистр местоположения)

  • Центральная база данных, где хранятся все абоненты оператора.
  • Содержит постоянную информацию о номере телефона, услугах, IMSI (уникальный идентификатор SIM-карты) и текущем MSC/VLR, где зарегистрирован абонент.
  • Взаимодействует с MSC и VLR для маршрутизации звонков и SMS.

🔹 VLR (Регистр местоположения посетителей)

  • Локальная база данных, которая хранит временную информацию о телефонах, находящихся в зоне покрытия конкретного MSC.
  • Позволяет быстро маршрутизировать звонки и SMS без постоянных запросов в HLR.

📡 Как работают HLR и VLR?

1. Регистрация абонента в сети (Attach)

Когда телефон включается:

  1. SIM-карта отправляет IMSI в сеть через BTS → BSC → MSC.
  2. MSC отправляет запрос в HLR с IMSI, чтобы проверить, зарегистрирован ли абонент.
  3. HLR обновляет MSC/VLR абонента и отправляет подтверждение.
  4. VLR сохраняет временные данные (номер, статус, разрешенные услуги).

📌 Теперь телефон зарегистрирован в сети!


2. Исходящий звонок или SMS

Когда абонент звонит:

  1. Телефон отправляет запрос через BTS → BSC → MSC.
  2. MSC проверяет в VLR, есть ли абонент в сети.
  3. MSC маршрутизирует вызов через сеть SS7 к другому MSC или внешней телефонной сети (PSTN, VoIP).
  4. BTS передает голос по радиоканалу на телефон собеседника.

📌 Звонок проходит в реальном времени через коммутаторы сети!


3. Входящий звонок или SMS

Когда абоненту звонят:

  1. HLR получает запрос от другого оператора или SMSC.
  2. HLR проверяет, в каком MSC/VLR зарегистрирован телефон.
  3. HLR отправляет MSC команду маршрутизации (через SS7 – протокол MAP).
  4. MSC передает звонок через BSC → BTS → телефон.

📌 Если телефон недоступен, звонок переадресуется или идет в голосовую почту!


4. Роуминг (международный или национальный)

Если телефон уехал в другую страну:

  1. MSC гостевой сети отправляет запрос в HLR домашней сети через SS7.
  2. HLR разрешает регистрацию в новой сети и передает данные в VLR гостевой сети.
  3. Входящие звонки/SMS маршрутизируются через гостевой MSC.

📌 HLR постоянно отслеживает, где находится абонент!


🔎 Подробная работа узлов мобильной сети

📍 1. HLR (Home Location Register)

🔹 Функции:

  • Хранит информацию обо всех абонентах оператора.
  • Определяет текущее местоположение телефона.
  • Управляет роумингом.
  • Хранит статус услуг (SMS, голосовая почта, интернет).

🔹 Протоколы:

  • SS7 (Signaling System 7) – для связи с MSC и VLR.
  • MAP (Mobile Application Part) – управляет мобильными сервисами.

📍 2. VLR (Visitor Location Register)

🔹 Функции:

  • Временно хранит данные абонентов, находящихся в зоне конкретного MSC.
  • Позволяет MSC быстро маршрутизировать звонки и SMS без постоянных запросов в HLR.

🔹 Протоколы:

  • MAP (Mobile Application Part) – синхронизация с HLR.
  • BSSAP (Base Station System Application Part) – взаимодействие с BSC.

📍 3. MSC (Mobile Switching Center)

🔹 Функции:

  • Управляет звонками, SMS и передачей данных.
  • Связывает мобильные телефоны с PSTN (обычная телефонная сеть).
  • Запрашивает у HLR/VLR, где находится абонент.
  • Маршрутизирует звонки в международные сети (через GMSC – Gateway MSC).

🔹 Протоколы:

  • SS7 (MAP, ISUP, SCCP) – маршрутизация звонков.
  • CAP (CAMEL Application Part) – управление услугами (баланс, переадресация).
  • BSSAP – связь с BSC.

📍 4. BSC (Base Station Controller)

🔹 Функции:

  • Управляет группой базовых станций (BTS).
  • Контролирует качество связи, переключение между сотами (handover).
  • Передает голос и SMS от MSC к BTS.

🔹 Протоколы:

  • BSSAP (Base Station System Application Part) – передача данных в MSC.
  • Abis – внутренняя связь с BTS.

📍 5. BTS (Base Transceiver Station)

🔹 Функции:

  • Отправляет и принимает сигналы от мобильных телефонов.
  • Работает на частотах GSM (900/1800/1900 MHz), UMTS, LTE, 5G.
  • Передает данные по радиоканалу (GPRS, EDGE, 3G, 4G, 5G).

🔹 Протоколы:

  • GSM: LAPDm (Link Access Protocol on the Dm channel) – сигнальный протокол.
  • UMTS: RRC (Radio Resource Control) – управление связью.
  • LTE: NAS (Non-Access Stratum) – передача SMS в 4G.

🛠 Кто разработал эти технологии?

  1. GSM (2G) – разработан ETSI (European Telecommunications Standards Institute) в 1980-х.
  2. UMTS (3G) – стандарт от 3GPP (3rd Generation Partnership Project).
  3. LTE (4G) и 5G – разработаны 3GPP и ITU (International Telecommunication Union).
  4. SS7 (сигнальная сеть) – разработана AT&T и стала международным стандартом.

📌 Итог

✔ HLR – главный регистр местоположения, хранит данные всех абонентов.
✔ VLR – временная база, хранящая информацию о подключенных абонентах.
✔ MSC – основной коммутатор сети, управляет звонками и SMS.
✔ BSC – контроллер базовых станций, передает данные между BTS и MSC.
✔ BTS – базовая станция, связывается с телефоном по радиоканалу.

📡 Эти технологии обеспечивают связь миллиардам пользователей по всему миру! 🚀


Схема связи между MSC, BSC и BTS

📡 Общая структура мобильной сети (GSM/UMTS/LTE)


+----------------+ | HLR/VLR | +----------------+ | SS7 / MAP | +--------------------+ +----------------+ +----------------+ | PSTN / ISDN / |------| MSC |------| SGSN | | VoIP Networks | +----------------+ +----------------+ +--------------------+ | | | | +--------------------+ +--------------------+ | BSC | | RNC | +--------------------+ +--------------------+ | | | | | BTS BTS BTS NodeB NodeB (2G/3G) (2G/3G) (2G/3G) (3G) (3G)

🔹 Взаимодействие MSC, BSC и BTS

  1. MSC (Mobile Switching Center)

    • Основной коммутатор сети.
    • Управляет звонками, SMS, передачей данных, авторизацией абонентов.
    • Взаимодействует с HLR/VLR, PSTN (городская телефонная сеть), GMSC (шлюзовой коммутатор).
    • Соединяется с BSC (в 2G/3G) или напрямую с eNodeB (в LTE/5G).
  2. BSC (Base Station Controller)

    • Контроллер базовых станций (BTS) в сети GSM/EDGE/UMTS.
    • Обеспечивает хендоверы (переключение между сотами при движении абонента).
    • Отвечает за управление частотами и мощностью сигнала.
    • Соединяется с несколькими BTS через Abis-интерфейс.
  3. BTS (Base Transceiver Station)

    • Радиостанция, обслуживающая мобильных абонентов в своей зоне.
    • Передает голос, SMS и интернет через GSM (2G), UMTS (3G), LTE (4G).
    • Связана по проводному (оптика, медь) или радиоканалу с BSC.

📊 Сколько BTS может обслуживать один BSC?

🔹 Один BSC может контролировать до 200-500 BTS, в зависимости от конфигурации.
🔹 Каждая BTS обслуживает одну или несколько сот (cell), каждая сотая покрывает от 100 метров до 35 км.

📌 BSC объединяет BTS в группы и передает данные в MSC через A-интерфейс!


🏙 Как организуется покрытие территории города?

1. Ячеистая структура сети (Cellular Network)

🔹 Город делится на соты (cells), каждая из которых обслуживается одной BTS.
🔹 Каждая BTS использует несколько антенн, направленных в разные стороны (120° каждая – три сектора).
🔹 BTS размещаются на крышах зданий, вышках, мачтах, опорах уличного освещения.

2. Виды сот (cell sizes)

Тип сотыРадиус покрытияГде используется?
Macrocell2-35 кмПригород, автомагистрали
Microcell200 м - 2 кмГородские улицы
Picocell10-200 мВнутри зданий, ТЦ, метро
Femtocell10-50 мДомашние и офисные сети

📡 Пример структуры сети в городе

Macrocell | +------+------+ | | | Micro Micro Micro (BTS) | | | Pico Pico Pico (BTS) | | | Femto Femto Femto (BTS)

🔹 Макросоты (Macrocell) покрывают основную территорию города.
🔹 Микросоты (Microcell) устанавливаются на центральных улицах для улучшения связи.
🔹 Пикосоты (Picocell) – в бизнес-центрах, аэропортах, стадионах.
🔹 Фемтосоты (Femtocell) – используются дома и в офисах.

📌 Такой подход позволяет избежать перегрузки сети и улучшает качество связи! 🚀


📡 Сколько абонентов может обслуживать одна BTS?

Количество мобильных телефонов, которые может одновременно обслуживать одна BTS (Base Transceiver Station), зависит от типа сети (2G, 3G, 4G, 5G), количества радиочастотных каналов, конфигурации сот и ширины канала.


📊 1. BTS в сети GSM (2G)

В GSM 900/1800 MHz каждая BTS обслуживает до 8 или 16 голосовых каналов на одну несущую частоту.

  • Обычная BTS имеет 2–4 несущие частоты на соту.
  • Максимум: 8 × 4 = 32 активных вызова одновременно.
  • Если BTS многосекторная (3 сектора), то 32 × 3 = 96 вызовов.
  • GPRS/EDGE (мобильный интернет) использует часть слотов, уменьшая количество голосовых вызовов.

🔹 Пример:
Если в зоне покрытия одной соты 500 человек, но BTS поддерживает только 32 канала, то одновременно могут разговаривать 32 человека, а остальные будут ждать.


📡 2. NodeB в сети UMTS (3G)

В 3G (UMTS, WCDMA) технология позволяет динамически перераспределять каналы.

  • Одна сотая может обслуживать 50-200 активных абонентов.
  • В режиме HSPA+ (мобильный интернет) – до 500 пользователей.
  • Использует технологию CDMA (кодовое разделение каналов), что позволяет обслуживать большее количество пользователей на одной частоте.

📌 В 3G сеть одновременно могут подключаться сотни телефонов, но чем больше пользователей – тем хуже скорость передачи данных!


📶 3. eNodeB в сети LTE (4G)

В 4G (LTE) используется OFDM (ортогональное частотное разделение каналов), что позволяет обслуживать больше пользователей при высокой скорости.

  • Количество пользователей зависит от ширины канала (5, 10, 20 МГц).
  • Одна сотая LTE может обслуживать 1000-2000 пользователей.
  • Но максимальная скорость распределяется между всеми пользователями соты.

📌 В LTE возможна загрузка до 1000 абонентов на соту, но если трафик высокий, скорость на пользователя падает.


🚀 4. gNodeB в сети 5G

В 5G NR (New Radio) используется Beamforming (формирование направленных лучей) и массовый MIMO.

  • До 1 млн устройств на квадратный километр (IoT, телефоны, датчики).
  • Более 10 000 активных пользователей на соту.
  • Минимальная задержка, высокая скорость (до 10 Гбит/с).

📌 5G позволяет одновременно обслуживать огромное количество устройств без потери скорости!


📊 Итог: Сколько пользователей может обслуживать BTS?

ТехнологияГолосовые вызовы (активные)Макс. подключенных устройств
GSM (2G)32–96 на BTSДо 1000 (но не все могут говорить)
UMTS (3G)50–200 на сотуДо 500–1000
LTE (4G)500–2000До 10000
5G (NR)10000+До 1 млн

📌 Вывод: В 2G/3G BTS ограничена количеством голосовых каналов, а в 4G/5G – только емкостью спектра и пропускной способностью. 🚀