對於GTPv1協議頭部的解析


參考ETSI EN 301 347

GTP是GPRS Tunnelling Protocol 的簡稱。GTP分為GTPv0(已經淘汰),GTPv1 和GTPv2。下面,介紹的是GTPv1。

GTPv1里面有GTP和GTP',其中GTP上面可以承載信令數據(控制信息)和傳輸數據,GTP'的主要是用作計費,下面講的將是GTP。

GTP的頭部

  GTP的頭部占用固定的20字節,承載信令的數據包和承載傳輸數據的數據包共同使用這一個頭部。下圖是GTP頭部的圖解,后面將會一一說明其中各個標志的含義。

 

1:PT(Protocol Type)。協議類型,表示的是這個消息是不是GTP消息。當PT為1的時候表示的是GTP消息,當PT為0的時候表示的是GTP'消息。

2:Version。如果PT為1(表示的是GTP消息),那么這些bit將會全部是0,用來表示GTP的第一個版本,GTPv1。當PT為0的時候,另做處理。

3:Spare1。這些bit沒有被使用,發送的時候全部置1,接收的時候被忽略。

4:SNN。表示SNDCP N-PDU 位是否被包含進來。

5:Message Type。表示GTP的消息類型。

6:Length。表示除了GTP頭部以外,數據部分的長度,以字節為單位。

7:Sequence Number。是信令數據的傳輸標志,是傳輸數據增加的序列號。

8:SNDCP N-PDU。SNDCP N-PDU用於SGSN間路由區更新過程,為了協調MS和SGSN之間的數據傳輸。

9:TID(Tunnel identifier)。指出了MM和PDP的上下文。

10:Flow Label。唯一的指定一個GTP流。

作為信令的頭部使用

- SNN位被置為0

-Message Type應當是唯一的值,用來表示不同的信令消息。

-SNDCP N-PDU 在信令信息當中沒有被使用到,發送方置為255即0xff,接收方忽略。

-TID 和 Flow Label 根據不同的信令信息有不同的使用方法,不詳細介紹。

當用作信令信息的時候,數據包的格式如下圖所示:為頭部+信息元

下面分析一個具體的數據包:

一個控制信令的數據包的整體數據如下:

展開GTP協議如下:

作為傳輸消息頭部的使用

T-PDU 的含義是一個原生的數據包,比如IP數據包,在GTP隧道傳輸的時候是載荷信息。

-SNN flag。當該位為1的時候,那么SNDCP N-PDU將會被包含進來。

-Message Type。 應當被置為255即0xff

-Sequence Number 。這個值用來被決定是否接受一個T-PDU。

-SNDCP N-PDU。當SNN位為0的時候,它的值應該是255即0xff,當SNN為1時,用在舊的SGSN通知新的SGSN給T-PDU分配N-PDU碼。

-Flow Label。標識T-PDU屬於哪個流。

-TID 包含T-PDU屬於哪個隧道的隧道標識符。

一個承載了HTTP協議的GTP數據包:

GTP數據包頭里面的數據:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM