СПОСОБЫ И СИСТЕМЫ ДЛЯ УСОВЕРШЕНСТВОВАНИЯ ЛОКАЛЬНОГО ВОССТАНОВЛЕНИЯ ПРИ НАДЕЖНОМ СЖАТИИ ЗАГОЛОВКА
METHODS AND SYSTEMS TO IMPROVE LOCAL RECOVERY WITH RELIABLE COMPRESSION OF HEADING

Настоящая заявка притязает на приоритет предварительной заявки №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<=2<sup>k</sup>-p-1
I = наименьшее целое число ((ΔLL_SN-(2<sup>k</sup>-p-1))/(2<sup>k</sup>),
если ΔLL_SN>2<sup>k</sup>-p-1
I=-1,
если -p<=ΔLL_SN<0
I = -1 + наибольшее целое число((ΔLL_SN-p)/2<sup>k</sup>),
если Δ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 в текущем заголовке. На основании оценки времени поступления между пакетами, полученными, например, с использованием скользящего среднего времен поступления, TS_STRIDE или TS_TIME, распаковщик оценивает, может ли INTERVAL_LLSN соответствовать 2^k временам между пакетами;
(d) если оценено, что INTERVAL_LLSN равен, по меньшей мере, 2^k временам поступления между пакетами, распаковщик прибавляет 2^k к исходному SN и пытается распаковать пакет с использованием нового исходного SN;
(е) если эта распаковка завершается успешно и контрольная сумма UDP проходит, распаковщик обновляет контекст и доставляет пакет на UDP верхний уровень. Как использовано в настоящей заявке, контрольная сумма UDP проходит, например, когда контрольная сумма, вычисленная с помощью уровня UDP, является той же самой, что и контрольная сумма заголовка UDP (т.е. нет обнаруженных ошибок). Если распаковка завершается неуспешно или контрольная сумма UDP не проходит, распаковщик отбрасывает пакеты и может действовать в соответствии с правилами с (а) по (с) раздела 5.3.2.2.3 RFC 3095, описанного в настоящей заявке выше.
Контрольная сумма UDP (когда разрешена) также может быть включена в способы, проиллюстрированные на фиг.4 или фиг.5, чтобы дополнительно проверять, является ли распаковка успешной.
Фиг.9 иллюстрирует способ использования контрольной суммы UDP, как описано выше. В 900 способ определяет, успешно ли завершается распаковка заголовка пакета. В 902 способ определяет, проходит ли контрольная сумма UDP в заголовке пакета. В 904, если распаковка завершается успешно и контрольная сумма UDP проходит, способ обновляет информацию контекста, используемую для распаковки, и доставляет распакованный пакет на верхний уровень.
Фиг.10 иллюстрирует распаковщик 1010, соответствующий способу по фиг.9. Распаковщик 1010 содержит средство 1000, предназначенное для определения, успешно ли завершается распаковка заголовка пакета, средство 1002, предназначенное для определения, проходит ли контрольная сумма протокола дейтаграммы пользователя (UDP) в заголовке пакета, средство 1004, предназначенное для обновления информации контекста, используемого для распаковки и доставки распакованного пакета на верхний уровень, если распаковка завершается успешно и проходит контрольная сумма UDP.
Запрещение усовершенствованного локального восстановления
Усовершенствованное локальное восстановление может быть запрещено в определенных сценариях, когда нет взаимно-однозначного соответствия между переданными пакетами RTP и порядковыми номерами LL. Например, множество потоков IP могут совместно использовать одну и ту же локальную линию связи и, следовательно, одно и то же пространство последовательных номеров LL. Иначе говоря, множество потоков IP, посланных в одной и той же локальной линии связи, совместно используют пространство SN LL. В результате порядковые номера LL могут не указывать, насколько большой переход в SN LL вызван этим потоком. Таким образом, усовершенствованное локальное восстановление может быть запрещено.
Во втором сценарии может быть сигнализирован сброс RLP, например, на канальном уровне протокола, такого как 1xEV-DO (Rev. 0, Rev. A, Rev. B), упоминаемого как высокоскоростные пакетные данные (HRPD). Когда принимают сообщение сброса RLP, например, при межсистемной передаче обслуживания из одного BSC в другой, порядковый номер RLP может начинаться с нуля. В этом случае может быть невозможным определить переход в SN LL. Таким образом, усовершенствованное локальное восстановление может быть запрещено для первых N пакетов, принятых после того, как RLP был сброшен. (Другие канальные уровни могут иметь подобную концепцию, что и сброс RLP, и этот способ может быть также применен к ним.)
В третьем сценарии усовершенствованное локальное восстановление может быть запрещено, когда осуществляют RLP на основе октета. В RLP на основе октета SN RLP увеличивается на размер пакета. Размер пакета может изменяться, следовательно, когда RLP используют в режиме на основе октета, может быть невозможно определить, сколько пакетов соответствуют пропущенному пространству SN.
В одном примере, для того чтобы запретить усовершенствованное локальное восстановление, определенная информация может быть передана между пакетом RoHC и интерфейсом нижнего уровня. Эта информация включает в себя SN LL и информацию о диапазоне SN LL, переданную в распаковщик RoHC, и несколько алгоритмов. Эти алгоритмы могут включать в себя алгоритм, чтобы выключать функциональную возможность для всего потока, если RLP основан на сегменте или множество потоков совместно используют RLP, алгоритм, чтобы запретить усовершенствованное локальное восстановление для нескольких пактов RTP после того, как RLP сброшен, и алгоритм, чтобы запретить усовершенствованное локальное восстановление для потока, для которого усовершенствованное локальное восстановление ранее было разрешено. Это может случиться, например, если второй поток начинается в потоке линии связи, которая ранее переносила один поток.
При инициализации значение для N, верхнее значение диапазона SN LL и нижнее значение диапазона SN LL могут быть предоставлены на поточной основе. N представляет число пакетов, для которых усовершенствованное локальное восстановление отменено после приема функции EnhancedLocalRepairReset(). Если как верхнее, так и нижнее значение диапазона SN LL установлено в 0, тогда усовершенствованное локальное восстановление запрещают. Размер диапазона SN LL определяют как [(верхнее значение диапазона SN LL)-(нижнее значение диапазона SN LL+1)]. В одном примере (DO Rev. A) по умолчанию верхнее значение диапазона SN LL равно +31, а нижнее значение диапазона SN LL равно -32.
В одном примере, SN LL, порядковый номер без знака пакета LL предоставляют для каждого пакета. Пространство SN LL и диапазон SN LL (как определено выше) могут быть одного и того же размера. Например, если верхнее значение диапазона SN LL равно +31, а нижнее значение диапазона SN LL равно -32, размер диапазона SN LL равен 64, следовательно, SN LL находится в диапазоне [0,63]. Функция “EnhancedLocalRepairReset” может быть предоставлена на поточной основе, причем эта функция запрещает усовершенствованное локальное восстановление для N пакетов.
Обработка случая ложных проходов CRC RoHC
Между пакетами, принятыми в распаковщике, может быть большое положительное или отрицательное изменение, когда имеются удаленные промежуточные пакеты между компрессором и распаковщиком. Возможность усовершенствованного локального восстановления, чтобы помочь в правильной распаковке пакетов, которые могут иметь слишком большое положительное или отрицательно изменение от предыдущего пакета, зависит от пакета, неуспешно завершающего контроль CRC RoNC. Например, заявитель допускает, что первый пакет сжимают и посылают с первым SN1 RTP и правильно распаковывают. Однако следующие х сжатых пакетов удаляют через линию связи, т.е. они никогда не достигнут распаковщика. Если SN RTP назначают последовательно, и, допуская, что удаленные пакеты были пакетами RTP, (х+1)-му успешно переданному пакету будет назначен следующий порядковый SN RTP, соответствующий SN(1+x+1) RTP. После успешного приема (х+1)-го пакета информация контекста распаковщик может соответствовать первому успешно распакованному пакету, v_rev, и распаковщик может попытаться обновить свой контекст на основании v_rev. В одном примере, будут пытаться добавить LSB (х+1)-го пакета к MSB 1-го пакета, который был успешно распакован. Так как успешное обновление информации контекста распаковщика и восстановление переданного пакета зависит от v_rev, удаленные пакеты могут вызвать неправильную распаковку текущего пакета (х+1).
(1+x+1)
В одном примере осуществляют контроль 3-битовым CRC RoHC. Обычно имеется вероятность 1/2 (1/8-я), что 3-битовый CRC не обнаружит неправильно распакованный пакет. Таким образом, контроль CRC RoHC может все же проходить, даже если пакет распакован неправильно. В этом сценарии (х+1)-й неправильно распакованный пакет захвачен, и следующий сжатый пакет (х+1+1) может быть послан в распаковщик. Этому пакету назначают SN RTP, и он также будет неправильно распакован. Вероятность незахвата второго неуспешного завершения CRC становится (1/2)(1/2) или 1/64, таким образом, имеет больший шанс, что (х+1+1)-й неправильно распакованный пакет будет обнаружен в этой итерации. Локальное восстановление активизируют, только когда распакованный пакет неуспешно проходит контроль CRC RoHC. Заявитель допускает, что (х+1+1)-й пакет неуспешно проходит контроль CRC. В вышеописанном сценарии переход между первым распакованным пакетом и распакованным пакетом (х+1) был не обнаружен, так как пакет (х+1) успешно прошел контроль CRC. Когда CRC в конце концов завершается неуспешно, обнаруживают только переход между распакованным пакетом (х+1) и распакованным пакетом (х+1+1).
Фиг.11 иллюстрирует вышеописанный сценарий. Ссылаясь опять на интервал интерпретации уравнения 2, допускаемое значение p=5 означает, что компрессор может допускать отрицательное переупорядочивание до 5. Сначала сжатый пакет с SN RTP 914 (и SN LL 27) передают и правильно распаковывают. Следующий пакет с SN RTP 908 (SN LL = 21) передают, но неправильно распаковывают, как соответствующий SN RTP 924, так как он находится вне того, что значение p может разместить в текущем интервале интерпретации. При допущении пакета с 3-битовым CRC, даже если распакованный пакет является неправильным, CRC проходит, так как имеется только вероятность 1/8 того, что CRC завершается неуспешно. Таким образом, контекст распаковщика обновляют таким образом, чтобы он соответствовал SN RTP 924. Этот сценарий упоминают как ложный проход CRC.
Когда передают следующий пакет с SN RTP 909 (и SN LL = 22), как изображено на фиг.11, распаковка дает в результате значение, соответствующее SN RTP 925. Вероятность обнаружения ложного прохода CRC увеличивается с каждым последующим 3-битовым CRC и равна (1/8)(1/8) или 1/64 в этом сценарии. При допущении, что неуспешное завершение CRC не обнаружено, усовершенствованное локальное восстановление активизируют. Если усовершенствованное локальное восстановление смотрит только на текущий (SN RTP = 925) и предыдущий (SN RTP = 924) пакеты, чтобы решить, в каком интервале интерпретации декодировать текущий пакет, пакет будет восстановлен неправильно (или удален вследствие неуспешного завершения CRC). Так как разность SN LL между предыдущим и текущим пакетами равна 1 (SN LL 22-SN LL 21), распаковщик заставят распаковать в текущем интервале интерпретации. Однако это является неправильным интервалом интерпретации вследствие ложного прохода первого пакета (SN RTP 924). Этот пример иллюстрирует ложный проход CRC для большого отрицательного изменения, подобный сценарий для ложного прохода CRC также может случаться для большого положительного изменения.
В одном примере настоящего изобретения, когда имеется ложный проход, правильный интервал интерпретации, для того чтобы применить, может быть вычислен с помощью следующего способа:
для SN RTP = R1 и SN LL = L1 для предыдущего правильно распакованного пакета и для текущего пакета SN LL = L2, а распакованный SN RTP = R2,
если |(L2-L1)-(R2-R1)| > THRESH, допустить ложный проход CRC в распаковщике и запомнить DIFF = (R2-R1)-(L2-L1);
когда пакет (с SN LL = L3) неуспешно проходит CRC и локальное восстановление активизируют, интервал интерпретации, чтобы распаковать, должен быть выбран на основании значения (L3 - L2)-DIFF с использованием уравнений, описанных в уравнении 2;
если N последовательных пакетов распаковываются правильно, установить DIFF = 0.
Такой способ дает возможность работы локального восстановления, даже когда ложный проход CRC RoHC вызвал неправильно обновляемое состояние распаковщика, как на фиг.11.
Фиг.12 иллюстрирует способ, предназначенный для определения интервала интерпретации для пакета, когда имеет место ложный проход. Как проиллюстрировано, в 1200 определяют, больше ли DIFF, чем значение порога. DIFF определена выше. Если значение больше, чем порог, DIFF запоминают на этапе 1210. Затем определяют в 1220, прошел ли неуспешно следующий пакет контроль CRC. На шаге 1230 активизируют локальное восстановление и определяют интервал интерпретации как (L3-L2)-DIFF на этапе 1240. На этапе 1250 определяют, правильно ли распакованы следующие N пакетов. Если они распакованы правильно, значение DIFF сбрасывают в ноль на этапе 1260. Если следующие N пакетов распакованы неправильно, пакет отбрасывают, и процесс выходит из локального восстановления на этапе 1270. Фиг.13 иллюстрирует устройство, соответствующее способу фиг.12. Блоки 1300, 1310, 1320, 1330, 1340, 1350 и 1360 на фиг.13 соответствуют 1200, 1210, 1220, 1230, 1240, 1250 и 1260 соответственно на фиг.12.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с вариантами осуществления, раскрытыми в настоящей заявке, могут быть осуществлены или выполнены с помощью универсального процессора, процессора цифровых сигналов (DSP), ASIC, вентильной матрицы, программируемой в условиях эксплуатации (FPGA) или другого программируемого логического устройства, дискретного вентиля или транзисторной логической схемы, дискретных компонентов аппаратного обеспечения или любой их комбинации, предназначенных, чтобы выполнять функции, описанные в настоящей заявке. Универсальный процессор может быть микропроцессором, но в качестве альтернативы, процессор может быть любым традиционным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор также может быть осуществлен как комбинация вычислительных устройств, например, комбинация DSP и микропроцессора, множеством микропроцессоров или одним или более микропроцессорами в сочетании с ядром DSP или другой такой конфигурации.
Способы и алгоритмы, описанные в связи с вариантами осуществления, раскрытыми в настоящей заявке, могут быть осуществлены непосредственно в аппаратном обеспечении, в модуле программного обеспечения, выполняемом процессором, или в комбинации того и другого. Модуль программного обеспечения может находиться в памяти с произвольным доступом (RAM), флэш-памяти, памяти, доступной только по чтению (ROM), электрически программируемой ROM (EPROM), электрически стираемой программируемой ROM (EEPROM), в регистрах, на жестком диске, сменном диске, CD-ROM или любом другом виде среды хранения, известной в данной области техники. Среда хранения соединена с процессором, таким как процессор, который может считывать информацию из среды хранения и записывать информацию в среду хранения. В качестве альтернативы, среда хранения может быть объединена с процессором. Процессор и среда хранения могут находиться в ASIC. ASIC может находиться в терминале доступа. В качестве альтернативы процессор и среда хранения могут находиться в дискретных компонентах в терминале доступа.
В одном или более вариантах осуществления описанные функции могут быть осуществлены в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены как одна или более инструкций или код в среде, доступной для чтения с помощью компьютера, или передана через среду, доступную для чтения с помощью компьютера. Среда, доступная для чтения с помощью компьютера, включает в себя как компьютерную среду хранения, так и среду связи, включая любую среду, которая облегчает передачу компьютерной программы с одного места в другое. Среда хранения может быть любой доступной средой, доступ к которой может быть осуществлен с помощью компьютера. В качестве примера, а не ограничения, такая среда, доступная для чтения с помощью компьютера, может содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптическом диске, накопитель на магнитном диске или другие магнитные запоминающие устройства или любую другую среду, которая может быть использована для того, чтобы переносить или сохранять желаемый программный код в виде инструкций или структур данных, и доступ к которой может быть осуществлен с помощью компьютера. Также любое соединение, строго говоря, называют средой, доступной для чтения с помощью компьютера. Например, если программное обеспечение передают из web-сайта, сервера или другого дистанционного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио- или микроволновая, тогда коаксиальный кабель, волоконно-оптический кабель, витую пару, DSL или беспроводые технологии, такие как инфракрасная, радио- или микроволновая, включают в определение среды. Disk и disc, как использован в настоящей заявке, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск blu-ray, где disks обычно воспроизводят данные магнитным способом, в то время как discs воспроизводят данные оптически с помощью лазеров. Комбинации вышеописанного также должны быть включены в рамки среды, доступной для чтения с помощью компьютера.
Специалисты в данной области техники поймут, что информация и сигналы могут быть представлены с использованием множества различных технологий и способов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные посылки, которые могут быть упомянуты по всему вышеприведенному описанию, могут быть представлены с помощью напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц или любых их комбинаций.
Специалисты в данной области техники поймут, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритмов, описанные в связи с вариантами осуществления, раскрытыми в настоящей заявке, могут быть осуществлены как электронное аппаратное обеспечение, компьютерное программное обеспечение или комбинация первого и второго. Чтобы понятно проиллюстрировать взаимозаменяемость аппаратного обеспечения и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы, описаны выше обычно в понятиях их функционального назначения. Осуществлено ли такое функциональное назначение как аппаратное обеспечение или программное обеспечение, зависит от конкретных ограничений приложения и конструкции, наложенных на всю систему. Опытные изобретатели могут осуществить описанное функциональное назначение различными способами для каждого конкретного приложения, но такие решения осуществления не должны быть интерпретированы как вызывающие выход за рамки объема настоящей заявки.
Предыдущее описание раскрытых вариантов осуществления предоставлено для того, чтобы дать возможность любому специалисту в данной области техники изготовить и использовать настоящую заявку. Различные модификации этих вариантов осуществления будут без труда понятны специалистам в данной области техники, и общие принципы, определенные в настоящей заявке, могут быть применены к другим вариантам осуществления, не выходя за рамки сущности и объема заявки. Таким образом, не подразумевается, что настоящая заявка ограничена вариантами осуществления, изображенными в настоящем описании, но должна соответствовать самым широким рамкам, согласующимся с принципами и новыми признаками, раскрытыми в настоящей заявке.