【5G 接口協議】GTP-U協議介紹

博主未授權任何人或組織機構轉載博主任何原創文章,感謝各位對原創的支持!
博主鏈接

本人就職于國際知名終端廠商,負責modem芯片研發。
在5G早期負責終端數據業務層、核心網相關的開發工作,目前牽頭6G算力網絡技術標準研究。


博客內容主要圍繞:
???????5G/6G協議講解
???????算力網絡講解(云計算,邊緣計算,端計算)
???????高級C語言講解
???????Rust語言講解



文章目錄

  • GTP-U協議介紹
    • 一、GTP-U協議棧介紹
      • 1.1 數據傳輸協議棧
      • 1.2 信令傳輸協議棧
    • 二、GTP-U Header介紹
      • 2.1 固定部分
      • 2.2 擴展字段
    • 三、擴展頭介紹
      • 3.1 NR相關的擴展頭介紹
    • 四、控制相關的信令
      • 4.1 路徑管理消息
      • 4.2 隧道管理消息
  • 參考

GTP-U協議介紹

一、GTP-U協議棧介紹

1.1 數據傳輸協議棧

在這里插入圖片描述

T-PDU(Transport PDU):用戶數據包,如IP數據報,是指終端與外部包數據網絡中的網絡實體之間發送的用戶數據包。
G-PUD(GTP encapsulated user Plane Data Unit):用戶數據包(T-PDU)加上GTP-U報頭,在GTP網絡節點之間發送的數據包。

用戶數據包(T-PDU)封裝上GTP-U包頭之后,通過UDP/IP發送出去。

1.2 信令傳輸協議棧

在這里插入圖片描述

IE:Information Element

使用傳輸GTP-U路徑和隧道管理相關的消息,不同的消息類型具有不同的數據結構,將這些不同的數據結構統稱為IE。

NOTE:在實現的時候,需要注意GTP-U具有熟知目標端口號2152。

二、GTP-U Header介紹

在這里插入圖片描述
GTP-U的頭由兩部分組成,第一部分是固定部分,長度為8 bytes;第二部分是擴展部分,根據第一部分相關flag的值,確實是否存在或者有效。下面先介紹固定部分的參數含義。

2.1 固定部分

固定部分的長度為8 bytes,如下圖所示部分:
在這里插入圖片描述
其中,

  • Version field:指示GTP-U協議版本,目前固定是1;

  • Protocol Type(PT):用于區分GTP和GTP’ 協議,對于GTP協議來說設置為1,GTP’ 協議設置為0;

  • Extension Header flag(E):指示Next Extension Header Type字段是否有效;

  • Sequence number flag(S):指示Sequence Number字段是否有效;

  • N-PDU Number flag(PN):指示N-PDU Number字段是否有效;

  • Message Type:指示GTP-U消息的類型,支持的消息類型如下;
    在這里插入圖片描述

  • Length:指示GTP-U消息的長度,單位是byte,長度不包括固定字段(即前8 bytes)。如果存在擴展字段,則應該計算到Length中;

  • Tunnel Endpoint Identifier(TEID):唯一標識一個GTP隧道的端點。此值由接收端分配,通過控制平面消息傳輸給發送端。發送端在發送消息時攜帶接收端的TEID,標識此消息是發送給那個接收端。通常情況下不應該為0,但是為了后向兼容,如果接收端通知TEID為0,發送端也要視為正常情況處理。對于Echo Request/Response、Supported Extension Headers notification、Error Indication消息,需要將TEID設置為0;

2.2 擴展字段

GTP-U有3個擴展字段,
在這里插入圖片描述
其含義如下:

  • Sequence Number:因為UDP不支持按序傳輸,為了支持按序傳輸,需要通過該字段為每個G-PDU消息增加序號;
  • N-PDU Number:該字段用于SGSN間路由區域更新過程和一些系統間切換過程(例如,2G和3G無線接入網絡之間)。該字段用于協調MS和SGSN之間的公認通信模式的數據傳輸。該字段的確切含義取決于具體場景(例如,對于GSM/GPRS到GSM/GPRS,SNDCP N-PDU號在這個字段中);
  • Next Extension Header Type:指示此字段后面的擴展頭類型,支持的擴展類型值如下所示;
    在這里插入圖片描述

NOTE:如果E、S、PN中的任意一個字段有效(置為1),則上述擴展字段都會出現,但只有有效字段對應的擴展字段的值才有意義。例如E=1,S=0,PN=0,則Sequence Number、N-PDU Number和Next Extension Header Type都存在,但是只有Next Extension Header Type的值有意義。

三、擴展頭介紹

擴展頭的消息結構如下:
在這里插入圖片描述

  • Extension Header Length:指示特定擴展頭的長度,其長度是4的倍數,即以4字節為單位;
  • Extension Header Content:由具體的擴展頭類型確定;
  • Next Extension Header Type:指示此字段后面的擴展頭類型,如果沒有此值應該為0;

3.1 NR相關的擴展頭介紹

