基于网络处理器实现用户报文协议的压缩传输方法

文档序号:7550959阅读:70来源:国知局
专利名称:基于网络处理器实现用户报文协议的压缩传输方法
技术领域
本发明涉及一种实现用户报文协议压缩传输的方法,尤其涉及一种采用网络处理实现用户报文协议的压缩传输方法。
背景技术
目前电信网络处于一个升级换代的开始阶段,互连网技术和IP(网际协议)技术的开发对整个电信网的发展产生了深远的影响,传统的电路交换逐渐为IP分组技术所取代,移动技术正在向着全IP发展。而全IP重要思想之一就是将IP作为整个电信网的传输层协议,以增加系统的灵活性,统一性和扩展性。然而,出于运营成本的考虑,在很长一定时期内,电信网中仍然会采用大量的低速链路进行数据的传输,比如3GPP2规定的CDMA2000 ABIS接口、A3/A7接口等,这些低速链路信息传输压力比较大,它同时要进行业务信令数据,用户数据,链路控制检测数据等的传输。因此采用IP传输时,如何提高这些链路传输的效率,降低数据传输延迟就显得尤为重要。
当前有一些协议和算法可以解决这一问题,其中采用用户报文协议(UDP)压缩算法思想是比较好的选择之一。UDP协议(User DatagramProtocol)主要用来支持那些需要在计算机之间传输数据的网络应用,其基本思想就是对IP头和UDP头进行压缩处理,把长28字节的IP头(IPv4)和UDP头压缩成2-6字节,如图1所示,因此在这些低速链路采用UDP压缩传输可以获得高效率和低延迟的传输,对报文较小的语音数据,压缩比例高,传输的高效性尤为明显。
但由于通用处理器处理性能有限,处理上只能接入小流量的数据,比如几兆,十几兆;对接入七、八十兆,上百兆,甚至上千兆的大流量数据,通用处理器光是转发就无能为力,更别说对报文还要进行一些诸如Cudp(COMPRESSED-UDP)等复杂的协议处理。但如果选择专业的网络处理器来替代通用处理器,这一问题就可以很好地解决。网络处理器一般采用中央处理器机制,包括一个核心处理器和若干个精简指令结构处理器,即微处理器,也称微引擎。我们通过编程在微引擎上实现各种网络协议的处理,使若干个微引擎可对报文进行实时并行处理,从而能够将报文以线速转发到下一节点。
由于网络处理器固有的结构特点,采用网络处理器实现cUDP,只有在微引擎上实现cUDP才能发挥网络处理器的优势,真正实现大流量报文的cUDP处理和线速转发。由于微引擎是用专用的汇编指令开发,且指令功能简单,指令空间、寄存器和其他资源比较有限,难于实现复杂的运算操作,故一般网络处理器一般只作快速的报文转发,只对链路和网络层做一些简单的处理,而对实现一些诸如cUDP等协议处理存在一定困难。

