一种清除快速转发表项的方法和装置与流程

文档序号:11148095阅读:356来源:国知局
一种清除快速转发表项的方法和装置与制造工艺

本申请涉及网络通信技术领域,特别涉及一种清除快速转发表项的方法和装置。



背景技术:

在相关技术中,为了实现报文的快速转发,转发设备可以将首次接收到的报文上送至CPU,CPU在对上送的报文进行路由信息查找,并基于查找到的路由信息转发完成后,通常可以利用该报文的会话信息以及该路由信息建立快速转发表项。后续转发设备再次接收到同一会话的报文时,则可以将该报文与创建完成的快速转发表项进行匹配,然后基于匹配的快速转发表项来转发该报文,而不再需要将该报文上送至CPU进行查表转发。由快速转发表项生成快速转发表,然后将接收到的报文基于匹配中的快速转发表项转发出去。

然而,在实际应用中,由于快速转发表项是基于路由信息生成的,因而当路由信息发生变化时,与该路由信息相关的所有的快速转发表项也需要更新,如果未及时更新快速转发表项,仍然按照原来的快速转发表项转发报文,可能会造成某些特殊应用的报文(比如某些UDP协议的计费报文)命中未及时更新的快速转发表而转发错误。



技术实现要素:

有鉴于此,本申请提供一种清除快速转发表项的方法和装置,应用于转发设备。

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

一种清除快速转发表项的方法,应用于转发设备,包括:

将接收到的报文与快速转发表中的快速转发表项进行匹配;

基于匹配中的快速转发表项中记录的信息,判断与所述报文对应的路由信息是否发生变化;

如果与所述报文对应的路由信息发生变化,则在所述报文的目的端口命中指定端口时,清除与该报文对应的快速转发表项。

一种清除快速转发表项的装置,应用于转发设备,包括:

匹配单元,用于将接收到的报文与快速转发表中的快速转发表项进行匹配;

判断单元,用于基于匹配中的快速转发表项中记录的信息,判断与所述报文对应的路由信息是否发生变化;

清除单元,用于如果与所述报文对应的路由信息发生变化,则在所述报文的目的端口命中指定端口时,清除与该报文对应的快速转发表项。

由以上本申请示出的技术方案可见,通过将接收到的报文与快速转发表中的快速转发表项进行匹配;然后基于匹配中的快速转发表项中记录的信息,判断与所述报文对应的路由信息是否发生变化;如果与所述报文对应的路由信息发生变化,则在所述报文的目的端口命中指定端口时,清除与所述报文对应的快速转发表项,从而

转发设备在接收到的与指定端口对应的应用发出的报文时,如果与该报文对应的路由信息发生变化,及时将与该报文匹配的快速转发表项清除,从而避免该报文命中未及时更新的快速转发表项而造成错误转发。

附图说明

图1为本申请一示例性实施例示出的一种清除快速转发表项的方法流程图;

图2为本申请一示例性实施例示出的一种清除快速转发表项的装置所在的转发设备的硬件结构图;

图3为本申请一示例性实施例示出的一种清除快速转发表项的装置。

具体实施方式

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

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

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

在相关技术中,转发设备可以将首次接收到的报文上送至CPU,CPU可以对该报文进行路由查找。CPU查找到对应于该报文的路由信息后,可以将该报文基于该路由信息进行转发。然后转发设备可以基于该报文的路由信息,以及该报文的会话信息;比如,该会话信息可以是该报文的五元组(源IP,源端口,目的IP,目的端口,协议号),生成对应的快速转发表项。此时生成的快速转发表项中,记录了报文转发时的封装信息、接口信息以及下一跳信息等。

当生成了快速转发表项后,可以将生成的快速转发表项添加至快速转发表中,当转发设备再次接收到同一会话下的后续报文后,可以基于该快速转发表对接收到的报文进行匹配,如果匹配中快速转发表中的某条表项时,可以根据该匹配中的表项中所对应的转发信息,将该报文进行转发,而不必需要将该报文上送至CPU进行查表转发,从而可以加快报文转发的速度。