擴展頭含義
UDP Port在Error Indication消息中指示發送此錯誤消息的端口號
PDCP PDU Number在NR中用于基于Xn和N3切換中的數據轉發
Long PDCP PDU Number在NR中用于基于Xn和N3切換中的數據轉發,對應于PDCP SN長度為18bit
NR RAN Container這個擴展頭可以在G-PDU中通過NG-RAN中的X2-U、Xn-U和F1-U用戶平面接口傳輸,對于EN-DC來說,可以在E-UTRAN中傳輸。帶有這個擴展頭的G-PDU消息可以在沒有T-PDU的情況下發送
PDU Session Container這個擴展頭可以在N3和N9用戶平面接口,即NG-RAN和UPF之間或兩個UPF之間傳輸

四、控制相關的信令

GTP-U隧道用于在給定的一對GTP-U隧道端點之間攜帶封裝的T-PDU和信令消息。GTP頭中的TEID指示一個特定的T-PDU屬于哪個隧道。通過這種方式,可以在一對隧道端點之間通過GTP-U復用和解復用數據包。TEID的值會在GTP-C創建PDP上下文和RAB分配過程中進行協商。

GTP-U信令消息分為路徑管理消息和隧道管理消息。

4.1 路徑管理消息

  • Echo Request/Echo Response:GTP-U端可能會在路徑上向另一端發送一個Echo請求,以確定另一端是否還活著(參見“路徑失敗”一節)。可以為使用中的每個路徑發送Echo請求消息。如果至少有一個PDP上下文、EPS Bearer上下文、PDU Session上下文、MBMS UE上下文或MBMS Bearer上下文使用了到另一端GTP-U的路徑,則認為該路徑已被使用。發送Echo請求消息的時間和頻率取決于具體的實現,但在每個路徑上發送Echo請求的頻率不應超過60秒;
  • Supported Extension Headers Notification:此消息表示指定IP地址上的GTP實體可以支持的擴展頭列表。只有在GTP實體需要強制支持某個擴展頭,但GTP實體尚未升級以支持該擴展頭的情況下,才會發送此消息。發送此消息的GTP端點被標記為不支持某些擴展頭。對端GTP實體可能會重試使用該節點的所有擴展標頭,以嘗試驗證它已經升級;

4.2 隧道管理消息

  • Error Indication:當接收端發生錯誤的時候,向發送端發送錯誤原因,并指示哪個接收端發送的錯誤;
  • End Marker:表示給定隧道的有效載荷流結束,即在該隧道的End Marker消息之后到達的G-PDU可能會被靜默丟棄。如果接收到帶有TEID且沒有上下文的End Marker消息,則接收方將忽略此消息;
  • Tunnel Status:隧道狀態信息是可選的。一個GTP-U實體如果支持該消息,可以向對端GTP-U實體發送一條或多條隧道狀態消息,提供發送方GTP-U實體中與對應GTP-U隧道相關的狀態信息;

參考

  • TS 29.281


在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714663.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714663.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714663.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql學習

查看glibc版本 ldd --version --mysql啟動失敗,嘗試啟動 1 查看錯誤日志,端口被占用,參數名寫錯,有不支持的參數 2 通過mysqld啟動 mysqld --default-filemy.cnf & 3 mysqld --no-defaults --basedir/user/local/mysql --datadir/data/mysql/3306/data/ --usermysql 4 str…

深入理解 Nginx 的負載均衡與反向代理

深入理解 Nginx 的負載均衡與反向代理 Nginx 是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。由于其出色的性能和靈活性,Nginx 已成為現代 web 架構中的重要組成部分,尤其是在處理高并發連接和大規模流量時。在…

找到數組的中間位置-1991-[簡單]

力扣 關鍵點 從題目中總結出公式 sum * 2 nums[i] total從左往右開始嘗試,尋找 i 位置滿足上面的公式,為什么從左開始,因為題目要求找到最左邊的一個用前綴和的概念來解,從左往右嘗試i位置的左邊所有數之和,右邊所有…

基礎小白快速入門Python------>模塊的作用和意義

模塊, 這個詞聽起來是如此的高大威猛,以至于萌新小白見了瑟瑟發抖,本草履蟲見了都直搖頭,好像聽上去很難的樣子,但是但是,年輕人,請聽本少年細細講述,他只是看起來很難,實…

GO-接口

1. 接口 在Go語言中接口(interface)是一種類型,一種抽象的類型。 interface是一組method的集合,接口做的事情就像是定義一個協議(規則),只要一臺機器有洗衣服和甩干的功能,我就稱它…

【go語言開發】swagger安裝和使用

本文主要介紹go-swagger的安裝和使用,首先介紹如何安裝swagger,測試是否成功;然后列出常用的注釋和給出使用例子;最后生成接口文檔,并在瀏覽器上測試 文章目錄 安裝注釋說明常用注釋參考例子 文檔生成格式化文檔生成do…

C++從零開始的打怪升級之路(day39)

這是關于一個普通雙非本科大一學生的C的學習記錄貼 在此前,我學了一點點C語言還有簡單的數據結構,如果有小伙伴想和我一起學習的,可以私信我交流分享學習資料 那么開啟正題 今天分享的是關于模板的知識點 1.非類型模板參數 模板參數分為…

