Суть технологии VoIP на пальцах

CUK77

Professional
Messages
1,193
Reputation
3
Reaction score
386
Points
83
Общение голосом через инет уже давно не диковинка. За последний год нам все ужи прожужжали по поводу чудо-программы Skype и её многочисленных аналогов, которые почему-то стали появляться как грибы после дождя. Во всех крупных городах сейчас работает сразу несколько альтернативных операторов связи, предоставляющих услуги международной и междугородней связи по чрезвычайно низким тарифам. А в офисах все чаще можно встретить телефоны, к которым вместо обычного телефонного кабеля подключена витая пара. В этом нет ничего удивительного: технология VoIP набирает обороты, причем во всех своих проявлениях сразу.

Познакомься, VoIP

Аббревиатура VoIP - это сокращение от Voice over IP. Своеобразная надстройка над распространенным протоколом TCP/IP, позволяющая с помощью IP-пакетов передавать оцифрованный голос. Её не первый год используют для организации общения через инет в реальном времени, поэтому новой эту разработку не назовешь. Пакет с голосом при соблюдении некоторых условий (достаточной ширины канала, минимальных задержек и т.п.) вполне успешно транспортируются через Интернет, что предоставляет возможность быстро и дешево наладить связь между любыми абонентами, даже если один из них находится в Зимбабве, а другой - на Аляске. Главное, чтобы каждый из них имел стабильный интернет-канал.

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

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

На деле

Для обычного пользователя технология VoIP может представляться по-разному. Поэтому и использовать он её может также различными способами.

Например, с помощью компьютера. В инете существует немало компаний, которые предлагают организовать голосовую связь между компьютерами. От пользователя при этом требуется совсем немногое: телефонная гарнитура (микрофон с наушниками), звуковая карта и доступ в Интернет, желательно широкополосный DSL и т.п. Пример такой компании - недавно нашумевшая Skype (www.skype.com). Подобного рода провайдеры обычно не берут плату за соединения типа компьютер-компьютер, поскольку связь устанавливается между пользователями напрямую и не требует участия VoIP-шлюзов. С другой стороны, такие компании делают неплохие деньги на обслуживании звонков с компьютера на обычные городские телефоны.

Второй вариант связан с применением специальных адаптеров для аналоговых телефонов (ADA, Analog Telephone Adaptor). К такому устройству можно подключить самый обыкновенный телефон, с которым ты, вероятно, знаком всю свою сознательную жизнь, и вполне успешно использовать его для VoIP-телефонии. Адаптер представляет собой аналого-цифровой преобразователь (и наоборот), то есть необходим для того, чтобы преобразовать аналоговые сигналы, поступающие с трубки, в цифровой вид и отправлять через провайдера на VoIP-шлюз. При этом все необходимые настройки: параметры связи, адреса шлюза и т.п. - выдает оператор IP-телефонии.

IP-телефон - это третий вариант для тех, кто хочет воспользоваться VoIP. Штуковина довольно экзотическая, но в будущем обещает стать основным средством для голосового общения. Внешне IP-телефон ничем не отличается от обычного аналогового, но вместо привычного разъема RJ-11 на нем монтирован разъем RJ-45, точно такой же, как и на твоей сетевой карте. Такой телефон посредством витой пары напрямую подключается к роутеру в локальной сети. Далее пакеты перенаправляются либо на внутренний VoIP-шлюз (если VoIP-связь налажена на внутриофисном уровне), либо на внешний шлюз IP-телефонии, привязанный к какому-то конкретному телефонному оператору. Уже сейчас можно найти прототипы IP-телефонов с поддержкой Wi-Fi, позволяющие абонентам VoIP совершать звонки, находясь в поле действия любого хотспота.

Как происходит соединение

Для примера рассмотрим процесс установки соединения с помощью ATA-адаптера. Я не буду сейчас глубоко вдаваться в подробности, так как основные принципы и протоколы будут рассмотрены ниже.

