一种单播方法、虚拟交换机、SDN控制器及存储介质与流程

文档序号:17003621发布日期:2019-03-02 01:55阅读:201来源:国知局
一种单播方法、虚拟交换机、SDN控制器及存储介质与流程

本发明涉及虚拟化网络技术领域,尤指一种单播方法、虚拟交换机、sdn控制器及存储介质。



背景技术:

在传统网络环境中,当非技术人员使用单播相关应用程序时,经常会造成整个网络环境的单播泛洪,甚至导致整个网络环境的瘫痪。传统的解决方案包括:主机接口使用storm-control命令控制源主机所有的往外发的单播、mac及arp表的agingtime调整、汇聚交换机上trunk口vlan修剪、在汇聚交换机的所有的二层接口上配置switchportblockunicast等方法。

但是,现有的防止未知单播泛洪的方法复杂度高、稳定性低、对网络硬件环境依赖性大,无法有效防范未知单播泛洪。



技术实现要素:

为了解决上述技术问题,本发明提供了一种单播方法、虚拟交换机、sdn控制器及存储介质,能够有效防范未知单播泛洪。

为了达到本发明目的,第一方面,本发明提供了一种单播方法,应用于虚拟交换机,所述方法包括:

接收单播源虚拟机发送的单播请求;

将所述单播请求发送至软件定义网络sdn控制器,以便所述sdn控制器在虚拟化网络中实现单播业务。

第二方面,本发明提供了一种单播方法,应用于sdn控制器,所述方法包括:

接收第一虚拟交换机发送的单播请求,所述第一虚拟交换机为与单播源虚拟机连接的虚拟交换机;

根据所述单播请求获取单播目标虚拟机;

根据所述单播目标虚拟机生成单播转发规则;

将所述单播转发规则发送至第二虚拟交换机,以便所述第二虚拟交换机向所述单播目标虚拟机发送单播报文,所述第二虚拟交换机为与所述单播目标虚拟机连接的虚拟交换机。

可选的,所述根据单播目标虚拟机生成单播转发规则,包括:基于单播源虚拟机和单播目标虚拟机的网络拓扑,并按照预设算法生成单播转发规则。

可选的,所述单播转发规则,包括:openflow流表。

第三方面,本发明提供了一种虚拟交换机,所述虚拟交换机包括接收单元和发送单元,其中:

所述接收单元,用于接收单播源虚拟机发送的单播请求;

所述发送单元,用于将所述接收单元接收的所述单播请求发送至sdn控制器,以便所述sdn控制器在虚拟化网络中实现单播业务。

第四方面,本发明提供了一种sdn控制器,所述sdn控制器包括接收单元、获取单元、生成单元和发送单元,其中:

所述接收单元,用于接收第一虚拟交换机发送的单播请求,所述第一虚拟交换机为与单播源虚拟机连接的虚拟交换机;

所述获取单元,用于根据所述接收单元接收的所述单播请求获取单播目标虚拟机;

所述生成单元,用于根据所述获取单元获取的所述单播目标虚拟机生成单播转发规则;

所述发送单元,用于将所述生成单元生成的所述单播转发规则发送至第二虚拟交换机,以便所述第二虚拟交换机向所述单播目标虚拟机发送单播报文,所述第二虚拟交换机为与所述单播目标虚拟机连接的虚拟交换机。

可选的,所述生成单元具体用于:基于单播源虚拟机和单播目标虚拟机的网络拓扑,并按照预设算法生成单播转发规则。

可选的,所述单播转发规则,包括:openflow流表。

第五方面,本发明提供了一种服务器,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任一项所述的单播方法。

第六方面,本发明提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任一项所述的单播方法。

本发明实施例提出了一种单播方法、虚拟交换机、sdn控制器及存储介质,通过sdn控制器接收第一虚拟交换机发送的单播请求;根据所述单播请求获取单播目标虚拟机;根据所述单播目标虚拟机生成单播转发规则;将所述单播转发规则发送至第二虚拟交换机,以便所述第二虚拟交换机向所述单播目标虚拟机发送单播报文。如此,降低了单播方法的复杂度、提高了稳定性、能够有效防范未知单播泛洪。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例一提供的应用于虚拟交换机的单播方法的流程示意图;

图2为本发明实施例二提供的应用于sdn控制器的单播方法的流程示意图;

图3为本发明实施例三提供的单播方法的流程示意图;

图4为本发明实施例四提供的虚拟交换机的结构示意图;

图5为本发明实施例五提供的sdn控制器的结构示意图;

