首页> 中国专利> 分布式架构下的网络地址转换端口资源分配方法及系统

分布式架构下的网络地址转换端口资源分配方法及系统

摘要

本发明提供了一种分布式架构下的网络地址转换(NAT)端口资源分配方法,适用于包括主控板及一个以上业务板的分布式环境,该方法包括:在主控板上统一管理NAT端口资源,各业务板根据本板的NAT业务量向主控板请求端口资源;主控板根据业务板的请求为业务板分配空闲的端口资源,然后业务板使用分配的端口资源进行NAT转换。相应地,本发明还提供了一种分布式架构下的NAT端口资源分配系统。利用本发明提供的技术方案,能够提高NAT端口资源利用率。

著录项

  • 公开/公告号CN101262506A

    专利类型发明专利

  • 公开/公告日2008-09-10

    原文格式PDF

  • 申请/专利权人 杭州华三通信技术有限公司;

    申请/专利号CN200810104576.7

  • 发明设计人 邹旭东;胡鹏飞;常向青;张雪锋;

    申请日2008-04-21

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

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人宋志强;麻海明

  • 地址 310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地

  • 入库时间 2023-12-17 20:41:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-09-05

    专利权的转移 IPC(主分类):H04L29/12 专利号:ZL2008101045767 登记生效日:20230821 变更事项:专利权人 变更前权利人:新华三技术有限公司 变更后权利人:北京紫光通信科技集团有限公司 变更事项:地址 变更前权利人:310052 浙江省杭州市滨江区长河路466号 变更后权利人:100088 北京市海淀区知春路7号致真大厦B座24层

    专利申请权、专利权的转移

  • 2017-05-03

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L29/12 变更前: 变更后: 申请日:20080421

    专利权人的姓名或者名称、地址的变更

  • 2012-05-23

    授权

    授权

  • 2008-12-10

    实质审查的生效

    实质审查的生效

  • 2008-09-10

    公开

    公开

说明书

技术领域

本发明涉及网络通信技术,尤其涉及分布式架构下的网络地址转换(NAT,Network Address Translation)端口资源分配方法及系统。

背景技术

NAT是一种将因特网协议(IP,Internet Protoc0l)数据报报头中的IP地址转换为另一个IP地址的技术,主要用于实现私有网络访问公共网络的功能。NAT的一种变形是网络地址端口转换(NAPT,Network Address PortTranslation),NAPT允许将多个私网地址映射到同一个公网地址的不同端口上,实现多个私网终端共享同一公网地址,这样有助于缓解公网地址资源紧缺的问题。图1示出了NAPT应用示意图,不同私网终端192.168.1.2和192.168.1.3发出的两个报文经过路由器时,它们的源私网IP地址都被转换成了路由器出接口的公网IP地址20.1.1.1,并通过使用不同的端口来区分;当发往私网终端的反向报文到达时,路由器再进行反向地址转换,使反向报文正确到达私网终端。

目前,NAT技术已在路由器、防火墙等安全设备上得到了广泛应用。由于安全设备在进行攻击检测和主动防御时要消耗大量的CPU资源,而采用集中式处理架构的安全设备又很难突破其在性能上的瓶颈,无法满足用户对高性能高带宽的需求,因此采用分布式架构的安全设备就应运而生。图2示出了采用分布式架构的安全设备结构示意图,包括主控板、接口和多个业务板,且业务板与接口分离,其中,各业务板用于完成业务分布式处理,接口负责完成业务的分发及发送,主控板用于对各业务板和接口进行全局控制。

