在pat模式下同时支持一对一和多对多的地址转换方法

文档序号:7918392阅读:886来源:国知局
专利名称:在pat模式下同时支持一对一和多对多的地址转换方法
技术领域
本发明涉及网络系统中的地址转换方法。
目前,互联网地址分配组织规定以下的三类网络地址保留用做私有地址从10.0.0.0到10.255.255.255、从172.16.0.0到172.31.255.255以及从192.168.0.0到192.168.255.255。在局域网内部,使用上述范围的“私有地址”作为局域网内部的地址。通过地址转换技术,可以使这个内部局域网的主机访问Internet。所述的地址转换技术需要用户配置地址池和转换方式。地址池是由一些外部地址,即合法的Internet地址组合而成,局域网内部的数据包通过地址转换发往外部网络时,将会选择地址池中的某个地址作为转换后的源地址。这样,使局域网内部的主机不需要都拥有合法的公有IP地址就可以访问Internet,大大节约了合法的IP地址。
地址转换有NAT和端口地址转换(PAT,port address tranlation)两种方式。NAT方式即通常的一对一的地址转换,在这种方式下,每一个内部主机要占用地址池中的一个IP地址,当地址池内的地址被用尽时,就不能允许其它主机访问Internet。因此,NAT方式只允许若干个主机同时访问Internet,其数目限于地址池的大小。PAT方式的地址转换使用了TCP/UDP的端口信息,用“地址+端口”来区分局域网内部的主机对外发起的不同连接,即要转换数据包中的源地址也要转换端口信息,因此局域网内部的许多主机可以共享一个IP地址访问Internet,这样能允许更多的内部主机同时访问Internet。显然,PAT方式的地址转换只适合TCP/UDP协议。
对于有些特殊的应用协议,如NetBios(NetBIOS over TCP/IP,基于TCP/IP的网络基本输入输出系统)协议,要求在两个主机之间只能建立一对一的连接,即在PAT转换方式下,如果根据“地址+端口”来区分内部局域网的主机对外发起的不同连接将会导致访问失败。因此,在实际应用环境下,对于配置为PAT方式的地址转换,同时又要求支持类似NetBios协议的一对一的地址转换,这在现有的地址转换方法中是无法实现的。
为达到上述目的,本发明提供的在PAT模式下同时支持一对一和多对多的地址转换方法,包括步骤1确定地址转换所支持的应用协议类型和该协议所对应的地址转换应采用的散列(HASH)算法,;步骤2建立一个数组,将该数组分为两部分,分别为一对一转换部分和端口地址转换(PAT)部分,其中,一对一地址转换部分用于存储指向一对一地址转换单元的索引指针,端口地址转换部分用于存储指向端口地址转换单元的索引指针;步骤3当对传送的报文进行地址转换时,如果报文对应的应用协议需要一对一的地址转换,根据该报文应用协议所对应的散列算法在索引数组的一对一转换部分找到指向地址转换记录的索引指针,从而完成一对一的地址转换;如果报文对应的应用协议需要支持PAT方式的地址转换,根据报文协议对应的散列算法在索引数组的端口地址转换部分找到指向端口地址转换单元的索引指针,从而完成IP地址和端口的转换。
步骤2所述数组为二维数组,数组的一维下标为公网IP地址池的IP地址,另一维下标,对于数组的一对一转换部分,为支持一对一转换的协议类型;对于端口地址转换部分,为与公网端口号有一一对应关系的标识。
所述步骤3还包括根据报文的IP协议号和端口号确定应用协议类型,再根据应用协议类型确定其对应的散列算法。
当报文由私网发往Internet时,地址转换将私网IP地址转换为公网IP地址,对此,步骤3所述完成一对一的地址转换通过下述过程实现按照报文的协议类型在数组的一对一转换部分确定数组的一维,在该维的公网IP地址中,采用协议对应的散列算法确定其中的一个地址为转移后的地址。
当报文由私网发往Internet时,地址转换将私网IP地址转换为公网IP地址,对此,步骤3所述完成IP地址和端口的转换通过下述过程实现在数组的端口地址转换部分,采用协议对应的散列算法在数组的由公网IP地址标识的一维中,确定其中的一个地址为转移后的地址,再利用该散列算法在数组的另一维中确定转换后的新端口。
步骤3还包括当报文IP地址的转换是首次从私网IP地址向公网IP地址的转换时,建立该转换对应的转换单元,所述转换单元用于存储IP地址转换信息,该信息包括报文的私网IP地址、私网端口号,转换后的公网IP地址、公网端口号,报文的协议类型。
当报文IP地址的转换是从公网IP地址向私网IP地址的转换时,步骤3所述完成一对一的IP地址转换,以及完成IP地址和端口的转换通过下述过程实现根据报文采用的协议及其对应的散列算法,在数组中找到对应的数组元素,根据该数组元素存储的索引指针,找到该指针指向的转换单元,根据转换单元找到转换后的私网IP地址和私网端口号。
本发明提供的另一种在PAT模式下同时支持一对一和多对多的地址转换方法,包括步骤A1确定地址转换所支持的应用协议类型和该协议所对应的地址转换应采用的散列(HASH)算法;步骤A2建立一对一转换表和端口地址转换(PAT)表,其中,一对一地址转换表用于存储指向一对一地址转换单元的索引指针,端口地址转换表用于存储指向端口地址转换单元的索引指针;步骤A3当对传送的报文进行地址转换时,如果报文对应的应用协议需要一对一的地址转换,根据该报文应用协议所对应的散列算法在一对一转换表找到指向地址转换记录的索引指针,从而完成一对一的地址转换;如果报文对应的应用协议需要支持PAT方式的地址转换,根据报文协议对应的散列算法在端口地址转换表找到指向端口地址转换单元的索引指针,从而完成IP地址和端口的转换。
采用上述方案,与一对一IP地址转换方式相比,其优点在于
(1)节约IP地址资源的效果好。如果某一个IP地址被分配用于一对一的地址转换,则该地址不能再被复用;如果地址池资源被耗尽,由于没有IP地址可用,不能进行后续报文的地址转换。用本发明的方法,不同类型的协议的报文仍可复用该地址,即使这些协议需要一对一的地址转换,仍可成功复用;如果某种协议报文需要一对一的地址转换,地址池长度才限制该种协议的连接总数,可支持的最大连接数等于地址池长度;如果一种协议的连接总数已达到上限,并不影响其它协议的地址转换。
(2)具有更好的安全性。如果采用一对一的IP地址转换方式,某一个地址被专门分配用于一对一的地址转换,由于不区分协议类型,那么各种协议的报文均可通过此地址从外部进入内部网络。采用本发明的方法,由于不同的协议使用的散列算法各不相同,只有相应协议的报文根据其对应的散列算法才能查找到对应的地址转换单元,使报文进入内部网络。这样,PAT方式的地址转换具有更好的安全性。
(3)使用本发明的方法能适应不同协议的IP地址转换要求。


