分组域网络中减少数据ip分片数量的方法

文档序号:7951824阅读:294来源:国知局
专利名称:分组域网络中减少数据ip分片数量的方法
技术领域
本发明涉及通信领域,尤其涉及一种移动通信分组域网络中减少数据IP分片数量的方法。
背景技术
TCP/IP协议是目前广域网和局域网上都广泛使用的通讯协议,在不同的链路层上能够传输的最大IP包的长度是有限制的,这个最大的长度称为MTU(最大传输单元)。
IP包在路由过程中,如果其长度大于路由器发送接口的MTU,则这个IP包需要被分成多个长度均不大于MTU的IP包进行发送,这些短的IP包中带有一个相同的16比特标识,用以表明这些短的IP包是属于同一个长的IP包的分片,这个过程称为分片(Fragment)。被分片的IP包在目的接收端根据标识被重新拼装成一个长的IP包,这个过程被称为重组(Defragment)。在接收端设备对分片后的IP包进行重组之前,必须缓存较早到达的分片直到相同标识的最后一个分片达到,这将使设备的处理性能下降。
TCP层位于IP层以上,其能够提供面向连接的、可靠的、保证顺序的字节流服务。
在移动通讯网络的分组域中,移动终端(如手机)通过移动网络接入公共数据网络(比如因特网),在应用层一般使用的是TCP/IP协议,由于移动通讯的特点,终端用户发出的原始IP包进入移动网络后,一般都要采用隧道协议重新封装。通过隧道协议对IP包进行处理的过程一般为将一个原始IP包使用隧道协议格式封装在一个新的IP包中,原始IP包作为新的IP包隧道协议层的净荷,新IP包的源IP地址和目的IP地址与原始IP包一般不同,新IP包发送到它的目的地址后,目的节点将原始IP包进行解封装,根据目的节点在网络中的不同位置,再次使用隧道协议对原始IP包进行封装并发送出去,或者直接按照原始IP包真正的目的地址进行路由。
以WCDMA系统分组域为例,假设用户的原始数据包在网络设备间传输时,采用GTP的隧道封装协议对数据进行处理,下面结合如图1所示的3GPP23.060 5.9.0中的WCDMA系统协议栈描述所述处理过程在建立TCP连接时,终端和服务器机彼此通告的最大报文段长度仍然按照各自支持的MTU减去IP报头和TCP报头的长度来计算,即最大报文段长度(MSS)=本端支持的MTU-IP包头长度-TCP包头长度。通常计算的结果为1460字节(以太网封装(RFC894)中允许的IP包最大长度为1500字节,由于以太网标准的普及,目前绝大多数IP节点的MTU都设置为1500字节。IPv4头部长度一般是20个字节,TCP头部长度一般也是20个字节,所以绝大多数IPv4节点通告自己的最大报文段长度是1460个字节。)。
在终端与服务器使用TCP协议通信过程中,终端发送出原始IP数据包,记为IP_origin(原始IP包),此时该IP_origin的长度等于TCP数据长度加上IP包头长度和TCP包头长度,其中TCP数据长度不大于通信双方中较小的MSS值,目的地址为公共数据网(如因特网)上某个服务器(以下简称服务器)的IP地址。所述IP_oigin通过PDCP协议承载,到达接入网网络节点(UTRAN)后,被UTRAN进行解封装,得到IP_origin。UTRAN使用GTP协议(GTP协议分为v0和v1版本,这里以v1版本为例,以下描述与此雷同)再次封装IP_origin,产生一个新的IP包,目的地址填写为服务GPRS支持节点(SGSN)的IP地址,并发送出去。SGSN接收到这个GTP包以后,将IP_origin解封装出来,再次使用GTP协议进行封装,也产生一个新的IP包,目的地址填写网关GPRS支持节点(GGSN)的IP地址,发送出去。GGSN接收到这个GTP包以后,将IP_origin剥离出来,GGSN根据IP_origin中的目的地址进行路由查找,将IP_origin发送到公共数据网上,最后到达服务器。
上述描述了从终端发送数据到服务器的过程,从服务器向终端发送数据的过程与此类似。在这个过程中UTRAN、SGSN、GGSN都使用了GTP协议对IP_origin进行封装,重新生成的IP包,如表1所示

