Способы и системы для усовершенствования локального восстановления при надежном сжатии заголовка

Иллюстрации

Показать все

Изобретение относится к системам связи. Раскрыты способы и системы, предназначенные для усовершенствования локального восстановления в распаковщиках (110, 114) надежного сжатия заголовка, которые могут улучшить эффективность и качество передачи в сети. Один способ использует информацию нижнего уровня, чтобы усовершенствовать локальное восстановление в распаковщиках (110, 114). Другой способ использует контрольную сумму протокола дейтаграммы пользователя (UDP), чтобы усовершенствовать локальное восстановление в распаковщиках (110, 114). 10 н. и 19 з.п. ф-лы, 13 ил.

Реферат

Настоящая заявка притязает на приоритет предварительной заявки №60/798058, озаглавленной “Способы и системы для усовершенствования локального восстановления при надежном сжатии заголовка” от 4 мая 2006 г., права на которую переданы владельцу настоящего изобретения, и при этом специально включенной в настоящее описание в качестве ссылки.

Область техники, к которой относится изобретение

Настоящее изобретение в целом относится к беспроводной связи и более конкретно к способам и системам, которые усовершенствуют локальное восстановление при надежной распаковке заголовка

Уровень техники

Протокол Интернет (IP) является сетевым протоколом, используемым как в проводных, так и в беспроводных сетях. Для некоторых услуг и приложений, таких как передача речи через Интернет (VoIP), интерактивные игры, сообщения и т.д., полезная нагрузка пакета IP может быть почти того же самого размера или даже меньше, чем заголовок IP пакета. В полях заголовка в одном и том же заголовке пакета может быть существенная избыточность и особенно между последовательными пакетами потока пакетов. Сжатие заголовка (НС) является процессом сжатия заголовков протокола пакета IP на одном конце линии связи, передачи их на другой конец линии связи и распаковки их в их первоначальное состояние на другом конце.

Краткое описание чертежей

Признаки, сущность и преимущества настоящей заявки станут более понятными из подробного описания, приведенного ниже, взятого совместно с чертежами.

Фиг.1 иллюстрирует систему связи, в которой могут быть осуществлены один или более способов, описанных в настоящей заявке;

фиг.2 иллюстрирует некоторые компоненты аппаратного обеспечения и программного обеспечения системы приемопередатчика базовой станции/обслуживающего узла пакетных данных (BTS-PDSN) или PDSN-BTS фиг.1;

фиг.3 иллюстрирует некоторые компоненты аппаратного обеспечения и программного обеспечения терминала доступа фиг.1;

фиг.4 иллюстрирует способ, предназначенный для усовершенствования локального восстановления при надежной распаковке заголовка, который может быть использован с помощью системы фиг.1;

фиг.5 иллюстрирует другой способ, предназначенный для усовершенствования локального восстановления при надежной распаковке заголовка, который может быть использован системой, представленной на фиг.1;

фиг.6 иллюстрирует устройство распаковщика, соответствующее способу по фиг.4;

фиг.7 иллюстрирует устройство распаковщика, соответствующее способу по фиг.5;

фиг.8 иллюстрирует пример пакета с несжатыми заголовками и пакета со сжатым заголовком;

фиг.9 иллюстрирует способ использования контрольной суммы при определении, успешно ли проходит распаковка;

фиг.10 иллюстрирует устройство распаковщика, соответствующее способу по фиг.9;

фиг.11 иллюстрирует пример надежного сжатия заголовка (RoHC) и ложный проход циклического контроля избыточности (CRC);

фиг.12 иллюстрирует способ, предназначенный для определения интервала интерпретации для пакета; и

фиг.13 иллюстрирует устройство, соответствующее способу по фиг.12.

Подробное описание вариантов осуществления

Варианты осуществления, раскрытые в настоящей заявке, могут быть осуществлены в любой беспроводной и/или проводной системе связи, такой как сотовые сети, коммутируемые телефонные сети общего пользования (PSTN), беспроводный Интернет, спутниковые сети, глобальные сети (WAN), беспроводные локальные сети (WLAN), сети VoIP, системы мультимедиа на основе IP и т.д.

Фиг.1 иллюстрирует пример системы 10 связи, в которой могут быть осуществлены один или более способов, описанных в настоящей заявке. Первый терминал доступа (АТ) 100А может включать в себя компрессор 102 заголовка восходящей линии связи (или обратной линии связи). Первый терминал доступа 100А может связываться беспроводным способом через обратную линию связи (RL) с базовой станцией 104А и системой приемопередатчика базовой станции/обслуживающим узлом пакетных данных (BTS-PDSN) 106А в сети радиодоступа (RAN).

