2007 г.
Принципы организации IP-телефонии на базе решений Cisco Systems
Иван Ярцев
Информационный бюллетень JET INFO
Назад Оглавление Вперёд
Голос для передачи по сети сначала попадает на вход цифрового сигнального процессора DSP (Digital Signal Processor), где он порциями кодируется определенным кодеком. Выход с DSP инкапсулируется в PDU (единица данных протокола — фреймы, пакеты) и передается по сети.
При доставке данных реального времени, таких как голос, метод определения PDU, несущих голос, является необходимым. Если обнаруживается такой PDU, можно применить механизмы ускорения его передачи.
Технология VoFR (Voice over Frame Relay — передача голоса по каналам Frame Relay) использует специальный заголовок FRF.11 (Рис. 1). Этот заголовок занимает, как минимум, три байта и служит для определения типа данных, которые содержатся во фрейме. Устройства VoATM (Voice over ATM — передача голоса по каналам ATM) используют такой же заголовок.
Рис. 1. Поля, отвечающие за пометку приоритета
Пропускная способность канала, занимаемого одним голосовым звонком, зависит от следующих компонентов:
- используемый кодек;
- размер полезной нагрузки в пакете;
- размер служебной информации в пакете.
Различные кодеки (сокращение от "кодер-декодер" — компонент системы, обеспечивающий сжатие и распаковку определенных данных) требуют разную полосу пропускания:
Кодек | Технология сжатия | Битрейт кодека (Кб/с) |
---|
G.711 | PCM | 64 |
G.726 | ADPCM | 16, 24, 32 |
G.728 | LDCELP | 16 |
G.729 | CS-ACELP | 8 |
G.729A | CS-ACELP | 8 |
Занимаемую полосу пропускания можно вычислить, основываясь на битрейте (число битов потока, передаваемых за секунду; основная характеристика видео- или аудиопотока при сжатии) кодека, издержке пакетизации и размере полезной нагрузки в пакете.
Размер полезной нагрузки зависит от размера голосового сэмпла (звукового файла), который является величиной конфигурируемой и непосредственно влияет на требуемую полосу пропускания. Голосовой сэмпл — это выход с процессора DSP, инкапсулирующийся в PDU. Cisco использует DSP, обрабатывающие по 10 мс голоса. Оборудование Cisco по умолчанию инкапсулирует в PDU 20 мс голоса вне зависимости от используемого кодека. Это значение можно изменить, но при его увеличении требуемая полоса пропускания уменьшается, что может привести к увеличению переменных задержек (так называемых джиттеров — jitter) и появлению ощутимых разрывов в звучании, если пакет не дойдет до пункта назначения.
Размер сэмпла в байтах рассчитывается по формуле:
где
- Bytes_per_sample — размер сэмпла в байтах,
- Sample_size — размер сэмпла в секундах,
- Codec_bandwidth — битрейт используемого кодека.
Для вычисления полосы пропускания канала, занимаемой одним звонком, используется следующая формула:
Total_bandwidth=(Layer2_overhead+IP_UDP_overhead+Sample_size) / Sample_size*Codec_speed,
где
- Layer2_overhead — объем служебной информации протокола канального уровня в байтах,
- IP_UDP_RTP_overhead — размер заголовков протоколов IP, UDP и RTP в байтах,
- Sample_size — размер сэмпла в байтах,
- Codec_speed — битрейт используемого кодека.
Приведем примеры полосы пропускания, занимаемой одним звонком, при использовании кодеков G.711 и G.729 и различных размерах сэмплов. В качестве протоколов канального уровня возьмем Frame Relay и Ethernet II.
Размер служебной информации при использовании Ethernet II составляет 18 байт (6 байт — адрес назначения, 6 байт — адрес источника, 2 байта — тип, 4 — контрольная сумма); при использовании Frame Relay — 6 байт (2 байта — DLCI, 2 — FRF.12, 2 — контрольная сумма). Заголовки IP, UDP и RTP без компрессии занимают 40 байт (20 IP, 8 UDP, 12 RTP). Таким образом получаем распределение, представленное в Таб. 1.
В традиционной телефонии голос имеет гарантированную фиксированную задержку при передаче и гарантированную полосу пропускания для каждого звонка. В сети передачи данных для передачи голоса требуется низкая задержка, минимальные джиттеры и потери пакетов.
Проблемы качества передачи голоса включают:
- Потери пакетов. Голосовые кодеки способны восполнять небольшие потери, но если они выше некоторого предела, то возможно прерывание голоса.
- Задержка. Сквозная задержка — это время, которое требуется для передачи пакета от передающего на принимающее устройство. Задержка складывается из постоянной и переменной составляющих. Постоянная составляющая может быть оценена при проектировании сети. Примеры постоянных задержек — время прохождения сигнала по сети, задержка кодирования, время пакетизации. Перегруженные очереди на интерфейсах и время выкладывания данных на физическую среду передачи данных (Serialization delay) рождают переменные задержки. Время выкладывания данных на физическую среду является функцией от скорости канала и размера пакета — чем больше пакет и меньше скорость канала, тем больше это время. Несмотря на то что это отношение известно, время выкладывания данных на физическую среду отнесено к переменным задержкам, потому что больший пакет может войти в очередь на интерфейсе в любой момент перед голосовым пакетом. В этом случае голосовой пакет будет ждать в очереди на интерфейсе, пока не будет обработан пакет перед ним.
- Различие времени задержек передачи от пакета к пакету (джиттер) — разница между ожидаемым и фактическим временем прихода очередного пакета. VoIP-устройства используют специальный буфер для установления постоянного темпа обработки пакетов, таким образом достигается плавность звучания голоса.
Для обеспечения передачи различных типов трафика в магистральных каналах связи используются различные технологии:
- классификация и маркировка трафика;
- механизмы очередей или устранения перегрузок на интерфейсах;
- механизм сжатия заголовков RTP-пакетов;
- фрагментация пакетов.
Все эти технологии должны обеспечить различным видам трафика соответствующий уровень обслуживания и необходимое качество голосовых соединений.
Приложения реального времени, такие как голосовые, отличаются своими характеристиками от традиционных приложений. Голосовые приложения допускают минимальный джиттер. Потери пакетов и джиттеры ухудшают качество передаваемого голоса. При замене традиционных голосовых технологий IP-телефонией пользователи должны получать то же качество голоса, как и при обычной телефонии. Для эффективной передачи голоса через IP-сеть нужен механизм надежной доставки с маленькой задержкой.
VoIP гарантирует передачу голоса высокого качества только в том случае, если аудио- и сигнальные пакеты имеют приоритет перед любыми другими пакетами в сети. Для выполнения этого требования используется механизм QoS (Quality of Service). QoS — это методика обеспечения качества передачи определенных данных, основанная на разделении трафика по приоритетам для соответствующей его обработки. QoS обеспечивает лучший, более предсказуемый, сервис сети, выполняя следующие функции:
- поддержка выделенной полосы пропускания;
- уменьшение потерь пакетов;
- предотвращение заторов в сети, управление загруженностью сети;
- управление сетевым трафиком;
- установление приоритетов для различных типов трафика в сети.
Программное обеспечение Cisco IOS (операционная система активного сетевого оборудования фирмы Cisco Systems) включает в себя полный набор средств обеспечения QoS в сети. Перечислим некоторые из них.
- На выходных очередях маршрутизаторов применяются следующие методы ускорения обработки критичного трафика:
- WFQ (Weighted Fair Queuing) и DWFQ (Distributed WFQ). Разделяет трафик на потоки, после чего распределяет его на вывод особым образом, обеспечивая поддержку заданной полосы пропускания и заданный диапазон задержек.
- CBWFQ (Class-Based Weighted Fair Queuing). Расширяет функциональность WFQ, предоставляя поддержку пользовательских классов трафика. Можно самостоятельно задать специальный класс трафика для голоса, используя CBWFQ.
- LLQ (Low Latency Queuing). Предоставляет строго приоритетную постановку в очередь на виртуальных соединениях ATM (VCs) и последовательных интерфейсах.
- WRED и DWRED (Weighted Random Early Detection и Distributed WRED). Обеспечивает разные параметры производительности для различных классов трафика. Такая классификация гарантирует привилегированную обработку голосового трафика в условиях затора без усугубления ситуации.
- В глобальной вычислительной сети и протоколах ГВС для улучшения качества обслуживания различных видов трафика применяются:
CAR (Committed access rate). Обеспечивает ограничение занимаемой полосы пропускания.
FRTS (Frame Relay traffic shaping). Задерживает "чрезмерный" трафик, используя специальный буфер или механизм очереди для удержания пакетов и нормализации потока данных в случае, когда его объем выше ожидаемого.
FRF.12. Обеспечивает лучшую пропускную способность на низкоскоростных линиях Frame Relay.
IP to ATM class of service (CoS). Включает в себя обеспечение соответствия характеристик CoS между IP и ATM.
MLP (Multilink PPP) с LFI (link fragmentation and interleaving). Фрагментирует большие пакеты. LFI также обеспечивает специальную очередь для передачи небольших, чувствительных к задержкам пакетов, позволяя им быть отосланными раньше других.
CRTP (Compressed Real-Time Transport Protocol). Сжимает заголовки RTP, уменьшая расход полосы пропускания для голосового трафика.
RSVP (Resource Reservation Protocol). Поддерживает резервирование ресурсов в IP-сети.
Распространение политик QoS по протоколу BGP (Border Gateway Protocol). Обеспечивает распространение политик QoS на удаленные маршрутизаторы в сети по протоколу BGP.
Классификация позволяет выделить из трафика определенный поток и затем применить к нему политики и действия различного характера. Классификация используется для маркировки, приоритизации, буферизации и т.д.
Для определения принадлежности трафика к тому или иному классу, что необходимо для принятия решения о способе его обработки, могут проверяться различные характеристики:
- физический интерфейс, порт;
- поля из заголовка фрейма 2-го уровня — MAC-адрес, биты поля CoS 802.1Q/P, VLAN id;
- поля из IP-заголовка — IP Precedence, код DSCP, IP-адреса источника и/или назначения;
- порты протоколов TCP и UDP;
- сигнатуры из уровня приложений.
Классификация применяется для входящего и/или исходящего из маршрутизатора трафика.
Для маркирования пакета может быть использован заголовок второго уровня (802.1Q/p, FR DE bits) и/или поле TOS IP-заголовка (IP Precedence или DSCP).
Маркированный трафик упрощает применение единых правил приоритизации/обработки трафика для всех устройств в сети передачи данных, в том числе и для устройств провайдера услуг.
Маркировка трафика и перемаркировка рекомендована на входящем интерфейсе, как можно ближе к источнику трафика.
Для регулирования возможных перегрузок на исходящем интерфейсе в ПО маршрутизатора (IOS) существует уровневая система буферизации пакетов. Подсистема L3 оперирует IP-пакетами, L2-буфер сильно зависит от канального протокола и L1-буфер (Tx Ring) работает на драйвере устройства.
Существует несколько алгоритмов регулировки очередей для подсистемы L3.
При наличии в сети VoIP-трафика компанией Cisco рекомендовано использовать LLQ (Low-Latency Queuing). Алгоритм основан на классификации потоков:
- поддерживает очередь с безусловным приоритетом strict priority для голосового трафика и CBWFQ для трафика других приложений. Маршрутизатор обрабатывает только очередь strict priority, пока она не будет полностью обработана. Если очередь strict priority пуста, то весь остальной трафик обрабатывается по методике CBWFQ;
- уменьшает возможные задержки голосовых пакетов и оптимизирует использование полосы пропускания канала.
На маршрутизаторах можно задействовать механизм сжатия заголовков RTP пакетов. В этом случае, вместо того чтобы передавать друг другу RTP-пакеты с заголовком в 40 байт (IP+UDP+RTP), они передают пакеты с заголовком в 2-5 байт. Передающий маршрутизатор заменяет исходный заголовок, а принимающий при приеме его восстанавливает.
Механизм не влияет на задержку VoIP-трафика. Уменьшает полосу канала, занимаемую голосовым трафиком.
Механизм cRTP имеет следующие характеристики:
- используется только на соединениях point-to-point и не применяется при передаче пакетов через Ethernet и MPLS.
- Механизм относится к процессам, работающим на канальном уровне (L2), то есть принимает пакеты после их обработки процессами третьего уровня.
- Изменяет заголовок исходящего пакета. При приеме пакета заголовок должен быть декомпрессирован для его дальнейшей маршрутизации.
- Уменьшает полосу, занимаемую голосовым трафиком, что необходимо учитывать при планировании политик очередей LLQ.
- Механизм создает дополнительную нагрузку на CPU маршрутизатора. Не рекомендуется использовать при загрузке CPU более 70%.
- Механизм зависим от протокола канального уровня. Работает только на каналах с инкапсуляцией типа HDLC, Frame Relay или PPP.
- Возможно использование классификатора трафика (class based RTP) для применения механизма сжатия только к VoIP-пакетам, что уменьшает нагрузку на CPU маршрутизатора, так как применение механизма cRTP на интерфейсе автоматически включает сжатие TCP-заголовков для всех исходящих пакетов.
- Механизм идентифицирует RTP-поток по UDP-портам.
Механизм поддерживает выполнение рекомендации ITU G.114 — устройство не должно обрабатывать голосовой пакет больше 20 мс. Механизм не изменяет занимаемую полосу канала. Уменьшает возможную задержку пакета и вариацию задержки (jitter) потока.
Механизм LFI имеет следующие характеристики:
- пакеты, исходящие из высокоприоритетных очередей, не фрагментируются;
- механизм относится к процессам, работающим на канальном уровне (L2);
- рекомендованный интервал фрагментации (serialization) — 10 мс, для канала в 512 Kbps соответствует пакету размером 640 байт;
- существуют два варианта механизма — Multilink PPP LFI и Frame Relay LFI (FRF.12).
Неэффективно использовать данный механизм на каналах более 1 Mbps.
Отличительные черты неправильного проектирования:
- игнорирование требований QoS на втором уровне модели OSI: QoS на втором уровне включает в себя FRF.11, LFI и планирование трафика;
- игнорирование других требований QoS: такие сервисы как LLQ и сRTP должны быть включены;
- игнорирование анализа пропускной способности: планирование количества звонков и их влияние на пропускную способность является критичным для всех пользователей сети;
- простое добавление VoIP в существующую IP-сеть: при внедрении VoIP может потребоваться перепроектирование сети.
В технологии VoIP используются следующие протоколы:
- H.323. Протокол ITU для интерактивной конференции. Был изначально предназначен для мультимедийного взаимодействия в сетях без установления соединения, таких как ЛВС.
- MGCP (Media Gateway Control Protocol). Предназначен для управления VoIP шлюзов, подключенных к внешним устройствам управления вызовами. MGCP предоставляет сервис сигналлинга для недорогих конечных устройств, таких как шлюзы, которые не поддерживают в полном объеме стек сигналлинга, например H.323.
- SIP (Session Initiation Protocol). Протокол, определяющий команды и ответы для установления и завершения телефонных вызовов. Также детализирует такие моменты как безопасность, прокси и транспортные сервисы.
- RTP (Real-Time Transport Protocol). RTP доставляет голос через сеть. Обеспечивает очередность и маркировку времени для правильной последовательной обработки пакетов.
- RTCP (RTP Control Protocol). Используется для передачи управляющей информации для протокола RTP. Любое RTP-соединение имеет соответствующее RTCP-соединение. RTCP используется для предоставления информации о качестве сервиса.
Соответствие протоколов VoIP уровням модели OSI:
Абонентское устройство (Dial Peer) — это адресуемая точка дозвона. Такие точки устанавливают логические соединения, называемые этапами дозвона (Call Legs), для завершения установления звонка. Маршрутизаторы Cisco, поддерживающие голосовые функции, поддерживают два типа абонентских устройств: POTS Dial Peer и VoIP Dial Peer.
POTS (Plane old telephone service) Dial Peer подключаются к традиционным телефонным сетям или традиционным телефонным аппаратам. Такие устройства выполняют функции по предоставлению адреса (телефонного номера или диапазона телефонных номеров) для конечного устройства (сети) и также указывают на конкретный голосовой порт, к которому конечное устройство (сеть) подключено.
VoIP Dial Peer подключаются через сеть передачи данных и предоставляют адрес назначения (телефонный номер или диапазон номеров) для конечного устройства в сети и ассоциируют адрес назначения со следующим маршрутизатором, на который звонок должен передаться.
Когда происходит вызов, устройство генерирует цифры номера дозвона как способ указания устройства, на котором звонок должен завершиться, то есть устройства, на которое совершается звонок. Когда эти цифры попадают на голосовой порт маршрутизатора, маршрутизатор должен иметь способ решить, куда вызов должен быть маршрутизирован. Маршрутизатор находит это решение, просматривая список абонентских устройств.
Адрес абонентского устройства, называемый шаблоном назначения (destination pattern), сконфигурирован на каждом абонентском устройстве. Шаблон назначения может соответствовать как одному телефонному номеру, так и диапазону телефонных номеров. Маршрутизатор использует абонентские устройства для установления логических соединений (Call Legs) как в исходящем, так и во входящем направлениях.
Когда к маршрутизатору Cisco Systems с голосовыми функциями подключается традиционное телефонное устройство (вариант POTS Dial Peer), в конфигурации маршрутизатора указывается телефонный номер этого устройства и порт, к которому оно подключено. Таким образом, маршрутизатор "знает", куда направлять входящий звонок на этот номер.
В случае VoIP Dial Peer конфигурация маршрутизатора включает телефонный номер назначения (диапазон номеров) и сетевой адрес следующего маршрутизатора.
Этапы установления соединения (Call Legs) — это логические соединения между любыми двумя телефонными устройствами, такими как шлюзы, маршрутизаторы, приложения Cisco CallManager или оконечные телефонные устройства.
Когда поступает входящий вызов, он обрабатывается отдельно, пока не будет определен пункт назначения. После этого устанавливается исходящее соединение, и входящий вызов коммутируется с исходящим портом.
Сквозной звонок состоит из четырех этапов соединения: два с точки зрения маршрутизатора, на котором звонок возникает, и два с точки зрения маршрутизатора, на котором телефонное соединение завершается.
Входящий этап соединения возникает, когда вызов входит в маршрутизатор или шлюз, исходящий — когда вызов совершается маршрутизатором или шлюзом.
Процесс установления телефонного соединения можно описать следующими шагами (Рис. 3):
Рис. 2. Этапы соединения
Рис. 3. Этапы соединения с точки зрения маршрутизаторов.
- Звонок с традиционного телефона приходит на R1 и абонентское устройство, инициировавшее вызов, идентифицировано.
- После ассоциирования входящего вызова с абонентским устройством R1 создает входящий этап соединения и назначает ему идентификатор Call ID (Call Leg 1).
- R1 использует строку набора с целью определения абонентского устройства для совершения исходящего шага соединения.
- После определения абонентского устройства, с которым будет устанавливаться соединение, R1 создает исходящий шаг соединения и назначает ему идентификатор (Call Leg 2).
- Сетевой запрос поступает на маршрутизатор 2 (R2), на котором происходит идентификация вызывающего сетевого абонентского устройства.
- После определения сетевого абонентского устройства, с которого поступил запрос, R2 создает входящее соединение и назначает ему идентификатор (Call Leg 3). Здесь R1 и R2 согласовывают параметры при необходимости.
- R2 использует строку набора с целью определения абонентского устройства для совершения исходящего шага соединения.
- После определения абонентского устройства R2 создает исходящий вызов с назначением ему идентификатора и завершает процесс соединения (Call Leg 4).
В качестве иллюстрации процесса в главе "Примеры конфигураций" приведен пример конфигурации абонентских устройств и описаны методы конфигурирования диапазонов телефонных номеров.