在路由器中的控制故障期间保护多播数据转发的系统和方法

文档序号:6109175阅读:372来源:国知局
专利名称:在路由器中的控制故障期间保护多播数据转发的系统和方法
技术领域
本发明一般地涉及计算机网络,更具体而言,涉及由计算机网络的不停止转发(non-stop forwarding)中间节点执行的多播路由协议。
背景技术
计算机网络中的数据通信涉及通过通信链路、网段和子网互连的两个或更多个实体之间的数据交换。这些实体一般是运行在诸如末端节点和中间节点之类的硬件计算机平台上的软件过程。运行在末端节点上的通信软件将数据通信与其他末端节点相关并管理数据通信。这些节点一般通过根据预定义协议(如传输控制协议/因特网协议(TCP/IP))交换离散帧或数据分组来进行通信。
诸如路由器之类的中间节点可以互连子网以扩展计算机网络的有效“大小”。路由器运行用于指导末端节点(如主机)之间的数据流量的传输的路由协议。一般来说,路由器基于包含在分组中的目的地地址前缀(即,由路由协议用来进行路由(“下一跳”)判决的目的地地址的一部分)来指导网络流量。这种目的地地址的示例包括因特网协议(IP)版本4(IPv4)和版本6(IPv6)地址。前缀隐含了IP地址和掩码的组合,IP地址和掩码协同操作来描述路由器可以到达的网络的区域或范围,而路由隐含了一组路径属性和前缀的组合。
单播数据传送(即,单播转发)涉及将数据分组从末端节点(“源”)的单个发送过程转发到计算机网络上的末端节点(“接收者”)的单个接收过程。通常由源发出的数据分组的目的地可以多于一个,但是少于网络上的所有接收者。这类多播数据传送(即,多播转发)一般被用于隔离网络上的接收者群组之间的通信。具体而言,IP多播可用于将数据散布到网络上的一大群接收者。
为了实现IP多播,源通常指定目的地IP地址,该地址是消息的多播群组地址,因此只可以代表分组的接收者。IPv4(或IPv6)地址范围被划分为不同的前缀,其中一个前缀被指定由IP多播使用。接收者一般向其通信软件通知其希望接收到去往多播群组地址的消息;这被称为“加入多播群组”。这些接收成员随后“侦听”多播地址,并且当在接收者处接收到多播消息时,其将消息的拷贝传递到属于该群组的每个过程。
IP多播依赖于(i)群组管理协议来构建并维护本地多播群组成员资格,以及(ii)多播路由协议来有效地路由分组。因特网群组成员资格协议(IGMP)管理主机和其本地多播路由器之间的分组通信,让其加入或离开群组。即,IGMP被用于将来自主机的群组成员资格消息发送到其直接连接的(“最后一跳”)路由器,指示主机想要作为接收者加入群组(地址)。注意,IGMP是IPv4群组成员资格协议;传统的多播侦听者发现(MLD)协议基本类似于IGMP,并且与IGMP执行相同的功能,但是是用于IPv6的。当构建了群组成员资格时,多播分组(由IP头部的目的地地址字段中的多播群组地址标识)被利用多播路由协议在路由器之间转发。
多播路由协议构造经过网络的分发树并指导多播转发。多播分发树定义多播流量将经过网络到达群组成员所采取的路径。这些路径是基于源或共享多播分发树的。当发起去往多播群组的群组地址的数据流量的任何源(主机)使用相同的分发树来转发数据到接收者时,多播分发树是共享的。相反地,源分发树是针对发起到多播群组的流量的每个源建立的独立的、最短路径树(SPT)。
交会点(rendezvous point)是被指定为共享多播分发树的根的特定路由器。网络中的每个路由器知道每个多播群组的交会点的身份,这是因为共享多播分发树以交会点为根。公告协议(announcement protocol)一般被用于选择交会点,并向网络中的所有路由器公告交会点。然而,一种使用公告协议来将交会点自动通告到网络中的所有路由器的替换方案是在所有路由器上手工配置交会点的身份。公告协议的示例包括可以从CiscoSystem Inc.公司得到的自动RP多播协议和在Fenner等人2003年2月的“Bootstrap Router(BSR)Mechanism for PIM Sparse Mode”,因特网工程任务组,因特网草案,draft-ietf-pim-sm-bsr-03.txt中描述的自举路由器(BSR)。使用交会点的多播路由协议的示例包括协议无关多播稀疏模式(PIM-SM)和双向PIM(BIDIR-PIM)协议。不需要交会点的其他多播协议包括PIM密集模式(PIM-DM)和PIM源特定多播(PIM-SSM)协议。
IP多播可部署在计算机网络上,计算机网络利用特定交会点来针对落在目的地地址前缀内的特定群组建立共享多播分发树,或者针对发起到多播群组的流量的每个源建立独立的SPT。落在不同前缀内的任何群组使用不同的交会点,即不同的群组范围到交会点地址映射。广而言之,路由器加入朝向交会点或源的多播群组(分发树)。朝向交会点或源的路由器上的接口是入口接口。取决于多播路由协议,通常在路由器上只有一个入口接口用于接收针对特定路由的多播分组。朝向主机(接收者)的路由器上的一个或多个接口是出口接口。主机(接收者)是分发树上的叶子或节点。分组从源发送到分发树的根(交会点或源自身),从而其被朝向分支转发并转发到代表接收者的节点。在每个节点上,在朝向树的根的入口接口上接收到分组,并且将分组转发出朝向接收者或节点的出口接口。
具体而言,接收者使用IGMP来将加入多播群组地址的请求传输到最后一跳路由器。路由器利用诸如PIM之类的多播路由协议将该请求传输到其链路上朝向交会点(针对共享树)或源(针对SPT)的邻居路由器(邻居)。自动RP或BSR被用于将群组范围到交会点地址映射配置分发到参与网络拓扑的所有启用PIM的路由器。这些路由器共同构造共享多播分发树,该共享多播分发树以该群组地址的交会点或源为根,并且具有将数据流量向最后一跳路由器“拉动”的分支(链路)。注意,只有单个多播路由器(转发者)应当经由树的特定链路转发针对某一路由的分组。
路由器的底层结构一般包括被组织为控制平面和数据平面的功能性组件。控制平面包括管理路由器的流量转发特征所需的功能性组件。这些组件包括路由协议、配置信息和基于除了包含在分组内的信息以外的其他信息确定数据分组的目的地的其他类似功能。另一方面,数据平面包括执行分组的转发操作所需的功能性组件。
对于单个处理器路由器,控制和数据平面一般实现在单个处理器上。然而,对于某些高性能路由器,这些平面实现在中间节点的独立设备中。例如,控制平面可以实现在监管者处理器中,而数据平面可以实现在硬件辅助设备(如协同处理器或转发处理器)内。换句话说,数据平面一般实现在与实现控制平面的硬件相分离的硬件中。
就操作在监管者处理器上的软件的质量和数量而言,控制平面通常比数据平面更复杂。因此,当运行这种复杂代码时,故障更有可能发生在监管者处理器中。为了确保路由器的高可用性,希望配置路由器使得如果控制平面出现故障,要求运行在监管者处理器上的软件重启,则数据平面继续正确操作。由于路由协议组件的故障或者对该组件的软件升级,控制平面软件的重启可能是必要的。被配置为使得其数据平面能够在控制平面软件的重启期间继续分组转发操作的路由器被称为能够进行不停止转发(NSF)的路由器。
能够进行NSF的路由器体系结构有用的情形包括路由器的控制平面中的预期故障和非预期故障。例如,控制平面中的故障可以包括非预期或非计划事件(例如,软件崩溃或硬件错误)以及计划或预期事件(例如,安排的维护)。关于后者,假定希望更新运行在监管者处理器上的软件或者甚至移去并替换处理器以进行维修。这种升级或移去/替换可能导致一个或多个路由协议的中断,但是路由器的NSF本质允许继续经过路由器转发数据。
NSF路由器体系结构已经实现在单播转发引用中,以增强路由器可用性并避免数据连通性被干扰。这些先前的实现方式通常要求修改多播路由协议以添加对NSF的支持。例如,对已知单播路由协议的修改允许支持路由器协议故障的合理重启。当路由器被重启时,修改后的协议允许路由器利用其邻居获得信息(经由协议消息交换),而不是使邻居将路由器“视为”完全停止工作,从而避免了对路由拓扑的任何改变。本发明一部分针对在不修改现有的多播协议定义的情况下实现多播NSF路由器体系结构的机制。
控制多播路由器的硬件或软件(即,控制平面中的组件,而不是经过路由器的数据分组的路径中的组件)的故障或停工(outage)可能导致经过路由器的多播数据分组丢失,而无法追索。结果是网络中多播连通性的丢失和受影响的路由器的可用性降低。本发明还针对解决在多播路由器的控制故障期间多播数据连通性的丢失和可用性的降低。
多播路由器中的NSF恢复涉及发生故障的多播组件(如PIM)的高效重启和基于传统的PIM协议消息重新建立状态,直到所有必要的信息都已被恢复为止。在NSF恢复期间,控制平面一般与数据平面断开连接,这实质上“冻结”了运行在路由器的数据平面中的多播转发信息库(MFIB)的内容。即,任何发生在控制平面中的变化都不被传输到数据平面,并且不在用于转发数据流量的当前MFIB中反映出来。从而,网络状况的改变在恢复时段的持续时间内不对数据平面发生作用。因此,MFIB利用其转发表的被冻结内容“盲目地”(blindly)经过路由器转发数据流量。
然而,某些网络状况改变(如单播转发的改变,这种情况在MFIB利用其被冻结的(“陈旧的”)转发信息来转发数据流量的期间出现)可能导致路由器的邻居改变其多播转发。多播协议通常取决于单播协议的全递归状态。影响单播转发的网络拓扑的变化(如反向路径转发(RPF)状态)可能导致邻居改变其多播转发,并开始在不同路径(链路)上发送多播数据流量。例如,邻居可能改变其多播转发,以使得经由用于特定路由的特定链路从路由器接收到的数据流量被经由该链路转发回路由器从其转发该流量的同一接口上。这导致链路上的多个多播转发者,这可能导致生成重复的分组和/或形成多播环路。
多播环路通常比单播环路坏得多。在单播转发的情况下,分组穿过单播环路,直到路由器将分组的生存时间(TTL)参数递减到0为止,此时分组被丢弃。而在多播转发的情况下,每次分组穿过多播环路并且“命中”具有多于一个出口接口的路由器时,分组被复制,从而导致分组的爆炸式增长。从而,希望避免重复分组的生成和可能的多播环路的形成。

