一种组播业务实现方法及其设备
技术领域
本发明涉及通信领域的组播技术,尤其涉及一种组播业务实现方法及其设备。
背景技术
IP视频监控已经成为安防领域的主流和未来。监控业务中的实况点播业务存在多方点播者同时观看某一摄像机场景的需求。显然,IP组播是解决这一需求的很好途径。
图1示出了一种典型的组网,其中的路由器上启用了PIM(ProtocolIndependentMulticast,协议无关组播)协议。如果两台监控主机和电视墙要同时点播同一个摄像机的视频流,那么,摄像机只需要出一路组播流,路由器Rtr-1复制出两份组播流,路由器Rtr-3复制出两份组播流。如此,相对于单播的实况点播,摄像机的压力就小了很多,不用负责流的复制,网络设备根据接收者的需求在合适的节点复制组播流,网络流量压力也小了很多。
虽然有如上的优点,但在监控业务中存在表项容量消耗的问题。监控电视墙每隔5秒的轮切,即每隔5秒加入十多个组播组接收,然后离开组再加入一批,那些离开的组虽然不会再转发组播流,但是组播转发表项并不会立即删除,而是要保留3分钟左右的时间,这是为了防止有频繁的接收和离开者产生对PIM路由器的性能消耗而设计的。但是大量无用组播转发表项的残留会占用紧张的转发表项容量。
发明内容
本发明实施例提供了一种组播业务实现方法及其设备,用以减少组播转发表容量。
本发明实施例提供的组播业务实现方法,包括:
当满足建立组播隧道的条件时,组播接收侧指定路由器DR向相应组播组对应的组播源侧设备发送携带有自己的组播隧道配置信息的组播加入报文,以触发该组播源侧设备为相应组播组建立与该组播接收侧DR之间的组播隧道和生成相应组播转发表项,以及将该组播隧道接口作为出接口添加到该组播转发表项中,所述组播接收侧DR在建立组播隧道后生成相应组播转发表项;
当组播接收侧DR从组播隧道接收到报文后,解封装得到组播数据报文,并根据组播转发表项将该组播数据报文转发给组播接收客户端;其中,所述组播数据报文是组播源侧设备根据组播转发表项获得组播隧道接口后,将组播数据报文进行隧道封装并通过相应组播隧道转发过来的;
其中,所述满足建立组播隧道的条件是指:当组播接收侧DR接收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定针对所请求加入的组播组当前仅存在特定业务的组播接收客户端,且还没有为所请求加入的组播组建立组播隧道;或者,当发生最短路径树SPT切换时,判定其所连接的组播接收客户端均为特定业务的组播接收客户端。
优选的,该方法还包括:当组播接收侧DR接收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,若所请求暂停的组播组对应的组播隧道为连接状态,则将该组播隧道的状态设置为暂停,删除请求暂停的组播组对应的组播转发表项,并向该组播隧道对端设备发送关于组播暂停的状态刷新报文,以触发所述组播隧道对端设备将请求暂停的组播组对应的组播隧道的状态设置为暂停,以及删除所请求暂停的组播组对应的组播转发表项中该组播隧道的出接口;组播接收侧DR接收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,若判定已为所请求加入的组播组建立组播隧道,但该组播隧道状态为暂停,则将该组播隧道的状态设置为连接状态,建立相应组播转发表项,向该组播隧道对端设备发送关于组播加入的状态刷新报文,以触发该组播隧道对端设备将所请求加入的组播组对应的组播隧道的状态设置为连接状态,以及将该组播隧道接口作为出接口添加到相应组播转发表项中。
其中,当组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,若所请求暂停的组播组对应的组播隧道为连接状态,则在将该组播隧道的状态设置为暂停后,还刷新相应组播隧道表项的老化时间;或/和,当组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,若判定已为所请求加入的组播组建立组播隧道,但该组播隧道状态为暂停,则在将该组播隧道的状态设置为连接状态后,还刷新相应组播隧道表项的老化时间,在建立相应组播转发表项后,还刷新所述相应组播转发表项的老化时间。
优选的,该方法还包括:组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,若判定所请求加入的组播组对应的组播隧道已经建立,且状态为连接状态,则刷新相应组播隧道表项和组播转发表项的老化时间,并向所请求加入的组播组对应的组播隧道对端设备发送关于组播加入的组播隧道保活报文,以触发该组播隧道对端设备刷新所请求加入的组播组对应的组播隧道表项和组播转发表项的老化时间;或/和,组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,若发现请求暂停的组播组对应的组播隧道的状态为暂停状态,则刷新相应组播隧道表项的老化时间,并向请求暂停的组播组对应的组播隧道对端的组播源侧设备发送关于组播暂停的组播隧道保活报文,以触发所述组播源侧设备刷新所述请求暂停的组播组对应的组播隧道表项和组播转发表项的老化时间。
优选的,该方法还包括:当组播接收侧DR接收到组播隧道撤销报文后,删除相应组播组的组播隧道表项和组播转发表项,其中,所述组播隧道撤销报文是组播源侧设备在组播转发表项超时老化后发送的;或/和,当组播接收侧DR接收到组播接收客户端发送的携带有特定业务标识的组播结束请求报文后,删除所请求结束的组播组对应的组播转发表项和组播隧道表项,向相应组播隧道对端设备发送组播隧道撤销报文,以触发该隧道对端设备删除所请求结束的组播组对应的组播隧道表项,删除相应组播转发表项中的该组播隧道的接口。
优选的,所述触发组播源侧设备为所请求加入的组播组建立与组播接收侧DR之间的组播隧道和生成相应组播转发表项,以及将该组播隧道接口作为出接口添加到该组播转发表项中,包括:
所述组播接收侧DR将组播隧道配置信息携带于组播加入报文向组播源方向发送后,接收组播源侧设备发送的组播隧道建立请求报文;其中,所述组播隧道建立请求报文中携带有所述组播源侧设备的组播隧道配置信息;
所述组播接收侧DR根据所述组播隧道建立请求报文中携带的隧道配置信息生成组播隧道表项;
所述组播接收侧DR向所述组播源侧设备发送隧道建立确认报文,以触发所述组播源侧设备根据所述组播接收侧DR的隧道配置信息为所请求加入的组播组生成组播隧道表项和组播转发表项,以及将该组播隧道的接口作为出接口添加到该组播转发表项中。
优选的,所述组播源侧设备为组播源侧DR,所述当组播接收侧DR接收到组播接收客户端发送的组播加入请求报文后,向所请求加入的组播组对应的组播源侧设备发送携带有自己的组播隧道配置信息的组播加入报文,具体为:当组播接收侧DR接收到组播接收客户端发送的组播加入请求报文后,向所请求加入的组播组对应的汇聚点RP方向发送组播加入报文,由该RP通过组播加入报文将所述组播接收侧DR的组播隧道配置信息发送给组播源侧DR;
或者,所述组播源侧设备为RP,所述当组播接收侧DR接收到组播接收客户端发送的组播加入请求报文后,向所请求加入的组播组对应的组播源侧设备发送携带有自己的组播隧道配置信息的组播加入报文,具体为:当组播接收侧DR接收到组播接收客户端发送的组播加入请求报文后,获取所请求加入的组播组对应的RP信息,并以单播方式向该RP发送组播加入报文,所述组播加入报文中携带有所述组播接收侧DR的组播隧道配置信息。
优选的,在发生SPT切换之前还包括:组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,向所请求加入的组播组对应的RP发送组播加入报文,以触发生成所述RP到所述组播接收侧DR之间的共享树或汇集树RPT分支;组播接收侧DR在接收到组播源侧DR发送的组播数据报文后,在判定需要执行所述SPT切换时,向所述组播源侧设备发送携带有自己的组播隧道配置信息的组播加入报文,以触发建立所述组播隧道的过程;在所述组播隧道建立后,组播接收侧DR向RP发送组播剪枝文,以触发RP向组播源方向发送组播剪枝报文。
优选的,所述组播接收侧DR发送的组播加入报文中还携带有特定业务标志,以使所述组播接收侧DR与所述组播源侧设备之间的中间设备,在接收到组播加入报文后,根据其中携带的特定业务标志,拒绝生成相应组播转发表项。
优选的,所述特定业务标志标识组播业务的类型为轮切业务。
本发明另一实施例提供的组播业务实现方法,包括:
组播源侧设备接收到组播接收侧DR发送的携带有组播隧道配置信息的组播加入报文后,针对所请求加入的组播组,发起与所述组播接收侧DR之间的组播隧道建立过程,并在组播隧道建立后,将所建立的组播隧道的接口作为出接口添加到所请求加入的组播组对应的组播转发表项中;
当所述组播源侧设备接收到组播数据报文后,若根据组播转发表项查询到出接口为组播隧道接口,则将所述组播数据报文通过查询到的组播隧道接口向组播隧道对端的组播接收侧DR转发,以通过所述组播接收侧DR转发所述组播数据报文到组播接收客户端。
优选的,该方法还包括:当组播源侧设备接收到组播接收侧DR发送的关于组播暂停的状态刷新报文后,将所请求暂停的组播组对应的组播隧道的状态设置为暂停,并删除所请求暂停的组播组对应的组播转发表项中该组播隧道的出接口;其中,所述关于组播暂停的状态刷新报文是组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,发现所请求暂停的组播组对应的组播隧道为连接状态时发送的;
当组播源侧设备接收到组播接收侧DR发送的关于组播加入的状态刷新报文后,将所请求加入的组播组对应的组播隧道的状态设置为连接状态,并将该组播隧道接口作为出接口添加到相应组播转发表项中;其中,所述关于组播加入的状态刷新报文是所述组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定已为所请求加入的组播组建立组播隧道,但该组播隧道状态为暂停时发送的。
优选的,该方法还包括:当组播源侧设备在接收到组播接收侧DR发送的关于组播暂停的状态刷新报文,并将所请求暂停的组播组对应的组播隧道的状态设置为暂停后,刷新相应组播隧道表项的老化时间,在删除所请求暂停的组播组对应的组播转发表项中该组播隧道的出接口后,刷新相应组播转发表项的老化时间;或/和
当组播源侧设备接收到组播接收侧DR发送的关于组播加入的状态刷新报文,并将所请求加入的组播组对应的组播隧道的状态设置为连接状态后,刷新相应组播隧道表项的老化时间,将该组播隧道接口作为出接口添加到相应组播转发表项中后,刷新相应组播转发表项的老化时间。
优选的,该方法还包括:当组播源侧设备接收到组播接收侧DR发送的关于组播加入的组播隧道保活报文后,刷新所请求加入的组播组对应的组播隧道表项和组播转发表项的老化时间;其中,所述关于组播加入的组播隧道保活报文是组播接收侧DR在收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定所请求加入的组播组对应的组播隧道已经建立且状态为连接状态时发送的;或/和
当组播源侧设备接收到组播接收侧DR发送的关于组播暂停的组播隧道保活报文后,刷新所述请求暂停的组播组对应的组播隧道表项和组播转发表项的老化时间;其中,所述关于组播暂停的组播隧道保活报文是组播接收侧DR在收客户端发送的携带有特定业务标志的组播暂停请求报文后,判定所请求暂停的组播组对应的组播隧道的状态为暂停状态时发送的。
优选的,该方法还包括:当组播源侧设备接收到组播接收侧DR发送的组播隧道撤销报文后,删除所请求结束的组播组对应的组播隧道表项,删除相应组播转发表项中的该组播隧道的接口;其中,所述组播隧道撤销报文是组播接收侧DR在收到组播接收客户端发送的携带有特定业务标识的组播结束请求报文后发送的。
优选的,所述组播源侧设备发起与所述组播接收侧DR之间的组播隧道建立过程,并在组播隧道建立后,将所建立的组播隧道的接口作为出接口添加到所请求加入的组播组对应的组播转发表项中,包括:
组播源侧设备在接收到组播接收侧DR发送的携带有组播隧道配置信息的组播加入报文后,向所述组播接收侧DR发送携带有自身的组播隧道配置信息的组播隧道建立请求报文,以触发所述组播接收侧DR根据所述组播隧道建立请求报文中携带的隧道配置信息生成组播隧道表项;
所述组播源侧设备接收所述组播接收侧DR发送的隧道建立确认报文后,根据所述组播接收侧DR的隧道配置信息为所请求加入的组播组生成组播隧道表项和组播转发表项,以及将该组播隧道的接口作为出接口添加到该组播转发表项中。
优选的,所述组播源侧设备为组播源侧DR或RP。
优选的,所述组播接收侧DR发送的组播加入报文中还携带有特定业务标志,以使所述组播接收侧DR与所述组播源侧设备之间的中间设备,在接收到组播加入报文后,根据其中携带的特定业务标志,拒绝生成相应组播转发表项。
优选的,所述特定业务标志标识组播业务的类型为轮切业务。
本发明实施例还提供了一种路由交换设备,应用于组播接收侧,包括:组播控制模块、组播隧道处理模块、组播表项处理模块和组播转发模块,其中:
组播控制模块,用于在满足建立组播隧道的条件时,向相应组播组对应的组播源侧设备发送携带有自己的组播隧道配置信息的组播加入报文,以触发该组播源侧设备为相应组播组建立与该组播接收侧DR之间的组播隧道和生成相应组播转发表项,以及将该组播隧道接口作为出接口添加到该组播转发表项中;以及,在建立组播隧道后指示组播表项处理模块生成相应组播转发表项;其中,所述满足建立组播隧道的条件是指:当接收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定针对所请求加入的组播组当前仅存在特定业务的组播接收客户端,且还没有为所请求加入的组播组建立组播隧道;或者,当发生最短路径树SPT切换时,判定本设备所连接的组播接收客户端均为特定业务的组播接收客户端;
组播隧道处理模块,用于与组播源侧设备建立组播隧道;
组播表项处理模块,用于根据所述组播控制模块的指示处理相应组播转发表项;
组播转发模块,用于在从组播隧道接收到报文后,解封装得到组播数据报文,并根据组播转发表项将该组播数据报文转发给组播接收客户端;其中,所述组播数据报文是组播源侧设备根据组播转发表项获得组播隧道接口后,将组播数据报文进行隧道封装并通过相应组播隧道转发过来的。
优选的,所述组播控制模块还用于,在接收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,若所请求暂停的组播组对应的组播隧道为连接状态,则指示所述组播隧道处理模块将该组播隧道的状态设置为暂停,指示所述组播表项处理模块删除请求暂停的组播组对应的组播转发表项,并向该组播隧道对端设备发送关于组播暂停的状态刷新报文,以触发所述组播隧道对端设备将请求暂停的组播组对应的组播隧道的状态设置为暂停,以及删除所请求暂停的组播组对应的组播转发表项中该组播隧道的出接口;以及
在接收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,若判定已为所请求加入的组播组建立组播隧道,但该组播隧道状态为暂停,则指示所述组播隧道处理模块将该组播隧道的状态设置为连接状态,指示所述组播表项处理模块建立相应组播转发表项,并向该组播隧道对端设备发送关于组播加入的状态刷新报文,以触发该组播隧道对端设备将所请求加入的组播组对应的组播隧道的状态设置为连接状态,以及将该组播隧道接口作为出接口添加到相应组播转发表项中。
优选的,所述组播加入报文中还携带有特定业务标志,以使所述组播接收侧DR与所述组播源侧设备之间的中间设备,在接收到组播加入报文后,根据其中携带的特定业务标志,拒绝生成相应组播转发表项。
本发明实施例还提供了一种路由交换设备,应用于组播源侧,包括:组播控制模块、组播隧道处理模块、组播表项处理模块和组播转发模块,其中:
组播控制模块,用于在接收到组播接收侧DR发送的携带有组播隧道配置信息的组播加入报文后,针对所请求加入的组播组,指示所述组播隧道处理模块发起与所述组播接收侧DR之间的组播隧道建立过程,并在组播隧道建立后,指示所述组播表项处理模块将所建立的组播隧道的接口作为出接口添加到所请求加入的组播组对应的组播转发表项中;
组播隧道处理模块,用于与组播接收侧DR建立组播隧道;
组播表项处理模块,用于根据所述组播控制模块的指示处理相应组播转发表项;
组播转发模块,用于在接收到组播数据报文后,若根据组播转发表项查询到出接口为组播隧道接口,则将所述组播数据报文通过查询到的组播隧道接口向组播隧道对端的组播接收侧DR转发,以通过所述组播接收侧DR转发所述组播数据报文到组播接收客户端。
优选的,所述组播控制模块还用于,在接收到组播接收侧DR发送的关于组播暂停的状态刷新报文后,指示所述组播隧道处理模块将所请求暂停的组播组对应的组播隧道的状态设置为暂停,指示所述组播表项处理模块删除所请求暂停的组播组对应的组播转发表项中该组播隧道的出接口;其中,所述关于组播暂停的状态刷新报文是组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,发现所请求暂停的组播组对应的组播隧道为连接状态时发送的;
在接收到组播接收侧DR发送的关于组播加入的状态刷新报文后,指示所述组播隧道处理模块将所请求加入的组播组对应的组播隧道的状态设置为连接状态,指示所述组播表项处理模块将该组播隧道接口作为出接口添加到相应组播转发表项中;其中,所述关于组播加入的状态刷新报文是所述组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定已为所请求加入的组播组建立组播隧道,但该组播隧道状态为暂停时发送的。
优选的,所述组播接收侧DR发送的组播加入报文中还携带有特定业务标志,以使所述组播接收侧DR与所述组播源侧设备之间的中间设备,在接收到组播加入报文后,根据其中携带的特定业务标志,拒绝生成相应组播转发表项。
优选的,所述组播源侧设备为组播源侧DR或RP。
本发明的上述实施例中,针对特定组播业务,组播接收侧DR与组播源侧设备建立组播隧道,并且在组播转发表项中添加该组播隧道接口,从而使组播数据通过该组播隧道从组播源侧传输到组播接收侧,与现有技术相比,本发明实施例由于通过组播隧道传输组播数据报文,而不使用传统组播转发路径转发组播数据报文,因而可减少传统组播转发路径上的设备的组播转发表项容量。
附图说明
图1为现有技术中监控系统组网示意图;
图2为本发明实施例中的监控系统组网示意图;
图3为本发明实施例提供的组播业务发起流程示意图;
图4为本发明实施例提供的组播业务切换流程示意图;
图5为本发明实施例提供的组播业务结束流程示意图;
图6为本发明实施例提供的路由交换设备的结构示意图之一;
图7为本发明实施例提供的路由交换设备的结构示意图之二。
具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种利用隧道技术实现组播转发的方案。
下面结合附图对本发明实施例进行详细描述。
参见图2,为一种监控系统中典型的PIM域网络架构,其中的路由器支持PIM协议。客户端1和客户端2分别为组播接收设备,业务终端1和业务终端2分别为组播源。在监控系统中,客户端可以是监控主机也可以是电视墙设备等可以进行视频点播业务的设备,业务终端可以是摄像机等提供视频流的设备。组播接收设备和组播源分别连接有DR(DesignatedRouter,指定路由器),在充当DR的设备上使能IGMP(InternetGroupManagementProtocol,Internet组管理协议),组播接收设备的DR负责向RP(RendezvousPoint,汇集点)发送PIM加入报文,组播源侧DR负责向RP发送组播源注册报文。RP可以通过静态配置方式指定,也可以通过自举机制动态选举RP,使不同的RP服务于不同的组播组。
在现有技术中,当组播接收者请求加入一个组播组G时,先通过IGMP成员报告报文通知与其直连的DR,DR向该组播组所对应的RP方向逐跳发送PIM加入报文,从DR到RP所经过的路由器就形成了RPT(RendezvousPointTree,共享树或汇集树)的分支(RPT以RP为根,以DR为叶子),这些路由器都在其组播转发表中生成了(*,G)表项,这里的“*”表示来自任意组播源。当发往组播组G的组播数据流经RP时,数据就会沿着已建立好的RPT到达DR,进而到达组播接收者。可以看出,在RP到组播接收者直连的DR之间的路径上,各路由器均建立并维护组播转发表项。
本发明实施例中,如果给定组播组的接收侧DR只有轮切这个特定业务的接收者,那么当DR接收到IGMP成员报告报文后,向上游发送携带特定业务标志和隧道配置信息的PIM加入报文,中间路由器可以只转发PIM加入报文而不建立对应的组播表项,直到PIM加入报文发送到组播源侧DR,由组播源侧DR和接收侧DR动态协商建立隧道,组播源侧DR添加隧道的出接口,向给定组播组接收设备发送的组播数据由隧道直接发送到接收侧DR,并进行解封装,发送给接收设备,从而减少组播转发链路上的表项资源占用。
当业务轮切暂停时,组播接收设备发送IGMP暂停组报文,使得接收侧DR只需向组播源侧DR单播发送隧道状态刷新报文(即关于组播暂停的状态刷新报文),触发组播源侧DR更新隧道状态和删除组播隧道出接口。当业务轮切继续点播时,组播接收设备发送IGMP成员报告报文,使得组播接收侧DR只需向组播源侧DR单播发送隧道建立状态刷新报文(即关于组播加入的状态刷新报文),触发组播源侧DR更新隧道状态和添加组播隧道出接口,从而在业务进行轮切时,组播路由器无需发送PIM离开报文或加入报文,以及组播表项的删除和重建。
与此类似的,一种替代实现方式是:给定组播组的组播接收侧DR只有轮切这个特定业务的接收者的情况下,当组播接收侧DR接收到IGMP成员报告报文后,向RP动态协商建立隧道,RP生成组播转发表项,添加隧道的出接口,向给定组播组的组播接收设备发送的组播数据由隧道直接发送到组播接收侧DR。
下面详细描述本发明实施例的实现过程。
实施例一
本实施例描述了通过在组播接收侧DR和组播源侧DR之间建立组播隧道,以实现组播业务的过程。
本发明实施例中,在组网配置时,分别在组播源连接的DR和组播接收设备相连的DR上进行相关隧道配置。本发明实施例以采用GRE(GenericRoutingEncapsulation,通用路由封装)技术建立隧道为例,这种情况下,在DR上进行如下隧道配置:
在每个DR上创建一个Tunnel接口,在每个DR上设置Tunnel接口的IP地址,使得所有的Tunnel接口IP地址在同一个网段,配置设备本地的LoopBack口作为Tunnel接口的源端地址。配置隧道模式为组播GRE。
当组播接收设备欲建立与组播源的轮切业务时,会发送IGMP成员报告报文,以触发组播接收侧DR和组播源侧DR之间建立GRE隧道,并在组播源侧DR的相应组播表项中添加该GRE隧道的出接口,其流程可如图3所示。
参见图3,为本发明实施例提供的轮切业务建立流程,该流程可包括:
步骤301,组播接收设备欲建立与组播源的轮切业务关系时,发送IGMP成员报告报文,其中携带特定业务标志,以表明所请求的业务类型为轮切。
具体实现时,可以对现有的IGMP成员报告报文中进行扩展,使其中携带用于标识组播轮切业务的特定业务标志。所谓轮切通常是指客户端按照一定的顺序依次与多个业务源端建立业务关系的操作。
步骤302,组播接收侧DR收到带有特定业务标志的IGMP成员报告报文后,生成PIM(*,G)表项。具体实施时,组播接收侧DR可在该PIM(*,G)表项的出接口中,对应于该组播接收设备的出接口设置该特定业务标志。
步骤303,组播接收侧DR判断对应于所请求的组播组是否仅存在轮切业务组播接收设备,若是则转入步骤304;否则按照现有方式处理,即通过发送PIM(*,G)加入报文建立RPT分支,通过该RPT分支传输组播数据报文。
具体实施时,组播接收侧DR可根据所请求的组播组对应的PIM表项进行判断,比如,若PIM(*,G)表项的出接口中仅存在设置了特定业务标志的出接口,则认为组播组G仅存在轮切业务组播接收设备。
步骤304,组播接收侧DR判断对应于所请求的组播组是否建立有组播GRE隧道,如果没有,则转入步骤305。
本流程是轮切业务的初始建立流程,当前对于所请求的组播组还未建立GRE组播隧道,因此本流程仅对判断结果为否的情况进行具体描述,判断结果为是的情况将在图4所示流程中进行具体描述。
步骤305,组播接收侧DR将自身的组播GRE隧道配置信息添加到PIM(*,G)加入报文中,向相应组播组对应的RP方向发送。
具体实施时,如果组播接收侧DR查询到PIM(*,G)表项中只有特定业务的点播者的出接口,则检索自身的隧道配置信息,若存在隧道模式为组播GRE的隧道配置信息,则将该组播GRE的隧道配置信息携带于PIM(*,G)加入报文,该报文的源地址指向RP。该PIM(*,G)加入报文中还携带了用于标识组播轮切业务的特定业务标志,如可在组播组相应的标志位设置该特定业务标志。所携带的隧道配置信息可包括:Tunnel接口IP地址,Tunnel接口的源端地址。
在组播接收侧DR与组播组对应的RP之间连接有中间路由器的情况下,中间路由器收到下游路由器发送的PIM(*,G)加入报文后,若解析出其中携带有特定业务标志,生成带有特定业务标志的组播表项(*,G),并根据PIM(*,G)加入报文的源地址,即RP地址,通过RPF(ReversePathForwarding,逆向路径转发)查找出接口,往RP发送。优选的,为减少组播表项,中间路由器在接收到携带有特定业务标志的PIM(*,G)加入报文后,不生成组播表项。
步骤306,RP向组播源侧DR发送PIM(S,G)加入报文,其中携带有组播接收侧DR的组播GRE隧道配置信息。
RP在接收到组播接收侧DR发送的PIM(*,G)加入报文后的处理过程与现有技术类似,所不同的是:在向组播源侧DR发送PIM(S,G)加入报文时,其中携带有组播接收侧DR的组播GRE隧道配置信息,以触发组播源侧DR发起与组播接收侧DR之间的组播隧道建立过程。
具体的,RP收到带有特定业务标志的PIM(*,G)加入报文后,检查本设备是否有对应的PIM(S,G)表项,如果存在,则向组播源S的方向发送PIM(S,G)加入报文,其中携带有该特定业务标志以及组播接收侧DR的隧道配置信息。如果不存在,则RP生成带有特定业务标志的PIM(*,G)表项,记录组播接收侧DR的隧道配置信息(如Tunnel接口IP地址,Tunnel接口的源端地址);当RP接收到与组播源侧DR发送的注册报文后,生成PIM(S,G)表项,向组播源S方向发送带有特定业务标志和组播接收侧DR的组播隧道配置信息的PIM(S,G)加入报文,并删除对应的PIM(*,G)表项出接口信息(如果该(*,G)表项出接口为空,则删除整个(*,G)表项)。这样,从RP到组播源S所经过的路由器就形成了SPT(ShortestPathTree,最短路径树)的分支,这些路由器都在其组播转发表中生成(S,G)表项。优选的,为减少组播表项,这些路由器(指从RP到组播源S所经过的路由器)也可以不生成(S,G)表项,而是根据PIM(S,G)加入报文的源地址,即S的地址,通过RPF检查,将带有特定业务标志的PIM(S,G)加入报文直接往S发送。具体实施时,RP在PIM(S,G)加入报文中,组播组相应的标志位上设置特定业务标志,其后的源地址指向S,同时还携带组播接收侧DR的隧道配置信息。
步骤307,组播源侧DR接收到携带有特定业务标志和组播接收侧DR的组播隧道配置信息的PIM(S,G)加入报文后,根据报文中携带的组播接收侧DR的隧道配置信息,发起与组播接收侧DR之间的GRE隧道建立过程,并将该GRE隧道在本设备上的接口添加到相应组播转发表(S,G)表项的出接口中。
具体实施时,在建立GRE隧道过程中,组播源侧DR向组播接收侧DR发送GRE隧道建立请求报文;组播接收侧DR收到GRE隧道建立请求后,与组播源侧DR进行GRE隧道建立的协商,比较组播组以及隧道目的地址、隧道目的端地址等信息,确认信息无误后,在本设备上建立组播GRE表项,在本设备上建立状态为UP的组播GRE表项后,生成该组播组的组播转发表(S,G)表项,该(S,G)表项的入接口为组播GRE隧道,出接口为连接组播接收设备的接口。GRE隧道状态为UP后,组播接收侧DR向组播源侧DR发送隧道建立确认报文,组播源侧DR收到隧道建立确认报文后,将该组播GRE隧道在本设备上的接口作为出接口,添加到组播转发(S,G)表项中,并建立组播GRE表项。其中,组播GRE表项中可包括:组播地址、隧道目的地址、隧道目的端地址、隧道状态等。
进一步的,上述流程中,组播接收侧DR发送关于某组播组的携带隧道配置信息的PIM(*,G)加入报文后,如果在收到下一个关于该组播组的携带特定业务标志位的IGMP成员报告报文时,还未建立该组播组对应的组播GRE隧道,则会继续向RP发送关于该组播组的携带隧道配置信息的PIM(*,G)加入报文,以保活RP上生成的该组播组对应的带有特定业务标志的PIM(*,G)表项。
进一步的,上述流程中,组播接收侧DR建立组播GRE后,收到下一个关于该组播组G的携带特定业务标志位的IGMP成员报告报文时,若发现关于该组播组G的组播GRE隧道已经建立,则刷新关于该组播组G的组播GRE隧道表项老化时间,并刷新对应的组播转发表(S,G)表项的老化时间,并且向组播源侧DR发送组播GRE保活报文;组播源侧DR接收到该组播GRE保活报文后,刷新关于该组播组G的组播GRE隧道表项老化时间,刷新对应的组播转发表(S,G)表项的老化时间。
进一步的,上述流程中,在生成或刷新组播转发表项时,可对相应组播路由表项也进行相同处理。
通过图3所示的流程,在组播接收侧DR和组播源侧DR之间建立了组播GRE隧道后,在组播接收侧DR和组播源侧DR上,针对轮切业务对应的组播组分别创建了组播转发表项,其中,组播源侧DR上该组播转发表项的出接口为该组播组对应的组播GRE隧道口,组播接收侧DR上该组播转发表项的入接口为该组播组对应的组播GRE隧道口。当组播源发送的组播数据报文到达组播源侧DR后,组播源侧DR根据组播数据报文查询组播转发表,匹配到组播转发表项(S,G)后,获取该组播转发表项(S,G)的出接口,由于该表项的出接口中包含GRE隧道接口,因此该DR将一份组播数据报文发往GRE隧道接口,GRE隧道接口再封装GRE头,从GRE隧道口转发出去。组播接收侧DR从GRE隧道收到数据后,剥离GRE头,发现载荷为组播数据报文,然后根据组播转发表转发该组播数据报文到组播接收设备。
参见图4,为本发明实施例提供的进行业务轮切的流程,该流程可包括:
步骤401,组播接收设备向原组播源对应的组播组发送IGMP暂停组报文,向新的组播源对应的组播组发送IGMP成员报告报文,该IGMP暂停组报文和IGMP成员报告报文中携带有特定业务标志,该特定业务标志标识业务类型为轮切。
具体实施时,组播接收设备进行业务轮切时,需要停止与原来的组播源的业务连接,与新的组播源建立业务连接。为了利用已经建立好的组播GRE隧道资源,组播接收设备不发送IGMP离开组报文,而是发送本发明实施例新定义的带有特定业务标志的IGMP暂停组报文。
步骤402~405,组播接收侧DR收到带有特定业务标志的IGMP暂停组报文后,更新PIM(*,G)表项状态,即更新为暂停状态,并判断是否存在对应的组播GRE表项,如果存在,则将组播GRE隧道的状态从连接状态更新为暂停状态(该组播GRE隧道当前的状态为连接状态),删除对应的组播转发(S,G)表项,并向组播源侧DR发送关于相应组播组(即请求暂停的组播组)的状态刷新报文(即关于组播暂停的状态刷新报文);组播源侧DR收到状态刷新报文后,将相应组播GRE隧道的状态设置为暂停状态,删除对应的组播转发(S,G)表项中的组播GRE隧道出接口。进一步的,为了保活组播GRE隧道和组播转发表项,组播接收侧DR在更新组播GRE隧道状态后还刷新相应组播隧道表项的老化时间;组播源侧DR在更新组播GRE隧道的状态后还刷新相应组播隧道表项的老化时间,在更新组播转发表项后还刷新该组播转发表项的老化时间。
如果不存在对应的组播GRE表项,则组播接收侧DR向RP发送携带特定业务标志的PIM(*,G)剪枝报文;RP接收到PIM(*,G)剪枝报文后,删除RP上的PIM(*,G)表项。
步骤406~409,组播接收侧DR收到IGMP成员报告报文后,若发现关于所请求的组播组的组播GRE隧道已经建立,但状态为暂停状态,则刷新关于该组播组的组播GRE隧道表项状态为UP(UP状态也可称为连接状态),生成该组播组的组播转发表(S,G)表项,该(S,G)表项的入接口为组播GRE隧道接口,出接口为连接组播接收设备的接口,并且,组播接收侧DR向组播源侧DR发送隧道建立状态刷新报文(即关于组播加入的状态刷新报文);组播源侧DR接收到该报文后,刷新组播GRE表项状态为UP,在组播源侧DR的组播转发(S,G)表项中,添加该组播GRE隧道的出接口。进一步的,为了保活组播GRE隧道和组播转发表项,组播接收侧DR在更新组播GRE隧道状态后还刷新相应组播隧道表项的老化时间,在建立组播转发表项后还刷新该表项的老化时间;组播源侧DR在更新组播GRE隧道的状态后还刷新相应组播隧道表项的老化时间,在向组播转发表项中添加GRE隧道的出接口后还刷新该组播转发表项的老化时间。
若发现关于该组播组G的组播GRE隧道没有建立,则按照图3所示流程进行处理,建立组播接收侧DR和组播源侧DR之间的隧道,以及在组播接收侧DR和组播源侧DR上建立相应组播转发表项。
需要说明的是,组播接收侧DR收到IGMP暂停组报文后的处理,与收到IGMP成员报告报文的处理,没有严格的时序要求。
切换后新的组播源发送的组播数据报文到达组播源侧DR后,组播源侧DR查组播转发表,获得GRE隧道接口,将该组播数据报文进行GRE封装后通过该隧道发送到组播接收侧DR;组播接收侧DR从GRE隧道收到数据后,剥离GRE头,发现载荷为组播数据报文,然后根据组播转发表转发该组播数据报文到组播接收设备。
参见图5为本发明实施例提供的结束轮切业务的处理流程,该流程可包括:
步骤501,组播接收设备结束轮切业务时,发送关于轮切业务的到所有组播源的IGMP离开组报文,其中携带特定业务标志。
步骤502~503,组播接收侧DR收到带有特定业务标志的IGMP离开组报文后,删除相应PIM(*,G)表项的出接口,进一步的,如果出接口为空,则删除该表项;并且,判断是否存在对应的组播GRE表项,如果存在,则转入步骤504;如果不存在,则转入步骤506。
步骤504,组播接收侧DR删除对应组播GRE隧道表项,删除对应的组播转发(S,G)表项,并向组播源侧DR发送组播隧道撤销报文。
步骤505,组播源侧DR收到组播隧道撤销报文后,删除相应的组播GRE隧道表项,删除对应的组播转发(S,G)表项的组播GRE出接口。
步骤506~507,组播接收侧DR向RP发送携带特定业务标志的PIM(*,G)剪枝报文,RP接收到该报文后删除RP上的对应的PIM(*,G)表项。
进一步的,本发明的上述各实施例中,组播接收设备可定期发送关于轮切业务所有组播源的IGMP暂停组报文或/和IGMP成员报告报文,其中携带特定业务标志,以刷新组播接收侧DR的相关组播表项(如PIM的(*,G)表项、组播路由表项或/和组播转发表项)的老化时间和组播GRE表项的老化时间。具体的,若组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的IGMP成员报告报文后,若判定所请求加入的组播组对应的组播隧道已经建立,且状态为UP状态,则刷新相应组播隧道表项和组播转发表项的老化时间,并向所请求加入的组播组对应的组播源侧DR发送关于该组播组的组播隧道保活报文(此处称为关于组播加入的组播隧道保活报文),以触发该组播源侧DR刷新所请求加入的组播组对应的组播隧道表项和组播转发表项的老化时间。若组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的IGMP暂停组报文后,若发现请求暂停的组播组对应的组播隧道的状态为暂停状态,则刷新相应组播隧道表项的老化时间,并向请求暂停的组播组对应的组播隧道对端的组播源侧DR发送隧道保活报文(此处称为关于组播暂停的组播隧道保活报文),以触发该组播源侧DR刷新所请求暂停的组播组对应的组播隧道表项的老化时间,还可进一步刷新相应组播转发表项的老化时间。
进一步的,本发明的上述各实施例中,如果组播源侧DR上的组播(S,G)表项因超时而老化,则组播源侧DR删除该老化的组播转发表项并删除相应的组播GRE表项,并向组播接收侧DR发送关于该组播组(即老化掉的组播表项对应的组播组)的组播隧道撤销报文;组播接收侧DR接收到该组播隧道撤销报文后,删除相应组播转发表项,并删除相应的组播GRE表项。组播源侧DR上的组播转发表项超时老化的原因包括但不限于:因为组播源侧DR链路故障,而导致组播源侧DR接收不到组播数据报文,导致组播转发表(S,G)表项因超时而老化。这样,设备返回到初始状态。
进一步的,上述各流程中,在生成或刷新组播转发表项时,可对相应组播路由表项也进行相同处理。
实施例二
本实施例描述了通过在组播接收侧DR和组播源侧DR之间建立组播隧道,以实现组播业务的过程。实施例二与实施例一的主要区别在于:组播接收侧DR在接收到组播接收设备发送的IGMP成员报告报文后,按照现有方式向相应组播组RP发送PIM(*,G)加入报文,其中不携带组播接收侧DR的组播GRE隧道配置信息以及用于标识轮切业务的特定业务标志,而是当组播接收侧DR接收到组播数据报文后、进行SPT切换时,将组播接收侧DR自己的组播GRE隧道配置信息携带于PIM(S,G)加入报文中发送。
具体的,组播接收侧DR在接收到带有特定业务标志的IGMP成员报告报文后,按照现有方式向相应RP方向发送PIM(*,G)加入报文,建立从RP到该组播接收侧DR的RPT分支。组播源侧DR发送(S,G)组播数据报文,该组播数据报文沿该RPT分支到达组播接收侧DR后,组播接收侧DR在判决需要进行SPT切换时,向组播源方向发送PIM(S,G)加入报文,该报文的组播组相应的标志位设定了特定业务标志(设置特定业务标志为可选操作,设置特定业务标志的目的是使组播接收侧DR与组播源侧DR之间的中间设备,在接收到组播加入报文后,根据其中携带的特定业务标志,拒绝生成相应组播转发表项),其后的源地址指向组播源地址,该报文还携带了该DR的隧道配置信息(如Tunnel接口IP地址,Tunnel接口的源端地址);当组播源侧DR收到组播接收侧DR发送的携带了特定业务标志和隧道配置信息的PIM(S,G)加入报文后,发起与组播接收侧DR间的GRE隧道建立过程,通过协商建立GRE隧道,并将该GRE隧道接口添加到组播转发表项(S,G)表项的出接口中。组播接收侧DR建立组播GRE表项后,更新组播转发(S,G)表项的入接口,并向RP逐跳发送PIM(*,G)剪枝报文,RP接收到该剪枝报文后,继续向组播源方向继续发送剪枝报文,接收到PIM(*,G)剪枝报文的设备根据该PIM(*,G)剪枝报文删除相应组播转发表项。
其中,组播接收侧DR可采用现有方式判决是否需要进行SPT切换。通常,组播接收侧DR进行SPT切换判决的依据可以是以下之一:当组播接收侧DR发现组播数据报文速率达到设定阈值时,或者当组播接收侧DR在发送关于某组播组的PIM(*,G)加入报文后,第一次接收到该组播组的组播数据报文时。
进一步的,在发生SPT切换时,组播接收侧DR可先判断其所连接的组播接收客户端是否均为轮切业务的组播接收客户端,若判断为是,则按照本发明实施例的上述流程处理,即,根据该DR所连接的轮切业务组播接收客户端所请求的组播组,向相应组播组对应的组播源方向发送PIM(S,G)加入报文;否则,按照现有方式进行SPT切换。具体实施时,组播接收侧DR可在组播转发表项的出接口中,对应于轮切业务的组播接收设备的出接口设置标识轮切业务的特定业务标志,这样,组播接收侧DR通过查询组播转发表项即可判断其所连接的组播接收客户端是否均为轮切业务的组播接收客户端。
进一步的,上述各流程中,在生成或刷新组播转发表项时,可对相应组播路由表项也进行相同处理。
进一步的,组播接收侧DR和组播源侧DR建立组播隧道后的其它处理,如组播业务轮切、组播业务结束、相关表项的保活刷新等,基本与实施例一相同,在此不再赘述。
实施例三
本实施例描述了在组播接收侧DR和RP之间建立组播隧道,以实现组播业务的过程。
在本实施例中,组播接收侧DR接收到携带有特定业务标志的IGMP成员报告报文后,生成带有特定业务标志的PIM(*,G)表项,并在判断对应于所请求加入的组播组G仅存在轮切业务组播接收设备以及针对所请求加入的组播组G还未建立有组播GRE隧道的情况下,查找表项对应的RP信息,根据查找到的RP信息直接向相应RP单播发起关于组播组G的PIM(*,G)加入报文,其中携带GRE隧道配置信息和特定业务标志。RP接收到该PIM(*,G)加入报文后,根据其中携带的组播接收侧DR的GRE隧道配置信息和特定业务标志,发起组播GRE隧道的建立过程,并在RP的组播转发(S,G)表项中,添加该组播GRE隧道的出接口,在组播接收侧DR上生成组播GRE表项,以及组播转发(S,G)表项。其具体过程基本与组播接收侧DR和组播源侧DR之间的组播GRE隧道建立过程和相关组播表项生成/更新过程类似。
当组播(S,G)报文从组播源到达RP后,RP根据组播转发表项会复制一份到GRE隧道接口,GRE隧道接口再封装GRE头,从该隧道口转发到组播接收侧DR,进行解封装转发。
进一步的,上述各流程中,在生成或刷新组播转发表项时,可对相应组播路由表项也进行相同处理。
其它处理,如组播业务轮切、组播业务结束、相关表项的保活刷新等,基本与实施例一相同,在此不再赘述。
为了更清楚的说明本发明实施例,下面以图2所示的监控系统架构为例进行描述。
参见图2,点播客户端是组播接收设备,业务终端是组播源,路由器R1~R6上启用了PIM协议。R3是点播客户端1直连的DR,R6是点播客户端2直连的DR,R1是业务终端1直连的DR,R4是业务终端2直连的DR,R2是组播组(S1,G1)和(S2,G2)的RP。业务终端1提供(S1,G1)组播数据,业务终端2提供(S2,G2)组播数据。
在DR(R1,R3,R4,R6)上预先进行GRE配置,建立Tunnel接口,并在接口上配置同一个网段的IP地址,配置设备本地的LoopBack口作为Tunnel接口的源端地址,配置隧道模式为组播GRE。比如在R6上,Tunnel0接口IP地址为IP_TR6,配置LoopBack0IP地址为IP_LR6,作为Tunnel0接口的源端地址,配置隧道模式为组播GRE。
若点播客户端2欲建立与业务终端1和业务终端2的轮切关系,即依次点播关于组播组G1、G2的组播数据,则组播业务流程包括以下几个阶段:
(1)点播客户端2与业务终端1建立监控关系,点播组播组G1的组播数据,其具体流程包括:
点播客户端1发送关于加入组播组G1的IGMP成员报告报文,其中携带特定业务标志,表示为轮切业务。
R6收到点播客户端2发送的携带特定业务标志的IGMP成员报告报文后,生成对应的PIM(*,G1)组播路由表项,其中对应于指向点播客户端1的出接口设置了特定业务标志;由于当前PIM(*,G1)表项的出接口中仅存在特定业务的点播客户端2,且还没有为组播组G1建立组播GRE隧道,因此向上游发送携带有组播GRE隧道配置信息的PIM(*,G1)加入报文,该PIM(*,G1)加入报文中,组播组G1对应的标志位设定了特定业务标志,源地址指向RP(IP_RR2),携带R6上的GRE组播隧道配置信息,Tunnel接口IP(IP_TR6),Tunnel接口源端地址(IP_LR6)。
R5收到R6发送的PIM(*,G1)加入报文后,若解析得到其中带有特定业务标志,则不建立PIM(*,G1)组播表项,而是往RP(即R2)转发该报文。
R2收到R5发送的PIM(*,G1)加入报文后,刷新PIM(*,G1)表项的老化时间,若查询到本设备存在PIM(S1,G1)表项(通常,组播源S1连接的DR会向RP进行注册,从而在RP上建立PIM(S1,G1)表项),则向S1的方向发送带有特定业务标志的PIM(S1,G1)加入报文,该报文中,组播组相应的标志位设定了特定业务标志,其后的源地址指向S1,同时还携带R1的GRE组播隧道配置信息,包括Tunnel接口IP地址(IP_TR6),Tunnel接口的源端地址(IP_LR6)。
R1收到PIM(S1,G1)加入报文后,解析到其中的特定业务标志后,提取出报文中的组播组G1信息和隧道配置信息,然后向R6发起关于组播组G1的GRE隧道建立过程,该组播GRE隧道建立过程中:
R1单播发送报文源地址为IP_LR1、目的地址为IP_LR6的隧道建立请求报文,携带组播组地址、隧道目的地址、隧道源地址、隧道目的端地址、隧道源端地址等信息;
R6收到GRE隧道建立请求报文后,与R1进行GRE隧道建立的协商,比较组播组G1以及隧道目的地址IP_TR6、隧道目的端地址IP_LR6等信息,信息无误后,与R1建立GRE隧道,在本设备上建立如表1所示的组播GRE表项,状态为UP,生成该组播组的组播路由表(S1,G1)表项和组播转发表(S1,G1)表项,该(S1,G1)表项的入接口为组播GRE隧道,出接口为连接点播客户端2的接口,并向R1发送隧道建立确认报文;
R1收到隧道建立确认报文后,建立如表2所示的组播GRE表项,在组播路由(S1,G1)表项和组播转发(S1,G1)表项中添加该组播GRE隧道的出接口。
表1、R6上的组播GRE表项
组播组地址 |
隧道目的地址 |
隧道目的端地址 |
状态 |
G1 |
IP_TR1 |
IP_LR1 |
UP |
表2、R1上的组播GRE表项
组播组地址 |
隧道目的地址 |
隧道目的端地址 |
状态 |
G1 |
IP_TR6 |
IP_LR6 |
UP |
R1在收到组播(S1,G1)数据后,根据组播转发表项查询到出接口为组播GRE接口,因此复制一份数据到GRE接口,GRE接口再封装GRE头,从GRE隧道口转发出去。该隧道对端R6从GRE隧道收到报文后,剥离GRE头,根据组播转发表项查询到指向点播客户端2的接口,将解封装得到的组播数据报文从该接口向点播客户端2转发。
进一步的,R6建立关于G1的组播GRE隧道后,在收到下一个关于G1的携带特定业务标志位的IGMP成员报告报文时,发现关于组播组G1的组播GRE隧道已经建立,则刷新关于组播组G1的组播GRE隧道表项老化时间,刷新对应的组播路由表(S1,G1)表项和组播转发表(S1,G1)表项的老化时间,还可进一步向R1发送关于G1的组播GRE保活报文。R1在接收到该组播GRE保活报文后,刷新关于组播组G1的组播GRE隧道表项老化时间,刷新组播路由表(S1,G1)表项和组播转发表(S1,G1)表项的老化时间。
(2)点播客户端2从业务终端1切换到业务终端2,点播组播组G2的组播数据,其过程包括:
点播客户端2向R6发送G1的带有特定业务标志位的IGMP暂停组报文,以及关于G2的携带特定业务标志的IGMP成员报告报文;
R6收到关于G1的带有特定业务标志的IGMP暂停组报文后,更新PIM的(*,G1)表项状态为暂停状态,更新G1的组播GRE隧道的状态为暂停状态,删除组播路由表(S1,G1)表项和组播转发表(S1,G1)表项,并向R1发送关于G1的状态刷新报文;R1收到状态刷新报文后,更新G1的组播GRE隧道的状态为暂停状态,删除组播路由表(S1,G1)表项的组播GRE出接口和组播转发表(S1,G1)表项的组播GRE出接口。
R6收到关于G2的带有特定业务标志的IGMP成员报告报文后,建立PIM(*,G2)表项,并在其中指向点播客户端2的出接口设置特定业务标志,将自己的隧道配置信息携带于PIM(*,G2)加入报文向业务终端2方向发送,从而建立R1与R4之间的关于G2的组播GRE隧道,并在隧道两端的R1和R4上生成组播路由表(S2,G2)表项和组播转发表(S2,G2)表项,其具体实现过程同R1与R6之间建立关于G1的组播GRE隧道以及建立相关组播表项的过程。
在R6对关于G1的IGMP暂停组报文和关于G2的IGMP成员报告报文进行处理后,其上的组播GRE表项如表3所示:
表3、R6上的组播GRE表项
组播组地址 |
隧道目的地址 |
隧道目的端地址 |
状态 |
G1 |
IP_TR1 |
IP_LR1 |
Pause |
G2 |
IP_TR4 |
IP_LR4 |
UP |
R4在收到组播(S2,G2)数据后,根据组播转发表项查询到出接口为组播GRE接口,因此复制一份数据到GRE接口,GRE接口再封装GRE头,从GRE隧道口转发出去。该隧道对端R6从GRE隧道收到报文后,剥离GRE头,根据组播转发表项查询到指向点播客户端2的接口,将解封装得到的组播数据报文从该接口向点播客户端2转发。
进一步的,点播客户端2轮切到与业务终端2的业务时,定期发送关于G1的携带特定业务标志的IGMP暂停组报文和关于G2的携带特定业务标志的IGMP成员报告报文,以刷新R6上的PIM的(*,G1)表项和PIM的(*,G2)表项老化时间和R1与R6之间、R4与R6之间的组播GRE的老化时间。
(3)点播客户端2从业务终端2切换到业务终端1,点播组播组G1的组播数据,其过程包括:
点播客户端2向R6发送G2的带有特定业务标志位的IGMP暂停组报文,以及关于G1的携带特定业务标志的IGMP成员报告报文;
R6收到关于G2的带有特定业务标志的IGMP暂停组报文后,其处理流程与当R6收到关于G1的带有特定业务标志的IGMP暂停组报文后的处理流程,包括:更新PIM的(*,G2)表项状态为暂停状态,更新G2的组播GRE隧道的状态为暂停状态,删除组播路由表(S2,G2)表项和组播转发表(S2,G2)表项,并向R4发送关于G2的状态刷新报文;R4收到状态刷新报文后,更新G2的组播GRE隧道的状态为暂停状态,删除组播路由表(S2,G2)表项的组播GRE出接口和组播转发表(S2,G2)表项的组播GRE出接口。
R6收到关于G1的带有特定业务标志的IGMP成员报告报文后,发现关于组播组G1的组播GRE隧道已经建立,但状态为暂停状态,则刷新关于组播组G1的组播GRE隧道表项状态为UP,生成组播组G1的组播路由表(S1,G1)表项和组播转发表(S1,G1)表项,该(S1,G1)表项的入接口为组播GRE隧道,出接口为连接点播客户端2的接口,并向R1发送关于组播组G1的隧道建立状态刷新报文;R1收到隧道建立状态刷新报文后,刷新G1的组播GRE表项状态为UP,在组播路由(S1,G1)表项和组播转发(S1,G1)表项中,添加G1的组播GRE隧道的出接口。
在R6对关于G2的IGMP暂停组报文和关于G1的IGMP成员报告报文进行处理后,其上的组播GRE表项如表4所示:
表4、R6上的组播GRE表项
组播组地址 |
隧道目的地址 |
隧道目的端地址 |
状态 |
G1 |
IP_TR1 |
IP_LR1 |
UP |
G2 |
IP_TR4 |
IP_LR4 |
Pause |
R1在收到组播(S1,G1)数据后,根据组播转发表项查询到出接口为组播GRE接口,因此复制一份数据到GRE接口,GRE接口再封装GRE头,从GRE隧道口转发出去。该隧道对端R6从GRE隧道收到报文后,剥离GRE头,根据组播转发表项查询到指向点播客户端2的接口,将解封装得到的组播数据报文从该接口向点播客户端2转发。
(4)点播客户端2结束轮切业务时,其流程包括:
点播客户端2发送关于组播组G1和G2的携带特定业务标志的IGMP离开组报文;
R6收到该IGMP离开组报文后,删除PIM(*,G1)和PIM(*,G2)表项的出接口,如果出接口为空,则删除PIM(*,G1)和PIM(*,G2)表项,删除G1和G2的组播GRE隧道表项,删除组播路由表(S1,G1)和(S2,G2)表项和组播转发表(S1,G1)和(S2,G2)表项,并向R1发送关于G1的组播隧道撤销报文,向R4发送关于G2的组播隧道撤销报文;
R1收到该组播隧道撤销报文后,删除G1的组播GRE隧道表项,删除组播路由表(S1,G1)表项的组播GRE出接口和组播转发表(S1,G1)表项的组播GRE出接口;同理,R1收到该组播隧道撤销报文后,删除G2的组播路由表(S2,G2)表项的组播GRE出接口和组播转发表(S2,G2)表项的组播GRE出接口。
(5)组播转发表项超时老化时,相应处理流程可包括
R1上的组播转发表(S1,G1)表项因超时而老化时,R1向R6发送组播隧道撤销报文,双方协商一致后,R1和R6均删除关于G1的组播GRE表项和组播路由表(S1,G1)表项,R6还删除组播转发表(S1,G1)表项,R1和R6返回到初始状态。
综上所述,本发明实施例对于监控轮切这类特殊业务,可以仅在组播接收侧DR和组播源侧DR(或RP)上建立组播转发表项,并在组播接收侧DR和组播源侧DR(或RP)之间建立组播隧道,从而使组播数据报文通过该组播隧道传输,减少了组播接收侧DR和组播源侧DR(或RP)中间链路上的组播转发表项的建立和维护操作,从而针对轮切业务减少了路由器上组播转发表项容量的消耗,同时不影响正常组播业务的开展。
基于相同的技术构思,本发明实施例还提供了路由转发设备,该路由转发设备代表了一般意义下的路由器,以及运行了路由协议的三层交换机。
参见图6,为本发明实施例提供的一种路由转发设备的结构示意图,该设备可应用于组播接收侧,作为组播接收侧DR。如图所示,该设备可包括:组播控制模块601、组播隧道处理模块602、组播表项处理模块603和组播转发模块604,其中:
组播控制模块601,用于在满足建立组播隧道的条件时,向相应组播组对应的组播源侧设备发送携带有自己的组播隧道配置信息的组播加入报文,以触发该组播源侧设备为相应组播组建立与该组播接收侧DR之间的组播隧道和生成相应组播转发表项,以及将该组播隧道接口作为出接口添加到该组播转发表项中;以及,在建立组播隧道后指示组播表项处理模块603生成相应组播转发表项;其中,所述满足建立组播隧道的条件是指:当接收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定针对所请求加入的组播组当前仅存在特定业务的组播接收客户端,且还没有为所请求加入的组播组建立组播隧道;或者,当发生最短路径树SPT切换时,判定本设备所连接的组播接收客户端均为特定业务的组播接收客户端;
组播隧道处理模块602,用于与组播源侧设备建立组播隧道;
组播表项处理模块603,用于根据组播控制模块601的指示处理相应组播转发表项;
组播转发模块604,用于在从组播隧道接收到报文后,解封装得到组播数据报文,并根据组播转发表项将该组播数据报文转发给组播接收客户端;其中,所述组播数据报文是组播源侧设备根据组播转发表项获得组播隧道接口后,将组播数据报文进行隧道封装并通过相应组播隧道转发过来的。
进一步的,所述组播加入报文中还携带有特定业务标志,以使所述组播接收侧DR与所述组播源侧设备之间的中间设备,在接收到组播加入报文后,根据其中携带的特定业务标志,拒绝生成相应组播转发表项。
进一步的,组播控制模块601还可在接收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,若判定所请求暂停的组播组对应的组播隧道为连接状态,则指示组播隧道处理模块602将该组播隧道的状态设置为暂停(如可将相应隧道表项的状态设置为暂停),指示组播表项处理模块603删除请求暂停的组播组对应的组播转发表项,并向该组播隧道对端设备发送关于组播暂停的状态刷新报文,以触发所述组播隧道对端设备将请求暂停的组播组对应的组播隧道的状态设置为暂停,以及删除所请求暂停的组播组对应的组播转发表项中该组播隧道的出接口。以及,在接收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,若判定已为所请求加入的组播组建立组播隧道,但该组播隧道状态为暂停,则指示组播隧道处理模块602将该组播隧道的状态设置为连接状态,指示组播表项处理模块603建立相应组播转发表项,并向该组播隧道对端设备发送关于组播加入的状态刷新报文,以触发该组播隧道对端设备将所请求加入的组播组对应的组播隧道的状态设置为连接状态,以及将该组播隧道接口作为出接口添加到相应组播转发表项中。
进一步的,组播控制模块601还可在收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,若判定所请求加入的组播组对应的组播隧道已经建立,且状态为连接状态,则指示组播隧道处理模块602刷新相应组播隧道表项,指示组播表项处理模块603刷新相应组播转发表项的老化时间,并向所请求加入的组播组对应的组播隧道对端设备发送关于组播加入的组播隧道保活报文,以触发该组播隧道对端设备刷新所请求加入的组播组对应的组播隧道表项和组播转发表项的老化时间。
进一步的,组播控制模块601还可在收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,若发现请求暂停的组播组对应的组播隧道的状态为暂停状态,则指示组播隧道处理模块602刷新相应组播隧道表项的老化时间,并向请求暂停的组播组对应的组播隧道对端的组播源侧设备发送关于组播暂停的组播隧道保活报文,以触发所述组播源侧设备刷新所述请求暂停的组播组对应的组播隧道表项和组播转发表项的老化时间。
进一步的,组播控制模块601还可在接收到组播隧道撤销报文后,指示组播隧道处理模块602删除相应组播组的组播隧道表项,指示组播表项处理模块603删除相应组播转发表项;其中,所述组播隧道撤销报文是组播源侧设备在组播转发表项超时老化后发送的。
进一步的,组播控制模块601还可在接收到组播接收客户端发送的携带有特定业务标识的组播结束请求报文后,指示组播表项处理模块603删除所请求结束的组播组对应的组播转发表项,指示组播隧道处理模块602删除所请求结束的组播组对应的组播隧道表项,并向相应组播隧道对端设备发送组播隧道撤销报文,以触发该隧道对端设备删除所请求结束的组播组对应的组播隧道表项,删除相应组播转发表项中的该组播隧道的接口。
具体的,组播控制模块601可在接收到组播接收客户端发送的组播加入请求报文后,向所请求加入的组播组对应的汇聚点RP方向发送组播加入报文,由该RP通过组播加入报文将所述组播接收侧DR的组播隧道配置信息发送给组播源侧DR,以使所述组播源侧DR与本设备建立组播隧道。或者,组播控制模块601可在接收侧DR接收到组播接收客户端发送的组播加入请求报文后,获取所请求加入的组播组对应的RP信息,并以单播方式向该RP发送组播加入报文,所述组播加入报文中携带有所述组播接收侧DR的组播隧道配置信息,以使所述RP与本设备建立组播隧道。
具体的,组播隧道处理模块602具体用于:在所述组播控制模块将组播隧道配置信息携带于组播加入报文向组播源方向发送后,接收组播源侧设备发送的组播隧道建立请求报文,其中,所述组播隧道建立请求报文中携带有所述组播源侧设备的组播隧道配置信息;根据所述组播隧道建立请求报文中携带的隧道配置信息,指示所述表项处理模块生成组播隧道表项;以及,向所述组播源侧设备发送隧道建立确认报文,以触发所述组播源侧设备根据所述组播接收侧DR的隧道配置信息为所请求加入的组播组生成组播隧道表项和组播转发表项,以及将该组播隧道的接口作为出接口添加到该组播转发表项中。
参见图7,为本发明实施例提供的另一种路由转发设备的接收示意图,该设备可应用于组播源侧,可以是组播源侧DR或RP。该设备可包括:组播控制模块701、组播隧道处理模块702、组播表项处理模块703和组播转发模块704,其中:
组播控制模块701,用于在接收到组播接收侧DR发送的携带有组播隧道配置信息的组播加入报文后,针对所请求加入的组播组,指示组播隧道处理模块702发起与所述组播接收侧DR之间的组播隧道建立过程,并在组播隧道建立后,指示组播表项处理模块703将所建立的组播隧道的接口作为出接口添加到所请求加入的组播组对应的组播转发表项中;
组播隧道处理模块702,用于与组播接收侧DR建立组播隧道;
组播表项处理模块703,用于根据组播控制模块701的指示处理相应组播转发表项;
组播转发模块704,用于在接收到组播数据报文后,若根据组播转发表项查询到出接口为组播隧道接口,则将所述组播数据报文通过查询到的组播隧道接口向组播隧道对端的组播接收侧DR转发,以通过所述组播接收侧DR转发所述组播数据报文到组播接收客户端。
进一步的,所述组播接收侧DR发送的组播加入报文中还携带有特定业务标志,以使所述组播接收侧DR与所述组播源侧设备之间的中间设备,在接收到组播加入报文后,根据其中携带的特定业务标志,拒绝生成相应组播转发表项。
进一步的,组播控制模块701在接收到组播接收侧DR发送的关于组播暂停的状态刷新报文后,指示组播隧道处理模块702将所请求暂停的组播组对应的组播隧道的状态设置为暂停,指示组播表项处理模块703删除所请求暂停的组播组对应的组播转发表项中该组播隧道的出接口;其中,所述关于组播暂停的状态刷新报文是组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播暂停请求报文后,发现所请求暂停的组播组对应的组播隧道为连接状态时发送的。以及,在接收到组播接收侧DR发送的关于组播加入的状态刷新报文后,指示组播隧道处理模块701将所请求加入的组播组对应的组播隧道的状态设置为连接状态,指示组播表项处理模块703将该组播隧道接口作为出接口添加到相应组播转发表项中;其中,所述关于组播加入的状态刷新报文是所述组播接收侧DR收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定已为所请求加入的组播组建立组播隧道,但该组播隧道状态为暂停时发送的。
进一步的,组播控制模块701在接收到组播接收侧DR发送的关于组播加入的组播隧道保活报文后,指示组播隧道处理模块702刷新所请求加入的组播组对应的组播隧道表项,指示组播表项处理模块703刷新所请求加入的组播组对应的组播转发表项的老化时间;其中,所述关于组播加入的组播隧道保活报文是组播接收侧DR在收到组播接收客户端发送的携带有特定业务标志的组播加入请求报文后,判定所请求加入的组播组对应的组播隧道已经建立且状态为连接状态时发送的。
进一步的,组播控制模块701在接收到组播接收侧DR发送的关于组播暂停的组播隧道保活报文后,指示组播隧道处理模块702刷新所请求暂停的组播组对应的组播隧道表项,指示组播表项处理模块703刷新所请求暂停的组播组对应的组播转发表项的老化时间;其中,所述关于组播暂停的组播隧道保活报文是组播接收侧DR在收客户端发送的携带有特定业务标志的组播暂停请求报文后,判定所请求暂停的组播组对应的组播隧道的状态为暂停状态时发送的。
进一步的,组播控制模块701在接收到组播接收侧DR发送的组播隧道撤销报文后,指示组播隧道处理模块702删除所请求结束的组播组对应的组播隧道表项,指示组播表项处理模块703删除所请求结束的组播组对应的组播转发表项中的该组播隧道的接口;其中,所述组播隧道撤销报文是组播接收侧DR在收到组播接收客户端发送的携带有特定业务标识的组播结束请求报文后发送的。
具体的,组播隧道处理模块702具体用于:在接收到组播接收侧DR发送的携带有组播隧道配置信息的组播加入报文后,向所述组播接收侧DR发送携带有本设备的组播隧道配置信息的组播隧道建立请求报文,以触发所述组播接收侧DR根据所述组播隧道建立请求报文中携带的隧道配置信息生成组播隧道表项;在接收所述组播接收侧DR发送的隧道建立确认报文后,指示表项处理模块703根据所述组播接收侧DR的隧道配置信息为所请求加入的组播组生成组播隧道表项和组播转发表项,以及将该组播隧道的接口作为出接口添加到该组播转发表项中。
需要说明的是,在IPV6体系中,本发明实施例中的IGMP协议可由MLD(MulticastListenerDiscover,组播侦听发现)协议等其它类型的主机-路由器之间的组成员关系协议代替,即,组播接收设备可通过MLD协议发送请求加入组播组的报文(即组播加入请求报文)、请求暂停组播组的报文(即组播暂停请求报文)或请求结束组播组的报文(即组播结束请求报文),但实现原理与本发明实施例的实现原理相同。同理,本发明实施例中的PIM协议也可以由其它类型的路由器-路由器之间的组播路由协议代替。
另外需要说明的是,本发明实施例是以轮切业务为例描述的,但本发明实施例并不限于轮切业务。比如,对于其它类型的组播业务,如实时性要求较高的组播业务,也可采用本发明实施例实现,相应的,本发明实施例中所提到的特定业务标志,其所标识的业务类型将根据具体情况而定。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。