首页> 中国专利> PAT模式下支持多会话应用层协议的网络地址转换方法

PAT模式下支持多会话应用层协议的网络地址转换方法

摘要

本发明公开了一种PAT模式下支持多会话应用层协议的网络地址转换方法,该方法包括:首先,建立了一个二维表结构用来存放地址池分配信息;其次,分别建立了一个用于地址映射查询的哈希索引表以及冲突链表,其中哈希索引表中记录了每个会话所分配的目的IP地址信息,该信息可以指导地址池分配;最后,利用地址池和哈希索引表进行端口地址转换,可以实现来自同一主机的所有会话经过地址转换后的目的IP地址保持一致。该方法可以适用于各类多会话应用层协议的地址转换,并且这些协议在端口地址设备中无需显式配置,同时该方法中地址池的组织方法可以有效降低其所需的存储空间。

著录项

  • 公开/公告号CN1777194A

    专利类型发明专利

  • 公开/公告日2006-05-24

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN200510132106.8

  • 发明设计人 陈沫;刘大鹏;毕经平;李忠诚;

    申请日2005-12-16

  • 分类号H04L29/12(20060101);H04L12/28(20060101);H04L12/56(20060101);H04L29/06(20060101);

  • 代理机构11280 北京泛华伟业知识产权代理有限公司;

  • 代理人高存秀

  • 地址 100080 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-12-17 17:20:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-04-08

    授权

    授权

  • 2006-07-19

    实质审查的生效

    实质审查的生效

  • 2006-05-24

    公开

    公开

说明书

技术领域

本发明属于计算机网络技术领域,它是一种用于PAT模式下支持多会话应用层协议的网络地址转换方法。

背景技术

网络地址转换(NAT,Network Address Translation)是用于将互联网地址(IP地址)从一个地址域映射到另一个地址域的标准方法。利用NAT技术,可以允许采用私有地址的企业内部网络(Intranet)的主机能够透明地连接到外部的互联网(Internet)中去,而该内部主机无需拥有合法注册的IP地址。NAT技术可以用来解决目前日益严峻的IP地址不足的问题,同时,它还提供了内部网络与外部网络的隔离,隐藏并保护内部网络的主机。

互联网工程任务组(The Internet Engineering Task Force,简称IETF)规定的私有地址的范围为10/8,172.16/12,192.168/16三个部分。当采用私有地址的内部局域网想与外部Internet实现通信的时候,用户只需要在内部局域网和Internet之间设置NAT技术以及由少量合法IP地址组成的IP地址池,就可以解决大量内部主机访问外部Internet的需求。

目前,NAT技术的实现方式主要包括以下三种:静态转换、动态转换和端口地址转换。其中,静态转换就是将内部网络的私有IP地址转换为公有合法的IP地址时,IP地址的对应关系是一对一的,是不变的,即某个私有IP地址只能转换为某个固定的公有IP地址。动态转换,就是将内部网络的私有地址转换为公有地址时,IP地址对应关系是不确定的,随机的,所有被授权访问Internet的私有地址,可随机转换为地址池内的合法地址。端口地址转换(以下简称PAT,Port AddressTranslation)是同时转换数据报文的IP地址和相应端口的地址转换技术。它可以把多个内部主机发送的数据报文的源IP地址转换成为同一个外部IP地址,利用不同的TCP/UDP端口号进行区分。因此,采用PAT方式,内部网络的所有主机均可共享一个或多个(通常为多个)合法外部IP地址实现Internet的访问,从而可以最大限度地节约IP地址资源。

