一种IP地址的分配方法和装置
技术领域
本发明涉及通信技术领域,尤其涉及一种IP地址的分配方法和装置。
背景技术
如图1所示,为一种为业务服务器分配IP地址的组网示意图,在业务服务器上配置有NIC(Network Interface Card,网络适配器)端口和BMC(Baseboard ManagementController,基板管理控制器)端口。通常情况下,业务服务器通过NIC端口传输业务数据,并通过BMC端口传输管理数据。为了方便管理,可以在网络中部署两个DHCP(Dynamic HostConfiguration Protocol动态主机配置协议)服务器,DHCP服务器1为NIC端口分配IP地址1,业务服务器在通过NIC端口传输业务数据时,使用IP地址1。DHCP服务器2为BMC端口分配IP地址2,业务服务器在通过BMC端口传输管理数据时,使用IP地址2。
在业务服务器为NIC端口申请IP地址时,会以广播方式发送DHCP请求报文。DHCP服务器1接收到DHCP请求报文后,向业务服务器返回携带IP地址1的DHCP响应报文1,DHCP服务器2接收到DHCP请求报文后,向业务服务器返回携带IP地址2的DHCP响应报文2。若业务服务器先接收到DHCP响应报文2,则会将IP地址2分配给NIC端口,从而导致IP地址分配错误。
发明内容
本发明提供一种IP地址的分配方法,应用于DHCP服务器,所述方法包括:
接收来自DHCP客户端的DHCP请求报文;
若从所述DHCP请求报文中解析出IP类型标识,则判断本地是否存在所述IP类型标识对应的DHCP地址池;
如果是,则从所述DHCP地址池内选择一个可用的IP地址,并向所述DHCP客户端发送携带所述IP地址的DHCP响应报文;
如果否,则拒绝为所述DHCP客户端分配IP地址。
本发明提供一种IP地址的分配方法,应用于DHCP客户端,所述方法包括:
确定待申请的IP地址对应的IP类型标识;
生成包括所述IP类型标识的DHCP请求报文,并发送所述DHCP请求报文;
接收DHCP服务器返回的DHCP响应报文,所述DHCP响应报文中携带了所述DHCP服务器分配的IP地址;其中,所述DHCP响应报文是所述DHCP服务器在本地存在所述IP类型标识对应的DHCP地址池时发送的。
本发明提供一种IP地址的分配装置,应用于DHCP服务器,所述装置包括:
接收模块,用于接收来自DHCP客户端的DHCP请求报文;
判断模块,用于当从所述DHCP请求报文中解析出IP类型标识时,则判断本地是否存在所述IP类型标识对应的DHCP地址池;
处理模块,用于当判断结果为是时,则从所述DHCP地址池内选择一个可用的IP地址,并向所述DHCP客户端发送携带所述IP地址的DHCP响应报文;
当判断结果为否时,则拒绝为所述DHCP客户端分配IP地址。
本发明提供一种IP地址的分配装置,应用于DHCP客户端,所述装置包括:
确定模块,用于确定待申请的IP地址对应的IP类型标识;
生成模块,用于生成包括所述IP类型标识的DHCP请求报文;
发送模块,用于发送所述DHCP请求报文;
接收模块,用于接收DHCP服务器返回的DHCP响应报文,所述DHCP响应报文携带了所述DHCP服务器分配的IP地址;其中,所述DHCP响应报文是所述DHCP服务器在本地存在所述IP类型标识对应的DHCP地址池时发送的。
基于上述技术方案,本发明实施例中,DHCP服务器在接收到DHCP请求报文后,不是直接为DHCP客户端分配IP地址,而是先判断本地是否存在DHCP请求报文中的IP类型标识对应的DHCP地址池,如果存在,才从DHCP地址池内选择一个可用的IP地址,并向DHCP客户端发送携带IP地址的DHCP响应报文,如果不存在,则直接拒绝为DHCP客户端分配IP地址。这样,就可以只向DHCP客户端发送一个携带特定的DHCP地址池中的IP地址的DHCP响应报文,不会导致IP地址分配错误,以使DHCP客户端得到正确的IP地址。
附图说明
为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是一种为业务服务器分配IP地址的组网示意图;
图2是本发明一种实施方式中的IP地址的分配方法的流程图;
图3是本发明另一种实施方式中的IP地址的分配方法的流程图;
图4是本发明一种实施方式中的DHCP服务器的硬件结构图;
图5是本发明一种实施方式中的IP地址的分配装置的结构图;
图6是本发明一种实施方式中的DHCP客户端的硬件结构图;
图7是本发明一种实施方式中的IP地址的分配装置的结构图。
具体实施方式
在本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发明和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本发明实施例中提出了一种IP地址的分配方法,该方法可以应用于包括DHCP服务器和DHCP客户端的网络中。在一个例子中,该DHCP客户端可以是业务服务器,只是在向DHCP服务器申请IP地址时,作为DHCP客户端。
基于实际需要,DHCP客户端可能不是只申请一个IP地址,而是申请两个以上IP地址,且不同IP地址对应不同类型,不同类型IP地址对应不同DHCP地址池。例如,从DHCP地址池1(10.10.10.0/24)内选择IP地址1(10.10.10.1)分配给DHCP客户端,从DHCP地址池2(20.20.20.0/24)内选择IP地址2(20.20.20.1)分配给DHCP客户端。
在一个例子中,针对DHCP客户端申请两个以上IP地址的过程,DHCP客户端上可以包括两个以上端口,DHCP客户端需要为每个端口申请IP地址。例如,DHCP客户端可以为NIC端口申请IP地址,并为BMC端口申请IP地址。或者,DHCP客户端上可以包括两个以上数据类型,DHCP客户端需要为每个数据类型申请IP地址。例如,DHCP客户端可以为业务数据申请IP地址,并为管理数据申请IP地址。或者,DHCP客户端上可以包括两个以上业务类型,DHCP客户端需要为每个业务类型申请IP地址。例如,DHCP客户端可以为文件传输业务申请IP地址,并为数据库业务申请IP地址。当然,上述过程只是给出了申请两个以上IP地址的示例,在实际应用中并不局限于此,对此不做限制。
在一个例子中,针对每个IP地址对应一个DHCP地址池的过程,则可以在网络中只部署一个DHCP服务器,并在该DHCP服务器上部署所有的DHCP地址池,例如部署DHCP地址池1(10.10.10.0/24)和DHCP地址池2(20.20.20.0/24)。也可以在网络中部署两个以上DHCP服务器,并在每个DHCP服务器上部署一个DHCP地址池,例如在DHCP服务器1上部署DHCP地址池1(10.10.10.0/24),并在DHCP服务器2上部署DHCP地址池2(20.20.20.0/24)。
参见图2所示,为本发明实施例中提出的IP地址的分配方法的流程图,该方法可以应用于DHCP服务器上,且该方法可以包括以下步骤:
步骤201,接收来自DHCP客户端的DHCP请求报文。
步骤202,判断是否从该DHCP请求报文中解析出IP类型标识。
如果是(即从该DHCP请求报文中解析出IP类型标识),则执行步骤203。
步骤203,判断本地是否存在该IP类型标识对应的DHCP地址池。
如果是,则执行步骤204;如果否,则执行步骤205。
步骤204,从该IP类型标识对应的DHCP地址池内选择一个可用的IP地址,并向DHCP客户端发送携带该IP地址的DHCP响应报文。
步骤205,拒绝为DHCP客户端分配IP地址。
针对步骤201和步骤202,在一个例子中,DHCP客户端在需要申请IP地址时,先确定待申请的IP地址对应的IP类型标识,生成包括该IP类型标识的DHCP请求报文,并发送DHCP请求报文。这样,DHCP服务器可以接收到来自DHCP客户端的DHCP请求报文,并从DHCP请求报文中解析出IP类型标识。
针对步骤203-步骤205,DHCP服务器上可以预先配置IP类型标识与DHCP地址池的映射关系,基于此映射关系,DHCP服务器在从DHCP请求报文中解析出IP类型标识之后,就可以判断本地是否存在该IP类型标识对应的DHCP地址池。如果是,则DHCP服务器可以从该IP类型标识对应的DHCP地址池内选择一个可用的IP地址,并向DHCP客户端发送携带该IP地址的DHCP响应报文。如果否,则DHCP服务器可以拒绝为DHCP客户端分配IP地址。
以下结合具体情况对上述步骤201-步骤205的过程进行详细说明。
情况一、DHCP客户端上包括两个以上端口,如NIC端口和BMC端口。
在一个例子中,可以在DHCP客户端上为NIC端口配置IP类型标识1,并为BMC端口配置IP类型标识2。针对只部署一个DHCP服务器的情况,若需要从DHCP地址池1内为NIC端口选择IP地址,并从DHCP地址池2内为BMC端口选择IP地址,则可以在该DHCP服务器上配置IP类型标识1与DHCP地址池1的映射关系,并配置IP类型标识2与DHCP地址池2的映射关系。针对部署DHCP服务器1和DHCP服务器2的情况,若需要从DHCP地址池1内为NIC端口选择IP地址,并从DHCP地址池2内为BMC端口选择IP地址,则可以在DHCP服务器1上配置IP类型标识1与DHCP地址池1的映射关系,并在DHCP服务器2上配置IP类型标识2与DHCP地址池2的映射关系。
在为NIC端口配置IP类型标识1,并为BMC端口配置IP类型标识2之后,在一个例子中,可以在NIC端口的EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)中烧录NIC端口对应的IP类型标识1,并在BMC端口的ROM(Read-Only Memory,只读存储器)中烧录BMC端口对应的IP类型标识2。在另一个例子中,可以在DHCP客户端上直接维护NIC端口与IP类型标识1的对应关系、BMC端口与IP类型标识2的对应关系。
DHCP客户端确定需要为NIC端口申请IP地址时,则可以获取到该NIC端口对应的IP类型标识1(如从NIC端口的EEPROM中获取到IP类型标识1),并生成包括IP类型标识1的DHCP请求报文,并发送该DHCP请求报文。
针对只部署一个DHCP服务器的情况,该DHCP服务器在接收到DHCP请求报文后,可以从DHCP请求报文中解析出IP类型标识1。由于本地存在IP类型标识1对应的DHCP地址池1,因此可以从DHCP地址池1内选择一个可用的IP地址1(10.10.10.1),并向DHCP客户端发送携带该IP地址1的DHCP响应报文,而不会从DHCP地址池2内选择IP地址。针对部署DHCP服务器1和DHCP服务器2的情况,DHCP服务器1在接收到DHCP请求报文后,可以从DHCP请求报文中解析出IP类型标识1。由于本地存在IP类型标识1对应的DHCP地址池1,因此从DHCP地址池1内选择一个可用的IP地址1,并向DHCP客户端发送携带该IP地址1的DHCP响应报文。DHCP服务2在接收到DHCP请求报文后,可以从DHCP请求报文中解析出IP类型标识1。由于本地不存在IP类型标识1对应的DHCP地址池,因此拒绝为DHCP客户端分配IP地址。
针对上述两种情况,DHCP客户端均只会接收到一个DHCP响应报文,并从该DHCP响应报文中解析出IP地址1,并将IP地址1分配给NIC端口,由于IP地址1是DHCP地址池1内的IP地址,因此IP地址分配正确。而且,DHCP客户端在通过NIC端口传输业务数据时,就可以使用IP地址1。
此外,DHCP客户端确定需要为BMC端口申请IP地址时,其IP地址的申请流程与为NIC端口申请IP地址的流程类似,在此不再赘述。最终,可以从DHCP地址池2内选择一个可用的IP地址2(20.20.20.1)分配给BMC端口。DHCP客户端在通过BMC端口传输管理数据时,就可以使用IP地址2。
情况二、DHCP客户端上包括两个以上数据类型,如业务数据和管理数据。
在一个例子中,DHCP客户端上可以通过不同端口传输业务数据和管理数据,例如,通过NIC端口传输业务数据,并通过BMC端口传输管理数据。DHCP客户端上可以通过相同端口传输业务数据和管理数据,即业务数据和管理数据共享一个端口,该端口可以进行业务数据的处理,也可以进行管理数据的处理。
在一个例子中,可以在DHCP客户端上为业务数据配置IP类型标识1,并为管理数据配置IP类型标识2,并在DHCP客户端上直接维护业务数据与IP类型标识1的对应关系、管理数据与IP类型标识2的对应关系。DHCP客户端确定需要为业务数据申请IP地址时,则可以获取到该业务数据对应的IP类型标识1,并生成包括IP类型标识1的DHCP请求报文,并发送该DHCP请求报文。
针对只部署一个DHCP服务器的情况,则可以在DHCP服务器上配置IP类型标识1与DHCP地址池1的映射关系、IP类型标识2与DHCP地址池2的映射关系。DHCP服务器在接收到DHCP请求报文后,从DHCP请求报文中解析出IP类型标识1。由于本地存在IP类型标识1对应的DHCP地址池1,因此从DHCP地址池1内选择一个可用的IP地址1(10.10.10.1),向DHCP客户端发送携带IP地址1的DHCP响应报文,而不会从DHCP地址池2内选择IP地址。
针对部署DHCP服务器1和DHCP服务器2的情况,在DHCP服务器1上配置IP类型标识1与DHCP地址池1的映射关系,在DHCP服务器2上配置IP类型标识2与DHCP地址池2的映射关系。DHCP服务器1在收到DHCP请求报文后,从DHCP请求报文中解析出IP类型标识1。由于本地存在IP类型标识1对应的DHCP地址池1,因此从DHCP地址池1内选择一个可用的IP地址1,并向DHCP客户端发送携带IP地址1的DHCP响应报文。DHCP服务2在收到DHCP请求报文后,从DHCP请求报文中解析出IP类型标识1。由于本地不存在IP类型标识1对应的DHCP地址池,因此拒绝为DHCP客户端分配IP地址。
针对上述两种情况,DHCP客户端均只会接收到一个DHCP响应报文,并从该DHCP响应报文中解析出IP地址1,并将IP地址1分配给业务数据,由于IP地址1是DHCP地址池1内的IP地址,因此IP地址分配正确。而且,DHCP客户端传输业务数据时,就可以使用IP地址1。此外,DHCP客户端为管理数据申请IP地址的流程与为业务数据申请IP地址的流程类似,在此不再赘述。
情况三、DHCP客户端上包括两个以上业务类型,如文件传输业务和数据库业务。对于情况三的处理过程,与情况一、情况二的处理类似,在此不再赘述。
在一个例子中,针对DHCP客户端生成包括IP类型标识的DHCP请求报文的过程,则DHCP客户端可以在DHCP请求报文的指定选项字段中添加该IP类型标识,以得到包括该IP类型标识的DHCP请求报文。而与此相对应的,针对DHCP服务器从DHCP请求报文中解析出IP类型标识的过程,则DHCP服务器可以从DHCP请求报文的指定选项字段中解析出该IP类型标识。
其中,该指定选项字段可以包括但不限于DHCP请求报文中的DHCP选项60字段或者DHCP选项77字段。当然,在实际应用中,指定选项字段还可以为其它DHCP选项字段,本发明实施例中对此指定选项字段不做限制。
对于DHCP选项60字段,可以携带厂商类型信息和配置信息等内容。例如,可以包括1个字节的Option Code(选项码)字段,1个字节的Length(长度)字段,n个字节的Vendorclass Identifier(厂商类别标识)字段。其中,对于Vendor class Identifier字段,其内容可以包括:3个字节的Vendor Name(厂商名称)字段,如厂商的ASCII(American StandardCode for Information Interchange,美国信息交换标准代码)值,如通过483343表示厂商A。1个字节的Device Category(设备类型)字段,如通过01表示服务器,通过02表示交换机等。1个字节的Device Model(设备型号)字段,如通过01表示型号1,通过02表示型号2。1个字节的Port Name(端口名称)字段,如通过01表示NIC端口,通过02表示BMC端口。3个字节或其它长度的Reserved(预留)字段。当然,上述只是给出了DHCP选项60字段的一个示例,DHCP选项60字段还可以包括其它内容,且各字段的长度也可以进行改变,对此DHCP选项60字段的内容不做限制。
在上述DHCP选项60字段的基础上,在一个例子中,可以在Vendor classIdentifier字段的Reserved字段中,携带上述IP类型标识1或者IP类型标识2。
在另一个例子中,可以将DHCP选项60字段的整体内容作为IP类型标识1或者IP类型标识2。例如,Option Code字段的值+Length字段的值+Vendor Name字段的值+DeviceCategory字段的值+Device Model字段的值+Port Name字段的值+Reserved字段的值,就表示了IP类型标识1或者IP类型标识2。
对于DHCP选项77字段,可以用于识别用户所属的类型。同样的,DHCP选项77字段也包含有Reserved字段,而且,DHCP客户端可以在该Reserved字段中,携带上述IP类型标识1或者IP类型标识2,或者,可以将DHCP选项77字段的整体内容作为IP类型标识1或者IP类型标识2,在此不再详加赘述。
在一个例子中,还可以通过DHCP选项60字段或者DHCP选项77字段的多个数值表示IP类型标识1或者IP类型标识2,只要保证IP类型标识1或者IP类型标识2具有唯一性即可。例如,通过DHCP选项60字段的Port Name字段为01,且Reserved字段为111,表示IP类型标识1。通过DHCP选项60字段的Port Name字段为02,且Reserved字段为112,表示IP类型标识2。
在一个例子中,DHCP服务器在从DHCP请求报文中解析出IP类型标识之前,还可以判断本DHCP服务器是否开启IP类型标识解析功能。如果是,则采用本发明实施例的技术方案,执行从DHCP请求报文中解析出IP类型标识的过程以及后续过程。如果否,则采用传统方式进行处理,不再执行从DHCP请求报文中解析出IP类型标识的过程以及后续过程,而是直接从本地的DHCP地址池内选择一个可用的IP地址,并向DHCP客户端发送携带该IP地址的DHCP响应报文,即DHCP服务器不关注IP类型标识,直接返回DHCP响应报文。
在一个例子中,在步骤202中,在判断是否从该DHCP请求报文中解析出IP类型标识后,还可以包括:若没有从该DHCP请求报文中解析出IP类型标识,则判断本地是否存在预先配置的默认DHCP地址池;如果存在,则从预先配置的默认DHCP地址池内选择一个可用的IP地址,并向DHCP客户端发送携带该IP地址的DHCP响应报文;如果不存在,则拒绝为DHCP客户端分配IP地址。
以下结合具体情况对上述过程进行详细说明。
DHCP客户端上包括两个以上端口,如NIC端口和BMC端口。
在一个例子中,可以在DHCP客户端上为NIC端口配置IP类型标识1,且不为BMC端口配置IP类型标识。针对只部署一个DHCP服务器的情况,若需要从DHCP地址池1内为NIC端口选择IP地址,并从DHCP地址池2内为BMC端口选择IP地址,则可以在该DHCP服务器上配置IP类型标识1与DHCP地址池1的映射关系,并在该DHCP服务器上将DHCP地址池2配置为默认DHCP地址池。针对部署DHCP服务器1和DHCP服务器2的情况,若需要从DHCP地址池1内为NIC端口选择IP地址,并从DHCP地址池2内为BMC端口选择IP地址,则可以在DHCP服务器1上配置IP类型标识1与DHCP地址池1的映射关系,并在DHCP服务器2上将DHCP地址池2配置为默认DHCP地址池。
在为NIC端口配置IP类型标识1之后,在一个例子中,可以在NIC端口的EEPROM中烧录NIC端口对应的IP类型标识1。在另一个例子中,可以在DHCP客户端上直接维护NIC端口与IP类型标识1的对应关系。
DHCP客户端确定需要为NIC端口申请IP地址时,则可以获取到该NIC端口对应的IP类型标识1(如从NIC端口的EEPROM中获取到IP类型标识1),并生成包括IP类型标识1的DHCP请求报文,并发送该DHCP请求报文。针对为NIC端口申请IP地址的过程,与上述情况一中的流程相同,在此不再赘述。
DHCP客户端确定需要为BMC端口申请IP地址时,由于没有为BMC端口配置IP类型标识,因此,发送没有携带IP类型标识的DHCP请求报文。
针对只部署一个DHCP服务器的情况,该DHCP服务器在接收到DHCP请求报文后,由于无法从DHCP请求报文中解析出IP类型标识,因此,判断本地是否存在默认DHCP地址池,由于DHCP地址池2被配置为默认DHCP地址池,因此可以从DHCP地址池2内选择一个可用的IP地址,并向DHCP客户端发送携带该IP地址的DHCP响应报文,而不会从DHCP地址池1内选择IP地址。
针对部署DHCP服务器1和DHCP服务器2的情况,DHCP服务器1在接收到DHCP请求报文后,由于无法从DHCP请求报文中解析出IP类型标识,且本地不存在默认DHCP地址池,因此拒绝为DHCP客户端分配IP地址。DHCP服务器2在接收到DHCP请求报文后,由于无法从DHCP请求报文中解析出IP类型标识,且本地存在默认DHCP地址池,因此可以从DHCP地址池2内选择一个可用的IP地址,并向DHCP客户端发送携带该IP地址的DHCP响应报文。
针对上述两种情况,DHCP客户端均只会接收到一个DHCP响应报文,并从该DHCP响应报文中解析出IP地址,并将该IP地址分配给BMC端口,由于该IP地址是DHCP地址池2内的IP地址,因此IP地址分配正确。
针对DHCP客户端上包括两个以上数据类型、两个以上业务类型的处理流程,与上述DHCP客户端上包括两个以上端口的处理流程类似,在此不再赘述。
在一个例子中,上述的DHCP请求报文可以为DHCP Discovery(发现)报文,且该DHCP Discovery报文是一个广播报文。上述的DHCP响应报文可以为DHCP Offer(提供)报文,该DHCP Offer报文是一个单播报文。
基于上述技术方案,本发明实施例中,DHCP服务器在接收到DHCP请求报文后,不是直接为DHCP客户端分配IP地址,而是先判断本地是否存在DHCP请求报文中的IP类型标识对应的DHCP地址池,如果存在,才从DHCP地址池内选择一个可用的IP地址,并向DHCP客户端发送携带IP地址的DHCP响应报文,如果不存在,则直接拒绝为DHCP客户端分配IP地址。这样,就可以只向DHCP客户端发送一个携带特定的DHCP地址池中的IP地址的DHCP响应报文,不会导致IP地址分配错误,以使DHCP客户端得到正确的IP地址。
参见图3所示,为本发明实施例中提出的IP地址的分配方法的流程图,该方法可以应用于DHCP客户端上,且该方法可以包括以下步骤:
步骤301,确定待申请的IP地址对应的IP类型标识。
步骤302,生成包括该IP类型标识的DHCP请求报文,并发送该DHCP请求报文。
步骤303,接收DHCP服务器返回的DHCP响应报文,该DHCP响应报文中携带了DHCP服务器分配的IP地址。其中,该DHCP响应报文是DHCP服务器在本地存在该IP类型标识对应的DHCP地址池时发送的。
在一个例子中,确定待申请的IP地址对应的IP类型标识之前,还可以确定需要为DHCP客户端的端口申请IP地址;或者,确定需要为DHCP客户端的数据类型申请IP地址;或者,确定需要为DHCP客户端的业务类型申请IP地址。
进一步的,针对确定待申请的IP地址对应的IP类型标识的过程,可以包括:若需要为NIC端口申请IP地址,则可以从该NIC端口的EEPROM中获取该NIC端口对应的IP类型标识;或者,若需要为BMC端口申请IP地址,则可以从该BMC端口的ROM中获取该BMC端口对应的IP类型标识。
在一个例子中,针对生成包括IP类型标识的DHCP请求报文的过程,可以包括:在DHCP请求报文的指定选项字段(如DHCP选项60字段或者DHCP选项77字段)中添加IP类型标识,以得到包括IP类型标识的DHCP请求报文。
基于上述技术方案,本发明实施例中,DHCP服务器在接收到DHCP请求报文后,不是直接为DHCP客户端分配IP地址,而是先判断本地是否存在DHCP请求报文中的IP类型标识对应的DHCP地址池,如果存在,才从DHCP地址池内选择一个可用的IP地址,并向DHCP客户端发送携带IP地址的DHCP响应报文,如果不存在,则直接拒绝为DHCP客户端分配IP地址。这样,就可以只向DHCP客户端发送一个携带特定的DHCP地址池中的IP地址的DHCP响应报文,不会导致IP地址分配错误,以使DHCP客户端得到正确的IP地址。
基于与上述方法同样的发明构思,本发明实施例还提供一种IP地址的分配装置,应用在DHCP服务器上。该IP地址的分配装置可通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的DHCP服务器的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图4所示,为本发明提出的IP地址的分配装置所在的DHCP服务器的一种硬件结构图,除了图4所示的处理器、非易失性存储器外,DHCP服务器还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,DHCP服务器还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
如图5所示,为本发明提出的IP地址的分配装置的结构图,包括:
接收模块11,用于接收来自DHCP客户端的DHCP请求报文;
判断模块12,用于当从所述DHCP请求报文中解析出IP类型标识时,则判断本地是否存在所述IP类型标识对应的DHCP地址池;
处理模块13,用于当判断结果为是时,则从所述DHCP地址池内选择一个可用的IP地址,并向所述DHCP客户端发送携带所述IP地址的DHCP响应报文;当判断结果为否时,则拒绝为所述DHCP客户端分配IP地址。
所述判断模块12,还用于当没有从所述DHCP请求报文中解析出IP类型标识时,则判断本地是否存在预先配置的默认DHCP地址池;
所述处理模块13,用于当判断结果为存在时,则从预先配置的默认DHCP地址池内选择一个可用的IP地址,并向所述DHCP客户端发送携带该IP地址的DHCP响应报文;当判断结果为不存在时,则拒绝为所述DHCP客户端分配IP地址。
所述判断模块12,具体用于在从所述DHCP请求报文中解析出IP类型标识的过程中,从所述DHCP请求报文的指定选项字段中解析出IP类型标识。
所述判断模块12,还用于在从所述DHCP请求报文中解析出IP类型标识之前,判断所述DHCP服务器是否开启IP类型标识解析功能;在判断结果为是时,则执行从所述DHCP请求报文中解析出IP类型标识的过程;
所述处理模块13,还用于在判断结果为否时,则从本地的DHCP地址池内选择一个可用的IP地址,并向所述DHCP客户端发送携带该IP地址的DHCP响应报文。
基于与上述方法同样的发明构思,本发明实施例还提供一种IP地址的分配装置,应用在DHCP客户端上。该IP地址的分配装置可通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的DHCP客户端的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图6所示,为本发明提出的IP地址的分配装置所在的DHCP客户端的一种硬件结构图,除了图6所示的处理器、非易失性存储器外,DHCP客户端还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,DHCP客户端还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
如图7所示,为本发明提出的IP地址的分配装置的结构图,包括:
确定模块21,用于确定待申请的IP地址对应的IP类型标识;
生成模块22,用于生成包括所述IP类型标识的DHCP请求报文;
发送模块23,用于发送所述DHCP请求报文;
接收模块24,用于接收DHCP服务器返回的DHCP响应报文,所述DHCP响应报文携带了所述DHCP服务器分配的IP地址;所述DHCP响应报文是所述DHCP服务器在本地存在所述IP类型标识对应的DHCP地址池时发送的。
在一个例子中,所述确定模块21,还用于在确定待申请的IP地址对应的IP类型标识之前,确定需要为所述DHCP客户端的端口申请IP地址;或者,确定需要为所述DHCP客户端的数据类型申请IP地址;或者,确定需要为所述DHCP客户端的业务类型申请IP地址;
所述确定模块21,具体用于在确定待申请的IP地址对应的IP类型标识的过程中,若需要为网络适配器NIC端口申请IP地址,则从所述NIC端口的电可擦可编程只读存储器EEPROM中获取所述NIC端口对应的IP类型标识;或者,
若需要为基板管理控制器BMC端口申请IP地址,则从所述BMC端口的只读存储器ROM中获取所述BMC端口对应的IP类型标识。
在一个例子中,所述生成模块22,具体用于在生成包括所述IP类型标识的DHCP请求报文的过程中,在DHCP请求报文的指定选项字段中添加所述IP类型标识,以得到包括所述IP类型标识的DHCP请求报文。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。