BTS-PDSN 106А может включать в себя распаковщик 110 восходящей линии связи, который может выполнять один или более способов, описанных в настоящей заявке. BTS-PDSN 106А может связываться с обслуживающим узлом пакетных данных/системой приемопередатчика базовой станции (PDSN-BTS) 106В через сеть 108 VoIP. PDSN-BTS 106В может включать в себя компрессор 112 заголовка нисходящей линии связи (или прямой линии связи).

Второй терминал доступа 100В может связываться беспроводным способом через прямую линию связи (FL) с базовой станцией 104В и PDSN-BTS 106В. Второй терминал доступа 100В может включать в себя распаковщик 114 заголовка нисходящей линии связи, который может выполнять один или более способов, описанных в настоящей заявке. Вместо двух беспроводных терминалов доступа 100А,

100В один из терминалов доступа может быть проводным терминалом.

Обратная линия связи и прямая линия связи могут использовать один или более протоколов связи, такие как множественный доступ с кодовым разделением (CDMA) 1x, развитие оптимизированных данных (EV-DO) CDMA 1x Rev. 0, Rev. A или Rev. B, широкополосный CDMA (WCDMA), высокоскоростной пакетный доступ нисходящей линии связи (HSDPA), высокоскоростной пакетный доступ восходящей линии связи (HSUPA), CDMA с синхронизированным разделением времени (TD-CDMA), глобальная система мобильной связи (GSM), ортогональное частотное мультиплексирование (OFDM), IEEE 802.11, IEEE 802.18, IEEE 802.20, Wimax, WiBro, ультрамобильный широкополосный (UMB) и другие технологии связи.

Терминал доступа (АТ), описанный в настоящей заявке, может относиться к различным типам устройств, таким как проводной телефон, беспроводный телефон, сотовый телефон, переносной портативный компьютер, карта персонального компьютера (РС) беспроводной связи, персональный цифровой ассистент (PDA), внешний или внутренний модем и т.д. Терминал доступа может быть любым устройством данных, который взаимодействует через беспроводный канал или через проводной канал, например, с использованием волоконно-оптических или коаксиальных кабелей. Терминал доступа может иметь различные названия, такие как устройство доступа, абонентское устройство, подвижная станция, подвижное устройство, подвижный блок, мобильный телефон, мобильное устройство, удаленная станция, удаленный терминал, удаленное устройство, пользовательское устройство, пользовательское оборудование, карманное устройство и т.д. Терминалы доступа могут быть подвижными или стационарными и могут быть распределены по всей системе 10 связи фиг.1. Терминалы доступа могут связываться с одной или более системами приемопередатчика базовой станции (BTS), которые могут быть названы (или могут включать в себя) базовыми станциями, сетями доступа, пунктами доступа, узлами В и приемопередатчиками пула модема (МРТ).

Фиг.2 иллюстрирует некоторые компоненты аппаратного обеспечения и программного обеспечения BTS-PDSN 106А или PDSN-BTS 106В фиг.1, такие как процессор 200, интегральная схема прикладной ориентации (ASIC) и другое аппаратное обеспечение 202, приемопередатчик 204 и память 206. Память 206 может запоминать один или более верхних уровней 207, такой как прикладной уровень 208, транспортный уровень 210 и сетевой уровень 212. Прикладной уровень 208 может обрабатывать заголовки транспортного протокола реального времени (RTP или RTTP). Транспортный уровень 210 может обрабатывать заголовки протокола управления передачей (ТСР) и протокола дейтаграммы пользователя (UDP). Сетевой уровень 212 может обрабатывать заголовки IP.

Память 206 также может хранить компрессор 112 надежного сжатия заголовка, устройство распаковщика 110 надежного сжатия заголовка и один или более нижних уровней 220, таких как канальный уровень и уровень 214 управления доступом к среде (МАС), который может включать в себя подуровень протокола радиоканала (RLP) и физический уровень 216. Следует заметить, что альтернативные варианты осуществления могут включать в себя некоторые или все из этих функций, модулей или уровней, которые могут быть осуществлены в альтернативных конфигурациях.

