【5G核心网】 GTP协议

article/2025/11/7 16:59:39

    GTP 可以提供移动性的功能。 使用 GTP,网络的终端能够在网络中移动位置,各个端点集之间可以建立多个隧道,从而根据业务不同可以提供不同的 Qos,可以隐藏 IP,安全性更高。

1. 定义概念

    GTP-U Message:  GTP-U(用户平面)消息是用户平面消息或信令消息。用户平面消息用于在 GTP-U 体之间承载用户数据分组。在网络节点之间的信令消息用于路径管理(path management)和隧道管理(tunnel management)。

   GTP-U peer:  实现任何基于 GTP 用户平面协议的至少一侧的节点。 RNC,SGSN,GGSN,eNodeB,SGW,ePDG,gNB,N3IWF,UPF,PGW或TWAN或MME。

   GTP-U Tunnel:  每个节点以 TEID, IP 地址和 UDP 端口号标识一个 GTP-U 隧道。必须在 GTP-U 实体之间开启转发数据包。  

   GTP-U Tunnel Endpoint:  GTP-U 隧道端点标识所接收的 GTP-U 分组所针对的用户平面上下文(例如,EPS承载,PDU会话或RAB)。给定的 GTP-U 隧道端点可以从多个源 GTP-U peer 接收 GTP-U分 组。(例如一个 UPF 上的 GTP-U 端点可从多个UPF 接收 GTP-U 分组)

   GTP-PDU:GTP 协议数据单元,可以是 G-PDU 或信令消息

   G-PDU:在GTP 网络节点间发送的用户数据包(T-PDU)加 GTP-U 报头

   Signalling Message: 在 GTP 网络节点间发送的 GTP-U 消息,用于路径管理消息或隧道管理消息

   T-PDU:T-PDU 是在 GTP-U 隧道中隧道传输的有效载荷

   1.1 GTP-U Tunnel

    GTP-U Tunnel 用来在给定的 GTP-U 端点承载包裹的 T-PDU 和信令消息。TEID 在 GTP 包头指示了 T-PDU 属于哪一个隧道。分组被 GTP-U 复用和解复用在隧道中

 

2. GTP-PDU Stacks

                                                               Figure: 4.4-1 G-PDU Protocol Stack

 

                                             Figure: 4.4-2 Signalling Message Protocol Stack

5GC对GTPv1-U协议的Extension Header进行了扩展,增加了两个Extension Header

   2.1 UDP/IP

    UDP/IP 是在 GTPv1 版本中定义为传输 GTP 消息的唯一路径协议

GTP-U 消息  UDP 目的端口号是  2152,它是  GTP-U 的注册端口

 

3. GTP-U header

    必要的字段

   -  Version, 用来决定 GTP 协议的版本,该版本应该设置为 1

   -  Protocol Type(PT),这一位用作为协议标识符在 GTP(PT为1)还是 GTP'(PT为0)。GTP' 在 3GPP TS 32.295 中定义,并且它的头部的含义和 GTP 一样的

   -  Extension Header flag (E),这一位指示 Next Extension Header 域是否有意义。当设置为 0 时,Next Extension Header 不存在,如果存在也不被解释。当设置为 1 时,Next Extension Header 域要被解释

   -  Sequence number flag (S),这一位指示 Sequence number 域是否有意义。当设置为 0 时,Sequence number 要么不存在,如果村在也不被解释。当这设置为 1 时,Sequence number 域要被解释

   -  N-PDU Number flag (PN),指示 N-PDU Number 是否有意义。当设置为 0,N-PDU Number 不存在,或者存在不被解释,当设置 1,N-PDU Number 将被解释

   -  Message Type,定义了 GTP 的消息类型,包括 GTP-C 和 GTP-U

   -  Length,指示了 payload 的长度,以字节为单位

   -  Tunnel Endpoint Identifier (TEID),该字段明确标识接收 GTP-U 协议实体中的隧道终结点,GTP 隧道的接收端在本地分配发送方必须使用的 TEID 值

                                                                   Figure 5.1-1: Outline of the GTP-U Header

    可选的字段

   -  Sequence Number,

   -  N-PDU Number,

   -   Next Extension Header Type

    发送请求 GTP 消息 

    reply GTP 消息

 