大模型生成,Open API調用

大模型是怎么生成結果的 通俗原理 其實,它只是根據上文,猜下一個詞(的概率)…… OpenAI 的接口名就叫【completion】,也證明了其只會【生成】的本質。 下面用程序演示【生成下一個字】。你可以自己修改 prompt 試試…

高并發下的 AtomicReference 性能陷阱

介紹 Java 提供了 AtomicInteger/AtomicLong 在并發編程里經常用到,它們封裝了對 int 和 long 的原子操作。 Java 還提供了 AtomicReference,用于對象引用做原子性的管理,比如 get、set、CAS。 一般情況下 AtomicInteger、AtomicLong 的性能…

mac新環境

1、maven 設置阿里云鏡像 打開Maven的settings.xml文件。找到<mirrors>標簽&#xff0c;如果沒有&#xff0c;可以手動添加。在<mirrors>標簽內部添加以下內容&#xff1a; <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorO…

【C++】類的轉換函數

使用場景 C中當你創建了一個類&#xff0c;你想把這個類對象轉換成基本類型的函數。類對象->基本類型對象 原理 如下實例&#xff0c;設計一個分數類&#xff0c;實現分數轉換成double 浮點數的轉換函數。并在mian函數隱式調用。 #include<iostream> class Fractio…

6. 使用 Spring Boot進行開發(Developing with Spring Boot)

6. 使用 Spring Boot進行開發&#xff08;Developing with Spring Boot&#xff09; 本節詳細介紹了如何使用Spring Boot。它涵蓋考慮構建系統、自動配置以及如何運行應用程序等主題。我們還介紹一些 Spring Boot 最新做法。雖然 Spring Boot 沒有什么特別之處&#xff08;它只…

Java 接口和抽象類有何區別?

Java接口&#xff08;Interface&#xff09;和抽象類&#xff08;Abstract Class&#xff09;都是面向對象編程中用于實現多態和代碼復用的重要概念&#xff0c;但它們之間有幾個關鍵的區別&#xff1a; 1. **實例化**&#xff1a; - **接口**&#xff1a;不能被實例化。它…

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之JSON Schema

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之JSON Schema 一、生成Schema二、加密字段三、JSON Schema類型 從3.6版本開始&#xff0c;MongoDB支持根據提供的 JSON Schema驗證documents的集合。在創建集合時&#xff0c;可以定義schema本身以及驗證操作和級別&…

Python爬蟲Cookies 池的搭建

Cookies 池的搭建 很多時候&#xff0c;在爬取沒有登錄的情況下&#xff0c;我們也可以訪問一部分頁面或請求一些接口&#xff0c;因為畢竟網站本身需要做 SEO&#xff0c;不會對所有頁面都設置登錄限制。 但是&#xff0c;不登錄直接爬取會有一些弊端&#xff0c;弊端主要有…

南京師范大學計電院數據結構課設——排序算法

1 排序算法 1.1 題目要求 編程實現希爾、快速、堆排序、歸并排序算法。要求首先隨機產生10000個數據存入磁盤文件&#xff0c;然后讀入數據文件&#xff0c;分別采用不同的排序方法進行排序并將結果存入文件中。 1.2 算法思想描述 1.2.1 隨機數生成 當需要生成一系列隨機數…

windows 11 前后端項目部署

目錄 1.準備環境&#xff1a; 2.安裝jdk 測試&#xff1a;winr 輸入cmd 3.安裝tomcat 4.安裝mysql 遠程導入數據&#xff1a; 外部后臺訪問&#xff1a;192.168.232.1:8080/crm/sys/loginAction.action?usernamezs&password123 5.安裝nginx 前后端部署&#xff1…

qsort函數的模擬實現(冒泡排序模擬)

冒泡排序&#xff1a; 從第一個元素開始&#xff0c;依次比較相鄰的兩個元素&#xff0c;如果順序不對就交換它們。 經過一輪遍歷后&#xff0c;最大&#xff08;或最小&#xff09;的元素會排在最后。 重復進行上述步驟&#xff0c;直到沒有任何元素需要交換&#xff0c;即…

Linux了解

簡介 Linux是一種自由和開放源代碼的類UNIX操作系統&#xff0c;由芬蘭的Linus Torvalds于1991年首次發布。Linux最初是作為支持英特爾x86架構的個人電腦的一個自由操作系統&#xff0c;現在已經被移植到更多的計算機硬件平臺&#xff0c;如手機、平板電腦、路由器、視頻游戲控…

爬蟲入門到精通_實戰篇8(分析Ajax請求并抓取今日頭條美食美圖)_界面上抓取Ajax方式

1 目標 目標&#xff1a; 抓取今日頭條美食美圖&#xff0c;如下&#xff1a; 一些網頁直接請求得到的HTML代碼并沒有在網頁中看到的內容&#xff0c;因為一些信息是通過Ajax加載&#xff0c;并通過js渲染生成的&#xff0c;這時就需要通過分析網頁的請求來獲取想要爬取的內容…