Фиг.3 иллюстрирует некоторые компоненты аппаратного обеспечения и программного обеспечения терминалов доступа 100А, 100В фиг.1, такие как процессор 300, ASIC 302 и другое аппаратное обеспечение, приемопередатчик 304 и память 306. Память 306 может запоминать один или более верхних уровней 307, таких как прикладной уровень 308, транспортный уровень 310 и сетевой уровень 312. Прикладной уровень 308 может обрабатывать заголовки RTP. Транспортный уровень 310 может обрабатывать заголовки ТСР и UDP. Сетевой уровень 312 может обрабатывать заголовки IP.

Память 306 также может хранить компрессор 102 надежного сжатия заголовка, распаковщик 114 надежного сжатия заголовка и один или более нижних уровней 320, таких как канальный уровень и уровень 314 МАС, который может включать в себя подуровень RLP и физический уровень 316. Следует заметить, что альтернативные варианты осуществления могут включать в себя некоторые или все из этих функций, модулей или уровней, которые могут быть осуществлены в альтернативных конфигурациях.

Как использован в настоящем описании, “пакет” относится к единице передачи и приема. Эту единицу передачи и приема сжимают, затем распаковывают с помощью RoHC. “Поток пакетов”, как использован в настоящем описании, относится к последовательности пакетов, в которых значения полей и шаблоны изменения значений полей являются таковыми, что заголовки могут быть сжаты с использованием одного и того же контекста. Фиг.8 иллюстрирует пример пакета 800 с несжатыми заголовками (например, IP, UDP, RTP, TCP и другими заголовками) 804 и полезной нагрузкой 805. Способы сжатия используют для того, чтобы сжимать часть заголовка пакета 800, получая в результате сжатый пакет 802 со сжатой частью 807 заголовка и полезной нагрузкой 808. Сжатая часть 807 заголовка пакета может включать в себя порядковый номер RTP, контрольную сумму UDP и, возможно, другие поля. Сжатый пакет 802 также может включать в себя часть 806 заголовка канального уровня, включая порядковый номер канального уровня. Способы и распаковщики, описанные в настоящей заявке, могут быть использованы для того, чтобы принимать и распаковывать сжатый пакет 802.

Пакеты с заголовками IP, UDP и RTP, посланные через беспроводные линии связи, в значительной степени извлекают выгоду из сжатия заголовка, так как беспроводные сети имеют ограниченную полосу частот. Сжатие и распаковка заголовка улучшают эффективность передачи сети, качество и/или скорость с экономией полосы частот (вследствие уменьшенных непроизводительных потерь заголовка пакета), уменьшают потерю пакетов, улучшают время интерактивного ответа и уменьшают стоимость инфраструктуры (больше пользователей на полосу частот канала и, следовательно, меньше стоимость использования). В передаче связи “сетевой сегмент” относится к линии связи от одного устройства к другому устройству или к элементу сети. Система связи может сжимать заголовки протокола на основе сетевого сегмента через соединения точка-точка, которые могут включать в себя множество сетевых сегментов.

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

Однако некоторые способы сжатия заголовка не могут быть успешно выполнены через беспроводные (например, сотовые) линии связи вследствие высокой частоты появления ошибок, например, частоты появления ошибочных бит (BER), и больших времен задержек беспроводных линий связи, особенно когда шаблоны беспроводных топологий и трафика становятся более сложными. Настоящее раскрытие описывает способы надежного сжатия (RoHC) и распаковки заголовка, которые преодолевают недостатки других способов, таких как способы, описанные в запросе на комментарий (RFC) 3095.

Надежное сжатие заголовка в общих чертах описано в запросе на комментарий (RFC) 3095, под заголовком “Robust Header Compression (RoHC): Framework and four profiles: RTP, UDP, ESP and uncompressed” by C.Borman and al., July 2001, опубликованном Комитетом инженерной поддержки сети Интернет и распространенном Рабочей группой сообщества сети Интернет. Схема “надежного” сжатия заголовка допускает потери и остаточные ошибки в линии связи, через которую происходит сжатие заголовка, без потери дополнительных пакетов или внесения дополнительных ошибок в распакованные заголовки.

Контекст компрессора относится к информации состояния, которую использует компрессор, чтобы сжимать заголовок. Контекст распаковщика относится к информации состояния, которую использует распаковщик, чтобы распаковывать заголовок. Контекст может содержать значимую информацию из предыдущих заголовков в потоке пакетов, такую как статичные поля и, возможно, опорные значения для сжатия и распаковки. Контекст может содержать дополнительную информацию, описывающую поток пакетов, такую как информация о том, как изменяется поле идентификатора IP, и типичное увеличение внутри пакета порядковых номеров или временных меток.