然而,由于所述快速转发表与路由表中的路由信息相关,如果路由信息发生改变,此时快速转发表中与该路由信息相关的所有快速转发表项未及时更新,在这样的情况下,如果将命中未及时更新的快速转发表项的报文,仍然按照原来的快速转发表项进行报文转发,那么会造成某些特殊应用的报文;比如,某些UDP(User Datagram Protocol,用户数据报协议)的计费报文命中未及时更新的快速转发表项而转发错误。

为了解决相关技术中的问题,本申请提供了一种清除快速转发表项的方法,应用于转发设备,通过将接收到的报文与快速转发表中的快速转发表项进行匹配;然后基于匹配中的快速转发表项中记录的信息,判断与所述报文对应的路由信息是否发生变化;如果与所述报文对应的路由信息发生变化,则在所述报文的目的端口命中指定端口时,清除与所述报文对应的快速转发表项。

如果转发设备在接收到的与指定端口对应的应用发出的报文时,如果与该报文对应的路由信息发生变化,及时将与该报文匹配的快速转发表项清除,从而避免该报文命中未及时更新的快速转发表项而造成错误转发。

请参见图1,图1为本申请一示例性实施例示出一种清除快速转发表项的方法流程图,应用于转发设备,具体执行以下步骤:

步骤101:将接收到的报文与快速转发表中的快速转发表项进行匹配;

在转发设备接收到目标应用的首次报文时,可以将该报文上送至CPU,然后CPU可以根据该报文查找路由表中的路由信息,将该报文基于查找到的路由信息转发出去。该报文转发出去之后,可以根据该报文对应的路由信息,以及该报文的会话信息;比如,该会话信息可以是该报文的五元组(源IP,源端口,目的IP,目的端口,协议号),创建快速转发表项,然后将该快速转发表项添加至快速转发表。

当转发设备再次接收到同一会话下的后续报文时,可以将该报文与快速转发表中的快速转发表项进行匹配,然后按照匹配中快速转发表项中记录的转发信息(出接口,下一跳,封装信息等)将该报文直接转发出去,不需要再将该报文上送至CPU,再进行软件层面的处理。

由于所述快速转发表中的快速转发表项是根据路由表中的路由信息来创建的,因此为了保证快速转发表中的快速转发表项的时效性,可以通过检测路由信息是否发生变化,并在路由信息发生变化时,及时地对与该路由信息对应的快速转发表项进行更新。

在本例中,为了标识每一条快速转发表项对应的路由信息的变化情况,转发设备为每一条路由信息分别设置一个魔术字寄存器。该魔术字寄存器用于存储魔术字的取值,该魔术字的取值与所述路由信息同步变化。

在示出的一种实施方式中,本端转发设备可以运行路由学习协议,基于路由学习周期,主动地向相邻转发设备学习路由信息,然后根据当前路由周期学习到的路由信息,以及上一路由周期学习到的路由信息,将这两个路由周期学习到的路由信息进行比较,然后判断相邻路由周期学习到的路由信息,是否发生变化。

如果学习到的路由信息发生变化,则可以更新与该路由信息对应的魔术字寄存器中记录的魔术字的取值,并将路由表中原来的路由信息进行删除,将当前路由学习周期学习到的路由信息添加至路由表中。如果学习到的路由信息没有发生变化,则可以将当前路由学习周期学习到的路由信息删除,保持路由表中的路由信息不变。

在本例中转发设备还可以在快速转发表项中添加魔术字字段,所述魔术字字段用于存储生成该快速转发表项所使用的路由信息对应的魔术字寄存器中存储的初始魔术字的取值。

当转发设备接收到报文时,可以将该报文与快速转发表中的表项进行一一匹配,如果该报文没有命中快速转发表中任一快速转发表项,则可以将该报文上送至CPU,然后由CPU查找与该报文对应的路由信息,接着根据查找到的路由信息,以及该报文的会话信息(比如五元组信息),创建与该报文对应的快速转发表项,然后读取与该路由信息对应的魔术字寄存器中记录的魔术字的取值,并将读取到的魔术字的取值记录至该快速转发表项中的魔术字字段中,然后将该快速转发表项添加至快速转发表中。

