用于ip多播的协议无关实现的方法和设备的制作方法

文档序号:7605079阅读:168来源:国知局
专利名称:用于ip多播的协议无关实现的方法和设备的制作方法
技术领域
本发明涉及数据联网,并且在一个实施例中,更具体而言,本发明涉及数据联网协议。
背景技术
传统的因特网协议(IP)通信允许一台主机向单个主机(单播传输)或向所有主机(广播传输)发送分组。为了支持对提供涉及向多个主机的高数据速率传输的应用(例如音频和视频会议呼叫、音频广播和视频广播)的需求,已经发展到第三路由技术,即多播路由。在多播路由中,一台主机向所有主机的子集发送分组,以作为组传输。多播路由协议已被开发,以通过使分组复制最小化来节省带宽。为了实现最高效的数据传递,多播分组在网络中去往多个接收者的路径分散的点上被复制,而不是在源处被复制。
多播路由协议很大程度上依赖于支持单播路由的相同底层因特网基础设施。一个关键差异在于,单播路由一般基于分组的目的地IP地址,而多播路由协议却通常基于组地址并且可能基于分组源的地址来执行转发判决,所述组地址标识出一组预期的受者。
但是,除了所使用的地址的本质之外,单播和多播操作之间存在重要差异。单播转发是一个较简单的过程,其涉及正被转发的分组的目的地IP地址的路由查找。该查找返回下一跳节点和为获得下一跳而使用的转发接口。单播转发过程的一个非常重要的特征在于,在被称为FIB的预先计算的数据库中执行路由查找的可能性。至于所涉及的转发过程,在路由查找期间,可以认为FIB是静态的。经过较长时间,FIB的内容将由于路由协议传达出由网络连接和配置的改变所引起的更新而发生改变。
但是,如下假设能够高度有益于路由器体系结构的模块化假设FIB在特定的路由查找期间保持静态,并不会响应于将被转发的分组的接收而改变。高速转发引擎执行路由查找,并基于查找结果而采取行动。路由处理器通过填充FIB并随网络连接和配置改变而修改其内容来实现控制平面的功能。
但是,相比之下,多播路由实现方式当前无法利用这种类型的模块化。现在使用的大多数多播路由协议都是数据驱动的。它们使用将被转发的多播分组的接收来推断当前网络拓扑中被用于转发分组的部分,所述分组包括已经推断出其接收拓扑的那些分组。多播分组的接收可以被理解为用于修改多播FIB(MFIB)的内容的事件信号。所产生的MFIB修改会影响对接收到的导致修改的分组的处理。
从而,取代多播转发引擎和操作多播协议的路由处理器之间脆弱的模块化,代之以这些元件之间高度复杂的交互。转发引擎维持对协议状态的某种感知能力。而且,影响多播路由状态的分组不能立即被转发引擎单独地完全处理,而是可以首先被传输到路由处理器。
这种控制和转发之间分离的缺乏使多播转发引擎的设计极大地复杂化。此外,在多播路由协议操作中的改变需要改变转发引擎的实现方式,而不仅仅是改变路由处理器。而且,经由通常相对较低带宽连接向路由处理器传输某些多播分组的需求增大了分组处理延迟。
我们需要改良的系统和方法,用于处理数据驱动的协议,例如多播路由协议。

发明内容
根据本发明的实施例,提供了用于实现数据驱动协议的改进系统和方法。在一个实施例中,提供了改进的多播路由协议的实现方式。通过将功能强大而简单的应用程序接口(API)用于模块间通信,从而提供多播转发和控制元件之间的分离。API是多播路由协议无关的,并且可以被用于表示任意现有多播协议的转发状态。从而使有效的平台专用实现方式更便利。
本发明的第一方面提供了一种用于操作转发引擎以处理多播分组的方法。该方法包括提供转发引擎可访问的多播转发表;在多播转发表的条目中提供多播操作标志;在接收到多播分组之后,基于多播分组的地址,在多播转发表中识别匹配条目;以及在不知道多播协议状态的情况下,基于对识别出的条目中的一个或多个多播操作标志的检查,来选择对多播分组的处理。
本发明的第二方面提供了一种操作网络设备以转发信息的方法。该方法包括提供数据驱动的数据路由协议;采用转发引擎来基于由转发引擎维护的至少一个标志选择对接收到的分组的处理,其中转发引擎不知道数据路由协议的协议状态;以及从转发引擎向控制平面处理器发信号,以协助在控制平面处理器处维护数据路由协议的协议状态。
本发明的第三方面提供了用于处理多播分组的装置。该装置包括转发引擎,其1)存储具有保存着多播操作标志的条目的多播转发表,2)在接收到多播分组时,基于分组的地址在多播转发表中识别匹配条目,以及3)在不知道多播路由协议状态的情况下,选择对所述多播分组的处理;以及路由处理器,该路由处理器在模块上不同于维护协议状态的转发引擎。
通过参考说明书的其余部分以及附图,可以进一步理解本发明的本质和优点。


