NAT规则管理的方法、装置和设备与流程

文档序号:16402902发布日期:2018-12-25 20:13阅读:248来源:国知局
本申请涉及网络通信
技术领域
:,特别是涉及一种nat(networkaddresstranslation,网络地址转换)规则管理的方法和装置。
背景技术
:随着业务带宽需求的提高,对产品的报文处理速度要求越来越高,而linux的nat功能在一定程度上影响了报文的处理速度。由于基于软件实现nat功能的设备需要消耗一定的cpu(centralprocessingunit,中央处理器)处理资源,提高cpu的性能可以提高报文的转发速率。但是高性能cpu价格太高,从性价比上考虑并不经济。目前,已有公司开发出nat处理硬件,可以实现nat功能并且不需要消耗cpu性能,但在实现过程中,发明人发现传统技术中至少存在如下问题:在转发规则数量众多的情况下,硬件nat规则的管理成本高。技术实现要素:基于此,有必要针对传统技术在转发规则数量众多的情况下,硬件nat规则的管理成本高的问题,提供一种nat规则管理的方法、装置和设备。为了实现上述目的,一方面,本申请实施例提供了一种nat规则管理的方法,包括:将nat规则配置到nat模块中的nat表项中;nat规则用于指示nat模块进行报文转发;nat规则为从网络协议栈学习到的规则。在其中一个实施例中,将nat规则配置到nat模块中的nat表项中的步骤之前还包括步骤:根据网络协议栈中的nat连接,生成nat规则;nat连接为转发不匹配nat表项的报文时生成的。在其中一个实施例中,根据网络协议栈中的nat连接,生成nat规则的步骤包括:根据nat连接的元组数据,生成nat规则;元组数据包括源ip(internetprotocol,网络之间互连的协议)、目的ip、源端口号以及目的端口号。在其中一个实施例中,网络协议栈包含跟踪hash表。根据网络协议栈中的nat连接,生成nat规则的步骤之前还包括步骤:按照预设第一周期查找跟踪hash表(哈希表),获取nat连接。在其中一个实施例中,不匹配nat表项的报文包括第一报文和第二报文。第一报文为接收到的nat模块转发的公网报文;公网报文用于发送给从业务板。第二报文为接收到的nat模块转发的从业务板报文;从业务板报文用于发送给公网。在其中一个实施例中,网络协议栈为包含netfilter的协议栈。根据网络协议栈中的nat连接,生成nat规则的步骤之前还包括步骤:基于netfilter,将第一报文转发给从业务板;和/或,基于netfilter,将第二报文转发给公网。在其中一个实施例中,基于netfilter,将第一报文转发给从业务板的步骤包括:修改第一报文的目的ip地址、第一报文的目的端口号以及第一报文的目的mac地址。基于netfilter,将第二报文转发给公网的步骤包括:修改第二报文的源ip地址以及第二报文的源端口号。在其中一个实施例中,还包括步骤:删除nat表项中的过期nat规则。在其中一个实施例中,删除nat表项中的过期nat规则的步骤之前,还包括步骤:按照预设第二周期查找nat表项中的nat规则,获取过期nat规则。在其中一个实施例中,还包括步骤:向nat模块发送初始化命令或控制命令;控制指令为arp表项命令、nat表项命令、公网ip命令、私网ip或子网掩码命令。另一方面,本申请实施例还提供了一种nat规则管理的装置,包括:硬件nat规则配置模块,用于将nat规则配置到nat模块中的nat表项中;nat规则用于指示nat模块进行报文转发;nat规则为从网络协议栈学习到的规则。在其中一个实施例中,提供了一种设备,包括主业务板,至少一个从业务板,以及用于连接公网的nat模块;nat模块分别连接主业务板以及各从业务板。主业务板包括执行如上述nat规则管理的方法的处理器;处理器连接nat模块。在其中一个实施例中,nat模块的第一网口用于连接公网,第二网口通过mdc(管理数据时钟)/mdio(managementdatainput/output)接口连接处理器,第三网口连接从业务板。在其中一个实施例中,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的nat规则管理的方法。上述技术方案中的一个技术方案具有如下优点和有益效果:处理器将nat规则配置到nat模块中的nat表项中;nat规则用于指示nat模块进行报文转发;nat规则为从网络协议栈学习到的规则。基于上述步骤,实现自动学习并动态下发nat转发规则,降低硬件nat规则的管理成本高。并且,通过控制面与转发面的分离,控制面由软件方法实现,转发面由硬件实现,提高nat报文的转发速率以及系统的整体处理性能;同时,控制面通过自动学习和老化的方法,减少不必要的人工干预,减轻网管理人员的负担。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1为一个实施例中nat规则管理的方法的第一示意性流程图;图2为一个实施例中nat规则管理的方法的第二示意性流程图;图3为一个实施例中nat规则管理的方法的第三示意性流程图;图4为一个实施例中nat规则管理的方法的第四示意性流程图;图5为一个实施例中nat规则管理的方法的第五示意性流程图;图6为一个实施例中nat规则管理的方法的第六示意性流程图;图7为一个实施例中nat规则管理的方法的第七示意性流程图;图8为一个实施例中nat规则管理的装置的结构示意图;图9为一个实施例中设备的第一示意性结构图;图10为一个实施例中设备的第二示意性结构图;图11为一个实施例中设备的第三示意性结构图;图12为一个实施例中设备的第四示意性结构图;图13为一个实施例中设备的运行流程示意图。具体实施方式为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的首选实施例。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本申请的公开内容更加透彻全面。需要说明的是,当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件并与之结合为一体,或者可能同时存在居中元件。除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的
技术领域
:的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。nat技术是为了解决ipv4地址资源有限的问题需发展起来的一种技术。当内网中有多台主机需要访问internet时,可以利用nat技术,通过共用一个公网ip地址来访问internet。在linux系统中,linux内核的netfilter模块用于实现报文的监控、过滤和转发。其与应用程序iptables的结合,可实现nat功能。这在一定程度上解决了基于linux操作系统的产品开发人员重新编写nat功能代码的问题。这种由软件实现nat功能的方法为软件nat方法。nat功能在一定程度上影响了报文的处理速度。而硬件nat需要手动地为其下发nat转发规则。在nat转发规则比较多的情况下,硬件nat规则的管理成本高。为此,本申请实施例提供了一种nat规则管理的方法、装置和设备,实现自动学习并动态下发nat转发规则,可用于路由器或网关等产品中,对分布式系统中的硬件nat规则进行管理。具体地,可在系统中增加硬件的nat模块,在主业务板中运行linux系统并配置netfilter功能和conntrack功能;通过nat规则的学习,在发现有新的nat连接生成时,根据该连接,生成nat规则,并把nat规则配置到nat模块中。在一个实施例中,提供了一种nat规则管理的方法,如图1所示,图1为一个实施例中nat规则管理的方法的第一示意性流程图,包括:步骤s120,将nat规则配置到nat模块中的nat表项中;nat规则用于指示nat模块进行报文转发;nat规则为从网络协议栈学习到的规则。具体而言,处理器从主业务板的网络协议栈中学习nat规则,并将学习到的规则配置到nat模块中的nat表项中。nat模块可动态获取网络协议栈中的nat规则,并基于nat表项,对获取到的报文进行相应的nat转换和转发。需要说明的是,处理器可用于控制主业务板处理报文、根据配置对报文进行转发,同时,还可从主业务板的网络协议栈中学习转发报文依据的nat规则,并将规则下发到nat模块。具体地,处理器可为报文处理系统的处理器,或报文处理系统的主业务板的处理器等。nat规则可为主业务板转发报文时依据的规则,可用于指示nat模块对相应的报文进行转发。其中,报文可包括公网发送给系统的报文、业务板发送给公网的报文以及业务板之间进行传输的报文等,并且,报文的类型多样;不同交互对象间的报文以及不同类型的报文对应不同的转发规则。因此,报文的转发规则数量大,对应的nat规则数量也大,采用手动向nat模块配置nat规则的方式需要较高的管理成本,并且存在配置效率低、准确度低等问题。本申请实施例可在主业务板转发报文时,自动学习其转发报文采用的nat规则并将该规则配置给nat模块的nat表项中。nat表项用于汇聚各种nat规则,并可依据各nat规则对相应的报文进行转发,能够有效降低主业务板的负荷,提高报文转发效率,提升系统的整体处理性能。网络协议栈可用于记录涉及nat功能的数据包的状态;基于记录的状态,可生成相应的nat规则。基于上述流程,实现自动学习并动态下发nat转发规则,降低硬件nat规则的管理成本高。并且,通过控制面与转发面的分离,控制面由软件方法实现,能够自动学习新的nat规则并下发到nat模块中;转发面由硬件实现,基于nat模块进行报文转发,可提高nat报文的转发速率以及系统的整体处理性能;同时,控制面通过自动学习和老化的方法,可减少不必要的人工干预,减轻网管理人员的负担。在一个实施例中,如图2所示,图2为一个实施例中nat规则管理的方法的第二示意性流程图,将nat规则配置到nat模块中的nat表项中的步骤之前还包括步骤:步骤s110,根据网络协议栈中的nat连接,生成nat规则;nat连接为转发不匹配nat表项的报文时生成的。具体而言,发送给nat模块的报文与nat表项不匹配时,nat模块将该报文转发给主业务板,由主业务板对该报文进行nat转换后,完成转发。主业务板进行报文转发的过程中,在网络协议栈中生成nat连接。处理器可监控网络协议栈,在生成新的nat连接时,根据nat连接,学习得到nat规则,并将该nat规则下发给nat模块。需要说明的是,在报文与nat表项不匹配时,nat模块不具备对该报文进行nat功能的规则,无法完成转发,需由主业务板进行转发。根据主业务板转发报文的过程,可学习得到nat规则并配置给nat表项。后续,相同的报文发送给nat模块时,能够匹配nat表项,nat模块可对该报文进行nat功能并完成转发。nat模块可不断获取新的nat规则,能够实现对更多的报文进行转发;并且,nat模块获取nat规则的过程无需人工干预,降低了业务人员的负担,降低硬件nat规则的管理成本,提高nat规则的配置效率和准确度,同时,能够有效提高系统的吞吐量、转发效率和运行效率。在一个实施例中,如图3所示,图3为一个实施例中nat规则管理的方法的第三示意性流程图,根据网络协议栈中的nat连接,生成nat规则的步骤包括:步骤s112,根据nat连接的元组数据,生成nat规则;元组数据包括源ip、目的ip、源端口号以及目的端口号。具体而言,nat连接可分为original和reply两个方向,每个方向都可用一个元组数据(tuple)来表示;tuple中包含了对应方向上的数据包信息,如源ip,目的ip,源端口号以及目的端口号等。可根据nat连接的元组数据来生成相应的nat规则。具体地,在linux内核中,能够跟踪和记录一个连接的状态(包括nat连接),为所有经过网络协议栈的数据包记录状态,每个连接状态都可由一个structnf_conn数据结构实例来进行描述。在一个实施例中,网络协议栈包含跟踪hash表;如图3所示,根据网络协议栈中的nat连接,生成nat规则的步骤之前还包括步骤:步骤s108,按照预设第一周期查找跟踪hash表,获取nat连接。具体而言,定期查找网络协议栈中的跟踪hash表,可获取新的nat连接;根据新的nat连接,学习得到新的nat规则并下发给nat模块,实现自动为nat模块配置nat规则的功能。需要说明的是,网络协议栈中可配置conntrack功能,用于跟踪和记录连接的状态,为所有经过网络协议栈的数据包记录状态并生成跟踪hash表。预设第一周期可根据实际需求进行设置,以实现定期更新nat模块的nat表项的效果。在一个实施例中,不匹配nat表项的报文包括第一报文和第二报文;第一报文为接收到的nat模块转发的公网报文;公网报文用于发送给从业务板;第二报文为接收到的nat模块转发的从业务板报文;从业务板报文用于发送给公网。具体而言,nat模块无法进行nat功能及转发的报文可包括两种:一种是由公网发送给系统的、目的地为从业务板的报文,另一种是由从业务板发送的、目的地为公网的报文。需要说明的是,上述与nat表项不匹配、nat模块无法进行转发的报文,nat模块将其转发给主业务板;主业务板对该报文进行nat转换与转发。在一个实施例中,网络协议栈为包含netfilter的协议栈;如图4所示,图4为一个实施例中nat规则管理的方法的第四示意性流程图,根据网络协议栈中的nat连接,生成nat规则的步骤之前还包括步骤:步骤s104,基于netfilter,将第一报文转发给从业务板。和/或,步骤s106,基于netfilter,将第二报文转发给公网。具体而言,主业务板的网络协议栈配置了netfilter功能,可在主业务板的操作系统上实现nat功能。基于netfilter,主业务板可对第一报文、第二报文进行nat转换并分别转发至对应的目的地。在一个实施例中,如图5所示,图5为一个实施例中nat规则管理的方法的第五示意性流程图,基于netfilter,将第一报文转发给从业务板的步骤包括:步骤s105,修改第一报文的目的ip地址、第一报文的目的端口号以及第一报文的目的mac地址(物理地址)。基于netfilter,将第二报文转发给公网的步骤包括:步骤s107,修改第二报文的源ip地址以及第二报文的源端口号。具体而言,主业务板可根据配置,对公网发送的第一报文的目的ip地址、目的端口号以及目的mac地址进行修改,并将修改后的第一报文转发给对应的从业务板。主业务板还可根据配置,对从业务板发送的第二报文的源ip地址、源端口号进行修改,并将修改后的第二报文转发给公网。需要说明的是,ip地址及端口号的修改可由netfilter根据本系统端口号的使用情况来决定。进一步地,nat模块上存储转发规则(包括nat规则)的空间(转发规则表)有限,在转发规则众多的情况下,可能出现转发规则表不够用的情况。在一个实施例中,如图6所示,图6为一个实施例中nat规则管理的方法的第六示意性流程图,还包括步骤:步骤s130,删除nat表项中的过期nat规则。具体而言,在nat表项中存在过期nat规则时,将过期nat规则从nat模块中删除,避免过期的nat规则占用硬件资源,实现nat模块上nat规则的动态变化,并充分利用了有限的硬件nat表项资源。需要说明的是,过期nat规则可为预设时间内未使用的nat规则;预设时间可根据实际需求来进行设定。在预设时间内未使用的nat规则,其对应的报文转发频率低,对系统转发的影响较小,可从nat模块中删除,为常用nat规则保留硬件资源。在一个实施例中,如图7所示,图7为一个实施例中nat规则管理的方法的第七示意性流程图,删除nat表项中的过期nat规则的步骤之前,还包括步骤:步骤s128,按照预设第二周期查找nat表项中的nat规则,获取过期nat规则。具体而言,定期检查nat表项中的nat规则是否到期,如果到期,则把nat规则从硬件中删除。需要说明的是,处理器可通过调用nat模块的控制程序接口,在查到到期老化的nat规则时,把相应的项目从硬件表中删除。预设第二周期可根据实际需求进行设置,以实现定期清除老化的过期nat规则,动态更新nat模块的nat表项。在一个实施例中,如图7所示,还包括步骤:步骤s102,向nat模块发送初始化命令或控制命令;控制指令为arp表项命令、nat表项命令、公网ip命令、私网ip或子网掩码命令。具体而言,处理器可通过硬件nat的控制程序接口,向nat模块发送初始化命令和控制命令。需要说明的是,可在开始启用nat模块的时候,向其发送初始化命令,指示nat模块初始化资源。在运行阶段,可向nat模块发送控制指令,指示nat模块完成相应的操作。本申请实施例在nat模块还没有nat规则时,系统使用的是主业务板的linux内核自身的nat功能;其中,linux的nat功能可由软件nat实现。nat规则学习进程从内核中学习到nat规则,并把nat规则下发到nat模块后,从业务板发出的、与nat表项匹配的报文不再转发给主板,而是由nat模块根据nat规则,对报文进行修改后直接从nat模块发送到外网。此外,公网发送给系统的、与nat表项匹配的报文也由nat硬件单元根据相应的nat规则对报文进行相应的修改,并转发给对应的业务板。基于此,可减少主业务板转发从业务板报文或公网报文的负担;同时,提高从业务板报文和公网报文的转发速度,减少系统的时延,提高系统的整体吞吐量;并且,还可动态利用有限的硬件nat表项资源,减少不必要的人工干预,降低管理人员的负担。应该理解的是,虽然图1-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,提供了一种nat规则管理的装置,如图8所示,图8为一个实施例中nat规则管理的装置的结构示意图,包括:硬件nat规则配置模块110,用于将nat规则配置到nat模块中的nat表项中;nat规则用于指示nat模块进行报文转发;nat规则为从网络协议栈学习到的规则。在一个实施例中,还包括:nat规则学习模块,用于根据网络协议栈中的nat连接,生成nat规则;nat连接为转发不匹配nat表项的报文时生成的。在一个实施例中,nat规则生成模块包括:nat规则生成单元,用于根据nat连接的元组数据,生成nat规则;元组数据包括源ip、目的ip、源端口号以及目的端口号。在一个实施例中,网络协议栈包含跟踪hash表。nat规则管理的装置还包括:nat连接获取模块,用于按照预设第一周期查找跟踪hash表,获取nat连接。在一个实施例中,不匹配nat表项的报文包括第一报文和第二报文。第一报文为接收到的nat模块转发的公网报文;公网报文用于发送给从业务板。第二报文为接收到的nat模块转发的从业务板报文;从业务板报文用于发送给公网。在一个实施例中,网络协议栈为包含netfilter的协议栈。nat规则管理的装置还包括:第一报文转发模块,用于基于netfilter,将第一报文转发给从业务板;和/或,第二报文转发模块,用于基于netfilter,将第二报文转发给公网。在一个实施例中,第一报文转发模块包括:第一报文修改单元,用于修改第一报文的目的ip地址、第一报文的目的端口号以及第一报文的目的mac地址。第二报文转发模块包括:第二报文修改单元,用于修改第二报文的源ip地址以及第二报文的源端口号。在一个实施例中,还包括:过期nat规则删除模块,用于删除nat表项中的过期nat规则。在一个实施例中,还包括:过期nat规则获取模块,用于按照预设第二周期查找nat表项中的nat规则,获取过期nat规则。在一个实施例中,还包括:命令发送模块,用于向nat模块发送初始化命令或控制命令;控制指令为arp表项命令、nat表项命令、公网ip命令、私网ip或子网掩码命令。关于nat规则管理的装置的具体限定可以参见上文中对于nat规则管理的方法的限定,在此不再赘述。上述nat规则管理的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种设备200,如图9所示,图9为一个实施例中设备的第一示意性结构图,包括主业务板210,至少一个从业务板220,以及用于连接公网300的nat模块230;nat模块230分别连接主业务板210以及各从业务板220。主业务板210包括执行如上述nat规则管理的方法的处理器212;处理器212连接nat模块230。处理器212执行nat规则管理的方法时,实现以下步骤:将nat规则配置到nat模块中的nat表项中;nat规则用于指示nat模块进行报文转发;nat规则为从网络协议栈学习到的规则。在一个实施例中,处理器执行将nat规则配置到nat模块中的nat表项中的步骤之前,还实现以下步骤:根据网络协议栈中的nat连接,生成nat规则;nat连接为转发不匹配nat表项的报文时生成的。在一个实施例中,处理器执行根据网络协议栈中的nat连接,生成nat规则的步骤时,还实现以下步骤:根据nat连接的元组数据,生成nat规则;元组数据包括源ip、目的ip、源端口号以及目的端口号。在一个实施例中,网络协议栈包含跟踪hash表。处理器执行根据网络协议栈中的nat连接,生成nat规则的步骤之前,还实现以下步骤:按照预设第一周期查找跟踪hash表,获取nat连接。在一个实施例中,不匹配nat表项的报文包括第一报文和第二报文。第一报文为接收到的nat模块转发的公网报文;公网报文用于发送给从业务板。第二报文为接收到的nat模块转发的从业务板报文;从业务板报文用于发送给公网。在一个实施例中,网络协议栈为包含netfilter的协议栈。处理器执行根据网络协议栈中的nat连接,生成nat规则的步骤之前,还实现以下步骤:基于netfilter,将第一报文转发给从业务板;和/或,基于netfilter,将第二报文转发给公网。在一个实施例中,处理器执行基于netfilter,将第一报文转发给从业务板时,实现以下步骤:修改第一报文的目的ip地址、第一报文的目的端口号以及第一报文的目的mac地址。处理器执行基于netfilter,将第二报文转发给公网时,实现以下步骤:修改第二报文的源ip地址以及第二报文的源端口号。在一个实施例中,处理器还执行以下步骤:删除nat表项中的过期nat规则。在一个实施例中,处理器执行删除nat表项中的过期nat规则的步骤之前,还实现以下步骤:按照预设第二周期查找nat表项中的nat规则,获取过期nat规则。在一个实施例中,处理器还执行以下步骤:向nat模块发送初始化命令或控制命令;控制指令为arp表项命令、nat表项命令、公网ip命令、私网ip或子网掩码命令。在一个实施例中,nat模块的第一网口用于连接公网,第二网口通过mdc/mdio接口连接处理器,第三网口连接从业务板。具体而言,nat模块可具备多个第三网口,用于连接多个从业务板;此外,第三网口也可分别连接多个从业务板。处理器可通过mdc/mdio接口来初始化和控制nat模块,还可通过mdc/mdio接口向nat模块下发到nat模块中。在一个实施例中,如图10所示,图10为一个实施例中设备的第二示意性结构图,主业务板和从业务板分别通过网络接口连接到nat模块的两个网络接口。nat模块的第一网口(5号网口)用于连接公网,第二网口(0号网口)用于连接主业务板,第三网口(1号网口)用于连接从业务板。本实施例只描述一个从业务板的情况,多个从业务板的情况类似。nat模块负责转发报文。当nat模块从业务板收到报文时,根据报文的源ip、源端口号匹配nat表项,如果匹配到nat表项,则按匹配的nat规则转发。如果没有匹配到nat表项,则该报文为板间报文,根据mac地址转发到相应的业务板。当nat模块从公网收到报文时,根据目的ip、目的端口号匹配nat表项,如果匹配到nat表项,则按匹配的nat规则转发。如果没有匹配到nat表项,则该报文从0号网口转发到主业务板;nat模块对已匹配nat表项的业务板报文处理如下:1、从已匹配的nat表项中读取转换端口号和转换ip地址表项编号;2、用转换ip地址表项编号从公网ip地址表项中读取ip地址;3、把报文的源ip地址和源端口号修改为所读取到的ip地址和端口号,然后从5号口转发到公网。nat模块对已匹配nat表项的公网报文处理如下:1、从已匹配的nat表项中读取转换端口号和私网ip地址;2、从主机arp表中读取私网ip对应的mac地址;3、把报文的目的ip地址和目的端口号修改为所读取到的私网ip地址和转换端口号,把目的mac地址修改为查找到的mac地址,然后从1号口转发到从业务板。如图11所示,图11为一个实施例中设备的第三示意性结构图,主业务板和从业务板分别运行嵌入式linux操作系统,嵌入式linux操作系统中包含网络协议栈;主业务板的操作系统运行nat模块控制程序,nat模块控制程序通过mdc/mdio接口协议来初始化和控制nat模块,控制命令包括arp表项命令、nat表项命令、公网ip命令、私网ip和子网掩码命令等。如图11所示,主业务板还运行nat规则学习程序(表现为一个内核线程)。nat规则学习程序的功能主要是监控网络协议栈中的报文,并从网络协议栈中学习nat规则,最后把nat规则通过mdc/mdio接口下发到nat模块中。从网络协议栈中学习nat规则的方法如下:基于linux的连接跟踪模块,定时查找内核中的跟踪hash表(init_net->ct.hash),如果内核配置了nat,并且有nat流生成,则可以取得nat内核的软件nat规则,从而把nat规则下发到nat模块中。如图12所示,图12为一个实施例中设备的第四示意性结构图,系统初始化时,在主业务板与nat模块相接的物理网口上,用vconfig系统命令虚拟出2个虚拟接口eth0.1和eth0.2。其中,eth0.1用于与从业务板通信,ip地址配置为192.168.1.1;eth0.2用于与外网通信,ip地址配置为10.140.115.1。基于此,在nat模块还没有nat规则时,从业务板发出的报文可以被转发到主业务板上。同时,主业务板配置内核协议栈使能netfilter功能,命令为:iptables-tnat-apostrouting-s192.168.1.0/24-oeth0.2-jsnat--to140.115.1.1主业务板的操作系统上可实现软件nat功能。如图12所示:在系统初始化时,在从业务板上配置ip为192.168.1.2,默认网关为192.168.1.1。通过以上配置,在没有硬件nat规则的情况下,从业务板发出的报文会被nat模块转发到主业务板。由于主业务板的网络协议栈配置启动了netfilter功能,会根据配置,对接收到的从业务板报文进行源ip地址和端口号的修改,把源ip改为140.115.1.1,把源端口号改为1024(或者其它,由netfilter根据本系统端口号使用情况决定),然后把该报文从eth0.2转发出去。同时,主业务板上的conntrack记录了这个连接的转发规则。如图13所示,图13为一个实施例中设备的运行流程示意图,nat规则学习进程通过定时查找内核conntrack模块中的跟踪hash表(init_net->ct.hash),如果发现有新的nat连接生成,则根据该连接,生成nat规则,并把nat规则下发到nat模块中。同时,调用nat模块控制程序接口,查到到期老化的natentry(对应过期net连接),把相应entry从硬件表中删除。这样,避免过期的nat表项占用硬件资源。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:将nat规则配置到nat模块中的nat表项中;nat规则用于指示nat模块进行报文转发;nat规则为从网络协议栈学习到的规则。在一个实施例中,计算机程序被处理器执行将nat规则配置到nat模块中的nat表项中的步骤之前,还实现以下步骤:根据网络协议栈中的nat连接,生成nat规则;nat连接为转发不匹配nat表项的报文时生成的。在一个实施例中,计算机程序被处理器执行根据网络协议栈中的nat连接,生成nat规则时还实现以下步骤:根据nat连接的元组数据,生成nat规则;元组数据包括源ip、目的ip、源端口号以及目的端口号。在一个实施例中,网络协议栈包含跟踪hash表。计算机程序被处理器执行根据网络协议栈中的nat连接,生成nat规则的步骤之前,还实现以下步骤:按照预设第一周期查找跟踪hash表,获取nat连接。在一个实施例中,不匹配nat表项的报文包括第一报文和第二报文。第一报文为接收到的nat模块转发的公网报文;公网报文用于发送给从业务板。第二报文为接收到的nat模块转发的从业务板报文;从业务板报文用于发送给公网。在一个实施例中,网络协议栈为包含netfilter的协议栈。计算机程序被处理器执行根据网络协议栈中的nat连接,生成nat规则的步骤之前,还实现以下步骤:基于netfilter,将第一报文转发给从业务板;和/或,基于netfilter,将第二报文转发给公网。在一个实施例中,计算机程序被处理器执行基于netfilter,将第一报文转发给从业务板时还实现以下步骤:修改第一报文的目的ip地址、第一报文的目的端口号以及第一报文的目的mac地址。计算机程序被处理器执行基于netfilter,将第二报文转发给公网时还实现以下步骤:修改第二报文的源ip地址以及第二报文的源端口号。在一个实施例中,计算机程序被处理器执行时还实现以下步骤:删除nat表项中的过期nat规则。在一个实施例中,计算机程序被处理器执行删除nat表项中的过期nat规则的步骤之前,还实现以下步骤:按照预设第二周期查找nat表项中的nat规则,获取过期nat规则。在一个实施例中,计算机程序被处理器执行时还实现以下步骤:向nat模块发送初始化命令或控制命令;控制指令为arp表项命令、nat表项命令、公网ip命令、私网ip或子网掩码命令。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1