一种网络地址端口转换方法和装置的制作方法

文档序号:7696038阅读:100来源:国知局

专利名称::一种网络地址端口转换方法和装置的制作方法
技术领域
:本发明涉及网络通信
技术领域
,尤指一种网络地址端口转换方法和装置。
背景技术
:网络地址转换(NAT,NetworkAddressTranslation)协议实现私有网络中的IP地址与公网中的IP地址之间的相互转换,且私网地址和公网地址一一对应。网络地址端口转换(NAPT,NetworkAddressPortTranslation)是NAT的一种变形,允许多个私网地址映射到同一个公网地址上,也可称为"多对一地址转换"或"地址复用"。NAPT同时映射IP地址和端口号,来自不同私网地址的数据报的源地址可以映射到同一公网地址,但这些来自不同私网地址的数据报的端口号被转换为该同一公网地址的不同端口号,因而能共享同一公网地址。即NAPT实现"私网地址+私网端口"与"公网地址+公网端口,,之间的转换。因此,在NAPT中除了公网地址的管理以外,公网端口的管理也至关重要,关系到"多对一地址转换"中"多"到底是多少。目前,NAPT的端口管理采用端口队列,其中,端口队列的起始端口和终止端口可支持产品定制。当报文做NAPT处理时,首先分配得到的公网地址作为NAPT处理后的源IP地址,然后获取该公网地址端口队列中闲置的端口作为NAPT处理后的源端口,且一个公网地址和其端口队列中任一个端口的组合不能被重复使用。在这种方案中,由于端口队列的长度有限,因此一个公网地址可用于转换的私网地址的数量有限,在实际使用时很容易因端口资源耗尽而导致报文被丢弃。下面举例说明该问题。设对于一个私有网络,其用于网络地址转换的公网地址只有一个,这里用IP—GLOBAL表示该公网地址,且IP—GLOBAL的端口队列中的端口号范围为1024-65535。由于一个公网地址和其端口队列中任一个端口的组合不能被重复使用,因此IP—GLOBAL只能同时供该私网内的65535-1024+1=64512条流使用。参见表1,私有网络中不同流的报文依次被发送至NAPT转换设备进行网络地址端口转换,且所发送报文的源IP地址依次递增,源端口号不变,协议均为TCP协议,目的IP地址和端口不变,则经过NAPT转换后的源IP地址和源端口号如表1所示<table>tableseeoriginaldocumentpage8</column></row><table>表1在表1中,前64512条流的报文耗尽了IP—GLOBAL的端口队列中的端口号,因此当第64513条流将过NAT转换设备时,由于IP—GLOBAL的端口队列中的端口号都已被占用,且转换后的公网地址和端口的组合不能被重复使用,因此,该第64513条流的报文被丟弃。综上所述,现有的NAPT方案,因为端口资源的耗尽一个公网地址可用于转换的私网地址的数量有限。
发明内容本发明提供一种网络地址端口转换方法,该方法极大地的扩展了一个公网地址可用于转换的私网地址的数量。本发明还提供了一种网络地址端口转换装置,该装置极大地扩展了一个公网地址可用于NAPT转换的私网地址的数量。为达到上述目的,本发明的技术方案具体是这样实现的本发明公开了一种网络地址端口转换方法,该方法包括接收需要做网络地址端口转换NAPT处理的当前流;分配指定公网地址作为当前流进行NAPT处理后的源IP地址;从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口;根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流。本发明还公开了一种网络地址端口转换装置,该装置包括NAPT处理模块、公网地址管理模块、端口队列管理模块和会话表管理模块,其中,NAPT处理模块,用于接收需要做网络地址端口转换NAPT处理的当前流时,向公网地址管理模块发送地址请求消息,将公网管理模块返回的指定公网地址作为当前流进行NAPT处理后的源IP地址,向端口队列管理模块发送携带所述指定公网地址的端口请求消息,并将端口队列管理模块返回的端口作为当前流进行NAPT处理后的源端口,向会话表管理模块发送携带由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组的冲突检查请求消息,并在会话表管理模块返回无冲突确认消息时,根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组发送到会话表管理模块,并发送所述NAPT处理后的当前流;公网地址管理模块,用于在接收到地址请求消息后,将指定公网地址返回给NAPT处理才莫块;端口队列管理模块,用于在接收到端口请求消息后,从端口请求消息中所携带的公网地址的端口队列中选择一个端口返回给NAPT处理模块;会话表管理模块,用于在接收到沖突检查请求消息后,根据沖突检查请求消息中携带的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则向NAPT处理模块返回无沖突确认消息,将NAPT处理模块发送的NAPT处理后的流的五元组保存到会话表中。由上述技术方案可见,本发明这种接收需要做网络地址端口转换NAPT处理的当前流时,分配指定公网地址作为当前流进行NAPT处理后的源IP地址,从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口,然后根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流的技术方案,由于基于五元组判断指定公网地址端口队列中的一个端口是否可为当前流所用,因此只要多条流的目的IP地址、目的端口或协议(五元组中除源IP地址和源端口以外的三项)不同,则这多条流就可以复用指定公网地址和该指定公网地址端口队列中的同一端口,因此极大的扩展了一个公网地址可用于NAPT转换的私网地址的数量。图1是本发明实施例一种网络地址端口转换方法的流程图;图2是本发明实施例一种网络地址端口转换装置的组成结构框图。具体实施方式本发明的核心思想是基于五元组判断一个公网地址端口队列中的一个端口是否可为当前流所用,即只要多条流的目的IP地址、目的端口或协议(五元组中除源IP地址和源端口以外的三项)不同,则这多条流就可以复用一个网地址和该公网地址端口队列中的同一端口作为NAPT转换后的源IP地址和源端口。图l是本发明实施例一种网络地址端口转换方法的流程图。如图l所示,该方法包括以下步骤步骤101,接收需要做网络地址端口转换NAPT处理的当前流。步骤102,分配指定公网地址作为当前流进行NAPT处理后的源IP地址。步骤103,从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口。步骤104,根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流。在步骤104中,才艮据所述源IP地址和所述源端口对当前流进行NAPT处理即为用于所述源IP(步骤102中分配的指定公网地址)地址替换当前流的原有源IP地址(私网IP地址);用所述源端口(步骤103中所选择的指定公网地址的端口)替换当前流原有的源端口(私网端口);当前流的目的IP地址、目的端口和所述协i义不变。在步骤104中,如果具有相同五元组的流不存在,则表示所述指定公网地址和所述选择的端口的组合还未被与当前流具有相同目的IP地址、目的端口和协议的流所使用过,因此当前流可以使用所述指定公网地址和所述选择的端口的组合作为NAPT转换后的源IP和源端口,即可以根据所述指定公网地址和所述选择的端口对当前流进行NAPT处理。并且即使在当前流之前已经有一条或多条流使用过所述指定公网地址和所述选择的端口的组合,但只要所述一条或多条流的目的IP地址、目的端口或协议与当前流不同,则当前流仍可以使用所述指定公网地址和所述选择的端口的组合作为NAPT转换后的源IP和源端口。在上述步骤104中,如果具有相同五元组的流已存在,图1所示的方法还可以进一步尝试分配下一个端口,如果多次尝试都失败则不进行NAPT处理,丢弃当前流。具体为从指定公网地址的端口队列中重新选择一个端口作为当前流进行NAPT处理后的源端口,并根据由所分配的源IP地址、重新选择的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表,判断具有相同五元组的流是否已经存在,如果不存在则根据所分配的源IP地址和重新选择的源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,发送所述NAPT处理后的当前流,如果存在则重复所述从指定公网地址的端口队列中重新选择一个端口的步骤以及后续步骤;如果第N次从指定公网地址的端口队列中重新选择一个端口作为当前流进行NAPT处理后的源端口后,会话表中仍存在由步骤102中所分配的源IP地址、第N次选择的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组,则丢弃所述当前流;N为大于l的自然数。在本发明的网络地址端口转换方法中,当所述指定公网地址的端口队列中包括M个端口时(M为自然数),可以按照接收流的先后顺序从所述端口队列中的第1个端口开始依次分配所述M个端口,并且在第M个端口被分配完毕后,从第1个端口开始再次重复分配。由于先接收到的前M条流依次分配所述M个端口,此时由于端口没有被重复使用,因此不需要做基于五元组的冲突检查(即不需要做步骤104中所述的判断过程),直接发送报文,从第二轮分配所述M个端口开始需要作基于五元组的冲突检查。因此,此时图1中所述的当前流为在第M条流之后接收到的流。在本发明的网络地址端口转换方法中,为了减少基于五元组的冲突检查此时还做了如下的处理当接收到的需要做NAPT转换的流包括分别属于不同协议(如TCP协议、UDP协议和RAWIP协议等)的流,且所述不同协议的个数为P时,为所述指定公网地址设置与所述P种协议——对应的P个端口队列,且所述P个端口队列中的每个队列都包括所述M个端口。对于每个接收到的流,都从指定公网地址的与该接收到的流所属的协议对应的端口队列中选择端口作为源端口。这样对于每种协议的前M个流都不需要做基于五元组的冲突检查。为使上述方案更加清楚明白,以下列举具体的实施例对本发明的技术方案进行消息说明。设NAPT转换设备会接收到属于TCP协议、UDP协议或RAWIP协议的流,NATP转换设备只有一个公网地址为IP—GLOBAL,且IP—GLOBAL的端口队列中的端口号范围是1024~65535。则根据本发明的方案为IP—GLOBAL配置分别对应于TCP协议、UDP协议和RAWIP协议的三个端口队列,且每个端口队列的端口号范围均为1024-65535,同时为每个端口队列分别设置当前可用端口号标识和沖突检查标志位。当NAPT转换设备接收到一条新流时,分配IP—GLOBAL作为该流NAPT处理后的源IP地址,并从该流所属协议所对应的端口队列选择一个端口作为该流NAPT处理后的源端口。其中对于每个协议所对应的端口队列,都根据端口序号的递增顺序,从1024~65535号端口中依次为到达的流分配端口,且在分配完第65535号端口后,再^^1024号端口开始分配,如此不断循环。并且在第一轮的循环中不需要对分配端口的流进行基于五元组的沖突检查,而是从第二轮的循环开始对分配端口的流进行基于五元组的冲突检查。是否进行沖突检查根据沖突检查标志位进行,具体为以与TCP协议对应的端口队列(这里称为TCP端口队列)为例,TCP端口队列的当前可用端口号标识的初始值为1024,每当为接收到的一条流分流端口时,根据当前可用端口号标识的值分配相应编号的端口,并将当前可用端口号标识的值加1,以指向下一个端口;TCP端口队列的冲突检查标志位在TCP队列的可用端口号标识的值小于等于65535时为无效状态,不需要进行沖突检查,而在TCP队列的可用端口号标识的值大于65535时为有效状态,需要进行沖突检查。可见,端口队列的可用端口号标识可以用计数器实现。当然,在将编号为1024-65535的64512个端口——对应的分配给先到达的前64512个流时,也可以按照端口编号的逆序(即65535-1024)依次不重复地分配给前64512个流,或者,也可以将64512个端口按照其他的某种次序分配给64512个流,只要前64512个流和64512个端口——对应即可。进行冲突检查的方法具体可以为根据NAPT转换后的五元组查找会话表;如果在会话表中查找到与NAPT转换后的五元组相同的五元组信息,即为产生冲突,尝试为该流分配下一个端口,如果多次(如3次)尝试分配端口均失败(即均产生冲突),则认为端口分配失败,不对该流进行NAPT处理,丢弃该流的报文;反之,如果在会话表中没有查找到与该流的五元组相同的五元组信息,即为没有产生沖突,则根据所分配的IP地址和端口对该流进行实际的NAPT处理。这里,会话表是现有技术中用于保存已存在会话的表,每一条流对应一个会话表项,且用五元组唯一地表示一条流,即对于进行NAPT转换并发送出去的流,都将其NAPT转换前的五元组和NAPT转换后的五元组对应保存到会话表中。这样,在本发明的实施例中,在接收到一条流时可先根据其NAPT转换前的五元组检查会话表,如果会话表中存在相应的NAPT转换前的五元组,则可以直接根据会话表中的该NAPT转换前的五元组和其对应的NAPT转换后的五元组进行的NAPT处理后发送该流;如果会话表中不存在相应的NAPT转换前的五元组,则再进行本发明图1中所示的步骤102~104的过程,此时在步骤104中,将NAPT处理后的当前流的五元组保存到会话表中的同时将NAPT处理前的当前流的五元组也对应保存到会话表中。本实施例中的NAPT转换处理过程中的一种端口分配方案如表2所示:<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>表2从表2可以看出,当第64513条流经过设备进行NAPT转换时,由于该第64513条流的目的地址和目的端口于第1条流的目的地址和目的端口不同,因此可以用1024号端口作为第64513条进行NAPT处理后的源端口而不会产生冲突。以此类推,应用本发明的方案可以实现一个公网地址和其端口队列中的一个端口的组合可以无限地重复利用,达到无限连接,只要各条流的目的地址、目的IP和协议不完全相同即可。本实施例中的NAPT转换处理过程中的另一种端口分配方案如表3所示<table>tableseeoriginaldocumentpage15</column></row><table>表3在表3所示的端口分配方案中,IP—GLOBAL的端口队列不区分协议,即IP—GLOBAL只有一个端口队列,其端口号范围是1024~65535,则不同协议的流到达时,都从仅有的一个队列中按顺序选择端口进行分配。在表3中,从第4条流开始的3万条流都属于UDP协议,其余流属于TCP协议。当第6"13条流到达时,为其分配第1024号端口,则第64513条流的NAPT转换后的五元组与第l条流的五元组产生冲突,为其尝试分配第1025和1026号端口,也会与第2条流和第3条流产生沖突,并且如果设置了端口分配尝试次数为3(包括第一次分配的1024)则该第64513条流的端口分配失败。而表3中的问题可以通过本发明中的为不同协议分别配置端口队列的方式解决。本实施例中的NAPT转换处理过程中的又一种端口分配方案如表4所示才艮文源IP/端口协议4艮文目的IP/端口NAPT转换后的源IP/端口IP1/PORT1TCPDIP1/DPORT1IP—GLOBAL/1024IP2/PORT1TCPDIP1/DPORT1IP—GLOBAL/1025IP3/PORT1TCPDIP1/DPORT1IP—GLOBAL/1026IP4/PORT1UDPDIP1/DPORT1IP—GLOBAL/1024IP64512/P0RT1TCPDIP1/DPORT1IP—GLOBAL/35535IP64513/P0RT1TCPDIP1/DPORT1IP—GLOBAL/35536表4在表4所示的端口分配方案中,IP—GLOBAL的端口队列区分协议,即IP—GLOBAL有对应与TCP协议、UDP协议和RAWIP协议的三个端口队列,且每个端口队列的端口号范围是1024~65535。则不同协议的流到达时,根据流所属的协议所对应的队列中按顺序选择端口进行分配。与表3中相同,在表4中从第4条流开始的3万条流都属于UDP协议,其余流属于TCP协议。当第64513条流到达时,为其分配第35536号端口,不会出现沖突。比较表3和表4所示的端口分配方案可见,IP—GLOBAL的端口队列区分协议的方案不仅可以避免不必要的冲突检查,减少沖突检查的次数,还可以避免由于有限次数的端口分配尝试而导致的端口分配失败问题。基于上述实施例,下面给出本发明一种网络地址端口转换装置的组成结构。图2是本发明实施例一种网络地址端口转换装置的组成结构框图。如2所示,该装置包括NAPT处理模块201、公网地址管理模块202、端口队列管理模块203和会话表管理模块204,其中NAPT处理模块201,用于接收需要做网络地址端口转换NAPT处理的当前流时,向公网地址管理模块202发送地址请求消息,将公网管理模块202返回的指定公网地址作为当前流进行NAPT处理后的源IP地址,向端口队列管理模块203发送携带所述指定公网地址的端口请求消息,并将端口队列管理模块203返回的端口作为当前流进行NAPT处理后的源端口,向会话表管理模块204发送携带由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组的冲突^r查请求消息,并在会话表管理模块204返回无冲突确认消息时,根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组发送到会话表管理模块204,并发送所述NAPT处理后的当前流;公网地址管理模块202,用于在接收到地址请求消息后,将指定公网地址返回给NAPT处理才莫块201;端口队列管理模块203,用于在接收到端口请求消息后,从端口请求消息中所携带的公网地址的端口队列中选择一个端口返回给NAPT处理模块201;会话表管理模块204,用于在接收到冲突检查请求消息后,根据冲突检查请求消息中携带的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则向NAPT处理模块201返回无冲突确认消息,将NAPT处理模块201发送的NAPT处理后的流的五元组保存到会话表中。在图2中,会话表管理模块204,在接收到所述沖突检查请求消息后,根据其中携带的五元组查找会话表判断具有相同五元组的流是否已经存在,如果存在,则进一步用于向NAPT处理模块返回有冲突确认消息;NAPT处理模块201,进一步用于在接收的有冲突确认消息后,再次向端口队列管理模块203发送携带所述指定公网地址的端口请求消息,并将端口队列管理模块203再次返回的端口作为当前流进行NAPT处理后的源端口,向会话表管理模块204发送携带由所述源IP地址、所述再次返回的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组的沖突检查请求消息,如果会话表管理;漠块204返回无沖突确认消息,则根据所述源IP地址和所述再次返回的源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组发送到会话表管理模块204,并发送所述NAPT处理后的当前流,反之,如果会话表管理模块204再次返回有沖突确认消息,则重复所述向端口队列管理模块203发送携带所述指定公网地址的端口请求消息的步骤以及后续步骤;如此,如果在第N次向端口队列管理模块203发送端口请求消息,以及第N次向会话表管理模块204发送冲突检查消息后,检查模块仍返回有沖突确认消息,则丢弃所述当前流;N为大于1的自然数。在图2中,端口队列管理模块203,用于在每次接收到端口请求消息后,从端口请求消息中所携带的公网地址的端口队列中选择一个端口返回给NAPT处理才莫块201,并且对于一个端口队列,从该端口队列的起始端口开始按端口编号的顺序依次选择端口,在该端口队列中的端口均被选择过一次后,从该端口队列中的起始端口开始进行新一轮的选择;当所述指定公网地址的端口队列中包括M个端口时,M为自然数,所述当前流为NAPT处理模块在第M条流之后接收到的流;NAPT处理模块201,用于在接收到需要做NAPT处理的前M条流中每一条时,均分配所述指定公网地址作为该流NAPT处理后的源IP地址,并向端口队列管理模块203发送携带指定公网地址的端口请求消息,将端口队列管理模块返回的端口作为该流NAPT处理后的源端口,根据所述源IP地址和所述源端口对该流进行NAPT处理,将该NAPT处理后的流的五元组发送到会话表管理模块204,并发送该NAPT处理后的流。在图2中,端口队列管理模块203中还设置有沖突检查标志位和计数器(图2中未画出);所述计数器在每次端口队列管理模块从端口队列中选择一个端口时计一次数;所述冲突检测标志位的状态在所述计数器计M次数之后变为有效,之前无效;端口队列管理模块203,在向NAPT处理模块201返回一个端口的同时,进一步将所述沖突检查标志位返回给NAPT处理模块201;NAPT处理模块201,在所述沖突检查标志位无效时,对分配到源IP地址和源端口的流,不向会话表管理模块204发送冲突检查请求消息,而直接根据该流所分配到的源IP地址和源端口对该流进行NAPT处理后发送该流;在所述突^r查标志位有效时,对于分配到源IP地址和源端口的流,向会话表管理模块204发送沖突检查请求消息。在图2中,端口队列管理模块203,用于保存指定公网地址的P个端口队列,P为大于1的自然数;其中所述P个端口队列与P个不同协议--对应,且所述P个端口队列中的每个队列都包括所述的M个端口;NAPT处理模块201向端口队列管理模块发送的端口请求消息中进一步携带流所属的协议信息;端口队列模块203用于在接收到端口请求消息后,从端口请求消息中所携带的公网地址的与端口请求消息中所携带的协议信息所对应的端口队列中选择一个端口返回给NAPT处理才莫块201。综上所述,本发明这种接收需要做网络地址端口转换NAPT处理的当前流时,分配指定公网地址作为当前流进行NAPT处理后的源IP地址,从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口,然后;f艮据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流技术方案,由于基于五元组判断指定公网地址端口队列中的一个端口是否可为当前流所用,因此只要多条流的目的IP地址、目的端口或协议(五元组中除源IP地址和源端口以外的三项)不同,则这多条流就可以复用指定公网地址和该指定公网地址端口队列中的同一端口,因此极大的扩展了一个公网地址可用于NAPT转换的私网地址的数量。此外,按协议区分一个公网地址的端口队列的方案,仅可以避免不必要的沖突检查,减少沖突检查的次数,还可以避免由于有限次数的端口分配尝试而导致的端口分配失败问题。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1、一种网络地址端口转换方法,其特征在于,该方法包括接收需要做网络地址端口转换NAPT处理的当前流;分配指定公网地址作为当前流进行NAPT处理后的源IP地址;从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口;根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流。2、如权利要求1所述的方法,其特征在于,如果具有相同五元组的流已存在,则该方法进一步包括从指定公网地址的端口队列中重新选择一个端口作为当前流进行NAPT处理后的源端口,并根据由所述源IP地址、所迷重新选择的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述重新选择的源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,发送所述NAPT处理后的当前流,如果存在则重复所述从指定公网地址的端口队列中重新选择一个端口的步骤以及后续步骤;如果第N次从指定公网地址的端口队列中重新选择一个端口作为当前流进行NAPT处理后的源端口后,会话表中仍存在由所述源IP地址、所述第N次重新选择的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组,则丟弃所述当前流;N为大于l的自然数。3、如权利要求1或2所述的方法,其特征在于,当所述指定公网地址的端口队列中包括M个端口时,为接收到的需要做NAPT处理的前M条流均分配所述指定公网地址作为NAPT处理后的源IP地址,将所述M个端口按照端口编号顺序和接收所述M条流的先后顺序依次不重复地分别分配给所述M条流作为NAPT处理后的源端口;对于所述M条流中的每一条流,都根据该流所分配到的源IP地址和源端口对该流进行NAPT处理,将该NAPT处理后的流的五元组保存到会话表中,发送该NAPT处理后的流;M为自然数;所述当前流是在第M条流之后接收到的流;所述从指定公网地址的端口队列中选择一个端口包括从指定公网地址的端口队列中按所述M个端口编号的顺序依次进行选择。4、如权利要求3所述的方法,其特征在于,该方法进一步包括设置冲突检查标志位和计数器;所述计数器在每次从端口队列中选择一个端口时计一次数;所述沖突检测标志位的状态在所述计数器计M次数之后变为有凌文,之前无凌文;在所述沖突^f企查标志位无效时,对于分配到源IP地址和源端口的流不执行所述根据五元组判断是否有相同的流已存在的步骤,而直接根据分配到的源IP地址和源端口进行NAPT处理后发送;反之,在所述突^^查标志位有效时,对于分配到源IP地址和源端口的流执行所述根据五元组判断是否有相同的流已存在的步骤。5、如权利要求3所述的方法,其特征在于,该方法进一步包括当接收到的需要做NAPT转换的流包括分别属于不同协议的流,且所述不同协议的个数为P时,P为大于l的自然数,为所述指定公网地址设置与所述P种协议——对应的P个端口队列,且所述P个端口队列中的每个队列都包括所述M个端口;所述为前M条流均分配所述指定^^网地址作为NAPT处理后的源IP地址,以及将M个端口按照端口编号顺序和接收所述M条流的先后顺序依次不重复地分配给所述M条流作为NAPT处理后的源端口包括对于所述P种协议中的每种协议,为属于该协议的前M条流均分配所述指定公网地址作为NAPT处理后的源IP地址,并将与该协议对应的端口队列中的M个端口按照端口编号顺序和接收属于该协议的前M条流的先后顺序依次不重复地分别分配给属于该协议的前M条流作为NAPT处理后的源端口;所述从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口包括从指定公网地址的与当前流所属协议对应的端口队列中的选择一个端口作为当前流进行NAPT处理后的源端口。6、一种网络地址端口转换装置,其特征在于,该装置包括NAPT处理模块、公网地址管理模块、端口队列管理模块和会话表管理模块,其中,NAPT处理模块,用于接收需要做网络地址端口转换NAPT处理的当前流时,向公网地址管理模块发送地址请求消息,将公网管理模块返回的指定公网地址作为当前流进行NAPT处理后的源IP地址,向端口队列管理模块发送携带所述指定公网地址的端口请求消息,并将端口队列管理模块返回的端口作为当前流进行NAPT处理后的源端口,向会话表管理模块发送携带由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组的冲突检查请求消息,并在会话表管理模块返回无冲突确认消息时,根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元組发送到会话表管理模块,并发送所述NAPT处理后的当前流;公网地址管理模块,用于在接收到地址请求消息后,将指定公网地址返回给NAPT处理模块;端口队列管理模块,用于在接收到端口请求消息后,从端口请求消息中所携带的公网地址的端口队列中选择一个端口返回给NAPT处理模块;会话表管理模块,用于在接收到冲突检查请求消息后,根据冲突检查请求消息中携带的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则向NAPT处理模块返回无冲突确认消息,将NAPT处理模块发送的NAPT处理后的流的五元组保存到会话表中。7、如权利要求6所述的装置,其特征在于,所述会话表管理模块,在接收到所述冲突检查请求消息后,根据其中携带的五元组查找会话表判断具有相同五元组的流是否已经存在,如果存在,则进一步用于向NAPT处理模块返回有冲突确认消息;所述NAPT处理模块,进一步用于在接收的有冲突确认消息后,再次向端口队列管理模块发送携带所述指定公网地址的端口请求消息,并将端口队列管理模块再次返回的端口作为当前流进行NAPT处理后的源端口,向会话表管理模块发送携带由所述源IP地址、所述再次返回的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组的冲突才企查请求消息,如果会话表管理模块返回无沖突确认消息,则根据所述源IP地址和所述再次返回的源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组发送到会话表管理模块,并发送所述NAPT处理后的当前流,反之,如果会话表管理模块再次返回有沖突确认消息,则重复所述向端口队列管理模块发送携带所述指定公网地址的端口请求消息的步骤以及后续步骤;如此,如果在第N次向端口队列管理模块发送端口请求消息,以及第N次向会话表管理模块发送冲突检查消息后,检查模块仍返回有冲突确认消息,则丢弃所述当前流;N为大于l的自然数。8、如权利要求6或7所述的装置,其特征在于,所述端口队列管理模块,用于在每次接收到端口请求消息后,从端口请求消息中所携带的7>网地址的端口队列中选择一个端口返回给NAPT处理模块,并且对于一个端口队列,从该端口队列的起始端口开始按端口编号的顺序依次选择端口,在该端口队列中的端口均被选4奪过一次后,从该端口队列中的起始端口开始进行新一轮的选择;当所述指定公网地址的端口队列中包括M个端口时,M为自然数,所述当前流为NAPT处理模块在第M条流之后接收到的流;所述NAPT处理模块,用于在接收到需要做NAPT处理的前M条流中每一条时,均分配所述指定公网地址作为该流NAPT处理后的源IP地址,并向端口队列管理模块发送携带指定公网地址的端口请求消息,将端口队列管理模块返回的端口作为该流NAPT处理后的源端口,根据所述源IP地址和所述源端口对该流进行NAPT处理,将该NAPT处理后的流的五元组发送到会话表管理模块,并发送该NAPT处理后的流。9、如权利要求8所述的装置,其特征在于,所述端口队列管理模块中还设置有冲突检查标志位和计数器;所述计数器在每次端口队列管理模块从端口队列中选择一个端口时计一次数;所述沖突检测标志位的状态在所述计数器计M次数之后变为有效,之前无效;所述端口队列管理模块,在向NAPT处理模块返回一个端口的同时,进一步将所述冲突检查标志位返回给NAPT处理模块;所述NAPT处理模块,在所述冲突检查标志位无效时,对于分配到源IP地址和源端口的流,不向会话表管理模块发送冲突检查请求消息,而直接根据该流所分配到的源IP地址和源端口对该流进行NAPT处理后发送该流;在所述突检查标志位有效时,对于分配到源IP地址和源端口的流,向会话表管理模块发送冲突检查请求消息。10、如权利要求8所述的装置,其特征在于,所述端口队列管理模块,用于保存指定公网地址的P个端口队列,P为大于1的自然数;其中所述P个端口队列与P个不同协议——对应,且所述P个端口队列中的每个队列都包括所述的M个端口;所述NAPT处理模块向端口队列管理模块发送的端口请求消息中进一步携带流所属的协议信息;所述端口队列模块用于在接收到端口请求消息后,从端口请求消息中所携带的公网地址的与端口请求消息中所携带的协议信息所对应的端口队列中选择一个端口返回给NAPT处理才莫块。全文摘要本发明公开了一种网络地址端口转换方法和装置,方法包括接收需要做网络地址端口转换NAPT处理的当前流;分配指定公网地址作为当前流进行NAPT处理后的源IP地址;从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口;根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送NAPT处理后的当前流。本发明的技术方案极大地的扩展了一个公网地址可用于转换的私网地址的数量。文档编号H04L29/12GK101335770SQ200810117868公开日2008年12月31日申请日期2008年8月6日优先权日2008年8月6日发明者鄢波涛申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1