发明内容
本发明通过提供一种多播不停止转发(NSF)路由器体系结构克服了现有技术的缺点,这种体系结构增强了计算机网络中多播路由器的高可用性。该路由器体系结构还在路由器的控制平面中的一个或多个故障的NSF恢复期间保护了经过数据平面的多播数据转发。如这里所述,路由器的各种多播组件协同操作以提供一种多播NSF体系结构的设检查点和恢复技术,该技术能够有效地重启并恢复控制平面故障,而不会丢失数据连通性。这些多播组件示例性地包括控制平面中的协议无关多播(PIM)多播路由协议和多播路由信息库(MRIB),以及数据平面中的多播转发信息库(MFIB)。
多播NSF路由器中的恢复涉及有效地重启发生故障的多播组件(如PIM),并基于传统的PIM协议消息重新建立状态,直到所有必要的信息都已被恢复为止。在该上下文中,状态的重新建立是指重新构建恢复PIM路由协议和其运行在邻居路由器(邻居)中的对等路由协议之间的通信,并在这些协议间交换多播控制消息以能够重新构造PIM拓扑表。为此,该新型多播NSF技术在路由器的适当操作期间对选择性信息进行监视和持久存储(即,设检查点),以使得该信息随后可以在NSF恢复期间被取得并用于重新建立PIM拓扑表的内容或状态。根据所发明的技术的一方面,被PIM设检查点的选择性信息包括(i)群组范围到交会点地址映射、(ii)数据驱动的事件和(iii)反向路径转发(RPF)信息。
根据所发明的技术的另一方面,NSF恢复包括具有关联时序的多个阶段,NSF恢复在控制平面故障后有效地重启路由器和构成其的多播组件,以消除分组丢失。广而言之,MFIB在MFIB冻结阶段进入NSF模式,MFIB冻结阶段响应于控制平面故障(例如,PIM的故障)以及随后的MFIB和PIM之间的通信连接断开,“冻结”其转发表的内容。MFIB的冻结保护了数据平面中的“陈旧”路由,从而确保了多播数据流沿预先存在的路由继续通过路由器。发生故障的控制平面组件(例如PIM)随后在过程重启阶段期间的定义的时间段内,在NSF模式中重启。在设检查点的数据恢复阶段中,PIM在进入协议相邻性重新构建阶段之前重放设检查点的信息的第一部分(例如,群组范围到交会点地址映射和RPF信息),在协议相邻性重新构建阶段中,PIM与其对等路由协议构建控制流量通信(例如,PIM Hello相邻性)。随后重新进入设检查点的数据恢复阶段,以重放该信息的剩余部分(例如,数据驱动的事件)。在MFIB刷新阶段中,MFIB和PIM之间的连接(经由MRIB)被重新构建,并且MFIB转发表的内容被更新。其后,进入NSF完成阶段,其中MFIB(和PIM)转变到正常模式,从而完成NSF恢复。
本发明还针对一种用于防止在多播路由器的控制平面中的一个或多个故障的NSF恢复期间,多个多播转发者经由计算机网络中的链路转发针对一条路由的多播分组的技术。多播路由器具有功能性底层结构,该功能性底层结构在运行在控制平面中的多播组件(例如,PIM路由协议)发生故障和/或软件重启的情况下,允许数据流量转发操作在路由器的整个数据平面上继续进行。另一多播组件(例如,运行在数据平面中的MFIB)被配置为防止由于在NSF恢复期间出现的网络中的路由变化而出现多个多播转发者。
在示例性实施例中,MFIB被实现为一个或多个多播转发表,这些多播转发表被填充以描述如何经过路由器转发数据分组的内容。广而言之,PIM利用路由信息(即,路由)来填充MFIB转发表的条目,路由信息指定了应当在其上接受传入多播分组的入口接口,以及应当经由其转发传入分组的出口接口列表。响应于从邻居接收到传入分组,MFIB对其转发表执行查找,以找到与分组的多播目的地地址相匹配的条目的路由。匹配路由指示路由器分组应当被转发到哪一个出口接口。
如这里所述,触发防止多个多播转发者的状况是分组在匹配路由的出口接口上到达路由器。在该出口接口上多播分组的到达是数据驱动的事件,该事件指示MFIB中的匹配路由和也转发分组到该接口的邻居之间的转发冲突,这可能导致重复分组和/或多播环路。一般来说,数据平面向控制平面通知数据驱动的事件(经由控制信号),并且控制平面解释该事件以重新收敛到在正确的转发状态上。然而,控制平面在NSF恢复期间与数据平面断开连接,并且MFIB多播转发表的内容被冻结。这迫使MFIB在NSF恢复期间利用其转发表的被冻结内容经过路由器转发数据流量。
根据所发明的技术,在发现在针对其匹配路由的路由器的出口(即,转发)接口上接收到传入多播分组后,MFIB暂停针对该路由经由该接口转发多播分组。经由出口接口的多播分组转发可以示例性地通过从MFIB转发表的路由条目中移去该接口来暂停。具体而言,MFIB被配置为假定路由器将丢失与其邻居的PIM声明(assert)协议协商过程(如果该过程要发生的话)。因此,MFIB从其转发接口列表中移去出口接口,从而暂停经由该接口转发多播分组。实质上,由于控制平面已发生故障并且不能立即与邻居协商正确的转发,因此MFIB单方面暂停针对该路由经由该出口接口转发分组,以避免可能生成重复分组和/或形成多播环路。在NSF和控制平面恢复后,MFIB转发表被利用完整的转发(路由)信息加以更新。MFIB随后可以恢复经由该接口转发,这触发了针对该路由的PIM声明协议协商过程,解决了路由器之间的转发冲突。
有利地,本发明消除了修改传统多播路由协议的需要,并且可以实现在网络中的路由器的任何子集上。即,新型NSF设检查点和恢复技术确保了在邻居检测到致命问题并且使多播相邻性和路由状态超时(从而导致多播连通性的丢失)之前,可以在多播路由协议拓扑表中重新建立状态。另外,多播转发状态不被修改或移去,直到路由器的路由协议被完全恢复并与邻居重新同步为止。本发明区别于先前的NSF解决方案的不同之处在于,其通过协调各种多播组件间的恢复,保护了多播数据传送,而不是单播数据传送。


