一种地址分配方法、装置、设备及存储介质与流程

专利2022-06-29  53


本申请实施例涉及但不限于网络技术,尤其涉及一种地址分配方法、装置、设备及存储介质。



背景技术:

在现代网络中,对交换机的性能、稳定性要求大大提升,普通盒式交换机已无法满足关键网络位置的组网需求,因此堆叠技术应运而生。堆叠技术将多台交换机虚拟成一台交换机,在网络中以一台虚拟的设备来体现,用户只需要操作一次便可使配置生效在所有堆叠成员交换机内。既然多台设备能组成堆叠,堆叠也有可能会分裂成多组堆叠,通常会配置堆叠分裂检测来避免堆叠分裂给网络带来的影响。

如果堆叠产生了分裂,并且配置的堆叠分裂检测也失效,则会有两组配置完全相同的堆叠出现在网络中,而由于堆叠在网络中的位置一般处于核心层,用户往往会为堆叠配置动态主机配置协议(dynamichostconfigurationprotocol,dhcp)服务器。这样,堆叠分裂后,当同时有两个用户向dhcp服务器请求地址时,这两个用户有可能拿到的是同一个网际协议(internetprotocol,ip)地址。当堆叠分裂解决后,两个有着相同ip地址的终端出现在同一局域网内,这将产生ip地址冲突,由于dhcp协议不支持dhcp服务器主动收回ip地址,网络管理员只能手动在终端设备上释放ip地址并重新获取,若不进行干预,两个终端在租约有效期内将会一直出现丢包等网络问题。如果网络管理员没有及时解决堆叠分裂问题,大量终端获取到相同的ip地址,在堆叠合并后将产生灾难性的问题,如果需要解决将耗费大量人力。

针对相关技术中存在的上述问题,目前尚未提出解决方案。



技术实现要素:

有鉴于此,本申请实施例提供一种地址分配方法、装置、设备及存储介质。

本申请实施例的技术方案是这样实现的:

一方面,本申请实施例提供一种地址分配方法,所述方法包括:

当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

确定所述待分配地址归属的目标堆叠成员;

确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

另一方面,本申请实施例提供一种地址分配装置,所述装置包括:

第一确定模块,用于当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

第二确定模块,用于确定所述待分配地址归属的目标堆叠成员;

第三确定模块,用于确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

第一发送模块,用于当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

再一方面,本申请实施例提供一种地址分配设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

再一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。

本申请实施例中,通过将地址池中的ip地址虚拟成若干份,使得每个独立的ip地址只归属于一个堆叠成员,并且dhcp服务器在地址分配时只能分配属于在线状态的堆叠成员的地址。由于堆叠分裂后任意一组堆叠的在线成员均不是其他分裂后堆叠组内的在线成员,因此归属于这些在线成员的地址不允许在其他分裂后堆叠组内分配,这样,堆叠分裂后,不同用户向dhcp服务器请求地址时不会分配到同样的ip地址,从而可以避免在堆叠分裂再次合并后产生ip冲突。

附图说明

图1为本申请实施例提供的一种地址分配方法的实现流程示意图;

图2为本申请实施例提供的一种地址分配方法的实现流程示意图;

图3a为本申请实施例提供的一种地址分配方法的实现流程示意图;

图3b为本申请实施例确定所述待分配地址归属的目标堆叠成员的标识的实现流程示意图;

图4为本申请实施例提供的一种地址分配方法的实现流程示意图;

图5为本申请实施例提供的一种地址分配方法的实现流程示意图;

图6为本申请实施例提供的一种地址分配方法的实现流程示意图;

图7a为本申请实施例提供的一种地址分配方法的实现流程示意图;

图7b为本申请实施例提供的地址分配方法在堆叠分裂前后地址分配的示意图;

图8为本申请实施例提供的一种地址分配装置的组成结构示意图;

图9为本申请实施例中地址分配设备的一种硬件实体示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

为了更好地理解本申请实施例提供的一种地址分配方法,首先对本申请涉及的相关技术进行简单说明。

堆叠技术是一种提高端口可用背板带宽,扩展交换机端口,提高网络可靠性,集中管理多台交换机的技术。

堆叠分裂是指稳态运行的堆叠系统中带电移出部分成员交换机,或者堆叠线缆多点故障导致一个堆叠系统变成多个堆叠系统。堆叠系统分裂后,可能产生多个有相同配置的堆叠系统,导致网络中ip地址和媒体访问控制(mediaaccesscontrol,mac)地址的冲突,引起网络故障。

