一种NAT转换方法、装置及NAT设备与流程

文档序号:17536942发布日期:2019-04-29 14:05阅读:373来源:国知局
一种NAT转换方法、装置及NAT设备与流程

本申请涉及网络通信技术领域,特别涉及一种nat转换方法、装置及nat设备。



背景技术:

nat(networkaddresstranslation,网络地址转换)设备在接收到报文后,如果该报文需进行nat处理且该报文满足会话信息新建条件,则执行新建流程。

现有技术中,以转换源ip(internetprotocol,网络之间互连的协议)地址为例,新建流程的基本处理思想为:

从nat资源池中选取一个ip地址和该ip地址的一个端口,利用该ip地址和该端口替换该报文的原始五元组中的源ip地址和源端口,形成新的五元组;进而,查询保存于存储介质(如ddr(doubledatarate双倍速率同步动态随机存储器))的会话表中的哈希表,当判断出该新的五元组为不冲突的五元组时,在该哈希表和对应的结果表中记录该新的五元组和该原始五元组,并基于该新的五元组对该报文进行nat处理;否则,重新从nat资源池中选取一个ip地址和该ip地址的一个端口进行分析。

尽管上述新建流程能够实现nat转换,但是,存在如下问题:基于现有会话表的哈希表的数据存储方式,每次试探只能测试一个新的五元组是否为不冲突的五元组,当该新的五元组为冲突的五元组时,会产生多次试探,而由于每次读取会话表所在的存储介质均会存在接口延时,这样无疑导致新建新能较差。



技术实现要素:

有鉴于此,本申请提供一种nat转换方法、装置及nat设备,以提高nat转换过程中的新建性能。

第一方面,本申请提供了了一种nat转换方法,应用于网络地址转换nat设备;所述方法包括:

从nat资源池中获取目标ip地址以及所述目标ip地址的参考端口,所述参考端口为所述目标ip地址的一个连续端口范围中的一个端口;

基于所述目标ip地址、所述参考端口和所述报文的原始五元组,生成所述报文对应的第一五元组,并对所述第一五元组的两类端口的第一类比特进行掩码,得到第二五元组;

基于所述第二五元组的哈希结果,在哈希表的连续多个哈希桶中确定不冲突的目标五元组;

在所述哈希表和对应的结果表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行nat处理。

可选地,所述基于所述第二五元组的哈希结果,在哈希表的连续多个哈希桶中确定不冲突的目标五元组的步骤,包括:

利用第一哈希算法,计算所述第二五元组对应的第一索引值;

对所述第一索引值进行基址处理,得到第二索引值,并以所述第二索引值作为基址查询哈希表,确定连续的m个第一类哈希桶;

基于所述第二五元组和第二哈希算法,在所述m个第一类哈希桶中确定不冲突的目标五元组;

所述基址处理包括:将所述第一索引值的低n位置0,或者,在所述第一索引值的末尾补n位0;

n为两类端口的第一类比特的个数之和,m为2n

可选地,所述基于所述第二五元组和第二哈希算法,在所述m个第一类哈希桶中确定不冲突的目标五元组的步骤,包括:

将所述第二五元组中的第一类端口的第一类比特进行恢复,得到第三五元组;其中,所述第一类端口的类型为:所述原始五元组中不进行nat处理的端口的类型;

对所述第三五元组执行冲突检测,直至在所述m个第一类哈希桶中确定出不冲突的目标五元组;

所述冲突检测包括:

通过将所述第三五元组中的第二类端口的第一类比特进行置0和/或置1的方式,生成所包含第二类端口属于所述一个连续端口范围的第四五元组;其中,所述第二类端口的类型为:所述原始五元组中进行nat处理的端口的类型;

利用第二哈希算法,计算所述第四五元组对应的第一签名信息;

将第一目标值作为第三索引值,从所述m个第一类哈希桶中确定目标哈希桶;其中,所述第一目标值为所述第四五元组中两类端口的第一类比特的组合;

当判断出所述目标哈希桶所记录的有效的签名信息中存在所述第一签名信息时,将所述第四五元组确定为不冲突的目标五元组。

可选地,所述方法还包括:

当判断出所述报文需进行nat处理时,利用第二哈希算法,计算所述原始五元组对应的第二签名信息;

将所述原始五元组的两类端口的第一类比特进行掩码,得到第五五元组;

利用第一哈希算法,计算所述第五五元组对应的第四索引值;

对所述第四索引值进行偏移处理,形成第五索引值,并以所述第五索引值查询所述哈希表,确定第二类哈希桶;其中,所述偏移处理为:以第二目标值替换所述第四索引值的低n位或在所述第四索引值的末尾补所述第二目标值,所述第二目标值为所述原始五元组的两类端口的第一类比特的组合;

