GTP协议

        GTP(GPRS隧道协议(GPRS Tunneling Protocol)),可以分解成三种独立的协议,GTP-C、GTP-U及GTP'。GTP-U用于在GPRS核心网内,无线接入网与核心网之间传送用户数据。 GTP可以用在UDP或TCP上,GTP v1仅用于UDP上,UDP的2123端口是为GTP-C登记的端口号, 2152端口是为GTP-U登记的端口号。

GTP-U消息格式

        GTP-U协议使用的GTP头是变长度的。GTP头的最小长度是8个字节。

 必选字段:

  • 版本号(Ver):用于确定GTP协议的版本,转换成10进制表示。
  • 协议类型(PT):用于区分GTP(置’1’)和GTP’(置’0’)协议。
  • 扩展头标志(e):置’1’表示有下一个扩展头字段。置’0’表示没有下一个扩展头字段,或有但不必解释。
  • 序号标志(s):置’1’表示有序号字段。置’0’表示要么没有序号字段,要么有但不必做出解释。在GTP-C消息中s标志应置’1’。
  • N-PDU编号标志(Pn):置’1’表示有N-PDU编号字段。置’0’表示要么没有N-PDU编号字段,要么有但不必做出解释。这个标志仅对GTP-U有意义。所以,GTP-C不使用这个标志。
  • 消息类型:这个字段指出GTP消息的类型。
  • 长度:这个字段指出以字节为单位的净荷长度,即分组中除了GTP头的必选部分外剩余部分的长度(即除去前面的8个字节)。
  • 隧道端点标识符(TEID):这个字段清楚地标识了对端的GTP-U或GTP-C协议实体中的隧道端点。

可选字段:

  • 序号:这个字段在GTP-U中是可选的。对GTP-C控制面消息,序号用于事务标识。通过GTP-U隧道传输时,如果必须保护传输顺序,用该字段对T-PDU进行编号,且每传输一个T-PDU就增加序号值。
  • N-PDU标号:这个字段在SGSN间的路由区更新过程中和某些系统间切换过程(如2G和3G无线接入网间切换)中使用。当MS和SGSN间的通讯工作在确认模式下时,使用这个字段协调它们间的数据传输。这个字段的确切意义取决于使用场合。如GSM/GPRS到GSM/GRPS,这个字段就是SNDCP N-PDU编号。
  • 下一个扩展头类型:这个字段定义在G-PDU中紧接着这个字段的扩展头的类型。
     

名词解释

  • APN :Access Point Name,接入点名称,在GGSN中用于标识一个指定的外部网络和一种服务的ISP,在SGSN中可根据APN通过DNS域名解析得到与此APN对应的GGSN地址。APN可以分为APN以及wild card APN, wild card APN是指运营商允许用户使用给定的PDP类型的上下文接入任何网络,用“*”表示;  常规APN包括两部分:网络标识(NI, Network Identifier)和运营商标识(OI, Operator Identifier)。NI最长63字节,OI最长37字节,不区分大小写。
  • TEID:Tunnel Endpoint Identifier,GTPv1的概念,用于表示一条隧道(PDP),分为数据面TEID(TEID(U))和控制面TEID(TEID(C)),由SGSN和GGSN自己分配。
  • NSAPI :Network Service Access Point Identifier,和TEID(C)或IMSI一起用于标示同一用户激活的不同上下文,范围[0,15],其中0~4系统保留,因此对于一个用户(UE)而言,最多可以建立11条隧道。
  • TID :GTPv0的概念,由IMSI+NSAPI构成,和TEID作用相同。

5G GTP-U信令面消息 - 隧道管理

GTP-U协议的隧道管理消息主要有:

  • Error Indication:当收到一个G-PDU但找不到对应的EPS Bearer/PDU会话, 并且TEID不是全0, 则要给对端发Error Indication。主要用途防止DOS攻击。
  • End Marker:用于表明该GTP-U隧道已收到最后一个G-PDU, 该隧道将不再接受后续的用户数据。如果来了,也被直接丢弃。【常见于切换流程完成阶段的用户面路径切换。(参考51学通信录制的“基于Xn接口的跨gNB基本切换流程”视频)】

5G GTP-U信令面消息 - 路径管理

GTP-U协议的路径管理消息主要有:

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

 GTP-U相关术语和概念

        GTP-U消息:用来传送上层用户面数据或信令消息。

        注意:GTP-U消息不光是用来传递用户面数据, 它也有自己的信令消息。
信令消息的参数部分叫IE, 采用TV或TLV编码。

 

  • GTP Path:两个GTP隧道端点之间建立的无连接路径。
  • GTP隧道:通过TEID+IP地址+UDP端口标识。
  • GTP隧道端点:GTP隧道的两端节点。通过节点IP地址+UDP端口标识。
  • T-PDU:用户的原始上层数据
  • G-PDU:T-PDU+GTP-U包头

  • G-PDU:GTP encapsulated user Plane Data Unit
  • T-PDU:Transport PDU
  • TEID:Tunnel Endpoint IDentifier
  • IE:Information Element

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