Протокол радиолинии
Протокол радиолинии (англ. Radio Link Protocol, RLP) — протокол фрагментации с автоматическим запросом повторной передачи (АРП, англ. ARQ), используемый поверх беспроводного (обычно сотового) радиоинтерфейса[1]. Протокол RLP функционирует на канальном уровне (уровень 2) эталонной модели OSI[2].
Большинство беспроводных радиоинтерфейсов настроены на уровень потерь пакетов порядка 1 %, и большинство вокодеров также настроены так, чтобы терять минимально возможное качество речи при таком уровне потерь. Однако для всех вариантов TCP потеря 1 % пакетов неприемлема, поэтому для передачи данных TCP/IP по таким сетям требуется повысить надёжность. Протокол RLP обнаруживает потерю пакетов и выполняет их повторную передачу, снижая потери до примерно 0,01 %, а иногда и до 0,0001 %, что уже подходит для приложений TCP/IP. Когда получатель обнаруживает пропущенный пакет, он отправляет отправителю кадр NAK (неподтверждение), который инициирует повторную передачу пакета. Одновременно получатель запускает таймер ожидания доставленного пакета. Каждый раз, когда истекает время таймера без получения пакета, таймер сбрасывается, и NAK отправляется столько раз, сколько равно 1 плюс количество предыдущих истечений таймера, до некоторого лимита[3].
RLP также реализует фрагментацию и сборку потока, а иногда — упорядоченную доставку. Некоторые варианты RLP используют протокол более высокого уровня, например PPP (протокол точка-точка, англ. Point-to-Point Protocol), для предоставления этих функций[4], в то время как более новые версии RLP реализуют также фрейминг и сжатие данных.
Поскольку минимальный размер голосового пакета в сети CDMA IS-95 (и, следовательно, минимальная длина пакета RLP) может составлять всего 88 бит (11 байт)[5], заголовки RLP должны быть очень малы, чтобы минимизировать накладные расходы. Обычно это достигается тем, что обе стороны согласовывают переменную область номеров последовательности, в которой нумерируется каждый байт потока[4]. В некоторых вариантах RLP этот счётчик может быть всего 6-битным.
Передача данных через RLP не позволяет протоколу запросить у радиоинтерфейса определённый размер полезной нагрузки. Вместо этого пакетный размер определяется планировщиком радиоинтерфейса на основе постоянно меняющихся условий канала, и RLP вызывается (upcall) непосредственно перед передачей, с учётом выбранного размера пакета. Для сравнения, большинство других фрагментационных протоколов, таких как используемые в 802.11b и IP, ориентированы на размеры полезной нагрузки, определённые вышестоящими уровнями, и обращаются к MAC, чтобы тот создал пакет заданного размера. Эти протоколы хуже приспособлены для работы с переменными условиями радиоканала и иногда не могут передать данные при глубоких замираниях сигнала.
Протокол RLP может быть основан на подтверждениях (ACK) или неполучении подтверждений (NAK). Большинство RLP реализованы как NAK-ориентированные: сторона, передающая данные по прямому каналу, автоматически предполагает успешную доставку каждого пакета, а получатель отправляет NAK только при получении сегмента вне очереди. Это значительно снижает объём обратных передач, которые в сотовых сетях обычно менее эффективны и обладают большим временем задержки. Когда передающий поток простаивает, NAK-ориентированный RLP должен в конечном итоге повторно передать последний сегмент, если он был потерян, чтобы достичь уровня потерь 0,01 %. Обычно эта повторная передача контролируется таймером сброса канала (flush timer), истекающим через 200—500 мс после простоя канала.
Концепция протокола RLP была предложена Филом Карном (англ. Phil Karn) в Qualcomm в 1993 году[4], изначально для сетей CDMA (IS-95). В январе 2006 года была утверждена спецификация стандарта IEEE 802.20, предусматривающая одну из форм RLP.
Различные варианты протокола RLP используются в разнообразных сотовых сетях, таких как GSM и CDMA. В сетях UMTS и LTE используется аналогичный протокол под названием RLC (Radio Link Control, Управление радиоканалом)[6].