报文搬移方法及装置的制造方法

文档序号:10626771阅读:417来源:国知局
报文搬移方法及装置的制造方法
【专利摘要】本发明公开了一种报文搬移方法及装置,其中,该方法包括:根据报文长度为报文分配直接内存访问DMA通道;根据DMA通道将报文搬移到交换机系统中与DMA通道对应的内存中。通过本发明解决了相关技术中交换机系统中存在很大内存资源浪费的问题,进而节省了交换机系统中的CPU收包内存。
【专利说明】
报文搬移方法及装置
技术领域
[0001]本发明涉及通信领域,具体而言,涉及一种报文搬移方法及装置。
【背景技术】
[0002]随着网络技术的普及,交换机技术迅速发展。对于交换机来说,数据报文通过交换芯片进行硬件直接转发,无须中央处理器(Central Processing Unit,简称为CPU)干预,对于交换机需要处理的协议报文来说,则通过交换芯片把报文上送CPU,由CPU进行处理。
[0003]如图1所示,交换机系统一般包括交换芯片,CPU和内存等,目前的交换芯片一般都会内置直接内存访问(Direct Memory Access,简称为DMA),DMA通过物理层标识(Physical Cell Identif ier,简称为PCI)总线把协议报文从交换芯片的缓存里面直接搬移到内存里面去,然后产生中断通知CPU去内存里面去获取协议报文并且进行相应的处理。
[0004]处理性能考虑CPU —般采用零拷贝方式处理内存里面的报文,管理方便考虑一般一个报文就是一个缓存(buffer),一般的交换机需要几百个甚至几千个缓存,目前业内的buffer 一般定义为1.5K字节,如果需要支持巨帧,则buffer需要定义为9k字节。如果是Ik个缓存,每个缓存9k字节那么需要9M字节的内存空间。但是实质上协议报文一般都是256字节以内的报文,256-1536字节内的协议报文较少,1.5k_9k字节的巨帧协议报文就更少。为了极少的长包导致所有收包缓存都很大,存在很大内存资源的浪费。
[0005]虽然有些芯片也支持把一个长报文通过PCI总线DMA到内存里面多个小的缓存空间里面,但是这样后续协议处理协议报文会比较麻烦。会增加系统软件处理的复杂度和耗费一定的CPU资源。目前也很少被采用。
[0006]针对相关技术中,交换机系统中存在很大内存资源浪费的问题,还未提出有效的解决方案。

【发明内容】

