【5G 接口协议】GTP-U协议介绍

news2024/9/29 5:38:11

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责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.coloradmin.cn/o/1485678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【虚拟机安装centos7后找不到网卡问题】

最近开始学习linux,看着传智播客的教学视频学习,里面老师用的是centos6.5,我这边装的是centos7最新版的 结果到了网络配置的这一节,卡了我好久。 我在centos一直找不到我的网卡eth0,只有一个回环网口,在/…

集成2.5G/5G/10G高速率网络变压器的RJ45网口连接器产品特点介绍

Hqst华轩盛(石门盈盛)电子导读:集成2.5G/5G/10G高速率网络变压器的RJ45网口连接器产品特点介绍: 第一、 高速率:支持高达2.5Gbps、5Gbps和10Gbps的传输速率,能够满足高带宽的网络应用需求。 第二、 集成2.5G/5G/10G高速率网…

编写dockerfile挂载卷、数据容器卷

编写dockerfile挂载卷 编写dockerfile文件 [rootwq docker-test-volume]# vim dockerfile1 [rootwq docker-test-volume]# cat dockerfile1 FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------" CMD /bin/bash [rootwq dock…

Spring框架相关问题

Spring框架相关问题 一、Spring容器中的Bean是线程安全的吗?二、如何保证Spring容器中的Bean是线程安全的呢?三、什么情况下会触发Spring事务回滚?四、如果事务方法抛出IOException,是否会触发Spring事务回滚?五、什么…

在线简历制作网站免费推荐收藏备用

今天给大家推荐一个很实用的网站,对于要毕业的同学或者说跳槽的朋友比较有作用,对,就是一个免费方便的在线简历制作网站。其实免费的简历制作网站很多,但好用的良心的其实并不多,今天要推荐的这个虽然模板不算多&#…

1.2 在卷积神经网络中,如何计算各层感受野的大小

1.2 在卷积神经网络中,如何计算各层感受野的大小 分析与解答: 在卷积神经网络中,由于卷积的局部连接性,输出特征图上的每个节点的取值,是由卷积核在输入特征图对应位置的局部区域内进行卷积而得到的,因此这…

sql注入之sqli-labs/less-3 单引号加括号闭合

输入单引号试探: id1 报错信息里面出现 ) 说明闭合符合里面还有个 ) 再次试探:id1 ) order by 3 -- 查看回显位置: id-1%20%27)%20union%20select%201,2,3%20-- 查看数据库: id-1%20%27)%20union%20select%201,2,database()%2…

PDF 解析问题调研

说点真实的感受 :网上看啥组件都好,实际测,啥组件都不行。效果好的不开源收费,开源的效果不好。测试下来,发现把组件融合起来,还是能不花钱解决问题的,都是麻烦折腾一些。 这里分享了目前网上能…

幻兽帕鲁专用服务器搭建之Linux部署配置教程

大家好我是飞飞,上一期我分享了Windows系统的幻兽帕鲁服务器搭建教程。因为幻兽帕鲁这游戏对服务器的配置有一定的要求,很多小伙伴就寻思用Linux系统搭建占用会不会小一点?有计算机基础的小伙伴都知道Linux系统和Windows系统相比,…

Git实战(2)

git work flow ------------------------------------------------------- ---------------------------------------------------------------- 场景问题及处理 问题1:最近提交了 a,b,c,d记录,想把b记录删掉其他提交记录保留: git reset …

Hololens 2应用开发系列(2)——MRTK基础知识及配置文件配置(上)

Hololens 2应用开发系列(2)——MRTK基础知识及配置文件配置 一、前言二、MRTK基础知识2.1 MRTK概述2.2 MRTK运行逻辑2.3 MRTK配置文件介绍2.4 MRTK服务 三、配置文件使用3.1 总配置文件3.2 相机配置3.3 其他配置 参考文献 一、前言 在前面的文章中&…

机器学习中类别不平衡问题的解决方案

类别不平衡问题 解决方案简单方法收集数据调整权重阈值移动 数据层面欠采样过采样采样方法的优劣 算法层面代价敏感集成学习:EasyEnsemble 总结 类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况 解决方案…

解决Excel客户端中的Copilot灰色不可用

很多小伙伴已经用上了office套件中的copilot功能 Copilot for Microsoft 365账号介绍与相关问题的解答 Copilot for Microsoft 365账号登录指南 Copilot for Microsoft 365功能使用指南 问题发现 大部分人使用的都是Word和PowerPoint功能,但是也有部分小伙伴使…

Vue项目的快速搭建

Vue项目的快速搭建 一、下载并安装node.js二、安装Vue脚手架三、创建vue项目四、项目启动五、VS Code下载安装 一、下载并安装node.js 首先确保已经安装了Node.js。如果没有安装,可以去官网(https://nodejs.org/)下载并安装最新版本的Node.j…

第16章-DNS

目录 1. 域名 1.1 产生背景 1.2 概述 1.3 域名的树形层次化结构 2. DNS 2.1 概述 2.2 工作机制 3. DNS查询模式 3.1 递归查询: 3.2 迭代查询: 4. 相关知识点 4.1 集中式DNS 4.2 国内通用DNS 4.3 配置DNS代理 1. 域名 1.1 产生背景 ① IP…

rhcsa(rh134)

shell 查看用户shell a、如下查看/etc/shells文件列出了系统上所有可用的 shell(具体的可用的 shell 列表可能会因不同的红帽版本和配置而有所不同) (如下图/etc/shells文件包含/bin/tmux并不意味着tmux是一个shell。实际上,/etc/…

通过多进程并发方式(fork)实现服务器(注意要回收子进程)

以下内容为视频学习记录。 1、父进程accept后返回的文件描述符为cfd以及用于创建连接的lfd; 调用fork()创建子进程后,子进程继承cfd,lfd,通过该cfd与连接过来的客户端通信,lfd对子进程来说没用,可以直接close(lfd); 对于父进程来说&#x…

web基础03-JavaScript

目录 一、JavaScript基础 1.变量 2.输出 3.变量提升 4.区块 5.JavaScript数据类型 6.查看数值类型 7.undefined和null 8.布尔值 9.和的区别 10.算数/三元/比较/逻辑/赋值运算符 11.特殊字符 12.字符串 (1)获取字符串长度 (2&am…

C# Open Vocabulary Object Detection 部署开放域目标检测

目录 介绍 效果 模型信息 owlvit-image.onnx owlvit-post.onnx owlvit-text.onnx 项目 代码 Form1.cs OWLVIT.cs 下载 C# Open Vocabulary Object Detection 部署开放域目标检测 介绍 训练源码地址:https://github.com/google-research/scenic/tree/…

flink重温笔记(九):Flink 高级 API 开发——flink 四大基石之WaterMark(Time为核心)

Flink学习笔记 前言:今天是学习 flink 的第 9 天啦!学习了 flink 四大基石之 Time的应用—> Watermark(水印,也称水位线),主要是解决数据由于网络延迟问题,出现数据乱序或者迟到数据现象&…