4. GTP-U Extension Header 扩展头

                                                    Figure 5.2.1-1: Outline of the Extension Header Format

   -  Extension Header Length,定义了 Extension Header 长度,单位是 4 字节倍数

   -  Extension Header types,定义一堆 TS 29.281 章节5

 

5. 信令消息

  • 路径管理消息

  • 隧道管理消息

  • 位置管理消息

  • 移动管理消息

  • 信令消息的可靠传递

  • 信息元素

   5.1 路径管理消息 (主要用于测试路径的活动性)

    Echo Request

       每隔一定时间向另一个 GSN 或者 RNC 发送 Echo Request 询问路径的活动性

    Echo Response

       请求的响应。同时在 Echo Response 中可以携带 Restart Counter 值

    Version Not Supported

        仅包含 GTP 头,指示给定的 UDP/IP 地址上的 GTP 实体能够支持的最新的 GTP 版本

   5.2 隧道管理消息

    Error Indication 用于指示错误,当本端收到对端 G-PDU,而对应的 G-TPU 上下文不存在或未激活时,本端向对端发送 Error Indication 消息,指示错误

                                               Table 7.3.1-1: Information Elements in an Error Indication

名词缩写

    GTP:GPRS Tunnel Protocol,GPRS隧道传输协议

    G-PDU:GTP encapsulated user Plane Data Unit,GTP 包裹的用户面数据单元

参考:

    TS 29.281

    TS 29.060


http://chatgpt.dhexx.cn/article/VgH7mCZb.shtml

相关文章

GTP协议的分析

一、 引言 在GPRS系统的GSN(GPRS Support Node,包括SGSN和GGSN)之间采用GTP(GPRS Tunnel Protocol)协议,GTP在整个GPRS协议栈中起着举足轻重的作用,GTP协议承载在TCP或UDP协议之上,分…

JS JQuery添加、替换、删除元素class属性

1、先声明一个div和两个class样式&#xff0c;用来测试&#xff1a; <html><head><meta charset"utf-8"><title></title><script src"https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script><s…

jquery动态添加和删除class属性

在用jquery时&#xff0c;遇到一个问题&#xff0c;就是如何动态得添加和删除class的属性&#xff0c;下面是我的解决代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio…

用jQuery的.addClass()方法给元素加class

Target Elements by Class Using jQuery 你看到我们是怎么给所有的按钮做弹回效果了吗&#xff1f;我们用 $("button")来选中按钮&#xff0c;然后用.addClass("animated bounce")给按钮加CSS class。 你只需要用jQuery的.addClass()方法&#xff0c;就可…

js 关于动态添加class样式的学习

如果&#xff0c;我这里有一个需求。如下的页面代码 <body> <input type"button" value"红" id"btn1"/> <p id"p1"> 2016年圣诞前的一个星期天下午&#xff0c;我推开窗&#xff0c;加州明媚的阳光洒在街道上&…

jQuery通过id属性来获取元素,通过.addClass()方法来添加class.

Target Elements by ID Using jQuery 你还可以根据id属性来获取元素 首先用$("#target3")来选择id为target3的button元素。 注意&#xff0c;就像CSS一样&#xff0c;在id的名字前加上 #。 然后使用jQuery的.addClass()方法来添加 animated和fadeOutclass. 例如…

js给元素添加class样式

图中&#xff0c;左侧和右侧都需要添加不同的class类样式 结构&#xff1a; <div class"left"><div class"img_bg leftOne" click"clickLeft(企业文化)">企业文化</div><div class"img_bg leftTwo" click"…

jq获取和设置标签的css样式、jq给标签增加或移除class属性

1、jQuery获取和设置标签的css样式 jQuery既可以直接获取标签的css样式&#xff0c;也可以设置样式&#xff0c;包括行内、内部、外部样式&#xff1b;思路&#xff1a;先要选取这个标签&#xff0c;然后再获取或者设置样式&#xff1b;获取css属性&#xff1a; console.log(…