在PAT技术的实现中,地址池的分配及回收算法效率的高低对于基于PAT技术的网络地址转换设备(简称,PAT设备)的性能有着重要影响。此外,随着Internet以及多媒体实时技术的不断发展,出现了一些采用多个会话连接方式的应用层协议,例如RTP/RTCP协议、H.323协议、FTP协议、Sqlnet协议等。这类应用层协议通常将控制信令与实际数据分离,通过不同会话连接进行传输。为了保证一台主机可以支持多个端到端的业务流,这些应用层协议会根据IP地址将来自不同主机的信令会话和数据会话绑定到各自的业务流中去。当采用该类应用层协议的两台主机进行通信的时候,其中发送方会向接收方发出业务建立请求,该请求包括多个会话连接,如果发送方和接收方之间通信不经过PAT设备进行地址转换,那么接收方可以根据发送方的IP地址将多个会话连接归纳到一个业务流中。但是,如果通信双方经过PAT设备,那么当PAT设备对发送方所发出了的多个会话连接进行地址转换时,由于地址池分配的随机性,使得地址转换后的各个会话的源IP地址不再相同,从而导致了接收方难以将发送方的多个会话绑定到同一个业务流的问题。

发明内容

本发明的目的是解决目前PAT实现不支持一些多会话应用层协议的问题,提供一种PAT模式下支持多会话应用层协议的网络地址转换方法。

为了实现上述目的,本发明提供了一种端口地址转换模式下支持多会话应用层协议的网络地址转换方法,用于将IP地址从一个地址域映射到另一个地址域,包括:

1)、在网络地址转换设备上建立用于描述端口分配情况的地址池二维表,所述二维表的行表示一个合法的公网IP地址,所述二维表的列表示端口号;

2)、在网络地址转换设备上建立哈希索引表和冲突链表;

3)、会话数据包到达网络地址转换设备后,对此数据包的源IP地址进行哈希运算,得到的值作为哈希索引表的索引,根据哈希索引表判断所述源IP地址是否已经经过了网络地址转换,若是,执行步骤4),否则,执行步骤5);

4)、根据哈希索引表的记录,为源IP地址在所述地址池二维表查找转换后的目的IP地址,并在目的IP地址中为源IP地址分配一个未用的端口号,执行成功后返回,结束操作;

5)、利用均匀哈希算法,对会话数据包的源IP地址计算哈希值;

6)、将步骤5)得到的哈希值作为步骤1)所得到的地址池二维表的行的索引,根据索引,在地址池二维表结构中找到该行,然后判断该行对应的IP地址的已分配端口是否超过某一设定的阈值,如果没有超过此阈值,则地址池二维表的当前行所代表的IP地址就是目的IP地址,然后执行步骤9),否则,执行步骤7);

7)、将步骤5)得到的哈希值加1,继续判断地址池二维表中的下一个IP地址的已分配端口数是否超过设定的阈值,如果没有超过阀值,则该IP地址为目的IP地址,然后执行步骤9),如果超过,则对地址池二维表中的下一个IP地址的已分配端口数做同样的查找,直至完成对地址池二维表中的所有IP地址的查找,若最终没有找到满足阈值条件的IP地址,则执行步骤8);

8)、从地址池二维表中选取未分配端口号最多的IP地址作为源IP地址转换后得到的目的IP地址;

9)、从目的IP地址中选择一个未分配的端口号,在地址池二维表中标记该端口号为已分配;

10)、根据转换后得到的网络地址和端口号,填写哈希索引表和网络地址转换设备上的端口地址转换表。

上述技术方案中,所述的哈希索引表提供对端口地址转换表表项的索引,哈希索引表的表项包括:指向源IP地址的端口地址映射条目在端口地址转换表中位置的指针、源IP地址经过地址转换后得到的目的IP地址在地址池中的索引、指向冲突链表表项的指针;所述的冲突链表用来处理当哈希索引表中的表项有冲突的情况,冲突链表的表项与哈希表的表项相同。

上述技术方案中,在所述的步骤3)中,根据哈希索引表判断所述源IP地址是否已经经过了网络地址转换的实现过程包括:

3-1)、将计算得到的哈希值作为哈希表的索引,如果在哈希索引表中不存在相应的表项,则说明源IP地址没有经过端口地址映射;

3-2)、若哈希索引表中存在相应的表项,则判断哈希索引表所指向的端口地址转换表中所包含的被映射的源IP地址与当前会话数据包中包含的源IP地址是否相同,若不同,则利用哈希索引表表项中包含的指向冲突链表表项的指针继续判断下一个冲突链表中表项所指向的端口地址转换表表项是否包含当前会话发起包的源IP地址,若不包含,重复上述过程,直到遍历整个冲突链表。

