一、 引言
在GPRS系统的GSN(GPRS Support Node,包括SGSN和GGSN)之间采用GTP(GPRS Tunnel Protocol)协议,GTP在整个GPRS协议栈中起着举足轻重的作用,GTP协议承载在TCP或UDP协议之上,分为信令平面和传输平面,其信令平面定义了多种消息,涉及到GPRS许多重要方面,传输平面则提供了GSN之间数据包传送的隧道。另外以GTP为基础的GTP'协议用于GPRS计费数据采集和传输,深入理解GTP协议是熟悉GPRS网络所必须的。
二、 GTP包头
GTP包头的格式如图1所示,Version表示协议版本;PT=1指示GTP协议,PT=0指示GTP'协议(GPRS计费采集协议);SNN指示包头中是否包含SNDCP N-PDULLC Number;Message Type字段指示消息类型,GTP中涉及的消息及其对应的消息类型在本文“信令平面”一节中介绍。Length字段指示包的长度(不含包头);Sequence Number对于信令消息而言是交互的标识,对于T-PDU而言是顺序号;SNDCP N-PDULLC Number用于越SGSN切换时协调MS与SGSN之间的数据传送;Flow Lable唯一标识一个GTP流;TID是隧道标识,由IMSI和NSAPI两部分组成,用于指明MM(Mobility Management)和PDP(Packet Data Protocol)上下文。
无论是信令平面还是传输平面都采用如图1所示的GTP包头,但是其中有些字段的含义和用法存在一定的区别。
三、 信令平面
承载GTP的协议(UDP或TCP)称为路径协议(Path Protocol),每个GSN对之间有多个路径,每个路径上可以存在多个隧道,GTP负责隧道的建立、使用、管理和释放。信令平面主要包含路径管理、隧道管理、位置管理、移动性管理四大类。
对于信令消息,GTP包头中的字段设置如下:
· SNN置为0;
· SNDCP N-PDULLC Number不使用,发端将该字段置为255,收端忽略该字段;
· 对于一个路径或一个隧道上的信令,其request类消息的Sequence Number是唯一的,相应的response消息的Sequence Number从接收的request消息的该字段拷贝;
· 对于路径管理消息、位置管理消息、移动性管理消息而言,TID置为0;对于隧道管理消息而言,TID用于指出目的端GSN的MM和PDP上下文;
· 对于路径管理消息、位置管理消息而言,Flow Lable不使用而置为0;对于移动性管理消息、隧道管理消息而言,Flow Lable应该指出其试图操作的GTP流,例如在Create PDP Context Request消息中分配GTP流的Flow Lable,在对应的Create PDP Context Response消息中应该包含该字段。
GPRS信令消息格式与电信界其他信令定义方式类似,每条消息都包含若干个参数(Information Element),参数分为TV(Type,Value)和TLV(Type,Length,Value)两种类型,TV参数的Type字节的最高位为0,TLV参数的Type字节的最高位为1。每个参数都具有唯一的Type标识。
1 路径管理消息
路径管理是所有其它管理活动的基础,只有确保消息传送的通路处于可用状态,消息才能被正确发送与接收。具体的路径管理消息如下:
· Echo Request/Response(类型码1/2)消息主要用于探测对端GSN是否仍然处于激活状态,路径是否畅通;
· Version Not supported(类型码3)用于指示对端版本不符,同时指出本节点支持的版本。
2 隧道管理消息
隧道管理围绕PDP上下文展开,是GPRS会话过程的核心,具体消息类型如下:
· Create PDP Context Request/Response(类型码16/17)消息用于PDP上下文的建立请求和响应,SGSN向GGSN发请求消息,GGSN向SGSN发响应消息;
· Update PDP Context Request/Response(类型码18/19)消息用于PDP上下文的更新请求和响应,当PDP上下文的有关参数如QoS轮廓需要重新协商时,或者手机发生越SGSN切换时,SGSN需要向GGSN发送请求消息,GGSN向SGSN发响应 消息;
· Delete PDP Context Request/Response(类型码20/21)消息用于PDP上下文的删除请求和响应,SGSN或GGSN向对端发请求消息,对端发响应消息;
· Create AA PDP Context Request/Response(类型码22/23)用于匿名接入情况下建立PDP上下文的请求和响应;
· Delete AA PDP Context Request/Response(类型码24/25)消息用于匿名接入情况下PDP上下文的删除请求和响应;
· Error Indication(类型码26)用于错误指示,当SGSN收到G-PDU而相应的PDP上下文不存在或未激活时,当GGSN收到G-PDU而相应的MM上下文不存在或未激活时,SGSN或GGSN向对端发送Error Indication消息;
· PDU Notification Request/Response(类型码27/28)用于当网络侧发起PDP上下文激活过程时,由GGSN向SGSN发请求消息,SGSN向GGSN发响应消息;
· PDU Notification Reject Request/Response(类型码29/30)当PDU Notification Request/Response消息交互完成后,但无法激活PDP上下文(如手机拒绝),SGSN向GGSN发PDU Notification Reject Request消息,GGSN发响应消息。
3 位置管理消息
SGSN与HLR之间存在Gr接口,采用MAP信令,不涉及GTP协议。在GGSN与HLR之间定义了Gc接口,Gc接口采用MAP信令。然而GGSN涉及的位置管理与SGSN不同,并非所有GGSN均需要实现MAP协议,另一种方法是设置GTP协议与MAP协议转换的GSN(可以认为是一种信令网关),这样GGSN就没有必要支持MAP信令。但是GGSN仍然需要定义相应的GTP域的位置管理消息。
· Send Routeing Information for GPRS Request/Response(类型码32/33)当网络侧发起PDP上下文激活过程时,GGSN需要MS对应的SGSN地址。GGSN向信令网关GSN发Send Routeing Information for GPRS Request,信令网关GSN会将该消息转换为相应的MAP信令与HLR通信,得到查询结果后发Send Routeing Information for GPRS Response消息给GGSN。
· Failure Report Request/Response(类型码34/35)GGSN向信令网关GSN发请求消息,用于将MNRG(Mobile station Not Reachable for GPRS flag)置位,信令网关发响应消息。
· Note MS GPRS Present Request/Response(类型码36/37)GGSN向信令网关GSN发请求消息,通知MS又可以参加通信,信令网关发响应消息。
4 移动性管理消息
有一部分移动性管理在SGSN之间发生,这些管理消息用GTP协议在承载,这些移动性管理消息如下:
· Identification Request/Response(类型码48/49)当手机从附着状态转为分离状态,随后移动到新的SGSN区域,而后又转入附着状态,这时新SGSN会向老的SGSN发送Identification Request消息以索取IMSI,老的SGSN发响应消息。
· SGSN Context Request/Response/Acknowledge(类型码50/51/52)当手机发生越SGSN切换时,新的SGSN会向老的SGSN索取PDP上下文信息。新老SGSN之间会按照该3-way的消息过程进行。
四、 传输平面
传输平面用于传输T-PDU(Tunneled PDU),其路径协议可以采用TCP或UDP,当GTP承载面向连接可靠性要求高的用户协议(如X.25)时,路径可选用TCP;当GTP承载无连接可靠性要求不高的用户协议(如IP)时,路径可选用UDP。
传输平面中GTP包头有关字段的说明:
· 如果SNN置为1,那么GTP报头中将包含SNDCP N-PDU Number字段;
· T-PDU的消息类型是255(十进制);
· SNDCP N-PDU Number:当发生SGSN之间切换时,老的SGSN用该字段通知新SGSN关于该T-PDU的N-PDU的序号。如果SNDCP没有分配N-PDU序号,或者采用非确认LLC工作模式,则SNN=0,而N-PDU序号置为255。
对于传输平面,GTP协议最常用于SGSN与GGSN之间。考虑到SGSN之间会发生切换,老的SGSN可能会残存一部分数据尚未发送给手机;而此时手机已经完成了位置更新,那么这部分残存数据会通过新的SGSN发送到手机,因此SGSN之间也存在GTP传输平面。对于GGSN之间则不存在传输平面,它们之间的数据传送需经过Gi接口,但是这并不意味着GGSN之间必须通过外部数据网作沟通。GGSN之间可以采取直连或通过骨干网相连,只不过数据传送不在GTP协议之上进行而已。
五、 结束语
从理论上说GPRS是一种通用分组接入方式,其上可以承载各种用户协议,这种通用性是通过隧道封装技术实现的。GPRS中涉及两种封装形式,一是位于MS与SGSN之间的SNDCP,另一个是位于GSN之间的GTP,可以说GTP协议是GPRS网络部分的核心协议。本文旨在阐述GTP协议的作用和含义,至于具体的消息与参数格式可参见ETSI的GSM 09.60协议。