一种网络地址转换与访问控制列表规则聚合方法和装置与流程

文档序号:13742731阅读:110来源:国知局
技术领域本发明涉及数据通信技术,尤其涉及一种网络地址转换与访问控制列表规则聚合方法和装置。

背景技术:
网络地址转换(NAT,NetworkAddressTranslation)应用于内部主机访问外部网络时,将本地主机的IP地址转换成外网IP地址,进行网络访问。通过NAT可以使用少量的公有IP地址代表较多的私有IP地址,从而有效缓解可用IP地址空间枯竭的问题。访问控制列表(ACL,AccessControlList)是路由器和交换机接口的指令列表,用来控制端口进出的数据包。ACL中包含了匹配关系、条件和查询语句,是一个框架结构,其目的是为了对某种访问进行控制。NAT在进行动态地址转换时,需要先通过ACL规则进行匹配,将匹配到的报文再进行NAT地址转换。现有技术中的设备在进行报文转发时,如果报文同时需要进行NAT和ACL,大多采用的是顺序匹配方法,即:执行完ACL再进行NAT,或执行完NAT再执行ACL,这就需要进行两次处理,涉及查询两张表格并进行两次命中,报文转发所需要的时间成本较高。

技术实现要素:
有鉴于此,本发明实施例期望提供一种网络地址转换与访问控制列表规则聚合方法和装置,能够减小后续报文转发时的查询和命中次数,提升报文转发性能,降低转发成本。为达到上述目的,本发明的技术方案是这样实现的:本发明提供了一种网络地址转换NAT与访问控制列表ACL规则聚合方法,所述方法包括:根据NAT规则表建立第一规则表;将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果建立第二规则表;将所述ACL规则表与第二规则表进行规则聚合,生成NAT与ACL规则聚合表。较佳地,所述根据NAT规则表建立第一规则表包括:将所述NAT规则表中的各个规则分别复制到第一规则表中。较佳地,所述将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果建立第二规则表包括:选取当前第一规则表中的第一条规则,先与ACL规则表中的第一条规则进行比较;当所述选取的第一规则表中的规则全部包含在所述ACL规则中时,删除所述选取的第一规则表中的规则,并重新选取第一规则表中的下一条规则与ACL规则表中的规则进行比较;当所述选取的第一规则表中的规则部分包含在ACL规则中时,将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分,并与ACL规则表中的下一条规则进行比较;当所述选取的第一规则表中的规则不包含在ACL规则表中时,将所述选取的第一规则表中的规则与ACL规则表中的下一条规则进行比较。较佳地,所述方法还包括:判断ACL规则表的允许状态;相应地,当所述ACL规则表为允许的时,在所述选取的第一规则表中的规则全部包含在所述ACL规则中的情况下,所述方法还包括:将所述选取的第一规则表中的规则写入第二规则表;在所述选取的第一规则表中的规则部分包含在ACL规则中的情况下,所述方法还包括:将所述选取的第一规则表中的规则中包含在ACL规则中的部分写入第二规则表。较佳地,当所述用于比较的ACL规则为所述ACL规则表中的最后一条规则时,所述选取的第一规则表中的规则全部包含在当前ACL规则中。本发明又提供了一种网络地址转换与访问控制列表规则聚合装置,所述装置包括:第一规则表建立模块、规则比较模块、规则聚合模块;其中,所述第一规则表建立模块,用于根据NAT规则表建立第一规则表;所述规则比较模块,用于将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果建立第二规则表;所述规则聚合模块,用于将所述ACL规则表与第二规则表进行规则聚合,生成NAT与ACL规则聚合表。较佳地,所述第一规则表建立模块具体用于:将所述NAT规则表中的各个规则分别复制到第一规则表中。较佳地,所述规则比较模块具体用于:选取当前第一规则表中的第一条规则,先与ACL规则表中的第一条规则进行比较;当所述选取的第一规则表中的规则全部包含在所述ACL规则中时,删除所述选取的第一规则表中的规则,并重新选取第一规则表中的下一条规则与ACL规则表中的规则进行比较;当所述选取的第一规则表中的规则部分包含在ACL规则中时,将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分,并与ACL规则表中的下一条规则进行比较;当所述选取的第一规则表中的规则不包含在ACL规则表中时,将所述选取的第一规则表中的规则与ACL规则表中的下一条规则进行比较。较佳地,所述规则比较模块还用于:判断ACL规则表的允许状态;相应地,当所述ACL规则表为允许的时,在所述选取的第一规则表中的规则全部包含在所述ACL规则中的情况下,所述方法还包括:将所述选取的第一规则表中的规则写入第二规则表;在所述选取的第一规则表中的规则部分包含在ACL规则中的情况下,所述方法还包括:将所述选取的第一规则表中的规则中包含在ACL规则中的部分写入第二规则表。较佳地,所述规则比较模块还用于:当所述用于比较的ACL规则为所述ACL规则表中的最后一条规则时,所述选取的第一规则表中的规则全部包含在当前ACL规则中。本发明实施例所提供的NAT与ACL规则聚合方法和装置,先根据NAT规则表建立第一规则表;然后将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果建立第二规则表;之后将所述ACL规则表与第二规则表进行规则聚合,生成NAT与ACL规则聚合表。如此,能够在后续的报文转发过程中,只查询一次NAT与ACL规则聚合表进行一次命中,就可以完成包过滤和地址转换,从而节省报文转发时处理的时间,提升报文转发的性能,降低报文转发的时间成本。附图说明图1为本发明实施例一NAT与ACL规则聚合方法流程示意图;图2为本发明实施例二NAT与ACL规则聚合方法流程示意图;图3为本发明实施例选取的第一规则表中的规则更新方法流程示意图;图4为本发明实施例NAT与ACL规则聚合装置结构示意图。具体实施方式本发明实施例中,先根据NAT规则表建立第一规则表;然后将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果建立第二规则表;之后将所述ACL规则表与第二规则表进行规则聚合,生成NAT与ACL规则聚合表。这里,所述根据NAT规则表建立第一规则表包括:将所述NAT规则表中的各个规则分别复制到第一规则表中;其中,所述第一规则表为临时规则表,由于建立NAT与ACL规则聚合表的过程中需要对NAT规则进行修改、删除等操作,而NAT规则表不具备可更改性,因此,需要将所述NAT规则表中的各个规则分别复制到第一规则表中,以便在比较的过程中能对NAT规则表中的规则进行更改。所述第二规则表同样为临时规则表,用于记录所述第一规则表中的规则与ACL规则表比较后输出的结果。本发明实施例中,所述第一规则表为临时NAT比较前规则表,所述第二规则表为临时NAT比较后规则表。下面结合附图及具体实施例,对本发明技术方案的实施作进一步的详细描述。图1为本发明实施例一NAT与ACL规则聚合方法流程示意图,如图1所示,本发明实施例NAT与ACL规则聚合方法包括以下步骤:步骤101:根据NAT规则表建立第一规则表;本发明实施例中,所述根据NAT规则表建立第一规则表包括:将所述NAT规则表中的各个规则分别复制到第一规则表中。步骤102:将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果建立第二规则表;本发明实施例中,所述将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果建立第二规则表包括:A:选取当前第一规则表中的第一条规则,先与ACL规则表中的第一条规则进行比较;B1:当所述选取的第一规则表中的规则全部包含在所述ACL规则中时,进一步判断ACL规则表的允许状态,当所述ACL规则表状态为允许(permit)时,将所述选取的第一规则表中的规则写入第二规则表尾部,并删除所述选取的第一规则表中的规则;当所述ACL规则表状态为拒绝(deny)时,直接删除所述选取的第一规则表中的规则;之后,重新选取第一规则表中的下一条规则与ACL规则表中的规则进行比较;B2:当所述选取的第一规则表中的规则部分包含在ACL规则中时,进一步判断ACL规则表的允许状态,当所述ACL规则表状态为允许(permit)时,将所述选取的第一规则表中的规则中包含在ACL规则中的部分写入第二规则表尾部,用所述选取的第一规则表中的规则中不包含在ACL规则表中的部分替换所述选取的第一规则表中的规则,即将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分;当所述ACL规则表状态为拒绝(deny)时,直接将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分;之后,将当前选取的第一规则表中的规则与ACL规则表中的下一条规则进行比较;这里,将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分包括:拆分选取的第一规则表中的规则,将所述规则拆分为:包含在ACL规则表中的部分和不包含在ACL规则表中的部分;这里,不包含在ACL规则表中的部分有可能为网段地址、子网地址或主机地址;当所述不包含在ACL规则表中的部分为子网地址或主机地址时,直接用所述不包含在ACL规则表中的部分替换当前选取的第一规则表中的规则,该流程结束。当所述不包含在ACL规则表中的部分为网段地址时,则逐个拆分所述网段地址,将拆分出的子网地址插入到当前选取的第一规则表中的规则后面,拆分出的网段地址替换拆分前的网段地址,继续进行拆分,如此循环,直至网段地址均拆分成子网地址或单个主机地址、并插入到当前选取的第一规则表中的规则后面为止,该流程结束。B3:当所述选取的第一规则表中的规则不包含在ACL规则表中时,将所述选取的第一规则表中的规则与ACL规则表中的下一条规则进行比较。这里,当所述用于比较的ACL规则为所述ACL规则表中的最后一条规则时,则认为所述选取的第一规则表中的规则全部包含在当前ACL规则中,并执行步骤B1。步骤103:将所述ACL规则表与第二规则表进行规则聚合,生成NAT与ACL规则聚合表。这里,是将所述ACL规则表与第二规则表按照顺序进行合并,生成NAT与ACL规则聚合表。具体的,按照先后顺序,首先将第二规则表拷贝到NAT与ACL规则聚合表中,然后再将ACL规则表拷贝到NAT与ACL规则聚合表中;在后续报文转发过程中,查询NAT与ACL规则聚合表时,按照上述先后顺序进行查询命中。图2为本发明实施例二NAT与ACL规则聚合方法流程示意图,如图2所示,本发明实施例NAT与ACL规则聚合方法包括以下步骤:步骤201:将所述NAT规则表中的各个规则复制到第一规则表中;步骤202:遍历所述第一规则表,判断所述第一规则表是否为空;当所述第一规则表为空时,执行步骤213,否则,执行步骤203;步骤203:从所述第一规则表中选取一条规则;本步骤中,可以从第一规则表中选取当前排序在最前的第一条规则,之后依次选取每一条,也可以每次从所述第一规则表中任意选取一条规则,只要保证每条规则都选取到并进行比较即可。步骤204:判断ACL规则表中是否还有未与步骤203中选取的规则进行比较的下一条规则;如果ACL规则表还有未进行比较的下一条规则,则执行步骤205;否则,返回步骤202;当ACL规则表不存在未进行比较的规则,则说明ACL规则表已遍历完成,即步骤203中选取的规则与ACL规则表中的所有规则都比较完成。步骤205:将所述选取的第一规则表中的规则与ACL规则表中的下一条规则进行比较;步骤206:判断所述选取的第一规则表中的规则是否包含在所述ACL规则表中的这一条规则中;当所述选取的第一规则表中的规则全部包含在当前ACL规则表中的这一条规则中时,执行步骤207;当所述选取的第一规则表中的规则部分包含在当前ACL规则表中的这一条规则中时,执行步骤210;当所述选取的第一规则表中的规则不包含在当前ACL规则表中的这一条规则中时,返回步骤204;这里,当所述用于比较的ACL规则为所述ACL规则表中的最后一条规则时,则认为所述选取的第一规则表中的规则全部包含在当前ACL规则中。步骤207:判断当前ACL规则表的允许状态;当所述ACL规则表的状态为允许(permit)时,执行步骤208;当所述ACL规则表的状态为拒绝(deny)时,执行步骤209;步骤208:将所述选取的第一规则表中的规则写入第二规则表尾部;并执行步骤209;步骤209:删除所述选取的第一规则表中的规则;返回步骤202;步骤210:判断当前ACL规则表的允许状态;当所述ACL规则表的状态为允许(permit)时,执行步骤211;所述ACL规则表的状态为拒绝(deny)时,执行步骤212;步骤211:将所述第一规则表中的规则拆分为包含在ACL规则表中的部分和不包含在ACL规则表中部分,将所述包含在ACL规则表中的部分写入第二规则表尾部;并执行步骤212;步骤212:将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分;返回步骤204;步骤213:将所述ACL规则表与第二规则表进行规则聚合,生成NAT与ACL规则聚合表。本发明实施例中,将所述ACL规则表与第二规则表按照顺序进行合并,生成NAT与ACL规则聚合表。具体的,按照先后顺序,首先将第二规则表拷贝到NAT与ACL规则聚合表中,然后再将ACL规则表拷贝到NAT与ACL规则聚合表中;在后续报文转发过程中,查询NAT与ACL规则聚合表时,按照上述先后顺序进行查询命中。本发明实施例中,步骤212将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分的具体实现过程如图3所示,图3为本发明实施例选取的第一规则表中的规则更新方法流程示意图,如图3所示,包括以下步骤:步骤301:判断所述不包含在ACL规则表中的部分的类型;本步骤中,所述不包含在ACL规则表中的部分有可能为网段地址、子网地址或主机地址;当所述不包含在ACL规则表中的部分为子网地址或主机地址时,执行步骤302;当所述不包含在ACL规则表中的部分为网段地址时,执行步骤303;步骤302:用所述不包含在ACL规则表中的部分替换当前选取的第一规则表中的规则;该流程结束;步骤303:逐个拆分所述网段地址;步骤304:判断所述网段地址的拆分结果是子网地址还是网段地址;当拆分出子网地址时,执行步骤305;当拆分出网段地址时,执行步骤306;步骤305:将拆分出的子网地址插入到前选取的第一规则表中的规则后面;步骤306:将拆分出的网段地址替换拆分前的网段地址,并返回步骤303;如此进行循环拆分,直至网段地址均拆分成子网地址或单个主机地址、并插入到当前选取的第一规则表中的规则后面为止,该流程结束。本发明实施例还提供了一种NAT与ACL规则聚合装置,图4为本发明实施例NAT与ACL规则聚合装置结构示意图,如图4所示,所述装置包括第一规则表建立模块41、规则比较模块42、规则聚合模块43;其中,所述第一规则表建立模块41,用于根据NAT规则表建立第一规则表;本发明实施例中,所述第一规则表建立模块41具体用于:将所述NAT规则表中的各个规则分别复制到第一规则表中。所述规则比较模块42,用于将第一规则表中的每条规则与ACL规则表中的规则进行比较,根据比较结果,建立第二规则表;本发明实施例中,所述规则比较模块42具体用于:选取当前第一规则表中的第一条规则,先与ACL规则表中的第一条规则进行比较;当所述选取的第一规则表中的规则全部包含在所述ACL规则中时,进一步判断ACL规则表的允许状态,当所述ACL规则表状态为允许(permit)时,将所述选取的第一规则表中的规则写入第二规则表尾部,并删除所述选取的第一规则表中的规则;当所述ACL规则表状态为拒绝(deny)时,直接删除所述选取的第一规则表中的规则;之后,重新选取第一规则表中的下一条规则与ACL规则表中的规则进行比较;当所述选取的第一规则表中的规则部分包含在ACL规则中时,进一步判断ACL规则表的允许状态,当所述ACL规则表状态为允许(permit)时,将所述选取的第一规则表中的规则中包含在ACL规则中的部分写入第二规则表尾部,用不包含在ACL规则表中的部分替换所述选取的第一规则表中的规则,即将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分;当所述ACL规则表状态为拒绝(deny)时,直接将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分;之后,将当前选取的第一规则表中的规则与ACL规则表中的下一条规则进行比较;这里,所述规则比较模块42将所述选取的第一规则表中的规则更新为所述选取的第一规则表中的规则中不包含在ACL规则表中的部分包括:拆分选取的第一规则表中的规则,将所述规则拆分为:包含在ACL规则表中的部分和不包含在ACL规则表中的部分;这里,不包含在ACL规则表中的部分有可能为网段地址、子网地址或主机地址;当所述不包含在ACL规则表中的部分为子网地址或主机地址时,直接用所述不包含在ACL规则表中的部分替换当前选取的第一规则表中的规则,该流程结束。当所述不包含在ACL规则表中的部分为网段地址时,则逐个拆分所述网段地址,将拆分出的子网地址插入到当前选取的第一规则表中的规则后面,拆分出的网段地址替换拆分前的网段地址,继续进行拆分,如此循环,直至网段地址均拆分成子网地址或单个主机地址、并插入到当前选取的第一规则表中的规则后面为止,该流程结束。当所述选取的第一规则表中的规则不包含在ACL规则表中时,将所述选取的第一规则表中的规则与ACL规则表中的下一条规则进行比较。本发明实施例中,所述比较模块42还用于当所述用于比较的ACL规则为所述ACL规则表中的最后一条规则时,所述选取的第一规则表中的规则全部包含在当前ACL规则中。所述规则聚合模块43,用于将所述ACL规则表与第二规则表进行规则聚合,生成NAT与ACL规则聚合表。这里,所述规则聚合模块43具体用于:将所述ACL规则表与第二规则表按照顺序进行合并,生成NAT与ACL规则聚合表。具体的,按照先后顺序,首先将第二规则表拷贝到NAT与ACL规则聚合表中,然后再将ACL规则表拷贝到NAT与ACL规则聚合表中;在后续报文转发过程中,查询NAT与ACL规则聚合表时,按照上述先后顺序进行查询命中。图4中所示的NAT与ACL规则聚合装置中的各处理模块的实现功能,可参照前述NAT与ACL规则聚合方法的相关描述而理解。本领域技术人员应当理解,图4所示的NAT与ACL规则聚合装置中各处理单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现,比如:可由中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现;所述存储单元也可以由各种存储器、或存储介质实现。在本发明所提供的几个实施例中,应该理解到,所揭露的方法、装置及系统,可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个模块或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性的、机械的或其他形式的。上述作为分离部件说明的模块可以是、或也可以不是物理上分开的,作为模块显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部模块来实现本实施例方案的目的。另外,在本发明各实施例中的各功能模块可以全部集成在一个处理模块中,也可以是各模块分别单独作为一个模块,也可以两个或两个以上模块集成在一个模块中;上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本发明实施例上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。本发明是实例中记载的NAT与ACL规则聚合方法、装置和系统只以上述实施例为例,但不仅限于此,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1