一种协议数据单元的转发方法
技术领域
本发明涉及宽带码分多址(WCDMA)通信系统中通用无线分组业务(GPRS)隧道承载技术领域,特别涉及一种GTP隧道中的协议数据单元转发方法。
背景技术
在WCDMA核心网(CN)中,GPRS隧道协议(GTP)技术应用于通用移动通信系统(UMTS)/GPRS核心网GPRS支持节点(GSN)间GTP控制平面和GTP用户平面的数据和信令传输,其中GSN包括GPRS服务支持节点(SGSN)和GPRS网关支持节点(GGSN)。同时计费协议GTP′也使用到了GTP技术,在无线网络控制器(RNC)和SGSN之间用户平面Iu接口中,使用GTP用户(GTP-U)协议作为数据传输承载技术。
GPRS系统逻辑结构参照图1所示,CN130中的SGSN132通过Iu接口与通用移动通信系统地面无线接入网(UTRAN)120中的RNC122相联,然后RNC122与基站(Node B)121通过Iub接口相联,Node B121再通过Uu面与UE110相联,通过逻辑控制协议(LLC),建立SGSN132与UE110之间的连接,通过建立SGSN132与RNC122之间的GTP隧道,实现对用户数据传输承载。
CN130中,通过Gn/Gp接口,实现SGSN132与SGSN132的互联,通过建立GTP隧道,实现用户数据交换;通过Gn/Gp接口实现SGSN132与GGSN135相联,通过GTP隧道,实现了SGSN132和外部网络140中因特网(INTERNET)142之间建立通道,提供了UE110与因特网142的互联;SGSN132通过移动服务交换中心网关(GMSC)133可与外部网络140中的公共交换电话网(PSTN)、综合业务数字网(ISDN)等141建立联接;通过Gs接口,SGSN132向移动交换中心/访问位置寄存器(MSC/VLR)131发送地址信息,并从MSC/VLR131接收寻呼请求,实现分组型业务和非分组型业务的关联。
归属位置寄存器(HLR)134中保存了GPRS用户数据和路由信息,SGSN132经Gn接口或GGSN135经Gc接口可实现对HLR134的访问。
通过上述的网络结构,建立起UE110与外部网络140的通信,而网络中SGSN的主要作用就是记录UE的当前位置信息,并实现与RNC、SGSN、GGSN之间的报文接收和发送。当UE向SGSN发起业务请求时,SGSN将根据业务类型,给业务所需的通信网络节点RNC、GGSN或SGSN分配隧道终点标识(TEID)值,建立GTP报文转发所需的GTP隧道。TEID作为隧道标识,用于标识GSN之间的数据承载隧道。在业务建立的同时,RNC、SGSN、GGSN内将为该业务创建一个分组数据协议(PDP)上下文,将该PDP上下文记录到本地的PDP上下文列表中。PDP上下文中记录了用户业务的用户接入点名称(APN)、序列号、GGSN/SGSN/RNC的网络协议(IP)地址、服务质量(Qos)等一系列相关参数,为GTP报文转发提供信息。
当SGSN收到GTP报文后,通过查看报文中的消息类型(Message Type)判断收到的GTP报文是否为GTP协议数据单元(G-PDU),如果不是,该报文为本地接收报文,不需要进行转发。如果是G-PDU,需要进行转发。通过查看G-PDU中的TEID值判断G-PDU的转发方向,并根据PDP上下文中记录的G-PDU转发所需目标地址,将G-PDU转发到目标地址。
对于TEID的分配算法,普遍做法是从0开始,逐一分配,当到达全1后,再从0开始分配,如果期间有PDP释放,被释放的TEID值回收用于下次分配。由于RNC只存在与SGSN间的上行GTP隧道,GGSN只存在与SGSN间的下行GTP隧道,对应于同一个PDP上下文,它们只有一个方向的GTP隧道。而对于SGSN来说,存在与GGSN、RNC、SGSN的GTP报文交换,也就是说,同一时刻,可能存在对应同一PDP上下文,SGSN需要分别建立与GGSN、RNC、SGSN之间的GTP隧道。如果将SGSN与GGSN、RNC、SGSN间的GTP隧道,简单分配成相同值,当SGSN收到G-PDU报文后,可以根据输入GTP报文的源IP地址判断该报文是上行报文还是下行报文,确定报文的转发目标网络节点。
采用这种方法,SGSN每次收到G-PDU报文后,不但要根据TEID值找到PDP上下文,还需要根据PDP上下文中保存的RNC/GGSN的IP地址来判断该报文是上行报文还是下行报文,影响转发效率。而且,PDP上下文中的GGSN IP地址只是SGSN向GGSN发送报文的目的IP地址,并没有指明该地址是GGSN向SGSN发送报文的源地址。当报文的源地址与PDP上下文中存储的GGSN地址不符时,SGSN无法判断该报文是上行报文还是下行报文。如果是UE进行SGSN间的无线网络子系统服务重分配(SRNSRelocation)时,UE原来接入的SGSN向新接入的SGSN发送的转发重分配请求(Forward Relocation Request)消息中并没有带有原接入SGSN的用户面IP地址,这样,当新接入的SGSN接收到原来接入的SGSN发送来的报文时,无法判断该报文的方向。
现有技术中,为了判断SGSN收到的报文方向,将SGSN与GGSN、RNC、SGSN之间的GTP隧道简单的分配为不同TEID值后,为TEID建立一个索引表,在表中记录每个TEID值对应的GTP报文方向和PDP上下文索引。当收到G-PDU时,根据TEID值查找索引表中记录的GTP报文的方向和PDP上下文索引,再根据PDP上下文索引找到PDP上下文,取出G-PDU转发目标地址,将G-PDU转发到目标地址。具体的G-PDU转发流程如图2中所示:
步骤201:SGSN分别给RNC与SGSN之间、GGSN与SGSN之间、SGSN与SGSN之间的GTP隧道分配TEID值,为TEID值建立索引表,记录每个TEID值所对应的GTP报文方向和PDP上下文索引。
举个例子,GGSN、SGSN、RNC中创建的PDP上下文的索引为PDP上下文2,RNC与SGSN间的GTP隧道TEID值分配为1000;GGSN与SGSN间的GTP隧道TEID值分配为1001;SGSN与SGSN间的GTP隧道TEID分配为1002,则索引表中记录的TEID值与报文方向和PDP上下文索引的对应关系参照图3中所示:从RNC到SGSN的报文方向为上行,对应于RNC与SGSN间的GTP隧道TEID值1000记录GTP报文方向为上行,PDP上下文索引为PDP上下文2;从GGSN到SGSN的报文方向为下行,对应于GGSN与SGSN间的GTP隧道TEID值1001记录GTP报文方向为下行,PDP上下文索引为PDP上下文2;从SGSN到SGSN的报文方向为切换,对应于SGSN与SGSN间的GTP隧道TEID值1002记录GTP报文方向为切换,PDP上下文索引为PDP上下文2。
当收到G-PDU,根据TEID值找到索引表中对应的PDP上下文索引为PDP上下文2后,即可直接到PDP上下文列表中查找索引为PDP上下文2的PDP上下文中记录的G-PDU转发所需参数。
分配完TEID值,索引表中记录了每个TEID值对应的GTP报文方向和PDP上下文索引,建立了GTP隧道,开始GTP报文的接收和转发。
步骤202~203:SGSN接收到GTP报文,查看报文中的消息类型,判断GTP报文是否是G-PDU,如果不是,为本地接收报文,不需要对报文进行转发,退出转发流程;如果为G-PDU,则需要对报文进行转发,进行步骤204。
步骤204~205:根据G-PDU中的TEID值查看索引表,判断TEID值为上行TEID值、下行TEID值、还是切换TEID值。如果TEID值为上行TEID,则转发目标为GGSN,进行步骤206;如果TEID值为下行TEID值,则转发目标为RNC,进行步骤207;如果TEID值为切换TEID值,则转发目标为RNC,进行步骤208。
步骤206:查看索引表中上行TEID值对应的PDP上下文索引,然后进行步骤209。
步骤207:查看索引表中下行TEID值对应的PDP上下文索引,然后进行步骤210。
步骤208:查看索引表中切换TEID值对应的PDP上下文索引,然后进行步骤211。
步骤209:根据上行TEID值对应的PDP上下文索引在PDP上下文中找到目标GGSN地址,然后进行步骤212。
步骤210:根据下行TEID值对应的PDP上下文索引在PDP上下文中找到目标RNC地址,然后进行步骤213。
步骤211:根据切换TEID值对应的PDP上下文索引在PDP上下文中找到目标RNC地址,然后进行步骤214。
步骤212:将上行G-PDU转发到目标GGSN地址,完成一个上行G-PDU报文的转发流程。
步骤213:将下行G-PDU转发到目标RNC地址,完成一个下行G-PDU报文的转发流程。
步骤214:将切换G-PDU转发到目标RNC地址,完成一个切换G-PDU报文的转发流程。
依照上述方法,建立GTP隧道时,需要给GTP隧道的TEID建立索引表,并在索引表中记录每个TEID对应的报文方向和PDP上下文索引。当SGSN收到G-PDU报文后,需要先查看索引表中接收到的G-PDU的TEID所对应的报文方向和PDP上下文索引,确定G-PDU的转发目标网络节点,然后再根据PDP上下文索引找到PDP上下文中转发目标网络节点的地址,增加了系统开销,降低了SGSN中G-PDU的转发效率。
发明内容
有鉴于此,本发明的主要目的在于提供一种协议数据单元的转发方法,降低系统开销,提高SGSN中G-PDU的转发效率。
根据上述目的,本发明提供了一种协议数据单元的转发方法,该方法包含以下步骤:
A、SGSN建立GTP隧道时,给GTP隧道分配具有方向标识位和分组数据协议PDP上下文索引位的TEID值;
B、SGSN接收到G-PDU后,根据G-PDU的TEID值中的方向标识位确定报文转发方向,判断出报文转发的目标网络节点;
C、SGSN根据TEID中的PDP上下文索引值查找到PDP上下文中由步骤B判断出的目标网络节点的地址,根据该地址将G-PDU转发到目标网络节点。
该方法中,所述步骤A具体为:通用分组无线业务GPRS服务支持节点SGSN给SGSN与GPRS网关支持节点GGSN之间、SGSN与无线网络控制器RNC之间、SGSN与SG SN之间的GTP隧道,分别分配具有方向标识位和PDP上下文索引位的TEID值,建立GTP隧道。
所述步骤A中TEID值的方向标识位可以为两位;步骤B中根据TEID值的两位方向标识位确定G-PDU的转发方向。
进一步,所述步骤A中TEID值的方向标识位为20到21两位;步骤B中根据TEID值的20到21两位方向标识位确定G-PDU的转发方向。
所述步骤A中PDP上下文索引位为TEID值的0到19位;步骤C中根据TEID值的0到19位PDP上下文索引值查找PDP上下文。
由上述方案可以看出,建立GTP隧道时,给不同的GTP隧道分配具有方向标识位和PDP上下文索引位的TEID值,使得当接收到G-PDU后,直接根据G-PDU的TEID值中的方向标识位确定报文转发方向,判断报文转发的目标网络节点为RNC还是SGSN,然后根据TEID中的PDP上下文索引值直接找到PDP上下文中G-PDU转发的目标网络节点地址,根据该地址,将G-PDU转发到目标网络节点。这样,就不需要为了判断GTP报文的方向给不同的TEID建立索引表,也就减少了接收到G-PDU报文后查着索引表找到对应于TEID的报文转发方向和PDP上下文索引的步骤,降低了系统开销,提高了SGSN中G-PDU的转发效率。
附图说明
图1为GPRS系统逻辑结构图;
图2为现有技术中G-PDU的转发流程图;
图3为索引表中TEID值与报文方向和PDP上下文索引的对应关系示意图;
图4为依照本发明实施例的G-PDU转发流程图;
图5为依照本发明的实施例TEID值分配方法示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例,并参照附图,对本发明进一步详细说明。
本发明的核心思想是:建立GTP隧道时,给不同的GTP隧道分配具有方向标识位和PDP上下文索引位的TEID值,使得接收到G-PDU后,根据TEID值中的方向标识位确定报文转发方向,判断出报文转发的目标网络节点,然后根据TEID中的PDP上下文索引值找到PDP上下文中报文转发的目标网络节点地址,根据该地址,将G-PDU转发到目标网络节点。
举本发明的一个较佳实施例。当UE进行SGSN间的无线网络子系统服务重分配时,需要新接入的SGSN建立起与UE原来接入的SGSN之间的GTP隧道,获得对UE的管理信息,创建新的PDP上下文。同时新的SGSN为了进行对UE的服务,还需要与GGSN、RNC分别建立起GTP隧道进行GTP报文的接收和发送。新的SGSN对建立的每个GTP隧道进行TEID值分配和GTP报文的转发过程如图4所示:
步骤401:SGSN给每个GTP隧道分配TEID值。TEID值的分配方法如图5所示,首先用TEID值的0到19住作为PDP上下文索引位,填入SGSN为该业务创建的PDP上下文索引值,然后用TEID值的20到21两位作为GTP报文的方向标识位,填入方向标识值。将RNC与SGSN间GTP隧道的方向标识位填入00,表示SGSN收到的来自RNC的GTP报文方向为上行;将GGSN与SGSN间GTP隧道的方向标识位填入01,表示SGSN收到的来自GGSN的GTP报文方向为下行;UE原来接入的SGSN到SGSN间GTP隧道的方向标识位填入10,表示SGSN收到的来自UE原来接入的SGSN的GTP报文方向为下行切换。分配完TEID值,建立起GTP报文转发所需GTP隧道。
步骤402~403:SGSN接收GTP报文,查看GTP报文中的消息类型,判断收到的GTP报文是否为G-PDU。如果不是G-PDU,GTP报文为本地接收报文,不需要进行转发,退出转发流程;如果为G-PDU,需要对报文进行转发,进行步骤404。
步骤404:判断G-PDU中TEID的20到21两位方向标识值为00、01、还是10。如果为00,收到的G-PDU为上行报文,转发目标为GGSN,则进行步骤405;如果为01,收到的G-PDU为下行报文,转发目标为RNC,则进行步骤406;如果为10,收到的G-PDU为下行切换报文,转发目标为RNC,则进行步骤407。
步骤405:根据G-PDU中TEID的0到19位PDP上下文索引值找到PDP上下文列表中的PDP上下文,取出PDP上下文中上行G-PDU转发目标的GGSN地址,然后进行步骤408。
步骤406:根据TEID的0到19位PDP上下文索引值找到PDP上下文列表中的PDP上下文,取出PDP上下文中下行G-PDU转发目标的RNC地址,然后进行步骤409。
步骤406:根据TEID的0到19位PDP上下文索引值找到PDP上下文列表中的PDP上下文,取出PDP上下文中下行切换G-PDU转发目标的RNC地址,然后进行步骤410。
步骤417:将上行G-PDU转发到目标GGSN,完成一个上行G-PDU的转发流程。
步骤416:将下行G-PDU转发到目标RNC,完成一个下行G-PDU的转发流程。
步骤417:将下行切换G-PDU转发到目标RNC,完成一个下行切换G-PDU的转发流程。
上述的实施例中,建立GTP报文接收和发送所需GTP隧道时,SGSN给不同的GTP隧道分配了20到21位为方向标识位和0到19位为PDP上下文索引位的TEID值,当SGSN收到G-PDU后,根据TEID中的20到21两位中的值确定G-PDU的转发方向,判断出报文转发的目标网络节点,然后根据TEID中0到19位的PDP上下文索引值找到PDP上下文中的目标网络节点地址,根据该地址将G-PDU转发到目标网络节点,这样,就不需要给TEID建立索引表,也就减少了查看TEID索引表确定报文的方向和找到PDP上下文索引的步骤,降低了系统开销,提高了G-PDU的转发效率。
以上所举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换等,均应包含在本发明的范围之内。