**GPRS 터널링 프로토콜**은 GSM, UMTS 및 LTE 네트워크 내에서 GPRS (General Packet Radio Service)를 전달하는 데 사용되는 IP 기반 통신 프로토콜 그룹이다. 3GPP 아키텍처에서 GTP 및 Proxy Mobile IPv6 기반 인터페이스는 다양한 인터페이스 포인트에서 사용된다.

GTP는 별도의 프로토콜 인 GTP-C, GTP-U 및 GTP' 로 분해 될 수 있다.

GTP-C는 게이트웨이 GPRS 지원 노드 (GGSN)와 서빙 GPRS 지원 노드 (SGSN) 사이의 시그널링을 위해 GPRS 코어 네트워크 내에서 사용된다. 이를 통해 SGSN은 사용자 대신 세션을 활성화 (PDP 컨텍스트 활성화)하거나, 동일한 세션을 비활성화하거나, 서비스 품질 매개 변수를 조정하거나, 다른 SGSN에서 막 도착한 가입자의 세션을 업데이트 할 수 있다.

GTP-U는 GPRS 코어 네트워크 내에서 그리고 무선 액세스 네트워크와 코어 네트워크간에 사용자 데이터를 전달하는 데 사용된다. 전송되는 사용자 데이터는 IPv4, IPv6 또는 PPP 형식의 패킷일 수 있다.

GTP' (''GTP prime'')는 GTP-C 및 GTP-U와 동일한 메시지 구조를 사용하지만 독립적인 기능이 있다. GSM 또는 UMTS 네트워크의 과금 데이터 장치 (CDF)에서 과금 게이트웨이 장치(CGF)로 과금 데이터를 전달하는 데 사용할 수 있다. 대부분의 경우 이는 GGSN과 같은 많은 개별 네트워크 요소에서 과금 데이터를 네트워크 운영자의 과금 센터에 보다 편리하게 전달하는 중앙 컴퓨터까지를 의미한다.

3GPP 네트워크 내에서 RNC, SGSN, GGSN 및 CGF에 의해 다양한 GTP 변형이 구현된다. GPRS 이동국 (MS)은 GTP를 인식하지 않고 SGSN에 연결된다.

GTP는 UDP 또는 TCP와 함께 사용할 수 있다. 버전 0의 터널링 X.25를 제외하고 UDP는 권장 또는 필수다. GTP 버전 1은 UDP에서만 사용된다.

## 일반적인 기능
모든 GTP 변형에는 공통된 특정 기능이 있다. 메시지 구조는 UDP / TCP 헤더 뒤에 GTP 헤더가있는 것과 동일하다.

### 머리글

#### GTP 버전 1
GTPv1 헤더에는 다음 필드가 포함되어 있다.

다음 확장 헤더는 다음과 같다.

#### GTP 버전 2
또한 evolved-GTP 또는 eGTP라고도한다. GTPv2-C 헤더에는 다음 필드가 포함되어 있다.
GTPv2-U 프로토콜은 없으며 LTE의 GTP-U는 GTPv1-U도 사용한다.

### 연결 메커니즘
공통 메시지 구조 외에도 한 GSN에서 다른 GSN으로의 연결을 확인하기위한 공통 메커니즘도 있다. 이것은 두 가지 메시지를 사용한다.

60 초마다 GSN은 활성화 된 다른 모든 GSN에 에코 요청을 보낼 수 있다. 다른 쪽 끝이 응답하지 않으면 종료 된 것으로 취급 될 수 있으며 활성 연결이 삭제된다.

앞에서 언급 한 두 가지 메시지 외에도 모든 GTP 변형에 공통적 인 다른 메시지는 없다. 대부분의 경우 완전히 별개의 3 개의 프로토콜을 효과적으로 형성한다.

GTP-C 프로토콜은 GTP 표준의 **제어** 섹션이다. 가입자가 PDP 컨텍스트를 요청하면, SGSN은 가입자의 요청의 세부 사항을 제공하는 ''PDP 컨텍스트 생성 요청'' GTP-C 메시지를 GGSN에 전송한다. 그런 다음 GGSN은 ''PDP 컨텍스트 생성'' GTP-C 메시지 ''생성으로 응답'' 한다.이 메시지는 실제로 활성화 된 PDP 컨텍스트의 세부 정보를 제공하거나 실패를 표시하고 해당 실패의 이유를 제공한다. 포트 2123의 UDP 메시지이다.

**eGTP-C** (또는 GTPv2-C) 프로토콜은 여러 Sx 인터페이스에서 터널을 생성, 유지 관리 및 삭제한다. 제어 플레인 경로 관리, 터널 관리 및 이동성 관리에 사용된다. 또한 재배치 메시지 전달을 제어한다. LTE 간 핸드 오버시 SRNS 컨텍스트 및 순방향 터널 생성

## GTP-U-GTP 사용자 데이터 터널링
GTP-U는 사실상 각 엔드 포인트 세트 사이에 많은 터널을 허용하는 비교적 간단한 IP 기반 터널링 프로토콜이다. UMTS에서 사용될 때, 각 가입자는 하나 이상의 터널을 가지게된다. 각 PDP 컨텍스트마다 하나씩, 다른 서비스 품질 요구 사항을 가진 특정 연결을 위한 별도의 터널이 있을 수 있다.

별도의 터널은 GTP-U 메시지에서 TEID (Tunnel Endpoint Identifier)로 식별되며 동적으로 할당 된 난수여야한다. 이 임의의 숫자가 암호화 품질 인 경우 특정 공격에 대한 보안 수단을 제공한다. 그럼에도 불구하고 3GPP 표준의 요구 사항은 사용자 데이터를 포함한 모든 GTP 트래픽이 인터넷에 직접 연결되지 않고 안전한 개인 네트워크 내에서 전송되어야한다는 것이다. 이것은 UDP 포트 2152에서 발생한다.