图1示出了根据本发明一个实施例的网络设备。
图2示出了根据本发明一个实施例的线路卡。
图3示出了根据本发明一个实施例的多播FIB(MFIB)。
图4示出了根据本发明一个实施例的图3中的MFIB中的一个条目。
图5是示出根据本发明一个实施例的多播转发引擎的操作的状态图。
具体实施例方式
本发明可以被应用于数据网络,包括采用数据驱动协议的数据网络。在这里将描述的特定实现方式中,本发明可以被用于实现多播路由方案。
多播路由原理对多播路由基本原理的简单论述将有助于引入本发明的概念。在以下文献中可以找到多播路由协议操作的更多细节,这里为了所有用途通过参考而并入了这些文献的全部内容。
Deering,“Host Extensions for IP Multicasting”,请求注解(Requestfor Comments)1112,因特网工程任务组,1989年8月。
Fenner,“Internet Group Management Protocol,Version 2”,请求注解2236,因特网工程任务组,1997年11月。
Cain等人,“Internet Group Management Protocol,Version 3”,请求注解3376,因特网工程任务组,2002年10月。
Bates等人,“Multiprotocol Extensions for BGP-4”,请求注解2283,因特网工程任务组,1998年2月。
Estrin等人,“Protocol Independent Multicast-Sparse Mode(PIM-SM)Protocol Specification”,请求注解2362,因特网工程任务组,1998年6月。
Handley等人,“Bi-directional Protocol Independent Multicast(BIDIR-PIM)”,因特网工程任务组因特网草案,2002年6月。
Fenner等人,“Protocol Independent Multicast-Sparse Mode(PIM-SM)Protocol Specification(revised)”,因特网工程任务组因特网草案,2002年3月。
Adams等人,“Protocol Independent Multicast-Dense Mode(PIM-DM)Protocol Specification”,因特网工程任务组因特网草案,2002年10月。
Holbrook等人,“Source Specific Multicast for IP”,因特网工程任务组因特网草案,2002年11月。
以上协议文献中的很多都涉及被称为协议无关多播(PIM)的多播协议族。本发明将参考PIM的实现方式来描述,但是并不局限于这种特定的多播协议族。例如,本发明可以被应用于距离向量多播路由协议(DMVPRP)、多播扩展OSPF(MOSPF)和其他多播协议。
IP多播将单个信息流同时传递到多个受者。多播分组在网络中路径分散的点处被复制以实现到多个接收者的有效数据传递。PIM被用于动态创建多播分配树,以在限制分配的同时确保到预期接收者的分配,从而使不在源和接收者之间的路径上的网段不会负担不必要的流量。
多播操作基于组的概念。多播组是表示出有兴趣接收特定数据流的一组任意的接收者。这样的组没有物理或地理上的边界。有兴趣接收流到特定组的数据的主机使用因特网组管理协议(IGMP)加入该组。
IP多播地址或其一部分指定特定组。例如在IPv4和IPv6中,预留特定地址范围以用于指定多播组。
具有多播能力的路由器创建分配树,该分配树控制IP多播流量通过网络所采取的路径,以便将流量传递到所有接收者。两种基本类型的多播分配树是源树和共享树。
在源树中,多播流量源是根,并且分枝构成通过网络去往接收者的生成树。这还被称为最短路径树(SPT),因为该树通常使用通过网络在源和接收者之间的最短路径。特定的SPT用(S,G)地址来指代,其中S是源的IP地址,而G是受者组的组地址。
与其根位于源的源树不同,共享树使用单个公共根,这个根位于网络中某个选定点上。该共享根被称为集合点(RP)。由于定向到特定多播组的所有流量源都使用公共的共享树,因此共享树用写为(*,G)形式的地址来标识。在这种通配符的符号中,*指代所有源,而G代表多播组。
源树和共享树都是自由环路的。消息优选地只在树的分枝处被复制。多播组的成员可以在任意时刻加入或离开;因此分配树被动态更新。当在特定分枝中的所有活动的接收者都停止请求特定多播组的流量时,路由器从分配树中剪掉这个分枝,并停止沿这个分枝向下转发流量。
在单播路由中,流量根据预先计算的路由而沿着从源到目的地主机的单个路径通过网络被转发。单播路由器通常不考虑源地址;它只考虑目的地地址,以及它将如何朝着目的地的方向转发流量。路由器通过其路由表扫描以找到对目的地地址的匹配(在很多情况下,实际上是对目的地地址的前缀构成部分的匹配),然后在去往目的地的方向上将单播分组的单个拷贝从正确的接口转发出去。
相比之下,在多播转发中,源将流量发送到由多播组地址代表的一组任意的主机。多播路由器必须确定哪个方向是上游方向(朝着树的根的方向),以及哪个是下游方向(或多个下游方向)。如果存在多条下游路径,路由器则复制分组,并基于接收者的需求沿着适当的下游路径向下转发分组。转发多播流量远离根(而不是去往接收者)被称为反向路径转发(RPF)。
“RPF故障”是多播路由操作中的一个重要概念。单播路由技术被用于确定来自接收者的路径,或返回树根的中间节点。经由来自树根的路径接收到的分组适合于进一步向下游转发。在其他未连接到该路径的接口上接收到的分组将不会被转发,并且它们的接受被称为RPF故障。以这种方式区分上游和下游流量被称为RPF检查,并且有助于确保分配树保持自由环路。
为了识别正确的反向路径,PIM可以采用多种单播路由协议,包括增强型内部网关路由协议(EIGRP)、开放最短路径优先(OSPF)、边界网关协议(BGP)等等。PIM通常使用由这种单播路由协议开发的单播路由表来执行RPF功能,而不是构建独立的多播路由表。
存在各种PIM转发模式,包括PIM密集模式、PIM稀疏模式和双向PIM。现在将论述这些示例性的PIM转发模式。源特定多播(SSM)也被本发明的实施例所包含。
PIM密集模式最初使用推模型(push model)将多播流量覆盖(flood)到网络中的每个角落。不具有下游邻居(接收者)的边缘路由器修剪返回分配树。该覆盖修剪过程例如每三分钟重复一次。路由器通过经由覆盖和修剪机制接收数据流来积累关于分配树形状的状态信息。这些数据流包含源和组信息,以使下游路由器能够建立它们的多播转发表。PIM密集模式只支持源树,不支持共享树。
PIM稀疏模式使用拉模型(pull model)来传递多播流量。只有具有已经明确请求数据的活动接收者的网段将接收流量。PIM稀疏模式使用共享树,最初还建立源树以提高效率。源首先注册到RP,然后将数据从源转发到RP,并向下转发到接收者。
更具体而言,源的直接邻居(也被称为共享介质的指定路由器或DR)得知源的传输,并封装源流量以用于转发到RP。最后一跳路由器(即在共享树上直接连接到一个或多个接收者的路由器)在接收到共享树上通过RP来自特定源的数据分组时,得知该特定源。最后一跳路由器随后在朝着源的方向上发送PIM加入消息。
当接收者想要加入共享树时,它将IGMP消息发送到其直接邻居。在这些直接邻居中的DR通过通知该接收者有兴趣接收沿该共享树向下流动的多播分组,并在需要时向RP发送加入消息而作出反应。DR也可以代表接收者进行切换以经由SPT加入该源。PIM加入消息然后将在朝着源的方向上被发送。
双向PIM是对已开发出的PIM协议的增强以协助有效的多对多通信。使用双向模式,多播组可以仅仅利用最少量的附加开销适应任意的源数目。
在PIM稀疏模式中创建的共享树是单向的。源树必须被创建为将数据流带入RP(共享树的根),然后它可以沿着分枝被向下转发到接收者。源数据无法朝着RP沿共享树向上流动。相比之下,在双向模式中,流量只沿着以RP为根的双向共享树被路由。来自源的数据可以朝着RP沿共享树向上流动,然后沿着共享树的其他分枝向下流动到接收者。
多播路由体系结构图1示出了可以应用本发明的实施例的网络设备100。线路卡102包括用于耦合到物理介质的网络接口。如下所述,在线路卡102内还会发现转发智能。这里只示出了两个线路卡102,但是应当理解,实际上在同一网络设备100中可能存在非常大量的线路卡。线路卡102通过用于传输分组的高速背板104而互连。路由处理器106负责控制平面功能。路由处理器106具有到高速背板104的相对低速连接。
路由处理器106的部分功能可以由包括存储在程序存储器108中的指令的软件来实现。但是,程序存储器108只是可以存储在实现本发明的实施例时所使用的软件的计算机可读存储介质的一个示例。其他示例例如包括硬盘驱动器、CD-ROM、闪存等等。计算机可读存储介质的另一示例是在网络上运载软件的信号。
图2示出了根据本发明一个实施例的线路卡102的内部结构。内部接口202耦合到背板104以提供到网络设备100的剩余部分的连接。外部接口204提供到各种物理网络介质的访问。外部接口204可以是以太网接口、SONET接口、拨号接口、电缆数据接口、DSL接口等。虽然只示出了两个外部接口204,但是可以存在任意数目N个外部接口。
转发引擎206对单个分组执行转发判决,即,转发引擎206选择接收到的分组将被转发到的下一节点,以及为了转发到该选出的下一节点,分组将被传输到的网络设备100的线路卡/接口。在采用分布式体系结构的某些实现方式中,转发引擎操作可以被划分到接收分组的线路卡(“入口线路卡”)和在朝着分组目的地的方向上中继分组的线路卡(“出口线路卡”)中。
分组存储器208提供对分组的中间存储。程序存储器210可以被用于存储在实现转发引擎206中有用的软件指令。用于实现转发引擎206的任意部分的指令可以被存储在任意计算机可读存储介质中,如以上参考图1中的程序存储器108所论述的。在执行转发判决时,转发引擎206参考多播转发表MFIB 212。
根据本发明的实施例,用于网络设备100的多播路由操作的控制和转发平面保持分离。路由处理器106操作控制平面,并且无需处理将被转发的数据分组就能够维护对多播协议上下文的感知能力。为了支持多播路由操作,路由处理器106维护多播路由协议拓扑表(MRPTT)。当需要协议操作时,转发引擎206(在所有线路卡中被复制)通过识别特定的MFIB条目以及路由处理器106应该得知的相关接口,来以信号通知路由处理器106适当地更新其协议上下文。信令机制优选地使去往路由处理器106的信令最小化。转发引擎206将转发信息丢失或不完全的分组保存在MFIB中,直到这些转发信息在MFIB中变为可用。为了达到MFIB信令的要求并且实现正确的多播路由协议操作,路由处理器106适当地注解MFIB 212的内容。路由处理器106和转发引擎206在模块上彼此不同,经由修改和对MFIB 212的内容的监控进行交互。
转发引擎206采用多播路由协议无关状态转换方案来确定每个接收到的多播分组的处理。给定的多播分组可以按照需要被转发、丢弃、保存或复制到主机应用。转发引擎206在不知道协议上下文的情况下进行操作,基于由路由处理器106控制的MFIB条目对各个分组执行判决。转发逻辑被相信包含所有已知的未经修改的多播路由协议。
这样,多播转发引擎的实现方式可以独立于多播路由协议中的变化而被移植、定制、优化、分布和发展。此外,多播路由协议本身可以通过改变路由处理器的操作而被改变,并且无需跟随这里所述的状态转换而对转发引擎的操作进行任何改变。
转发引擎的操作在继续论述之前,有必要理解MFIB 212的结构。图3示出了根据本发明一个实施例的MFIB 212的结构。MFIB具有树结构,以协助找到对组和多播分组的源地址的最好匹配。在单播路由表中,用于匹配目的的条目通常是地址前缀。每个前缀由地址和掩码表示,所述掩码指示地址中的多少个最高有效位构成用于匹配目的的前缀。当单播分组将被转发时,将目的地地址与转发表中的前缀条目相比较,以找到具有最长前缀的条目,所述最长前缀仍旧匹配目的地地址的相应最高有效位。为了执行这种匹配,目的地地址和在表中将被匹配的地址值都与在最低有效位(未构成前缀的一部分)上包括“1”值的掩码进行AND操作。
图3中的MFIB以类似方式工作。但是,这里匹配是用于组前缀(如由组地址和掩码所指示的)和源地址的组合。为了匹配的目的,源地址可以被视为组地址的扩展。对组合组和源条目的匹配被看作比对不需要源匹配的(*,G/M)条目的匹配更长(因此“更好的”)的匹配。
图3示出了从根据本发明一个实施例的MFIB中选出的条目。为了协助最长前缀匹配,最长匹配将是树中最深的匹配条目。第一条目302对应于组地址224.1.0.0,其中前面16位是用于匹配目的的前缀。源地址对于匹配目的是“无关紧要的”。在树中更深的一层上发现了两个从条目302悬挂的条目304和306。条目304具有组地址224.1.1.1,而条目306具有组地址224.1.1.2。对于条目304和306两者,条目的全部32位都被用于匹配目的,同时源地址保持“无关紧要”。从条目306悬挂着两个其他条目308和310。条目308和310共享与306相同的组地址,但是条目308指定源地址10.1.1.3,而条目310指定源地址20.1.3.5。对于条目308和310,级联的源和组地址的全部64位被用于匹配目的。当然应当理解,大多数MFIB实现方式包括非常多的条目,图3中示出的有限数目的条目仅仅出于使说明清晰的目的。
根据本发明的实施例,在MFIB中的每个条目可以有被设置或清零的各种标志。这些标志中的一些应用于全部条目。其他标志专用于条目和网络设备100的指定接口之一。图4示出了特定条目的细节。可以为全部条目设置或清零指定为IA、DS、DSS、C和X的标志。为特定接口设置和清零被指定为SP、A、F、NS、NSS和IC的标志。接口可以包括物理接口、IP层接口或任意到软件创建的隧道的接口。
现在将简要论述标志的意思。这后面将跟随在各种多播路由情形中转发引擎状态机的操作示例。
AA标志指示与条目匹配的多播分组是否将在特定接口上被接受。
FF标志指示与条目匹配的已被接受的多播分组是否将在特定接口上被转发。但是,如果分组在该接口到达,F标志则将被忽略。
SPSP标志被用于以信号通知路由处理器数据分组已到达。然后路由处理器也将得知该数据分组的源、组和接收接口。路由处理器可以基于数据分组到达的通知和当前协议上下文的知识的组合来确定它应该更新多播协议状态、更新MFIB等。会在路由处理器的一部分上导致这种行为的数据分组到达事件的示例例如包括在PIM密集模式的接口上来自新的源的多播分组的到达、RPF故障等等。转发引擎本身无法得知协议状态,但是知道它应该在何时通过使用SP标志以信号通知路由处理器。
当另一数据分组到达时(这通常会导致一个信号),SP标志已被发送的事实避免其他信号被发送到路由处理器。因此,用于该(*,G/M)或源、组和接口的组合(S,G,I)的信号被过滤,直到路由处理器在适当条目的特定接口上清零SP标志。路由处理器将选择它在何时清零SP标志。在所述实现方式中,SP标志是唯一一个由转发引擎设置并由路由协议清零的标志。所有其他所述标志都由路由协议来设置和清零。
DS和NS这些标志被路由处理器所设置和清零,以在设置SP标志的过程中控制转发引擎的行为。DS标志被设置和清零,以从总体上控制用于条目的信令。NS标志被用于使特定接口上的DS值无效。如果DS(用于匹配条目)异或NS(用于在匹配条目上的接收接口)被设置,则信令被制止。如果DS和NS两者被设置或两者都不被设置,则信令可以出现。
DSS和NSS路由处理器使用这些标志来有选择地强制信令在新创建的源条目上发生,而不是在匹配(*,G/M)条目上发生。这可以发现新源并且适当地创建源专用的状态信息。然后分组应该被保存,以使其能够由转发引擎基于对新条目的匹配而被重新处理。对于全部条目,DSS标志被设置和清零。NSS标志被设置为使用于特定接口的DSS值无效。
C路由处理器将在它想要转发引擎检查分组源是否处于直接连接中的某些情况下设置该标志。这与某些多播路由情况相关,例如当该网络设备是在共享介质上用于检测PIM稀疏模式分布网络中的新源的指定路由器(DR)时。
IC在某些情况下,对于在网络设备100上运行的主机应用,应该执行分组复制。IC标志用于辅助确定应该在何时执行这种复制,并应该在何时经由栈将其发送到应用。例如,网络设备100工作在某些情况下,以用于转发分组并在应用层上处理分组的内容。一个示例是RP发现协议的操作以自动发现RP。
IAIA标志在PIM双向模式中非常有用。IA标志提示转发引擎查找父条目,以判断即使对于特定接口的A标志未被设置,也是否在该接口上接受多播分组。
XX标志出于创建条目的目的而被单独设置。例如,在配置时,路由处理器将对标识出在PIM密集模式下工作的组的所有条目设置X标志。
图5示出了根据本发明的一个实施例,用于多播转发引擎的状态转换图。图5描述了对单个接收到的多播分组的处理。多播分组的可能处理包括丢弃该分组、转发该分组、保存该分组以使路由处理器能够在转发之前调整控制状态,或者执行分组复制以待本地主机应用所使用。下面将参考若干示例性的多播路由情形来描述操作。
由于状态转换图是交叉的,因此在MFIB标志设置和转发条目的创建和删除之间存在复杂的交互关系。当存在需要被保存在条目上的信息(标志)时,则条目存在。如果不存在标志,则条目被删除。如果在之前没有设置标志的情况下,一个标志被设置,则一个条目或条目上的接口被创建。
PIM密集模式路由创建第一示例将集中于接收来自新源的PIM密集模式多播分组的路由器。在状态502处,转发引擎测试接收到的分组实际上是否是IGMP控制分组。由于该分组实际上是来自新的PIM密集模式源的多播分组,因此测试结果为否,并且处理前进至状态504。状态504在MFIB中查找接收到的多播分组的(S,G)地址以找到匹配。由于这是接收自该源的第一个多播分组,因此不存在(S,G)条目,并且匹配过程前进至状态506。
状态506尝试在MFIB中找到对(*,G/M)条目的最长匹配。实际上存在对在多播路由协议被配置时已创建(通过在其上设置X标志)的条目的匹配。该条目标识出工作在PIM密集模式下并具有类似行为的所有组或组的范围。如果不存在条目,则在状态508处丢弃分组。由于实际上存在匹配(*,G/M)条目,因此处理前进至状态510。状态510测试对于接收到该多播分组的接口是否在匹配的条目上设置了IC标志。该匹配条目不具有接口信息,并且所有接口标志被清零,因此处理前进至状态512以测试C标志。C标志也被清零,因此处理前进至状态514。
状态514测试DS和NS标志,它们控制是否可以发生SP信令。由于这两个标志都被清零,因此到达状态516。状态516测试DSS和NSS标志。这些标志控制SP标志是否应该设置在匹配条目上,或被设置在出于信令目的而可能需要被创建的(S,G)条目上。在匹配条目上的信令将不会传输在接收到的多播分组中固有的全部(S,G,I)信息。在这种情况下,DSS和NSS标志都被清零,因此处理前进至状态518,该状态检查SP标志是否被设置在接收该多播分组的接口上。由于这是来自该源的第一个分组,因此不存在在前信号,从而SP标志被清零。实际上,(S,G)条目完全不存在就意味着其所有标志都被暗中清零。
这导致了状态520,该状态在对应于接收到的分组的(S,G)地址的条目上为接收接口设置SP。由于这是在从未存在的条目上的从未存在的接口,因此条目和接口被创建,作为设置标志的一部分。路由处理器因此被告知数据到达事件以及接收到的分组的全部(S,G,I)信息。然后在状态522处,分组被保存。接收到的分组被转发引擎所保存,并与(S,G)条目和接口相关联。保存的原因在于路由处理器还未以关于如何转发分组的信息填充MFIB条目。还不存在具有设置在新条目上的A和F标志的任何接口。分组被保存,以给路由处理器提供进一步填充新的MFIB条目的机会。一旦路由处理器已经清零SP标志,则将指示它已经调整了MFIB的内容,并以信号通知转发引擎是时候基于新信息(下面将描述)来转发分组了。
具有相同(S,G)地址并到达相同接口的后续分组将在状态504处匹配,并将以相同方式前进通过状态510、512、514和516,但是将在状态518处肯定地测试,从而跳过信令状态,直接进入状态522处分组的保存。这是关于转发引擎如何从到达路由处理器中过滤不必要的信令的一个很好的示例。路由处理器已经得知新的源并且不需要被重新通知。
现在,让我们考虑路由处理器对SP标志的设置的反应细节。路由处理器现在得知数据分组已经从源S到达,分组要去往组G,并且它到达接口I。已知G在对应于PIM密集模式的范围中。注意,转发引擎不知道这是密集模式的分组,或者G对应于密集模式的组。路由处理器检查分组到达的接口是否处于朝着源的反向路径上。假设该接口处于去往源的反向路径上,并且RPF检查已经通过,路由器则确定该分组应该被转发到下游。为了实现这种下游转发,路由处理器在网络设备中的所有MFIB上填充新的(S,G)条目。在接收接口上A标志被设置。F标志在已知被配置为用于多播路由的所有接口上被设置。设置F标志将涉及创建新接口,这是因为之前出于设置SP标志的目的而仅仅创建了接收接口。
为该(S,G)条目指定缺省的信令行为,从而DS标志被保持清零。由于路由处理器将想要知道分组何时到达我们通常执行转发的接口,因此该行为适合于密集模式的转发接口。但是,路由处理器不想要被以信号告知到达接受接口的所有新分组。因此在接受接口上,路由处理器设置NS标志。NS标志改变了在接受接口上的缺省条目行为,并防止转发引擎以信号通知接收到的分组。这是过滤不必要的信令的另一示例。
而且,为条目设置DSS标志。这实质上表示到达转发接口的分组将在匹配条目上被发送。但是,它们将不被保存。在DSS/NSS标志后面的基本原理在于,如果目标条目已经存在,那么路由处理器已经对其填充了转发信息。从而,将不会对到达错误接口的分组感到惊奇,并将不需要保存这些分组。
在以用于控制转发和信令所需的所有标志填充了条目之后,路由处理器以信号通知转发引擎这种情况。它是通过清零由转发引擎在接收到初始分组时设置的SP标志来完成的。最后的条目(假设三个多播接口)是(S,G)设置标志DSSIF1设置标志A、F、NSIF2设置标志FIF3设置标志F当转发引擎发现SP标志已被清零时,它将释放在设置了SP标志的接口上排队的所有保存的分组。这些分组将再次穿过图5的状态转换图的简化版本。该简化版本只执行对(S,G)条目的匹配的查找,检查在接收接口上是否设置了A标志,如果设置则转发分组。A标志在状态524处被测试,并且转发发生在状态526处。转发行为意味着转发引擎在除了接收接口之外的每个在匹配条目上设置了F标志的接口上输出分组的拷贝。
到达这个接受接口(也被称为RPF接口)并匹配已经建立的(S,G)条目的后续分组将穿过状态502、504、510、512和514。但是,由于NS标志在RPF接口上被设置,因此处理在状态514之后前进至状态524。状态524确定A标志实际上被设置在接受接口上,然后分组在状态526处在适当的接口上被转发。
密集模式的RPF故障如上所述,RPF故障表示分组到达来自该源和组的分组不想要到达的接口。在这种情况下,路由处理器应该被以信号通知采取适当的协议行为,以可能停止转发错误分组的节点。让我们假设分组到达在以上示例中创建的条目的错误接口。
在状态504处,(S,G)条目被匹配。IC和C标志在状态510和512处被确定清零。状态514确定DS在条目上被清零,而NS在该接口上被清零。但是,对于该条目DSS被设置,并且对于该接收接口NSS被清零。因此,在状态516之后,处理前进至状态528,该状态测试SP标志是否在接收接口上被设置。由于SP标志实际上在该接口上被清零,因此处理前进至状态530,该状态设置SP标志。然后,到达A标志被测试的状态524。由于A标志被清零(这不是接受接口),因此分组在状态532处被丢弃。
由于SP标志已被设置,因此路由处理器现在知道对于特定接口和特定(S,G)地址的分组到达事件。结合当前多播协议上下文,路由处理器确定分组不应该已被发送。响应于这种情况,路由处理器采取行动,发送适当的PIM控制消息以停止错误的传输,然后清零SP标志。如果在SP标志被清零之前,在同一接口上到达更多RPF故障分组,那么由于状态524将在不穿过状态530的情况下跟随状态528,因此这些分组将在不进一步以信令通知的情况下以被丢弃告终。这是信号过滤的另一示例。
双向PIM转发双向PIM不具有数据驱动的协议事件。路由处理器以A、F和IA标志填充MFIB,以使路由器在双向共享树内适当地工作。
双向PIM操作的一个方面在于指定转发器(DF)选择机制的使用,该机制用于在每条链路上选择用于特定责任的单个路由器。选出的路由器被称为DF。该DF负责从链路上拾取分组,并将它们在朝着集合点(RP)的方向上向上游转发。而且,如果对于已寻址到分组的组已接收到合适的加入消息,则DF负责将来自RP的行进分组向下游转发到同一链路。
对于可能的双向模式组的特定范围,在网络中每条链路的所有DF选择均已完成之后,并在任意源开始发送或任意接收者加入组之前,DF选择结果被反映在MFIB中。因此,所有路由器都具有一个(*,G/M)条目,该条目在路由器已经赢得DF选择以朝着RP转发分组的所有接口上都设置了A。F标志被设置在指向RP的接口上。该接口的A标志也被设置以适应于来自RP的下游流量。
当源开始发送时,数据分组将在每个路由器上匹配(*,G/M)条目,并在去往RP的所有通路上被转发。没有信号产生,因此不需要涉及路由处理器。参考图5,转发引擎在到达状态526之前穿过状态502、504、506、510、512、514和524,以在集合点的方向上转发分组。当一个接收者加入该组时,它将IGMP加入消息(Join)发送到该接收者附近的最后一跳路由器。在该第一跳路由器内,IGMP加入消息被传输到路由处理器,该路由处理器通过创建(*,G)条目来做出反应,该条目在面向接收者的接口上设置了F标志。由于用于该组的分组仍旧需要在朝着RP的方向上被转发,因此F标志也被设置在面向RP的接口上。
新的(*,G)条目是之前论述的(*,G/M)条目的“子条目”。该新条目不具有任何已经设置了A标志的接口。相反,对于该条目设置了IA标志。这指示转发引擎继承接受来自父条目的信息。因此,当在状态524处遇到匹配数据分组时,由于出现被设置的IA标志,因此将参考(*,G/M)条目以判断分组是否应该被接受以用于转发或丢弃。而且,该路由器沿着树在朝着集合点的方向上向下一跳路由器中继加入消息。该下一跳路由器也创建类似的(*,G)条目。
PIM稀疏模式源到集合点的注册当源开始向共享介质进行发送时,在共享介质上的路由器之一被指定为封装源的流量,并将其传输到集合点以用于在稀疏模式的共享树上执行分配。为了适合这种类型的操作,这样指定的路由器的路由处理器将在已为其配置了稀疏模式操作的(*,G/M)条目上设置C标志。当源的第一个稀疏模式多播分组被接收时,转发引擎穿过状态502,在状态504处发现没有(S,G)匹配,在状态506处发现(*,G/M)匹配,在步骤510处未发现IC标志被设置,但是在512处发现C标志被设置。然后在状态534处,转发引擎判断该分组是否已通过直接连接被接收,该直接连接指示该路由器实际上将负责封装和隧道操作。如果它还未经由直接连接被接收,处理则前进至状态514。
如果它是直接连接,SP标志则在用于接收接口的(S,G)条目上被测试。当然,由于该条目还未存在,因此认为SP标志未被设置,并且处理前进至状态520,在该状态中,转发引擎在新创建的(S,G)条目上设置用于接收接口的SP。然后该分组在状态522处被保存。
路由处理器现已得知一事件已在对应于稀疏模式操作的组地址上以信号被告知,该路由处理器通过在新的(S,G)条目上添加虚拟接口来做出反应。该虚拟接口将被用于以隧道将分组发送到集合点,从而A标志被设置在该接口上。NS标志也可以被设置以进一步过滤信号。然后SP标志被清零,并且转发引擎通过使保存的分组穿过状态转换图来进行响应。A标志将已被设置在接收接口上,并且F和NS标志将已被设置在实现隧道的虚拟接口上,因此分组将通过隧道而到达集合点。在该(S,G)条目的接口上接收到的后续分组也将以这种方式来通过隧道发送。
各种情形接收到的IGMP消息退出状态502以到达状态536。状态536测试这些消息是否来源于内部。如果它们来源于内部,则在状态508处丢弃它们,因为它们不需要进一步的处理。如果它们不是来源于内部,则状态540将它们发送到工作在路由处理器上的适当的主机应用,以用于处理。
在网络设备动作以转发数据并在应用层上处理同样数据的某些情形中,转发引擎将做出分组的内部拷贝,并将其发送到主机应用。路由处理器对于该行为所需条目设置IC标志。这样,如果在状态510处确定IC标志被设置,则状态542判断分组是否来源于内部。如果分组来源于内部,则常规操作继续转换到状态512。如果分组还未来源于内部,则状态544在继续状态512处的常规操作之前,将分组发送到主机应用。
应该理解,这里所描述的示例和实施例仅仅出于示例性目的,并且本领域技术人员将想到根据本发明的各种修改和改变,并且这些修改和改变将被包括在本申请的精神和范围内以及所附权利要求及其等同物的全部范围内。例如,本发明不仅涉及多播协议的处理,还可被用于简化其他数据驱动的协议(例如ARP解析和NAT(网络地址转换))的实现方式。
权利要求
1.在网络设备中,一种用于操作转发引擎以处理多播分组的方法,所述方法包括提供所述转发引擎可访问的多播转发表;在所述多播转发表的条目中提供多播操作标志;在接收到多播分组之后,基于所述多播分组的地址,在所述多播转发表中识别匹配条目;以及在不知道多播协议状态的情况下,基于对所述识别出的条目中的一个或多个所述多播操作标志的检查,来选择对所述多播分组的处理。
2.如权利要求1所述的方法,其中所述选出的处理属于包括以下操作的组转发所述分组、保存所述分组以及丢弃所述分组。
3.如权利要求1所述的方法,其中所述多播分组的所述地址包括(S,G)或(*,G)地址。
4.如权利要求1所述的方法,还包括基于对一个或多个所述多播操作标志的检查,向在模块上不同于接收到所述多播分组的所述转发引擎的路由处理器发信号。
5.如权利要求4所述的方法,其中以信号通知的步骤包括设置所述匹配条目的信号出现标志。
6.如权利要求4所述的方法,其中以信号通知的步骤包括创建对应于所述多播分组的(S,G)地址的条目;以及设置所述被创建条目的信号出现标志。
7.如权利要求1所述的方法,其中提供多播操作标志的步骤包括提供对所述多播转发表的被选条目专用,但对所述网络设备的接口通用的第一多播操作标志;以及提供对所述被选条目专用,并且对所述网络设备的被选接口专用的第二多播操作标志。
8.如权利要求1所述的方法,其中在模块上不同于所述转发引擎的路由处理器设置和清零所述多播操作标志中被选的多播操作标志,以实现多播路由协议。
9.如权利要求1所述的方法,其中在模块上不同于所述转发引擎的路由处理器设置和清零所述多播操作标志中被选的多播操作标志,以过滤从所述转发引擎去往所述路由处理器的信令。
10.如权利要求1所述的方法,其中所述多播路由协议包括PIM。
11.一种操作网络设备以转发信息的方法,所述方法包括提供数据驱动的数据路由协议;采用转发引擎来基于由所述转发引擎维护的至少一个标志,选择对接收到的分组的处理,其中所述转发引擎不知道所述数据路由协议的协议状态;以及从所述转发引擎向控制平面处理器发信号,以协助在所述控制平面处理器处维护所述数据路由协议的协议状态。
12.如权利要求11所述的方法,其中所述数据路由协议包括多播路由协议。
13.如权利要求11所述的方法,其中采用所述转发协议的步骤包括查询转发表。
14.如权利要求11所述的方法,还包括使用所述控制平面处理器而基于协议上下文来填充所述转发表。
15.在网络设备中,一种用于操作转发引擎以处理多播分组的计算机程序产品,所述计算机程序产品包括提供所述转发引擎可访问的多播转发表的代码;在所述多播转发表的条目中提供多播操作标志的代码;在接收到多播分组之后,基于所述多播分组的地址,在所述多播转发表中识别匹配条目的代码;在不知道多播协议状态的情况下,基于对所述识别出的条目中的一个或多个所述多播操作标志的检查,来选择对所述多播分组的处理的代码;以及存储所述代码的计算机可读存储介质。
16.如权利要求15所述的计算机程序产品,其中所述选出的处理属于包括以下操作的组转发所述分组、保存所述分组以及丢弃所述分组。
17.如权利要求15所述的计算机程序产品,其中所述多播分组的所述地址包括(S,G)或(*,G)地址。
18.如权利要求15所述的计算机程序产品,还包括基于对一个或多个所述多播操作标志的检查,向在模块上不同于接收到所述多播分组的所述转发引擎的路由处理器发信号的代码。
18.如权利要求18所述的计算机程序产品,其中发信号的所述代码包括设置所述匹配条目的信号出现标志的代码。
19.如权利要求18所述的计算机程序产品,其中发信号的所述代码包括创建对应于所述多播分组的(S,G)地址的条目的代码;以及设置所述被创建条目的信号出现标志的代码。
20.如权利要求15所述的计算机程序产品,其中提供多播操作标志的所述代码包括提供对所述多播转发表的被选条目专用,但对所述网络设备的接口通用的第一多播操作标志的代码;以及提供对所述被选条目专用,并且对所述网络设备的被选接口专用的第二多播操作标志的代码。
21.如权利要求15所述的计算机程序产品,其中在模块上不同于所述转发引擎的路由处理器设置和清零所述多播操作标志中被选的多播操作标志,以实现多播路由协议。
22.如权利要求15所述的计算机程序产品,其中在模块上不同于所述转发引擎的路由处理器设置和清零所述多播操作标志中被选的多播操作标志,以过滤从所述转发引擎去往所述路由处理器的信令。
23.如权利要求15所述的计算机程序产品,其中所述多播路由协议包括PIM。
24.一种用于操作网络设备以转发信息的计算机程序产品,所述计算机程序产品包括提供数据驱动的数据路由协议的代码;采用转发引擎来基于由所述转发引擎维护的至少一个标志,选择对接收到的分组的处理的代码,其中所述转发引擎不知道所述数据路由协议的协议状态;从所述转发引擎向控制平面处理器发信号,以协助在所述控制平面处理器处维护所述数据路由协议的协议状态的代码;以及存储所述代码的计算机可读存储介质。
25.如权利要求24所述的计算机程序产品,其中所述数据路由协议包括多播路由协议。
26.如权利要求24所述的计算机程序产品,其中采用所述转发协议的所述代码包括查询转发表的代码。
27.如权利要求24所述的计算机程序产品,还包括使用所述控制平面处理器而基于协议上下文来填充所述转发表的代码。
28.用于处理多播分组的装置,所述装置包括转发引擎,其1)存储具有保存着多播操作标志的条目的多播转发表,2)在接收到多播分组时,基于所述分组的地址在所述多播转发表中识别匹配条目,以及3)在不知道多播路由协议状态的情况下,选择对所述多播分组的处理;以及路由处理器,该路由处理器在模块上不同于维护所述协议状态的所述转发引擎。
29.如权利要求28所述的装置,其中所述选出的处理属于包括以下操作的组转发所述分组、保存所述分组以及丢弃所述分组。
30.如权利要求28所述的装置,其中所述多播分组的所述地址包括(S,G)或(*,G)地址。
31.如权利要求28所述的装置,还包括其中所述转发引擎向接收到所述多播分组的所述路由处理器发信号。
32.如权利要求28所述的装置,其中所述转发引擎通过设置所述匹配条目的信号出现标志来发信号。
33.如权利要求33所述的装置,其中所述转发引擎通过以下方式来发信号创建对应于所述多播分组的(S,G)地址的条目,并且设置所述被创建条目的信号出现标志。
34.如权利要求28所述的装置,其中所述多播操作标志包括对所述多播转发表的被选条目专用,但对所述网络设备的接口通用的第一多播操作标志,以及对所述被选条目专用,并且对所述网络设备的被选接口专用的第二多播操作标志。
35.如权利要求28所述的装置,其中所述路由处理器设置和清零所述多播操作标志中被选出的多播操作标志,以实现多播路由协议。
36.如权利要求28所述的装置,其中在模块上不同于所述转发引擎的所述路由处理器设置和清零所述多播操作标志中被选的多播操作标志,以过滤从所述转发引擎去往所述路由处理器的信令。
37.如权利要求28所述的装置,其中所述多播路由协议包括PIM。
38.在网络设备中,用于操作转发引擎以处理多播分组的装置,所述装置包括用于提供所述转发引擎可访问的多播转发表的装置;用于在所述多播转发表的条目中提供多播操作标志的装置;用于在接收到多播分组之后,基于所述多播分组的地址,在所述多播转发表中识别匹配条目的装置;以及用于在不知道多播协议状态的情况下,基于对所述识别出的条目中的一个或多个所述多播操作标志的检查,来选择对所述多播分组的处理的装置。
39.用于操作网络设备以转发信息的装置,所述装置包括用于提供数据驱动的数据路由协议的装置;用于采用转发引擎来基于由所述转发引擎维护的至少一个标志选择对接收到的分组的处理的装置,其中所述转发引擎不知道所述数据路由协议的协议状态;以及用于从所述转发引擎向控制平面处理器发信号,以协助在所述控制平面处理器处维护所述数据路由协议的协议状态的装置。
全文摘要
本发明提供了用于实现数据驱动协议的系统和方法。在一个实施例中,提供了多播路由协议的实现方式。通过将功能强大而简单的应用程序接口(API)用于模块间通信,从而提供多播转发和控制元件之间的分离。API是多播路由协议无关的,并且可以被用于表示任意现有多播协议的转发状态。从而使有效的平台专用实现方式更便利。
文档编号H04L12/18GK1754353SQ200480005028
公开日2006年3月29日 申请日期2004年1月23日 优先权日2003年2月28日
发明者艾斯德尔·库韦拉斯, 洛伦佐·维西萨诺, 托尼·斯佩克曼 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1