上述技术方案中,在所述的步骤4)和步骤9)中,为目的IP地址选择未分配端口时采用匹配块的方式,在该方式中,对地址池中的每个IP地址的端口做分组,以32比特为一组,一组称为一个匹配块;对地址池表中的每一行,维护一个匹配块指针,用来记录当前操作的匹配块的位置;当进行端口分配时,首先在当前的匹配块内选取一个未分配的端口号,如果分配成功,则将匹配块指针加1,当下次对同一IP地址的端口作分配时,就直接在下一个匹配块中寻找未分配的端口号;如果匹配不成功,也将匹配块的指针加1,在下一个匹配块中,寻找未分配的端口号,直到找到一个未分配的端口号为止。

上述技术方案中,在所述的步骤5)中,所述的均匀哈希算法是SHA-1算法。

上述技术方案中,在所述的步骤10)中,在填写所述的哈希索引表时,根据步骤5)计算得到的哈希值,在哈希索引表中查找对应的表项,若表项为空,则在哈希索引表中分配一个条目,并在此条目中记录源IP地址经过端口地址映射后的目的IP地址在地址池中的索引,和新的端口地址映射条目在端口地址转换表中的指针;如果对应的表项非空,即在哈希索引表中已经存在了条目,则分配一个新的哈希索引表条目,记录各个字段的值,并将其链接在已有的表项的最后;在填写所述的端口地址转换表时,对新的端口地址映射,分配一个表项记录此映射条目的内容,同时在哈希索引表中保存其在端口地址转换表中的索引指针。

本发明的优点在于:

1、本发明的方法可以保证相同的源IP地址会映射到相同的目的IP地址,因此能够提供对多会话应用层协议的支持。

2、本发明的方法不需要对多会话应用层协议在网络地址转换中进行显示配置,因此具有良好的扩展性。

3、本发明方法中的在PAT模式下地址池分配方法可以有效降低地址池所需的存储空间。

附图说明

图1为本发明的PAT模式下支持多会话应用层协议的网络地址转换方法的流程图;

图2为地址池二维表、哈希索引表、冲突链表以及PAT表的示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步详细描述。

在本实施例中,假设应用端口地址转换(PAT)方式,对某一私有网络内主机运行FTP的客户端程序发出的FTP数据报文进行端口地址转换。FTP数据报文包括FTP控制报文和数据报文,在数据传输时,FTP控制报文和数据报文是分时传送的,这种传送方式使得已有的PAT模式端口地址转换方式不能保证分配给控制报文和数据报文的IP地址是相同的,而FTP协议要求客户端发出的控制报文和数据报文的源IP地址必须相同。因此,现有的PAT模式也就不能支持类似FTP的这种协议。本发明的PAT模式下支持多会话应用层协议的网络地址转换方法可以解决这一问题。

图1是本发明所述方法的实施例流程图。如图1所示,利用本发明提供的PAT模式下支持多会话应用层协议的网络地址转换方法,需要经过以下步骤:

步骤S1:在PAT设备上建立一个地址池二维表结构,如图2所示,该表的每一行为一个公网的合法IP地址,该表的列为TCP/UDP端口号。对于每个IP的每个端口,用一个比特来表示此IP的此端口是否被分配,其中,1代表已被分配,0代表未被分配。

步骤S2:在PAT设备上建立一个哈希索引表和冲突链表。哈希索引表提供对PAT表表项的索引,PAT表中的地址映射条目包含了关于源地址、端口号和分配了的地址、端口号的映射信息。哈希索引表的表项包括:用来表示源IP地址的端口地址映射条目在PAT表中位置的指针、源IP地址经过地址转换后得到的公网IP地址在地址池中的索引、指向冲突链表表项的指针。冲突链表用来处理当哈希索引表中的表项有冲突的情况,冲突链表的表项与哈希表的表项相同。由于哈希表本身的特性,多个不同的源IP地址在哈希后的值可能相同,此外,还存在同一个IP地址有不同端口号的情况,因此需要有冲突链表来表示哈希索引表中的冲突项。利用哈希索引表中的指向冲突链表表项的指针,把冲突的表项链接在已有表项的后面。