[0007]本发明提供了一种报文搬移方法及装置,以至少解决相关技术中交换机系统中存在很大内存资源浪费的问题。
[0008]根据本发明的一个方面,提供了一种报文搬移方法,包括:根据报文长度为所述报文分配直接内存访问DMA通道;根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中。
[0009]进一步地,根据报文长度为所述报文分配直接内存访问DMA通道包括:为所述报文分配队列;在指定队列所包含的报文的字节均在预定范围内的情况下,为所述指定队列分配指定通道。
[0010]进一步地,根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中之后包括:在指定事件的触发下,通知所述交换机系统中的中央处理器CPU从所述内存中获取所述报文。
[0011]进一步地,所述指定事件包括:所述DMA通道发生收报中断信息。
[0012]进一步地,在所述报文为多个时,根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中包括:通过与多个所述报文分别对应的多个DMA通道轮流将多个所述报文搬移到交换机系统中与所述多个DMA通道对应的内存中。
[0013]根据本发明的另一个方面,还提供了一种报文搬移装置,包括:分配模块,用于根据报文长度为所述报文分配直接内存访问DMA通道;搬移模块,用于根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中。
[0014]进一步地,所述分配模块包括:第一分配单元,用于为所述报文分配队列;第二分配单元,用于在指定队列所包含的报文的字节均在预定范围内的情况下,为所述指定队列分配指定通道。
[0015]进一步地,所述装置还包括:通知模块,用于在指定事件的触发下,通知所述交换机系统中的中央处理器CPU从所述内存中获取所述报文。
[0016]进一步地,所述指定事件包括:所述DMA通道发生收报中断信息。
[0017]进一步地,在所述报文为多个时,所述搬移模块还用于通过与多个所述报文分别对应的多个DMA通道轮流将多个所述报文搬移到交换机系统中与所述多个DMA通道对应的内存中。
[0018]通过本发明,采用根据报文长度为报文分配直接内存访问DMA通道;根据DMA通道将报文搬移到交换机系统中与DMA通道对应的内存中。解决了相关技术中交换机系统中存在很大内存资源浪费的问题,进而节省了交换机系统中的CPU收包内存。
【附图说明】
[0019]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0020]图1是交换机系统示意图;
[0021]图2是根据本发明实施例的报文搬移方法的流程图;
[0022]图3是根据本发明实施例的报文搬移装置的结构框图;
[0023]图4是根据本发明实施例的报文搬移装置的结构框图(一);
[0024]图5是根据本发明实施例的报文搬移装置的结构框图(二);
[0025]图6是根据本发明实施例的大量节约CPU收包内存的交换机系统流程图。
【具体实施方式】
[0026]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0027]在本实施例中提供了一种报文搬移方法,图2是根据本发明实施例的报文搬移方法的流程图,如图2所示,该流程包括如下步骤:
[0028]步骤S202,根据报文长度为报文分配直接内存访问DMA通道;
[0029]步骤S204,根据DMA通道将报文搬移到交换机系统中与DMA通道对应的内存中。
[0030]通过上述步骤,首先按照报文的长度为报文分配DMA通道,再根据DMA通道将报文搬移到交换机系统中与DMA通道对应的内存中,相对于现有技术中,为了极少的长包导致所有收包缓存都很大的问题,上述步骤解决了相关技术中交换机系统中存在很大内存资源浪费的问题,进而节省了交换机系统中的CPU收包内存。
[0031]上述步骤S204中涉及到根据报文长度为报文分配直接内存访问DMA通道,在一个可选实施例中,首先为报文分配队列,在指定队列所包含的报文的字节均在预定范围内的情况下,为指定队列分配指定通道。
[0032]对于交换机需要处理的报文来说,通过交换芯片将报文发送给CPU,由CPU处理。在一个可选实施例中,根据DMA通道将报文搬移到交换机系统中与DMA通道对应的内存中之后,在指定事件的触发下,通知交换机系统中的中央处理器CPU从内存中获取报文。
[0033]在一个可选实施例中,上述指定事件可以包括:DMA通道发生收报中断信息。
[0034]在报文为多个时,在一个可选实施例中,将多个报文搬移到交换机系统中与DMA通道对应的内存中时,通过与多个该报文分别对应的多个DMA通道轮流将多个报文搬移到交换机系统中与多个DMA通道对应的内存中。
[0035]在本实施例中还提供了一种报文搬移装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0036]图3是根据本发明实施例的报文搬移装置的结构框图,如图3所示,该装置包括:分配模块32,用于根据报文长度为报文分配直接内存访问DMA通道;搬移模块34,用于根据DMA通道将该报文搬移到交换机系统中与DMA通道对应的内存中。
[0037]图4是根据本发明实施例的报文搬移装置的结构框图(一),如图4所示,分配模块32包括:第一分配单元322,用于为报文分配队列;第二分配单元324,用于在指定队列所包含的报文的字节均在预定范围内的情况下,为指定队列分配指定通道。
[0038]图5是根据本发明实施例的报文搬移装置的结构框图(二),如图5所示,该装置还包括:通知模块52,用于在指定事件的触发下,通知交换机系统中的中央处理器CPU从内存中获取报文。
[0039]可选地,上述指定事件包括:DMA通道发生收报中断信息。
[0040]可选地,在报文为多个时,搬移模块34还用于通过与多个该报文分别对应的多个DMA通道轮流将多个报文搬移到交换机系统中与该多个DMA通道对应的内存中。
[0041]需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述各个模块均位于同一处理器中;或者,上述各个模块分别位于第一处理器、第二处理器和第三处理器…中。
[0042]针对相关技术中存在的上述问题,下面结合可选实施例进行详细说明,在下述的可选实施例中结合了上述可选实施例及其可选实施方式。
[0043]本可选实施例提出了一种大量节约CPU收包内存的交换机系统。
[0044]图6是根据本发明实施例的大量节约CPU收包内存的交换机系统流程图,如图6所示,该流程包括如下步骤:
[0045]步骤S602,协议报文进入交换机后,交换芯片入口流程把需要的协议报文上送到芯片的CPU端口,不同的协议报文指定不同的队列0-47 ;
[0046]步骤S604,根据队列分配不同的DMA通道0_2,报文全部在256字节以内的队列分配DMA通道O,报文全部在257-1536字节之间的队列分配DMA通道1,报文全部在1537-9216字节之间的队列分配DMA通道2 ;
[0047]步骤S606,不同DMA通道独立轮流执行,DMA根据交换芯片上面的CPU端口队列调度结果取报文通过PCI总线搬移DMA对应的内存空间,DMAO对应的内存空间收报buffer为256字节,DMAl对应的内存空间收报Buffer为1536字节,DMA2对应的内存空间收报buffer为9216字节;
[0048]步骤S608,3个DMA通道都会产生收报中断通知CPU去内存里面取报文进行处理,(PU根据不同的DMA通道去不同的内存空间获取报文处理。
[0049]在本可选实施例中利用交换芯片添加主机路由需要以下步骤:
[0050]步骤A.协议报文进入交换机后,交换芯片入口流程把需要的协议报文上送到芯片的CPU端口,不同的协议报文指定不同的队列0-47 ;
[0051]步骤B.根据队列分配不同的DMA通道0-2,报文全部在256字节以内的队列分配DMA通道0,报文全部在257-1536字节之间的队列分配DMA通道1,报文全部在1537-9216字节之间的队列分配DMA通道2。
[0052]步骤A中不同DMA通道独立轮流执行,DMA根据交换芯片上面的CPU端口队列调度结果取报文通过PCI总线搬移DMA对应的内存空间,DMAO对应的内存空间收报buffer为256字节,DMAl对应的内存空间收报Buffer为1536字节,DMA2对应的内存空间收报buffer为9216字节。
[0053]步骤B中3个DMA通道都会产生收报中断通知CPU去内存里面取报文进行处理,(PU根据不同的DMA通道去不同的内存空间获取报文处理。
[0054]下面结合附图对本可选实施例在交换芯片上实现一种大量节约CPU收包内存的交换机系统进行说明。
[0055]假设端口 I进入2种协议报文,一种是arp请求报文,报文长度在256以内,一种是Ping包,由于网络中有时候会ping大包,报文长度在1536之内。系统在内存里面设置1000个接收协议报文的缓存,分为3个部分:800个256字节的缓存给DMAO使用,150个1536字节的缓存给DMAl使用,50个9216字节的缓存给DMA2使用。交换芯片的CPU端口有48个队列,arp报文分配队列5,ping报文分配队列10。队列5分配DMA通道0,队列10分配DMA通道I。
[0056]端口 I的arp报文处理如下:
[0057]I:arp报文从端口 I进入交换机,交换芯片入口流程把需要的协议报文上送到交换芯片的CPU端口,给arp报文分配队列5。
[0058]2:队列5的报文交换芯片分配DMA通道0,内存中对应的收包缓存的大小为256字
-K-
T O
[0059]3:不同DMA通道独立轮流执行,DMAO根据交换芯片上面的CPU端口队列调度结果取队列5的报文通过PCI总线搬移DMAO对应的内存空间,800个收包缓存环上的第一个空闲缓存,缓存对应大小256字节。
[0060]4:DMA通道O会产生收报中断通知CPU去内存里面取报文进行处理,CPU收到中断后会去DMAO对应的缓存空间获取报文进行处理。
[0061]端口 2的ping报文处理如下:
[0062]I:arp报文从端口 I进入交换机,交换芯片入口流程把需要的协议报文上送到交换芯片的CPU端口,给arp报文分配队列10。
[0063]2:队列10的报文交换芯片分配DMA通道1,内存中对应的收包缓存的大小为1536字Tl O
[0064]3:不同DMA通道独立轮流执行,DMAl根据交换芯片上面的CPU端口队列调度结果取队列10的报文通过PCI总线搬移DMAl对应的内存空间,150个收包缓存环上的第一个空闲缓存,缓存对应大小1536字节。
[0065]4:DMA通道I会产生收报中断通知CPU去内存里面取报文进行处理,CPU收到中断后会去DMAl对应的缓存空间获取报文进行处理。
[0066]综上所述,通过本发明根据协议报文长度不同,分配不同的DMA通道,通过PCI总线直接搬移到DMA通道对应的内存里面。可以大量节约交换机接收协议报文所占用的内存空间(用于接收CPU处理的协议报文的收包缓存会节省90%多),同时不增加系统的软硬件复杂度。
[0067]在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
[0068]在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
[0069]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0070]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种报文搬移方法,其特征在于,包括: 根据报文长度为所述报文分配直接内存访问DMA通道; 根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中。2.根据权利要求1所述的方法,其特征在于,根据报文长度为所述报文分配直接内存访问DMA通道包括: 为所述报文分配队列; 在指定队列所包含的报文的字节均在预定范围内的情况下,为所述指定队列分配指定通道。3.根据权利要求1所述的方法,其特征在于,根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中之后包括: 在指定事件的触发下,通知所述交换机系统中的中央处理器CPU从所述内存中获取所述报文。4.根据权利要求3所述的方法,其特征在于,所述指定事件包括: 所述DMA通道发生收报中断信息。5.根据权利要求1所述的方法,其特征在于,在所述报文为多个时,根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中包括: 通过与多个所述报文分别对应的多个DMA通道轮流将多个所述报文搬移到交换机系统中与所述多个DMA通道对应的内存中。6.一种报文搬移装置,其特征在于,包括: 分配模块,用于根据报文长度为所述报文分配直接内存访问DMA通道; 搬移模块,用于根据所述DMA通道将所述报文搬移到交换机系统中与所述DMA通道对应的内存中。7.根据权利要求6所述的装置,其特征在于,所述分配模块包括: 第一分配单元,用于为所述报文分配队列; 第二分配单元,用于在指定队列所包含的报文的字节均在预定范围内的情况下,为所述指定队列分配指定通道。8.根据权利要求6所述的装置,其特征在于,所述装置还包括: 通知模块,用于在指定事件的触发下,通知所述交换机系统中的中央处理器CPU从所述内存中获取所述报文。9.根据权利要求8所述的装置,其特征在于,所述指定事件包括: 所述DMA通道发生收报中断信息。10.根据权利要求7所述的装置,其特征在于,在所述报文为多个时,所述搬移模块还用于通过与多个所述报文分别对应的多个DMA通道轮流将多个所述报文搬移到交换机系统中与所述多个DMA通道对应的内存中。
【文档编号】H04L12/935GK105991472SQ201510094883
【公开日】2016年10月5日
【申请日】2015年3月3日
【发明人】潘庭山
【申请人】中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1