表1由表1可以看出,当终端发送的长度为1500字节的IP包进入移动通信网络后,经过GTP隧道协议封装,新生成的IP包的长度比无线终端发出的IP_origin长度增加36~40个字节,即新的IP包长度增加到1536~1540字节,超过了UTRAN、SGSN和GGSN默认的MTU,即1500个字节,这样UTRAN、SGSN和GGSN不得不在发送这些新IP包时进行分片,在接收时进行重组。
由上述可以看出,终端和服务器之间使用TCP协议的IP包在进入移动通讯网络之前长度可能已经接近或达到1500字节,使用GTP协议进行封装后,长度超过1500字节,因此必须进行分片处理。而且由于TCP协议能够提供可靠的、保证顺序的传输,因此当前因特网提供的大多数业务都采用TCP协议,如网页浏览使用的HTTP协议,文件下载使用的FTP协议,email服务使用的SMTP和POP协议,多媒体短消息使用的MMS协议(使用WAP2.0以上协议版本时)等等。因此分组域网络设备将产生并接收到大量的IP分片包,这将降低网络设备的处理性能。

发明内容
本发明的目的是提供一种分组域网络中减少数据IP分片数量的方法,通过本发明,能够减少分组域网络设备间的IP包分片,降低数据包处理的时延,并提高分组设备的处理能力。
本发明的目的是通过以下技术方案实现的本发明提供一种分组域网络中减少数据IP分片数量的方法,其包括A、通信系统中的分组网络设备根据设定的MSS参数阈值对所传输的终端和服务器间的传输控制协议TCP连接消息中携带的最大传输单元MSS参数值进行调整,并将所述调整后的TCP连接消息发送出去;B、所述终端或服务器通过所述TCP连接消息中携带的MSS参数获知对端支持的最大报文段长度,并将其与自己支持的最大报文段长度进行比较,并从中选择较小的值对发送的TCP数据进行分段处理。
其中,所述步骤A具体包括A1、分组网络设备从传输的数据包中筛选出终端和服务器间的传输控制协议TCP连接消息;A2、判断所述TCP连接消息中携带的最大传输单元MSS参数是否超过设定的阈值,当超过时,则对所述MSS参数值进行下调,使其不超过设定的阈值,然后将所述TCP连接消息封装并发送出去;当未超过设定的阈值时,则保持所述MSS参数值不变,并将所述TCP连接消息进行封装后发送出去。
其中,在所述步骤A1之前还包括根据终端和服务器之间的各个设备之间的最大传输单元MTU,以及所使用的隧道封装协议的特点计算并设定MSS参数阈值。
其中,所述步骤A1具体包括A11、所述分组网络设备根据TCP连接消息的典型长度从所传输的终端和服务器间的数据包中筛选出符合TCP连接消息典型长度的数据包;A12、从筛选出的所述数据包中去除属于分片的IP包,并选择出协议类型为TCP协议的IP包;A13、根据所述TCP包头部中的同步字段SYN从所述TCP包中筛选出TCP连接消息。
其中,所述步骤A11具体包括A111、所述分组网络设备对接收到的使用隧道协议封装过的终端与服务器之间的数据包进行解封装,得到终端与服务器之间传输的原始IP包;A112、所述分组网络设备判断所述IP包的长度是否符合TCP连接消息的典型长度,若符合,则执行步骤A12;否则,将所述IP包进行封装后发送出去。
其中,所述步骤A12具体包括A121、所述分组网络设备根据所述IP包的包头中的更多分片标志和片偏移判断所述IP包是否属于分片的IP包,当确认不属于分片的IP包时,则执行步骤A122;否则,将所述IP包进行封装后发送出去;A122、根据所述IP包的包头中的协议字段判断所述净荷的协议类型是否为TCP协议,当确认为TCP协议时,则执行步骤A13;否则,将所述IP包进行封装后发送出去。
其中,所述步骤A13具体包括根据所述IP包的包头部中的同步字段SYN判断所述IP包是否为TCP连接消息,当确认是时,则执行步骤A2;否则,将所述IP包进行封装后发送出去。
其中,所述步骤B还包括根据调整后的MSS参数对TCP连接消息重新计算TCP校验和。
其中,所述TCP连接消息包括终端向服务器发送的TCP连接消息和/或服务器向终端发送的TCP连接消息。
其中,所述服务器包括通过TCP协议与无线终端设备进行通讯的服务器、主机或终端设备。
其中,所述移动通信系统包括WCDMA、GPRS、CDMA2000或TD-SCDMA系统。
其中,所述IP包包括IPv4包和/或IPv6包。
由上述本发明提供的技术方案可以看出,移动通信系统中的分组网络设备根据设定的MSS参数阈值对所传输的终端和服务器间的传输控制协议TCP连接消息中携带的最大传输单元MSS参数值进行调整,并将所述调整后的TCP连接消息发送出去;所述终端或服务器通过所述TCP连接消息中携带的MSS参数获知对端支持的最大报文段长度,并将其与自己支持的最大报文段长度进行比较,并从中选择较小的值对发送的TCP数据进行分段处理。通过本发明将MSS参数值进行调整,能够使分组网络设备之间传输的使用隧道协议封装后的终端和服务器之间的数据包长度不大于分组网络设备之间的路径MTU(最大传输单元),因此本发明能够减少分组域网络设备间的IP包分片,降低数据包处理的时延,并提高分组设备的处理能力。
另外,本发明中,分组设备通过首先对所传输的终端和服务器之间的IP数据包的长度是否符合TCP连接消息典型长度进行判断的方法,从而在基本不增加额外处理开销的情况下从传输的数据包中筛选出终端和服务器之间TCP连接消息。