dhcp即动态主机配置协议,局域网内设备开启该协议后可以从dhcp服务器自动获取ip地址。dhcp是一种广泛运用于局域网中的协议,当设置好dhcp服务器后,终端用户无需知道网关、域名服务(domainnamesystem,dns)地址该如何填写,管理者也不需要为每个人分配具体的ip地址,终端只需要开启dhcp客户端服务,便可以便捷地接入网络。同样地,对于大型网络,为每个设备逐一配置ip地址是既费时间又费人力的,人为的操作还可能引入错误,而开启dhcp客户端服务后,便可以快速完成设备的ip地址分配。

本申请实施例提供一种地址分配方法,图1为本申请实施例提供的一种地址分配方法的实现流程示意图,该方法可以由dhcp服务器执行,如图1所示,该方法包括:

步骤s101,当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

这里,地址池为当前堆叠系统可以分配的地址的资源池,dhcp服务器在为连接在当前堆叠系统中的终端进行地址分配时,从相应的地址池中寻找可用的地址进行分配。在实施时,用户可以在为堆叠系统配置dhcp服务时,配置相应的地址池,dhcp服务器可以通过读取堆叠系统的配置文件确定地址池中的地址。

地址池中的地址可以是ip地址,可用地址可以是地址池中未被分配的ip地址。dhcp服务器可以按照一定的遍历顺序,寻找地址池中的一个可用地址作为待分配地址。在实施时,本领域技术人员可以根据实际情况选择合适的遍历顺序,本申请实施例对此不做限定。

地址池中的每一个地址有且仅归属于一个堆叠成员,这样,归属于任意两个堆叠成员的地址互不重叠。在实施时,可以根据特定的地址与堆叠成员的归属对应关系,按照引用所述地址池的堆叠成员的总数,将地址池中的地址虚拟划分成与所述总数相同的份数,并使每一份地址归属于一个堆叠成员。在一些实施例中,可以为每一堆叠成员划分均等数量的地址。在一些实施例中,也可以根据不同堆叠成员提供的端口数、连接的终端数量等数据,确定归属于各个堆叠成员的地址的数量。

步骤s102,确定所述待分配地址归属的目标堆叠成员;

这里,所述待分配地址归属的目标堆叠成员可以根据上述步骤s101中的地址与堆叠成员的归属对应关系确定。在一些实施例中,所述归属对应关系可以是预先设置后存储在本地的映射关系表,在实施时,可以根据所述待分配地址查询所述映射关系表,得到目标堆叠成员。在一些实施例中,所述归属对应关系也可以通过特定的映射算法来确定,在实施时,可以利用所述待分配地址通过特定的映射算法,得到目标堆叠成员。

步骤s103,确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

这里,在堆叠分裂后,所述终端连接的堆叠组会随着分裂而发生变化,每一堆叠成员在分裂后的不同堆叠组内都会有一个活动状态,所述活动状态用于标识堆叠成员在堆叠组内的是否在线。在实施时,活动状态可以包括在线状态和离线状态。堆叠分裂后,每一堆叠成员仅在一个堆叠组内处于在线状态,在其他堆叠组内处于离线状态,也就是说,堆叠分裂后任意一组堆叠的在线成员均不是其他分裂后堆叠组内的在线成员。

在实施时,可以通过读取本地配置信息,获取到所述目标堆叠成员在所述终端连接的堆叠组中的活动状态。

步骤s104,当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

这里,dhcp服务器只能分配归属于在线状态的堆叠成员的地址。因此,当确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态为在线状态时,将所述待分配地址分配给所述终端。在实施时,dhcp服务器可以向所述终端发送携带所述待分配地址的响应。在一些实施例中,dhcp服务器还可以为所述待分配地址确定一个租约有效期,并在向所述终端发送的携带所述待分配地址的响应中增加所述租约有效期。

在本申请实施例提供的地址分配方法中,通过将地址池中的ip地址虚拟成若干份,使得每个独立的ip地址只归属于一个堆叠成员,并且dhcp服务器在地址分配时只能分配属于在线状态的堆叠成员的地址。由于堆叠分裂后任意一组堆叠的在线成员均不是其他分裂后堆叠组内的在线成员,因此归属于这些在线成员的地址不允许在其他分裂后堆叠组内分配,这样,堆叠分裂后,不同用户向dhcp服务器请求地址时不会分配到同样的ip地址,从而可以避免在堆叠分裂再次合并后产生ip冲突。

