GTPv1 和 GTPv0的比较 介绍 GPRS Tunneling Protocol(GTP)分别在[3GPP TS 29.060]和[GSM TS 09.60]定义,用于支持MS在GPRS和UMST网络中的移动性。相比移动IP,GTP仅在网络侧使用,不需要MS支持。GTP能和其他协议进行互操作,这样可以跟踪UE的位置变化。 GTP有两个版本,GTPv0和GTPv1,GTPv0在[GSM TS 09.60]中描述,适用于GPRS (release97和release 98系统)。GTPv1在[3GPP TS 29.060]中描述,同时GPRS和UMTS系统。3GPP成员为了引入一些GTPv0并不支持的新特性,专门新定义了GTPv1,但GTPv1和GTPv0并不兼容。主要的目的是将GTP的控制面和用户面分离,一个原因是在Iu口使用GTP隧道,但控制面使用RANAP。另外,为支持一个PDN连接有多个不同QoS的承载,即PDP。需要一个控制面会话(TEID-C)可以复用多个PDP,这种复用在GTPv0中需要复杂和麻烦的结构去标识会话和承载。GTPv1协议本文对这两个协议版本进行比较,并说明互操作上的兼容性。 差异 在GTPv0版本时,信令消息和数据传输是关联在一个端口的,GTPv1相比GTPv0,主要的差异是分成了控制面和用户面,即GTP-C和GTP-U,可以独立使用。详细的差异如下表:
兼容性 GTPv1或GTPv0/v1节点联系其他节点时应该首先GTPv1消息。如果接收节点接收到一条它不支持版本的GTP控制面消息,则返回一条“版本不支持”消息(只有GTP头),并在GTP字头中版本字段指示该节点所能支持的最新版本。接收到的G-PDU则被丢弃。 仅支持GTPv0的GSN不会在端口2123上收听,因此也不会向用GTP-C与它建立对话的对等端返回版本不支持消息。如果用GTPv1联系对端失败,既支持GTPv1又支持GTPv0的GSN将退回到GTPv0。 支持GTPv1的GSN可以通过对端返回的ICMP不可达或其他方式判断GSN不支持GTPv1。 实现中节点可以保存一个名单,记录最近联系的只支持GTPv0的GSN,和返回“版本不支持”消息的节点所支持的版本。 支持GTPv0和GTPv1的节点会同时在相关端口上监听并处理GTPv0/v1消息。 |
|