Что такое и как работает IP-телефония - преимущества и возможности. Протоколы, принципы и отличия от традиционной

IP-телефония: что это и как работает

Кирилл Филипенко Кирилл Филипенко Специалист техподдержки 8 июня 2022

Благодаря IP-телефонии мы проводим утренние планерки в Zoom, созваниваемся с родителями по WhatsApp. Рассказываем, что это за технология, как она работает и почему так популярна.

Изображение записи

Интернет-телефония все больше входит в разные сферы нашей жизни. Благодаря ей мы проводим утренние планерки в Zoom, созваниваемся с родителями по WhatsApp. Чем больше развивается этот тренд, тем актуальнее вопросы, что это вообще за технология, как она работает и почему так популярна. Давайте разбираться.

IP-телефония — основы

Если объяснять термин предельно просто, то IP-телефонией можно назвать любую голосовую связь, проходящую через сети передачи данных, в данном случае IP-сети. Она пришла на смену всем знакомой аналоговой телефонии и активно вытесняет последнюю за счет своих преимуществ: 

  • низкой стоимости, 
  • простоты настройки и развертывания инфраструктуры, 
  • высокого качества связи 
  • безопасностью. 

Базовые принципы IP-телефонии, сравнение с аналоговой

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

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

Преимущества IP-телефонии перед аналоговой 

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

В итоге интернет-телефония решает большое количество проблем аналогового предшественника «из коробки» и за меньшую цену. 

Уровни организации соединения

Теперь давайте разберемся, как же работает IP-телефония. Логичнее всего будет вести рассказ, отталкиваясь от уровней модели OSI

Физический уровень, или Physical Layer

На этом уровне происходит передача битового сигнала по физической среде, то есть по витой паре, коаксиальному кабелю или оптоволокну. Здесь VoIP использует уже существующую инфраструктуру. И это в полной мере реализует принцип конвергенции сетей, когда несколько ранее раздельных услуг объединяются в одну. 

Канальный уровень, или Data Link Layer

Канальный уровень — уровень коммутаторов, больше известный как L2. Он разделяется на два равноправных подуровня, помогающих связать уровни выше и ниже канального уровня:

  • Media Access Control, или MAC, который нужен для взаимодействия с физическим уровнем модели; 
  • Logical Link Control, или LLC, необходимый для взаимодействия с сетевым уровнем.

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

Сетевой уровень, или Network Layer

На этом уровне происходит маршрутизация пакетов, поэтому главную роль тут играют маршрутизаторы. Для VoIP-связи подходят обычные маршрутизаторы, но существуют и специальные VoIP-шлюзы. С помощью них можно превратить старые телефоны в IP-телефоны, раздать им адреса и выделить полосу пропускания.

Вот небольшой список функций, которые включают в себя стандартные шлюзы:

  • регистрация, авторизация и сессии пользователей,
  • поддержка факса,
  • голосовая почта,
  • отправка смс (в моделях, использующих SIM-карты для регистрации в сети),
  • поддержка протоколов IP-телефонии «из коробки».

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

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

Транспортный уровень, или Transport Layer

На транспортном уровне модели OSI осуществляется, как ни странно, транспортировка разбитых на части пакетов данных. Основная задача здесь — доставить данные клиенту с минимальными потерями и задержками. 

Наиболее распространенные протоколы транспортного уровня – TCP и UDP, но для транспортировки пакетов с голосовыми данными, как правило, используются UDP и RTP. 

UDP

Главное отличие и преимущество UDP при организации линии телефонной связи через интернет заключается в том, что этот протокол, в отличие от TCP, не гарантирует доставку пакетов конечному адресату. При отправке и получении данных устройство не запрашивает и не отправляет никаких подтверждений в ответ. А это в значительной мере сокращает сетевые задержки при соединении устройств, через которые ведется разговор. Задержки серьезно влияют на пользовательский опыт, а вот потеря пакетов для IP-телефонии не так критична.

RTP 

Это самостоятельный сетевой протокол, но при организации телефонной связи обычно используется поверх UDP. RTP помогает распознавать типы трафика и нумерует пакеты данных, выстраивая их в нужном порядке на принимающей стороне. Это благоприятно сказывается на качестве аудио- и видеосигнала. Нумерация пакетов является определяющим преимуществом данного протокола.

Уровни данных, или Data Layers

Оставшиеся уровни модели OSI мы рассмотрим вместе, объединив их в одну группу. Они связаны в контексте IP-телефонии настолько сильно, что рассмотрение их по отдельности не имеет особого смысла. Протоколы, которые здесь используются, опишем в отдельной главе.

Протоколы и кодеки, которые использует IP-телефония

