Cisco NSF 与NSR 与GR

一 般高端路由器,都会有control board和data board。Control board主要跑control plane的软件,比如配置,动态路由协议等。而data board主要跑data plane的软件,比如转发之类的。对路由器来说,control board学习,维护路由表并把转发表FIB (Forwarding Information Base)下发到data board上去。因此,control board和data board从某种程度上来说,可以独立运行.


NSF的意思是说,在control board失效的情况下,转发不中断。在这个过程中,control board会切换到一个备份的control board上去,也就是说,control board是冗余的。切换的过程叫做SSO(Stateful Switchover)或者(GRES)Graceful Routing Engine Switchover。由于FIB在路由变化的情况下,有可能是无效的,所以这个切换过程不应该花很长时间。


Control board在切换之后,所有与路由相关的状态,需要重新学习。这个过程会耗费一定的时间。NSR的意思就是说,control board在切换之后,可以马上工作。因此,它会在备份的control board上保存主动control board上与路由相关的状态。也就是说,主动control board上的socket state, neighbour state等,都会同步到备份板上。这样,切换所中断的路由学习就比较短。这个过程叫做Graceful Restart (GR)。

这些都是和HA(high availability)相关的东西。以前做HA,可能只需要同步配置等一些无状态的东西,现在则需要同步session,sa,socket等有状态的东西。其目的就是实现99.999%的可用性,这在电信市场应该是个非常重要的指标。


还有一个概念ISSU(In service software update)就是不重启机器而升级软件,软件升级后也不需要重启。这个在control plane和data plane分离的情况下,才有可能实现。如果要升级data plane,除非是有data plane的备份,否则,转发是一定会被中断的。如果把服务能分离开,互相不影响,是独立的模块。那么升级一个模块就不会影响其他模块。如果升级转发模 块,可以同时有两个转发模块,用新的替换旧的。如果是这样的话,什么时候切换,就是个问题,在新的模块准备好了,应该就可以切换了。但是还要保证新旧模块 共享数据结构,而且在旧模块消失之后,不会破坏这些结构才行。