欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

5GS 协议栈 - GTPv1-U 协议

最编程 2024-03-16 15:50:03
...
目录

 

文章目录

  • 目录
  • GTPv1-U 用户面隧道协议
  • GTPv1-U 协议的基本概念
  • GTPv1-U 的 Header
  • 5G GTPv1-U 协议栈
  • GTPv1-U 的消息类型
    • 用户面数据
      • 支持单向的点对点隧道协议
      • 支持一个 GTP-U 隧道端点连接多个远程 GTP-U 端点
    • 信令消息
      • 路径管理
      • 隧道管理
  • 5G 对 GTPv1-U 协议的扩展
    • PDU Session Container
    • NR RAN Container

 

GTPv1-U 用户面隧道协议

GTP-U(User Plane Part of GTP,GPRS 用户平面部分)协议,是 GTP 的用户面部分,是一个的基于 IP/UDP 的隧道协议,它允许在各个 GTP-U Protocol Entity(协议实体)之间建立多个隧道。

IANA(因特网编号管理局)规定 GTP-U 协议使用 UDP dstPort 2152,而 srcPort 则由 Source GTP-U Protocol Entity(发送方协议实体)动态分配。GTP-U 支持通过动态分配 Source UDP Port 来支持负载均衡。

GTPv1-U 协议的基本概念

5GS 协议栈 — GTPv1-U 协议_5G 与 MEC 边缘计算

  • T-PDU(Transport Protocol Data Unit,传输协议数据单元):UE 发出的原始业务数据称
  • G-PDU(GTP Encapsulated User Plane Data Unit,GTP 封装的用户平面数据单元):在 GTP-U Protocol Entity 中被封装上了 GTP-U Header 的 T-PDU。

注:PDU(Protocol Data Unit of end-to-end user protocol packet,端到端用户面协议的协议数据单元)。

GTPv1-U 的 Header

GTP-U Header 中含有一个由 GTP-U Protocol Entity 上分配 TEID(Tunnel Endpoint Identifier,隧道端点标识符)指示了 T-PDU 属于哪个隧道。TEID 本质是一个动态分配的随机数。注意,G-PDU 一定包含了 GTP-U Header,但不一定会包含 T-PDU,也可能只包含 GTP-U Extension Header 或 IE、TV(Type Value)或 TLV(Type Length Value)编码元素。

5GS 协议栈 — GTPv1-U 协议_原力计划_02

5G GTPv1-U 协议栈

5GS 协议栈 — GTPv1-U 协议_5G 与 MEC 边缘计算_03

GTPv1-U 的消息类型

5GS 协议栈 — GTPv1-U 协议_5G 与 MEC 边缘计算_04

用户面数据

支持单向的点对点隧道协议

GTP-U 的一个显著特性是 “单向的点对点隧道协议”,下图显示了由 UL(上行链路)和 DL(下行链路)的两条单向隧道组成的一个双向隧道。

  • UL:从 RAN 到 UPF1(TEID=1),从 UPF1 到 UPF2(TEID=2)。
  • DL:从 UPF2 到 UPF1(TEID=3),从 UPF1 到 RAN(TEID=4)。

5GS 协议栈 — GTPv1-U 协议_5G 与 MEC 边缘计算_05

支持一个 GTP-U 隧道端点连接多个远程 GTP-U 端点

GTP-U 的另一特性就是 “支持一个 GTP-U 隧道端点连接多个远程 GTP-U 端点”,使用的场景如下:

  • 5GC 的双连接场景:对于同一 PDU Session 的上行链路业务,SMF 可以为主和辅 NG-RAN(双连接的两个RAN)分配相同的 UPF 上行链路 F-TEID(全量的 TEID)。
  • IPv6 多归属场景:来自同一 PDU Session 的多个 PSA 的下行链路业务可由 SMF 分配相同的 BP 的 N9 F-TEID。

信令消息

路径管理

  • Echo Request Msg:用来探测 GTP Path 和对端节点是否正常。发送间隔由 N3 计数器控制,建议值为 5 次。T3 为等待响应的时间,建议不低于 60 秒。若 T3 * N3 超时,则认为 GTP Path 失效。
  • Echo Response Msg:对 Echo Request 的响应。
  • Supported Extension Headers Notification:声明自己所支持的 GTP 扩展包头。

5GS 协议栈 — GTPv1-U 协议_原力计划_06

隧道管理

  • Error Indication:当收到一个 G-PDU 但找不到对应的 EPS Bearer/PDU Session,并且 TEID 不是全是 0,则要给对端发 Error Indication。主要用途防止 DOS 攻击。
  • End Marker:用于表明该 GTP-U 隧道已收到最后一个 G-PDU,该隧道将不再接收后续的用户数据。如果来了,也被直接丢弃。

5GS 协议栈 — GTPv1-U 协议_原力计划_07

5G 对 GTPv1-U 协议的扩展

版本:

  • GTPv1-U TS29.281 v15.3.0 (2018-06)

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

  1. NR RAN Container
  2. PDU Session Container

5GS 协议栈 — GTPv1-U 协议_5G 与 MEC 边缘计算_08

PDU Session Container

4G 的 GTP-U Tunnel 是基于 EPS Bearer 的,所以可以使用 TEID 就可以区分不同的用户。而 5G GTP-U Tunnel 是基于 PDU Session 的,并且一个 PDU Session 中存在多个 QoS Flow,所以就无法使用 TEID 来区分不同的用户。因此,5G 引入了 PDU Session Container 扩展头来解决这个问题。

5GS 协议栈 — GTPv1-U 协议_原力计划_09
5GS 协议栈 — GTPv1-U 协议_原力计划_10

PDU Session Container 扩展头用在 N3 和 N9 用户面接口的 G-PDU(Service IP Layer)上,这个扩展头的长度是可变长的,其内容定义在 TS38.415 上。下面我们对 TS38.415 定义的 PDU Session Container 进行展开。

字段名称 解释
PDU Type 指示帧结构类型,当前只是用了 0 和 1,其它的值保留以后使用,长度:4bit。
Spare 空闲字段,发送端应该设置为 0,接收端不解析此字段,长度:4bit。
QoS Flow Identifier (QFI) 指示传输的报文属于哪条 QoS 流,长度:6bit。
Reflective QoS Indicator (RQI) 指示是否激活用户面的反射 QoS;这个参数仅用于下行;如果这条 QoS 流的 RQA(Reflective QoS Activation)没有配置,则 NG-RAN 忽略 RQI 参数。 长度:1bit。0:不触发 Reflective QoS;1:触发 Reflective QoS 。
Padding 用于字节对齐

NR RAN Container

NR RAN Container 的内容定义详见 TS38.425。

5GS 协议栈 — GTPv1-U 协议_原力计划_11

NR RAN Container 用于支撑 “NR user plane protocol” 功能。

The NR user plane protocol is located in the User Plane of the Radio Network layer over either the Xn or the X2 or the F1 interface. The NR user plane protocol is used to convey control information related to the user data flow management of data radio bearers.

即 NR RAN Container 用于 5G Xn-U、4G X2-U 和 F1-U 中,用于传输与 DRB 相关的数据流管理控制信息。所以 NR RAN Container 类型的 GTP-U 类型报文是不会内含 N3 或 N9 用户面接口的 G-PDU(Service IP Layer)的。

5GS 协议栈 — GTPv1-U 协议_5G 与 MEC 边缘计算_12