Описание уровня PDCP LTE
В данной заметке рассматривается протокол Packet Data Convergence Protocol (PDCP). Данный протокол обрабатывает RRC сообщения в плоскости управления (control plane) и IP пакеты в пользовательской плоскости (user plane). Он применяется на участке eNodeB - UE. Основные функции, которые выполняются этим протоколом, представлены ниже:
- Сжатие заголовков (header compression) и их востановление при передаче пользовательских данных. При этом используется протокол Robust Header Compression (ROHC).
- Защита данных. Шифрация и дешифрация как пользовательских сообщений, так и управляющих. Защита целостности для управляющих сообщений.
- Функции поддержки хэндовера. Востановление порядка (reordering) передаваемых пакетов, а также управление повторными передачами во время хэндовера.
- Отбрасывание пакетов данных, для которых истек тайм-аут.
Сжатие заголовков
Сжатие заголовков - это одна из наиболее важных функций PDCP протокола потому, что размер заголовков вышележащих уровней может быть достаточно большим и при передаче их без сжатия будет расходоваться радиоресурс, которого и так не много. Как уже отмечалось, для сжатия заголовков используется ROHC, определенный IETF (Internet Engineering Task Force).В RFC 4995 определяется множество различных профайлов (наборы правил и параметров) для сжатия заголовков. Ниже приводится таблица с протоколами сжатия заголовков, которые поддерживаются в LTE.
Отметим, что профайлы, определенные ранее RFC 3095, были переопределены в RFC 4995. При этом, эффективность их одинакова (UMTS поддерживает только RFC 3095). UE может поддерживать один или несколько ROHC профайлов. В тоже самое время, поддержка ROHC для тех UE, которые не поддерживают передачу VoIP (Voice over IP), не обязательна. И напротив, UE, которые поддерживают передачу VoIP вынуждены поддерживать как минимум один профайл для сжатия заголовков RTP/UDP/IP (Real-Time Protocol/User Datagram Protocol/ Internet Protocol. Этот стек протоколов обычно используется при передаче VoIP). eNodeB с помощью протокола RRC выбирает какие ROHC профайлы будут использоваться из тех, которые поддерживает UE. После этого ROHC компрессор на eNodeB и UE динамически определяет IP потоки, которые используют определенную конфигурацию заголовков, и выбирает подходящий профайл сжатия.
ROHC компрессор хранит статическую часть заголовка (например, IP адреса отправителя и получателя) и со стороны получателя, и со стороны отправителя. Более того, динамические части заголовка (напрмер, временная отметка в RTP заголовке) сжимаются за счет того, что передается только их разница относительно некоторой опорной величины. Так как статические части заголовков передаются только один раз, правильность восстановления заголовков зависит от корректного приема этой информации. Для этого используется механизм обратной связи (feedback) во время передачи начальной информации, необходимой для восстановления заголовков.
Наиболее важное значение сжатие заголовков имеет при передаче VoIP данных. Обычно размер данных, которые содержит VoIP пакет, составляет 32 байта. Размер IPv6 заголовка составляет 60 байт, а IPv4 - 40 байт. В результате накладные расходы составляют 188% и 125%, соответственно. При использовании механизма сжатия заголовков их размер можно сократить до 4-6 байт. Таким образом, накладные расходы будут составлять 12.5 - 18.8%. Эти оценки применимы только для активных периодов (когда передается чья-то речь). В период пауз (silence period), как правило, VoIP пакет содержит данных меньше, в результате, накладные расходы на передачу заголовков будут еще больше.
Защита информации
PDCP уровень реализует шифрацию данных (как пользовательских, так и управляющих) и обеспечивает их целостность (только для управляющих данных). На PDCP уровне есть счетчик PDCP PDU пакетов, который называется COUNT. Этот счетчик является входным параметром алгоритмов защиты. Значение этого 32-битного счетчика увеличиваетя на единицу каждый раз, когда происходит прием или передача PDCP PDU по RRC соединению. Его значение отслеживает как UE, так и eNodeB. Для обеспечения надежности работы при потере пакетов каждый PDCP PDU содержит в себе некий номер, который называется PDCP Sequence Number (SN). Значение этого номера соответствует значению младших битов счетчика COUNT. Таким образом, если один или более пакетов были потеряны, то значение COUNT может быть восстановлено из вновь принятого пакета, используя PDCP SN. Поэтому для того, чтобы UE и eNodeB потеряли синхронизацию значения COUNT необходимо, чтобы подряд было потеряно такое количество пакетов, которое соответствует максимальному значению PDCP SN. Вероятность этого события можно уменьшить увеличением длины поля PDCP SN, вплоть до полного включения значения COUNT. Однако, в этом случае существенно увеличатся накладные расходы на передачу сообщения. Ниже будут приведены актуальные значения длительности PDCP SN поля.Защита целостности реализуется с помощью добавления поля MAC-I (Message Authentication Code for Integrity) к каждому RRC сообщению. Этот код вычисляется на основе AS ключей, самого сообщения, идентификатора радиопотока (radio bearer ID), направления (UL или DL) и значения COUNT. Если проверка на целостность заканчивается неудачей, то сообщение отбрасывается.
Шифрация данных осуществляется с помощью операции XOR исходного сообщения и потока, который генерится с помощью алгоритма кодирования на основе вторичных AS ключей, идентификатора радиопотока (radio bearer ID), направления (UL или DL) и значения COUNT.
Хэндовер (Handover)
Хэндовером называется процедура перевода UE из одной ячейки в другую на обслуживание. В зависимости от требуемых параметров QoS можно выделить два типа хэндоверов: быстрый (seamless) и хэндовер без потери данных (lossless).Быстрый хэндовер (Seamless handover)
Быстрый хэндовер применяется для всех радиопотоков, по которым передаются управляющие сообщения, и для потоков, по которым передаются пользовательские данные и которые на уровне RLC помечены как "передача без подтверждений" (Unacknowledge Mode, UM). Такие потоки данных допускают потери пакетов, но имеют достаточно жесткие ограничения на задержку передачи пакетов (например, передача голоса). Поэтому процедура быстрого хэндовера отличается низкой сложностью (чтобы уменьшить задержку передачи пакетов), но во время этой процедуры возможны потери пакетов.В случае быстрого хэндовера будет произведена негерация нового ключа для защиты данный, поэтому значение COUNT сбрасывается в 0. Пакеты PDCP PDU, передача которых еще не началась, будут переданы на целевую eNodeB (куда уходит UE) по интерфейсу X2. Пакеты PDCP PDU, которые уже начали передаваться, но еще не были успешно приняты, будут потеряны. При этом никакой информации о принятых и отправленных пакетах на целевую eNodeB передаваться не будет.
Хэндовер без потери данных (Lossless handover)
С помощью номера SN, который добавляется к каждому PDCP PDU, можно востановить правильную последовательность принятых пакетов, а также определить, какие пакеты были потеряны и выполнить их повторную передачу. Такая функциональность используется для потоков, которые не имют жестких ограничений на задержку передачи пакетов и при этом не допускают потери данных. Хэндовер без потери данных применяется для потоков, которые отмечены на RLC уровне как Acknowledge Mode (AM). Во время такого хэндовера информация, которая относится к протоколу сжатия заголовков, не передается на целевую eNodeB. Однако, номер SN и значение COUNT сохраняются.Более подробно процедура хэндовера будет рассмотрена в отдельной заметке, там же будет приведен ряд других классификаций для этой процедуры.
Отбрасывание пакетов
Как правило, доступная скорость передачи по радиоканалу меньше, чем скорость передачи по сетевому интерфейсу (S1). В случае, когда входных данных больше, чем возможно передать в данный момент по радиоканалу, эти данные будут накапливаться в буферах eNodeB (или UE). Наличие этих буферов позволяет сгладить пики мгновенной скорости поступления данных и выражается в увеличении джиттера (jitter, разброс в значениях задержки передачи данных). Однако, если скорость поступления данных больше, чем скорость их передачи по радиоканалу на достаточно длительном промежутке времени, то это ведет к тому, что достаточно большое количество данных будет находиться в буферах на eNodeB (или UE). А это может привести к значительным потерям данных при быстром хэндовере или к большим значениям задержки передачи данных для приложений реального времени.В проводных сетях функция отбрасывания пакетов выполняется маршрутизаторами (router), когда доступной скорости передачи недостаточно для обслуживания всех данных. После отбрасывания пакетов в сети, приложения, к которым эти пакеты относились, могут обнаружить эти потери и изменить скорость генерации данных (снизить ее). Типичным примером такого поведения является управление окном передачи в TCP. Когда обнаруживаются потери пакетов, размер окна уменьшается. Другим примером могут служить приложения, которые передают голосовой трафик или видео трафик. Такие приложения могут обнаружить потери пакетов, например, с помощью обратной связи RTCP (Real-time Transport Control Protocol) и соответственно могут изменить скорость генерируемого потока.
Для того, чтобы поддержать эти механизмы и предотвратить чрежмерную задержку передачи данных в протокол PDCP была добавлена возможность отбрасывания пакетов. Эта функциональность реализована с помощью таймера. Для каждого пакета PDCP SDU, который приходит от вышележащий уровней, запускается таймер. Если в момент истечения этого таймера передача пакета PDCP SDU, к которому относится этот таймер, еще не началась, то такой пакет отбрасывается.
Формат PDCP PDU
В LTE определены два типа PDCP PDU: PDCP Data PDU (ранее по тексту PDCP PDU) и PDCP Control PDU. PDCP Data PDU используются для передачи данных как из плоскости управления, так и пользовательской плоскости. PDCP Control PDU используются только для передачи инфрмации обратной связи для процедуры сжатия заголовков и для передачи PDCP статуса во время хэндовера. Пакет PDCP PDU имеет поле "D/C" для определения его типа (Data или Control). На рисунке ниже приводится формат PDCP Data PDU.Как видно из рисунка, после поля "D/C" включается номер PDCP SN (7 или 12 бит). Затем идет блок данных, который содержит IP пакет. В случае передачи управляющего сообщения (т.е. RRC сообщения) после поля данных прикрепляется 32-битный MAC-I для защиты целостности. Ниже приводится таблица, которая описывает возможные форматы PDCP Data PDU.
Обычно 12-битный SN используется для передачи IP пакетов большого размера, например, web трафик и e-mail. В этом случае накладные расходы будут не такими существенными. 7-битный SN используется, как правило, для передачи VoIP.
Рассмотрим второй тип PDCP PDU, а именно PDCP Control PDU. Ниже представлен формат пакета PDCP Control PDU.
Данный пакет может содержать информацию двух типов: обратная связь для процедуры сжатия заголовков или PDCP статус во время процедуры хэндовера без потери данных. Для определения того, какую имеено информацию содержит данный пакет, используется поле "Тип PDU". Передача PDCP статуса во время процедуры хэндовера без потери данных необходима для того, чтобы предотвратить повторную передачу пакетов, которые уже были успешно получены и, напротив, запросить повторную передачу пакетов, которые были приняты, но для которых не удалось восстановить заголовок. В этом случае PDCP Control PDU содержит битовую карту, кототрая сообщает какие пакеты должны быть переданы повторно, и номер первого пропущенного пакета (First Missing SDU, FMS). В случае, когда потери пакетов не было, битовая маска не включается, а передается просто номер следующего ожидаемого пакета.
Если вы не нашли интересующую вас информацию по LTE/LTE-A в этой статье, напишите мне об этом письмо на alexey.anisimov86@gmail.com. Я постараюсь ее добавить в кратчайшие сроки.