发明内容
有鉴于此,本发明提供了一种用于VRRP备份组恢复流量的方法和装置。
本发明提供的一种用于VRRP备份组恢复流量的方法,该方法包括在VRRP备份组中的每台成员设备执行的如下步骤:
a10、当本机从Backup状态切换至Master状态后,判断在本机切换之前处于Master状态的其他成员设备目前是否仍在Master状态正常工作;
a20、若步骤a10判断为是,则侦测VRRP备份组所在网段内的本地ARP表项是否有效;
a30、若步骤a20侦测到与本机保持连接的本地主机所对应的有效的本地ARP表项,则发布有效的本地ARP表项所对应的本地主机IP地址的主机路由信息;
b10、当本机在Master状态接收到其他成员设备发布的本地主机IP地址的主机路由信息后,判断该本地主机IP地址是否与本机的二层接口同处在VRRP备份组所在网段;
b20、若步骤b10判断为是,则检测该本地主机IP地址与本机的二层接口所连接的本地主机的IP地址是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,步骤b20所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应其他成员发布的本地主机IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
b30、若步骤b20检测出无IP地址冲突,则为其他成员发布的该本地主机IP地址在本机创建远程ARP代理表项;
c10、当本机在Master状态从本机连接三层网络的三层接口接收到数据报文后,判断该数据报文的源IP地址和目的IP地址是否均与本机的二层接口同处在VRRP备份组所在网段;
c20、若步骤c10判断为是、且该数据报文的源IP地址目前尚未在本机创建对应的远程ARP代理表项,则检测该数据报文的源IP地址与本机的二层接口所连接的本地主机是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,步骤c20所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应该数据报文的源IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
c30、若步骤c20检测出无IP地址冲突,则为该数据报文的源IP地址在本机创建远程ARP代理表项;
其中,与远程ARP代理表项对应相同IP地址的本地ARP表项会被本机删除;远程ARP代理表项中的Mac地址为本机的Mac地址;由本机利用远程ARP代理表项所转发的数据报文中的Mac地址会被设置为本机的Mac地址。
该方法进一步包括在VRRP备份组中的每台成员设备执行的如下步骤:
d10、当本机从Master状态切换至Backup状态后,若本机通过步骤a30发布了本地主机IP地址的主机路由信息,则撤销本机发布的该本地主机IP地址的主机路由信息;
d21、当本机接收到其他成员设备撤销了已发布的本地主机IP地址的主机路由信息的通知后,若判断出被撤销的主机路由信息所对应的该本地主机IP地址与本机的二层接口同处在VRRP备份组所在网段、且被撤销的主机路由信息所对应的该本地主机IP地址在本机存在对应的远程ARP代理表项,则检测被撤销的主机路由信息所对应的该本地主机IP地址与本机的二层接口所连接的本地主机的IP地址是否存在IP地址冲突;
d22、若步骤d21检测出存在IP地址冲突,则删除该本地主机IP地址对应的远程ARP代理表项、并为该本地主机IP地址创建对应的本地ARP表项;
d31、当本机从Master状态切换至Backup状态后,若本机已创建有远程ARP代理表项,则检查已创建的各远程ARP代理表项所对应的IP地址与本机的二层接口所连接的本地主机是否存在IP地址冲突;
d32、若步骤d31检测出有远程ARP代理表项存在IP地址冲突,则删除存在IP地址冲突的远程ARP代理表项、并为冲突的IP地址创建对应的本地ARP表项。
步骤b20和步骤c20通过在本机的二层接口发出免费ARP报文来实现对IP地址冲突的检测、以及触发与本机保持连接的本地主机实现Mac地址刷新;其中,步骤b20发出的免费ARP报文的源IP地址和目的IP地址均为其他成员发布的主机路由信息所对应的本地主机IP地址;步骤c30发出的免费ARP报文的源IP地址和目的IP地址均为接收到的数据报文的源IP地址、源Mac地址为本机的Mac地址;
步骤d21和步骤d31通过在本机的二层接口发出免费ARP报文来实现IP地址冲的检测;其中,步骤d21发出的该免费ARP报文的源IP地址和目的IP地址均为被撤销的主机路由信息所对应的本地主机IP地址、源Mac地址为本机的Mac地址;步骤d31发出的免费ARP报文的源IP地址和目的IP地址均为已创建的远程ARP代理表项所对应的IP地址、源Mac地址为本机的Mac地址;
若步骤b20、步骤c20、步骤d21、以及步骤d31在预定的冲突检测周期内收到了回应的免费ARP报文,则确认存在IP地址冲突。
在应用该方法的VRRP备份组中,每台成员设备进一步在切换至Backup状态后被禁止发布所述网段路由信息,并且,该方法进一步包括在VRRP备份组中的每台成员设备执行的如下步骤:
b00、当本机从Initialize状态切换至Master状态后,发布所述网段路由信息。
该方法进一步包括在VRRP备份组中的每台成员设备执行的如下步骤:
a40、若步骤a10判断为否,则发布所述网段路由信息;
a50、当本机在发布了所述网段路由信息之后从Master状态切换至Backup状态,撤销本机发布的所述网段路由信息。
该方法进一步包括在VRRP备份组中的每台成员设备执行的如下步骤:
a60、当本机通过重选举而使在本机从Backup状态切换至Master状态之前处于Master状态、并发布了所述网段路由信息的其他成员设备又切换至了Backup状态之后,发布所述网段路由信息。
该方法进一步包括在VRRP备份组中的每台成员设备执行的如下步骤:
e10、当本机发布所述网段信息时,还发布本机真实IP地址的主机路由信息;
e20、当本机在Backup状态接收到其他成员设备真实IP地址的主机路由信息后,记录该主机路由信息;
e30、当本机在连接三层网络的接口接收到其他成员设备真实IP地址的主机路由信息被撤销后,将本机记录的该主机路由信息删除;
e40、当本机从Master状态切换至Backup状态后,撤销本机发布的本机真实IP地址的主机路由信息;
以及,步骤a10包括:
a101、当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
a102、当步骤a101查询到本机记录有其他成员设备真实IP地址的主机路由信息后,依据查询到的主机路由信息中包含的其他成员设备真实IP地址,从本机连接三层网络的接口发出查询报文、并在预定的查询等待周期内等待接收应答报文;
a103、若步骤a101未查询到本机记录有其他成员设备真实IP地址的主机路由信息、或步骤a102在所述查询等待周期内未接收到所述应答报文,则确认在本机切换之前处于Master状态的其他成员设备目前未在Master状态正常工作;
a104、若步骤a102在所述查询等待周期内接收到所述应答报文,则确认在本机切换之前处于Master状态的其他成员设备目前仍在Master状态正常工作;
或者,步骤a10包括:
a101、当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
a102、若步骤a101未查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态的其他成员设备目前未在Master状态正常工作;
a103、若步骤a101查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态的其他成员设备目前仍在Master状态正常工作。
步骤a20通过在本机连接二层网络的接口分别针对各条本地ARP表项发送对应的ARP查询报文来侦测本地ARP表项是否有效;
若在所述应答等待周期内未接收到ARP应答报文,则确认对应的本地ARP表项无效;
若在所述应答等待周期内收到了ARP应答报文,则确认对应的本地ARP表项有效。
该方法进一步包括在VRRP备份组中的每台成员设备执行的如下步骤:
f10、当本机在Backup状态接收到VRRP备份组所在网段内的免费ARP报文后,将本机在Backup状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态;
f20、若步骤a20侦测到与本机保持连接的本地主机所对应的有效的本地ARP表项,则为有效的本地ARP表项配置老化时间;
f30、当本机的有效本地ARP表项老化时,删除老化的有效的本地ARP表项、并更新本机已发布的本地主机IP地址的主机路由信息;
f40、当本机从Master状态切换至Backup状态后,将本机在Master状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态。
本发明提供的一种用于VRRP备份组恢复流量的装置,在应用该方法的VRRP备份组中,每台成员设备连接二层网络的二层接口可启用ARP远程代理功能,并且,该装置包括在VRRP备份组中的每台成员设备承载的如下模块:
成员状态判断模块,当本机从Backup状态切换至Master状态后,判断在本机从Backup状态切换至Master之前处于Master状态的其他成员设备目前是否仍在Master状态正常工作;
ARP表项侦测模块,若所述成员状态判断模块判断为是,则侦测VRRP备份组所在网段内的本地ARP表项是否有效;
主机路由发布模块,若所述ARP表项侦测模块侦测到与本机保持连接的本地主机所对应的有效的本地ARP表项,则发布有效的本地ARP表项所对应的本地主机IP地址的主机路由信息;
第一地址判断模块,当本机在Master状态接收到其他成员设备发布的本地主机IP地址的主机路由信息后,判断该本地主机IP地址是否与本机的二层接口同处在VRRP备份组所在网段;
第一检测刷新模块,若所述主机地址判断模块判断为是,则检测该本地主机IP地址与本机的二层接口所连接的本地主机的IP地址是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,所述第一检测刷新模块所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应其他成员发布的本地主机IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
第一代理创建模块,若所述第一冲突检测模块检测出无IP地址冲突,则为其他成员发布的该本地主机IP地址在本机创建远程ARP代理表项;
第二地址判断模块,当本机在Master状态从本机连接三层网络的三层接口接收到数据报文后,判断该数据报文的源IP地址和目的IP地址是否均与本机的二层接口同处在VRRP备份组所在网段;
第二检测刷新模块,若所述第一地址判断模块判断为是、且该数据报文的源IP地址目前尚未在本机创建对应的远程ARP代理表项,则检测该数据报文的源IP地址与本机的二层接口所连接的本地主机是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,所述第二检测刷新模块所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应该数据报文的源IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
第二代理创建模块,若所述第二冲突检测模块检测出无IP地址冲突,则为该数据报文的源IP地址在本机创建远程ARP代理表项;
其中,与远程ARP代理表项对应相同IP地址的本地ARP表项会被本机删除;远程ARP代理表项中的Mac地址为本机的Mac地址;由本机利用远程ARP代理表项所转发的数据报文中的Mac地址会被设置为本机的Mac地址。
该装置进一步包括在VRRP备份组中的每台成员设备承载的如下模块:
主机路由撤销模块,当本机从Master状态切换至Backup状态后,若本机通过所述主机路由发布模块发布了本地主机IP地址的主机路由信息,则撤销本机发布的该本地主机IP地址的主机路由信息;
第一撤销检测模块,当本机接收到其他成员设备撤销了已发布的本地主机IP地址的主机路由信息的通知后,若判断出被撤销的主机路由信息所对应的该本地主机IP地址与本机的二层接口同处在VRRP备份组所在网段、且被撤销的主机路由信息所对应的该本地主机IP地址在本机存在对应的远程ARP代理表项,则检测被撤销的主机路由信息所对应的该本地主机IP地址与本机的二层接口所连接的本地主机的IP地址是否存在IP地址冲突;
第一代理撤销模块,若所述第一撤销检测模块检测出存在IP地址冲突,则删除该本地主机IP地址对应的远程ARP代理表项、并为该本地主机IP地址创建对应的本地ARP表项;
第二撤销检测模块,当本机从Master状态切换至Backup状态后,若本机已创建有远程ARP代理表项,则检查已创建的各远程ARP代理表项所对应的IP地址与本机的二层接口所连接的本地主机是否存在IP地址冲突;
第二代理撤销模块,若所述第二撤销检测模块检测出有远程ARP代理表项存在IP地址冲突,则删除存在IP地址冲突的远程ARP代理表项、并为冲突的IP地址创建对应的本地ARP表项。
所述第一检测刷新模块和所述第二检测刷新模块通过在本机的二层接口发出免费ARP报文来实现对IP地址冲突的检测、以及触发与本机保持连接的本地主机实现Mac地址刷新;其中,所述第一检测刷新模块发出的免费ARP报文的源IP地址和目的IP地址均为其他成员发布的主机路由信息所对应的本地主机IP地址;所述第二检测刷新模块发出的免费ARP报文的源IP地址和目的IP地址均为接收到的数据报文的源IP地址、源Mac地址为本机的Mac地址;
所述第一撤销检测模块和所述第二撤销检测模块通过在本机的二层接口发出免费ARP报文来实现对IP地址冲突的检测;其中,所述第一撤销检测模块发出的免费ARP报文的源IP地址和目的IP地址均为被撤销的主机路由信息所对应的本地主机IP地址、源Mac地址为本机的Mac地址;所述第二撤销检测模块发出的免费ARP报文的源IP地址和目的IP地址均为已创建的远程ARP代理表项所对应的IP地址、源Mac地址为本机的Mac地址;
若所述第一检测刷新模块、所述第二检测刷新模块、所述第一撤销检测模块、所述第二撤销检测模块在预定的冲突检测周期内收到了回应的免费ARP报文,则确认存在IP地址冲突。
该装置进一步包括在VRRP备份组中的每台成员设备承载的如下模块:
第一网段发布模块,当本机从Initialize状态切换至Master状态后,发布所述网段路由信息。
该装置进一步包括在VRRP备份组中的每台成员设备承载的如下模块:
第二网段发布模块,若所述成员状态判断模块判断为否,则发布所述网段路由信息;
网段撤销通告模块,当本机在发布了所述网段路由信息之后从Master状态切换至Backup状态,撤销本机发布的所述网段路由信息。
该装置进一步包括在VRRP备份组中的每台成员设备承载的如下模块:
第三网段发布模块,当本机通过重选举而使在本机从Backup状态切换至Master状态之前处于Master状态、并发布了所述网段路由信息的的其他成员设备又切换至了Backup状态之后,发布所述网段路由信息。
该装置进一步包括在VRRP备份组中的每台成员设备承载的如下模块:
成员路由发布模块,当本机发布所述网段信息时,还发布本机真实IP地址的主机路由信息;
成员路由记录模块,当本机在Backup状态接收到其他成员设备真实IP地址的主机路由信息后,记录该主机路由信息;
成员路由删除模块,当本机在连接三层网络的接口接收到其他成员设备真实IP地址的主机路由信息被撤销后,将本机记录的该主机路由信息删除;
成员路由撤销模块,当本机从Master状态切换至Backup状态后,撤销本机发布的本机真实IP地址的主机路由信息;
所述成员状态判断模块包括:
记录查询子模块,当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
成员查询子模块,当所述记录查询子模块查询到本机记录有其他成员设备真实IP地址的主机路由信息后,依据查询到的主机路由信息中包含的其他成员设备真实IP地址,从本机连接三层网络的接口发出查询报文、并在预定的查询等待周期内等待接收应答报文;
应答异常子模块,若所述记录查询子模块未查询到本机记录有其他成员设备真实IP地址的主机路由信息、或所述成员查询子模块在所述查询等待周期内未接收到所述应答报文,则确认在本机切换之前处于Master状态并发布了所述网段路由信息的其他成员设备目前未在Master状态正常工作;
应答正常子模块,若所述成员查询子模块在所述查询等待周期内接收到所述应答报文,则确认在本机切换之前处于Master状态并发布了所述网段路由信息的其他成员设备目前仍在Master状态正常工作;
或者,所述成员状态判决模块包括:
记录查询子模块,当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
查询失败子模块,若所述记录查询子模块未查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态并发布了所述网段路由信息的其他成员设备目前未在Master状态正常工作;
查询成功子模块,若所述记录查询子模块查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态并发布了所述网段路由信息的其他成员设备目前仍在Master状态正常工作。
所述ARP表项侦测模块通过在本机连接二层网络的接口分别针对各条本地ARP表项发送对应的ARP查询报文来侦测本地ARP表项是否有效;
若在所述应答等待周期内未接收到ARP应答报文,则确认对应的本地ARP表项无效;
若在所述应答等待周期内收到了ARP应答报文,则确认对应的本地ARP表项有效。
该装置进一步包括在VRRP备份组中的每台成员设备承载的如下模块:
ARP老化禁止模块,当本机在Backup状态接收到VRRP备份组所在网段内的免费ARP报文后,将本机在Backup状态依据所述免费ARP报文所创建的本地ARP表项设置为不老化状态;
ARP老化开启模块,若所述本地ARP表项侦测模块侦测到与本机保持连接的本地主机所对应的有效本地ARP表项,则为有效本地ARP表项配置老化时间;
主机路由更新模块,当本机的有效本地ARP表项老化时,删除老化的有效本地ARP表项、并更新本机已发布的本地主机IP地址的主机路由信息;
ARP老化关闭模块,当本机从Master状态切换至Backup状态后,将本机在Master状态依据所述免费ARP报文所创建的本地ARP表项设置为不老化状态。
由此可见,在本发明中,二层网络分裂产生的新Master成员设备能够针对与其处在同一分裂子网的本地主机发布主机路由信息,并且,原Master成员设备能够依据新Master成员设备所发布的主机路由信息识别出与新Master成员设备处在相同分裂子网的本地主机、并创建相应的远程ARP代理表项,因此,原Master所在分裂子网中的本地主机所发出的二层报文能够由原Master成员设备通过ARP远程代理而作为三层报文从三层网络转发至新Master成员设备所在分裂子网;相应地,新Master成员设备能够依据从三层网络接收到的以三层报文方式转发的二层报文识别出与原Master成员设备处在同一分裂子网的本地主机、并同样创建相应的远程ARP代理表项,因此,新Master所在分裂子网中的本地主机所发出的二层报文能够由新Master成员设备通过ARP远程代理而作为三层报文从三层网络转发至原Master成员设备所在分裂子网。
从而,本发明即可使得二层报文流量在二层网络分裂之后能够得以恢复。
此外,本发明还可以设置所有成员设备在处于Backup状态时均被禁止发布VRRP备份组所在网段的网段路由信息,即,所有上行和下行报文流量均由VRRP备份组中的Master成员设备承担;并且,当二层网络发生网络分裂后,新Master针对分裂后与其处在同一分裂子网的本地主机所发布的主机路由信息,能够区别于原Master成员设备在分裂前已发布的网段路由信息。因此:
对于原Master成员设备所在分裂子网中的本地主机,在三层网络中唯一可用的网段路由信息能够确保对应的下行流量被路由至原Master成员设备;
而对于新Master成员设备所在分裂子网中的本地主机,基于最长匹配原则而被优先选用的主机路由信息能够确保对应的下行流量被路由至新Master成员设备。
从而,由于所有上行和下行报文流量均由VRRP备份组中的Master成员设备承担,且当VRRP备份组由于二层网络发生网络分裂而导致Master状态的成员设备多于一个时,处在Master状态的各成员设备所发布的路由信息也互不相同,因而使得三层网络能够正确区分出正确的下一跳成员设备,进而就能够有效减少本地主机的下行报文流量中断。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
在本实施例中,为了实现对二层报文流量的恢复,首先设置所有成员设备连接二层网络的二层接口可启用ARP远程代理功能,以使二层网络分裂后分处在不同分裂子网的本地主机之间的二层报文流量能够通过ARP远程代理而作为三层报文由VRRP备份组通过三层网络代为转发。其中,当VRRP备份组由于成员设备故障而导致正常重选举时,二层报文流量并不受影响,因此,本实施例用于恢复二层报文流量的方案中仅考虑二层网络发生网络分裂的情况、而不涉及VRRP备份组正常重选举的情况。
当二层网络发生网络分裂后,VRRP备份组中会同时存在二层网络分裂之前选举出的原Master成员设备、以及二层网络分裂之后选举出的新Master成员设备,此时:
新Master成员设备在识别出当前发生了二层网络分裂后,需要先针对分裂后与其保持连接的本地主机发布相应本地主机IP地址的主机路由信息;
原Master成员设备能够接收到新Master成员设备所发布的本地主机IP地址的主机路由信息,若判断出该本地主机IP地址与原Master成员设备启用ARP远程代理功能的二层接口同处在VRRP备份组所在的网段、且该本地主机IP地址与原Master成员设备启用ARP远程代理功能的二层接口所连接的本地主机无冲突,则可确认新Master成员设备所发布的主机路由信息的该本地主机IP地址所对应的本地主机在二层网络分裂之前与原Master成员设备同处于一个二层网络、但在二层网络分裂后与原Master成员设备处在不同的分裂子网;
因此,为了使原Master成员设备所在分裂子网中的本地主机向新Master成员设备所在另一分裂子网中对应该本地主机IP地址的本地主机发送二层报文流量能够被原Master成员设备接管,原Master成员设备中对应该本地主机IP地址的本地ARP表项就需要变更为远程ARP代理表项(其IP地址为该本地主机IP地址、Mac地址为原Master成员设备的Mac地址),并且,在与原Master成员设备保持连接的本地主机中,对应新Master成员设备所在另一分裂子网中的本地主机IP地址的主机ARP表项的Mac地址需要被原Master成员设备刷新为原Master成员设备的Mac地址;
相应地,基于原Master成员设备对于与其保持连接的本地主机的Mac地址刷新,原Master成员设备所在分裂子网中的本地主机向新Master成员设备所在另一分裂子网中的本地主机所发送的二层报文流量,就能够先被转发至原Master成员设备(即二层报文的Mac地址被替换为原Master成员设备的Mac地址);基于原Master成员设备中的远程ARP代理表项,被转发至原Master成员设备的二层报文流量即可由原Master成员设备以三层报文的形式通过三层网络转发至新Master成员设备;
这样,新Master成员设备就能够从三层网络接收到来自原Master成员设备所在分裂子网、且以三层报文的方式转发的二层报文流量,并能够将该二层报文流量再转发至新Master成员设备所在分裂子网中对应的本地主机;
而且,由于上述二层报文流量中的各数据报文的源IP地址是原Master成员设备所在分裂子网中的本地主机的主机IP地址、目的地址是新Master成员设备所在分裂子网中的本地主机的主机IP地址,因此,若新Master成员设备判断出数据报文的源IP地址和目的IP地址均与本机启用ARP远程代理功能的接口同处在VRRP备份组所在的网段、且数据报文的源IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机无冲突,则可以确认二层报文流量源端的本地主机在二层网络分裂之前与新Master成员设备同处于一个二层网络、但在二层网络分裂后与新Master成员设备处在不同的分裂子网;
从而,为了使新Master成员设备所在分裂子网中的本地主机向原Master成员设备所在另一分裂子网中的本地主机回应二层报文流量能够被新Master成员设备接管,新Master成员设备中对应数据报文的源IP地址的本地ARP表项就需要变更为远程ARP代理表项(其IP地址为该数据报文的源IP地址、Mac地址为新Master成员设备的Mac地址),并且,在与新Master成员设备保持连接的本地主机中,对应该数据报文的源IP地址的主机ARP表项的Mac地址还需要被新Master成员设备刷新为新Master成员设备的Mac地址;
相应地,基于新原Master成员设备对于与其保持连接的本地主机的Mac地址刷新,新Master成员设备所在分裂子网中的本地主机向原Master成员设备所在分裂子网中的本地主机所发送的二层报文流量,就能够先被转发至新Master成员设备(即二层报文的Mac地址被替换为新Master成员设备的Mac地址);基于新Master成员设备中的远程ARP代理表项,被转发至新Master成员设备的二层报文流量即可由新Master成员设备以三层报文的形式通过三层网络转发至原Master成员设备;
这样,原Master成员设备就能够从三层网络接收到来自新Master成员设备所在分裂子网、且以三层报文的方式转发的二层报文流量,并能够将该二层报文流量再转发至原Master成员设备所在分裂子网中对应的本地主机。
基于上述原理,本实施例提供了一种用于VRRP备份组恢复流量的方法,并且,在应用该方法的VRRP备份组中,每台成员设备连接二层网络的接口可启用ARP远程代理功能。
请参见图3a,当VRRP备份组中有成员设备成为新Master成员设备时,该方法首先包括在该成员设备执行的如下步骤:
步骤301,当本机从Backup状态切换至Master状态后,需要先判断在本机从Backup状态切换至Master状态之前处于Master状态的其他成员设备目前是否仍在Master状态正常工作,即判断原Master成员设备此时是否存在;
步骤302,若步骤301判断出在本机从Backup状态切换至Master状态之前处于Master状态的其他成员设备目前仍在Master状态正常工作,则确认此时属于二层网络发生网络分裂的情况,相应地,本机属于新Master成员设备、而目前仍在Master状态正常工作的其他成员设备为与本机共存的原Master成员设备,因此,本机需要侦测VRRP备份组所在网段内的本地ARP表项是否有效、并以此来识别各本地主机是否在二层网络分裂后还与本机保持连接;
步骤303,若步骤302侦测到与本机保持连接的本地主机所对应的有效本地ARP表项,则确认该有效的本地ARP表项所对应的本地主机在二层网络分裂之前与本机同处于一个二层网络、且在二层网络分裂后仍与本机同处在同一个的分裂子网中,因此,发布有效的本地ARP表项所对应的本地主机IP地址的主机路由信息。
另外,若步骤301判断出在本机从Backup状态切换至Master状态之前处于Master状态的其他成员设备目前此时已不在Master状态正常工作,则属于成员设备故障导致VRRP备份组的正常重选举,此时的二层报文流量不会中断,因此本流程无需对此进行额外处理、而是可以直接结束本流程。
至此,本流程结束。
请参见图3b,当VRRP备份组中有成员设备作为原Master成员设备、并接收到新Master成员设备发布的本地主机IP地址的主机路由信息时,该方法还包括在该成员设备执行的如下步骤:
步骤311,当本机在Master状态接收到其他成员设备发布的本地主机IP地址的主机路由信息后,判断其他成员设备发布的本地主机IP地址所对应的该本地主机IP地址是否与本机启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段;
步骤312,若步骤311判断出该本地主机IP地址与本机启用ARP远程代理功能的接口均处在VRRP备份组所在网段,则确认该本机IP地址所对应的本地主机在二层网络分裂之前与本机处在同一网段的二层网络中,并且,为了进一步确认该本地主机IP地址所对应的本地主机在二层网络分裂后是否与本机处在不同的分裂子网,再检测该本地主机IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机的IP地址是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,步骤312所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应其他成员发布的本地主机IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
另外,若步骤311判断出其他成员设备发布的主机路由信息所对应的该本地主机IP地址与本机启用ARP远程代理功能的二层接口未处在VRRP备份组所在网段,则不属于本实施例所涉及的二层网络分裂的情况,因而直接结束本流程。
步骤313,若步骤312检测出其他成员设备发布的主机路由信息所对应的该本地主机IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机无IP地址冲突,则确认该本地主机IP地址所对应的本地主机在二层网络分裂之前与本机同处于一个二层网络、但在二层网络分裂后与本机处在不同的分裂子网,因此,将该本地主机IP地址在本机对应的本地ARP表项变更为远程ARP代理表项(该远程ARP代理表项的IP地址为该本地主机IP地址、Mac地址为本机的Mac地址),以使本机能够利用远程ARP代理表项对以该本地主机IP地址为目的IP地址的二层的数据报文按照三层报文的方式(数据报文中的Mac地址为本机的Mac地址)进行转发;
其中,对于与远程ARP代理表项对应相同IP地址的本地ARP表项,会在本步骤、或本步骤之前的步骤312被删除。
另外,若步骤312判断出其他成员设备发布的主机路由信息所对应的该本地主机IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机存在IP地址冲突,则表示本机与该主机IP地址所对应的本地主机之间目前存在连接,因而无需创建对应的远程ARP代理表项、并可以直接结束本流程。此时,在步骤312被刷新为本机Mac地址的对应的主机ARP表项也会被对应的本地主机回刷为该本地主机的Mac地址。
至此,上述流程结束。
请参见图3c,当VRRP备份组中有成员设备在成为新Master成员设备后又从三层网络接收到了数据报文时,该方法还需要包括在该成员设备执行的如下步骤:
步骤321,当本机在Master状态从本机连接三层网络的三层接口接收到数据报文后,判断该数据报文的源IP地址和目的IP地址是否均与本机启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段;
步骤322,若步骤321判断出该数据报文的源IP地址和目的IP地址均与本机启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段,则确认该数据报文属于以远程代理方式从三层网络转发的二层报文、且该数据报文的源端和目的端的本地主机在二层网络分裂之前均与本机处在同一网段的二层网络中,此时,先判断本机是否已针对该数据报文的源端的本地主机创建有远程ARP代理表项;
另外,若步骤321判断出该数据报文的源IP地址和/或目的IP地址未与本机启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段,则不属于本实施例所涉及的二层网络分裂的情况,因而直接结束本流程。
步骤323,若步骤322判断出该数据报文的源IP地址在本机不存在远程ARP代理表项,则表示需要为该数据报文的源IP地址创建远程ARP代理表项,此时,就需要先确认该数据报文的源端的本地主机在二层网络分裂后是否与本机处在不同的分裂子网,再检测该数据报文的源IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,经过步骤323所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应其他成员发布的本地主机IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
另外,若步骤322判断出该数据报文的源IP地址在本机已存在远程ARP代理表项,则表示无需再针对该数据报文的源IP地址重复创建远程ARP代理表项,因而可以直接结束本流程。
步骤324,若步骤323检测出该数据报文的源IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机无IP地址冲突,则确认该数据报文的源端的本地主机在二层网络分裂之前与本机同处于一个二层网络、但在二层网络分裂后与本机处在不同的分裂子网,因此,为该数据报文的源IP地址在本机创建远程ARP代理表项(该远程ARP代理表项的IP地址为该数据报文的源IP地址、Mac地址为本机的Mac地址),以使本机能够利用远程ARP代理表项对以该数据报文的源IP地址为目的IP地址的二层的其他数据报文按照三层报文的方式(其他数据报文中的Mac地址为本机的Mac地址)进行转发;
其中,对于与远程ARP代理表项对应相同IP地址的本地ARP表项,会在本步骤、或本步骤之前的步骤322被删除,或者,与远程ARP代理表项对应相同IP地址的本地ARP表项还有可能在如图3a所示的步骤302被侦测为无效的本地ARP表项、并在步骤302之后作为无效的本地ARP表项被删除。
另外,若步骤323判断出该数据报文的源IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机存在IP地址冲突,则表示本机与该数据报文的源IP地址所对应的本地主机之间目前存在连接,因而无需创建对应的远程ARP代理表项、并可以直接结束本流程。此时,在步骤323被刷新为本机Mac地址的主机ARP表项也会被该数据报文的源IP地址所对应的本地主机回刷为该本地主机的Mac地址。
至此,上述流程结束。
下面结合实例进行详细说明。
在参见图4a和图4b中,当交换机SW1与SW2之间的链路发生故障、并导致二层网络发生网络分裂后,VRRP备份组就存在着两台Master状态的成员设备,即在二层网络分裂之前选举出的原Master成员设备R1、以及在二层网络分裂之后选举出的新Master成员设备R2。
参见图4a,当二层网络分裂之后,新Master成员设备R2在从Backup状态切换至Master状态后,先判断出存在原Master成员设备R1、即在本机切换之前处于Master状态并发布了网段路由信息的成员设备R1目前仍在Master状态正常工作,并由此确认其切换为Master状态是由于二层网络分裂所致,因此,新Master成员设备R2并不发布网段10.1.1.0/24的网段路由信息,而是侦测本机所创建的VRRP备份组所在网段10.1.1.0/24内的本地ARP表项是否有效;
当侦测到与本机保持连接的本地主机C2和C3所对应的有效本地ARP表项时,即表示新Master成员设备R2与本地主机C2和C3处在同一个分裂子网,因此,新Master成员设备R2会针对有效本地ARP表项所对应的本地主机C2的IP地址10.1.1.13/32、以及本地主机C3的IP地址10.1.1.14/32发布相应的主机路由信息。
相应地,当原Master成员设备R1接收到新Master成员设备所发布的10.1.1.13/32和10.1.1.14/32的主机路由之后,能够判断出10.1.1.13/32和10.1.1.14/32与其连接二层网络、并启动ARP远程代理功能的二层接口同处在VRRP备份组所在网段10.1.1.0/24内,并且,原Master成员设备R1还能够检测到10.1.1.13/32和10.1.1.14/32与本地主机C1的IP地址10.1.1.12/32不冲突,因此,原Master成员设备R1删除10.1.1.13/32和10.1.1.14/32在本机的本地ARP表项,并重新创建10.1.1.13/32和10.1.1.14/32在本机的远程ARP代理表项,其中,所创建的两个远程ARP代理表项中的IP地址分别为10.1.1.13/32和10.1.1.14/32、Mac地址均为原Master成员设备R1的Mac地址Mac_R1。
参见图4b,由于原Master成员设备R1在检测IP地址冲突时还将本地主机C1中对应本地主机C2和C3的主机ARP表项中的Mac地址刷新为原Master成员设备R1的Mac地址Mac_R1,因此,当本地主机C1需要向本地主机C3发送二层的数据报文时,就会将二层的数据报文的Mac地址替换为Mac_R1、并发送至原Master成员设备R1。
相应地,原Master成员设备R1接收到本地主机C1原本应当通过二层网络发向本地主机C3的数据报文(以本地主机C1的10.1.1.12/32为源IP地址、以本地主机C3的10.1.1.14/32为目的IP地址、Mac地址为Mac_R1)后,利用IP地址为10.1.1.14/32、Mac地址为Mac_R1的远程ARP代理表项即可将原本应当在二层网络转发的数据报文以三层报文的方式通过三层网络转发至新Master成员设备R2。
此后,新Master成员设备R2在接收到来自三层网络、且以三层报文的方式转发的二层数据报文后,会依据该二层数据报文的目的IP地址10.1.1.14/32、以及本机对应IP地址10.1.1.14/32的本地ARP表项而将该二层数据报文按照现有方式转发至本地主机C3,并且,新Master成员设备R2还会判断出该二层数据报文的源IP地址10.1.1.12/32和目的IP地址10.1.1.14/32均与其连接二层网络、并启动ARP远程代理功能的二层接口同处在VRRP备份组所在网段10.1.1.0/24内,并且,10.1.1.12/32与新Master成员设备R2在二层接口所连接的本地主机C2和C3的IP地址不冲突,因此,新Master成员设备R2删除10.1.1.12/32在本机的本地ARP表项,并重新创建10.1.1.12/32在本机的远程ARP代理表项,其中,所创建的远程ARP代理表项中的IP地址为10.1.1.12/32、Mac地址为本机Mac地址Mac_R2。
同样地,由于新Master成员设备R2在检测IP地址冲突时也会将本地主机C2和C3中对应本地主机C1的主机ARP表项中的Mac地址刷新为新Master成员设备R2的Mac地址Mac_R2,因此,当本地主机C3需要向本地主机C1发送二层的数据报文时,就会将二层的数据报文的Mac地址替换为Mac_R2、并发送至新Master成员设备R2。
此后,当新Master成员设备R2接收到本地主机C3原本应当通过二层网络发向本地主机C1的数据报文(以本地主机C3的10.1.1.14/32为源IP地址、以本地主机C1的10.1.1.12/32为目的IP地址、Mac地址为Mac_R2)后,利用IP地址为10.1.1.12/32、Mac地址为Mac_R2的远程ARP代理表项即可将原本应当在二层网络转发的该数据报文以三层报文的方式通过三层网络转发至原Master成员设备R1,然后再由原Master成员设备R1转发至本地主机C1。
如上可见,基于本实施例,二层报文流量在二层网络分裂之后能够得以恢复。
此外,在实际应用中,发生分裂的二层网络有可能会复原,而当二层网络分裂又复原后,原Master成员设备通常会由于优先级高而继续保持在Master状态、新Master成员设备则会由于优先级低而切换至Backup状态,此时:
当新Master成员设备在切换回Backup状态之后,需要撤销其发布的本地主机IP地址的主机路由信息;
原Master成员设备接收到新Master设备撤销其发布的本地主机IP地址的主机路由信息的通知之后,检查被新Master设备撤销的主机路由信息所对应的该本地主机IP地址是否与原Master成员设备启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段,若是、并且被新Master设备撤销的主机路由信息所对应的该本地主机IP地址在原Master成员设备存在对应的远程ARP代理表项,则检测被新Master设备撤销的主机路由信息所对应的该本地主机IP地址与原Master成员设备在二层接口所连接的本地主机是否存在IP地址冲突;
若原Master成员设备检测到该本地主机IP地址存在IP地址冲突,则表示原Master成员设备与该主机IP地址所对应的本地主机已恢复连接,因而原Master成员设备删除该本地主机IP地址对应的远程ARP代理表项、并为该本地主机IP地址创建对应的本地ARP表项;与此同时,在分裂后被刷新为原Master成员设备Mac地址的主机ARP表项也会被与原Master成员设备恢复连接的本地主机回刷为该本地主机的Mac地址;
以及,当新Master成员设备在从Master状态切换回Backup状态之后,若新Master成员设备中已创建了远程ARP代理表项,则新Master成员设备需要检查已创建的远程ARP代理表项所对应的IP地址与新Master成员在其二层接口所连接的本地主机是否存在IP地址冲突;
若新Master成员设备检测到已创建的远程ARP代理表项所对应的IP地址存在IP地址冲突,则表示新Master成员设备与已创建的远程ARP代理表项所对应的本地主机已恢复连接,因而删除该远程ARP代理表项、并为该远程ARP代理表项所对应的本地主机创建对应的本地ARP表项;与此同时,在分裂后被刷新为原Master成员设备Mac地址的主机ARP表项也会被与新Master成员设备恢复连接的本地主机回刷为该本地主机的Mac地址。
相应地,当二层网络复原后,该方法可以进一步包括在成员设备中执行的如下步骤:
用于新Master成员设备通知原Master成员设备撤销远程ARP代理的步骤,当本机(新Master成员设备)从Master状态切换至Backup状态后,若本机通过如图3a所示的步骤303发布了本地主机IP地址的主机路由信息,则撤销本机发布的该本地主机IP地址的主机路由信息;
用于原Master成员设备撤销远程ARP代理的步骤,当本机(原Master成员设备)接收到其他成员设备撤销了已发布的本地主机IP地址的主机路由信息的通知后,若判断出被撤销的主机路由信息所对应的该本地主机IP地址与本机的二层接口同处在VRRP备份组所在网段、且被撤销的主机路由信息所对应的该本地主机IP地址在本机存在对应的远程ARP代理表项,则检测被撤销的主机路由信息所对应的该本地主机IP地址与本机的二层接口所连接的本地主机的IP地址是否存在IP地址冲突;其中,若检测出存在IP地址冲突,则删除被撤销的主机路由信息所对应的该本地主机IP地址在本机对应的远程ARP代理表项、并为被撤销的主机路由信息所对应的该本地主机IP地址创建对应的本地ARP表项;
用于新Master成员设备撤销远程ARP代理的步骤,当本机(新Master成员设备)从Master状态切换至Backup状态后,若本机已创建有远程ARP代理表项,则检查已创建的各远程ARP代理表项所对应的IP地址是否与本机的二层接口所连接的本地主机是否存在IP地址冲突;其中,若检测出有远程ARP代理表项存在IP地址冲突,则删除存在IP地址冲突的远程ARP代理表项、并为冲突的IP地址创建对应的本地ARP表项。
实际应用中,当二层网络分裂又复原后,原Master成员设备也有可能切换回Backup状态、并由新Master成员设备继续保持在Master状态。此时,只要新Master成员设备判断出原Master成员设备已切换回Backup状态(例如通过原Master成员设备撤销其发布的路由信息等方式),新Master设备仍需要撤销其发布的本地主机IP地址的主机路由信息,此时,新Master成员设备和原Master成员设备仍按照上述方式删除各自的远程ARP代理表项、并创建本地ARP代理表项。
下面结合实例进行详细说明,其中,该实例是以二层网络分裂又复原后由原Master成员设备继续保持在Master状态、新Master成员设备切换至Backup状态为例。
参见图5,当二层网络复原之后:
新Master成员设备撤销其发布的本地主机C2的IP地址10.1.1.13/32、以及本地主机C3的IP地址10.1.1.14/32的主机路由信息;
原Master成员设备接收到新Master成员设备撤销10.1.1.13/32和10.1.1.14/32的主机路由的通知之后,能够判断出10.1.1.13/32和10.1.1.14/32与其二层接口同处在VRRP备份组所在网段10.1.1.0/24内、且原Master成员设备已为10.1.1.13/32和10.1.1.14/32创建有远程ARP代理表项,因此,原Master成员设备R1会检测出10.1.1.13/32和10.1.1.14/32与其二层接口所连接的本地主机存在IP地址冲突;
对于如图5所示的二层网络复原的情况,不但本地主机C1连接在原Master成员设备R1的二层接口,本地主机C2和C3也都恢复了与原Master成员设备R1的二层接口的连接,因此,原Master成员设备R1会检测10.1.1.13/32和10.1.1.14/32存在IP地址冲突,从而删除10.1.1.13/32和10.1.1.14/32的远程ARP代理表项,并创建对应的本地ARP表项。其中,10.1.1.13/32对应的本地ARP表项中的Mac地址为本地主机C2的Mac地址Mac_C2,10.1.1.14/32对应的本地ARP表项中的Mac地址为本地主机C3的Mac地址Mac_C3;与此同时,本地主机C1中对应10.1.1.13/32和10.1.1.14/32的主机ARP表项的Mac地址,也会分别被本地主机C2和C3刷回为Mac_C2和Mac_C3;
同样地,由于新Master成员设备中已创建了10.1.1.12/32的远程ARP代理表项,因此,新Master成员设备需要检查已创建的远程ARP代理表项所对应的IP地址10.1.1.12/32与新Master成员在其二层接口所连接的本地主机是否存在IP地址冲突;
对于如图5所示的二层网络复原的情况,不但本地主机C2和C3连接在新Master成员设备R2的二层接口,本地主机C1也恢复了与新Master成员设备R2的二层接口的连接,因此,新Master成员设备R2会检测出本地主机C1的10.1.1.12/32存在IP地址冲突,从而删除10.1.1.12/32的远程ARP代理表项,并创建对应的本地ARP表项。其中,10.1.1.12/32对应的本地ARP表项中的Mac地址为本地主机C1的Mac地址Mac_C1;与此同时,本地主机C2和C3中对应10.1.1.12/32的主机ARP表项的Mac地址,也都会被本地主机C1刷回Mac_C1。
除了恢复二层报文流量之外,本实施例还能够实现对三层报文流量的恢复。为此,本实施例还可以设置所有成员设备在处于Backup状态时均被禁止发布VRRP备份组所在网段的网段路由信息、且只有成员设备在切换至Master状态后才有可能发布VRRP备份组所在网段的网段路由信息,即,所有上行报文流量和下行报文流量均由VRRP备份组中的Master成员设备来承担。其中,当二层网络分裂、以及VRRP备份组的正常重选举时,三层的上行报文流量和下行报文流量均会受到影响,因此,本实施例用于恢复三层报文流量的方案中同时考虑二层网络发生网络分裂的情况、以及VRRP备份组正常重选举的情况。
当二层网络完整,并且,VRRP备份组中处于Master状态的成员设备、即原Master成员设备正常时,原Master成员设备会发布VRRP备份组所在网段的网段路由信息;
当二层网络发生网络分裂后,VRRP备份组中会同时存在二层网络分裂之前选举出的原Master成员设备、以及二层网络分裂之后选举出的新Master成员设备,并且,如前所述,新Master成员设备仅针对分裂后与其保持连接的本地主机发布的主机路由信息,以区别于原Master成员设备在二层网络分裂之前所发布的VRRP备份组所在网段的网段路由信息,因此:
对于在分裂后与原Master成员设备保持连接、与新Master成员设备失去连接的本地主机来说,其对应的下行报文流量在三层网络中只有原Master成员设备发布的网段路由信息可用,因此,就能够确保对应的下行流量被路由至原Master成员设备;
而对于在分裂后与原Master成员设备失去连接、与新Master成员设备保持连接的本地主机来说,虽然其对应的下行报文流量在三层网络中同时存在可用的网段路由信息和主机路由信息,但基于最长匹配原则,长度大于网段路由信息的主机路由信息会被优先选用,因此,被优先选用的主机路由信息就能够确保对应的下行流量被路由至新Master成员设备。
实际应用中,新Master成员设备所发布的本地主机IP地址的主机路由信息中可以携带有聚合标识,该聚合标识用于触发三层网络的上游设备将下一跳相同的路由信息聚合,以节省三层网络的上游设备的表项管理资源。
而当VRRP备份组由于原Master成员设备故障而导致正常重选举时,正常重选举之前的原Master成员设备会退出VRRP备份组、而正常重选举后产生的新Master成员设备则是VRRP备份组中唯一处在Master状态的成员设备,此时,新Master成员设备发布的VRRP备份组所在网段的网段路由信息即可接管VRRP备份组下属的所有本地主机的下行报文流量。
另外,无论是二层网络发生网络分裂,还是VRRP备份组由于成员设备故障而导致正常重选举,对于上行报文流量的处理均可以按照现有方式来实现,本实施例对此不再赘述。
基于上述原理,在应用本实施例用于VRRP备份组恢复流量的上述方法的VRRP备份组中,每台成员设备在切换至Backup状态后都被禁止发布VRRP备份组所在网段的网段路由信息,并且,在有成员设备成为新Master成员设备时,该方法还可以进一步包括在该成员设备执行的如下的用于接管网段路由的步骤:
当本机(新Master成员设备)通过如图3a所示的步骤301判断出在本机切换之前处于Master状态的其他成员设备(即已发布了网段路由信息的原Master设备)目前已不在Master状态正常工作,则发布VRRP备份组所在网段的网段路由信息。
实际应用中:
若在VRRP备份组从未发生过重选举时发生了二层网络分裂,则在VRRP备份组启动后首次被选举为Master状态的成员设备为原Master成员设备、并且是从Initialize(初始)状态切换至Master状态;
若在VRRP备份组发生了重选举之后又发生了二层网络分裂,则对于分裂后的二层网络来说,最近一次重选举所产生的Master状态的成员设备为原Master成员设备、并且是从Backup状态切换至Master状态,而二层网络分裂导致的重选举所产生的Master状态的成员设备为新Master成员设备。
相应地,对于在VRRP备份组从未发生过重选举时发生了二层网络分裂的情况,当有成员设备成为在VRRP备份组启动后首次选举产生的新Master成员设备时,该方法包括在该成员设备执行的如下的用于初始发布网段路由步骤:
当本机(原Master成员设备)从Initialize状态切换至Master状态后,发布VRRP备份组所在网段的网段路由信息。
而对于在VRRP备份组发生了重选举之后又发生了二层网络分裂的情况,在二层网络分裂之前执行了上述用于接管网段路由的步骤的成员设备,就为二层网络分裂后的原Master成员设备。
下面结合实例进行详细说明。
请参见图6,当交换机SW1与SW2之间的链路发生故障、并导致二层网络发生网络分裂后,VRRP备份组就存在着两台Master状态的成员设备,即在二层网络分裂之前选举出的原Master成员设备R1、以及在二层网络分裂之后选举出的新Master成员设备R2。
当二层网络分裂之前,只有原Master成员设备R1在其切换至Master状态后发布了VRRP备份组所在网段10.1.1.0/24的网段路由信息,而成员设备R2和R3则均不会在Backup状态发布网段10.1.1.0/24的网段路由信息。
当二层网络分裂之后,新Master成员设备R2在从Backup状态切换至Master状态后,会先判断出存在原Master成员设备R1、即在本机切换之前处于Master状态并发布了网段路由信息的成员设备R1目前仍在Master状态正常工作,并由此确认其切换为Master状态是由于二层网络分裂所致,然后,新Master成员设备R2通过侦测本机所创建的VRRP备份组所在网段10.1.1.0/24内的本地ARP表项是否有效,会删除本地主机C1所对应的无效的本地ARP表项时,并针对有效本地ARP表项所对应的本地主机C2的IP地址10.1.1.13/32、以及本地主机C3的IP地址10.1.1.14/32发布长度大于网段路由信息的主机路由信息。
这样,对于三层网络来说,以原Master成员设备R1为下一跳的是网段路由、以新Master成员设备R2为下一跳的是子集路由,因而对于向本地主机C1~C3发送的报文,三层网络就能够正确区分出下一跳。具体说:
当需要VRRP备份组向原Master成员设备R1在分裂后保持连接的本地主机C1转发报文时,只有原Master成员设备发布的网段10.1.1.0/24的网段路由信息可用、即报文的下一跳只可能是原Master成员设备R1,从而能够确保报文被路由至原Master成员设备R1、并被原Master成员设备R1转发至相应的本地主机C1;
当需要VRRP备份组向新Master成员设备R2在分裂后保持连接的本地主机C2和C3转发报文时,虽然新Master成员设备R2发布的IP地址10.1.1.13/32和10.1.1.14/32的主机路由信息、以及原Master成员设备发布的网段10.1.1.0/24的网段路由信息均可用,但基于路由的最长匹配原则,新Master成员设备R2发布的32位主机路由信息会被优先选用、即报文的下一跳优选新Master成员设备R2,从而能够确保报文被路由至新Master成员设备R2、并被新Master成员设备R2转发至相应的本地主机C2和C3;
即,基于路由的最长匹配原则,新Master成员设备R2通过发布IP地址10.1.1.13/32和10.1.1.14/32的主机路由信息,能够接管在分裂后与其保持连接的本地主机C2和C3的报文流量,而对于在分裂后与其失去连接的本地主机C1的报文流量则仍由原Master成员设备R1承担。
请参见图7,当Master状态的成员设备R1发生故障后,Backup状态的成员设备R2和R3长时间未接收到VRRP通告报文,进而导致其中的成员设备R2被重选举为Master状态。
此时,VRRP备份组中的原Master成员设备R1已退出,因而VRRP备份组中仅存一台Master状态的成员设备、即新Master成员设备R2。
其中,在成员设备R2被重选举为Master状态之前,只有原Master成员设备R1在其切换至Master状态后发布了VRRP备份组所在网段10.1.1.0/24的网段路由信息,而成员设备R2和R3则均不会在Backup状态发布网段10.1.1.0/24的网段路由信息;而且,原Master成员设备R1在Master状态时发布的网段10.1.1.0/24的网段路由信息,会在原Master成员设备R1发生故障后被三层网络中的上游设备撤销;
而新Master成员设备R2从Backup状态切换至Master状态后,先判断在本机切换之前处于Master状态并发布了网段路由信息的成员设备R1目前是否仍在Master状态正常工作;在图7中,新Master成员设备R2会判断出在本机切换之前处于Master状态并发布了网段路由信息的成员设备R1目前未在Master状态正常工作,并由此确认其切换为Master状态不是由于二层网络分裂所致、而是由于原Master成员设备R1发生故障所致,因此,新Master成员设备R2即可发布网段10.1.1.0/24的网段路由信息,即,成员设备R2会接管所有本地主机C1~C3的报文流量。
如上可见,基于本实施例,下行报文流量在二层网络分裂之后能够恢复正确的路由转发,而且,本实施例并不影响成员设备故障导致VRRP备份组正常重选举后的下行报文流量切换。
另补充说明的是:
若在发生了二层网络分裂后又出现原Master成员设备故障、并且原Master成员设备所在分裂子网中还有其他成员设备,则可按照成员设备故障导致VRRP备份组正常重选举的方式在该分裂子网中重新选举出Master状态的成员设备、并由该分裂子网中重新选举出Master状态的成员设备继续充当原Master成员设备;
同理,若在发生了二层网络分裂后又出现新Master成员设备故障、并且新Master成员设备所在分裂子网中还有其他成员设备,则由该分裂子网中重新选举出Master状态的成员设备在该分裂子网中继续充当新Master成员设备;
但若在发生了二层网络分裂后又出现原Master成员设备故障、但原Master成员设备所在分裂子网中不存在其他成员设备,或者,在发生了二层网络分裂后又出现新Master成员设备故障、但新Master成员设备所在分裂子网中不存在其他成员设备,则VRRP备份组对该分裂子网的网关功能失效,但网关功能失效不属于本实施例所要解决的问题,因而本实施例不予关注。
此外,在实际应用中,发生分裂的二层网络有可能会复原,并且,在发生故障并退出的原Master成员设备也有可能恢复、并重新回到VRRP备份组。
当二层网络分裂又复原后,原Master成员设备和新Master成员设备中需要有一台切换至Backup状态,其中:
若是原Master成员设备继续保持在Master状态、新Master成员设备切换回Backup状态,则无需原Master成员设备额外发布任何路由信息、但需要新Master成员设备主动撤销其发布的本地主机IP地址的主机路由信息,以确保VRRP备份组下属的所有本地主机的报文流量全部由原Master成员设备承担;
但若是原Master成员设备切换回Backup状态、新Master成员设备继续保持在Master状态,则需要原Master成员设备主动撤销其发布的网段路由信息、并由新Master成员设备重新发布网段路由信息,以确保VRRP备份组下属的所有本地主机的报文流量全部由新Master成员设备接管。
当发生故障的原Master成员设备以Initialize状态重新加入VRRP备份组后,Initialize状态的原Master成员设备需要和新Master成员设备竞争、且只能有一台处在Master状态,其中:
若是Initialize状态的原Master成员设备切换至Master状态、新Master成员设备切换回Backup状态,则需要Initialize状态的原Master成员设备在切换至Master状态后重新发布网段路由信息、且需要新Master成员设备主动撤销其发布的网段路由信息,以确保VRRP备份组下属的所有本地主机的报文流量全部归还至原Master成员设备承担;
若是Initialize状态的原Master成员设备切换至Backup状态、新Master成员设备继续保持在Master状态,则Initialize状态的原Master成员设备在切换至Backup状态后无需发布任何路由信息、新Master成员设备同样无需再额外发布任何路由信息,以确保VRRP备份组下属的所有本地主机的报文流量全部保持在新Master成员设备承担。
相应地,基于上述的情况,本实施例中用于VRRP备份组恢复流量的方法可以进一步包括在该成员设备执行的如下步骤:
用于撤销网段路由的步骤,当本机(原Master成员设备或新Master成员设备)在发布了网段路由信息之后从Master状态切换至Backup状态,撤销本机发布的网段路由信息。
用于抢占网段路由的步骤,当本机(新Master成员设备)通过重选举而使在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备(原Master成员设备)又切换至了Backup状态之后,则本机发布网段路由信息;
用于撤销主机路由的步骤,当本机(新Master成员设备)通过如图3a所示的步骤303发布了本地主机IP地址的主机路由信息之后、又从Master状态切换至Backup状态,撤销本机发布的本地主机IP地址的主机路由信息;
其中:
若成员设备在二层网络分裂后作为新Master成员设备、并在二层网络复原后切换至Backup状态,则用于撤销主机路由的步骤会在该成员设备执行;相应地,若成员设备作为原Master成员设备、并在二层网络复原后保持在Master状态,则该成员设备中此时无需额外执行任何步骤;
若成员设备在二层网络分裂后作为新Master成员设备、并在二层网络复原后继续保持在Master状态,则用于抢占网段路由的步骤会在该成员设备执行;相应地,若成员设备作为原Master成员设备、并在二层网络复原后切换至Backup状态,则用于撤销网段路由的步骤此时会在该成员设备执行;
若成员设备在正常重选举后作为新Master成员设备、并原Master成员设备重回VRRP备份组之后切换回Backup状态,则用于撤销网段路由的步骤会在该成员设备执行;相应地,若成员设备作为故障退出的原Master成员设备、并重回VRRP备份组后从Initialize状态切换至Master状态,则前文所述的用于初始发布网段路由的步骤此时需要在该成员设备执行。
下面结合四个实例对上述步骤进行详细说明。
参见图8a并结合图6,当二层网络分裂导致VRRP备份组中同时存在原Master成员设备R1和新Master成员设备R2后,二层网络又恢复完整;并且,原Master成员设备R1经重选举后继续保持在Master状态、而新Master成员设备R2经重选举后切换回Backup状态。
此时,保持在Master状态的成员设备R1无需对其发布的网段10.1.1.0/24的网段路由信息进行任何处理,而切换回Backup状态的成员设备R2需要撤销其针对本地主机C2的IP地址10.1.1.13/32本地主机C3的IP地址10.1.1.14/32所发布的主机路由信息,以确保所有本地主机C1~C3的报文流量均由唯一处在Master状态的成员设备R1承担。
参见图8b并结合图6,当二层网络分裂导致VRRP备份组中同时存在原Master成员设备R1和新Master成员设备R2后,二层网络又恢复完整;并且,原Master成员设备R1态经重选举后切换回Backup状态、而新Master成员设备R2经重选举后继续保持在Master状态。
此时,切换回Backup状态的成员设备R1需要撤销其发布的网段10.1.1.0/24的网段路由信息,而保持在Master状态的成员设备R2则需要发布网段10.1.1.0/24的网段路由信息,以确保所有本地主机C1~C3的报文流量均由唯一处在Master状态的成员设备R2承担。而且,保持在Master状态的成员设备R2此前针对本地主机C2和C3发布的主机路由信息也不会与网段路由冲突,因而既可以保留、也可以撤销。
请参见图9a并结合图7,在Master状态发生故障的成员设备R1又恢复正常、并以Initialize状态重新加入VRRP备份组;并且,成员设备R1经重选举后从Initialize状态切换至Master状态、而新Master成员设备R2经重选举后切换回Backup状态。
此时,从Initialize状态切换至Master状态的成员设备R1需要发布网段10.1.1.0/24的网段路由信息,而切换回Backup状态的成员设备R2需要撤销其发布的网段10.1.1.0/24的网段路由信息,以确保所有本地主机C1~C3的报文流量均由唯一处在Master状态的成员设备R1承担。
请参见图9b并结合图7,在Master状态发生故障的成员设备R1又恢复正常、并以Initialize状态重新加入VRRP备份组;并且,成员设备R1经重选举后从Initialize状态切换至Backup状态、而新Master成员设备R2经重选举后继续保持在Master状态。
此时,从Initialize状态切换至Backup状态的成员设备R1无需发布任何路由信息,而保持在Master状态的成员设备R2也无需发布任何路由信息,这样,成员设备R2之前已发布的网段10.1.1.0/24的网段路由信息即可确保所有本地主机C1~C3的报文流量均由唯一处在Master状态的成员设备R2承担。
此外,在实际应用中还有可能出现二层网络多次分裂的情况,对此,本领域技术人员可以基于上述的描述而对方案进行适应性调整。对于可能出现的二层网络多次分裂及恢复的情况,本实施不再详述。
以上是对本实施例中用于VRRP发布路由的方法的原理性说明。但在具体实现该方法时,还需要考虑以下几点:
新Master成员设备如何判断出原Master成员设备的存在,即,在如图3a所示的步骤301中,成员设备在从Backup状态切换至Master状态后如何判断在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前是否仍在Master状态正常工作;
新Master成员设备如何实现对本地ARP表项的有效性的侦测,即,在如图3a所示的步骤302中,成员设备如何侦测本地ARP表项是否有效;
原Master成员设备和新Master成员设备如何实现对IP地址冲突的检测以及触发本地主机的Mac地址刷新,即,在如图3b所示的步骤312、如图3c所示的步骤323、以及用于原Master和新Master成员设备撤销远程ARP代理的步骤中,成员设备如何判断冲突是否存在,在如图3b所示的步骤312、如图3c所示的步骤323中,成员设备如何触发本地主机实现Mac地址刷新;
以及,新Master成员设备如何确保其本地ARP表项不会在其切换至Master状态之前就由于老化而被删除,即,成员设备在Backup状态如何保持其本地ARP表项不会在其切换至Master状态之前就由于老化而被删除。
为此,本实施例还进一步提供了相应的解决方案,下面分别予以说明。
为了使成员设备在从Backup状态切换至Master状态后,能够判断出在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前是否仍在Master状态正常工作,本实施例采用如下方式:
当二层网络完整时,原Master成员设备(有可能是从Initialize状态切换至Master状态、也有可能是从Backup状态切换至Master状态)在发布网段路由信息的同时,还发布该Master成员设备真实IP地址的主机路由信息,相应地,此时所有的Backup成员设备就会记录该Master成员设备真实IP地址的主机路由信息。
当二层网络分裂之后,分裂导致重选举产生的新Master成员设备会查询其是否在Backup状态记录了其他成员设备(即原Master成员设备)真实IP地址的主机路由信息,若是,则可以依据查询到的主机路由信息中包含的其他成员设备真实IP地址,从本机连接三层网络的接口发出查询报文、并在预定的查询等待周期内等待接收应答报文;
对于二层网络分裂的情况,新Master成员设备会在查询等待周期内接收到了从其他成员设备返回的应答报文,因此,新Master成员设备即可确认回应该应答报文的其他成员设备就为此时同时存在的原Master成员设备、即在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前仍在Master状态正常工作,从而确认本机的切换是由于二层网络分裂所致。
当二层网络完整时的Master成员设备发生故障后,发布了网段路由信息和主机路由信息的Master成员设备就不再处于Master状态,其发布的网段路由信息和主机路由信息也会被三层网络中的上游设备撤销,此时,重选举产生的Master成员设备会查询其是否在Backup状态记录了其他成员设备真实IP地址的主机路由信息;
对于二层网络完整时的Master成员设备发生故障的情况,由于二层网络完整时的Master成员设备所发布的网段路由信息和主机路由信息会被三层网络中的上游设备撤销,因此,重新选举出的Master成员设备通常会查询不到其在Backup状态记录的其他成员设备(即原Master成员设备)真实IP地址的主机路由信息,并确认此时不存在原Master成员设备、即在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前未在Master状态正常工作;
但如若三层网络中的上游设备所执行的撤销处理稍有延迟,导致重新选举出的Master成员设备查询到了其在Backup状态记录的其他成员设备真实IP地址的主机路由信息、并发出上述的查询报文,重新选举出的Master成员设备也不可能接收到上述的应答报文,因而仍能够确认此时不存在原Master成员设备、即在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前未在Master状态正常工作。
实际应用中,上述的查询报文和应答报文可以为例如ICMP(Internet Control MessageProtocol,英特网控制消息协议)报文等各种适合通过三层网络传输的协议报文。可选地,为了简化上述过程,也可以仅依据记录查询来判断、而不使用查询报文和应答报文的查询机制。
相应地,本实施例中用于VRRP发布路由的方法就可以进一步包括在成员设备中执行的如下步骤:
当本机(即原Master成员设备)发布网段信息时,还发布本机真实IP地址的主机路由信息;
当本机(即Backup成员设备)在Backup状态接收到其他成员设备(即原Master成员设备)真实IP地址的主机路由信息后,记录该主机路由信息;
当本机(即新Master成员设备)在连接三层网络的接口接收到其他成员设备(即原Master成员设备)真实IP地址的主机路由信息被撤销的通知后,将本机记录的该主机路由信息删除;
并且,如图3a所示的步骤301可以具体包括:
当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
当查询到本机记录有其他成员设备真实IP地址的主机路由信息后,依据查询到的主机路由信息中包含的其他成员设备真实IP地址,从本机连接三层网络的接口发出查询报文、并在预定的查询等待周期内等待接收应答报文;
若未查询到本机记录有其他成员设备真实IP地址的主机路由信息、或在查询等待周期内未接收到了应答报文,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前未在Master状态正常工作;
若在查询等待周期内接收到应答报文,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前仍在Master状态正常工作。
实际应用中,也可以取消对原Master成员设备的查询机制、而仅依据是否记录有主机路由信息来判断,相应地,如图3a所示的步骤301也可以予以简化,即:
当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
若未查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前未在Master状态正常工作;
若查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前仍在Master状态正常工作。
下面再结合实例进一步说明。
请参见图10a至图10c、并结合图6和图7:
在图10a中,当二层网络完整、且原Master成员设备R1正常时,原Master成员设备R1在其发布网段10.1.1.0/24的网段路由的同时,还发布了本机真实IP地址10.1.1.2/32的主机路由信息,此时,处在Backup状态的成员设备R2和R3会记录成员设备R1的真实IP地址10.1.1.2/32的主机路由信息。
在图10b中,当二层网络按照如图6所示的方式发生分裂后,新Master成员设备R2能够查询到本机在Backup状态记录了原Master成员设备R1的真实IP地址10.1.1.2/32的主机路由信息,并从本机连接三层网络的接口发出以原Master成员设备R1的真实IP地址10.1.1.2/32为目的地址的ICMP查询报文;
此后,在预定的查询等待周期内,新Master成员设备R2能够接收到原Master成员设备R1返回的ICMP应答报文,并确认回应该应答报文的原Master成员设备R1此时存在、即在本机切换之前处于Master状态并发布了网段路由信息的成员设备R1目前仍在Master状态正常工作,从而确认本机的切换是由于二层网络分裂所致,然后即可按照如图6所示的方式处理。
在图10c中,当VRRP备份组按照如图7所示的情况出现原Master成员设备R1的故障后,假设原Master成员设备R1此前发布的网段路由信息和主机路由信息未被三层网络中的上游设备及时撤销,重选举出的新Master成员设备R2查询到本机在Backup状态记录了原Master成员设备R1的真实IP地址10.1.1.2/32的主机路由信息,并从本机连接三层网络的接口发出以原Master成员设备R1的真实IP地址10.1.1.2/32为目的地址的ICMP查询报文;
但由于此时的原Master成员设备R1已发生了故障、且无法回应ICMP应答报文,因而新Master成员设备R2在预定的查询等待周期内不可能接收到ICMP应答报文,并确认此时不存在原Master成员设备R1、即在本机切换之前处于Master状态并发布了网段路由信息的成员设备R1目前未在Master状态正常工作,然后即可按照如图7所示的方式处理。
另外,由于原Master成员设备发布本机真实IP地址的主机路由信息是为了标识其已处在Master状态并已发布了网段路由信息,因此,当原Master成员设备由于二层网络分裂复原等原因而切换至Backup状态、并撤销其发布的网段路由信息时,其同样需要在撤销其发布的本机真实IP地址的主机路由信息。
相应地,本实施例中用于VRRP发布路由的方法就可以进一步包括在成员设备中执行的如下步骤:
当本机(即原Master成员设备)从Master状态切换至Backup状态后,撤销本机已发布的本机真实IP地址的主机路由信息。
为了使成员设备在作为新Master成员设备时能够侦测本地ARP表项是否有效,本实施例可以通过ARP查询机制来实现,具体说:
新Master成员设备在本机连接二层网络的接口分别针对各条本地ARP表项发送对应的ARP查询报文、并在预定的应答等待周期内等待响应的ARP应答报文;
若在应答等待周期内未接收到对应的本地主机返回的ARP应答报文,则确认该本地主机与本机失去连接、并确认对应的本地ARP表项无效;
若在应答等待周期内收到了对应的本地主机返回的ARP应答报文,则确认该本地主机与本机保持连接、并确认对应的本地ARP表项有效。
相应地,如图3a所示的步骤302可以具体包括:
当判断出在本机(二层网络分裂后的新Master成员设备)切换之前处于Master状态并发布了网段路由信息的其他成员设备仍在Master状态正常工作后,在本机连接二层网络的接口分别针对各条本地ARP表项向对应的各本地主机发送ARP查询报文、并在预定的应答等待周期内等待各本地主机响应的ARP应答报文;
若在应答等待周期内未接收到ARP应答报文,则确认对应的本地主机在二层网络分裂后与本机失去连接、从而确认该本地主机对应的本地ARP表项无效;
若在应答等待周期内收到了ARP应答报文,则确认对应的本地主机在二层网络分裂后仍与本机保持连接、从而确认该本地主机对应的本地ARP表项有效。
下面结合实例进行进一步说明。
请参见图11、并结合图6,当二层网络按照如图6所示的方式发生分裂后,新Master成员设备R2会从本机连接二层网络的接口针对本地主机C1~C3的本地ARP表项发送对应的ARP查询报文,并且,由于二层网络的分裂,因而ARP查询报文只能到达与新Master成员设备R2保持连接的本地主机C2和C3、而无法到达与新Master成员设备R2失去连接的本地主机C1;
相应地,新Master成员设备R2只能在应答等待周期内收到本地主机C2和C3返回的ARP应答报文、但无法接收到本地主机C1返回的ARP应答报文,从而,确认本地主机C2和C3与本机保持连接、并确认本地主机C2的IP地址10.1.1.13/32和本地主机C3的IP地址10.1.1.14/32所分别对应的本地ARP表项有效,以及,确认本地主机C1与本机失去连接、并确认本地主机C1的IP地址10.1.1.12/32对应的本地ARP表项无效。
为了实现原Master成员设备判断IP地址的冲突是否存在、以及触发本地主机的Mac地址刷新,本实施例可以通过免费ARP报文来实现。
对于原Master成员设备在二层网络分裂后接收到新Master成员设备发布的本地主机IP地址的主机路由信息的情况,以及原Master成员设备在二层网络复原后接收到新Master成员设备已撤销其发布的主机路由信息的通知的情况:
原Master成员设备都会在其启用ARP远程代理功能的该接口发出免费ARP报文、并在预定的冲突检测周期内等待其连接的本地主机的回应;其中,原Master成员设备发出的免费ARP报文的源IP地址和目的IP地址均为新Master成员设备发布的主机路由信息所对应的本地主机IP地址、源Mac地址为原Master成员设备的Mac地址;
此后,对于前一种情况,若原Master成员设备在冲突检测周期内未收到回应的免费ARP报文,则确认新Master成员设备发布的主机路由信息所对应的该本地主机IP地址与原Master成员设备的二层接口所连接的本地主机无IP地址冲突、并将新Master成员设备发布的主机路由信息所对应的该本地主机IP地址在原Master成员设备对应的本地ARP表项变更为远程ARP代理表项;并且,原Master成员设备发出的免费ARP报文的源Mac地址还能够将与原Master成员设备二层接口保持连接的本地主机的主机ARP表项的Mac地址刷新为原Master成员设备的Mac地址;
但对于后一种情况,若原Master成员设备在冲突检测周期内收到了回应的免费ARP报文,则确认被新Master成员设备撤销的主机路由信息所对应的该本地主机IP地址与原Master成员设备的二层接口所连接的本地主机存在IP地址冲突、并将被新Master成员设备撤销的主机路由信息所对应的该本地主机IP地址在原Master成员设备对应的远程ARP代理表项变更回本地ARP表项;并且,被新Master成员设备撤销的主机路由信息所对应的本地主机能够回应免费ARP报文、且该本地主机所回应的免费ARP报文中的源Mac地址为该本地主机自身的Mac地址,因此,该本地主机所回应的免费ARP报文中的源Mac地址即可将其他本地主机中对应该本地主机的主机ARP表项的Mac地址刷回为该本地主机的Mac地址。
相应地,如图3b所示的步骤312、以及在二层网络复原后用于原Master成员设备撤销远程ARP代理的步骤,即可通过在本机的二层接口发出免费ARP报文来实现对IP地址冲突的检测,并且,如图3b所示的步骤312可通过在本机的二层接口发出免费ARP报文来触发本地主机的Mac地址刷新;
其中,步骤312所发出的免费ARP报文的源IP地址和目的IP地址均为其他成员设备发布的主机路由信息所对应的本地主机IP地址、源Mac地址为本机的Mac地址;用于原Master成员设备撤销远程ARP代理的步骤所发出的免费ARP报文的源IP地址和目的IP地址均为被撤销的主机路由信息所对应的本地主机IP地址、源Mac地址为本机的Mac地址;
并且,若步骤312、以及用于原Master成员设备撤销远程代理ARP表项的步骤在预定的冲突检测周期内未收到回应的免费ARP报文,则确认无IP地址冲突,但若步骤312、以及用于原Master成员设备撤销远程代理ARP表项的步骤在预定的冲突检测周期内收到了回应的免费ARP报文,则确认存在IP地址冲突。
为了实现新Master成员设备判断IP地址的冲突是否存在、以及触发本地主机的Mac地址刷新,本实施例同样可以通过免费ARP报文来实现。
对于新Master成员设备在二层网络分裂后从三层接口接收到原Master成员设备以ARP远程代理方式发送的数据报文的情况、以及新Master成员设备在二层网络复原后主动删除远程ARP代理表项的情况:
新Master成员设备均在其启用ARP远程代理功能的二层接口发出免费ARP报文、并在预定的冲突检测周期内等待其连接的本地主机的回应;
其中,新Master成员设备对于前一种情况而发出的该免费ARP报文的源IP地址和目的IP地址均为该数据报文的源IP地址、源Mac地址为新Master成员设备的Mac地址,对于后一种情况而发出的该免费ARP报文的源IP地址和目的IP地址均为已创建的远程ARP代理表项所对应的IP地址、源Mac地址为新Master成员设备的Mac地址;
此后,对于前一种情况,若新Master成员设备在冲突检测周期内未收到回应的免费ARP报文,则确认该数据报文的源IP地址所对应的IP地址与新Master成员设备的二层接口所连接的本地主机无IP地址冲突,并将该数据报文的源IP地址在新Master成员设备对应的本地ARP表项变更为远程ARP代理表项;并且,新Master成员设备发出的免费ARP报文的源Mac地址即可将与新Master成员设备二层接口保持连接的本地主机的主机ARP表项的Mac地址刷新为新Master成员设备的Mac地址;
但对于后一种情况,若新Master成员设备在冲突检测周期内收到了回应的免费ARP报文,则确认已创建的远程ARP代理表项所对应的IP地址与原Master成员设备的二层接口所连接的本地主机存在IP地址冲突,并将存在IP地址冲突的该远程ARP代理表项变更回本地ARP表项;并且,与远程ARP代理表项存在IP地址冲突的本地主机所回应的免费ARP报文中的源Mac地址为该本地主机自身的Mac地址,因此,该本地主机所回应的免费ARP报文中的源Mac地址即可将其他本地主机中对应该本地主机的主机ARP表项的Mac地址刷回为该本地主机的Mac地址。
相应地,如图3c所示的步骤323、以及在二层网络复原后用于新Master成员设备撤销远程ARP代理的步骤,即可通过在本机的二层接口发出免费ARP报文来实现对IP地址冲突的检测,并且,如图3c所示的步骤323通过在本机的二层接口发出免费ARP报文还能够触发本地主机的Mac地址刷新;其中,步骤323所发出的免费ARP报文的源IP地址和目的IP地址均为数据报文的源IP地址、源Mac地址为本机的Mac地址;在二层网络复原后用于新Master成员设备撤销远程ARP代理的步骤所发出的免费ARP报文的源IP地址和目的IP地址均为已创建的远程ARP代理表项所对应的IP地址、源Mac地址为本机的Mac地址;
并且,若步骤323、以及用于新Master成员设备撤销远程ARP代理的步骤在预定的冲突检测周期内未收到回应的免费ARP报文,则确认无IP地址冲突;但若步骤323、以及用于新Master成员设备撤销远程ARP代理的步骤在预定的冲突检测周期内收到了回应的免费ARP报文,则确认存在IP地址冲突。
下面结合实例进行详细说明。
请参见图12a并结合图4a和图4b,对于二层网络分裂后的情况:
当原Master成员设备R1感知到新Master成员设备所发布的10.1.1.13/32和10.1.1.14/32的主机路由之后,能够判断出10.1.1.13/32和10.1.1.14/32与其连接二层网络、并启动ARP远程代理功能的二层接口同处在VRRP备份组所在网段10.1.1.0/24内,因此,原Master成员设备R1会在其启动ARP远程代理功能的二层接口发出免费ARP报文,包括:
源IP地址和目的IP地址均为10.1.1.13/32、源Mac地址为Mac_R1的免费ARP报文R1_C2;
以及,源IP地址和目的IP地址均为10.1.1.14/32、源Mac地址为Mac_R1的免费ARP报文R1_C3。
相应地,本地主机C1接收到上述的免费ARP报文R1_C2以及R1_C3后会将其对应10.1.1.13/32和10.1.1.14/32的本地ARP表项的Mac地址均刷新为Mac_R1,但不会向原Master成员设备R1回应免费ARP报文。
因此,原Master成员设备R1在冲突检测周期内就不会收到针对10.1.1.13/32和10.1.1.14/32的回应,从而判断出10.1.1.13/32和10.1.1.14/32与原Master成员设备R1在其二层接口所连接的本地主机C1的IP地址10.1.1.12/32不存在IP地址冲突。从而,原Master成员设备R1就会按照如图4a所示的方式删除10.1.1.13/32和10.1.1.14/32在本机的本地ARP表项,并重新创建10.1.1.13/32和10.1.1.14/32在本机的远程ARP代理表项。
同样地,当原Master成员设备R1通过ARP远程代理为本地主机C1转发的数据报文到达新Master成员设备R2后,新Master成员设备R2会在其三层接口接收到该数据报文,且新Master成员设备R2能够判断出该数据报文的源IP地址10.1.1.12/32和目的IP地址10.1.1.14/32均与其二层接口同处在VRRP备份组所在网段10.1.1.0/24内,因此,新Master成员设备R2会在其启动ARP远程代理功能的二层接口发出免费ARP报文,即,源IP地址和目的IP地址均为10.1.1.12/32、源Mac地址为Mac_R2的免费ARP报文R2_C1。
相应地,本地主机C2和C3接收到上述的免费ARP报文R2_C1后,均会将各自对应10.1.1.12/32的本地ARP表项的Mac地址均刷新为Mac_R2,但都不会向新Master成员设备R2回应免费ARP报文。
因此,新Master成员设备R2在冲突检测周期内就不会收到针对10.1.1.12/32的回应,从而判断出10.1.1.12/32与新Master成员设备R2在其连接二层网络、并启动ARP远程代理功能的接口所连接的本地主机C2和C3的IP地址不冲突。从而,新Master成员设备R2就会按照如图4b所示的方式删除10.1.1.12/32在本机的本地ARP表项,并重新创建10.1.1.12/32在本机的远程ARP代理表项。
请参见图12b并结合图5,对于二层网络复原后的情况:
当原Master成员设备R1接收到新Master成员设备已撤销了10.1.1.13/32和10.1.1.14/32的主机路由信息的通知之后,能够判断出10.1.1.13/32和10.1.1.14/32与其连接二层网络、并启动ARP远程代理功能的二层接口同处在VRRP备份组所在网段10.1.1.0/24内,因此,原Master成员设备R1会在其启动ARP远程代理功能的二层接口发出图12a中示出的免费ARP报文R1_C2和R1_C3。
相应地,本地主机C2在接收到上述的免费ARP报文R1_C2后会回应免费ARP报文C2_Recover、本地主机C3在接收到上述的免费ARP报文R1_3后会回应免费ARP报文C3_Recover,其中:
免费ARP报文C2_Recover的源IP地址和目的IP地址均为10.1.1.13/32、源Mac地址为该本地主机C2的Mac地址Mac_C2;
免费ARP报文C3_Recover的源IP地址和目的IP地址均为10.1.1.14/32、源Mac地址为该本地主机C3的Mac地址Mac_C3。
此后,原Master成员设备R1在冲突检测周期内就会收到回应的免费ARP报文C2_Recover和C3_Recover,从而判断出本地主机C2和C3与其恢复了连接、且被撤销的主机路由信息所对应的10.1.1.13/32和10.1.1.14/32与原Master成员设备R1在其二层接口所连接的本地主机C2和C3存在IP地址冲突。从而,原Master成员设备R1就会按照如图5所示的方式删除10.1.1.13/32和10.1.1.14/32的远程ARP代理表项、并重新创建10.1.1.13/32和10.1.1.14/32的本地ARP表项。
与此同时,本地主机C1也能够接收到上述的免费ARP报文C2_Recover和C3_Recover,并由此将对应10.1.1.13/32和10.1.1.14/32的主机ARP表项的Mac地址从Mac_R1分别刷新回Mac_C2和Mac_C3。
同样地,当原Master成员设备R1切换为Backup状态后,新Master成员设备R2会依据其已创建的远程ARP代理表项所对应的10.1.1.12/32而在其启动ARP远程代理功能的二层接口发出图12a中示出的免费ARP报文R2_C1。
相应地,本地主机C1在接收到上述的免费ARP报文R1_C1后会回应免费ARP报文C1_Recover,其中,免费ARP报文C1_Recover的源IP地址和目的IP地址均为10.1.1.12/32、源Mac地址为该本地主机C1的Mac地址Mac_C1。
此后,新Master成员设备R2在冲突检测周期内就会收到回应的免费ARP报文C1_Recover,从而判断出本地主机C1与其恢复了连接、且已创建的远程ARP代理表项所对应的10.1.1.12/32与新Master成员设备R2在其二层接口所连接的本地主机C1存在IP地址冲突。从而,新Master成员设备R2就会删除10.1.1.12/32的远程ARP代理表项、并重新创建10.1.1.12/32的本地ARP表项。
与此同时,本地主机C2和C3也都能够接收到上述的免费ARP报文C1_Recover,并由此将对应10.1.1.12/32的主机ARP表项的Mac地址从Mac_R2刷新回Mac_C1。
为了使成员设备在Backup状态能够保持其本地ARP表项不会在其切换至Master状态之前就由于老化而被删除:
处在Backup状态的成员设备在接收到VRRP备份组所在网段内的免费ARP报文后,将本机在Backup状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态;
并且,当成员设备从Backup状态切换至Master状态后,若判断出由于二层网络分裂导致本机切换、即本机此时作为新Master成员设备与原Master成员设备共存,则为本机侦测到的与本机保持连接的本地主机所对应的有效本地ARP表项配置老化时间。
当然,对于Master状态的成员设备由于二层网络复原、成员设备故障恢复等原因而切换至Backup状态的情况,该成员设备需要在切换至Backup状态后再将本机在Master状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态。
相应地,本实施例中用于VRRP发布路由的方法就可以进一步包括在成员设备中执行的如下步骤:
当本机(Backup成员设备)在Backup状态接收到VRRP备份组所在网段内的免费ARP报文后,将本机在Backup状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态;
若本机(二层网络分裂后的新Master成员设备)通过如图3所示的步骤320侦测到与本机保持连接的本地主机所对应的有效本地ARP表项,则为有效本地ARP表项配置老化时间;
以及,当本机(原Master成员设备或新Master成员设备)从Master状态切换至Backup状态后,将本机在Master状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态。
此外,对于新Master成员设备来说,当本地ARP表项的老化功能被开启后,还需要针对老化超时的有效本地ARP表项来更新已发布的子集路由。因此,本实施例中用于VRRP发布路由的方法可以进一步包括在成员设备中执行的如下步骤:
当本机的有效本地ARP表项老化时,删除老化的有效的本地ARP表项、并撤销本机已发布该本地ARP表项的本地主机IP地址的主机路由信息。
以上是对本实施例中用于VRRP备份组恢复流量的方法的说明。该方法能够以计算机程序来实现,因此,与上述方法相对应地,本实施例还提供了一种用于VRRP备份组恢复流量的装置。
与方法同理,为了实现对二层报文流量的恢复,在应用该装置的VRRP备份组中,每台成员设备连接二层网络的二层接口可启用ARP远程代理功能。
当有成员设备成为新Master成员设备时,该装置包括在该成员设备中运行的如下模块:
成员状态判断模块,当本机从Backup状态切换至Master状态后,需要先判断在本机从Backup状态切换切换至Master状态之前处于Master状态的其他成员设备目前是否仍在Master状态正常工作,即判断原Master成员设备此时是否存在;
ARP表项侦测模块,若成员状态判断模块判断出在本机从Backup状态切换至Master状态之前处于Master状态的其他成员设备目前仍在Master状态正常工作,则确认此时属于二层网络发生网络分裂的情况,相应地,本机属于新Master成员设备、而目前仍在Master状态正常工作的其他成员设备为与本机共存的原Master成员设备,因此,本机需要侦测VRRP备份组所在网段内的本地ARP表项是否有效、并以此来识别各本地主机是否在二层网络分裂后与本机处在同一分裂子网并保持连接;
主机路由发布模块,若ARP表项侦测模块侦测到与本机保持连接的本地主机所对应的有效的本地ARP表项,则确认该有效的本地ARP表项所对应的本地主机在二层网络分裂之前与本机同处于一个二层网络、且在二层网络分裂后仍与本机同处在同一个的分裂子网中,因此,发布有效的本地ARP表项所对应的本地主机IP地址的主机路由信息。
当有成员设备作为原Master成员设备接收到新Master成员设备发布的本地主机IP地址的主机路由信息时,该装置包括在该成员设备中运行的如下模块:
原Master地址判断模块,当本机在Master状态接收到其他成员设备发布的本地主机IP地址的主机路由信息后,判断其他成员设备发布的本地主机IP地址所对应的该本地主机IP地址是否与本机启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段;
原Master检测刷新模块,若原Master地址判断模块判断出其他成员设备发布的主机路由信息所对应的该本地主机IP地址与本机启用ARP远程代理功能的接口均处在VRRP备份组所在网段,则确认该本机IP地址所对应的本地主机在二层网络分裂之前与本机处在同一网段的二层网络中,并且,为了进一步确认该本地主机IP地址所对应的本地主机在二层网络分裂后是否与本机处在不同的分裂子网,再检测该本地主机IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机的IP地址是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,原Master检测刷新模块所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应其他成员发布的本地主机IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
原Master代理创建模块,若原Master检测刷新模块检测出其他成员设备发布的主机路由信息所对应的该本地主机IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机无IP地址冲突,则确认该本地主机IP地址所对应的本地主机在二层网络分裂之前与本机同处于一个二层网络、但在二层网络分裂后与本机处在不同的分裂子网,因此,将该本地主机IP地址在本机对应的本地ARP表项变更为远程ARP代理表项(该远程ARP代理表项的IP地址为该本地主机IP地址、Mac地址为本机的Mac地址),以使本机能够利用远程ARP代理表项对以该本地主机IP地址为目的IP地址的二层的数据报文按照三层报文的方式(数据报文中的Mac地址为本机的Mac地址)进行转发;
另外,若原Master检测刷新模块判断出其他成员设备发布的主机路由信息所对应的该本地主机IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机存在IP地址冲突,则表示本机与该主机IP地址所对应的本地主机之间目前存在连接,因而无需创建对应的远程ARP代理表项、并可以直接结束本流程。此时,在原Master检测刷新模块的触发下而被刷新为本机Mac地址的对应的主机ARP表项也会被对应的本地主机回刷为该本地主机的Mac地址。
其中,对于与远程ARP代理表项对应相同IP地址的本地ARP表项,会由原Master代理创建模块、或原Master检测刷新模块删除。
相应地,当有成员设备成为新Master成员设备、并发布了本地主机IP地址的主机路由信息后,该装置包括在该成员设备中运行的如下模块:
新Master地址判断模块,当本机在Master状态从本机连接三层网络的三层接口接收到数据报文后,判断该数据报文的源IP地址和目的IP地址是否均与本机启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段;
新Master表项查询模块,若新Master地址判断模块判断出该数据报文的源IP地址和目的IP地址均与本机启用ARP远程代理功能的二层接口同处在VRRP备份组所在网段、且该数据报文的源IP地址在本机不存在远程ARP代理表项,则确认该数据报文属于以远程代理方式从三层网络转发的二层报文、且该数据报文的源端和目的端的本地主机在二层网络分裂之前均与本机处在同一网段的二层网络中,此时,先判断本机是否已针对该数据报文的源端的本地主机创建有远程ARP代理表项;
新Master检测刷新模块,若新Master表项查询模块判断出该数据报文的源IP地址在本机不存在远程ARP代理表项,则表示需要为该数据报文的源IP地址创建远程ARP代理表项,此时,就需要先确认该数据报文的源端的本地主机在二层网络分裂后是否与本机处在不同的分裂子网,再检测该数据报文的源IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机是否存在IP地址冲突、并触发与本机保持连接的本地主机实现Mac地址刷新;
其中,新Master检测刷新模块所触发的Mac地址刷新的过程,用于使与本机保持连接的本地主机中对应其他成员发布的本地主机IP地址的主机ARP表项的Mac地址被刷新为本机的Mac地址;
新Master代理创建模块,若新Master检测刷新模块检测出该数据报文的源IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机无IP地址冲突,则确认该数据报文的源端的本地主机在二层网络分裂之前与本机同处于一个二层网络、但在二层网络分裂后与本机处在不同的分裂子网,因此,为该数据报文的源IP地址在本机创建远程ARP代理表项(该远程ARP代理表项的IP地址为该数据报文的源IP地址、Mac地址为本机的Mac地址),以使本机能够利用远程ARP代理表项对以该数据报文的源IP地址为目的IP地址的二层的其他数据报文按照三层报文的方式(其他数据报文中的Mac地址为本机的Mac地址)进行转发;
另外,若新Master检测刷新模块判断出该数据报文的源IP地址与本机启用ARP远程代理功能的二层接口所连接的本地主机存在IP地址冲突,则表示本机与该数据报文的源IP地址所对应的本地主机之间目前存在连接,因而无需创建对应的远程ARP代理表项、并可以直接结束本流程。此时,在新Master检测刷新模块的触发下而被刷新为本机Mac地址的主机ARP表项也会被该数据报文的源IP地址所对应的本地主机回刷为该本地主机的Mac地址。
其中,对于与远程ARP代理表项对应相同IP地址的本地ARP表项,会由新Master代理创建模块、或新Master检测刷新模块删除,或者,与远程ARP代理表项对应相同IP地址的本地ARP表项还有可能被ARP表项侦测模块作为无效的本地ARP表项予以删除。
如上可见,基于上述模块,二层报文流量在二层网络分裂之后能够得以恢复。
此外,在实际应用中,发生分裂的二层网络有可能会复原,而当二层网络分裂又复原后,原Master成员设备通常会由于优先级高而继续保持在Master状态、新Master成员设备则会由于优先级低而切换至Backup状态。因此,当二层网络复原后,该装置可以进一步包括在成员设备中运行的如下模块:
主机路由撤销模块,当本机(新Master成员设备)从Master状态切换至Backup状态后,若本机通过如前所述的主机路由发布模块发布了本地主机IP地址的主机路由信息,则撤销本机发布的本地主机IP地址的主机路由信息;
原Master撤销检测模块,当本机(原Master成员设备)接收到其他成员设备撤销了已发布的本地主机IP地址的主机路由信息的通知后,若判断出该本地主机IP地址是否与本机的二层接口同处在VRRP备份组所在网段、且该本地主机IP地址在本机存在对应的远程ARP代理表项,则检测该本地主机IP地址与本机的二层接口所连接的本地主机是否存在IP地址冲突;
原Master代理撤销模块,若原Master撤销检测模块检测出存在IP地址冲突,则删除该本地主机IP地址对应的远程ARP代理表项、并为该本地主机IP地址创建对应的本地ARP表项;
新Master撤销检测模块,当本机(新Master成员设备)从Master状态切换至Backup状态后,若本机已创建有远程ARP代理表项,则检查已创建的各远程ARP代理表项所对应的IP地址是否与本机的二层接口所连接的本地主机是否存在IP地址冲突;
新Master代理撤销模块,若新Master撤销检测模块检测出有远程ARP代理表项存在IP地址冲突,则删除存在IP地址冲突的远程ARP代理表项、并为冲突的IP地址创建对应的本地ARP表项。
实际应用中,当二层网络分裂又复原后,原Master成员设备也有可能切换回Backup状态、并由新Master成员设备继续保持在Master状态。此时,只要新Master成员设备判断出到原Master成员设备已切换回Backup状态(例如通过原Master成员设备撤销其发布的路由信息等方式),新Master设备仍需要撤销其发布的本地主机IP地址的主机路由信息,此时,新Master成员设备和原Master成员设备仍按照上述方式删除各自的远程ARP代理表项、并创建本地ARP代理表项。
除了恢复二层报文流量之外,本实施例还可以设置所有成员设备在处于Backup状态时均被禁止发布VRRP备份组所在网段的网段路由信息、且只有成员设备在切换至Master状态后才有可能发布VRRP备份组所在网段的网段路由信息,即,所有上行报文流量和下行报文流量均由VRRP备份组中的Master成员设备来承担。
因此,在应用本实施例用于VRRP备份组恢复流量的上述装置的VRRP备份组中,还可以设置每台成员设备在切换至Backup状态后都被禁止发布VRRP备份组所在网段的网段路由信息,并且,在有成员设备成为新Master成员设备时,该装置还可以进一步包括在该成员设备运行的如下模块:
网段接管发布模块,当本机(新Master成员设备)通过如上所述的成员状态判断模块判断出在本机切换之前处于Master状态的其他成员设备(即已发布了网段路由信息的原Master设备)目前已不在Master状态正常工作,则发布VRRP备份组所在网段的网段路由信息。
实际应用中:
若在VRRP备份组从未发生过重选举时发生了二层网络分裂,则在VRRP备份组启动后首次被选举为Master状态的成员设备为原Master成员设备、并且是从Initialize状态切换至Master状态;
若在VRRP备份组发生了重选举之后又发生了二层网络分裂,则对于分裂后的二层网络来说,最近一次重选举所产生的Master状态的成员设备为原Master成员设备、并且是从Backup状态切换至Master状态,而二层网络分裂导致的重选举所产生的Master状态的成员设备为新Master成员设备。
相应地,对于在VRRP备份组从未发生过重选举时发生了二层网络分裂的情况,当有成员设备成为在VRRP备份组启动后首次选举产生的新Master成员设备时,该装置可以进一步包括在该成员设备运行的如下模块:
网段初始发布模块,当本机从Initialize状态切换至Master状态后,发布VRRP备份组所在网段的网段路由信息。
而对于在VRRP备份组发生了重选举之后又发生了二层网络分裂的情况,上述的网段接管发布模块即可用于原Master成员设备发布网段路由信息。
另外,对于发生分裂的二层网络复原、以及发生故障退出的原Master成员设备恢复后重新回到VRRP备份组的情况,该装置可以进一步包括在成员设备中运行的如下模块:
网段撤销通告模块,当本机(原Master成员设备或新Master成员设备)在发布了网段路由信息之后从Master状态切换至Backup状态,撤销本机发布的网段路由信息。
网段抢占发布模块,当本机(新Master成员设备)通过重选举而使在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备(原Master成员设备)又切换至了Backup状态之后,则本机发布网段路由信息;
以及,如前所述的主机路由撤销模块,当本机(新Master成员设备)通过有效ARP发布模块发布了本地主机IP地址的主机路由信息之后、又从Master状态切换至Backup状态,撤销本机发布的本地主机IP地址的主机路由信息;
其中:
若成员设备在二层网络分裂后作为新Master成员设备、并在二层网络复原后切换至Backup状态,则主机路由撤销模块会在该成员设备中运行;相应地,若成员设备作为原Master成员设备、并在二层网络复原后保持在Master状态,则该成员设备中此时无需额外运行任何模块;
若成员设备在二层网络分裂后作为新Master成员设备、并在二层网络复原后继续保持在Master状态,则网段抢占发布模块会在该成员设备中运行;相应地,若成员设备作为原Master成员设备、并在二层网络复原后切换至Backup状态,则网段撤销通告模块此时会在该成员设备中运行;
若成员设备在正常重选举后作为新Master成员设备、并原Master成员设备重回VRRP备份组之后切换回Backup状态,则网段撤销通告模块会在该成员设备中运行;相应地,若成员设备作为故障退出的原Master成员设备、并重回VRRP备份组后从Initialize状态切换至Master状态,则前文所述的网段初始发布模块此时需要在该成员设备中再次运行。
在具体实现时,为了使成员设备在从Backup状态切换至Master状态后,能够判断出在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前是否仍在Master状态正常工作,本实施例中用于VRRP恢复流量的装置可以进一步包括在成员设备中运行的如下模块:
成员路由发布模块,当本机(即原Master成员设备)发布网段信息时,还发布本机真实IP地址的主机路由信息;
成员路由记录模块,当本机(即Backup成员设备)在Backup状态接收到其他成员设备(即原Master成员设备)真实IP地址的主机路由信息后,记录该主机路由信息;
成员路由删除模块,当本机(即新Master成员设备)在连接三层网络的接口接收到其他成员设备(即原Master成员设备)真实IP地址的主机路由信息被撤销的通知后,将本机记录的该主机路由信息删除;
并且,前文所述的成员状态判断模块可以具体包括:
记录查询子模块,当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
成员查询子模块,当记录查询子模块查询到本机记录有其他成员设备真实IP地址的主机路由信息后,依据查询到的主机路由信息中包含的其他成员设备真实IP地址,从本机连接三层网络的接口发出查询报文、并在预定的查询等待周期内等待接收应答报文;
应答异常子模块,若记录查询子模块未查询到本机记录有其他成员设备真实IP地址的主机路由信息、或成员查询子模块在查询等待周期内未接收到应答报文,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前未在Master状态正常工作;
应答正常子模块,若记录查询子模块在查询等待周期内接收到应答报文,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前仍在Master状态正常工作。
实际应用中,也可以取消对原Master成员设备的查询机制、而仅依据是否记录有主机路由信息来判断,相应地,成员状态判断模块也可以予以简化,即包括:
记录查询子模块,当本机从Backup状态切换至Master状态后,查询本机是否记录有其他成员设备真实IP地址的主机路由信息;
查询成功子模块,若未查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前未在Master状态正常工作;
查询失败子模块,若查询到本机记录有其他成员设备真实IP地址的主机路由信息,则确认在本机切换之前处于Master状态并发布了网段路由信息的其他成员设备目前仍在Master状态正常工作。
另外,由于原Master成员设备发布本机真实IP地址的主机路由信息是为了标识其已处在Master状态并已发布了网段路由信息,因此,当原Master成员设备由于二层网络分裂复原等原因而切换至Backup状态、并撤销其发布的网段路由信息时,其同样需要在撤销其发布的本机真实IP地址的主机路由信息。
相应地,本实施例中用于VRRP恢复流量的装置可以进一步包括在成员设备中运行的如下模块:
成员路由撤销模块,当本机(即原Master成员设备)从Master状态切换至Backup状态后,撤销本机已发布的本机真实IP地址的主机路由信息。
在具体实现时,为了使成员设备在作为新Master成员设备时能够侦测本地ARP表项是否有效,本实施例可以通过ARP查询机制来实现。
相应地,ARP表项侦测模块可以通过在本机连接二层网络的接口分别针对各条本地ARP表项向对应的各本地主机发送ARP查询报文、并在预定的应答等待周期内等待各本地主机响应的ARP应答报文,来实现对本地ARP表项的有效性侦测;
若在应答等待周期内未接收到ARP应答报文,则确认对应的本地主机在二层网络分裂后与本机失去连接、从而确认该本地主机对应的本地ARP表项无效;
若在应答等待周期内收到了ARP应答报文,则确认对应的本地主机在二层网络分裂后仍与本机保持连接、从而确认该本地主机对应的本地ARP表项有效。
在具体实现时,为了实现原Master成员设备判断IP地址的冲突是否存在、以及触发本地主机的Mac地址刷新,原Master检测刷新模块、原Master撤销检测模块可通过在本机的二层接口发出免费ARP报文来实现;其中,原Master检测刷新模块所发出的免费ARP报文的源IP地址和目的IP地址均为其他成员设备发布的主机路由信息所对应的本地主机IP地址、源Mac地址为本机的Mac地址;原Master撤销检测模块所发出的该免费ARP报文的源IP地址和目的IP地址均为被撤销的主机路由信息所对应的本地主机IP地址、源Mac地址为本机的Mac地址;
并且,若原Master检测刷新模块、原Master撤销检测模块在预定的冲突检测周期内未收到回应的免费ARP报文,则确认无IP地址冲突,但若原Master检测刷新模块、原Master撤销检测模块在预定的冲突检测周期内收到了回应的免费ARP报文,则确认存在IP地址冲突。
在具体实现时,为了实现新Master成员设备判断IP地址的冲突是否存在、以及触发本地主机的Mac地址刷新,新Master检测刷新模块、以及新Master撤销检测模块可通过在本机的二层接口发出免费ARP报文来实现;其中,新Master检测刷新模块所发出的免费ARP报文的源IP地址和目的IP地址均为数据报文的源IP地址、源Mac地址为本机的Mac地址;新Master撤销检测模块所发出的免费ARP报文的源IP地址和目的IP地址均为已创建的远程ARP代理表项所对应的IP地址、源Mac地址为本机的Mac地址;
并且,若新Master检测刷新模块、以及新Master撤销检测模块在预定的冲突检测周期内未收到回应的免费ARP报文,则确认无IP地址冲突;但若新Master检测刷新模块、以及新Master撤销检测模块在预定的冲突检测周期内收到了回应的免费ARP报文,则确认存在IP地址冲突。
在具体实现时,为了使成员设备在Backup状态能够保持其本地ARP表项不会在其切换至Master状态之前就由于老化而被删除,本实施例中用于VRRP恢复流量的装置可以进一步包括在成员设备中运行的如下模块:
ARP老化禁止模块,当本机(Backup成员设备)在Backup状态接收到VRRP备份组所在网段内的免费ARP报文后,将本机在Backup状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态;
ARP老化开启模块,若本机(二层网络分裂后的新Master成员设备)通过如图3所示的步骤320侦测到与本机保持连接的本地主机所对应的有效本地ARP表项,则为有效本地ARP表项配置老化时间;
以及,ARP老化关闭模块,当本机(原Master成员设备或新Master成员设备)从Master状态切换至Backup状态后,将本机在Master状态依据免费ARP报文所创建的本地ARP表项设置为不老化状态。
此外,对于新Master成员设备来说,当本地ARP表项的老化功能被开启后,还需要针对老化超时的有效本地ARP表项来更新已发布的子集路由。因此,本实施例中用于VRRP恢复流量的装置可以进一步包括在成员设备中运行的如下模块:
主机路由更新模块,当本机的有效本地ARP表项老化时,删除老化的有效本地ARP表项、并更新本机已发布的本地主机IP地址的主机路由信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。