本申请实施例提供一种地址分配方法,图2为本申请实施例提供的一种地址分配方法的实现流程示意图,该方法可以由dhcp服务器执行,如图2所示,该方法包括:

步骤s201,当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

步骤s202,确定所述待分配地址归属的目标堆叠成员;

步骤s203,确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

步骤s204,当所述活动状态为在线状态时,将所述待分配地址分配给所述终端;

这里,上述的步骤s201至s204分别对应于前述步骤s101至s104,因此,本领域的技术人员可以参阅前述步骤s101至s104而理解上述的步骤s201至s204,为节约篇幅,这里不再赘述。

步骤s205,当所述活动状态为离线状态时,确定所述地址池中的下一个可用地址为新的待分配地址;回到步骤s202。

这里,当dhcp服务器确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态为离线状态时,则不允许分配该待分配地址,需要在所述地址池中寻找下一个可用的地址,作为新的待分配地址,并通过上述步骤s202至s203确定新的待分配地址是否允许分配,以此类推,直到在所述地址池中寻找的新的待分配地址是允许分配的,则将该新的待分配地址分配给所述终端。在一些实施例中,当所述地址池中的全部可用地址均已遍历完,且未找到允许分配的待分配地址时,dhcp服务器可以向终端发送地址分配失败的响应。

本申请实施例提供一种地址分配方法,图3a为本申请实施例提供的一种地址分配方法的实现流程示意图,该方法可以由dhcp服务器执行,如图3a所示,该方法包括:

步骤s301,当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

步骤s302,通过特定的地址和所述地址归属的堆叠成员的标识之间的映射算法,确定所述待分配地址归属的目标堆叠成员的标识;

这里,可以根据特定的映射算法,按照引用所述地址池的堆叠成员的总数,将地址池中的地址虚拟划分成与所述总数相同的份数,并使每一份地址归属于一个堆叠成员。通过所述映射算法,地址池中的每一地址可以映射至一个唯一的堆叠成员的标识,从而可以确定地址池中的每一个地址归属的堆叠成员,使得归属于任意两个堆叠成员的地址互不重叠。在实施时,本领域技术人员可以根据实际情况选择合适的映射算法,本申请实施例对此并不做限定。

在一些实施例中,映射算法可以是任意合适的散列算法,包括但不限于余数法、折叠法、随机数法等中的任意一种或多种。例如,采用余数法时,可以使用待分配ip地址的整数值对堆叠成员的总数进行取余运算,得到的余数作为目标堆叠成员的标识;采用折叠法时,可以将点分格式的待分配ip地址中每一位对应的数值相加,并判断得到的结果是否小于堆叠成员的总数,当所述结果小于堆叠成员的总数时,将当前结果作为目标堆叠成员的标识,否则继续将得到的结果的每一位对应的数值相加,直至得到目标堆叠成员的标识;采用随机数法时,假设堆叠成员的总数为n,可以选择一个值域为[0,n)的随机函数,取待分配ip地址的整数值作为该随机函数的种子,生成的随机值作为目标堆叠成员的标识。

在一些实施例中,可以通过以下方法确定所述待分配地址归属的目标堆叠成员的标识,如图3b所示,该方法包括:

步骤s311,确定引用所述地址池的堆叠成员的总数;

这里,所述地址池中的地址只能归属于引用该地址池的堆叠成员。引用所述地址池的堆叠成员总数可以通过检测各个堆叠成员是否引用所述地址池来确定,也可以预先将各个地址池和堆叠成员之间的引用关系作为配置信息存储在本地,通过查询该配置信息确定引用所述地址池的堆叠成员的总数。

步骤s312,将所述待分配地址转换为主机字节序格式,得到所述待分配地址的整数值;

这里,根据操作系统和cpu的不同,主机字节序可以是大端字节序也可以是小端字节序,将ip地址转换成主机字节序可以得到点分格式ip地址对应的整数值。

步骤s313,利用所述待分配地址的整数值对所述总数进行取余运算,得到余数;

步骤s314,根据特定的引用所述地址池的堆叠成员的标识的列表,确定序号为所述余数的堆叠成员的标识为目标堆叠成员的标识。

