CN109257190B - 一种基于sdn的组播处理方法、控制器、交换机及系统 - Google Patents
一种基于sdn的组播处理方法、控制器、交换机及系统 Download PDFInfo
- Publication number
- CN109257190B CN109257190B CN201810876001.0A CN201810876001A CN109257190B CN 109257190 B CN109257190 B CN 109257190B CN 201810876001 A CN201810876001 A CN 201810876001A CN 109257190 B CN109257190 B CN 109257190B
- Authority
- CN
- China
- Prior art keywords
- multicast
- forwarding table
- multicast address
- sdn
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/825—Involving tunnels, e.g. MPLS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
- H04L49/602—Multilayer or multiprotocol switching, e.g. IP switching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种基于SDN的组播处理方法、控制器、交换机及系统。所述方法包括:将控制报文上送SDN控制器,在SDN控制器上形成整个大二层网络的全局组播转发表,SDN控制器将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。
Description
技术领域
本发明实施例涉及通信技术领域,具体涉及一种基于SDN的组播处理方法、控制器、交换机及系统。
背景技术
组播技术是IP网络数据传输的三种方式之一,组播解决了单播和广播方式效率低的问题。当网络中的某些用户需求特定信息时,组播源(即组播信息发送者)仅发送一次信息,组播路由器借助组播路由协议为组播帧建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发。网络上典型的组播帧是视频流,在某个虚拟局域网(VirtualLocal Area Network,VLAN)中,在二层(Layer2)设备下,组播帧是作为广播转发的,如果有用户注册了某组视频流,该VLAN中的所有成员都能收到该视频流,容易造成组播流风暴,浪费网络带宽。
IGMP Snooping(Internet Group Management Protocol Snooping,组播侦听者发现协议窥探)是运行在二层设备上的组播约束机制,用于管理和控制组播组,运行IGMPSnooping功能的二层设备通过对收到的IGMP(Internet组管理协议)报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发组播数据。图1为现有技术中未启动IGMP snooping的组播传输示意图,图2为现有技术中启动IGMP snooping的组播传输示意图,如图1和图2所示,当二层设备没有运行IGMP Snooping时,组播数据在二层被广播;当二层设备运行了IGMP Snooping后,已知组播组的组播数据不会在二层被广播,而在二层被组播给指定的接收者,从而不会影响到其它的用户。
虚似扩展局域网(Virtual eXtensible Local Area Network,VXLAN)是一种Overlay技术,通过把二层报文封装在用户数据报协议(User Datagram Protocol,UDP)隧道报文中的方式,在L3网络基础上构建了一个逻辑上的二层网络,多台leaf交换机组成一个大二层广播域。图3为现有技术中分布式VXLAN网络未启动IGMP snooping的组播传输示意图,如图3所示,在软件定义网络(Software Defined Network,SDN)管理的分布式VXLAN网络下,Spine为分布式设备VXLAN网关,leaf为分布式设备VXLAN网桥,在未开启IGMPSnooping时,组播帧是作为广播转发的,包括转发至leaf交换机本机的接收者和与其他leaf交换机相连的隧道口广播复制,这样容易造成组播流风暴,浪费网络带宽。由于二层组播只能在运行了IGMP Snooping的单台设备上实现,为了避免广播,需要在分布式网络中所有的leaf交换机上同时开启IGMP Snooping,对于规模超过百台接入交换机的数据中心,同时开启IGMP Snooping功能,对数据中心的安全管理和维护将会变得非常繁琐。
发明内容
针对现有技术中的缺陷,本发明实施例提供了一种基于SDN的组播处理方法、控制器、交换机及系统。
第一方面,本发明实施例提供一种基于SDN的组播处理方法,包括:
接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号;
判断所述组播报文是否为控制报文或数据报文;
若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表;
根据所述组播地址和所述端口号更新本地存储的本地组播转发表;
若所述组播报文为数据报文,则将所述数据报文转发至所述全局组播转发表中所述组播地址对应的所有SDN交换机,以供所述所有SDN交换机分别将所述数据报文转发至所述组播地址对应的主机;
将所述数据报文转发至所述本地组播转发表中所述组播地址对应的所有主机。
如上述方法,可选地,所述接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号,包括:
接收报文,确定接收所述报文的端口号;
判断所述报文是否为组播报文;
若所述报文为组播报文,则获取所述组播报文对应的组播地址。
如上述方法,可选地,所述控制报文包括:IGMP报告报文;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
查找本地存储的本地组播转发表中对应的组播地址;
若未查找到所述组播地址,则将所述IGMP报告报文转发至SDN控制器;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述端口号增加到所述组播地址对应的成员端口中;
若未查找到所述组播地址,则在本地组播转发表中新建所述组播地址,并将所述端口号增加到所述组播地址对应的成员端口中。
如上述方法,可选地,所述控制报文包括:
IGMP离开报文;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
从所述组播地址对应的成员端口中删除所述端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口为空,则将所述IGMP离开报文转发至所述SDN控制器。
如上述方法,可选地,所述控制报文包括:
IGMP查询报文;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
将所述IGMP查询报文发送至所述组播地址对应的所有成员端口对应的主机;
若在第一预设时段内,未接收到所述主机发送的对应的IGMP报告报文,则从所述组播地址对应的成员端口中删除所述主机对应的端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口不为空,则将所述IGMP查询报文对应的IGMP报告报文发送至所述SDN控制器。
如上述方法,可选地,所述将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,包括:
将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和预设组播规则判断获知所述组播地址满足预设组播规则之后,根据所述组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,并在判断获知所述组播地址不满足预设组播规则之后,将所述预设组播规则发送至所述控制报文对应的SDN交换机;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
根据所述预设组播规则,删除本地存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
第二方面,本发明又一实施例提供一种基于SDN的组播处理方法,包括:
接收SDN交换机发送的控制报文,确定所述SDN交换机对应的ID号;
获取所述控制报文对应的组播地址;
根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述SDN交换机更新所述SDN交换机存储的全局组播转发表,并根据所述SDN交换机存储的本地组播转发表和全局组播转发表转发接收到的数据报文。
如上述方法,可选地,所述控制报文包括:
IGMP报告报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
查找本地存储的全局组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述ID号增加到所述组播地址对应的交换机端口中;
若未查找到所述组播地址,则在全局组播转发表中新建所述组播地址,并将所述ID号增加到所述组播地址对应的交换机端口中。
如上述方法,可选地,所述控制报文包括:
IGMP查询报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
查找本地存储的全局组播转发表中对应的组播地址,确定所述组播地址对应的所有SDN交换机;
向每个所述SDN交换机发送IGMP查询报文,并启动全局组播转发表中每个所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则从所述组播地址对应的交换机端口中删除所述SDN交换机对应的ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
如上述方法,可选地,所述控制报文包括:
IGMP离开报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
向所述ID号对应的SDN交换机发送IGMP查询报文,并启动全局组播转发表中所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,从所述组播地址对应的交换机端口中删除所述ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
如上述方法,可选地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
根据所述组播地址和预设组播规则判断所述组播地址是否满足预设组播规则;
若满足所述预设组播规则,则根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
否则,将所述预设组播规则发送至所述控制报文对应的SDN交换机,以供所述SDN交换机根据所述预设组播规则,删除所述SDN交换机存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
第三方面,本发明实施例提供一种SDN交换机,包括:
第一接收模块,用于接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号;
判断模块,用于判断所述组播报文是否为控制报文或数据报文;
第一发送模块,用于若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表;
第一更新模块,用于根据所述组播地址和所述端口号更新本地存储的本地组播转发表;
转发模块,用于若所述组播报文为数据报文,则将所述数据报文转发至所述全局组播转发表中所述组播地址对应的所有SDN交换机,以供所述所有SDN交换机分别将所述数据报文转发至所述组播地址对应的主机;
组播模块,用于将所述数据报文转发至所述本地组播转发表中所述组播地址对应的所有主机。
如上述SDN交换机,可选地,所述控制报文包括:IGMP报告报文;
相应地,所述第一发送模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
未查找到所述组播地址,则将所述IGMP报告报文转发至SDN控制器;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述端口号增加到所述组播地址对应的成员端口中;
若未查找到所述组播地址,则在本地组播转发表中新建所述组播地址,并将所述端口号增加到所述组播地址对应的成员端口中。
如上述SDN交换机,可选地,所述控制报文包括:
IGMP离开报文;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
从所述组播地址对应的成员端口中删除所述端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述第一发送模块具体用于:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口为空,则将所述IGMP离开报文转发至所述SDN控制器。
如上述SDN交换机,可选地,所述控制报文包括:
IGMP查询报文;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
将所述IGMP查询报文发送至所述组播地址对应的所有成员端口对应的主机;
若在第一预设时段内,未接收到所述主机发送的对应的IGMP报告报文,则从所述组播地址对应的成员端口中删除所述主机对应的端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述第一发送模块具体用于:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口不为空,则将所述IGMP查询报文对应的IGMP报告报文发送至所述SDN控制器。
如上述SDN交换机,可选地,所述第一发送模块具体用于:
将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和预设组播规则判断获知所述组播地址满足预设组播规则之后,根据所述组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,并在判断获知所述组播地址不满足预设组播规则之后,将所述预设组播规则发送至所述控制报文对应的SDN交换机;
相应地,所述第一更新模块具体用于:
根据所述预设组播规则,删除本地存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
第四方面,本发明实施例提供一种SDN控制器,包括:
第二接收模块,用于接收SDN交换机发送的控制报文,确定所述SDN交换机对应的ID号;
获取模块,用于获取所述控制报文对应的组播地址;
第二更新模块,用于根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
第二发送模块,用于将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述SDN交换机更新所述SDN交换机存储的全局组播转发表,并根据所述SDN交换机存储的本地组播转发表和全局组播转发表转发接收到的数据报文。
如上SDN控制器,可选地,所述控制报文包括:
IGMP报告报文;
相应地,第二更新模块具体用于:
查找本地存储的全局组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述ID号增加到所述组播地址对应的交换机端口中;
若未查找到所述组播地址,则在全局组播转发表中新建所述组播地址,并将所述ID号增加到所述组播地址对应的交换机端口中。
如上SDN控制器,可选地,所述控制报文包括:
IGMP查询报文;
相应地,所述第二更新模块具体用于:
查找本地存储的全局组播转发表中对应的组播地址,确定所述组播地址对应的所有SDN交换机;
向每个所述SDN交换机发送IGMP查询报文,并启动全局组播转发表中每个所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则从所述组播地址对应的交换机端口中删除所述SDN交换机对应的ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
如上SDN控制器,可选地,所述控制报文包括:
IGMP离开报文;
相应地,所述第二更新模块具体用于:
向所述ID号对应的SDN交换机发送IGMP查询报文,并启动全局组播转发表中所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,从所述组播地址对应的交换机端口中删除所述ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
如上SDN控制器,可选地,所述第二更新模块具体用于:
根据所述组播地址和预设组播规则判断所述组播地址是否满足预设组播规则;
若满足所述预设组播规则,则根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
否则,将所述预设组播规则发送至所述控制报文对应的SDN交换机,以供所述SDN交换机根据所述预设组播规则,删除所述SDN交换机存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
第五方面,本发明实施例提供一种基于SDN的组播处理系统,包括:至少一个如上所述的SDN交换机和如上所述SDN控制器。
本发明实施例提供的基于SDN的组播处理方法,通过将控制报文上送SDN控制器,在SDN控制器上形成整个大二层网络的全局组播转发表,SDN控制器将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。并且仅需在SDN控制器上配置组播规则就可实现组播安全控制,使组播安全控制更加灵活,简化了运维管理的同时又提高了组播运用的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中未启动IGMP snooping的组播传输示意图;
图2为现有技术中启动IGMP snooping的组播传输示意图;
图3为现有技术中分布式VXLAN网络未启动IGMP snooping的组播传输示意图;
图4为本发明实施例提供的基于SDN的组播处理方法流程示意图;
图5为本发明又一实施例提供的基于SDN的组播处理方法流程示意图;
图6为本发明实施例提供的SDN交换机的结构示意图;
图7为本发明实施例提供的SDN控制器的结构示意图;
图8为本发明实施例提供的基于SDN的组播处理系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图4为本发明实施例提供的基于SDN的组播处理方法流程示意图,如图4所示,该方法包括:
步骤S41、接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号;
具体地,在VXLAN网络中,各交换机也称为虚拟扩展本地网络隧道终结结点(VxlanTunnel End Point,VTEP)实体,VTEP将主机产生的数据封装到UDP包头内再发送出去。主机本身的MAC地址和VLAN信息在经过封装后不再作为数据转发的依据。VTEP之间通过VXLAN隧道传输数据,VXLAN隧道是指在两个VTEP之间完成VXLAN封装报文传输的逻辑隧道。业务报文在进入VXLAN隧道时进行VXLAN头、UDP头、IP头封装后,通过三层转发透明地将封装后的报文传输给远端VTEP,远端VTEP对其进行出隧道解封装处理。在基于SDN的VXLAN网络中,将各leaf交换机记为SDN交换机,每个SDN交换机都有对应的VTEP ID号,通过与其他SDN交换机相连的隧道,可以将报文传输至其他SDN交换机。
SDN交换机接收组播报文,包括与其直连的主机发送的组播报文、组播服务器发送的组播报文或其上游交换机或服务器发送的组播报文,SDN交换机接收到组播报文之后,确定接收该报文的端口,例如,主机1向SDN交换机发送组播报文,其端口号为g1,则SDN交换机在接收到该组播报文之后,就可确定接收端口为g1。之后SDN交换机对组播报文进行解析,确定组播报文携带的组播地址,其中,组播地址可以为某个组播组的IP地址或MAC地址。
步骤S42、判断所述组播报文是否为控制报文或数据报文;
具体地,SDN交换机确定组播地址之后,根据组播地址判断该组播报文是控制报文还是数据报文,其中控制报文是指组播成员关系报文,例如,组播成员增加或删除等对应的IGMP报文,数据报文是指组播源,该组播源将被发送到注册了该组播组的所有主机上。SDN交换机对组播报文解析后,就可根据解析结果以及控制报文和数据报文格式,确定该组播报文是控制报文还是数据报文。
步骤S43、若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器址存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表;
具体地,如果判断出组播报文为控制报文,SDN交换机将控制报文通过Openflow协议扩展转发至SDN控制器,SDN控制器根据控制报文携带的组播地址和对应的SDN交换机更新在SDN控制器上存储的全局组播转发表,这样,SDN控制器就可获得VXLAN网络中所有的控制报文,从而在SDN控制器上形成整个大二层网络的全局组播转发表,其中全局组播转发表中存储了SDN控制器关联的SDN交换机及其对应的组播地址,通过全局组播转发表,SDN交换机可以确定每个组播源中有接收主机的其他SDN交换机,将组播源通过隧道发送至这些SDN交换机之后,这些SDN交换机就可以根据本地存储的本地组播转发表将组播源发送至组播地址对应的本地接收主机,从而避免了组播流风暴。
SDN控制器每更新一次全局组播转发表,则查找将全局组播转发表中更新的组播地址对应的所有SDN交换机,将全局组播转发表以Openflow流表形式发送至这些SDN交换机,这些SDN交换机收到全局组播转发表之后,更新本地存储的全局组播转发表。对于其他SDN交换机,由于其没有组播地址对应的接收主机,不再向他们下发全局组播转发表。
步骤S44、根据所述组播地址和所述端口号更新本地存储的本地组播转发表;
具体地,如果判断出组播报文为控制报文,则根据组播报文对应的组播地址和接收该组播报文的端口号更新本地存储的本地组播转发表,其中本地组播转发表存储了该SDN交换机直连的所有主机中,每个主机对应的组播地址,通过本地组播转发表,SDN交换机可以确定每个组播源的接收主机和非接收主机。
步骤S45、若所述组播报文为数据报文,则将所述数据报文转发至所述全局组播转发表中所述组播地址对应的所有SDN交换机,以供所述所有SDN交换机分别将所述数据报文转发至所述组播地址对应的主机;
具体地,如果组播报文为数据报文,SDN交换机查找本地存储的全局组播转发表,确定组播地址对应的所有SDN交换机,然后复制组播报文,封装为源IP为本地IP地址,目的IP是对端交换机IP地址的VXLAN报文,发送至对端交换机对应的隧道,对端交换机收到VXLAN报文进行解封装,得到原数据报文,然后根据本地组播转发表,将数据报文发送至其对应的主机,从而做到精确转发。
步骤S46、将所述数据报文转发至所述本地组播转发表中所述组播地址对应的所有主机。
具体地,如果SDN交换机判断出组播报文为数据报文,即该组播报文为组播源,则根据组播报文对应的组播地址,查找本地存储的本地组播转发表中所述组播地址对应的所有端口号,将该组播报文发送至这些端口号对应的主机。
例如,与交换机VTEP1直连的主机有PC1、PC2和PC3,PC1对应的端口号为g1,PC2对应的端口号为g2、PC3对应的端口号为g3,PC1和PC2为组播a的接收者,则交换机VTEP1本地组播转发表中,组播a对应的成员端口有g1和g2;与交换机VTEP2直连的主机有PC4和PC5,PC4对应的端口号为g4,PC5对应的端口号为g5,PC5为组播a的接收者,则交换机VTEP2本地组播转发表中,组播a对应的成员端口为g5。全局组播转发表中组播a对应的交换机端口为VTEP1和VTEP2。
当交换机VTEP1接收到组播a对应的数据报文时,交换机VTEP1根据本地组播转发表将数据报文发送至PC1和PC2。同时,交换机VTEP1查找全局组播转发表,确定还需要向VTEP2发送数据报文,复制数据报文,封装为VXLAN报文,源IP地址为VTEP1的IP地址,目的IP地址为VTEP2的IP地址,将VXLAN报文发送至VTEP1与VTEP2之间的隧道,VTEP2接收到VXLAN报文之后,对其解封装,确定数据报文,根据本地组播转发表,将数据报文发送至PC5,这样对于非接收者PC3和PC4,不再接收数据报文,避免了数据报文的广播。
在实际应用中,SDN交换机收到全局组播转发表后,依据组播映射表中的到其它SDN交换机的隧道出口,生成本地的全局组播转发表,包括物理口和隧道口。其中,组播映射表为VXLAN网络中所有交换机之间的隧道出口对应关系列表。在VXLAN网络中,所有交换机通过EVPN3类路由自动建立VXLAN隧道,每个交换机上存储与其他交换机对应的物理口和隧道口,即组播映射表。
在实际应用中,SDN交换机确定全局组播转发表和本地组播转发表之后,还需要将全局组播转发表和本地组播转发表发送至适配模块,适配模块对全局组播转发表和本地组播转发表进行处理后,发送至驱动模块,驱动模块安装相应的驱动,从而在SDN交换机上实现硬件组播转发表。
本发明实施例提供的基于SDN的组播处理方法,通过将控制报文上送SDN控制器,在SDN控制器上形成整个大二层网络的全局组播转发表,SDN控制器将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。
在上述实施例的基础上,进一步地,所述接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号,包括:
接收报文,确定接收所述报文的端口号;
判断所述报文是否为组播报文;
若所述报文为组播报文,则获取所述组播报文对应的组播地址。
具体地,SDN交换机接收到报文之后,首先确定接收该报文的端口号,然后解析报文,判断该报文是广播报文、组播报文、还是单播报文,具体地,根据报文对应的MAC地址判断,若MAC地址为01-00-5e-xx-xx-xx开头的MAC地址,则该报文为组播报文,则获取该组播报文对应的组播地址。
本发明实施例提供的基于SDN的组播处理方法,通过将控制报文上送SDN控制器,在SDN控制器上形成整个大二层网络的全局组播转发表,SDN控制器将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP报告报文;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
查找本地存储的本地组播转发表中对应的组播地址;
若未查找到所述组播地址,则将所述IGMP报告报文转发至SDN控制器;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述端口号增加到所述组播地址对应的成员端口中;
若未查找到所述组播地址,则在本地组播转发表中新建所述组播地址,并将所述端口号增加到所述组播地址对应的成员端口中。
具体地,控制报文包括IGMP报告报文:IGMP report,当主机想要加入某个组播组时,会向其直连的SDN交换机发送IGMP report报文,以请求加入该组播组,请求该组播地址的数据流。SDN交换机收到IGMP report报文之后,查找本地存储的本地组播转发表中对应的组播地址,如果查找到IGMP report报文携带的组播地址,则将该主机对应的接收端口号增加到本地组播转发表中该组播地址对应的成员端口中;如果未查找到IGMP report报文携带的组播地址,则在本地组播转发表中新建该组播地址,并将该主机对应的接收端口号增加到本地组播转发表中该组播地址对应的成员端口中。
如果未查找到IGMP report报文携带的组播地址,将IGMP报告报文转发至SDN控制器,告知SDN控制器该SDN交换机需要加入到组播地址中。如果查找到IGMP report报文携带的组播地址,则表示在SDN控制器存储的全局组播转发表中,该组播地址已经关联了该SDN交换机,则不再向SDN控制器转发IGMP报告报文。本发明实施例提供的基于SDN的组播处理方法,根据IGMP报告报文更新本地组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP离开报文;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
从所述组播地址对应的成员端口中删除所述端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口为空,则将所述IGMP离开报文转发至所述SDN控制器。
具体地,IGMP允许主机发送IGMP leave报文(IGMP离开报文),表明主机退出某个组播地址的数据流,大大缩短主机离开组的时间。当主机想要退出某个组播组时,会向其直连的SDN交换机发送IGMP leave报文,以请求退出该组播组,SDN交换机收到IGMP leave报文之后,查找本地存储的本地组播转发表中对应的组播地址,从本地组播转发表中该组播地址对应的成员端口号中删除主机对应的接收端口号,这样,以后该组播组的数据流不再向该主机下发。如果删除组播地址对应的成员端口号之后,在本地组播转发表中,该组播地址对应的成员端口为空,则从本地组播转发表中删除该组播地址,并将IGMP leave报文转发至SDN控制器,表示SDN交换机退出该组播地址对应的组播。
本发明实施例提供的基于SDN的组播处理方法,根据IGMP离开报文更新本地组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP查询报文;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
将所述IGMP查询报文发送至所述组播地址对应的所有成员端口对应的主机;
若在第一预设时段内,未接收到所述主机发送的对应的IGMP报告报文,则从所述组播地址对应的成员端口中删除所述主机对应的端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口不为空,则将所述IGMP查询报文对应的IGMP报告报文发送至所述SDN控制器。
具体地,IGMP leave报文是主机主动退出某个组播组时发出的控制报文,在实际应用中,IGMP还允许查询者(如组播服务器或其他交换机或路由器)发送IGMP query报文(IGMP查询报文),查询特定组播地址。SDN交换机接收到IGMP query报文之后,将IGMPquery报文发送至本地组播转发表中组播地址对应的所有成员端口对应的主机,然后等待接收每个主机发送的IGMP report报文(IGMP报告报文),若在预设时段内,未接收到某个主机发送的该组播地址的IGMP report报文,则从本地组播转发表中该组播地址对应的成员端口中删除该主机对应的端口号,如果删除组播地址对应的成员端口号之后,在本地组播转发表中,该组播地址对应的成员端口为空,则从本地组播转发表中删除该组播地址。如果更新后的本地组播转发表中该组播地址对应的成员端口不为空,则将IGMP查询报文对应的IGMP报告报文发送至SDN控制器。
本发明实施例提供的基于SDN的组播处理方法,根据IGMP查询报文更新本地组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,包括:
将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和预设组播规则判断获知所述组播地址满足预设组播规则之后,根据所述组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,并在判断获知所述组播地址不满足预设组播规则之后,将所述预设组播规则发送至所述控制报文对应的SDN交换机;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
根据所述预设组播规则,删除本地存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
具体地,在SDN控制器上存储预设组播规则就可实现组播安全控制,例如允许的组播地址为:224.2.2.2~224.2.2.244,若SDN控制器接收到控制报文之后,判断报文携带的组播地址不在允许的组播地址表内,则将预设组播规则通过Openflow协议ofp_flow报文以流表形式发送至该组播地址对应的所有SDN交换机,SDN交换机接收到预设组播规则之后,删除本地存储的本地组播转发表中所述组播地址和该组播地址对应的所有成员端口号,从而使组播安全控制更加灵活。在实际应用中SDN控制器在实现组播控制面的同时,全局存储了组播控制列表,相当于组播管理板。此时,只需在组播控制列表上配置组播规则,其它的SDN交换机会收到控制器下发的组播规则,组播安全控制更加灵活,从而,简化运维管理的同时又提高组播运用的安全性。
本发明实施例提供的基于SDN的组播处理方法,根据控制报文更新本地组播转发表,通过将控制报文上送SDN控制器,SDN控制器根据预设组播规则在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。并且仅需在SDN控制器上配置组播规则就可实现组播安全控制,使组播安全控制更加灵活,简化了运维管理的同时又提高了组播运用的安全性。
图5为本发明又一实施例提供的基于SDN的组播处理方法流程示意图,如图5所示,该方法包括:
步骤S51、接收SDN交换机发送的控制报文,确定所述SDN交换机对应的ID号;
具体地,SDN交换机接收组播报文,包括与其直连的主机发送的组播报文、组播服务器发送的组播报文或其上游交换机或服务器发送的组播报文,SDN交换接收到组播报文之后,确定接收该报文的端口,之后SDN交换机对组播报文进行解析,确定组播报文携带的组播地址,其中,组播地址可以为某个组播组的IP地址或MAC地址。SDN交换机确定组播地址之后,根据组播地址判断该组播报文是控制报文还是数据报文,如果判断出组播报文为控制报文,则根据组播报文对应的组播地址和接收该组播报文的端口号更新本地存储的本地组播转发表。同时,将控制报文通过Openflow协议扩展转发至SDN控制器,SDN控制器接收控制报文之后,确定发送该控制报文的SDN交换机对应的ID号,例如,SDN交换机为VTEP3。
步骤S52、获取所述控制报文对应的组播地址;
步骤S53、根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
具体地,SDN控制器对控制报文解析,确定该控制报文对应的组播地址,根据控制报文携带的组播地址和对应的SDN交换机更新本地存储的全局组播转发表,全局组播转发表包括:{vrf,vni,group,vtep_list},其中,vrf为VPN路由转发表,包括了各个SDN交换机到其他交换机的隧道出口,VNI为VXLAN网络标识符,group为组播地址,vtep_list为组播地址对应的SDN交换机ID,每个字段采用TLV(类型-长度-值)的形式传输。SDN控制器包括基础网络维护模块,存储了整个SDN网络中的VXLAN设备节点的信息,包括设备名称,管理IP,端点IP,设备类型,链路等详细信息的数据库。SDN控制器的控制面模块,存储SDN控制器组播转发表和组播规则。SDN控制器在实现组播控制面的同时,全局存储了组播控制列表此时,只需在控制器上配置组播规则,其它的SDN交换机设备会收到控制器组播配置,组播安全控制更加灵活,从而简化运维管理。
这样,SDN控制器就可获得VXLAN网络中所有的控制报文,从而在SDN控制器上形成整个大二层网络的全局组播转发表,通过全局组播转发表,SDN交换机可以确定每个组播源中有接收主机的其他SDN交换机,将组播源通过隧道发送至这些SDN交换机之后,这些SDN交换机就可以根据本地存储的本地组播转发表将组播源发送至组播地址对应的本地接收主机,从而避免了组播流风暴。
步骤S54、将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述SDN交换机更新所述SDN交换机存储的全局组播转发表,并根据所述SDN交换机存储的本地组播转发表和全局组播转发表转发接收到的数据报文。
具体地,SDN控制器每更新一次全局组播转发表,则查找将全局组播转发表中更新的组播地址对应的所有SDN交换机,将全局组播转发表通过Openflow协议扩展发送至这些SDN交换机,这些SDN交换机收到全局组播转发表之后,更新本地存储的全局组播转发表。对于其他SDN交换机,由于其没有组播地址对应的接收主机,不再向他们下发全局组播转发表。
在此之后,当SDN交换机接收到数据报文时,就可根据本地存储的本地组播转发表将数据报文发送至对应的接收主机,根据全局组播转发表将数据报文封装成VXLAN报文,发送至有接收主机的SDN交换机对应的隧道出口,这些SDN交换机接收到VXLAN报文之后,对其进行解封装,将数据报文发送至对应的接收主机。
本发明实施例提供的基于SDN的组播处理方法,通过将控制报文上送SDN控制器,在SDN控制器上形成整个大二层网络的全局组播转发表,SDN控制器将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。
在上述实施例的基础上,进一步地,所述控制报文包括:
IGMP报告报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
查找本地存储的全局组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述ID号增加到所述组播地址对应的交换机端口中;
若未查找到所述组播地址,则在全局组播转发表中新建所述组播地址,并将所述ID号增加到所述组播地址对应的交换机端口中。
具体地,控制报文包括IGMP报告报文:IGMP report,当主机想要加入某个组播组时,会向其直连的SDN交换机发送IGMP report报文,以请求加入该组播组,请求该组播地址的数据流。SDN交换机收到IGMP report报文之后,查找本地存储的本地组播转发表中对应的组播地址,如果查找到IGMP report报文携带的组播地址,则将该主机对应的接收端口号增加到本地组播转发表中该组播地址对应的成员端口中;如果未查找到IGMP report报文携带的组播地址,则在本地组播转发表中新建该组播地址,并将该主机对应的接收端口号增加到本地组播转发表中该组播地址对应的成员端口中。
之后SDN交换机将该IGMP report发送至SDN控制器,SDN控制器获取SDN交换机对应的ID号,然后解析该IGMP report报文,确定组播地址,在本地存储的全局组播转发表查找该组播地址,如果查找到该组播地址,则将交换机ID号增加到全局组播转发表中该组播地址对应的交换机端口中,如果没有查找到该组播地址,则在全局组播转发表中新建该组播地址,并将交换机ID号增加到全局组播转发表中该组播地址对应的交换机端口中。
本发明实施例提供的基于SDN的组播处理方法,根据IGMP报告报文更新本地组播转发表和全局组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP查询报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
向每个所述SDN交换机发送IGMP查询报文,并启动全局组播转发表中每个所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则从所述组播地址对应的交换机端口中删除所述SDN交换机对应的ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
具体地,IGMP leave报文是主机主动退出某个组播组时发出的控制报文,在实际应用中,IGMP还允许查询者(如组播服务器或其他交换机或路由器)发送IGMP query报文(IGMP查询报文),查询特定组播地址。SDN交换机接收到IGMP query报文之后,将IGMPquery报文发送至本地组播转发表中组播地址对应的所有成员端口对应的主机,然后等待接收每个主机发送的IGMP report报文,若在预设时段内,未接收到某个主机发送的该组播地址的IGMP report报文,则从本地组播转发表中该组播地址对应的成员端口中删除该主机对应的端口号,如果删除组播地址对应的成员端口号之后,在本地组播转发表中,该组播地址对应的成员端口为空,则从本地组播转发表中删除该组播地址。
之后SDN交换机将该IGMP query报文发送至SDN控制器,SDN控制器获取SDN交换机对应的ID号,然后解析该IGMP query报文,确定组播地址,在本地存储的全局组播转发表查找该组播地址,如果查找到该组播地址,则向该组播地址对应的所有SDN交换机发送IGMPquery报文,并启动对应的老化定时器,等待接收IGMP query报文对应的IGMP report报文,如果老化定时器结束后,还未接收到某个SDN交换机发送的对应的IGMP报告报文,则从组播地址对应的交换机端口中删除该SDN交换机对应的ID号,如果删除组播地址对应的交换机端口之后,在全局组播转发表中,该组播地址对应的交换机端口为空,则从全局组播转发表中删除该组播地址。
本发明实施例提供的基于SDN的组播处理方法,根据IGMP查询报文更新本地组播转发表和全局组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP离开报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
向所述ID号对应的SDN交换机发送IGMP查询报文,并启动全局组播转发表中所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,从所述组播地址对应的交换机端口中删除所述ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。具体地,IGMP允许主机发送IGMP leave报文(IGMP离开报文),表明主机退出某个组播地址的数据流,大大缩短主机离开组的时间。当主机想要退出某个组播组时,会向其直连的SDN交换机发送IGMP leave报文,以请求退出该组播组,SDN交换机收到IGMPleave报文之后,查找本地存储的本地组播转发表中对应的组播地址,从本地组播转发表中该组播地址对应的成员端口号中删除主机对应的接收端口号,这样,以后该组播组的数据流不再向该主机下发。如果删除组播地址对应的成员端口号之后,在本地组播转发表中,该组播地址对应的成员端口为空,则从本地组播转发表中删除该组播地址。
之后SDN交换机将该IGMP leave报文发送至SDN控制器,SDN控制器获取SDN交换机对应的ID号,然后解析该IGMP leave报文,确定组播地址,向该SDN交换机发送IGMP查询报文,并启动对应的老化定时器,等待SDN交换机发送IGMP报告报文,若老化定时器结束之后,还未接收到该SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,则从本地存储的全局组播转发表查找该组播地址,从组播地址对应的交换机端口中删除该ID号,如果删除组播地址对应的交换机端口之后,在全局组播转发表中,该组播地址对应的交换机端口为空,则从全局组播转发表中删除该组播地址。
本发明实施例提供的基于SDN的组播处理方法,根据IGMP离开报文更新本地组播转发表和全局组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
根据所述组播地址和预设组播规则判断所述组播地址是否满足预设组播规则;
若满足所述预设组播规则,则根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
否则,将所述预设组播规则发送至所述控制报文对应的SDN交换机,以供所述SDN交换机根据所述预设组播规则,删除所述SDN交换机存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
具体地,在SDN控制器上存储预设组播规则就可实现组播安全控制,例如允许的组播地址为:224.2.2.2~224.2.2.244,若SDN控制器接收到控制报文之后,判断报文携带的组播地址不在允许的组播地址表内,则将预设组播规则通过Openflow协议ofp_flow报文以流表形式发送至该组播地址对应的所有SDN交换机,SDN交换机接收到预设组播规则之后,删除本地存储的本地组播转发表中所述组播地址对应的所有成员端口号,从而使组播安全控制更加灵活。
本发明实施例提供的基于SDN的组播处理方法,根据控制报文更新本地组播转发表,通过将控制报文上送SDN控制器,SDN控制器根据预设组播规则在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。并且仅需在SDN控制器上配置组播规则就可实现组播安全控制,使组播安全控制更加灵活,简化了运维管理的同时又提高了组播运用的安全性。
图6为本发明实施例提供的SDN交换机的结构示意图,如图6所示,所述SDN交换机包括:第一接收模块61、判断模块62、第一发送模块63、第一接收模块64、转发模块65和组播模块66,其中:
第一接收模块61用于接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号;判断模块62用于判断所述组播报文是否为控制报文或数据报文;第一发送模块63用于若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表;第一更新模块64用于根据所述组播地址和所述端口号更新本地存储的本地组播转发表;转发模块65用于若所述组播报文为数据报文,则将所述数据报文转发至所述全局组播转发表中所述组播地址对应的所有SDN交换机,以供所述所有SDN交换机分别将所述数据报文转发至所述组播地址对应的主机;组播模块66用于将所述数据报文转发至所述本地组播转发表中所述组播地址对应的所有主机。
具体地,第一接收模块61接收组播报文,包括与其直连的主机发送的组播报文、组播服务器发送的组播报文或其上游交换机或服务器发送的组播报文,第一接收模块61确定接收该报文的端口。判断模块62对组播报文解析后,根据解析结果以及控制报文和数据报文格式,确定该组播报文是控制报文还是数据报文。如果是控制报文,则将该控制报文发送至第一发送模块63和第一更新模块64,如果是数据报文,则将该数据报文发送至转发模块65和组播模块66。第一更新模块64根据组播报文对应的组播地址和接收该组播报文的端口号更新本地存储的本地组播转发表,同时第一发送模块63将控制报文通过Openflow协议扩展转发至SDN控制器,SDN控制器根据控制报文携带的组播地址和对应的SDN交换机更新SDN控制器存储的全局组播转发表,这样,SDN控制器就可获得VXLAN网络中所有的控制报文,从而在SDN控制器上形成整个大二层网络的全局组播转发表。组播模块66根据IGMP组播报文对应的组播地址,查找本地存储的本地组播转发表中所述组播地址对应的所有端口号,将该IGMP组播报文发送至这些端口号对应的主机。转发模块65查找本地存储的全局组播转发表,确定组播地址对应的所有SDN交换机,然后复制组播报文,封装为源IP为本地IP地址,目的IP是对端交换机IP地址的VXLAN报文,发送至对端交换机对应的隧道,目的交换机收到VXLAN报文进行解封装,然后根据本地组播转发表,发送至其对应的主机,从而做到精确转发。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN交换机,通过将控制报文上送SDN控制器,在SDN控制器上形成整个大二层网络的全局组播转发表,SDN控制器将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。
在上述实施例的基础上,进一步地,所述第一接收模块,包括:
接收单元,用于接收报文,确定接收所述报文的端口号;
判断单元,用于判断所述报文是否为组播报文;
获取单元,用于若所述报文为组播报文,则获取所述组播报文对应的组播地址。
具体地,接收单元接收到报文之后,首先确定接收该报文的端口号,然后解析报文,判断单元判断该报文是广播报文、组播报文、还是单播报文,具体地,判断单元根据报文对应的MAC地址判断,若MAC地址为01-00-5e-xx-xx-xx开头的MAC地址,则该报文为组播报文,获取单元获取该组播报文对应的组播地址。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN交换机,通过将控制报文上送SDN控制器,在SDN控制器上形成整个大二层网络的全局组播转发表,SDN控制器将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP报告报文;
相应地,所述第一发送模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
未查找到所述组播地址,则将所述IGMP报告报文转发至SDN控制器;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述端口号增加到所述组播地址对应的成员端口中;
若未查找到所述组播地址,则在本地组播转发表中新建所述组播地址,并将所述端口号增加到所述组播地址对应的成员端口中。
具体地,控制报文包括IGMP报告报文:IGMP report,当主机想要加入某个组播组时,会向其直连的SDN交换机的第一接收模块发送IGMP report报文,以请求加入该组播组,请求该组播地址的数据流。第一接收模块收到IGMP report报文之后,查找本地存储的本地组播转发表中对应的组播地址,如果查找到IGMP report报文携带的组播地址,将该主机对应的接收端口号增加到本地组播转发表中该组播地址对应的成员端口中;如果未查找到IGMP report报文携带的组播地址,本地组播地址增加单元在本地组播转发表中新建该组播地址,并将该主机对应的接收端口号增加到本地组播转发表中该组播地址对应的成员端口中,并将IGMP报告报文转发至SDN控制器。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN交换机,根据IGMP报告报文更新本地组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP离开报文;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
从所述组播地址对应的成员端口中删除所述端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述第一发送模块具体用于:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口为空,则将所述IGMP离开报文转发至所述SDN控制器。
具体地,IGMP允许主机发送IGMP leave报文(IGMP离开报文),表明主机退出某个组播地址的数据流,大大缩短主机离开组的时间。当主机想要退出某个组播组时,会向其直连的SDN交换机的第一接收模块发送IGMP leave报文,以请求退出该组播组,第一接收模块收到IGMP leave报文之后,查找本地存储的本地组播转发表中对应的组播地址,从本地组播转发表中该组播地址对应的成员端口号中删除主机对应的接收端口号,这样,以后该组播组的数据流不再向该主机下发。如果删除组播地址对应的成员端口号之后,在本地组播转发表中,该组播地址对应的成员端口为空,则从本地组播转发表中删除该组播地址,并将IGMP离开报文转发至所述SDN控制器。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN交换机,根据IGMP离开报文更新本地组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP查询报文;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
将所述IGMP查询报文发送至所述组播地址对应的所有成员端口对应的主机;
若在第一预设时段内,未接收到所述主机发送的对应的IGMP报告报文,则从所述组播地址对应的成员端口中删除所述主机对应的端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述第一发送模块具体用于:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口不为空,则将所述IGMP查询报文对应的IGMP报告报文发送至所述SDN控制器。具体地,IGMP leave报文(IGMP离开报文)是主机主动退出某个组播组时发出的控制报文,在实际应用中,IGMP还允许查询者(如组播服务器或其他交换机或路由器)发送IGMP query(IGMP查询报文)报文,查询特定组播地址。第一接收模块接收到IGMP query报文之后,将IGMP query报文发送至本地组播转发表中组播地址对应的所有成员端口对应的主机,然后等待接收每个主机发送的IGMP report报文(IGMP报告报文),若在预设时段内,未接收到某个主机发送的该组播地址的IGMP report报文,则从本地组播转发表中该组播地址对应的成员端口中删除该主机对应的端口号,如果删除组播地址对应的成员端口号之后,在本地组播转发表中,该组播地址对应的成员端口为空,则第二本地组播地址删除单元从本地组播转发表中删除该组播地址。如果成员端口不为空,则将IGMP查询报文对应的IGMP报告报文发送至SDN控制器。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN交换机,根据IGMP查询报文更新本地组播转发表,通过将控制报文上送SDN控制器,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述第一发送模块具体用于:
将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和预设组播规则判断获知所述组播地址满足预设组播规则之后,根据所述组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,并在判断获知所述组播地址不满足预设组播规则之后,将所述预设组播规则发送至所述控制报文对应的SDN交换机;
相应地,所述第一更新模块具体用于:
根据所述预设组播规则,删除本地存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
具体地,第一发送模块将控制报文发送至SDN控制器,在SDN控制器上存储预设组播规则就可实现组播安全控制,例如允许的组播地址为:224.2.2.2~224.2.2.244,若SDN控制器接收到控制报文之后,判断报文携带的组播地址不在允许的组播地址表内,则将预设组播规则通过Openflow协议ofp_flow报文以流表形式发送至该组播地址对应的所有SDN交换机,SDN交换机接收到预设组播规则之后,第一更新模块删除本地存储的本地组播转发表中所述组播地址和该组播地址对应的所有成员端口号,从而使组播安全控制更加灵活。
本发明实施例提供的SDN交换机,根据控制报文更新本地组播转发表,通过将控制报文上送SDN控制器,SDN控制器根据预设组播规则在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。并且仅需在SDN控制器上配置组播规则就可实现组播安全控制,使组播安全控制更加灵活,简化了运维管理的同时又提高了组播运用的安全性。
图7为本发明实施例提供的SDN控制器的结构示意图,如图7所示,该SDN控制器包括:第二接收模块71、获取模块72、第二更新模块73和第二发送模块74,其中:
第二接收模块71用于接收SDN交换机发送的控制报文,确定所述SDN交换机对应的ID号;获取模块72用于获取所述控制报文对应的组播地址;第二更新模块73用于根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;第二发送模块74用于将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述SDN交换机更新所述SDN交换机存储的全局组播转发表,并根据所述SDN交换机存储的本地组播转发表和全局组播转发表转发接收到的数据报文。
具体地,SDN交换机接收组播报文,包括与其直连的主机发送的组播报文、组播服务器发送的组播报文或其上游交换机或服务器发送的组播报文,SDN交换接收到组播报文之后,确定接收该报文的端口,之后SDN交换机对组播报文进行解析,确定组播报文携带的组播地址,其中,组播地址可以为某个组播组的IP地址或MAC地址。SDN交换机确定组播地址之后,根据组播地址判断该组播报文是控制报文还是数据报文,如果判断出组播报文为控制报文,则根据组播报文对应的组播地址和接收该组播报文的端口号更新本地存储的本地组播转发表。同时,将控制报文通过Openflow协议扩展转发至第二接收模块71,第二接收模块71接收控制报文之后,确定发送该控制报文的SDN交换机对应的ID号。获取模块72对控制报文解析,确定该控制报文对应的组播地址,第二更新模块73根据控制报文携带的组播地址和对应的SDN交换机更新本地存储的全局组播转发表,第二发送模块74查找将全局组播转发表中更新的组播地址对应的所有SDN交换机,将全局组播转发表通过Openflow协议扩展发送至这些SDN交换机,这些SDN交换机收到全局组播转发表之后,更新本地存储的全局组播转发表。对于其他SDN交换机,由于其没有组播地址对应的接收主机,不再向他们下发全局组播转发表。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN控制器,通过接收控制报文,在SDN控制器上形成整个大二层网络的全局组播转发表,将全局组播转发表下发至各SDN交换机,SDN交换机收到全局组播转发表后,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现二层组播的运用,能有效减少组播流风暴,提高网络带宽利用率。
在上述实施例的基础上,进一步地,所述控制报文包括:
IGMP报告报文;
相应地,第二更新模块具体用于:
查找本地存储的全局组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述ID号增加到所述组播地址对应的交换机端口中;
若未查找到所述组播地址,则在全局组播转发表中新建所述组播地址,并将所述ID号增加到所述组播地址对应的交换机端口中。
具体地,SDN交换机将该IGMP report(IGMP报告报文)发送至SDN控制器,SDN控制器获取SDN交换机对应的ID号,然后解析该IGMP report报文,确定组播地址,在本地存储的全局组播转发表查找该组播地址,如果查找到该组播地址,则将交换机ID号增加到全局组播转发表中该组播地址对应的交换机端口中,如果没有查找到改组播地址,则在全局组播转发表中新建该组播地址,并将交换机ID号增加到全局组播转发表中该组播地址对应的交换机端口中。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN控制器,根据IGMP报告报文更新本地组播转发表和全局组播转发表,通过接收控制报文,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP查询报文;
相应地,所述第二更新模块具体用于:
查找本地存储的全局组播转发表中对应的组播地址,确定所述组播地址对应的所有SDN交换机;
向每个所述SDN交换机发送IGMP查询报文,并启动全局组播转发表中每个所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则从所述组播地址对应的交换机端口中删除所述SDN交换机对应的ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
具体地,SDN交换机将该IGMP query报文(IGMP查询报文)发送至SDN控制器,SDN控制器获取SDN交换机对应的ID号,然后解析该IGMP query报文,确定组播地址,在本地存储的全局组播转发表查找该组播地址,如果查找到该组播地址,则向该组播地址对应的所有SDN交换机发送IGMP query报文,并启动对应的老化定时器,等待接收IGMP query报文对应的IGMP report报文,如果老化定时器结束后,还未接收到某个SDN交换机发送的对应的IGMP报告报文,则从组播地址对应的交换机端口中删除该SDN交换机对应的ID号,如果删除组播地址对应的交换机端口之后,在全局组播转发表中,该组播地址对应的交换机端口为空,则从全局组播转发表中删除该组播地址。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN控制器,根据IGMP查询报文更新本地组播转发表和全局组播转发表,通过接收控制报文,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述控制报文包括:
IGMP离开报文;
相应地,所述第二更新模块具体用于:
向所述ID号对应的SDN交换机发送IGMP查询报文,并启动全局组播转发表中所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,从所述组播地址对应的交换机端口中删除所述ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
具体地,SDN交换机将该IGMP leave报文(IGMP离开报文)发送至SDN控制器,SDN控制器获取SDN交换机对应的ID号,然后解析该IGMP leave报文,确定组播地址,向该SDN交换机发送IGMP查询报文,并启动对应的老化定时器,等待SDN交换机发送IGMP报告报文,若老化定时器结束之后,还未接收到该SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,则从本地存储的全局组播转发表查找该组播地址,从组播地址对应的交换机端口中删除该ID号,如果删除组播地址对应的交换机端口之后,在全局组播转发表中,该组播地址对应的交换机端口为空,则从全局组播转发表中删除该组播地址。本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的SDN控制器,根据IGMP离开报文更新本地组播转发表和全局组播转发表,通过接收控制,在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。
在上述各实施例的基础上,进一步地,所述第二更新模块具体用于:
根据所述组播地址和预设组播规则判断所述组播地址是否满足预设组播规则;
若满足所述预设组播规则,则根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
否则,将所述预设组播规则发送至所述控制报文对应的SDN交换机,以供所述SDN交换机根据所述预设组播规则,删除所述SDN交换机存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
具体地,在SDN控制器上存储预设组播规则就可实现组播安全控制,例如允许的组播地址为:224.2.2.2~224.2.2.244,若SDN控制器接收到控制报文之后,判断报文携带的组播地址不在允许的组播地址表内,则将预设组播规则通过Openflow协议ofp_flow报文以流表形式发送至该组播地址对应的所有SDN交换机,SDN交换机接收到预设组播规则之后,删除本地存储的本地组播转发表中所述组播地址对应的所有成员端口号,从而使组播安全控制更加灵活。
本发明实施例提供的SDN控制器,根据控制报文更新本地组播转发表,通过将控制报文上送SDN控制器,SDN控制器根据预设组播规则在SDN控制器上形成全局组播转发表,根据全局组播转发表向其他SDN交换机发送数据报文,根据本地组播转发表向直连的主机发送数据报文,从而实现精确转发,在多台交换机组成的大二层网上,实现了二层组播的运用,能有效减少组播流风暴,进一步提高网络带宽利用率。并且仅需在SDN控制器上配置组播规则就可实现组播安全控制,使组播安全控制更加灵活,简化了运维管理的同时又提高了组播运用的安全性。
图8为本发明实施例提供的基于SDN的组播处理系统的结构示意图,如图8所示,所述组播处理系统包括:SDN交换机81和SDN控制器82,所述组播处理系统中的SDN交换机81,其功能具体参照上述SDN交换机实施例,所述组播处理系统中的SDN控制器82,其功能具体参照上述SDN控制器实施例,此处不再赘述。
以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的各实施例技术方案的范围。
Claims (18)
1.一种基于SDN的组播处理方法,其特征在于,包括:
接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号;
判断所述组播报文是否为控制报文或数据报文;
若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表;
根据所述组播地址和所述端口号更新本地存储的本地组播转发表;
若所述组播报文为数据报文,则将所述数据报文转发至所述全局组播转发表中所述组播地址对应的所有SDN交换机,以供所述所有SDN交换机分别将所述数据报文转发至所述组播地址对应的主机;
将所述数据报文转发至所述本地组播转发表中所述组播地址对应的所有主机;
其中,所述将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,包括:
将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和预设组播规则判断获知所述组播地址满足预设组播规则之后,根据所述组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,并在判断获知所述组播地址不满足预设组播规则之后,将所述预设组播规则发送至所述控制报文对应的SDN交换机;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
根据所述预设组播规则,删除本地存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
2.根据权利要求1所述的方法,其特征在于,所述接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号,包括:
接收报文,确定接收所述报文的端口号;
判断所述报文是否为组播报文;
若所述报文为组播报文,则获取所述组播报文对应的组播地址。
3.根据权利要求1所述的方法,其特征在于,所述控制报文包括:IGMP报告报文;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
查找本地存储的本地组播转发表中对应的组播地址;
若未查找到所述组播地址,则将所述IGMP报告报文转发至SDN控制器;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述端口号增加到所述组播地址对应的成员端口中;
若未查找到所述组播地址,则在本地组播转发表中新建所述组播地址,并将所述端口号增加到所述组播地址对应的成员端口中。
4.根据权利要求1所述的方法,其特征在于,所述控制报文包括:
IGMP离开报文;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
从所述组播地址对应的成员端口中删除所述端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口为空,则将所述IGMP离开报文转发至所述SDN控制器。
5.根据权利要求1所述的方法,其特征在于,所述控制报文包括:
IGMP查询报文;
相应地,所述根据所述组播地址和所述端口号更新本地存储的本地组播转发表,包括:
查找本地存储的本地组播转发表中对应的组播地址;
将所述IGMP查询报文发送至所述组播地址对应的所有成员端口对应的主机;
若在第一预设时段内,未接收到所述主机发送的对应的IGMP报告报文,则从所述组播地址对应的成员端口中删除所述主机对应的端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,包括:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口不为空,则将所述IGMP查询报文对应的IGMP报告报文发送至所述SDN控制器。
6.一种基于SDN的组播处理方法,其特征在于,包括:
接收SDN交换机发送的控制报文,确定所述SDN交换机对应的ID号;
获取所述控制报文对应的组播地址;
根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述SDN交换机更新所述SDN交换机存储的全局组播转发表,并根据所述SDN交换机存储的本地组播转发表和全局组播转发表转发接收到的数据报文;
其中,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
根据所述组播地址和预设组播规则判断所述组播地址是否满足预设组播规则;
若满足所述预设组播规则,则根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
否则,将所述预设组播规则发送至所述控制报文对应的SDN交换机,以供所述SDN交换机根据所述预设组播规则,删除所述SDN交换机存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
7.根据权利要求6所述的方法,其特征在于,所述控制报文包括:
IGMP报告报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
查找本地存储的全局组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述ID号增加到所述组播地址对应的交换机端口中;
若未查找到所述组播地址,则在全局组播转发表中新建所述组播地址,并将所述ID号增加到所述组播地址对应的交换机端口中。
8.根据权利要求6所述的方法,其特征在于,所述控制报文包括:
IGMP查询报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
查找本地存储的全局组播转发表中对应的组播地址,确定所述组播地址对应的所有SDN交换机;
向每个所述SDN交换机发送IGMP查询报文,并启动全局组播转发表中每个所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则从所述组播地址对应的交换机端口中删除所述SDN交换机对应的ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
9.根据权利要求8所述的方法,其特征在于,所述控制报文包括:
IGMP离开报文;
相应地,所述根据所述ID号和所述组播地址,更新本地存储的全局组播转发表,包括:
向所述ID号对应的SDN交换机发送IGMP查询报文,并启动全局组播转发表中所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,从所述组播地址对应的交换机端口中删除所述ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
10.一种SDN交换机,其特征在于,包括:
第一接收模块,用于接收组播报文,获取所述组播报文携带的组播地址和接收所述组播报文的端口号;
判断模块,用于判断所述组播报文是否为控制报文或数据报文;
第一发送模块,用于若所述组播报文为控制报文,则将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表;
第一更新模块,用于根据所述组播地址和所述端口号更新本地存储的本地组播转发表;
转发模块,用于若所述组播报文为数据报文,则将所述数据报文转发至所述全局组播转发表中所述组播地址对应的所有SDN交换机,以供所述所有SDN交换机分别将所述数据报文转发至所述组播地址对应的主机;
组播模块,用于将所述数据报文转发至所述本地组播转发表中所述组播地址对应的主机;
其中,所述第一发送模块具体用于:
将所述控制报文转发至SDN控制器,以供所述SDN控制器根据所述控制报文携带的组播地址和预设组播规则判断获知所述组播地址满足预设组播规则之后,根据所述组播地址和所述控制报文对应的SDN交换机更新所述SDN控制器存储的全局组播转发表,并将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述所有SDN交换机更新本地存储的全局组播转发表,并在判断获知所述组播地址不满足预设组播规则之后,将所述预设组播规则发送至所述控制报文对应的SDN交换机;
相应地,所述第一更新模块具体用于:
根据所述预设组播规则,删除本地存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
11.根据权利要求10所述的SDN交换机,其特征在于,所述控制报文包括:IGMP报告报文;
相应地,所述第一发送模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
未查找到所述组播地址,则将所述IGMP报告报文转发至SDN控制器;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述端口号增加到所述组播地址对应的成员端口中;
若未查找到所述组播地址,则在本地组播转发表中新建所述组播地址,并将所述端口号增加到所述组播地址对应的成员端口中。
12.根据权利要求10所述的SDN交换机,其特征在于,所述控制报文包括:
IGMP离开报文;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
从所述组播地址对应的成员端口中删除所述端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述第一发送模块具体用于:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口为空,则将所述IGMP离开报文转发至所述SDN控制器。
13.根据权利要求10所述的SDN交换机,其特征在于,所述控制报文包括:
IGMP查询报文;
相应地,所述第一更新模块具体用于:
查找本地存储的本地组播转发表中对应的组播地址;
将所述IGMP查询报文发送至所述组播地址对应的所有成员端口对应的主机;
若在第一预设时段内,未接收到所述主机发送的对应的IGMP报告报文,则从所述组播地址对应的成员端口中删除所述主机对应的端口号;
若判断获知所述组播地址对应的成员端口为空,则从所述本地组播转发表中删除所述组播地址;
相应地,所述第一发送模块具体用于:
若判断获知更新后的本地组播转发表中所述组播地址对应的成员端口不为空,则将所述IGMP查询报文对应的IGMP报告报文发送至所述SDN控制器。
14.一种SDN控制器,其特征在于,包括:
第二接收模块,用于接收SDN交换机发送的控制报文,确定所述SDN交换机对应的ID号;
获取模块,用于获取所述控制报文对应的组播地址;
第二更新模块,用于根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
第二发送模块,用于将所述全局组播转发表发送至所述全局组播转发表中所述组播地址对应的所有SDN交换机中,以供所述SDN交换机更新所述SDN交换机存储的全局组播转发表,并根据所述SDN交换机存储的本地组播转发表和全局组播转发表转发接收到的数据报文;
其中,所述第二更新模块具体用于:
根据所述组播地址和预设组播规则判断所述组播地址是否满足预设组播规则;
若满足所述预设组播规则,则根据所述ID号和所述组播地址,更新本地存储的全局组播转发表;
否则,将所述预设组播规则发送至所述控制报文对应的SDN交换机,以供所述SDN交换机根据所述预设组播规则,删除所述SDN交换机存储的本地组播转发表中所述组播地址和所述组播地址对应的所有成员端口号。
15.根据权利要求14所述的SDN控制器,其特征在于,所述控制报文包括:
IGMP报告报文;
相应地,第二更新模块具体用于:
查找本地存储的全局组播转发表中对应的组播地址;
若查找到所述组播地址,则将所述ID号增加到所述组播地址对应的交换机端口中;
若未查找到所述组播地址,则在全局组播转发表中新建所述组播地址,并将所述ID号增加到所述组播地址对应的交换机端口中。
16.根据权利要求14所述的SDN控制器,其特征在于,所述控制报文包括:
IGMP查询报文;
相应地,所述第二更新模块具体用于:
查找本地存储的全局组播转发表中对应的组播地址,确定所述组播地址对应的所有SDN交换机;
向每个所述SDN交换机发送IGMP查询报文,并启动全局组播转发表中每个所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则从所述组播地址对应的交换机端口中删除所述SDN交换机对应的ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
17.根据权利要求16所述的SDN控制器,其特征在于,所述控制报文包括:
IGMP离开报文;
相应地,所述第二更新模块具体用于:
向所述ID号对应的SDN交换机发送IGMP查询报文,并启动全局组播转发表中所述SDN交换机对应的老化定时器;
若所述老化定时器结束后,还未接收到所述SDN交换机发送的IGMP报告报文,则查找本地存储的全局组播转发表中对应的组播地址,从所述组播地址对应的交换机端口中删除所述ID号;
若判断获知所述组播地址对应的交换机端口为空,则从所述全局组播转发表中删除所述组播地址。
18.一种基于SDN的组播处理系统,其特征在于包括:至少一个如权利要求10-13任一所述的SDN交换机和如权利要求14-17任一所述SDN控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810876001.0A CN109257190B (zh) | 2018-08-03 | 2018-08-03 | 一种基于sdn的组播处理方法、控制器、交换机及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810876001.0A CN109257190B (zh) | 2018-08-03 | 2018-08-03 | 一种基于sdn的组播处理方法、控制器、交换机及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109257190A CN109257190A (zh) | 2019-01-22 |
CN109257190B true CN109257190B (zh) | 2021-04-20 |
Family
ID=65049173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810876001.0A Active CN109257190B (zh) | 2018-08-03 | 2018-08-03 | 一种基于sdn的组播处理方法、控制器、交换机及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109257190B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111343107B (zh) | 2020-01-22 | 2022-03-04 | 苏州盛科通信股份有限公司 | 信息处理方法、以太网交换芯片以及存储介质 |
CN111585900B (zh) * | 2020-04-30 | 2022-11-18 | 平安科技(深圳)有限公司 | 基于sdn控制器在主机覆盖网络的组播方法 |
CN114006788B (zh) * | 2020-11-30 | 2023-03-21 | 易识科技(广东)有限责任公司 | 一种建立双向隧道的控制方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980246A (zh) * | 2006-12-07 | 2007-06-13 | 杭州华为三康技术有限公司 | 二层组播流转发方法和二层组播设备 |
CN104519420A (zh) * | 2014-12-24 | 2015-04-15 | 北京格林伟迪科技有限公司 | 一种无源光网络中报文转发方法 |
CN105516028A (zh) * | 2015-12-03 | 2016-04-20 | 浙江工商大学 | 一种bgp协议的主从控制方法 |
CN106375223A (zh) * | 2016-10-25 | 2017-02-01 | 上海斐讯数据通信技术有限公司 | 一种基于sdn的数据转发系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10075393B2 (en) * | 2015-12-31 | 2018-09-11 | Fortinet, Inc. | Packet routing using a software-defined networking (SDN) switch |
-
2018
- 2018-08-03 CN CN201810876001.0A patent/CN109257190B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980246A (zh) * | 2006-12-07 | 2007-06-13 | 杭州华为三康技术有限公司 | 二层组播流转发方法和二层组播设备 |
CN104519420A (zh) * | 2014-12-24 | 2015-04-15 | 北京格林伟迪科技有限公司 | 一种无源光网络中报文转发方法 |
CN105516028A (zh) * | 2015-12-03 | 2016-04-20 | 浙江工商大学 | 一种bgp协议的主从控制方法 |
CN106375223A (zh) * | 2016-10-25 | 2017-02-01 | 上海斐讯数据通信技术有限公司 | 一种基于sdn的数据转发系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109257190A (zh) | 2019-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8443103B2 (en) | Method and system for intelligently forwarding multicast packets | |
US9876706B2 (en) | Relay system and switching device for a layer 3 network | |
US8009671B2 (en) | Multicast method and multicast routing method | |
EP2622805B1 (en) | Method for pruning a multicast branch, protocol independent multicast router, and layer-2 exchange | |
US20080205397A1 (en) | Method for forwarding multicast packets in a virtual private local area network service | |
US9832290B2 (en) | Protocol independent multicast register optimization | |
CN108243123B (zh) | 广播报文的处理方法、装置、控制器和交换机 | |
JPWO2006095508A1 (ja) | フラッディング抑制方法 | |
US9363094B2 (en) | Relay system and switching device | |
CN102215172B (zh) | 一种实现跨虚拟专用局域网组播的方法和系统 | |
CN109257190B (zh) | 一种基于sdn的组播处理方法、控制器、交换机及系统 | |
CN106790146A (zh) | 一种云环境下基于sdn技术实现移动组播的系统及其运行方法 | |
EP2981036B1 (en) | Multicast communication method and aggregation switch | |
US9219688B2 (en) | Method and system for network load balancing | |
US20160112301A1 (en) | Control apparatus, communication system, relay apparatus control method, and program | |
CN108011828B (zh) | 一种组播切换方法、装置、核心层交换机及存储介质 | |
EP4529127A1 (en) | Multicast information forwarding method, apparatus, multicast information convergence node and medium | |
CN115102806B (zh) | 组播数据传输方法、装置、系统及存储介质 | |
WO2014199924A1 (ja) | 制御装置、通信システム、中継装置の制御方法及びプログラム | |
Cisco | Configuring IP Multicast MLS | |
Cisco | Configuring Networking Protocols | |
Cisco | Configuring IP Multicast Layer 3 Switching | |
Cisco | Configuring IP Multicast Layer 3 Switching | |
KR101279790B1 (ko) | Ip 멀티캐스트 루트 모니터링 시스템 및 방법 | |
Cisco | Configuring Networking Protocols |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |