本申请涉及网络通信技术领域,特别涉及实现网络设备之间自动堆叠的方法和装置。
背景技术:
在实际应用中,为了防止网络设备故障后业务中断,通常会采用堆叠技术比如智能弹性框架(irf:intelligentresilientframework)将网络设备堆叠在一起以保证业务的不间断。
但在采用堆叠技术将网络设备堆叠在一起时,需要在各网络设备上手工部署堆叠配置,这会大大增加用户工作量,且容易出错。
比如,图1所示的组网中,若需要采用堆叠技术将设备1和设备2堆叠在一起,则需要手工在设备1、设备2这两台设备上部署堆叠配置,这会加大用户工作量,且因为堆叠配置的内容量比较大,手工部署很容易出错。
技术实现要素:
有鉴于此,本申请提供了实现网络设备之间自动堆叠的方法和装置,以通过自动确定网络设备的堆叠配置来实现网络设备之间的自动堆叠。
具体地,本申请是通过如下技术方案实现的:
一种实现网络设备之间自动堆叠的方法,该方法应用于网络设备,包括:
确定本设备的设备角色;
向邻居设备发送邻居发现报文,邻居发现报文至少携带本设备的设备角色、本设备的桥mac地址;
接收邻居设备发送的邻居发现报文;
若依据接收的邻居发现报文确定本设备与邻居设备之间的拓扑结构发生
变化,则判断本设备和邻居设备进行堆叠的堆叠条件是否满足,如果是,确定用于将本设备和邻居设备堆叠在一起的堆叠配置,依据所述堆叠配置自动实现将本设备和邻居设备堆叠在一起,所述堆叠条件为:本设备的设备角色与接收的邻居发现报文携带的邻居设备的设备角色相同、且本设备的桥mac地址与接收的邻居发现报文携带的邻居设备的桥mac地址不一致。
优选地,所述确定本设备的设备角色包括:
向dhcp服务器获取tftp服务器地址;
从所述tftp服务器地址下载本设备对应的标签文件;
解析所述标签文件,
当解析成功时,确定标签文件中的设备角色为本设备的设备角色;
当解析失败时,确定默认的设备角色为本设备的设备角色。
优选地,所述确定用于将本设备和邻居设备堆叠在一起的堆叠配置包括:
确定本设备的成员编号;
确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号;
确定所述堆叠口包含的成员端口。
优选地,所述确定本设备的成员编号包括:
比较本设备的桥mac地址和邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址;
当本设备的桥mac地址小于邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址时,确定本设备的成员编号为第一成员编号,
当本设备的桥mac地址大于邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址时,确定本设备的成员编号为第二成员编号。
优选地,所述确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号包括:
依据预先设置的成员编号与堆叠口编号的对应关系、以及本设备的成员编号确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号,
其中,当本设备的成员编号为第一成员编号时,所述堆叠口编号为第一堆叠口编号,当本设备的成员编号为第二成员编号时,所述堆叠口编号为第二堆叠口编号。
优选地,所述确定用于将本设备和邻居设备堆叠在一起的堆叠配置进一步包括:启动堆叠配置定时器;
所述确定堆叠口所包含的成员端口包括:
将本设备上接收到邻居设备发送的邻居发现报文的物理端口添加到所述堆叠口的成员端口列表中;
在所述堆叠配置定时器未超时期间,如果再次收到所述邻居设备发送的邻居发现报文,则判断本设备上接收到该邻居设备再次发送的邻居发现报文的物理端口是否已添加至所述成员端口列表中,如果否,将本设备上接收到该邻居设备再次发送的邻居发现报文的物理端口添加至所述成员端口列表中;
依据所述堆叠配置自动实现将本设备和邻居设备堆叠在一起是在堆叠配置定时器超时后执行的。
优选地,所述依据堆叠配置自动实现将本设备和邻居设备堆叠在一起包括:
将所述堆叠配置组成堆叠配置命令行,在本地运行所述堆叠配置命令行以使所述堆叠配置生效并保存;
比较所述堆叠配置中的成员编号与本设备已有的成员编号是否一致,如果否,重启本设备,如果是,从本设备和邻居设备中选择一个需要重启的设备,在本设备被选择为需要重启的设备时,重启本设备,在邻居设备被选择为需要重启的设备时,通知邻居设备重启;
基于所述生效的堆叠配置与邻居设备进行堆叠交互以实现将本设备和邻居设备堆叠在一起。
优选地,所述判断本设备和邻居设备进行堆叠的堆叠条件是否满足之前进一步包括:
检查本设备当前是否已处于堆叠模式,如果否,继续执行判断本设备和邻居设备进行堆叠的堆叠条件是否满足的操作;
其中,本设备当前已处于堆叠模式至少包括:本设备之前已和所述邻居设备或者其他邻居设备堆叠,且与本设备堆叠的邻居设备当前处于工作状态。
优选地,该方法进一步包括:
向dhcp服务器获取预定义的模板文件名;
将所述模板文件名和本设备的设备角色拼接,组成本设备关联的模板文件名;
从所述tftp服务器地址下载本设备关联的模板文件名对应的模板文件,执行模板文件中的命令行:使能邻居发现功能、启动邻居拓扑进程、以及启动堆叠管理进程;
其中,启动邻居拓扑进程用于在使能邻居发现功能后向邻居设备发送邻居发现报文,以及接收邻居设备发送的邻居发现报文,确定本设备与邻居设备之间的拓扑结构是否发生变化;启动堆叠管理进程用于判断本设备和邻居设备进行堆叠的堆叠条件是否满足,以及在满足时收集堆叠配置,并依据堆叠配置自动实现将本设备和邻居设备堆叠在一起。
本申请还提供了一种实现网络设备之间自动堆叠的装置,该装置应用于网络设备,包括:
确定模块,用于确定本设备的设备角色;
邻居发现进程模块,用于向邻居设备发送邻居发现报文,邻居发现报文至少携带本设备的设备角色、本设备的桥mac地址,以及,
接收邻居设备发送的邻居发现报文,依据接收的邻居发现报文确定本设备与邻居设备之间的拓扑结构是否发生变化;
堆叠模块,用于在邻居发现进程模块确定出本设备与邻居设备之间的拓扑结构发生变化时,判断本设备和邻居设备进行堆叠的堆叠条件是否满足,如果是,确定用于将本设备和邻居设备堆叠在一起的堆叠配置,依据堆叠配置自动实现将本设备和邻居设备堆叠在一起,所述堆叠条件为:本设备的设备角色与接收的邻居发现报文携带的邻居设备的设备角色相同、且本设备的桥mac地址与接收的邻居发现报文携带的邻居设备的桥mac地址不一致。
优选地,所述确定模块通过以下步骤确定本设备的设备角色:
向dhcp服务器获取tftp服务器地址;
从所述tftp服务器地址下载本设备对应的标签文件;
解析所述标签文件,
当解析成功时,确定标签文件中的设备角色为本设备的设备角色;
当解析失败时,确定默认的设备角色为本设备的设备角色。
优选地,所述堆叠模块通过以下步骤确定用于将本设备和邻居设备堆叠在一起的堆叠配置:
确定本设备的成员编号;
确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号;
确定所述堆叠口包含的成员端口;
其中,所述堆叠模块确定本设备的成员编号包括:
比较本设备的桥mac地址和邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址;
当本设备的桥mac地址小于邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址时,确定本设备的成员编号为第一成员编号,
当本设备的桥mac地址大于邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址时,确定本设备的成员编号为第二成员编号。
堆叠模块确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号包括:依据预先设置的成员编号与堆叠口编号的对应关系、以及本设备的成员编号确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号,其中,当本设备的成员编号为第一成员编号时,所述堆叠口编号为第一堆叠口编号,当本设备的成员编号为第二成员编号时,所述堆叠口编号为第二堆叠口编号。
优选地,所述堆叠模块确定用于将本设备和邻居设备堆叠在一起的堆叠配置时进一步启动堆叠配置定时器;
所述堆叠模块通过以下步骤确定堆叠口所包含的成员端口:
将本设备上接收到邻居设备发送的邻居发现报文的物理端口添加到所述堆叠口的成员端口列表中;
在所述堆叠配置定时器未超时期间,如果再次收到所述邻居设备发送的邻居发现报文,则判断本设备上接收到该邻居设备再次发送的邻居发现报文的物理端口是否已添加至所述成员端口列表中,如果否,将本设备上接收到该邻居设备再次发送的邻居发现报文的物理端口添加至所述成员端口列表中;
所述堆叠模块在堆叠配置定时器超时后依据所述堆叠配置自动实现将本设备和邻居设备堆叠在一起。
优选地,所述堆叠模块通过以下步骤依据堆叠配置自动实现将本设备和邻居设备堆叠在一起:
将所述堆叠配置组成堆叠配置命令行,在本地运行所述堆叠配置命令行以使所述堆叠配置生效并保存;
比较所述堆叠配置中的成员编号与本设备已有的成员编号是否一致,如果否,重启本设备,如果是,从本设备和邻居设备中选择一个需要重启的设备,在本设备被选择为需要重启的设备时,重启本设备,在邻居设备被选择为需要重启的设备时,通知邻居设备重启;
基于所述生效的堆叠配置与邻居设备进行堆叠交互以实现将本设备和邻居设备堆叠在一起。
优选地,所述堆叠模块判断本设备和邻居设备进行堆叠的堆叠条件是否
满足之前进一步包括:检查本设备当前是否已处于堆叠模式,如果否,继续执行判断本设备和邻居设备进行堆叠的堆叠条件是否满足的操作;其中,本设备当前已处于堆叠模式至少包括:本设备之前已和所述邻居设备或者其他邻居设备堆叠,且与本设备堆叠的邻居设备当前处于工作状态。
通过本申请的以上技术方案可以看出,通过网络设备发送的邻居发现报文携带设备角色实现堆叠发现,通过比较网络设备之间的桥mac地址动态确定用于网络设备之间堆叠的堆叠配置,相比于现有手工部署堆叠配置,在本申请中的动态确定堆叠配置,能够实现同角色、不同桥mac地址的网络设备两两动态发现并自动堆叠。
附图说明
图1是现有堆叠结构示意图;
图2是本申请提供的方法流程图;
图3是本申请提供的实施例示意图;
图4为本申请提供的装置硬件结构示意图;
图5为本申请提供的装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本申请中,能够实现同角色、不同桥mac地址的网络设备两两动态发现并自动堆叠,下面通过图2对本发明提供的方法进行描述:
参见图2,图2为本申请提供的方法流程图。如图2所示,该流程可包括以下步骤:
步骤201,网络设备确定本设备的设备角色。
在实际应用中,会根据网络设备的形态和功能为网络设备设置设备角色,通常,网络设备的设备角色不外乎叶节点(leaf)、脊节点(spine)。为便于存放网络设备的设备角色,会预先配置一个与网络设备相对应的标签文件,与网络设备对应的标签文件至少包含为网络设备设置的设备角色信息、网络设备的标识。这里,网络设备的标识可为网络设备的桥mac地址或者序列号等,本申请并不具体限定。
本发明一实施例中,为避免对网络设备存储结构的改进,将网络设备对应的标签文件存放在独立于网络设备的简单文件传输协议(tftp:trivialfiletransferprotocol)服务器中,而tftp服务器地址可存放于独立于网络设备的动态主机配置协议(dhcp:dynamichostconfigurationprotocol)服务器中。这里,tftp服务器、dhcp服务器可承载在同一台物理服务器中,也可承载在不同的物理服务器中,本发明并不具体限定。
基于此,步骤201中,网络设备确定本设备的设备角色可包括:
步骤a1,网络设备向dhcp服务器获取tftp服务器地址。
本申请中,当网络设备上电启动向dhcp服务器获取ip地址时,dhcp服务器会将tftp服务器地址、为网络设备分配的ip地址一起发送给网络设备。
步骤a2,网络设备从tftp服务器地址下载本设备对应的标签文件。
具体地,步骤a2为:网络设备向tftp服务器地址发送下载请求,下载请求携带了网络设备的标识比如桥mac地址或者序列号,当tftp服务器收到下载请求后,以下载请求携带的网络设备的标识为关键字在本地标签文件中找到包含该关键字的标签文件,将找到的标签文件发送给网络设备。即实现了步骤a2中网络设备从tftp服务器地址下载本设备对应的标签文件的操作。
步骤a3,网络设备解析标签文件,当解析成功时,确定标签文件中的设备角色为本设备的设备角色;当解析失败时,确定本设备的默认设备角色为本设备的设备角色。
在本申请中,网络设备自身会有一个配置文件来存储默认设备角色,默认设备角色可按照网络设备的设备类型定制。比如针对核心交换机,定制的默认设备角色为spine,而针对汇聚交换机,定制的默认设备角色为leaf。
通过步骤a1至步骤a3,能够实现网络设备确定本设备的设备角色。
步骤202,网络设备向邻居设备发送邻居发现报文,邻居发现报文至少携带本设备的设备角色、本设备的桥mac地址。
作为本申请的一个实施例,邻居发现报文可为标准的链路层发现(lldp:linklayerdiscoveryprotocol)报文,在邻居发现报文为lldp报文时,本申请需要对现有的lldp报文进行如下改进:在lldp报文增加私有字段来携带设备角色。当然,邻居发现报文也可为预定义的私有协议报文,本申请并不具体限定。
步骤203,网络设备接收邻居设备发送的邻居发现报文。
步骤204,网络设备若依据接收的邻居发现报文确定本设备与邻居设备之间的拓扑结构发生变化,则判断本设备和邻居设备进行堆叠的堆叠条件是否满足,如果是,确定用于将本设备和邻居设备堆叠在一起的堆叠配置,依据所述堆叠配置自动实现将本设备和邻居设备堆叠在一起,堆叠条件为:本设备的设备角色与接收的邻居发现报文携带的邻居设备的设备角色相同、且本设备的桥mac地址与接收的邻居发现报文携带的邻居设备的桥mac地址不一致。
在本申请中的邻居发现报文还携带了发送邻居发现报文的物理端口标识。当网络设备接收到邻居发现报文时,将本设备收到邻居发现报文的物理端口与邻居发现报文携带的物理端口标识对应的物理端口之间的连接确定为本设备和邻居设备之间的拓扑结构(记为第一拓扑结构),比较第一拓扑结构与本地已存储的本设备与邻居设备之间的拓扑结构(记为第二拓扑结构),如果两者不一致,则认为本设备与邻居设备之间的拓扑结构发生变化。需要注意的是,在本申请,针对以下情况:网络设备确定完上述第一拓扑结构后,发现本地目前还未存储上述的第二拓扑结构,则此种情况下,网络设备可直接确定本设备与邻居设备之间的拓扑结构发生变化。
在堆叠中存在最重要的两个概念:成员编号和堆叠口。成员编号是指网络设备在堆叠里的编号(记为成员编号),要求同一个堆叠里的成员编号唯一。而堆叠口,是指网络设备上用于与其他网络设备堆叠的端口,是一个逻辑口,由至少一个物理端口(称为堆叠口的成员端口)组成。只要完成成员编号的配置和堆叠口的配置(这里,堆叠口的配置主要包含堆叠口的堆叠口编号、堆叠口包含的成员端口),就能实现设备的堆叠了。基于此,步骤204中,确定用于将本设备和邻居设备堆叠在一起的堆叠配置可包括:
步骤b1,确定本设备的成员编号。
步骤b1是通过比较本设备的桥mac地址和邻居设备发送的邻居发现报文携带的邻居设备桥mac地址来确定本设备的成员编号,下文具体实施例描述了如何通过比较本设备的桥mac地址和邻居设备发送的邻居发现报文携带的邻居设备桥mac地址确定本设备的成员编号,这里暂不赘述。
步骤b2,确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号,以及确定该堆叠口包含的成员端口。
步骤b2中确定堆叠口编号是依据步骤b1确定的成员编号实现的,下文具体实施例描述了如何依据成员编号确定堆叠口编号。下文具体实施例还描述了如何确定堆叠口所包含的成员端口,这里暂时均不赘述。
通过步骤b1至步骤b2可以看出,相比于现有技术手工部署堆叠配置,在本申请中,堆叠配置是动态确定的,这样能够实现网络设备之间自主动态堆叠。至于依据堆叠配置自动实现将本设备和邻居设备堆叠在一起,可借鉴现有网络设备依据堆叠配置进行堆叠的技术手段方式,下文具体实施例进行了简要描述。
以上对图2所示流程进行了描述。
在本申请中,步骤202、步骤203都是在网络设备使能了邻居发现功能的前提下通过启动邻居拓扑进程执行的。
其中,邻居发现功能可预先配置在网络设备上并默认使能,也可预先配置在tftp服务器上的模板文件中,由网络设备从tftp服务器上获取模板文件并执行模板文件中的命令行:使能邻居发现功能。
邻居拓扑进程可预先配置在网络设备上,也可预先配置在tftp服务器上的模板文件中,由网络设备从tftp服务器上获取模板文件并执行模板文件中的命令行:启动邻居拓扑进程。邻居拓扑进程在启动后还可依据接收的邻居发现报文确定本设备与邻居设备之间的拓扑结构是否发生变化,步骤204中的依据接收的邻居发现报文确定本设备与邻居设备之间的拓扑结构发生变化可由网络设备启动的邻居拓扑进程执行。
在本申请,判断本设备和邻居设备进行堆叠的堆叠条件是否满足,以及在满足时收集堆叠配置,并依据堆叠配置自动实现将本设备和邻居设备堆叠在一起可通过启动堆叠管理进程执行,而堆叠管理进程可预先配置在网络设备上,也可预先配置在tftp服务器上的模板文件中,由网络设备从tftp服务器上获取模板文件并执行模板文件中的命令行:启动堆叠管理进程。
下面以邻居发现报文为lldp报文为例通过一个具体实施例对图2所示流程进行描述:
如图3所示的组网,存在设备1至设备5共五个网络设备,设备1至设备5的桥mac地址依次为mac1、mac2、mac3、mac4、mac5。其中,设备1、设备2、设备5通过标签文件被配置的设备角色为leaf,设备3、设备4通过标签文件被配置的设备角色为spine。设备1对应的标签文件(记为标签文件1)包含设备1的标识(以mac1为例)、设备1被配置的设备角色leaf;设备2对应的标签文件(记为标签文件2)包含设备2的标识(以mac2为例)、设备2被配置的设备角色leaf;设备3对应的标签文件(记为标签文件3)包含设备3的标识(以mac3为例)、设备3被配置的设备角色spine,设备4对应的标签文件(记为标签文件4)包含设备4的标识(以mac4为例)、设备4被配置的设备角色spine,设备5对应的标签文件(记为标签文件5)包含设备5的标识(以mac5为例)、设备5被配置的设备角色leaf。标签文件1至标签文件5均存储在tftp服务器。
在图3中,dhcp服务器、tftp服务器、以及设备1至设备5都接入至管理网中,并且,设备1、设备2、设备5还都与设备3、设备4连接。
下面基于图2所示的流程描述如何完成设备1、设备2之间的自动堆叠部署,当然,设备3、设备4之间的自动堆叠部署原理类似。
设备1上电启动,向dhcp服务器发送用于请求ip地址的报文。
dhcp服务器接收设备1发送的用于请求ip地址的报文,为设备1分配ip地址,将分配的ip地址与tftp服务器地址、预定义的模板文件名一起发送给设备1。
设备1接收dhcp服务器发送的ip地址与tftp服务器地址、预定义的模板文件名。
设备1保存ip地址,之后就利用该ip地址进行通信。
设备1基于接收的tftp服务器地址向tftp服务器发送下载请求。下载请求携带了设备1的桥mac地址mac1。
tftp服务器收到设备1发送的下载请求后,以设备1的桥mac地址mac1为关键字在本地标签文件中找到包含该关键字的标签文件,即上述的标签文件1。tftp服务器返回标签文件1给设备1。
设备1接收并解析标签文件1,解析成功时,确定标签文件1中的设备角色leaf为本设备的设备角色,当解析失败时,确定设备1本地配置文件中的默认设备角色为本设备1的设备角色。这里以解析成功为例,如此,设备1确定本设备的设备角色为leaf。
设备1将接收的模板文件名和本设备的设备角色拼接,组成本设备关联的模板文件名。优选地,这里的拼接是指在接收的模板文件名和本设备的设备角色之间用下划线连接。
设备1从tftp服务器地址下载本设备关联的模板文件名对应的模板文件,解读下载的模板文件,执行文件中的命令行:使能lldp功能、启动邻居拓扑进程、以及启动堆叠管理进程;初始,各个设备关联的模板文件名对应的模板文件会预先记录至tftp服务器。
设备1基于启动的邻居拓扑进程,在使能lldp功能后,开始定期向邻居设备2发送lldp报文。
假如设备2按照类似设备1的流程也使能了lldp功能和启动了邻居拓扑进程,设备2也会定期向邻居设备1发送lldp报文,基于此,设备1也会收到设备2发送的lldp报文。
当设备1收到设备2发送的lldp报文(记为报文1),设备1收到报文1的物理端口记为端口1_1,解析接收的报文1携带的物理端口标识(记为端口2_2的标识)。则设备1将本设备1上的端口1_1至设备2上的端口2_2的连接确定为设备1与设备2之间的拓扑结构(记为拓扑结构01_02)。
设备1发现本地已存储了本设备1和设备2之间的拓扑结构(记为拓扑结构01_01),拓扑结构01_01为设备1的端口1_1至设备2的端口1_1的连接。
设备1比较拓扑结构01_02与拓扑结构01_01,发现两者不一致,则认为本设备1与设备2之间的拓扑结构发生了变化。
设备1将拓扑结构01_02替换拓扑结构01_01存储。需要说明的是,上述步骤中,当设备1发现本地未存储本设备1和设备2之间的拓扑结构,则直接认为本设备1与设备2之间的拓扑结构发生了变化,此时可直接存储拓扑结构01_02。
设备1基于已启动的堆叠管理进程判断本设备1和设备2进行堆叠的堆叠条件是否满足,堆叠条件为:设备1的设备角色leaf与接收的报文1携带的设备2的设备角色相同、且设备1的桥mac地址与接收的报文1携带的设备2的桥mac地址不一致。
本实施例以设备1判断出上述堆叠条件满足为例,上述堆叠条件不满足的情况与本申请关系不大,不详细描述。
设备1判断出上述堆叠条件满足时,启动堆叠配置定时器。堆叠配置定时器的时长可根据实际情况设置,比如设置45秒。
设备1快速向设备2发送lldp报文以触使设备2及时判断设备2与设备1的拓扑结构是否发生变化,设备2按照设备1判断拓扑结构是否发生变化的操作执行,不再重复描述。
设备1比较本设备1的桥mac地址(mac1)和接收的报文1携带的设备2的桥mac地址(mac2),当设备1发现mac1小于mac2,则确定本设备1的成员编号为第一成员编号。当设备1发现mac1大于mac2,则确定本设备1的成员编号为第二成员编号。在本实施例中,成员编号包含第一编号、第二编号,其中,第一编号优选为1,第二编号优选为2。
设备1依据本设备1的成员编号、以及预先设置的成员编号与堆叠口编号的对应关系,确定本设备1上用于和设备2堆叠的堆叠口的堆叠口编号。在本实施例中,堆叠口编号包含第一堆叠口编号和第二堆叠口编号,其中,第一堆叠口编号优选为左口,第二堆叠口编号优选为右口。在预先设置成员编号与堆叠口编号的对应关系,第一成员编号对应第一堆叠口编号,第二成员编号对应第二堆叠口编号,基于此,当设备1确定出本设备的成员编号为第一成员编号时,则本设备1上用于和设备2堆叠的堆叠口的堆叠口编号为第一堆叠口编号,当设备1确定出本设备的成员编号为第二成员编号时,则本设备1上用于和设备2堆叠的堆叠口的堆叠口编号为第二堆叠口编号。
设备1确定本设备1上用于和设备2堆叠的堆叠口所包含的成员端口。具体地,设备1先将本设备1上接收到的报文1的端口1_1添加到堆叠口的成员端口列表中;这里,在上述启动的堆叠配置定时器未超时期间,如果设备1又收到设备2发送的lldp报文(该lldp报文携带的设备2的桥mac仍为mac2,记为报文2),则判断本设备1接收到报文2的物理端口(记为端口1_2)是否已添加至上述成员端口列表中,如果否,将端口1_2添加至上述成员端口列表中。
设备1在上述步骤中确定出的本设备1的成员编号、本设备1上用于和设备2堆叠的堆叠口的堆叠口编号以及堆叠口包含的成员端口统一记为设备1和设备2堆叠在一起的堆叠配置。
当上述启动的堆叠配置定时器超时,设备1将上述堆叠配置组成堆叠配置命令行,在本地运行所述堆叠配置命令行以使上述堆叠配置生效并保存。
之后,设备1比较上述堆叠配置中的成员编号与本设备1已有的成员编号是否一致,如果否,重启本设备1,如果是,从本设备1和设备2中选择一个需要重启的设备,在本设备1被选择为需要重启的设备时,重启本设备1,在设备2被选择为需要重启的设备时,通知设备2重启。这里,从本设备1和设备2中选择一个需要重启的设备可基于现有堆叠的合并功能执行,这里不再赘述。
设备1基于上述生效的堆叠配置与设备2进行堆叠交互以实现将本设备和邻居设备堆叠在一起。比如设备1将上述堆叠配置中的成员编号、堆叠口所包含的成员端口通过用于堆叠交互的报文发送给设备2,设备2检查收到的成员编号、堆叠口所包含的成员端口是否满足以下堆叠要求:本设备2的成员编号不与收到的成员编号相同、编号为第一堆叠口编号的堆叠口连接编号为第二堆叠口编号的堆叠口、编号为第二堆叠口编号的堆叠口连接编号为第一堆叠口编号的堆叠口。当满足上述要求时,设备2发送加入堆叠的报文,设备1和设备2即实现设备的堆叠。
至此,完成图3所示实施例的描述。
需要说明的是,在上述实施例中,为防止设备1(其他网络设备类似)重复加入堆叠组,则当设备1在执行上述判断本设备1和设备2进行堆叠的堆叠条件是否满足之前可进一步执行以下步骤:
检查本设备1当前是否已处于堆叠模式,其中,本设备1当前已处于堆叠模式至少包括:本设备1之前已和设备2或者其他邻居设备(如设备5)堆叠,且该与本设备1堆叠的邻居设备(比如设备2或者其他邻居设备如设备5)当前处于工作状态;
如果否,继续执行本设备1和设备2进行堆叠的堆叠条件是否满足的步骤。
如果是,即使本设备1与设备2之间的拓扑结构发生变化,也会忽略该变化,结束当前流程,不再执行上述的判断本设备1和设备2进行堆叠的堆叠条件是否满足的步骤。
举一个例子描述,比如,上述具体实施例中,假如设备1之前已和设备5堆叠,且此时设备5处于工作状态(up),则当设备1在确定本设备1与设备2之间的拓扑结构发生了变化后,且在判断本设备1和设备2进行堆叠的堆叠条件是否满足之前,设备1检查出本设备1当前已处于堆叠模式,则设备1忽略本设备1与设备2之间的拓扑结构发生的变化,结束当前流程。
再举一个例子,比如,上述具体实施例中,假如设备1之前已和设备2堆叠,且此时设备2处于工作状态(up),则当设备1后续又确定本设备1与设备2之间的拓扑结构发生了变化后,则设备1在判断本设备1和设备2进行堆叠的堆叠条件是否满足之前,设备1检查出本设备1当前已处于堆叠模式,则设备1忽略本设备1与设备2之间的拓扑结构发生的变化,结束当前流程。通过这两个例子可以看出,在本申请中,同一个设备,如果其处于堆叠模式,其不会再重复堆叠。
以上对本发明提供的方法进行了描述。
与前述方法相对应,本申请还提供了实现网络设备自动堆叠的装置描述。
本申请提供的装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过处理器10将非易失性存储器50中对应的计算机程序指令读取到内存40中运行形成的。从硬件层面而言,如图4所示,为本申请装置的一种硬件结构图,除了图4所示的处理器10、内部总线20、网络接口30、内存40、以及非易失性存储器50之外,还可以根据实际功能,还可以包括其他硬件,对此不再赘述。内存40中存储了本申请提供的装置的结构。
请参考图5,图5为本申请提供的装置结构图。该装置应用于网络设备,如图5所示,该装置可包括:
确定模块,用于确定本设备的设备角色;
邻居发现进程模块,用于向邻居设备发送邻居发现报文,邻居发现报文至少携带本设备的设备角色、本设备的桥mac地址,以及,
接收邻居设备发送的邻居发现报文,依据接收的邻居发现报文确定本设备与邻居设备之间的拓扑结构是否发生变化;
堆叠模块,用于在所述邻居发现进程模块确定出本设备与邻居设备之间的拓扑结构发生变化时,判断本设备和邻居设备进行堆叠的堆叠条件是否满足,如果是,确定用于将本设备和邻居设备堆叠在一起的堆叠配置,依据所述堆叠配置自动实现将本设备和邻居设备堆叠在一起,所述堆叠条件为:本设备的设备角色与接收的邻居发现报文携带的邻居设备的设备角色相同、且本设备的桥mac地址与接收的邻居发现报文携带的邻居设备的桥mac地址不一致。
优选地,所述确定模块通过以下步骤确定本设备的设备角色:
向dhcp服务器获取tftp服务器地址;
从所述tftp服务器地址下载本设备对应的标签文件;
解析所述标签文件,
当解析成功时,确定标签文件中的设备角色为本设备的设备角色;
当解析失败时,确定默认的设备角色为本设备的设备角色。
优选地,所述堆叠模块通过以下步骤确定用于将本设备和邻居设备堆叠在一起的堆叠配置:
确定本设备的成员编号;
确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号;
确定所述堆叠口包含的成员端口;
其中,所述堆叠模块确定本设备的成员编号包括:
比较本设备的桥mac地址和邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址;
当本设备的桥mac地址小于邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址时,确定本设备的成员编号为第一成员编号,
当本设备的桥mac地址大于邻居设备发送的邻居发现报文携带的邻居设备的桥mac地址时,确定本设备的成员编号为第二成员编号。
其中,所述堆叠模块确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号包括:
依据预先设置的成员编号与堆叠口编号的对应关系、以及本设备的成员编号确定本设备上用于和邻居设备堆叠的堆叠口的堆叠口编号,
其中,当本设备的成员编号为第一成员编号时,所述堆叠口编号为第一堆叠口编号,当本设备的成员编号为第二成员编号时,所述堆叠口编号为第二堆叠口编号。
优选地,所述堆叠模块确定用于将本设备和邻居设备堆叠在一起的堆叠配置时进一步启动堆叠配置定时器;
其中,所述堆叠模块通过以下步骤确定堆叠口所包含的成员端口:
将本设备上接收到邻居设备发送的邻居发现报文的物理端口添加到所述堆叠口的成员端口列表中;
在所述堆叠配置定时器未超时期间,如果再次收到所述邻居设备发送的邻居发现报文,则判断本设备上接收到该邻居设备再次发送的邻居发现报文的物理端口是否已添加至所述成员端口列表中,如果否,将本设备上接收到该邻居设备再次发送的邻居发现报文的物理端口添加至所述成员端口列表中;
所述堆叠模块在堆叠配置定时器超时后依据所述堆叠配置自动实现将本设备和邻居设备堆叠在一起。
优选地,所述堆叠模块通过以下步骤依据堆叠配置自动实现将本设备和邻居设备堆叠在一起:
将所述堆叠配置组成堆叠配置命令行,在本地运行所述堆叠配置命令行以使所述堆叠配置生效并保存;
比较所述堆叠配置中的成员编号与本设备已有的成员编号是否一致,如果否,重启本设备,如果是,从本设备和邻居设备中选择一个需要重启的设备,在本设备被选择为需要重启的设备时,重启本设备,在邻居设备被选择为需要重启的设备时,通知邻居设备重启;
基于所述生效的堆叠配置与邻居设备进行堆叠交互以实现将本设备和邻居设备堆叠在一起。
优选地,所述堆叠模块判断本设备和邻居设备进行堆叠的堆叠条件是否满足之前进一步包括:
检查本设备当前是否已处于堆叠模式,如果否,继续执行判断本设备和邻居设备进行堆叠的堆叠条件是否满足的操作;
其中,本设备当前已处于堆叠模式至少包括:本设备之前已和所述邻居设备或者其他邻居设备堆叠,且与本设备堆叠的邻居设备当前处于工作状态。
优选地,所述确定模块进一步向dhcp服务器获取预定义的模板文件名,将所述模板文件名和本设备的设备角色拼接,组成本设备关联的模板文件名,从所述tftp服务器地址下载本设备关联的模板文件名,解读本设备关联的模板文件名,执行文件中的命令行:使能邻居发现功能、启动邻居拓扑进程、以及启动堆叠管理进程。
其中,启动邻居拓扑进程用于所述邻居发现进程模块在使能lldp功能后向邻居设备发送邻居发现报文,以及接收邻居设备发送的邻居发现报文,确定本设备与邻居设备之间的拓扑结构是否发生变化;启动堆叠管理进程用于堆叠模块判断本设备和邻居设备进行堆叠的堆叠条件是否满足,以及在满足时收集堆叠配置,并依据堆叠配置自动实现将本设备和邻居设备堆叠在一起。
至此,完成图5所示的装置结构描述。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。