[0001]
本发明涉及网络虚拟化技术领域,更具体地说,涉及一种基于代理的软件定义网络方法及装置。
背景技术:[0002]
sdn为软件定义网络,是网络虚拟化的一种方式,而sdn控制器是软件定义网络中的应用程序,负责流量控制以确保智能网络。
[0003]
在sdn控制器中一般对外提供两个接口,一个是北向接口,一个是南向接口;其中,南向接口的通信协议称为南向协议,目前sdn控制器的南向协议已经较为完善,较为常见的南向协议有openflow协议、ovsdb协议、of-config协议等。然而,随着南向协议支持的功能越来越多,其复杂度也随之上升,若要自研一个sdn控制器,则需要深入了解各种南向协议,造成sdn控制器开发门槛较高。
[0004]
因此,如何实现一种简单的sdn控制器开发方式,降低sdn控制器的开发门槛是本领域技术人员需要解决的问题。
技术实现要素:[0005]
本发明的目的是提供一种基于代理的软件定义网络方法及装置,能够实现sdn控制器的简单开发,降低sdn控制器的开发门槛。
[0006]
为了实现上述目的,本发明提供如下技术方案:
[0007]
一种基于代理的软件定义网络装置,包括设置于控制平面的sdn控制器及设置于转发平面的代理模块,其中:
[0008]
所述sdn控制器,用于:接收业务发送的请求,将所述请求转发给所述代理模块,以及接收所述代理模块返回的结果信息;
[0009]
所述代理模块,用于:将所述请求解析成符合第一预设格式的本地配置命令,在转发设备上执行所述本地配置命令,并返回执行所得的结果信息;其中,所述第一预设格式为能够在所述转发设备上执行的命令的格式。
[0010]
优选的,所述sdn控制器包括北向接口及第一接口模块,其中:
[0011]
所述北向接口,用于:接收所述业务发送的请求;
[0012]
所述第一接口模块,用于:将所述请求转发给所述代理模块,以及接收所述代理模块返回的结果信息。
[0013]
优选的,所述代理模块包括第二接口模块、信息解析模块及命令执行模块,其中:
[0014]
所述第二接口模块,用于:将所述第一接口模块发送的请求转发给所述信息解析模块,以及将所述结果信息返回给所述第一接口模块;
[0015]
所述信息解析模块,用于:将所述请求解析成符合所述第一预设格式的本地配置命令,并将所述本地配置命令发送给所述命令执行模块;
[0016]
所述命令执行模块,用于:在所述转发设备上执行所述本地配置命令,并将执行所
得的结果信息返回给所述第二接口模块。
[0017]
优选的,所述北向接口接收的请求为符合第二预设格式的信息,所述第二预设格式为对能够在所述转发设备上执行的全部命令对应的通用的格式。
[0018]
优选的,所述命令执行模块用于:通过所述信息解析模块将所述结果信息返回给所述第二接口模块;
[0019]
所述信息解析模块,还用于:将所述结果信息转换成符合第三预设格式的信息;其中,所述第三预设格式为所述sdn控制器所需信息的格式。
[0020]
优选的,所述第一接口模块及所述第二接口模块相同,以基于所述第一接口模块及所述第二接口模块实现相应的信息传输。
[0021]
优选的,所述第一接口模块及所述第二接口模块均使用rest api作为接口标准。
[0022]
优选的,所述北向接口使用rest api作为接口标准。
[0023]
优选的,所述转发设备设置于所述转发平面中,所述转发设备为ovs;对应的,所述请求使用rest的post请求,包括封装成json的action、priority和rule三部分。
[0024]
一种基于代理的软件定义网络方法,包括:
[0025]
所述sdn控制器接收业务发送的请求,将所述请求转发给设置于转发平面的所述代理模块;其中,所述sdn控制器设置于控制平面;
[0026]
所述代理模块将所述请求解析成符合第一预设格式的本地配置命令,在转发设备上执行所述本地配置命令,并返回执行所得的结果信息;其中,所述第一预设格式为能够在所述转发设备上执行的命令的格式;
[0027]
所述sdn控制器接收所述代理模块返回的结果信息。
[0028]
本发明提供了一种基于代理的软件定义网络方法及装置,该装置包括设置于控制平面的sdn控制器及设置于转发平面的代理模块,其中:所述sdn控制器,用于:接收业务发送的请求,将所述请求转发给所述代理模块,以及接收所述代理模块返回的结果信息;所述代理模块,用于:将所述请求解析成符合第一预设格式的本地配置命令,在转发设备上执行所述本地配置命令,并返回执行所得的结果信息;其中,所述第一预设格式为能够在所述转发设备上执行的命令的格式。本申请包括控制平面的sdn控制器及转发平面的代理模块,由此,sdn控制器可以将业务发送的请求转发给代理模块,代理模块将请求解析成能够在转发设备上执行的命令后,在转发设备上执行该命令,并将执行所得结果信息返回给代理模块,从而实现软件定义网络所需实现的功能;可见,本申请通过使用代理的方式,接管转发平面中转发设备的南向接口,使得开发人员可以绕过复杂的sdn控制器的南向协议,从而自定义sdn控制器和代理之间的通信协议,实现sdn控制器的简单开发,降低了sdn控制器的开发门槛。
附图说明
[0029]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0030]
图1为本发明实施例提供的sdn架构的示意图;
[0031]
图2为本发明实施例提供的一种基于代理的软件定义网络装置的第一种结构示意图;
[0032]
图3为本发明实施例提供的一种基于代理的软件定义网络装置的第二种结构示意图。
具体实施方式
[0033]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034]
sdn控制器是基于如openflow等协议的实现的,允许服务器告诉交换机向哪里发送数据包。具体来说,sdn(软件定义网络)是一种新型网络架构,最重要的思想就是将转发平面与控制平面分离,解耦了网络设备中的软件和硬件。如图1所示,sdn架构可以分为三个平面,由上到下分别是应用平面、控制平面和数据平面。其中,应用平面由各厂商根据自己的需求,开发不同业务逻辑的应用,通过北向接口api来控制下层的转发规则;控制平面是sdn架构的核心,一般称为sdn控制器,起到承上启下的作用,sdn控制器有两个接口,北向接口用于和应用层进行数据交互,南向接口用于控制数据转发平面的网络设备;数据平面即为网络转发设备,不同于传统的交换机设备,sdn中的网络转发设备一般需要具备可编程能力,并提供相应的rpc接口以及相关控制协议。
[0035]
对于降低sdn控制器的开发难度,可以使用一些开源项目,这些开源项目将南向协议封装起来,对外提供api。但是,这种方案存在相应的缺点:1、引入新的开源项目,增加原有系统的不可控性、不稳定性。2、当新的开源项目这一模块出现bug时,由于不了解其中的运作原理,难以调试。3、简单的系统不需要太多的功能,而开源项目将南向协议封装得比较完整,所提供的功能众多,使项目臃肿。
[0036]
请参阅图2,其示出了本发明实施例提供的一种基于代理的软件定义网络装置的结构示意图,可以包括设置于控制平面的sdn控制器及设置于转发平面的代理模块,其中:
[0037]
sdn控制器,用于:接收业务发送的请求,将请求转发给代理模块,以及接收代理模块返回的结果信息;
[0038]
代理模块,用于:将请求解析成符合第一预设格式的本地配置命令,在转发设备上执行本地配置命令,并返回执行所得的结果信息;其中,第一预设格式为能够在转发设备上执行的命令的格式。
[0039]
本申请实施例中控制平面内部署sdn控制器,转发平面除了本身部署的转发设备外,还部署有代理模块(或者可以称之为代理设备),转发设备即为转发数据的设备,如交换机;对于每个部分的说明如下:sdn控制器能够接收来自应用平面的业务的请求,对代理模块发起相应的请求,并接收代理模块执行请求后返回的信息(即为结果信息);代理模块接收sdn控制器发过来的请求,将请求解析成本地配置命令,在转发设备上执行本地配置命令,从而通过使用命令行的方式进行本地配置,并返回执行所得结果信息给sdn控制器。具体来说,基于代理的软件定义网络装置实现请求处理的过程包括:sdn控制器接收来自上层(应用平面)的请求,sdn控制将请求传输给代理模块,代理模块将请求解析成相应设备的本
地配置命令,并且在本地的转发设备上执行该本地配置指令,将所得的结果信息返回给sdn控制器。其中,在将请求解析成本地配置命令时,具体为将请求解析成能够在转发设备上执行的命令,或者说将请求解析成符合能够在转发设备上执行的命令的格式的命令,进而能够在转发设备上执行解析得到的命令。简单来说,本申请中sdn控制器与代理模块之间实现数据通信的南向协议为自定义的,也即为sdn控制器直接将业务发送的请求转发给代理模块,由代理模块实现请求的解析、对应命令的执行及执行所得结果信息的返回等。
[0040]
本申请包括控制平面的sdn控制器及转发平面的代理模块,由此,sdn控制器可以将业务发送的请求转发给代理模块,代理模块将请求解析成能够在转发设备上执行的命令后,在转发设备上执行该命令,并将执行所得结果信息返回给代理模块,从而实现软件定义网络所需实现的功能;可见,本申请通过使用代理的方式,接管转发平面中转发设备的南向接口,使得开发人员可以绕过复杂的sdn控制器的南向协议,从而自定义sdn控制器和代理之间的通信协议,实现sdn控制器的简单开发,降低了sdn控制器的开发门槛。
[0041]
另外,本申请将代理(即为代理模块)和sdn控制器结合,使代理和sdn控制器之间的通信协议完全可控,绕过了复杂的sdn控制器的南向协议,只需要熟悉转发设备的本地配置命令即可。由于代理和sdn控制器都是自研,在保障了系统稳定性的同时,也可以根据需要来添加系统需要的功能,降低项目臃肿。
[0042]
本发明实施例提供的一种基于代理的软件定义网络装置,sdn控制器可以包括北向接口及第一接口模块,其中:
[0043]
北向接口,用于:接收业务发送的请求;
[0044]
第一接口模块,用于:将请求转发给代理模块,以及接收代理模块返回的结果信息。
[0045]
本申请实施例中sdn控制器包括北向接口及第一接口模块,其中,北向接口用于接收业务发送的请求,而第一接口模块则用于将请求转发给第一接口模块,以及接收代理模块返回的结果信息;从而通过北向接口及第一接口模块,分别实现与应用平面及代理模块的数据通信,使得功能划分更加细化,北向接口及第一接口模块的研发及维护都相对简便。
[0046]
本发明实施例提供的一种基于代理的软件定义网络装置,代理模块可以包括第二接口模块、信息解析模块及命令执行模块,其中:
[0047]
第二接口模块,用于:将第一接口模块发送的请求转发给信息解析模块,以及将结果信息返回给第一接口模块;
[0048]
信息解析模块,用于:将请求解析成符合第一预设格式的本地配置命令,并将本地配置命令发送给命令执行模块;
[0049]
命令执行模块,用于:在转发设备上执行本地配置命令,并将执行所得的结果信息返回给第二接口模块。
[0050]
本申请实施例中代理模块包括第二接口模块、信息解析模块及命令执行模块,其中,第二接口模块用于实现请求从第一接口模块至信息解析模块的转发,以及结果信息向第一接口模块的返回,信息解析模块用于实现请求至本地配置命令的解析,而命令执行模块则用于在转发设备上执行解析得到的本地配置命令;从而通过第二接口模块、信息解析模块及命令执行模块分别实现相应的功能,使得功能划分更加细化,第二接口模块、信息解析模块及命令执行模块的研发及维护都相对简便。
[0051]
本发明实施例提供的一种基于代理的软件定义网络装置,北向接口接收的请求可以为符合第二预设格式的信息,第二预设格式为对能够在转发设备上执行的全部命令对应的通用的格式。
[0052]
需要说明的是,对于能够在转发设备上执行的全部命令是具有相应的通用的格式的,或者说这些命令具有相同的需要使用的部分,因此本申请实施例可以定义请求的格式为包括这些部分的格式,也即请求的格式是与转发设备对应的;从而业务只需要将这些部分之外的其他数据加入至这个通用的格式中,即可实现请求的设置及传输,大大提高了请求设置及传输的简便性。举例说明,转发设备为ovs,请求为post方法的请求,则请求的json为
[0053][0054]
在实现请求解析时,可以将命令解析为:
[0055]
ovs-ofctl add-flow vni10“in_port=1priority=1001 actions=drop”。
[0056]
本发明实施例提供的一种基于代理的软件定义网络装置,命令执行模块可以用于:通过信息解析模块将结果信息返回给第二接口模块;
[0057]
信息解析模块,还可以用于:将结果信息转换成符合第三预设格式的信息;其中,第三预设格式为sdn控制器所需信息的格式。
[0058]
需要说明的是,在将结果信息返回给sdn控制器之前,还可以由信息解析模块将结果信息解析成符合第三预设格式的信息后,再将解析所得的信息通过第二接口模块返回给sdn控制器;其中,第三预设格式为sdn控制器希望结果信息所呈现的格式,如xml格式等,从而通过这种方式能够使得返回给sdn控制器的结果信息的格式为sdn控制器所需的格式,方便sdn控制器实现对结果信息的解析等操作。
[0059]
本发明实施例提供的一种基于代理的软件定义网络装置,第一接口模块及第二接口模块可以相同,以基于第一接口模块及第二接口模块实现相应的信息传输。
[0060]
本申请实施例中为了实现第一接口模块及第二接口模块的信息传输,可以以多种方式进行设置,其中最简便的一种方式则是直接将第一接口模块及第二接口模块设置为完全相同,进一步降低了软件定义网络的开发难度。
[0061]
本发明实施例提供的一种基于代理的软件定义网络装置,北向接口、第一接口模
块及第二接口模块均可以使用rest api作为接口标准。
[0062]
本申请实施例中以rest api作为北向接口、第一接口模块及第二接口模块的接口标准,从而通过这种接口标准实现相应信息传输;当然根据实际需要进行的其他设置也均在本发明的保护范围之内。
[0063]
本发明实施例提供的一种基于代理的软件定义网络装置,转发设备设置于转发平面中,转发设备为ovs;对应的,请求使用rest的post请求,包括封装成json的action、priority和rule三部分。
[0064]
具体来说,本申请实施例中采用的转发设备可以是ovs(openvswitch),将ovs的网桥抽象为bridge,将ovs的流表格式抽象为action、priority和rule三部分,这三部分均封装成json,用rest的post请求传输。
[0065]
在一种具体实现方式中,本申请实施例提供的一种基于代理的软件定义网络装置可以如图3所示(代理则为代理模块,sdn控制器中的接口模块为第一接口模块,代理中的接口模块为第二接口模块),对应的设置过程可以包括:
[0066]
1)定义sdn控制器的北向接口和信息传输格式:
[0067]
北向接口可以采用一般的restapi接口,信息传输格式(请求的格式)根据具体转发设备定义;本申请实施例中采用的转发设备可以是ovs(openvswitch),将ovs的网桥抽象为bridge,将ovs的流表格式抽象为3部分action、priority和rule,这三部分均封装成json,用rest的post请求传输;
[0068]
2)定义sdn控制器的接口模块,具体使用restapi作为该接口标准;
[0069]
3)定义代理的接口模块,该模块与sdn控制器的接口模块保持一致;
[0070]
4)定义代理对信息的解析方式,针对步骤1)中将ovs参数的抽象,假设该信息用post方法请求,且json为:
[0071][0072][0073]
则解析得到命令为:ovs-ofctl add-flow vni10“in_port=1 priority=1001 actions=drop”;
[0074]
5)将代理部署在转发平面节点,sdn控制器部署在控制平面节点;
[0075]
6)当有请求下发,代理通过直接步骤2)中的解析,得到相应命令后,直接执行该本
地配置命令,并将执行结果返回。
[0076]
本申请通过使用代理的方式,接管转发平面中转发设备的南向接口,使得开发人员可以绕过复杂的sdn南向协议,从而自定义sdn控制器和代理之间的通信协议,代理与转发设备之间则通过使用命令行的方式进行本地配置;将代理和sdn控制器结合,使代理和sdn控制器之间的通信协议完全可控,绕过了复杂的sdn南向协议,只需要熟悉转发设备的本地配置命令;由于代理和sdn控制器都是自研,在保障了系统稳定性的同时,也可以根据需要来添加系统需要的功能,降低项目臃肿。
[0077]
本发明实施例还提供了一种基于代理的软件定义网络方法,可以包括:
[0078]
sdn控制器接收业务发送的请求,将请求转发给设置于转发平面的代理模块;其中,sdn控制器设置于控制平面;
[0079]
代理模块将请求解析成符合第一预设格式的本地配置命令,在转发设备上执行本地配置命令,并返回执行所得的结果信息;其中,第一预设格式为能够在转发设备上执行的命令的格式;
[0080]
sdn控制器接收代理模块返回的结果信息。
[0081]
需要说明的是,本发明实施例提供的一种基于代理的软件定义网络方法中相关部分的说明请参见本发明实施例提供的一种基于代理的软件定义网络装置中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
[0082]
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。