一种交换机及无损切换方法与流程

文档序号:12796239阅读:398来源:国知局
一种交换机及无损切换方法与流程
本申请涉及通讯技术领域,尤其涉及一种用于FC网络的交换机和无损切换方法。

背景技术:
FSPF(FabricShortestPathFirst)协议是FCfabric所使用标准的动态路由发现协议,该协议将FCfabric中的所有交换机连接起来,通过同步LSDB计算出fabric中一台交换机到其他所有交换机的最短的无环路路由。FSPF协议的邻居发现和LSDB同步由三种报文实现:HLOSW_ILS(TheHLOSW_ILSSwitchFabricInternalLinkService),用于发现和维护邻居;LSUSW_ILS(TheLinkStateUpdateSwitchFabricInternalLinkService),用于从一个交换机向另外一个交换机发送本交换机的链路状态信息;LSASW_ILS(TheLinkStateAcknowledgementSwitchFabricInternalLinkService),用于对接收到的链路状态信息(LSR,linkStatesRecord)做应答,而不是对LSUSW_ILS报文的应答。LSR,FSPF协议通过它描述交换机的链接状态。所有交换机产生的LSR构成LSDB(Link-StateDataBase)。两个邻居LSR的交互通过LSU(LinkStateUpdate)和LSA(LinkStateAcknowledgement)报文来完成。当建立邻居或者LSR变更时,LSR通过LSU的封装,发送给邻居,邻居通过LSA报文做应答。从而同步fabric网络中所有交换机的LSDB。

