发明内容
有鉴于此,本发明的目的在于提供一种组播报文抑制方法、装置、设备及存储介质,能够在很少有站点订阅多播服务或者当网络的某些部分订阅不足时,减少网络资源的浪费,并且不用基于各种组播路由协议进行传输,简化方法、提高传输效率。其具体方案如下:
第一方面,本申请公开了一种组播报文抑制方法,应用于软件定义网络控制器,包括:
获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求;
通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略;
基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,以便所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端。
可选的,所述获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的各自的广播请求之前,还包括:
初始化所述第一网元节点设备和所述第二网元节点设备,并利用所述第一网元节点设备和所述第二网元节点设备的地址确定OpenFlow流表策略,以便所述第一网元节点设备和所述第二网元节点设备将互联网组管理协议报文发送到所述软件定义网络控制器。
可选的,所述获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求,包括:
获取发送端的第一网元节点设备根据流表策略转发的所述发送端的携带有相应源IP地址的广播请求;
获取接收端的第二网元节点设备根据所述流表策略转发的所述接收端的携带有相应源IP地址的广播请求。
可选的,所述的组播报文抑制方法,还包括:
利用数据平面策略监听同一局域网下所述第一网元节点设备与所述第二网元节点设备转发的二层报文。
可选的,所述基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,包括:
判断所述第一网元节点设备和所述第二网元节点设备是否在相同的局域网;
如果所述第一网元节点设备和所述第二网元节点设备在相同的局域网,则基于所述目标流表策略,将所述二层报文直接转发至所述第二网元节点设备;
如果所述第一网元节点设备和所述第二网元节点设备不在相同的局域网,则基于所述目标流表策略,确定出所述接收端的IP地址,并根据所述IP地址将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文进行路由转发至所述第二网元节点设备。
可选的,所述的组播报文抑制方法,还包括:
如果所述第一网元节点设备和所述第二网元节点设备不在相同的局域网,则利用tunnel协议通过隧道将所述通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备。
可选的,所述将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备之后,还包括:
将所述单播报文与所述接收端的请求数量进行匹配,如果匹配成功则控制所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端,以便将所述接收端与所述发送端建立flow连接。
第二方面,本申请公开了一种组播报文抑制装置,应用于软件定义网络控制器,包括:
请求获取模块,用于获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求;
流表更新模块,用于通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略;
报文转发模块,用于基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,以便所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端。
第三方面,本申请公开了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如前所述的组播报文抑制方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如前所述的组播报文抑制方法。
本申请中,应用于软件定义网络控制器,首先获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求;然后通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略;最后基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,以便所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端。可见,通过发送端的网元节点设备将组播报文转换为单播报文,然后SDN控制器对单播报文进行解析再转发到接收端的网元节点设备,接收端的网元节点设备将单播报文再转换为组播报文发送给接收端,如此一来,在SDN网络中支持组播应用时,当很少有站点订阅多播服务时,或者当网络的某些部分订阅不足时,网络资源将不会浪费在设备上和通信信道上,并且,不用基于各种组播路由协议进行传输,提高了传输效率,简化了方法。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,传统的SDN组播在传输报文时是基于路由协议进行组播报文的传输,但是显然效率有些低下,也非常复杂。并且,当很少有站点订阅多播服务或者当网络的某些部分订阅不足时,网络资源会浪费在设备上和通信信道上。此时,与多播相比,单播将单个数据包从源传输到特定目的地,而不是将数据包的副本传输到多个目的地,对于小观众来说可能更有效。
为此,本申请提供了一种基于SDN的组播报文抑制方案,能够在很少有站点订阅多播服务或者当网络的某些部分订阅不足时,减少网络资源的浪费,并且不用基于各种组播路由协议进行传输,简化方法、提高传输效率。
本发明实施例公开了一种基于SDN的组播报文抑制方法,参见图1所示,应用于SDN控制器,该方法可以直接应用于同一局域网下,也可以应用于不同局域网下,下面以应用于同一局域网下为例进行说明,对于应用于不同局域网下的具体实现过程可参照应用于同一局域网下的具体实现说明。该方法包括:
步骤S11:获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求。
本申请实施例中,软件定义网络控制器,即SDN控制器首先会初始化与发送端以及接收端对应的网元节点设备,需要指出的是,发送端对应第一网元节点设备,接收端对应第二网元节点设备;其中,网元节点设备可以为交换机,也可以为支持SDN OpenFlow的其他网元节点设备,视具体情况而定,在此不做具体限定。例如设备如果是无线,可以由AP(AccessPoint,访问接入点)/AC(Access Controller,接入控制器)来完成此角色;设备如果是有线,则可以由交换机来完成此角色。如此一来,SDN控制器便可以获取第一网元节点设备与第二网元节点设备的地址用来更新缺省的OpenFlow流表策略,确保接收到的组播报文,即IGMP(Internet Group Management Protocol,网际组管理协议)报文可以送到SDN控制器。
可以理解的是,在同一局域网下,IGMP用于在接收者主机和直接相邻的组播路由器之间建立和维护组播组成员的关系,所以,在初始化第一网元节点设备和第二网元节点设备后,第一网元节点设备与第二网元节点设备则和SDN控制器建立了连接,这样经由第一网元节点设备和第二网元节点设备转发的报文就可以发送到SDN控制器。
具体的,初始化所述第一网元节点设备和所述第二网元节点设备,并利用所述第一网元节点设备和所述第二网元节点设备的地址确定OpenFlow流表策略,以便所述第一网元节点设备和所述第二网元节点设备将互联网组管理协议报文发送到所述软件定义网络控制器。
本申请实施例中,SDN控制器在与收发两侧的网元节点设备建立连接后,发送端与接收端则会发送两端各自的广播请求给相应的网元节点设备,网元节点设备再根据流表策略发送通知到SDN控制器。其中,各自的广播请求具体可以为发送端的携带有相应源IP地址的广播请求以及接收端的携带有相应源IP地址的广播请求,如此一来,当第一网元节点设备与第二网元节点设备不在同一局域网下,即跨三层网络时,则可以根据该地址通过组播路由转发的方式实现报文的传输。
具体的,所述获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求,包括:获取发送端的第一网元节点设备根据流表策略转发的所述发送端的携带有相应源IP地址的广播请求;获取接收端的第二网元节点设备根据所述流表策略转发的所述接收端的携带有相应源IP地址的广播请求。
步骤S12:通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略。
本申请实施例中,当SDN控制器在接收到由第一网元节点设备转发的发送端的广播请求与由第二网元节点设备转发的接收端的广播请求后,会对各自的广播请求进行解析,然后利用解析后得到的数据更新所述流表策略,以得到目标流表策略。可以理解的是,所述广播请求为IGMP报文。
需要指出的是,在SDN控制器中,部署有深度报文解析(Deep Packet Inspection,DPI)引擎模块,通过深度报文检测技术解析发送端与接收端的广播请求时,解析一个或多个报文,如此一来,便可以获取两侧的各自的源IP地址。此外,深度报文检测技术还可以获取发送端与接收端两侧的相关参数和设备属性(profile),以此来更新所述流表策略,在此不作具体限定。
步骤S13:基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,以便所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端。
本申请实施例中,发送端发送的组播报文由第一网元节点设备转换为单播报文后会发送给SDN控制器,然后经由SDN控制器将转换得到的单播报文转发至接收端的第二网元节点设备,如此一来,第二网元节点设备则可以将该单播报文转换成组播报文发送给接收端,解决了在当很少有站点订阅多播服务时,或者当网络的某些部分订阅不足时,网络资源浪费在设备上和通信信道上的问题。
需要指出的是,SDN控制器更新发送端和接收端的网元节点设备流表,得到目标流表策略主要是为了打通两边的网元节点设备,这样在发送端发送组播报文时,转换为单播报文后可以直接通过流表进行转发,不用基于各种组播路由协议进行传输,提高了传输效率,简化了方法。
另外,SDN控制器借助数据平面的策略可以监听到整个无线网络中的报文(二层报文)。当将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备之后,会将所述单播报文与所述接收端的请求数量进行匹配,如果匹配成功则控制所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端,以便将所述接收端与所述发送端建立flow连接。
本申请中,应用于软件定义网络控制器,首先获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求;然后通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略;最后基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,以便所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端。可见,通过发送端的网元节点设备将组播报文转换为单播报文,然后SDN控制器对单播报文进行解析再转发到接收端的网元节点设备,接收端的网元节点设备将单播报文再转换为组播报文发送给接收端,如此一来,在当很少有站点订阅多播服务时,或者当网络的某些部分订阅不足时,网络资源将不会浪费在设备上和通信信道上,并且,不用基于各种组播路由协议进行传输,提高了传输效率,简化了方法。
参见图2,为SDN结合WLAN的场景在组播报文传输情况的拓扑抽象,在AC/AP或者switch(交换机)上负责组播报文的抑制工作。其中,跨交换机的组播转发问题分两种情况:一种是两个交换机本身在一个大交换机下面,之间可以通过二层报文直达;第二种是两个交换机跨三层网络,也就是需要通过组播路由转发的模式才能可达,两种场景在申请实施例中都可以得到有效解决。
示例性的,以本地交换机场景为例,其基本逻辑参见图3所示。自上而下的顺序,首先初始化两侧的交换机以更新缺省的流表策略,然后发送端(Service Provider Station)与接收端(Receiving Station)发送各自的广播请求给各自对应的交换机,两侧的交换机再通知SDN控制器,以便SDN控制器更新发送端和接收端的交换机流表。再然后交换机分别发送通知消息给发送端和接收端,当发送端的组播报文到达交换机后,根据目标流表策略转换为单播报文发送到接收端的交换机;接收端的交换机收到报文后转换为组播报文发送给接收端。
为支持以上业务逻辑,需要在SDN控制器上增加组播业务处理模块,如图4所示为SDN控制器的业务模块示意图。SDN控制器借助数据平面的策略,可以监听到整个无线网络中的二层报文;从发送端发起的广播请求通过第一网元节点设备转发给SDN控制器,SDN控制器通过DPI引擎模块解析一个或者多个报文,获取相关的数据更新可用服务列表。同样地,接收端将广播请求通过第二网元节点设备转发到SDN控制器后,SDN控制器根据定义的组播流处理策略更新连接下游的网元节点设备流表策略。其中,组播流处理策略的灵活设计可以满足不同的场景,一个场景举例:可以通过OpenFlow设置本地交换机响应于发送端的一个或多个组播报文进行有效抑制,在转换为单播报文后结合接收端请求包的通知和数量,达到匹配条件后再通知服务提供商或接收端站点,进而建立flow连接。
本申请实施例公开了一种具体的组播报文抑制方法,应用于软件定义网络控制器,参见图5所示,该方法包括:
步骤S21:获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求。
步骤S22:通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略。
其中,关于上述步骤S21、步骤S22更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
步骤S23:判断所述第一网元节点设备和所述第二网元节点设备是否在相同的局域网。
本申请实施例中,当在SDN控制器中利用深度报文检测技术对发送端和接收端的广播请求进行解析更新得到目标流表策略后,判断所述第一网元节点设备和所述第二网元节点设备是否在相同的局域网下,不同的场景对应的组播流处理策略则不相同。
步骤S24:如果所述第一网元节点设备和所述第二网元节点设备在相同的局域网,则基于所述目标流表策略,将所述二层报文直接转发至所述第二网元节点设备。
本申请实施例中,如果所述第一网元节点设备和所述第二网元节点设备在相同的局域网,由于SDN控制器借助数据平面的策略可以监听到整个无线网络中的二层报文,则基于所述目标流表策略,将所述二层报文直接转发至所述第二网元节点设备。也即,在同一局域网下的由组播转单播的报文以及由单播转组播的报文都是二层报文。
步骤S25:如果所述第一网元节点设备和所述第二网元节点设备不在相同的局域网,则基于所述目标流表策略,确定出所述接收端的IP地址,并根据所述IP地址将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文进行路由转发至所述第二网元节点设备。
在一种具体的实施方式中,如果所述第一网元节点设备和所述第二网元节点设备不在相同的局域网,由于在得到目标流表策略之前第一网元节点设备和第二网元节点设备都转发了发送端和接收端各自的源IP地址,那么基于更新后的所述目标流表策略,可以确定出所述接收端的IP地址,并根据所述IP地址将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文进行路由转发至所述第二网元节点设备。
在另一种具体的实施方式中,如果所述第一网元节点设备和所述第二网元节点设备不在相同的局域网,也即,对于跨域网段的情况,也可以采用更新为tunnel的方式,来自数据通信网络上不同位置的多个网络组件的监控数据或数据包可以从每个网络组件通过隧道传送到SDN控制器。具体的,利用tunnel协议通过隧道将所述通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备。
本申请中,应用于软件定义网络控制器,首先获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求;然后通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略;最后判断所述第一网元节点设备和所述第二网元节点设备是否在相同的局域网;如果所述第一网元节点设备和所述第二网元节点设备在相同的局域网,则基于所述目标流表策略,将所述二层报文直接转发至所述第二网元节点设备;如果所述第一网元节点设备和所述第二网元节点设备不在相同的局域网,则基于所述目标流表策略,确定出所述接收端的IP地址,并根据所述IP地址将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文进行路由转发至所述第二网元节点设备。可见,通过发送端的网元节点设备将组播报文转换为单播报文,然后SDN控制器对单播报文进行解析再转发到接收端的网元节点设备,接收端的网元节点设备将单播报文再转换为组播报文发送给接收端,如此一来,在SDN网络中支持组播应用时,当很少有站点订阅多播服务时,或者当网络的某些部分订阅不足时,网络资源将不会浪费在设备上和通信信道上,并且,不用基于各种组播路由协议进行传输,提高了传输效率,简化了方法。可以有效解决两种情况下跨网元节点设备的组播转发问题。
相应的,本申请实施例还公开了一种组播报文抑制装置,应用于软件定义网络控制器,参见图6所示,该装置包括:
请求获取模块11,用于获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求;
流表更新模块12,用于通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略;
报文转发模块13,用于基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,以便所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端。
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
由此可见,通过本实施例的上述方案,应用于软件定义网络控制器,首先获取发送端的第一网元节点设备与接收端的第二网元节点设备根据流表策略转发的两端各自的广播请求;然后通过深度报文检测技术对所述广播请求进行解析,并利用解析后得到的数据更新所述流表策略,以得到目标流表策略;最后基于所述目标流表策略,将通过所述第一网元节点设备对所述发送端发送的组播报文进行转换得到的单播报文转发至所述第二网元节点设备,以便所述第二网元节点设备将所述单播报文转换为所述组播报文发送给所述接收端。可见,通过发送端的网元节点设备将组播报文转换为单播报文,然后SDN控制器对单播报文进行解析再转发到接收端的网元节点设备,接收端的网元节点设备将单播报文再转换为组播报文发送给接收端,如此一来,在SDN网络中支持组播应用时,当很少有站点订阅多播服务时,或者当网络的某些部分订阅不足时,网络资源将不会浪费在设备上和通信信道上,并且,不用基于各种组播路由协议进行传输,提高了传输效率,简化了方法。
进一步的,本申请实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中内容不能认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的组播报文抑制方法中的相关步骤。另外,本实施例中的电子设备20具体可以为SDN控制器。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,数据223可以包括各种各样的数据。存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的组播报文抑制方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机可读存储介质,这里所说的计算机可读存储介质包括随机存取存储器(Random Access Memory,RAM)、内存、只读存储器(Read-Only Memory,ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、磁碟或者光盘或技术领域内所公知的任意其他形式的存储介质。其中,所述计算机程序被处理器执行时实现前述组播报文抑制方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的组播报文抑制或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种组播报文抑制方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。