发明内容
有鉴于此,本发明乃为解决上述问题而提出一种基于网络处理器实现用户报文协议的压缩传输方法,主要目的在于克服传统技术中通用处理器无法快速处理,无法转发大流量的报文数据以及不适于进行高层应用协议处理的问题,而实现在网络处理器上进行大流量的用户报文协议压缩传输,并且提高处理能力以及处理的稳定性。
本发明提供一种基于网络处理器实现用户报文协议的压缩传输方法,在多个微处理器上实时对报文进行cUDP处理,采用压缩与解压缩合一的方式建立会话环境表,并在会话环境表中设置计数器域,对报文进行发送逻辑处理,在核心处理器上创建主从哈希索引表,对该会话环境表进行索引,采用微处理器多线程进行解压缩和压缩双向处理,同时维护两组队列。
所述解压缩处理过程为解压缩处理多线程从解压缩处理队列头摘取报文,提取出报文类型信息,根据该报文类型,对报文进行解压缩处理,其中,若报文类型为全头报文,则从全头报文中提取出源IP地址和源PORT号,作为索引查找会话环境表,从表中获取下一跳的地址,并进一步查找ARP表,对报文的IP和UDP头进行相应修改后,再封装MAC头;若报文类型为压缩头报文,则从压缩头报文中提取出UID和对端CID,作为索引查找会话环境表,从表中获取恢复新的IP头和UDP头所需信息,并根据下一跳的IP地址,查找ARP表,剔除压缩头报文的压缩字,封装好MAC、IP和UDP头。然后入发送队列,由发送解压缩报文线程组进行发送处理。
所述压缩处理过程为压缩处理多线程从压缩处理队列头摘取报文,并从该报文中提取目的IP地址和目的端口号。以该目的IP地址和目的端口号作为索引,查找会话环境表,并根据表中计数器来进行全头报文和压缩头报文发送的选择,并对表中的计数器累加。若发送压缩头报文,则剔除报文的MAC、IP和UDP头,构造压缩通信字和PPP头;若发送全头报文,则剔除报文的MAC头,把IP和UDP头修改成全头格式,并构造PPP头。然后把报文入发送队列,由发送压缩报文线程组把报文发送到cUDP处理的对端设备。
本发明提供还一种基于网络处理器实现用户报文协议的解压缩方法,首先核心处理器初始化会话环境表以及主从哈希索引表,在会话环境表中增加用户的连接表项,并在主哈希索引表中增加该用户的主索引表项,接收cUDP报文,将报文传入cUDP解压缩队列。解压缩处理多线程从该解压缩队列摘取报文,同时提取报文类型信息,并根据报文类型信息,查找会话环境表,其中若该报文为全头报文,则提取出源IP地址和源端口号,将该源IP地址和源端口号作为索引查找会话环境表,并修改报文的IP头和UDP头;若为压缩头报文,则从报文中提取UID和对端CID,将该UDI和对端CID作为索引查找会话环境表,恢复标准的IP头和UDP头,并剔除报文压缩字;然后从该会话环境表中获取下一跳的IP地址,根据该下一跳的IP地址查找ARP表,并获取下一跳的MAC地址,根据当前报文的IP头和UDP头,封装MAC头,最后入发送队列,由发送解压缩报文线程进行发送处理。
所述接收cUDP报文还包括cUDP报文接收初始化,申请报文描述符,分配cUDP报文的缓冲存储区,同时cUDP报文接收多线程接收下一cUDP报文,检查报文的PPP头,保存报文的PPP头的协议域信息,并剔除报文的PPP头。
所述检查报文的PPP头的步骤,若报文未通过检查,则将该非法报文过滤掉。
所述根据报文类型为全头报文还包括从全头报文中抽取出加从索引表的信息,并构造出加表消息报文,入上传核心处理器队列。
所述全头报文携带的会话环境标识为8位的UID和16位的CID。
本发明进而提供一种基于网络处理器实现用户报文协议的压缩方法,首先初始化会话环境表以及主从哈希索引表,在会话环境表中增加用户的连接表项,并在主哈希索引表中增加该用户的主索引表项,接收外部报文,并将报文传入压缩队列,cUDP压缩处理多线程从该压缩队列中摘取报文,从报文中提取出目的IP地址和目的UDP号,并以该目的IP地址和目的UDP号作为索引查找会话环境表,获取该会话环境表中的计数器值,并对该会话环境表中的计数器值进行发送逻辑处理,取出该逻辑处理后的计数器值,根据该逻辑处理后的计数器值,确定报文类型,根据该报文类型,对报文进行处理,其中若报文类型为全头报文,则从会话环境表中获取UID和本端CID信息,剔除报文的MAC头,将IP和UDP头修改成全头格式,并封装PPP头;若报文类型为压缩头报文,则从会话环境表中获取UID和本端CID信息,剔除报文的MAC、IP和UDP头,构造压缩通信字和PPP头,最后将报文入发送队列,由发送压缩报文线程组进行发送处理。
所述在接收外部报文的过程中,首先初始化外部报文接收,申请报文描述符,分配外部报文的缓冲存储区,同时外部报文接收多线程接收下一外部报文,检查报文的MAC,IP和UDP头,剔除报文的PPP头。
所述中检查报文的MAC,IP和UDP头,还包括若报文未通过检查,则将该非法报文过滤掉。
所述全头报文携带的会话环境标识为8位的设备逻辑标识和16位的压缩标识。
所述对该会话环境表中的计数器值进行发送逻辑处理的步骤,是将表中的计数器累加并与255相与。
所述根据该逻辑处理后的计数器值,确定报文类型过程中,若计数器的值为0,则报文类型为全头报文;若计数器的值不为0,则报文类型为压缩头报文。
根据本发明提供的方法,一方面克服了通用处理器无法快速处理和转发大流量的报文数据的问题,另一方面也克服了网络处理器不适用于进行高层应用协议处理的技术问题。不仅解决了大流量下cUDP处理速度和效率问题,也解决了在指令空间和其他资源有限的微引擎进行cUDP协议处理的问题。同时通过表维护和表查找相分离、压缩和解压缩表项合一的方法,充分发挥和提高了网络处理器在进行cUDP压缩处理的性能,并使cUDP处理过程变得简单有效。本发明所提出的基于网络处理器实现cUDP压缩传输方法与通用处理器实现cUDP压缩传输方法相比,处理能力大大加强,能够接入百兆以上大流量的cUDP报文;并且无需定时器,就可以针对每一连接完成全头和压缩头发送处理逻辑,提高了cUDP处理的稳定性,并且使cUDP压缩传输变得更加简单有效,从而使网络处理器适用于cUDP压缩传输的实现,特别适用于大流量的cUDP压缩传输。


