具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明提出一种堆叠系统的路由转发信息同步方法,该堆叠系统包括多个堆叠设备,各堆叠设备具有主用主控板和备用主控板,在各堆叠设备的主用主控板中选举全局主控板。
参见图2,图2为本发明实施例中堆叠系统的路由转发信息同步流程示意图。具体步骤为:
步骤201,全局主控板在预设时间内接收其他主用主控板发送的告知报文,记录告知报文携带的主用主控板的信息,并获取记录了信息的主用主控板的CPU占用率以及自身的CPU占用率。
本步骤中在预设时间内接收其他主用主控板发送的告知报文,当预设时间到时,不再接收其他主用主控板发送的告知报文。具体实现时,可通过定时器实现。记录告知报文携带的主用主控板信息,如该主用主控板所在堆叠设备的设备ID等,能够标识该主用主控板的信息,使全局主用主控板能够分别获得发送告知报文的主用主控板的CPU占用率。
本步骤中获取记录了信息的主用主控板的CPU占用率的方法为:
全局主控板向记录了信息的主用主控板分别发送索取其CPU占用率的报文,接收各主用主控板发送的携带自身CPU占用率的反馈报文,从该报文获得各主用主控板对应的CPU占用率。
步骤202,全局主控板根据各路由协议计算任务的运算量和获取的各主用主控板的CPU占用率为各路由协议计算任务分配主用主控板,并将路由协议计算任务分配结果发送给对应的主用主控板使其进行运算。
本步骤中获取的各主用主控板的CPU占用率,包括记录了信息的主用主控板的CPU占用率和自身的CPU占用率,即全局主控板的CPU占用率。如果分配路由协议计算任务时,全局主用主控板也分得了路由协议计算任务,则自身也要运行分得的路由协议计算任务。
步骤203,全局主用主控板获取各主用主控板运算的路由转发信息,在所述堆叠系统内同步所述路由转发信息。
本步骤中获取各主用主控板运算的路由转发信息的方法为:接收其他主用主控板发送的携带运算的路由转发信息的报文,获取所述携带的运算的路由转发信息;若自身分得路由协议计算任务,运行分得路由协议计算任务结束时,获取该运算的路由转发信息。在所述堆叠系统内同步所述路由转发信息,比如将运行结果同步给备用主用主控板及有需要的线卡板。
步骤202中根据各路由协议计算任务的运算量和获取的各主用主控板的CPU占用率为各路由协议计算任务分配主用主控板的方法为:
将各路由协议计算任务按照运算量从大到小的顺序,依次分配给CPU占用率由低到高的各主用主控板,譬如,将各路由协议计算任务按照运算量从大到小进行排序,各主用主控板的CPU占用率按从小到大的顺序进行排序,分配运算量最大的路由协议计算任务给CPU占用率最小的主用主控板,运算量次大的路由协议计算任务给CPU占用率次小的主用主控板,依次类推,直到所有路由协议计算任务分配完成。
假定目前系统中获得CPU占用率的主用主控板有两个,连同全局主用主控板共有3个主用主控板,而路由协议计算任务有三个或小于三个,则全局主用主控板优先分配CPU占用率低的主用主控板去运算计算量大的路由协议计算任务。选取CPU占用率次低的主用主控板去运算计算量次大的路由协议计算任务,依次类推。
若确定路由协议计算任务个数大于获得CPU占用率的主用主控板的个数,则始终将运算量最小的两个路由协议计算任务相加直至路由协议计算任务的个数等于获得CPU占用率的主用主控板的个数,将各路由协议计算任务按照运算量从大到小的顺序,依次分配给CPU占用率由低到高的各主用主控板;譬如,将两个路由协议计算任务运算量最小的相加,若当前路由协议计算任务个数大于获得CPU占用率的主用主控板的个数,则将当前的路由协议计算任务个数按运算量从大到小排序,将当前两个路由协议计算任务运算量最小的相加,依次类推,直到当前路由协议计算任务个数等于获得CPU占用率的主用主控板的个数,执行上述分配过程,其中,所述两个路由协议计算任务运算量最小的相加后作为一个路由协议计算任务运算量进行排序。
假定目前系统中获得CPU占用率的主用主控板有两个,连同全局主控板共有3个主用主控板,而路由协议计算任务有4个,则先将路由协议计算任务按照运算量从大到小进行排序,将运算量最小的两个协议任务相加,这里的相加是将这两个路由协议计算任务的运算量相加,再次排序并按上述方法分配。
将分配结果发送给对应的主用主控板时,重新开始接收其他主用主控板发送的告知报文。当接收到其他主用主控板发送的告知报文,记录该主用主控板的信息,并获取其CPU占用率。
在这里接收到的其他主用主控板发送的告知报文有两种情况,一种是其他堆叠设备的主用主控板先前未发送告知报文,现在发送了告知报文,参见路由协议计算任务的分配;另一种情况为某个堆叠设备的主用主控板已发送过告知报文,但是由于某种原因,主用主控板故障切换备用主控板为当前主用主控板,当前的主用主控板切换后向全局主控板发送告知报文。
将路由协议计算任务分配结果发送给对应的主用主控板时,定时向记录了信息的主用主控板发送hello报文,若在预设应答时间内收到其他主用主控板回复的携带CPU占用率的reply报文,则更新该主用主控板的CPU占用率;若在预设时间内未收到主用主控板回复的携带CPU占用率的reply报文,则确定该主用主控板出现异常,若该异常主用主控板分得路由协议计算任务,则将该路由协议计算任务分配给当前CPU占用率最低的主用主控板,并删除记录的该异常主用主控板的信息以及其CPU占用率;若该异常主用主控板未分得路由协议计算任务,则删除记录的该主用主控板的信息以及其CPU占用率。
将路由协议计算任务分配结果发送给对应的主用主控板时,通过hello报文和reply报文实时更新各主用主控板的CPU占用率以及各主用主控板是否正常工作,以便实时调整路由协议计算任务的运算。
下面结合具体实施例,详细说明本发明如何实现堆叠系统的路由转发信息同步。参见图3,图3为本发明具体实施例中堆叠系统的路由转发信息同步流程示意图。以在预设时间内接收到两个主用主控板发送的告知报文,存在两个路由协议计算任务为例,其中,主用主控板A为全局主控板,主用主控板B和主用主控板C为普通主用主控板,两个路由协议计算任务为路由协议计算任务M和路由协议计算任务N,且M的运算量大于N的运算量。
步骤301,主用主控板A在预设时间内接收其他主用主控板的告知报文。
本步骤中的预设时间在具体实现时通过主用主控板A启动定时器,在该定时器超时前接收告知报文,定时器到时时,不再接收告知报文。
步骤302,主用主控板B向主用主控板A发送告知报文。
步骤303,主用主控板C向主控板A发送告知报文。
假设在预设时间内接收到了主用主控板B和主用主控板C的告知报文。
步骤304,主用主控板A对接收到的告知报文做信息记录。
本步骤中记录的信息包括发送该告知报文的主用主控板所在堆叠设备ID以及对应的主用主控板。收到某一告知报文后就记录发来该报文的主用主控板信息,也可在不再接收告知报文时一并记录发来各通知报文的主用主控板的信息,具体应用根据具体配置实现。
步骤305,主用主控板A向主用主控板B发送索取其CPU占用率的报文。
步骤306,主用主控板A向主用主控板C发送索取其CPU占用率的报文。
步骤307,主用主控板B向主用主控板A发送携带自身的CPU占用率的信息反馈报文。
步骤308,主用主控板C向主用主控板A发送携带自身的CPU占用率的信息反馈报文。
步骤309,主用主控板A获得主用主控板B和主用主控板C的CPU占用率,并分配路由协议计算任务。
假设主用主控板B的CPU占用率大于主用主控板C的CPU占用率,则说明主用主控板B较忙。根据上文描述的分配方法,将路由协议计算任务M分配给主用主控板C进行运算;将路由协议计算任务N分配给主用主控板B进行运算。
步骤310,主用主控板A通知主用主控板B运算的路由协议计算任务。
步骤311,主用主控板A通知主用主控板C运算的路由协议计算任务。
步骤312,主用主控板A重新开始接收其他主用主控板的告知报文。
步骤313,主用主控板A定时向主用主控板B发送hello报文。
步骤314,主用主控板A定时向主用主控板C发送hello报文。
在路由协议计算任务分配结束时,重新开始接收告知报文,并向记录信息的主用主控板发送hello报文,以便了解各主用主控板当前的CPU占用率,以及是否正常工作。步骤312、步骤313和步骤314同时执行。
步骤315,主用主控板B接收到hello报文时向主用主控板A发送携带自身CPU占用率的reply报文。
步骤316,主用主控板C接收到hello报文时向主用主控板A发送携带自身CPU占用率的reply报文。
各主用主控板接收到全局主控板发送的hello报文时,如果该主控板正常工作,则将自身的CPU占用率通过reply报文发送给全局主控板。
步骤317,主用主控板A接收到reply报文时更新对应的主用主控板CPU占用率;预设应答时间内未接收到reply报文,则通知当前获知的CPU占用率最小的主用主控板运算分配给未响应reply报文的路由协议计算任务。
在预设应答时间内收到主用主控板B和主用主控板C的reply报文,则认为各主用主控板运行正常,并实时获得其CPU占用率,更新主用主控板C和主用主控板B的CPU占用率;若在预设应答时间内未接收到主用主控板B或主用主控板C的reply报文,则认为其发生故障。并将记录的同该主用主控板相关的信息删除。
假设在预设时间内未收到主用主控板B的reply报文,则确定其故障,则比较主用主控板C和主用主控板A的当前CPU占用率,谁的CPU占用率小,则路由协议计算任务N分配给谁来运行。当然主用主控板A在重新接收告知报文时,如果有其他主用主控板发来告知报文,获得其CPU占用率并参与重新比较CPU占用率。如果其CPU占用率最小,则将路由协议计算任务N分配给该CPU占用率最小的主用主控板。这里的其他主用主控板也包括主用主控板B所在堆叠设备的当前主用主控板,如果主用主控板B故障,则切换为其备用主控板作为当前主用主控板,切换过程同现有实现,这里不再赘述。
步骤318,主用主控板B运算主用主控板A发送的路由协议计算任务。
步骤319,主用主控板B向主用主控板A发送运算的路由转发信息。
步骤320,主用主控板C运算主用主控板A发送的路由协议计算任务。
步骤321,主用主控板C向主用主控板A发送运算的路由转发信息。
分得路由协议计算任务的主用主控板运算分得的路由协议计算任务,在运算结束时,将运算结果,即路由转发信息发送给全局主控板。
步骤322,主用主控板A获得各路由转发信息,在堆叠系统内同步所述路由转发信息。
主用主控板A接收到主用主控板B和主用主控板C发送的运行其各自分配的路由协议计算任务的运算结果,即路由转发信息后,将各路由转发信息同步给需要的线卡板以及备用主控板。
堆叠系统中的堆叠设备一般都包括两个主控板,一个作为主用主控板,一个作为备用主控板,当主用主控板故障,切换为备用主控板时,主动向全局主用主控板发送告知报文。假设正在运行路由协议计算任务的主用主控板B故障,切换为其备用主控板,则备用主控板发送告知报文给主用主控板A,主用主控板A记录该备用主控板的信息,并获取其CPU占用率。在主用主控板A、主用主控板C和新发来告知报文的主用主控板的CPU占用率中,确定当前CPU占用率最小的主用主控板,并将路由协议计算任务N分配给确定的CPU占用率最小的主用主控板。
当主用主控板A故障时,切换为其备用主用主控板,堆叠系统再重新选举全局主控板,全局主控板选举完成后,再通过上述流程重新执行。
基于上述同样地发明构思,本发明还提出一种装置,可应用于堆叠系统实现中堆叠设备的主用主控板上,参见图4,图4为本发明具体实施例中应用于堆叠系统中堆叠设备的主用主控板上的装置的结构示意图。该装置包括:接收单元401、记录单元402、获取单元403和处理单元404。
接收单元401,用于在预设时间内接收堆叠系统中其他主用主控板发送的告知报文。
记录单元402,用于记录接收单元401接收的告知报文携带的主用主控板的信息,以及获取单元403获取的记录了信息的主用主控板的CPU占用率以及自身所在主用主控板的CPU占用率。
获取单元403,用于获取记录单元402记录了信息的主用主控板的CPU占用率及自身所在主用主控板的CPU占用率;获取所述各主用主控板运算的路由转发信息。
处理单元404,用于根据各路由协议计算任务的运算量和获取的各主用主控板的CPU占用率为各路由协议计算任务分配主用主控板,并将路由协议计算任务分配结果发送给对应的主用主控板使其进行运算;用于将获取单元403获取的所述各路由转发信息,在所述堆叠系统内同步所述路由转发信息。
较佳地,
处理单元404,用于将各路由协议计算任务按照运算量从大到小的顺序,依次分配给CPU占用率由低到高的各主用主控板,譬如,处理单元404将各路由协议计算任务按照运算量从大到小进行排序,各主用主控板的CPU占用率按从小到大的顺序进行排序,分配运算量最大的路由协议计算任务给CPU占用率最小的主用主控板,运算量次大的路由协议计算任务给CPU占用率次小的主用主控板,依次类推,直到所有路由协议计算任务分配完成。
较佳地,该主用主控板进一步包括:判断单元405。
判断单元405,用于若确定所述路由协议计算任务个数大于获得CPU占用率的主用主控板的个数,则始终将运算量最小的两个路由协议计算任务相加直至路由协议计算任务的个数等于获得CPU占用率的主用主控板的个数,触发处理单元404执行将各路由协议计算任务按照运算量从大到小的顺序,依次分配给CPU占用率由低到高的各主用主控板的操作,譬如判断单元405将两个路由协议计算任务运算量最小的相加,若当前路由协议计算任务个数大于获得CPU占用率的主用主控板的个数,则将当前的路由协议计算任务个数按运算量从大到小排序,将当前两个路由协议计算任务运算量最小的相加,依次类推,直到当前路由协议计算任务个数等于获得CPU占用率的主用主控板的个数,其中,所述两个路由协议计算任务运算量最小的相加后作为一个路由协议计算任务运算量进行排序,触发处理单元404执行操作。
较佳地,
接收单元401,用于当处理单元404将分配结果发送给对应的主用主控板时,重新开始接收其他主用主控板发送的告知报文。
记录单元402,用于当接收单401元接收到其他主用主控板发送的告知报文时,记录该主用主控板的信息,并记录所述获取单元获取的该主用主控板的CPU占用率。
获取单元403,用于获取记录单元402记录了信息的主用主控板的CPU占用率。
较佳地,
接收单元401,进一步用于接收其他主用主控板回复的携带CPU占用率的reply报文。
处理单元402,进一步用于当将分配结果发送给对应的主用主控板时,定时向记录了信息的主用主控板发送hello报文;若在预设时间内接收单元401未收到主用主控板回复的携带CPU占用率的reply报文,则确定该主用主控板出现异常,若该异常主用主控板分得路由协议计算任务,则将该路由协议计算任务分配给当前CPU占用率最低的主用主控板。
记录单元402,进一步用于当接收单元401在预设应答时间内接收到所述主用主控板回复的携带CPU占用率的reply报文,更新该主用主控板的CPU占用率;当处理单元404确定所述主用主控板出现异常时,则删除记录的该异常主用主控板的信息以及其CPU占用率。
较佳地,
获取单元403,用于向记录了信息的主用主控板分别发送索取其CPU占用率的报文,接收各主用主控板发送的携带自身CPU占用率的反馈报文,从该报文获得各主用主控板对应的CPU占用率;用于接收其他主用主控板发送的携带运算的路由转发信息的报文,获取所述携带的路由转发信息;并获取本装置运算的路由转发信息。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明通过堆叠系统中的全局主控板为其他主用主控板分配路由协议计算任务,并统一管理各路由协议计算任务的运行结果,能够提高系统协议运算率,充分利用系统资源。
通过这种分布式计算,均衡了系统的负载,避免全局主用板工作量大幅增加,导致运算能力不够的情况,充分利用了系统资源,提高了系统的鲁棒性。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。