一种NAT转换方法、装置及NAT设备转让专利

申请号 : CN201810252611.3

文献号 : CN109688237B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 安绍亮

申请人 : 新华三技术有限公司

摘要 :

本申请提供一种NAT转换方法、装置及NAT设备。该方法包括:从NAT资源池中获取目标IP地址以及目标IP地址的参考端口,参考端口为目标IP地址的一个连续端口范围中的一个端口;基于目标IP地址、参考端口和报文的原始五元组,生成报文对应的第一五元组,并对第一五元组中的参考端口的第一类比特进行掩码,得到第二五元组;基于第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特;将目标比特所表示的冲突状态设置为冲突,并基于目标比特,生成报文对应的目标五元组;在会话表中记录目标五元组和原始五元组,并基于目标五元组对报文进行NAT处理。通过本方案,可以解决现有技术中新建性能差的问题。

权利要求 :

1.一种NAT转换方法,其特征在于,应用于网络地址转换NAT设备,所述方法包括:从NAT资源池中获取目标IP地址以及所述目标IP地址的参考端口,所述参考端口为所述目标IP地址的一个连续端口范围中的一个端口;

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

基于所述第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特;其中,所述位图中每个比特用于表示五元组的冲突状态;

将所述目标比特所表示的冲突状态设置为冲突,并基于所述目标比特,生成所述报文对应的目标五元组;其中,基于所述目标比特,生成所述报文对应的目标五元组具体为:以所述目标比特对应的二进制字符串恢复所述第二五元组中被掩码的第一类比特,得到所述报文对应的目标五元组;

在会话表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行NAT处理。

2.根据权利要求1所述的方法,其特征在于,所述基于所述第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特的步骤,包括:利用第一哈希算法,计算所述第二五元组对应的第一索引值,并利用所述第一索引值,从预先构建的位图中确定第一表项;其中,所述位图包括多个表项,每一表项包括多个比特,每一比特对应一个与第一类比特的位数相同的二进制字符串;

从所述第一表项中确定目标比特;其中,所述目标比特所对应冲突状态为不冲突,且所述目标比特所对应的二进制字符串与所述参考端口未掩码部分所形成的端口,位于所述一个连续端口范围内。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当检测到从所述会话表中删除所述目标五元组对应的记录内容时,确定所述目标五元组所对应的地址转换类型;

确定所述目标五元组中与所述地址转换类型匹配的端口,并将所确定出的端口的第一类比特进行掩码,得到第三五元组;

利用第一哈希算法,计算所述第三五元组对应的第二索引值,并利用所述第二索引值,从所述位图中确定第二表项;

从所述第二表项中,确定对应于目标二进制字符串的比特,并将所确定的比特所表示的冲突状态设置为不冲突,所述目标二进制字符串为所述目标五元组中与所述地址转换类型匹配的端口的第一类比特。

4.根据权利要求3所述的方法,其特征在于,所述在会话表中记录所述目标五元组和所述原始五元组的步骤,包括:在会话表中记录所述目标五元组、所述原始五元组和本次NAT的地址转换类型。

5.根据权利要求1-4任一项所述的方法,其特征在于,所述第一类比特为端口末尾的至少一位。

6.一种NAT转换装置,其特征在于,应用于网络地址转换NAT设备,所述装置包括:信息获取单元,用于从NAT资源池中获取目标IP地址以及所述目标IP地址的参考端口,所述参考端口为所述目标IP地址的一个连续端口范围中的一个端口;

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

比特确定单元,用于基于所述第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特;其中,所述位图中每个比特用于表示五元组的冲突状态;

五元组生成单元,用于将所述目标比特所表示的冲突状态设置为冲突,并基于所述目标比特,生成所述报文对应的目标五元组;基于所述目标比特,生成所述报文对应的目标五元组具体为:以所述目标比特对应的二进制字符串恢复所述第二五元组中被掩码的第一类比特,得到所述报文对应的目标五元组;

NAT处理单元,用于在会话表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行NAT处理。

7.根据权利要求6所述的装置,其特征在于,所述比特确定单元具体用于:

利用第一哈希算法,计算所述第二五元组对应的第一索引值,并利用所述第一索引值,从预先构建的位图中确定第一表项;其中,所述位图包括多个表项,每一表项包括多个比特,每一比特对应一个与第一类比特的位数相同的二进制字符串;

从所述第一表项中确定目标比特;其中,所述目标比特所对应冲突状态为不冲突,且所述目标比特所对应的二进制字符串与所述参考端口未掩码部分所形成的端口,位于所述一个连续端口范围内。

8.根据权利要求6所述的装置,其特征在于,所述装置还包括:

类型确定单元,用于当检测到从所述会话表中删除所述目标五元组对应的记录内容时,确定所述目标五元组所对应的地址转换类型;

端口掩码单元,用于确定所述目标五元组中与所述地址转换类型匹配的端口,并将所确定出的端口的第一类比特进行掩码,得到第三五元组;