图6为本发明实施例六提供的服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

本发明涉及虚拟化网络设计领域,具体涉及一种使用软件定义网络防止未知单播泛洪的实现方法。

在传统网络环境中,当非技术人员使用单播相关应用程序时,经常会造成整个网络环境的单播泛洪,甚至导致整个公司网络环境的瘫痪。分析原因主要是此单播的udp包比较大,又是持续高速发送,导致目标主机夯死。但是udp包因为无连接的概念,因此单播源依然会持续发送,一段时间后由于目标主机的mac地址在交换机上老化,但是arp还未老化(一般情况下macagingtime<arpagingtime)。造成此单播流量达到交换机后,可以通过arp表查到对应的mac地址,但mac表中又不存在对应的接口,那么交换机默认会将这些此单播的udp流量向交换机的所有接口去泛洪,形成未知单播泛洪。对于此问题,传统的解决方案主要有以下几种:

1、主机接口使用storm-control命令:但是此命令只能够控制源主机单播往外去发,这时候源主机所在的交换机并无法分辨是未知单播还是正常单播,所以所有的单播都会去抑制,正常的流量也会受到影响。

2、汇聚交换机上trunk口vlan修剪:使用该方法只能限制泛洪仅仅影响到拥有目的主机vlan的接入交换机,但是在虚拟化时代,基本所有的接入交换机上都会有所有的vlan信息,该方式也无法在所有环境中使用。

3、mac、arp表的agingtime调整:调整arpagingtime小于或等于macagingtime来避免未知单播的泛洪,值设置为多少合适,是否会引起其他问题,不同的硬件厂商是否有所不同,该方案需要在具体环境进行测评。

4、在汇聚交换机的所有的二层接口上配置switchportblockunicast:该方式的确是可以防止未知单播泛洪存在,但是某些开发测试环境中有时候是需要未知单播泛洪的存在的,同时该方式同样受制于不同硬件厂商,同时具体使用中有时还会造成某些网络不正常,因此也并不是较好的解决方案。

为了防止未知单播泛洪,本发明实施例提出了一种新的单播方法。目前,云计算、虚拟化等理念和技术不断成熟,云计算生产环境部署规模不断增长,软件定义网络(sdn,softwaredefinenetwork)作为一种虚拟化网络的实现方式,具有出色的网络性能、稳定性、灵活性和可编程特性。本发明实施例提出的单播方法基于sdn控制器在虚拟化网络中来实现,下面对本发明实施例进行详细介绍。

实施例一

图1为本发明实施例一提供的单播方法的流程示意图,该方法应用于与单播源虚拟机连接的虚拟交换机,方法包括以下步骤:

步骤101:虚拟交换机接收单播源虚拟机发送的单播请求;

步骤102:虚拟交换机将单播请求发送至sdn控制器,以便sdn控制器在虚拟化网络中实现单播业务。

在本发明的具体实施例中,sdn控制器为云平台中一种基于openflow协议的控制器,拥有整个云平台的网络拓扑和所有虚拟机信息,用来防止未知单播泛洪,实现单播业务。

需要说明的是,软件定义网络(sdn,softwaredefinenetwork)是一种云计算中网络虚拟化所采用的主流技术,具有出色的网络性能、稳定性、灵活性和可编程特性。

需要补充的是,openflow对传统网络做了全新规划,openflow交换机将原来完全由交换机/路由器控制的报文转发过程,转化为由openflow交换机和控制服务器来共同完成,从而实现了数据转发和路由控制的分离。

本发明实施例提出的单播方法,利用虚拟化平台中的snd控制器,通过使用openflow流表控制单播报文转发,使控制与转发分离,可以简单、高效的指导报文转发,将控制面与转发面解耦。如此一来,不但减少了硬件资源开销,还避免了网络环境硬件复杂性、硬件不一致等产生的问题,有效防范未知单播泛洪,避免在出现问题后再去防护,提升虚拟化网络的安全行和稳定性,提供了安全、快速、稳定的虚拟化网络服务。

实施例二

图2为本发明实施例二提供的单播方法的流程示意图,该方法应用于sdn控制器,方法包括以下步骤:

步骤201:sdn控制器接收第一虚拟交换机发送的单播请求,第一虚拟交换机为与单播源虚拟机连接的虚拟交换机;

在本发明的具体实施例中,sdn控制器为云平台中一种基于openflow协议的控制器,拥有整个云平台的网络拓扑和所有虚拟机信息,能够提供路由、流量控制等基本网络管理服务,用来在虚拟化网络中实现单播业务。

