Введение

Группа протоколов связи

GPRS Tunnelling Protocol (GTP) – это группа протоколов связи на основе IP, используемых для передачи данных службы общей пакетной радиосвязи (GPRS) в радиосетях GSM, UMTS, LTE и 5G NR. В архитектурах 3GPP интерфейсы на основе GTP и Proxy Mobile IPv6 определены в различных точках соединения. GTP может быть разбит на отдельные протоколы: GTP C, GTP U и GTP'. GTP C используется в базовой сети GPRS для сигнализации между шлюзовыми узлами поддержки GPRS (GGSN) и обслуживающими узлами поддержки GPRS (SGSN). Это позволяет SGSN активировать сеанс от имени пользователя (активация контекста PDP), деактивировать тот же сеанс, регулировать параметры качества обслуживания или обновлять сеанс для абонента, только что перешедшего из другой SGSN. GTP U используется для передачи пользовательских данных в базовой сети GPRS и между сетью радиодоступа и базовой сетью. Передаваемые пользовательские данные могут быть представлены пакетами в форматах IPv4, IPv6 или PPP. GTP' (GTP prime) использует ту же структуру сообщений, что и GTP C и GTP U, но выполняет независимую функцию. Он может использоваться для передачи данных о тарификации от функции сбора данных о тарификации (CDF) сети GSM или UMTS к функции шлюза тарификации (CGF). В большинстве случаев это означает передачу данных от множества сетевых элементов, таких как GGSN, к централизованному компьютеру, который более удобно предоставляет данные о тарификации в биллинговый центр оператора сети. Различные варианты GTP реализованы в RNC, SGSN, GGSN и CGF в сетях 3GPP. Мобильные станции GPRS (MS) подключаются к SGSN, не имея информации о GTP. GTP может использоваться с UDP или TCP. UDP рекомендуется или является обязательным, за исключением туннелирования X.25 в версии 0. GTP версии 1 используется только с UDP.

Общие особенности

Все варианты GTP имеют общие характеристики. Структура сообщений во всех вариантах одинакова: за заголовком UDP/TCP следует заголовок GTP.

GTP-C - контроль GTP

Протокол GTP C является контрольной частью стандарта GTP. Когда абонент запрашивает контекст PDP, SGSN отправляет сообщение GTP C с запросом на создание контекста PDP в GGSN, содержащее детали запроса абонента. GGSN затем отвечает сообщением GTP C с ответом на запрос создания контекста PDP, которое либо предоставляет детали фактически активированного контекста PDP, либо указывает на ошибку и причину ее возникновения. Это UDP-сообщение, использующее порт 2123. Протокол eGTP C (или GTPv2 C) отвечает за создание, поддержание и удаление туннелей на множестве интерфейсов Sx. Он используется для управления плоскостью управления, управления туннелями и управления мобильностью. Он также управляет пересылкой сообщений о релокации, контекстом SRNS и созданием прямых туннелей во время межсистемных передач LTE.

GTP-U - туннелирование пользовательских данных GTP

GTP U – это, по сути, относительно простой протокол туннелирования на основе IP, который позволяет создавать множество туннелей между каждой парой конечных точек. При использовании в UMTS у каждого абонента будет один или несколько туннелей – по одному для каждого активного PDP-контекста, а также, возможно, отдельные туннели для конкретных соединений с различными требованиями к качеству обслуживания. Отдельные туннели идентифицируются с помощью идентификатора конечной точки туннеля (TEID) в сообщениях GTP U, который должен быть динамически выделенным случайным числом. Если это случайное число обладает криптографической стойкостью, то оно обеспечит определенный уровень защиты от некоторых видов атак. Тем не менее, стандарт 3GPP требует, чтобы весь трафик GTP, включая пользовательские данные, передавался в защищенных частных сетях, не имеющих прямого подключения к Интернету. Это происходит через UDP-порт 2152. Протокол GTPv1 U используется для обмена пользовательскими данными по туннелям GTP через интерфейсы Sx. IP-пакет для UE (конечного пользователя) инкапсулируется в пакет GTPv1 U и туннелируется между P GW и eNodeB для передачи данных, относящихся к UE, через интерфейсы S1 U и S5/S8.

GTP' - перевод сборов

Протокол GTP' используется для передачи данных о тарификации в функцию шлюза зарядки. GTP' использует TCP/UDP порт 3386.

Использование на интерфейсе IuPS

GTP U используется на интерфейсе IuPS между сетью ядра GPRS и радиодоступом (RAN), однако протокол GTP C не применяется. В этом случае RANAP используется как протокол управления и устанавливает GTP U туннели между SGSN и контроллером радиосети (RNC).

Стек протоколов

Протоколы приложений IP (пользовательские) GTP UDP IP Layer 2 (например, WAN или Ethernet) GTP U стек протоколов GTP может использоваться с UDP или TCP. GTP версии 1 используется только с UDP. По состоянию на 2018 год определены три версии: 0, 1 и 2. Версии 0 и 1 значительно различаются по структуре. В версии 0 протокол сигнализации (протокол, устанавливающий туннели путем активации контекста PDP) объединен с протоколом туннелирования на одном порту. Версии 1 и 2 фактически представляют собой два протокола: один для управления (называемый GTP-C) и один для туннелирования пользовательских данных (называемый GTP-U). Версия 2 GTP отличается от версии 1 только в части GTP-C. Это связано с тем, что 3GPP определил улучшения для GTP-C в версии 2 для EPS с целью улучшения обработки каналов связи. GTP-U также используется для передачи пользовательских данных от RNC к SGSN в сетях UMTS. Однако в этом случае сигнализация осуществляется с использованием RANAP, а не GTP-C.

Стандартизация GTP

GTP первоначально был стандартизирован в рамках ETSI (GSM стандарт 09.60). С созданием стандартов UMTS разработка была передана в 3GPP, который с 2005 года поддерживает его как стандарт 3GPP 29.060. GTP' использует тот же формат сообщений, но его специальные применения описаны в стандарте 32.295, вместе со стандартизированными форматами передаваемых данных о тарификации. Более поздние версии TS 29.060 отказываются от поддержки взаимодействия GTPv1/v0, поэтому не предусмотрен откат к предыдущей версии в случае, если GSN не поддерживает более новую версию. GTPv2 (для развитых пакетных услуг) был представлен в виде проекта в начале 2008 года и выпущен в декабре того же года. GTPv2 обеспечивает откат к GTPv1 посредством механизма "Версия не поддерживается", но явно не предусматривает поддержку отката к GTPv0.