图1为背景技术中3GPP 23.060 5.9.0中的WCDMA系统协议栈;图2为本发明提供的实施例的流程图。
具体实施例方式
根据业务特点进行分析和实际统计,移动通讯分组网络设备间产生的绝大部分IP分片都是承载的用户TCP业务的数据包,如果当终端与服务器间建立TCP连接时,能够减小TCP连接消息中携带的MSS参数值,使得终端或服务器发出的IP包经过GTP协议封装后产生的新IP包的长度小于分组网络设备的MTU(通常也是1500字节),那么所述分组网络设备接收到的IP分片包就能够大大减少。基于这种思想,本发明提供了一种分组域网络中减少IP分片数量的方法,通过该方法不需要用户修改终端或服务器上的MTU参数,只需要在分组网络设备上进行很小的改动即可实现目的。该方法中,首先设定MSS参数阈值,MSS参数阈值根据终端和服务器链路之间各个设备之间的最大传输单元MTU,以及所使用的隧道封装协议的特点计算并设定。通常等于1460字节,减去使用隧道封装协议时原始IP包通常增加的长度(对GTP协议来说是40字节),即MSS参数阈值设置为1420字节。然后移动通信系统中的分组网络设备根据设定的MSS参数阈值对所传输的终端和服务器间的传输控制协议TCP连接消息中携带的最大传输单元MSS参数值进行调整,并将所述调整后的TCP连接消息发送出去;所述终端或服务器通过所述TCP连接消息中携带的MSS参数获知对端支持的最大报文段长度,并将其与自己支持的最大报文段长度进行比较,并从中选择较小的值对传输数据进行处理。
本发明提供的第一实施例,如图2所示,包括步骤101,通信系统中的分组网络设备对其传输的终端和服务器间使用隧道协议封装过的数据包进行解封装,得到相应的隧道协议的净荷,即终端与服务器之间传输的原始IP包,记为IP_origin。
步骤102,所述分组网络设备判断所述IP_origin的长度是否符合TCP连接消息的典型长度,若符合,则执行步骤103;否则,执行步骤108,即继续后续处理。后续处理有两种情况,第一种是再次使用隧道协议封装并发送,比如SGSN;第二种是直接将IP_origin发送出去,比如GGSN。
由于经过分组网络设备的数据包流量非常大,需要从海量的数据包中筛选出TCP连接消息,包括终端向服务器的TCP连接请求消息和服务器向终端的TCP连接消息。分析现有的IPv4协议栈实现,绝大多数TCP连接消息的长度是44字节或者48字节。例如Windows系统的实现中TCP连接消息的长度一般是48个字节,Unix等系统的实现中TCP连接消息的长度一般是44个字节。这是因为WindowS系统和Unix系统的实现中的TCP连接消息都携带MSS选项,而Windows系统的实现中的TCP连接消息还携带一个“选择性确认SACK”的选项,因此长度会增加4个字节。另外考虑到除了连接消息以外,其它TCP类型的包长度为44字节或48字节的情况非常少。这是因为当TCP包不带选项时,IP头部+TCP头部长度就达到了40个字节,这样留给净荷的长度只有4字节或8字节,一般应用层消息很少会这样短,也就是说长度为44字节或48字节的TCP包是TCP连接消息的可能性非常大,其它协议类型的IP包的长度为44字节或48字节的比例也很小。经过上述分析,可以根据TCP连接消息的典型长度,即根据44个字节或48个字节初步判断所述IP_origin是否可能是TCP连接消息,然后从对所述IP_origin进行进一步分析并最终判断所述IP_origin是否为TCP连接消息。
经过步骤102后,已经将绝大部分非TCP连接消息的数据包排除,并且分组网络设备在解封装隧道协议时,已经获得数据包中的净荷(即IP_origin)的长度,基本不会因为此过程带来额外的开销。并且经过滤后的数据流量不大,对系统的冲击大大减小。但是考虑到当IP_origin本身是一个IP分片时,其长度有可能刚好等于TCP连接消息的典型长度,为了将这部分分片包过滤掉,因此接下来需要从筛选出的所述IP包中将这些属于分片的IP包去除掉,即执行步骤103。
步骤103,所述分组网络设备根据所述IP_origin的包头中的”更多的分片”标志和”片偏移”两个字段来判断所述IP_origin包是否为分片的IP包,当”更多的分片”标志等于0,并且”片偏移”也等于0时,IP_origin不是分片包,否则是分片包。当确认不是分片包时时,则执行步骤104,否则执行步骤108,即继续后续处理的过程。
步骤104,根据所述IP包的IP头中的协议字段判断所述IP包是否为TCP包,若是,则执行步骤105;否则执行步骤108,即继续后续处理过程。
步骤105,根据TCP包头部中的同步字段(SYN)判断所述TCP包是否为TCP连接消息,当确认为TCP连接消息,则执行步骤106;否则,执行步骤108,即继续后续处理过程。
步骤106,判断所述TCP连接消息中携带的最大传输单元MSS参数是否超过设定的阈值,当超过时,则执行步骤107,即对所述MSS参数值进行下调,使其不超过设定的阈值,然后继续执行步骤108,即继续后续处理过程;当未超过设定的阈值时,则保持所述MSS参数值不变,并继续执行步骤108,即继续后续处理过程。
经过步骤101至步骤106的过程后,说明IP_origin是一个TCP连接消息,并且其中携带的MSS参数值大小可能导致在分组域网络设备之间产生IP分片,于是需要根据预先设定的阈值对所述IP_origin中的MSS参数值进行调整,也就是当所述IP_origin中的MSS参数值大于所述预先设定的阈值时,则将IP_origin中的MSS参数值改小到预先设定的阈值;当所述IP_origin中的MSS参数值小于或等于所述预先设定的阈值时,则保持所述MSS参数值不变。这样处理后,不会导致分组网络设备之间处理传输数据时产生IP分片。
上述数据包是以IPv4包为例进行说明的,如果终端和服务器之间使用IPv6包进行通讯时,本方案仍然适用,只是IPv6的协议格式、TCP连接请求典型长度与IPv4有不同。
本发明适用于WCDMA、GPRS、CDMA2000、TD-SCDMA等各种移动通讯系统。
上述服务器包括通过TCP协议与无线终端进行通讯的服务器、主机或其它终端设备等。上述TCP连接消息包括TCP客户端向服务器端发送的TCP连接消息和/或TCP服务器端向客户端发送的TCP连接消息。
由上述本发明的具体实施方案可以看出,本发明中分组网络设备根据设定的MSS参数阈值对终端和服务器间的传输控制协议TCP连接消息中携带的最大传输单元MSS参数值进行调整,并将调整后的TCP连接消息发送出去;终端或服务器通过TCP连接消息中所携带的MSS参数获知对端支持的最大报文段长度,将其与自己支持的最大报文段长度进行比较,从中选择较小的值对TCP传输数据进行分段处理。通过本发明将MSS参数值进行调整,能够使分组网络设备之间传输的使用隧道协议封装后的终端和服务器之间的数据包长度不大于分组网络设备之间的路径MTU,因此能够减少分组网络设备间的IP包分片,降低数据包处理的时延,并提高分组设备的处理能力。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种分组域网络中减少数据IP分片数量的方法,其特征在于,包括A、通信系统中的分组网络设备根据设定的MSS参数阈值对所传输的终端和服务器间的传输控制协议TCP连接消息中携带的最大传输单元MSS参数值进行调整,并将所述调整后的TCP连接消息发送出去;B、所述终端或服务器通过所述TCP连接消息中携带的MSS参数获知对端支持的最大报文段长度,并将其与自己支持的最大报文段长度进行比较,并从中选择较小的值对发送的TCP数据进行分段处理。
2.根据权利要求1所述的方法,其特征在于,所述步骤A具体包括A1、分组网络设备从传输的数据包中筛选出终端和服务器间的传输控制协议TCP连接消息;A2、判断所述TCP连接消息中携带的最大传输单元MSS参数是否超过设定的阈值,当超过时,则对所述MSS参数值进行下调,使其不超过设定的阈值,然后将所述TCP连接消息封装并发送出去;当未超过设定的阈值时,则保持所述MSS参数值不变,并将所述TCP连接消息进行封装后发送出去。
3.根据权利要求2所述的方法,其特征在于,在所述步骤A1之前还包括根据终端和服务器之间的各个设备之间的最大传输单元MTU,以及所使用的隧道封装协议的特点计算并设定MSS参数阈值。
4.根据权利要求2所述的方法,其特征在于,所述步骤A1具体包括A11、所述分组网络设备根据TCP连接消息的典型长度从所传输的终端和服务器间的数据包中筛选出符合TCP连接消息典型长度的数据包;A12、从筛选出的所述数据包中去除属于分片的IP包,并选择出协议类型为TCP协议的IP包;A13、根据所述TCP包头部中的同步字段SYN从所述TCP包中筛选出TCP连接消息。
5.根据权利要求4所述的方法,其特征在于,所述步骤A11具体包括A111、所述分组网络设备对接收到的使用隧道协议封装过的终端与服务器之间的数据包进行解封装,得到终端与服务器之间传输的原始IP包;A112、所述分组网络设备判断所述IP包的长度是否符合TCP连接消息的典型长度,若符合,则执行步骤A12;否则,将所述IP包进行封装后发送出去。
6.根据权利要求4所述的方法,其特征在于,所述步骤A12具体包括A121、所述分组网络设备根据所述IP包的包头中的更多分片标志和片偏移判断所述IP包是否属于分片的IP包,当确认不属于分片的IP包时,则执行步骤A122;否则,将所述IP包进行封装后发送出去;A122、根据所述IP包的包头中的协议字段判断所述净荷的协议类型是否为TCP协议,当确认为TCP协议时,则执行步骤A13;否则,将所述IP包进行封装后发送出去。
7.根据权利要求4所述的方法,其特征在于,所述步骤A13具体包括根据所述IP包的包头部中的同步字段SYN判断所述IP包是否为TCP连接消息,当确认是时,则执行步骤A2;否则,将所述IP包进行封装后发送出去。
8.根据权利要求1至7任意一项所述的方法,其特征在于,所述步骤B还包括根据调整后的MSS参数对TCP连接消息重新计算TCP校验和。
9.根据权利要求8任意一项所述的方法,其特征在于,所述TCP连接消息包括终端向服务器发送的TCP连接消息和/或服务器向终端发送的TCP连接消息。
10.根据权利要求9所述的方法,其特征在于,所述服务器包括通过TCP协议与无线终端设备进行通讯的服务器、主机或终端设备。
11.根据权利要求1所述的方法,其特征在于,所述移动通信系统包括WCDMA、GPRS、CDMA2000或TD-SCDMA系统。
12.根据权利要求4至7任意一项所述的方法,其特征在于,所述IP包包括IPv4包和/或IPv6包。
全文摘要
本发明涉及一种分组域网络中减少数据IP分片数量的方法,其核心是分组网络设备根据设定的MSS参数阈值对终端和服务器间的传输控制协议TCP连接消息中携带的最大传输单元MSS参数值进行调整,并将调整后的TCP连接消息发送出去;终端或服务器通过TCP连接消息中所携带的MSS参数获知对端支持的最大报文段长度,将其与自己支持的最大报文段长度进行比较,从中选择较小的值对TCP传输数据进行分段处理。通过本发明将MSS参数值进行调整,能够使分组网络设备之间传输的使用隧道协议封装后的终端和服务器之间的数据包长度不大于分组网络设备之间的路径MTU(最大传输单元),因此能够减少分组网络设备间的IP包分片,降低数据包处理的时延,并提高分组设备的处理能力。
文档编号H04L29/06GK1863165SQ20061000222
公开日2006年11月15日 申请日期2006年1月24日 优先权日2006年1月24日
发明者银宇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1