Введение
Robust Header Compression (ROHC) - это стандартизированный метод сжатия IP, UDP, UDP Lite, RTP и TCP-заголовков интернет-пакетов.
Необходимость сжатия заголовка
В потоковых приложениях накладные расходы протоколов IP, UDP и RTP составляют 40 байт для IPv4 или 60 байт для IPv6. Для VoIP это соответствует примерно 60% от общего объема передаваемых данных. Такие большие накладные расходы могут быть допустимы в локальных проводных сетях, где пропускная способность часто не является проблемой, но чрезмерны для глобальных сетей и беспроводных систем, где пропускная способность ограничена. ROHC сжимает эти 40 или 60 байт накладных расходов, как правило, всего до одного или трех байт, размещая компрессор перед каналом связи с ограниченной пропускной способностью и декомпрессор после него. Компрессор преобразует большие накладные расходы в несколько байт, а декомпрессор выполняет обратное преобразование. Схема сжатия ROHC отличается от других схем сжатия, таких как IETF и , тем, что она эффективно работает в каналах связи с высокой вероятностью потери пакетов, например, в беспроводных сетях.
Однонаправленный режим (U-режим)
В однонаправленном режиме работы пакеты передаются только в одном направлении: от компрессора к декомпрессору. Этот режим, таким образом, позволяет использовать ROHC в сетях, где обратный канал связи от декомпрессора к компрессору отсутствует или не требуется. Для обработки возможных ошибок декомпрессии компрессор периодически отправляет декомпрессору обновления контекста потока.
Двунаправленный оптимистический режим (O-режим)
Двунаправленный оптимистический режим аналогичен однонаправленному, за исключением использования канала обратной связи для отправки запросов на восстановление ошибок и (опционально) подтверждений существенных обновлений контекста от декомпрессора к компрессору. Режим O призван максимизировать эффективность сжатия и стремится к редкое использованию канала обратной связи.
Двунаправленный надежный режим (R-режим)
Двунаправленный надежный режим во многом отличается от двух предыдущих режимов. Основные отличия заключаются в более активном использовании канала обратной связи и более строгой логике работы как компрессора, так и декомпрессора, предотвращающей потерю синхронизации контекста между ними, за исключением случаев очень высокой остаточной вероятности битовых ошибок.
Состояние компрессора/декомпрессора
Понятие состояний компрессора/декомпрессора ортогонально режимам работы. Независимо от режима, как компрессор, так и декомпрессор работают в одном из трех своих состояний. По сути, это конечные автоматы. Каждый входящий пакет может привести к изменению внутреннего состояния компрессора/декомпрессора. Каждое состояние соответствует определенному поведению и уровню сжатия. Алгоритм ROHC аналогичен видеокомпрессии, где для представления потока IP-пакетов отправляется базовый кадр, а затем несколько дифференциальных кадров. Это дает преимущество, позволяя ROHC выдерживать значительные потери пакетов в состоянии максимальной компрессии, при условии, что базовые кадры не будут потеряны.
Работа в разных состояниях компрессора
В состоянии инициализации и обновления (IR) компрессор только что создан или сброшен, и отправляются полные заголовки пакетов. В состоянии первого порядка (FO) компрессор обнаружил и сохранил статические поля (например, IP-адреса и номера портов) с обеих сторон соединения. В состоянии FO компрессор также передает разности динамических полей пакетов. Таким образом, состояние FO представляет собой, по сути, статическое и псевдодинамическое сжатие. В состоянии второго порядка (SO) компрессор подавляет все динамические поля, такие как последовательные номера RTP, и отправляет только логический порядковый номер и частичную контрольную сумму, чтобы другая сторона могла предсказуемо генерировать и проверять заголовки следующего ожидаемого пакета. В целом, состояние FO сжимает все статические поля и большинство динамических полей. Состояние SO предсказуемо сжимает все динамические поля, используя порядковый номер и контрольную сумму.
Прочность
Размер поля последовательного номера (SN) определяет количество пакетов, которые ROHC может потерять до необходимости сброса компрессора для продолжения работы. Алгоритм W LSB используется для надежного сжатия SN. Размер последовательного номера в 1- и 2-байтовых пакетах ROHC составляет либо 4 бита (−1/+14 смещение фрейма), либо 6 битов (−1/+62 смещение фрейма) соответственно, поэтому ROHC может выдержать потерю максимум 62 фреймов при использовании заголовка в 12 байтов.
Дополнительные профили сжатия
Определяет общий механизм сжатия. Он может быть расширен путем определения новых профилей сжатия, предназначенных для конкретных заголовков протокола. Для сжатия новых протоколов были опубликованы новые RFC: определяет профиль сжатия для заголовков IP или IP-туннелей, определяет профиль сжатия для заголовков UDP Lite/IP и RTP/UDP Lite/IP, определяет профиль сжатия для заголовков TCP/IP.
The defines a compression profile for IP headers or IP tunnels. The defines a compression profile for UDP Lite/IP and RTP/UDP Lite/IP headers. The defines a compression profile for TCP/IP headers.
Новые RFC ROHC
Опубликовано два новых RFC для устранения путаницы, возникшей у некоторых при интерпретации и внедрении ROHC. Первый документ определяет структуру ROHC, а второй – новые версии существующих профилей ROHC.