具体实施方式
SDN网络架构中,软件定义网络控制器与所有的网络设备建立连接,能够实时的获取所有网络设备的状态,资源、协议运行情况等信息,并下发控制命令控制网路设备的表项的增删、进行业务配置和流量优化与监测等。总之软件定义网络控制器能与各网路设备保持连接,实时的获取网络设备的状态,对网络设备进行控制。
为了实现本发明目的,本发明利用了SDN控制器来监测汇聚点路由器的接收端状态,并向组播组的指定转发器发送接收端状态。指定转发器根据接收端状态判断汇聚点路由器是否有接收端,如果组播流没有接收端,则指定转发器不再向汇聚点路由器发送组播流。
参见图2,本发明提供一种组播数据传输方法,方法包括:
步骤101,软件定义网络控制器记录组播组的汇聚点路由器的接收端状态。
步骤102,软件定义网络控制器向组播组的指定转发器发送接收端状态。
步骤103,指定转发器根据接收端状态判断汇聚点路由器是否有接收端,如果是,执行步骤104,如果否,执行步骤105。
步骤104,将来自组播组的组播源的组播数据发送到汇聚点路由器。
步骤105,禁止将组播数据发送到汇聚点路由器。
汇聚点路由器添加组播组对应的第一出接口时,通知软件定义网络控制器更新接收端状态为存在组播组的接收端。
汇聚点路由器删除组播组对应的最后一个出接口时,通知软件定义网络控制器更新接收端状态为不存在组播组的接收端。
软件定义网络控制器向组播组的指定转发器发送接收端状态包括:
软件定义网络控制器更新接收端状态,将更新后的接收端状态发送给指定转发器。
软件定义网络控制器向组播组的指定转发器发送接收端状态包括:
软件定义网络控制器收到来自指定转发器的接收端状态查询,将当前记录的接收端状态反馈给指定转发器。
参看图3,本发明还提供一种软件定义网络控制器,软件定义网络控制器基本硬件架构包括CPU、内存、输入输入设备、非易失性存储器(例如硬盘)以及其他硬件。该软件定义网络控制器在逻辑上还至少包括:
接收端状态维护单元,用于记录组播组的汇聚点路由器的接收端状态。
接收端状态通知单元,用于向组播组的指定转发器发送接收端状态。
接收端状态维护单元,进一步用于根据来自汇聚点路由器的接收端存在通知或接收端不存在通知记录接收端状态;用于将变化后的接收端状态通知接收端状态通知单元。
接收端状态通知单元,进一步用于将变化后的接收端状态发送给指定转发器。
接收端状态通知单元,进一步用于根据来自指定转发器的接收端状态查询,将当前记录的接收端状态反馈给指定转发器。
参看图4,本发明还提供一种组播数据转发装置,应用于作为组播组指定转发器的路由器。该路由器基本硬件架构包括CPU、内存、输入输入设备、非易失性存储器(例如硬盘)以及其他硬件。该组播数据转发装置在逻辑上至少还包括接收单元、控制单元和转发单元。
接收单元,用于接收来自组播组的组播源的组播数据,接收来自软件定义网络控制器的接收端状态通知。
控制单元,用于基于接收端状态通知判断组播组的汇聚点路由器是否存在接收端,确定汇聚点路由器存在接收端则发送转发通知给转发单元,确定所述汇聚点路由器不存在接收端则发送禁止转发通知给所述转发单元。
转发单元,用于根据转发通知发送组播数据至汇聚点路由器;根据禁止转发通知停止发送组播数据至汇聚点路由器。
控制单元,进一步还用于生成接收端状态查询信息。
转发单元,进一步还用于向软件定义网络控制器发送接收端状态查询信息。
接收单元,进一步还用于接收来自软件定义网络控制的接收端状态反馈报文。
控制单元,接收来自软件定义网络控制器的接收端状态反馈信息,判断汇聚点路由器是否存在接收端,确定汇聚点路由器存在接收端则发送转发通知给转发单元,确定汇聚点路由器不存在接收端则发送禁止转发通知给转发单元。
基于上述组播数据转发装置,指定路由器接收来自组播组的组播源的组播数据,接收来自软件定义网络控制器的接收端状态通知。指定路由器基于接收端状态通知判断组播组的汇聚点路由器是否存在接收端。指定路由器确定汇聚点路由器存在接收端时,将收到的组播数据发送至汇聚点路由器。指定路由器确定汇聚点路由器不存在接收端,不向汇聚点路由器发送该组播数据。下面以一个具体实施例来说明本发明的运行情况。
具体地,请参见图5,本实施例应用于Bidir-PIM网络,该Bidir-PIM网络包括汇聚点路由器R1、软件定义网络控制器以及直连组播源的指定转发器R3。
该Bidir-PIM网络还包括路由器R2、路由器R4、路由器R5。客户端Client1可以通过路由器R4访问网络,客户端Client2可以通过路由器R5访问网络。软件定义网络控制器与每个路由器建立TCP连接。
组播源发送(S=1.1.1.1,G=225.0.0.1)组播数据到组播源直连的指定转发器R3。指定转发器R3建立本地组播表项(*,225.0.0.1),添加指向汇聚点路由器R1的出接口,将指向汇聚点路由器R1的出接口置于非转发状态,禁止向组播组的汇聚点路由器R1转发组播数据。
指定转发器R3向软件定义网络控制器发送查询请求,以查询汇聚点路由器R1是否有组播组225.0.0.1的接收端。指定转发器R3发送的查询请求至少包含:待查询的组播组地址,汇聚点路由器的IP地址。如果指定转发器R3需要查询多个组播组的汇聚点路由器的接收端状态,指定转发器R3发送的查询消息中包含:待查询的组播组地址集合,每个组地址对应的汇聚点路由器的IP地址。进一步地,指定路由器R3的查询请求还携带了汇聚点路由器上是否有组播组出接口的查询信息。这样,指定转发器R3根据汇聚点路由器R1是否有组播组225.0.0.1出接口,识别组播组225.0.0.1的接收端状态。
软件定义网络控制器收到来自指定转发器R3的查询请求,发送查询反馈,将汇聚点路由器R1没有组播组225.0.0.1出接口的状态通知给指定转发器R3。指定转发器R3接收软件定义网络控制器的查询反馈,确认汇聚点路由器R1的(*,225.0.0.1)表项的出接口为空,即汇聚点路由器R1上没有组播组225.0.0.1的接收端。于是,指定转发器R3维持指向汇聚点路由器的出接口的非转发状态。
客户端Client1发送加入组播组225.0.0.1的互联网组管理报告(IGMP ReportInternet Group Management Protocol Report)报文。路由器R4根据接收的IGMPReport报文建立(*,225.0.0.1)表项,向汇聚点路由器R1发送协议无关组播加入(PIM Join,Protocol Independent Multicast Join)报文。汇聚点路由器R1收到PIM Join报文,生成(*,225.0.0.1)的组播表项,添加第一个出接口(R1->R4)。
汇聚点路由器R1通知软件定义网络控制器该组播组225.0.0.1的第一个出接口加入,软件定义网络控制器更新其存储组播组225.0.0.1的出接口状态。软件定义网络控制器确定汇聚点路由器R1上的组播组225.0.0.1的出接口状态已经变化,将汇聚点路由器R1存在组播组225.0.0.1的出接口通知给指定转发器R3。
指定转发器R3收到通知,确定汇聚点路由器R1存在组播组225.0.0.1的出接口,将指向汇聚点路由器的出接口设置为转发状态,通过指向汇聚点路由器的出接口发送组播数据到下游路由器R2。路由器R2根据本地组播表项转发组播数据到汇聚点路由器R1。汇聚点路由器R1根据本地组播表项(*,225.0.0.1)的出接口发送组播数据到路由器R4,路由器R4根据本地组播表项发送组播数据到客户端Client1。
客户端Client2发送加入组播组225.0.0.1的IGMP Report报文。路由器R5收到来自客户端Client2的IGMP Report报文,生成组播表项,发送PIM Join报文到汇聚点路由器R1。汇聚点路由器R1在组播表项(*,225.0.0.1)添加另外一个出接口(R1->R5)。汇聚点路由器R1上组播表项出接口数目变为两个。汇聚点路由器R1不将组播组225.0.0.1更新后的出接口的数目通知给软件定义网络控制器。
假定客户端Client1发送IGMP组离开(IGMP Leave)报文。路由器R4收到IGMP组离开报文,发送IGMP特定组查询报文,确定下游没有组播组225.0.0.1的接收端,向汇聚点路由器R1发送PIM剪枝报文。汇聚点路由器R1收到PIM剪枝报文,经过剪枝延迟时间后删除组播表项(*,225.0.0.1)的出接口(R1->R4)。汇聚点路由器R1的出接口数目为1。汇聚点路由器R1不将组播组225.0.0.1更新后的出接口的数目通知给软件定义网络控制器。
当客户端Client2也离开组播组225.0.0.1。汇聚点路由器R1删除组播表项(*,225.0.0.1)的最后一个出接口(R1->R5),通知软件定义网络控制器已删除组播组225.0.0.1对应的最后一个出接口。
软件定义网络控制器更新其存储组播组225.0.0.1的出接口状态。软件定义网络控制器确定汇聚点路由器R1上的组播组225.0.0.1的出接口状态已经变化,通知指定转发器R3汇聚点路由器R1不存在组播组225.0.0.1出接口。
指定转发器R3根据收到的通知,将本地组播表项的指向汇聚点路由器R1的出接口设置为非转发状态,禁止向下游路由器R2发送组播数据。
除收到的PIM Join报文外,如果汇聚点路由器R1收到直连的客户端(图5未示)发送的加入组播组225.0.0.1的IGMP Report报文时,可以将IGMP Report报文的接收端口作为本地组播表项的出接口。
本发明中,汇聚点路由器R1也可以通过自定义字段的方式表示其是否具备接收端,并将表示接收端状态的自定义字段发送给软件定义网络控制器。同样地,软件定义网络控制将表示接收端状态的自定义字段发送指定转发器R3。指定转发器R3根据收到的自定义字段判断汇聚点路由器R1是否有该组播组的接收端,从而控制是否向汇聚点路由器R1发送组播数据。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。