一种路由过滤规则的组织方法和装置与流程

文档序号:18125079发布日期:2019-07-10 09:51阅读:186来源:国知局
一种路由过滤规则的组织方法和装置与流程
本申请涉及网络通信
技术领域
,特别涉及路由过滤规则的组织方法和装置。
背景技术
:路由过滤是网络中的一种功能,路由器将接收到的路由信息进行学习和过滤,来更好地调整网络拓扑结构。路由过滤技术中,一般包括两个环节,路由过滤规则的配置以及应用配置完的路由过滤规则对路由信息进行过滤。具体实施中,用户预先设定好各个匹配项的匹配条件以及匹配的优先级,然后在进行匹配时,按照设定好的匹配条件对待匹配网段进行顺次匹配。路由过滤时,对待匹配网段进行顺次匹配时,当匹配项数量较大的情况下,匹配效率低下。技术实现要素:有鉴于此,本申请提供一种路由过滤规则的组织方法和装置,当匹配项数量较大,且配置不经常更改的情况下,提高匹配效率。具体地,本申请是通过如下技术方案实现的:一种路由过滤规则的组织方法,应用于路由器,包括:依次读取数据库中存储的预配置的路由过滤规则;基于读取到的路由过滤规则对应的网段,在预设的二叉树上查找网段与该路由过滤规则对应的节点;其中,所述二叉树上的每一个节点分别对应一个网段;判断该路由过滤规则对应的网段是否包含于二叉树上已有路由过滤规则的对应网段中;如果是,不将该路由过滤规则添加至该节点;如果否,将该路由过滤规则添加至该节点。一种路由过滤规则的组织装置,应用于路由器,包括:读取单元,用于依次读取数据库中存储的预配置的路由过滤规则;查找单元,用于基于读取到的路由过滤规则对应的网段,在预设的二叉树上查找网段与该路由过滤规则对应的节点;其中,所述二叉树上的每一个节点分别对应一个网段;判断单元,用于判断该路由过滤规则对应的网段是否包含于二叉树上已有路由过滤规则的对应网段中;如果是,不将该路由过滤规则添加至该节点;如果否,将该路由过滤规则添加至该节点。由以上本申请提供的技术方案可见,通过依次读取数据库中存储的预配置的路由过滤规则,并基于读取到的路由过滤规则对应的网段,在预设的二叉树上查找网段与该路由过滤规则对应的节点;其中,所述二叉树上的每一个节点分别对应一个网段。通过判断该路由过滤规则对应的网段是否包含于二叉树上已有路由过滤规则的对应网段中;如果是,不将该路由过滤规则添加至该节点;如果否,将该路由过滤规则添加至该节点。一方面,由于在将数据库中的路由过滤规则添加到二叉树上时,已经将无效的路由过滤规则删除掉,因此,待匹配网段在沿着二叉树从根节点开始进行匹配时,可以避免与无效的路由过滤规则的匹配。同时,随着无效的路由过滤规则的删除,路由过滤规则的数量将会减少,因此,待匹配网段需要匹配的次数将会减少。另一方面,待匹配网段与路由过滤规则进行匹配时,均按照网段的比特位逐位进行匹配,一个网段的比特位只有32位,因此最多只需要匹配33次就能匹配到符合网段条件的节点,最后只需要在节点中查找到符合条件的路由过滤规则,并执行该路由过滤规则对应的动作。因此,在路由器上配置大量的路由过滤规则且配置不经常更改的情况下,采用本申请提供的技术方案,可以大大提高匹配效率。附图说明图1是本申请示出的一种路由过滤规则的组织方法流程图;图2是本申请示出的一种二叉树示例图;图3是本申请示出的另一种二叉树示例图;图4是本申请示出的一种路由过滤规则的组织装置的硬件结构图;图5是本申请示出的一种路由过滤规则的组织装置。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在相关技术中,在实现路由过滤时,通常是通过将待匹配网段与路由器数据库中的路由过滤规则进行顺次一一匹配,判断该待匹配网段是否满足数据库中的路由过滤规则的匹配条件;当匹配成功时,记录路由过滤规则并继续接着与剩下的路由过滤规则匹配,直到数据库中的路由过滤规则均被匹配完,最后从匹配成功的路由过滤规则中选择优先级最高的路由过滤规则作为匹配中的路由过滤规则,并执行相应的动作。请参见表1所示,表1为相关技术中管理员在路由器的数据库中配置的若干路由过滤规则的格式表:规则名称网段动作优先级Rule11.128.0.0/9Action1CRule21.0.0.0/8Action2BRule31.1.0.0/16Action3ARule41.0.0.0/9Action1CRule51.1.0.0/16Action2BRule61.0.0.0/8Action3C…………表1其中,上述表1中,假设A是最高的优先级,所述优先级A>B>C,当然,优先级不止A,B,C三个级别,还有其他比A,B,C等级低一些的优先级,所述动作也不止表1中所列出的,还包括其他若干动作,另外,路由过滤规则中还包含其他一些内容,表1中只列出了规则名称,网段,动作和优先级。在路由器中,以表1所示的路由过滤规则的格式,配置好若干路由过滤规则,并将该路由过滤规则储存于路由器本地的数据库中。路由器在接收到待匹配网段时,会将该待匹配网段与其本地数据库中的路由过滤规则进行顺次一一匹配,匹配过程包括:先判断待匹配网段是否包含于路由过滤规则所对应的网段,如果是,可以确定匹配成功,记录该路由过滤规则的优先级。如果否,表明匹配失败,继续按顺序与数据库中的路由过滤规则进行匹配。最后从匹配成功的路由过滤规则中选择优先级最高的路由过滤规则作为最后匹配中的路由过滤规则对,最后执行匹配中的路由过滤规则对应的动作,具体执行步骤如下:(a)、假设待匹配网段为1.1.1.0/24,路由器获取到该待匹配网段后,先跟规则名称为Rule1的路由过滤规则进行匹配,由于待匹配网段不包含于Rule1对应的网段,因此不满足匹配条件,该待匹配网段会结束与Rule1的匹配过程,接着与规则名称为Rule2的路由过滤规则进行匹配,该待匹配网段包含于Rule2对应的网段,因此满足匹配条件,路由器就会记录下该路由过滤规则以及其优先级。(b)、待匹配网段与Rule2匹配成功后,会结束与Rule2的匹配过程,接着与规则名称为Rule3的路由过滤规则进行匹配,该待匹配网段包含于Rule3所对应的网段,因此该待匹配网段与Rule3匹配成功,记录Rule3以及其优先级。该待匹配网段会结束与Rule3的匹配过程,接着与规则名称为Rule4的路由过滤规则进行匹配,该待匹配网段包含于Rule4所对应的网段,也满足匹配条件,因此也需要记录路由过滤规则Rule4以及其优先级,最后结束与Rule4的匹配过程。(c)、待匹配网段与Rule4匹配完成后,继续与规则名称为Rule5的路由过滤规则进行匹配,该待匹配网段包含于Rule5所对应的网段,因此满足匹配条件,路由器会记录下该路由过滤规则以及其优先级,结束与Rule5的匹配过程,继续与规则名称为Rule6的路由过滤规则进行匹配,该待匹配网段包含于Rule6所对应的网段,因此也满足匹配条件,路由器同样会记录下该路由过滤规则以及其优先级,并结束与Rule6的匹配过程,待匹配网段继续接着与数据库中的路由过滤规则进行匹配,如果匹配成功,就记录路由过滤规则以及其优先级,直到待匹配网段与数据库中的所有路由过滤规则完成匹配,最后根据路由器记录的匹配成功的路由过滤规则以及其优先级,选择优先级高的那个路由过滤规则作为最终匹配中的路由过滤规则,执行最终匹配中的路由过滤规则对应的动作,根据表1所述的,待匹配网段为1.1.1.0/24时,Rule2、Rule3、Rule4、Rule5和Rule6都满足匹配条件,由于Rule3的优先级最高,因此选择Rule3作为最终匹配中的路由过滤规则,并执行对应的Action3。由以上相关技术提供的技术方案可见,通过将待匹配网段与数据库中的路由过滤规则进行顺次一一匹配,记录匹配成功的路由过滤规则,并从中选择优先级高的路由过滤规则作为最终匹配中的路由过滤规则,最后执行该路由过滤规则对应的动作,并结束匹配过程。一方面,由于操作员在数据库中添加路由过滤规则时,一般不会考虑需要添加的路由过滤规则是否被包含于数据库中已有的路由过滤规则,因此数据库中存在一些无效的路由过滤规则,由于顺次一一匹配的关系,待匹配网段也会与那些无效的路由过滤规则进行匹配。另一方面,数据库中的路由过滤规则或者待匹配网段都会出现数量庞大的情况,采用顺次一一匹配的方法,会导致匹配速度很慢。可见,相关技术提供的技术方案存在着匹配效率低下的问题。为了解决相关技术中的问题,本申请提供了一种路由过滤规则的组织方法,通过依次读取数据库中存储的预配置的路由过滤规则,并基于读取到的路由过滤规则对应的网段,在预设的二叉树上查找网段与该路由过滤规则对应的节点;其中,所述二叉树上的每一个节点分别对应一个网段。通过判断该路由过滤规则对应的网段是否包含于二叉树上已有路由规则的对应网段中;如果是,不将该路由过滤规则添加至该节点;如果否,将该路由过滤规则添加至该节点。一方面,由于在将数据库中的路由过滤规则添加到二叉树上时,已经将无效的路由过滤规则删除掉,因此,待匹配网段在沿着二叉树从根节点开始进行匹配时,可以避免与无效的路由过滤规则的匹配。同时,随着无效的路由过滤规则的删除,路由过滤规则的数量将会减少,因此,待匹配网段需要匹配的次数将会减少。另一方面,待匹配网段与路由过滤规则进行匹配时,均按照网段的比特位逐位进行匹配,一个网段的比特位只有32位,因此最多只需要匹配33次就能匹配到符合网段条件的节点,最后只需要在节点中查找到符合条件的路由过滤规则,并执行该路由过滤规则对应的动作。因此,在路由器上配置大量的路由过滤规则且配置不经常更改的情况下,采用本申请提供的技术方案,可以大大提高匹配效率。请参加图1,图1为本申请示出的一种路由过滤规则的组织方法流程图,应用于路由器上,具体执行以下步骤:步骤101:依次读取数据库中存储的预配置的路由过滤规则;步骤102:基于读取到的路由过滤规则对应的网段,在预设的二叉树上查找网段与该路由过滤规则对应的节点;其中,所述二叉树上的每一个节点分别对应一个网段;步骤103:判断该路由过滤规则对应的网段是否包含于二叉树上已有路由过滤规则的对应网段中;如果是,不将该路由过滤规则添加至该节点;如果否,将该路由过滤规则添加至该节点。其中,上述二叉树是一种数据结构,二叉树上每个节点最多拥有两个子树,所述两个子树通常被称为“左子树”和“右子树”。二叉树通常用于二分查找,因此,二叉树上每个节点为其两个子树的中间值。在本例中,为了提升路由过滤规则的匹配效率,可以将数据库中存储的预配置的若干路由过滤规则组织成二叉树的数据结构。请参加图2,图2为本申请示出的一种二叉树示例图。二叉树的数据结构如图2所示,如果图中根节点为5,代表的范围为2~8,根节点的两个子节点可以分别为左子树3和右子树7,左子树代表的范围为2~5,右子树代表的范围为5~8。3所在的节点分别拥有左子树2和右子树4,该左子树代表的范围为2~3,右子树代表的范围为3~5。7所在的节点分别拥有左子树6和右子树8,该左子树代表的范围为5~7,右子树代表的范围为7~8。当需要找寻2.5所在的节点时,先判断2.5是否在该子树所代表的范围内,从图2中可以看出,2.5在该子树所代表的范围内,然后从根节点开始查找,从图中可知,2.5在左子树3中,3所在的节点又包括子树2和子树4,在进一步查找,可以确定2.5在子树2中。所述二叉树上每个节点代表的含义是根据数据类型来决定的,比如图2中表示的是数据大小范围,根据需要匹配的数据的值,与二叉树上每一个节点所代表的数据大小范围来进行匹配。如果将二叉树应用到网段中,那么二叉树的每一个节点所代表的就是网段范围的大小。在示出的一种实施方式中,在将路由过滤规则插入二叉树前,首先可以初始化一棵空树,然后将路由器支持的目标网段进行子网划分,将子网划分得到的划分后的网段,分别插入空树,组织成二叉树;其中,当将路由过滤规则组织成二叉树后,所述二叉树上的每一个节点分别对应一个对所述目标网段进行子网划分得到的网段。此时,二叉树上的每一个节点对应的网段,都是针对该节点上游节点对应的网段进行精细划分得到的子网段。以下以路由器支持的目标网段为1.0.0.0/8为例进行说明。请参见图3和表2,图3为本申请示出的另一个二叉树示例图,表2为本申请示出的二叉树节点与上述目标网段范围的对应表。节点名称网段A1.0.0.0/8B1.0.0.0/9C1.128.0.0/9D1.0.0.0/10E1.64.0.0/10F1.128.0.0/10G1.192.0.0/10表2其中,图3和表2只列出了部分内容,具体二叉树上每一个节点代表的范围是根据比特位来划分的。由于二叉树根节点所包含的范围是最大的,因此根节点所代表的网段为1.0.0.0/8。在进一步划分子树时,可以对根节点对应的网段1.0.0.0/8进行子网划分,划分为两个子网;例如,网段1.0.0.0/8划分为两个子网后,可以得到1.0.0.0/9和1.128.0.0/9两个网段,此时1.0.0.0/9可以对应根节点A的左子树B,1.128.0.0/9可以对应根节点A的左子树C;从比特位的方面来描述,在进行子网划分时,比特位从左到右,当第二字节的第一位为0时,其余23位不管是0或者1,进入根节点A的左子树中,该节点所代表的网段为1.0.0.0/9,即图3中的节点B;当第二字节的第一位为1时,其余23位不管是0或者1,进入根节点A的右子树中,该节点所代表的网段为1.128.0.0/9,即图3中的节点C。根据比特位对网段1.0.0.0/8进行划分之后,可以分别对划分后的子树进一步进行划分,即根据比特位对节点B和节点C进行划分。在对节点B进行划分时,如果第二字节中的比特位第二位为0,其余22位不管是0或者1,将进入节点B的左子树中,该节点所代表的网段为1.0.0.0/10,即图3中的节点D;如果第二字节中的比特位第二位为1,其余22位不管是0或者1,将进入节点B的右子树中,该节点所代表的网段为1.64.0.0/10,即图3中的节点E。在对节点C进行划分时,如果第二字节中的比特位第二位为0,其余22位不管是0或者1,进入节点C的左子树中,该节点所代表的网段为1.128.0.0/10,即图3中的节点F;如果第二字节中的比特位第二位为1,其余22位不管是0或者1,进入节点C的右子树中,该节点所代表的网段为1.192.0.0/10,即图3中的节点G。所述A,B,C,D,E,F,G的32位比特位如下所示,其中x表示可以取0或者1中的任意一个。A:00000001.xxxxxxxx.xxxxxxxx.xxxxxxxxB:00000001.0xxxxxxx.xxxxxxxx.xxxxxxxxC:00000001.1xxxxxxx.xxxxxxxx.xxxxxxxxD:00000001.00xxxxxx.xxxxxxxx.xxxxxxxxE:00000001.01xxxxxx.xxxxxxxx.xxxxxxxxF:00000001.10xxxxxx.xxxxxxxx.xxxxxxxxG:00000001.11xxxxxx.xxxxxxxx.xxxxxxxx对节点D,E,F,G的划分,以及划分之后进一步的划分均按照节点A,B,C的划分,均根据比特位划分,直到剩余的比特位全部被划分完为止。由于比特位剩余越多,所代表的网段范围越大,因此二叉树上越是处于底层的节点,所代表的网段范围越小。在本例中,当将路由器支持的目标网段组织成二叉树后,就可以将路由器数据库中预设的路由过滤规则添加到二叉树上。在示出的一种实施方式中,将数据库中的路由过滤规则基于预设的优先级排序,并放入队列中;根据优先级从高到低的顺序,依次从队列中读取路由过滤规则。为了避免与无效的路由过滤规则的匹配,需要将无效的路由过滤规则删除掉,将有效的路由过滤规则添加在二叉树上。为了实现这样的目的,可以采用两种方法来实现。第一种方法是在将路由过滤规则添加到二叉树上之前,判断是否有效,如果有效,就将路由过滤规则添加到二叉树上,如果无效,就将该路由过滤规则删掉。第二种方法是将数据库中的路由过滤规则添加到二叉树上,所有路由过滤规则被添加完了之后,再在二叉树上查找出无效的路由过滤规则,并从相应的节点中删除该无效的路由过滤规则。相比于第一种方法,该方法任务繁重,操作比较麻烦,因此,本申请采用第一种方法。将路由器数据库中预设的路由过滤规则,根据其优先级从高到低进行排序,并放入队列中,然后从队列中取出第一条路由过滤规则,该条路由过滤规则即为优先级最高的路由过滤规则。在示出的一种实施方式中,沿所述二叉树的根节点开始,将读取到的路由过滤规则对应的网段与所述二叉树上每一个节点分别对应的网段依次进行匹配;记录该路由过滤规则在所述二叉树上命中的节点,并查找命中的节点中对应的网段最小的节点;将所述对应的网段最小的节点作为该路由过滤规则的添加节点。从队列中取出第一条路由过滤规则后,判断该路由过滤规则所对应的网段是否包含于根节点所代表的网段,如果是,记录根节点的网段范围,然后沿着二叉树,继续与二叉树上的每一个节点进行匹配,如果该路由过滤规则所对应的网段包含于节点所代表的网段,则记录该节点的网段,直到该路由过滤规则与每一个节点所对应的网段完成匹配。最后,从匹配中的所有节点中,选择节点所对应的网段范围最小的节点作为最终匹配中的节点,并将第一条路由过滤规则添加到该节点。第一条路由过滤规则添加至二叉树上之后,继续从队列中读取第二条路由过滤规则,该路由过滤规则即为数据库中剩余路由过滤规则中优先级最高的路由过滤规则。读取该路由过滤规则之后,将该路由过滤规则所对应的网段与二叉树上的每一个节点进行匹配,如果该路由过滤规则所对应的网段包含于节点所代表的网段,则记录该节点的网段,直到该路由过滤规则与二叉树上的每一个节点所对应的网段完成匹配。最后从匹配中的所有节点中,选择节点所对应的网段范围最小的节点作为最终匹配中的节点。在示出的一种实施方式中,判断该路由过滤规则的添加节点所对应的网段是否包含于二叉树上已有路由过滤规则所对应的网段;如果是,确定该路由过滤规则为无效的路由过滤规则,则不将该路由过滤规则添加至该节点;如果否,则将该路由过滤规则添加至该节点。除了第一条路由过滤规则外,其余路由过滤规则添加到二叉树上之前,首先判断其余路由过滤规则的添加节点所对应的网段是否包含于二叉树上已有路由过滤规则所对应的网段。如果待添加路由过滤规则所涵盖网段已经被已添加路由过滤规则所涵盖网段所包含,且由于路由过滤规则在添加之前是按照优先级从高到低所排列,因而待添加路由过滤规则的优先级低于已添加路由过滤规则的优先级,因而待添加路由过滤规则为无效路由过滤规则。因此除了第一条路由过滤规则之外,其余过滤规则在添加之前只需要比较网段即可,不需要对路由过滤规则的优先级进行比较。读取到第二条路由过滤规则,并根据该路由过滤规则所对应的网段查找到最终匹配中的节点后,判断第二条路由过滤规则添加的节点所对应的网段是否包含于第一条路由过滤规则添加的节点所对应的网段,如果是,表明第二条路由过滤规则为无效的路由过滤规则,则不将第二条路由过滤规则添加至最终匹配中的节点。如果第二条路由过滤规则添加的节点所对应的网段不包含于第一条路由过滤规则添加的节点所对应的网段,表明第二条路由过滤规则为有效的路由过滤规则,则将第二条路由过滤规则添加至最终匹配中的节点。读取完第二条路由过滤规则之后,继续从对列中顺次读取路由过滤规则,首先将读取到的路由过滤规则查找到最终匹配中的节点,然后将读取到的路由过滤规则所对应的网段,与二叉树上已有路由过滤规则所对应的网段进行比较,当二叉树上有若干已经添加的路由过滤规则,则读取到的路由过滤规则所对应的网段,均需要与每一个已经添加的路由过滤规则所对应的网段进行比较,根据比较结果,判断是否添加至最终匹配中的节点。直到数据库中的有效路由过滤规则均被添加至二叉树上。在示出的一种实施方式中,获取待匹配网段,根据所述待匹配网段,沿所述二叉树的根节点开始,与所述二叉树上每一个节点上的路由过滤规则依次进行匹配;记录所述待匹配网段在所述二叉树上命中的路由过滤规则,并查找命中的路由过滤规则中对应的网段最小的路由过滤规则;执行所述对应的网段最小的路由过滤规则对应的动作,进行路由过滤。当数据库中的有效的路由过滤规则均被添加至二叉树上后,就可以获取待匹配网段,并对该待匹配网段进行路由过滤。实现对待匹配网段的路由过滤,可以采用两种方法实现。第一种方法是记录待匹配网段在二叉树上所有命中的路由过滤规则,最终选择该路由过滤规则中,对应的网段最小的路由过滤规则作为最终命中的路由过滤规则,并执行所述对应的网段最小的路由过滤规则所对应的动作。第二种方法是待匹配网段在二叉树上进行匹配时,实时更新匹配中的路由过滤规则,即沿二叉树进行匹配时,将新命中的路由过滤规则替换掉上一次命中的路由过滤规则,直到匹配过程结束。执行最后一次命中的路由过滤规则所对应的动作。采用第一种方法对待匹配网段进行路由过滤时,具体执行以下步骤:(a)、获取待匹配网段,将该待匹配网段沿二叉树的根节点开始,与二叉树上的根节点所对应的网段进行比较,如果待匹配网段包含于根节点对应的网段,记录根节点对应的网段,并继续沿二叉树与子节点进行匹配。如果待匹配网段不包含于根节点对应的网段,则不记录根节点对应的网段,但这样的情况几乎不会发生,一般待匹配网段都会包含于根节点对应的网段。(b)、待匹配网段与根节点对应的网段完成匹配后,将待匹配网段沿着二叉树上的子节点继续进行匹配,将待匹配网段与子节点所对应的网段进行比较,判断待匹配网段是否包含于子节点对应的网段,如果是,记录该子节点对应的网段,继续沿着二叉树与其余每一个的子节点进行匹配,如果否,不记录该子节点对应的网段,继续沿着二叉树与其余每一个的子节点进行匹配,直到二叉树上每一个的子节点与待匹配网段均完成匹配。(c)、从记录下的所有节点对应的网段中,选择节点对应网段最小的节点作为最终匹配中的路由过滤规则,并执行该路由过滤规则所对应的动作,对待匹配网段进行路由过滤。采用第二种方法对待匹配网段进行路由过滤时,具体执行以下步骤:(a)、获取待匹配网段,将该待匹配网段沿二叉树的根节点开始,与二叉树上的根节点所对应的网段进行比较,如果待匹配网段包含于根节点对应的网段,记录根节点对应的网段,并继续沿二叉树与子节点进行匹配。如果待匹配网段不包含于根节点对应的网段,则不记录根节点对应的网段,但这样的情况几乎不会发生,一般待匹配网段都会包含于根节点对应的网段。(b)、该待匹配网段与根节点完成匹配后,沿着二叉树与每一个的子节点进行匹配。首先,将待匹配网段与子节点所对应的网段进行比较,如果待匹配网段包含于子节点所对应的网段,将该子节点中对应的路由过滤规则替换掉上一次记录下的路由过滤规则,如果否,继续沿着二叉树与其余每一个的子节点进行匹配,直到二叉树上每一个的子节点与待匹配网段均完成匹配。(c)、将最后记录下的路由过滤规则作为最终匹配中的路由过滤规则,并执行该路由过滤规则对应的动作,对待匹配网段进行路由过滤。由以上本申请提供的技术方案可见,通过依次读取数据库中存储的预配置的路由过滤规则,并基于读取到的路由过滤规则对应的网段,在预设的二叉树上查找网段与该路由过滤规则对应的节点;其中,所述二叉树上的每一个节点分别对应一个网段。通过判断该路由过滤规则对应的网段是否包含于二叉树上已有路由过滤规则的对应网段中;如果是,不将该路由过滤规则添加至该节点;如果否,将该路由过滤规则添加至该节点。一方面,由于在将数据库中的路由过滤规则添加到二叉树上时,已经将无效的路由过滤规则删除掉,因此,待匹配网段在沿着二叉树从根节点开始进行匹配时,可以避免与无效的路由过滤规则的匹配。同时,随着无效的路由过滤规则的删除,路由过滤规则的数量将会减少,因此,待匹配网段需要匹配的次数将会减少。另一方面,待匹配网段与路由过滤规则进行匹配时,均按照网段的比特位逐位进行匹配,一个网段的比特位只有32位,因此最多只需要匹配33次就能匹配到符合网段条件的节点,最后只需要在节点中查找到符合条件的路由过滤规则,并执行该路由过滤规则对应的动作。因此,在路由器上配置大量的路由过滤规则且配置不经常更改的情况下,采用本申请提供的技术方案,可以大大提高匹配效率。与前述一种路由过滤规则的组织方法的实施例相对应,本申请还提供了一种路由过滤规则的组织装置的实施例。本申请一种路由过滤规则的组织装置的实施例可以应用在路由器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在路由器的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请一种路由过滤规则的组织装置所在路由器的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的路由器通常根据该路由过滤规则的组织装置的实际功能,还可以包括其他硬件,对此不再赘述。请参考图5,图5为本申请示出的一种路由过滤规则的组织装置,应用于路由器,所述装置包括:组织单元510,读取单元520,查找单元530,判断单元540,获取单元550,匹配单元560,记录单元570,执行单元580。其中,组织单元510,用于将路由器支持的目标网段组织成二叉树;其中,所述二叉树上的每一个节点分别对应一个对所述目标网段进行子网划分得到的网段;读取单元520,用于依次读取数据库中存储的预配置的路由过滤规则;查找单元530,用于基于读取到的路由过滤规则对应的网段,在预设的二叉树上查找网段与该路由过滤规则对应的节点;其中,所述二叉树上的每一个节点分别对应一个网段;判断单元540,用于判断该路由过滤规则对应的网段是否包含于二叉树上已有路由过滤规则的对应网段中;如果是,不将该路由过滤规则添加至该节点;如果否,将该路由过滤规则添加至该节点。获取单元550,用于获取待匹配网段;匹配单元560,用于根据所述待匹配网段,沿所述二叉树的根节点开始,与所述二叉树上每一个节点上的路由过滤规则依次进行匹配;记录单元570,用于记录所述待匹配网段在所述二叉树上命中的路由过滤规则,并查找命中的路由过滤规则中对应的网段最小的路由过滤规则;执行单元580,用于执行所述对应的网段最小的路由过滤规则对应的动作,进行路由过滤。在本实施例中,所述读取单元520,具体用于将数据库中的路由过滤规则基于优先级排序,并放入队列中;根据优先级从高到低的顺序,依次从队列中读取路由过滤规则。所述查找单元530,具体用于沿所述二叉树的根节点开始,将读取到的路由过滤规则对应的网段与所述二叉树上每一个节点分别对应的网段依次进行匹配;记录该路由过滤规则在所述二叉树上命中的节点,并查找命中的节点中对应的网段最小的节点;将所述对应的网段最小的节点作为该路由过滤规则的添加节点。所述判断单元540,进一步用于判断该路由过滤规则的添加节点所对应的网段是否包含于二叉树上已有路由过滤规则所对应的网段;如果是,确定该路由过滤规则为无效的路由过滤规则,则不将该路由过滤规则添加至该节点。如果否,则将该路由过滤规则添加至该节点。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1