步骤S3:当有会话发起包到达时,对此会话发起数据报文的源IP地址进行哈希运算,得到的值作为哈希索引表的索引。如果在哈希索引表中不存在相应的表项,则说明包含在此会话发起包中的源IP地址没有经过PAT模式端口地址映射,否则可由索引得到哈希表表项。然后,根据哈希索引表的表项中的指向PAT表的指针来判断源IP地址是否已经经过了PAT映射,即PAT表中是否有关于此源IP的条目。如果判断发现PAT表对应表项中包含的被映射的源IP地址与此会话发起数据报文中包含的源IP地址不相同,则利用哈希索引表表项中包含的指向冲突链表表项的指针继续判断下一个冲突链表中表项所指向的PAT表表项是否包含此会话发起包的源IP地址,若不包含,重复上述过程,直到遍历整个冲突链表。

步骤S4:经过步骤S3,如果PAT表中有关于源IP的条目,且PAT表中没有该会话地址映射,则说明此源IP地址已经经过了PAT模式端口地址映射。为了支持同一应用可能存在的多个会话连接,需要对此会话发起包分配相同的公网合法IP地址,此时,利用HASH索引表对应表项中所记录的映射后的公网合法IP地址在地址池中的索引,在地址池中找到这个公网合法IP地址,并从中分配一个未用的端口号作为此数据报文的PAT模式端口地址映射后的IP的端口,执行成功后返回。如果PAT表中没有关于源IP的条目,则执行步骤S5。

在本步骤中,为公网合法IP地址选择未分配端口时采用匹配块的方式。在该方式中,对地址池中的每个IP地址的端口做分组,以32比特为一组,一组称为一个匹配块。对地址池表中的每一行,维护一个匹配块指针,用来记录当前操作的匹配块的位置。当进行端口分配时,首先在当前的匹配块内选取一个未分配的端口号,如果分配成功,则将匹配块指针加1,当下次对同一IP地址的端口作分配时,就直接在下一个匹配块中寻找未分配的端口号;如果匹配不成功,也将匹配块的指针加1,在下一个匹配块中,寻找未分配的端口号,直到找到一个未分配的端口号为止。采用这种分配方法,可以提高地址池的分配效率。采用匹配块方式选择未分配的端口号时,匹配块的大小不限定为32比特,也可以是64比特或其他数目。

步骤S5:没有在PAT表中找到包含会话发起包的源IP地址的表项,则需要对此源IP地址分配一个新的公网合法IP地址和未用端口号。首先利用均匀哈希算法,对会话发起数据报文的源IP地址计算哈希值。所述的均匀哈希算法能够将哈希的结果随机均匀分散到结果域的范围内,常用的均匀哈希算法如SHA-1算法。此处的结果域即为地址池的IP地址对应的索引号。选择这种哈希函数的目的是使不同的源IP地址均匀的映射到地址池中的地址中去,减少由于某个IP地址对应的端口被分配完所引起的额外操作,提高地址池分配方法的性能。

步骤S6:以步骤S5得到的哈希值作为步骤S1所述地址池二维表结构的行的索引,根据此索引,在地址池二维表结构中找到该行,然后判断该行对应公网合法IP地址的已分配端口是否超过某一设定的阈值,该阀值表明了该地址的剩余端口是否足够用于分配,如果没有超过此阈值,执行步骤S9,否则执行步骤S7。

在实施例中,所述的阀值设为90%,在应用中,阀值也可以设为其它值。在本步骤中,设定一个阈值的目的是对于地址池中的每个IP地址,保留足够的未用端口号,用来分配给包含同一源IP地址的数据报文进行端口地址映射之用。这样,可以保证具有相同源IP地址的数据报文会被映射到相同的公网合法IP地址上。因此,可以解决传统的PAT模式的不足,即提供对某些多会话的应用层协议的支持。

