本发明涉及通信
技术领域:
,特别是涉及一种资源分配方法及装置。
背景技术:
:网络地址转换(NAT,NetworkAddressTranslation)是一种将内部IP地址转换为合法外部IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT的实现方式有三种:静态转换、动态转换和端口多路复用转换。采用端口多路复用方式,内部网络的所有终端均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有终端,有效避免来自Internet的攻击。因此,目前网络中应用最多的就是端口多路复用转换方式。技术实现要素:本发明实施例的目的在于提供一种资源分配方法及装置,以在不增加设备成本的基础上,提高资源分配效率。具体技术方案如下:第一方面,本发明实施例提供了一种资源分配方法,应用于网络处理器NP,所述NP本地保存有端口块信息表、端口块计数器、以及各端口块对应的端口信息表,所述端口块信息表中保存有端口块计数器对应的头端计数器标识,所述端口块计数器中的各计数器中包括端口块标识,以及下一个计数器的标识,各端口块对应的端口信息表中保存有该端口块包括的端口数和起始端口,所述方法包括:当检测到终端上线时,访问本地保存的所述端口块信息表,获取所述端口块信息表中的头端计数器标识;根据该头端计数器标识,访问对应标识的计数器,获取该计数器中包括的端口块标识,以及下一个计数器的标识,使用该下一个计数器的标识更新所述端口块信息表中的头端计数器标识;根据所述端口块标识,访问该端口块对应的端口信息表,获取该端口信息表中包括的端口数和起始端口;根据所述端口数和起始端口,生成所述端口数对应数量的端口计数器,将所述端口计数器的头端计数器标识写入所述端口块对应的端口信息表,将该端口块确定为所述终端对应的端口块。第二方面,本发明实施例提供了一种资源分配装置,应用于网络处理器NP,所述NP本地保存有端口块信息表、端口块计数器、以及各端口块对应的端口信息表,所述端口块信息表中保存有端口块计数器对应的头端计数器标识,所述端口块计数器中的各计数器中包括端口块标识,以及下一个计数器的标识,各端口块对应的端口信息表中保存有该端口块包括的端口数和起始端口,所述装置包括:执行模块,用于当检测到终端上线时,访问本地保存的所述端口块信息表,获取所述端口块信息表中的头端计数器标识;处理模块,用于根据该头端计数器标识,访问对应标识的计数器,获取该计数器中包括的端口块标识,以及下一个计数器的标识,使用该下一个计数器的标识更新所述端口块信息表中的头端计数器标识;所述执行模块,还用于根据所述端口块标识,访问该端口块对应的端口信息表,获取该端口信息表中包括的端口数和起始端口;所述处理模块,还用于根据所述端口数和起始端口,生成所述端口数对应数量的端口计数器,将所述端口计数器的头端计数器标识写入所述端口块对应的端口信息表,将该端口块确定为所述终端对应的端口块。本发明实施例提供了一种资源分配方法及装置,能够由NP为终端设备进行端口块的分配,而不需要借助外部辅助CPU为终端进行端口块的分配,从而不会增加设备成本。并且,不需要NP与外部辅助CPU进行交互,因此,能够较快速的为终端分配其对应的端口块,提高资源分配效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的资源分配方法的流程图;图2为端口块计数器示意图;图3为端口计数器示意图;图4为另一端口计数器示意图;图5为另一端口块计数器示意图;图6为本发明实施例提供的资源分配装置的结构示意图。具体实施方式为了在不增加设备成本的基础上,提高资源分配效率,本发明实施例提供了一种资源分配方法及装置。采用端口多路复用转换方式进行网络地址转换时,为了区分不同的终端,当新终端上线时,可以为该终端分配其对应的端口块,其中,各端口块均有其对应的端口范围。进一步地,当该终端访问不同的网络时,都可以从该端口块中选择一个端口,作为该网络对应的端口。在实际应用中,可以通过部署在运营商网络中的CGN(carrier-gradeNAT,运营商级NAT)进行地址转换。具体地,可以通过CGN设备中的NP(NetworkProcessor,网络处理器)实现网络地址的转换。当新终端上线时,其可以发送协议报文给CGN设备中的NP,NP进而将该报文上送给其外部的辅助CPU,由辅助CPU为该终端分配一个新的端口块。可见,上述资源分配方法,为终端分配端口块时,需要由外部的辅助CPU完成,增加了设备成本。并且,在资源分配过程中,需要NP与外部CPU进行交互,将报文发送给外部辅助CPU,而NP与外部CPU交互过程耗时较高,从而导致资源分配效率较低。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。在本发明实施例中,为了在不增加设备成本的基础上,提高资源分配效率,NP本地可以保存有端口块信息表、端口块计数器、以及各端口块对应的端口信息表。其中,端口块计数器可以为链型结构,或者,也可以为环型结构。当端口块计数器为链型结构时,该链型端口块计数器可以如图1所示。如图1所示,链型端口块计数器可以包括多个计数器,其中,每个计数器均有其对应的标识,且各计数器中均包括端口块标识,以及下一个计数器的标识。如,计数器X1中包括的端口块标识为B1,下一个计数器标识为X2;计数器X2中包括的端口块标识为B2,下一个计数器标识为X3,依次类推,最后一个计数器Xn中包括的端口块标识为Bn,下一个计数器标识为空。端口块信息表中保存有端口块计数器对应的头端计数器标识,以根据该头端计数器标识,访问对应的计数器,进而将该计数器对应的端口块分配给终端。在实际应用中,当NP为终端分配端口块后,有些情况下,如该终端下线时,NP需要将为该终端分配的端口块回收。因此,可选地,端口块信息表中还可以保存端口块计数器对应的尾端计数器标识,以当有终端下线时,根据该尾端计数器标识,回收之前为该终端分配的端口块。并且,NP中保存的计数器确定后,可分配的端口块个数也就确定了。随着为终端分配端口块,可用端口块的个数会越来越少。为了标识可用端口块的个数,在端口块信息表中还可以包括当前可用的端口块个数。如,当端口块计数器为如图1所示的链型结构时,端口块信息表中包括的信息可以如表1所示:头端计数器标识尾端计数器标识端口块个数X1Xnn表1各端口块对应的端口信息表中保存有该端口块包括的端口数和起始端口。一般情况下,各端口块中包括的端口范围是连续的,因此,根据各端口块包括的端口数和起始端口,即可确定该端口块中包括的端口范围。例如,任一端口块的端口信息表可以如表2所示:表2其中,当将该端口块分配给任一终端时,可以根据端口数M和起始端口SP生成相应的端口计数器,并根据该端口计数器写入该头端计数器标识和尾端计数器标识。为了在不增加设备成本的基础上,提高资源分配效率,本发明实施例提供了一种资源分配方法过程,如图2所示,该过程可以包括以下步骤:S101,当检测到终端上线时,访问本地保存的所述端口块信息表,获取所述端口块信息表中的头端计数器标识。在本发明实施例中,当NP检测到终端上线时,其可以访问本地保存的端口块信息表,获取该端口块信息表中的头端计数器标识。在实际应用中,当终端上线时,其将向NP发送协议报文。因此,在本发明实施例中,当NP接收到终端发送的协议报文时,可以确定该终端上线了。这种情况下,NP可以获取端口块信息表中包括的头端计数器标识。如,以表1所示的端口块信息表为例,NP获取的头端计数器标识可以为X1。S102,根据该头端计数器标识,访问对应标识的计数器,获取该计数器中包括的端口块标识,以及下一个计数器的标识,使用该下一个计数器的标识更新所述端口块信息表中的头端计数器标识。当NP获取到头端计数器标识后,其可以根据该头端计数器标识,访问对应标识的计数器,获取该计数器中包括的端口块标识,以及下一个计数器的标识。并且,NP可以使用该下一个计数器的标识更新所述端口块信息表中的头端计数器标识,以在下一次为其他终端分配端口块时,获取到准确的头端计数器标识。如,当NP获取的头端计数器标识为X1时,其可以访问如图1所示的计数器X1,获取其中包括的端口块标识B1,以及下一个计数器标识X2。进而,NP可以将如表1所示的端口块信息表中的头端计数器标识更新为X2。S103,根据所述端口块标识,访问该端口块对应的端口信息表,获取该端口信息表中包括的端口数和起始端口。NP获取到端口块标识后,其可以访问该端口块对应的端口信息表,获取该端口信息表中包括的端口数和起始端口。如,当NP获取到端口块标识B1后,其可以在本地保存的端口信息表中,访问端口块B1对应的端口信息表,并获取其中包括的端口数和起始端口。端口块B1对应的端口信息表可以如表3所示:表3S104,根据所述端口数和起始端口,生成所述端口数对应数量的端口计数器,将所述端口计数器的头端计数器标识写入所述端口块对应的端口信息表,将该端口块确定为所述终端对应的端口块。获取到端口块对应的端口数和起始端口后,NP可以根据该端口数和起始端口,生成该端口数对应数量的端口计数器。即NP可以生成数量等于该端口数的端口计数器,并按照预设的计数器标识规则,为各计数器分配其对应的标识。如,可以将第一个计数器的标识设为A1,第二个计数器的标识设为A2等等。如,当NP根据表3所示的端口信息表,获取到的B1端口块对应的端口数为100,起始端口为1时,其可以生成如图3所示的端口计数器。如图3所示,计数器A1中包括的端口为1,下一个计数器标识为A2;计数器A2中包括的端口为2,下一个计数器标识为A3,依次类推,最后一个计数器的标识为A100,其中包括的端口为100,下一个计数器标识为空。生成相应的端口计数器后,NP可以根据该端口计数器,将该端口计数器的头端计数器标识写入端口块对应的端口信息表,将该端口块确定为终端对应的端口块。更新后的端口块B1对应的端口信息表可以如表4所示:表4可选地,NP将端口块计数器的头端计数器中的端口块分配给终端后,还可以将端口块计数器中头端计数器删除,以避免将该端口块重复分配给其他终端,保证端口块分配的准确性。本发明实施例提供了一种资源分配方法,能够由NP为终端设备进行端口块的分配,而不需要借助外部辅助CPU为终端进行端口块的分配,从而不会增加设备成本。并且,不需要NP与外部辅助CPU进行交互,因此,能够较快速的为终端分配其对应的端口块,提高资源分配效率。进一步地,在本发明实施例中,端口块信息表中还可以包括当前可用的端口块个数。这种情况下,NP在获取端口块信息表中的头端计数器标识之前,可以判断端口块信息表中的端口块个数是否大于0,如果是,继续获取端口块信息表中的头端计数器标识,为终端分配端口块;如果否,说明端口块资源不足,终端上线失败。当端口块信息表中包括当前可用的端口块个数时,NP将端口块确定为终端对应的端口块之后,其可以将端口块信息表中的端口块个数减1。进一步地,在实际应用中,当终端访问外部网络时,NP需要为终端分配各网络对应的端口。具体地,当NP检测到终端访问外部网络时,可以读取该终端对应的端口块的端口信息表,获取该端口信息表中包括的头端计数器标识。进而可以访问端口计数器中对应标识的计数器,获取该计数器中包括的端口,以及下一个计数器的标识。使用该下一个计数器的标识更新端口信息表中的头端计数器标识;将所获取的端口确定为终端对应所述网络的端口。如,NP可以读取如表4所示的端口信息表。从而,NP可以获取该端口信息表中的头端计数器标识A1。进一步地,NP可以访问如图3所示的端口计数器中的A1计数器,获取到其中包括的端口1,以及下一个计数器的标识A2。NP可以将端口1确定为该终端对应该网络的端口。并且,可以使用计数器标识A2更新端口信息表中的头端计数器标识。可选地,NP将头端计数器中的端口分配给终端后,还可以将端口计数器中头端计数器删除,以避免将该端口重复分配给该终端对应其他网络的端口,保证端口分配的准确性。进一步地,在本发明实施例中,端口信息表中还可以包括剩余端口数。这种情况下,NP在获取端口信息表中的头端计数器标识之前,可以判断端口信息表中的剩余端口数是否大于0,如果是,继续获取端口信息表中的头端计数器标识,为终端分配端口;如果否,说明端口资源不足,端口分配失败。当端口信息表中包括剩余端口数时,NP将端口确定为终端对应该网络的端口之后,其可以将端口信息表中的剩余端口数减1。为终端分配端口后,端口信息表可以更新为如表5所示:表5进一步地,在本发明实施例中,当NP为终端分配了其对应某一网络的端口后,NP可以检测该终端是否结束访问该网络了,如果是,可以将分配给该终端对应该网络的端口回收。在本发明实施例中,为了使NP能够回收分配给终端对应某一网络的端口,NP在为该终端分配端口块时,生成为该终端分配的端口块对应的端口计数器后,还可以根据该端口计数器,将该端口计数器的尾端计数器标识写入该端口块对应的端口信息表中。如,当NP将B1端口块分配给终端时,可以根据如图3所示的端口计数器,将尾端计数器标识A100写入该端口块对应的端口信息表中。也就是说,端口块B1对应的端口信息表可以为如表6所示:表6在实际应用中,NP可以检测终端是否结束访问某一网络,如果是,则读取该终端对应的端口块的端口信息表,获取该端口信息表中包括的尾端计数器标识;获取新计数器,将该计数器中的端口设置为该终端对应该网络的端口;根据所获取的尾端计数器标识,访问端口计数器中对应标识的计数器,将该计数器中的下一个计数器的标识更新为该新计数器的标识,并将端口信息表中的尾端计数器标识更新为该新计数器的标识,将端口信息表中的剩余端口数加1。如,当NP将端口1分配给终端对应某一网络的端口,且检测到该终端结束访问该网络时,NP可以读取如表6所述的端口信息表,获取尾端计数器标识A100。获取新计数器,如将新计数器的标识设置为A101,将该计数器中的端口设置为该终端对应该网络的端口1。并将计数器A100中的下一个计数器标识更新为A101。并且,还可以将端口信息表中的尾端计数器标识更新为A101,将端口信息表中的剩余端口数加1。更新后的端口计数器如图4所示,此时,头端计数器为A2,尾端计数器为A101。尾端计数器A101中包括的端口为1。更新后的端口信息表如表7所示:表7可见,当终端不再访问网络时,其对应的端口块的端口信息表中包括的端口与初始值相同。进一步地,在本发明实施例中,当NP为终端分配了其对应的端口块后,NP可以检测该终端是否下线,如果是,可以将分配给该终端的端口块回收。在本发明实施例中,为了使NP能够回收分配给终端的端口块,NP本地保存的端口块信息表中还可以包括端口块计数器的尾端计数器标识。即,NP中可以保存如表1所示的端口块信息表。在实际应用中,NP可以检测终端是否下线,如果是,则读取端口块信息表,获取该端口块信息表中包括的尾端计数器标识;获取新计数器,将该计数器中的端口块标识设置为该终端对应的端口块标识;根据所获取的尾端计数器标识,访问多个端口块计数器中对应标识的计数器,将该计数器中的下一个计数器的标识更新为该新计数器的标识,并将端口块信息表中的尾端计数器标识更新为该新计数器的标识,将端口块信息表中的端口块个数加1。如,当NP将端口块B1分配给终端,且检测到该终端下线时,NP可以读取如表1所述的端口块信息表,获取尾端计数器标识Xn。获取新计数器,如将新计数器的标识设置为Xn+1,将该计数器中的端口块设置为该终端对应的端口块B1。并将计数器Xn中的下一个计数器标识更新为Xn+1。并且,还可以将端口块信息表中的尾端计数器标识更新为Xn+1,将端口块信息表中的端口块个数加1。更新后的端口块计数器如图5所示,此时,头端计数器为X2,尾端计数器为Xn+1。尾端计数器Xn+1中包括的端口块标识为B1。更新后的端口块信息表如表8所示:头端计数器标识尾端计数器标识端口块个数X2Xn+1n表8可见,当终端下线时,端口块信息表中包括的端口块信息与初始值相同。相应于上面的方法实施例,本发明实施例还提供了相应的装置实施例。图6为本发明实施例提供的一种资源分配装置,应用于网络处理器NP,所述NP本地保存有端口块信息表、端口块计数器、以及各端口块对应的端口信息表,所述端口块信息表中保存有端口块计数器对应的头端计数器标识,所述端口块计数器中的各计数器中包括端口块标识,以及下一个计数器的标识,各端口块对应的端口信息表中保存有该端口块包括的端口数和起始端口,所述装置包括:执行模块610,用于当检测到终端上线时,访问本地保存的所述端口块信息表,获取所述端口块信息表中的头端计数器标识;处理模块620,用于根据该头端计数器标识,访问对应标识的计数器,获取该计数器中包括的端口块标识,以及下一个计数器的标识,使用该下一个计数器的标识更新所述端口块信息表中的头端计数器标识;所述执行模块610,还用于根据所述端口块标识,访问该端口块对应的端口信息表,获取该端口信息表中包括的端口数和起始端口;所述处理模块620,还用于根据所述端口数和起始端口,生成所述端口数对应数量的端口计数器,将所述端口计数器的头端计数器标识写入所述端口块对应的端口信息表,将该端口块确定为所述终端对应的端口块。本发明实施例提供了一种资源分配装置,能够由NP为终端设备进行端口块的分配,而不需要借助外部辅助CPU为终端进行端口块的分配,从而不会增加设备成本。并且,不需要NP与外部辅助CPU进行交互,因此,能够较快速的为终端分配其对应的端口块,提高资源分配效率。进一步地,所述端口块信息表中还包括当前可用的端口块个数;所述执行模块610,还用于判断所述端口块信息表中的端口块个数是否大于0;所述处理模块620,还用于将所述端口块信息表中的端口块个数减1。进一步地,所述端口计数器中的各计数器包括一个端口,以及下一个计数器的标识;所述执行模块610,还用于当检测到所述终端访问外部网络时,读取所述终端对应的端口块的端口信息表,获取所述端口信息表中包括的头端计数器标识;所述处理模块620,还用于根据该头端计数器标识,访问所述端口计数器中对应标识的计数器,获取该计数器中包括的端口,以及下一个计数器的标识,使用该下一个计数器的标识更新所述端口信息表中的头端计数器标识;将所获取的端口确定为所述终端对应所述网络的端口。进一步地,所述端口信息表中还包括剩余端口数;所述执行模块610,还用于判断所述端口信息表中的剩余端口数是否大于0;所述处理模块620,还用于将所述端口信息表中的剩余端口数减1。进一步地,所述处理模块620,还用于根据所述端口计数器,将所述端口计数器的尾端计数器标识写入所述端口块对应的端口信息表;所述执行模块610,还用于当检测到所述终端结束访问所述网络时,读取所述终端对应的端口块的端口信息表,获取所述端口信息表中包括的尾端计数器标识;所述处理模块620,还用于获取新计数器,将该计数器中的端口设置为所述终端对应所述网络的端口;根据所述获取的尾端计数器标识,访问所述端口计数器中对应标识的计数器,将该计数器中的下一个计数器的标识更新为该新计数器的标识,并将所述端口信息表中的尾端计数器标识更新为该新计数器的标识,将所述端口信息表中的剩余端口数加1。进一步地,所述端口块信息表中还保存有所述多个端口块计数器的尾端计数器标识;所述执行模块610,还用于当检测到所述终端下线时,读取所述端口块信息表,获取所述端口块信息表中的尾端计数器标识;所述处理模块620,还用于获取新计数器,将该计数器中的端口块标识设置为所述终端对应的端口块标识;根据所述获取的尾端计数器标识,访问所述端口块计数器中对应标识的计数器,将该计数器中的下一个计数器的标识更新为该新计数器的标识,并将所述端口块信息表中的尾端计数器标识更新为该新计数器的标识,将所述端口块信息表中的端口块个数加1。对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页1 2 3