具体实施方式
本发明实施例提供了一种虚拟私有网上资源分配的方法。
下面结合附图来详细描述本发明实施例。图1为本发明第一实施例虚拟私有网上资源分配的方法流程图,如图1所示,虚拟私有网上资源分配的方法包括:
101、PE向公网DDR(Designated Dispense Router,指定分发路由器)发送请求组RG消息。
PE向DDR发送RG消息,RG消息中携带的信息包括:PE的loopback(环回)地址、MT地址、VPN实例的RD(Route-Distinguisher,路由标识)、PE支持的VPN实例的VT(VPN-target,VPN标识)。
当PE上VPN实例的VT发生变化时,PE会重新向DDR发送RG消息。
102、DDR发送分配组DG消息给PE。
DDR根据RG消息中VPN实例的VT,检查本地Share-Group资源分配情况,若为新的VT信息,则分配Share-Group,根据VT的入接口import生成Register消息(S,G),根据出接口export生成Join消息(*,G),封装到DG消息中,将DG消息发送给PE,DG消息中携带的信息包括:(S,G)、(*,G);否则直接发送DG消息给PE。
较佳地,DDR按先后顺序轮循分配Share-Group资源,如有释放Share-Group则暂预留,尽量使同一个VT在先后申请时获得相同的Share-Group。
若DDR上组资源发生变化,则检查本地Share-Group资源分配情况,如果组资源变化对Share-Group有影响,则重新分配Share-Group,并向Share-Group变化的相关PE发送DG消息。
103、PE生成本地组状态表。
PE收到DDR返回的DG消息后,生成本地组状态表(RD,S,G)并向RP(Rendezvous Point,汇聚点)发送(S,G)和(*,G)。
随后,通过PIM(Protocol Independent Multicast,独立组播协议)在公网上实现组播转发。
104、PE向DDR发送KEEPALIVE(长连接)消息。
图2为本发明实施例的PE向DDR发送消息以维护本地组状态表的示意图,参见图2,
201、PE定时向DDR发送KEEPALIVE消息,来维护本地组状态表,KEEPALIVE消息中携带的信息包括:PE的loopback地址、MT地址、VPN实例的RD、(S,G)、(*,G)。
202、DDR收到KEEPALIVE消息并检查。
203、检查KEEPALIVE消息正确后返回ACK(确认)消息给PE并刷新定时器;
204、若检查相关信息不正确则返回NCK(不确认)消息给PE。
若DDR在连续N秒没有收到PE发来的KEEPALIVE消息,则清除VPN实例的RD、MT地址等相关表项,释放本地分配的资源。N的数值可根据当前网络状况设定。
205、若PE收到DDR返回的NCK消息,则重新向DDR发送RG消息,收到DDR返回的DG消息后刷新本地组状态表。
若PE连续M秒没有收到DDR的ACK消息,则重新向DDR发送RG消息。M的数值可根据当前网络状况设定。
实施例一进一步包括:
若VPN实例取消组播功能,则PE发送取消组CG消息给DDR,表示取消该VPN实例的share-group;DDR收到PE的CG消息,检查解析后,释放本地分配的组资源,并返回ACK消息给PE。
实施例二如图3所示,包括:
301、PE向DDR发送请求切换组RSG消息。
当PE检测到某组播组数据速率高于阈值,需要切换MT时,向DDR发送RSG消息,RSG消息中携带的信息包括:PE的loopback地址、MT地址、VPN实例的RD、(S,G)、私网组地址。阈值可根据当前网络状况设定。
302、DDR发送分配切换组DSG消息给PE。
DDR收到RSG消息后,根据(S,G)和私网组地址确定私网组播组所属VPN,检查本地Switch-Group资源分配情况,分配Switch-Group,发送DSG消息给PE,DSG消息中携带的信息包括:MT地址、VPN实例的RD、私网组地址、Switch-Group的信息。
若DDR上组资源发生变化,则检查本地Switch-Group资源分配情况,如果组资源变化对Switch-Group有影响,则重新分配Switch-Group,并向Switch-Group变化的相关PE发送DSG消息。
303、PE生成本地组状态表。
PE收到DSG消息后生成本地的Switch-Group表项(RD,私网组地址,Switch-Group)。然后通知其它PIM邻居PE。同时向DDR发送的KEEPALIVE消息中增加Switch-Group的相关信息。
304、PE向DDR发送KEEPALIVE消息。
PE定时向DDR发送KEEPALIVE消息,来维护本地组状态表,KEEPALIVE消息中携带的信息包括:MT地址、VPN实例的RD、私网组地址、Switch-Group的信息。DDR收到KEEPALIVE消息,检查相关信息正确后返回ACK消息给PE并刷新定时器;若检查相关信息不正确则返回NCK消息给PE。
若DDR在连续N秒没有收到PE发来的KEEPALIVE消息,则清除VPN实例的RD、MT地址等相关表项,释放本地分配的资源。N的数值可根据当前网络状况设定。
若PE收到DDR返回的NCK消息,则重新向DDR发送RSG消息,收到DDR返回的DSG消息后刷新本地组状态表。
若PE连续M秒没有收到DDR的ACK消息,则重新向DDR发送RSG消息。M的数值可根据当前网络状况设定。
实施例二进一步包括:
当PE检测到某组播组数据速率已经低于阈值,需要切换回原MT时,向DDR发送取消切换组CSG消息,CSG消息中携带的信息包括:PE的loopback地址、MT地址、VPN实例的RD、私网组地址、(S,G)、Switch-Group的信息。DDR收到PE的CSG消息,检查解析后,释放本地分配的资源,并返回ACK消息给PE。
本发明实施例还提供了一种虚拟私有网上资源分配的路由器。参见图4,所述路由器包括:资源分配模块、资源释放模块、消息接收模块、消息发送模块。
所述资源分配模块,用于检查本地资源分配信息,分配组资源。具体地,
所述资源分配模块根据RG消息中VPN实例的VT,检查本地Share-Group资源分配情况,若为新的VT信息,则根据VT的入接口import生成Register消息(S,G),根据出接口export生成Join消息(*,G),分配Share-Group。
所述资源分配模块根据RSG消息中(S,G)和私网组地址确定私网组播组所属VPN,检查本地Switch-Group资源分配情况,分配Switch-Group。
若组资源发生变化,则所述资源分配模块检查本地组资源分配情况,如果组资源变化对组资源分配有影响,则重新分配组资源。
所述资源释放模块,用于释放本地分配的组资源。具体地,
所述资源释放模块检查解析PE发送的CG消息后,释放本地分配的组资源。
所述资源释放模块检查解析PE发送的CSG消息后,释放本地分配的组资源。
所述消息接收模块,用于接收PE发送的消息。具体地,
所述消息可以为:RG消息、CG消息、RSG消息、CSR消息、Keepalive消息。
所述消息接收模块接收PE发送的RG消息。
当PE上VPN实例的VT发生变化时,所述消息接收模块接收PE重新发送的RG消息。
若VPN实例取消组播功能,所述消息接收模块接收PE发送的CG消息。
当PE检测到某组播组数据速率高于阈值,需要切换MT时,所述消息接收模块接收PE发送的RSG消息。
若PE收到DDR返回的NCK消息,所述消息接收模块接收PE重新发送的RSG消息。
当PE检测到某组播组数据速率已经低于阈值,需要切换回原MT时,所述消息接收模块接收PE发送的CSG消息。
所述消息接收模块接收PE定时发送的KEEPALIVE消息。
若所述消息接收模块在连续N秒没有收到PE发来的KEEPALIVE消息,则所述资源释放模块清除VPN实例的RD、MT地址等相关表项,释放本地分配的资源。
所述消息发送模块,用于向PE发送消息。具体地,
所述消息可以为:DG消息、DSG消息、ACK消息、NCK消息。
所述消息接收模块收到RG消息后,所述资源分配模块检查本地组资源分配情况,若为新的VT则分配Share-Group并由所述消息发送模块向PE发送DG消息,否则直接由所述消息发送模块向PE发送DG消息。
所述消息接收模块收到RSG消息后,根据(S,G)和私网组地址确定私网组播组所属VPN,检查本地Switch-Group资源分配情况,分配Switch-Group,由所述消息发送模块发送DSG消息给PE。
所述消息接收模块收到KEEPALIVE消息后,检查相关信息正确后由所述消息发送模块返回ACK消息给PE。
所述消息接收模块收到PE的CG消息并释放本地分配的资源后,由所述消息发送模块返回ACK消息给PE。
所述消息接收模块收到PE的CSG消息并释放本地分配的资源后,由所述消息发送模块返回ACK消息给PE。
所述消息接收模块收到KEEPALIVE消息后,若检查相关信息不正确则由所述消息发送模块返回NCK消息给PE。
本发明实施例还提供了一种虚拟私有网上资源分配的系统。包括:PE、RP和指定分发路由器;
所述PE向所述指定分发路由器请求分配组资源或释放组资源,所述路由器根据所述PE的请求,或者根据本地组资源变化情况分配组资源或释放组资源,所述PE向RP发送(S,G)和(*,G)后,通过独立组播协议PIM在公网上实现组播转发。
本发明实施例的有益效果如下:
统一集中配置资源数据,便于局部调整,易于维护。且可以避免公网组播组发生冲突。
本发明实施例中的方案或其一部分可以存储在计算机可读介质上,该计算机可读介质可以是包含、存储、传达、传播或者传输计算机程序的介质,所述计算机程序为使用指令以运行本发明实施例所提供的系统装置、系统或者设备的程序,或者是与该指令有关的程序。该计算机可读介质可以是电子、磁、电磁、光学、红外或者半导体的系统、装置、设备、传播介质或者计算机存储器。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。