这里,引用所述地址池的堆叠成员的标识的列表可以是预先配置后存储至本地存储器或数据库中的,dhcp服务器可以在需要的时候从本地存储器读取或从数据库中查询。

由于同一个地址池中的ip地址通常是连续的,转换成主机字节序格式后的整数值也能具有同样的连续性,利用转换成主机字节序格式后的ip地址对应的整数值对所述总数进行取余运算,通过将所述余数作为序号确定堆叠成员的标识,这样,可以将地址池内的ip地址更加均匀地映射至各个堆叠成员。

步骤s303,根据所述目标堆叠成员的标识,确定所述目标堆叠成员;

这里,每个堆叠成员都有一个特定的标识,可以根据该标识确定唯一的堆叠成员。

步骤s304,确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

步骤s305,当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

这里,上述的步骤s301、s304、s305分别对应于前述步骤s101、s103、s104,因此,本领域的技术人员可以参阅前述步骤s101、s103、s104而理解上述的步骤s301、s304、s305,为节约篇幅,这里不再赘述。

在一些实施例中,在所述确定引用所述地址池的堆叠成员的总数之前,所述方法还包括:针对当前堆叠系统中的每一所述堆叠成员,确定所述地址池是否被所述堆叠成员引用。

由于可堆叠交换机中可以将地址池配置在物理端口、虚拟局域网(virtuallocalareanetwork,vlan)端口或聚合端口上,因此,在一些实施例中,确定所述地址池是否被所述堆叠成员引用的方式可以包括:当所述地址池配置在物理端口上,且所述物理端口属于所述堆叠成员时,确定所述地址池被所述堆叠成员引用;或者,当所述地址池配置在vlan接口上,且所述堆叠成员有任意一个端口引用所述vlan接口时,确定所述地址池被所述堆叠成员引用;或者,当所述地址池配置在聚合端口上,且所述聚合端口的任意一个成员端口属于所述堆叠成员时,确定所述地址池被所述堆叠成员引用。

在一些实施例中,针对当前堆叠系统中的每一所述堆叠成员,确定所述地址池是否被所述堆叠成员引用后,可以将所述地址池和每一所述堆叠成员之间的引用关系作为配置信息存储在本地。在一些实施例中,还可以将引用所述地址池的堆叠成员的标识按照特定的顺序组成序列字符串、数组或者列表,并存储在本地,在实施时,特定的顺序可以是由大到小的顺序,也可以是由小到大的顺序。

本申请实施例提供一种地址分配方法,该方法可以由dhcp服务器执行,如图4所示,该方法包括:

步骤s401,当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

步骤s402,根据所述待分配地址,查询特定的第一映射关系表,得到目标堆叠成员的标识;其中,所述映射关系表用于表征地址和所述地址归属的堆叠成员的标识之间的对应关系;

这里,第一映射关系表可以是预先确定后存储至本地存储器或数据库中的,dhcp服务器可以在需要的时候从本地存储器读取或从数据库中查询。

步骤s403,根据所述目标堆叠成员的标识,确定所述目标堆叠成员;

步骤s404,确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

步骤s405,当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

这里,上述的步骤s401、s403至s405分别对应于前述步骤s301、s303至s305,因此,本领域的技术人员可以参阅前述步骤s301、s303至s305而理解上述的步骤s401、s403至s405,这里不再赘述。

在一些实施例中,在所述确定所述待分配地址归属的目标堆叠成员之前,所述方法还包括:针对所述地址池中的每一地址,确定每一所述地址归属的堆叠成员的标识;建立每一所述地址和所述地址归属的堆叠成员的标识之间的映射关系;将每一所述映射关系添加至所述第一映射关系表。

这里,可以根据特定的归属对应关系确定地址池中全部地址分别归属的堆叠成员。在实施时,每一地址归属的堆叠成员的标识可以由用户配置,也可以参照前述步骤s302中确定所述待分配地址归属的目标堆叠成员的标识的方法,在此不再赘述。

本申请实施例提供一种地址分配方法,该方法可以由dhcp服务器执行,如图5所示,该方法包括:

步骤s501,当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

步骤s502,确定所述待分配地址归属的目标堆叠成员;

步骤s503,确定所述目标堆叠成员的标识;

步骤s504,确定所述终端连接的堆叠组的标识;