本发明的以上和进一步的优点可以通过结合附图参考下面的描述来更好地理解,在附图中,相似的标号指示相同或功能上类似的元件图1是可以有利地用于本发明的计算机网络的示意性框图;图2是可以有利地用于本发明的路由器的实施例的示意性框图;图3是图2的路由器内的传统协议栈(如因特网通信协议栈)的示意性框图;图4是图示了图2的路由器的功能性不停止转发(NSF)多播底层结构的示意性框图;图5是根据本发明的示例性设检查点布置的示意性框图;图6A-6C是图示了用于实现根据本发明的NSF恢复的步骤序列的流程图;图7是可以有利地用于本发明的多播转发信息库(MFIB)多播转发表的示例性实施例的示意性框图;以及图8是图示了用于实现本发明的防止多个多播转发者的技术的步骤序列的流程图。
具体实施例方式
图1是可以有利地用于本发明的计算机网络100的示意性框图。计算机网络100包括连接到多个节点(如末端节点110和中间网络节点200)的通信链路、网段和子网的集合。链路、网段和子网可包括局域网(LAN)120、诸如因特网170之类的广域网(WAN)和WAN链路130,它们由诸如网络交换机或路由器之类的中间节点200互连,以形成计算机节点的网络。这些节点通过根据预定义的一组协议(如传输控制协议/因特网协议(TCP/IP))交换数据分组来进行通信。
图2是可以有利地用于本发明的路由器(如多播路由器200)的示意性框图。路由器200包括多个松散耦合的处理器210,这多个处理器210经由诸如纵横制互连(crossbar interconnection)或高速总线之类的互连装置250连接到多个入口和出口线路卡(线路卡260)。本领域技术人员将认识到,根据本发明也可以使用其他路由器平台,例如单处理器系统或作为多节点集群的经由通信架构互连的多个独立节点。在该上下文中,术语“节点”指包括处理器和由处理器共享的独立存储器的计算机或处理器联合体。
处理器210示例性地是路由处理器(RP),其被配置为活动和备用RP对,其中每个处理器具有专用存储器230。存储器230可包括可由处理器寻址的存储单元以存储与本发明相关联的软件程序和数据结构。处理器210可包括用于执行软件程序并操作数据结构的处理元件或逻辑。路由器操作系统232(它的多个部分一般驻留在存储器230中并由处理器执行)通过调用支持运行在处理器上的软件过程(下面将描述)的网络操作等等来在功能上组织路由器。本领域技术人员将清楚,其他处理器和存储器装置(包括各种计算机可读介质)可用于存储并执行与这里描述的所发明的体系结构有关的程序指令。
在示例性实施例中,线路卡执行数据流量的转发,而路由处理器处理数据流量转发的路由和控制。每个路由处理器包括两个中央处理单元(CPU 220),例如Power-PC 7460芯片,其被配置为对称微处理(SMP)对。CPU SMP对适合于运行路由器操作系统232的单个拷贝并访问其存储器空间230。每个线路卡260包括具有多个端口的接口270,这多个端口耦合到接收转发处理器(FP Rx 280)和发送转发处理器(FP Tx290)。FP Rx 280对在路由器的入口线路卡的入口接口上接收的每个分组进行转发判决,以确定向何处转发分组。为此,FP Rx使用下面进一步描述的多播转发信息库(MFIB)480。在分组要被转发到路由器的路由处理器之一的情况下,FP Rx利用内部FIB(IFIB)来确定分组应当被转发到哪一路由处理器。类似地,FP Tx 290对经由出口线路卡的一个或多个出口接口发送自路由器的分组执行查找操作(利用MFIB 480)。
路由器200的关键功能是确定路由器中分组应当被转发到的一个或多个接口;为了适应这种“路由”,多个路由器协同操作以确定通过计算机网络100的最佳路径。路由功能优选地由每个路由器内的传统协议栈的网络层执行。图3是传统网络协议栈,如因特网通信协议栈300的示意性框图。因特网协议栈的体系结构由四层代表,按上升顺序是网络接口层308、网络层306、传输层304和应用层302。
较低的网络接口层308通常是标准化的,并且实现在硬件和固件中,而较高层一般以软件形式实现。因特网体系结构的主要网络层协议是IP协议(IP)。IP主要是无连接协议,其提供了被交换分组(在因特网环境中通常被称为“数据报”)的网间路由、分段和组装,并且依赖于传输协议以获得端到端可靠性和其他服务特性。这种传输协议的示例是TCP协议,TCP协议由传输层304实现,并且向因特网体系结构的上层协议提供了面向连接的、端到端的可靠性服务。术语TCP/IP常用于表示因特网体系结构。
具体而言,网络层306涉及分组是如何转发经过网络的,但是其不直接涉及MFIB是如何计算的。多播路由协议可用于执行经过计算机网络的(用于网络层的)多播路由。可以有利地用于本发明的多播协议的示例包括协议无关多播稀疏模式(PIM-SM)和PIM源特定多播(PIM-SSM)路由协议,以及因特网群组成员协议(IGMP)。这些协议是公知的,并且在Fenner等人2004年2月的Protocol Independent Multicast-Sparse Mode(PIM-SM)Protocol Specification(Revised),因特网工程任务组,因特网草案,draft-ietf-pim-sm-v2-new-09.txt和Cain等人2002年10月的InternetGroup Management Protocol,Version 3,Request for Comments(RFC)3376中有详细描述,这两个文件通过引用全文包含于此。
PIM依赖于下层的拓扑收集协议来利用路由填充路由信息库(RIB420)的单播路由表425(图4)。这里所用的路由包括一组路径属性和前缀的组合等等。RIB存储单播转发和PIM 430所需要的那些单播路由的通用路由状态。对于感兴趣的单播路由(例如,表现为(S,G)多播路由中的源地址和交会点地址的单播地址),PIM将信息缓存在其PIM拓扑表435中。被缓存的信息包括下一跳地址、下一跳接口、连接标志(指示地址是否是被直接连接的)和度量。
RIB表中的路由可以从单播路由表直接提供,或者由独立的路由协议提供,所述路由协议例如边界网关协议版本4(BGP4)和BGP4的多协议扩展(MBGP)。BGP4是用于执行经过计算机网络的域间路由(对于网络层)的域间路由协议。路由器200(下文中称为“邻居”)经由可靠的传输层连接(如TCP)在自治系统间交换路由和网络层可到达性信息(NLRI)。相邻性是在选定的邻居之间形成的关系,用于交换路由消息并概括(abstract)网络拓扑。BGP4路由协议标准是公知的,并且在Y.Rekhter和T.Li的Request for Comments(RFC)1771(1995)中有所描述,这一文件通过引用包含于此。
BGP4通常只能够承载用于IPv4的路由信息;因此,MBGP将BGP4扩展到允许承载用于多种网络层协议(包括IPv6地址)的路由信息。MBGP扩展BGP4以将这些网络层协议与下一跳信息和NLRI(包括用于多播转发的NLRI)相关联。地址族标识符(AFI)和后续地址族标识符(SAFI)被用于标识NLRI的类型和网络层协议。MBGP和AFI/SAFI是公知的,并且在Bates等人的RFC 2858(2000)和J.Reynolds等人的RFC1700(1994)中有所描述,这些文件通过引用包含于此。
图4是图示路由器200的功能性底层结构400的示意性框图。功能性底层结构400优选地被划分为控制平面410和数据平面470,其中这种划分是在软件组件叠加在硬件元件的情况下指定的,硬件元件例如是路由处理器210和线路卡260。数据平面组件/元件被配置为从网络取得数据分组并将这些分组提供到路由器的转发逻辑(反之亦然)。相反地,控制平面组件/元件被用于管理/控制路由器的流量转发操作。底层结构400允许在控制平面410内存在故障和/或软件重启的情况下,路由器继续在整个数据平面470内执行流量转发操作。实质上,底层结构使得路由器200能够充当能够不停止转发(NSF)的路由器。
在示例性实施例中,路由器操作系统232将多播组件实现为分离的软件过程,这些软件过程是可独立重启的,并且分布在活动路由处理器210和线路卡260上,活动路由处理器210和线路卡260又是可独立热插拔的,并且可以具有冗余(备用)备份。为此,数据平面多播组件包括运行在线路卡上的MFIB 1-N 480,而控制平面多播组件包括运行在路由处理器210上的RIB 420、PIM 430、IGMP 440、多播RIB(MRIB 450)和检查点服务器460。可操作地,路由器的控制平面在与邻居交换路由信息后,建立MRIB 450(更具体而言,在其多播路由表455中建立MRIB 450)。例如,PIM向MRIB提供用于每个路由的所选的反向路径转发(RPF)地址和接口,这些信息被数据平面用来接受分组以经过路由器转发。MRIB 450的主要角色是辅助各种多播组件之间的通信,即,协调协议应用(例如,PIM、IGMP等)之间以及这些协议和MFIB之间的状态分布。因此,MRIB提供下一跳路由器信息和到每个多播目的地的能够进行多播的路径。从MRIB中导出MFIB 480,并将其实现为一个或多个多播转发表700,这一个或多个多播转发表700填充在线路卡260上,并且其内容描述了如何经过路由器转发数据分组。
本发明针对增强了路由器200的高可用性的多播NSF路由器体系结构。NSF路由器体系结构平衡了路由器的功能性底层结构400,以防止控制平面410中的硬件或软件故障显著破坏数据平面470的功能,从而在控制故障期间仍能实现多播数据转发。为此,该体系结构使得在硬件或软件组件发生故障的同时,其他硬件或软件组件能够进入NSF模式以在影响最小的情况下继续执行其功能。例如,如果路由处理器210被从路由器200中移去,从而使整个控制平面410停止工作(take down),则MFIB 480和MRIB 450之间的连接被打断,并且MFIB 480进入NSF模式。如果单个组件(例如,PIM 430)发生故障但是控制平面的其他部分(包括MRIB450)保持可操作,则MRIB 450和PIM 430之间的连接被打断,并且MRIB 450将发送消息到MFIB 480,指示其进入NSF模式。
如这里所述,路由器的各种多播组件协同操作以提供多播NSF体系结构的设检查点和恢复技术,这种技术能够有效地重启和恢复控制平面故障,而不会丢失数据连通性。多播NSF路由器中的恢复涉及有效地重启发生故障的多播组件(如PIM),并基于传统PIM协议消息重新建立状态,直到所有必要的信息都已被恢复为止。在该上下文中,状态的重新建立是指重新构建恢复PIM路由协议和其运行在邻居中的对等路由协议之间的通信,并在这些协议间交换多播控制消息以能够重新构造PIM拓扑表。PIM拓扑表435被图示为位于属于PIM的存储器230的一部分中,这样,对于路由协议的故障而言不是持久的。从而,当PIM在故障后重启时,其拓扑表是空的。因此,新型多播NSF技术监视并持久存储(即,设检查点)选择性信息,从而使信息在NSF恢复期间可以有效地被取得并被用于重新建立PIM拓扑表的内容或状态。
I.对各种类型的信息设检查点本发明的一个方面涉及最小量的状态,所述状态在控制平面410中被设检查点,以实现多播NSF技术。这里所用的术语“设检查点”是指稳定状态(即,路由器的正确操作)监视和软件组件(例如,多播路由协议)的选择性状态的持久存储。具体而言,本发明的这一方面针对被设检查点的信息类型的定义,以及该信息被存储的方式。设检查点优选地以递增方式发生,即,递增地建立协议在故障后有效地恢复所需的信息的备份存储。定义了一组包括多播协议所用的各类选择性信息的数据库;这些类型的信息被设检查点是因为这些信息不能经过网络足够快地恢复以实现有效的多播NSF功能。最小的多播状态集被保存在持久位置中,该位置位于故障(例如,多播协议)范围外,并且在恢复期间从该处可以有效地取得这些信息。
在示例性实施例中,PIM是对信息/状态数据库设检查点的多播路由协议。应当注意,本发明的设检查点和恢复技术可应用于各种用于PIM的NSF的实现方式,如用于PIM-SM、双向PIM(BIDIR-PIM)和PIM源特定多播(PIM-SSM)(这里统称为“PIM”)的NSF。数据库被图示为存储在存储器的一部分(“存储器窗口”)内的检查点表中,该存储器在两个组件,例如PIM 430和检查点服务器460之间共享。将多播状态数据库存储在共享存储器窗口中保护了数据库免受实现NSF的多播组件(例如PIM)的故障的影响。尽管在图示实施例中描述了共享存储器窗口,但是应当注意,根据本发明的设检查点的方面,也可以使用其他持久存储技术和机制。
图5是根据本发明的示例性设检查点布置500的示意性框图。共享存储器窗口510优选地是活动路由处理器210上的存储器230的在属于PIM的存储器的外部的一部分。PIM 430进入共享存储器窗口510,以将选择性信息加载到检查点表512-518中。当PIM发生故障时,检查点服务器460持久地维护窗口510中存储的信息,直到PIM重启为止。另外,检查点表被周期性地从活动路由处理器拷贝到其备用路由处理器,以使得在整个活动路由处理器发生故障的情况下表可用。从而,存储了不受任何潜在故障影响的最小的多播状态集,包括多播软件组件和/或运行该组件的硬件元件。
应当注意,针对对选择性信息设检查点的一种替换方式是对PIM拓扑表435的整个内容设检查点。然而,拓扑表内容是非常易丢失的,即,它们经常改变。对于大的拓扑表,足够快地保存这些易失性内容以跟上变化并且仍然能够执行其他所需的协议处理可能是不实际的。即使这样作是实际的,由于所需的额外资源(例如存储器),保存这种大表的内容也是很昂贵的(在时间和空间上)。另一种方法是不保存任何PIM拓扑表的内容。然后,响应于控制故障和随后的控制平面的重启,拓扑表的全部内容将不得不被重新构造,这导致启用PIM的路由器有过量的控制平面和数据事件。这又在网络中产生了搅拌效应(churn),即,除了正在经历故障的一个路由器以外的其他路由器将察觉到多播路由的变化。
从而,本发明的这一方面标识需要设检查点的最少量信息,以在不丢失分组的情况下恢复,而不会在网络中产生搅拌效应,也不用对拓扑表的所有内容设检查点。通过对最少类型的信息设检查点,PIM可以重新构建其在发生故障之前的最终状态,而不必例如重新创建构建该最终状态的在先数据驱动的事件的序列。本发明的这一方面还使得在恢复后必须与邻居交换的控制消息的量最小。即,本发明通过使得路由器能够直接到达其最终状态,而不经过需要与其网络中的邻居协同操作的所有中间状态,消除了搅拌效应。为了建立该最终状态,交会点的身份必须是已知的。
a.自动RP群组到交会点映射根据本发明,被PIM设检查点并且被存储在检查点表512中的一类信息是群组地址(范围)到交会点地址的映射。需要对群组范围到交会点地址的映射设检查点是需要的,以便确保路由器200知道希望接收到去往多播群组地址的消息的每个接收者多播群组的交会点的身份。如上所述,自动RP和BSR是向计算机网络中的启用PIM的路由器连续分发群组范围和交会点之间的映射的公告协议。PIM 430被图示为对于其获知的每一新的(当前的)自动RP或BSR群组映射,对群组范围(例如,多播群组地址和前缀)和交会点地址(即,交会点的单播IP地址)设检查点。
b.数据驱动的事件广而言之,单播路由协议在其对等体之间交换控制消息,建立拓扑,并填充FIB,FIB被路由器用来经过该路由器转发单播数据流量。类似地,多播路由协议与其对等体交换控制消息,建立多播分布树,并填充MFIB(例如,通过MRIB)。然而,诸如PIM之类的多播路由协议并不仅仅基于控制平面通信来建立拓扑;相反地,PIM需要关于在数据平面中接收到的分组的信息以建立正确的转发状态,MFIB使用该状态来转发分组。换句话说,路由器必须经常检查其转发的多播分组的数据,并且还必须将在接口上多播分组的到达考虑为可能在网络中发生某种“不寻常事件”的控制事件。由数据分组触发的控制事件被称为“数据驱动的”事件。
数据驱动的事件通常特征在于路由信息存储在MFIB的多播转发条目中。多播路由协议利用指定了应当在其上接受传入多播分组的入口接口以及应当在其上转发传入的分组的一组出口接口的信息来填充MFIB条目。一个或多个控制标志可以与条目的每个接口相关联,其中控制标志指定路由器响应于传入分组的接收要采取的某些动作/行为。可以有利地用于本发明的控制标志的示例在I.Kouvelas等人于2003年2月28日提交的题为“Multicast-Routing-Protocol-Independent Realization of IP MulticastForwarding”的美国专利申请No.10/376,006中有所提供,该申请的全部内容通过引用包含于此。
例如,响应于接收到传入多播分组,路由器咨询MFIB以找到与分组的多播目的地地址相匹配的条目。匹配MFIB条目指示路由器分组应当被转发到哪些出口接口。一般来说,多播分组在单个入口接口上被接受,这单个入口接口即是代表到源的最短路径的RPF接口,并且被转发出到已表达了有兴趣接收数据流量的其他目的地(路由器)的一组出口接口。另外,匹配条目的入口接口可以具有一个或多个声明的控制标志,这些控制标志指示数据平面当在路由器处接收到多播分组时以信号告知控制平面。从而,在该入口接口上多播分组的到达是数据驱动的事件。
数据驱动的事件导致在运行在路由器和其邻居上的诸如PIM之类的多播路由协议间交换的控制消息和状态的变化。在图示的多播NSF路由器体系结构中,数据平面向控制平面通知该数据驱动的事件(经由控制信号),控制平面解释该事件以重新收敛到正确的转发状态。MFIB 480是数据平面470中的多播组件,其向控制平面410中的MRIB 450通知该数据驱动的事件。MRIB随后将该通知传递到PIM 430,PIM 430使用要由路由器转发的多播数据分组的接收来推断用于转发分组的当前网络拓扑的多个部分。由PIM接收的控制信号指示对于在路由器的特定接口处接收到的多播数据分组的特定源和群组地址,发生了数据驱动的事件。从而,多播分组的接收可被解释为修改MFIB的内容的事件信号。
从而很清楚,数据驱动的事件不构成在邻居间交换的控制状态,而是包括通过监听(snoope)经过路由器的数据平面传递的数据流量而获得的知识。当从故障中恢复时,多播控制平面组件(例如,PIM路由协议)不能获得先前由数据平面从其邻居中的对等路由协议监听得来的多播数据分组的知识。由于其必须在不依赖于数据平面的情况下重新构造状态,因此PIM对这些数据驱动的事件的发生进行记录(设检查点),从而使这些信息在NSF恢复期间可以容易得到。
根据本发明,数据驱动的事件包括被PIM 430设检查点的另一类信息。响应于接收到控制信号,PIM记录包括源、群组和入口接口的信息元组,作为适当的检查点表514-516的条目。尽管该元组是针对由MFIB报告给控制平面的每个数据驱动的事件记录的,但是应当注意,MFIB不对经过路由器传递的每一多播数据分组生成数据驱动的事件。事实上,大部分分组被转发经过路由器,而不生成事件。然而,如果条目的一个或多个控制标志指定事件已发生,则MFIB生成控制信号并将其发送到控制平面,在这里,该事件的发生被记录,除非其已经被设检查点。
在示例性实施例中,数据驱动的事件被进一步分为两类设检查点,例如,直接连接的第一跳(S,G)路由和最后一跳(S,G)SPT路由,以存储在独立的表514-516中。最后一跳SPT路由是指示从最后一跳路由器到源的最短路径树(SPT)的构造已完成并且数据正在该SPT分支上流动的信号。这些数据驱动的事件被PIM完全在当前PIM拓扑表的上下文中加以解释,即,PIM 430使用保存在拓扑表435中的附加信息来确定事件的上下文和类型。数据驱动的事件的各种类别被存储在独立的检查点表中,这主要是由于其被重放的顺序。在NSF恢复期间,检查点服务器460在略微不同的时刻重放数据驱动的事件的路由,以协调其信息流与由PIM从其他源接收的其他信息进入到PIM拓扑表中的操作。
c.反向路径转发(RPF)信息除了自动RP和数据驱动的事件信号之外,另一类可以在重启后用于PIM的信息是RPF信息,例如源和交会点的前跳路由器的地址。RPF信息包括前一跳路由器(也称为朝向源或交会点的RPF邻居)的身份。当主机想要加入朝向源或交会点的共享多播分布树的最短路径时,其需要知道向哪个前一跳路由器发送该加入请求的。在单播术语中,该路由器被称为下一跳路由器,而在多播术语中其是RPF邻居。从而,单播下一跳路由器是多播前一跳路由器,这是因为该路由器的地址不再朝向单播分组的目的地,而是朝向多播分组的源。
诸如PIM之类的多播路由协议从RIB控制平面组件获得RPF信息。然而,如果有完全的活动路由处理器故障,则例如在重启后的某段时间内,RIB 420可能是空的。在图示的多播NSF体系结构中,单播和多播组件都从活动路由处理器故障转移(failover)到备用路由处理器。换句话说,对于那些提供了用于多播NSF的RPF信息的单播协议,启用了单播NSF。这防止了网络中的其他路由器检测到单播路由变化,这种变化使其绕过故障处重新收敛并改变路由中的RPF信息,从而增大了多播环路的可能性。在恢复期间,PIM需要所有源和交会点的RPF前跳,以重建其拓扑表435的正确状态。
根据本发明的这一方面,对于出现在PIM拓扑表中的每个源或交会点地址(即,每一源和交会点的地址)以及其关联的RPF信息,可以应用最少的RPF状态。RPF信息通常包括朝向某一路由(其又可以包括会话源或交会点)的前一跳路由器的接口和地址。在图示实施例中,RPF信息包括前一跳路由器的接口、单播地址和某一度量的单播距离;该信息例如可通过设检查点或其他手段(如在线路卡上执行FIB查找)而对控制平面(PIM)可用。关于前者,RPF信息被存储在检查点表518中,直到单播路由协议重建其状态为止。这些协议随后向PIM 430通知单播表已经收敛,并且使RPF信息经由RIB 420对PIM可用。
II.恢复根据所发明的技术的另一方面,NSF恢复包括具有关联时序的多个阶段,该时序在控制平面发生故障后有效地重启路由器和构成它的多播组件以避免分组丢失。由于软件或硬件故障的不同,控制平面故障可以采取单个或多个多播组件故障的形式,从而触发路由器中的多播NSF保存转发状态。有计划的维护(如影响了多播协议正在其上运行的路由处理器的要求组件重启或故障转移的软件升级或降级)在维护期间也将触发多播NSF。
广而言之,MFIB在MFIB冻结(freeze)阶段期间进入NSF模式,该阶段响应于控制平面故障而“冻结”其转发表的内容,控制平面故障例如是PIM的故障,以及随后的MFIB和PIM之间的通信连接中断。MFIB的冻结保护了数据平面中的“陈旧”(stale)路由,从而确保了连续的多播数据沿预先存在的路由流经路由器。PIM(和任何其他发生故障的控制平面组件)随后在过程重启阶段期间的定义的时间段内,在NSF模式中重启。在设检查点的数据恢复阶段,PIM在进入协议相邻性重新构建阶段之前,重放设检查点的信息的第一部分(例如,群组范围到交会点地址映射和RPF信息),其中PIM与其对等路由协议(重新)构建控制流量通信(例如,PIM hello相邻性)。一旦重新构建了hello相邻性,PIM加入/删除(prune)消息就开始在邻居之间流动,以重新建立故障路由器上的状态并刷新邻居上的状态。注意,这种控制流量通信在整个NSF恢复期间持续。然后重新进入设检查点的数据恢复阶段,以重放信息的剩余部分(例如,数据驱动的事件)。在MFIB刷新阶段中,MFIB和PIM之间的连接(经由MRIB)被重新构建,并且MFIB转发表的内容被更新。其后,进入NSF完成阶段,其中MFIB(和PIM)转变到正常模式,从而完成NSF恢复。
图6A-6C是图示了用于实现根据本发明的NSF恢复的步骤序列的流程图。该序列开始于步骤600并且进行到步骤602,在步骤602,多播组件(例如PIM)发生控制平面故障导致MFIB和PIM之间的通信连接断开。注意,MFIB或者可以自己检测到连接断开,或者可以由MRIB通知连接断开。响应于故障,在步骤604中MFIB和MRIB都进入NSF模式。在步骤606中,MRIB暂停向MFIB分发路由更新,并且在步骤608中,MFIB“冻结”其转发表的内容,即,MFIB转发表中的所有路由被标记为“陈旧的”。注意,在进入NSF模式后,设置针对MRIB的定时器(例如,默认为180秒)。
如前所述,MFIB的冻结保护了数据平面中的陈旧路由,从而确保了多播分组继续沿预先存在的路由流经路由器。因此,在步骤610中,MFIB继续利用这些陈旧的路由经过路由器转发数据分组。在步骤612中,发生故障的组件(如PIM和/或IGMP)或者在同一活动路由处理器上,或者在备用路由处理器上,在NSF模式中重启。作为示例,PIM和/或IGMP的重启必须发生在某一时间段(例如,30秒)内。每个组件必须在该时间内重启,以使得其可以在其邻居使关于该组件的任何信息超时之前开始与这些邻居通信。
如前进一步所述,PIM在稳定状态操作期间对若干种类型的信息设检查点,所述信息包括包括自动RP群组范围到交会点地址映射、RPF下一跳信息和由数据驱动的事件告知的状态。PIM 430与检查点服务器460协同操作,以在NSF恢复序列中的不同点从存储在持久共享存储器窗口510中的每个检查点表重载(重放)选择性信息。协议处理(包括重放过程)被PIM内的单个线程执行,因此表重放顺序发生。特别地,作为其初始化过程的一部分并且在处理任何外部事件之前,PIM重放从自动RP中恢复的群组范围到交会点地址映射信息(步骤614)。只要PIM重启,该检查点表512的内容重放就会发生,从而使从邻居接收到的任何更新(例如,加入/删除消息)可被PIM用来立即开始重新建立状态。在步骤616中,PIM重放来自检查点表518的RPF信息状态。
其后,PIM开始在所有活动接口上发送PIM Hello消息,以重新构建与其邻居中的对等协议的相邻性(步骤618)。为了使多播NSF成功,这些消息必须在其PIM Hello超时(例如,在接收到最后Hello之后105秒)之前被邻居接收到。Hello消息的选项(例如生成ID)向邻居通知PIM已重启。作为响应,邻居立即向PIM发送其拓扑表的内容(例如,加入/删除状态)。通过迅速地重新构建PIM Hello相邻性和控制流量,可以在多播协议(如PIM和IGMP)中重新填充状态,而不会使邻居检测到致命问题并绕过路由器200进行路由。由于多播NSF路由器体系结构尝试在邻居使PIM Hello邻居相邻性“超时”之前,恢复正常的协议处理和状态,因此该新技术不需要改变多播路由协议,并且可以实现在网络中的路由器的任何子集上。
当在NSF模式中重启时,或者与PIM一起,或者响应于MRIB对NSF恢复的通知,IGMP 440具有一段时间(例如,60秒),在该段时间内它也恢复状态。在步骤620中,IGMP在这一期间恳求成员资格报告,并从其所有直接连接的接收者那里接收成员资格报告。在该时间段后,IGMP将已经接收到完整的当前的成员资格状态,并且在步骤622中,发送针对所有本地接收者的更新到MRIB。在步骤624中,IGMP发送消息到PIM(经由MRIB),向这些组件通知其NSF恢复时段完成。在接收到该消息时,PIM已经利用从IGMP导出的最后一跳路由信号信息填充了其拓扑表435。由于IGMP是最后一跳协议,因此最后一跳路由信号与这样的路由相关对于该路由,多播路由器200是到其直接连接的接收者的最后一跳。一旦从IGMP接收到所有最后一跳信息,PIM就知道哪些接收者已经在故障之前连接到路由器,并且可以重放与这些路由相关的数据信号。从而,在步骤626中,PIM重放来自检查点表516的最后一跳(S,G)SPT路由数据信号,从而创建了针对这些路由的最后的、正确的最后一跳状态。
在步骤628中,NSF恢复通过在PIM邻居之间的消息交换而继续,直到PIM定时器期满(例如,默认为120秒)为止,这表示从邻居接收信息所需的时间段的结束。实质上,PIM在该时间期间正常操作,从其邻居接收加入/删除消息,并从MRIB接收更新。响应于定时器的期满,PIM开始其恢复的最后阶段,这包括重放来自检查点表514的直接连接的第一跳(S,G)路由(步骤630)。这些直接连接的第一跳信号与这样的路由相关对于该路由,多播路由器200是到直接连接的源的第一跳。在重放第一跳信号后,PIM退出NSF模式(步骤632),并告知MRIB以完成其NSF恢复(步骤634)。
注意,如果PIM拓扑表435在故障(例如,只有MRIB发生故障)期间没有丢失,则PIM 430在同时满足以下两种情况之后告知其恢复(i)连接到并完全更新MRIB 450以及(ii)接收到IGMP 440被恢复的通知。然而,如果PIM拓扑表丢失,则PIM将在120秒定时器期满之后使其NSF模式超时。还注意,在MRIB的定时器时段期间,协议路由更新和成功NSF恢复的通知在控制平面组件之间重新正常分发,这些控制平面组件协同操作重新建立MRIB的路由表455。当MRIB定时器期满时(或者在多播控制平面组件已退出NSF模式之后,无论哪一个先发生都一样),MRIB恢复其正常操作,利用其表/数据库中的任何新路由更新MFIB。
例如,响应于接收到PIM已完成其NSF恢复的通知,MRIB将所有已知路由的完整更新发送到MFIB(步骤638)。在步骤640中,MFIB处理每个路由更新,将更新后的路由安装到其转发表中,并移去更新后的路由上的陈旧标志。在将路由更新的完整集合发送到MFIB之后,MRIB退出NSF模式(步骤642),并将控制平面中NSF完成的通知发送到MFIB(步骤644)。作为响应,MFIB扫描其转发表,搜索被标记为陈旧的任何剩余路由(步骤646),并且在发现这种路由之后,在步骤648中从表中将其移去。MFIB随后在步骤650中退出NSF模式。注意,如果MFIB在预定义的超时时段(例如,从NSF模式开始起15分钟)之后未接收到通知信号,从而指示全部控制平面故障,则MFIB将移去陈旧路由,并恢复已被MRIB刷新的路由(如果有的话)上的正常操作。NSF恢复序列随后在步骤652结束。
III.高可用性示例性实施例还提供了一种增强了路由器200的高可用性的多播NSF路由器体系结构。该NSF路由器体系结构平衡了路由器的功能性底层结构400,以防止控制平面410中的硬件或软件故障明显破坏数据平面470的功能,从而保护了控制故障期间的多播数据转发。为此,该体系结构使得在硬件或软件组件发生故障的同时,其他硬件或软件组件能够进入NSF模式,以在最小影响的情况下继续执行其功能。例如,如果路由处理器210被从路由器200中移去,从而使整个控制平面410停止工作,则MFIB 480和MRIB 450之间的连接被打断,并且MFIB 480进入NSF模式。如果单个组件(例如,PIM 430)发生故障但是控制平面的其他部分(包括MRIB450)保持可操作,则MRIB 450和PIM 430之间的连接被打断,并且MRIB 450将发送消息到MFIB 480,指示其进入NSF模式。
路由器的各种多播组件协同操作以能够有效地重启和恢复控制平面故障,而不会丢失数据连通性。多播NSF路由器中的恢复涉及有效地重启发生故障的多播组件(如PIM),并基于传统PIM协议消息重新建立状态,直到所有必要的信息都已被恢复为止。在该上下文中,状态的重新建立是指重新构建恢复PIM路由协议和其运行在邻居中的对等路由协议之间的通信,并在这些协议间交换多播控制消息以能够重新构造PIM拓扑表。PIM拓扑表435被图示为位于属于PIM的存储器230的一部分中,这样,对于路由协议的故障不是持久稳固的。从而,当PIM在故障后重启时,其拓扑表是空的。因此,该多播NSF设检查点和恢复技术对选择性信息进行监视和持久存储(即,设检查点),从而使信息可以在NSF恢复期间有效地被取得并被用于重新建立PIM拓扑表的内容或状态。
在NSF恢复期间,控制平面410与数据平面470断开连接(例如,在PIM和MFIB之间没有通信),这实质上“冻结”了MFIB多播转发表700的内容。即,任何发生在控制平面中的变化(例如,PIM拓扑表435和/或MRIB路由表455的变化)都不被传输到数据平面,从而,不在用于转发数据流量的当前MFIB中反映出来。例如,响应于网络状况的改变(包括来自多播转发的事件和/或单播转发的改变)而发生的对控制平面的更新在NSF恢复时段的持续时间内,不对数据平面产生作用。因此,MFIB 480利用其转发表700的被冻结内容“盲目地”经过路由器转发数据流量。
然而,某些网络状况改变(如单播转发的改变,这种情况在MFIB利用其被冻结的(“陈旧的”)转发信息来转发数据流量的期间出现)可能导致路由器的邻居改变其多播转发。影响单播转发的网络拓扑的变化(如RPF状态)可能导致邻居改变其多播转发,并开始在不同路径(链路)上发送多播数据流量。例如,邻居可能改变其多播转发,以使得经由用于特定路由的特定链路从路由器接收到的数据流量被经由该链路转发回路由器从其转发该流量的同一接口上。这导致链路上有多个多播转发者,从而可能导致生成重复的分组和/或形成多播环路。
可能导致多播环路形成的重复分组的检测一般基于来自数据平面的数据驱动的事件信号而发生在控制平面中。数据驱动的事件通常的特征在于存储在MFIB转发表700的多播转发条目中的路由信息。图7是可以有利地用于本发明的MFIB多播转发表700的示例性实施例的示意性框图。MFIB转发表700包括多个条目710,每个条目被多播路由协议(如PIM)利用路由信息(即,路由)填充。每个条目710包括包含多播群组网络(IP)地址的群组地址字段712、包含源IP地址的源地址字段714和包含指示形成前缀所需的群组(和源)地址的最高有效位的数目的掩码值的掩码字段716。
每个MFIB转发表条目710还包括指定应当在其上接受传入多播分组的入口接口的入口接口字段720,以及包含应当经由其转发传入分组的出口(转发)接口的列表的出口接口字段730。一个或多个控制标志722、732可以与条目的每个接口相关联,其中控制标志指定响应于传入分组的接收路由器要采取的某些动作/行为。例如,控制标志F 734指示与条目相匹配的接受的多播分组是否要经由关联接口转发,控制标志SP 736被用于告知路由处理器多播数据分组的到达,控制标志NS 738被用于控制在声明SP标志736时转发引擎(即,MFIB)的行为。可以有利地用于本发明的控制标志的示例在I.Kouvelas等人于2003年2月28日提交的题为“Multicast-Routing-Protocol-Independent Realization of IP MulticastForwarding”的美国专利申请No.10/376,006中有所提供,该申请的全部内容通过引用包含于此。
响应于从邻居接收到传入分组,MFIB 480对其转发表700执行查找以找到与分组的多播目的地地址相匹配的条目710的路由。匹配路由指示路由器分组应当被转发到哪些出口接口。对于某些多播路由协议(如PIM-SM和PIM-SSM),多播分组一般在单个入口接口(即,代表到源的最短路径的RPF接口)上被接受到,并且被转发出到已表现出有兴趣接收数据流量的其他目的地(路由器)的一组出口接口。匹配条目的入口接口720可以具有一个或多个声明的控制标志722,这些控制标志指示数据平面470当在路由器处接收到多播分组时告知控制平面410。从而,在该入口接口上多播分组的到达是数据驱动的事件。
数据驱动的事件导致在运行在路由器和其邻居上的多播路由协议(如PIM)间交换的控制消息和状态的变化。在示例性多播NSF路由器体系结构中,数据平面470向控制平面410通知数据驱动的事件(经由控制信号),并且控制平面解释该事件以重新收敛在正确的转发状态上。MFIB480是数据平面中的多播组件,其向控制平面中的MRIB 450通知该数据驱动的事件。MRIB随后将该通知传递到PIM 430,PIM 430使用将要由路由器转发的多播数据分组的接收来推断用于转发分组的当前网络拓扑的多个部分。由PIM接收的控制信号指示对于在路由器的特定接口处接收到的多播数据分组的特定源和群组地址712、714,发生了数据驱动的事件。从而,多播分组的接收可被解释为修改MFIB转发表700的内容的事件信号。
IV.防止多个多播转发者在示例性实施例中,如果在用于转发出路由器的出口接口上接收到分组,则数据平面(例如MFIB)将数据驱动的事件传输到控制平面(例如PIM)。该路由器和链路上其他启用PIM的路由器(包括转发分组的邻居)之间的协议协商随后被用于确定哪一个路由器应当经由接口和链路转发流量。这种协议协商发生在控制平面中,要求在所有路由器上PIM组件430都是“活的”(live)。这里,PIM采用传统的声明消息来确定哪一个路由器应当经由链路转发分组以及哪一个路由器处于故障状态。PIM声明协议协商过程是公知的,并且在先前包含的Protocol Independent Multicast-Sparse Mode(PIM-SM)Protocol Specification(Revised),因特网工程任务组,因特网草案,draft-ietf-pim-sm-v2-new-09.txt中有所描述。然而,由于数据平面在NSF恢复期间与控制平面断开连接,因此MFIB 480和PIM430之间的通信被禁用,这导致MFIB盲目转发流量并且可能生成重复分组或者甚至形成多播环路。
本发明还针对一种用于防止在多播路由器200的控制平面410中的一个或多个故障的NSF恢复期间,多个多播转发者经由计算机网络中的(例如多播分发树的)链路转发针对一条路由的多播分组的技术。如前所述,路由器的功能性底层结构400允许在运行在控制平面中的多播组件(例如PIM 430)发生故障和/或软件重启的情况下,流量转发操作在整个数据平面470中继续。另一多播组件(例如,运行在数据平面中的MFIB)被配置为防止由于网络中的路由变化而造成的多个多播转发者,这种路由变化是由于在NSF恢复期间继续使用陈旧路由而引起的。
触发防止多个多播转发者的条件是分组在匹配路由的出口接口上到达路由器。多播分组到达该出口接口是数据驱动的事件,其指示MFIB中的匹配路由和也转发分组到该接口的邻居之间的转发冲突,该冲突可能导致重复分组和/或多播环路。一般来说,数据平面向控制平面通知该数据驱动的事件(经由控制信号),并且控制平面解释该事件以重新收敛在正确的转发状态上。然而,如前所述,控制平面在NSF恢复期间与数据平面的连接断开,并且MFIB多播转发表的内容被冻结。这迫使MFIB在NSF恢复期间利用其转发表的被冻结的内容经过路由器转发数据流量。
根据所发明的技术,在发现在针对其匹配路由的路由器的出口(即,转发)接口上接收到传入多播分组后,MFIB 480暂停经由用于该路由的该接口转发多播分组。经由出口接口的多播分组转发可以通过从MFIB转发表700的路由条目中移去该接口来暂停。或者,多播分组转发可以通过移去与路由条目710的出口接口相关联的F标志734来暂停。具体而言,MFIB被配置为假定(如同以下方式动作)NSF路由器200将丢失与其邻居的PIM声明协议协商过程(而不执行选择)(如果该过程要发生的话)。因此,MFIB示例性地从该路由的转发接口730的列表中移去该出口接口。
注意,MFIB不从转发表中移去整个路由,而是只移去该路由上的接口的转发状态。这允许邻居临时代表多播分布树上的“活”分支。在该路由的其他出口接口上的转发将继续,而不被中断。而且,路由器的“下游”接收者将继续从其他多播转发者(邻居)接收分组,直到PIM声明协议协商过程发生为止。实质上,由于控制平面已发生故障并且不能立即与邻居协商正确的转发,因此MFIB单方面暂停针对该路由经由该出口接口转发分组,以避免可能生成重复分组和/或形成多播环路。
在NSF和控制平面恢复之后,PIM 430和MRIB 450将其完整转发信息发送到MFIB 480,以更新转发表700中的陈旧路由。由于PIM可能还未看见指示多播环路形成的数据事件,因此完整的更新后的路由信息将可能包含指定MFIB应当在该出口接口上转发(即使该数据事件已发生)的状态。当MFIB恢复该接口上的转发时,在链路上的PIM邻居之间,对于该路由触发(发起)完整的PIM声明协议协商消息交换,以选择将经由链路转发分组的路由器(多播转发者),从而解决路由器之间的转发冲突。
图8是图示了用于实现本发明的防止多个多播转发者的技术的步骤序列的流程图。该序列开始于步骤800,并且进行到步骤802,在步骤802,在路由器的线路卡接口(在数据平面中)接收到传入多播分组。MFIB对其转发表执行查找,将条目的现有路由与分组相匹配,并且在步骤804中,确定分组是在被用作针对该路由的出口接口的线路卡接口上接收到的。作为响应,MFIB生成数据驱动的事件信号,并将其发送到控制平面(步骤806)。示例性地,事件信号是通过在分组经由其而到达的出口接口上声明F和NS标志734、738而触发的。
在步骤808中,多播分组随后被转发(“踢”)到数据平面中的转发处理器(FP Rx 280),该转发处理器在步骤810中检查该路由是否是陈旧的(当NSF开始时,所有路由都被标记为陈旧的)。如果路由不是陈旧的(表明NSF恢复不是活动的,并且路由已被更新),则在步骤824中,控制平面(例如PIM)发起路由器和转发分组的邻居之间的声明协议协商过程,以解决转发冲突,即,确定哪一个路由器应当经由接口转发流量。该序列随后在步骤826结束。然而,如果路由是陈旧的(从而表明NSF恢复是活动的,并且由于控制平面故障路由还未更新),则MFIB从用于该路由的传出(出口)接口列表中删除该出口接口(步骤814),从而防止了路由器经由该接口转发任何进一步的分组到链路上。从而,将传入分组转发到链路的邻居是将分组转发到链路的唯一多播路由器/转发者。
当NSF恢复随后结束时,数据平面和控制平面之间的通信被重新构建。在步骤816中,MFIB转发表中的陈旧路由被利用来自恢复后的控制平面(PIM)的“新”路由更新,并且陈旧位被从路由中移去。在步骤818中,在出口接口处接收到下一传入多播分组,并且在步骤820中,确定更新后的路由是否仍然指示经由该接口转发分组。如果不是,则序列在步骤826结束;否则,MFIB在步骤822中生成数据驱动的事件信号,并将其发送到控制平面(PIM)。作为响应,PIM发起路由器和转发分组的邻居之间的声明协议协商过程,以解决转发冲突(步骤824)。该序列随后在步骤826结束。
尽管示出并描述了一种用于防止在多播路由器的控制平面中的一个或多个故障的NSF恢复期间,多个多播转发者经由链路转发针对一条路由的多播分组的技术的实施例,但是应当理解,在本发明的精神和范围内可以进行各种其他适应和修改。例如,应当注意,该新技术可以应用于任何只使用每路由单个入口接口,并且采用控制平面转发者选择的多播路由协议。而且,所发明的技术可以应用于用于PIM的NSF的各种实现方式,例如用于PIM-SM和PIM源特定多播(PIM-SSM)的NSF。
有利地,本发明消除了对修改传统多播路由协议的需要,并且可以实现在网络中的路由器的任何子集上。即,新型NSF设检查点和恢复技术确保了在邻居检测到致命问题并使多播相邻性和路由状态超时(从而导致多播连通性的丢失)之前,可以在多播路由协议拓扑表中重新建立状态。另外,多播转发状态不被修改或移去,直到路由器的路由协议被完全恢复并且再次与邻居同步为止。本发明区别于先前的NSF解决方案的不同之处在于其通过协调各种多播组件之间的恢复,保护了多播数据传送,而不是单播数据传送。
前述描述针对本发明的特定实施例。然而,应当清楚,可以对所述实施例进行其他变化和修改,同时获得其优点中的某些或全部。例如,可以明确地预期到,本发明的教导(包括这里描述的各种多播组件)可以实现为软件(包括具有运行在计算机上的程序指令的计算机可读介质)、硬件、固件或其组合。另外,应当理解,这里描述的数据结构可包括附加信息,同时仍然在本发明的范围内。因此,该描述仅被认为是示例性的,而不是限制本发明的范围。因此,权利要求的目的是覆盖所有这些在本发明的真实精神和范围内的变化和修改。
权利要求
1.一种适合于在从计算机网络内的多播路由器的控制平面故障的不停止转发(NSF)恢复期间保护多播数据转发的系统,所述系统包括第一多播组件,其适合于在所述路由器的适当操作期间对选择性信息设检查点,以用于随后在NSF恢复期间重新建立拓扑表的内容时取得并使用该信息;以及一个或多个第二多播组件,其适合于与所述第一多播组件协同操作以提供一种NSF恢复技术,该技术使得所述网络中的路由器能够有效地重启和从所述控制平面故障中恢复,而不丢失数据连通性。
2.如权利要求1所述的系统,其中所述第一多播组件是运行在所述路由器的控制平面中的多播路由协议。
3.如权利要求2所述的系统,其中所述多播路由协议是协议无关多播(PIM)路由协议。
4.如权利要求3所述的系统,其中所述拓扑表是PIM拓扑表。
5.如权利要求1所述的系统,其中所述被设检查点的选择性信息包括群组范围到交会点地址映射信息,该信息为希望接收到去往多播群组地址的消息的每个接收者多播群组提供了交会点的身份。
6.如权利要求1所述的系统,其中所述被设检查点的选择性信息包括导致了在所述路由器和其网络中的邻居之间交换的控制消息和状态的变化的数据驱动的事件信息。
7.如权利要求1所述的系统,其中所述被设检查点的选择性信息包括反向路径转发信息,该信息指定所述网络中源和交会点的前一跳路由器的地址。
8.如权利要求1所述的系统,其中所述第一多播组件是运行在所述路由器的控制平面中的协议无关多播(PIM)路由协议,所述一个或多个第二多播组件是运行在所述路由器的数据平面中的多播转发信息库(MFIB)。
9.如权利要求8所述的系统,其中所述NSF恢复包括具有关联时序的多个阶段。
10.如权利要求9所述的系统,其中NSF恢复的第一阶段包括MFIB冻结阶段,该阶段使MFIB转变到NSF模式,并冻结MFIB转发表的内容以保护所述数据平面中的陈旧路由,从而确保多播数据继续沿预先存在的路由流经所述路由器。
11.如权利要求10所述的系统,其中NSF恢复的第二阶段包括过程重启阶段,该阶段在定义的时间段内,在NSF模式中重启发生故障的控制平面组件。
12.如权利要求11所述的系统,其中所述发生故障的控制平面组件是所述PIM路由协议。
13.如权利要求12所述的系统,其中NSF恢复的第三阶段包括设检查点的数据恢复阶段,该阶段重放所述被设检查点的选择性信息的第一部分。
14.如权利要求13所述的系统,其中所述被设检查点的选择性信息的第一部分包括群组范围到交会点地址映射和反向路径转发信息。
15.如权利要求13所述的系统,其中NSF恢复的第四阶段包括协议相邻性重新构建阶段,该阶段在返回到所述第三阶段以重放所述被设检查点的选择性信息的剩余部分之前与所述计算机网络的邻居路由器中的对等路由协议建立控制流量通信。
16.如权利要求15所述的系统,其中所述被设检查点的选择性信息的剩余部分包括数据驱动的事件信号。
17.如权利要求15所述的系统,其中NSF恢复的第五阶段包括MFIB刷新阶段,该阶段建立MFIB和PIM之间的通信连接,并且更新所述MFIB转发表的内容。
18.如权利要求17所述的系统,其中NSF恢复的第六阶段包括NSF完成阶段,该阶段使MFIB和PIM转变到正常模式,从而完成NSF恢复。
19.一种用于在从计算机网络内的多播路由器的控制平面故障的不停止转发(NSF)恢复期间保护多播数据转发的方法,所述方法包括以下步骤在所述路由器的适当操作期间对选择性信息设检查点,以用于随后在NSF恢复期间重新建立拓扑表的内容时取得并使用该信息;以及根据NSF恢复技术重启发生故障的多播控制平面组件,该技术使所述网络中的路由器能够有效地从所述控制平面故障中恢复,而不丢失数据连通性。
20.如权利要求19所述的方法,其中所述重启步骤包括提供具有关联时序的多个NSF恢复阶段的步骤。
21.一种适合于在从计算机网络内的多播路由器的控制平面故障的不停止转发(NSF)恢复期间保护多播数据转发的装置,所述装置包括用于在所述路由器的适当操作期间对选择性信息设检查点,以用于随后在NSF恢复期间重新建立拓扑表的内容时取得并使用该信息的装置;以及用于根据NSF恢复技术重启发生故障的多播控制平面组件的装置,该技术使所述网络中的路由器能够有效地从所述控制平面故障中恢复,而不丢失数据连通性。
22.一种包含可执行程序指令的计算机可读介质,所述可执行程序指令用于在从计算机网络内的多播路由器的控制平面故障的不停止转发(NSF)恢复期间保护多播数据转发,所述可执行程序指令包括用于执行以下步骤的程序指令在所述路由器的适当操作期间对选择性信息设检查点,以用于随后在NSF恢复期间重新建立拓扑表的内容时取得并使用该信息;以及根据NSF恢复技术重启发生故障的多播控制平面组件,该技术能够使所述网络中的路由器能够有效地从所述控制平面故障中恢复,而不丢失数据连通性。
23.一种用于防止多个多播转发者在多播路由器的控制平面故障的不停止转发(NSF)恢复期间经由计算机网络中的链路转发针对一条路由的多播分组的方法,所述方法包括以下步骤利用路由填充所述路由器的多播转发表的条目,每个路由条目指定用于在所述路由器处接受传入多播分组的入口接口和用于从所述路由器转发所述传入分组的出口接口列表;在所述路由器的一个接口上接收所述传入多播分组;将所述多播转发表的路由条目与所述传入多播分组相匹配;发现对于所述匹配路由条目,所述接口是所述出口接口列表的出口接口;以及暂停经由所述出口接口转发所述传入多播分组,从而防止多个多播转发者在NSF恢复期间经由所述链路转发针对所述路由的多播分组。
24.如权利要求23所述的方法,其中所述匹配步骤包括以下步骤由多播转发信息库(MFIB)对所述多播转发表执行查找操作,以找到与所述传入分组的多播目的地地址相匹配的路由条目。
25.如权利要求24所述的方法,还包括以下步骤配置MFIB以以下方式动作如果所述路由器与所述路由器的邻居的声明协议协商过程要发生的话,则所述路由器将丢失该过程。
26.如权利要求23所述的方法,其中所述暂停步骤还包括以下步骤从所述多播转发表的匹配路由条目的出口接口列表中移去所述出口接口。
27.如权利要求26所述的方法,还包括以下步骤在NSF恢复之后利用完全的转发(路由)信息更新所述多播转发表;恢复经由所述出口接口转发后续传入多播分组;以及发起针对所述路由的声明协议协商过程,以解决邻居路由器和所述多播路由器之间的转发冲突。
28.一种被配置为防止多个多播转发者在多播路由器的控制平面故障的不停止转发(NSF)恢复期间经由计算机网络中的链路转发针对一条路由的多播分组的系统,所述系统包括具有多个条目的所述路由器的多播转发表,每个条目指定用于在所述路由器处接受传入多播分组的入口接口和用于从所述路由器转发所述传入分组的出口接口列表;以及所述路由器的多播转发信息库(MFIB),所述MFIB被配置为将在所述路由器的接口上接收到的传入多播分组与所述多播转发表的条目相比较以找到匹配条目,并且在发现对于所述匹配条目,所述接口是所述出口接口列表的出口接口后,暂停经由所述出口接口转发所述传入多播分组,从而防止多个多播转发者在NSF恢复期间经由所述链路转发针对所述路由的多播分组。
29.如权利要求28所述的系统,还包括所述路由器的数据平面,所述数据平面被配置为在运行在所述控制平面中的多播组件存在故障和软件重启两种情况之一的情况下,允许数据流量转发操作经过所述路由器继续进行。
30.如权利要求29所述的系统,其中所述多播组件是协议无关多播(PIM)路由协议模块。
31.如权利要求29所述的系统,其中所述MFIB运行在所述数据平面中,以避免由于在NSF恢复期间出现的网络中的路由变化而导致可能生成重复分组并形成多播数据环路。
32.如权利要求29所述的系统,其中在所述出口接口上传入多播分组的接收是数据驱动的事件,该事件指示所述匹配条目和所述路由器的转发所述分组到所述出口接口的邻居之间的转发冲突。
33.一种被配置为防止多个多播转发者经由计算机网络中的链路转发针对一条路由的多播分组的系统,所述系统包括具有功能性底层结构的多播路由器,所述功能性底层结构在运行在所述路由器的控制平面中的第一多播组件存在故障的情况下,允许数据流量转发操作在所述路由器的整个数据平面上继续进行;以及运行在所述数据平面中的第二多播组件,所述第二多播组件被配置为防止由于在所述控制平面故障的不停止转发(NSF)恢复期间出现的网络中的路由变化而出现多个多播转发者。
34.如权利要求33所述的系统,其中所述第一多播组件是协议无关多播(PIM)路由协议模块,所述第二多播组件是多播转发信息库(MFIB)。
35.如权利要求34所述的系统,还包括具有多个条目的所述路由器的多播转发表,每个条目指定用于在所述路由器处接受传入多播分组的入口接口和用于转发来自所述路由器的传入分组的出口接口列表。
36.如权利要求35所述的系统,其中所述MFIB被配置为将在所述路由器的接口上接收到的传入多播分组与所述多播转发表的条目相比较以找到匹配条目,并且在发现对于所述匹配条目,所述接口是所述出口接口列表的出口接口后,从所述多播转发表的匹配条目的出口接口列表中移去所述出口接口,从而防止在NSF恢复期间出现经由所述链路针对所述路由的多个多播转发者。
37.如权利要求33所述的系统,其中触发防止多个多播转发者的条件是多播分组在与所述分组相匹配的路由的出口接口上到达所述路由器。
38.如权利要求37所述的系统,其中在所述出口接口上的多播分组的到达是数据驱动的事件,该事件指示所述匹配路由和所述路由器的转发所述分组到所述出口接口的邻居之间的转发冲突。
39.一种适合于防止多个多播转发者在多播路由器的控制平面故障的不停止转发(NSF)恢复期间经由计算机网络中的链路转发针对一条路由的多播分组的装置,所述装置包括用于利用路由填充所述路由器的多播转发表的条目的装置,每个路由条目指定用于在所述路由器处接受传入多播分组的入口接口和用于从所述路由器转发所述传入分组的出口接口列表;用于在所述路由器的一个接口上接收所述传入多播分组的装置;用于将所述多播转发表的路由条目与所述传入多播分组相匹配的装置;用于发现对于所述匹配路由条目,所述接口是所述出口接口列表的出口接口的装置;以及用于暂停经由所述出口接口转发所述传入多播分组,从而防止多个多播转发者在NSF恢复期间经由所述链路转发针对所述路由的多播分组的装置。
40.如权利要求39所述的装置,其中所述用于暂停的装置还包括用于从所述多播转发表的匹配路由条目的出口接口列表中移去所述出口接口的装置。
41.一种包含可执行程序指令的计算机可读介质,所述可执行程序指令用于防止多个多播转发者在多播路由器的控制平面故障的不停止转发(NSF)恢复期间经由计算机网络中的链路转发针对一条路由的多播分组,所述可执行程序指令包括用于执行以下步骤的程序指令在所述路由器的接口上接收所述传入多播分组;将所述多播转发表的路由条目与所述传入多播分组相匹配;发现对于所述匹配路由条目,所述接口是所述出口接口列表的出口接口;以及暂停经由所述出口接口转发所述传入多播分组,从而防止多个多播转发者在NSF恢复期间经由所述链路转发针对所述路由的多播分组。
42.如权利要求41所述的计算机可读介质,其中所述用于暂停的一个或多个程序指令还包括用于执行以下步骤的一个或多个程序指令从所述多播转发表的匹配路由条目的出口接口列表中移去所述出口接口。
全文摘要
多播不停止转发(NSF)路由器体系结构增强了计算机网络中多播路由器(400)的高可用性。该路由器体系结构还在路由器(400)的控制平面(410)中的一个或多个故障的NSF恢复期间,保护了经过数据平面(470)的多播数据转发。路由器(400)的各种多播组件协同操作以提供一种多播NSF体系结构的设检查点和恢复技术,该技术能够有效地重启和恢复控制平面故障,而不会丢失数据连通性。另外,一种技术防止了在多播路由器(400)的控制平面(410)中的一个或多个故障的NSF恢复期间,多个多播转发者经由计算机网络中的链路转发针对一条路由的多播分组。
文档编号G01R31/08GK1969491SQ200580019458
公开日2007年5月23日 申请日期2005年7月20日 优先权日2004年7月23日
发明者科特·J·温迪石, 伟逊·李, 伊斯迪奥斯·库韦拉斯 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1