表项查询单元,用于利用第一哈希算法,计算所述第三五元组对应的第二索引值,并利用所述第二索引值,从所述位图中确定第二表项;

冲突调整单元,用于从所述第二表项中,确定对应于目标二进制字符串的比特,并将所确定的比特所表示的冲突状态设置为不冲突,所述目标二进制字符串为所述目标五元组中与所述地址转换类型匹配的端口的第一类比特。

9.根据权利要求8所述的装置,其特征在于,所述NAT处理单元具体用于:在会话表中记录所述目标五元组、所述原始五元组和本次NAT的地址转换类型,并基于所述目标五元组对所述报文进行NAT转换。

10.一种NAT设备,其特征在于,包括:内部总线、存储器、处理器和通信接口;其中,所述处理器、所述通信接口、所述存储器通过所述内部总线完成相互间的通信;其中,所述存储器,用于存储NAT转换方法对应的机器可读程序;

所述处理器,用于读取所述存储器上的所述机器可读程序,以执行权利要求1-5任一项所述的NAT转换方法。

说明书 :

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

技术领域

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

背景技术

[0002] NAT(Network Address Translation,网络地址转换)设备在接收到报文后,如果该报文需进行NAT处理且该报文满足会话信息新建条件,则执行新建流程。
[0003] 现有技术中,以转换源IP(Internet Protocol,网络之间互连的协议)地址为例,新建流程的基本处理思想为:
[0004] 从NAT资源池中选取一个IP地址和该IP地址的一个端口,利用该IP地址和该端口替换该报文的原始五元组中的源IP地址和源端口,形成新的五元组;进而,查询保存于存储介质(如DDR(Double Data Rate双倍速率同步动态随机存储器))的会话表中的哈希表,当判断出该新的五元组为不冲突的五元组时,在该哈希表和对应的结果表中记录该新的五元组和该原始五元组,并基于该新的五元组对该报文进行NAT处理;否则,重新从NAT资源池中选取一个IP地址和该IP地址的一个端口进行分析。
[0005] 尽管上述新建流程能够实现NAT转换,但是,存在如下问题:基于现有会话表的哈希表的数据存储方式,每次试探只能测试一个新的五元组是否为不冲突的五元组,当该新的五元组为冲突的五元组时,会产生多次试探,而由于每次读取会话表所在的存储介质均会存在接口延时,这样无疑导致新建性能较差。

发明内容

