发明内容
本发明的目的就是解决目前纵向虚拟化环境中无配置设备难以被发现的问题,提供一种虚拟化成员设备及邻居发现方法。
本发明解决其技术问题,采用的技术方案是,虚拟化成员设备,包括处理模块,其特征在于,还包括侦听模块、报文解析记录模块及链路汇聚创建模块,
所述处理模块,用于启动后判断是否存在配置文件,若是则加载配置文件,根据所加载的配置文件与其他虚拟化成员设备形成纵向虚拟化,正常工作,否则开启设备发现任务,通知侦听模块开始侦听发现协议报文,并将自身设置为不能转发报文的同时不影响链路层发现协议,且开始计时,若计时达到预设时间,则查询报文解析记录模块中是否有发现协议报文,若有则命令报文解析记录模块对其进行解析,并将自身设置为能够转发报文,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发,正常工作,若查询报文解析记录模块中没有发现协议报文则将自身设置为能够转发报文,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发;若接收到链路汇聚对应端口列表信息则将其发送给链路汇聚创建模块;
所述侦听模块,用于对自身所有端口可能收到的发现协议报文进行监听,若监听到发现协议报文,则将其发送给报文解析记录模块,否则不进行处理;
所述报文解析记录模块,用于记录监听到的发现协议报文,并根据处理模块命令对其进行解析,得到邻居信息,发送给链路汇聚创建模块;
所述链路汇聚创建模块,用于根据邻居信息在本地创建与对应上游邻居互联的链路汇聚,并将接收到该发现协议报文的端口加入该链路汇聚,生成链路汇聚对应端口列表信息并反向发送给对应的上游邻居,若接收到处理模块发送来的链路汇聚对应端口列表信息则创建一个新的动态链路汇聚,并将该链路汇聚对应端口列表信息中的端口加入到该动态链路汇聚中。
具体的,所述将自身设置为不能转发报文的同时不影响链路层发现协议是指:将所有端口的生成树状态设置为阻塞Blocking状态;
所述将自身设置为能够转发报文是指:将所有端口的生成树状态设置为转发Forwarding状态。
进一步的,所述邻居信息包括邻居MAC地址、发送端口列表信息及接收端口列表信息。
具体的,所述计时达到预设时间后,处理模块先判断本机是否被配置为管理设备或是否被强制退出设备发现任务,若被配置为管理设备或被强制退出设备发现任务则清空报文解析记录模块中的数据,结束发现过程,否则查询报文解析记录模块中是否有发现协议报文。
再进一步的,所述处理模块在开启设备发现任务的同时,生成一个计数值为0,当其查询报文解析记录模块中是否有发现协议报文时,若没有发现协议报文,则将计数值加1,并判断当前计数值是否超过预设计数值,若是则将自身设置为能够转发报文,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发,正常工作,否则将计时清零,并重新开始计时。
虚拟化成员设备的邻居发现方法,应用于上述虚拟化成员设备中,其特征在于,包括以下步骤:
步骤1、虚拟化成员设备启动,判断是否存在配置文件,若是则加载配置文件,根据所加载的配置文件与其他虚拟化成员设备形成纵向虚拟化,正常工作,否则进入步骤2;
步骤2、虚拟化成员设备开启设备发现任务,开始侦听发现协议报文,并将自身设置为不能转发报文的同时不影响链路层发现协议,且开始计时;
步骤3、侦听时对自身所有端口可能收到的发现协议报文进行监听,若监听到发现协议报文,则记录监听到的发现协议报文,否则不进行处理;
步骤4、时刻判断计时是否达到预设时间,若达到则进入步骤5,否则回到步骤3;
步骤5、查询是否有监听到发现协议报文,若有则进入步骤6,若没有则进入步骤7;
步骤6、解析并记录监听到的发现协议报文,得到邻居信息,根据邻居信息在本地创建与对应上游邻居互联的链路汇聚,并将接收到该发现协议报文的端口加入该链路汇聚,生成链路汇聚对应端口列表信息并反向发送给对应的上游邻居,进入步骤7;
步骤7、将自身设置为能够转发报文,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发,正常工作;
步骤8、正常工作时,若接收到链路汇聚对应端口列表信息则将创建一个新的动态链路汇聚,并将该链路汇聚对应端口列表信息中的端口加入到该动态链路汇聚中。
具体的,步骤2中,所述将自身设置为不能转发报文的同时不影响链路层发现协议是指:将所有端口的生成树状态设置为阻塞Blocking状态;
步骤7中,所述将自身设置为能够转发报文是指:将所有端口的生成树状态设置为转发Forwarding状态。
进一步的,步骤6中,所述邻居信息包括邻居MAC地址、发送端口列表信息及接收端口列表信息。
具体的,步骤5包括以下具体步骤:
步骤501、判断本机是否被配置为管理设备或是否被强制退出设备发现任务,若被配置为管理设备或被强制退出设备发现任务则先清空设备发现任务中所接收到的发现协议报文,再进入步骤7,否则进入步骤502;
步骤502、查询是否有监听到发现协议报文,若有则进入步骤6,若没有则进入步骤7。
再进一步的,步骤2中,在开启设备发现任务的同时,生成一个计数值为0;
步骤5中,若没有发现协议报文,则将计数值加1,并判断当前计数值是否超过预设计数值,若是则进入步骤7,否则将计时清零,并重新开始计时,回到步骤3。
本发明的有益效果是,通过上述虚拟化成员设备及邻居发现方法,只需要在主控或管理设备上配置为纵向虚拟化网络中的管理者(即将需要的虚拟化成员设备配置为管理设备),就能够完成整个网络邻居的逐级发现,网络管理者或网络建设实施人员无需关心设备间要怎么接线,更不用对网络中的每台设备都进行预配置,极大的减少网络管理难度和工作量,网络从建设到维护真正实现“一网一设备”的管理效果,且这种效果在设备层级越多,设备量越大时优势更明显。以一栋10层的办公大楼为例,每层楼至少1台汇聚交换机,每层楼至少5台接入交换机,加上核心交换机2台,共计62台交换机,对汇聚和接入的60台交换机,预配置的时间大概是20分钟/台,配置完所有的60台交换机需要不间断的20个小时,但利用上述方案则完全不需要投入预配置,邻居发现最多在预设计数值乘以预设时间所得的时间内就会完成;另外,在规划和安装上由于上述方案实际不关心物理连接,实际上在规划和施工上节约的时间更可观,关键是对管理人员的要求会很低,管理人员只需要会配置管理设备即可。
实施例
本发明实施例中虚拟化成员设备,其系统框图参见图2,包括处理模块、侦听模块、报文解析记录模块及链路汇聚创建模块。
其中,处理模块用于,启动后判断是否存在配置文件,若是则加载配置文件,根据所加载的配置文件与其他虚拟化成员设备形成纵向虚拟化,所述虚拟化成员设备可以正常工作,否则开启设备发现任务,通知侦听模块开始侦听发现协议报文,并将自身设置为不能转发报文的同时不影响链路层发现协议,本例中,可将所有端口的生成树状态设置为阻塞(Blocking)状态以达到上述效果,且开始计时,若计时达到预设时间,则查询报文解析记录模块中是否有发现协议报文,若有则命令报文解析记录模块对其进行解析,并将自身设置为能够转发报文,本例中,对应的可将所有端口的生成树状态设置为转发(Forwarding)状态,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发,所述虚拟化成员设备可以正常工作,若查询报文解析记录模块中没有发现协议报文则将自身设置为能够转发报文,本例中,对应的可将所有端口的生成树状态设置为Forwarding状态,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发,正常工作,当正常工作时,若接收到链路汇聚对应端口列表信息则将其发送给链路汇聚创建模块。
侦听模块,用于对自身所有端口可能收到的发现协议报文进行监听,若监听到发现协议报文,则将其发送给报文解析记录模块,否则不进行处理。
报文解析记录模块,用于记录监听到的发现协议报文,并根据处理模块命令对其进行解析,得到邻居信息,发送给链路汇聚创建模块。本例中,邻居信息包括邻居MAC地址、发送端口列表信息及接收端口列表信息等。
链路汇聚创建模块,用于根据邻居信息在本地创建与对应上游邻居互联的链路汇聚,并将接收到该发现协议报文的端口加入该链路汇聚,生成链路汇聚对应端口列表信息并反向发送给对应的上游邻居,上游邻居若接收到发送来的链路汇聚对应端口列表信息则创建一个新的动态链路汇聚,并将该链路汇聚对应端口列表信息中的端口加入到该动态链路汇聚中。
本例中,计时达到预设时间后,处理模块还可先判断本机是否被配置为管理设备或是否被强制退出设备发现任务,若被配置为管理设备或被强制退出设备发现任务则清空报文解析记录模块中的数据,结束发现过程,否则查询报文解析记录模块中是否有发现协议报文。
处理模块在开启设备发现任务的同时,还可以生成一个计数值为0,当其查询报文解析记录模块中是否有发现协议报文时,若没有发现协议报文,则将计数值加1,并判断当前计数值是否超过预设计数值,若是则将自身设置为能够转发报文,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发,正常工作,否则将计时清零,并重新开始计时。
使用时,其流程图参见图3,具体步骤如下:
步骤1、虚拟化成员设备启动,判断是否存在配置文件,若是则加载配置文件,根据所加载的配置文件与其他虚拟化成员设备形成纵向虚拟化,正常工作,否则进入步骤2。
步骤2、虚拟化成员设备开启设备发现任务,开始侦听发现协议报文,并将自身设置为不能转发报文的同时不影响链路层发现协议,且开始计时。
本步骤中,参见图3,将自身设置为不能转发报文的同时不影响链路层发现协议可为:将所有端口的生成树状态设置为Blocking状态。且在开启设备发现任务的同时,可以生成一个计数值为0。
步骤3、侦听时对自身所有端口可能收到的发现协议报文进行监听,若监听到发现协议报文,则记录监听到的发现协议报文,否则不进行处理。
步骤4、时刻判断计时是否达到预设时间,若达到则进入步骤5,否则回到步骤3。
本步骤中,预设时间可由工作人员或虚拟化成员设备的生产厂家提前设置,如5分钟。
步骤5、查询是否有监听到发现协议报文,若有则进入步骤6,若没有则进入步骤7。
本步骤中,参见图3,其可包括以下具体步骤:
步骤501、判断本机是否被配置为管理设备或是否被强制退出设备发现任务,若被配置为管理设备或被强制退出设备发现任务则先清空设备发现任务中所接收到的发现协议报文,再进入步骤7,否则进入步骤502;
步骤502、查询是否有监听到发现协议报文,若有则进入步骤6,若没有则进入步骤7。
若之前步骤2中设置了计数值,则本步骤中,若没有发现协议报文,则将计数值加1,并判断当前计数值是否超过预设计数值,若是则进入步骤7,否则将计时清零,并重新开始计时,回到步骤3。本例中,预设计数值可以如2、3、4等,此数可由工作人员或虚拟化成员设备的生产厂家提前设置。
步骤6、解析并记录监听到的发现协议报文,得到邻居信息,根据邻居信息在本地创建与对应上游邻居互联的链路汇聚,并将接收到该发现协议报文的端口加入该链路汇聚,生成链路汇聚对应端口列表信息并反向发送给对应的上游邻居,进入步骤7。
步骤7、将自身设置为能够转发报文,完成设备发现任务,关闭侦听模块的侦听,开启发现协议报文的收发,正常工作。
本步骤中,参见图3,将自身设置为能够转发报文可为:将所有端口的生成树状态设置为Forwarding状态。
步骤8、正常工作时,若接收到链路汇聚对应端口列表信息则将创建一个新的动态链路汇聚,并将该链路汇聚对应端口列表信息中的端口加入到该动态链路汇聚中。
下面以创建一个三层纵向虚拟化组网为例,其系统框图参见图4,其中,发现协议报文以设备发现协议报文为例,可见,纵向堆叠环境包含核心、汇聚、接入三个层次,在核心层通过横向虚拟化技术将两台核心设备虚拟成一台设备,核心层设备作为管理设备,需要与汇聚层的3台设备和接入层的5台设备形成纵向虚拟化,目前的方法则是通过人为规划,明确所有设备互联的端口号、链路汇聚甚至是IP地址,并将设备逐一通电启动后,按照规划配置端口、链路汇聚、IP地址,并在设备上开启设备发现协议(如CAPWAP),汇聚层和接入层设备都会与管理设备建立连接,作为管理设备的叶子节点,统一由管理设备管理,管理人员实际上投入相当大的精力来管理汇聚层和接入层上的设备。
按照本发明提供的方案,所有设备无需提前配置,可以统一通电启动,此时管理员只需要在核心设备上配置为管理设备(Master)即可,其他参数如:域名、发现周期等可选修改。具体流程如下:
核心虚拟交换机(管理设备)的流程:
按照图3所示的流程,则有:
步骤1、核心交换机通电启动,由于核心交换机上无配置,转入步骤2;
步骤2、开启设备发现任务,开始侦听发现协议报文,并修改核心交换机上所有端口的生成树状态为Blocking,且开始计时,生成一个计数值为0,转入步骤3,此时核心交换机所有端口将无法转发报文,同时不影响链路层发现协议,从而防止了核心交换机与汇聚交换机之间互联的两条链路形成的环路,避免了广播风暴;
步骤3、侦听时对自身所有端口可能收到的发现协议报文进行监听,由于此时没有设备发出发现协议报文,则不会监听到发现协议报文,因而不进行处理继续侦听直至步骤5中计时达到预设时间(以5分钟为例),进入步骤501;
步骤501、判断本机是否被配置为管理设备或是否被强制退出设备发现任务,因为本机被配置为管理设备则先清空设备发现任务中所接收到的发现协议报文,再进入步骤7;
步骤7、将核心交换机上所有端口的生成树状态修改为Forwarding状态完成设备发现任务,关闭侦听模块的侦听,开启设备的发现协议模块,正常工作,由于该核心交换机被配置为管理设备,则其正常收发发现协议报文。
汇聚交换机的流程:
按照图3所示的流程,则有:
步骤1、汇聚交换机通电启动,由于汇聚交换机上无配置,转入步骤2;
步骤2、开启设备发现任务,开始侦听发现协议报文,并修改汇聚交换机上所有端口的生成树状态为Blocking,且开始计时,生成一个计数值为0,转入步骤3,此时汇聚交换机所有端口将无法转发报文,同时不影响链路层发现协议,从而防止了核心交换机与汇聚交换机之间互联的两条链路形成的环路,避免了广播风暴;
步骤3、侦听时对自身所有端口可能收到的发现协议报文进行监听直至步骤5中计时达到预设时间5分钟,若侦听未达到预设时间5分钟时,核心交换机就被配置为管理设备,则此时会侦听到核心交换机发送的发现协议报文,则记录监听到的发现协议报文,然后进入步骤501,否则直接进入步骤501;
步骤501、判断本机是否被配置为管理设备或是否被强制退出设备发现任务,因为本机不会被配置为管理设备则判断是否被强制退出设备发现任务,若是则先清空设备发现任务中所接收到的发现协议报文,再进入步骤7,否则进入步骤502;
步骤502、查询是否有监听到发现协议报文,若未查询到发现协议报文则由于之前步骤2中设置了计数值,此时将计数值加1,并判断当前计数值是否超过预设计数值,若超过预设计数值则进入步骤7,若未超过预设计数值则将计时清零,并重新开始计时,回到步骤3(此时相当于重新开始侦听及计时),若查询到发现协议报文,则进入步骤6;
步骤6、解析并记录监听到的发现协议报文,得到邻居信息,邻居信息包括域名(未修改则使用默认域名)、核心交换机的MAC地址、发送端口(以Gi1/0/1和Gi2/0/1为例),本端接收端口(以Gi0/47和Gi0/48为例),在汇聚交换机上创建一个新的动态链路汇聚,并将收到核心交换机发送的发现协议报文的端口Gi0/47和Gi0/48加入到这个链路汇聚中,将收到核心交换机发送的发现协议报文中的所有发送端口Gi1/0/1和Gi2/0/1,通过发现协议报文反向发送给核心交换机,进入步骤7,核心交换机收到后会创建一个新的动态链路汇聚,并将端口Gi1/0/1和Gi2/0/1加入到这个链路汇聚中(即核心交换机正常工作时的步骤8);
步骤7、将汇聚交换机上所有端口的生成树状态修改为Forwarding状态完成设备发现任务,关闭侦听模块的侦听,开启设备的发现协议模块(即开启发现协议报文的收发),正常工作,此时,汇聚交换机和核心交换机通过创建的动态链路汇聚建立了纵向虚拟化的邻居关系,于此同时,其他汇聚层设备也会以相同点的流程与管理设备建立邻居关系,并作为管理设备的节点设备被管理,若之前被强制退出设备发现任务,则该汇聚交换机独立正常工作。接入交换机的流程与汇聚交换机的流程基本一致:
按照图3所示的流程,则有:
步骤1、接入交换机通电启动,由于接入交换机上无配置,转入步骤2;
步骤2、开启设备发现任务,开始侦听发现协议报文,并修改接入交换机上所有端口的生成树状态为Blocking,且开始计时,生成一个计数值为0,转入步骤3,此时接入交换机所有端口将无法转发报文,同时不影响链路层发现协议;
步骤3、侦听时对自身所有端口可能收到的发现协议报文进行监听直至步骤5中计时达到预设时间5分钟,若侦听未达到预设时间5分钟时,核心交换机就被配置为管理设备,且汇聚交换机已完成了设备发现任务,则此时会侦听到汇聚交换机发送的发现协议报文,记录监听到的发现协议报文,然后进入步骤501,否则直接进入步骤501;而由于发现协议报文是点到点传输的,核心交换机发送的发现协议报文不会穿过汇聚交换机发送到接入交换机上;
步骤501、判断本机是否被配置为管理设备或是否被强制退出设备发现任务,因为本机不会被配置为管理设备则判断是否被强制退出设备发现任务,若是则先清空设备发现任务中所接收到的发现协议报文,再进入步骤7,否则进入步骤502;
步骤502、查询是否有监听到发现协议报文,若未查询到发现协议报文则由于之前步骤2中设置了计数值,此时将计数值加1,并判断当前计数值是否超过预设计数值,若超过预设计数值则进入步骤7,若未超过预设计数值则将计时清零,并重新开始计时,回到步骤3(此时相当于重新开始侦听及计时),若查询到发现协议报文,则进入步骤6;
步骤6、解析并记录监听到的发现协议报文,得到邻居信息,邻居信息包括域名(未修改则使用默认域名)、汇聚交换机的MAC地址、发送端口(以Gi0/1和Gi0/2为例)及本端接收端口(以Gi0/5和Gi0/6为例),在接入交换机上创建一个新的动态链路汇聚,并将收到汇聚交换机发送的发现协议报文的端口Gi0/5和Gi0/6加入到这个链路汇聚中,将收到汇聚交换机发送的发现协议报文中的所有发送端口Gi0/1和Gi0/2,通过发现协议报文反向发送给汇聚交换机,进入步骤7,汇聚交换机收到后会创建一个新的动态链路汇聚,并将端口Gi0/1和Gi0/2加入到这个链路汇聚中(即汇聚交换机正常工作时的步骤8);
步骤7、将接入交换机上所有端口的生成树状态修改为Forwarding状态完成设备发现任务,关闭侦听模块的侦听,开启设备的发现协议模块(即开启发现协议报文的收发),正常工作,此时,接入交换机和汇聚交换机通过创建的动态链路汇聚建立了纵向虚拟化的邻居关系,于此同时,其他接入层设备也会以相同点的流程与汇聚交换机建立邻居关系,通过发现协议邻居交互信息,汇聚交换机会向核心交换机通告接入交换机的信息,这样,接入交换机和汇聚交换机都会作为节点设备被核心交换机管理,若之前被强制退出设备发现任务,则该接入交换机独立正常工作。
当网络邻居发现结束后,整个网络能够正常管理和运行,当有扩容需求时,只需要将空配置的设备随意接入现有网络,就能够重复上述接入交换机的流程,被网络自动发现,并作为新的节点设备被管理。
综上所述,整个网络只需要在核心交换机上配置为管理设备,就能够完成整个网络邻居的逐级发现。