背景技术
在协议无关组播稀疏模式(PIM-SM,ProtocolIndependentMulticast-SparseMode)协议(RFC4601)中要求为每一个组播组选择一个汇聚点RP为其服务,组播源的直连指定路由器DR向所属的RP发送注册报文,这样RP上就维护了所有其所服务组播组的源信息,接收者可以通过向RP发送组加入来点播所有该组的组播源。
任播RP(Anycast-RP)实现了一种RP的冗余备份和负载分担机制,即对于同一个组播组存在多个RP设备,但都使用相同的Anycast-RP地址;首先对多个设备配置相同的Anycast-RP地址,组播源和接收者就近选择一个物理RP;然后通过一定的机制在多个物理RP间对组播源信息进行同步,这样就实现了组播源和接收者的互通。
Anycast-RP的实现目前有两种方式:一种方式是通过PIM-SM和组播源发现协议(MSDP,MulticastSourceDiscoveryProtocol)的组合使用来实现;另一种方式完全基于对协议无关组播(PIM,ProtocolIndependentMulticast)协议的扩展来实现,不需要依赖MSDP。
基于MSDP的Anycast-RP(RFC3446)通过在多个RP之间建立MSDP域内对等体关系,在MSDP协议报文中交互组播源信息,无法支持IPv6。
而完全基于PIM的Anycast-RP(RFC4610)通过向其他Anycast-RP成员转发注册报文来同步组播源信息,部署更加简单且可以支持IPv6,主要处理过程如图1所示:
假设Anycast-RP集包括三个成员汇聚点1、汇聚点2、汇聚点3,对外发布的Anycast-RP地址为汇聚点A。
汇聚点1收到一个目的地址为汇聚点A的注册报文,发现源地址不是汇聚点2或汇聚点3(本Anycast-RP集的其他成员),就认为是从指定路由器发过来的;然后将该注册报文的源地址改为汇聚点1,发送给汇聚点2和汇聚点3;
汇聚点2和汇聚点3收到从汇聚点1发送过来的注册报文,维护其中的组播源组信息;由于该注册报文的源地址是Anycast-RP集的成员,不再向外转发以防止环路。
如果使用基于PIM的Anycast-RP,需要在Anycast-RP集的所有成员设备上进行相同的配置,以保证全连接。当需要往Anycast-RP集中增加一个成员时,需要手动在所有成员设备上新增一条配置指定新增加的成员地址,工作量较大且容易出错。
发明内容
有鉴于此,本发明提供了一种自动添加任播汇聚点成员的方法和设备,可以简化Anycast-RP的配置过程,能自动发现Anycast-RP集的所有成员地址,新增成员设备时不需要手动修改其他成员设备的配置,实现了自动发布并学习Anycast-RP的成员地址。本发明提出的技术方案是:
一种自动添加任播汇聚点成员的方法,该方法包括以下步骤:
自举路由器BSR接收到欲成为汇聚点RP的设备发送来的候选汇聚点C-RP通告报文,所述C-RP通告报文同时携带所述RP设备欲加入的任播汇聚点Anycast-RP集的Anycast-RP地址、所述RP设备的本地地址、以及所述RP设备服务的组播组范围;
BSR从收到的C-RP通告报文中提取所述Anycast-RP地址以及所述本地地址,将提取的所述本地地址增加到所述Anycast-RP地址对应的Anycast-RP集中的成员地址中,所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围相同,所述RP设备服务的组播组范围为Anycast-RP集服务的组播组范围;
BSR将所述Anycast-RP地址以及所述Anycast-RP地址对应的所有成员地址添加到BSM报文中发送出去,使已配置所述Anycast-RP地址的设备从该BSM报文中学习并记录其携带的除自身外的所有成员地址。
上述方案中,该方法进一步包括:
所述汇聚点RP设备的本地地址携带于C-RP通告报文中的扩展后的RPAddress字段;
所述Anycast-RP地址对应的所有成员地址携带于BSM报文中扩展后的RPAddress字段。
上述方案中,所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围不同时,该方法进一步包括:
将所述BSR最近收到的C-RP报文中携带的组播组范围作为所述Anycast-RP集服务的组播组范围,或者取所有Anycast-RP集中的成员地址对应的C-RP通告报文携带的组播组范围的交集作为所述Anycast-RP集服务的组播组范围。
一种自动添加任播汇聚点成员的自举路由器BSR设备,该设备包括:
收发模块,用于接收欲成为汇聚点RP的设备发送来的候选汇聚点C-RP通告报文,所述C-RP通告报文同时携带所述RP设备欲加入的任播汇聚点Anycast-RP集的Anycast-RP地址、所述RP设备的本地地址、以及所述RP设备服务的组播组范围;还用于发送BSM报文,使已配置所述Anycast-RP地址的设备从该BSM报文中学习并记录其携带的除自身外的所有成员地址;
存储模块,用于存储任播汇聚点Anycast-RP集的Anycast-RP地址、Anycast-RP集中的成员地址以及该Anycast-RP集服务的组播组范围;
处理模块,用于从收到的C-RP通告报文中提取所述Anycast-RP地址以及所述本地地址,将提取的所述本地地址增加到所述Anycast-RP地址对应的Anycast-RP集中的成员地址中,所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围相同,所述RP设备服务的组播组范围为Anycast-RP集服务的组播组范围。
上述方案中,所述处理模块进一步用于,将所述汇聚点RP设备的本地地址从C-RP通告报文中扩展后的RPAddress字段中提取出来,将所述Anycast-RP地址对应的所有成员地址添加于BSM报文中扩展后的RPAddress字段。
上述方案中,所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围不同时,所述处理模块进一步用于:
将所述BSR最近收到的C-RP报文中携带的组播组范围作为所述Anycast-RP集服务的组播组范围,或者取所有Anycast-RP集中的成员地址对应的C-RP通告报文携带的组播组范围的交集作为所述Anycast-RP集服务的组播组范围。
综上所述,本发明提出的技术方案能够实现自动发布并学习Anycast-RP集的所有成员地址,新增成员设备时不需要手动修改其他成员设备的配置,减小了工作量且提高了精确度。
具体实施方式
为使本发明的目的、技术方案和优点表达的更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明的技术方案是:自举路由器BSR接收到欲成为汇聚点RP的设备发送来的候选汇聚点C-RP通告报文,所述C-RP通告报文同时携带所述RP设备欲加入的任播汇聚点Anycast-RP集的Anycast-RP地址、所述RP设备的本地地址、以及所述RP设备服务的组播组范围;
BSR从收到的C-RP通告报文中提取所述Anycast-RP地址以及所述本地地址,将提取的所述本地地址增加到所述Anycast-RP地址对应的Anycast-RP集中的成员地址中,所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围相同,所述RP设备服务的组播组范围为Anycast-RP集服务的组播组范围;
BSR将所述Anycast-RP地址以及所述Anycast-RP地址对应的所有成员地址添加到BSM报文中发送出去,使已配置所述Anycast-RP地址的设备从该BSM报文中学习并记录其携带的除自身外的所有成员地址。
C-RP报文和BSM报文标准的RPAddress字段的EncodingType为0,只能携带一个单播地址Anycast-RP地址,网络中的设备收到这样的BSM报文无法获知该Anycast-RP地址对应的成员的本地地址,自动添加Anycast-RP成员的目的无法实现。通过对该字段的扩展,使其同时携带Anycast-RP地址和成员的本地地址,这样无论是BSR收到C-RP报文,还是网络中的设备收到BSM报文,均会获知欲成为RP的设备的本地地址,这样就可以将其添加入对应的Anycast-RP集,当集合中的成员地址收到DR发送来的注册报文时,就会向该集合中的其他成员转发该注册报文。
通过对C-RP报文和BSM报文中RPAddress字段进行扩展等手段,能自动通告并发布Anycast-RP集的所有成员的本地地址,不再需要手工指定所有成员的本地地址。
方法实施例一
本实施例中,以图2中的示意图为例,汇聚点1(RP1)、汇聚点2(RP2)、汇聚点3(RP3)为同一个Anycast-RP集中的三个成员,对外发布的Anycast-RP地址为汇聚点A(RPA)。汇聚点4(RP4)为欲加入该Anycast-RP集的一个设备。
图3是本实施例的流程图,以汇聚点4加入Anycast-RP集为例对本发明的技术方案进行说明,如图3所示,本实施例包括以下步骤:
步骤301:设备4自身配置为C-RP,且本地地址为RP4。
本步骤中,设备4欲成为RP,则将自身配置为C-RP(候选RP),其要加入的Anycast-RP集对外发布的Anycast-RP地址为RPA,因此,设备4自身配置的Anycast-RP地址为RPA,并将该设备的本地地址定为RP4,也为其加入所述Anycast-RP集后的成员的本地地址。
步骤302:设备4发送C-RP通告报文给BSR。
本步骤中,自举路由器BSR接收到欲成为汇聚点RP的设备4发送来的候选汇聚点C-RP通告报文,所述C-RP通告报文同时携带所述设备4欲加入的任播汇聚点Anycast-RP集的Anycast-RP地址RPA、所述设备4的本地地址RP4、以及所述设备4服务的组播组范围;所述信息封装在C-RP通告报文中,C-RP报文格式如图4所示,RPAddress字段就对应Anycast-RP集的Anycast-RP地址(即RPA),GroupAddress字段对应RP4能服务的组播组范围。
设备4的本地地址携带于所述C-RP通告报文中经过扩展的RPAddress字段。标准的RPAddress的格式如图5所示,其中EncodingType为0,只能携带一个单播地址,即Anycast-RP地址RPA,无法携带设备4的本地地址RP4。本发明对该地址进行扩展,以携带更多的信息,如设备4对应的本地地址信息,扩展后的RPAddress的格式如图6所示。
步骤303:BSR收到所述C-RP报文,记录该报文携带的Anycast-RP地址和本地地址,以及服务的组播组范围。
BSR从收到的C-RP通告报文中提取并记录该报文携带的Anycast-RP地址RPA和本地地址RP4,以及设备4服务的组播组范围。
步骤304:BSR将提取的本地地址增加到所述Anycast-RP地址对应的Anycast-RP集中的成员地址中,并将所述Anycast-RP地址以及所述Anycast-RP地址对应的所有成员的本地地址添加到BSM报文中发送出去。
本步骤中,BSR将提取的本地地址增加到所述Anycast-RP地址对应的Anycast-RP集中的成员地址中,所述Anycast-RP地址对应的Anycast-RP集的成员地址中保存有BSR从所有C-RP报文中提取出来的具有相同Anycast-RP地址的不同本地地址,并将所述Anycast-RP地址以及所述Anycast-RP地址对应的所有成员地址添加到BSM报文中发送出去。所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围相同,所述RP设备服务的组播组范围为Anycast-RP集服务的组播组范围。
本实施例中,所述C-RP报文携带有Anycast-RP地址RPA和对应的成员地址RP4,封装BSM报文时,Anycast-RP地址RPA对应的成员地址还有RP1、RP2、RP3,这是之前RP1、RP2、RP3分别发送C-RP报文给BSR时,BSR记录下来的。因此,此时BSR发送出去的BSM报文携带有Anycast-RP地址RPA,对应的成员地址RP1、RP2、RP3、RP4。且RP1、RP2、RP3、RP4服务的组播组范围相同,也即Anycast-RP集服务的组播组范围。
如果Anycast-RP集中的成员地址对应的RP设备服务的组播组范围不同,则将所述BSR最近收到的C-RP报文中携带的组播组范围作为所述Anycast-RP集服务的组播组范围,或者取所有Anycast-RP集中的成员地址对应的C-RP通告报文携带的组播组范围的交集作为所述Anycast-RP集服务的组播组范围。假设本实施例中RP1、RP2、RP3服务的组播组相同,而RP4与RP1、RP2、RP3服务的组播组不同,由于RP4的通告报文为BSR最近收到的,则将RP4服务的组播组作为RPA服务的组播组,或者取RP1、RP2、RP3、RP4服务的组播组范围的交集作为RPA服务的组播组。实际应用中需要避免多个Anycast-RP地址相同的C-RP报文携带的组播组范围不同的情况出现,由用户保证一个Anycast-RP集的所有成员配置相同的服务组播组范围。
所述Anycast-RP地址对应的所有成员地址携带于BSM报文中扩展后的RPAddress字段。BSM报文标准的RPAddress的格式与C-RP报文标准的RPAddress相同,EncodingType为0,只能携带一个单播地址,即Anycast-RP地址RPA,无法携带所有成员地址RP1、RP2、RP3和RP4。本发明对该地址进行扩展,以携带更多的信息,如该RP对应的成员地址信息,扩展后的RPAddress的格式与图6中C-RP报文扩展后的RPAddress相同。
步骤305:各设备接收到所述BSM报文,如果自身配置了BSM报文中携带的Anycast-RP地址,则记录该Anycast-RP地址下的除自身外的所有成员的本地地址。
本步骤中,网络中的设备接收到所述BSM报文,首先判断自身是否配置了所述BSM报文中携带的Anycast-RP地址,如果是,则记录所述BSM报文中携带的该Anycast-RP地址下的除自身外的所有成员的本地地址。本实施例中,设备4配置了RPA地址,则设备4记录BSM报文中携带的除自身外的成员的本地地址RP1、RP2、RP3;RP1配置了RPA地址,则设备1记录BSM报文中携带的除自身外的成员的本地地址RP2、RP3、RP4;RP2配置了RPA地址,则设备2记录BSM报文中携带的除自身外的成员的本地地址RP1、RP3、RP4;RP3配置了RPA地址,则设备3记录BSM报文中携带的除自身外的成员的本地地址RP1、RP2、RP4。至此完成了设备4成为Anycast-RP集合成员的全部自动添加过程。
应用本发明方案,能够自动发布并学习Anycast-RP集的所有成员的本地地址,新增成员设备时不需要手动修改其他成员设备的配置,可以实现自动添加新增成员,减小了工作量且提高了精确度。
针对上述方法,本发明还公开一种自动添加任播汇聚点成员的设备。本发明公开的设备如图7所示,包括:
收发模块701,用于接收欲成为汇聚点RP的设备发送来的候选汇聚点C-RP通告报文,所述C-RP通告报文同时携带所述RP设备欲加入的任播汇聚点Anycast-RP集的Anycast-RP地址、所述RP设备的本地地址、以及所述RP设备服务的组播组范围;还用于发送BSM报文,使已配置所述Anycast-RP地址的设备从该BSM报文中学习并记录其携带的除自身外的所有成员地址。
存储模块702,用于存储任播汇聚点Anycast-RP集的Anycast-RP地址、Anycast-RP集中的成员地址以及该Anycast-RP集服务的组播组范围。
处理模块703,用于从收到的C-RP通告报文中提取所述Anycast-RP地址以及所述本地地址,将提取的所述本地地址增加到所述Anycast-RP地址对应的Anycast-RP集中的成员地址中,所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围相同,所述RP设备服务的组播组范围为Anycast-RP集服务的组播组范围;还用于将所述汇聚点RP设备的本地地址从C-RP通告报文中扩展后的RPAddress字段中提取出来,将所述Anycast-RP地址对应的所有成员地址添加于BSM报文中扩展后的RPAddress字段;所述Anycast-RP集中的成员地址对应的RP设备服务的组播组范围不同时,进一步用于,将所述BSR最近收到的C-RP报文中携带的组播组范围作为所述Anycast-RP集服务的组播组范围,或者取所有Anycast-RP集中的成员地址对应的C-RP通告报文携带的组播组范围的交集作为所述Anycast-RP集服务的组播组范围。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。