GTP(GPRS Tunnelling Protocol)協議

GTP(GPRS Tunnelling Protocol協議GPRS 骨幹網中在GSNs 之間(如 SGSN 和 GGSN)提供協議信道,所有的PTP 分組數據協議的PDUs 應由GTP 協議進行封裝。
GTP概述
 
  GTP 協議應用在SGSN 和GGSN 之間,爲各個移動臺(MS) 建立GTP 通道,GTP 通道是 GPRS服務節點(GSN) 之間的安全通道,兩個主機可通過該通道交換數據。

  SGSN 從 MS 接收數據包,並在 GTP 包頭中對其進行封裝,然後才通過GTP 通道將其轉發到 GGSN。GGSN 接收這些數據包時,先將它們解封,然後轉發到外部主機

  GTP 數據包包頭含有Sequence Number字段,Sequence Number向GGSN(接收 GTP 數據包的GGSN) 指示數據包的順序。

  在PDP 環境激活階段,發送端GGSN 向接收端GGSN 發送的第一個G-PDU 的序列號值是零 (0) ,發送端 GGSN 爲其隨後發送的每個 G-PDU 增加序列號值,G-PDU序列號值達到 65535 時,重置爲零。

  一般情況下,接收端 GGSN 會校驗所接收的數據包中的序列號,接受端GGSN拿自身的計數器序列號和所接收的數據包中的序列號進行比較,如果這兩個序號匹配上了,則 GGSN 轉發該數據包,如果它們不匹配,則GGSN 丟棄該數據包。

  GTP 標準,可以參考3GPP的技術規範:

  3GPP TS 09.60 v6.9.0 (2000-09)

  3GPP TS 29.060 v3.8.0 (2001-03)

  3GPP TS 32.015 v3.9.0 (2002-03)
協議內容
 
  GTP協議分爲GT-C,GTP-U和GTP’協議。其中,GTP-C是信令控制協議,GTP-U是封裝用戶數據協議,GTP’是計費相關的協議。

  GTP協議頭部格式如下:


  說明如下:version:版本號,目前基本都是1,即gtp v1版本;

  protocol type:1爲GTP’,0爲GTP-C或GTP-U。

  next extension header:seq:n-pdu number:

  根據文檔,這三個標示位分別指示gtp 頭部是否含有next extension header項,sequence number項和n-pdu number項。但根據我對現網的數據分析,事實好像並非如此。

  此三個bit位,只要有一個置位,這三項都同時存在。

  Teid據說是很重要的字段,目前對該字段的認識不足,需進一步研讀3gpp協議。受高人指點,具體是3GPP TS 23.060和3GPP TS 29.060。

  Total length:gtp封裝數據的長度,不包括gtp頭部的基本長度,但包括gtp選項的長度,即:上面的next extension header,sequence number項和n-pdu number項的長度是包括在這個Total length之中的。 如果next extension header不爲0,則下面還有extension header,直到extension header的nextextension header項爲0。Next extension header格式如下:


  Extension header的長度必須爲4的倍數。

  Gtp-C協議的根據不同的類型(type),其編碼格式都不相同。常見的比較重要的三個type爲:imsi,msisdn和apn。

  Imsi和msisdn的編碼格式有些類似。

  Apn的全稱是Access Point Name,通常分爲兩部分,一部分爲網絡標示(ni),一部分爲運營商標示(oi)。有些apn只有一部分。

  APN的格式如下:




  其中,type佔一個字節,爲0x83;

  apn length佔用兩個字節,爲網絡字序,包括該字段後的apn項的長度;

  ni長度,一個字節,ni的長度;

  oi長度,一個字節,標示OI長度。
工作原理
 
  當我們使用手機上wap網站,或者上internet時,在sgsn和ggsn之間發生什麼樣的信令?我們的數據是通過怎麼的手段傳輸到互聯網上的呢?

  Wap網和internet不同,wap網是一個半封閉半開放的網絡,而internet是一個開放的網絡。

  從撥號方式上,對於中國移動來說,wap用戶的apn爲cmwap,internet用戶的apn爲cmnet。

  從網絡連接方式上,手機上wap網站時,其實是通過運營商的wap網關代理請求訪問wap網站,而手機上internet時,訪問的方式是通過運營商的防火強NAT轉換請求網站。

  從七層協議上來說,wap網站早期使用專用的wml協議,wap 1.2協議之前,目前的wap 2.0支持xhtml協議,可以說,wap和internet之間的差距在減小,甚至有逐漸融合的趨勢。Xhtml與html差距不大,只是語法更加嚴格而已。

  下面解釋一下用戶撥號時,sgsn與ggsn之間的信令過程:

  首先,sgsn發送一個create pdp content request向ggsn;

  然後,ggsn返回create pdp content response給sgsn,說明該用戶是否成功接入gprs網絡,如果成功接入,分配地址給該用戶,否則,說明原因;

  最後,用戶獲得ip地址,接入網絡。

  在create pdp content request報文中,有以下三個重要的內容項:

  imsi:用戶全球唯一標示msisdn:

  用戶全球電話號碼標示apn:標示用戶接入的網絡

  在create pdp content response報文,如果成功,則包含分配給用戶的ip地址
相關術語
 
  APN

  Access Point Name,接入點名稱,在GGSN中用於標識一個指定的外部網絡和一種服務的ISP,在SGSN中可根據APN通過DNS域名解析得到與此APN對應的GGSN地址。APN可以分爲APN以及wild card APN, wild card APN是指運營商允許用戶使用給定的PDP類型的上下文接入任何網絡,用“*”表示;常規APN包括兩部分:網絡標識(NI, Network Identifier)和運營商標識(OI, Operator Identifier)。NI最長63字節,OI最長37字節,不區分大小寫。

  TEID

  Tunnel Endpoint Identifier,GTPv1的概念,用於表示一條隧道(PDP),分爲數據面TEID(TEID(U))和控制面TEID(TEID(C)),由SGSN和GGSN自己分配。

  NSAPI

  Network Service Access Point Identifier,和TEID(C)或IMSI一起用於標示同一用戶激活的不同上下文,範圍[0,15],其中0~4系統保留,因此對於一個用戶(UE)而言,最多可以建立11條隧道。

  TIDGTPv0的概念,由IMSI+NSAPI構成,和TEID作用相同。

  TFT

  TFT(Traffic Flow Template)是GSN在接收或轉發用戶數據時,用於區分二次激活的PDP上下文,TFT唯一的標識了同一TEID或同一PDP Address下的不同的PDP上下文。

  當同一個TEID或PDP Address下只有一個活躍的PDP上下文時,不需要爲該PDP上下文指定一個TFT,因爲所有下行的數據都直接通過該上下文對應的隧道傳輸。

  當同一個TEID或PDP Address下有多個活躍的PDP上下文時,那麼就需要爲每一個PDP上下文指定一個TFT,GGSN接收到發送給MS的G-PDU時,將使用該TFT來對應G-PDU傳輸時應該使用的PDP上下文。

  如果在二次激活時,所有該PDP地址下的PDP上下文都已經被分配了一個TFT,那麼這一次的二次激活就可以無需再指定一個TFT。即,對應同一個TEID或PDP地址下的不同的PDP上下文,要麼全都有各自的TFT,要麼,只能有一個PDP上下文沒有TFT。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章