一种基于数据报文分类的报文压缩的方法和装置与流程

文档序号:11138602阅读:322来源:国知局
一种基于数据报文分类的报文压缩的方法和装置与制造工艺

本申请涉及网络通信技术领域,特别涉及一种基于数据报文分类的报文压缩的方法和装置。



背景技术:

数据报文是网络设备进行信息交互的媒介,随着网络设备的智能化,网络环境的复杂化,数据报文的传输也变得愈发庞大,网络间数据传输的稳定、可靠尤其重要。

不论是路由器还是交换机或者更为高级的网络交换设备,其CPU的交换容量都有自己的固有能力,如果数据报文过大,导致超出CPU的处理能力,势必会出现数据传输失败,流量丢失的情况。



技术实现要素:

有鉴于此,本申请提供一种基于数据报文分类的报文压缩的方法和装置,应用于交换设备。

具体地,本申请是通过如下技术方案实现的:

一种基于数据报文分类的报文压缩的方法,应用于交换设备,包括:

基于预设的访问控制列表ACL规则,对接收到的数据报文进行分类;

对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文;其中,所述压缩报文包含数据载荷相同的报文个数以及相同的数据载荷;

将所述压缩报文上报至CPU,由该CPU将所述压缩报文发送至对端设备。

一种基于数据报文分类的报文压缩的装置,应用于交换设备,包括:

分类单元,用于基于预设的ACL规则,对接收到的数据报文进行分类;

压缩单元,用于对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文;其中,所述压缩报文包含数据载荷相同的报文个数以及相同的数据载荷;

上报单元,用于将所述压缩报文上报至CPU,由该CPU将所述压缩报文发送至对端设备。

由以上本申请提供的技术方案可见,本申请通过基于预设的ACL规则,对接收到的数据报文进行分类;对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文;其中,所述压缩报文包含数据载荷相同的报文个数以及相同的数据载荷;然后将所述压缩报文上报至CPU,由该CPU将所述压缩报文发送至对端设备。

由于针对各类型数据报文中的相同数据报文进行了裁剪,并将所述裁剪后若干相同数据报文压缩成一个数据报文,从而可以降低接收到的数据报文的报文负载,提升CPU缓存区的使用率以及缓解CPU的报文传输压力,可以有效解决在进行大数据传输时由于CPU处理能力有限,对接收到的数据报文进行丢弃而导致数据传输丢失的问题。

附图说明

图1为相关技术中一示例性实施例示出的一种数据报文上报的原理图;

图2为相关技术中一示例性实施例示出的一种数据报文上报的示意图;

图3为本申请一示例性实施例示出的一种基于数据报文分类的报文压缩的方法流程图;

图4为本申请一示例性实施例示出的一种数据报文分类的示意图;

图5为本申请一示例性实施例示出的一种数据报文压缩的示意图;

图6为本申请一示例性实施例示出的一种压缩报文解压缩的示意图;

图7为本申请一示例性实施例示出的一种基于数据报文分类的报文压缩的装置所在交换设备的一种硬件结构图;

图8为本申请一示例性实施例示出的一种基于数据报文分类的报文压缩的装置。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

请参见图1,图1为相关技术中一示例性实施例示出的一种数据报文上报的原理图。

在相关技术中,交换设备通过物理口收到数据报文后,首先会将数据报文缓存至CPU的物理缓存区中。其中,物理缓存区中缓存的数据报文,可以采用中断的方式上报给CPU。在数据缓存的过程中,当中断周期到达,交换设备可以暂停将数据报文缓存至CPU的物理缓存区中,然后将物理缓存区中缓存的数据报文上报至CPU,该CPU收到数据报文后可以关闭中断上下文,并唤醒任务上下文,接着就可以对缓存区上报的数据报文进行处理了。最后对该数据报文处理完毕之后,就可以将数据报文通过物理出接口发送至对端设备。

然而,中断响应之前,当CPU的物理缓存区被占满时,就会有大量的数据报文被上报至CPU,这样就会给CPU的处理带来很大的压力。而且,如果CPU的带宽被占满,在这样的情况下,必然会引起CPU的处理能力下降,导致部分数据报文丢失,从而就会给用户带来巨大的损失。

例如,如图2所示,交换设备接收到数据报文后,会将报文缓存至CPU的物理缓存区中,假设每个缓存节点上的储存空间为M,CPU共有N个缓存节点,那么这个CPU的交换容量即为M*N,如果CPU的带宽已经被占满了,在这样的情况下,该CPU的处理能力已然已经下降了,当数据报文的容量超过M*N时,在这样的情况下,多余的数据报文就会全部丢失。

为了解决相关技术中存在的问题,本申请提供了一种基于数据报文分类的报文压缩的方法,应用于交换设备,通过基于预设的访问控制列表ACL规则,对接收到的数据报文进行分类;然后对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文;其中,所述压缩报文包含数据载荷相同的报文个数以及相同的数据载荷;最后,将所述压缩报文上报至CPU,由该CPU将所述压缩报文发送至对端设备。

由于针对各类型数据报文中的相同数据报文进行了裁剪,并将所述裁剪后若干相同数据报文压缩成一个数据报文,从而可以降低接收到的数据报文的报文负载,提升CPU缓存区的使用率以及缓解CPU的报文传输压力,可以有效解决在进行大数据传输时由于CPU处理能力有限,对接收到的数据报文进行丢弃而导致数据传输丢失的问题。

请参见图3,图3为本申请一示例性实施例示出的一种基于数据报文分类的报文压缩的方法流程图,应用于交换设备,具体执行以下步骤:

步骤301:基于预设的ACL规则,对接收到的数据报文进行分类;

步骤302:对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文;其中,所述压缩报文包含数据载荷相同的报文个数以及相同的数据载荷;

步骤303:将所述压缩报文上报至CPU,由该CPU将所述压缩报文发送至对端设备。

在本例中,用户可以在上述交换设备上预先配置ACL(Access Control list,访问控制列表)规则。其中,上述ACL规则用于将交换设备接收到的数据报文进行分类在该ACL规则中可以包含用于进行匹配的分类特征。

其中,上述分类特征,在本例中不进行特别限定,可以基于实际的分类需求进行设定;例如,可以包括三层报文头、协议类型、二层报文头、以太网类型、VLAN等不同的报文特征。

上述ACL规则中,除了上述分类特征以外,还可以包括与上述分类特征对应的执行动作。其中,在一种实施方式中,上述执行动作可以是将与分类特征匹配的数据报文缓存至指定的缓存队列。

当物理口接收到数据报文后,可以基于CPU下发的ACL规则对接收到的数据报文进行分类。

其中,CPU下发上述ACL规则时,可以在物理端口收到数据报文之前预先下发,也可以在物理端口接收到数据报文后,进行动态下发,在本例中不进行特别限定。

例如,如图4所示,物理端口可以将接收到的数据报文逐条与所述若干条ACL规则进行匹配,比如当数据报文A与ACL规则A进行匹配时,如果ACL规则A对应的动作是将匹配成功的数据报文缓存至缓存队列0里面,那么数据报文A与ACL规则匹配成功,就可以将数据报文A缓存至缓存队列0里面;如果匹配不成功,那么就可以将数据报文A与其余ACL规则继续进行匹配,直到匹配成功。

在示出的一种实施方式中,用户还可以按照使用场景及数据传输的重要程度,对不同分类的数据报文分别预配置优先级,同时为了保证优先级高的数据报文优先被处理,在将不同分类的数据报文缓存至不同的缓存队列之后,还可以根据为不同分类数据报文分别预配置的优先级,按照优先级从高到低的顺序针对各缓存队列进行排序。

当排序完成后,可以基于排序后的缓存队列就可以生成对应的缓存链表。此时生成的该缓存链表中的各缓存队列,后续将会按照该排序的顺序依次进行处理。

