【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


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/424483.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML~

HTML HTML是一门语言,所有的网页都是用HTML这门语言编写出来的HTML(HyperText Markup Language):超文本标记语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容 标记语言:由标签构成的语言 …

SpringBoot源码解读与原理分析(三十八)SpringBoot整合WebFlux(一)WebFlux的自动装配

文章目录 前言第13章 SpringBoot整合WebFlux13.1 响应式编程与Reactor13.1.1 命令式与响应式13.1.2 异步非阻塞13.1.3 观察者模式13.1.4 响应性13.1.5 响应式流13.1.6 背压13.1.7 Reactor13.1.7.1 Publisher13.1.7.2 Subscriber13.1.7.3 Subscription13.1.7.4 Processor13.1.7.…

Python爬虫——解析常用三大方式之Xpath

目录 Xpath 安装xpath 安装lxml库 导入lxml库 解析本地文件 etree.parse() 解析服务器响应文件 etree.HTML() xpath基本语法 小案例:获取百度首页的百度一下 大案例:爬取站长素材图片 总结 Xpath 安装xpath 首先要学会安…

大模型(LLM)的量化技术Quantization原理学习

在自然语言处理领域,大型语言模型(LLM)在自然语言处理领域的应用越来越广泛。然而,随着模型规模的增大,计算和存储资源的需求也急剧增加。为了降低计算和存储开销,同时保持模型的性能,LLM大模型…

【排序算法】冒泡排序

目录 概述 冒泡排序原理 冒泡排序的Java实现 总结 概述 冒泡排序是一种简单但低效的排序算法。它重复地走访要排序的元素列,一次比较两个元素,如果它们的顺序错误就交换它们,直到没有元素需要交换。这个过程类似于气泡在水中上浮的过程&am…

开源模型Mistral 7B+Amazon SageMaker部署指南

一、Mistral 7B简述 Mistral AI 是一家总部位于法国的 AI 公司,其使命是将公开可用的模型提升至最先进的性能水平。他们专注于构建快速而安全的大型语言模型(LLM),此类模型可用于从聊天机器人到代码生成等各种任务。不久前其发布…

leetcode hot100 每日温度

在本题中,我们是通过单调栈来解决的,因为我们采用了栈的数据结构,并且,栈内存储的元素是单调的。 本题我们考虑,将气温数组元素的下标存入栈中,首先初始化要把0放入,0是下标的意思。然后我们拿…

谷歌seo推广哪里好优化?

大家都知道常规的SEO技巧,比如关键词优化、高质量的内容、外链建设之类的,这些是重点,但如果想锦上添花,我们可以尝试点不一样的 关注社区和参与论坛,这不仅是为了建立链接,更重要的是与目标群体建立连接&…

ZYNQ--MIG核配置

文章目录 MIG核配置界面多通道AXI读写DDR3MIG核配置界面 Clock Period: DDR3 芯片运行时钟周期,这个参数的范围和 FPGA 的芯片类型以及具体类型的速度等级有关。本实验选择 1250ps,对应 800M,这是本次实验所采用芯片可选的最大频率。注意这个时钟是 MIG IP 核产生,并输出给…

【Git】merge时报错:refusing to merge unrelated histories

文章目录 一、问题二、解决办法1、将feature分支的东西追加到master分支中2、将feature里的东西直接覆盖到master分支中 一、问题 今天将feature分支合并到master时报错:refusing to merge unrelated histories(拒绝合并无关历史) 报错原因&…

Python学习 day07(JSON)

JSON 各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型,而其他语言可能没有对应的字典,为了让不同的语言都能够相互通用的传递数据,JSON就是一种非常良好的中转数据格式,如下: JSON…

[线代]自用大纲

部分内容整理自张宇和网络 序 题型分布: 题型单题分值题目数量总分值选择题5315填空题515解答题12112 *一道大题可能用到六部分所有知识 矩阵 性质 k k k倍和乘积行列式 ∣ k A ∣ k n ∣ A ∣ |kA|k^n|A| ∣kA∣kn∣A∣ ∣ A B ∣ ≠ ∣ A ∣ ∣ B ∣ |AB|≠…

平台工程: 用Backstage构建开发者门户 - 2

本文介绍了如何使用开源Backstage构建自己的开发者门户,并基于此实践平台工程。本系列共两篇文章,这是第二篇。原文: Platform Engineering: Building Your Developer Portal with Backstage — Part 2 在本教程第一部分中我们了解了Backstage这个用于构…

【前端面试题5】利用 border 属性画一个三角形

举例1:利用 border 属性画一个三角形(小技巧) 完整代码如下: div{width: 0;height: 0;border: 50px solid transparent;border-top-color: red;border-bottom: none; }步骤如下: (1)当我们设…

手势识别应用介绍

目录 一、功能介绍 二、安装部署说明 2.1 文件目录说明 2.2 手势识别部分 一、功能介绍 这是一个通过摄像头捕获手势,根据不同的手势来做出不同操作的计算机程序。目前可以识别9种手势,可以根据识别到的手势,进行打开应用、增大音量、减小音量…

JProfiler 14 for Mac/win:Java开发者的性能分析利器

在Java开发的世界中,性能优化始终是一个不可忽视的议题。随着技术的不断进步,开发者对于工具的需求也日益增长。JProfiler 14,作为一款专为Java开发者设计的性能分析工具,无论是对于Mac用户还是Windows用户,都展现出了…

哈希表C++(Acwing)

代码&#xff1a; #include <iostream> #include <cstring>using namespace std;const int N 100003;int h[N], e[N], ne[N], idx;void insert(int x) {int k (x % N N) % N;//哈希,保证取模后为正数e[idx] x;ne[idx] h[k];h[k] idx; }bool find(int x) {in…

MySQL 常用优化方式

MySQL 常用优化方式 sql 书写顺序与执行顺序SQL设计优化使用索引避免索引失效分析慢查询合理使用子查询和临时表列相关使用 日常SQL优化场景limit语句隐式类型转换嵌套子查询混合排序查询重写 sql 书写顺序与执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…

DolphinScheduler——工作流实例的生命周期

目录 一、DolphinScheduler架构原理 1.1 系统架构图 1.2 DolphinScheduler核心概念 1.2 创建工作流 1.2.1 如何触发一个工作流实例 1.2.2 任务调度链路监控 1.2.3 Workflow-DAG解析 DAG解析 Dispatch分发流程 Master和Worker的交互过程 1.3 任务运行状态 该篇文章主…

【真机Bug】异步加载资源未完成访问单例导致资源创建失败

1.错误表现描述 抽卡时&#xff0c;10抽展示界面为A。抽取内容可能是整卡或者碎片&#xff0c;抽到整卡&#xff0c;会有立绘展示和点击详情的按钮。点击详情后出现详情页B。【此时界面A预制体被销毁&#xff0c;卡片数据进入数据缓存池】点击页面B的返回按钮&#xff0c;单例…