|
VoIP изнутри Салиев Александр aka Fagot Xakep, номер #053, стр. 053-074-2 Voice over IP! В принципе, протокол ISDN был разработан для сетей ATM и прочих X.25, что представляло некоторую проблему для коммерческих операторов, ибо доступ к этим сетям есть далеко не у всех. Тогда возникло естественное решение разработать аналог ISDN для сетей IP, чтобы гонять телефонию через public internet, ведь помимо доступности этой сети данный подход позволял платить за трафик, а не за километры до пункта назначения. Сигнализацию было решено положить на TCP (хотя в рекомендациях ITU-T присутствуют модели для множества протоколов, включая IPX, но наиболее прижились TCP и UDP), это давало определенные плюсы в виде готовой модели создания соединения. Поэтому пакеты серии ACKNOWLEDGE было решено упразднить, а также свести процедуру закрытия соединения к единственному (и не всегда обязательному) RELEASECOMPLETE. С другой стороны, добавлялась IP-адресация и много других взаимонастроек, специфичных для IP-сетей. Для них были разработаны протоколы H.225 и H.245, призванные описывать соединение и его логические каналы соответственно. Для этих типов сигнализации (их семейство называется H.323) в Q.931-пакетах (в стандартах H.323 сигнализация ISDN называется Q.931) было выделено поле (или IE - информационный элемент, а не ослик) под названием USER-USER, первоначально предназначенное для передачи произвольных непротокольных данных между абонентами или АТСками. Пакеты Q.931 были сохранены в качестве оболочек к H.323 с целью облегчить задачи шлюза, стоящего на стыке ISDN и IP. Сигнализация класса H.323, в отличие от многих других, не просто упаковывается в байтовые пакеты, а пишется на языке ASN.1 (Abstractive syntax notation v.1) и компилируется в платформенно-независимый код, наподобие java-applet'а, только несет в себе не исполняемую программу, а данные. Именно такие скомпилированные блоки и записываются в IE:USER-USER. Однако если для сигнализации хорошо подошел протокол TCP, то с передачей голосовых данных возникло много проблем, таких как: невысокая средняя пропускная способность канала, негарантированное (в отличие от ATM) время доставки пакета и возможные потери информации (т.к. TCP был отклонен по причине медленности и выбор пал на UDP). Проблемы с шириной канала были решены с помощью нового поколения кодеков (так, например, распространенный сейчас кодек G.729 требует всего 8kbps в отличие от 64kbps для G.711). Потерю и неравномерную доставку речевых пакетов взяли на себя алгоритмы промежуточной интерполяции и протоколы RTP/RTCP (протоколы доставки и контроля информации в реальном времени). Пути и тропинки Расскажу, как проходит сессия между двумя VoIP’шными устройствами. Шлюз-оригинатор (тот, что стоит со стороны абонента "А") инициирует TCP-соединение, являясь клиентом. Шлюз-терминатор (тот, что стоит со стороны абонента "Б") играет роль сервера, принимая входящие соединения на сервисном TCP-порту 1720. По этому TCP-каналу передаются пакеты с сигнализацией Q.931. Сигнализация H.225 пакуется в IE:USER-USER пакета Q.931. Сигнализация H.245 может передаваться тремя путями: первый - по наиболее старой схеме - шлюз, желающий играть роль TCP-сервера в H.245-сессии, заявляет посредством H.225 адрес и порт, на которых он будет ждать входящего коннекта, второй шлюз становится TCP-клиентом. Подсоединяется к первому, и передача сигнализации H.245 происходит по отдельному TCP-соединению. |