[0006] 有鉴于此,本申请提供一种NAT转换方法、装置及NAT设备,以解决现有技术中的新建性能较差的问题。
[0007] 第一方面,本申请提供了一种NAT转换方法,应用于网络地址转换NAT设备,所述方法包括:
[0008] 从NAT资源池中获取目标IP地址以及所述目标IP地址的参考端口,所述参考端口为所述目标IP地址的一个连续端口范围中的一个端口;
[0009] 基于所述目标IP地址、所述参考端口和所述报文的原始五元组,生成所述报文对应的第一五元组,并对所述第一五元组中的参考端口的第一类比特进行掩码,得到第二五元组;
[0010] 基于所述第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特;其中,所述位图中每个比特用于表示五元组的冲突状态;
[0011] 将所述目标比特所表示的冲突状态设置为冲突,并基于所述目标比特,生成所述报文对应的目标五元组;
[0012] 在会话表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行NAT处理。
[0013] 可选地,所述基于所述第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特的步骤,包括:
[0014] 利用第一哈希算法,计算所述第二五元组对应的第一索引值,并利用所述第一索引值,从预先构建的位图中确定第一表项;其中,所述位图包括多个表项,每一表项包括多个比特,每一比特对应一个与第一类比特的位数相同的二进制字符串;
[0015] 从所述第一表项中确定目标比特;其中,所述目标比特所对应冲突状态为不冲突,且所述目标比特所对应的二进制字符串与所述参考端口未掩码部分所形成的端口,位于所述一个连续端口范围内。
[0016] 可选地,所述方法还包括:
[0017] 当检测到从所述会话表中删除所述目标五元组对应的记录内容时,确定所述目标五元组所对应的地址转换类型;
[0018] 确定所述目标五元组中与所述地址转换类型匹配的端口,并将所确定出的端口的第一类比特进行掩码,得到第三五元组;
[0019] 利用第一哈希算法,计算所述第三五元组对应的第二索引值,并利用所述第二索引值,从所述位图中确定第二表项;
[0020] 从所述第二表项中,确定对应于目标二进制字符串的比特,并将所确定的比特所表示的冲突状态设置为不冲突,所述目标二进制字符串为所述目标五元组中与所述地址转换类型匹配的端口的第一类比特。
[0021] 可选地,所述在会话表中记录所述目标五元组和所述原始五元组的步骤,包括:
[0022] 在会话表中记录所述目标五元组、所述原始五元组和本次NAT的地址转换类型。
[0023] 可选地,所述第一类比特为端口末尾的连续至少一位。
[0024] 第二方面,本申请提供了一种NAT转换装置,应用于网络地址转换NAT设备,所述装置包括:
[0025] 信息获取单元,用于从NAT资源池中获取目标IP地址以及所述目标IP地址的参考端口,所述参考端口为所述目标IP地址的一个连续端口范围中的一个端口;
[0026] 信息处理单元,用于基于所述目标IP地址、所述参考端口和所述报文的原始五元组,生成所述报文对应的第一五元组,并对所述第一五元组中的参考端口的第一类比特进行掩码,得到第二五元组;
[0027] 比特确定单元,用于基于所述第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特;其中,所述位图中每个比特用于表示五元组的冲突状态;
[0028] 五元组生成单元,用于将所述目标比特所表示的冲突状态设置为冲突,并基于所述目标比特,生成所述报文对应的目标五元组;
[0029] NAT处理单元,用于在会话表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行NAT处理。
[0030] 可选地,所述比特确定单元具体用于:
[0031] 利用第一哈希算法,计算所述第二五元组对应的第一索引值,并利用所述第一索引值,从预先构建的位图中确定第一表项;其中,所述位图包括多个表项,每一表项包括多个比特,每一比特对应一个与第一类比特的位数相同的二进制字符串;
[0032] 从所述第一表项中确定目标比特;其中,所述目标比特所对应冲突状态为不冲突,且所述目标比特所对应的二进制字符串与所述参考端口未掩码部分所形成的端口,位于所述一个连续端口范围内。
[0033] 可选地,所述装置还包括:
[0034] 类型确定单元,用于当检测到从所述会话表中删除所述目标五元组对应的记录内容时,确定所述目标五元组所对应的地址转换类型;
[0035] 端口掩码单元,用于确定所述目标五元组中与所述地址转换类型匹配的端口,并将所确定出的端口的第一类比特进行掩码,得到第三五元组;
[0036] 表项查询单元,用于利用第一哈希算法,计算所述第三五元组对应的第二索引值,并利用所述第二索引值,从所述位图中确定第二表项;
[0037] 冲突调整单元,用于从所述第二表项中,确定对应于目标二进制字符串的比特,并将所确定的比特所表示的冲突状态设置为不冲突,所述目标二进制字符串为所述目标五元组中与所述地址转换类型匹配的端口的第一类比特。
[0038] 可选地,所述NAT处理单元具体用于:
[0039] 在会话表中记录所述目标五元组、所述原始五元组和本次NAT的地址转换类型,并基于所述目标五元组对所述报文进行NAT转换。
[0040] 第三方面,本申请提供了一种NAT设备,包括:内部总线、存储器、处理器和通信接口;其中,所述处理器、所述通信接口、所述存储器通过所述内部总线完成相互间的通信;其中,所述存储器,用于存储NAT转换方法对应的机器可行指令;
[0041] 所述处理器,用于读取所述存储器上的所述机器可读指令,以执行本申请所提供的NAT转换方法。
[0042] 本申请所提供方案中,预先构建位图,该位图中每个比特用于表示五元组的冲突状态;进而,在新建流程中,通过查询位图,确定不冲突的五元组。相对于现有技术,本方案直接从位图中确定所表示的冲突状态为不冲突的目标比特,进而基于目标比特确定出不冲突的五元组,减少了对存储介质的读取次数,因此,通过本方案可以解决现有技术中的新建性能较差的问题。

附图说明

[0043] 图1是一种组网系统的结构示意图;
[0044] 图2是本申请一示例性实施例示出的一种NAT转换方法的流程图;
[0045] 图3是转换源IP地址时基于位图确定报文对应目标五元组的图表示意图;
[0046] 图4是转换源IP地址时对位图中的比特进行恢复的图表示意图;
[0047] 图5是本申请一示例性实施例示出的一种NAT转换装置的结构示意图;
[0048] 图6是本申请一示例性实施例示出的一种NAT设备的结构示意图。

具体实施方式