步骤202:sdn控制器根据单播请求获取单播目标虚拟机;

步骤203:sdn控制器根据单播目标虚拟机生成单播转发规则;

示例性的,步骤203具体包括:sdn控制器基于单播源虚拟机和单播目标虚拟机的网络拓扑,并按照预设算法生成单播转发规则。

示例性的,单播转发规则包括openflow流表。

需要说明的是,openflow流表用于单播报文的转发控制。通过使用openflow流表控制单播报文转发,使控制与转发分离,可以简单、高效的指导报文转发,符合云计算基础架构设计理念,控制面与转发面解耦,提高设计的灵活性,不但减少了硬件资源开销,避免硬件不一致产生的问题,还可以快速部署、变更和升级,并提供了安全、快速、稳定的虚拟化网络服务。

实际应用中,sdn控制器可以通过事先规定好的接口操作来控制openflow交换机中的流表,从而达到控制数据转发的目的。

步骤204:sdn控制器将单播转发规则发送至第二虚拟交换机,以便第二虚拟交换机向单播目标虚拟机发送单播报文,第二虚拟交换机为与单播目标虚拟机连接的虚拟交换机。

可以理解的是,第二虚拟交换机为单播目标虚拟机所在的虚拟交换机。第二虚拟交换机向单播目标虚拟机发送单播报文,使得目标虚拟机可以获取单播报文,实现虚拟网络环境中的单播业务。

需要说明的是,单播报文的转发控制均由sdn控制器进行控制,虚拟交换机只需要按照单播转发规则,例如按照openflow流表进行转发即可,不会将udp报文泛洪至交换机其他端口。

另外,还可以通过监控虚拟机虚拟网卡的udp流量情况,当出现虚拟机夯死等异常情况时,可以通知系统管理员或者设定虚拟机重启、迁移等策略进行恢复,从而提高整个系统的安全性、稳定性。这样一来,通过设计合理的虚拟机流量监控和虚拟机异常处理策略,提供了高效可靠的单播服务,提升了虚拟化网络服务的性能和稳定性。

综上所述,与传统方式相比,本发明实施例提供的单播方法,基于虚拟化网络特点,以及openflow协议提出的控制与转发分离理念,通过虚拟交换机直接将单播请求发送至sdn控制器,使得sdn控制器生成单播流表,并采用openflow流表控制报文转发,实现单播功能。如此,通过sdn方式实现单播功能,使得报文从虚拟机发出的单播请求报文直接被sdn控制器截取,即报文不会再到网络中进行泛洪,从而保证了安全、快速、稳定的网络服务;提高了虚拟化网络功能的稳定性;有效降低了单播路由协议的开销;避免了不同物理设备厂商的不一致性。

实施例三

图3为本发明实施例三提供的单播方法的流程示意图。如图3所示,单播方法可以包括以下步骤:

步骤301:单播源虚拟机根据承载的单播业务生成单播请求;

步骤302:单播源虚拟机将单播请求发送至第一虚拟交换机;

步骤303:第一虚拟交换机将单播请求发送至sdn控制器;

在本发明的具体实施例中,sdn控制器为云平台中一种基于openflow协议的控制器,拥有整个云平台的网络拓扑和所有虚拟机信息,用来在虚拟化网络中实现单播业务。

需要说明的是,软件定义网络(sdn,softwaredefinenetwork)是一种云计算中网络虚拟化所采用的主流技术,具有出色的网络性能、稳定性、灵活性和可编程特性。

步骤304:sdn控制器根据单播请求获取单播目标虚拟机;

步骤305:sdn控制器基于单播源虚拟机和单播目标虚拟机的网络拓扑,并按照预设算法生成openflow流表;

需要说明的是,openflow流表用于单播报文的转发控制,同时做虚拟机流量监控,在异常情况下设定异常处理策略。通过设计合理的openflow流表,能够实现高效可靠的单播服务,进而提升虚拟化网络服务的性能和稳定性。

步骤306:sdn控制器将openflow流表发送至第二虚拟交换机;

其中,第二虚拟交换机为与openflow流表对应的单播目标虚拟机所在的虚拟交换机。

步骤307:第二虚拟交换机向单播目标虚拟机发送单播报文;

步骤308:单播目标虚拟机获取单播报文,实现虚拟网络环境中的单播业务。

需要说明的是,还可以通过设定虚拟机流量监控,监控目标虚拟机虚拟网卡udp网络流量。设定虚拟机流量异常处理策略,当虚拟网卡udp网络流量超出设定阈值时,按照策略对虚拟机进行异常处理,以便恢复单播业务。