Абонент берет трубку телефона, который подключен к ATA-адаптеру. Поскольку технология VoIP выполнена максимально прозрачно для пользователя, он вряд ли заметит разницу по сравнению с обычной телефонной линией. Здесь будут те же самые гудки, тот же принцип набора номера и т.д.
Если соединение в Интернет установлено, и ATA-девайс настроен корректно, то в ответ пользователю будет послан тональный сигнал. Его можно расшифровать, как «все в порядке, так что можно работать».
Далее абонент, как обычно, вводит нужный ему номер с помощью тонального набора. Цифры номера распознаются ATA-девайсом и временно записываются в специальный буфер.
Как только все цифры номера набраны, формируется специальный пакет-запрос. Он отправляется в центр обработки звонков (Call Processor), который, как правило, представляет собой дорогостоящее аппаратное решение, предназначенное для обслуживания программных коммутаторов (Soft Switches). Последние содержат информацию о пользователях (имя юзера, его номер и привязанный IP-адрес), а также управляют процессом установки соединения.

Первым делом центр обработки звонков проверяет правильность введенных данных. Если номер имеет некорректный формат, то абоненту выдается соответствующее голосовое сообщение. Если же все в порядке, то осуществляется следующий этап - поиск по базе данных. Здесь все просто: VoIP-коммутатор ищет по своей базе IP-адрес вызываемого абонента и пытается установить с ним связь, то есть отправляет специальный пакет - «звонок»
У второго абонента звонит телефон. После того как он возьмет трубку, между двумя абонентами будет установлена сессия. Это значит, что каждая из сторон будет ждать пакетов с голосовыми данными от другой. В течение всего разговора VoIP-устройства непрерывно обмениваются между собой пакетами, причем ATA занимается сразу двумя процессами: кодированием речи в цифровой вид и преобразованием цифровых данных в аудиосигнал.
Сессия заканчивается, если одна из сторон положит трубку. Однако связь может оборваться и по другим причинам, например, из-за потери связи с Интернетом.
[кодирование информации]
Какой бы тип соединения VoIP ни использовался, источником данных все-таки является человеческая речь. Важно понимать, что голосовые сообщения - это нечто аналоговое, которое нельзя просто взять и отправить через Сеть. Для этого нужно хотя бы представить речевой сигнал в цифровом виде, то есть в виде нулей и единичек, которые можно разместить в IP-пакетах и отправить получателю. Задачами кодирования и декодирования занимаются кодеры и декодеры, которые очень часто являются единым целым.

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

Количество разбиений в секунду напрямую зависит от используемого кодека. Так, G.711 дает максимальное качество звучание и обрабатывает аналоговый поток 64,000 раз в секунду, что требует немалых вычислительных затрат и, естественно, довольно широкого канала. Другие кодеки таким трудолюбием похвастаться не могут, поэтому обращаются к аналоговым данным 32,000 и даже 8,000 в секунду. Но не думай, что этого мало: наиболее распространенный кодек - G.729A - работает как раз на скорости в 8,000 и считается золотой серединой между качеством звука и затратами на передачи цифровых данных.

В основе кодеков лежат сложные алгоритмы, которые занимаются разбиением аналоговых данных на отрывки, их сжатием и упаковкой. Наиболее известным считается алгоритм с непроизносимым названием CS-ACELP (Conjugate Structure Algebraic Code Excited Linear Prediction). Он использует одно очень простое, но чрезвычайно эффективное правило: «Если никто не говорит, значит, данные передавать не нужно». Казалось бы, что в этом такого? А в том, что все сигнальные фрагменты можно условно разделить на несколько типов: вокализированные (голос человека), невокализированные, переходные и паузы. При одной и той же длительности и качестве кодирования разных типов отрывков требуется неодинаковое количество битов (при том, что паузы не нужно кодировать вообще). Соответственно, скорость передачи разных типов отрывков также сильно варьируется. По этой причине было принято решение использовать метод передачи речи с разной скоростью. Необходимая скорость определяется специальным классификатором, который на основе анализа входных данных выбирает нужный метод кодирования. Наиболее простым классификатором является Voice Activity Detector (VAC), который умеет определять два состояния входных данных: голос и паузы. Фрагменты, которые были классифицированы как голос, передаются на большой скорости. Паузы, что следовало ожидать, кодируется с меньшей детализацией и требуют для передачи значительно меньшую скорость.