步骤102:基于匹配中的快速转发表项中记录的信息,判断与所述报文对应的路由信息是否发生变化;

当转发设备接收到的报文,匹配中快速转发表中的某一个快速转发表项时可以读取该快速转发表项的魔术字字段中记录的取值,然后将该取值与生成该快速转发表项时所使用的路由信息对应的魔术字寄存器中存储的魔术字的取值进行比较,从而来判断所述报文对应的路由信息是否发生了变化。

在示出的一种实施方式中,当转发设备接收到的报文与快速转发表中的表项匹配完之后,如果该报文匹配中快速转发表中的某一个快速转发表项,转发设备可以读取该报文匹配中的快速转发表项的魔术字字段中记录的取值。

转发设备提取出该快速转发表项的魔术字字段中记录的魔术字的取值后,与生成该快速转发表项时所使用的路由信息对应的魔术字寄存器中的魔术字的取值进行比较,判断该快速转发表项中记录的魔术字的取值,与生成该快速转发表项时所使用的路由信息对应的魔术字寄存器中的魔术字的取值是否相等。

如果该快速转发表项中记录的魔术字的取值,与生成该快速转发表项时所使用的路由信息对应的魔术字寄存器中的魔术字的取值相等,则表明生成该快速转发表项时所使用的路由信息没有发生变化,即与转发设备接收到的报文对应的路由信息没有发生变化。

如果该快速转发表项中记录的魔术字的取值,与生成该快速转发表项时所使用的路由信息对应的魔术字寄存器中的魔术字的取值不相等,则表明生成该快速转发表项时所使用的路由信息发生了变化,即与转发设备接收到的报文对应的路由信息发生了变化。

步骤103:如果与所述报文对应的路由信息发生变化,则在所述报文的目的端口命中指定端口时,清除与该报文对应的快速转发表项。

其中,在本实施例中,转发设备可以预先申请了一个寄存器,定义为特殊端口寄存器,所述特殊端口寄存器中存储了若干指定端口;

例如,如果想要在路由信息发生变化时,对若干特殊应用发出的报文所对应的快速转发表项及时清除,则可以将该若干特殊应用的目的端口设置为指定端口,然后将该若干指定端口存储至该特殊端口寄存器中;比如某些特殊应用发出的基于UDP端口的计费报文,这些报文为单向流量,对于这些报文的目的端口,需要被放入特殊端口寄存器中。

当转发设备接收到的报文命中快速转发表中的某一个快速转发表项,且生成该快速转发表项时所使用的路由信息发生了变化时,可以将该报文的目的端口与所述特殊端口寄存器中存储的指定端口进行匹配,然后判断该报文的目的端口命中所述特殊端口寄存器中的指定端口时,可以清除与该报文对应的快速转发表项。

在示出的一种实施方式中,如果与转发设备接收到的报文对应的路由信息发生变化,可以将该报文的目的端口与所述特殊端口寄存器中存储的指定端口进行匹配,判断该报文的目的端口是否命中所述特殊端口寄存器中存储的指定端口。

如果该报文的目的端口命中所述特殊端口寄存器中存储的指定端口,则可以将该报文匹配中的快速转发表项清除。

通过这种方式,当与指定端口对应的应用所发出的报文命中快速转发表中的快速转发表项,且生成该快速转发表项时所使用的路由信息发生变化时,可以及时地将该快速转发表项进行清除,比如某些特殊应用发出的基于UDP端口的计费报文,及时将该计费报文匹配中的快速转发表项进行清除,可以避免该计费报文的错误转发。

在本例中,当转发设备将与该报文对应的快速转发表项清除后,可以将该报文上送至CPU,由CPU查找对应于该报文的路由信息对该报文进行转发处理,在该报文进行转发之后,可以基于CPU查找到的与该报文对应的路由信息,以及该报文的会话信息,为该报文重新创建新的快速转发表项;

