Всем привет! Сейчас мы расскажем об основных правилах, которые следует соблюдать при удаленном подключении телефона к IP-АТС. Актуально не только для Asterisk, но и для вообще любых IP-АТС.
Основные проблемы возникают из-за 3 факторов: Недостаточная пропускная способность сети, конфигурация межсетевых экранов и функционал инспектирования SIP-трафика. Но обо всём по порядку.
Пропускная способность (Bandwidth)
- Давайте посчитаем, какая нам потребуется пропускная способность для одного звонка с использованием кодека G.711. При условии, что мы передаём голос в стандартной Ethernet – сети и будет задействован стек протоколов – IP/UDP/RTP :
- По умолчанию, кодек G.711 формирует два голосовых семпла общей длительностью 20 мс, размер которых = 160 байт. Скорость потока, создаваемого G.711 = 64 Кбит/c
- Заголовки канального уровня (Layer 2) потребуют ещё 18 байт
- Заголовки сетевого уровня (IP - Layer 3) добавят ещё 20 байт
- Далее заголовки UDP – ещё 8 байт
- Наконец, RTP потребует 12 байт
Таким образом, общий размер пакета, в котором будет передаваться 20 мс голоса составит: 160 + 18 + 20 + 8 + 12 = 218 байт
Количество пакетов в секунду, формируемых G.711 = скорость потока кодека / размер голосовой нагрузки (сэмплов) = 64000 бит/c / (160 байт * 8 бит на байт) = 50 пакетов в секунду
Теперь мы можем посчитать полосу пропускания, необходимую для передачи 50 пакетов, содержащих 20 мс голоса, которые будут передаваться по сети. Полоса пропускания = 218 байт * 8 бит на байт * 50 = 87200 бит/с = 87.2 Кбит/c.
Рекомендуется ещё закладывать 5% в качестве защитного интервала: 87.2 * 1.05 = 91.56 Кбит/с
- Телефонный звонок – это симметричное соединение. Поэтому необходимо иметь минимум 91.56 Кбит/с как для входящего трафика (download speed), так и для исходящего (upload speed). Если удалённый пользователь имеет 10 Мб на скорость скачивания (download), то это ещё не значит, что он имеет сколько же на upload.
- Но даже если наш удалённый пользователь будет иметь 10 Мб на скачивание и 512 Кбит на загрузку, это ещё не гарантирует нормальное VoIP соединение. Потому что полоса пропускания будет делиться между всеми активностями, которые пользователь совершает в Интернете. Догадайтесь - что будет, если наш пользователь находится в телефонном звонке, а кто-то в его сети начнёт скачивать тяжёлый файл или смотреть онлайн видео? При скачивании файлов задержка или потеря пакета может быть даже не заметна. А вот VoIP трафик передаётся в реальном времени и он очень чувствителен к задержкам и потерям пакетов. Любой из этих факторов может привести к срыву звонка.
Вот примерно такой должна быть полоса пропускания интернет соединения со стороны подключения удалённого телефона, и на стороне IP-АТС. Если у одной из сторон будет медленное соединение, то качество голоса будет неудовлетворительным.
Зная параметры VoIP сети и используемого кодека, Вы без проблем сможете вычислить необходимую Вам полосу пропускания. Чтобы больше узнать про кодеки, рекомендуем почитать нашу статью.
Если Вы столкнулись с такой проблемой, рекомендуем настроить Quality of Service или Traffic Shaping. Данный функционал позволяет раздать приоритеты разным видам трафика на маршрутизаторе. Более подробно о механизме QoS можно почитать в нашей статье. А здесь примеры настройки на маршрутизаторе Mikrotik.
Межсетевой экран (Firewall)
- Необходимо точно понимать, что удалённый телефон – это телефон, который подключается к Вашей IP-АТС не напрямую. Он не находится в Вашей локальной сети (LAN) и, что ещё важнее, он не находится в Вашей виртуальной локальной сети (VPN). Поэтому, для его корректной работы, нужно будет открыть кое какие порты на роутере или межсетевом экране.
- 5060 - По стандарту именно этот UDP порт используется протоколом SIP для обмена сигнальной информацией.
- 10000 – 20000 - (В большей степени актуально для Asterisk). UDP порты используются протоколом RTP и RTCP для передачи исходящего и приема входящего аудио трафика. Если вы столкнулись с проблемой односторонней слышимости или полным её отсутствием (при условии наличия сигнализации SIP) – скорее всего, дело в RTP портах на одной из сторон соединения.
- 69 TFTP / 21 FTP - Порты для обмена файлами. В IP-АТС используются для автоматической настройки и обновления телефонных аппаратов при помощи функции auto-provision.
Отнеситесь данному пункту очень серьёзно. Нельзя просто открывать эти порты всему миру. Необходимо также настроить правила, чтобы доступ к этим портам могли получить только доверенные устройства.
Если Вы используете Asterisk/FreePBX, то рекомендуем более подробно узнать какие ещё порты может понадобиться открыть вот тут.
Функционал испектирования SIP
SIP ALG (Application Layer Gateway) – это функционал, который испектирует SIP трафик, который проходит через маршрутизатор и позволяет модифицировать его так, чтобы не нужно было делать проброс портов для SIP и RTP.
Зачастую, администраторы, которые настраивают удалённый телефон для подключения к IP-АТС, сталкиваются именно с проблемами включенного на маршрутизаторе SIP ALG. Дело в том, что SIP ALG может изменить сигнальные пакеты так, что АТС не сможет их распознать и телефон не сможет нормально зарегистрироваться. Поэтому если Вы столкнулись с проблемой подключения телефона, рекомендуем также обратить внимание на функционал SIP ALG Вашего маршрутизатора.
Многие производители включают его по умолчанию. Мы же рекомендуем либо правильно настроить его в соответствии с инструкцией от производителя, либо, если никаких других вариантов не осталось – отключить его.
Вот примеры названий данного функционала у разных производителей, но все они значат одно и то же:
- SIP ALG
- SIP Helper
- SIP Fixup
- SIP Markup
- SIP Translation
Например на роутерах Mikrotik, чтобы отключить данный функционал нужно зайти в IP → Firewall → Service Ports и убедиться, что сервис SIP выключен.
Либо отключить его используя CMD Mikrotik: /ip firewall service-port disable sip
Проблемы при подключении более 1 телефонного аппарата из одной и той же удаленной точки
Представьте, что Вы пытаетесь зарегистрировать два удалённых телефона на своей IP-АТС. Пусть их внутренние номера будут 100 и 101. Когда эти телефоны будут отправлять запрос регистрации, то Ваша IP-АТС получит его от удалённого роутера, за которым находятся эти телефоны и запрос этот будет от одного и того же IP адреса. Может быть эти телефоны и зарегистрируются на АТС, но когда на один из этих номеров будет поступать вызов, то удалённый маршрутизатор не сможет разобраться на какой из телефонов его отправлять 100 или 101.
Лучшим решением данной проблемы – будет организация виртуальной локальной сети (VPN) между удалёнными точками и IP-АТС. Тогда телефоны, находящиеся в удалённых офисах смогут регистрироваться на IP-АТС как если бы они находились в одной локальной сети.