技术实现要素:
有鉴于此,本申请提供一种交换机,用于FC网络,所述交换机包括标记模块、路由模块和处理模块;所述标记模块用于在启动无损切换时,启动定时器,对发生改变的设备接口置切换标记;所述路由模块用于在执行无损切换时,并抑制路由计算,待所述定时器超时时,开启路由计算功能,并触发其重新执行路由计算;所述处理模块用于在执行无损切换时向置切换标记的接口所连接的邻居发送FSPF协议报文通知所述邻居该路径不可达。所述标记模块针对发生改变的设备接口设置切换标记具体包括:如果是接口级的无损切换,将对应的接口设置切换标记,如果是系统级的无损切换,则将全部接口设置切换标记;所述处理模块向邻居发送FSPF协议报文通知所述邻居该路径不可达具体包括:I处理模块向相关邻居发送1wayhello报文,其中,如果是接口级切换,仅向与置切换标记的接口相连的邻居发送,如果是系统级则向所有邻居发送;II处理模块更新LSR,将置有无损切换标记的接口不加入到LSR中,通过LSU报文同步给所有邻居设备,使得收到该LSR邻居设备计算并切换路由。所述处理模块进一步用于在更新LSR,将置有无损切换标记的接口不加入到LSR中,通过LSU报文同步给所有邻居设备后,触发邻居状态机向无损切换状态迁移。所述处理模块进一步用于在所述定时器超时后,删除置有无损切换标记接口的邻居。基于同样的思想,本申请还提供一种无损切换方法,用于FC网络,所述方法包括:启动无损切换时,启动定时器,对发生改变的设备接口置切换标记;抑制路由计算,向置切换标记的接口所连接的邻居发送FSPF协议报文通知所述邻居该路径不可达;所述定时器超时时,开启路由计算功能,并触发其重新执行路由计算。所述方法进一步包括:所述针对发生改变的设备接口设置切换标记具体包括:如果是接口级的无损切换,将对应的接口设置切换标记,如果是系统级的无损切换,则将全部接口设置切换标记;所述向邻居发送FSPF协议报文通知所述邻居该路径不可达具体包括:I向相关邻居发送1wayhello报文,其中,如果是接口级切换,仅向与置切换标记的接口相连的邻居发送,如果是系统级则向所有邻居发送;II更新LSR,将置有无损切换标记的接口不加入到LSR中,通过LSU报文同步给所有邻居设备,使得收到该LSR邻居设备计算并切换路由。所述方法在更新LSR,将置有无损切换标记的接口不加入到LSR中,通过LSU报文同步给所有邻居设备后进一步包括:触发邻居状态机向无损切换状态迁移。所述方法在所述定时器超时后进一步包括,删除置有无损切换标记接口的邻居。本申请通过上述技术方案,使得在网络发生变化时,交换机设备保留一段时间(无损切换间隔)转发表,先通知邻居设备先切换转发路径,无损切换间隔后(即定时器超时)本设备才根据路由计算更新路由表并重新下发新的转发表,从而实现了网络规划变动时不丢包,用户流量不中断,提升了用户的使用体验。附图说明图1是本申请提供的一种交换机示意图。图2是本申请提供的一种实施场景示意图。图3是本申请提供的又一种实施场景示意图。图4是本申请提供的方法实施例的流程图。图5是本申请提供的邻居状态机迁移图。具体实施方式在FC网络规划变动执行过程中,对接口以及设备的操作可能导致丢包。对于改变物理连接的情况,即更改接口组网(例如接口连接到其他设备上)或者设备的组网(例如将其从Fabric网络中移出),相邻设备的FSPF协议在感知到对端接口down时会触发路由计算,并切换转发路径。但从相邻设备感知到邻居down,直至计算路由并下发芯片切换后的路由,在这段时间内仍然使用老转发路径的包将丢失。对于不改变网络物理连接的情况,相邻设备的FSPF协议将在死亡周期超时(一般80秒)后才能感知邻居down,这将导致更长时间的丢包。本申请的一个实施例提供一种交换机,所述交换机应用FC网络中,用于在组网环境发生改变需进行链路切换时,不做down处理,设备上的转发表项也不立即做删除,而是启动定时器,保留一段无损切换时间,发送LSR通知邻居设备该路径不可达,从而实现了在转发表尚未删除前完成流量切换。所述交换机包括标记模块、处理模块、路由模块和FSPF协议处理模块,如图1所示,所述标记模块用于在执行无损切换时,启动定时器,对相关的接口置标记;所述路由模块用于抑制路由计算功能,待无损切换时间所述定时器超时时,开启路由计算功能,并触发重新执行路由计算;所述处理模块用于在路由计算功能被抑制时,发送FSPF协议报文通知所述邻居该路径不可达,以触发该邻居快速地重新计算路由。基于同样的思想,本申请提出了一种无损切换的方法,所述方法应用于包含上述交换机的FC网络中,在组网环境发生变化需要进行链路切换时,在发生改变的交换机并不立即做down的处理,并且设备上的转发表也不立即做删除,而是启动一个定时器,保留一段无损切换时间,发生改变的交换机立即发送LSR以通知邻居该路径不可达,触发邻居设备快速的重新计算路由,并在定时器超时时,重新进行路由计算,这样在转发表尚未删除前即可完成流量切换,从而满足流量不中断的目的。其中,这里的所说的组网环境发生变化需要进行链路切换可能是由于设备的接口故障或者是整个设备的故障,所以,这里的切换也分为接口级和系统级两个层次:在因接口故障进行组网切换时可以通过接口级的切换避免流量的中断;在整台设备故障而迁移出组网时,可以使用系统级的切换来保证流量的不中断。另外,这里所说的发生改变的交换机设备是指因链路切换导致物理连接发生改变的设备。本申请的一个应用场景如图2所示,SwitchA到D存在ABD和ACD两条可达路径,在switchA到B的接口down时,此时的切换属于接口级切换,switchA的相关接口并不立即做down的处理,并且switchA的转发表也不立即删除,而是保留一段无损切换时间(例如10秒),取而代之的是处理模块立即发送LSR以通知邻居该路径不可达,从而触发邻居设备快速的重新计算路由,这样邻居设备就不会有下一跳为置有切换标记的接口的路由了,因此,邻居设备的所有报文转发不会在经过该发生变化的路径,本机在无损切换时间到达后,也重新启动路由计算。这样就使得流量切换先于删除转发表,从而以达到流量不中断的目的。本申请的又一应用场景如图3所示,SwitchA到D存在ABD和ACD两条可达路径,在switchB设备down时,此时的切换属于系统级切换,switchA的所有接口并不立即做down的处理,并且switchA的转发表也不立即删除,而是保留一段无损切换时间(例如10秒),从而触发邻居设备快速的重新计算路由,这样邻居设备就不会有下一跳为置有切换标记的接口的路由了,因此,邻居设备的所有报文转发不会在经过该发生变化的路径,本机在无损切换时间到达后,也重新启动路由计算。这样就使得流量切换先于删除转发表,从而以达到流量不中断的目的。本申请的又一实施例如图4的流程图所示,该无损切换方法包括:步骤11在发生组网切换时,发生改变的设备启动无损切换,所述标记模块启动定时器,针对发生改变的设备接口设置切换标记:如果是接口级的无损切换,将涉及的接口设置切换标记,如果是系统级的无损切换,则将全部接口设置切换标记;如图2和图3所示的场景中,switchA为发生变化的设备,在图2的场景下,switchA做接口级无损切换,将与switchB相连的接口置上无损切换标记,在图3所示的场景下,switchA做系统级无损切换,对所有的接口置无损切换标记,即对与switchB和C相连的接口做无损切换标记。步骤12发生改变的设备的路由模块抑制路由计算,在路由计算功能没有被开启前,不触发路由计算。在switchA设备上暂时关闭路由计算功能,即使收到了邻居switchC和B发送的LSR也不触发路由计算,所述转发表项也不会做更改或删除。步骤13发生改变的设备的处理模块向相关邻居发送1wayhello报文。如果是接口级切换,仅向与置标记的接口相连的邻居发送;如果是系统级则向所有邻居发送。SwitchA向邻居发送1wayhello报文,在图2所示场景下,向switchB发送1wayhello报文,在图3所示的场景下,向switchB和C都发送1wayhello报文。步骤14发生改变的设备的处理模块更新LSR,将置有无损切换标记的接口不加入到LSR中,通过LSU报文同步给所有设备,使得收到该LSR邻居设备计算并切换路由,此时触发邻居状态机向无损切换状态迁移。在图2和图3所示的场景下,switchB和switchC作为相关的邻居设备收到了更新后的LSR后,根据所述LSR中的相关信息,删除邻居,触发路由计算,并下发新的路由。SwitchA在无损切换时间没有到达前,从置有无损切换的接口收到邻居的报文(如HLO等),则丢弃该报文,对于LSU报文可以不做处理直接回应LSAck,以避免其重传。与此同时,switchA更新LSR并向邻居发送后,触发邻居状态机状态迁移,邻居状态机的迁移过程具体如图5所示,正常情况下,邻居状态机的初始状态为Down状态,在该状态下收到E_Port状态通知后,邻居状态变迁为Init状态。达到Init状态后,在收到对端发送的HLOSW_ILSExchange时,如果其中的RecipientDomain_ID字段就是自己的Domain_ID,那么2way关系建立起来,并开始交互LSDB,此时邻居状态变迁为Exchange状态。在DatabaseExchange状态,两个邻居交互他们全部的LSDB。从该邻居状态可以变迁两种不同状态,如果此时收到邻居的数据库发送结束的HLOSW_ILS报文,那么邻居状态变迁为DatabaseAckWait状态;如果此时收到的是邻居的数据库发送结束的应答报文,那么邻居状态变迁为DatabaseWait状态。处于DatabaseAckWait状态时,当接收到邻居对数据库报文结束的应答报文时,邻居状态将变迁为Full状态。处于DatabaseWait状态时,当接收到邻居的数据库结束报文那么邻居状态变迁为Full状态。邻居关系一旦成为Full状态,那么邻居将变成邻接关系(Adjacency),此时连接两个邻接交换机的ISL将可以用于转发用户数据。并且两端设备重新生成LSR以告知周边设备其达到邻接关系。本申请在上述的FULL状态和down状态之间添加了一个新的状态:LosslessDown,当switchA做无损切换时,向邻居SwitchB和C发送了更新后的LSR,触发邻居状态机由FULL状态切换到LosslessDown状态,在无损切换时间超时后,变迁到down状态。步骤15当所述定时器超时后,发生改变的设备的路由模块开启路由计算功能,并触发其重新执行路由计算;所述处理模块删除置有无损切换标记接口的邻居以及所述切换标记。无损切换间隔时间可以通过管理员调整,其可以控制抑制本端抑制路由计算的时间,但不应过小,以免邻居设备还没有完成计算并下发新路由的处理。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1