Повреждение контекста относится к ситуации, когда контекст распаковщика не согласуется с контекстом компрессора, и, следовательно, распаковка может не воспроизвести первоначальный заголовок. Эта ситуация может иметь место, когда контекст распаковщика не был правильно инициализирован или когда пакеты были потеряны, переупорядочены или повреждены между компрессором и распаковщиком. Пакеты, которые не могут быть распакованы правильно вследствие несовместимого контекста, считают потерянными/поврежденными вследствие повреждения контекста.

RoHC может использовать контроль циклическим избыточным кодом (CRC) относительно первоначального заголовка, чтобы обнаруживать неправильную распаковку. Для того чтобы уменьшить вычислительную сложность, поля заголовка могут быть концептуально переупорядочены, когда вычисляют CRC, таким образом, что сначала вычисляют относительно октетов, которые являются статичными (называемыми CRC-STATIC), а затем относительно октетов, значения которых предполагают изменяющимися между пакетами (CRC-DYNAMIC). Таким образом, промежуточный результат вычисления CRC, после того как он включил в себя поля CRC-STATIC, может быть повторно использован для нескольких пакетов.

Сжатие заголовка является возможным, так как имеется большая избыточность между значениями полей заголовков между пакетами и между последовательными пакетами. Большинство полей заголовков могут быть отброшены при сжатии, так как они редко или никогда не изменяются. В одном примере только пять полей с суммарным размером приблизительно 10 октет требуют более сложного механизма. Эти поля включают в себя:

идентификацию IPv4 (16 бит) (IP-ID)

контрольную сумму UDP (16 бит)

маркер RTP (1 бит) (М-бит)

порядковый номер RTP (16 бит) (SN)

временную метку RTP (32 бит) (TS)

Кодирование последних наименьших значащих бит (LSB) может быть использовано для полей заголовка, значения которых подвергают небольшим изменениям. С помощью кодирования LSB k наименьших значащих бит значения поля передают вместо первоначальной величины поля, где k - положительное целое. После приема k бит распаковщик получает первоначальную величину с использованием предыдущего принятого значения в качестве исходного значения (v_ref). В качестве примера, с помощью кодирования LSB двоичное число 0001010 (соответствующее десятичному числу 10) может быть рассмотрено как содержащее наибольшие значащие биты 0000 и наименьшие значащие биты 1010. Используя кодирование LSB, 1010 передают в устройство приема, такое как BTS-PDSN, вместо всех восьми бит. Если приняты успешно, распаковщик в устройстве приема может получить первоначальное значение принятого пакета с использованием предыдущего принятого значения, например, v_ref. В одном варианте осуществления v_ref представляет последнее правильно распакованное значение пакета. Компрессор (распаковщик) использует v_ref_c (v_ref_d), последнее значение, которое было сжато (распаковано), как v_ref. При допущении успешной распаковки принятого заголовка контекст распаковщика обновляют в 00001010 и генерируют первоначально переданный пакет. После успешной генерации переданного значения v_ref может быть обновлено в текущее правильно распакованное значение и сохранено. В одном варианте осуществления при допущении, что должна быть передана следующая величина 00001111 (десятичная величина 15), наименьшие значащие биты 1111 передают, и, если они успешно приняты, распаковщик обновляет свой контекст с помощью прибавления принятого значения 1111 к наибольшим значащим битам текущего значения контекста. В этом примере текущее значение контекста равно 00001010, а наибольшие значащие биты равны 0000. Распаковщик обновил бы свое значение контекста в 00001111 и сгенерировало первоначально переданное значение пакета.

Кодирование и декодирование LSB считают правильным, если каждый из компрессора и распаковщика используют интервалы интерпретации, в которых находится первоначальная величина и в которых начальная величина является единственной величиной, которая имеет точно те же k наименьших значащих бит, что и переданные наименьшие значащие биты.

“Интервал интерпретации” может быть описан как функция f(v_ref, k):

f(v_ref, k)=[v_ref-p, v_ref+(2^k-1)-p] (Уравнение 1)

где p - целое.

Это уравнение изображают как:

<--- интервал интерпретации (размер равен 2^k)--->
|------------------+------------------------------|
v_ref-p v_ref v_ref+(2^k-1)-p