当判断出所述第二类哈希桶所记录的有效的签名信息中存在所述第二签名信息时,基于所述结果表对所述报文进行nat处理,否则,执行所述从nat资源池中获取目标ip地址以及所述目标ip地址的参考端口的步骤。

可选地,所述第一类比特为端口末尾的连续至少一位。

第二方面,本申请提供了一种nat转换装置,应用于网络地址转换nat设备;所述装置包括:

获取单元,用于从nat资源池中获取目标ip地址以及所述目标ip地址的参考端口,所述参考端口为所述目标ip地址的一个连续端口范围中的一个端口;

处理单元,用于基于所述目标ip地址、所述参考端口和所述报文的原始五元组,生成所述报文对应的第一五元组,并对所述第一五元组的两类端口的第一类比特进行掩码,得到第二五元组;

确定单元,用于基于所述第二五元组的哈希结果,在哈希表的连续多个哈希桶中确定不冲突的目标五元组;

转换单元,用于在所述哈希表和对应的结果表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行nat处理。

可选地,所述确定单元包括:

计算子单元,用于利用第一哈希算法,计算所述第二五元组对应的第一索引值;

查询子单元,用于对所述第一索引值进行基址处理,得到第二索引值,并以所述第二索引值作为基址查询哈希表,确定连续的m个第一类哈希桶;

确定子单元,用于基于所述第二五元组和第二哈希算法,在所述m个第一类哈希桶中确定不冲突的目标五元组;

所述基址处理包括:将所述第一索引值的低n位置0,或者,在所述第一索引值的末尾补n位0;

n为两类端口的第一类比特的个数之和,m为2n

可选地,所述确定子单元具体用于:

将所述第二五元组中的第一类端口的第一类比特进行恢复,得到第三五元组;其中,所述第一类端口的类型为:所述原始五元组中不进行nat处理的端口的类型;

对所述第三五元组执行冲突检测,直至在所述m个第一类哈希桶中确定出不冲突的目标五元组;

所述冲突检测包括:

通过将所述第三五元组中的第二类端口的第一类比特进行置0和/或置1的方式,生成所包含第二类端口属于所述一个连续端口范围的第四五元组;其中,所述第二类端口的类型为:所述原始五元组中进行nat处理的端口的类型;

利用第二哈希算法,计算所述第四五元组对应的第一签名信息;

将第一目标值作为第三索引值,从所述m个第一类哈希桶中确定目标哈希桶;其中,所述第一目标值为所述第四五元组中两类端口的第一类比特的组合;

当判断出所述目标哈希桶所记录的有效的签名信息中存在所述第一签名信息时,将所述第四五元组确定为不冲突的目标五元组。

可选地,所述装置还包括:

计算单元,用于当判断出所述报文需进行nat处理时,利用第二哈希算法,计算所述原始五元组对应的第二签名信息;

掩码单元,用于将所述原始五元组的两类端口的第一类比特进行掩码,得到第五五元组;

生成单元,用于利用第一哈希算法,计算所述第五五元组对应的第四索引值;

索引单元,用于对所述第四索引值进行偏移处理,形成第五索引值,并以所述第五索引值查询所述哈希表,确定第二类哈希桶;其中,所述偏移处理为:以第二目标值替换所述第四索引值的低n位或在所述第四索引值的末尾补所述第二目标值,所述第二目标值为所述原始五元组的两类端口的第一类比特的组合;

分析单元,用于当判断出所述第二类哈希桶所记录的有效的签名信息中存在所述第二签名信息时,基于所述结果表对所述报文进行nat处理,否则,执行所述从nat资源池中获取目标ip地址以及所述目标ip地址的参考端口的步骤。

第三方面,本申请提供了一种nat设备,包括:内部总线、存储器、处理器和通信接口;其中,所述处理器、所述通信接口、所述存储器通过所述内部总线完成相互间的通信;其中,所述存储器,用于存储nat转换方法对应的机器可行指令;

所述处理器,用于读取所述存储器上的所述机器可读指令,以执行本申请所述的nat转换方法。

本申请所提供方案中,一次性确定哈希表的连续多个哈希桶,进而从哈希表的连续多个哈希桶中确定不冲突的目标五元组,也就是,一次性试探与连续多个哈希桶对应的多个五元组是否为不冲突的五元组,这样使得冲突试探时可以减少对存储介质的读取次数,因此,可以提高nat转换过程中的新建性能。

附图说明

图1是一种组网系统的结构示意图;