在图2所示的分布式架构下,如果各个业务板共用NAT地址池,使用相同的IP地址进行NAT转换,则很容易产生资源分配冲突的问题。比如,在图2中,假设各个业务板都共用某个接口的IP地址20.1.1.1进行NAT转换,则当来自不同私网终端192.168.1.2和192.168.1.3的两个报文分别被传送到不同的业务板上处理时,这两个报文的源私网地址都将被转换成公网地址20.1.1.1,并且很可能都被映射到同一端口如1025上,从而造成端口资源分配冲突,也就是说,一个公网地址和端口(20.1.1.1:1025)分别对应(192.168.1.2:21)和(192.168.1.3:80)这两个不同的私网地址和端口。在这种情况下,当目的地址和端口为(20.1.1.1:1025)的反向报文到达安全设备后,安全设备将无法确定应该将该报文发往192.168.1.2还是192.168.1.3,从而引起通信混乱,导致这两个连接都无法正常工作。

为了解决上述端口资源分配冲突的问题,通常所采取的手段是:对端口资源进行静态划分,为各个业务板分别配置不同的端口使用范围,如将业务板1的端口范围配置成(1025~30000),将业务板2的端口范围配置成(30001~65535),各业务板分别从自身的端口范围中选取端口进行NAT转换,以避免端口资源分配冲突。

上述静态配置端口资源的方案虽然能够解决端口资源分配冲突的问题,但是,由于接口板流量分发的不均匀,很可能导致某个业务板上因业务流较多已使用完分配的端口资源,而另一个业务板上因业务流较少还剩大量端口资源未被使用。在这种情况下,当新的业务流到达端口资源已使用完毕的业务板时,就会因端口分配失败而造成报文处理失败,并最终导致报文被丢弃,然而实际上此时其它业务板上仍有大量的端口资源可供使用。可见,采用静态配置端口资源的方式,容易造成整机在远未达到最大规格的情况下,就已经不能正常处理业务了,从而造成端口资源的浪费。另外,由于各业务板上的端口资源是静态配置的,因此当其中某个业务板发生故障或者不在位的情况下,该业务板上的端口资源并不能够被其它业务板所使用,这样也会造成端口资源的浪费。

发明内容

有鉴于此,本发明的目的在于提供一种分布式架构下的NAT端口资源分配方法及系统,提高NAT端口资源利用率。

为达到上述目的,本发明提供的技术方案如下:

一种分布式架构下的NAT端口资源分配方法,适用于包括主控板及一个以上业务板的分布式环境,该方法包括:

在主控板上统一管理NAT端口资源,各业务板根据本板的NAT业务量向主控板请求端口资源;主控板根据业务板的请求为业务板分配空闲的端口资源,然后业务板使用分配的端口资源进行NAT转换。

所述端口资源在主控板上以端口块形式组织,所述主控板根据业务板的请求为业务板分配空闲端口资源包括:主控板根据业务板的请求为业务板分配空闲的端口块,并通过板间通信将分配的端口块信息通知业务板。

该方法进一步包括:业务板将释放的端口块信息发送给主控板,主控板收到后将相应端口块释放到空闲状态。

所述主控板将所有空闲端口块串起来形成空闲端口块链表,所述为业务板分配空闲的端口块包括:主控板从空闲端口块链表中获取空闲的端口块分配给业务板,并将已分配的端口块从空闲端口块链表中删除;所述将相应端口块释放到空闲状态包括:主控板将相应端口块插入到空闲端口块链表中。

该方法进一步包括:设置申请阈值和释放阈值,业务板统计本板的可用端口块个数,当可用端口块个数小于申请阈值时,业务板向主控板请求端口资源;当可用端口块个数大于释放阈值时,业务板向主控板释放端口资源。

所述业务板通过指针数组记录本板所有已申请到的端口块,并设置指向下一个可用端口块的指针,以及针对各申请到的端口块,分别设置用于记录本端口块中各端口使用状态的端口数组及用于表示本端口块中下一个可用端口在本端口块中相对位置的可用位置参数;

所述业务板使用分配的端口资源进行NAT转换包括:业务板通过所述指向下一个可用端口块的指针获取当前可用的端口块,根据该端口块对应的可用位置参数确定可用的端口,然后使用该端口进行NAT转换,并将端口数组中该端口的状态设置为已使用,且判断当前端口块中的所有端口是否都已被使用,如果是,则将当前端口块对应的可用位置参数设置为无效,并从指针数组中找到下一个可用的端口块,更新所述指向下一个可用端口块的指针指向该找到的端口块,同时可用端口块个数减1;否则,将当前端口块对应的可用位置参数调整为下一个可用端口的位置。