JavaScript给元素添加class属性

注意&#xff1a;element.classList.remove()、element.classList.add() — ie9及以下不兼容 // 移除div的class属性 obj.classList.remove(active);// 添加class属性值 // 方式一 obj.className new active;// 方式二 // obj.className new active;// 方式三&#xff1a;属…

jq中的addClass()方法与样式冲突

添加类样式方法 addClass()&#xff1a;向被选元素添加指定的类名 注意&#xff1a;该方法仅仅只是在原有基础上添加属性&#xff0c;不会覆盖已存在的 class 属性 提示&#xff1a;如需添加多个类&#xff0c;使用空格分隔类名 一、添加一个class属性 <style>.div {wid…

Dubbo原理简单分析

1.Dubbo原理分析 alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。 这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西…

dubbo解析-介绍服务端和客户端启动和服务调用步骤

本文基于dubbo 2.7.5版本代码 前面的文章介绍了很多dubbo的各个组件&#xff0c;本文将对通过介绍启动和服务调用过程梳理一下这些组件&#xff0c;也让大家对dubbo的全局有一个了解。 文章目录 一、服务端启动二、客户端启动三、服务调用 一、服务端启动 1、spring启动调用后…

面试杀手锏之Dubbo服务调用过程

点赞再看&#xff0c;养成习惯&#xff0c;微信搜一搜【三太子敖丙】关注这个喜欢写情怀的程序员。 本文 GitHub https://github.com/JavaFamily 已收录&#xff0c;有一线大厂面试完整考点、资料以及我的系列文章。 前言 前面我已经带着大家过了服务暴露和服务引入两个流程了…

dubbo的服务调用原理

一、前言 在我们使用dubbo进行远程服务消费时&#xff0c;可以通过Reference注解或dubbo:reference来配置引用的接口&#xff0c;最终会生成远程服务的代理类&#xff0c;转化成ReferenceBean&#xff0c;这样我们就可以像调用本地接口方法一样使用远程服务提供的功能&#xf…

18. Dubbo原理解析-服务调用

服务消费方发起请求 当服务的消费方引用了某远程服务&#xff0c;服务的应用方在spring的配置实例如下&#xff1a; <dubbo:referenceid"demoService"interface"com.alibaba.dubbo.demo.DemoServ ice" /> demoService实例其实是代理工厂生产的代理…

Dubbo 原理和机制详解

Dubbo 是一款Java RPC框架&#xff0c;致力于提供高性能的 RPC 远程服务调用方案。作为主流的微服务框架之一&#xff0c;Dubbo 为开发人员带来了非常多的便利。 1. Dubbo核心功能 Dubbo主要提供了3大核心功能&#xff1a;面向接口的远程方法调用&#xff0c;智能容错和负载均…

从源码全面解析 dubbo 服务端服务调用的来龙去脉

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码…

Dubbo原理和面试问题

今天来说一说dubbo的原理&#xff0c;首先我们要知道dubbo到底是什么&#xff0c;都能提供些什么服务&#xff1f; 一、dubbo是什么&#xff1f; dubbo是⼀个分布式服务框架&#xff0c;提供⾼性能和透明化的RPC远程服务调⽤⽅案&#xff0c;以及SOA服务治理方案。说白了其实…

springboot启动dubbo客户端连接服务端过程

前言 如果我问你,dubbo客户端启动的时候是如何连接服务器端的&#xff1f;这个过程比较复杂&#xff0c;今天我们一起学习起来~ 本文分以下几个部分 1、springboot启动dubbo需要配置 2、初始化Reference过程 3、小结 一、项目应用 1、引入jar包 <dependency><g…

dubbo实现原理机制

Dubbo的总体架构如图所示&#xff1a; 框架分层架构中&#xff0c;各个层次的设计要点&#xff1a; 服务接口层&#xff08;Service&#xff09;&#xff1a;该层是与实际业务逻辑相关的&#xff0c;根据服务提供方和服务消费方的业务设计对应的接口和实现。 配置层&#xff0…