步骤s505,根据所述目标堆叠成员的标识和所述堆叠组的标识,查询特定的第二映射关系表,得到所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;其中,所述第二映射关系表用于表征堆叠成员的标识、堆叠组的标识和堆叠成员的活动状态之间的对应关系;

这里,第二映射关系表用于记录堆叠成员的基础信息,包括当前堆叠系统的全部成员的基础信息,所述基础信息包括但不限于堆叠的标识、堆叠组的标识以及在所述堆叠组的活动状态。每个堆叠成员只在所属的堆叠组中的活动状态为在线状态,在其他堆叠组中的活动状态为离线状态。

在一些实施例中,每一堆叠成员针对堆叠分裂后的每一堆叠组,都会有一条对应的基础信息,在每一堆叠成员的全部基础信息中,只会有一条基础信息中的活动状态为在线状态,其他均为离线状态。

在实施时,堆叠系统可以有一个公共的管控模块,用于记录当前堆叠系统内全部堆叠成员的基础信息,并将记录的基础信息保存至所述第二映射关系表。堆叠分裂后,由于堆叠成员所属的堆叠组会发生变化,所述管控模块还需要根据分裂后各个堆叠成员所述的堆叠组,确定新的各个堆叠成员的基础信息,并更新至第二映射关系表。在堆叠分裂合并后,当前堆叠系统内全部堆叠成员将合并至同一个堆叠组,并在该合并后的堆叠组内均处于在线状态,此时,所述管控模块也需要确定新的各个堆叠成员的基础信息,并更新至第二映射关系表。

步骤s506,当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

这里,上述的步骤s501、s502、s506分别对应于前述步骤s101、s102、s104,因此,本领域的技术人员可以参阅前述步骤s101、s102、s104而理解上述的步骤s501、s502、s506,这里不再赘述。

本申请实施例提供一种地址分配方法,该方法可以由dhcp服务器执行,如图6所示,该方法包括:

步骤s601,当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

步骤s602,确定所述待分配地址归属的目标堆叠成员;

步骤s603,确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

步骤s604,当所述活动状态为在线状态时,将所述待分配地址分配给所述终端;

这里,上述的步骤s601至s604分别对应于前述步骤s101至s104,因此,本领域的技术人员可以参阅前述步骤s101至s104而理解上述的步骤s601至s604,这里不再赘述。

步骤s605,当接收到终端发送的地址续租请求时,确定请求续租的地址归属的目标堆叠成员;

这里,确定请求续租的地址归属的目标堆叠成员,可以参照前述步骤s102中确定所述待分配地址归属的目标堆叠成员的方法。在实施时,终端可以向dhcp服务器发起dhcprequest报文进行续租,dhcp服务器在接收到所述dhcprequest报文后,从所述dhcprequest报文中得到终端请求续租的ip地址,并确定所述请求续租的ip地址归属的目标堆叠成员。

步骤s606,确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

这里,上述的步骤s606对应于前述步骤s103,因此,本领域的技术人员可以参阅前述步骤s103而理解上述的步骤s606,这里不再赘述。

步骤s607,当所述活动状态为在线状态时,向所述终端发送允许续租的响应,并更新租约时间;

这里,当所述活动状态为在线状态时,允许续租并更新租约时间。在实施时,dhcp服务器可以向终端回复dhcpack报文,并在选项字段中增加ip地址的使用租期信息;

步骤s608,当所述活动状态为离线状态时,向所述终端发送拒绝续租的响应。

这里,当所述活动状态为离线状态时,说明所述请求续租的地址不允许分配,则需要拒绝续租。在实施时,dhcp服务器可以向终端回复dhcpnak报文。终端收到dhcpnak报文后,可以重新发起地址请求过程。

由于堆叠系统中已经连接的终端分配的ip地址,在堆叠分裂后可能会归属于与该终端连接的堆叠组不同的其他堆叠组,此时,若所述终端仍然续租该ip地址,会占用该ip地址归属的堆叠成员所在的堆叠组的地址资源,从而影响连接在该堆叠组的终端的ip地址分配。在本申请实施例提供的地址分配方法中,dhcp服务器在处理终端发送的地址续租请求时只允许续租归属于在线状态的堆叠成员的地址。这样,可以避免终端续租归属于其他堆叠组中的堆叠成员的ip地址,保证各个堆叠组有足够的可分配地址。

本申请实施例提供一种地址分配方法,如图7a所示,该方法包括:

步骤s701,堆叠系统的管控模块记录堆叠成员的基础信息;

