|
VoIP изнутри Салиев Александр aka Fagot Xakep, номер #053, стр. 053-074-1 (salieff@mail.ru) Как работает современное VoIP оборудование Когда-то давно вся телефония ходила по меди в аналоговом виде, но те времена прошли, и интернет, захвативший всю планету, поглощает и этот, казалось бы, традиционный вид связи. Я не буду рассказывать о том, как это могло бы быть, как могло бы быть лучше и что сейчас хуже, и вообще растекаться мыслью по древу. Я покажу, КАК ЭТО РАБОТАЕТ, разобрав все до самых основ. Приход цифры Аналоговые методы коммутации уже давно начали изживать себя, началось победное шествие частотного мультиплексирования нескольких соединений в одну линию, грозившее вот-вот преобразоваться в конвейерную цифровую передачу голоса по каналам ATM, и постепенно само собой назревало решение о приведении к единым стандартам межабонентской сигнализации в цифровом виде. После некоторых промежуточных вариантов возник стандарт ISDN, который и сейчас широко применяется на крупных магистралях ГТС. Вот как общаются 2 абонента в ISDN-сигнализации: когда абонент "А" набирает номер на телефоне, его АТС выделяет тайм-слот в АТМ-потоке (это значит, что каждый n-цатый пакет цифрового конвейера будет содержать информацию о данном звонке), и посылает в сторону АТС абонента "Б" команду SETUP, содержащую в себе информацию о телефонном номере абонента "А" (АОНе), телефонном номере абонента "Б" и некоторую служебную информацию, позволяющую корректно обслуживать звонок. Также в этом и последующих пакетах (вплоть до установления голосового обмена) присутствует информация, позволяющая двум АТСкам настроиться между собой, с целью сделать связь оптимальной и качественной. АТС "Б" отвечает пакетом SETUPACKNOWLEDGE, подразумевая, что она приняла вызов и сейчас будет его обрабатывать. Делая попытки достучаться до своего абонента, АТС "Б" шлет пакет CALLPROCEEDING, что значит, что она жива и обрабатывает звонок. Когда соединение с абонентом "Б" произошло, АТС "Б" шлет пакет ALERTING, который означает, что телефон "Б" трезвонит и ожидается снятие трубки. После того как абонент "Б" снял трубку, АТС "Б" поднимает с ним голосовой канал и шлет пакет CONNECT, АТС "А" отвечает ей пакетом CONNECTACKNOWLEDGE (подразумевая, что она, в свою очередь тоже поднимает с абонентом "А" голосовой канал), и в обе стороны начинают передаваться голосовые данные. По окончании разговора та АТС, со стороны которой абонент первым положил трубку, шлет пакет DISCONNECT, другая АТС отвечает ей RELEASE, что значит, что она освобождает цифровые ресурсы, выделенные под звонок, и сеанс связи завершается посылкой RELEASECOMPLETE и освобождением цифровых ресурсов со стороны первой АТС. Примечательно то, что вся эта сигнализация кодируется не частотной модуляцией или прочими труднопонимаемыми аналоговыми и полуаналоговыми методами, а представляет собой привычные для нас байтовые пакеты с четко заданной структурой полей. Звук тоже передается в виде байт-пакетов, представляющих собой фреймы, кодированные в большинстве случаев кодеком G.711, что есть ни что иное, как PCM 8 kHz 16 bit (как в WAV-файле без компрессии) только не с линейным расположением столбцов, а с логарифмическим. |