具体实施方式
下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。
首先,必须说明的是,本发明为了节约网络设备的系统资源,对未启用NAT功能的输入报文采取了在入接口同时执行入接口ACL匹配和出接口ACL匹配的操作,从而避免对出接口ACL匹配之后丢弃的输入报文进行业务处理。而对于启用NAT(Network Address Translation,网络地址转换)功能的报文,由于其在未进行业务处理的时候无法得到报文的出接口消息,因此沿用现有技术的访问控制流程,即对输入报文先进行入接口ACL匹配,对于放行的输入报文进行业务处理之后,再对获得的输出报文进行出接口ACL匹配。
作为本发明所提供的网络设备的报文访问控制方法的一个具体实施例,请结合图1和图2,描述如下:
对于入接口ACL匹配的处理策略为允许且未开启NAT功能的输入报文,执行以下步骤S1~S2:
具有上述属性的输入报文可以通过下述步骤获取:
S00、根据在入接口上所应用的ACL指令,对该输入报文执行入接口ACL匹配;具体包括:提取输入报文的源IP地址、目的IP地址、IP承载的协议类型、协议的特征等信息,与该入接口上所应用的ACL指令中的匹配规则进行匹配,匹配成功的报文,其处理策略可能为允许或者禁止;
S01、对于匹配的处理策略为允许的输入报文,识别其NAT功能是否开启,未开启则可以先行执行出接口ACL匹配,即向下执行步骤S1~S2;
相应的,如果NAT功能开启,则必须经过业务处理后再进行出接口ACL匹配,如下:
S1′、对该输入报文执行业务处理获得输出报文;
S2′、查找该输出报文的出接口信息,并根据该出接口上所应用的ACL指令,对输出报文执行出接口ACL匹配;
S3′、将匹配的处理策略为允许的输出报文通过所述出接口转发;
S4′、丢弃匹配的处理策略为禁止的输出报文。
由于上述步骤S1′~S4′所采取的操作与现有的报文访问控制方法相同,因此不再赘述,下面重点对步骤S1~S2展开详细描述。
S1、查找输入报文的出接口信息,根据在相应出接口上所应用的ACL指令,对该输入报文执行出接口ACL匹配;
由于输入报文并未开启NAT功能,因此,在进行业务处理前即可获得出接口信息,具体可以采用如下实现方式:通过查找FIB(ForwardingInformation Table,转发信息表)和ARP(Address Resolution Protocol,地址解析协议)表获得输入报文的出接口信息;其中,FIB和ARP表是由网络设备的CPU在生成ACL指令时生成的;
然后提取输入报文的源IP地址、目的IP地址、IP承载的协议类型、协议的特征等信息,与该入接口上所应用的ACL指令中的匹配规则进行匹配,匹配成功的报文,其处理策略同样可能为允许或者禁止。
S2、对于匹配的处理策略为允许的输入报文执行业务处理,并将业务处理完成后获得的输出报文直接通过相应出接口转发。
可以看出,通过上述步骤S1~S2,仅仅出接口ACL匹配结果为允许的输入报文被执行业务处理,从而节约了网络设备的系统处理资源,提高了网络设备的处理效率。
较佳的,出接口ACL匹配结果为禁止的输入报文可以在执行业务处理之前就被丢弃,无需进行业务处理,即还包括步骤S3:丢弃匹配的处理策略为禁止的输入报文。
进一步的,在现有技术中,入接口ACL匹配和出接口ACL匹配的操作,都是由网络设备的CPU进行查询和处理的,这导致了两个方面的问题:
第一、当ACL指令过多时,CPU负载很大,影响整个网络设备的处理能力;
第二、CPU的查询和处理是在软件层面进行的,其速度较慢。
为了克服上述问题,本发明所提供网络设备的报文访问控制方法的较佳实施例为:该入接口ACL匹配和出接口ACL匹配的步骤由与相应接口连接的专用硬件芯片执行。
专用硬件芯片的数量可以根据接口的流量设置。比如,当接口流量为10G时,限于目前专用硬件芯片的处理能力,需要为每一个接口设置一个专用硬件芯片;而当接口的流量较小,比如接口是记忆口的情况下,可以每12个接口设置一个专用硬件芯片。
由于专用硬件芯片是在底层硬件的层面上进行查表和匹配,因此处理效率较CPU处理有很大提高;同时,采用专用硬件芯片执行ACL匹配,也降低了CPU的负载。
需要指出的是,现有技术中设置的ACL都保存在网络设备的CPU中,因此通过CPU执行ACL匹配时可以直接获得指定接口的ACL指令;当通过专用硬件芯片执行ACL匹配时,为了保证匹配的正常进行,专用硬件芯片可以预先从网络设备获取所连接接口应用的入接口ACL和网络设备每一接口所应用的出接口ACL。
特别需要注意的是,专用硬件芯片获取的是全部出接口ACL,这是因为入接口和出接口一般不是同一个接口,且不同的报文可能对应着不同的出接口,为了保证在报文接收阶段就完成出接口ACL匹配,专用硬件芯片需要获得足够的信息。
当然,相较于预先保存ACL信息的方案,专用硬件芯片也可以在每次需要获得ACL信息时即时向网络设备的CPU获取,但这样一方面延迟了处理速度,另一方面大量的交互指令也占用了CPU的处理资源,因此不作为较佳实施例。
作为更佳的实施例,本发明所提供的报文访问控制方法可以应用于分布式架构的网络设备。
所谓分布式架构的网络设备,其一般包括一块接口板和多块业务板,每块业务板上都具有独立的CPU,从而实现业务的分流处理,具体如下:
C1、当用户在一个接口接收到输入报文后,对其执行入接口ACL匹配,对于命中的输入报文按照处理策略丢弃或者放行;
C2、对于放行的输入报文,需要进行分流以便送到相应的业务板进行业务处理;
C3、处理完得到的输出报文,再进行相应的出接口ACL匹配,对于命中的输出报文按照处理策略丢弃或者从该出接口放行转发。
本发明提供的分布式架构网络设备的报文访问控制方法对上述流程进行了改进,包括对于没有启用NAT业务的输入报文,在入接口同时进行入接口ACL匹配和出接口ACL匹配,以提高设备的处理效率;以及,在分布式架构的接口分流部分硬件处理ACL匹配,实现匹配的硬件加速并进一步降低CPU负载。
具体方案请结合图3。其中,硬件专用芯片构成预处理单元,设置在接口板上,用于对接口接收到的报文进行入/出接口ACL匹配,以及进行分流。需要注意的是,图3中为每一个接口都设置有一硬件专用芯片,在实际应用中,也可以根据接口的流量要求为多个接口设置一个硬件专用芯片。可以看出,对于接收到的报文同时进行入/出接口ACL匹配,能够避免最后要丢弃的报文再经过CPU的处理,从而有效地降低CPU的处理负载;而且,将ACL匹配功能从CPU中分离,能够进一步的降低CPU负载;特别是,采用硬件专用芯片实现ACL匹配,其匹配速度较软件查询有很大提高。
同时,在图3中,每个业务板上都具有一流控制单元和一流处理单元。其中,流处理单元执行实际的业务处理,流控制单元进行ACL的创建、黑白名单设置等。当然,上述流处理单元和流控制单元仅仅是功能上的简单划分,它们可以合称为业务处理单元。
需要注意的是,由于本实施例的分布式架构下,ACL匹配的操作被转移到了接口板进行,因此,当用户在一个接口的入接口方向应用一条ACL指令时,流控制单元需要将相应的ACL指令下发给与该接口连接的预处理单元,并标识为入接口ACL指令;当用户在一个接口的出接口方向应用一条ACL指令时,流控制单元需要将相应的ACL指令下发给所有的预处理单元,并标识为出接口ACL指令,以保证在入接口阶段即可实现出接口ACL匹配。
基于上述配置,分布式架构网络设备的报文访问控制方法如下:
当预处理单元从相连接的接口收到输入报文时,进行入接口ACL匹配,丢弃处理策略为禁止的输入报文,并对处理策略为允许的输入报文执行下一步操作;
识别该输入报文是否开启了NAT功能,由于启用了NAT功能的报文在未进行业务处理时无法获得出接口信息,因此对于这种类型的报文按照现有技术的ACL处理流程加以处理,而对于未开启NAT功能的输入报文执行下一步操作;
查找FIB和ARP表得到输入报文的出接口信息;其中,FIB表和ARP表可以由流控制单元在生成表项时下发,也可以由预处理单元实时向流控制单元进行查询;
提取输入报文的源IP地址、目的IP地址、IP承载的协议类型、协议的特征以及出接口信息等,由于处理单元硬件进行出接口ACL匹配,直接丢弃处理策略为禁止的输入报文,并对处理策略为允许的输入报文执行下一步操作;
流处理单元对通过的输入报文执行业务处理,并将业务处理后获得的输出报文下发给接口板,直接通过相应的出接口转发出去。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,对于入接口ACL匹配的处理策略为允许且未开启网络地址转换NAT功能的输入报文包括如下步骤:
S1、查找所述输入报文的出接口信息,根据在相应出接口上所应用的ACL指令,对所述输入报文执行出接口ACL匹配;
S2、对于匹配的处理策略为允许的输入报文执行业务处理,并将业务处理完成后获得的输出报文直接通过相应出接口转发。
所述的存储介质包括:ROM/RAM(Read Only Memory/Random-AccessMemory,只读存储器/随机访问内存)、磁碟或者光盘等。
相应的,本发明还提供了一种网络设备的报文访问控制系统100,该网络设备可以为路由器、防火墙等。
请结合图4,该网络设备的报文访问控制系统100的一个实施例包括:
业务处理单元101和接口102,其中业务处理单元101设置在网络设备的CPU中,用软件方式进行ACL创建以及报文的业务处理等。
与各接口102连接的NAT功能识别单元103,用于识别相应接口102接收的输入报文是否开启网络地址转换NAT功能;
与各接口102以及NAT功能识别单元103连接的入接口ACL匹配单元104,用于根据相应入接口102上所应用的ACL指令,对接口接收的输入报文执行入接口ACL匹配;以及,根据NAT功能识别单元103发送的识别结果,触发业务处理单元101对入接口ACL匹配的处理策略为允许且开启NAT功能的输入报文进行处理,触发出接口ACL匹配单元105对入接口ACL匹配的处理策略为允许且未开启NAT功能的输入报文进行处理;
与入接口ACL匹配单元104以及业务处理单元101连接的出接口ACL匹配单元105,用于接受入接口ACL匹配单元104的触发,查找输入报文的出接口信息,根据在相应出接口102上所应用的ACL指令对输入报文执行出接口ACL匹配,以及,触发业务处理单元101对出接口ACL匹配的处理策略为允许的输入报文进行处理,并丢弃匹配的处理策略为禁止的输入报文;
其中,业务处理单元101用于对接收到的输入报文进行业务处理以获得输出报文;以及,对于从入接口ACL匹配单元103接收到的输入报文,相应将输出报文发送给出接口ACL匹配单元104进行出接口ACL匹配,即按照现有技术的入接口ACL匹配->业务处理->出接口ACL匹配流程执行,执行的结果可能为丢弃或者转发报文;以及,对于从出接口ACL匹配单元104接收到的输入报文,相应将输出报文直接通过相应出接口102转发,这也就意味着,对于未开启NAT功能的输入报文,按照入接口ACL匹配->出接口ACL匹配->业务处理流程执行,从而避免对最后要丢弃的报文进行业务处理,从而减少了CPU负载,提高了CPU的处理效率。
在上述实施例中,NAT功能识别单元103、入接口ACL匹配单元104和出接口ACL匹配单元105可以与业务处理单元101合并设于网络设备的CPU中,即采用软件方式实现ACL匹配,但这种方式存在匹配效率低,且CPU负载大的问题。因此,在上述实施例的基础上,较佳的实现方案如图5所示,是NAT功能识别单元103、入接口ACL匹配单元104和出接口ACL匹配单元105设置在专用硬件芯片110中,硬件处理ACL匹配,进一步降低CPU负载,并实现ACL匹配的加速处理。
在这种方案中,入接口ACL匹配单元104和出接口ACL匹配单元105可以在需要进行匹配处理时实时从业务处理单元101获取所需要的ACL指令,但所需的信令交互将增加CPU负载,同时由于需要进行信令交互,也必然导致匹配处理的延时。因此,更佳的方案是在专用硬件芯片110中专门设置ACL存储单元106,用于从业务处理单元101获取并保存专用硬件芯片110所连接接口应用的入接口ACL和网络设备每一接口所应用的出接口ACL。
需要指出,上述实施例中从逻辑角度描述了NAT功能识别单元103、入接口ACL匹配单元104和出接口ACL匹配单元105所实现的功能,但在实际实现中,考虑到专用硬件芯片的处理性能和接口的流量,专用硬件芯片可以为一片或者多片,分别对应一个或多个接口102;较佳的方案中,每一接口102都连接有一专用硬件芯片110,如图6所示。
其中,在每一片专用硬件芯片110上都设有NAT功能识别单元103、入接口ACL匹配单元104、出接口ACL匹配单元105和ACL存储单元106,分别控制该专用硬件芯片110相连接的接口102的ACL匹配。
特别是,本发明提供了分布式架构网络设备的报文访问控制系统100。该网络设备为由接口板和多业务板构成的分布式架构网络设备,专用硬件芯片110设置在接口板上,与设置在各业务板上的业务处理单元101连接。具体请参考图3,其中,业务处理单元被具体划分为流处理单元和流控制单元,与接口连接的专用硬件芯片被命名为预处理单元。
虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。