Функция f имеет следующее свойство: для любого значения k k наименьших значащих бит будут однозначно идентифицировать значение в f(v_ref,k). Размер интервала интерпретации равен 2^k. Таким образом, для k=4 размер интервала интерпретации равен 2^4, или 16. Значение k=4 может быть использовано для различных типов пакетов, включая VoIP. Параметр p дает возможность, чтобы интервал интерпретации был сдвинут относительно v_ref. Выбор подходящего значения для p дает более эффективное кодирование для полей с определенными характеристиками. В одном варианте осуществления p является целой величиной.

Интервал интерпретации может быть разделен на две части. Как проиллюстрировано ниже, допуская k=4, p=5 и v_ref=15, левая часть интервала интерпретации имеет размер p=5, в то время как правая часть интервала интерпретации имеет размер p=2-p-1=10.

<---размер интервала интерпретации = 16--->
|-------------+--------------------------->
10 15 25

При сжатии величины v компрессор находит минимальное значение k, такое, что v входит в интервал f(v_ref_c,k). K = g(v_ref_c,v). Когда возможны только несколько разных значений k, компрессор вместо этого может выбрать наименьшее k, которое вставляет v в интервал f(v_ref_c,v). При приеме m LSB распаковщик использует интервал интерпретации f(v_ref_d,m), называемый interval_d. Он выбирает в качестве распакованного значения значение в interval_d, LSB которого соответствует принятым m бит. Кодируемые величины могут иметь конечный диапазон. Например, SN RTP находится в диапазоне от 0 до 0xFFFF. Когда значение SN находится близко к 0 или к 0xFFFF, интервал интерпретации может охватывать границу циклического возврата между 0 и 0xFFFF.

RFC 3095 описывает, как компрессор RoHC использует “кодирование наименьших значащих бит (LSB) на основе окна”, чтобы сжимать динамические поля в заголовках протокола. Компрессор может быть не в состоянии определять точное значение v_ref_d, которое является исходным значением, которое будет использовано распаковщиком для определенной величины v, так как некоторые кандидаты для v_ref_d могут быть потеряны или испорчены. Однако при использовании обратной связи или при принятии разумных допущений компрессор может ограничить множество кандидатов. Затем компрессор вычисляет k таким образом, что независимо от того, какое v_ref_d использует распаковщик во множестве кандидатов, v охватывают с помощью результирующего interval_d. Так как распаковщик может использовать последнее принятое значение, где CRC достигла цели как опорное значение, компрессор поддерживает “скользящее окно”, содержащее кандидатов для v_ref_d. Скользящее окно первоначально может быть пустым.

Когда много последовательных пакетов теряют между компрессором и распаковщиком RoHC, имеется риск циклического возврата LSB порядкового номера (SN), т.е. LSB порядковых номеров в сжатых пакетах могут быть интерпретированы неправильно, так как распаковщик не сдвинул интервал интерпретации из-за недостатка входных данных.

Распаковщик RoHC может использовать режим локального восстановления, чтобы обнаруживать ситуации, когда некоторое число последовательных потерянных пакетов (между компрессором и распаковщиком) могут вызвать повреждение контекста. Распаковщик RoHC может обнаружить эту ситуацию и исключить повреждение контекста с помощью использования локального таймера. Например, распаковщик RoHC может использовать следующий алгоритм, описанный в RFC 3095, такой как детально описан в разделе 5.3.2.2.4. под заголовком “Correction wraparound SN LSB”, в котором:

(а) распаковщик отмечает время поступления a(i) каждого входящего пакета i. Времена поступления пакетов, в которых распаковка завершилась неуспешно, отбрасывают;

(b) когда распаковка завершается неуспешно, распаковщик вычисляет INTERVAL_LLSN = a(i)-a(i-1), который является временем, прошедшим между поступлением предыдущего правильно распакованного пакета и текущего пакета;

(с) если произошел циклический возврат, INTERVAL_LLSN будет соответствовать, по меньшей мере, 2^k временам между пакетами, где k - число бит SN в текущем заголовке. Скользящее среднее времен поступления может быть использовано, чтобы оценить время поступления между пакетами, если INTERVAL_LLSN может соответствовать 2^k временам между пакетами;

(d) если INTERVAL_LLSN определен равным 2^k временам между пакетами, распаковщик добавляет 2^k к исходному SN и пытается распаковать пакет с использованием нового исходного SN;

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