**GTPv1-U** 프로토콜은 Sx 인터페이스에서 GTP 터널을 통해 사용자 데이터를 교환하는 데 사용된다. UE에 대한 IP 패킷은 GTPv1-U 패킷에 캡슐화되고 S1-U 및 S5 / S8 인터페이스를 통한 UE에 대한 전송을 위해 P-GW와 eNodeB 사이에서 터널링된다.

## GTP'-과금 전송
GTP 프로토콜은 과금 데이터를 과금 게이트웨이 기능으로 전송하는 데 사용된다. GTP'는 TCP / UDP 포트 3386을 사용한다.

## GPRS 코어 네트워크 내
GTP는 GPRS 코어 네트워크에서 사용되는 기본 프로토콜이다. 이 프로토콜은 GSM 또는 UMTS 네트워크의 최종 사용자가 GGSN의 한 위치 에서처럼 인터넷에 계속 연결하는 동안 다른 곳으로 이동할 수 있도록 하는 프로토콜이다. 가입자의 현재 SGSN에서 가입자의 세션을 처리하는 GGSN으로 가입자의 데이터를 전달하여 이를 수행한다. GPRS 코어 네트워크는 세 가지 형태의 GTP를 사용한다.

GGSN 및 SGSN (통칭하여 GSN이라고 함)은 UDP 포트 2123에서 GTP-C 메시지와 포트 2152에서 GTP-U 메시지를 수신한다.이 통신은 단일 네트워크 내에서 발생하거나 국제 로밍의 경우 국제적으로 발생할 수 있다. GPRS 로밍 교환 (GRX) 전체.

CGF ( ''Charging Gateway Function'' )는 TCP / UDP 포트 3386의 GSN에서 전송 된 GTP 메시지를 수신한다. 코어 네트워크는 일반적으로 PDP 컨텍스트 활성화 시간 및 최종 사용자가 전송 한 데이터 양을 포함하여 과금 정보를 CGF에 전송한다. . 그러나 한 네트워크 내에서 발생하는이 통신은 표준화가 덜되어 있으며 공급 업체 및 구성 옵션에 따라 독점 인코딩 또는 독점 시스템을 사용할 수 있다.

## IuPS 인터페이스에서 사용
GPRS 코어 네트워크와 RAN 사이의 IuPS에서는 GTP-U가 사용되지만 GTP-C 프로토콜은 사용되지 않다. 이 경우 RANAP는 제어 프로토콜로 사용되며 SGSN과 무선 네트워크 컨트롤러 (RNC) 사이에 GTP-U 터널을 설정한다.

## 프로토콜 스택
GTP는 UDP 또는 TCP와 함께 사용할 수 있다. GTP 버전 1은 UDP에서만 사용된다.

2018년 기준으로 버전 0, 1 및 2의 세 가지 버전이 정의되어 있다. 버전 0과 버전 1의 구조는 상당히 다르다. 버전 0에서는 시그널링 프로토콜 (PDP 컨텍스트를 활성화하여 터널을 설정하는 프로토콜)이 하나의 포트에서 터널링 프로토콜과 결합된다. 버전 1과 2는 실제로 제어 (GTP-C라고 함)와 사용자 데이터 터널링 (GTP-U라고 함)을 위한 두 개의 프로토콜이다. GTP 버전 2는 GTP-C에서만 버전 1과 다르다. 이것은 베어러 처리를 개선하기 위해 버전 2의 EPS 용 GTP-C에 대한 향상된 기능을 정의한 3GPP 때문이다.

GTP-U는 UMTS 네트워크에서 RNC에서 SGSN으로 사용자 데이터를 전송하는 데에도 사용된다. 그러나이 경우 신호는 GTP-C 대신 RANAP을 사용하여 수행된다.

## 과거 GTP 버전
GTP의 원래 버전 (버전 0)은 현재 버전 과 상당한 차이가있었다.

버전 0의 비 랜덤 TEID는 공격자가 로밍 파트너의 네트워크에 액세스하거나 GPRS 백본에 원격으로 패킷을 보내는 다른 방법을 찾을 수있는 경우 보안 문제를 나타낸다. 거의 모든 네트워크에서 버전 0이 사용되지 않고 버전 1로 대체되었다. 그러나 다른 포트 번호를 사용하면 간단한 IP 액세스 목록을 통해 버전 0을 쉽게 차단할 수 있다.

## GTP 표준화
GTP는 원래 ETSI (GSM 표준 09.60) 내에서 표준화되었다. UMTS 표준이 만들어지면서 GTP는 3GPP 표준 29.060으로 유지된 3GPP로 옮겨졌다. GTP'는 동일한 메시지 형식을 사용하지만 전송되는 과금 데이터에 대한 표준화된 형식과 함께 표준 32.295에 특별 용도가 적용된다.

최신 버전의 TS 29.060은 GTPv1/v0 인터 워킹을 더 이상 사용하지 않으므로 GSN이 상위 버전을 지원하지 않는 경우 폴백은 없다.

GTPv2 (진화 패킷 서비스 용)는 2008년 초에 초안이되어 그해 12 월에 릴리스되었다. GTPv2는 이전 "Version Not Supported" 메커니즘을 통해 GTPv1로 폴백을 제공하지만 GTPv0으로 폴백을 명시 적으로 지원하지 않는다.