一种网络地址转换方法及装置与流程

文档序号:21182334发布日期:2020-06-20 17:53阅读:153来源:国知局
一种网络地址转换方法及装置与流程

本申请涉及计算机网络领域,尤其涉及一种网络地址转换方法及装置。



背景技术:

随着计算机网络的不断发展,ipv4地址逐渐耗竭,网络地址转换(networkaddresstranslation,nat)得到了广泛的应用。具体而言,nat能够使多个私有ip地址共用一个公有ip地址,一定程度上能够缓解ipv4地址耗竭的情况。

在nat中,人们通常采用对转换前的ip和端口号进行散列(hash)的方法确定转换后的ip和端口号;采用这种方式,虽然具有转换前后的地址之间的关系可以预知的优点,但可能存在地址池中部分ip、部分端口一直未被使用的情况,导致地址资源浪费的问题。



技术实现要素:

有鉴于此,本申请公开了一种网络地址转换方法和装置。

根据本申请实施例的第一方面,公开了一种网络地址转换方法,应用于网络设备,所述网络设备预设有转换表,所述转换表中包括至少一个转换表项,其中,所述转换表项包括转换前ip地址,转换后ip地址,转换后端口块,以及指示所述转换后端口块中各端口被占用情况的占用标记;

其中,所述转换后端口块为从所述转换后ip地址对应的可用端口的集合中划分出的若干个可用端口的集合;

所述方法包括:

从需要进行网络地址转换的报文中,提取所述报文的源ip地址;

在所述转换表中查询与所述源ip地址对应的目标转换表项;

从所述目标转换表项中获取对应的转换后ip地址,并将所述报文中的源ip地址替换为所述转换后ip地址;

从所述目标转换表项中读取占用标记,以从对应的转换后端口块中,确定任一未被占用的端口为目标端口,进一步将所述报文中的源端口号替换为所述目标端口的端口号,并更新所述占用标记,以指示所述目标端口已被占用。

根据本申请实施例的第二方面,公开了一种网络地址转换装置,应用于网络设备,所述网络设备预设有转换表,所述转换表中包括至少一个转换表项,其中,所述转换表项包括转换前ip地址,转换后ip地址,转换后端口块,以及指示所述转换后端口块中各端口被占用情况的占用标记;

其中,所述转换后端口块为从所述转换后ip地址对应的可用端口的集合中划分出的若干个可用端口的集合;

所述装置包括:

源ip地址提取模块,从需要进行网络地址转换的报文中,提取所述报文的源ip地址;

转换表查询模块,在所述转换表中查询与所述源ip地址对应的目标转换表项;

ip地址转换模块,从所述目标转换表项中获取对应的转换后ip地址,并将所述报文中的源ip地址替换为所述转换后ip地址;

端口号转换模块,从所述目标转换表项中读取占用标记,以从对应的转换后端口块中,确定任一未被占用的端口为目标端口,进一步将所述报文中的源端口号替换为所述目标端口的端口号,并更新所述占用标记,以指示所述目标端口已被占用。

以上技术方案中,一方面,由于转换后ip地址对应的可用的端口的集合预先被划分成了若干端口块,并通过转换表管理端口块的分配关系,因此可以更灵活地完成对转换后ip地址资源的复用;另一方面,由于转换表项中的占用标记能够指示对应端口块中各端口被占用的情况,因此利用端口块内的端口时可以减少资源浪费。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书文本一同用于解释原理。

图1是本说明书所述端口块的划分方式示例图;

图2是本说明书所述网络地址转换方法的流程示例图;

图3是本说明书所述转换表的结构示例图;

图4是本说明书所述网络地址转换装置的结构示例图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的系统和方法的例子。

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

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

随着计算机网络的不断发展,互联网通信协议第四版(internetprotocolversion4,ipv4)地址逐渐耗竭,网络地址转换(networkaddresstranslation,nat)得到了广泛的应用。具体而言,nat能够使多个私有ip地址共用一个共有ip地址,一定程度上能够缓解ipv4地址耗竭的情况。