图1是本发明所述方法的实施例流程图。图1所述的方法采用与报文协议相关的散列算法,将PAT方式的地址转换和一对一的转换散列到同一个数据结构内使用了不同的散列算法,具体采用哪一种散列算法,取决于应用协议的类型。
按照图1,首先在步骤1确定地址转换所支持的协议类型和协议类型所对应的IP地址转换采用的散列(HASH)算法,以及确定IP地址转换使用的公网IP地址池和公网端口的集合;为实现步骤1,体现“应用协议的注册性”,在步骤1的实现中,在路由器上创建应用协议注册表,这是一个全局的表,其中每条记录唯一标识了一种应用协议,同时在该记录内记录的信息还包括IP协议号、知名端口号,以便根据IP协议号和知名端口号可以识别应用协议的类型。同时,在每一条记录内为每一种应用协议注册一个散列算法的标识,以便在地址转换过程中,根据协议内注册的算法标识选用不同的散列算法,确保正确查找到该应用协议的转换单元的索引指针。
在步骤2建立一个二维数组,将该数组分为两部分,分别为一对一转换部分和端口地址转换(PAT)部分,所述端口地址转换(PAT)部分即为多对多地址转换部分;其中,一对一地址转换部分用于存储指向一对一地址转换单元的索引指针,端口地址转换部分用于存储指向端口地址转换单元的索引指针,参考图2。图2中,索引表的右半部分用于索引PAT方式地址转换单元,左半部分用于索引一对一地址转换单元。图2中,数组的一维下标(行下标)为公网IP地址池的IP地址,另一维下标(列下标),对于数组的一对一转换部分,为支持一对一转换的协议类型;对于端口地址转换部分,为与公网端口号有一一对应关系的标识,该标识在本例中直接采用公网端口号。实际中,对于端口地址转换部分,上述另一维下标也可以为与公网端口号没有一一对应关系的标识,这时,采用其它方式获取公网端口号。
在PAT方式下进行一对一的地址转换,使用数组的左半部分来存储转换单元的索引指针。由于一对一的地址转换只区分地址,即只用到了索引数组的第一维Index1,而第二维Index2没有变化,因此要在注册散列算法时指定使用哪一列索引转换单元。当有来自内部主机的访问时,将在第对应的那一列内查找空的索引位置,如果找到,就创建地址转换单元完成一对一的地址转换;如果没有空的索引位置,表明地址池中的地址已经分配完,不能继续再进行一对一的地址转换。
对“地址+端口”模式的PAT转换,指向地址转换单元的指针被散列到数组的右半部分,要使用PAT模式对应的散列算法来定位二维数组的Index1和Index2,然后根据Index1获取转换后的IP地址,根据Index2计算出转换后的新端口。
在本实施例中,为一对一地址转换预留了多列索引指针的存储空间,由于一对一的地址转换只需要索引数组内的一列来索引,这样可以支持多种协议进行一对一转换。换句话说,如果有另一种协议需要一对一转换,只要为该协议再分配一列来容纳该协议的指向转换单元的指针就可以了。例如要支持ILS(Internet Locator Service,Internet定位服务)协议,那么可以把第二列分配给该协议用于索引散列表。
基于上述步骤,在步骤3当对传送的报文进行IP地址转换时,首先要根据报文的IP协议号和端口号确定协议类型,再根据协议类型确定其对应的散列算法。即,在收到IP报文后,根据报文的IP协议号和端口号在应用协议注册表查找协议的类型,如果查找到是已注册的协议,则从该协议对应记录中取得对应的散列算法标识,用该标识对应的散列算法查找二维数组中的转换单元指针;如果是未注册的协议,则使用默认的散列算法进行查找。
如果报文采用的协议支持一对一转换,在数组的一对一转换部分根据报文协议对应的散列算法找到指向一对一地址转换单元的索引指针,从而完成一对一的IP地址转换;如果报文采用的协议支持端口地址转换,在数组的端口地址转换部分根据报文协议对应的散列算法找到指向端口地址转换单元的索引指针,从而完成IP地址和端口的转换。
在上述转换过程中,当报文IP地址的转换是从私网IP地址向公网IP地址的转换时,完成一对一的IP地址转换通过下述过程实现按照报文的协议类型在数组的一对一转换部分确定数组的一维,在该维的公网IP地址中,采用协议对应的散列算法确定其中的一个地址为转移后的地址。
当报文IP地址的转换是从私网IP地址向公网IP地址的转换时,完成IP地址和端口的转换通过下述过程实现在数组的端口地址转换部分,采用协议对应的散列算法在数组的由公网IP地址标识的一维中,确定其中的一个地址为转移后的地址;再利用该散列算法在数组的另一维中确定转换后的新端口。
本例中,无论是一对一模式的IP地址转换,还是PAT模式的IP地址转换,当报文IP地址的转换是首次从私网IP地址向公网IP地址的转换时,建立该转换对应的转换单元,所述转换单元用于存储IP地址转换信息,该信息包括报文的私网IP地址、私网端口号,转换后的公网IP地址、公网端口号,报文的协议类型、转换时间等。
当报文IP地址的转换是从公网IP地址向私网IP地址的转换时,完成一对一的IP地址转换,以及完成IP地址和端口的转换通过下述过程实现根据报文采用的协议及其对应的散列算法,在数组中找到对应的数组元素,根据该数组元素存储的索引指针,找到该指针指向的转换单元,根据转换单元找到转换后的私网IP地址和私网端口号,从而完成转换。
下面通过图1所述实施例的具体地址转换应用对本发明作进一步说明。假定NAT转换WWW、TELNET、NetBios、ILS四种应用协议的报文,这四种应用协议使用的协议号和知名端口号如下WWWTCP协议,端口号80;TELNET;TCP协议,端口号23;NetBiosUDP协议,端口号137;ILSTCP协议,端口号389;通过分析这几种协议,可以确定,WWW、TELNET可以使用PAT方式的地址转换;NetBios、ILS由于协议的特殊性需要进行一对一的地址转换,无法进行PAT方式的转换(使用PAT方式的地址转换没有实际意义)。按照上述确定的内容,首先应完成下述三个步骤的工作(1)注册应用协议。在路由器启动时,创建“应用协议注册表”,这是一个全局的表,其中每个注册表项唯一标识了一种应用协议。在该表项内记录了协议号、知名端口号及该协议使用的地址转换散列算法(HASH算法);
(2)配置地址转换。配置地址转换将接入列表(access-list)与地址池相关联,确定了有哪些合法的公网地址可供地址转换使用,这时创建二维索引数组。
(3)对报文进行地址转换。根据报文的转发方向,地址转换可分为从内部私网向外部公网转发的流程和从外部公网向内部私网转发的流程,这两个地址转换过程是对称的。
当数据报文由私网向公网转发时步骤21地址转换模块收到IP层转来的报文后,根据访问控制列表判断是否要对该报文进行地址转换,如果不需要转换就直接转发,如果需要转换则进入步骤22;步骤22查找应用协议注册表。对于内部主机访问Internet服务器,只需要根据IP协议号和目的端口查找应用协议注册表项。例如如果是WWW报文,取报文内的IP协议号和目的端口号(应为知名端口80),在协议注册表内进行查找。
步骤23确定散列算法。在步骤22内查找到应用协议的注册表项,该表项内记录了此种协议应使用的散列算法标识。例如WWW协议的散列算法标识为PAT方式的地址转换,而NetBios协议的散列算法标识为NAT NetBios(该散列算法标识指定了使用一对一方式的地址转换,且定义了散列位置,假定指定二维数组中的第一列来存储),ILS协议的散列算法标识为NAT_ILS(也指定了一对一方式的地址转换,指定二维数组的第二列来存储),如果没有查找到协议注册表项,使用默认的散列算法,实际使用了PAT散列。换句话说,可以不注册WWW协议,最后使用的散列算法仍然是PAT方式。
步骤24查找转换单元。取报文的源地址(端口)信息,根据步骤23中确定的散列算法标识去查找地址转换单元,如果未找到,就根据配置的地址转换创建一个新的地址转换单元,创建时也使用了步骤23确定的散列算法标识。该地址转换单元内记录了私有的地址(端口)和合法的Internet地址(端口)信息。
步骤25根据地址转换单元记录的信息,将报文的源地址转换为合法的Internet地址。
当数据报文由公网向私网转发的流程时步骤31查找应用协议注册表。由于报文是从Internet服务器发往内部主机的,报文的源端口应为知名端口,取报文IP协议号和源端口查找应用协议注册表项。
步骤32确定散列算法。
步骤33取根据报文的目的地址、目的端口和上一步确定的地址转换散列算法到地址转换单元里面查找地址转换记录,如果没有相应的地址转换散列表,则不进行NAT转换,将报文直接转发。
步骤34如果查找到了相应的地址转换单元,根据地址转换单元记录的信息,将报文的目的地址和端口转换为私网地址。
需要说明的是,在本发明的具体实施中,所述二维数组也可以用两张表代替,在基于上二表的在PAT模式下同时支持一对一和多对多的地址转换方法中,其包括的内容为
首先确定地址转换所支持的应用协议类型和该协议所对应的地址转换应采用的散列(HASH)算法;然后建立一对一转换表和端口地址转换(PAT)表,其中,一对一地址转换表用于存储指向一对一地址转换单元的索引指针,端口地址转换表用于存储指向端口地址转换单元的索引指针;这样,当对传送的报文进行地址转换时,根据报文的IP协议号和端口号确定应用协议类型,再根据应用协议类型确定其对应的散列算法,如果报文对应的应用协议需要一对一的地址转换,根据该报文应用协议所对应的散列算法在一对一转换表找到指向地址转换记录的索引指针,从而完成一对一的地址转换;如果报文对应的应用协议需要支持PAT方式的地址转换,根据报文协议对应的散列算法在端口地址转换表找到指向端口地址转换单元的索引指针,从而完成IP地址和端口的转换。
对于上述一对一转换表来说,该表的一维下标为公网IP地址池的IP地址,另一维下标,为支持一对一转换的协议类型;对于端口地址转换表,该表的一维下标为公网IP地址池的IP地址,另一维下标为公网端口号,当然也可以为与公网端口号有一一对应关系的标识或者其它与公网端口号没有一一对应关系的标识,在该标识与公网端口号没有关系时,采用其它的方法获取公网端口号。
权利要求
1.在PAT模式下同时支持一对一和多对多的地址转换方法,包括步骤1确定地址转换所支持的应用协议类型和该协议所对应的地址转换应采用的散列(HASH)算法;步骤2建立一个数组,将该数组分为两部分,分别为一对一转换部分和端口地址转换(PAT)部分,其中,一对一地址转换部分用于存储指向一对一地址转换单元的索引指针,端口地址转换部分用于存储指向端口地址转换单元的索引指针;步骤3当对传送的报文进行地址转换时,如果报文对应的应用协议需要一对一的地址转换,根据该报文应用协议所对应的散列算法在索引数组的一对一转换部分找到指向地址转换记录的索引指针,从而完成一对一的地址转换;如果报文对应的应用协议需要支持PAT方式的地址转换,根据报文协议对应的散列算法在索引数组的端口地址转换部分找到指向端口地址转换单元的索引指针,从而完成IP地址和端口的转换。
2.根据权利要求1所述的同时支持一对一和多对多的地址转换方法,其特征在于步骤2所述数组为二维数组,数组的一维下标为公网IP地址池的IP地址,另一维下标,对于数组的一对一转换部分,为支持一对一转换的协议类型;对于端口地址转换部分,为与公网端口号有一一对应关系的标识。
3.根据权利要求2所述的同时支持一对一和多对多的地址转换方法,其特征在于所述步骤3还包括根据报文的IP协议号和端口号确定应用协议类型,再根据应用协议类型确定其对应的散列算法。
4.根据权利要求3所述的同时支持一对一和多对多的地址转换方法,其特征在于,当报文由私网发往Internet时,地址转换将私网IP地址转换为公网IP地址,对此,步骤3所述完成一对一的地址转换通过下述过程实现按照报文的协议类型在数组的一对一转换部分确定数组的一维,在该维的公网IP地址中,采用协议对应的散列算法确定其中的一个地址为转移后的地址。
5.根据权利要求3所述的同时支持一对一和多对多的地址转换方法,其特征在于,当报文IP地址的转换是从私网IP地址向公网IP地址的转换时,步骤3所述完成IP地址和端口的转换通过下述过程实现在数组的端口地址转换部分,采用协议对应的散列算法在数组的由公网IP地址标识的一维中,确定其中的一个地址为转换后的地址,再利用该散列算法在数组的另一维中确定转换后的新端口。
6.根据权利要求4或5所述的同时支持一对一和多对多的地址转换方法,其特征在于步骤3还包括当报文IP地址的转换是首次从私网IP地址向公网IP地址的转换时,建立该转换对应的转换单元,所述转换单元用于存储IP地址转换信息,该信息包括报文的私网IP地址、私网端口号,转换后的公网IP地址、公网端口号,报文的协议类型。
7.根据权利要求6所述的同时支持一对一和多对多的地址转换方法,其特征在于,当报文IP地址的转换是从公网IP地址向私网IP地址的转换时,步骤3所述完成一对一的IP地址转换,以及完成IP地址和端口的转换通过下述过程实现根据报文采用的协议及其对应的散列算法,在数组中找到对应的数组元素,根据该数组元素存储的索引指针,找到该指针指向的转换单元,根据转换单元找到转换后的私网IP地址和私网端口号。
8.在PAT模式下同时支持一对一和多对多的地址转换方法,包括步骤A1确定地址转换所支持的应用协议类型和该协议所对应的地址转换应采用的散列(HASH)算法;步骤A2建立一对一转换表和端口地址转换(PAT)表,其中,一对一地址转换表用于存储指向一对一地址转换单元的索引指针,端口地址转换表用于存储指向端口地址转换单元的索引指针;步骤A3当对传送的报文进行地址转换时,如果报文对应的应用协议需要一对一的地址转换,根据该报文应用协议所对应的散列算法在一对一转换表找到指向地址转换记录的索引指针,从而完成一对一的地址转换;如果报文对应的应用协议需要支持PAT方式的地址转换,根据报文协议对应的散列算法在端口地址转换表找到指向端口地址转换单元的索引指针,从而完成IP地址和端口的转换。
9.根据权利要求8所述的同时支持一对一和多对多的地址转换方法,其特征在于对于一对一转换表,该表的一维下标为公网IP地址池的IP地址,另一维下标,为支持一对一转换的协议类型;对于端口地址转换表,该表的一维下标为公网IP地址池的IP地址,为与公网端口号有一一对应关系的标识。
10.根据权利要求9所述的同时支持一对一和多对多的地址转换方法,其特征在于所述步骤A3还包括根据报文的IP协议号和端口号确定应用协议类型,再根据应用协议类型确定其对应的散列算法。
全文摘要
本发明公开了一种在PAT模式下同时支持一对一和多对多的地址转换方法,该方法首先确定IP地址转换所支持的协议类型及其对应的IP地址转换采用的散列算法,以及确定IP地址转换使用的公网IP地址池和公网端口的集合;其次,建立一个用于存储分别指向一对一地址转换单元和端口地址转换单元的索引指针的二维数组,这样,当对传送的报文进行IP地址转换时,根据报文采用的协议对应的散列算法在上述数组中找到指向相应地址转换单元的索引指针,从而完成IP地址转换;上述方案能适应不同协议的地址转换要求。
文档编号H04L12/28GK1477825SQ02128928
公开日2004年2月25日 申请日期2002年8月21日 优先权日2002年8月21日
发明者王宁, 瞿祥明, 于光辉, 李健, 王 宁 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1