该方法进一步包括:业务板将未使用的端口状态设置为空闲,并通过该端口的端口号找到其所属端口块,在该端口块对应的可用位置参数无效时,将该可用位置参数调整为本次释放的端口位置;如果该端口块的所有端口都已释放,则可用端口块个数加1;如果本次释放之前该业务板上的端口已使用完毕,则调整所述指向下一个可用端口块的指针指向本次释放的端口所属的端口块。

一种分布式架构下的NAT端口资源分配系统,适用于包括主控板及一个以上业务板的分布式环境,所述主控板包括端口资源管理单元,所述业务板包括端口资源申请单元和NAT业务处理单元,其中,

端口资源管理单元,用于管理NAT端口资源,并接收业务板发来的端口资源请求,根据业务板的请求为业务板分配空闲的端口资源,将分配的端口资源信息通知业务板;

端口资源申请单元,根据自身所在业务板的NAT业务量向主控板发送端口资源请求,接收主控板返回的端口资源信息并保存;

NAT业务处理单元,从端口资源申请单元中获取可用端口进行NAT转换。

所述端口资源管理单元以端口块形式组织端口资源,根据业务板的请求为业务板分配空闲的端口块,并通过板间通信将分配的端口块信息通知业务板。

所述端口资源申请单元进一步将业务板释放的端口块信息发送给主控板;主控板的端口资源管理单元收到后将相应端口块释放到空闲状态。

所述端口资源管理单元将所有空闲端口块串起来形成空闲端口块链表,从空闲端口块链表中获取空闲的端口块分配给业务板,将已分配的端口块从空闲端口块链表中删除,并将业务板释放的端口块插入到空闲端口块链表中。

所述端口资源申请单元进一步统计本板的可用端口块个数,当可用端口块个数小于设置的申请阈值时,向主控板请求端口资源;当可用端口块个数大于设置的释放阈值时,向主控板释放端口资源。

所述端口资源申请单元通过指针数组记录本板所有已申请到的端口块,并设置指向下一个可用端口块的指针,以及针对各申请到的端口块,分别设置用于记录本端口块中各端口使用状态的端口数组及用于表示本端口块中下一个可用端口在本端口块中相对位置的可用位置参数;

所述NAT业务处理单元通过所述指向下一个可用端口块的指针获取当前可用的端口块,根据该端口块对应的可用位置参数确定可用的端口,然后使用该端口进行NAT转换,并将端口数组中该端口的状态设置为已使用,且判断当前端口块中的所有端口是否都已被使用,如果是,则将当前端口块对应的可用位置参数设置为无效,并从指针数组中找到下一个可用的端口块,更新所述指向下一个可用端口块的指针指向该找到的端口块,同时可用端口块个数减1;否则,将当前端口块对应的可用位置参数调整为下一个可用端口的位置。

所述NAT业务处理单元进一步将未使用的端口状态设置为空闲,并通过该端口的端口号找到其所属端口块,在该端口块对应的可用位置参数无效时,将该可用位置参数调整为本次释放的端口位置;如果该端口块的所有端口都已释放,则可用端口块个数加1;如果本次释放之前该业务板上的端口已使用完毕,则调整所述指向下一个可用端口块的指针指向本次释放的端口所属的端口块。

由此可见,本发明中各个业务板上的端口资源不是静态配置的,而是主控板根据各板的NAT业务量需求动态分配的,这样就不会产生某个业务板上端口资源已经耗尽而另一业务板上还剩大量端口资源未使用的情况,从而实现了端口资源的合理分配,减少了端口资源浪费,提高了端口资源利用率。同时,由于主控板为业务板分配的是空闲的端口资源,因此也不会造成端口资源分配冲突的问题。