Рассмотрим два самых популярных в наше время протокола установки соединения и взаимодействия устройств в IP-телефонии. 

H.323

H.323 является одним из наиболее распространенных наборов протоколов организации инфраструктуры. Он был разработан в 1996 году как стандарт организации голосовой и видеосвязи. Набор подробно описывает работу телефонии на всех сетевых уровнях, взаимодействие устройств, протоколы передачи данных и кодеки, о которых мы поговорим позже. 

Согласно протоколу, для организации связи в рамках IP-телефонии в системе должны присутствовать:

Терминал

В роли терминала может выступать абсолютно любое устройство, способное принимать и передавать данные, обрабатывать звуковой сигнал и поддерживать кодеки G.711, H.261, H.263.

Простыми словами, терминал — это то, через что и во что мы говорим: мобильный телефон, персональный компьютер с гарнитурой, ноутбук или стационарный IP-телефон.

Шлюз

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

Контроллер зоны

Транслирует телефонные/мобильные номера в IP-адреса, отвечает за авторизацию всех телефонов зоны, присваивая каждому устройству удаленный виртуальный номер, управляет полосой пропускания.

Сервер многосторонней конференции

Данное устройство необходимо для организации многопользовательских конференций. 

В текущем состоянии, по мнению многих экспертов, протокол H.323 устарел. В связи с чем он продолжает сдавать позиции протоколу SIP.

Протокол SIP

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

В SIP присутствуют два типа сигналов для управления сессиями — запрос и ответ. Вот основные сигналы, которые передают друг другу SIP-устройства:

  1. INVITE — приглашает пользователя к сеансу связи. Обычно содержит SDP-описание сеанса.
  2. ACK — подтверждает прием ответа на запрос INVITE.
  3. BYE — завершает сеанс связи. Может быть передан любой из сторон, участвующих в сеансе.
  4. CANCEL — отменяет обработку ранее переданных запросов, но не влияет на запросы, которые уже закончили обрабатываться.
  5. REGISTER — переносит адресную информацию для регистрации пользователя на сервере определения местоположения.
  6. OPTIONS — запрашивает информацию о функциональных возможностях сервера.

Кодеки, которые использует IP-телефония

Кодеки — это специальные наборы алгоритмов или программы, которые сжимают и разжимают оцифрованные звуковые и видеоданные, снижая нагрузку на работающий интернет-канал. Наиболее распространенными на данный момент кодеками являются G.711 и G.729. 

Мы не будем сильно углубляться в тему кодеков, чтобы не усложнять статью. Рассмотрим только их «отличительные черты».

G.711 сжимает данные, ухудшая качество звука, но повышая эффективность передачи сигнала и снижая нагрузку на сеть. Для сжатия данных в основном используются методы u-law и a-law. 

G.729 создан для качественного звука. Он практически не использует сжатие, что делает его превосходным кандидатом в вопросе выбора кодека для по-настоящему чистого звука с минимальными затратами. Как и G.711, этот кодек может использовать технические ухищрения в работе. Так, например версия «Annex B» сжимает паузы в речи, как бы «выкидывая» из пакета данных лишние части голосового сообщения.

Преимущества внедрения сервиса

Цена IP-телефонии

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

Функциональность

Передача телефонных разговоров по интернету – очень молодая технология. Большая часть ее функциональности — популярных протоколов и схем реализации IP-телефонии — была придумана с нуля не так давно. 

Напомним, что самый популярный на данный момент протокол связи SIP был реализован только в 2000 году. Он включает в себя все, что было реализовано в традиционной аналоговой телефонии, хорошо оптимизирован и за 20 с небольшим лет хорошо себя зарекомендовал. Это значит, что большая часть решений, которые были сложны в реализации, сейчас работают «из коробки» и требуют только нескольких изменений в конфигурационных файлах.

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


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

Интеграция

Телефонная (а теперь и видеосвязь) всегда была и остается одним из важнейших инструментов ведения бизнеса. Инженеры, которые разрабатывали новые стандарты, не могли это не учесть. Переход на ВАТС и IP-телефонию — хорошее решение с точки зрения оптимизации рабочих процессов, ведь АТС можно объединить с другими системами, которые использует современный бизнес, который включает в себя организацию внутренней телефонии для офиса или колл-центров. Среди возможных вариантов: интеграция с CRM-системами и 1C, возможность систематизации и анализа поступающих звонков через обработку записей разговоров и многое-многое другое.

Как развернуть виртуальную АТС на базе Asterisk в облачной платформе Selectel

Чтобы в полной мере ощутить простоту настройки ВАТС в облаке, нам необходим виртуальный сервер. Для Asterisk (open source-решения для IP-телефонии) будет достаточно 2 ГБ оперативной памяти, 2 vCPU, а также 20 ГБ базового сетевого диска. 

как развернуть виртуальную АТС
Собрали конфиг в панели управления Selectel.

Шаг 1. Подготовка к установке

Для начала необходимо подключиться к серверу по SSH. После подключения нужно подготовить машину к сборке Asterisk из исходников. Для этого необходимо выполнить следующие команды:

apt-get update -y 

apt-get install unzip git gnupg2 curl libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev subversion -y

Шаг 2. Установка Asterisk

Скачиваем исходники командой:

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-18.12.0.tar.gz

Распаковываем архив:

tar zxf asterisk-18.12.0.tar.gz

Переходим в директорию с распакованными исходниками и устанавливаем нужные зависимости:

cd asterisk-18.12.0/
contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install

Вводим код страны. В нашем случае это 7.

После завершения установки увидим следующее сообщение:

#############################################
## install completed successfully
#############################################

Значит, можно двигаться дальше. Настраиваем Asterisk командой:

./configure

После завершения установки выберем, какие опции нам необходимы для АТС. Выполняем команду:

make menuselect
выбор опций

В меню можно выбрать, какие модули будет использовать Asterisk, какие кодеки он будет поддерживать, а также выбрать пакет предзаписанных сообщений о том, что абонент недоступен, занят или поставил вас на удержание. 

Самые необходимые для старта опции уже выбраны по умолчанию, а нам остается только выбрать языковой пакет. Выбрать его можно на вкладке Core Sound Packages.

языковые пакеты

После выбора нужных опций нажимаем Save & Exit.

Подготавливаем файлы и приступаем к сборке командами:

make -j2

После окончания сборки можно приступать к инсталляции Asterisk на сервер с помощью команд:

make install
make samples
make config
ldconfig

Итак, Asterisk установлен. Приступим к настройке.

Шаг 3. Настройка Asterisk

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

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout asterisk

Выставляем пользователям разрешения:

chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk.asterisk /usr/lib/asterisk

После нам необходимо сделать так, чтобы Asterisk запускался от пользователя «asterisk». Копируем в буфер обмена и вставляем в терминал:

nano /etc/default/asterisk

После в открывшемся документе убираем «решетки» в начале следующих строк:

AST_USER="asterisk"
AST_GROUP="asterisk"

Выполняем команды, чтобы Asterisk запускался при включении сервера:

systemctl restart asterisk
systemctl enable asterisk

Проверяем, все ли нормально со службой: 

systemctl status asterisk

Скорее всего, вы увидите следующую ошибку:

radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory

Не пугаемся, выполняем команды: 

sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf

После чего перезапускаем Asterisk командой:

systemctl restart asterisk

Подключаемся к Asterisk с помощью команды: 

asterisk -rvv

Выходим из Asterisk с помощью команды Exit.

asterix

Шаг 3. Установка FreePBX

FreePBX — это удобная веб-консоль для простой настройки и администрирования ВАТС.

Для работы веб-интерфейса нам понадобится Apache, PHP 7.4 и MariaDB. Установим все необходимые зависимости командой:

apt-get install apache2 mariadb-server libapache2-mod-php7.4 php7.4 php-pear php7.4-cgi php7.4-common php7.4-curl php7.4-mbstring php7.4-gd php7.4-mysql php7.4-bcmath php7.4-zip php7.4-xml php7.4-imap php7.4-json php7.4-snmp -y

После этого мы можем приступать непосредственно к установке. Скачиваем и распаковываем архив:

wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz
tar -xvzf freepbx-16.0-latest.tgz

Далее переходим в директорию freepbx, устанавливаем Node.js и выполняем в текущей директории файл install с ключом -n:

cd freepbx
apt-get install nodejs -y
./install -n

Теперь необходимо изменить пользователя, под которым запускается Apache, и изменить настройку AllowOverride в конфигурационных файлах. Выполняем команды:

sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

Меняем параметр upload_max_filesize в настройках php.ini:

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/apache2/php.ini
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/cli/php.ini

Перезаписываем конфигурацию веб-сервера Apache и перезапускаем службу:

a2enmod rewrite
systemctl restart apache2

Мы перешли к последнему этапу.

Переходим в браузер и вбиваем в адресную строку ссылку: http://x.x.x.x/admin (вместо x.x.x.x вставьте IP-адрес сервера) и выполняем настройку учетной записи администратора:

настройка администратора

Поздравляю, все установлено успешно!

Заключение

Итак, мы разобрались в основах IP-телефонии: поняли, как она организована, какие технологии используются для полноценной реализации, какие базовые принципы телефонии лежат в основе технологии. Также обсудили экономику: привлекательность цены IP-телефонии и ее преимущества перед аналоговым решением.