CN103685600B - 基于rb树和位图混合的网络地址端口转换池管理方法 - Google Patents
基于rb树和位图混合的网络地址端口转换池管理方法 Download PDFInfo
- Publication number
- CN103685600B CN103685600B CN201310676682.3A CN201310676682A CN103685600B CN 103685600 B CN103685600 B CN 103685600B CN 201310676682 A CN201310676682 A CN 201310676682A CN 103685600 B CN103685600 B CN 103685600B
- Authority
- CN
- China
- Prior art keywords
- tree
- port
- node
- bitmap
- network address
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开一种基于RB树和位图混合的网络地址端口转换池管理方法,融合红黑树和位图两种数据结构,实现有效的网络地址端口转换池(NAPT Pool)管理,设置网络地址端口转换池拥有64KB大小的端口资源,每个IP地址对应于一棵RB树;整个RB树初始化为一个根结点;遍历RB树查找具有可分配端口资源的结点;对于每个RB树结点,采用位图的结构储存端口号信息,每个bit位对应于一个端口号。在相应的结点中线性查找256bits位图,直至找到可用的端口号返回;当端口号随机被分配与释放,更新RB树。本发明在接入广域网中虚拟网关服务产品中,可以实现有效的网络地址端口转换,使得在不影响端口地址转换性能的前提下,节省内存资源。
Description
技术领域
本发明涉及一种基于RB树和位图混合的网络地址端口转换池管理方法,应用于接入广域网(WAN)中虚拟网关服务产品,籍由融合红黑(RB)树和位图两种数据结构,实现有效的网络地址端口转换池(NAPT Pool)管理方法,使得在不影响端口地址转换性能的前提下,节省内存资源,属于计算机网络领域。
背景技术
网络地址转换(Network Address Translation, NAT)属于接入广域网(WAN)技术,一种将私有(内网)IP地址映射为公有(外网)IP地址的转换技术,它被广泛应用于各种类型Internet接入方式的网络中。NAT不仅可以有效地解决IPv4地址资源短缺的问题,而且能够有效地避免外部网络的攻击,隐藏保护内网的计算机。
NAT的实现方法分为静态转换(Static NAT)、动态转换(Dynamic
NAT)和端口地址转换NAPT(Port-Level NAT)三种。静态转换是将内网私有IP地址转换为公有IP地址,其IP地址是一一对应的,是最简单、最容易实现的方式。动态转换是将可用的外网IP地址集成NAT池(NAT Poo1),内网IP地址可动态映射到NAT池中的某个IP地址。端口地址转换(Network Address Port Translation, NAPT)采用端口多路复用方式,内网地址映射到可共享的一个外网IP地址的不同端口上,从而最大限度地节约IP地址资源,因此,端口地址转换NAPT也是网络中应用最多的地址转换方式。但是NAPT需要考虑如何有效地管理端口资源,提高地址端口转换性能的问题。
随着网络应用不断涌现,越来越多的网络服务供应商(Service Provider, SP)扩展其增值服务,如虚拟网关等。通过虚拟化单个服务供应商,提高其网关的可扩展性,支持数千个中小企业客户。NAPT是一种虚拟网关服务,网络地址端口转换池(NAPT Pool)需要为成百上千的客户提供网络服务。目前,大多数服务供应商SP要求单个NAPT设备支持2000-4000个IP NAPT Pool,可扩展性问题成为所有网关产品的巨大挑战。现有的NAPT Pool管理方法可分为基于红黑(Red
Black, RB)树和基于位图。基于RB树的NAPT Pool管理方法可以提供很好性能,满足端口地址转换的需求。然而,其需要的高内存占用率将大大影响***的性能。基于位图的管理方法需要依赖于硬件***,如ASIC、FPGA等,占用的内存资源少,但是软件实现的性能较低。
综上所述,如何在接入广域网(WAN)中虚拟网关服务产品中,实现有效的网络地址端口转换池(NAPT Pool)管理方法,使得在不影响端口地址转换性能的前提下,节省内存资源,是需要解决的重要问题。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种基于RB树和位图混合的网络地址端口转换池管理方法,解决NAPT
Pool端口地址转换时性能和内存占用之间的矛盾,在不影响端口地址转换性能的前提下,节省内存资源。
技术方案:一种基于RB树和位图混合的网络地址端口转换池管理方法,包括:
1、构建基于RB树和位图混合的网络地址端口转换池
目前,NAPT支持64K并发的TCP/UDP链接,也就是说每个IP网络地址端口转换池(NAPT
Pool)有64Kbits大小的端口资源。
具体步骤如下:
步骤1:NAPT
Pool中每个IP地址对应于一棵RB树,一棵RB树占用64Kbits存储空间。因此,每个IP地址端口转换池(NAPT
Pool)拥有64KB大小的端口资源。
步骤2:初始化RB树。初始阶段,整个RB树初始化为一个结点,并作为根结点。
2、在基于RB树和位图混合的网络地址端口转换池查找可用的端口
步骤3:遍历RB树查找具有可分配端口资源的结点。在获取可用端口资源时,所有操作都可以通过RB树遍历,找到可以分配端口资源的节点。
步骤4:在RB结点中分配端口号。在RB树中,每个结点占用256bits的储存空间。对于每个RB树结点,采用位图的结构储存端口号信息,每个bit位对应于一个端口号。若某个bit的值为“1”,表示其代表的端口是可用的,未分配;若其值为“0”,表示其代表的端口已分配。也就是说,在RB树中,每个RB树结点管理256个端口,一个256bits位图对应于一个RB树结点。一棵RB树的最大结点数是64KB/256
=256。
因此,在相应的结点中线性查找256bits位图,直至找到某bit的值为“1”即可,此bit的位置作为可用的端口号返回。为了进一步减少CPU时间,提高可用端口资源查找效率,用一个16bits全为“1”的整数,通过“按位与”运算,将16bits位的整数映射为256bits位图的端口号,快速找到可用的端口号。
3、当端口号随机被分配与释放,更新RB树。
步骤5a:若分配的端口号p属于某个RB树结点i可管理的端口号范围内,则将结点i所存储的位图对应的bit值置为“0”。端口号被分配后,资源被占用,不可用再分配。
步骤5b:若某个RB树结点中对应的某个端口号被释放,则将其结点对应位图的bit值置为“1”。端口资源释放后,端口号可以被分配。
步骤5c:若某个RB树结点中所对应的256端口都已分配完毕,即所有bit值都为“0”,则将该结点从RB树中删除,并动态调整RB树。
4、性能分析
(1)内存空间占用情况
对于基于RB树和位图混合的网络地址端口转换池管理方法,一个IP 端口地址转换池对应于一棵RB树,一棵RB树占用64Kbits存储空间,一个IP
NAPT Pool拥有64KB大小的端口资源。在RB树中,每个结点占用256bits的储存空间,一棵RB树最多有256个结点。因此,在最坏情况下,一个IP
NAPT Pool最多需要占用16KB
(256bits×256)内存空间。
基于RB树的算法需要为每个IP地址预分配640KB的存储空间,基于位图的算法需要占用8KB的内存空间。基于RB树和位图的混合算法可以大大地减少内存空间的需求,占用的内存空间是基于RB树算法的1/40,是基于位图算法的2倍。若***需要支持2048个IP端口地址转换池,采用基于RB树和位图的混合算法仅仅需要(2048×16KB)32MB存储空间,这对大多数的防火墙/网关***是可以承受的。
(2)端口资源分配CPU效率
基于RB树和位图的混合算法的RB树最多有256个结点,原有基于RB树算法的RB树最多有32K个结点,因此,在遍历RB树查找具有可分配端口资源时,基于RB树和位图的混合算法在CPU效率上可以大幅度提高。此外,基于RB树和位图的混合算法的RB树要求每个结点存储256个端口资源使用情况,当端口资源的分配与回收后,删除或增加RB树结点的概率大大减少,降低了维护RB树的成本。在遍历RB树方面,基于RB树和位图的混合算法的CPU效率要高于原有的基于RB树的算法。
由此可见,本发明提出的基于RB树和位图混合的网络地址端口转换池管理方法结合了基于RB树和基于位图方法的优点,不仅可以取得与基于RB树算法相同的性能,占用的内存空间大小是基于位图方法的2倍,是基于RB树算法的1/40。如果一个虚拟网关设备需要支持2048个网络地址端口转换池,若采用基于RB树的方法,单个设备需要预分配1.28GB内存空间,而基于RB树和位图混合的方法只需要预分配32MB内存空间即可达到相同的性能。因此,在接入广域网(WAN)中虚拟网关服务产品中,基于RB树和位图混合的网络地址端口转换池管理方法,可以实现有效的网络地址端口转换,使得在不影响端口地址转换性能的前提下,节省内存资源。
附图说明
图1为本发明实施例的方法流程图;
图2为本发明实施例的一个初始化的RB树;
图3为本发明实施例中分配端口号1后的RB树;
图4为本发明实施例中分配端口号2、4、6、9后的RB树。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,结合一个具体实施例介绍本发明的技术方案,包括如下步骤:
步骤1:设置每个IP网络地址端口转换池(NAPT Pool)有64Kbits大小的端口资源。NAPT Pool中每个IP地址对应于一棵RB树,一棵RB树占用64Kbits存储空间。因此,每个IP地址端口转换池(NAPT Pool)拥有64KB大小的端口资源。
步骤2:初始化RB树。初始阶段,整个RB树初始化为一个结点,并作为根结点,如附图2所示。
步骤3:遍历RB树查找具有可分配端口资源的结点。在获取可用端口资源时,所有操作都可以通过RB树遍历,找到可以分配端口资源的节点。
步骤4:分配端口号。在RB树中,每个结点占用256bits的储存空间。对于每个RB树结点,采用位图的结构储存端口号信息,每个bit位对应于一个端口号。若某个bit的值为“1”,表示其代表的端口是可用的,未分配;若其值为“0”,表示其代表的端口已分配。也就是说,在RB树中,每个RB树结点管理256个端口,一个256bits位图对应于一个RB树结点。一棵RB树的最大结点数是64K/256 =256。在相应的结点中线性查找256bits位图,直至找到某bit的值为“1”即可,此bit的位置作为可用的端口号返回。为了进一步减少CPU时间,提高可用端口资源查找效率,用一个16bits全为“1”的整数,通过“按位与”运算,将16bits位的整数映射为256bits位图的端口号,快速找到可用的端口号。端口号1被分配后的RB树,如图3所示。
相对于原有基于RB树的网络地址端口转换池构建方法,基于RB树和位图混合的网络地址端口转换池方法中的RB树结点只代表其一段连续的、未分配的端口号范围。
步骤5:当端口号随机被分配与释放,得到的RB树也随之动态变化。
步骤5a:若分配的端口号p属于某个RB树结点i可管理的端口号范围内,则将结点i所存储的位图对应的bit值置为“0”。如附图4所示,RB树结点A管理的端口号范围为[0, 255],端口号2、4、6、9依次被分配后,使之不可用。
步骤5b:若某个RB树结点中对应的某个端口号被释放,则将其结点对应位图的bit值置为“1”。
步骤5c:若某个RB树结点中所对应的256端口都已分配完毕,即所有bit值都为“0”,则将该结点从RB树中删除。
Claims (3)
1.一种基于RB树和位图混合的网络地址端口转换池管理方法,其中RB树即红黑树,其特征在于,包括以下处理步骤:
步骤1:设置NAPT Pool中每个IP地址对应于一棵RB树,一棵RB树占用64Kbits存储空间,每个NAPT Pool拥有64KB大小的端口资源;其中,NAPT Pool即网络地址端口转换池;
步骤2:初始化RB树;初始阶段,整个RB树初始化为一个结点,并作为根结点;
步骤3:遍历RB树查找具有可分配端口资源的结点;在获取可用端口资源时,所有操作都可以通过RB树遍历,找到可以分配端口资源的结点;
步骤4:在RB结点中分配端口号;在RB树中,对于每个RB树结点,采用位图的结构储存端口号信息,每个bit位对应于一个端口号;每个RB树结点管理256个端口,一个256bits位图对应于一个RB树结点;一棵RB树的最大结点数是64KB/256 =256;
在相应的结点中线性查找256bits位图,直至找到可用端口;
步骤5:当端口号随机被分配与释放,更新RB树。
2.根据权利要求1所述的基于RB树和位图混合的网络地址端口转换池管理方法,其特征在于,所述步骤4中,对于每个RB树结点,采用位图的结构储存端口号信息,每个bit位对应于一个端口号;若某个bit的值为“1”,表示其代表的端口是可用的,未分配;若其值为“0”,表示其代表的端口已分配;在相应的结点中线性查找256bits位图,直至找到某bit的值为“1”即可,此bit的位置作为可用的端口号返回;为了进一步提高可用端口资源查找效率,通过一个16bits的整数,映射为256bits位图的端口号,快速找到可用的端口号。
3.根据权利要求2所述的基于RB树和位图混合的网络地址端口转换池管理方法,其特征在于,所述步骤5中端口号随机分配与释放时,更新RB树的具体步骤如下:
步骤5a:若分配的端口号p属于某个RB树结点i可管理的端口号范围内,则将结点i所存储的位图对应的bit值置为“0”;端口号被分配后,资源被占用,不可用再分配;
步骤5b:若某个RB树结点中对应的某个端口号被释放,则将其结点对应位图的bit值置为“1”;端口资源释放后,端口号可以被分配;
步骤5c:若某个RB树结点中所对应的256端口都已分配完毕,即所有bit值都为“0”,则将该结点从RB树中删除,并动态调整RB树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310676682.3A CN103685600B (zh) | 2013-12-11 | 2013-12-11 | 基于rb树和位图混合的网络地址端口转换池管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310676682.3A CN103685600B (zh) | 2013-12-11 | 2013-12-11 | 基于rb树和位图混合的网络地址端口转换池管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103685600A CN103685600A (zh) | 2014-03-26 |
CN103685600B true CN103685600B (zh) | 2016-08-17 |
Family
ID=50321869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310676682.3A Active CN103685600B (zh) | 2013-12-11 | 2013-12-11 | 基于rb树和位图混合的网络地址端口转换池管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103685600B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506460B (zh) * | 2014-12-29 | 2018-01-26 | 迈普通信技术股份有限公司 | 一种实现napt端口资源分配的方法 |
CN106254577B (zh) * | 2016-09-18 | 2019-04-19 | 东软集团股份有限公司 | 端口分配的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480501B1 (en) * | 1997-12-30 | 2002-11-12 | International Business Machines Corporation | Process for transporting a cell through a switching structure base on a single stage switch |
CN101030165A (zh) * | 2006-03-02 | 2007-09-05 | 腾讯科技(深圳)有限公司 | 一种磁盘空间管理方法及*** |
CN101247421A (zh) * | 2008-03-28 | 2008-08-20 | 杭州华三通信技术有限公司 | 分布式架构下nat地址池的自适应分配方法和*** |
-
2013
- 2013-12-11 CN CN201310676682.3A patent/CN103685600B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480501B1 (en) * | 1997-12-30 | 2002-11-12 | International Business Machines Corporation | Process for transporting a cell through a switching structure base on a single stage switch |
CN101030165A (zh) * | 2006-03-02 | 2007-09-05 | 腾讯科技(深圳)有限公司 | 一种磁盘空间管理方法及*** |
CN101247421A (zh) * | 2008-03-28 | 2008-08-20 | 杭州华三通信技术有限公司 | 分布式架构下nat地址池的自适应分配方法和*** |
Non-Patent Citations (1)
Title |
---|
On Memory Management of Tree-bitmap Algorithm for IP Address Lookup;Yagang Wang等;《Proceedings of the Second Symposium International Computer Science and Computational Technology(ISCSCT"09)》;20091228;第418-422页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103685600A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105893269A (zh) | 一种Linux***下内存管理方法 | |
TWI766893B (zh) | 虛擬專有網路及規則表生成方法、裝置及路由方法 | |
CN110737508A (zh) | 一种基于浪潮云的云容器服务网络***及实现方法 | |
CN103117931A (zh) | 基于哈希表和tcam表的mac地址硬件学习方法及*** | |
CN106375176A (zh) | 一种物理机接入云平台的方法 | |
CN103595772A (zh) | 一种基于虚拟路由器的云数据中心网络部署方案 | |
Lamping et al. | A fast, minimal memory, consistent hash algorithm | |
CN105282269B (zh) | 一种本地dns根服务器的配置方法和服务方法 | |
BR112015017876B1 (pt) | Método de partilha de carga e dispositivo de partilha de carga | |
CN103685600B (zh) | 基于rb树和位图混合的网络地址端口转换池管理方法 | |
ES2693546T3 (es) | Procedimiento de asignación de direcciones lógicas a puertos de conexión de equipos de un clúster de servidores, programa de ordenador y clúster de servidores correspondientes | |
CN104270475A (zh) | 基于NAT64实现IPv4网络与IPv6网络互通的***及方法 | |
CN109921995A (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
CN111130838A (zh) | 一种进程级服务实例动态扩展及网络带宽限制方法及装置 | |
CN104899159B (zh) | 高速缓冲存储器Cache地址的映射处理方法和装置 | |
CN104506460B (zh) | 一种实现napt端口资源分配的方法 | |
CN104539632A (zh) | 一种基于虚拟地址空间的可编程网络设备管理控制方法 | |
CN104092758A (zh) | 一种分布式高速云存储服务器集群***及读取方法 | |
CN112235436A (zh) | 网络地址转换规则匹配方法及设备 | |
CN103167006B (zh) | 虚拟机提供Web服务的方法、虚拟机监控器与*** | |
CN108255597B (zh) | 基于物理功能的mac地址分配虚拟功能的mac地址方法 | |
Gómez-Cárdenas et al. | A resource identity management strategy for combined fog-to-cloud systems | |
CN112929461B (zh) | 一种基于高速互连网络的mpi进程管理接口实现方法 | |
CN103051544A (zh) | 实现IPv4私网接入IPv6网络的方法及接入设备 | |
CN105430058A (zh) | 一种基于网络感知的新型云数据中心资源分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |