Протокол туннелирования GPRS (GTP ) - это группа IP -связь на основе протоколов, используемых для передачи общей службы пакетной радиосвязи (GPRS) в GSM, UMTS и LTE сети. В архитектурах 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. Мобильные станции (MS) GPRS подключаются к SGSN, не зная о GTP.
GTP можно использовать с UDP или TCP. UDP является либо рекомендуемым, либо обязательным, за исключением туннелирования X.25 в версии 0. GTP версии 1 используется только для UDP.
Все варианты GTP имеют определенные общие характеристики. Структура сообщений такая же, с заголовком GTP, следующим за заголовком UDP / TCP.
Заголовки GTPv1 содержат следующие поля:
+ | 0-2 | 3 | 4 | 5 | 6 | 7 | 8-15 | 16-23 | 24-31 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Версия | Тип протокола | Зарезервировано | Флаг заголовка расширения | Флаг порядкового номера | Флаг номера N-PDU | Тип сообщения | Длина сообщения | ||||||||||||||||||||||||
32 | TEID | |||||||||||||||||||||||||||||||
64 | Порядковый номер | Номер N-PDU | Тип заголовка следующего расширения |
Заголовки следующего расширения выглядят следующим образом:
+ | Биты 0-7 | 8-23 | 24-31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Длина расширения | Содержание | ||||||||||||||||||||||||||||||
... | ... | |||||||||||||||||||||||||||||||
... | Содержание | Заголовок следующего расширения |
Он также известен как evolved-GTP или eGTP. Заголовки GTPv2-C содержат следующие поля:
+ | Бит 0-2 | 3 | 4 | 5-7 | 8-15 | 16-23 | 24-31 | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Версия | Флаг совмещения (P) | Флаг TEID (T) | Запасной | Тип сообщения | Длина сообщения | ||||||||||||||||||||||||||
32 | TEID (присутствует только при T = 1) | |||||||||||||||||||||||||||||||
64 (32, если TEID отсутствует) | Порядковый номер | Запасной |
GTPv2 отсутствует -U протокол GTP-U в LTE также использует GTPv1-U.
Помимо общей структуры сообщения, существует также общий механизм для проверки возможности подключения от одного GSN к другому ГСН. Здесь используются два сообщения.
Так часто, как каждые 60 секунд, GSN может отправлять эхо-запрос каждому другому GSN, с которым у него есть активное соединение. Если другой конец не отвечает, это можно рассматривать как неработающее, и активные соединения с ним будут удалены.
Помимо двух ранее упомянутых сообщений, нет других сообщений, общих для всех вариантов GTP, что означает, что по большей части они фактически образуют три полностью отдельных протокола.
Протокол GTP-C является разделом control стандарта GTP. Когда абонент запрашивает контекст PDP, SGSN отправляет сообщение GTP-C запроса контекста PDP в GGSN, предоставляя подробную информацию о запросе подписчика. Затем GGSN ответит сообщением GTP-C о создании контекста PDP, которое либо предоставит подробности фактически активированного контекста PDP, либо укажет на сбой и объяснит причину этого сбоя. Это сообщение UDP через порт 2123.
Протокол eGTP-C (или GTPv2-C) отвечает за создание, поддержку и удаление туннелей на нескольких интерфейсах Sx. Он используется для управления путями плоскости управления, управления туннелями и управления мобильностью. Он также контролирует пересылку сообщений о перемещении; Контекст SRNS и создание прямых туннелей во время передачи обслуживания между LTE.
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 'использует порт TCP / UDP 3386.
GTP является основным протоколом, используемым в базовой сети GPRS. Это протокол, который позволяет конечным пользователям сети GSM или UMTS перемещаться с места на место, продолжая при этом подключаться к Интернету, как если бы из одного места в GGSN. Он делает это, передавая данные подписчика из текущего SGSN подписчика в GGSN, который обрабатывает сеанс подписчика. Базовая сеть GPRS использует три формы GTP.
GGSN и SGSN (вместе известные как GSN) прослушивают сообщения GTP-C на UDP-порту 2123 и для сообщений GTP-U на порту 2152. Эта связь происходит в пределах одной сети или, в случае международного роуминга, может происходить в международном масштабе, возможно, через роуминг-обмен GPRS (GRX).
Функция шлюза зарядки (CGF) прослушивает сообщения GTP ', отправляемые от GSN через порт TCP / UDP 3386. Базовая сеть отправляет информацию о начислении платы в CGF, обычно включая активацию контекста PDP раз и количество данных, которые передал конечный пользователь. Однако эта связь, которая происходит в одной сети, менее стандартизирована и может, в зависимости от поставщика и вариантов конфигурации, использовать проприетарное кодирование или даже полностью проприетарную систему.
GTP-U используется на IuPS между базовой сетью GPRS и RAN, однако протокол GTP-C не используется. В этом случае RANAP используется в качестве протокола управления и устанавливает туннели GTP-U между SGSN и контроллером радиосети (RNC).
Протоколы приложений |
IP (пользователь) |
GTP |
UDP |
IP |
Уровень 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). GTP версии 2 отличается от версии 1 только в GTP-C. Это связано с тем, что 3GPP определяет улучшения GTP-C для EPS в версии 2 для улучшения обработки однонаправленного канала.
GTP-U также используется для передачи пользовательских данных от RNC к SGSN в сетях UMTS. Однако в этом случае сигнализация выполняется с использованием RANAP вместо GTP-C.
Исходная версия GTP (версия 0) имела значительные отличия от текущих версий (версии 1,2):
Неслучайный TEID в версии 0 представлял проблему безопасности, если злоумышленник имел доступ к сети любого роумингового партнера или может найти другой способ удаленной отправки пакетов в магистраль GPRS. Версия 0 перестает использоваться и заменяется версией 1 почти во всех сетях. К счастью, однако, использование разных номеров портов позволяет легко заблокировать версию 0 с помощью простых списков доступа IP.
Первоначально 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.