CN101335770B - 一种网络地址端口转换方法和装置 - Google Patents
一种网络地址端口转换方法和装置 Download PDFInfo
- Publication number
- CN101335770B CN101335770B CN2008101178684A CN200810117868A CN101335770B CN 101335770 B CN101335770 B CN 101335770B CN 2008101178684 A CN2008101178684 A CN 2008101178684A CN 200810117868 A CN200810117868 A CN 200810117868A CN 101335770 B CN101335770 B CN 101335770B
- Authority
- CN
- China
- Prior art keywords
- port
- stream
- napt
- address
- source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种网络地址端口转换方法和装置,方法包括:接收需要做网络地址端口转换NAPT处理的当前流;分配指定公网地址作为当前流进行NAPT处理后的源IP地址;从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口;根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送NAPT处理后的当前流。本发明的技术方案极大地扩展了一个公网地址可用于转换的私网地址的数量。
Description
技术领域
本发明涉及网络通信技术领域,尤指一种网络地址端口转换方法和装置。
背景技术
网络地址转换(NAT,Network Address Translation)协议实现私有网络中的IP地址与公网中的IP地址之间的相互转换,且私网地址和公网地址一一对应。
网络地址端口转换(NAPT,Network Address Port Translation)是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所示:
报文源IP/端口 | 协议 | 报文目的IP/端口 | NAPT转换后的源IP/端口 |
IP1/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1024 |
IP2/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1025 |
IP3/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1026 |
IP4/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1027 |
…… | …… | …… | …… |
IP64512/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/65535 |
IP64513/PORT1 | TCP | DIP2/DPORT1 | 端口分配失败 |
表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地址和源端口。
图1是本发明实施例一种网络地址端口转换方法的流程图。如图1所示,该方法包括以下步骤:
步骤101,接收需要做网络地址端口转换NAPT处理的当前流。
步骤102,分配指定公网地址作为当前流进行NAPT处理后的源IP地址。
步骤103,从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口。
步骤104,根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流。
在步骤104中,根据所述源IP地址和所述源端口对当前流进行NAPT处理即为:用于所述源IP(步骤102中分配的指定公网地址)地址替换当前流的原有源IP地址(私网IP地址);用所述源端口(步骤103中所选择的指定公网地址的端口)替换当前流原有的源端口(私网端口);当前流的目的IP地址、目的端口和所述协议不变。
在步骤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为大于1的自然数。
在本发明的网络地址端口转换方法中,当所述指定公网地址的端口队列中包括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所示:
报文源IP/端口 | 协议 | 报文目的IP/端口 | NAPT转换后的源IP/端口 |
IP1/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1024 |
IP2/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1025 |
IP3/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1026 |
IP4/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1027 |
…… | …… | …… | …… |
IP64512/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/65535 |
IP64513/PORT1 | TCP | DIP2/DPORT1 | IP_GLOBAL/1024 |
…… | …… | …… | …… |
IPk/PORTk | TCP | DIPn/DPORTn | IP_GLOBAL/m |
表2
从表2可以看出,当第64513条流经过设备进行NAPT转换时,由于该第64513条流的目的地址和目的端口于第1条流的目的地址和目的端口不同,因此可以用1024号端口作为第64513条进行NAPT处理后的源端口而不会产生冲突。以此类推,应用本发明的方案可以实现一个公网地址和其端口队列中的一个端口的组合可以无限地重复利用,达到无限连接,只要各条流的目的地址、目的IP和协议不完全相同即可。
本实施例中的NAPT转换处理过程中的另一种端口分配方案如表3所示:
报文源IP/端口 | 协议 | 报文目的IP/端口 | NAPT转换后的源IP/端口 |
IP1/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1024 |
IP2/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1025 |
IP3/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1026 |
IP4/PORT1 | UDP | DIP1/DPORT1 | IP_GLOBAL/1027 |
…… | …… | …… | …… |
IP64512/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/65535 |
IP64513/PORT1 | TCP | DIP1/DPORT1 | 端口分配失败 |
表3
在表3所示的端口分配方案中,IP_GLOBAL的端口队列不区分协议,即IP_GLOBAL只有一个端口队列,其端口号范围是1024~65535,则不同协议的流到达时,都从仅有的一个队列中按顺序选择端口进行分配。在表3中,从第4条流开始的3万条流都属于UDP协议,其余流属于TCP协议。当第64513条流到达时,为其分配第1024号端口,则第64513条流的NAPT转换后的五元组与第1条流的五元组产生冲突,为其尝试分配第1025和1026号端口,也会与第2条流和第3条流产生冲突,并且如果设置了端口分配尝试次数为3(包括第一次分配的1024)则该第64513条流的端口分配失败。
而表3中的问题可以通过本发明中的为不同协议分别配置端口队列的方式解决。
本实施例中的NAPT转换处理过程中的又一种端口分配方案如表4所示:
报文源IP/端口 | 协议 | 报文目的IP/端口 | NAPT转换后的源IP/端口 |
IP1/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1024 |
IP2/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1025 |
IP3/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/1026 |
IP4/PORT1 | UDP | DIP1/DPORT1 | IP_GLOBAL/1024 |
…… | …… | …… | …… |
IP64512/PORT1 | TCP | DIP1/DPORT1 | IP_GLOBAL/35535 |
IP64513/PORT1 | TCP | DIP1/DPORT1 | IP_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地址、当前流的目的端口和当前流所属协议组成的五元组的冲突检查请求消息,并在会话表管理模块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处理后发送该流;在所述突检查标志位有效时,对于分配到源IP地址和源端口的流,向会话表管理模块204发送冲突检查请求消息。
在图2中,端口队列管理模块203,用于保存指定公网地址的P个端口队列,P为大于1的自然数;其中所述P个端口队列与P个不同协议一一对应,且所述P个端口队列中的每个队列都包括所述的M个端口;
NAPT处理模块201向端口队列管理模块发送的端口请求消息中进一步携带流所属的协议信息;端口队列模块203用于在接收到端口请求消息后,从端口请求消息中所携带的公网地址的与端口请求消息中所携带的协议信息所对应的端口队列中选择一个端口返回给NAPT处理模块201。
综上所述,本发明这种接收需要做网络地址端口转换NAPT处理的当前流时,分配指定公网地址作为当前流进行NAPT处理后的源IP地址,从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口,然后根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流技术方案,由于基于五元组判断指定公网地址端口队列中的一个端口是否可为当前流所用,因此只要多条流的目的IP地址、目的端口或协议(五元组中除源IP地址和源端口以外的三项)不同,则这多条流就可以复用指定公网地址和该指定公网地址端口队列中的同一端口,因此极大的扩展了一个公网地址可用于NAPT转换的私网地址的数量。此外,按协议区分一个公网地址的端口队列的方案,仅可以避免不必要的冲突检查,减少冲突检查的次数,还可以避免由于有限次数的端口分配尝试而导致的端口分配失败问题。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种网络地址端口转换方法,其特征在于,该方法包括:
接收需要做网络地址端口转换NAPT处理的当前流;
分配指定公网地址作为当前流进行NAPT处理后的源IP地址;
从指定公网地址的端口队列中选择一个端口作为当前流进行NAPT处理后的源端口;
根据由所述源IP地址、所述源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组查找会话表判断具有相同五元组的流是否已经存在,
如果不存在则根据所述源IP地址和所述源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,并发送所述NAPT处理后的当前流;如果具有相同五元组的流已存在,则该方法进一步包括尝试分配下一个端口,如果多次尝试都失败则不进行NAPT处理,丢弃当前流。
2.如权利要求1所述的方法,其特征在于,所述如果具有相同五元组的流已存在,则该方法进一步包括具体为:
从指定公网地址的端口队列中重新选择一个端口作为当前流进行NAPT处理后的源端口,并根据由所述源IP地址、所述重新选择的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组判断具有相同五元组的流是否已经存在,如果不存在则根据所述源IP地址和所述重新选择的源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组保存到会话表中,发送所述NAPT处理后的当前流,如果存在则重复所述从指定公网地址的端口队列中重新选择一个端口的步骤以及后续步骤;
如果第N次从指定公网地址的端口队列中重新选择一个端口作为当前流进行NAPT处理后的源端口后,会话表中仍存在由所述源IP地址、所述第N次重新选择的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组,则丢弃所述当前流;N为大于1的自然数。
3.如权利要求1或2所述的方法,其特征在于,
当所述指定公网地址的端口队列中包括M个端口时,为接收到的需要做NAPT处理的前M条流均分配所述指定公网地址作为NAPT处理后的源IP地址,将所述M个端口按照端口编号顺序和接收所述M条流的先后顺序依次不重复地分别分配给所述M条流作为NAPT处理后的源端口;对于所述M条流中的每一条流,都根据该流所分配到的源IP地址和源端口对该流进行NAPT处理,将该NAPT处理后的流的五元组保存到会话表中,发送该NAPT处理后的流;M为自然数;
所述当前流是在第M条流之后接收到的流;所述从指定公网地址的端口队列中选择一个端口包括:从指定公网地址的端口队列中按所述M个端口编号的顺序依次进行选择。
4.如权利要求3所述的方法,其特征在于,该方法进一步包括:
设置冲突检查标志位和计数器;所述计数器在每次从端口队列中选择一个端口时计一次数;所述冲突检测标志位的状态在所述计数器计M次数之后变为有效,之前无效;
在所述冲突检查标志位无效时,对于分配到源IP地址和源端口的流不执行所述根据五元组判断是否有相同的流已存在的步骤,而直接根据分配到的源IP地址和源端口进行NAPT处理后发送;
反之,在所述突检查标志位有效时,对于分配到源IP地址和源端口的流执行所述根据五元组判断是否有相同的流已存在的步骤。
5.如权利要求3所述的方法,其特征在于,该方法进一步包括:当接收到的需要做NAPT转换的流包括分别属于不同协议的流,且所述不同协议的个数为P时,P为大于1的自然数,为所述指定公网地址设置与所述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处理后的流的五元组保存到会话表中;
如果存在,则进一步用于向NAPT处理模块返回有冲突确认消息;
所述NAPT处理模块,进一步用于在接收的有冲突确认消息后,再次向端口队列管理模块发送携带所述指定公网地址的端口请求消息,并将端口队列管理模块再次返回的端口作为当前流进行NAPT处理后的源端口,向会话表管理模块发送携带由所述源IP地址、所述再次返回的源端口、当前流的目的IP地址、当前流的目的端口和当前流所属协议组成的五元组的冲突检查请求消息,如果会话表管理模块返回无冲突确认消息,则根据所述源IP地址和所述再次返回的源端口对当前流进行NAPT处理,将NAPT处理后的当前流的五元组发送到会话表管理模块,并发送所述NAPT处理后的当前流,反之,如果会话表管理模块再次返回有冲突确认消息,则重复所述向端口队列管理模块发送携带所述指定公网地址的端口请求消息的步骤以及后续步骤;如此,如果在第N次向端口队列管理模块发送端口请求消息,以及第N次向会话表管理模块发送冲突检查消息后,检查模块仍返回有冲突确认消息,则丢弃所述当前流;N为大于1的自然数。
7.如权利要求6所述的装置,其特征在于,
所述端口队列管理模块,用于在每次接收到端口请求消息后,从端口请求消息中所携带的公网地址的端口队列中选择一个端口返回给NAPT处理模块,并且对于一个端口队列,从该端口队列的起始端口开始按端口编号的顺序依次选择端口,在该端口队列中的端口均被选择过一次后,从该端口队列中的起始端口开始进行新一轮的选择;
当所述指定公网地址的端口队列中包括M个端口时,M为自然数,所述当前流为NAPT处理模块在第M条流之后接收到的流;
所述NAPT处理模块,用于在接收到需要做NAPT处理的前M条流中每一条时,均分配所述指定公网地址作为该流NAPT处理后的源IP地址,并向端口队列管理模块发送携带指定公网地址的端口请求消息,将端口队列管理模块返回的端口作为该流NAPT处理后的源端口,根据所述源IP地址和所述源端口对该流进行NAPT处理,将该NAPT处理后的流的五元组发送到会话表管理模块,并发送该NAPT处理后的流。
8.如权利要求7所述的装置,其特征在于,所述端口队列管理模块中还设置有冲突检查标志位和计数器;所述计数器在每次端口队列管理模块从端口队列中选择一个端口时计一次数;所述冲突检测标志位的状态在所述计数器计M次数之后变为有效,之前无效;
所述端口队列管理模块,在向NAPT处理模块返回一个端口的同时,进一步将所述冲突检查标志位返回给NAPT处理模块;
所述NAPT处理模块,在所述冲突检查标志位无效时,对于分配到源IP地址和源端口的流,不向会话表管理模块发送冲突检查请求消息,而直接根据该流所分配到的源IP地址和源端口对该流进行NAPT处理后发送该流;在所述突检查标志位有效时,对于分配到源IP地址和源端口的流,向会话表管理模块发送冲突检查请求消息。
9.如权利要求7所述的装置,其特征在于,
所述端口队列管理模块,用于保存指定公网地址的P个端口队列,P为大于1的自然数;其中所述P个端口队列与P个不同协议一一对应,且所述P个端口队列中的每个队列都包括所述的M个端口;
所述NAPT处理模块向端口队列管理模块发送的端口请求消息中进一步携带流所属的协议信息;所述端口队列模块用于在接收到端口请求消息后,从端口请求消息中所携带的公网地址的与端口请求消息中所携带的协议信息所对应的端口队列中选择一个端口返回给NAPT处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101178684A CN101335770B (zh) | 2008-08-06 | 2008-08-06 | 一种网络地址端口转换方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101178684A CN101335770B (zh) | 2008-08-06 | 2008-08-06 | 一种网络地址端口转换方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101335770A CN101335770A (zh) | 2008-12-31 |
CN101335770B true CN101335770B (zh) | 2011-04-20 |
Family
ID=40198073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101178684A Expired - Fee Related CN101335770B (zh) | 2008-08-06 | 2008-08-06 | 一种网络地址端口转换方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101335770B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594942A (zh) * | 2012-02-23 | 2012-07-18 | 汉柏科技有限公司 | 实现网络地址转换的方法及系统 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8902743B2 (en) * | 2010-06-28 | 2014-12-02 | Microsoft Corporation | Distributed and scalable network address translation |
CN102025643B (zh) * | 2010-12-30 | 2012-07-04 | 华为技术有限公司 | 一种流表查找方法和装置 |
CN103945014B (zh) * | 2013-01-21 | 2017-09-26 | 中国科学院声学研究所 | 一种pat模式下的端口复用方法及网络地址转换设备 |
CN103442093A (zh) * | 2013-07-22 | 2013-12-11 | 汉柏科技有限公司 | 实现网络地址转换的方法 |
CN103475746B (zh) * | 2013-08-09 | 2017-07-04 | 新华三技术有限公司 | 一种终端服务方法及装置 |
CN104717102B (zh) * | 2013-12-12 | 2018-06-05 | 华为技术有限公司 | 流量统计方法、装置以及nat网关设备 |
CN104506667B (zh) * | 2014-12-22 | 2018-10-12 | 迈普通信技术股份有限公司 | 一种分配端口资源的方法及装置、用户认证管理的装置 |
CN104506460B (zh) * | 2014-12-29 | 2018-01-26 | 迈普通信技术股份有限公司 | 一种实现napt端口资源分配的方法 |
CN104702713B (zh) * | 2015-03-26 | 2018-09-04 | 新华三技术有限公司 | 一种数据报文转发方法及装置 |
CN105069011A (zh) * | 2015-07-07 | 2015-11-18 | 安一恒通(北京)科技有限公司 | 用于管理网页收藏夹的方法、装置及系统 |
CN106789666B (zh) * | 2016-11-22 | 2020-05-08 | 东软集团股份有限公司 | 一种确定转换后端口的方法和装置 |
CN109639845B (zh) * | 2017-10-09 | 2022-03-29 | 中兴通讯股份有限公司 | 网络地址转换nat的资源分配方法及设备 |
CN107749899A (zh) * | 2017-10-24 | 2018-03-02 | 新华三信息安全技术有限公司 | 一种报文转发方法、装置及电子设备 |
CN109688237B (zh) | 2018-03-26 | 2020-05-12 | 新华三技术有限公司 | 一种nat转换方法、装置及nat设备 |
CN108881519A (zh) * | 2018-08-08 | 2018-11-23 | 成都俊云科技有限公司 | 一种nat穿透方法及装置 |
CN111385378A (zh) * | 2020-03-03 | 2020-07-07 | 深圳市网心科技有限公司 | 基于地址交换的报文转发方法、硬件设备、系统及介质 |
CN113472648B (zh) * | 2021-06-18 | 2023-10-24 | 新华三信息安全技术有限公司 | 一种双向转发检测bfd方法及装置、网络设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119324A (zh) * | 2007-09-21 | 2008-02-06 | 杭州华三通信技术有限公司 | 网络地址转换属性自适应方法及装置 |
CN101132424A (zh) * | 2007-09-29 | 2008-02-27 | 杭州华三通信技术有限公司 | 网络地址转换的方法及装置 |
-
2008
- 2008-08-06 CN CN2008101178684A patent/CN101335770B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119324A (zh) * | 2007-09-21 | 2008-02-06 | 杭州华三通信技术有限公司 | 网络地址转换属性自适应方法及装置 |
CN101132424A (zh) * | 2007-09-29 | 2008-02-27 | 杭州华三通信技术有限公司 | 网络地址转换的方法及装置 |
Non-Patent Citations (2)
Title |
---|
武勇 等.基于网络处理器的NAPT的研究与实现.《中国数据通信》.2005,(第7期),112-116. |
武勇等.基于网络处理器的NAPT的研究与实现.《中国数据通信》.2005,(第7期),112-116. * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594942A (zh) * | 2012-02-23 | 2012-07-18 | 汉柏科技有限公司 | 实现网络地址转换的方法及系统 |
CN102594942B (zh) * | 2012-02-23 | 2014-05-14 | 汉柏科技有限公司 | 实现网络地址转换的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101335770A (zh) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101335770B (zh) | 一种网络地址端口转换方法和装置 | |
US6118771A (en) | System and method for controlling communication | |
JP4486902B2 (ja) | ネットワークシステム及びゲートウェイ装置 | |
CN101272291B (zh) | 网络设备测试方法及系统 | |
CN102075445B (zh) | 负载均衡方法及装置 | |
CN101170483B (zh) | 一种路由交换设备堆叠的方法 | |
US9948576B2 (en) | Mechanism for enabling layer two host addresses to be shielded from the switches in a network | |
CN101330466B (zh) | 一种组播报文的转发方法及装置 | |
CN101247253A (zh) | Ip网络中基于虚拟分发网的多播传送方法 | |
CN102185766A (zh) | Dhcp服务器回应报文的单播转发方法及中转设备 | |
CN105227466A (zh) | 通信处理方法和装置 | |
CN100571218C (zh) | 一种实现流转换的方法和设备 | |
JP2005184616A (ja) | 通信制御システム | |
US20100272105A1 (en) | Determining the Group Address for an Ethernet-Based Multicast Communication | |
CN102232288A (zh) | 一种网络地址转换方法及装置 | |
CN101924698B (zh) | 基于ip单播路由的二层域负载均衡方法、系统和设备 | |
CN102752199B (zh) | 一种虚拟路由器的数据转发平面的构建方法与系统 | |
CN100479457C (zh) | 一种实现虚拟私有网络中数据传输的方法 | |
CN104506440B (zh) | 路由器的数据包发送方法和路由表修改方法 | |
CN110995609A (zh) | 报文发送方法、装置、电子设备及存储介质 | |
CN114531417B (zh) | 一种通信方法及装置 | |
CN102611614B (zh) | 通信设备、通信系统和通信方法 | |
CN104468285A (zh) | 网络设备组播性能测试方法及系统 | |
RU2765121C1 (ru) | Способ организации потоковой передачи, способ предоставления информации идентификатора потоковой передачи, применение dns-сервера, устройство, компьютерная программа и машиночитаемый носитель | |
CN101083626A (zh) | 获取物理地址的方法及网络设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110420 Termination date: 20200806 |