在实际应用中,通过使用openflow流表控制单播报文转发,使控制与转发分离,可以简单、高效的指导报文转发,符合云计算基础架构设计理念,控制面与转发面解耦,提高设计的灵活性,不但减少了硬件资源开销,避免硬件不一致产生的问题,还可以快速部署、变更和升级,并提供了安全、快速、稳定的虚拟化网络服务。

实施例四

图4为本发明实施例四提供的虚拟交换机的结构示意图,如图4所示,虚拟交换机包括接收单元401和发送单元402,其中:

接收单元401,用于接收单播源虚拟机发送的单播请求;

发送单元402,用于将接收单元401接收的单播请求发送至sdn控制器,以便sdn控制器在虚拟化网络中实现单播业务。

在本发明的具体实施例中,sdn控制器为云平台中一种基于openflow协议的控制器,拥有整个云平台的网络拓扑和所有虚拟机信息,用来在虚拟化网络中实现单播业务。

需要说明的是,软件定义网络(sdn,softwaredefinenetwork)是一种云计算中网络虚拟化所采用的主流技术,具有出色的网络性能、稳定性、灵活性和可编程特性。

也就是说,openflow对传统网络做了全新规划,openflow交换机将原来完全由交换机/路由器控制的报文转发过程,转化为由openflow交换机和控制服务器来共同完成,从而实现了数据转发和路由控制的分离。

本发明实施例提出的虚拟交换机,利用虚拟化平台中的snd控制器,通过使用openflow流表控制单播报文转发,使控制与转发分离,可以简单、高效的指导报文转发,将控制面与转发面解耦。如此一来,不但减少了硬件资源开销,还避免了网络环境硬件复杂性、硬件不一致等产生的问题,有效防范未知单播泛洪,避免在出现问题后再去防护,提升虚拟化网络的安全行和稳定性,提供了安全、快速、稳定的虚拟化网络服务。

实施例五

图5为本发明实施例五提供的sdn控制器的结构示意图,如图5所示,sdn控制器包括接收单元501、获取单元502、生成单元503和发送单元504,其中:

接收单元501,用于接收第一虚拟交换机发送的单播请求,第一虚拟交换机为与单播源虚拟机连接的虚拟交换机;

获取单元502,用于根据接收单元501接收的单播请求获取单播目标虚拟机,

生成单元503,用于根据获取单元502获取的单播目标虚拟机生成单播转发规则;

发送单元504,用于将生成单元503生成的单播转发规则发送至第二虚拟交换机,以便第二虚拟交换机向单播目标虚拟机发送单播报文,第二虚拟交换机为与单播目标虚拟机连接的虚拟交换机。

示例性的,生成单元503具体用于:基于单播源虚拟机和单播目标虚拟机的网络拓扑,并按照预设算法生成单播转发规则。

示例性的,单播转发规则,包括:openflow流表。

需要说明的是,openflow流表用于单播报文的转发控制。通过设计合理的openflow流表,能够实现高效可靠的单播服务,进而提升虚拟化网络服务的性能和稳定性。

实际应用中,sdn控制器可以通过事先规定好的接口操作来控制openflow交换机中的流表,从而达到控制数据转发的目的。

综上所述,与传统方式相比,本发明实施例提供的sdn控制器,基于虚拟化网络特点,以及openflow协议提出的控制与转发分离理念,通过虚拟交换机直接将单播请求发送至sdn控制器,使得sdn控制器生成单播流表,并采用openflow流表控制报文转发,实现单播功能。如此,通过sdn方式实现单播功能,使得报文从虚拟机发出的单播请求报文直接被sdn控制器截取,即报文不会再到网络中进行泛洪,从而保证了安全、快速、稳定的网络服务;提高了虚拟化网络功能的稳定性;有效降低了单播路由协议的开销;避免了不同物理设备厂商的不一致性。

实施例六

图6为本发明实施例六提供的服务器的结构示意图。图6示出了适于用来实现本发明实施方式的示例性服务器的框图。图6显示的服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

该服务器包括:一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述任一实施例中的单播方法。

如图6所示,服务器12以通用计算设备的形式表现。服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该服务器12交互的设备通信,和/或与使得该服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的单播方法。

实施例七

本发明实施例六提供了一种计算机存储介质。其上存储有计算机程序,该程序被处理器执行时实现如上述任一实施例中的单播方法。

本发明实施例的计算机可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1