附图说明

图1为现有技术中的NAPT应用示意图;

图2为现有技术中采用分布式架构的安全设备结构示意图;

图3为本发明实施例中主控板上的端口块组织方式示意图;

图4为本发明实施例中主控板上的端口块分配/释放流程图;

图5为本发明实施例中业务板上的端口块组织方式示意图;

图6为本发明实施例中业务板上的端口分配流程图;

图7为本发明实施例中业务板上的端口释放流程图;

图8为本发明实施例中的NAT端口资源分配系统结构示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。

本发明的基本思想是:在主控板上统一管理NAT端口资源,各个业务板根据本板的NAT业务量向主控板请求端口资源,主控板根据业务板的请求为业务板分配空闲的端口资源。也就是说,各个业务板上的端口资源不是静态配置的,而是主控板根据各板的NAT业务量需求动态分配的,这样就不会产生某个业务板上端口资源已经耗尽而另一业务板上还剩大量端口资源未使用的情况,从而实现了端口资源的合理分配,减少了端口资源浪费,提高了端口资源利用率。同时,由于主控板为业务板分配的是空闲的端口资源,因此也不会造成端口资源分配冲突的问题。

在具体实现时,可以将所有端口资源划分成若干个端口块(每个端口块中包含若干个端口),由主控板对所有端口块进行统一管理。当业务板因业务需要向主控板发出端口资源请求时,主控板为提出请求的业务板分配空闲的端口块,之后业务板使用主控板分配的端口块中所包含的端口进行NAT转换;当业务板不再使用分配的端口块时,业务板发送端口块释放请求给主控板,主控板收到后释放相应的端口块到空闲状态。

其中,端口块的大小可根据实际需求进行设置。比如,当可用端口范围是63K(1025~65535)时,可以将全部端口资源划分成63块,每块包含1024个端口。并且,每个端口块对应一个端口块索引ulBlockIndex,用来唯一标识一个端口块。通过端口块索引可以计算出对应端口块的端口范围,如当所述63个端口块的ulBlockIndex依次为1、2、...、63时,各端口块的端口范围即为(((1024×ulBlockIndex)+1)~1024×(ulBlockIndex+1))。主控板把某个端口块分配给业务板后,业务板就可以根据该端口块索引计算可使用的端口范围。

对于分成的各端口块,主控板可采取图3所示链表的方式进行组织(当然也可以采取其它组织方式,这里仅以链表为例进行说明),将所有未被使用的端口块串起来形成一个空闲端口块链表。图4示出了主控板基于空闲端口块链表进行端口块分配/释放的流程图,包括以下步骤:

步骤401:主控板接收业务板发来的消息,并判断该消息类型,如果是端口块申请消息,则执行步骤402;如果是端口块释放消息,则执行步骤404。

步骤402:主控板访问空闲端口块链表,判断空闲端口块链表是否为空,如果为空,则通知业务板端口资源耗尽,没有可用的端口资源,结束本流程;如果不为空,则执行步骤403。

步骤403:主控板从空闲端口块链表中取出空闲端口块分配给业务板,通过板间通信将分配的端口块信息(如端口块索引)告知业务板,同时将已分配的端口块从空闲端口块链表中删除,然后结束本流程。

步骤404~405:主控板从收到的端口块释放消息中取出释放的端口块信息,并将该端口块插入到空闲端口块链表中。

以上对主控板上的端口资源管理方式作了详细阐述,下面对业务板上的端口维护情况进行详细说明。

图5示出了一种业务板上的端口块组织方式示意图,其中,指针数组ppstPortBlock用于记录本业务板上所有已申请到的端口块,指针数组的大小与端口块个数一致,当可用端口范围(1025~65535)被划分成63块,每块包含1024个端口时,指针数组的大小就为63。初始情况下,ppstPortBlock上的所有指针都为空;当收到从主控板分配来的索引为ulBlockIndex的端口块时,指针ppstPortBlock[ulBlockIndex]指向分配到的端口块。另外,图5中的nextavailIndex指向下一个可用的端口块,availblknum记录本业务板上可用的端口块个数。