在相关技术中,需要进行nat时,人们通常采用对转换前的ip和端口号进行散列(hash)的方法确定转换后的ip和端口号;采用这种方式,虽然具有转换前后的地址之间的关系可以预知的优点,但可能存在地址池中部分ip、部分端口一直未被使用的情况,导致地址资源浪费的问题。

基于此,本说明书提出一种预先从转换后ip地址对应的可用端口的集合中划分出端口块,并通过查询预先维护的转换表,将转换前ip地址转换到与该端口块对应的转换后ip地址,将转换前端口号转换到该端口块中的端口号的技术方案。

在实现时,通过查表的方式即可确定转换前ip地址与转换后端口块、转换后ip地址之间的对应关系,因此可以只使用转换后ip地址对应的全部可用端口中,被划分出的一部分(即转换后端口块)完成上述网络地址转换。

在以上技术方案中,一方面,由于端口块仅是转换后ip地址对应的可用端口集合中的一部分,因此多个转换前ip地址可以映射到同一个转换后ip地址的不同端口块上,实现转换后ip地址的复用,节约了转换后ip地址的资源;

另一方面,由于转换表项中包含指示对应转换后端口块占用情况的占用标记,因此利用端口块内的端口时,可以减少资源浪费。

下面通过具体实施例并结合具体的应用场景对本申请进行描述。

在本说明书中,可以从转换后ip地址对应的可用端口的集合中划分出若干个可用端口,组成一个转换后端口块;上述可用端口,指可以用于网络地址转换的端口;例如,某转换后ip地址对应的端口中,20000端口到30000端口被设定为可疑用于网络地址转换的端口,因此可以将上述20000端口到30000端口视为可用端口;又例如,由于部分端口号通常已经习惯约定了特定用途,例如23端口常用于telnet服务,因此在划分端口块时,可以不将此类已经习惯约定了特定用途的端口号视为可用端口。

在划分完成之后,被划分出的若干端口块以视为组成了一个端口块池,该池中的端口块即可作为资源被动态分配给各个网络地址转换过程使用;可以理解的是,对于对于某些需要用到的端口的数量超过一个端口块的ip地址,可以为其分配多个可用端口块,以满足其需求。

可以理解的是,上述划分端口块的具体方式,诸如划分的长度为预设的固定值或者是可变值;划分的动作是预先全部完成,还是根据需求进行动态划分;所指的端口块由端口号连续的若干端口组成,还是由端口号存在间隔的若干段口组成,等等;诸如此类,具体的划分方式本领域技术人员可以根据具体需求进行设计,本说明书无需进行具体限定。

在示出的一种实施方式中,上述转换后端口块可以为上述转换后ip地址对应的可用端口的集合按预设的长度划分得到;例如,可以预设上述长度为100,按端口号的顺序将上述可用端口的集合划分出若干个长度为100的端口块。

请参考图1,图1是本说明书所述端口块的划分方式示例图;在本例中,诸如ip地址a、ip地址b、ip地址c的转换后ip对应的若干可用端口,都被预先以100的预设长度划分成了若干端口块;以ip地址a为例,其对应的可用端口为100到x+99端口,在该例中按100的步长将其划分成了100到199、200到299等x个端口块。

采用上述固定端口块长度、预先完成划分的方案划分端口块,由于端口块实际采用的长度可以由技术人员自定义设计,因此可以在保证端口分配的灵活性的同时,无需每次分配端口时都重新划分端口块,提高端口分配的效率。

请参考图2,图2是本申请一实施例提供的一种网络地址转换方法的流程示例图;该方法应用于网络设备,该网络设备预设有转换表,该转换表中包括至少一个转换表项,其中,该转换表项包括转换前ip地址,转换后ip地址,转换后端口块,以及指示该转换后端口块中各端口被占用情况的占用标记;

其中,所述转换后端口块为从所述转换后ip地址对应的可用端口的集合中划分出的若干个可用端口的集合;该方法执行以下步骤:

s201,从需要进行网络地址转换的报文中,提取所述报文的源ip地址;

s202,在所述转换表中查询与所述源ip地址对应的目标转换表项;

s203,从所述目标转换表项中获取对应的转换后ip地址,并将所述报文中的源ip地址替换为所述转换后ip地址;