CPU生成对应的缓存链表之后,就可以基于数据报文与缓存队列的对应关系,将匹配成功的数据报文缓存至缓存链表中相应的缓存队列中。其中,所述缓存链表的容量会随着数据报文的增多变得越来越大,不仅缓存队列的数量会增多,而且缓存队列中的数据报文的数量也会逐渐增多。

在示出的一种实施方式中,数据报文缓存至缓存队列中相应的缓存队列中之后,CPU可以遍历所述缓存链表,然后依次查找所述缓存链表中各缓存队列中,是否存在数据载荷相同的数据报文;如果存在数据载荷相同的数据报文,此时,CPU可以统计数据载荷相同的数据报文的数量,并可以从所述数据载荷相同的报文中裁剪出数据载荷;然后可以将基于裁剪出的数据载荷构建对应的压缩报文。

其中,CPU在遍历上述缓存链表时,可以按照缓存链表中缓存队列的顺序,依次在各缓存队列中查找数据载荷相同的数据报文。例如,CPU依次在各缓存队列中查找数据载荷相同的数据报文时,如果某一缓存队列中出现多条数据载荷相同的数据报文时,则可以将这多条数据报文进行裁剪,将数据报文的报文头和数据载荷分离,然后在数据载荷部分添加数据载荷相同的数据报文的个数的内容,在这种情况下,数据载荷部分就可以包括数据载荷和相同数据报文个数,因此就可以将多个数据载荷相同的数据报文压缩成一个数据报文。之后,如果再次出现相同的数据报文,此时就可以直接对原来压缩过的数据报文中的数据载荷部分进行修改,对数据载荷相同的数据报文的个数进行相应的累加即可。

在示出的一种实施方式中,当对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文后,还可以将与所述报文对应的原始报文删除。

通过将压缩报文对应的原始报文删除,可以留出缓存空间缓存更多的数据报文,从而在大量数据报文缓存至缓存队列时,可以在一定程度上减轻CPU的缓存压力,避免数据报文的丢失。

当然,如果缓存队列中不存在数据载荷相同的数据报文,则不对这些数据报文进行处理,保持数据报文原本的样子,待报文中断周期到达之后将这些数据报文与压缩报文一起上报至CPU,由CPU进一步处理。

例如,如图5所示,CPU在缓存队列0中查找到两个数据载荷相的数据报文时,将这两个数据报文进行裁剪,然后形成如图5所示的一个压缩报文,然后将与该压缩报文对应的原始报文删除掉,留出更多的缓存空间缓存数据报文。

在本例中,报文中断周期到达之后(比如CPU接收到转发芯片上报的中断信号),物理接口可以暂停将数据报文缓存至缓存队列,然后可以将缓存队列中所有的数据报文一起上报至CPU,然后,CPU会关闭中断上下文,唤醒任务上下文,由CPU对数据报文处理。另外,为了保证对端设备完整的收到数据,在本例中,CPU在将数据报文传输至对端设备时,可以采用断点重传机制。

其中,断点重传机制是指,CPU在将数据报文传输到对端设备时,可以在接收到对端设备针对上一个数据报文的响应报文后,然后再继续向对端设备发送数据报文,保证每一次向对端设备发送数据报文之前,先确定接收到上一个数据报文的响应报文。

可见,通过这种方式可以留出缓存空间缓存更多的数据报文,从而在大量数据报文缓存至缓存队列时,可以在一定程度上减轻CPU的缓存压力,避免数据报文的丢失。

以上描述为数据报文的压缩,接下来描述的是数据报文的解压缩。

在示出的一种实施方式中,当接收到对端设备发送的压缩报文时,仍然可以根据ACL规则对接收到的压缩报文进行分类,并存储到不同缓存对列,并对缓存对列进行排序。其中,基于ACL规则进行分类以及对缓存对列的排序过程不再赘述。