图2是本申请一示例性实施例示出的一种nat转换方法的流程图;

图3是基于本申请所提供的一种nat转换方法进行源ip地址转换的图表示意图;

图4是基于本申请所提供的一种nat转换方法进行源ip地址转换的图表示意图;

图5是本申请一示例性实施例示出的一种nat转换装置的结构示意图;

图6是本申请一示例性实施例示出的一种nat设备的结构示意图。

具体实施方式

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

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

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

为了便于方案理解,下面介绍关于nat(networkaddresstranslation,网络地址转换)的相关内容。

对于nat而言:

从转换模式的角度而言,nat可分为pat(portaddresstranslation,带端口的地址转换)和no-pat(notportaddresstranslation,不带端口的地址转换)。其中,no-pat模式下,一个外网ip地址同一时间只能分给一个内外ip地址进行转换;而pat模式下,一个外网ip地址可以同时分配给多个内网ip地址共用。本申请所出现的nat指pat模式。

另外,按照不同的组网应用,nat可以分为:入接口转换源ip地址,入接口转换目的ip地址,出接口转换源ip地址,出接口转换目的ip地址。并且,不同地址的转换过程类似。

为了解决现有技术中新建性能差的问题,本申请提供了一种nat转换方法、装置及nat设备,以提高nat转换过程的新建性能。

