CN1412987A - Gtp数据包的快速转发处理方法 - Google Patents
Gtp数据包的快速转发处理方法 Download PDFInfo
- Publication number
- CN1412987A CN1412987A CN01136296A CN01136296A CN1412987A CN 1412987 A CN1412987 A CN 1412987A CN 01136296 A CN01136296 A CN 01136296A CN 01136296 A CN01136296 A CN 01136296A CN 1412987 A CN1412987 A CN 1412987A
- Authority
- CN
- China
- Prior art keywords
- packet
- gtp
- function
- layer
- udp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种应用于GPRS骨干网GGSN、SGSN设备中GTP协议栈的优化处理方法,可快速转发数据包,提高设备吞吐量。其中,快速发送包括:首先将原本由SOCKET中间层完成的一些操作及一些准备工作上提到GTP层完成;然后在SOCKET中间层,利用新增的SOCKET层处理函数(GTP-U快速发送接口函数)对数据包进行处理并越过UDP传输层;最后在IP层,利用新增的IP层处理函数对数据包进行处理,并通过网络接口进行数据发送,两个新增的接口函数都充分利用了GTP数据包及其发送时的特点;快速接收包括:在来自网络接口的数据包到达UDP层后,经过修改定制的原UDP层输入处理函数越过SOCKET层,直接通过GTP任务注册的回调函数,即GTP-U快速接收接口函数,将其直接投递到GTP任务的缓冲区中。
Description
技术领域
本发明涉及一种无线数据通信技术,更确切地说是涉及GTP(GPRSTunnel Protocol:通用无线分组业务隧道协议)协议数据包的一种快速转发处理方法。本发明的转发处理方法,应用于GPRS(通用无线分组业务)骨干网设备SGSN(GPRS支持节点)和GGSN(网关GPRS支持节点,SGSN和GGSN可统称为GSN:GPRS支持节点)上的GTP协议数据包转发处理,相对于基于传统TCP/IP(Transmission Control Protocol/Internet Protocol:传输控制协议/网际互联协议)协议栈的转发处理方法,GTP协议数据包的转发效率明显得以提高,GSN设备的吞吐量也相应大幅度提高。
背景技术
图1中示意出通用无线分组业务(GPRS)系统的部分结构及其处理流程。个人数据通信用户与数据网络之间的数据传送途径包括:个人计算机(TE)、移动台(MS)、由基站收发器(BTS)和基站控制器(BSC)组成的基站子系统(BSS)、通用分组无线业务(GPRS)支持节点(SGSN)、基于IP的GPRS骨干网、网关GPRS支持节点(GGSN)、分组数据网(Data network,Internet或X.25)。网关GPRS支持节点(GGSN)作为GPRS的核心网节点,为GPRS骨干网与外部分组数据网之间提供数据包的路由和数据封装。GGSN设备和GPRS骨干网之间的接口通常用Gn接口代表,GGSN设备和外部分组数据网之间的接口通常用Gi接口代表。
参见图1并结合参见图2所示的GPRS传输平面示意图,移动台(MS)与基站子系统(BSS)之间的信息传输通过Um接口模块进行,基站子系统(BSS)与GPRS支持节点(SGSN)之间的信息传输通过Gb接口模块进行,GPRS支持节点(SGSN)与网关GPRS支持节点(GGSN)之间的信息传输通过Gn接口模块进行,网关GPRS支持节点(GGSN)与外部分组数据网之间的信息传输通过Gi接口模块进行。移动台MS(手机用户)数据在GPRS骨干网内部是封装在GTP数据包中传输的,因此,提高GSN(SGSN或GGSN)设备的吞吐量主要需通过快速转发GTP数据包来实现。
正如图2中所示,在实现传统GSN时,GTP协议是通过标准TCP/IP(传输控制协议/网际互联协议)协议栈,即通过调用标准Socket API(网络编程接口)函数来发送和接收GTP数据包的。换句话说,Socket协议层作为协议栈GTP层(应用层)和底层TCP/IP(传输层、链路层)的中间层,是应用发送和接收数据包以及通过相应的选项对数据包收、发进行控制的界面。
图4所示的数据发送与应用实施控制过程,表达了数据发送时所涉及的TCP/IP协议栈中的各个元素及它们之间的关系。图5所示的数据接收过程,表达了数据接收时所涉及的TCP/IP协议栈中的各个元素及它们之间的关系(需要说明的是:图4、图5中分别示出的GTP-U快速发送接口函数、GTP-U快速接收接口函数是为实现本发明的快速转发技术而增加的函数模块,除此以外的部分就是传统方式下GTP数据包发送与接收处理的示意过程)。
结合参见图2、图4,在传统方式下,发送GTP数据包的过程是:当位于Gn接口一侧的GTP层收到从Gi接口进入GGSN并要发送到对端SGSN的数据包时,它首先调用GTP的一个处理函数,在该数据包所属PDP(分组数据协议)上下文中找到SGSN地址;然后,调用socket接口函数Sendto向该SGSN的3386端口发送出去;随即进入图4所示的处理流程。图4中,用实心箭头表示对目标函数模块的选择,用空心箭头表示对目标函数模块的参数输入,图中除GTP-U快速发送接口函数框及公用接口(协议开关表)框代表的是单个函数或结构模块外,其余框均代表作为协议实现的一组函数模块。
1.在传统socket层,依次调用内部接口函数Sendto、SendIt、So_send分别进行:“将数据所在缓冲区参数封装到MSGHDR结构中”、“为拷贝数据创建UIO结构”和“将数据拷贝并封装到MBUF结构中(预留了数据包头空间)”等操作,并进行构造地址信息MBUF、检查发送socket状态和数据包合法性等工作;最后,由So_send函数调用协议开关表中的对应输出函数udp_output进入UDP(用户数据报协议)层处理。
2.在UDP层,首先对连接状态、目的地址消息等进行合法性检查、选择本地端口号,然后对数据包帖头、进行校验和计算并填充UDP头、IP头的几个字段,最后调用ip_output函数,进入IP层处理。
3.在IP层,数据包需经历多次判断,如判断是否为广播数据包、多播数据包,有没有IP选项等,然后通过查找外出路由表并通过相应接口发送出去。
可以发现,这种数据包发送过程在对GGSN设备进行整体实现时存在几个明显的缺陷,导致处理效率低下,具体表现在以下五个方面:
一.从图2的传输平面可以看出,目前GTP只承载在UDP上,并且GTP-U数据包既不是多播、广播数据包,也不需要IP选项等,因此,将GTP数据包的发送建立在标准TCP/IP协议栈上,其处理过程中的冗余现象就很严重,特别是在socket层含有大量与TCP等相关的操作,在UDP、IP层存在多种判断分支,因此在要求每秒处理几十万数据包的情况下,这些操作与判断所占用的处理时间就不容忽视了;
二.尽管数据包在Gi接口到Gn接口之间流经整个GGSN设备的过程中,可以始终以MBUF(UNIX内核数据格式)形式存在,但传统socket层仍然需要进行大量的如数据结构转换、数据拷贝、数据包类型判断等耗时的操作;
三.按照TCP/IP标准协议栈要求,对数据包帖头是在不同层进行的,这样就会对每个数据包多次作动态申请内存,而在电信级要求的GGSN设备中,该操作本身就会消耗大量的处理时间;
四.由于在GTP-C上下文激活时,每个MS用户的PDP(Packet Data Protocol:分组数据协议)上下文中已经包含有确定的四元组信息,包括本地IP地址、本地端口号、对端IP地址及目的端口号,因此,和该用户相关的随后数据包的UDP+IP首部中就有相当的字段内容已经在GTP层确定,即图1中从手机到欲访问数据网接入点的路径已经确定,但是底层TCP/IP协议仍然对每个数据包每次都自己构造四元组信息和进行相关的合法性检查;
五.由于GTP-U并没有重传机制,因此对大部分UDP数据包的校验与计算可以不进行,因为针对整个数据包的UDP校验与计算是相当耗费资源的。
结合参见图2、图5,在传统方式下,GGSN接收来自SGSN的GTP数据包并处理、转发到Gi接口模块。
图5中,用空心箭头表示目标函数模块的参数输入,图中除GTP-U快速接收接口函数框代表的是单个函数或结构外,其余框均代表作为协议实现的一组函数模块。可见,在GGSN协议栈本身接收GTP包的处理过程中会出现多次分发,如从IP层经公用接口分发到UDP层,UDP层再按照数据包中的端口号依次找到对应的接收socket,并挂到它的接收缓冲区中等。
一般地,GTP作为应用任务,采用如下方法接收和转发上行数据包:每隔固定的时间间隔,调用recv函数从socket的接收缓冲区中读出“所有在该时间间隔内由协议栈任务获取的数据包”,并存放到GTP任务自己的缓冲区中;然后再对缓冲区中各个数据包按照TID(Tunnel ID:隧道标识)查找SDB(SubscriberDataBase:用户数据库)并发送到接口Gi处理模块。
图6中示出传统方式下接收GTP数据包的过程。图中用斜线框表示GTP任务从协议栈任务socket缓冲区中读出数据包的处理,用灰色框表示GTP任务对自己缓冲区中数据包的处理,用平行于时间轴的无色框表示协议栈任务从网络接口接收数据包,用垂直于时间轴的无色框表示每个时刻GTP数据包缓冲区的情况,这里假设GTP任务缓冲区的最大长度为5个数据包。
在该图中,假设第一个时间间隔内,协议栈任务获取2个数据包,并存放到自己的socket缓冲区中,间隔时间到后,GTP任务从中读出并处理掉这2个数据包;在第二个时间间隔内,协议栈任务获取了5个数据包,间隔时间到后,GTP任务从socket缓冲区中读出这5个数据包但只处理掉其中的3个数据包;在第三个时间间隔内,协议栈任务又获取了4个数据包,但由于GTP数据包缓冲区只剩下3个数据包的空间,所以GTP任务从socket缓冲区中读出3个数据包并在下一个时间间隔到之前处理掉了缓冲区中的4个数据包,…。
这里,将数据包先存放到GTP任务自己的数据包缓冲区中是为了避免对单个数据包的处理会长时间占用CPU。
可见,同样地,在这种数据包的接收过程中也存在接收效率低下的明显缺陷,具体表现在以下四个方面:
一.所有数据包在网络协议栈处理任务与GTP任务中两次排队,不仅使可排队的数据包数目受到Socket缓冲区和GTP缓冲区的双重限制,而且排队操作重复;
二.出于产品通用性方面的考虑,标准Socket API本身(recv函数)的处理效率常常很低,甚至比GTP其他处理还耗时(图6中示意出该特点,即对单个数据包处理时,斜线框长度大于灰色框长度),当数据包越多时,有效处理效率(即将数据包发送到Gi接口模块)则越低;
三.由于数据包是在网络协议处理任务(协议栈任务)与GTP任务两个任务之间传递的,GTP任务只能每隔固定的时间间隔读取socket缓冲区中的数据包进行处理,而恰恰是这个固定时间间隔造成了某些间隔中GTP处理能力的过剩,如图6中的第一个时间间隔内,而另外一些间隔中因出现处理能力不足则造成丢包,如图6中的第三个时间间隔内只处理了3个数据包,当紧接着再读入4个数据包时出现缓冲区满,被迫丢包,如此产生的积累效应,即使GTP数据包缓冲区开得很大,这种情形也会出现;
四.如前所述,在协议栈任务本身接收GTP包的处理过程中,会出现多次分发,如图5中示出的IP层输入函数IP_Input在结束之前分发到UDP层输入函数UDP_Input,UDP层在按照数据包中的端口号依次找到对应的接收socket,并挂到它的接收缓冲区中,而实际上GTP层常常在固定的端口号(直接反映同时支持的协议版本号)上接收数据包,而和数据包进入时的网络接口和SOCKET结构并不相关,在数据包接收过程中的这些上传分发操作,包括所使用的SOCKET结构是无用的。
综上所述,在传统GSN的实现中,GTP模块通过标准socket API与TCP/IP底层协议栈发生关系,具体地,在发送数据包的过程中,当有数据包经过GTP处理需要从GGSN发送到对端SGSN时,GTP最终会利用socket API标准发送函数将其发送出去,而该过程存在影响效率的缺陷;在接收数据包过程中,作为应用任务,GTP不得不采用每隔固定的时间间隔从socket的接收缓冲区中读出所有网络协议处理任务在该时间间隔内放在GTP缓冲区中数据包的方法进行GTP-U数据包的收集,其过程中也存在明显的接收效率低下的问题。
发明内容
本发明的目的是设计一种GTP数据包的快速转发处理方法,通过改善GPRS骨干网设备GGSN和SGSN上的GTP协议数据包转发处理过程,使得相对于基于传统TCP/IP协议栈的转发处理过程,GTP协议数据包转发效率明显提高,GGSN和SGSN设备的吞吐量也相应大幅度提高。
实现本发明目的的技术方案是这样的:一种GTP数据包的快速转发处理方法,包括GTP协议栈的数据包发送与数据包接收处理方法,其特征在于:
A.所述GTP数据包的发送进一步包括以下处理步骤:
a.将原本由SOCKET中间层完成的一些操作及一些准备工作上提到GTP应用层,利用GTP-U快速发送准备函数完成;
b.在SOCKET中间层,利用新增的SOCKET层处理函数对数据包进行处理并越过UDP传输层;
c.在IP层,利用新增的IP层快速发送处理函数对数据包进行处理并通过网络接口进行数据发送;
B.所述GTP数据包的接收进一步包括以下处理步骤:
d.GTP应用层进行准备工作,注册GTP-U快速接收处理的回调函数;
e.在网络接口收到数据包并为其创建MBUF结构时,在首部预留一空间,用于构造数据包的UDP头和IP头;
f.在GTP数据包到达UDP传输层后,利用修改定制后的原UDP层输入处理函数对数据包进行处理,并越过SOCKET中间层,直接调用GTP应用层的回调函数将数据包直接投递到GTP任务的缓冲区中。
所述步骤a中上提到GTP应用层的操作,包括:
a1.GTP任务在初始化时创建发送用SOCKET结构,并通过调用相应函数获取该SOCKET结构的指针,单独存储;
a2.在每个用户的分组数据协议(PDP)上下文确定后,按隧道标识(TID)向用户数据库(SDB)存入该用户与数据转发相关的信息。
所述步骤a2中,所述的与数据转发相关的信息至少包括合法的发送到对端的通用无线分组业务(GPRS)支持节点(GGSN)的IP地址、端口号及本地的IP地址及端口号。
所述步骤a中,还包括在数据包发送时GTP应用层执行的操作,包括:
a3.从Gi接口模块接收下行MBUF数据包;
a4.取数据包长度,并检查数据包是否含有合法数据;
a5.对含有合法数据的数据包帖用户数据报协议(UDP)头和IP头;
a6.参考用户数据库(SDB)并参照虚拟的抽象头模板,进行用户数据报协议(UDP)头和IP头字段计算与填充。
所述步骤a6中所指的抽象头模板,实际上是数据包UDP头和IP头字段中包括IP首部长度、IP版本号、服务类型、生存时间、传输层协议号、源IP地址、目的IP地址、源端口号及目的端口号的字段值的集合,这些字段值是从用户数据库(SDB)的相关字段中提取或计算出来的,然后一一填充到数据包相应字段中。
所述步骤b中,新增的SOCKET层处理函数是针对GTP-U的快速发送接口函数,该函数的处理进一步包括:
b1.对包括高水平位的设置、SOCKET状态的发送SOCKET本身及GTP数据包进行检查;
b2.针对“对当前数据包关闭路由”和“从指定接口进行发送”选项进行相应操作;
b3.对GTP信令进行UDP校验与计算,和在指定了“对当前数据包进行UDP校验与计算”选项时,对当前数据包进行UDP校验与计算;
b4.取出存储在UDP传输层协议控制块中的包括IP选项、IP多播选项信息,直接调用新增的IP层处理函数对数据包进行进一步处理;
b5.针对“对当前数据包关闭路由”和“从指定接口进行发送”选项进行相应操作;
b6.根据IP层处理函数的返回值相应返回。
所述步骤c中新增的IP层处理函数是针对GTP-U的快速发送IP接口函数,该函数的处理进一步包括:
c1.填充其他IP头字段并选择输出接口;
c2.通过该输出接口发送数据包;
c3.根据底层处理函数的返回值相应返回。
所述步骤c3中的返回是“发送成功与否”的结果指示。
所述步骤d中GTP应用层注册的GTP-U快速接收处理回调函数的主要操作包括:
d1.按信令包或数据包区分每个接收到的GTP数据包,并送入相应的缓冲队列中;
d2.释放CPU,使队列中的GTP数据包可以被处理转发到Gi接口模块。
所述的步骤f中的修改是在原UDP层输入处理函数UDP_input函数上进行定制、修改,该函数的处理进一步包括:
f1.丢弃数据包中仍含有的IP选项;
f2.取出IP头和用户数据报文协议(UDP)头,丢弃已经发生数据丢失的数据包;
f3.根据数据包的目的端口号决定处理方式,如果发现是GTP包,则进行相应处理,否则按照UDP_input函数原有流程对其进行后续的处理。
所述步骤f3中对GTP数据包进行的操作包括:
f31.如果是GTP信令包,则进行校验和计算,否则按照“对当前数据包进行UDP校验与计算”的选项设置,对当前数据包选择性地进行校验和计算;
f32.去掉数据包中的用户数据报协议(UDP)和IP包头,直接调用所述GTP任务注册的回调函数将数据包直接投递到GTP任务的缓冲区中。
本发明的方法,是根据GTP特点裁剪GSN设备底层TCP/IP协议栈,从而实现快速转发GTP数据包的处理流程,可大大提高设备处理核心代码的效率和提高GSN设备的吞吐量。
传统GTP协议栈SOCKET、UDP层处理曾经一度成为数据转发速度的瓶颈,如果采用本发明的优化方法,就可使该部分瓶颈得到突破,能完全达到IP、链路层的快速处理性能,同时也达到了在提高GTP转发性能的情况下承载更多业务的效果。
附图说明
图1是GPRS系统结构及GGSN在GPRS网络中的位置示意图。
图2是GPRS传输平面示意图。
图3是本发明为GTP数据包快速转发而优化的GTP协议栈结构及处理流程示意图。
图4是GGSN设备数据发送及应用实施控制过程示意图。
图5是GGSN设备数据接收过程示意图。
图6是传统方式下接收并处理GTP数据包的过程及效果示意图。
图7是本发明快速接收并处理GTP数据包的过程及效果示意图。
具体实施方式
本发明进行GTP数据包快速发送的总体方案是:首先提取出对每个用户的所有数据包都进行的与发送相关的操作,并以“发送准备工作”的方式在发送之前完成;然后调用GTP-U快速发送接口函数进行发送。本发明进行GTP数据包快速接收的总体方案是:协议栈任务在UDP层获取到数据包时并不投递到SOCKET缓冲区,而是通过调用GTP任务的回调函数直接投递到GTP任务的缓冲区中。
参见图3,本发明为实现快速转发GTP-U数据包,对GTP协议栈进行了优化设计。协议栈结构包括GTP应用层、SOCKET中间层、UDP传输层和IP网络层,及网络接口。
图中用下行箭头表示数据的快速发送流程。首先将原本由SOCKET中间层完成的一些操作及一些准备工作上提到GTP层完成;在SOCKET中间层,根据数据包发送特点,利用新增的SOCKET层处理函数对数据包进行处理并越过UDP传输层;在IP网络层,根据数据包发送特点,利用新增的IP层处理函数(快速发送转发函数)对数据包进行处理,并通过网络接口进行数据发送。
图中用上行箭头表示数据的快速接收流程。在来自网络接口的数据包被预留头空间并逐步到达UDP层后,经过修改定制的原UDP层输入处理函数会越过SOCKET层,直接通过GTP任务注册的回调函数,即GTP-U快速接收接口函数,将其直接投递到GTP任务的缓冲区中。
参见图4,本发明在SOCKET层上新增一接口函数,即GTP-U快速发送接口函数,该函数作为增加到API库中的新函数,集成了原来SOCKET和UDP层的处理,但只含有“为GTP应用服务的、只针对MBUF数据包”的处理,并且不进行数据发送时的UDP校验与计算某些无关选项的处理。IP层的发送“定制操作”则简化为“只为GTP应用服务”,通过在IP层增加新函数实现。
本发明的快速发送过程可分为三个大步骤进行,包括:
第一大步骤:发送结构准备。
GTP-U任务在初始化时创建发送用的Socket,并通过GetSock函数获取该Socket结构的指针,进行单独存储;
在每个用户的PDP(分组数据协议)上下文确定后,将该用户的与数据转发相关的信息存入用户数据库(SDB:Subscriber DateBase)中,该相关的信息包括对端SGSN的IP地址、端口号,本地IP地址、端口号等。
第二大步骤:在数据包发送过程中对GTP-U模块进行处理。
每当GTP-U模块从Gi接口的IP模块接收到下行MBUF数据包并提交到Socket层前,先进行如下处理:
取数据包长度,检查数据包是否含有合法数据;
对数据包帖UDP+IP头;
参考用户数据库(SDB),并参照抽象头模板进行UDP+IP头字段计算和填充(此处的“抽象头”模板是并不实际存在的,而是表示一种从SDB相关字段提取或计算的操作,以节约存储空间),该抽象头模板包括:IP首部长度,IP版本号,服务类型,生存时间,传输层协议号,源IP地址,目的IP地址,源端口号,目的端口号。
第三大步骤:在数据包发送过程中,TCP/IP协议栈进行处理,包括:
GTP-U数据包完成帖UDP+IP头的处理后,通过“GTP-U快速发送接口函数”进行数据包的发送,主要包括:
对发送Socket本身(如高水平位等的设置、Socket状态等)及GTP数据包进行检查;
针对“对当前数据包关闭路由”和“从指定接口进行发送”选项进行相应操作;
对GTP信令进行UDP校验和计算,和在指定了“对当前数据包进行UDP校验与计算”选项时,对当前数据包进行UDP校验与计算;
取出存储在UDP传输层协议控制块中的包括IP选项、IP多播选项信息,直接调用新增的IP层处理函数对数据包进行进一步处理,该函数填充其他IP头字段并选择输出接口,然后通过IP层把数据包发送出去;
针对“对当前数据包关闭路由”和“从指定接口进行发送”选项进行相应操作;
根据IP层处理函数的返回值相应返回(由于本函数只适用于UDP数据包,将不返回实际发送的字节数,而是“发送成功与否”的结果指示,因为UDP数据包必须一次性发送出去)。
参见图5,本发明在UDP协议层上新增一接口,GTP-U快速接收接口函数。
本发明的快速接收过程由两大步骤组成:
第一步骤:利用UDP模块对接收过程中的数据包进行处理:
IP层根据协议开关表(公用接口)将GTP数据包交给UDP模块的UDP_Input函数后,进行如下处理:
丢弃数据包中仍含有的IP选项;
取出IP头和UDP头,对已经发生数据丢失的数据包进行丢弃处理;
根据数据包目的端口号决定处理方式,如果是GTP包,则首先区分其是否是信令包,是信令包的就进行校验和计算,否则按照“对当前数据包进行UDP校验与计算”选项设置,对当前数据包有选择地进行校验和计算;然后去掉UDP+IP包头,调用GTP-U快速接收接口函数进行快速接收处理;对除GTP包以外的其他数据包按原有操作进行处理;
第二步骤:在数据包接收过程中利用GTP-U模块进行的处理:
对每个接收到的GTP-U数据包,首先区分其是信令包还是数据包,并将它们送入相应队列中;
释放CPU,使队列中的GTP数据包可以处理转发到Gi接口模块。
参见图7,与图6所示对照,图7中示例出GTP数据包快速接收过程,图中用灰色框表示GTP任务对自己缓冲区中数据包的处理,是一种不受时间间隔限制的处理。在快速接收方式下,协议栈任务在UDP层获取的数据包并不投递到socket的缓冲区中,而是通过调用GTP任务的回调函数直接投递到GTP任务的缓冲区中(结合参见图5)。由于绕过了socket层处理并取消了固定时间间隔处理的限制,使GGSN设备的无效处理大为减少,使可处理的数据包数及可提供的业务量大幅度增加。
除此之外,通过一些技术手段,还可明显提高转发速度。例如,上面提到的,链路层在数据包从Gi接口或Gn接口进入GGSN设备时,在构造后的MBUF首部预留适当空间,这样对所有上层协议的帧头处理就不再需要动态申请内存空间。在具体产品开发时还可以利用底层OS的特点,通过测试找到原来标准SocketAPI函数,对UDP层处理过程中的耗时操作集中进行研究,在功能保持不变的情况下尽可能去掉这些耗时操作,例如,非抢占操作系统下在操作前后暂时提升与恢复任务优先级。
经在CPCI机框上测量并统计优化前后分别发送和接收数据包长度都为256字节的3万、5万、10万和20万个数据包时SOCKET+UDP层的处理时间,和在1秒之内完成四种(优化前发送、快速发送、优化前接收及快速接收)处理的数据包数量的上限(数据误差±10ms),测量结果如下表中所示,所列数据充分证明了采用本发明优化方法后,大大提高了发送、接收的转发速度,和提高了单位时间内处理数据包的数量。
3万包 | 5万包 | 10万包 | 20万包 | 每秒处理上限 | |
优化前发送 | 1230ms | 2060ms | 4150ms | 8240ms | 2.5万包(1030ms) |
快速发送 | 70ms | 100ms | 190ms | 370ms | 52万包(970ms) |
优化前接收 | 1770ms | 2960ms | 5930ms | 11950ms | 2万包(1190ms) |
快速接收 | 10ms以内 | 30ms | 60ms | 130ms | 150万包(970ms) |
经在GGSN设备上基于VOS操作系统实现TCP/IP协议栈,并采用本发明的快速发送与接收的优化方案,在保持TCP/IP协议栈原有功能和Socket API标准接口函数的情况下,完全达到了提高GTP数据包吞吐量的目的。
Claims (11)
1.一种GTP数据包的快速转发处理方法,包括GTP协议栈的数据包发送与数据包接收处理方法,其特征在于:
A.所述GTP数据包的发送进一步包括以下处理步骤:
a.将原本由SOCKET中间层完成的一些操作及一些准备工作上提到GTP应用层,利用GTP-U快速发送准备函数完成;
b.在SOCKET中间层,利用新增的SOCKET层处理函数对数据包进行处理并越过UDP传输层;
c.在IP层,利用新增的IP层快速发送处理函数对数据包进行处理并通过网络接口进行数据发送;
B.所述GTP数据包的接收进一步包括以下处理步骤:
d.GTP应用层进行准备工作,注册GTP-U快速接收处理的回调函数;
e.在网络接口收到数据包并为其创建MBUF结构时,在首部预留一空间,用于构造数据包的UDP头和IP头;
f.在GTP数据包到达UDP传输层后,利用修改定制后的原UDP层输入处理函数对数据包进行处理,并越过SOCKET中间层,直接调用GTP应用层的回调函数将数据包直接投递到GTP任务的缓冲区中。
2.根据权利要求1所述的一种GTP数据包的快速转发处理方法,其特征在于:所述步骤a中上提到GTP应用层的操作,包括:
a1.GTP任务在初始化时创建发送用SOCKET结构,并通过调用相应函数获取该SOCKET结构的指针,单独存储;
a2.在每个用户的分组数据协议(PDP)上下文确定后,按隧道标识(TID)向用户数据库(SDB)存入该用户与数据转发相关的信息。
3.根据权利要求2所述的一种GTP数据包的快速转发处理方法,其特征在于:所述步骤a2中,所述的与数据转发相关的信息至少包括合法的发送到对端的通用无线分组业务(GPRS)支持节点(GGSN)的IP地址、端口号及本地的IP地址及端口号。
4.根据权利要求1所述的一种GTP数据包的快速转发处理方法,其特征在于所述步骤a中,还包括在数据包发送时GTP应用层执行的操作,包括:
a3.从Gi接口模块接收下行MBUF数据包;
a4.取数据包长度,并检查数据包是否含有合法数据;
a5.对含有合法数据的数据包帖用户数据报协议(UDP)头和IP头;
a6.参考用户数据库(SDB)并参照虚拟的抽象头模板,进行用户数据报协议(UDP)头和IP头字段计算与填充。
5.根据权利要求4所述的一种GTP数据包的快速转发处理方法,其特征在于:所述步骤a6中所指的抽象头模板,实际上是数据包UDP头和IP头字段中包括IP首部长度、IP版本号、服务类型、生存时间、传输层协议号、源IP地址、目的IP地址、源端口号及目的端口号的字段值的集合,这些字段值是从用户数据库(SDB)的相关字段中提取或计算出来的,然后一一填充到数据包相应字段中。
6.根据权利要求1所述的一种GTP数据包的快速转发处理方法,其特征在于:所述步骤b中,新增的SOCKET层处理函数是针对GTP-U的快速发送接口函数,该函数的处理进一步包括:
b1.对包括高水平位的设置、SOCKET状态的发送SOCKET本身及GTP数据包进行检查;
b2.针对“对当前数据包关闭路由”和“从指定接口进行发送”选项进行相应操作;
b3.对GTP信令进行UDP校验与计算,和在指定了“对当前数据包进行UDP校验与计算”选项时,对当前数据包进行UDP校验与计算;
b4.取出存储在UDP传输层协议控制块中的包括IP选项、IP多播选项信息,直接调用新增的IP层处理函数对数据包进行进一步处理;
b5.针对“对当前数据包关闭路由”和“从指定接口进行发送”选项进行相应操作;
b6.根据IP层处理函数的返回值相应返回。
7.根据权利要求1所述的一种GTP数据包的快速转发处理方法,其特征在于:所述步骤c中新增的IP层处理函数是针对GTP-U的快速发送IP接口函数,该函数的处理进一步包括:
c1.填充其他IP头字段并选择输出接口;
c2.通过该输出接口发送数据包;
c3.根据底层处理函数的返回值相应返回。
8.根据权利要求7所述的一种GTP数据包的快速转发处理方法,其特征在于:所述步骤c3中的返回是“发送成功与否”的结果指示。
9.根据权利要求1所述的一种GTP数据包的快速转发处理方法,其特征在于所述步骤d中GTP应用层注册的GTP-U快速接收处理回调函数的主要操作包括:
d1.按信令包或数据包区分每个接收到的GTP数据包,并送入相应的缓冲队列中;
d2.释放CPU,使队列中的GTP数据包可以被处理转发到Gi接口模块。
10.根据权利要求1所述的一种GTP数据包的快速转发处理方法,其特征在于:所述的步骤f中的修改是在原UDP层输入处理函数UDP_input函数上进行定制、修改,该函数的处理进一步包括:
f1.丢弃数据包中仍含有的IP选项;
f2.取出IP头和用户数据报文协议(UDP)头,丢弃已经发生数据丢失的数据包;
f3.根据数据包的目的端口号决定处理方式,如果发现是GTP包,则进行相应处理,否则按照UDP_input函数原有流程对其进行后续的处理。
11.根据权利要求10所述的一种GTP数据包的快速转发处理方法,其特征在于所述步骤f3中对GTP数据包进行的操作包括:
f31.如果是GTP信令包,则进行校验和计算,否则按照“对当前数据包进行UDP校验与计算”的选项设置,对当前数据包选择性地进行校验和计算;
f32.去掉数据包中的用户数据报协议(UDP)和IP包头,直接调用所述GTP任务注册的回调函数将数据包直接投递到GTP任务的缓冲区中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011362960A CN1172492C (zh) | 2001-10-15 | 2001-10-15 | 通用无线业务隧道协议数据包的快速转发处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011362960A CN1172492C (zh) | 2001-10-15 | 2001-10-15 | 通用无线业务隧道协议数据包的快速转发处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1412987A true CN1412987A (zh) | 2003-04-23 |
CN1172492C CN1172492C (zh) | 2004-10-20 |
Family
ID=4673561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011362960A Expired - Fee Related CN1172492C (zh) | 2001-10-15 | 2001-10-15 | 通用无线业务隧道协议数据包的快速转发处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1172492C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377547C (zh) * | 2005-03-16 | 2008-03-26 | 北京北方烽火科技有限公司 | 一种sgsn设备的数据高效转发方法 |
CN100553258C (zh) * | 2006-03-07 | 2009-10-21 | 中国科学院声学研究所 | 一种嵌入式网络应用中udp/ip协议栈实现方法 |
CN101369983B (zh) * | 2008-10-15 | 2010-12-22 | 杭州华三通信技术有限公司 | 内存缓冲区管理方法及系统 |
CN102437951A (zh) * | 2012-01-29 | 2012-05-02 | 山东黄金矿业(莱州)有限公司焦家金矿 | Gprs通讯动态ip的管理方法 |
CN102957600A (zh) * | 2011-08-19 | 2013-03-06 | 中兴通讯股份有限公司 | 一种数据报文转发方法及装置 |
WO2016058424A1 (zh) * | 2014-10-15 | 2016-04-21 | 中兴通讯股份有限公司 | 一种数据传输方法、装置、系统及存储介质 |
CN106105119A (zh) * | 2014-01-20 | 2016-11-09 | 诺基亚通信公司 | 操作网络实体的方法 |
CN106454814A (zh) * | 2016-11-10 | 2017-02-22 | 中国科学院计算技术研究所 | 一种用于gtp隧道通信的系统与方法 |
WO2021008082A1 (zh) * | 2019-07-16 | 2021-01-21 | 广州爱浦路网络技术有限公司 | 一种基于gtp协议的接口与路由分发方法和装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102413455B (zh) * | 2011-12-22 | 2014-01-15 | 北京北方烽火科技有限公司 | 一种gtp-u数据转发方法 |
-
2001
- 2001-10-15 CN CNB011362960A patent/CN1172492C/zh not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377547C (zh) * | 2005-03-16 | 2008-03-26 | 北京北方烽火科技有限公司 | 一种sgsn设备的数据高效转发方法 |
CN100553258C (zh) * | 2006-03-07 | 2009-10-21 | 中国科学院声学研究所 | 一种嵌入式网络应用中udp/ip协议栈实现方法 |
CN101369983B (zh) * | 2008-10-15 | 2010-12-22 | 杭州华三通信技术有限公司 | 内存缓冲区管理方法及系统 |
CN102957600A (zh) * | 2011-08-19 | 2013-03-06 | 中兴通讯股份有限公司 | 一种数据报文转发方法及装置 |
CN102957600B (zh) * | 2011-08-19 | 2017-11-10 | 中兴通讯股份有限公司 | 一种数据报文转发方法及装置 |
CN102437951A (zh) * | 2012-01-29 | 2012-05-02 | 山东黄金矿业(莱州)有限公司焦家金矿 | Gprs通讯动态ip的管理方法 |
CN106105119A (zh) * | 2014-01-20 | 2016-11-09 | 诺基亚通信公司 | 操作网络实体的方法 |
WO2016058424A1 (zh) * | 2014-10-15 | 2016-04-21 | 中兴通讯股份有限公司 | 一种数据传输方法、装置、系统及存储介质 |
CN106454814A (zh) * | 2016-11-10 | 2017-02-22 | 中国科学院计算技术研究所 | 一种用于gtp隧道通信的系统与方法 |
WO2021008082A1 (zh) * | 2019-07-16 | 2021-01-21 | 广州爱浦路网络技术有限公司 | 一种基于gtp协议的接口与路由分发方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1172492C (zh) | 2004-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1188991C (zh) | 用于可靠的和低时延的分组传输的通信设备和方法 | |
US11196677B2 (en) | Heterogeneous multi-protocol stack method, apparatus, and system | |
CN1305276C (zh) | 一种快速处理实时媒体流数据包的方法及其系统 | |
CN114189571B (zh) | 用于实施加速网络分组处理的装置和方法 | |
US8542585B2 (en) | Method and system for transmit scheduling for multi-layer network interface controller (NIC) operation | |
CN1918825A (zh) | 发送和接收具有处理时间信息的控制协议数据单元 | |
US8605752B2 (en) | Communication apparatus, communication method, and computer program | |
US20030133457A1 (en) | Packet scheduling method and apparatus for downlink transmission to mobile terminals | |
CN1172492C (zh) | 通用无线业务隧道协议数据包的快速转发处理方法 | |
CN101047640A (zh) | 无线接入承载数据传输方法 | |
CN1836169A (zh) | 在移动电信系统中的自动ip话务优化 | |
CN1356831A (zh) | 用于支持服务质量保证的缓冲区管理和在数据交换中的数据流控制 | |
CN1682502A (zh) | 用于传输具有不同QoS属性的数据的装置、系统和方法 | |
CN1921457A (zh) | 一种网络设备和基于多核处理器的报文转发方法 | |
CN1674485A (zh) | 动态提供计算机系统资源的方法和系统 | |
CN101040492A (zh) | 无线通信系统中基于分组的切换系统和方法 | |
CN1574983A (zh) | 用于移动数据通信的服务使用记录 | |
CN1708959A (zh) | 软件和硬件包流转发的方法、路由器或交换机 | |
CN100347978C (zh) | 用于处理分组交换通信系统中错误数据、将分组拆分并部分处理的系统和方法 | |
CN1835476A (zh) | 分组传输方法和设备 | |
CN1802638A (zh) | 路由提示 | |
CN1503474A (zh) | 无线接入网络系统、无线接入方法、及控制设备 | |
CN1910868A (zh) | 用于控制队列缓冲器的方法及装置 | |
CN1901546A (zh) | 信息处理装置 | |
EP1104141A2 (en) | System for generating composite packets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041020 Termination date: 20161015 |
|
CF01 | Termination of patent right due to non-payment of annual fee |