s204,从所述目标转换表项中读取占用标记,以从对应的转换后端口块中,确定任一未被占用的端口为目标端口,进一步将所述报文中的源端口号替换为所述目标端口的端口号,并更新所述占用标记,以指示所述目标端口已被占用。

上述网络设备,包括任意具有网络地址转换职能的网络设备,例如nat路由器、nat网关等等;硬件实现上,可以采用fpga(fieldprogrammablegatearray,现场可编程门阵列),也可以采用纯cpu,作为处理器的硬件架构,或者采用fpga与cpu相结合的硬件架构,本说明书无需进行具体限定。

在本说明书中,上述网络设备中可以预设转换表,用于存储网络地址转换的相关信息;具体而言,该转换表中的转换表项可以存储转换前ip地址,转换后ip地址,转换后端口块,以及指示该转换后端口块中各端口被占用情况的占用标记;该表项所记录的信息,可以被解释为,命中转换前ip地址字段的ip地址,在经过上述网络地址转换过程后,将会被转换为上述转换表项中的转换后ip地址,并且,转换前的端口号将会被转换为上述转换表项中的转换后端口块字段所指示的,且经上述占用标记确定未被占用的端口。

上述转换后的端口块,特指对应的转换后ip地址所对应的可用端口的集合中所划分出的若干可用端口的集合,具体划分方式可以参见图1以及对应的前文说明部分,本处不再进行赘述。

上述需要进行网络地址转换的报文,可以是通过网络接收到的报文,例如内网客户端向外网发送的报文,也可以是从预置的存储空间中读取的报文,例如未分配外网地址的,被预先设置的定时发送报文;因此,本申请对其来源无需进行具体限定。

在本说明书中,上述需要进行网络地址转换的报文,通常具有五元组,该五元组由源ip地址、源端口号、协议号、目的ip地址、目的端口号构成;上述网络地址转换,主要包括源ip地址的转换和源端口号的转换;在本方案中,源ip地址可以作为查询上述转换表的信息,因此,上述网络设备可以从需要进行网络地址转换的报文中,提取该报文的源ip地址;其中具体提取源ip地址的方式,本领域技术人员亦可以根据相关技术和具体需求自行确定,本说明书无需进行详细限定。

在本说明书中,上述网络设备在提取到上述源ip地址后,即可在预设的转换表中,查询与该源ip地址相对应的转换表项,并记为目标转换表项。

请参见图3,图3即为本申请所述转换表的一种实现形式,其中包含若干条转换表项,每一条转换表项中均存储有转换前ip地址,转换后ip地址,转换后端口块,以及占用标记;假设上述提取源ip地址过程中获得的源ip地址为ip地址y,则可以命中上述示例中转换前ip地址为y的转换表项,进而将该转换表项确定为目标转换表项。

可以理解的是,假设该源ip地址命中的转换表项不止一个,这意味着该ip地址被分配了不止一个端口块用于网络地址转换,因此确定目标转换表项时,可以从所包含的端口块未被全部占用的转换表项中任选一者作为目标转换表项,或者,由本领域技术人员自行设定其他在上述情景下的选择策略,本说明书无需进行具体限定。

在本说明书中,可以根据上述源ip地址所命中的目标转换表项中记载的转换后ip地址信息,完成源ip地址的转换过程;具体而言,可以将上述报文中的源ip地址,替换为目标转换表项中的转换后ip地址,即可完成对于该报文中源ip地址的转换;

例如,继续以上述源ip地址为ip地址y的报文为例,上述网络设备即可将该报文中的源ip地址字段替换为对应的转换后ip地址“ip地址a”,即完成了该报文的源ip地址的转换。

在本说明书中,上述网络设备还可以根据上述源ip地址所命中的目标转换表项中记载的转换后端口块,以及占用标记信息,完成源端口号的转换过程;具体而言,可以基于上述占用标记,确定对应的转换后端口块中任一未被占用的端口作为目标端口,并将上述报文中的源端口号,替换为该目标端口的端口号,即可完成该报文的源端口号的转换;由于占用标记需要指示对应端口块中的各个端口被占用的情况,因此,在确定了上述转换关系后,需要更新该占用标记,以指示该目标端口已经被占用;