Вся проблема в задержках

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

Резервирование части полосы исключительно для VoIP - это самое очевидное и, что очень важно, эффективное решение. В обычных сетях Ethernet существует такое понятие, как качество обслуживания (QoS - Quality of Service). Сервис выделяет часть канала специально для передачи чисто технической информации, чтобы обеспечить благоприятные условия для взаимодействия всех ключевых узлов сети, даже если локалка будет испытывать сверхнагрузки. Технология VoIP применяет похожие принципы, но ориентированные на передачу именно голосовых данных. Разработчики стандарта подсчитали, что IP-пакеты с голосовыми данными рациональнее отправлять большими (относительно пакетов) блоками, так как только в этом случае удастся эффективно использовать выделенную полосу пропускания. Такой подход сильно упрощает процедуру управления очередями и расстановки приоритетов для различного типа пакетов, что является серьезной проблемой для всех IP-сетей. Правда, стоит отметить, что для создания блока, достаточного для отправки, необходимо время. Конечно, это время минимально, но все же оно создает дополнительную задержку.

Непосредственно резервированием ресурсов занимается специальный протокол RSVP (Resource ReSerVation Protocol). Работает он следующим образом: узел-отправитель до передачи ответственной информации, требующий повышенного качества обслуживания, посылает по сети специальное сообщение в формате протокола RSVP. В сообщении содержится информация о типе данных, которые будут далее переданы, а также запрос на выделение части полосы. Каждый маршрутизатор на пути следования пакета, получив такое сообщение, проверяет свои ресурсы и, если требования выполнимы, устанавливает запрошенный приоритет. Если такой возможности нет, то маршрутизатор отвергает запрос. Все просто, но у такого метода есть существенный недостаток. Выделенная таким образом полоса всегда остается постоянной: даже при снижении активности она не будет использована для передачи других данных, а значит, ресурсы будут использованы нерационально.

Дополнительно к протоколу RSVP применяется метод Weighted Fair Queuing (WFQ). Его заслуга в том, что он позволяет определенным образом дифференцировать трафик на различные типы (голос, важная техническая информация, просто данные) и выделять для каждого из них определенную часть полосы пропускания. Если один из типов не использует полностью выделенную для него полосу, то свободный резерв может быть отдан для передачи других данных, с меньшим или большим приоритетом. Столь гибкий метод реализован в дорогостоящем оборудовании фирмы Cisco.

Еще один способ оптимизации задержки в сети основывается на использовании протокола RTCP (Real-Time Transport Control Protocol), использующий принцип адаптации к состоянию канала. Если интенсивность трафика в сети возрастет, а выделенной полосы приложению будет не хватать, то можно уменьшить свои аппетиты за счет некоторой потери качества. Как только выделенная полоса будет достаточна для возвращения к исходными параметрам, приложение тут же осуществит переход.

Протоколы

Одним из минусов технологии VoIP является отсутствие единого и утвержденного стандарта. По этой причине сейчас активно используются сразу два протокола, принципиально отличающихся друг от друга. Первый - H.323 - первоначально разрабатывался для организации видеоконференций в реальном времени, но вполне пригоден для передачи только звука. По большому счету, это даже не один протокол, а целое семейство, каждый член которого предназначен для выполнения какой-то конкретной задачи. Второй протокол - SIP (Session Initiation Protocol) - был разработан специально для технологии VoIP и должен был решить все проблемы, возникающие при использовании H.323. В его основе лежит тот же принцип, что и у знакомого тебе HTTP: запрос - ответ. Все сообщения протокола SIP являются простым текстом, а коды возврата - хорошо знакомыми всем пользователям Интернета: 404 («абонент не найден»), 200 (OK), 180 (Ringing - звонок) и т. д. Существует еще несколько других протоколов, но они не нашли широкого распространения. Такое разнообразие протоколов, возможно, было даже плюсом, если бы все они были совместимы между собой. Однако на практике это не всегда так.

Не без минусов

