КОМПРЕССОР СИГНАЛЬНЫХ СООБЩЕНИЙ
SIGNALLING MESSAGE COMPRESSOR

ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к системам связи, в частности к компрессорам сигнальных сообщений в рамках сеансов связи, обрабатывающих SIP-сообщения.
УРОВЕНЬ ТЕХНИКИ
Систему связи можно рассматривать как средство, которое делает возможными сеансы связи между двумя и более объектами, такими как оборудование пользователя и/или другие узлы, связанные с системой связи. Связь может включать, например, передачу голоса, данных, мультимедийной информации и тому подобного. Оборудованию пользователя может, например, быть предоставлен двухсторонний телефонный вызов или многоканальная конференц-связь. Оборудованию пользователя также может быть предоставлено соединение с объектом предоставления приложения, например с сервером приложения (AS), обеспечивающим возможность использовать сервисы, предоставляемые сервером приложения.
Система связи обычно работает в соответствии с заданным стандартом или спецификацией, которая устанавливает, какие различные объекты, связанные с системой связи, разрешены, и как это должно быть достигнуто. Например, стандарт или спецификация могут определять, предоставлен ли пользователю, а точнее оборудованию пользователя сервис с коммутацией каналов или сервис с коммутацией пакетов. Также могут быть определены протоколы связи и/или параметры, которые должны будут использоваться для соединения. Другими словами, должен быть определен особый набор «правил», на котором может основываться связь посредством системы.
Известны системы связи, обеспечивающие беспроводную связь для оборудования пользователя. Примером беспроводных систем является сеть связи общего пользования для наземных подвижных объектов (PLMN). Другим примером является система мобильной связи, основанная, по меньшей мере частично, на использовании спутников связи. Беспроводные системы связи также могут быть организованы другими способами, например посредством беспроводных локальных сетей (WLAN). Связь по беспроводному интерфейсу между оборудованием пользователя и элементами сети связи может быть основана на соответствующем протоколе связи. Работой станционной аппаратуры системы связи и другой аппаратуры, требуемой для связи, может управлять один или несколько управляющих объектов. Различные объекты управления могут быть взаимосвязаны. Также для связи системы связи с другими сетями могут быть предусмотрены один или более узлов межсетевого интерфейса. Например, мобильная сеть может быть соединена с сетями связи, например сетями IP (протокол Интернет) и/или другими сетями с пакетной коммутацией.
Примером сервисов, которые могут быть предложены пользователям системы связи, являются так называемые мультимедиа-сервисы. Примером систем связи, позволяющим предлагать мультимедиа-сервисы, является Мультимедиа-сеть с использованием протокола Интернет (IP). Функциональные возможности IP Мультимедиа (IM) могут быть обеспечены посредством подсистемы Базовой сети (CN) IP Мультимедиа, или, коротко, подсистемы IP Мультимедиа (IMS). IMS включает различные сетевые объекты для обеспечения мультимедиа-сервисов.
Проект сотрудничества по системам третьего поколения (3GPP) определил использование пакетной радиосвязи общего назначения (GPRS) в качестве базовой системы связи для предоставления IMS сервисов, GPRS дается здесь как не ограничивающий изобретение пример возможной базовой системы связи, предоставляющей мультимедиа-сервисы. Проект сотрудничества по системам третьего поколения (3GPP) также определил эталонную архитектуру для базовой сети третьего поколения (3G), которая будет обеспечивать оборудование пользователей доступом к мультимедиа сервисам. Эта базовая сеть разделена на три основных домена. Это домен с коммутацией каналов (CS), домен с коммутацией пакетов (PS) и домен Мультимедиа протокола Интернет (IM).
Последний из них, IM домен, предназначен для того, чтобы гарантировать, что управление мультимедиа-сервисами производится правильно. Домен 3G IM поддерживает протокол инициации сессии (SIP), разработанный комитетом по инженерным вопросам Интернет (IETF).
Протокол инициации сессии (SIP) является протоколом управления прикладного уровня для создания, изменения и окончания сеансов с одним или более участниками (конечными точками).
Перед тем как оборудование пользователя будет в состоянии связаться с IM CN подсистемой, должна быть выполнена процедура присоединения GPRS и должен быть установлен канал связи, известный как контекст протокола передачи пакетных данных (PDP) для сигнализации SIP.
При низкой скорости соединения задержки передачи значительны. На установку соединения и вызов функций неблагоприятно влияют повторные передачи учетной записи и многократный обмен сообщениями, которые требуются в некоторых потоках. Протоколы SigComp обеспечивают решение этой проблемы предоставлением надежного сжатия без потерь сообщений приложения. В результате большого объема связанной сигнализации и SIP, являющегося протоколом с текстовым интерфейсом, стандарты 3GPP IMS Release 5 требуют использовать SigComp (сжатие сигнализации).
Если устройство принимает сжатое SigComp сообщение или сообщение для сжатия несжатого сообщения с использованием SigComp протоколов, устройство предоставляет виртуальную машину (UDVM) с ограниченными ресурсами для сжатия/декомпрессии сообщения.
Данная виртуальная машина существенно ограничена по производительности. Например, память, используемая виртуальной машиной, ограничена приемом буфера, используемого конечной точкой декомпрессии/сжатия. Общее количество памяти, выделенной для принимающего буфера и виртуальной машины, обычно составляет всего несколько килобайт. Это связано с тем, что для конечных точек SIP предустановленный размер памяти декомпрессии (dms) составляет 8 килобайт, следовательно, в виртуальной машине для сжатия и декомпрессии команды и данные должны умещаться в это ограниченное пространство. Программе виртуальной машины разрешены простые операции ввода/вывода: она может вводить данные из сжатого сообщения, она может выводить данные после декомпрессии, и она может создавать, получать доступ и освобождать элементы состояния. Элементами состояния являются элементы, хранящиеся в пределах памяти виртуальной машины, из предыдущего принятого сообщения.
Память, используемая UDVM, обычно составляет 4 кбайт и менее. Часть ее расходуется на байт-код, т.е. и его переменные. Обычно есть только 3,5 кбайта или менее, доступных для кольцевого буфера и других структур данных, хранящих принятое сжатое сообщение, обработанное сообщение после декомпрессии и любые дополнительные словари. При сжатии более длинных сообщений невозможно полностью сохранять в памяти известные статические (3468 или 4836 байт в зависимости от алгоритма) и динамические словари, а также полное сжатое сообщение.
UDVM активно, только когда сообщение протокола получено. После приема сообщения SigComp конечная точка вызывает UDVM. Например, при декомпрессии UDVM исполняет байт-код или команды для выполнения шагов декомпрессии, пока не будет выполнена полная декомпрессия сообщения или не произойдет ошибка. UDVM может сохранять данные между этапами UDVM в форме элементов состояния. Элементы состояния могут использоваться, чтобы сделать сжатие более эффективным; они могут использоваться для хранения алгоритмов сжатия или контекста сжатия в пределах сжатой сессии. Конечная точка сессии SigComp называется ячейкой. Количество данных, которые декомпрессор может хранить в пределах каждой ячейки, также жестко ограничено, для конечной точки SIP предустановленное значение размера памяти состояния (sms) составляет 2048 байт.
Обычно UDVM вначале загружает в кольцевой буфер часть данных доступной памяти из ячеек, например, SIP словаря, значения, которые представляют обычно используемые термины в SIP сообщениях после декомпрессии.
Проблема с ограниченной памятью может сильно ограничить производительность алгоритма сжатия. Поскольку состояния SIP словаря должны полностью умещаться в память состояния, доступную в пределах ячейки, обычно не существует достаточного пространства для более чем пары словарей. Если, например, размер памяти состояния составляет 2048 байт, при этом она содержит байт-код (400 байт), исходные загруженные словари (обычно восстановленное первое сообщение, исходный запрос REGISTER или ответ для SIP) занимают (700 байт), то компрессор имеет пространство памяти для загрузки только одного характерного для сессии словаря размером 900 байт (например, исходный INVITE или '180' ответный словарь).
Ограниченный размер памяти состояния также препятствует обновлению состояния динамического словаря SigComp компрессора при работе с ненадежными каналами (например, для UDP соединений). Это связано с тем, что когда компрессор пытается обновить состояние, любая потеря подтверждения между конечными точками может привести к потере синхронизации словарей.
Используя приведенные выше типичные цифры, когда компрессор отправляет два сообщения, каждое из которых направлено на обновление динамического состояния (700 байт каждое), общий размер обновленных и старых состояний превышает доступную память состояния (400+700+700+700>2048), и, следовательно, компрессор не способен определить, какие состояния динамического словаря хранятся в декомпрессоре.
Существующие способы, использующие ненадежные соединения, позволяют компрессору обновлять динамический словарь, только когда компрессор уверен, что существует достаточно пространства в памяти состояния и для старого, и для нового словаря. Таким образом, если обновление не выполняется или компрессор не принимает подтверждения, компрессор освобождает пространство памяти от словаря невыполненного обновления или использует как известный, так и обновленный словарь.
Таким образом, ограниченные размеры памяти состояния и памяти сжатия/декомпрессии, а также типичный размер словаря приводят к проблемам ограниченных возможностей словаря и ограниченной возможности обновления. Кроме того, эти ограничения могут также привести к перезаписи хранимых кольцевым буфером словарей, поскольку указатель буфера совершает полный оборот после добавления к кольцевому буферу данных после декомпрессии обработанного сообщения. Все эти три проблемы приводят к уменьшению производительности алгоритмов сжатия/декомпрессии, что приводит к увеличению размера словаря и дальнейшему уменьшению производительность, поскольку сохраненные сообщения после декомпрессии обычно используются при последующих сжатии/декомпрессии.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Варианты осуществления настоящего изобретения нацелены на по меньшей мере частичное решение вышеизложенных проблем.
В соответствии с настоящим изобретением предложен способ сжатия сигнального сообщения в системе связи, включающий следующие шаги:
прием части сигнального сообщения; обнаружение в памяти копии этой части сигнального сообщения; сравнение длины обнаруженной части с хранимым значением длины; и, в зависимости от результата шага сравнения, выполнение шага сохранения в памяти обнаруженной части сигнального сообщения.
Шаг сохранения может быть выполнен только после того, как на шаге сравнения будет определено, что хранимое значение длины больше, чем длина обнаруженной части.
Память может включать первую часть памяти и вторую часть памяти, способ может также включать шаг определения того, в какой части памяти обнаруживают копию части сигнального сообщения.
Хранимое значение длины может зависеть от шага определения того, какая часть памяти обнаруживает копию части сигнального сообщения.
Первая часть памяти может включать словарь.
Словарь может включать по меньшей мере одно из перечисленного: динамический словарь и статический словарь.
Хранимое значение длины может быть 4 байта, если часть сигнального сообщения обнаружена в первой части памяти.
Хранимое значение длины может быть 7 байт, если часть сигнального сообщения обнаружена во второй части памяти.
Память может включать кольцевой буфер.
Согласно второму аспекту настоящего изобретения предложено устройство связи для сжатия сигнального сообщения в системе связи, включающее: память; детектор данных, предназначенный для обнаружения в памяти копии части сигнального сообщения и предназначенный для вывода длины любой обнаруженной части; компаратор длины, предназначенный для сравнения длины обнаруженной части со значением длины; и контроллер памяти, предназначенный для приема выходного сигнала компаратора длины, причем контроллер памяти предназначен для сохранения обнаруженной части сигнального сообщения в памяти на основе принятого выходного сигнала компаратора длины.
Память может включать первую часть памяти и вторую часть памяти.
Устройство связи может также включать считыватель положения, настроенный на обнаружение положения копии обнаруженной части в памяти, и при этом считыватель положения может быть предназначен для вывода значения длины в компаратор длины в зависимости от обнаруженного положения.
Считыватель положения может быть предназначен для вывода первого значения длины, когда считыватель обнаруживает копию в первой части, и второго значения длины, когда считыватель обнаруживает копию во второй части.
Первая часть памяти может включать словарь.
Словарь может включать по меньшей мере одно из перечисленного: динамический словарь и статический словарь.
Память может являться кольцевым буфером.
Кольцевой буфер может быть кольцевым буфером виртуальной машины.
Виртуальная машина может быть виртуальной машиной универсального компрессора.
Согласно третьему аспекту настоящего изобретения предложен компьютерный программный продукт, предназначенный для реализации способа сжатия сигнального сообщения в системе связи, включающий следующие шаги: прием части сигнального сообщения; обнаружение в памяти копии этой части сигнального сообщения; сравнение длины обнаруженной части с хранимым значением длины; и, в зависимости от результата шага сравнения, выполнение шага сохранения обнаруженной части сигнального сообщения в памяти.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Для лучшего понимания настоящего изобретения, будут даны ссылки, в качестве примера, на сопроводительные чертежи, на которых:
фиг.1 показывает схематический вид окружения системы связи, где может быть реализовано изобретение;
фиг.2 - это схематический вид типичной системы декомпрессии UDVM памяти, показывающей работу типичного словаря в пределах блока памяти;
на фиг.3 показана блок-схема работы UDVM в процессе сжатия в соответствии с вариантом осуществления настоящего изобретения;
на фиг.4 показана блок-схема работы UDVM в процессе декомпрессии в соответствии с вариантом осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
Некоторые варианты осуществления настоящего изобретения будут описаны далее с помощью примеров со ссылкой на иллюстративную архитектуру мобильной системы связи третьего поколения (3G). Однако следует принять во внимание, что варианты осуществления изобретения могут быть применены в любой подходящей системе связи.
На фиг.1 показан пример сетевой архитектуры, в которой может быть реализовано изобретение. На фиг.1 представлена IP мультимедиа сеть 45 для предложения IP мультимедиа сервисов для подписчиков IP Мультимедиа сети.
Как описано выше, доступ к IP Мультимедиа (IM) сервисам может быть предоставлен с помощью мобильной системы связи. Мобильная система связи типично предназначена для обслуживания оборудования многочисленных мобильных пользователей, обычно посредством беспроводного интерфейса между оборудованием пользователя и по меньшей мере одной базовой станцией 31 системы связи. Система мобильной связи может быть логически разделена на сеть радиодоступа (RAN) и базовую сеть (CN).
Базовая станция 31 предназначена для передачи сигналов к оборудованию 30 мобильного пользователя и приема сигналов от оборудования 30 мобильного пользователя по беспроводному интерфейсу между оборудованием пользователя и сетью радиодоступа. Соответственно оборудование 30 мобильного пользователя способно передавать сигналы в сеть радиодоступа и принимать сигналы от сети радиодоступа по беспроводному интерфейсу.
В показанной системе оборудование 30 пользователя может иметь доступ к IMS сети 45 по сети доступа, связанной с базовой станцией 31. Следует принять во внимание, что хотя для наглядности на фиг.1 показана базовая станция только одной сети радиодоступа, типичная система сети связи обычно включает несколько сетей радиодоступа.
Сетью радиодоступа (RAN) третьего поколения обычно управляет соответствующий контроллер радиосети (RNC). Этот контроллер не показан для ясности. Контроллер может быть назначен для каждой базовой станции, или контроллер может управлять множеством базовых станций, например, на уровне сети радиодоступа. Следует принять во внимание, что название, положение и количество контроллеров радиосети зависит от системы.
Оборудование 30 мобильного пользователя на фиг.1 может включать любое подходящее оборудование мобильного пользователя, адаптированное для связи по Интернет-протоколу (IP) для соединения с сетью. Например, мобильный пользователь может иметь доступ к сотовой сети посредством персонального компьютера (PC), «карманного» компьютера (PDA), подвижной станции (MS) и так далее. Следующие примеры описаны в отношении подвижных станций.
Специалисты в данной области техники хорошо знают особенности и работу типичной подвижной станции. Таким образом, достаточно отметить, что пользователь может использовать подвижную станцию для таких задач, как совершение и прием телефонных звонков, прием и отправление данных из сети и в сеть и для пользования мультимедиа-контентом или другого использования мультимедиа-сервисов. Мобильная станция может включать антенну для беспроводного приема и передачи сигналов от базовых станций и к базовым станциям сети мобильной связи. Подвижная станция также может иметь дисплей для отображения изображений и другой графической информации пользователю оборудования мобильного пользователя. Может быть предусмотрена камера для захвата неподвижных изображений или видеоизображений. Также обычно предусмотрен динамик. Работой подвижной станции можно управлять посредством соответствующего пользовательского интерфейса, например кнопками управления, голосовыми командами и т.д. Кроме того, подвижная станция имеет процессор и средства памяти.
Следует принять во внимание, что хотя на фиг.1 для ясности показано только несколько подвижных станций, одновременно на связи с системой связи может находиться большое количество подвижных станций.
Базовая сеть (CN) обычно включает различные объекты переключения и другого управления и шлюзы для обеспечения связи через несколько сетей радиодоступа, а также для сопряжения одной системы связи с одной или несколькими системами связи, например с другими сотовыми системами и/или стационарными системами связи. В системах 3GPP сеть радиодоступа обычно соединена с соответствующим объектом базовой сети или такими объектами, как (но изобретение этим не ограничивается) обслуживающий узел 33 поддержки пакетной радиосвязи общего назначения (SGSN). Сеть радиодоступа находится на связи с обслуживающим узлом поддержки GPRS через соответствующий интерфейс, например через интерфейс lu. Обслуживающий узел поддержки GPRS, в свою очередь, обычно связывается с соответствующим шлюзом, например шлюзовым узлом 34 поддержки GPRS, через базовую сеть 32 GPRS. Этот интерфейс, как правило, является интерфейсом с пакетной коммутацией данных.
В сети 3GPP устанавливаются сеансы пакетных данных для переноса потоков трафика по сети. Такие сеансы пакетных данных часто называют контекстом протокола передачи пакетных данных (PDP). PDP контекст может включать радиоканал, установленный между оборудованием пользователя и контроллером радиосети, канал радиодоступа, установленный между оборудованием пользователя, контроллером радиосети и SGSN 33, и каналы с пакетной коммутацией данных, установленные между обслуживающим узлом 33 поддержки GPRS и шлюзовым узлом 34 поддержки GPRS. Каждый PDP контекст обычно обеспечивает связь между оборудованием определенного пользователя и шлюзовым узлом поддержки GPRS и, единожды установленный, может типично переносить множественные потоки. Каждый поток обычно представляет собой, например, определенный сервис и/или медиа-компонент определенного сервиса. PDP контекст, следовательно, часто представляет логический маршрут связи для одного или более потоков по сети. Для реализации PDP контекста между оборудованием пользователя и обслуживающим узлом поддержки GPRS должен быть установлен по меньшей мере один канал радиодоступа (RAB), который, как правило, разрешает передачу данных для оборудования пользователя. Реализация этих логических и физических каналов известна специалистам в данной области техники и поэтому здесь не обсуждается.
На фиг.1 показано также множество серверов 50 приложений, соединенных с иллюстративной мультимедиа-сетью 45 протокола Интернет (IP). Оборудование 30 пользователя может иметь соединение через сеть 32 GPRS и сеть 45 IMS с по меньшей мере одним из серверов 50 приложений. Следует отметить, что с сетью данных может быть соединено большое количество серверов приложений.
Связь с серверами приложений осуществляется с помощью функций сети данных, которые обеспечиваются соответствующими средствами контроллера. Например, в текущем третьем поколении (3G) архитектур беспроводной мультимедиа-сети предполагается, что для управления используется несколько разных серверов, обеспечивающих различные функции управления. Они включают такие функции, как функции управления сеансом или состоянием вызова (CSCF). Функции сеанса вызова можно разделить на различные категории. На фиг.1 показаны прокси-функции 35 и 37 управления сеансом вызова (P-CSCF) и обслуживающая функция 36 управления сеансом вызова (S-CSCF). Следует принять во внимание, что подобные функции в различных системах могут называться по-разному.
Пользователю, который хочет использовать сервисы, предоставляемые сервером приложений через IMS систему, может быть необходимо сначала зарегистрироваться с помощью обслуживающего контроллера, например обслуживающей функции 36 управления сеансом вызова (S-CSCF). Регистрация требуется, чтобы дать возможность оборудованию пользователя запрашивать сервис из мультимедиа-системы. Как показано на фиг.1, связь между S-CSCF 36 и оборудованием 30 пользователя может осуществляться через по меньшей мере одну прокси-функцию 35 управления сеансом вызова (P-CSCF). Прокси-CSCF 35, таким образом, работает как прокси-сервер, который пересылает сообщения от GGSN 34 к обслуживающей функции 36 управления сеансом вызова и обратно.
Сообщение REGISTER, используемое пользователем, является одним из примеров сообщения SIP (протокол инициации сессии). Другие запрашивающие SIP сообщения включают: INVITE, которое показывает пользователя или сервис, приглашаемых к участию в сеансе вызова, АСК, которое подтверждает, что клиент принял заключительный ответ на запрос INVITE, BYE, которое завершает вызов и может быть отправлено или тем, кто звонит, или тем, кому звонят, CANCEL, которое отменяет любые незавершенные поиски, но не завершает вызов, который уже принят, и OPTIONS, которое запрашивает возможности серверов.
Как было описано ранее, для сжатия этих SIP-сообщений используется набор протоколов, известных как SigComp. Этот набор протоколов определен в RFC (рабочие предложения) 3320 «Сжатие сигналов (SigComp)». Для того чтобы выполнить и сжатие (компрессию), и декомпрессию в устройстве, для каждого сообщения, подлежащего компрессии или декомпрессии, запускается UDVM (универсальная виртуальная машина декомпрессии).
UDVM, инициированную для процедуры компрессии, также называют компрессором. UDVM, инициированную для процедуры декомпрессии, также называют декомпрессором. UDVM при инициализации определяют в пространстве памяти, определяемом протоколами SigComp. Пространство памяти, используемое в процедуре компрессии, называют памятью компрессии, а аналогичное пространство памяти, используемое в процедуре декомпрессии, называют пространством декомпрессии.
На фиг.2 представлена типичная память 101 компрессии, аналогичная той, которая используется для сжатия сообщений/потока данных. Память 101 компрессии, используемая компрессором, включает часть 103 SigComp и часть 105 UDVM. Часть 103 SigComp, в свою очередь, включает часть 106 заголовка SigComp для хранения любых элементов заголовка сообщения SigComp, часть 107 Bytecode (байт-код) для хранения любых принятых команд алгоритма компрессии и часть 109 сообщения, буферизирующую по меньшей мере часть принимаемого сообщения или потока данных. В некоторых примерах часть Bytecode не используется, поскольку набор команд, используемых UDVM, загружается из ранее сохраненного набора команд.
Часть 105 UDVM включает часть 111 байт-кода для хранения команд на выполнение компрессии и кольцевой буфер 113. Кольцевой буфер 113 используется пользовательским терминалом UDVM как «окно истории» компрессии, в котором хранятся данные, на которые может ссылаться компрессор для восстановления исходного сообщения. Как известно в данной области техники, кольцевой буфер представляет собой статически или динамически размещенный блок памяти, в котором последняя ячейка памяти связана с первой ячейкой памяти блока. Таким образом, когда достигнута конечная ячейка блока памяти, операция направляется обратно в начальную ячейку блока памяти для создания дискретного блока памяти. Этот процесс также называют полным оборотом кольцевого буфера 113.
Типичными алгоритмами компрессии, используемыми UDVM для сообщений и потоков данных протокола SigComp, являются различные известные варианты алгоритма компрессии LZ77. Алгоритм компрессии LZ77 работает путем сохранения окна истории самых последних прочитанных данных и сравнения текущих кодируемых данных с данными в окне истории. Выходной сжатый поток/сообщение содержит ссылки на положение в окне истории и длину совпадения. Если в пределах окна истории не найти совпадения, сам символ просто кодируется в потоке и отмечается как «буквальный». Сжатый поток/сообщение поэтому включает два типа символов, буквальные и пары длина/положение. Наиболее популярными вариантами семейства алгоритмов являются алгоритмы LZW, LZSS и DEFLATE. Разница между ними заключается в том, по какому алгоритму осуществляется поиск текущих данных в окне истории; LZSS алгоритм использует простой бинарный поиск по дереву, тогда как DEFLATE алгоритм использует поиск по хэш-таблице.
Кольцевой буфер хранит копии ранее принятых символов сообщения/потока данных и то, какой алгоритм компрессии используется в окне истории для поиска копий читаемых в данный момент символов.
Далее для справки показан упрощенный пример алгоритма сжатия DEFLATE, который определен в RFC 1951:
Показанный выше алгоритм ищет несжатые части сообщения в данных, сохраненных в окне истории (кольцевом буфере). Поиск возвращает длину и положение самого длинного совпадения. Если совпадение не найдено, длина равна 1, а первый байт содержания поиска вставляется в сжатый поток как буква, в противном случае в сжатый поток вставляется длина и положение совпадения. Затем сжатая часть сообщения добавляется в кольцевой буфер.
Типичный используемый алгоритм включает дополнительные шаги, например перебор с возвратом выходного потока, если найдено более длинное совпадение.
Для того чтобы улучшить эффективность сжатия алгоритмов LZ77, принято предварительно загружать предыдущие сообщения или внешние словари, чтобы предоставить достаточно данных для поиска перед добавлением символов из текущего сообщения. Этот процесс иногда называют наполнением окна истории.
Он показан на первой части блока 113а памяти кольцевого буфера на фиг.2. Первая часть блока 113а памяти кольцевого буфера включает часть 115 словаря.
SigComp-компрессоры обычно стремятся использовать более одного словаря для увеличения эффективности сжатия.
Кроме того, когда компрессор сжимает очень длинное сообщение или поток данных, дополнение символа читаемого в текущий момент сообщения в кольцевой буфер приводит к тому, что читаемое сообщение достигает конца кольцевого буфера и перезаписывает сохраненные словари. Разрушение словаря часто может привести к снижению эффективности алгоритма сжатия.
Декомпрессор использует идентичный набор словарей и имеет идентичный размер кольцевого буфера для того, чтобы производить декомпрессию сжатого сообщения. В декомпрессоре словари загружают в кольцевой буфер перед началом декомпрессии сообщения. Сжатое сообщение затем проверяется на наличие ссылок на кольцевой буфер и сообщение после декомпрессии, прочитанное из кольцевого буфера или определенное как «буквальный» символ. Прочитанное или определенное значение затем копируется в кольцевой буфер и также выводится как часть сообщения после декомпрессии или исходного сообщения.
Когда декомпрессор/компрессор завершил работу, конечный несжатый выходной сигнал сохраняется как «состояние». Эти состояния или ячейки могут быть использованы как данные словаря при дальнейшей компрессии и декомпрессии. Однако, поскольку эти состояния сами по себе являются несжатыми, они обычно содержат избыточную информацию.
На фиг.3 показана блок-схема улучшенного компрессора, включающего варианты осуществления настоящего изобретения.
На первом шаге 301 осуществляется прием сообщения или по меньшей мере первой части потока данных, предназначенных для сжатия. Этот шаг фактически является запуском этапа сжатия UDVM.
На следующем шаге 303 компрессор загружает кольцевой буфер копиями статических и/или динамических словарей.
На следующем шаге 305 выбирают следующую несжатую часть сообщения; если больше нет несжатых частей, работа останавливается.
На следующем шаге 307 производится поиск в кольцевом буфере копии выбранной несжатой части.
Если совпадение найдено, на следующем шаге 308 выводится ссылка на кольцевой буфер в виде пары положение/длина. Этот выходной сигнал используется для формирования части сообщения сжатых данных.
Кроме того, если совпадение обнаружено, компрессор на шаге 309 проверяет пару положение/длина, чтобы определить, указывает ссылка на ячейку памяти словаря в кольцевом буфере, если длина ячейки памяти словаря превышает порог в 4 байта, или ссылка указывает на несловарную ячейку памяти в кольцевом буфере, если длина ссылки кольцевого буфера превышает значение порога в 7 байт. Компрессор может определить, произошло совпадение в ячейках памяти словаря или в оставшейся части кольцевого буфера, путем сравнения определенного положения совпадения с сохраненным указателем, содержащим значение входного указателя кольцевого буфера, когда выбирается первая несжатая часть. Другими словами, относительное положение словарной статьи на начало положения памяти компрессии больше, чем суммарный размер кольца.
Если оба значения порогов превышены, способ переходит обратно на шаг 305 выбора. Если ни одно из значений порога не превышено, способ продолжается с шага 313. На шаге 313 компрессор добавляет выбранную часть в кольцевой буфер. Затем способ возвращается на шаг 305, на котором выбирается следующая несжатая часть.
Если не найдено совпадений выбранной части в кольцевом буфере, то способ продолжается с шага 311, а выбранная часть выводится как «буквальная». Затем способ продолжается с шага 311, на котором выбранная «буквальная» часть добавляется в кольцевой буфер.
Ниже описан пример способа сжатия со ссылкой на псевдокод. В этом примере код режима работы miniate (программа дефляции длины минимального состояния) ищет выбранные части сообщения в части окна истории (history_window) и выводит сжатый поток (compressed_stream). Если есть совпадение, производится проверка положения и длины, чтобы определить, превышают ли они порог длины для ячеек словаря и не словаря, чтобы определить, следует ли дополнить history_window (кольцевой буфер).
Для того чтобы синхронизировать алгоритмы компрессии и декомпрессии, то есть в любой точке компрессии символа или обратной декомпрессии к тому же символу, память, в которой осуществляет поиск компрессор и к которой получает доступ декомпрессор, должна быть одной и той же, улучшенный алгоритм декомпрессии следует аналогичному алгоритму.
На фиг.4 показана блок-схема работы UDVM в процессе улучшенной декомпрессии.
На первом шаге 401 осуществляется прием сообщения или, по меньшей мере, первой части потока данных, предназначенных для декомпрессии. Этот шаг фактически является запуском этапа сжатия UDVM.
На следующем шаге 403 декомпрессор загружает кольцевой буфер копиями статических и/или динамических словарей.
На следующем шаге 405 выбирается следующая непрочитанная сжатая часть сообщения. Если больше нет непрочитанных сжатых частей, работа останавливается.
На следующем шаге 407 производится поиск в выбранной части ссылки на кольцевой буфер.
Если ссылка обнаружена, на следующем шаге 408 выводится содержание ссылки памяти согласно формату ссылки пара положение/длина. Этот выходной сигнал используется для формирования части сообщения данных после декомпрессии.
Кроме того, если ссылка обнаружена, декомпрессор на шаге 409 проверяет значение ссылки пары положение/длина, чтобы определить, что ссылка указывает на ячейку памяти словаря в кольцевом буфере, если длина ячейки памяти словаря превышает порог в 4 байта, или что ссылка указывает на несловарную ячейку памяти в кольцевом буфере, если длина ссылки кольцевого буфера превышает значение порога в 7 байт. Декомпрессор может определить, находится ли положение ссылки в ячейках памяти словаря или в оставшейся части кольцевого буфера путем сравнения определенного положения ссылки с сохраненным индикатором положения, содержащим значение входного указателя кольцевого буфера, когда выбирается первая сжатая часть. Другими словами, относительное положение словарной записи относительно начального положения памяти декомпрессии больше, чем суммарный размер кольца.
Если оба значения порогов превышены, способ отправляется обратно на шаг 405 выбора. Если ни одно из значений порога не превышено, способ продолжается с шага 413. На шаге 413 декомпрессор добавляет выбранную часть в кольцевой буфер. Затем способ возвращается на шаг 405, на котором выбирается следующая непрочитанная сжатая часть.
Если в кольцевом буфере не найдено ссылок на память, то способ выполняет шаг 411, а выбранная часть выводится как «буквальная». Затем способ продолжает с шага 411, на котором выбранная «буквальная» часть добавляется в кольцевой буфер.
Во всех приведенных выше примерах заключительная ячейка состояния меньше, чем конечная ячейка типичного алгоритма сжатия, а уровень избыточных и повторяющихся элементов в пределах ячеек состояния компрессии и декомпрессии значительно сокращен. При уменьшении длины ячейки проблемы, связанные с сильными ограничениями пространства памяти, существенно сокращаются. Не только большинство из этих 'minilated' ячеек может быть добавлено в пространство памяти компрессии и/или декомпрессии, следовательно, увеличивая количество доступных словарей для поиска, но также пропадает проблема обновления, поскольку более вероятно, что будет достаточно пространства памяти для многократного пересмотра словаря.
Эффективность вариантов осуществления настоящего изобретения показана ниже на примере типичного сообщения регистрации SIP, подлежащего сжатию.
Длина данного сообщения составляет 619 байт. При использовании известного ранее алгоритма компрессии получается состояние ячейки длиной 693 байта. В то время как при применении приведенного выше алгоритма совместно со стандартным статическим словарем SIP (который определен в RFC 3485) состояние сокращается до всего 182 байт.
Кроме того, если теперь дополнительное сообщение подвергнуть компрессии и декомпрессии, например, такое сообщение SIP INVITE, как:
типичные алгоритмы компрессии и декомпрессии формируют состояние длиной 792 байта. А при использовании улучшенных алгоритмов компрессии и декомпрессии, описанных выше, совместно с предыдущим сообщением состояния REGISTER, длина состояния INVITE составляет всего 238 байт.
Приведенные выше варианты осуществления изобретения показывают выборочное хранение значений состояния в зависимости от простого определения длины и положения совпадения. В других вариантах осуществления настоящего изобретения дополнительного ограничения повторяемости можно избежать путем уменьшения порога длины. Также может быть возможно использовать длину последовательных несовпадений для дальнейшей модификации содержимого кольцевого буфера, чтобы получить меньший выходной сигнал состояния.
В других вариантах осуществления настоящего изобретения сам компрессор может вводить маркерные биты или символы в сжатое сообщение/поток данных для управления применением кольцевого буфера в декомпрессоре. Таким образом, в некоторых вариантах осуществления настоящего изобретения компрессор прикрепляет сигнальный бит к каждому совпадению или букве, который при прочтении декомпрессором выдает команду декомпрессору добавить значение, полученное после декомпрессии, в кольцевой буфер.
Примеры изобретения были описаны в контексте IMS систем и GPRS сетей. Однако это изобретение также может быть применено для любых других стандартов. Кроме того, приведенные примеры описаны в контексте так называемых «полностью SIP» сетей со всеми объектами SIP и каналами связи, известными как контексты PDP. Данное изобретение также может быть применено к любым другим подходящим системам связи, беспроводным или стационарным системам, стандартам связи и протоколам связи.
Примеры других возможных систем связи, поддерживающих сервисы с беспроводной передачей данных, включают (но этим не ограничиваются) системы мобильной связи третьего поколения, например универсальную систему мобильной связи (UMTS), i-phone или CDMA2000 и систему наземного транкингового радио (TETRA), систему беспроводной связи EDGE.
Примерами стационарных систем являются разнообразные широкополосные методы, обеспечивающие доступ в Интернет пользователя в различных местах, например дома и в офисе. Независимо от используемых в сети связи стандартов и протоколов изобретение может быть применено в любых сетях связи, где требуется регистрация.
Варианты осуществления изобретения были рассмотрены в контексте прокси-функции и обслуживающей функции управления состоянием вызова. Варианты осуществления изобретения могут быть применены к другим элементам сети, где это возможно.
Кроме того, следует отметить, что вариантами осуществления настоящего изобретения могут управлять аппаратные средства, программное обеспечение или любая комбинация аппаратных и программных средств.
Также надо отметить, что наряду с приведенным выше описанием, иллюстрирующим варианты осуществления настоящего изобретения, существуют другие варианты и модификации раскрытых решений, которые могут быть сделаны в объеме изобретения, определенном в формуле изобретения.