图1是cUDP压缩原理示意图;图2是本发明UDP会话环境表;图3a是本发明cUDP全头报文头部格式示意图;图3b是本发明cUDP压缩头报文头部格式示意图;图4是本发明的cUDP解压缩结构示意图;图5是本发明的cUDP解压缩流程图;图6是本发明的UDP报文接收流程图;图7是本发明的cUDP压缩结构示意图;图8是本发明的cUDP压缩流程图;及图9是本发明的外部报文接收流程图。
具体实施例方式
由于网络处理器架构上的专用性和特殊性,本发明所实现的压缩传输方法,是一种比较特殊但却有效的压缩传输方法。本发明的典型应用场合为适用于所有基于IP/PPP的语音数据/实时数据/多媒体数据通信设备间传输系统,包括3GPP2规定的CDMA2000 ABIS接口、A3/A7接口,特别适合于多设备,大流量IP/PPP数据接入的传输系统。
本发明在网络处理器中,采用会话环境表,主从哈希索引表的建立,维护者与使用者相分离的异步处理方式,解决了微引擎指令空间的限制问题。采用哈希运算来定位会话环境表,相对遍历链表方式,采用哈希运算具有查找定位速度快且定位准确的优点,同时也大大节约表项存储空间。采用多线程并行处理cUDP报文,加快了cUDP的处理速度和转发速度,解决通用处理器不能接入大流量cUDP报文的问题。采用UID和CID两层结构的环境标识,扩大压缩空间,保证能够接入更多用户。采用计数器方式进行压缩头报文和全头报文选择控制器,使网络处理器避免了采用复杂的计数器方式,简化了压缩处理流程,同时也提高了cUDP处理的稳定性。
请参见图2,该图是本发明cUDP处理的会话环境表,采用压缩和解压缩合一方式,并且为了进行稳定的cUDP处理,减少失步,在会话环境表中设置计数器域,进行全头报文(Full Header)和压缩头报文(CompressedHeader)发送逻辑处理。在核心处理器上创建主从哈希(Hash)索引表,对cUDP处理的会话环境表进行索。采用UID(对端设备的逻辑标识)和CID(压缩标识)组作为压缩环境标识,以扩大压缩空间,接入更多设备的cUDP报文。采用微引擎的多线程并行处理架构,进行cUDP压缩和解压缩双向处理。维护两组队列,一组用于cUDP压缩,一组用于cUDP解压缩。
下面请参见图3a,该图是本发明cUDP全头报文头部格式示意图。全头报文传送未压缩IP、UDP头和任何用来在解压方为特定环境建立未压缩头状态的后续头和数据。本实施例中的全头包还携带的会话环境标识分为8位的UID和16位的CID,并把UID放在UDP头的原CheckSum域的高8位,把CID放在UDP头的原UDP_Length域。
图3b是本发明cUDP压缩头报文头部格式示意图。压缩头报文不传送完整的IP头和UDP头,只传送IP头和UDP头中有变化的字段和会话环境标识,本方案的压缩头报文的压缩头把长28字节的IP头和UDP头(以IPv4为例)压缩成6个字节,其中UID占1个字节,IP分片信息占2个字节,CID占2个字节,还有一个字节在RFC2507中有所定义,为兼容IPv6所用。
本方案的cUDP处理,可分为解压缩和压缩处理两部分,但不论是压缩和解压缩,针对某一连接进行cUDP处理前,必须由核心处理器上的表维护模块完成主要完成如下任务(1)在系统启动时,进行会话环境表和主从哈希索引表的的初始化;(2)对用户进行控制面建链时,在会话环境表中增加该用户的连接表项,并在主索引表中增加该用户的主索引表项。
图4是本发明的cUDP解压缩结构示意图。
请参见图5,图5是本发明实施例的cUDP解压缩流程图。在系统启动时,首先初始化会话环境表和主从哈希索引表(步骤510),然后在会话环境表中增加用户的连接表项,并在主哈希索引表中增加该用户的主索引表项(步骤520)。然后接收CUDP报文,并将报文传入UDP解压缩队列(步骤530),如图6所示,在对CUDP报文接收初始化后(步骤610),解压缩过程中首先申请报文描述符,分配cUDP报文的缓冲存储区,cUDP报文接收多线程接收下一个cUDP报文(步骤620)。检查报文的PPP头(步骤630),如果报文通过检查(步骤640),保存PPP头的协议域信息,剔除报文的PPP头(步骤650),否则过虑非法报文。如果协议域指示为全头报文(步骤660),抽取出加从索引表的信息,并按约定好的结构构造出加表消息报文,入上传核心处理器队列(由核心处理器上的表维护模块完成该消息的解析)(步骤670),并把全头报文传入cUDP解压缩处理队列(步骤680)。如果协议域指示为压缩头报文,则把报文传入cUDP解压缩处理队列。UDP解压缩处理多线程从解压缩处理队列头取包,提取出报文类型信息(步骤540),判断报文类型信息(步骤550),如果是全头报文,则从全头报文中提取出源IP地址和源PORT号,以其作为主索引哈希查找会话环境表,并获取表中的下一跳的IP地址和PORT号等信息,修改报文的IP和UDP头(步骤560)。再以下一跳的IP地址查找ARP表,获取下一跳的MAC地址,封装MAC头(步骤580),然后入发送队列,由发送解压缩报文线程组进行发送处理(步骤590)。如果是压缩头报文,则压缩头报文中提取出UID和对端CID,以其作为从索引哈希查找会话环境表,剔除压缩头报文的压缩字(步骤570),从表中获取下一跳的IP地址、PORT号,服务质量(QOS)和生成时间(TTL)等信息,恢复标准的IP头和UDP头。
图7是本发明的cUDP压缩结构示意图。
请参见图8,图8是本发明的cUDP压缩流程图。在系统启动时,首先初始化会话环境表和主从哈希索引表(步骤810),然后在会话环境表中增加用户的连接表项,并在主哈希索引表中增加该用户的主索引表项(步骤820)。然后接收外部报文,并将报文传入UDP压缩队列(步骤830)。请参见图9,图9是本发明的外部报文接收流程图。在外部报文接收初始化后(步骤910),压缩过程首先申请报文描述符,分配外部报文的缓冲存储区,外部报文接收多线程接收下一个外部报文(步骤920)。然后检查报文的MAC,IP和UDP头(步骤930),判断报文是否通过检查(步骤940),如果报文通过检查,剔除报文的MAC头(步骤950)。否则,过虑非法报文。再把报文传入cUDP压缩处理队列(步骤960)。cUDP压缩处理多线程从压缩处理队列头取包,并从报文中提取目的IP地址和目的UDP号(步骤840),以其作为索引哈希查找会话环境表,获取表中的计数器(8位)值,并对会话环境表中的计数器值进行发送逻辑处理,修改表中的计数器值(对表中的计数器累加并与255相与)(步骤850),判断计数器值是否为0(步骤860),如果取出的计数器的值为0,则从会话环境表中获取UID和本端CID等信息,修改IP和UDP头,封装PPP头(步骤870)。如果取出的计数器的值为不为0,说明发送压缩头报文,则从会话环境表中获取UID和本端CID等信息,从报文中获取IP头的16位标识,构造压缩报文的压缩字,封装PPP头。(步骤880)。最后把封装PPP头的报文入发送队列,由发送压缩报文线程组把报文发送到cUDP处理的对端设备(步骤890)。
权利要求
1.一种基于网络处理器实现用户报文协议的压缩传输方法,其特征在于,包括如下步骤采用压缩与解压缩合一的方式建立会话环境表,并在会话环境表中设置计数器域,进行全头报文和压缩头报文的发送逻辑处理;在网络处理器中的核心处理器上创建主从哈希索引表,对该会话环境表进行索引,同时维护两组队列,一组用于cUDP压缩,一组用于解压缩采用网络处理器中微处理器的多线程并行处理架构多线程进行cUDP解压缩和压缩双向处理。
2.如权利要求1所述的方法,其特征在于所述解压缩处理,进一步包括如下步骤步骤一解压缩处理多线程从解压缩处理队列头摘取报文,提取出报文类型信息。步骤二根据该报文类型,对报文进行解压缩处理,其中,若报文类型为全头报文,则从全头报文中提取出源IP地址和源PORT号,作为索引查找会话环境表,从表中获取下一跳的地址,并进一步查找ARP表,对报文的IP和UDP头进行相应修改后,再封装MAC头;若报文类型为压缩头报文,则从压缩头报文中提取出UID和对端CID,作为索引查找会话环境表,从表中获取恢复新的IP头和UDP头所需信息,并根据下一跳的IP地址,查找ARP表,剔除压缩头报文的压缩字,封装好MAC、IP和UDP头;步骤三入发送队列,由发送解压缩报文线程组进行发送处理。
3.如权利要求1所述的方法,其特征在于所述压缩处理,进一步包括如下步骤步骤一压缩处理多线程从压缩处理队列头摘取报文,并从该报文中提取目的IP地址和目的端口号;步骤二以该目的IP地址和目的端口号作为索引,查找会话环境表,并根据表中计数器来进行全头报文和压缩头报文发送的选择,并对表中的计数器累加;若发送压缩头报文,则剔除报文的MAC、IP和UDP头,构造压缩通信字和PPP头;若发送全头报文,则剔除报文的MAC头,把IP和UDP头修改成全头格式,并构造PPP头。;步骤三把报文入发送队列,由发送压缩报文线程组把报文发送到cUDP处理的对端设备。
4.一种基于网络处理器实现用户报文协议的解压缩方法,其特征在于在多个微处理器上实时对报文进行cUDP处理,包括如下步骤步骤一利用核心处理器初始化会话环境表以及主从哈希索引表;步骤二利用核心处理器在该会话环境表中增加用户的连接表项,并在该主哈希索引表中增加该用户的主索引表项;步骤三利用该微处理器接收cUDP报文,将报文传入cUDP解压缩队列;步骤四cUDP解压缩处理多线程从该解压缩队列摘取报文,同时提取报文类型信息,并根据该报文类型信息,查找会话环境表,其中,若该报文为全头报文,则提取出源IP地址和源端口号,将该源IP地址和源端口号作为索引查找该会话环境表,并修改报文的IP头和UDP头;若为压缩头报文,则从报文中提取UID和对端CID,将该UID和对端CID作为索引查找该会话环境表,恢复标准的IP头和UDP头,并剔除报文压缩字;步骤五从该会话环境表中获取下一跳的IP地址,根据该下一跳的IP地址查找ARP表,并获取下一跳的MAC地址,根据当前报文的IP头和UDP头,封装MAC头;及步骤六入发送队列,由发送解压缩报文线程进行发送处理。
5.如权利要求4所述的方法,其特征在于所述步骤三中接收cUDP报文还包括步骤1cUDP报文接收初始化,申请报文描述符,分配cUDP报文的缓冲存储区,同时cUDP报文接收多线程接收下一cUDP报文;步骤2检查报文的PPP头;步骤3保存该报文的PPP头的协议域信息,并剔除报文的PPP头。
6.如权利要求5所述的方法,其特征在于所述步骤2中检查报文的PPP头的步骤还包括,若报文未通过检查,则将该非法报文过滤掉。
7.如权利要求4所述的方法,其特征在于所述步骤四还包括从全头报文中抽取出加从索引表的信息,并构造出加表消息报文,入上传核心处理器队列。
8.如权利要求4所述的方法,其特征在于所述全头报文携带的会话环境标识为8位的UID和16位的CID。
9.一种基于网络处理器实现用户报文协议的压缩方法,其特征在于在多个微处理器上实时对报文进行cUDP处理,包括如下步骤步骤一利用核心处理器初始化会话环境表以及主从哈希索引表;步骤二利用核心处理器在该会话环境表中增加用户的连接表项,并在该主哈希索引表中增加该用户的主索引表项;步骤三利用微处理器接收外部报文,并将该报文传入压缩队列;步骤四cUDP压缩处理多线程从该压缩队列中摘取报文,从报文中提取出目的IP地址和目的UDP号,并以该目的IP地址和目的UDP号作为索引查找该会话环境表;步骤五获取该会话环境表中的计数器值,并对该会话环境表中的计数器值进行发送逻辑处理,取出该逻辑处理后的计数器值,根据该逻辑处理后的计数器值,确定报文类型;步骤六微处理器根据该报文类型,对该报文进行处理,其中,若该报文类型为全头报文,则从会话环境表中获取UID和本端CID信息,剔除报文的MAC头,将该IP和UDP头修改成全头格式,并封装PPP头;若该报文类型为压缩头报文,则从该会话环境表中获取UID和本端CID信息,剔除报文的MAC、IP和UDP头,构造压缩通信字和PPP头;步骤七将该报文入发送队列,由发送压缩报文线程组进行发送处理。
10.如权利要求9所述的方法,其特征在于所述步骤三还包括步骤1外部报文接收初始化;步骤2申请报文描述符,分配外部报文的缓冲存储区,同时外部报文接收多线程接收下一外部报文;步骤3检查报文的MAC,IP和UDP头;及步骤4剔除报文的PPP头。
11.如权利要求10所述的方法,其特征在于所述步骤3中检查报文的MAC,IP和UDP头,还包括若报文未通过检查,则将该非法报文过滤掉。
12.如权利要求9所述的方法,其特征在于所述全头报文携带的会话环境标识为8位的设备逻辑标识和16位的压缩标识。
13.如权利要求9所述的方法,其特征在于所述步骤五中对该会话环境表中的计数器值进行发送逻辑处理的步骤,是将表中的计数器累加并与255相与。
14.如权利要求9所述的方法,其特征在于所述步骤五中根据该逻辑处理后的计数器值,确定报文类型还包括若该计数器的值为0,则该报文类型为全头报文;及若该计数器的值不为0,则该报文类型为压缩头报文。
全文摘要
一种基于网络处理器实现用户报文协议的压缩传输方法,在多个微处理器上实时对报文进行cUDP处理,采用压缩与解压缩合一的方式建立会话环境表,在核心处理器上创建主从哈希索引表,对该会话环境表进行索引,在会话环境表中设置计数器域,进行全头报文和压缩头报文发送逻辑处理,采用UID和CID组作为压缩环境标识,以扩大压缩空间,接入更多设备的cUDP报文,采用微处理器的多线程并行处理架构,进行cUDP压缩和解压缩双向处理,维护两组队列,一组用于cUDP压缩,一组用于cUDP解压缩,从而实现在网络处理器上进行大流量的用户相文协议压缩传输。
文档编号H04L12/56GK1545276SQ20031011366
公开日2004年11月10日 申请日期2003年11月17日 优先权日2003年11月17日
发明者谭芳, 张钢钢, 赵明鹤, 谭 芳 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1