[0049] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0050] 在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0051] 应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0052] 为了便于方案理解,下面介绍关于NAT(Network Address Translation,网络地址转换)的相关内容。
[0053] 对于NAT而言:
[0054] 从转换模式的角度而言,NAT可分为PAT(Port Address Translation,带端口的地址转换)和NO-PAT(Not Port Address Translation,不带端口的地址转换)。其中,NO-PAT模式下,一个外网IP地址同一时间只能分给一个内外IP地址进行转换;而PAT模式下,一个外网IP地址可以同时分配给多个内网IP地址共用。本申请所出现的NAT指PAT模式。
[0055] 另外,按照不同的组网应用,NAT可以分为:入接口转换源IP地址,入接口转换目的IP地址,出接口转换源IP地址,出接口转换目的IP地址。并且,不同地址的转换过程类似。
[0056] 为了解决现有技术中新建性能差的问题,本申请提供了一种NAT转换方法、装置及NAT设备,以提高NAT转换过程的新建性能。
[0057] 下面首先对本申请所提供的一种NAT转换方法进行介绍。
[0058] 需要说明的是,本申请所提供的一种NAT转换方法应用于NAT设备,具体的,该NAT转换方法可以由NAT设备中的CPU来执行,当然,也可以由CPU与某些硬件共同执行完成,其中,该某些硬件可以为集成电路ASIC(Application Specific Integrated Circuit)/FPGA((Field-Programmable Gate Array,现场可编程门阵列)。其中,所谓的NAT设备为两个网络的边沿设备,其用于实现允许内部网络用户访问外部公共网络以及允许外部公共网络访问部分内部资源(例如内部服务器)的目的,举例而言:该NAT设备的设备类型可以为路由器,当然并不局限于此。
[0059] 另外,本申请中,预先构建位图,该位图中的每个比特用于表示五元组的冲突状态,其中,该位图存储于NAT设备的存储介质中。具体的,该位图包括多个表项,每一表项包括多个比特,每一比特对应一个与第一类比特位数相同的二进制字符串。通过利用该位图,使得区别点仅仅在于某一端口的第一类比特的多个五元组,在同一个表项中可以唯一对应到一个比特,也就是说,任一表项对应于:区别点仅仅在于某一端口的第一类比特的多个五元组。
[0060] 需要强调的是,位图中的每一表项为一行比特。并且,在初始化位图时,每一表项可以通过一个固定位数的哈希值作为索引,每一表项中的多个比特所表示的冲突状态可以均为不冲突。这样,每次新建流程确定出不冲突的目标五元组后,可以将位图中与该目标五元组对应的比特所表示的冲突状态设置为冲突。并且,在具体应用中,每个比特可以用0表示冲突状态为不冲突,1表示冲突状态为冲突,此时,初始化时位图中的比特全为0。
[0061] 为了便于理解方案,本申请示例性地给出一种适用于本申请所提供方法的组网系统,该组网系统的结构示意图可以参见图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处理。
[0062] 如图2所示,本申请所提供的一种NAT转换方法,可以包括如下步骤:
[0063] S101,从NAT资源池中获取目标IP地址以及该目标IP地址的参考端口,该参考端口为该目标IP地址的一个连续端口范围中的一个端口;
[0064] 当NAT设备接收到组网系统中的其他设备发送的报文时,如果该报文需进行NAT处理且该报文满足会话信息新建条件,则该NAT设备执行新建流程。本申请所提供方案中,该NAT设备执行新建流程时,可以从NAT资源池中获取目标IP地址以及该目标IP地址的参考端口,该参考端口为该目标IP地址的一个连续端口范围中的一个端口。并且,在选择端口时,可以利用对该报文的原始五元组哈希后的值进行选择,随机选择或顺序选择,等等。
[0065] 需要说明的是,对于一个报文而言,该报文中的原始五元组的参数类型包括:源IP地址、目的IP地址、源端口、目的端口和协议;而NAT处理时的转换需求可以为仅仅转换源IP地址或转换目的IP地址,还可以为既转换源IP地址又转换目的IP地址。因此,在获取该目标IP地址和该参考端口后,如果需要转换源IP地址,则该目标IP地址用于替换原始五元组中的源IP地址,参考端口用于替换原始五元组中的源端口;而如果需要转换目的IP地址,则该目标IP地址用于替换原始五元组中的目的IP地址,参考端口用于替换原始五元组中的目的端口。另外,需要强调的时,本申请中所述的目标IP地址为从NAT资源池中取出的一个IP地址,该目标IP地址可以作为源IP地址或目的IP地址;而该参考端口为该目标IP地址的一个连续端口范围中的一个端口,该参考端口可以作为源端口或目的端口。
[0066] 另外,本领域技术人员可以理解的是,可以基于ACL(Access Control List,访问控制列表)来确定报文是否需要进行NAT处理、NAT处理时的转换需求以及NAT处理时所使用的NAT资源池,等等。其中,NAT设备中存储有多个NAT资源池,以应对不同类型的IP地址,并且,每个NAT资源池均是IP地址及端口池。
[0067] 并且,对于采用不同数据传输协议的数据流中的报文而言,报文是否满足会话信息新建条件的具体判断方式可以不同。举例而言:对于采用TCP(Transmission Control Protocol传输控制协议)的数据流中的报文而言,报文是否满足会话信息新建条件的具体判断方式可以包括:判断报文是否为首报文,如果是,确定报文满足会话信息新建条件。对于采用UDP(User Datagram Protocol,用户数据报协议)的数据流中的报文而言,报文是否满足会话信息新建条件的具体判断方式可以包括:判断报文是否能够基于会话表直接进行NAT处理,如果不可以,确定报文满足会话信息新建条件。当然,在具体应用中,对于采用TCP协议的数据流中的报文而言,可以在判断出该报文不能基于会话表直接进行NAT处理且是首报文时,确定报文满足会话信息新建条件。
[0068] S102,基于该目标IP地址、该参考端口和该报文的原始五元组,生成该报文对应的第一五元组,并对该第一五元组中的参考端口的第一类比特进行掩码,得到第二五元组;
[0069] S103,基于该第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特;
[0070] 其中,该位图中每个比特用于表示五元组的冲突状态。
[0071] S104,将该目标比特所表示的冲突状态设置为冲突,并基于该目标比特,生成该报文对应的目标五元组;
[0072] 在获取到该目标IP地址和该参考端口后,该NAT设备可以基于该报文对应的转换需求,以该目标IP地址替换该报文的原始五元组中的源IP地址或目的IP地址,以该参考端口替换该原始五元组中的源端口或目的端口,从而生成该报文对应的第一五元组。而在得到第一五元组后,该NAT设备可以对该第一五元组中的参考端口的第一类比特进行掩码,即置0,得到第二五元组。具体的,当转换源IP地址时,对该第一五元组中的源端口的第一类比特进行掩码,而当转换目的IP地址时,对该第一五元组中的目的端口的第一类比特进行掩码。
[0073] 进而,该NAT设备可以基于该第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特。并且,在得到目标比特后,该NAT设备可以将该目标比特所表示的冲突状态设置为冲突,并基于该目标比特,生成该报文对应的目标五元组。具体的,基于该目标比特,生成该报文对应的目标五元组具体为:以该目标比特对应的二进制字符串恢复该第二五元组中被掩码的第一类比特,从而得到该报文对应的目标五元组。
[0074] 可以理解的是,端口由16位比特构成,也就是源端口和目的端口均由16位比特构成。对于第一类比特而言,比特数量和位置可以根据实际情况设定,举例而言:第一类比特可以为端口的第0比特,可以为端口的第0比特和第1比特,也可以为端口的第0比特、第1比特和第2比特,还可以端口的第14比特和第15比特,等等。为了计算简便,在具体应用中,该第一类比特为端口末尾的连续至少一位,具体的位数可以根据具体应用环境进行设定。举例而言:该第一类比特为端口的末尾的连续两位,即第0比特和第1比特,或者,该第一类比特为端口的末尾的连续三位,即第0比特、第1比特和第2比特,或者,该第一类比特为端口的末尾的连续四位,即第0比特、第1比特、第2比特和第3比特,等等。
[0075] 另外,由于该位图包括多个表项,每一表项包括多个比特,每一比特对应一个与第一类比特位数相同的二进制字符串,因此,每一表项所包括的比特的数量与第一类比特的数量相关,具体为2N,N为第一类比特的位数。需要说明的是,每一比特对应一个与第一类比特位数相同的二进制字符串,可以从前到后对应,也可以从后到前对应,举例而言:假设N为7,那么,如果从前到后对应,则一个表项从前到后的比特分别对应于:0000000、0000001、
0000010......1111111;而如果从后到前对应,则一个表项从前到后的比特分别对应于:
1111111、1111110、1111101、1111100……0000001、0000000。
[0076] 具体的,在一种具体实现方式中,所述基于该第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特的步骤,可以包括:
[0077] 利用第一哈希算法,计算该第二五元组对应的第一索引值,并利用该第一索引值,从预先构建的位图中确定第一表项;
[0078] 从该第一表项中确定目标比特;其中,该目标比特所对应冲突状态为不冲突,且该目标比特所对应的二进制字符串与该参考端口未掩码部分所形成的端口,位于该一个连续端口范围内。
[0079] 其中,通过位图中的存储内容可知,该第一表项为:第二五元组以及与第二五元组区别仅仅在于第一类比特的多个五元组所对应的表项。并且,该第一哈希算法可以包括但不局限于:MD(Message Digest Algorithm,消息摘要算法)或SHA(Secure Hash Algorithm,安全哈希算法)。
[0080] 可以理解的是,有些端口属于NAT资源池中的无效端口,而第一表项中的比特所对应的二进制字符串与该参考端口未掩码部分所形成的端口,可能属于NAT资源池中的无效端口。因此,为了避免基于该目标比特所生成的目标五元组中的端口属于无效端口,所确定出的目标比特满足如下条件:
[0081] 该目标比特所对应冲突状态为不冲突,且该目标比特所对应的二进制字符串与该参考端口未掩码部分所形成的端口,位于该一个连续端口范围内。
[0082] 需要说明的是,从该第一表项中确定目标比特的过程可以包括:从第一表项中确定冲突状态为不冲突的部分比特,然后,从部分比特中,确定出所对应的二进制字符串与该参考端口未掩码部分所形成的端口,位于该一个连续端口范围内的目标比特。或者,从该第一表项中确定目标比特的过程可以包括:从第一表项中,确定所对应的二进制字符串与该参考端口未掩码部分所形成的端口,位于该一个连续端口范围内的部分比特或全部比特,进而从所确定出的比特中,确定所表示冲突状态为不冲突的目标比特。
[0083] 另外,在具体应用中,存在对一个报文进行多次NAT处理的需求,因此,目标五元组的数量可以为多个。基于该处理思想,基于该第二五元组的哈希结果,可以从位图中确定出目标数量的目标比特。并且,ACL中可以记录该目标数量,进而可以通过查询ACL来获得该目标数量。
[0084] S105,在会话表中记录该目标五元组和该原始五元组,并基于该目标五元组对该报文进行NAT处理。
[0085] 可以理解的是,会话表分为两级表:哈希表和结果表。其中,哈希表为会话表的第一级表,用于存储五元组经过哈希计算得出的签名信息和指向结果表的指针;而结果表为会话表的第二结果表,用于存储五元组和其他转发相关的信息。
[0086] 因此,在确定出该目标五元组后,该NAT设备可以在哈希表和结果表中记录该目标五元组和该原始五元组。并且,在确定出该目标五元组后,该NAT设备可以对该报文进行NAT处理,具体可以包括:将该报文中的原始五元组替换为目标五元组。
[0087] 更进一步的,当检测到从该会话表中删除该目标五元组对应的记录内容时,该目标五元组恢复为可用状态,为了保证位图的有效性,可以对位图中相应比特所表示的冲突状态进行恢复。因此,本申请所提供了一种NAT转换方法还可以包括如下步骤:
[0088] 步骤a1,当检测到从该会话表中删除该目标五元组对应的记录内容时,确定该目标五元组所对应的地址转换类型;
[0089] 步骤a2,确定该目标五元组中与该地址转换类型匹配的端口,并将所确定出的端口的第一类比特进行掩码,得到第三五元组;
[0090] 其中,当所确定出的地址转换类型为转换源IP地址时,该目标五元组中与该地址转换类型匹配的端口为:源端口;而当所确定出的地址转换类型为转换目的IP地址时,该目标五元组中与该地址转换类型匹配的端口为:目的端口。
[0091] 步骤a3,利用第一哈希算法,计算该第三五元组对应的第二索引值,并利用该第二索引值,从该位图中确定第二表项;
[0092] 步骤a4,从该第二表项中,确定对应于目标二进制字符串的比特,并将所确定的比特所表示的冲突状态设置为不冲突,该目标二进制字符串为该目标五元组中与该地址转换类型匹配的端口的第一类比特。
[0093] 可选地,在一种具体实现方式中,NAT设备对应唯一一种地址转换类型,此时,确定该目标五元组所对应的地址转换类型具体可以为:将NAT设备对应的地址转换类型作为该目标五元组所对应的地址转换类型。
[0094] 可选地,在另一种具体实现方式中,NAT设备对应至少两种地址转换类型,此时,在该在会话表中记录该目标五元组和该原始五元组的步骤,可以包括:
[0095] 在会话表中记录该目标五元组、该原始五元组和本次NAT的地址转换类型;
[0096] 相应的,确定该目标五元组所对应的地址转换类型具体可以为:
[0097] 从会话表中,确定该目标五元组所对应的地址转换类型。
[0098] 可以理解的是,在具体应用时,该地址转换类型可以为转换源IP地址、转换目的IP地址,先转换源IP地址再转换目的IP地址,或者,先转换目的IP地址再转换源IP地址。其中,地址转换类型的类型值的具体表征方式可以存在多种。可选地,在一种具体实现方式中,地址转换类型的类型值可以由三比特组成,其中,最高比特是是否转换,低两比特是转换方式。具体的,以三比特表征地址转换类型时,类型值与地址转换类型的对应关系,参见如下表1:
[0099]
[0100] 表1
[0101] 基于上述表1,假设原始五元组(src_ip1,dst_ip1,src_port1,dst_port1,prot),当删除会话表所记录的五元组的相关信息时,恢复位图中相应比特的过程如下:
[0102] 如果类型值最高比特为0,没有地址转换,结束;
[0103] 如果类型值为110(转换源IP地址),假设目标五元组为:(src_ip2,dst_ip1,src_port2,dst_port1,prot),在比特恢复时,取(src_ip2,dst_ip1,src_port2,dst_port1,prot)作为待利用的五元组(即步骤a1-a4中的目标五元组),执行上述所给出的比特恢复过程,即步骤a1-a4;
[0104] 如果类型值为101(转换目的IP地址),假设目标五元组为:(src_ip1,dst_ip2,src_port1,dst_port2,prot),在比特恢复时,取(src_ip1,dst_ip2,src_port1,dst_port2,prot)作为待利用的五元组(即步骤a1-a4中的目标五元组),执行上述所给出的比特恢复过程,即步骤a1-a4;
[0105] 如果类型值为111(先转换源IP地址,再转换目的IP地址),假设目标五元组为:(src_ip2,dst_ip2,src_port2,dst_port2,prot),在比特恢复时,
[0106] 取(src_ip2,dst_ip1,src_port2,dst_port1,prot)作为待利用的五元组(即步骤a1-a4中的目标五元组),执行上述比特恢复过程,再取(src_ip2,dst_ip2,src_port2,dst_port2,prot)作为待利用的五元组(即步骤a1-a4中的目标五元组),执行上述所给出的比特恢复过程,即步骤a1-a4;
[0107] 如果类型值为100(先转换目的IP地址,再转换源IP地址),假设目标五元组为:(src_ip2,dst_ip2,src_port2,dst_port2,prot),在比特恢复时,取(src_ip1,dst_ip2,src_port1,dst_port2,prot)作为待利用的五元组(即步骤a1-a4中的目标五元组),执行上述比特恢复过程,再取(src_ip2,dst_ip2,src_port2,dst_port2,prot)作为待利用的五元组(即步骤a1-a4中的目标五元组),执行上述所给出的比特恢复过程,即步骤a1-a4。
[0108] 需要强调的是,上述给出的地址转换类型的类型值仅仅作为示例,并不应该构成对本申请的限定。
[0109] 本申请所提供方案中,预先构建位图,该位图中每个比特用于表示五元组的冲突状态;进而,在新建流程中,通过查询位图,确定不冲突的五元组。相对于现有技术,本方案直接从位图中确定所表示的冲突状态为不冲突的目标比特,进而基于目标比特确定出不冲突的五元组,减少了对存储介质的读取次数,因此,通过本方案可以解决现有技术中的新建性能较差的问题。
[0110] 下面结合应用实例,对本申请所提供的一种NAT转换方法进行介绍。
[0111] 该应用实例中,组网示意图如图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。
[0112] 在NAT设备的DDR中预先构建位图,该位图中的每个表项包括128个比特,每个比特对应一个7位的二进制字符串,比特的值为1时表示冲突,比特的值为0时表示不冲突。并且,初始化的位图中的比特为全0。
[0113] 如图3和图4所示,本申请所提供的一种NAT转换方法,可以包括如下步骤:
[0114] 步骤b1,NAT设备B接收到主机A至服务器C的报文后,判断出该报文需进行NAT处理且该报文满足会话信息新建条件,继续执行步骤b2;
[0115] 其中,该报文中的原始五元组为(192.168.1.2,1.1.1.2,2222,80,tcp)。其中,该原始五元组中,192.168.1.2为源IP地址,1.1.1.2为目的IP地址,2222为源端口,80为目的端口,tcp为协议。
[0116] 步骤b2,从NAT资源池中获取目标IP地址以及目标IP地址的参考端口,该参考端口为该目标IP地址的一个连续端口范围中的一个端口;
[0117] 其中,该NAT资源池为转换源IP地址所依据的资源池。
[0118] 其中,假设该目标IP地址为1.1.1.1,参考端口为2001。
[0119] 步骤b3,以目标IP地址替换报文的原始五元组中的源IP地址,以参考端口替换该原始五元组中的源端口,生成该报文对应的五元组G1,并将该第一五元组的源端口的低7位进行掩码,即填充0,得到五元组G2;
[0120] 其中,五元组G1为(1.1.1.1,1.1.1.2,2001,80,tcp);相应的,五元组G2为(1.1.1.1,1.1.1.2,Psrc1,80,tcp)。
[0121] 步骤b4,利用SHA算法,计算五元组G2对应的索引值ind1,并利用索引值ind1,从位图中确定表项M;
[0122] 步骤b5,从该表项M中,确定目标比特,其中,该目标比特所对应冲突状态为不冲突,且目标比特所对应的二进制字符串与源端口未掩码部分所形成的端口,位于一个连续端口范围内;
[0123] 步骤b6,将目标比特所表示的冲突状态设置为冲突,并基于目标比特,生成该报文对应的目标五元组;
[0124] 其中,目标五元组为(1.1.1.1,1.1.1.2,Psrc2,80,tcp),该Psrc2为以目标比特所对应二进制字符串恢复Psrc1中的低7位后所得的值。
[0125] 步骤b7,在会话表中记录目标五元组和原始五元组,并基于目标五元组对该报文进行NAT处理;
[0126] 步骤b8,当检测到从会话表中删除目标五元组对应的记录内容时,确定目标五元组所对应的地址转换类型为转换源IP地址;
[0127] 步骤b9,确定目标五元组中与地址转换类型匹配的端口为源端口,并将源端口低7位进行掩码,得到五元组G3;
[0128] 其中,五元组G3为(1.1.1.1,1.1.1.2,Psrc1,80,tcp)。
[0129] 步骤b10,利用SHA算法,计算五元组G3对应的索引值ind1,并利用该索引值ind1,从该位图中确定表项M;
[0130] 步骤b11,从该表项M中,确定对应于目标二进制字符串的比特,并将所确定的比特所表示的冲突状态设置为不冲突,该目标二进制字符串为该目标五元组中源端口的低7位的比特。
[0131] 需要说明的是,当原始五元组所对应的地址转换类型为转换目的IP地址时,NAT转换流程与上述步骤b1-b12类似,区别在于把目的端口和源端口的处理对换。
[0132] 另外,需要强调的是,图3和图4所示的位图中,通过X表示各个比特的当前值,该当前值可以为1或0。
[0133] 相对于现有技术,本方案直接从位图中确定所表示的冲突状态为不冲突的目标比特,进而基于目标比特确定出不冲突的五元组,减少了对存储介质的读取次数,因此,通过本方案可以解决现有技术中的新建性能较差的问题。
[0134] 相应于上述方法实施例,本申请还提供了一种NAT转换装置,应用于网络地址转换NAT设备,如图5所示,所述装置可以包括:
[0135] 信息获取单元510,用于从NAT资源池中获取目标IP地址以及所述目标IP地址的参考端口,所述参考端口为所述目标IP地址的一个连续端口范围中的一个端口;
[0136] 信息处理单元520,用于基于所述目标IP地址、所述参考端口和所述报文的原始五元组,生成所述报文对应的第一五元组,并对所述第一五元组中的参考端口的第一类比特进行掩码,得到第二五元组;
[0137] 比特确定单元530,用于基于所述第二五元组的哈希结果,从预先构建的位图中,确定所表示的冲突状态为不冲突的目标比特;其中,所述位图中每个比特用于表示五元组的冲突状态;
[0138] 五元组生成单元540,用于将所述目标比特所表示的冲突状态设置为冲突,并基于所述目标比特,生成所述报文对应的目标五元组;
[0139] NAT处理单元550,用于在会话表中记录所述目标五元组和所述原始五元组,并基于所述目标五元组对所述报文进行NAT处理。
[0140] 本申请所提供方案中,预先构建位图,该位图中每个比特用于表示五元组的冲突状态;进而,在新建流程中,通过查询位图,确定不冲突的五元组。相对于现有技术,本方案直接从位图中确定所表示的冲突状态为不冲突的目标比特,进而基于目标比特确定出不冲突的五元组,减少了对存储介质的读取次数,因此,通过本方案可以解决现有技术中的新建性能较差的问题。
[0141] 可选地,所述比特确定单元530具体用于:
[0142] 利用第一哈希算法,计算所述第二五元组对应的第一索引值,并利用所述第一索引值,从预先构建的位图中确定第一表项;其中,所述位图包括多个表项,每一表项包括多个比特,每一比特对应一个与第一类比特的位数相同的二进制字符串;
[0143] 从所述第一表项中确定目标比特;其中,所述目标比特所对应冲突状态为不冲突,且所述目标比特所对应的二进制字符串与所述参考端口未掩码部分所形成的端口,位于所述一个连续端口范围内。
[0144] 可选地,所述装置还包括:
[0145] 类型确定单元,用于当检测到从所述会话表中删除所述目标五元组对应的记录内容时,确定所述目标五元组所对应的地址转换类型;
[0146] 端口掩码单元,用于确定所述目标五元组中与所述地址转换类型匹配的端口,并将所确定出的端口的第一类比特进行掩码,得到第三五元组;
[0147] 表项查询单元,用于利用第一哈希算法,计算所述第三五元组对应的第二索引值,并利用所述第二索引值,从所述位图中确定第二表项;
[0148] 冲突调整单元,用于从所述第二表项中,确定对应于目标二进制字符串的比特,并将所确定的比特所表示的冲突状态设置为不冲突,所述目标二进制字符串为所述目标五元组中与所述地址转换类型匹配的端口的第一类比特。
[0149] 可选地,所述NAT处理单元550具体用于:
[0150] 在会话表中记录所述目标五元组、所述原始五元组和本次NAT的地址转换类型,并基于所述目标五元组对所述报文进行NAT转换。
[0151] 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0152] 另外,相应于上述方法实施例,本申请还提供了一种NAT设备,如图6所示,该NAT设备包括:内部总线610、存储器(memory)620、处理器(processor)630和通信接口(Communications Interface)640;其中,所述处理器630、所述通信接口640、所述存储器620通过所述内部总线610完成相互间的通信;
[0153] 其中,所述存储器620,用于存储NAT转换方法对应的机器可行指令;
[0154] 所述处理器630,用于读取所述存储器620上的所述机器可读指令,以执行本申请所提供的NAT转换方法。
[0155] 其中关于NAT转换方法的具体步骤的相关描述可以参见本申请方法实施例中的描述内容,在此不做赘述。并且,需要强调的是,该NAT设备可以为路由器,当然并不局限于此。
[0156] 其中,存储器620例如可以是非易失性存储器(non-volatile memory)。处理器630可以调用执行存储器620中的实现NAT转换方法的逻辑指令,以执行上述NAT转换方法。
[0157] 实现NAT转换方法的逻辑指令的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0158] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
[0159] 应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
[0160] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。