下面首先对本申请所提供的一种nat转换方法进行介绍。需要说明的是,本申请所提供的一种nat转换方法应用于nat设备,具体的,该nat转换方法可以由nat设备中的cpu来执行,当然,也可以由cpu与某些硬件共同执行完成,其中,该某些硬件可以为集成电路asic(applicationspecificintegratedcircuit)/fpga((field-programmablegatearray,现场可编程门阵列)。其中,所谓的nat设备为两个网络的边沿设备,其用于实现允许内部网络用户访问外部公共网络以及允许外部公共网络访问部分内部资源(例如内部服务器)的目的,举例而言:该nat设备的设备类型可以为路由器,当然并不局限于此。

另外,对于会话表而言,其分为两级表。具体的,会话表的第一级为哈希表,用于存储五元组经过哈希计算得出的签名信息和指向结果表的指针;而会话表的第二级为结果表,用于存储五元组和其他转发相关的信息。

对于哈希表而言,新建流程中,当通过查询哈希表确定出不冲突的目标五元组后,可以在哈希表中记录该目标五元组和所对应的原始五元组,具体为:(1)在该哈希表中的一个哈希桶中,存储该原始五元组对应的签名信息和指向结果表的指针;(2)将目标五元组进行位置互换,得到位置互换后的目标五元组,在哈希表中的一个哈希桶中,存储位置互换后的目标五元组对应的签名信息和指向结果表的指针,其中,所谓位置互换为:源ip地址和目的ip地址互换及源端口和目的端口互换。

并且,对于一个报文而言,哈希表中包含原始五元组对应的签名信息的记录,属于该报文在哈希表中的正向哈希记录;而哈希表中包含位置互换后的目标五元组对应的签名信息的记录,属于该报文在哈希表中的反向哈希记录。另外,同一报文对应的正向哈希记录和反向哈希记录中包含相同的指针,也就是说,同一报文对应的正向哈希记录和反向哈希记录对应于结果表中的同一条记录。其中,结果表中的任一条记录至少包括:一个报文的原始五元组,以及该报文对应的位置互换后的目标五元组。

需要强调的是,本申请中,对哈希表存储五元组的相关信息的存储方式进行改变,主要的处理思路是:对于ip地址相同而端口连续的多个五元组,在哈希表中所对应的哈希桶连续,以使得在冲突试探时可以一次性读取连续多个哈希桶,从而一次性试探与连续多个哈希桶对应的多个五元组是否为不冲突的五元组。

为了便于理解方案,本申请示例性地给出一种适用于本申请所提供方法的组网系统,该组网系统的结构示意图可以参见图1。如图1所示,该组网系统中包括:主机a、nat设备b和服务器c,由于主机a和服务器c属于不同的网络,即主机a属于内网而服务器c属于外网,因此,当主机a向服务器c发送报文时,nat设备需要对主机a发送的报文进行nat处理,然后将经过nat处理后的报文发送给服务器c;类似的,当服务器c向主机a发送报文时,nat设备需要对服务器c发送的报文进行nat处理后,然后将经过nat处理后的报文发送给该主机a。为了提高新建性能,图1中的nat设备b可以利用本申请所提供的一种nat转换方法,对主机a向服务器c发送的报文进行nat处理,以及对服务器c向主机a发送的报文进行nat处理。

如图2所示,本申请所提供的一种nat转换方法,可以包括如下步骤:

s101,从nat资源池中获取目标ip地址以及该目标ip地址的参考端口,该参考端口为该目标ip地址的一个连续端口范围中的一个端口;

当nat设备接收到组网系统中的其他设备发送的报文时,如果该报文需进行nat处理且该报文满足会话信息新建条件,则该nat设备执行新建流程。本申请所提供方案中,该nat设备执行新建流程时,可以从nat资源池中获取目标ip地址以及该目标ip地址的参考端口,该参考端口为该目标ip地址的一个连续端口范围中的一个端口。并且,在选择端口时,可以利用对该报文的原始五元组哈希后的值进行选择,随机选择或顺序选择,等等。

需要说明的是,对于一个报文而言,该报文中的原始五元组的参数类型包括:源ip地址、目的ip地址、源端口、目的端口和协议;而nat处理时的转换需求可以为仅仅转换源ip地址或转换目的ip地址,还可以为既转换源ip地址又转换目的ip地址。因此,在获取该目标ip地址和该参考端口后,如果需要转换源ip地址,则该目标ip地址用于替换原始五元组中的源ip地址,参考端口用于替换原始五元组中的源端口;而如果需要转换目的ip地址,则该目标ip地址用于替换原始五元组中的目的ip地址,参考端口用于替换原始五元组中的目的端口。另外,需要强调的时,本申请中所述的目标ip地址为从nat资源池中取出的一个ip地址,该目标ip地址可以作为源ip地址或目的ip地址;而该参考端口为该目标ip地址的一个连续端口范围中的一个端口,该参考端口可以作为源端口或目的端口。

另外,本领域技术人员可以理解的是,可以基于acl(accesscontrollist,访问控制列表)来确定报文是否需要进行nat处理、nat处理时的转换需求以及nat处理时所使用的nat资源池,等等。其中,nat设备中存储有多个nat资源池,以应对不同类型的ip地址,并且,每个nat资源池均是ip地址及端口池。

并且,对于采用不同数据传输协议的数据流中的报文而言,报文是否满足会话信息新建条件的具体判断方式可以不同。举例而言:对于采用tcp(transmissioncontrolprotocol传输控制协议)的数据流中的报文而言,报文是否满足会话信息新建条件的具体判断方式可以包括:判断报文是否为首报文,如果是,确定报文满足会话信息新建条件。对于采用udp(userdatagramprotocol,用户数据报协议)的数据流中的报文而言,报文是否满足会话信息新建条件的具体判断方式可以包括:判断报文是否能够基于会话表直接进行nat处理,如果不可以,确定报文满足会话信息新建条件。当然,在具体应用中,对于采用tcp协议的数据流中的报文而言,可以在判断出该报文不能基于会话表直接进行nat处理且是首报文时,确定报文满足会话信息新建条件。

需要强调的是,判断报文是否能够基于会话表直接进行nat处理的过程需要利用哈希表,而本申请对哈希表的存储方式进行改变,因此,判断报文是否能够基于会话表直接进行nat处理的过程也发生了改变,为了布局清楚,后续对判断报文是否能够基于会话表直接进行nat处理的过程进行介绍。

s102,基于该目标ip地址、该参考端口和该报文的原始五元组,生成该报文对应的第一五元组,并对该第一五元组的两类端口的第一类比特进行掩码,得到第二五元组;

s103,基于该第二五元组的哈希结果,在哈希表的连续多个哈希桶中确定不冲突的目标五元组;

在获取到该目标ip地址和该参考端口后,该nat设备可以基于该报文对应的转换需求,以该目标ip地址替换该报文的原始五元组中的源ip地址或目的ip地址,以该参考端口替换该原始五元组中的源端口或目的端口,从而生成该报文对应的第一五元组。在得到第一五元组后,该nat设备可以对该第一五元组的两类端口的第一类比特进行掩码,即置0,得到第二五元组。进而,该nat设备基于该第二五元组的哈希结果,在哈希表的连续多个哈希桶中确定不冲突的目标五元组。需要说明的是,由于在基于会话表直接进行nat处理时,无法确定被转换的是源ip地址还是目的ip地址,因此,本申请同时对第一五元组中的源端口和目的端口进行掩码。

可以理解的是,端口由16位比特构成,也就是源端口和目的端口均由16位比特构成。对于第一类比特而言,比特数量和位置可以根据实际情况设定,举例而言:第一类比特可以为端口的第0比特,可以为端口的第0比特和第1比特,也可以为端口的第0比特、第1比特和第2比特,还可以为端口的第14比特和第15比特,等等。为了计算简便,在具体应用中,该第一类比特为端口末尾的连续至少一位,具体的位数可以根据具体应用环境进行设定。举例而言:该第一类比特为端口的末尾的连续两位,即第0比特和第1比特,或者,该第一类比特为端口的末尾的连续三位,即第0比特、第1比特和第2比特,或者,该第一类比特为端口的末尾的连续四位,即第0比特、第1比特、第2比特和第3比特,等等。

需要说明的是,哈希表所对应的存储区域被划分为若干的哈希桶,并且,通过固定位数的二进制字符串作为哈希桶的索引值。为了提升冲突检测速度,从而提高新建性能,本申请需要使多个五元组所对应的哈希桶连续。基于该种需求,在哈希表中的一个哈希桶中,存储任一五元组对应的签名信息具体过程可以包括:

(1)将该五元组中源端口和目的端口的第一类比特进行掩码,利用第一哈希算法,计算掩码后的五元组对应的索引值。

其中,对于区别仅仅在于两类端口的第一类比特的多个五元组可以对应同一索引值。

(2)对该索引值进行偏移处理,形成具有固定位数的新的索引值,并将该五元组对应的签名信息记录到该新的索引值对应的哈希桶中,其中,偏移处理为:以该五元组中两类端口的第一类比特的组合值替换索引值的低n位,或者,在索引值的尾部的补该组合值,其中,n为该五元组中两类端口的第一类比特的总位数。

而基于上述的任一五元组存入哈希表的方式,为了一次性试探多个五元组是否为不冲突的五元组,在得到第一五元组后,可以首先对该第一五元组的两类端口的第一类比特进行掩码,得到第二五元组,进而基于该第二五元组的哈希结果,确定哈希表中的连续多个哈希桶,并在该连续多个哈希桶中确定不冲突的目标五元组。

具体的,基于该第二五元组的哈希结果,在哈希表的连续多个哈希桶中确定不冲突的目标五元组的步骤,可以包括:

利用第一哈希算法,计算该第二五元组对应的第一索引值;

对该第一索引值进行基址处理,得到第二索引值,并以该第二索引值作为基址查询哈希表,确定连续的m个第一类哈希桶;

基于该第二五元组和第二哈希算法,在该m个第一类哈希桶中确定不冲突的目标五元组;

该基址处理包括:将该第一索引值的低n位置0,或者,在该第一索引值的末尾补n位0;

n为两类端口的第一类比特的个数之和,m为2n

可以理解的是,该基址处理的具体方式与上述的偏移处理的具体方式具有对应性,具体的:该偏移处理为:以五元组中两类端口的第一类比特的组合值替换索引值的低n位,相应的,该基址处理为:将该第一索引值的低n位置0;而该偏移处理为:在索引值的尾部的补组合值,相应的,该基址处理为:在第一索引值的末尾补n位0。另外,第一哈希算法可以包括:md(messagedigestalgorithm,消息摘要算法)或sha(securehashalgorithm,安全哈希算法),等等。

并且,以该第二索引值作为基址查询哈希表,确定连续的m个第一类哈希桶,具体过程为:确定该第二索引值所对应的第一类哈希桶,以该第二索引值所对应的第一类哈希桶为起始点,读取连续的m个第一类哈希桶。进一步的,所述基于该第二五元组和第二哈希算法,在该m个第一类哈希桶中确定不冲突的目标五元组的步骤,可以包括:

将该第二五元组中的第一类端口的第一类比特进行恢复,得到第三五元组;其中,该第一类端口的类型为:该原始五元组中不进行nat处理的端口的类型;

对该第三五元组执行冲突检测,直至在该m个第一类哈希桶中确定出不冲突的目标五元组;

所述冲突检测包括:

通过将该第三五元组中的第二类端口的第一类比特进行置0和/或置1的方式,生成所包含第二类端口属于该一个连续端口范围的第四五元组;其中,该第二类端口的类型为:该原始五元组中进行nat处理的端口的类型;

利用第二哈希算法,计算第四五元组对应的第一签名信息;

将第一目标值作为第三索引值,从该m个第一类哈希桶中确定目标哈希桶;其中,该第一目标值为该第四五元组中两类端口的第一类比特的组合;

当判断出该目标哈希桶所记录的有效的签名信息中存在该第一签名信息时,将该第四五元组确定为不冲突的目标五元组。

其中,第二哈希算法可以包括:md(messagedigestalgorithm,消息摘要算法)或sha(securehashalgorithm,安全哈希算法),等等。并且,将第一目标值作为第三索引值,从该m个第一类哈希桶中确定目标哈希桶,具体过程为:将该第一目标值作为第三索引值,进而,将该m个第一类哈希桶中,该第三索引值对应的第一类哈希桶作为目标哈希桶。

可以理解的是,有些端口属于nat资源池中的无效端口,而在将该第三五元组中的第二类端口的第一类比特进行置0和/或置1后所得到的端口,可能属于nat资源池中的无效端口。因此,为了避免第四五元组的第二类端口属于该无效端口,在生成时第四五元组时,该第四五元组的第二类端口可以限定在:参考端口所在的该一个连续端口范围内。

另外,需要说明的是,初始化哈希表时,可以将哈希表项中的签名信息和指针均设置为无效值。当将五元组写入哈希表时,可以根据该五元组,将相应的签名信息和指针更改为有效值。为了区分签名信息和指针是无效值还是有效值,本方案中,在哈希表项中为每一签名信息和指针对应设置1个比特,通过将该比特置0或1,来区分无效值还是有效值。

s104,在该哈希表和对应的结果表中记录该目标五元组和该原始五元组,并基于该目标五元组对该报文进行nat处理。

在哈希表的连续多个哈希桶中确定出不冲突的目标五元组后,可以在该哈希表和对应的结果表中记录该目标五元组和该原始五元组,并基于该目标五元组对该报文进行nat处理。其中,在结果表中记录该目标五元组和该原始五元组可以包括:在该结果表中记录该原始五元组,以及对该目标五元组进行位置互换后所得的五元组。而基于该目标五元组对该报文进行nat处理可以包括:将该报文中的原始五元组替换为目标五元组。本申请中,在该哈希表和对应的结果表中记录该目标五元组和该原始五元组的具体过程可以包括:

(1)利用第二哈希算法,计算该原始五元组对应的签名信息;将该原始五元组的源端口和目的端口的第一类比特进行掩码,得到新的五元组;利用第一哈希算法,计算该原始五元组对应的新的五元组的索引值,并利用原始五元组的两类端口的第一类比特的组合值,对该新的五元组的索引值进行偏移处理,得到新的索引值;以该新的索引值查询该哈希表,确定一个哈希桶,并将该原始五元组对应的签名信息和指向结果表的指针存储至所确定的该哈希桶中。

(2)将该目标五元组进行位置互换,得到位置互换后的目标五元组;利用第二哈希算法,计算位置互换后的目标五元组对应的签名信息;将位置互换后的目标五元组的两类端口的第一类比特进行掩码,得到位置互换后的目标五元组对应的新的五元组;利用第一哈希算法,计算该新的五元组的索引值;根据位置互换后的目标五元组的两类端口的第一类比特的组合值,对该索引值进行偏移处理,形成新的索引值;以该新的索引值查询该哈希表,确定一个哈希桶,并将位置互换后的目标五元组对应的签名信息和指向结果表的指针存储至所确定的该哈希桶中。另外,可以理解的是,当判断出该报文需进行nat处理时,在执行新建过程之前,还可以判断该报文是否能够基于会话表直接进行nat处理。因此,本申请所提供的一种nat转换方法,还可以包括如下步骤:

步骤01,当判断出该报文需进行nat处理时,利用第二哈希算法,计算该原始五元组对应的第二签名信息;

步骤02,将该原始五元组的两类端口的第一类比特进行掩码,得到第五五元组;

步骤03,利用第一哈希算法,计算该第五五元组对应的第四索引值;

步骤04,对该第四索引值进行偏移处理,形成第五索引值,并以该第五索引值查询该哈希表,确定第二类哈希桶;其中,该偏移处理为:以第二目标值替换该第四索引值的低n位或在该第四索引值的末尾补该第二目标值,该第二目标值为该原始五元组的两类端口的第一类比特的组合;

步骤05,当判断出该第二类哈希桶所记录的有效的签名信息中存在该第二签名信息时,基于该结果表对该报文进行nat处理,否则,执行所述从nat资源池中获取目标ip地址以及所述目标ip地址的参考端口的步骤。

其中,基于该结果表对该报文进行nat处理,具体为:依据该第二类哈希桶所记录的第二签名信息所对应的指针,从结果表中确定出五元组,进而基于所确定出的五元组,对该报文进行nat转换。

本申请所提供方案中,一次性确定哈希表的连续多个哈希桶,进而从哈希表的连续多个哈希桶中确定不冲突的目标五元组,也就是,一次性试探与连续多个哈希桶对应的多个五元组是否为不冲突的五元组,这样使得冲突试探时可以减少对存储介质的读取次数,因此,可以提高nat转换过程中的新建性能。

下面结合应用实例,对本申请所提供的一种nat转换方法进行介绍。

该应用实例中,组网示意图如图1所示,该组网系统具体包括:主机a、nat设备b和服务器c,其中,主机a的ip地址为192.168.1.2,nat设备b的内网ip地址为192.168.1.1而外网ip地址为1.1.1.1,服务器c的ip地址为1.1.1.2。

如图3和图4所示,本申请所提供的一种nat转换方法,可以包括如下步骤:

s01,nat设备b接收到主机a至服务器c的报文后,基于acl确定出该报文需进行nat处理;

s02,提取该报文中的原始五元组(192.168.1.2,1.1.1.2,2222,80,tcp);

其中,该原始五元组中,192.168.1.2为源ip地址,1.1.1.2为目的ip地址,2222为源端口,80为目的端口,tcp为协议。

s03,利用md算法,计算该原始五元组对应的签名信息sig1;

s04,将该原始五元组的源端口的第0比特p0和目的端口的第0比特p1进行掩码,得到五元组g1(192.168.1.2,1.1.1.2,psrc1,pdst1,tcp);

其中,psrc1为对源端口2222的第0比特p0进行掩码所得值,pdst1为对目的端口80的第0比特p1进行掩码所得值。

s05,利用sha算法,计算该五元组g1对应的索引值ind1;

s06,以p0和p1的组合值替换索引值ind1的末两位,形成索引值ind2;

s07,以索引值ind2查询哈希表,确定哈希桶d1;

s08,当判断出该哈希桶d1所记录的有效的签名信息中存在签名信息sig1时,基于结果表对该报文进行nat处理;否则,执行s09;

图2所示的哈希表中,v为用于标识签名信息和指针是有效值还是无效值,其中,v为0时,表示签名信息和指针为无效值,v为1时,表示签名信息和指针属于有效值。

s09,基于acl确定出该报文对应的地址转换类型为转换源ip地址;

s10,从源ip地址所对应的nat资源池中获取目标ip地址和参考端口;

其中,假设该目标ip地址为1.1.1.1,参考端口为2001。

s11,以目标ip地址替换原始五元组中的源ip地址,以参考端口替换原始五元组中的源端口,得到五元组g2,并对五元组g2的源端口的第0比特p2和目的端口的第0比特p1进行掩码,得到五元组g3。

其中,如图4所示,五元组g2为(1.1.1.1,1.1.1.2,2001,80,tcp);相应的,五元组g3为(1.1.1.1,1.1.1.2,psrc2,pdst2,tcp)。

其中,psrc2为对五元组g2的源端口的第0比特p2进行掩码所得值,pdst2为对五元组g2的目的端口的第0比特p1进行掩码所得值。

s12,利用sha算法,计算五元组g3对应的索引值ind3;

s13,将索引值ind3的低两位置0,得到索引值ind4,并以索引值ind4作为索引,从哈希表中读取出4个连续的第一类哈希桶;

s14,将五元组g3的目的端口恢复,得到五元组g4;

其中,五元组g4为(1.1.1.1,1.1.1.2,psrc2,80,tcp)。

s15,将五元组g4的源端口的第0比特p2置0,得到五元组g5,利用md算法,计算五元组g5对应的签名信息sig2,以p2和p1的组合值作为索引,从连续的4个第一类哈希桶中确定哈希桶d2,查询该哈希桶d2记录的有效的签名信息中是否存在该sig2,如果不存在,将五元组g5作为该报文对应的目标五元组,并在哈希表和对应的结果表中记录五元组g5和原始五元组,并基于五元组g5对该报文进行nat处理;如果存在,执行s16;

s16,将五元组g4的源端口的第0比特p2置1,得到五元组g6,利用md算法,计算五元组g6对应的签名信息sig3,以p2和p1的组合值作为索引,从连续的4个第一类哈希桶中确定哈希桶d3,查询该哈希桶d3记录的有效的签名信息中是否存在该sig3,如果不存在,将五元组g6作为该报文对应的目标五元组,并在哈希表和对应的结果表中记录五元组g6和原始五元组,并基于五元组g6对该报文进行nat处理;如果存在,返回执行s10,从源ip地址所对应的nat资源池中获取目标ip地址和参考端口。

需要说明的是,当原始五元组所对应的地址转换类型为目的ip地址时,nat转换流程与s01-s16类似,区别在于把目的端口和源端口的处理对换。

可见,本具体实施例中,由于在冲突试探时减少了对存储介质的读取次数,因此,可以解决现有技术中的新建性能较差的问题。

相应于上述方法实施例,本申请提供了一种nat转换装置,应用于网络地址转换nat设备;如图5所示,所述装置包括:

获取单元510,用于从nat资源池中获取目标ip地址以及所述目标ip地址的参考端口,所述参考端口为所述目标ip地址的一个连续端口范围中的一个端口;

处理单元520,用于基于所述目标ip地址、所述参考端口和所述报文的原始五元组,生成所述报文对应的第一五元组,并对所述第一五元组的两类端口的第一类比特进行掩码,得到第二五元组;

确定单元530,用于基于所述第二五元组的哈希结果,在哈希表的连续多个哈希桶中确定不冲突的目标五元组;

转换单元540,用于在所述哈希表和对应的结果表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行nat处理。

本申请所提供方案中,一次性确定哈希表的连续多个哈希桶,进而从哈希表的连续多个哈希桶中确定不冲突的目标五元组,也就是,一次性试探与连续多个哈希桶对应的多个五元组是否为不冲突的五元组,这样使得冲突试探时可以减少对存储介质的读取次数,因此,可以提高nat转换过程中的新建性能。

可选地,所述确定单元530可以包括:

计算子单元,用于利用第一哈希算法,计算所述第二五元组对应的第一索引值;

查询子单元,用于对所述第一索引值进行基址处理,得到第二索引值,并以所述第二索引值作为基址查询哈希表,确定连续的m个第一类哈希桶;

确定子单元,用于基于所述第二五元组和第二哈希算法,在所述m个第一类哈希桶中确定不冲突的目标五元组;

所述基址处理包括:将所述第一索引值的低n位置0,或者,在所述第一索引值的末尾补n位0;

n为两类端口的第一类比特的个数之和,m为2n

可选地,所述确定子单元具体用于:

将所述第二五元组中的第一类端口的第一类比特进行恢复,得到第三五元组;其中,所述第一类端口的类型为:所述原始五元组中不进行nat处理的端口的类型;

对所述第三五元组执行冲突检测,直至在所述m个第一类哈希桶中确定出不冲突的目标五元组;

所述冲突检测包括:

通过将所述第三五元组中的第二类端口的第一类比特进行置0和/或置1的方式,生成所包含第二类端口属于所述一个连续端口范围的第四五元组;其中,所述第二类端口的类型为:所述原始五元组中进行nat处理的端口的类型;

利用第二哈希算法,计算所述第四五元组对应的第一签名信息;

将第一目标值作为第三索引值,从所述m个第一类哈希桶中确定目标哈希桶;其中,所述第一目标值为所述第四五元组中两类端口的第一类比特的组合;

当判断出所述目标哈希桶所记录的有效的签名信息中存在所述第一签名信息时,将所述第四五元组确定为不冲突的目标五元组。

可选地,所述装置还包括:

计算单元,用于当判断出所述报文需进行nat处理时,利用第二哈希算法,计算所述原始五元组对应的第二签名信息;

掩码单元,用于将所述原始五元组的两类端口的第一类比特进行掩码,得到第五五元组;

生成单元,用于利用第一哈希算法,计算所述第五五元组对应的第四索引值;

索引单元,用于对所述第四索引值进行偏移处理,形成第五索引值,并以所述第五索引值查询所述哈希表,确定第二类哈希桶;其中,所述偏移处理为:以第二目标值替换所述第四索引值的低n位或在所述第四索引值的末尾补所述第二目标值,所述第二目标值为所述原始五元组的两类端口的第一类比特的组合;

分析单元,用于当判断出所述第二类哈希桶所记录的有效的签名信息中存在所述第二签名信息时,基于所述结果表对所述报文进行nat处理,否则,执行所述从nat资源池中获取目标ip地址以及所述目标ip地址的参考端口的步骤。

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

另外,相应于上述方法实施例,本申请还提供了一种nat设备,如图6所示,该nat设备包括:内部总线610、存储器(memory)620、处理器(processor)630和通信接口(communicationsinterface)640;其中,所述处理器630、所述通信接口640、所述存储器620通过所述内部总线610完成相互间的通信;

其中,所述存储器620,用于存储nat转换方法对应的机器可行指令;

所述处理器630,用于读取所述存储器620上的所述机器可读指令,以执行本申请所提供的nat转换方法。

其中关于nat转换方法的具体步骤的相关描述可以参见本申请方法实施例中的描述内容,在此不做赘述。并且,需要强调的是,该nat设备可以为路由器,当然并不局限于此。

其中,存储器620例如可以是非易失性存储器(non-volatilememory)。处理器630可以调用执行存储器620中的实现nat转换方法的逻辑指令,以执行上述nat转换方法。

实现nat转换的逻辑指令的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

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

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