针对可用的端口块个数,可以设置两个阈值:申请阈值和释放阈值,业务板根据本板记录的availblknum及设置的申请或释放阈值决定是否向主控板申请或释放端口块资源。具体而言即:当本板availblknum小于设置的申请阈值时,业务板向主控板申请新的端口块资源;当本板availblknum大于设置的释放阈值时,业务板向主控板发送端口块释放请求,主动将部分可用的端口块资源退还给主控板。

针对各个已分配的端口块,业务板可采取位图方式来维护各端口块中的端口使用情况。如图5所示,数组ulPort[32]用于记录端口块中1024个端口的使用状态,其中包含32个元素,每个元素长度为32比特(bit),每个bit分别代表本端口块中的一个端口。如果某个端口对应的bit为1,则表示该端口已被使用;如果为0,则表示该端口未被使用,处于空闲状态。ulNextPortWord表示下一个可用端口在本端口块中的相对位置,其中,ulNextPortWord/32为该端口在数组ulPort[32]中的元素位置,ulNextPortWord%32为该端口在数组元素中的bit位置。

图6示出了业务板基于图5所示的端口块组织方式而进行的端口分配流程图,包括以下步骤:

步骤601:业务板收到需进行NAT转换的业务流后,查看nextavailIndex是否有效,如果有效,则执行步骤602;否则,表示本板上没有可用的端口资源,结束本流程。

步骤602:通过nextavailIndex找到下一个可用的端口块。

步骤603:查看该可用端口块的ulNextPortWord是否有效,如果有效,则执行步骤604;否则,表示该端口块中的端口已使用完毕,结束本流程。

步骤604:通过ulNextPortWord找到可用的端口,并将该端口在数组中对应的bit置为1,表示该端口已被使用。

其中,可用端口的端口号为(nextavailIndex×1024+ulNextPortWord)。该端口在数组ulPort[32]中对应的bit位置通过以下步骤获得:首先计算ulNextPortWord/32找到该端口在数组ulPort[32]中的元素位置,然后再计算ulNextPortWord%32找到该端口在数组元素中的bit位置。

步骤605:判断该端口块中的所有端口是否都已被使用,即判断该端口块对应的ulPort[32]数组中的所有bit是否都为1,如果是,则表示该端口块中的端口已被使用完毕,执行步骤606;否则,表示该端口块中还有可用端口,执行步骤607。

步骤606:将该端口块的ulNextPortWord设置为无效(如全F),表示该端口块中的端口已使用完毕;并且,从指针数组ppstPortBlock中找到下一个可用的端口块,更新nextavailIndex指向该找到的可用端口块,同时更新将availblknum,将availblknum减1。如果更新后的availblknum小于设置的申请阈值,业务板就向主控板申请新的端口块。

步骤607:将该端口块的ulNextPortWord调整为该端口块中下一个可用端口的位置,即下一个bit为0的位置。

图7示出了业务板基于图5所示的端口块组织方式而进行的端口释放流程图,包括以下步骤:

步骤701:当业务板不再使用某端口时,通过该端口的端口号PortNumber找到该端口所属的端口块,所属端口块索引等于(PortNumber/1024)。

步骤702:计算((PortNumber%1024)/32)找到该端口在其所属端口块所对应的数组ulPort[32]中的元素位置,再计算((PortNumber%1024)%32)找到该端口在数组元素中的bit位置。

步骤703:判断找到的bit位是否为0,若是,则表示该bit位对应的端口已经释放,结束本流程;否则,执行步骤704。

步骤704:将找到的bit位设置为0。

步骤705:查看该端口块的ulNextPortWord是否有效,若无效,则执行步骤706;若有效,则执行步骤707。