这里,堆叠系统的管控模块可以是堆叠系统的一个公共模块,所述管控模块记录当前堆叠系统内全部堆叠成员的基础信息,包括活动成员、已分裂成员在内的基础信息,所述基础信息包括堆叠的标识(identity,id)、活动状态、堆叠组id。

堆叠分裂后,堆叠成员对应的堆叠组id和活动状态会发生变化,每个堆叠成员只在所属的堆叠组中的活动状态为在线状态,在其他堆叠组中的活动状态为离线状态。

步骤s702,dhcp服务器计算并保存地址池和堆叠成员之间的引用关系;

这里,dhcp服务器可以依次遍历每一堆叠成员,计算各个地址池是否被该堆叠成员引用。确定地址池是否被该堆叠成员引用的方法可以包括:若地址池配置在物理端口上,且该端口属于该堆叠成员,则认为该块地址池被该堆叠成员引用;若地址池配置在vlan接口上,且该堆叠成员有任意一个端口引用了该vlan,则认为该块地址池被该堆叠成员引用;若地址池配置在聚合口上,且该聚合口的任意一个成员端口属于该堆叠成员,则认为该块地址池被该堆叠成员引用。遍历完每一堆叠成员后,dhcp服务器会计算每块地址池被引用的堆叠成员的数量,并将引用该地址池的堆叠成员的id按照从小到大组成序列字符串,其中,序列字符串中每一个堆叠成员的id占用一个字节。

步骤s703,dhcp服务器在接收到终端发送的地址分配请求时,根据所述堆叠成员的基础信息以及所述地址池和堆叠成员之间的引用关系,为所述终端进行地址分配;

这里,dhcp服务器首先根据所述地址池和堆叠成员之间的引用关系,获取引用每一地址池的堆叠成员总数,并按照堆叠成员总数将每一地址池划分成相应数量的若干块。

当dhcp服务器接收到终端发送的dhcp请求时,会在当前堆叠系统对应的地址池中寻找第一个可用的ip地址,将ip地址的小端字节序对应的整数值对引用该地址池的堆叠成员的总数进行取余运算,得到结果n,取该地址池对应的序列字符串的第n个字节得到堆叠成员id,如果该id对应的堆叠成员在当前终端连接的堆叠组内,则这个ip地址可以被分配,dhcp服务器将所述待分配地址分配给所述终端,否则,寻找下一个可用的ip地址,并按照相同方法判断所述ip地址是否可分配。在实施时,可以通过读取本地配置信息获取到当前堆叠组中该堆叠成员的活动状态,若该堆叠成员为在线状态,则确定该成员在当前终端连接的堆叠组内。

图7b为本申请实施例提供的地址分配方法在堆叠分裂前后地址分配的示意图,如图7b所示,在堆叠分裂前,dhcp地址池200中的所有地址1至10均可使用,用户301发起dhcp请求并分配得到地址1。堆叠分裂后,堆叠组100分裂成由堆叠成员101组成的堆叠组110和由堆叠成员102组成的堆叠组120,堆叠组110允许分配的地址为地址2、4、6、8、10,堆叠组120允许分配的地址为地址1、3、5、7、9,两组堆叠可用的地址互不重叠。用户302通过发起dhcp请求从堆叠成员101分配得到地址2,用户303通过发起dhcp请求从堆叠成员102分配得到地址3,待堆叠合并后每个用户分配的地址互相不会冲突。

步骤s704,dhcp服务器在接收到终端的地址续租请求时,进行续租处理。

这里,若堆叠分裂后终端发起dhcprequest报文进行续租,dhcp服务器可以按照步骤s703中阐述的方法判断该地址是否允许分配,若允许分配则向终端回复dhcpack报文并更新租约时间;若不允许分配则向终端回复dhcpnak报文拒绝续租,终端收到dhcpnak报文后会释放地址并重新获取地址。

基于前述的实施例,本申请实施例提供一种地址分配装置,该装置包括所包括的各模块,可以通过地址分配设备(例如dhcp服务器)中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)或现场可编程门阵列(fpga)等。

图8为本申请实施例地址分配装置的组成结构示意图,如图8所示,所述装置800包括第一确定模块801、第二确定模块802、第三确定模块803和第一发送模块804,其中:

所述第一确定模块801,用于当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

所述第二确定模块802,用于确定所述待分配地址归属的目标堆叠成员;