一方面,当为该报文重新创建新的快速转发表项后,可以将与该报文对应的路由信息所对应的魔术字寄存器中存储的魔术字的当前取值,记录至该新创建的快速转发表项中;

另一方面,当将魔术字寄存器中存储的魔术字的当前取值,记录至该新创建的快速转发表项中后,可以将该新创建的快速转发表项下发至快速转发表中,以完成对快速转发表中的表项的及时更新。

通过这种方式,转发设备可以将未及时更新的快速转发表项清除,然后将该报文上送至CPU,由CPU查找与该报文对应的路由信息,然后基于查找的路由信息将该报文进行转发。该报文转发之后,转发设备可以基于该路由信息,以及该报文的会话信息,重新创建新的快速转发表项。创建完对应于该报文的快速转发表项之后,CPU可以将该快速转发表项下发至快速转发表中,从而可以在路由信息发生变化时,及时地更新与该路由信息对应的快速转发表项。当然,如果与转发设备接收到的报文对应的路由信息发生变化,且该报文的目的端口没有命中所述特殊端口寄存器中的指定端口,则可以基于所述快速转发表中该报文匹配中的快速转发表项,对该报文进行转发。

由以上本申请示出的技术方案可见,通过将接收到的报文与快速转发表中的快速转发表项进行匹配;然后基于匹配中的快速转发表项中记录的信息,判断与所述报文对应的路由信息是否发生变化;如果与所述报文对应的路由信息发生变化,则在所述报文的目的端口命中指定端口时,清除与所述报文对应的快速转发表项。

如果转发设备在接收到的与指定端口对应的应用发出的报文时,如果与该报文对应的路由信息发生变化,及时将与该报文匹配的快速转发表项清除,从而避免该报文命中未及时更新的快速转发表项而造成错误转发。与前述一种清除快速转发表项的方法的实施例相对应,本申请还提供了一种清除快速转发表项的装置的实施例。

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

请参考图3,图3为本申请一示例性实施例示出的一种清除快速转发表项的装置,应用于转发设备,所述装置包括,匹配单元310,判断单元320,清除单元330。

其中,所述匹配单元310,用于将接收到的报文与快速转发表中的快速转发表项进行匹配;

所述判断单元320,用于基于匹配中的快速转发表项中记录的信息,判断与所述报文对应的路由信息是否发生变化;

所述清除单元330,用于如果与所述报文对应的路由信息发生变化,则在所述报文的目的端口命中指定端口时,清除与该报文对应的快速转发表项。

在本实施例中,所述转发设备中针对路由信息分别预设了对应的魔术字寄存器;所述魔术字寄存器中存储的魔术字的取值与所述路由信息同步变化。

所述装置还包括:

学习单元,用于基于路由学习周期,向相邻设备主动学习路由信息;

比较单元,用于将当前路由学习周期学习到的路由信息,与上一路由学习周期学习到的路由信息进行比较,以判断学习到的路由信息是否发生变化;

更新单元,用于如果该路由信息发生变化,则更新与该路由信息对应的魔术字寄存器中存储的魔术字的取值。

在这样的情况下,所述判断单元320,具体用于:

读取匹配中的快速转发表项中记录的魔术字的取值;

判断所述转发表项中的记录的魔术字的取值,与生成所述快速转发表项所使用的路由信息对应的魔术字寄存器中存储的当前魔术字的取值是否相等;

如果不相等,确定所述报文对应的路由信息发生变化;

如果相等,确定所述报文对应的路由信息未发生变化。

另外,所述装置还包括:

上送单元,用于在清除与所述报文对应的快速转发表项后,将该报文上送至CPU,由CPU查找对应于该报文的路由信息对该报文进行转发处理;

创建单元,用于基于CPU查找到的路由信息,以及该报文的会话信息,为所述报文重新创建新的快速转发表项;以及

将与该路由信息对应的魔术字寄存器中存储的魔术字的当前取值记录至所述新的快速转发表项中。

转发单元,用于如果与所述报文对应的路由信息发生变化,且该报文的目的端口未命中所述指定端口,则基于所述快速转发表项针对该报文进行转发。

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

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

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

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