Протокол туннелирования 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.
Заголовок
GTP версии 1
Заголовки GTPv1 содержат следующие поля: [1]
+ | 0-2 | 3 | 4 | 5 | 6 | 7 | 8-15 | 16–23 | 24–31 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Версия | Тип протокола | Зарезервированный | Флаг заголовка расширения | Флаг порядкового номера | Флаг номера N-PDU | Тип сообщения | Длина сообщения | ||||||||||||||||||||||||
32 | TEID | |||||||||||||||||||||||||||||||
64 | Последовательность чисел | Номер N-PDU | Тип заголовка следующего расширения |
- Версия
- Это 3-битное поле. Для GTPv1 это значение равно 1.
- Тип протокола (PT)
- 1-битное значение, которое отличает GTP (значение 1) от GTP '(значение 0).
- Зарезервированный
- 1-битное зарезервированное поле (должно быть 0).
- Флаг заголовка расширения (E)
- 1-битное значение, указывающее, есть ли необязательное поле заголовка расширения.
- Флаг порядкового номера (S)
- 1-битное значение, указывающее, есть ли необязательное поле порядкового номера.
- Флаг номера N-PDU (PN)
- 1-битное значение, указывающее, существует ли необязательное поле номера N-PDU.
- Тип сообщения
- 8-битное поле, указывающее тип сообщения GTP. Различные типы сообщений определены в разделе 7.1 3GPP TS 29.060.
- Длина сообщения
- 16-битное поле, которое указывает длину полезной нагрузки в байтах (остальная часть пакета, следующая за обязательным 8-байтовым заголовком GTP). Включает необязательные поля.
- Идентификатор конечной точки туннеля (TEID)
- 32-битное (4-октетное) поле, используемое для мультиплексирования различных соединений в одном туннеле GTP.
- Последовательность чисел
- (необязательно) 16-битное поле. Это поле существует, если установлен какой-либо из битов E, S или PN. Поле должно интерпретироваться только в том случае, если бит S.
- Номер N-PDU
- (необязательно) 8-битное поле. Это поле существует, если установлен какой-либо из битов E, S или PN. Поле должно интерпретироваться, только если бит PN установлен.
- Тип заголовка следующего расширения
- (необязательно) 8-битное поле. Это поле существует, если установлен какой-либо из битов E, S или PN. Поле должно интерпретироваться, только если установлен бит E.
Следующие заголовки расширения выглядят следующим образом:
+ | Биты 0-7 | 8-23 | 24–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Длина удлинителя | СОДЕРЖАНИЕ | ||||||||||||||||||||||||||||||
... | ... | |||||||||||||||||||||||||||||||
... | СОДЕРЖАНИЕ | Заголовок следующего расширения |
- Длина удлинителя
- 8-битное поле. В этом поле указывается длина этого заголовка расширения, включая длину, содержимое и следующее поле заголовка расширения, в 4-октетных единицах, поэтому длина расширения всегда должна быть кратной 4.
- СОДЕРЖАНИЕ
- содержимое заголовка расширения.
- Заголовок следующего расширения
- 8-битное поле. В нем указывается тип следующего расширения или 0, если следующего расширения не существует. Это позволяет объединить в цепочку несколько следующих заголовков расширения.
GTP версии 2
Он также известен как развитый GTP или eGTP. Заголовки GTPv2-C содержат следующие поля: [2]
+ | Бит 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.
- Версия
- Это 3-битное поле. Для GTPv2 это значение равно 2.
- Флаг совмещения
- Если этот бит установлен в 1, то в конце текущего сообщения должно присутствовать другое сообщение GTP-C с собственным заголовком. Существуют ограничения относительно того, какой тип сообщения может быть совмещен, в зависимости от того, что представляет собой сообщение GTP-C верхнего уровня.
- Флаг TEID
- Если этот бит установлен в 1, то поле TEID будет присутствовать между длиной сообщения и порядковым номером. Все сообщения, кроме Echo и Echo reply, требуют наличия TEID.
- Длина сообщения
- Это поле должно указывать длину сообщения в октетах, исключая обязательный заголовок GTP-C (первые 4 октета). TEID (если присутствует) и порядковый номер должны быть включены в счет длины.
Механизмы подключения
Помимо общей структуры сообщения, существует также общий механизм для проверки возможности соединения от одного GSN к другому GSN. Здесь используются два сообщения.
- эхо-запрос
- эхо-ответ
Каждые 60 секунд GSN может отправлять эхо-запрос каждому другому GSN, с которым он имеет активное соединение. Если другой конец не отвечает, это можно рассматривать как неработающее, и активные соединения с ним будут удалены.
Помимо двух ранее упомянутых сообщений, нет других сообщений, общих для всех вариантов GTP [3], что означает, что по большей части они фактически образуют три полностью отдельных протокола.
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.
Внутри базовой сети GPRS
GTP - это основной протокол, используемый в базовой сети GPRS. Это протокол, который позволяет конечным пользователям сети GSM или UMTS перемещаться с места на место, продолжая при этом подключаться к Интернету, как если бы из одного места в GGSN. Он делает это, передавая данные подписчика из текущего SGSN подписчика в GGSN, который обрабатывает сеанс подписчика. Базовая сеть GPRS использует три формы GTP.
- GTP-U для передачи пользовательских данных в отдельных туннелях для каждого контекста PDP
- GTP-C в целях контроля, включая:
- установка и удаление контекстов PDP
- проверка доступности ГСН
- обновления; например, когда абоненты переходят от одного SGSN к другому.
- GTP 'для передачи данных о начислении платы от GSN в функцию начисления платы.
GGSN и SGSN (в совокупности известные как GSN) прослушивают сообщения GTP-C на порту 2123 UDP и сообщения GTP-U на порту 2152. Эта связь происходит внутри одной сети или, в случае международного роуминга, может происходить на международном уровне, вероятно через роуминг GPRS (GRX).
Функция шлюза начисления платы (CGF) прослушивает сообщения GTP, отправленные от GSN через порт TCP / UDP 3386. Базовая сеть отправляет информацию о начислении платы в CGF, обычно включая время активации контекста PDP и количество данных, переданных конечным пользователем. . Однако эта связь, которая происходит в одной сети, менее стандартизирована и может, в зависимости от поставщика и вариантов конфигурации, использовать проприетарное кодирование или даже полностью проприетарную систему.
Использование в интерфейсе IuPS
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
Исходная версия GTP (версия 0) имела существенные отличия от текущих версий (версии 1,2):
- идентификация туннеля не была случайной;
- были предусмотрены варианты для транспортировки X.25 ;
- фиксированный номер порта 3386 использовался для всех функций (а не только для зарядки, как в GTPv1);
- TCP был разрешен в качестве транспортного средства вместо UDP, но его поддержка была необязательной;
- Связанные с подпиской области, такие как качество обслуживания, были более ограничены.
Неслучайный TEID в версии 0 представлял проблему безопасности, если злоумышленник имел доступ к сети любого роумингового партнера или мог найти другой способ удаленной отправки пакетов в магистраль GPRS. Версия 0 перестает использоваться и заменяется версией 1 почти во всех сетях. К счастью, однако, использование разных номеров портов позволяет легко заблокировать версию 0 с помощью простых списков IP-доступа.
Стандартизация 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.
Смотрите также
Заметки
Рекомендации
- Стандарт GSM 09.60, ETSI, 1996–98, этот стандарт охватывает исходную версию 0 GTP.
- 3GPP TS 29.060 V6.9.0 (2005-06) , Проект партнерства третьего поколения, 650 Route des Lucioles - София Антиполис, Вальбон - ФРАНЦИЯ, 2005-06. Это основной стандарт, определяющий все варианты GTP для GTP версии 1.
- 3GPP TS 32.295 V6.1.0 (2005-06) , Проект партнерства третьего поколения, 650 Route des Lucioles - София Антиполис, Вальбон - ФРАНЦИЯ, 2005-06. Этот стандарт распространяется на использование GTP для начисления платы.
- 3GPP TS 29.274 V8.1.0 (2009-03) , Партнерский проект третьего поколения, 650 Route des Lucioles - София Антиполис, Вальбон - ФРАНЦИЯ, 2009-03. GTPv2 для развитой GPRS.