所述第三确定模块803,用于确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

所述第一发送模块804,用于当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

在一些实施例中,所述装置还包括:第四确定模块,用于当所述活动状态为离线状态时,确定所述地址池中的下一个可用地址为新的待分配地址。相应地,所述第二确定模块还用于确定所述新的待分配地址归属的目标堆叠成员;所述第三确定模块还用于确定所述目标堆叠成员在所述堆叠组中的状态;所述第一发送模块还用于当所述活动状态为在线状态时,将所述新的待分配地址分配给所述终端。

在一些实施例中,所述第二确定模块还用于:通过特定的地址和所述地址归属的堆叠成员的标识之间的映射算法,确定所述待分配地址归属的目标堆叠成员的标识;根据所述目标堆叠成员的标识,确定所述目标堆叠成员。

在一些实施例中,所述第二确定模块还用于:确定引用所述地址池的堆叠成员的总数;将所述待分配地址转换为主机字节序格式,得到所述待分配地址的整数值;利用所述待分配地址的整数值对所述总数进行取余运算,得到余数;根据特定的引用所述地址池的堆叠成员的标识的列表,确定序号为所述余数的堆叠成员的标识为目标堆叠成员的标识。

在一些实施例中,所述第二确定模块还用于:在所述确定引用所述地址池的堆叠成员的总数之前,针对当前堆叠系统中的每一所述堆叠成员,确定所述地址池是否被所述堆叠成员引用。

在一些实施例中,所述第二确定模块还用于:当所述地址池配置在物理端口上,且所述物理端口属于所述堆叠成员时,确定所述地址池被所述堆叠成员引用;或者,当所述地址池配置在vlan接口上,且所述堆叠成员有任意一个端口引用所述vlan接口时,确定所述地址池被所述堆叠成员引用;或者,当所述地址池配置在聚合端口上,且所述聚合端口的任意一个成员端口属于所述堆叠成员时,确定所述地址池被所述堆叠成员引用。

在一些实施例中,所述第二确定模块还用于:根据所述待分配地址,查询特定的第一映射关系表,得到目标堆叠成员的标识;其中,所述映射关系表用于表征地址和所述地址归属的堆叠成员的标识之间的对应关系;根据所述目标堆叠成员的标识,确定所述目标堆叠成员。

在一些实施例中,所述第二确定模块还用于:在所述确定所述待分配地址归属的目标堆叠成员之前,针对所述地址池中的每一地址,确定每一所述地址归属的堆叠成员的标识;建立每一所述地址和所述地址归属的堆叠成员的标识之间的映射关系;将每一所述映射关系添加至所述第一映射关系表。

在一些实施例中,所述第三确定模块还用于:确定所述目标堆叠成员的标识;确定所述终端连接的堆叠组的标识;根据所述目标堆叠成员的标识和所述堆叠组的标识,查询特定的第二映射关系表,得到所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;其中,所述第二映射关系表用于表征堆叠成员的标识、堆叠组的标识和堆叠成员的活动状态之间的对应关系。

在一些实施例中,第二确定模块还用于当接收到终端发送的地址续租请求时,确定请求续租的地址归属的目标堆叠成员;所述第三确定模块还用于确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态。相应地,所述装置还包括:第二发送模块,用于:当所述活动状态为在线状态时,向所述终端发送允许续租的响应,并更新租约时间;当所述活动状态为离线状态时,向所述终端发送拒绝续租的响应。

以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的地址分配方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台地址分配设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。

对应地,本申请实施例提供一种地址分配设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,图9为本申请实施例中地址分配设备的一种硬件实体示意图,如图9所示,该设备900的硬件实体包括:处理器901、通信接口902和存储器903,其中

处理器901通常控制设备900的总体操作。

通信接口902可以使设备通过网络与其他终端或服务器通信。

存储器903配置为存储由处理器901可执行的指令和应用,还可以缓存待处理器901以及设备900中各模块待处理或已经处理的数据,可以通过闪存(flash)或随机访问存储器(randomaccessmemory,ram)实现。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台地址分配设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。


技术特征:

1.一种地址分配方法,其特征在于,所述方法包括:

当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

确定所述待分配地址归属的目标堆叠成员;

确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当所述活动状态为离线状态时,确定所述地址池中的下一个可用地址为新的待分配地址;

确定所述新的待分配地址归属的目标堆叠成员;