(f) если любая из трех попыток распаковки в (d) и (е) завершается неуспешно, распаковщик отбрасывает пакеты и может действовать в соответствии с правилами с (а) по (с) в секции 5.3.2.2.3 RFC 3095 под заголовком “действия после неуспешного завершения CRC”.

Используя вышеописанный режим локального восстановления, распаковщик может восстанавливать контекст после избыточной потери за счет отбрасывания двух правильно распакованных пакетов до заключения, что контекст восстановлен. Причина того, что распаковщик RoHC должен отбрасывать два пакета (не переданные на верхний уровень), заключается в том, что 3-битовый CRC RoHC является относительно слабым контролем и, следовательно, неправильно распакованные пакеты могут проходить CRC.

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

Варианты осуществления, описанные ниже, усовершенствуют или улучшают режим локального восстановления в распаковщике RoHC, таком как распаковщик 110, 114 на фиг.1 - фиг.3. В одном примере распаковщик RoHC в режиме локального восстановления использует информацию нижнего уровня, такую как порядковые номера канального уровня, чтобы правильно распаковывать пакет. В другом примере распаковщик RoHC в режиме локального восстановления использует контрольную сумму UDP (когда разрешено) дополнительно к 3-битовому CRC RoHC, чтобы определять, передавать ли пакеты на верхний уровень. Распаковщик может быть сконфигурирован с возможностью выбора одного или обоих из двух способов в зависимости от одного или более условий. Эти примеры улучшают эффективность без изменения стандарта RoHC.

Использование информации нижнего уровня при восстановлении распаковки

Фиг.4 иллюстрирует способ, который использует информацию канального уровня, чтобы усовершенствовать режим локального восстановления в распаковщике 110, 114 RoHC. Канальный уровень 214, 314 (нижний уровень на фиг.2 и фиг.3) добавляет порядковый номер (SN) канального уровня к каждому пакету, сжатому с помощью компрессора 112, 102. Порядковый номер должен увеличиваться на единицу (“1”) для каждого пакета канального уровня, посланного через конкретную реализацию канального уровня. Имеется взаимно однозначное преобразование между пакетами IP и пакетами канального уровня, соответствующими конкретной реализации канального уровня. Даже если это взаимно однозначное преобразование нарушено, способ, описанный ниже, все же может быть осуществлен.

В 410 на фиг.4 распаковщик определяет, завершилась ли неуспешно распаковка для текущего принятого пакета, например, с помощью обнаружения неуспешного завершения CRC с использованием CRC RoHC. Если распаковка завершилась неуспешно, распаковщик в 420 определяет разность в порядковых номерах канального уровня между двумя последовательными правильно принятыми и правильно распакованными пакетами. Иначе говоря, определяют разность между порядковым номером канального уровня последнего правильно распакованного принятого пакета и порядковым номером канального уровня текущего принятого пакета. Эта разность может быть упомянута как интервал последовательного номера канального уровня или INTERVAL_LLSN, который не является тем же самым, что и “интервал интерпретации” или “INTERVAL”, упомянутый выше со ссылкой на RFC 3095.

В 430 распаковщик определят, равен ли INTERVAL_LLSN, по меньшей мере, (2^k)-p, где k - число бит последовательного номера в текущем пакете, а p - сдвиг в интервал интерпретации, чтобы управлять переупорядочиванием. Если INTERVAL_LLSN равна, по меньшей мере, (2^k)-p, распаковщик добавляет INTERVAL_LLSN к порядковому номеру последнего правильно распакованного принятого пакета (называемому исходным порядковым номером). Это действие может быть упомянуто как восстановление информации, используемой для распаковки.

В 440 распаковщик пытается распаковать текущий пакет с использованием нового исходного последовательного номера.

Если эта распаковка завершается успешно, распаковщик обновляет свой контекст и доставляет пакет на верхний уровень (уровни). Если распаковка завершается неуспешно, распаковщик может отбросить пакеты и действовать в соответствии с правилами с (а) по (с) в разделе 5.3.2.2.3 RFC 3095.

Кроме усовершенствования режима локального восстановления другим преимуществом использования порядкового номера канального уровня является то, что оно дает возможность компрессору управлять избыточным переупорядочиванием в линии. Порядковый номер канального уровня помогает идентифицировать правильные позиции пакетов RoHC последнего поступления, таким образом, распаковщик может правильно логически выводить последовательный номер RTP из исходного значения в текущем контексте распаковщика.