步骤S7:将哈希值加1,继续判断下一个IP地址的已分配端口数是否超过设定的阈值,如果没有找到,则对下一个IP地址继续执行步骤S6。如果轮询结束,没有找到满足阈值条件的IP地址,则执行步骤S8。

步骤S8:从IP地址池中选取未分配端口号最多的IP地址。

步骤S9:如果经过步骤S6的判断后,选择的IP地址没有超过设定阈值,则该公网IP地址就是源IP地址经过端口地址映射后的IP地址,然后再从此IP地址中选择一个未分配的端口号,在地址池中标记此端口号为已分配,并以此IP地址和端口号作为映射后的IP地址和端口号。然后执行步骤S10。

在本步骤中,从某一IP地址中选择一个未分配的端口号时也采用匹配块的方式。匹配块的具体实现方式与步骤S4相同。

步骤S10:根据步骤S5得到的哈希值,在哈希索引表中查找对应的表项,若表项为空,则在HASH索引表中分配一个条目,并在此条目中记录此源IP地址经过端口地址映射后的公网合法IP地址在地址池中的索引,和新的端口地址映射条目在PAT表中的指针;如果对应的表项非空,即在哈希索引表中已经存在了条目,则说明发生了哈希冲突,此时,分配一个新的哈希索引表条目,记录如步骤各个字段的值,并将其链接在已有的表项的最后。对于PAT表,当有新的端口地址映射时,分配一个表项记录此映射条目的内容,同时在哈希索引表中保存其在PAT表中的索引指针。上述操作执行成功后返回。

当PAT设备启动时,根据步骤S1,建立地址池二维表结构,在该二维表中,包含了所有的可用公网IP地址,以及各个IP地址相对应的端口号。根据步骤S2,建立一个哈希索引表。假设一个位于私有网络的FTP客户端的源IP地址为192.168.0.1,该客户端在发送FTP数据报文时,首先要发送一个FTP控制报文,假设该控制报文的发送端口为4096,则控制报文的完整会话地址为192.168.0.1:4096。根据步骤S3,对FTP客户端的源IP地址做哈希运算,得到的哈希值为哈希表中的索引值,假设对源IP地址192.168.0.1的哈希运算结果为3,查找哈希表的第三项,得到该项中指向PAT表的指针,由该指针判断源IP地址192.168.0.1是否已经经过了PAT映射。在私有网络的FTP客户端第一次发送FTP控制报文时,PAT表中没有关于该源IP的条目,因此,采用SHA-1算法对源IP地址192.168.0.1做哈希运算,结果为3,根据哈希值从哈希表中找到地址池二维表结构的行的索引号,根据该索引号得到地址池二维表结构的行,也就得到了公网IP地址。假设得到的公网IP地址为159.0.0.1,对该公网地址中的端口分配情况进行判断,若已分配的端口占所有端口数量的比例超过了一个预设的阀值,则地址池二维表结构中的下一个公网IP地址是否可分配端口,直到端口分配成功,如果对地址池内所有IP地址轮询结束后没有找到满足阈值的IP,则从IP地址池里面选择一个未用端口号最多的IP地址。,如果未超过阀值,从当前IP地址中分配一个未用端口。在本实施例中,假设在公网IP地址159.0.0.1中,能够找到可分配的端口,分配得到的端口号为5112,控制报文转换后的最终地址为159.0.0.1:5112。FTP客户端发送完控制报文后,还要发送数据报文。数据报文的源IP地址与控制报文相同,也是192.168.0.1,但它的端口号与控制报文的端口号不同,假设为5002,数据报文的会话地址为192.168.0.1:5002。根据步骤S3,数据报文的源IP地址显然已经经过了PAT映射,但当前地址会话却没有经过地址映射。由于哈希索引表中已经存在了对应于此源IP地址的条目,根据此条目中保存的经过PAT映射的IP地址的索引,则可以找到上次分配给FTP控制报文的IP地址159.0.0.1,在此IP地址中分配一个未用端口5160作为此FTP数据报文经过映射后的端口。数据报文转换后的最终地址为:159.0.0.1:5160。这样可以保证客户端发出的FTP控制报文和数据报文始终被分配给同一IP地址和端口映射。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号