Впрочем, отсутствие единого стандарта - это еще не самая страшная беда. Есть другие минусы. Первый и наиболее значимый из них - малая надежность относительно традиционных сетей. VoIP передает данные через Интернет, а значит, они подвержены различного рода пагубным воздействиям: высоким задержкам, потерям пакетов, резкому изменению состояния канала. Если потери в канале будут достигать даже одного процента, то это существенным образом скажется на качестве связи. Не в лучшую сторону, естественно.

Отсюда вытекает и еще один минус - сомнительная безопасность. Если VoIP настолько привязана к состоянию канала, то злоумышленнику достаточно будет организовать массированную DDoS-атаку на одного из абонентов или VoIP-шлюзов, чтобы полностью разорвать связь или свести разговор на нет (вспомни, что происходит с разговором по мобиле в зоне неуверенного приема - будет то же самое). Если полистать ленты багтрака, то для конкретного оборудования можно найти даже такие эксплойты, которые позволяют напакостить, не имея в распоряжении многотысячную армию ботов. Удручает.

Для защиты разговоров от прослушки в VoIP-сетях применяется шифрование, защищающее весь путь, который проходят голосовые данные. Однако на практике этот механизм практически не используется, хотя и является неотъемлемой частью стандарта H.323. Виноваты в этом дополнительные временные затраты на шифрование и дешифрование трафика, которые, естественно, вносят дополнительную задержку. С помощью обычного сканера, такого как Ethereal (www.ethereal.com) или tcpdump (http://sourceforge.net/projects/tcpdump), а также плагинов для работы с Session Initiation Protocol (SIP) and H.323 можно вполне успешно перехватывать пакеты с голосовыми данными. Утилита vomit (Voice Over Misconfigured Internet Telephones, http://vomit.xtdnet.nl) удачно преобразует «цифру» в обычные в WAV-файлы, которые легко можно воспроизвести.

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

Ещё один нюанс связан с технологиями, которые напрямую завязаны на использовании телефонной линии. Если в один прекрасный день ты решишь полностью перейти на современные цифровые решения, но при этом используешь завязанную на телефоне сигнализацию, то будь готов к приезду парней в синей форме. Впрочем, почему нет? Расскажешь им обо всех прелестях VoIP...

Заключение

Конечно, с обычными телефонными сетями в ближайшем будущем нам распрощаться не получится. Этот переход не может быть осуществлен резко. Но зато такие именитые производители, как 3Com, Cisco, Avaya, Mitel, Nortel и Siemens, предлагают гибридную систему, сочетающую традиционную телефонию и VoIP для тех потребителей, которые не готовы полностью перейти на новую технологию. Подобные девайсы позволяют опробовать все прелести VoIP-телефонии, сохранив при этом возможность эксплуатировать старую телефонную систему. В Интернете все проще: любой желающий может закачать Skype и устраивать конференции, общаясь сразу с несколькими людьми со всего мира. А, например, его русскоязычный аналог - SipNet (www.sipnet.ru) - помимо всего прочего, позволяет бесплатно звонить на городские и мобильные телефоны Питера и Москвы. Проверял лично - работает!

INFO

Коммерческие предложения Skype в отношении звонков на обычные телефоны не очень выгодны. Сервис Yahoo предлагает такие звонки: 1 цент за минуту (на территорию США) и 1,9 цента за минуту (на территорию еще 30 стран). Также за $3 в месяц или $30 в год можно выбрать номер Yahoo, на который к вам могут поступать входящие звонки. Это офигенное подспорье, если ты хочешь ориентироваться на западный рынок.

Ещё с незапамятных времен существовали программы, позволяющие записывать короткие голосовые сообщения и отправлять их по е-mail. Так сказать, предшественники технологии VoIP.

WWW

www.packetizer.com/voip/h323/standards.html - подробнейшая инфа о семействе протоколов H.323.
www.faqs.org/rfcs/rfc3261.html - RFC 3261: протокол SIP.

INFO

Многие задают вопрос: какой объем трафика будет кушать VoIP? Здесь многое зависит от кодека. В случае с g723 - примерно 1,5кб/сек. g711 - ~9кб в секунду в каждую сторону, g729A - ~3 Кб/сек. Но необходимо учитывать, что когда ты молчишь, трафик не идет от тебя к собеседнику, и наоборот, когда молчит он, ты не принимаешь входящий трафик.
 
Top