В некоторых ситуациях может не быть взаимно-однозначного преобразования между порядковым номером канального уровня и последовательным номером RTP. Например, в обратной линии связи в беспроводной сети пользователю на краю ячейки (например, работая с 4,8 Кбит/с) может требоваться посылать один речевой пакет RTP/UDP/IP в двух сегментах RLP.

Фиг.5 изображает способ, который может быть использован в таких ситуациях (отсутствие взаимно-однозначного преобразования между порядковым номером канального уровня и порядковым номером RTP), чтобы определять, произошел ли циклический возврат SN и как выполнить локальное восстановление. Следующий способ допускает, что порядковый номер RTP и порядковый номер канального уровня, по меньшей мере, для последнего правильно распакованного пакета равны нулю (“0”). Ненулевая исходная величина может быть обработана с помощью первоначального выполнения операции разности.

В 510 распаковщик определяет, завершилась ли распаковка неуспешно, например, с помощью обнаружения ошибки распаковки вследствие неуспешного завершения CRC RoHC. Если распаковка завершилась неуспешно, распаковщик в 520 вычисляет INTERVAL_LLSN, который является разностью порядковых номеров канального уровня между двумя последовательными правильно принятыми и правильно распакованными пакетами, т.е. порядковый номер канального уровня текущего пакета минус исходное значение (порядковый номер канального уровня последнего принятого правильно распакованного пакета).

Интервал интерпретации LSB (описанный выше) может иметь правую половину с длиной, выраженной как L, где L - меньше, чем 2^k. Если INTERVAL_LLSN больше или равен 2*(L+1) в 530, тогда произошел циклический возврат и обработка продолжается на этапе 540, иначе обработка продолжается на этапе 570.

Если INTERVAL_LLSN больше или равен 2^(k+1) в 540, тогда распаковщик в 550 пытается определить правильную величину циклического возврата с помощью распаковки пакета с помощью множества попыток с использованием интервалов интерпретации [L+1, 2*(L+1)-1], [2*(L+1), 3*(L+1)-2], …, [k*(L+1), (k+1)*(L+1)-(k)], где INTERVAL_LLSN определяют как k*(L+1) < INTERVAL_LLSN < (k+1)*(L+1)-(k). Так как распаковка в правильном интервале интерпретации будет проходить 3-битовый CRC RoHC, по меньшей мере, одна из этих распаковок будет успешной. Если только одна из этих распаковок является успешной, пакет может быть послан на верхний уровень. Если более чем одна из распаковок являются успешными, распаковщик может быть неуверен в правильном интервале интерпретации и пакеты не посылают на верхний уровень.

Если INTERVAL_LLSN меньше, чем 2^(k+1), в 540, фактический SN RTP находится между [INTERVAL_LLSN/2, INTERVAL_LLSN]. Так как INTERVAL_LLSN/2 меньше или равен 2^k, LSB SN RTP, который содержит k бит, может быть использован, чтобы однозначно идентифицировать правильную позицию SN RTP в 560. Распаковщик может восстановить циклический возврат на основании однозначной информации, данной с помощью SN канального уровня и LSB SN RTP в заголовке RoHC.

Если INTERVAL_LLSN меньше или равен L в 570, тогда нет циклического возврата, и способ выполняет локальное восстановление неправильного контекста, если необходимо, в 580. Иначе обработка продолжается на этапе 575.

Если LSB SN RTP находится в диапазоне, определенном как [INTERVAL_LLSN/2, L] в 575, тогда обработка продолжается на этапе 580, чтобы выполнить локальное восстановление неправильного контекста, если необходимо. Иначе обработка продолжается на этапе 560, чтобы восстановить циклический возврат на основании SN канального уровня и LSB SN RTP в заголовке RoHC.

Способ по фиг.5 работает, даже если имеются потери пакетов IP до компрессора RoHC.

Фиг.6 иллюстрирует устройство распаковщика 600, соответствующее способу по фиг.4. Устройство распаковщика 600 содержит средство 610, предназначенное для определения, завершилась ли распаковка неуспешно, для текущего принятого пакета, средство 620, предназначенное для определения интервала, который равен разности порядковых номеров канального уровня между двумя последовательными правильно принятыми и правильно распакованными пакетами (текущим принятым пакетом и последним правильно распакованным пакетом), средство 630, предназначенное для определения, больше или равен ли интервал 2^k-p, и прибавления интервала к исходному порядковому номеру последнего правильно распакованного пакета, и средство 640, предназначенное для выполнения распаковки с использованием нового исходного порядкового номера.