举例而言,请参见图3所示的转换表,并继续以上述源ip地址为ip地址y为例,由于对应的端口块为端口块a2,并从占用标记中得知n端口已经被占用,因此,可以从端口块a2中选择n端口以外的任一端口作为目标端口,并将上述报文中的源端口号替换为该目标端口的端口号,并进一步更新该占用标记,以指示该目标端口亦已被占用。

可以理解的是,上述占用标记可以有多种实现方式,例如直接记录下被占用的端口的端口号,或者针对对应的端口块中的端口号的被占用情况进行编码表示等等;对应的,根据该占用标记确定目标端口的过程也可以有所不同,例如按照预设的顺序扫描端口,以寻找未被占用的端口作为目标端口等等,本领域技术人员可以根据具体需求以及相关技术文献确定实现方式,本说明书无需进行具体限定。

在示出的一种实施方式中,上述占用标记可以指示对应转换后端口块中最新一个被占用的端口的占用标记,对应的,确定目标端口的方式可以为首先根据上述占用标记确定最新被占用的端口,在取最新被占用的端口后的第n个端口为目标端口,其中,n为预设的正整数,作为端口分配间距;

例如,上述n为1的时候,即意味着按照端口号从小到大的顺序逐次确定目标端口,以上述转换后端口块a2为例,占用标记指示最新被占用的端口为n端口,那么意味着n以及之前的端口都已经被占用,因此,可以确定n+1端口为目标端口,并将上述报文中的源端口号替换为该目标端口的端口号;之后,可以将上述占用标记指示的最新被占用的端口修改为该目标端口,即n+1端口。

在本说明书中,可能出现无法查询到对应于上述提取到的源ip地址的转换表项的情况,说明该源ip地址还未曾确立过网络地址转换关系,因此转换表中没有对应的记录;对此,可以为该源ip地址另行分配对应的转换关系。

在示出的一种实施方式中,如果上述预设的转换表中,不存在与源ip地址对应的目标转换表项,则可以基于任一可用端口块,以及上述可用端口块对应的ip地址,构建与上述源ip地址对应的目标转换表项;具体而言,可以从上述由可用端口块组成的端口块池中,任取一个可用端口块,并将该可用端口块对应的ip地址作为转换后ip地址,构建与该源ip地址对应的目标转换表项;可以理解的是,由于该源ip地址是首个使用该新建的转换表项中的转换后端口块的,因此上述转换表项中的占用标记可以指示对应的转换后端口块处于全部未被占用的状态。

此外,假如出现找到目标转换表项,但该目标转换表项中的转换后端口块已经被全部占用的情况,亦可以通过与上述未找到目标转换表项同样的操作,为该源ip地址另行分配对应的转换关系。

在本说明书中,所述网络设备中可以针对该转换表设立回收机制,以回收不再被占用的端口块资源;具体而言,可以根据端口占用的时间、会话数量、会话优先级等等信息进行具体设计,本领域技术人员可以根据具体需求自行确定,本说明书无需进行具体限定。

在示出的一种实施方式中,上述转换表项中还可以包括用于指示引用该转换表项的网络会话的数目的引用计数,对应的,在该引用计数下降为0的时候,即意味着没有网络会话需要引用该转换表项,因此可以将该转换表项删除;可以理解的是,转换表项删除后,对应的端口块亦可以恢复至可用状态,并回归至上述可用端口块池。

在本说明书中,上述网络地址转换的规则可以视为一套网络地址转换策略,而该网络设备中可以配置多套网络地址转换策略,并在对应的转换表中记录网络地址转换策略的标识;具体而言,该标识可以指向同一个网络地址转换策略的不同版本,也可以直接指向不同的网络地址转换策略;

举例而言,假设该网络设备中配置了两套网络地址转换策略k1和k2,其中,网络地址转换策略k1又分为k1-a版本与k1-b版本;在网络地址转换策略k1-a、k1-b、k2中,转换前ip地址对应的转换后ip地址都有可能并不相同;因此,在执行网络地址转换时,需要根据用户的指令,或者预设的选择逻辑来确定需要采用的网络地址转换策略,并选择包含了对应的网络地址转换策略的标识的转换表进行网络地址转换操作。

