GTP-C tunnels are used between two nodes communicating over a GTP based interface, to separate traffic into different communication flows.
A GTP-C tunnel is identified in each node with a TEID, an IP address and a UDP port number.
Each node will be uniquly identified by F-TEID (Fully Qualified Tunnel identifier) in a global network. Each node will share their TEID for both signalling and Data path.
There are different version of GTP-C. I will cover more on GTPv2.
In GTPv2-C protocol, three type of messages are there.
- Initial Message
- Triggered Message
- piggy backed message
Initial Message: As name says, who is initiating a request or Command is a Initial Message. e.g. Create Session Request, Bearer Resource Command etc. Always the Initial message will get forward to 2123 for GTP-C and 2152 for GTP-U
Triggered Message: This message is a response message of Initial Message. In Triggered message will use the port same as the source of Initial message. e.g Create Bearer request for Bearer resource Command.
Piggybacked Message: This message is a combination of two GTP-C message with one GTP-C header. e.g. Create Session Response will piggyback Create Bearer Request and same way Create Bearer Response will piggyback Modify Bearer Request.
The GTP-C message has the following format:
|1 to m||GTP-C header|
|m+1 to n||Zero or more Information Element(s)|
The GTP-C message is a combination of GTP-C header and zero or more Information Element.
The Format of GTP-C header is:
|3||Message Length (1st Octet)|
|4||Message Length (2nd Octet)|
|5||Tunnel Endpoint Identifier (1st Octet)|
|6||Tunnel Endpoint Identifier (2nd Octet)|
|7||Tunnel Endpoint Identifier (3rd Octet)|
|8||Tunnel Endpoint Identifier (4th Octet)|
|9||Sequence Number (1st Octet)|
|10||Sequence Number (2nd Octet)|
|11||Sequence Number (3rd Octet)|
The 4th bit of first octet is the ‘T’ bit means, If this flag is set then the 4 byte TEID will be available in the GTP-C message.
The 5th bit of first octet is the ‘P’ bit means, if this bit is set then the message will be considered as piggybacked message.
The 6,7 and 8th bit is combination for version of GTP-C message.
This octet is for message type of the GTP-C message.
3rd & 4th Octet
These octets are used for Message length of GTP-C header. The length of the message is from TEID field to the end of the message i.e excluding the 4 byte from the GTP-C message.
5th, 6th, 7th & 8th Octet
These octets are used for Tunnel identifier value. these octets will be absent if ‘T’ bit is set to 0.
9th, 10th and 11th Octet
These octets are used for sequence no of the GTP-C message.
The GTP-C messages are divided into two parts.
1. Path Management
2. Tunnel Management
Cited from: http://lte-gtp.blogspot.com/2011/07/gtp-c-overview.html