Фиг.7 иллюстрирует устройство распаковщика 700, соответствующее способу по фиг.5. Устройство распаковщика 700 содержит средство 710, предназначенное для определения, завершилась ли распаковка неуспешно, средство 720, предназначенное для определения интервала, который равен разности порядковых номеров канального уровня между двумя последовательными правильно принятыми и правильно распакованными пакетами, средство 730, предназначенное для определения интервала ≥ 2(L+1), средство 740, предназначенное для определения интервала ≥ 2^(k+1), средство 750, предназначенное для выполнения множества попыток, чтобы определить правильную величину циклического возврата, средство 760, предназначенное для восстановления циклического возврата на основании однозначной информации, данной с помощью SN канального уровня и LSB SN RTP в заголовке RoHC, средство 770, предназначенное для определения интервала ≤ L, средство 775, предназначенное для определения, находится ли LSB SN RTP в [interval/2, L], и средство 780, предназначенное для выполнения локального восстановления неправильного контекста, если необходимо.

В одном примере, если распаковщик знает разность между SN LL текущего принятого пакета и SN LL последнего правильно распакованного пакета, оно определяет точно, в каком интервале интерпретации находится текущий пакет. Этот интервал интерпретации может быть определен на основании отношения разности SN LL и размера интервала интерпретации, соответствующего числу бит, используемых, чтобы представить поле SN RTP. В качестве примера, если разность SN LL=8 и 4 бит используют, чтобы представить поле SN RTP (соответствующее размеру интервала интерпретации, равному 16), и p=5, распаковщик попытался бы распаковать в текущем интервале интерпретации, если SN LL=16, и 4 бит используют, чтобы представить поле SN RTP, распаковщик попытался бы распаковать в следующем интервале интерпретации, если SN LL=-6, и 4 бит используют, чтобы представить поле SN RTP, распаковщик попытался бы распаковать в предыдущем интервале интерпретации.

Это может быть представлено с помощью уравнения 2, изображенного ниже. Распаковщик может пытаться распаковать в интервале интерпретации, заданном с помощью:

I=0, если 0<=ΔLL_SN<=2k-p-1
I = наименьшее целое число ((ΔLL_SN-(2k-p-1))/(2k), если ΔLL_SN>2k-p-1
I=-1, если -p<=ΔLL_SN<0
I = -1 + наибольшее целое число((ΔLL_SN-p)/2k), если ΔLL_SN<-p
(Уравнение 2)

где ΔLL_SN - разность SN LL между текущим пакетом и последним правильно распакованным пакетом, k - число бит, используемых, чтобы представить сжатое поле, p - величина отрицательного изменения, которое может допустить распаковщик. Также интервал интерпретации 0 соответствует текущему интервалу, 1 соответствует следующему интервалу интерпретации, -1 соответствует предыдущему интервалу интерпретации и т.д. С этими сведениями проверка таймера, чтобы определять, должно ли быть использовано локальное восстановление, может быть отменена.

Использование контрольной суммы UDP при восстановлении распаковки

Другой способ может использовать контрольную сумму UDP, чтобы усовершенствовать/улучшить режим локального восстановления в распаковщике RoHC. Введение контрольной суммы проиллюстрировано в пакете фиг.8. Контрольная сумма UDP предусматривает обнаружение ошибок, а 16-битовое поле контрольной суммы может быть использовано для контроля ошибок заголовка и данных. Использование контрольной суммы UDP, когда доступно, дает возможность распаковщику RoHC быть более уверенным в распакованных пакетах во время режима локального восстановления. Контрольная сумма UDP может быть включена в поток IP. Это имеет место для Ipv6. Следующий способ улучшает режим локального восстановления в RoHC, как описано в RFC, с помощью использования контрольной суммы UDP, в котором:

(а) распаковщик отмечает время поступления a(i) каждого входящего пакета i. Времена поступления пакетов, в которых распаковка завершилась неуспешно, отбрасывают;

(b) когда распаковка завершилась неуспешно, распаковщик вычисляет INTERVAL_LLSN = a(i)-a(i-1), т.е. время, прошедшее между поступлением предыдущего правильно распакованного пакета и текущего пакета;

(с) если произошел циклический возврат, INTERVAL_LLSN будет соответствовать, по меньшей мере, 2^k временам между пакетами, где k - число бит SN в текущем заголовке. На основании оценки времени поступления между пакетам