上述内容即为本申请针对所述网络地址转换方法的全部实施例。本申请还提供了对应的网络地址转换装置的实施例如下:

请参考图4,图4是本申请一实施例提供的一种网络地址转换装置的结构示例图;该装置应用于网络设备,上述网络设备预设有转换表,上述转换表中包括至少一个转换表项,其中,上述转换表项包括转换前ip地址,转换后ip地址,转换后端口块,以及指示上述转换后端口块中各端口被占用情况的占用标记;

其中,上述转换后端口块为从上述转换后ip地址对应的可用端口的集合中划分出的若干个可用端口的集合;

该装置包括:

源ip地址提取模块401,从需要进行网络地址转换的报文中,提取所述报文的源ip地址;

转换表查询模块402,在所述转换表中查询与所述源ip地址对应的目标转换表项;

ip地址转换模块403,从所述目标转换表项中获取对应的转换后ip地址,并将所述报文中的源ip地址替换为所述转换后ip地址;

端口号转换模块404,从所述目标转换表项中读取占用标记,以从对应的转换后端口块中,确定任一未被占用的端口为目标端口,进一步将所述报文中的源端口号替换为所述目标端口的端口号,并更新所述占用标记,以指示所述目标端口已被占用。

在本说明书中,可以从转换后ip地址对应的可用端口的集合中划分出若干个可用端口,组成一个转换后端口块;在划分完成之后,被划分出的若干端口块以视为组成了一个端口块池,该池中的端口块即可作为资源被动态分配给各个网络地址转换过程使用;上述划分的具体方式,本领域技术人员可以根据具体需求进行设计,本说明书无需进行具体限定。

在示出的一种实施方式中,上述转换后端口块可以为上述转换后ip地址对应的可用端口的集合按预设的长度划分得到;例如,可以预设上述长度为100,按端口号的顺序将上述可用端口的集合划分出若干个长度为100的端口块。

在本说明书中,上述端口号转换模块404还可以根据上述源ip地址所命中的目标转换表项中记载的转换后端口块,以及占用标记信息,完成源端口号的转换过程;具体而言,可以基于上述占用标记,确定对应的转换后端口块中任一未被占用的端口作为目标端口,并将上述报文中的源端口号,替换为该目标端口的端口号,即可完成该报文的源端口号的转换;由于占用标记需要指示对应端口块中的各个端口被占用的情况,因此,在确定了上述转换关系后,需要更新该占用标记,以指示该目标端口已经被占用。

在示出的一种实施方式中,上述占用标记可以指示对应转换后端口块中最新一个被占用的端口的占用标记,对应的,端口号转换模块404可以首先根据该占用标记确定最新被占用的端口,并按端口号的顺序,取该最新被占用的端口后第n个端口为目标端口,其中,n为预设的正整数,作为端口分配间距。

在示出的一种实施方式中,上述装置还可以包括转换表项新建模块;如果上述预设的转换表中,不存在与源ip地址对应的目标转换表项,则转换表项新建模块可以基于任一可用端口块,以及上述可用端口块对应的ip地址,构建与上述源ip地址对应的目标转换表项;具体而言,可以从上述由可用端口块组成的端口块池中,任取一个可用端口块,并将该可用端口块对应的ip地址作为转换后ip地址,构建与该源ip地址对应的目标转换表项;可以理解的是,由于该源ip地址是首个使用该新建的转换表项中的转换后端口块的,因此上述转换表项中的占用标记可以指示对应的转换后端口块处于全部未被占用的状态。

在示出的一种实施方式中,上述装置还可以包括转换表项删除模块,上述转换表项中还可以包括用于指示引用该转换表项的网络会话的数目的引用计数;在该引用计数下降为0的情况下,即意味着没有网络会话需要引用该转换表项,转换表项删除模块可以将该转换表项删除;可以理解的是,转换表项被删除后,对应的端口块亦可以恢复至可用状态,并回归至上述可用端口块池。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

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