一种协议无关组播PIM的选举方法和装置与流程

文档序号:18570815发布日期:2019-08-31 01:16阅读:269来源:国知局
一种协议无关组播PIM的选举方法和装置与流程
本申请涉及通信
技术领域
,特别是涉及一种协议无关组播PIM的选举方法和装置。
背景技术
:IP(InternetProtocol,因特网协议)组播能够显著节省网络带宽,广泛应用于视频点播、远程教育和监控等领域。PIM(Protocol-IndependentMulticast,协议无关组播)是一种使用最为广泛的组播路由协议。PIM主要包括以下两种模式:PIM-DM(ProtocolIndependentMulticast-DenseMode,协议无关组播—密集模式)和PIM-SM(ProtocolIndependentMulticast-SparseMode,协议无关组播—稀疏模式)。PIM借助RPF(ReversePathForwarding,逆向路径转发)机制实现对组播报文的转发。组播路由器在接收到组播报文后,根据报文的源地址确定其正确的入接口(即指向组播源方向的接口,称为RPF接口)和下游方向,然后将组播报文通过出接口沿着远离组播源的下游方向转发。在PIM域(即支持PIM协议的组播路由器所组成的网络)中,如果在一个共享网段内存在多台组播路由器,则相同的组播报文可能会被重复发送到该网段。参照图1,示出了现有的一种PIM域的网络结构示意图。其中,接收者可以接收到来自RTA和RTB转发的相同的组播报文,为了避免这种情况,PIM引入了ASSERT(断言)机制。在组播路由器从出接口(属于非RPF接口)接收到组播报文时,需要将该组播报文上送CPU,以触发ASSERT选举,选举成功的组播路由器可以继续转发该组播报文,而选举失败的组播路由器不再转发该组播报文。在PIM协议中,为了触发ASSERT选举,组播路由器需要将从出接口接收到的组播报文上送CPU,然而,在组播数据流数量较多时,不仅会增加CPU处理组播报文的负担,还会导致传输组播报文造成的带宽资源的浪费。技术实现要素:鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的协议无关组播PIM的选举方法和装置,能够减轻CPU的负担,以及减少传输组播报文占用的带宽资源。为了解决上述问题,本申请实施例公开了一种协议无关组播PIM的选举方法,应用于PIM路由器,所述方法包括:判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口;其中,所述出接口为所述PIM路由器中组播转发表中的出接口,且所述出接口用于沿着远离组播源的下游方向转发组播报文;若存在,则通过所述出接口发送断言Assert报文。另一方面,本申请实施例公开了一种协议无关组播PIM的选举装置,应用于PIM路由器,所述装置包括:判断模块,用于判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口;其中,所述出接口为所述PIM路由器中组播转发表中的出接口,且所述出接口用于沿着远离组播源的下游方向转发组播报文;发送模块,用于在所述判断模块判断出所述PIM路由器存在PIM邻居数量大于等于2的出接口时,通过所述出接口发送Assert报文。本申请实施例包括以下优点:本申请实施例在PIM路由器的出接口还没有接收组播报文之前,即可提前触发Assert选举;其中,所述出接口为所述PIM路由器中组播转发表中的出接口,且所述出接口用于沿着远离组播源的下游方向转发组播报文。具体地,通过判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口,若存在,可以认为在当前PIM域中可能出现重复转发多份组播报文的情况,则可以触发Assert选举,通过所述出接口发送Assert报文。由此,本申请实施例可以不用等待PIM路由器的出接口接收到组播报文,进而不用将出接口接收到组播报文上送CPU,从而可以减轻CPU的负担,以及减少传输组播报文占用的带宽资源。此外,在实际应用中,有些PIM路由器并不支持将出接口接收到的组播报文上送CPU的功能,因此,这种情况下将无法触发Assert选举,导致共享网段中仍然会转发重复的组播报文。而本申请实施例不用将出接口接收到的组播报文上送CPU,即可触发Assert选举,从而可以实现在PIM路由器不支持将出接口接收到的组播报文上送CPU的功能的情况下,也可以触发Assert选举,增加了触发Assert选举的适用范围和灵活性。附图说明图1是现有的一种PIM域的网络结构示意图;图2是本申请其中一个实施例的一种协议无关组播PIM的选举方法的步骤流程图;图3是本申请的一种PIM域的网络结构示意图;图4是本申请另一实施例的一种协议无关组播PIM的选举方法的步骤流程图;图5是本申请其中一个实施例的一种协议无关组播PIM的选举装置的结构框图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。参照图2,示出了本申请其中一个实施例的一种协议无关组播PIM的选举方法的步骤流程图,所述方法应用于PIM路由器,具体可以包括如下步骤:步骤201、判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口;其中,所述出接口为所述PIM路由器中组播转发表中的出接口,且所述出接口用于沿着远离组播源的下游方向转发组播报文;步骤202、若存在,则通过所述出接口发送断言Assert报文。本申请实施例可应用于运行PIM协议的PIM路由器,以解决在现有的PIM协议中,触发ASSERT选举会增加PIM路由器的CPU负担以及造成带宽资源浪费的问题。其中,所述PIM协议具体可以包括PIM-DM、PIM-SM以及PIM-SSM(ProtocolIndependentMulticastSource-SpecificMulticast,协议无关组播-指定源组播)等模式。为便于描述,本申请实施例均以PIM-DM模式为例进行描述,PIM-SM、PIM-SSM等模式的应用场景相互参照即可。在具体应用中,只有在一个共享网段内存在3台或3台以上的PIM路由器时,才有可能出现重复转发多份组播报文的情况。因此,本申请实施例通过判断PIM路由器的出接口对应的PIM邻居数量,确定是否需要触发Assert选举,而不用等待PIM路由器的出接口接收到组播报文。其中,所述出接口具体可以为所述PIM路由器中组播转发表中的出接口,且所述出接口可以用于沿着远离组播源的下游方向转发组播报文。以图1为例,PIM路由器RTA可以从指向组播源方向的接口(入接口)接收来自组播源的组播报文,通过查询RTA中存储的组播转发表,可以得到与该组播报文对应的出接口,然后将组播报文通过出接口沿着远离组播源的下游方向转发,如向RTC方向进行转发。可以理解,在实际应用中,在出接口或者入接口出现故障或者组播路由发生变化时,相对于当前的组播源,所述PIM路由器中原本的出接口有可能成为入接口,或者原本的入接口也有可能成为出接口。本申请实施例可以在所述PIM路由器的出接口接收到组播报文之前,判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口,如果存在,则说明所述PIM路由器和其另外两个PIM邻居有可能组成图1所示的网络结构,则可能会出现重复转发组播报文的情况。因此,本申请实施例在判定所述PIM路由器存在PIM邻居数量大于等于2的出接口时,即可提前触发Assert选举,不用等待出接口接收到组播报文,进而可以不用将出接口接收到组播报文上送CPU进行分析,从而可以减轻CPU的负担,以及减少传输组播报文占用的带宽资源。在本申请的一种可选实施例中,所述步骤201,具体可以包括如下步骤:步骤2011、通过查询已建立的PIM邻居表,确定所述PIM邻居表中PIM邻居数量大于等于2的接口;在本申请实施例中,运行PIM协议的PIM路由器可以定期向其所在的共享网段以组播方式发送PIMHello报文,以发现和维护邻居信息。为了可以获取PIM路由器出接口对应的PIM邻居数量,本申请实施例建立的PIM邻居表中可以包括PIM邻居的地址信息和该PIM邻居对应的接口之间的映射关系。可选地,所述方法还可以包括如下步骤:接收来自PIM邻居的PIMHello报文,所述PIMHello报文中携带有所述PIM邻居的地址信息;在所述PIM邻居表中查询是否存在与所述地址信息相匹配的邻居表项,若不存在,则建立所述PIM邻居的地址信息与接收所述PIMHello报文的接口之间的映射关系;将所述映射关系作为邻居表项加入所述PIM邻居表中。在具体应用中,PIM路由器在接收到来自PIM邻居的PIMHello报文后,提取所述PIMHello报文携带的所述PIM邻居的地址信息,在已建立的PIM邻居表中查询是否存在与所述地址信息相匹配的邻居表项,若不存在,则说明所述PIM路由器还未学习到该PIM邻居,则可以将该PIM邻居学习到PIM邻居表中。具体地,可以建立所述PIM邻居的地址信息与接收所述PIMHello报文的接口之间的映射关系,并且将所述映射关系作为邻居表项加入所述PIM邻居表中。由此,通过查询PIM邻居表,即可得知所述PIM路由器通过哪个接口学习到了哪些PIM邻居。在本申请的一种应用示例中,参照图3,示出了本申请的一种PIM域的网络结构示意图。假设PIM路由器RTA从接口Eth0/1接收到来自PIM路由器RTB和RTC的PIMHello报文,其中分别携带有RTB的IP地址11.1.1.2和RTC的IP地址11.1.1.3,RTA通过查询自身的PIM邻居表,发现并未存储RTB和RTC的地址信息,则可以建立RTB的IP地址11.1.1.2和接口Eth0/1的映射关系,以及RTC的IP地址11.1.1.3和接口Eth0/1的映射关系,并且将建立的映射关系加入PIM邻居表。同样地,RTA可以从接口Eth0/0接收到来自PIM路由器RTD的PIMHello报文,也可以将RTD加入PIM邻居表。参照表1,示出了本申请的一种PIM路由器RTA的PIM邻居表的具体示意。表1接口PIM邻居Eth0/111.1.1.2Eth0/111.1.1.3Eth0/011.1.1.4由此,PIM路由器RTA可以通过表1所示的PIM邻居表维护与接口对应的PIM邻居关系,进而可以通过表1获取其中PIM邻居数量大于等于2的接口,如接口Eth0/1。步骤2012、依据所述PIM邻居数量大于等于2的接口,查询所述组播转发表;步骤2013、在所述组播转发表中存在与所述PIM邻居数量大于等于2的接口相匹配的出接口时,判定所述PIM路由器存在PIM邻居数量大于等于2的出接口。在通过查询PIM邻居表得到PIM邻居数量大于等于2的接口之后,可以在组播转发表中进行查询,以确定PIM邻居数量大于等于2的接口中哪些是PIM路由器的出接口。在所述PIM协议为PIM-DM模式时,所述组播转发表可以在PIM路由器从指向组播源的入接口接收到组播报文时所建立,所述组播转发表中可以包括组播源地址、组播组地址、入接口和出接口列表之间的对应关系。其中,入接口为RPF接口,出接口列表中可以包括所述PIM路由器除入接口之外的其他所有接口。在所述PIM协议为PIM-SM或者PIM-SSM模式时,所述组播转发表可以在PIM路由器从指向组播源的入接口接收到组播报文时所建立,或者,还可以在入接口接收到组播报文前,根据接收到的PIM协议报文所建立。可以理解,本申请实施例对于建立所述组播转发表的具体时机不加以限制。在本申请的一种应用示例中,以PIM-DM模式为例,如图3所示,假设PIM路由器RTA从接口Eth0/0接收到来自组播源S(组播源地址为10.1.1.1)向组播组G(组播组地址为225.1.1.1)发送的组播报文,记为报文(S,G),也即(10.1.1.1,225.1.1.1)。RTA接收到该组播报文后,首先对该组播报文执行RPF检查,由于接收该组播报文的接口Eth0/0为指向组播源S的接口,则RPF检查通过,可以向组播转发表中与关键字(S,G)相匹配的出接口列表中的所有出接口发送该组播报文。如果组播转发表中不存在与关键字(S,G)相匹配的转发表项,则在组播转发表中新建关键字(S,G)对应的转发表项。其中,所述转发表项具体可以包括:组播源地址、组播组地址、入接口和出接口列表。在本应用示例中,假设RTA的组播转发表中不存在关键字(10.1.1.1,225.1.1.1)对应的转发表项,则可以新建关键字(10.1.1.1,225.1.1.1)对应的转发表项,参照表2,示出了本申请的一种在RTA的组播转发表中新建转发表项的具体示意。其中,SrcAddr表示组播源地址,GrpAddr表示组播组地址,IIF表示入接口,OIF表示出接口列表。表2SrcAddrGrpAddrIIFOIF10.1.1.1225.1.1.1Eth0/0Eth0/1在具体应用中,假设通过查询表1,获取PIM路由器RTA的PIM邻居数量大于等于2的接口包括Eth0/1,再通过查询RTA的组播转发表,可以得知该接口Eth0/1为组播报文(10.1.1.1,225.1.1.1)对应的转发出接口,因此,RTA很有可能通过该出接口Eth0/1转发和其PIM邻居重复的组播报文(10.1.1.1,225.1.1.1)。因此,在RTA还未从出接口Eth0/1接收到组播报文(10.1.1.1,225.1.1.1)时,即可提前触发Assert选举,向出接口Eth0/1发送Assert报文。综上,本申请实施例在PIM路由器的出接口还没有接收组播报文之前,即可提前触发Assert选举;其中,所述出接口为所述PIM路由器中组播转发表中的出接口,且所述出接口用于沿着远离组播源的下游方向转发组播报文。具体地,通过判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口,若存在,可以认为在当前PIM域中可能出现重复转发多份组播报文的情况,则可以触发Assert选举,通过所述出接口发送Assert报文。由此,本申请实施例可以不用等待PIM路由器的出接口接收到组播报文,进而不用将出接口接收到组播报文上送CPU,从而可以减轻CPU的负担,以及减少传输组播报文占用的带宽资源。此外,在实际应用中,有些PIM路由器并不支持将出接口接收到组播报文上送CPU的功能,因此,这种情况下将无法触发Assert选举,导致共享网段中仍然会转发重复的组播报文。而本申请实施例不用将出接口接收到的组播报文上送CPU,即可触发Assert选举,从而可以实现在PIM路由器不支持将出接口接收到的组播报文上送CPU的功能的情况下,也可以触发Assert选举,增加了触发Assert选举的适用范围和灵活性。在另一实施例中,本申请还可以对发送Assert报文的出接口对应的Assert状态进行更新。参照图4,示出了本申请另一实施例的一种协议无关组播PIM的选举方法的步骤流程图,具体可以包括如下步骤:步骤401、判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口;其中,所述出接口为所述PIM路由器中组播转发表中的出接口,且所述出接口用于沿着远离组播源的下游方向转发组播报文;步骤402、若存在,则通过所述出接口发送Assert报文;步骤403、更新所述出接口对应的Assert状态。其中,所述更新所述出接口对应的的Assert状态状态的步骤,具体可以包括:将所述出接口的Assert状态更新为获胜状态。所述方法还可以包括如下步骤:在所述出接口接收到更优的Assert报文时,将所述出接口的获胜状态更新为失败状态。在本申请实施例中,在所述PIM路由器向其PIM邻居数量大于等于2的出接口发送Assert报文之后,可以认为自己是获胜者,此时,可以将所述出接口的Assert状态设置为AssertWinner(获胜)状态。其中,所述Assert报文中可以携带有所述PIM路由器的路由度量信息。在所述PIM路由器从该出接口接收到来自PIM邻居的Assert报文时,将邻居的Assert报文中携带的邻居的路由度量信息与自身的路由度量信息进行比较,如果邻居的路由度量信息优于自身的路由度量信息,可以认为所述出接口接收到更优的Assert报文,则可以将所述出接口的获胜状态更新为失败状态。在具体应用中,在将所述出接口的Assert状态更新为获胜状态之后,可以启动Assert定时器;如果所述Assert定时器超时,或者所述出接口变为入接口,则可以将所述出接口的获胜状态更新为初始状态(NoInfo)。其中,所述Assert定时器可用于维持当前的AssertWinner状态,处于AssertWinner状态的出接口可以一直转发对应的路由报文(S,G)。在本申请的一种可选实施例中,在满足如下任一条件时,将所述出接口的Assert状态更新为获胜状态:所述出接口的Assert状态为初始状态,且所述出接口接收到组播报文;或者所述出接口的Assert状态为初始状态,且所述出接口接收到更劣的Assert报文;或者所述出接口的Assert状态为初始状态,且所述出接口的PIM邻居数量大于等于2。在具体应用中,在PIM路由器还未向出接口发送Assert报文之前,该出接口的Assert状态为NoInfo状态。如果在NoInfo状态下,该出接口接收到组播报文或者该出接口的PIM邻居数量大于等于2,则说明该出接口满足触发Assert选举的条件,则可以触发Assert选举(即对该接口启动Assert状态机),向该出接口发送Assert报文,并且将所述PIM路由器的该出接口的NoInfo状态更新为获胜状态。或者,在所述PIM路由器从该出接口接收到来自PIM邻居的Assert报文时,将邻居的Assert报文中携带的邻居的路由度量信息与自身的路由度量信息进行比较,如果自身的路由度量信息优于邻居的路由度量信息,可以认为所述出接口接收到更劣的Assert报文,则可以将所述PIM路由器的该出接口的NoInfo状态更新为获胜状态。综上,本申请实施例对于已有的触发Assert选举的条件进行了扩展,使得在PIM路由器的出接口接收组播报文之前就可以触发Assert选举,并且,使得不支持上报出接口接收的组播报文的PIM路由器也可以触发Assert选举。此外,本申请实施例还可以对启动Assert状态机的出接口对应的Assert状态进行更新,本申请实施例的Assert状态机可以适用于更多的Assert触发条件,可以增加触发Assert选举的灵活性和实用性。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。参照图5,示出了本申请其中一个实施例的一种协议无关组播PIM的选举装置的结构框图。所述装置应用于PIM路由器,所述装置具体可以包括:判断模块501,用于判断所述PIM路由器是否存在PIM邻居数量大于等于2的出接口;其中,所述出接口为所述PIM路由器中组播转发表中的出接口,且所述出接口用于沿着远离组播源的下游方向转发组播报文;发送模块502,用于在所述判断模块判断出所述PIM路由器存在PIM邻居数量大于等于2的出接口时,通过所述出接口发送Assert报文。在本申请的一种可选实施例中,所述判断模块501,具体可以包括:第一查询子模块,用于通过查询已建立的PIM邻居表,确定所述PIM邻居表中PIM邻居数量大于等于2的接口;第二查询子模块,用于依据所述PIM邻居数量大于等于2的接口,查询所述组播转发表;判断子模块,用于在所述组播转发表中存在与所述PIM邻居数量大于等于2的接口相匹配的出接口时,判定所述PIM路由器存在PIM邻居数量大于等于2的出接口。在本申请的另一种可选实施例中,所述装置还可以包括:接收模块,用于接收来自PIM邻居的PIMHello报文,所述PIMHello报文中携带有所述PIM邻居的地址信息;建立模块,用于在所述PIM邻居表中查询是否存在与所述地址信息相匹配的邻居表项,若不存在,则建立所述PIM邻居的地址信息与接收所述PIMHello报文的接口之间的映射关系;加入模块,用于将所述映射关系作为邻居表项加入所述PIM邻居表中。在本申请的又一种可选实施例中,所述装置还可以包括:第一更新模块,用于在通过所述出接口发送Assert报文之后,更新所述出接口对应的Assert状态。在本申请的再一种可选实施例中,所述第一更新模块还用于将所述出接口的Assert状态更新为获胜状态;所述装置还可以包括:第二更新模块,用于在所述出接口接收到更优的Assert报文时,将所述出接口的获胜状态更新为失败状态。在本申请的再一种可选实施例中,在满足如下任一条件时,所述第一更新模块将所述出接口的Assert状态更新为获胜状态:所述出接口的Assert状态为初始状态,且所述出接口接收到组播报文;或者所述出接口的Assert状态为初始状态,且所述出接口接收到更劣的Assert报文;或者所述出接口的Assert状态为初始状态,且所述出接口的PIM邻居数量大于等于2。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。以上对本申请所提供的一种协议无关组播PIM的选举方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1