一种网络拓扑结构生成方法及系统
技术领域
本申请涉及计算机网络技术领域,具体而言,涉及一种网络拓扑结构生成方法及系统。
背景技术
目前,大规模集群系统中包括非常多的交换机和计算节点,在计算节点中有至少一个管理节点,管理节点的主要作用是接收集群系统下发的任务,并将该任务分配给合适的计算节点来执行。
那么,管理节点在分配任务时,需要获取到集群系统对应的网络拓扑结构,这样才能够知道通过哪个交换机的哪个端口才能把任务分配到对应的计算节点中。
现有技术中获得集群系统的网络拓扑结构的方法是通过管理节点依靠相邻节点去发现新的相邻节点,然后再根据新的相邻节点再去发现新的相邻节点,以此类推,直到获取完整的网络拓扑结构。
对于大规模集群系统来说,由于节点众多,这种通过相邻节点依次去发现新的相邻节点的方式需要耗费大量的时间。
发明内容
本申请实施例的目的在于提供一种网络拓扑结构生成方法及系统,用以解决现有技术中获得集群系统的网络拓扑结构所需时间较长的问题。
第一方面,本申请实施例提供一种网络拓扑结构生成方法,应用于集群系统中的交换机,所述集群系统包括多层交换机和多个节点,每层交换机与相邻层的至少一个交换机通信连接;所述多个节点分别与最底层的多个交换机中的一个通信连接;所述方法包括:最底层的交换机获取连接的节点的节点信息;所述节点信息包括所述节点与交换机通信连接的本端端口标识、对端端口标识和所述节点的节点标识;非顶层交换机向连接的上层交换机发送自身的拓扑信息,其中,所述拓扑信息包括从下层接收的下层拓扑信息以及自身的交换机标识以及本端端口标识和对端端口标识,所述最底层的交换机接收的所述下层拓扑信息为所述节点信息;最顶层的交换机根据接收的下层交换机的拓扑信息生成所述集群系统的网络拓扑表。
本申请实施例通过最底层的各个交换机获取通信连接的节点的节点信息,并向上层交换机发送自身的拓扑信息,从而最顶层的交换机根据接收的下层交换机的拓扑信息生成集群系统的网络拓扑表,通过每层的交换机并行上传对应的拓扑信息的方式缩短了生成集群系统的网络拓扑表的时间。
进一步地,所述方法还包括:所述最顶层的交换机向下层各个交换机同步所述网络拓扑表。使得集群系统中每个交换机中共同维护同一张网络拓扑表,一方面,防止只将网络拓扑表存储在某一个交换机上,该交换机丢失网络拓扑表后导致无法找回的情况发生,另一方面,可以通过多个交换机中存储的网络拓扑表互相验证,以确保网络拓扑表的正确性。
进一步地,所述多个节点中包括至少一个管理节点,所述方法还包括:所述最底层的交换机向通信连接的所述管理节点发送所述网络拓扑表。由于管理节点直接与最底层的交换机通信连接,因此,管理节点可以从与之通信连接的最底层的交换机处获取到网络拓扑表,便于任务的分配。
进一步地,所述最底层的交换机获取连接的节点的节点信息,包括:在满足以下任意一项或多项条件的情况下,所述最底层的交换机获取连接的节点的节点信息;其中,所述条件包括:距离上次获取所述节点信息的时间间隔达到预设时间间隔;有新的节点接入所述最底层的交换机;有节点与所述最底层的交换机断开连接;相邻层的两个交换机由通信连接状态变为断开连接;相邻层的两个交换机由断开状态变为通信连接状态。本申请实施例能够及时的对网络拓扑表进行更新,使得交换机中存储的网络拓扑表能够表征集群系统真实的架构。
进一步地,所述节点信息还包括分区表、节点端口数、最大传输单元MTU、网络虚拟通道数VLs和带宽中的至少一项。通过获取节点的上述信息,便于后续管理节点根据网络拓扑表进行更加合理的任务分配等工作。
进一步地,所述最底层的交换机获取对应的多个节点发送的节点信息,包括:所述最底层的交换机通过各节点中的主机通道适配器HCA获取对应节点的节点信息。HCA具有高带宽、低延迟的特性,因此,节点通过HCA与最底层的交换机通信能够提高节点信息发送的效率。
进一步地,所述最顶层的交换机根据接收的下层交换机的拓扑信息生成所述集群系统的网络拓扑表,包括:所述最顶层的交换机对接收到的下层交换机发送的拓扑信息进行汇总、去重,获得所述集群系统的网络拓扑表。由于最顶层的交换机接收到的下层交换机的拓扑信息中可能包含重复的信息,因此,通过汇总、去重的方式一方面使得获得的网络拓扑表中包括了集群中整个架构的拓扑信息,另一方面,防止了网络拓扑表中存在冗余数据。
第二方面,本申请实施例提供网络拓扑结构生成系统,包括多层交换机,每层交换机与相邻层的至少一个交换机通信连接;最底层的交换机用于获取连接的节点的节点信息;所述节点信息包括所述节点与交换机通信连接的本端端口标识、对端端口标识和所述节点的节点标识;非顶层交换机用于向连接的上层交换机发送自身的拓扑信息,其中,所述拓扑信息包括从下层接收的下层拓扑信息以及自身的交换机标识以及本端端口标识和对端端口标识,所述最底层交换机接收的所述下层拓扑信息为所述节点信息;最顶层的交换机用于根据接收的下层交换机的拓扑信息生成所述集群系统的网络拓扑表。
本申请实施例通过最底层的各个交换机获取通信连接的节点的节点信息,并向上层交换机发送自身的拓扑信息,从而最顶层的交换机根据接收的下层交换机的拓扑信息生成集群系统的网络拓扑表,通过每层的交换机并行上传对应的拓扑信息的方式缩短了生成集群系统的网络拓扑表的时间。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1本申请实施例提供的一种网络拓扑结构生成系统结构示意图;
图2本申请实施例提供的一种网络拓扑结构生成方法流程示意图;
图3本申请实施例提供的另一种网络拓扑结构生成系统结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
IB(Infiniband)网络和OPA(Intel Omni-Path Architecture)网络为两个典型的大规模集群网络,在IB网络和OPA网络初始化时,需要获取到集群系统中的拓扑结构。现有技术中是通过管理节点去发现相邻节点A,然后利用相邻节点A去发现与之相连接的相邻节点B,将连接的相邻节点B的信息发送给管理节点,此时,管理节点又将通过B发现与B连接的相邻节点C,以此类推,直至发现集群系统中的整个网络拓扑为止。发明人研究发现,这种依靠相邻节点发现网络拓扑的方式,适用于小规模的集群系统,但是针对大规模的集群系统来说,例如:集群系统中包括20000个节点和1000个交换机,若管理节点与每个节点平均通讯时间为1秒,那么从整个集群上电开始,到发现所有的节点并生成对应的网络拓扑结构大约需要5.8个小时,由此可知,这种依靠相邻节点发现网络拓扑的方式不适用于大规模的集群系统。
基于此,本申请实施例提供一种网络拓扑结构生成方法,该方法通过各层中的交换机并行获取其对应的拓扑信息,并向上一层发送该拓扑信息,从而能够在最顶层的交换机中生成集群系统的网络拓扑结构,这种方式能够大大提高网络拓扑结构生成的效率,从而适用于大规模的集群系统。
图1本申请实施例提供的一种网络拓扑结构生成系统结构示意图,如图1所示,该系统包括两层交换机,下层交换机可以称为是接入层交换机,包括sw5-sw8;上层交换机可以称为核心层交换机,包括sw1-sw4。接入层中的每个交换机与核心层中的至少一个交换机通信连接,本申请实施例提供的图1中给出的连接方式是接入层中的每个交换机与核心层中的交换机互相通信连接。每个接入层交换机分别对应连接多个节点,即交换机sw5与节点1、节点2、节点3和节点4通信连接;交换机sw6与节点5、节点6、节点7和节点8通信连接;交换机sw7与节点9、节点A、节点B和节点C通信连接;交换机sw8与节点D、节点E、节点F和节点G通信连接;节点可以理解为是终端或服务器。应当说明的是,图1只是一种实例,具体的系统中接入层交换机和核心层交换机的个数可以是更多个,并且每个接入层交换机可以接入更多或更少个节点,本申请实施例对系统的架构不做具体限定。另外,网络拓扑结构中还可以包括三层及以上的交换机,其通信的连接方式与图1类似,此处不再赘述。
其中,最底层的交换机用于获取连接的节点的节点信息;所述节点信息包括所述节点与交换机通信连接的本端端口标识、对端端口标识和所述节点的节点标识;
非顶层交换机用于向连接的上层交换机发送自身的拓扑信息,其中,所述拓扑信息包括从下层接收的下层拓扑信息以及自身的交换机标识以及本端端口标识和对端端口标识,所述最底层交换机接收的所述下层拓扑信息为所述节点信息;
最顶层的交换机用于根据接收的下层交换机的拓扑信息生成所述集群系统的网络拓扑表。
在另一实施例中,最顶层的交换机还用于向下层各个交换机同步所述网络拓扑表。
在另一实施例中,最底层的交换机还用于向通信连接的所述管理节点发送所述网络拓扑表。
图2为本申请实施例提供的网络拓扑结构生成方法流程示意图,如图2所示,该方法包括:
步骤201:最底层的交换机获取连接的节点的节点信息;所述节点信息包括所述节点与交换机通信连接的本端端口标识、对端端口标识和所述节点的节点标识。
其中,最底层的交换机是指与节点直接通信连接的交换机,可以理解的是,每个节点中都有一个主机通道适配器(HCA),节点可以通过HCA与通信连接的最底层的交换机通信,向对应的交换机发送节点信息。可以理解的是,节点信息中包括该节点与交换机通信连接的本端端口标识、对端端口标识和节点标识。其中,本端端口标识用于表征节点的哪个端口与交换机通信连接;对端端口标识用于表征节点通过交换机的哪个端口进行通信连接。每个节点中的HCA都有唯一对应的标识,因此,可以将该标识作为对应节点的节点标识,用来唯一表征节点。
可以理解的是,最底层的交换机除了获取节点与交换机通信连接的本端端口标识、对端端口标识和所述节点的节点标识之外,还可以获取分区表、节点端口数、最大传输单元(Maximum Transmission Unit,MTU)、网络虚拟通道数VLs和带宽中的至少一项。其中,分区表用于表征节点中对磁盘进行划分的情况;节点端口数用于表征HCA对应的端口数;最大传输单元MTU用来通知对方所能接收数据服务单元的最大尺寸,说明发送方能够接收的有效载荷大小。网络虚拟通道数VLs用于表征节点可以提供的虚拟通道的数量。带宽用于表征节点传输数据的能力。
在最底层的交换机接收到节点信息后,需要向上一层交换机发送其自身的拓扑信息。
步骤202:非顶层交换机向连接的上层交换机发送自身的拓扑信息,其中,所述拓扑信息包括从下层接收的下层拓扑信息以及自身的交换机标识以及本端端口标识和对端端口标识,所述最底层交换机接收的所述下层拓扑信息为所述节点信息。
针对只有两层交换机的集群系统来说,非顶层交换机就是指最底层的交换机。针对三层及以上的交换机来说,非顶层交换机是指最底层及所有中间层的交换机。由于最底层的交换机的动作已在步骤201中描述,该步骤主要针对三层及以上的交换机中的中间层的交换机。
步骤203:最顶层的交换机根据接收的下层交换机的拓扑信息生成所述集群系统的网络拓扑表。
为了便于理解,本申请实施例分别针对集群系统中包括两层交换机和三层交换机两种不同架构进行描述。
1、群集系统中包括两层交换机,以图1为例:
第一步:交换机sw5获取节点1、节点2、节点3和节点4的节点信息,交换机sw6获取节点5、节点6、节点7和节点8的节点信息,交换机sw7获取节点9、节点A、节点B和节点C的节点信息,交换机sw8获取节点D、节点E、节点F和节点G的节点信息;
第二步:交换机sw5将其自身的拓扑信息分别发送给交换机sw1、交换机sw2、交换机sw3和交换机sw4;交换机sw6将其自身的拓扑信息分别发送给交换机sw1、交换机sw2、交换机sw3和交换机sw4;交换机sw7将其自身的拓扑信息分别发送给交换机sw1、交换机sw2、交换机sw3和交换机sw4;交换机sw8将其自身的拓扑信息分别发送给交换机sw1、交换机sw2、交换机sw3和交换机sw4。其中,交换机sw5自身的拓扑信息包括节点1、节点2、节点3和节点4的节点信息,交换机sw5的标识、交换机sw5分别与交换机sw1、交换机sw2、交换机sw3和交换机sw4通信连接的本端端口信息和对端端口信息;其中,本端端口信息是指交换机sw5分别通过哪个端口与交换机sw1、交换机sw2、交换机sw3和交换机sw4;对端端口信息是指交换机sw1、交换机sw2、交换机sw3和交换机sw4分别通过哪个端口与交换机sw5通信连接。可以理解的是,交换机sw6、交换机sw7和交换机sw8分别对应的自身的拓扑信息与交换机sw5的自身的拓扑信息类似,此处不再赘述。
这样,在交换机sw1、交换机sw2、交换机sw3和交换机sw4接收到下一层的交换机发送的拓扑信息后,将获得的拓扑信息汇总去重后获得该集群系统的网络拓扑表。
2、群集系统中包括三层交换机,以图3为例:
从图3中可以看出:交换机sw7、交换机sw8和交换机sw9为最底层的交换机,并且在交换机sw7下通信连接有节点1、节点2和节点3,在交换机sw8下通信连接有节点4、节点5和节点6,在交换机sw9下通信连接有节点7、节点8和节点9;交换机sw4、交换机sw5和交换机sw6为中间层的交换机;交换机sw1、交换机sw2和交换机sw3为最顶层的交换机;其中,交换机sw4、交换机sw5、交换机sw6也称为非顶层的交换机。
第一步:交换机sw7获取节点1、节点2和节点3的节点信息;交换机sw8获取节点4、节点5和节点6的节点信息;交换机sw9获取节点7、节点8和节点9的节点信息。其中,节点信息包括的具体内容参见上述实施例,此处不再赘述。
第二步:交换机sw7向交换机sw4、交换机sw5和交换机sw6发送自身的拓扑信息;交换机sw8向交换机sw4、交换机sw5和交换机sw6发送自身的拓扑信息;交换机sw9向交换机sw4、交换机sw5和交换机sw6发送自身的拓扑信息。
其中,交换机sw7自身的拓扑信息包括节点1、节点2和节点3的节点信息,交换机sw7的标识、交换机sw7分别与交换机sw4、交换机sw5和交换机sw6通信连接的本端端口信息和对端端口信息;其中,本端端口信息是指交换机sw7分别通过哪些端口与交换机sw4、交换机sw5和交换机sw6;对端端口信息是指交换机sw4、交换机sw5和交换机sw6分别通过哪个端口与交换机sw7通信连接。可以理解的是,交换机sw8、交换机sw9分别对应的自身的拓扑信息与交换机sw7的自身的拓扑信息类似,此处不再赘述。
第三步:交换机sw4向交换机sw1、交换机sw2和交换机sw3发送自身的拓扑信息;交换机sw5向交换机sw1、交换机sw2和交换机sw3发送自身的拓扑信息;交换机sw6向交换机sw1、交换机sw2和交换机sw3发送自身的拓扑信息。
其中,交换机sw4自身的拓扑信息包括接收到的sw7发送的其自身的拓扑信息、sw8发送的其自身的拓扑信息和sw9发送的其自身的拓扑信息,交换机sw4的标识,以及交换机sw4通信连接的交换机sw1、交换机sw2和交换机sw3的本端端口信息和对端端口信息。可以理解的是,本端端口信息和对端端口信息的解释参见上述实施例,此处不再赘述。同理,交换机sw5和交换机sw6自身的拓扑信息与交换机sw4类似,此处不再赘述。
第四步:交换机sw1在接收到交换机sw4、交换机sw5和交换机sw6发送的拓扑信息后,进行汇总生成拓扑信息表;同理,交换机sw2和交换机sw3分别在到交换机sw4、交换机sw5和交换机sw6发送的拓扑信息后,进行汇总生成网络拓扑表。可以理解的是,正常情况下,交换机sw1、交换机sw2和交换机sw3中生成的网络拓扑表是相同的。
应当说明的是,大于三层交换机的集群系统的网络拓扑表生成方式与上述实施例类似,此处不再赘述。
本申请实施例通过最底层的各个交换机获取通信连接的节点的节点信息,并向上层交换机发送自身的拓扑信息,从而最顶层的交换机根据接收的下层交换机的拓扑信息生成集群系统的网络拓扑表,通过每层的交换机并行上传对应的拓扑信息的方式缩短了生成集群系统的网络拓扑表的时间。
在上述实施例的基础上,所述方法还包括:
所述最顶层的交换机向下层各个交换机同步所述网络拓扑表。
在具体的实施过程中,当最顶层的交换机生成网络拓扑表之后,向其下层各个交换机同步该网络拓扑表。仍以图1为例:交换机sw1将网络拓扑表分别同步给交换机sw5、交换机sw6、交换机sw7和交换机sw8;交换机sw2将网络拓扑表分别同步给交换机sw5、交换机sw6、交换机sw7和交换机sw8;交换机sw3将网络拓扑表分别同步给交换机sw5、交换机sw6、交换机sw7和交换机sw8;交换机sw4将网络拓扑表分别同步给交换机sw5、交换机sw6、交换机sw7和交换机sw8。因此,对于交换机sw5、交换机sw6、交换机sw7和交换机sw8来说,其可以获得四份网络拓扑表。sw5、交换机sw6、交换机sw7和交换机sw8在接收到网络拓扑表之后,可以对接收到的网络拓扑表进行校验,判断接收到的网络拓扑表是否相同,若相同,则删除任意三份,只保留其中一份;若不同,则可以将多数相同的网络拓扑表作为正确的表,从中选择其中一份保留;或者向各个通信连接的交换机发送异常报警,以启动重新获取网络拓扑表的流程。
本申请实施例通过最顶层的交换机向下层各个交换机同步网络拓扑表,使得集群系统中每个交换机中共同维护同一张网络拓扑表,一方面,防止只将网络拓扑表存储在某一个交换机上,该交换机丢失网络拓扑表后导致无法找回的情况发生,另一方面,可以通过多个交换机中存储的网络拓扑表互相验证,以确保网络拓扑表的正确性。
在上述实施例的基础上,所述多个节点中包括至少一个管理节点,所述方法还包括:
所述最底层的交换机向通信连接的所述管理节点发送所述网络拓扑表。
在具体的实施过程中,在集群系统中包括至少一个管理节点,管理节点的主要任务就是接收集群系统的任务信息,并将该任务信息分配给一个或多个节点来执行该任务信息。那么,管理节点在进行任务信息的分配时,需要获知集群系统中网络拓扑结构,即,管理节点需要知道各个节点分别通信连接的是哪个交换机的哪个端口,这样才能够从对应的交换机对应的端口将任务信息分配到指定的节点中。
由于集群中每个交换机中都存储有网络拓扑表,因此,管理节点可以通过其通信连接的最底层的交换机中获取该网络拓扑表,以实现通过网络拓扑表查找到各个节点,并将任务信息发送给指定的节点。
在上述实施例的基础上,所述最底层的交换机获取连接的节点的节点信息,包括:
在满足以下任意一项或多项条件的情况下,所述最底层的交换机获取连接的节点的节点信息;
其中,所述条件包括:
距离上次获取所述节点信息的时间间隔达到预设时间间隔;
有新的节点接入所述最底层的交换机;
有节点与所述最底层的交换机断开连接;
相邻层的两个交换机由通信连接状态变为断开连接;
相邻层的两个交换机由断开状态变为通信连接状态。
在具体的实施过程中,集群系统中的网络架构不是一成不变的,例如:当某个节点发生故障,那么该节点就会与对应的最底层交换机断开连接,此时,集群系统的架构便发生了变化,即少了一个节点;另外,当某个节点从故障恢复正常,那么该节点会重新与最底层的交换机通信连接,此时,集群系统中的架构又发生了变化,即新增了一个节点。可以理解的是,新增节点的方式还可以是原来不属于集群系统的节点加入进来。又或者是相邻层的两个原本通信连接的交换机断开连接等等。上述情况均可导致集群系统的网络拓扑结构发生变化。
因此,为了能够及时的获得最新的网络拓扑结构,最底层的交换机可以定期获取对应节点的节点信息,并按照上述实施例提供的方法生成集群系统的网络拓扑结构。可以理解的是,重新生成网络拓扑结构的时间间隔可以根据实际情况进行设定。
另外,为了能够在集群系统的架构发生变化的第一时间生成最新架构的网络拓扑结构,当有节点与最底层的交换机断开连接,或有新的节点与最底层的交换机通信连接时,最底层的交换机会第一时间感知到,最底层的交换机在感知到上述情况发生后,启动重新生成网络拓扑结构的流程。
再有,除了节点可能与最底层的交换机断开连接或重新加入外,相邻层的两个交换机之间也可能发生由通信连接状态变为断开连接或由断开状态变为通信连接状态情况,若是最底层的交换机与上一层中某个交换机的连接关系发生改变,最底层可以通过上一层的其他通信连接的交换机通知最底层的其他交换机启动重新生成网络拓扑结构的流程。若非底层的相邻曾的两个交换机之间的连接关系发生改变,则可以向下通知到最底层的交换机启动重新生成网络拓扑结构的流程。
本申请实施例能够即时的对网络拓扑表的更新,使得交换机中存储的网络拓扑表能够表征集群系统真实的架构。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。