发明内容
本发明实施例提供一种基于虚拟网络设备的路由进程管理方法和设备,以在主控板发生故障时,避免GR处理失败,并可以提高网络的可靠性。
为达到上述目的,本发明实施例提供一种基于虚拟网络设备的路由进程管理方法,应用于虚拟化成多个多租户设备环境MDC的物理网络设备中,该方法包括以下步骤:
MDC在确定本MDC与邻居MDC位于同一物理网络设备时,确定本MDC在所述物理网络设备中为主状态进程路由器MPR或从状态进程路由器SPR;
如果为MPR,则所述MDC对本MDC上路由进程不切换主控板;
如果为SPR,则所述MDC判断本MDC与MPR之间是否为邻居;
如果是,则当所述MDC上路由进程与MPR上路由进程由同一主控板进行处理时,所述MDC将本MDC上路由进程切换到其它主控板上;
如果否,则所述MDC利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或对本MDC上路由进程不切换主控板。
所述MDC确定本MDC与邻居MDC位于同一物理网络设备,具体包括:
所述MDC接收来自邻居MDC的MDC邻居检测DMN Hello报文,所述DMN Hello报文携带了邻居MDC所属物理网络设备的标识;
当所述DMN Hello中携带的物理网络设备的标识与本MDC所属物理网络设备的标识相同时,所述MDC确定本MDC与邻居MDC位于同一物理网络设备;否则,确定本MDC与邻居MDC不位于同一物理网络设备。
所述MDC确定本MDC在所述物理网络设备中为MPR或SPR具体包括:
所述MDC比较本MDC在所述物理网络设备中的邻居数以及其它MDC在所述物理网络设备中的邻居数;
当本MDC在所述物理网络设备中的邻居数大于其它MDC在所述物理网络设备中的邻居数时,所述MDC确定本MDC在所述物理网络设备中为MPR;
当本MDC在所述物理网络设备中的邻居数小于其它MDC在所述物理网络设备中的邻居数时,所述MDC确定本MDC在所述物理网络设备中为SPR;
当本MDC在所述物理网络设备中的邻居数最多,且本MDC在所述物理网络设备中的邻居数等于其它MDC在所述物理网络设备中的邻居数时,所述MDC比较本MDC的ID与其它MDC的ID;
当本MDC的ID小于其它MDC的ID时,所述MDC确定本MDC在所述物理网络设备中为MPR;当本MDC的ID大于其它MDC的ID时,所述MDC确定本MDC在所述物理网络设备中为SPR。
所述MDC利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或对本MDC上路由进程不切换主控板,具体包括:
所述MDC判断距离本MDC为n跳的MDC上的路由进程与距离本MDC为(n-1)跳的MDC上的路由进程是否由同一个主控板进行处理;其中,所述n的初始取值为本MDC与MPR之间的路径跳数;
如果是,则当n=1时,所述MDC将本MDC上的路由进程切换到其它主控板上;当n>1时,所述MDC对本MDC上的路由进程不切换主控板;
如果否,则当n=1时,所述MDC对本MDC上的路由进程不切换主控板;当n>1时,所述MDC确定n=n-1,基于重新确定的n的取值,所述MDC继续执行判断距离本MDC为n跳的MDC上的路由进程与距离本MDC为(n-1)跳的MDC上的路由进程是否由同一个主控板进行处理的步骤。
所述MDC将本MDC上的路由进程切换到其它主控板上,具体包括:
当本MDC所在物理网络设备为堆叠设备时,所述MDC将本MDC上的路由进程切换到堆叠的其它物理网络设备的主控板上;
当本MDC所在物理网络设备不是堆叠设备时,所述MDC将本MDC上的路由进程切换到所述物理网络设备的其它主控板上。
所述方法还包括:所述MDC在确定本MDC与邻居MDC位于同一物理网络设备之后,启动邻居检测定时器,并在邻居检测定时器超时之前,与邻居MDC交互携带邻居状态信息的DMN报文;所述邻居状态信息包括:邻居MDC的ID、邻居MDC在所述物理网络设备中的邻居数、邻居MDC上路由进程的主控板信息、邻居MDC与该邻居MDC的邻居MDC之间的路径跳数;
所述MDC在收到来自邻居MDC的DMN报文时,基于所述邻居检测定时器超时之前收到的DMN报文,利用DMN报文中携带的邻居状态信息维护MDC邻居表;所述MDC邻居表中记录以下信息:本MDC的ID、邻居MDC的ID、本MDC在所述物理网络设备中邻居信息、邻居MDC在所述物理网络设备中的邻居信息、本MDC上路由进程的主控板信息、邻居MDC上路由进程的主控板信息、本MDC与所述物理网络设备中其它MDC之间的路径跳数。
本发明实施例中提供一种多租户设备环境MDC,应用于虚拟化成多个MDC的物理网络设备中,所述MDC具体包括:
第一确定模块,用于确定本MDC与邻居MDC位于同一物理网络设备;
第二确定模块,用于当本MDC与邻居MDC位于同一物理网络设备时,确定本MDC在所述物理网络设备中为主状态进程路由器MPR或者从状态进程路由器SPR;
第一处理模块,用于当本MDC在所述物理网络设备中为MPR时,对本MDC上路由进程不切换主控板;
第二处理模块,用于当本MDC在所述物理网络设备中为SPR时,判断本MDC与MPR之间是否为邻居;如果是,则当本MDC上路由进程与MPR上路由进程由同一主控板进行处理时,将本MDC上路由进程切换到其它主控板上;如果否,则利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或对本MDC上路由进程不切换主控板。
所述第一确定模块,具体用于接收来自邻居MDC的MDC邻居检测DMNHello报文,所述DMN Hello报文携带了邻居MDC所属物理网络设备的标识;当所述DMN Hello中携带的物理网络设备的标识与本MDC所属物理网络设备的标识相同时,确定本MDC与邻居MDC位于同一物理网络设备;否则,确定本MDC与邻居MDC不位于同一物理网络设备。
所述第二确定模块,具体用于比较本MDC在所述物理网络设备中的邻居数以及其它MDC在所述物理网络设备中的邻居数;
当本MDC在所述物理网络设备中的邻居数大于其它MDC在所述物理网络设备中的邻居数时,确定本MDC在所述物理网络设备中为MPR;
当本MDC在所述物理网络设备中的邻居数小于其它MDC在所述物理网络设备中的邻居数时,确定本MDC在所述物理网络设备中为SPR;
当本MDC在所述物理网络设备中的邻居数最多,且本MDC在所述物理网络设备中的邻居数等于其它MDC在所述物理网络设备中的邻居数时,比较本MDC的ID与其它MDC的ID;
当本MDC的ID小于其它MDC的ID时,确定本MDC在所述物理网络设备中为MPR;当本MDC的ID大于其它MDC的ID时,确定本MDC在所述物理网络设备中为SPR。
所述第二处理模块,具体用于在利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或对本MDC上路由进程不切换主控板时,判断距离本MDC为n跳的MDC上的路由进程与距离本MDC为(n-1)跳的MDC上的路由进程是否由同一个主控板进行处理;其中,所述n的初始取值为本MDC与MPR之间的路径跳数;如果是,则当n=1时,将本MDC上的路由进程切换到其它主控板上;当n>1时,对本MDC上的路由进程不切换主控板;如果否,则当n=1时,对本MDC上的路由进程不切换主控板;当n>1时,确定n=n-1,基于重新确定的n的取值,继续执行判断距离本MDC为n跳的MDC上的路由进程与距离本MDC为(n-1)跳的MDC上的路由进程是否由同一个主控板进行处理的过程。
所述第二处理模块,进一步用于当本MDC所在物理网络设备为堆叠设备时,将本MDC上的路由进程切换到堆叠的其它物理网络设备的主控板上;
当本MDC所在物理网络设备不是堆叠设备时,将本MDC上的路由进程切换到所述物理网络设备的其它主控板上。
还包括维护模块,用于在确定本MDC与邻居MDC位于同一物理网络设备之后,启动邻居检测定时器,并在所述邻居检测定时器超时之前,与邻居MDC交互携带了邻居状态信息的DMN报文;所述邻居状态信息包括:邻居MDC的ID、邻居MDC在所述物理网络设备中的邻居数、邻居MDC上路由进程的主控板信息、邻居MDC与该邻居MDC的邻居MDC之间的路径跳数;
在收到来自邻居MDC的DMN报文时,基于所述邻居检测定时器超时之前收到的DMN报文,利用DMN报文中携带的邻居状态信息维护MDC邻居表;所述MDC邻居表中记录以下信息:本MDC的ID、邻居MDC的ID、本MDC在所述物理网络设备中的邻居信息、邻居MDC在所述物理网络设备中的邻居信息、本MDC上路由进程的主控板信息、邻居MDC上路由进程的主控板信息、本MDC与所述物理网络设备中其它MDC之间的路径跳数。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,通过将相邻MDC的路由进程运行到不同主控板上进行处理,在主控板发生故障(导致主备倒换的发生)时,可以避免GR处理失败,即GR能够处理成功,极大地提高了网络可靠性;而且通过将相邻MDC的路由进程运行到不同主控板上进行处理,使路由进程分布式运行,还可以提高设备资源的利用率。
具体实施方式
针对现有技术中存在的问题,本发明实施例提供一种基于虚拟网络设备的路由进程管理方法,应用于虚拟化成多个MDC(逻辑网络设备)的物理网络设备中,并用于对路由进程(如OSPF协议的GR进程)进行管理;以图1为本发明实施例的应用场景示意图,物理网络设备被虚拟化成MDC1、MDC2和MDC3;MDC1与MDC2之间互为邻居MDC,MDC2与MDC3之间互为邻居MDC。
基于上述应用场景,如图2所示,该基于虚拟网络设备的路由进程管理方法包括以下步骤:
步骤201,MDC确定本MDC与邻居MDC位于同一物理网络设备。
本发明实施例中,通过在路由进程中启用mdc detect enable命令,使得路由进程使能MDC邻居状态检测功能(若MDC中运行多个路由进程,可在每个路由进程中使能MDC邻居状态检测功能);基于此MDC邻居状态检测功能,当路由邻居关系进入稳态之后,MDC与邻居MDC之间将开始交互DMN(Detect MDC Neighbor,MDC邻居检测)Hello报文,且该DMN Hello报文携带了邻居MDC所属物理网络设备的标识;如DMN Hello报文的Fabric tag(结构标签)字段携带了邻居MDC所属物理网络设备的标识。
进一步地,MDC在收到来自邻居MDC的DMN Hello报文后,检查DMNHello报文的Fabric tag字段中携带的物理网络设备的标识与本MDC所属物理网络设备的标识是否相同;当DMN Hello中携带的物理网络设备的标识与本MDC所属物理网络设备的标识相同时,MDC确定本MDC与邻居MDC位于同一物理网络设备,继续执行后续步骤;否则,确定本MDC与邻居MDC不位于同一物理网络设备,直接丢弃该DMN Hello报文,不做任何处理。
在图1所示的应用场景下,MDC1在收到来自MDC2的DMN Hello报文后,确定本MDC1与邻居MDC2位于同一物理网络设备;MDC2在收到来自MDC1的DMN Hello报文后,确定本MDC2与邻居MDC1位于同一物理网络设备;MDC2在收到来自MDC3的DMN Hello报文后,确定本MDC2与邻居MDC3位于同一物理网络设备;MDC3在收到来自MDC2的DMN Hello报文后,确定本MDC3与邻居MDC2位于同一物理网络设备。
步骤202,MDC在确定本MDC与邻居MDC位于同一物理网络设备时,确定本MDC在物理网络设备中为MPR(Master Process Router,主状态进程路由器)或者SPR(Slave Process Router,从状态进程路由器);其中,如果MDC为MPR,则执行步骤203;如果MDC为SPR,则执行步骤204。
本发明实施例的一种优选实施方式中,MDC可以基于各MDC在物理网络设备中的邻居数以及ID大小确定本MDC为MPR或者SPR;具体的,MDC比较本MDC在物理网络设备中的邻居数以及其它MDC在物理网络设备中的邻居数;当本MDC在物理网络设备中的邻居数大于其它MDC在物理网络设备中的邻居数时,MDC确定本MDC在物理网络设备中为MPR;当本MDC在物理网络设备中的邻居数小于其它MDC在物理网络设备中的邻居数时,MDC确定本MDC在物理网络设备中为SPR;当本MDC在物理网络设备中的邻居数最多,且本MDC在所述物理网络设备中的邻居数等于其它MDC在物理网络设备中的邻居数时,MDC比较本MDC的ID与其它MDC的ID;当本MDC的ID小于其它MDC的ID时,MDC确定本MDC在物理网络设备中为MPR;当本MDC的ID大于其它MDC的ID时,MDC确定本MDC在物理网络设备中为SPR。
在图1所示的应用场景下,MDC1在物理网络设备中的邻居数(为1)小于MDC2在物理网络设备中的邻居数(为2),因此MDC1确定本MDC1在物理网络设备中为SPR;MDC3在物理网络设备中的邻居数(为1)小于MDC2在物理网络设备中的邻居数,因此MDC3确定本MDC3在物理网络设备中为SPR;MDC2在物理网络设备中的邻居数大于MDC1和MDC3在物理网络设备中的邻居数,因此MDC2确定本MDC2在物理网络设备中为MPR。
步骤203,MDC对本MDC上路由进程不切换主控板,结束流程。
在图1所示的应用场景下,MDC2在确定本MDC2在物理网络设备中为MPR之后,对路由进程不切换主控板,即仍然由主控板1对MDC2上的路由进程进行处理,不需要将MDC2上的路由进程切换到其它主控板上。
步骤204,MDC判断本MDC与MPR(即MDC2)之间是否为邻居MDC;如果是,则执行步骤205;如果否,则执行步骤206。
在图1所示的应用场景下,MDC1在确定本MDC1在物理网络设备中为SPR之后,判断MDC1与MDC2之间是否为邻居MDC;此时判断结果为是,执行步骤205;MDC3在确定本MDC3在物理网络设备中为SPR之后,判断MDC3与MDC2之间是否为邻居MDC;此时判断结果为是,执行步骤205;假设在物理网络设备中还存在MDC4,该MDC4与MDC1互为邻居MDC,则MDC4在确定本MDC4在物理网络设备中为SPR之后,判断MDC4与MDC2之间是否为邻居MDC;此时判断结果为否,执行步骤206。
步骤205,当MDC上路由进程与MPR上路由进程由同一主控板进行处理时,MDC将本MDC上路由进程切换到其它主控板上。
具体的,当本MDC与MPR之间为邻居MDC时,MDC需要判断本MDC上路由进程与MPR上路由进程是否由同一主控板进行处理;当本MDC上路由进程与MPR上路由进程由同一主控板进行处理时,MDC需要将本MDC上路由进程切换到其它主控板上;当本MDC上路由进程与MPR上路由进程不是由同一主控板进行处理时,MDC对本MDC上路由进程不切换主控板。
在图1所示的应用场景下,MDC1需要判断MDC1上路由进程与MDC2上路由进程是否由同一主控板进行处理;假设MDC1上路由进程由主控板1进行处理,则需要将MDC1上路由进程切换到其它主控板2上;假设MDC1上路由进程由主控板2进行处理,则不需要将MDC1上的路由进程切换到其它主控板上。MDC3需要判断MDC3上路由进程与MDC2上路由进程是否由同一主控板进行处理;假设MDC3上路由进程由主控板1进行处理,则需要将MDC3上路由进程切换到其它主控板2上,假设MDC3上路由进程由主控板2进行处理,则不需要将MDC3上的路由进程切换到其它主控板上。
步骤206,MDC利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或对本MDC上路由进程不切换主控板。
本发明实施例的一种优选实施方式中,MDC利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或者对本MDC上路由进程不切换主控板,具体包括以下步骤:
步骤1、MDC判断距离本MDC为n跳的MDC上的路由进程与距离本MDC为(n-1)跳的MDC上的路由进程是否由同一个主控板进行处理;如果是,则执行步骤2;如果否,则执行步骤3。
本发明实施例中,n的初始取值为本MDC与MPR之间的路径跳数。
步骤2、当n=1时,MDC将本MDC上的路由进程切换到其它主控板上;当n>1时,MDC对本MDC上的路由进程不切换主控板。
步骤3、当n=1时,MDC对本MDC上的路由进程不切换主控板;当n>1时,MDC确定n=n-1,基于重新确定的n的取值,MDC继续执行步骤1。
在图1所示的应用场景下,假设在物理网络设备中还存在MDC4,且该MDC4与MDC1互为邻居MDC,基于此MDC4需要判断距离MDC4为2跳(MDC4与MDC2之间的路径跳数)的MDC2上的路由进程与MDC1上的路由进程是否由同一个主控板进行处理;此时MDC2上的路由进程(由主控板1处理)与MDC1上的路由进程(由主控板2处理)由不同主控板进行处理,且n=2,因此MDC4确定n=n-1,即重新确定的n的取值为1。
之后,MDC4需要判断距离MDC4为1跳的MDC1上的路由进程与距离MDC4为0跳的MDC4上的路由进程是否由同一主控板进行处理;假设MDC1上的路由进程(由主控板2处理)与MDC4上的路由进程由同一个主控板进行处理,则由于n=1,因此需要将MDC4上的路由进程切换到其它主控板上;假设MDC1上的路由进程与MDC4上的路由进程由不同主控板进行处理,则由于n=1,因此不需要将MDC4上的路由进程切换到其它主控板上。
本发明实施例中,MDC将本MDC上的路由进程切换到其它主控板上,具体包括但不限于如下方式:当本MDC所在物理网络设备为堆叠设备时,该MDC需要将本MDC上的路由进程切换到堆叠的其它物理网络设备的主控板上;当本MDC所在物理网络设备不是堆叠设备时,该MDC需要将本MDC上的路由进程切换到本物理网络设备的其它主控板上。
本发明实施例中,当物理网络设备上有新主控板***或者有主控板被拆除时,会触发上述处理流程,在此不再重复赘述。
针对上述处理流程,为了使各MDC获知邻居MDC在物理网络设备中的邻居数、邻居MDC的ID、邻居MDC上路由进程的主控板信息、本MDC与物理网络设备中其它MDC之间的路径跳数等信息;本发明实施例中,MDC在确定本MDC与邻居MDC位于同一物理网络设备之后,还可以启动邻居检测定时器,并在邻居检测定时器超时之前,与邻居MDC交互携带了邻居状态信息的DMN报文;其中,该邻居状态信息具体包括但不限于:邻居MDC的ID、邻居MDC在物理网络设备中的邻居数、邻居MDC上路由进程的主控板信息、邻居MDC与该邻居MDC的邻居MDC之间的路径跳数等。
MDC在收到来自邻居MDC的DMN报文时,基于邻居检测定时器超时前收到的DMN报文,可以利用DMN报文中携带的邻居状态信息维护MDC邻居表;该MDC邻居表中记录信息包括但不限于以下信息:本MDC的ID、邻居MDC的ID、本MDC在物理网络设备中的邻居信息、邻居MDC在物理网络设备中的邻居信息、本MDC上路由进程的主控板信息、邻居MDC上路由进程的主控板信息、本MDC与物理网络设备中其它MDC之间的路径跳数。
以下结合图3所示的DMN报文格式对DMN报文进行详细说明。
在图3所示的DMN报文格式中,各字段的详细描述如下:Version(版本):4个bits,4for IPv4,6for IPv6;Type(类型):4个bits,1代表DMN报文,收到type非1的报文丢弃;Option(选项):用于后续扩展;Sequence Number(序列号):初始值为1,若报文内容有变化,则序列号加1;Confirm SequenceNumber(确认序列号):初始值为0,若收到对端的报文,则将对应序列号填入该字段,用于通告对方自身已收到该报文;Holding timer:抑制定时器,用于设备之间协商抑制定时器的值,最小值生效,默认值为3分钟;Detect timer:邻居检测定时器,用于协商交互DMN报文的时间,在邻居检测定时器超时之前不进行MPR选举,取最小值生效,默认值为2分钟;Fabric tag:设备标识,用于识别MDC所属物理网络设备是否为同一物理设备,若收到的报文Fabrictag与本地不匹配,将丢弃该报文不做处理;MDC ID:***为MDC分配的编号;Running state:当前路由进程所运行的状态,用于标识路由进程是否运行在主用主控板;Neighbor number:MDC所拥有邻居数,用于MPR选举,邻居数多的MDC将成为MPR;Role:当前MDC所属角色,置M为MPR,置S为SPR;Hops:本地MDC到邻居MDC的跳数;IRF ID:堆叠设备的堆叠ID;Slot ID:当前设备路由进程运行的主控板槽位号;TLV:用于携带MDC的邻居信息,将从邻居MDC学习到的邻居信息封装成TLV。
本发明实施例中,为了排除由于网络震荡造成的路由状态变化,可先启用抑制定时器,如果在抑制定时器超时前路由邻居没有down,则发送DMN报文;此外,当MDC的邻居信息发生变化时,会触发DMN报文更新,MDC需要将本MDC的邻居信息都封装到DMN报文中发送给直连邻居MDC。
基于此,初始化时DMN报文中仅有MDC自身的邻居信息,但随着学习的邻居数越来越多,会将邻居的邻居信息通过TLV封装进DMN报文中,最终确保所有的MDC都学习到同物理网络设备中所有MDC的邻居信息。
此外,DMN报文在交互时需要具有应答机制,即每收到一个DMN报文,可以根据该DMN报文中的确认序列号字段判断对方是否收到了自身发送出去的DMN报文,若对方没有收到DMN报文,则会重发该DMN报文。
在图1所示的应用场景下,在MDC1发送给MDC2的DMN报文中,可以至少包括MDC1的ID(通过MDC ID字段携带)、MDC1在物理网络设备中的邻居数(通过Neighbor number字段携带)、MDC1上路由进程的主控板信息(通过IRF ID字段和Slot ID字段携带)、MDC1与MDC2之间的路径跳数(通过Hops字段和TLV字段携带)等信息。在MDC3发送给MDC2的DMN报文中,可以至少包括MDC3的ID(通过MDC ID字段携带)、MDC3在物理网络设备中的邻居数(通过Neighbor number字段携带)、MDC3上路由进程的主控板信息(通过IRF ID字段和Slot ID字段携带)、MDC3与MDC2之间的路径跳数(通过Hops字段和TLV字段携带)等信息。
在MDC2发送给MDC1的DMN报文中,可以至少包括MDC2的ID(通过MDC ID字段携带)、MDC2在物理网络设备中的邻居数(通过Neighbornumber字段携带)、MDC2上路由进程的主控板信息(通过IRF ID字段和SlotID字段携带)、MDC2与MDC1之间的路径跳数和MDC2与MDC3之间的路径跳数(通过Hops字段和TLV字段携带)等信息。
在MDC2发送给MDC3的DMN报文中,可以至少包括MDC2的ID(通过MDC ID字段携带)、MDC2在物理网络设备中的邻居数(通过Neighbornumber字段携带)、MDC2上路由进程的主控板信息(通过IRF ID字段和SlotID字段携带)、MDC2与MDC1之间的路径跳数和MDC2与MDC3之间的路径跳数(通过Hops字段和TLV字段携带)等信息。
以下结合表1所示的MDC邻居表(该MDC邻居表用于维护MDC邻居关系)对MDC邻居表的维护过程进行详细说明。
表1
MDC ID |
Neighbor ID |
Running state |
Hops |
Role |
IRF ID |
Slot ID |
|
|
|
|
|
|
|
在表1所示的MDC邻居表中,各字段的详细描述如下所示:MDC ID:学习到的MDC ID;Neighbor ID:对应的邻居MDC ID;Running state:MDC上的路由进程运行状态;Hops:本地到学习到的MDC的跳数;Role:MDC的运行角色;IRF ID:若为堆叠,表示邻居路由进程所在的框号,若为单机环境,该项为空;Slot ID:邻居运行路由进程主控所在的槽位号。
MDC在确定本MDC与邻居MDC位于同一物理网络设备之后,启动邻居检测定时器(Detect timer),在邻居检测定时器超时之前,需要继续在MDC之间交互DMN报文,以确保每个MDC能收集到完整邻居信息,并维护表1所示的MDC邻居表;在邻居检测定时器超时之后,将进入MPR选举阶段。
在MDC邻居表中,初始状态时Role项是空的,在MPR选举阶段结束之后,如果MDC被选举成为MPR,则需要将MDC邻居表中的Role项置M;如果MDC被选举成为SPR,则需要将MDC邻居表中的Role项置S。
此外,在维护MDC邻居表的过程中,MDC邻居表依赖于路由运行状态,如果由于故障导致路由邻居down,则需要将MDC邻居表中对应表项清空;且在未使能MDC邻居关系检测功能时,相应MDC邻居表为空。
在图1所示的应用场景下,MDC1上将维护表2所示的MDC邻居表,该MDC邻居表的学习过程如下:MDC1首先学习到MDC1,该MDC1的邻居MDC为MDC2,其次学习到MDC2,该MDC2的邻居MDC为MDC1和MDC3,其次学习到MDC3,该MDC3的邻居MDC为MDC2。
表2
基于MDC邻居表,MDC1获得本MDC的ID为1,MDC1的邻居MDC的ID为2,MDC1在物理网络设备中的邻居数为1(即MDC2),MDC1上路由进程的主控板为主控板1;MDC2的邻居MDC的ID为1和3,MDC2在物理网络设备中的邻居数为2(即MDC1和MDC3),MDC2与MDC1之间的路径跳数为1,MDC2上路由进程的主控板为主控板1;MDC3的邻居MDC的ID为2,MDC3在物理网络设备中的邻居数为1(即MDC2),MDC3与MDC1之间的路径跳数为2,MDC2上路由进程的主控板为主控板1。
在图1所示的应用场景下,MDC2上将维护表3所示的MDC邻居表,该MDC邻居表的学习过程如下:MDC2首先学习到MDC2,该MDC2的邻居MDC为MDC1和MDC3,其次学习到MDC1,该MDC1的邻居MDC为MDC2,其次学习到MDC3,该MDC3的邻居MDC为MDC2。
表3
基于MDC邻居表,MDC2获得本MDC的ID为2,MDC2的邻居MDC的ID为1和3,MDC2在物理网络设备中的邻居数为2(即MDC1和MDC3),MDC2上路由进程的主控板为主控板1;MDC1的邻居MDC的ID为2,MDC1在物理网络设备中的邻居数为1(即MDC2),MDC1与MDC2之间的路径跳数为1,MDC1上路由进程的主控板为主控板1;MDC3的邻居MDC的ID为2,MDC3在物理网络设备中的邻居数为1(即MDC2),MDC3与MDC2之间的路径跳数为1,MDC3上路由进程的主控板为主控板1。
在图1所示的应用场景下,MDC3上将维护表4所示的MDC邻居表,该MDC邻居表的学习过程如下:MDC3首先学习到MDC3,该MDC3的邻居MDC为MDC2,其次学习到MDC2,该MDC2的邻居MDC为MDC1和MDC3,其次学习到MDC1,该MDC1的邻居MDC为MDC2。
表4
基于MDC邻居表,MDC3获得本MDC的ID为3,MDC3的邻居MDC的ID为2,MDC3在物理网络设备中的邻居数为1(即MDC2),MDC3上路由进程的主控板为主控板1;MDC2的邻居MDC的ID为1和3,MDC2在物理网络设备中的邻居数为2(即MDC1和MDC3),MDC2与MDC3之间的路径跳数为1,MDC2上路由进程的主控板为主控板1;MDC1的邻居MDC的ID为2,MDC1在物理网络设备中的邻居数为1(即MDC2),MDC1与MDC3之间的路径跳数为2,MDC1上路由进程的主控板为主控板1。
随着云计算的发展,数据中心的规模将越来越大,通过使用MDC技术将一台物理网络设备划分为不同逻辑网络设备,以分别承担核心和汇聚角色时,如果在网络中部署OSPF,由于OSPF邻居是由同一台物理网络设备虚拟出来的,因此当主控板故障导致发生主备倒换时,将出现OSPF GR失败的情况。
基于此,本发明实施例中,通过选举MPR和SPR,结合分布式进程优化功能,保证相邻MDC的路由进程运行到不同主控板上进行处理,在主控板发生故障(导致主备倒换的发生)时,可以避免GR处理失败,极大地提高了网络可靠性;而且通过将相邻MDC的路由进程运行到不同主控板上进行处理,使路由进程分布式运行,还可以提高设备资源的利用率。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种多租户设备环境MDC,应用于虚拟化成多个MDC的物理网络设备中,如图4所示,所述MDC具体包括:
第一确定模块11,用于确定本MDC与邻居MDC位于同一物理网络设备;
第二确定模块12,用于当本MDC与邻居MDC位于同一物理网络设备时,确定本MDC在所述物理网络设备中为主状态进程路由器MPR或者从状态进程路由器SPR;
第一处理模块13,用于当本MDC在所述物理网络设备中为MPR时,对本MDC上路由进程不切换主控板;
第二处理模块14,用于当本MDC在所述物理网络设备中为SPR时,判断本MDC与MPR之间是否为邻居;如果是,则当本MDC上路由进程与MPR上路由进程由同一主控板进行处理时,将本MDC上路由进程切换到其它主控板上;如果否,则利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或对本MDC上路由进程不切换主控板。
所述第一确定模块11,具体用于接收来自邻居MDC的MDC邻居检测DMN Hello报文,所述DMN Hello报文携带了邻居MDC所属物理网络设备的标识;当所述DMN Hello中携带的物理网络设备的标识与本MDC所属物理网络设备的标识相同时,确定本MDC与邻居MDC位于同一物理网络设备;否则,确定本MDC与邻居MDC不位于同一物理网络设备。
所述第二确定模块12,具体用于比较本MDC在所述物理网络设备中的邻居数以及其它MDC在所述物理网络设备中的邻居数;
当本MDC在所述物理网络设备中的邻居数大于其它MDC在所述物理网络设备中的邻居数时,确定本MDC在所述物理网络设备中为MPR;
当本MDC在所述物理网络设备中的邻居数小于其它MDC在所述物理网络设备中的邻居数时,确定本MDC在所述物理网络设备中为SPR;
当本MDC在所述物理网络设备中的邻居数最多,且本MDC在所述物理网络设备中的邻居数等于其它MDC在所述物理网络设备中的邻居数时,比较本MDC的ID与其它MDC的ID;
当本MDC的ID小于其它MDC的ID时,确定本MDC在所述物理网络设备中为MPR;当本MDC的ID大于其它MDC的ID时,确定本MDC在所述物理网络设备中为SPR。
所述第二处理模块14,具体用于在利用本MDC与MPR之间的路径跳数确定将本MDC上路由进程切换到其它主控板上或对本MDC上路由进程不切换主控板时,判断距离本MDC为n跳的MDC上的路由进程与距离本MDC为(n-1)跳的MDC上的路由进程是否由同一个主控板进行处理;其中,所述n的初始取值为本MDC与MPR之间的路径跳数;如果是,则当n=1时,将本MDC上的路由进程切换到其它主控板上;当n>1时,对本MDC上的路由进程不切换主控板;如果否,则当n=1时,对本MDC上的路由进程不切换主控板;当n>1时,确定n=n-1,基于重新确定的n的取值,继续执行判断距离本MDC为n跳的MDC上的路由进程与距离本MDC为(n-1)跳的MDC上的路由进程是否由同一个主控板进行处理的过程。
所述第二处理模块14,进一步用于当本MDC所在物理网络设备为堆叠设备时,将本MDC上的路由进程切换到堆叠的其它物理网络设备的主控板上;当本MDC所在物理网络设备不是堆叠设备时,将本MDC上的路由进程切换到所述物理网络设备的其它主控板上。
该MDC还包括:维护模块15,用于在确定本MDC与邻居MDC位于同一物理网络设备之后,启动邻居检测定时器,并在所述邻居检测定时器超时之前,与邻居MDC交互携带了邻居状态信息的DMN报文;所述邻居状态信息包括:邻居MDC的ID、邻居MDC在所述物理网络设备中的邻居数、邻居MDC上路由进程的主控板信息、邻居MDC与该邻居MDC的邻居MDC之间的路径跳数;在收到来自邻居MDC的DMN报文时,基于所述邻居检测定时器超时之前收到的DMN报文,利用DMN报文中携带的邻居状态信息维护MDC邻居表;所述MDC邻居表中记录以下信息:本MDC的ID、邻居MDC的ID、本MDC在所述物理网络设备中邻居信息、邻居MDC在所述物理网络设备中的邻居信息、本MDC上路由进程的主控板信息、邻居MDC上路由进程的主控板信息、本MDC与所述物理网络设备中其它MDC之间的路径跳数。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。