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