Robust Header Compression¶
Robust Header Compression (ROHC) — это метод сжатия заголовков сетевых пакетов, предназначенный для уменьшения накладных расходов (overhead) при передаче данных по каналам связи с низкой пропускной способностью, высокой задержкой или повышенной вероятностью ошибок. Разработанный в рамках стандартизации протоколов IP-телефонии и мобильной связи, ROHC позволяет сокращать размер заголовков протоколов IP, UDP, RTP и TCP до нескольких байт, что критически важно для эффективного использования ресурсов в сетях с ограниченной ёмкостью, таких как сотовые сети (2G, 3G, 4G), спутниковые каналы и системы связи с малым энергопотреблением (например, LPWAN). Технология была стандартизирована Рабочей группой по инженерным проблемам Интернета (IETF) в серии документов RFC, начиная с RFC 3095 (2001 год).
¶История и предпосылки создания
До появления ROHC сжатие заголовков в IP-сетях осуществлялось с помощью протокола Van Jacobson (VJ) Compression для TCP, описанного в RFC 1144 (1990 год). Однако этот метод был ориентирован на проводные линии с низкой вероятностью ошибок и не учитывал специфику беспроводных каналов, где потеря пакетов и битовые ошибки — обычное явление. С развитием голосовой связи по IP (VoIP) и мультимедийных приложений в мобильных сетях возникла потребность в более устойчивом к ошибкам сжатии, особенно для протоколов реального времени (RTP).
В 1999 году в IETF была сформирована рабочая группа Robust Header Compression (ROHC WG), которая к 2001 году выпустила RFC 3095 — основной стандарт ROHC. Впоследствии стандарт был расширен для поддержки различных профилей сжатия (например, для TCP, UDP-Lite, IPv6) и адаптирован для использования в сетях LTE (4G) и NR (5G).
¶Принцип работы
ROHC основан на концепции контекста — состояния, которое хранится как на стороне компрессора (отправителя), так и на стороне декомпрессора (получателя). Контекст содержит информацию о предыдущих заголовках пакетов, что позволяет передавать только изменяющиеся поля (дельта-кодирование) или даже опускать их полностью, если они предсказуемы.
¶Основные механизмы
- Классификация полей заголовка: Поля делятся на три категории:
- Статические (неизменные в течение сессии): IP-адреса, порты UDP/TCP, версия протокола. Передаются только один раз.
- Динамические (изменяющиеся, но предсказуемые): номера последовательности RTP, метки времени, идентификаторы IP-пакетов. Сжимаются с использованием кодирования разностей (W-LSB — Window-based Least Significant Bits).
- Случайные (непредсказуемые): контрольные суммы, флаги. Могут передаваться в полном объёме или с частичным сжатием.
- Режимы работы: ROHC определяет три режима, которые выбираются в зависимости от характеристик канала:
- Unidirectional (U-mode): Однонаправленный режим, при котором декомпрессор не отправляет обратную связь. Компрессор периодически обновляет контекст для предотвращения рассинхронизации. Используется в каналах с очень высокой задержкой или отсутствием обратного канала.
- Bidirectional Optimistic (O-mode): Оптимистичный двунаправленный режим, при котором компрессор предполагает, что контекст у декомпрессора актуален, и отправляет обратную связь только при обнаружении ошибок. Наиболее распространённый режим.
- Bidirectional Reliable (R-mode): Надёжный двунаправленный режим, при котором каждый пакет подтверждается. Обеспечивает максимальную устойчивость, но требует больше ресурсов.
- Профили сжатия: Каждый профиль определяет, как сжимается конкретный набор протоколов. Основные профили:
- Profile 0 (RTP): Для голосовых и мультимедийных потоков (IP/UDP/RTP). Степень сжатия — до 1–2 байт на заголовок.
- Profile 1 (UDP): Для UDP-трафика без RTP (например, DNS, SNMP). Сжатие до 3–4 байт.
- Profile 2 (ESP): Для IPsec (Encapsulating Security Payload). Сжатие до 4–5 байт.
- Profile 3 (TCP): Для TCP-трафика. Сжатие до 3–6 байт (в зависимости от состояния).
- Profile 4 (UDP-Lite): Для UDP-Lite (протокол с частичной защитой контрольной суммой).
¶Процесс сжатия
Компрессор последовательно обрабатывает пакеты:
- Инициализация: При первом пакете сессии (или после потери синхронизации) передаётся полный заголовок (IR — Initialization and Refresh packet).
- Сжатие: Последующие пакеты сжимаются с использованием контекста. Если поля не изменились, передаётся только идентификатор контекста (CID — Context Identifier) и, возможно, минимальные изменения.
- Обновление контекста: При изменении статических или динамических полей (например, смена IP-адреса) отправляется пакет обновления (IR-DYN — Dynamic IR).
- Восстановление: Декомпрессор восстанавливает исходный заголовок, используя контекст и полученные сжатые данные. При ошибке (например, потеря пакета) декомпрессор может запросить повторную инициализацию.
¶Устойчивость к ошибкам
Ключевая особенность ROHC — способность корректно работать в каналах с высоким уровнем битовых ошибок (BER — Bit Error Rate) и потерями пакетов. Это достигается за счёт:
- Использования W-LSB-кодирования: Компрессор передаёт только младшие значащие биты разности, а декомпрессор восстанавливает значение, используя окно возможных вариантов. При ошибке декомпрессор может перебирать варианты в пределах окна.
- Механизма обратной связи: В O- и R-режимах декомпрессор отправляет сообщения о статусе (ACK/NACK/STATIC-NACK), что позволяет компрессору корректировать контекст.
- Периодического обновления контекста: В U-режиме компрессор через определённые интервалы отправляет полные заголовки, чтобы предотвратить долгосрочную рассинхронизацию.
¶Применение
¶Сотовые сети
ROHC широко используется в стандартах мобильной связи:
- 3G (UMTS): Внедрён в протокол PDCP (Packet Data Convergence Protocol) для сжатия заголовков VoIP и потокового видео.
- 4G (LTE): Является обязательным компонентом PDCP в LTE. Сжимает заголовки IP/UDP/RTP для голосовых вызовов (VoLTE) и видеозвонков (ViLTE). Степень сжатия достигает 90–95% для заголовков RTP.
- 5G (NR): Поддерживается в PDCP версии 5G, с дополнительными профилями для новых типов трафика (например, для IoT-устройств с низким энергопотреблением).
¶Спутниковая связь
В спутниковых каналах с высокой задержкой (до 600 мс) и периодическими потерями ROHC позволяет эффективно передавать голос и видео. Например, в системах спутниковой телефонии (Iridium, Inmarsat) ROHC сокращает накладные расходы до 2–3 байт на пакет.
¶Военные и авиационные системы
ROHC применяется в тактических радиосетях (например, Link 16, JTRS) и авиационных системах связи (AeroMACS), где пропускная способность ограничена, а надёжность критична.
¶Интернет вещей (IoT)
В протоколах LPWAN (LoRaWAN, NB-IoT) ROHC используется для сжатия заголовков IPv6/UDP, что позволяет уменьшить размер пакетов до 10–20 байт и продлить срок службы батарей устройств.
¶Преимущества и недостатки
¶Преимущества
- Высокая степень сжатия: Заголовки RTP могут быть сжаты до 1–2 байт (с 40–60 байт).
- Устойчивость к ошибкам: Работает при BER до 10^-3.
- Низкая задержка: Сжатие и декомпрессия выполняются за несколько микросекунд.
- Масштабируемость: Поддерживает до 16383 контекстов (CID) на одно соединение.
¶Недостатки
- Сложность реализации: Требует значительных вычислительных ресурсов для управления контекстами и кодирования.
- Начальная задержка: Первый пакет (IR) имеет полный размер, что может быть критично для коротких сессий.
- Зависимость от обратной связи: В O- и R-режимах требуется надёжный обратный канал, что не всегда доступно.
- Ограниченная поддержка в старых устройствах: Многие маршрутизаторы и коммутаторы не поддерживают ROHC.
¶Стандартизация
Основные документы IETF, регламентирующие ROHC:
- RFC 3095 (2001) — базовый стандарт для RTP/UDP/IP.
- RFC 3843 (2004) — профиль для UDP/IP.
- RFC 4995 (2007) — обновлённая архитектура ROHC.
- RFC 5795 (2010) — профиль для TCP/IP.
- RFC 6846 (2013) — профиль для UDP-Lite.
- RFC 8824 (2021) — адаптация для 5G NR.
¶Критика и альтернативы
Критики ROHC отмечают его избыточную сложность для современных сетей с высокой пропускной способностью (например, для 5G с гигабитными скоростями сжатие заголовков может быть неоправданным). Альтернативными подходами являются:
- IP Header Compression (IPHC): Упрощённая версия, используемая в 6LoWPAN для IoT.
- Static Context Header Compression (SCHC): Более простой метод, стандартизированный для LPWAN (RFC 8724).
- NAT/NAPT: Не сжимает заголовки, но уменьшает количество IP-адресов.
Тем не менее, ROHC остаётся стандартом де-факто для голосовых и мультимедийных приложений в мобильных сетях, обеспечивая баланс между сжатием и надёжностью.
¶Источники
- RFC 3095 — RObust Header Compression (ROHC): Framework and four profiles: RTP, UDP, ESP, and uncompressed.
- RFC 4995 — The RObust Header Compression (ROHC) Framework.
- RFC 5795 — The RObust Header Compression (ROHC) Profile for TCP.
- 3GPP TS 36.323 — Evolved Universal Terrestrial Radio Access (E-UTRA); Packet Data Convergence Protocol (PDCP) specification.
- 3GPP TS 38.323 — NR; Packet Data Convergence Protocol (PDCP) specification.
- Bormann, C. et al. (2001). "RObust Header Compression (ROHC): A new approach to header compression for IP over wireless links." IEEE Communications Magazine.
- Jonsson, L. (2004). "RObust Header Compression (ROHC): A survey." IEEE Communications Surveys & Tutorials.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