当中断周期到达后,由于此时物理缓存区中存储数据报文可能是压缩报文,在这种情况下,物理接口在将物理缓存区的报文上报至CPU之前,可以检查上报的报文是否为压缩报文(比如可以检查数据报文承载的报文载荷中是否携带数据载荷相同的数据报文的个数),如果为压缩报文,则可以还原所述压缩过的报文,得到原始的数据报文。

具体地,可以读取所述压缩报文中的数据载荷相同的报文个数N;然后可以对所述压缩报文中的数据载荷复制N次,并基于与所述压缩报文相同的报文封装格式,可以针对复制后的数据载荷重新进行报文封装,以得到N个原始的数据报文。

例如,如图6所示,从缓存队列中提取到如图6中所示的压缩报文,可以从数据载荷部分读取到数据载荷相同的报文个数N,然后可以将相同的数据载荷进行复制N次,接着按照压缩报文的封装格式可以将复制后的数据载荷进行数据报文的封装,因此可以得到N个原始数据报文,然后可以将压缩报文删除。

由以上本申请提供的技术方案可见,本申请通过基于预设的ACL规则,对接收到的数据报文进行分类;对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文;其中,所述压缩报文包含数据载荷相同的报文个数以及相同的数据载荷;然后将所述压缩报文上报至CPU,由该CPU将所述压缩报文发送至对端设备。

由于针对各类型数据报文中的相同数据报文进行了裁剪,并将所述裁剪后若干相同数据报文压缩成一个数据报文,从而可以降低接收到的数据报文的报文负载,提升CPU缓存区的使用率以及缓解CPU的报文传输压力,可以有效解决在进行大数据传输时由于CPU处理能力有限,对接收到的数据报文进行丢弃而导致数据传输丢失的问题。

与前述一种基于数据报文分类的报文压缩的方法的实施例相对应,本申请还提供了一种基于数据报文分类的报文压缩的装置的实施例。

本申请一种基于数据报文分类的报文压缩的装置的实施例可以应用在交换设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在交换设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本申请一种基于数据报文分类的报文压缩的装置所在交换设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的交换设备通常根据该基于数据报文分类的报文压缩的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图8,图8为本申请一示例性实施例示出的一种基于数据报文分类的报文压缩的装置,应用于交换设备,所述装置包括:分类单元810,压缩单元820,上报单元830。

其中,分类单元810,用于基于预设的ACL规则,对接收到的数据报文进行分类;

压缩单元820,用于对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文;其中,所述压缩报文包含数据载荷相同的报文个数以及相同的数据载荷;

上报单元830,用于将所述压缩报文上报至CPU,由该CPU将所述压缩报文发送至对端设备。

在本例中,所述装置还包括:

缓存单元,用于将不同分类的数据报文缓存至不同的缓存队列;

排序单元,用于根据为不同分类的数据报文分别预配置的优先级,按照优先级从高到低的顺序针对各缓存队列进行排序;

生成单元,用于基于排序后的缓存队列生成对应的缓存链表。

删除单元,用于当对分类后的数据报文中数据载荷相同的数据报文进行压缩,生成压缩报文后,将与所述压缩报文对应的原始报文删除。

读取单元,用于当接收到对端设备发送的压缩报文时,读取所述压缩报文中的数据载荷相同的报文个数N;

封装单元,用于对所述压缩报文中的数据载荷复制N次,并基于与所述压缩报文相同的报文封装格式,针对复制后的数据载荷重新进行报文封装,以得到N个原始的数据报文。

其中,所述压缩单元具体用于:

遍历所述缓存链表,依次查找所述缓存链表中各缓存队列中,是否存在数据载荷相同的数据报文;

如果存在数据载荷相同的数据报文,统计数据载荷相同的数据报文的数量,并从所述数据载荷相同的报文中裁剪出数据载荷;

基于裁剪出的数据载荷构建对应的压缩报文。

所述上报单元具体用于:

当到达报文中断周期时,暂停将数据报文缓存至缓存队列中,将缓存队列中数据报文上传至CPU。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1