确定所述目标堆叠成员在所述堆叠组中的状态;

当所述活动状态为在线状态时,将所述新的待分配地址分配给所述终端。

3.根据权利要求1所述的方法,其特征在于,所述确定所述待分配地址归属的目标堆叠成员,包括:

通过特定的地址和所述地址归属的堆叠成员的标识之间的映射算法,确定所述待分配地址归属的目标堆叠成员的标识;

根据所述目标堆叠成员的标识,确定所述目标堆叠成员。

4.根据权利要求3所述的方法,其特征在于,所述通过特定的地址和所述地址归属的堆叠成员的标识之间的映射算法,确定所述待分配地址归属的目标堆叠成员的标识,包括:

确定引用所述地址池的堆叠成员的总数;

将所述待分配地址转换为主机字节序格式,得到所述待分配地址的整数值;

利用所述待分配地址的整数值对所述总数进行取余运算,得到余数;

根据特定的引用所述地址池的堆叠成员的标识的列表,确定序号为所述余数的堆叠成员的标识为目标堆叠成员的标识。

5.根据权利要求4所述的方法,其特征在于,在所述确定引用所述地址池的堆叠成员的总数之前,所述方法还包括:

针对当前堆叠系统中的每一所述堆叠成员,确定所述地址池是否被所述堆叠成员引用。

6.根据权利要求5所述的方法,其特征在于,所述确定所述地址池是否被所述堆叠成员引用,包括:

当所述地址池配置在物理端口上,且所述物理端口属于所述堆叠成员时,确定所述地址池被所述堆叠成员引用;

或者,当所述地址池配置在vlan接口上,且所述堆叠成员有任意一个端口引用所述vlan接口时,确定所述地址池被所述堆叠成员引用;

或者,当所述地址池配置在聚合端口上,且所述聚合端口的任意一个成员端口属于所述堆叠成员时,确定所述地址池被所述堆叠成员引用。

7.根据权利要求1所述的方法,其特征在于,所述确定所述待分配地址归属的目标堆叠成员,包括:

根据所述待分配地址,查询特定的第一映射关系表,得到目标堆叠成员的标识;其中,所述映射关系表用于表征地址和所述地址归属的堆叠成员的标识之间的对应关系;

根据所述目标堆叠成员的标识,确定所述目标堆叠成员。

8.根据权利要求7所述的方法,其特征在于,在所述确定所述待分配地址归属的目标堆叠成员之前,所述方法还包括:

针对所述地址池中的每一地址,确定每一所述地址归属的堆叠成员的标识;

建立每一所述地址和所述地址归属的堆叠成员的标识之间的映射关系;

将每一所述映射关系添加至所述第一映射关系表。

9.根据权利要求1所述的方法,其特征在于,所述确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态,包括:

确定所述目标堆叠成员的标识;

确定所述终端连接的堆叠组的标识;

根据所述目标堆叠成员的标识和所述堆叠组的标识,查询特定的第二映射关系表,得到所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

其中,所述第二映射关系表用于表征堆叠成员的标识、堆叠组的标识和堆叠成员的活动状态之间的对应关系。

10.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当接收到终端发送的地址续租请求时,确定请求续租的地址归属的目标堆叠成员;

确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

当所述活动状态为在线状态时,向所述终端发送允许续租的响应,并更新租约时间;

当所述活动状态为离线状态时,向所述终端发送拒绝续租的响应。

11.一种地址分配装置,其特征在于,所述装置包括:

第一确定模块,用于当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;

第二确定模块,用于确定所述待分配地址归属的目标堆叠成员;

第三确定模块,用于确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;

第一发送模块,用于当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

12.一种地址分配设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至10任一项所述方法中的步骤。

13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至10任一项所述方法中的步骤。

技术总结
本申请实施例公开了一种地址分配方法、装置、设备及存储介质,其中,所述方法包括:当接收到终端发送的地址分配请求时,确定地址池中的一个可用地址为待分配地址;其中,所述地址池中的一个地址归属于一个堆叠成员;确定所述待分配地址归属的目标堆叠成员;确定所述目标堆叠成员在所述终端连接的堆叠组中的活动状态;当所述活动状态为在线状态时,将所述待分配地址分配给所述终端。

技术研发人员:付翔
受保护的技术使用者:深信服科技股份有限公司
技术研发日:2020.02.10
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-55036.html

最新回复(0)