步骤706:将该端口块的ulNextPortWord调整为本次释放的端口位置,然后执行步骤707。

步骤707:判断该端口块的所有端口是否都已释放,若是,则执行步骤708;否则,执行步骤709。

步骤708:将可用端口块个数availblknum加1,然后执行步骤709。

如果更新后的availblknum大于设置的释放阈值,业务板则向主控板发送端口块释放消息,请求释放该端口块。

步骤709:判断释放此端口之前该业务板上的端口是否已经使用完毕,如果已使用完毕即nextavailIndex为无效值,则执行步骤710,将nextavailIndex指向当前端口块;否则,结束本流程。

上述实施例通过分级管理的思想实现了端口资源的管理,即主控板负责端口块的分配和释放,业务板负责具体端口的分配和释放,主控板与业务板之间只进行端口块信息的交互,而无需针对各具体端口进行繁琐交互,这样可以减少主控板与业务板之间的交互信息量。

相应地,针对包括主控板及一个以上业务板的分布式环境,本发明还提供了一种分布式架构下的NAT端口资源分配系统。图8示出了该系统的示例性结构示意图,如图8所示,主控板包括端口资源管理单元,业务板包括端口资源申请单元和NAT业务处理单元。其中,端口资源管理单元,用于管理NAT端口资源,并接收业务板发来的端口资源请求,根据业务板的请求为业务板分配空闲的端口资源,将分配的端口资源信息通知业务板;端口资源申请单元,根据自身所在业务板的NAT业务量向主控板发送端口资源请求,接收主控板返回的端口资源信息并保存;NAT业务处理单元,从端口资源申请单元中获取可用端口进行NAT转换。

较佳地,端口资源管理单元可以以端口块形式组织端口资源,根据业务板的请求为业务板分配空闲的端口块,并通过板间通信将分配的端口块信息通知业务板。

具体实现时,端口资源管理单元可以将所有空闲端口块串起来形成空闲端口块链表,从空闲端口块链表中获取空闲的端口块分配给业务板,将已分配的端口块从空闲端口块链表中删除,并将业务板释放的端口块插入到空闲端口块链表中。

其中,业务板上的端口资源申请单元还进一步用于将业务板释放的端口块信息发送给主控板;主控板的端口资源管理单元收到后将相应端口块释放到空闲状态。

较佳地,端口资源申请单元还可进一步设置申请阈值和释放阈值,并统计本板的可用端口块个数,当可用端口块个数小于设置的申请阈值时,向主控板请求端口资源;当可用端口块个数大于设置的释放阈值时,向主控板释放端口资源。

具体实现时,端口资源申请单元可以通过指针数组记录本板所有已申请到的端口块,并设置指向下一个可用端口块的指针,以及针对各申请到的端口块,分别设置用于记录本端口块中各端口使用状态的端口数组及用于表示本端口块中下一个可用端口在本端口块中相对位置的可用位置参数。

在收到NAT业务流后,NAT业务处理单元可以通过所述指向下一个可用端口块的指针获取当前可用的端口块,并根据该端口块对应的可用位置参数确定可用的端口,然后使用该端口进行NAT转换,并将端口数组中该端口的状态设置为已使用,且判断当前端口块中的所有端口是否都已被使用,如果是,则将当前端口块对应的可用位置参数设置为无效,并从指针数组中找到下一个可用的端口块,更新所述指向下一个可用端口块的指针指向该找到的端口块,同时可用端口块个数减1;否则,将当前端口块对应的可用位置参数调整为下一个可用端口的位置。

当某端口不再被使用时,NAT业务处理单元进一步将未使用的端口状态设置为空闲,并通过该端口的端口号找到其所属端口块,在该端口块对应的可用位置参数无效时,将该可用位置参数调整为本次释放的端口位置;如果该端口块的所有端口都已释放,则可用端口块个数加1;如果本次释放之前该业务板上的端口已使用完毕,则调整所述指向下一个可用端口块的指针指向本次释放的端口所属的端口块。

以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号