具体实施方式
为了便于理解,下面先对本说明书及权利要求书中出现的几个名词进行解释:
多接入传输局域网:多个路由器连接在同一个LAN上,该LAN用于中转业务数据,其通常位于网络拓扑结构的中间部分,不包括边缘网络;
上游路由器:在组播树中,靠近组播树的根节点的路由器;
下游路由器:在组播树中,远离组播树的根节点的路由器;
上游接口:在组播树的路由器中,靠近组播树的根节点的接口;
下游接口:在组播树的路由器中,远离组播树的根节点的接口;
多接入传输局域网的上游路由器:该路由器连接到该多接入传输局域网接口为连接到组播树的下游接口。
图1示出了根据本发明的一个应用场景示意图,其为一个包含多接入传输局域网的组播树的网络拓扑结构示意图。为简明起见,图1中仅示出与本发明相关的运行组播协议的路由器,而没有示出与本发明无关的与各个路由器相连的接收组播数据包的终端主机。其中路由器B为组播树的根节点。路由器A1、A2和路由器C4、C5分别连接到一个多路访问网路。由于路由器C4和路由器C5到达组播树根节点B的组播路由信息的不同步,从多接入传输局域网M1到根节点B有两条不同的组播通信路径,从而导致多接入传输局域网M1上会出现重复的组播数据包。
下面以图1所示的网络拓扑结构来描述本发明如何检测多接入传输局域网M1中是否会出现重复的组播数据包。
根据本发明的技术方案,可由组播树的根节点B沿着组播树的方向该组播树中的其它所有路由器周期性地或(非周期性地)发送一个标识消息。各个路由器在其连接到该组播树的上游接口上到接收到该标识消息之后,在其连接到该组播树的下游接口上将该消息转发出去。例如,图1中所示的路由器C1,其在连接到组播树的上游接口C1-I1上接收到该标识消息,并且在连接到组播树的下游接口C1-I2和C1-I3上将该标识消息沿着远离组播树根节点B的方向发送给下游路由器A1和A2。这里需要说明的是,该标识消息目的是用于检测加入到该组播树的多接入传输局域网中是否会出现重复的组播数据包,仅仅是起一个标识作用,其具体的消息格式不限。
下游路由器A1在A1-I1接口上接收到所述标识消息,在连接到该组播树的下游接口A1-I2和A1-I3接口上将该消息发送出去,由于A1-I2接口连接在多接入传输局域网上,所以连在该多接入传输局域网上的其它每个路由器都接收到该标识消息,即除了路由器C4和路由器C5外,路由器A2在连接到该多接入传输局域网的A2-I2接口上也能接收到由路由器A1发出的所述标识消息。
同样,路由器A2在A2-I1接口上接收到所述标识消息时,在下游接口A2-I2上将该标识消息转发出去。同样,A1-I2接口连接在多接入传输局域网上,所以连在该多接入传输局域网上的其它每个路由器都接收到该标识消息,即除了路由器C4和路由器C5外,路由器A1在连接到该多接入传输局域网的A1-I2接口上也能接收到由路由器A1发出的所述标识消息。
路由器A1在其连接到多接入传输局域网的组播树下游接口A1-I2上检测是否接收到所述标识消息,当路由器A1在A1-I2接口上接收到来自路由器A2发送的所述标识消息时,则确定该多接入传输局域网M1上会出现重复的组播数据包。
同样,路由器A2在其连接到多接入传输局域网的组播树下游接口A2-I2上检测是否接收到所述标识消息,当路由器A2在A2-I2接口上接收到来自路由器A1发送的所述标识消息时,则确定该多接入传输局域网M1上会出现重复的组播数据包。
当路由器A1或者A2确定多接入传输局域网中会出现重复的组播数据包时,如果路由器A1、A2均运行PIM-SM协议,则可以触发断言消息。路由器A1和A2通过断言消息来为多接入传输局域网M1选举出一个唯一的上游路由器来转发组播数据包及所述标识消息。详细的断言机制可参考RFC4601,这不是本发明的重点,在此不作赘述。
由于网络拓扑结构的动态变化,当有新的树枝加入到该组播树时,新加入的树枝中可能包含有例如图1中的M1那样的多接入传输局域网,或者新加入的树枝会导致某个多接入传输局域网中出现重复的组播数据包。优选地,当组播树中的路由器接收到来自新的下游路由器加入该组播树的请求消息时,在接收到该请求消息的接口上向该新的下游路由器发送一个标识消息,该标识消息可以是即时生成的,也可以是预先存储的。这个新的下游路由器在接收到该消息之后,再把该标识消息发送给其下游路由器。
当有新的树枝加入到该组播树时,可在新的树枝加入的接口上发送所述标识消息,以便可能存在的多接入传输局域网的上游路由器来检测多接入传输局域网中是否会出现重复的组播数据包。当然这不是本发明的一个必需步骤。当有新的树枝加入到该组播树时,路由器也可对新加入的树枝不作任何反应。在接收到来自上游路由器的所示标识消息后,再发送给新加入的树枝中的路由器。
这里需要说明的是,对于如图1所示的组播树网络拓扑结构,也可由路由器C1和/或路由器C2来周期性地(或者非周期性地)发送所述标识消息,或者也可仅由多接入传输局域网M1中的上游路由器A1和上游路由器A2来周期性地(或者非周期性地)发送所述标识消息。或者也由根节点B、路由器C1和路由器C2、或者上游路由器A1和上游路由器A2这三组设备的任意结合来发送所述标识消息。当然,对于路由器C1和路由器C2、或者上游路由器A1和上游路由器A2来说,该标识消息可以是自己产生的,也可以是上游路由器发送来的。
组播树是组播路由协议在单播路由协议的基础上建立而成的:下游路由器发出的加入某组播树的请求消息会被上游路由器逐跳地转发至根节点或者转发到一个已经在该组播树上的上游路由器,加入请求消息所经过的路径的逆向路径即为组播数据包的转发路径。如,运行PIM-SM协议的路由器收到其它路由器发来的加入某个组播树的请求消息时,其根据单播路由协议来计算自己到该组播树的根节点的最短路径,根据该最短路径将请求消息转发到下一跳上游路由器,该下一跳上游路由器是与其直接相连的路由器并且在其到根节点的最短路径上。然后该下一跳上游路由器继续执行相同的操作,向其上游路由器转发加入该组播组的请求消息。
对于运行组播协议的路由器来说,当组播树建立之后,根据组播树的网络拓扑信息,就可以获知组播数据包的转发路径,即知晓哪个接口是某个组播树的上游接口,哪些接口是该组播树的下游接口。在路由器中存有同每个接口对应的组播转发表。当在某个接口上接收到某个组播数据包时,从该接口对应的组播转发表中查找该组播数据包对应的下游接口(即出接口),并从该对应的下游接口处转发该组播数据包。
本领域的普通技术人员应知晓如何判断路由器的某个接口是否连接到多接入传输局域网。例如,可以采取人工配置的方式;还可以是根据从该接口的接收到的数据包的链路层地址来判断,对于点到点的连接,从某个接口接收到的每个数据包的链路层地址应该是相同的。如果从某个接口接收到的不同的数据包具有不同的链路层地址,则认为该接口连接到了多接入传输局域网上;另外一种方法是,如果在某个接口上接收到了来自多个路由器的握手消息(如,PIM-SM协议中的Hello消息),则认为该接口连接到了多接入传输局域网上。总之,现有技术中有许多判断路由器的某个接口是否连接到多接入传输局域网的方法,这应是本领域技术人员应知晓的,在此不作赘述。
这里需要说明的是,一个路由器可能会属于多个且不同种类的组播树,无论是共享树还是有源树,本发明的处理方法是相同的,因此我们这里仅从一个组播树的角度来描述各个路由器中的方法和装置。本领域的技术人员可以理解,很容易将本发明的方法和装置应用于到路由器属于多个组播树的情形。
图1所示的网络拓扑结构仅是为了说明本发明的技术方案的一个示例,而不应理解成对本发明的限制。本领域的技术人员可以理解,本发明的技术方案适用于包含多接入传输局域网的多种组播树网络拓扑结构。
本发明中的组播树包括但不限于共享树和有源树。这里共享树是指以某个路由器作为组播树的根节点,一般将该路由器称作集中设备(RP,Rendezvous Point),将RP到所有接收者的最短路径结合起来构成组播转发树。使用共享树时,对应某个组,网络中只有一棵组播树。所有的组播源和接收者都使用这棵树来收发组播数据包。组播源先向根节点,即集中设备发送组播数据包,之后根节点向下转发该组播数据包至所有的接收者。有源树是指以组播源作为组播树的根节点,将组播源到每一个接收者的最短路径结合起来构成组播转发树。由于有源树使用的是从组播源到接收者的最短路径,因此有源树也称作最短路径树。
下面以PIM-SM协议为例,来描述本发明的一个具体实施例。当然,本发明不限于PIM-SM协议,还可适用于一般的组播协议,如PIM-DM协议等。
对于PIM-SM协议,图2中给出了所述标识消息的两种示例,分别对应于共享树和有源树。我们将图2a和图2b中所示的标识消息分别称作RPT-OK消息和SPT-OK消息。同PIM-SM控制消息一样,这两个消息也是封装在IP包中。
在图2a和图2b中,PIM Ver字段(4个比特)是PIM的版本号,目前为2。Type字段(4个比特)为标识消息类型,例如可分配10给SPT-OK消息,分配12给RPT-OK消息。Reserved字段(8个比特)为保留字段,发送的时候设为0,接收的时候忽略该字段。Checksum字段(16个比特)是SPT-OK或RPT-OK消息的校验和,其计算方法同其它PIM-SM控制消息中的校验和,详见RFC4601第109页,这里就不再详述。对于RPT-OK消息,Group Address字段为共享树的组地址,其具体的格式见RFC4601第111页。对于SPT-OK消息,Group Address字段为有源树的组地址,其具体的格式见RFC4601第111页,Source Address字段为有源树的源地址,其具体格式见RFC4602第110页。
RPT-OK和SPT-OK消息分别被发送到RPT和SPT树中的所有路由器。
优选地,RPT-OK消息由RPT的根节点,即RP周期性地沿着组播树发送。RPT中的每个路由器逐跳转发RPT-OK消息,直到该消息到达叶节点。
对于SPT-OK消息也是同样,优选地,由SPT树的根节点沿着SPT树周期性地发送SPT-OK消息,然后RPT中的每个路由器逐跳转发SPT-OK消息,直到该消息到达叶节点。
在RPT或SPT的根节点中,可以分别设置一个定时器,当发送RPT-OK消息或SPT-OK消息时,将该定时器置一个初值,如60秒。当定时器溢出后,再次发送RPT-OK消息或SPT-OK消息,同时重置定时器,如此循环,周期性地发送RPT-OK消息或SPT-OK消息到RPT或SPT中的各个路由器。
在PIM-SM协议中,对于加入到有源树(S,G)的接口I,断言状态机有3种状态:无断言状态(NI),我是断言的获胜方(W),我是断言的失败方(L)。只有当状态机处于NI状态时,从该端口接收的(S,G)组播数据包才会触发断言,其触发条件是:
一个(S,G)组播数据包到达接口I,且CouldAssert(S,G,I)==TRUE(1)
通过运用本发明的方法,上述触发条件可以改成如下:
一个SPT-OK或RPT-OK消息到达接口I,且CouldAssert(S,G,I)==TRUE(1’)
在PIM-SM协议中,对于加入到共享树(*,G)的接口I,同样,只有当状态机处于NI状态时,从该端口接收的(S,G)组播数据包才会触发断言,其触发条件是:
一个(*,G)组播数据包到达接口I,且CouldAssert(*,G,I)==TRUE(2)
同样,通过运用本发明的方法,上述触发条件可以改成如下:
一个RPT-OK或SPT-OK消息到达接口I,且CouldAssert(*,G,I)==TRUE(2’)
这里需要说明的是,可以同PIM-SM协议兼容,只有当多接入传输局域网中的上游路由器中的接口I的(S,G)或(*,G)断言状态机为NI状态时,接口I才进行基于控制面中的RPT-OK和SPT-OK消息的重复检查。这只是一种具体的实施方式,而不应当理解为对本发明的限制。
图3示出了根据本发明的一个具体实施方式在多接入传输局域网中的上游路由器中用于检测该多接入传输局域网中是否会出现重复的组播数据包的方法流程图。
首先,在步骤S111中该多接入传输局域网中的上游路由器在连接到组播树的下游接口上检测是否接收到第一标识消息。这里需要说明的是,该第一标识消息目的是用于检测加入到该组播树的多接入传输局域网中是否会出现重复的组播数据包,仅仅是起一个标识作用,其具体的消息格式不限。
当在所述下游接口上检测到所述第一标识消息时,则在步骤S112中确定所述多接入传输局域网中会出现重复的组播数据包。
该方法还包括如图4所示的步骤S122。在步骤S122中,多接入传输局域网中的上游路由器在所述下游接口上发送第二标识消息给所述组播树的下游路由器。
这里需要说明的是,该第二标识消息与所述第一标识消息相同,目的是用于检测加入到该组播树的多接入传输局域网中是否会出现重复的组播数据包,仅仅是起一个标识作用,其具体的消息格式不限。
该第二标识消息有可能由该上游路由器预先存储的,因此下面的获取所述第二标识消息的步骤S121就不是本发明的一个必需步骤。
优选地,如图4所示,在所述步骤S122之前,还包括步骤S121。在步骤S121中,获取所述第二标识消息。这里获取该第二标识的消息方法有多种,可能是该上游路由器在连接到所述组播树的上游接口上接收所述第二标识消息;也可能是该上游路由器自身生成所述第二标识消息。
优选地,该方法还可进一步包括如图5所示的步骤S131和S132。
首先,在步骤S131中,检测是否接收到来自新的下游路由器的加入该组播树的请求消息。
如果检测到接收到来自新的下游路由器的加入该组播树的请求消息,则步骤S132中在接收到所述请求消息的接口上向所述新的下游路由器发送所在步骤S121中所获取的所述第二标识消息。
图6示出了根据本发明的一个具体实施方式在多接入传输局域网中的上游路由器中用于检测该多接入传输局域网中是否会出现重复的组播数据包的检测装置。
该检测装置100包括第一检测装置111、确定装置112、第一获取装置121、第一发送装置122、第二检测装置131、第二发送装置132。其中第一获取装置121还包括第一接收装置1211和第一获取装置1212。为简明起见,图6所示的检测装置100中包括了很多优选实施例中所包含的子装置,但本领域技术人员应可根据本申请的教导并结合具体情况来选择所需的子装置。对于本发明来说,只有第一检测装置111、确定装置112和第一发送装置122是实施本发明的技术方案所必需的装置。
第一检测装置111在连接到组播树的下游接口上检测是否接收到第一标识消息。这里需要说明的是,该第一标识消息目的是用于检测加入到该组播树的多接入传输局域网中是否会出现重复的组播数据包,仅仅是起一个标识作用,其具体的消息格式不限。
当所述第一检测装置111在所述下游接口上检测到所述第一标识消息时,确定装置112则确定所述多接入传输局域网中会出现重复的组播数据包。
第一发送装置122在所述下游接口上发送第二标识消息给所述组播树的下游路由器。这里需要说明的是,该第二标识消息与所述第一标识消息相同,目的是用于检测加入到该组播树的多接入传输局域网中是否会出现重复的组播数据包,仅仅是起一个标识作用,其具体的消息格式不限。
该第二标识消息有可能由该上游路由器预先存储的,因此所述第一获取装置121就不是本发明的一个必需装置。
优选地,在所述第一发送装置122发送所述第二标识消息之前,还可由第一获取装置121获取所述第二标识消息。这里获取该第二标识的消息方法有多种,可能是由第一接收装置1211在连接到所述组播树的上游接口上接收所述第二标识消息;也可能是第一生成装置1212生成该第二标识消息。
优选地,检测装置100还包括第二检测装置131和第二发送装置132。第二检测装置131检测是否接收到来自新的下游路由器的加入该组播树的请求消息。当第二检测装置131检测到接收到来自新的下游路由器的加入该组播树的请求消息时,第二发送装置132则在接收到所述请求消息的接口上发送由第一获取装置121所获取的第二标识消息给所述新的下游路由器。
图7示出了根据本发明的一个具体实施方式在组播通信网络的路由器中用于检测多接入传输局域网中是否会出现重复的组播数据包的辅助方法流程示意图。这里的路由器包括组播树的根节点、中间节点路由器以及叶子节点路由器。
首先,在步骤S211中,获取所述第三标识消息。这里需要说明的是,该第三标识消息与所述第一标识消息和第二标识消息相同,目的是用于检测加入到该组播树的多接入传输局域网中是否会出现重复的组播数据包,仅仅是起一个标识作用,其具体的消息格式不限。
然后,在步骤S212中,在连接到组播树的下游接口上发送该第三标识消息给该组播树的下游路由器,当然对于叶子节点路由器来说,则无需发送该标识消息。
由于网络结构的动态变化,组播树中的叶子节点路由器可能会变成中间节点路由器,中间节点路由器也有可能变成叶子节点路由器。对于叶子节点路由器,不需要转发所述第三标识消息,但是在新的树枝加入时,优选地,可以向新的树枝节点路由器发送所述第三标识消息。这将在下面步骤S221至步骤S222中进行详细描述。
这里需要说明的是,第三标识消息有可能由该路由器预先存储的,因此获取所述第三标识消息的步骤S211就不是本发明的一个必需步骤。
这里获取该第三标识消息方法有多种,可能是该路由器自身生成所述第三标识消息。当该路由器不是组播树的根节点时,还可以在其连接到所述组播树的上游接口上接收所述第三标识消息。
优选地,该方法还可进一步包括如图8所示的步骤S221和S222。
首先,在步骤S221中,检测是否接收到来自新的下游路由器的加入该组播树的请求消息。
如果接收到来自新的下游路由器的加入该组播树的请求消息,则在步骤S222中,在接收到所述请求消息的接口上向所述新的下游路由器发送由步骤S211中所获取的第三标识消息。
图9示出了根据本发明的一个具体实施方式在组播通信网络的路由器中用于检测多接入传输局域网中是否会出现重复的组播数据包的辅助检测装置。这里的路由器包括组播树的根节点、中间节点路由器以及叶子节点路由器。
该辅助检测装置200包括第二获取装置211、第三发送装置212、第三检测装置221、第四发送装置222。其中,第二获取装置211还包括第二接收装置2111和第二生成装置2112。为简明起见,该检测装置200包括了很多优选实施例中所包含的子装置,本领域技术人员根据本申请的教导,应能理解其中仅第三发送装置212是实施本发明所必要的装置,其他子装置为可选的。
第三发送装置212在连接到组播树的下游接口上发送第三标识消息给该组播树的下游路由器。这里需要说明的是,该第三标识消息与所述第一标识消息和第二标识消息相同,目的是用于检测该多接入传输局域网中是否会出现重复的组播数据包,仅仅是起一个标识作用,其具体的消息格式不限。
该第三标识消息有可能由该上游路由器预先存储的,因此所述第二获取装置211就不是本发明的一个必需装置。
优选地,在所述第三发送装置212发送所述第三标识消息之前,还可由第二获取装置211获取所述第三标识消息。这里获取该第三标识消息方法有多种,可能是由第二接收装置2111在连接到所述组播树的上游接口上接收所述第三标识消息;也可能是第二生成装置2112生成该第三标识消息。
优选地,辅助检测装置200还包括第三检测装置221和第四发送装置222。第三检测装置221检测是否接收到来自新的下游路由器的加入该组播树的请求消息。当第三检测装置221检测到接收到来自新的下游路由器的加入该组播树的请求消息时,第四发送装置222则在接收到所述请求消息的接口上发送由第二获取装置211所获取的第三标识消息给所述新的下游路由器。
由于网络结构的动态变化,组播树中的叶子节点路由器可能会变成中间节点路由器,中间节点路由器也有可能变成叶子节点路由器。对于叶子节点路由器,不需要转发所述第三标识消息,但是在新的树枝加入时,优选地,可以向新的树枝节点路由器发送所述第三标识消息。
另外需要说明的是,该辅助检测装置200中的第二获取装置211、第三发送装置212、第三检测装置221、第四发送装置222可以分别与检测装置100中的第一获取装置121、第一发送装置122、第二检测装置131、第二发送装置132所实现的功能相同或相似;该辅助检测装置200中的第二接收装置2111、第二生成装置2112可以分别与检测装置100中的第一接收装置1211、第一获取装置1212所实现的功能相同或相似。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在所附权利要求的范围内做出各种变形或修改。