一种面向云数据中心的多租户策略驱动型软件定义网络方法

文档序号:7807015阅读:185来源:国知局
一种面向云数据中心的多租户策略驱动型软件定义网络方法
【专利摘要】本发明属于云计算和新型网络【技术领域】,具体为一种面向云数据中心的多租户策略驱动型软件定义网络方法。具体步骤包括:租户策略定义,限定用户自定义策略的权限,策略冲突解决,策略文件解析与执行;本发明通过策略定义来配置网络,租户能够以直观的方式来定义自己的虚拟网络、虚拟防火墙等,而不必通过编写程序或者利用软件定义网络控制器所提供的编程接口;将云计算平台的管理和SDN控制器的管理统一起来;通过策略的解析来管理网络,能够获得更好的效率,节省软件定义网络控制器的CPU等计算资源,并减少控制器处理租户请求的时间。本发明在保证用户友好性的前提下,能够接近本地API调用的性能,同时大大优于RESTAPI调用的性能。
【专利说明】-种面向云数据中心的多租户策略驱动型软件定义网络方 法

【技术领域】
[0001] 本发明属于云计算和数据中心网络【技术领域】,具体涉及一种面向云数据中心的多 租户策略驱动型软件定义网络方法。

【背景技术】
[0002] 在当前将软件定义网络运用于云数据中心管理的研究中存在若干问题,主要是管 理员管理逻辑复杂、不易实现,SDN控制器效率不高,租户不能定义自己的网络策略等。而参 考亚马逊等一些公有云平台,大多都是通过租户自定义策略的方式来管理云计算中租户的 各项资源。所以,本发明设计的出发点在于云数据中心对于网络的管理同样可以使用策略 驱动的方式,并且,将原有的策略进行扩展后,很容易对不同类型的策略进行统一的整合, 并进行统一的解析与执行。这样,就简化了云数据中心平台的管理,将所有的策略平台统一 为一个策略解析平台,将原来的SDN控制器与云控制器进行有效的整合,使得整个云数据 中心平台只有一个统一的管理器,以达到统一管理、方便使用的目的。
[0003] 在当前的SDN管理中,可以通过两种方式来管理网络,即通过本地API调用的方式 和通过REST API调用的方式。但是,这两种方式均存在一定的问题。通过本地API调用的 方式,其扩展性不强,且要求专业性较强,需要管理员通过编写程序的方式来管理网络,这 就使得普通的租户不能参与自定义的网络管理;而基于REST API的方式,虽然用户友好性 有一定的提高,但是仍然达不到使得租户能够自定义策略的程度,同时,通过REST API调用 时,客户端会将同一种类型的OpenFlow指令仍然拆分为多个HTTP请求来发送,这样就限制 了其处理能力,同时造成了很大的处理延时。
[0004] 所以,我们的设计提出基于多租户的策略驱动型软件定义网络解决方法,通过对 已有的存储、计算策略等进行扩展,定义出了网络管理策略。基于Floodlight控制器,将网 络管理策略与原有策略的整合,达到了策略统一定义、统一解析、统一执行的目的。并且,支 持租户可以自定义策略,并不需要每个管理请求都发送给管理员,再由管理员进行操作,这 样就创造了更大的灵活性。同时,因为SDN相关的策略与原有策略可以整合到同一个策略 文件中,这样就将SDN的管理与原有云数据中心平台的管理整合了起来,形成了一个统一 管理平台,这样也能大大降低管理复杂性。
[0005] 因此,本发明侧重于面向云数据中心的多租户策略驱动型软件定义网络方法。
[0006] 经对现有技术的文献检索发现,在SDN概念提出之后不久,Ν0Χ项目刚刚提出 之时,Tavakoli等提出要将Ν0Χ应用于数据中心[Tavakoli A,Casado M,Koponen T,et al. Applying Ν0Χ to the Datacenter[C]HotNets. 2009·]。Tavakoli 在该文献中指出数 据中心的网络面临的主要需求有以下几点:可扩展性;资源位置独立性;高服务质量;中间 件支持;监控与排错的支持。传统的数据中心网络架构不能很好地同时支持这些特性,而将 Ν0Χ稍加扩展即可将其很好地应用于数据中心网络,并且能很好地支持以上所述的各类特 性。Banikazemi 等在文献中[Banikazemi M, Olshefski D, Shaikh A, et al. Meridian: an sdn platform for cloud network services[J]. Communications Magazine, IEEE, 2013, 5 1 (2) :120-127.]中提出的Meridian则强调SDN在云计算整合过程中的服务功能。在云计算 应用过程中,虚拟子网、多租户隔离、路由路径优化等各种需求被提了出来,而将SDN直接 应用于云计算环境时却没有一个很好的协调机制来协调SDN控制器和云控制器。Meridian 是这样一种模型,它对外隐藏内部实现,仅提供针对云计算平台的API,用于云计算管理器 进行相应的操作,例如路径优化、访问控制策略设定等。但是,Meridian提供的API与云计 算管理器之间是紧耦合的关系,不够灵活。
[0007] 云计算环境的一大特点是多租户,而各租户均希望自己的子网与其他租户的子网 之间能有效地隔离,于是也有一些研究文轩专注于利用SDN来构建云计算环境中的虚拟网 络[Azodolmolky S, ffieder P, Yahyapour R. SDN-based cloud computing networking[C] Transparent Optical Networks (ICT0N), 201315th International Conference on.IEEE, 2013:l-4〇
[0008] Malik M S, Montanari M, Huh J H, et al. Towards SDN enabled network control delegation in clouds[C]Dependable Systems and Networks(DSN), 201343rd Annual IEEE/IFIP International Conference on. IEEE, 2013:1-6 ;Bakshi K. Considerations for Software Defined Networking(SDN):Approaches and use cases[C]Aerospace Conference, 2013IEEE. IEEE, 2013:1-9.]综合这些论文,其基本论点都是通过SDN来管理 物理网络,利用SDN灵活、方便管理的特点,调用SDN控制器的API,在SDN之上来构建虚拟 网络。利用SDN来构建虚拟网络有多方面的优点,首先,云管理员可方便地进行子网的划 分:云管理员只需要定义好虚拟网络各子网、网关等信息,再将这些配置信息通过SDN控制 器下发到OpenFlow交换机建立相应的流表即可,这正是SDN中"软件定义"的优势。而在 传统网络环境中,则需要云管理员直接对各个路由器和交换机进行配置,而通过SDN,云管 理员同样可通过"软件定义"的方式来设置各虚拟子网的安全策略,因为SDN控制器掌握了 全网络的所有信息,所以可用来方便地进行安全策略规则的验证工作,并且可以很容易地 将规则在底层的交换机、路由机和防火墙等中间件上建立起来。但是目前的问题是SDN控 制器提供的API接口还没有统一的标准,因此上层网络管理软件需要与多个SDN控制器的 API进行交互,这带来了集成的难度。


【发明内容】

[0009] 本发明的目的在于提出一种操作灵活性大、管理复杂性低的面向云数据中心的多 租户策略驱动型软件定义网络方法。
[0010] 本发明的提出的面向云数据中心的多租户策略驱动型软件定义网络方法。具体步 骤为:
[0011] 第一步:租户策略自定义
[0012] 通过自定义的租户策略,SDN控制器和云管理器不需要从不同的数据库中读取租 户相关的管理数据,而只需要通过统一的接口解析租户的策略即可,这样即达到了整合SDN 控制器和云管理器的目的。通过租户自定义策略,自然地满足租户自定义、个性化策略的 需求,并且能够将虚拟机放置策略、存储策略、网络策略等整合到同一个策略文件中进行定 义,方便了租户的统一管理。
[0013] 为了在策略解析时获得更大的自由度,本发明在定义策略时通过"继承"对原有 Amazon 的 AWS 声明进行了扩展,发展出了 SIStatement(SDN Integrated Statement,集成 了 SDN的声明),声明中各个部分的继承关系如图1所示。
[0014] 其中,新定义的SIStatement对于原有声明是一种继承关系,其中的子项 "Condition"和"Effect"可以沿用与原有声明相同的定义,所以没有进行扩展。扩展的子 项为"SIPrincipal"、"SIAction"、"SIResource"三项,下面分别叙述对这三项的定义。
[0015] SIPrincipal:对于原有Principal的扩展,其基本形式为:
[0016] "SIPricipal" : { "SDN,,:,,TenantUserXXX,,},
[0017] 其中的"SDN"关键字表明这项声明是一项与SDN有关的操作,以示与原有声明中 存储等相关操作的区分,其后的租户账户名可沿用原有账户定义,以实现与原有策略的统 〇
[0018] SIAction:对于原有可操作类型的扩展,代表与网络管理相关的可进行的操作,例 如:创建虚拟网络时,定义为:
[0019] "SIAction" : " CreateVirtualNetwork,',
[0020] 创建虚拟防火墙访问控制列表ACL时,定义为:
[0021] "SIAction" : " CreateFireWallACL"
[0022] 通过此方式进行定义,"SIAction"项可以进行任意的扩展,比如如果需要进行QoS 控制时,只需要在此处定义相应的操作项,并在后续的策略解析模块进行解析即可,这样就 增加了系统的可扩展性。
[0023] SIResource :扩展了原声明中的"资源项",此处资源项的值与" SIAction"操作项 的值相关,需要根据操作项进行相应的修改。举例说明如下,当"SIAction"为创建虚拟网 络时,其后续的资源项例如:
[0024] "SIAction": "CreateVirtualNetwork", "SIResource": { guid ; aaa-aaa , ''networkName〃: ''TenantUserl-networkl 〃, ''gateway": "192. 168. 1. 1〃, "hosts": ["1A:CB:D6:CE:BF:6F","C6:CB:9E:3C:B8:E9"], }
[0025] 即在资源项中定义了当创建虚拟网络时,与虚拟网络相关的各项细节。其中包括 虚拟网络的唯一标识符guid,虚拟网络的名字,虚拟网络的网关和虚拟网络中所包含的虚 拟机的MAC地址。
[0026] 同时,SIResource项可以包含多个分段,也就是说,可以包含同一租户下的多个虚 拟子网的定义。这样,在同一个策略声明中,就可以同时创建多个虚拟子网,而不用分别创 建策略文件,这样方便了租户进行管理。
[0027] 另一个典型例子是,当"SIAction"为创建虚拟防火墙访问控制列表ACL时,其后 续的资源项例如:
[0028] ''SIAction" : 〃CreateFireWallACL〃, "SIResource": { "rules":[ { "src-ip":〃l_0. 0. 0. 1/32", 〃dst-ip〃:"10. 0. 0. 2/32〃, nw-proto : ICr ,
[0029] 〃tp-dst〃:〃80〃, ''action": ''ALLOW", }, { "src-ip^V'lO. 0. 0. 2/32〃, "dst-ip〃:〃 10. 0. 0. 1/32' 〃nw-proto":〃ICMP〃, "action〃:〃DENY〃, }], }
[0030] 可以看出,此时SIResource中包含的资源说明是防火墙ACL规则,上述示例中的 第一项规则为允许两台主机之间的TCP80端口的访问,第二项规则为拒绝ICMP协议的所有 访问。
[0031] 通过在SIResource资源项中定义防火墙ACL规则,就实现了用户自定义的访问控 制策略。
[0032] 同样,在SIResource中定义的ACL规则项目也是可以无限扩展的,租户只需要添 加更多的ACL规则项即可,这些规则可在后续的策略解析模块中进行解析,并通过多线程 方式进行实现,以达到提升效率的目的。
[0033] 通过以上方式进行继承和扩展,就构成了与SDN相关的完整的策略定义。
[0034] 第二步:限定用户自定义策略的权限
[0035] 当策略被定义以后,一个很自然的问题是,如何限制用户自定义策略的权限,并且 保证管理员拥有对网络的最终管理权。
[0036] 在OpenFlow协议白皮书中指出,在流表中建立的每一个流表项均包含一个"优先 级(Priority)"值,优先级的取值范围为0?255,其中,数字越大,表示优先级越高。基于 此,同样可以对各租户策略赋予不同的优先级,同时预设一些管理员策略,并保证管理员策 略的优先级总是大于租户策略优先级,这样就限制了租户策略的权限和使用范围。
[0037] 基于两段式优先级的定义与处理,并结合OpenFlow协议中优先级的取值范围,可 定义管理员策略的优先级取值为[128, 255],定义租户策略的优先级取值范围为(0, 127], 这样,即使租户的策略有任何越过权限的恶意行为,因为其优先级总是比管理员策略的优 先级低,所以在OpenFlow流表中不会被匹配到,也就不会执行,所以不会对整个网络产生 损害。
[0038] 本发明中,除了租户能定义相应的策略,管理员同样能定义一些管理策略。对管理 员策略的描述与租户策略不同,管理员策略侧重于原子操作(Atom Action)定义和默认策 略描述。原子操作是指是网络管理中的一些最基本的、不可被分割的操作,例如允许连接、 创建路由表项、链路带宽设定、禁止某一端口通信等。而租户策略是按应用场景来定义,例 如租户"创建虚拟子网"这一策略可分割成多个允许建立连接(虚拟子网的虚拟机之间)、 设置路由表项等多个原子操作。原子操作之间按实际操作顺序和管理优先级指定优先级的 值,例如当"创建虚拟子网"时,"允许连接"的优先级应该于"设置路由表项",因为如果不 允许连接,也就没有必要再设置或查询路由表项了。在"创建虚拟子网"完成后,如果租户 同时叠加了访问控制列表策略,比如禁止80端口访问,则可以设置一个优先级比"设置路 由表项"更低的"禁止端口访问"项,这样,虚拟机之间除了 80端口以外,都能进行正常的通 信。通过这种方式,管理员可以按需定制所有的原子操作类型及其优先级。
[0039] 租户策略的优先级分为基本优先级加偏移量(shift)两部分。基本优先级是根据 应用场景预先设定的固定值,例如"创建虚拟子网"一般先于"创建访问控制列表"执行,所 以可以设定"创建虚拟子网"的固定优先级比"创建访问控制列表"高。
[0040] 当租户策略被解析时,其策略文件被分解成为原子操作来执行,实际最终优先级 值为固定优先级值加上偏移量。偏移量定义为管理员原子操作优先级与基本值之差,因为 管理员策略的优先级取值范围是[128, 255],所以基本值固定为128。这样产生的问题是, 租户策略固定优先级值加上偏移量后,值可能大于128,超出了(0, 127]这一取值范围。解 决方法是,将租户策略固定优先级和管理员策略优先级同时再限定在一个更小范围,例如 固定优先级取值(〇, 32],原子策略优先级取值[128, 223],这样就可以保证租户固定策略 优先级加上偏移量后不大于128。将这一限定值命名为limit,则策略优先级定义表如下所 示:
[0041]

【权利要求】
1. 一种面向云数据中心的多租户策略驱动型软件定义网络方法,其特征在于具体步骤 为: 第一步:租户策略自定义 自定义租户策略,使SDN控制器和云管理器不从不同的数据库中读取租户相关的管理 数据,只通过统一的接口解析租户的策略;通过租户自定义策略,自然地满足租户自定义、 个性化策略的需求,并且将虚拟机放置策略、存储策略、网络策略整合到同一个策略文件中 进行定义,以方便租户的统一管理; 在自定义策略时通过"继承",对原有Amazon的AWS声明进行扩展,发展出 SIStatement ;其中,新定义的SIStatement对于原有声明是一种继承关系,其中的子项 "Condition"和"Effect"沿用与原有声明相同的定义;扩展的子项为"SIPrincipal "、 "SIAction"、"SIResource" 三项,分别定义如下: SIPrincipal:对于原有Principal的扩展,其基本形式为: "SIPricipal" : { "SDN" :,,TenantUserXXX,,}, 其中的"SDN"关键字表明这项声明是一项与SDN有关的操作,以示与原有声明中存储 等相关操作的区分,其后的租户账户名可沿用原有账户定义,以实现与原有策略的统一; SIAction:对于原有可操作类型的扩展,代表与网络管理相关的可进行的操作,在创 建虚拟网络时,定义为: "SIAction" : " CreateVirtualNetwork" ; 在创建虚拟防火墙访问控制列表ACL时,定义为: "SIAction" : "CreateFireWallACL" ; SIResource :扩展了原声明中的"资源项",此处资源项的值与" SIAction"操作项的值 相关,需要根据操作项进行相应的修改; 同时,SIResource项包含多个分段,即包含同一租户下的多个虚拟子网的定义; 通过在SIResource资源项中定义防火墙ACL规则,实现用户自定义的访问控制策略; 同样,在SIResource中定义的ACL规则项目也可以无限扩展,租户只需要添加更多的 ACL规则项即可; 通过以上方式进行继承和扩展,构成了与SDN相关的完整的策略定义; 第二步:限定用户自定义策略的权限 当策略被定义以后,需要限制用户自定义策略的权限,并且保证管理员拥有对网络的 最终管理权; 对各租户策略赋予不同的优先级,同时预设一些管理员策略,并保证管理员策略的优 先级总是大于租户策略优先级,以限制租户策略的权限和使用范围; 基于两段式优先级的定义与处理,并结合OpenFlow协议中优先级的取值范围,定义管 理员策略的优先级取值为[128, 255],定义租户策略的优先级取值范围为(0, 127]; 其中管理员策略侧重于原子操作定义和默认策略描述; 租户策略的优先级分为基本优先级加偏移量两部分; 当租户策略被解析时,其策略文件被分解成为原子操作来执行,实际最终优先级值为 固定优先级值加上偏移量;偏移量定义为管理员原子操作优先级与基本值之差; 首先计算原子操作偏移量,再在处理租户策略的过程中,先判断其固定优先级,通过固 定优先级加上偏移量,产生租户策略中每一项原子操作的最终优先级,这一优先级的值能 确保属于(〇, 127],这个值必定比管理员所定义的策略的优先级值小; 第三步:策略冲突解决 当租户之间策略发生冲突时,需要用管理员默认策略进行处理,处理租户策略冲突的 算法如下: 当检测到策略冲突后,首先判断这个冲突是否是被管理员预定义策略所解决的;当 租户所申请的保留带宽超过物理链路带宽时,管理员可定义将所有租户的实际带宽按 申请带宽的比例分配,这样就解决了某一个冲突问题;而当有一些冲突没有办法被管理 员策略所解决时,则直接应用管理员所定义的全局默认策略,即策略优先级的值范围在 (255-limit,255]之间的策略;最后,如果管理员也未定义相应的最终管理策略,则赋予某 一项操作的优先级为〇,在OpenFlow流表中优先级为0表示流表中最后被匹配的项,它能保 证整体策略对网络的影响最低; 第四步:策略文件解析与执行 设计一个策略模块,该策略模块包括策略文件读取、策略文件解析、策略文件执行3个 子模块;策略文件被解析后,最终还是调用本地Java API在物理网络上执行相应的操作; 策略模块中维护着一个策略文件系统,策略文件系统可以从云管理器中直接读取策 略,也可以接受租户直接向策略文件系统中写入策略;策略模块的工作流程是,由策略文件 维护系统维护整个策略文件系统,同时有策略文件监控模块对策略文件的变化进行监控; 当监控到文件系统变化时,即意味着有相关操作需要执行,此时,策略文件解析模块读取发 生变化的策略文件,对策略文件进行解析,将解析后的相关参数传到策略文件执行模块,由 策略文件执行模块进行最终的执行; (1) 系统总体处理流程 首先,由策略文件监控系统循环监控文件变化情况,当策略文件未发生变化时,继续循 环监控;当策略文件发生变化时,则通知策略文件解析与执行模块,并调用策略文件解析模 块进行解析与执行;在策略文件解析模块中,判断操作类型,并执行相应的操作;策略解析 模块的解析与执行操作完成后,返回监控流程,并进行下一次的监控循环; (2) 策略文件解析与执行 策略文件解析子模块开始工作时,首先读取发生变化的策略文件,再对其进行初步解 析,将其中与SDN相关的操作提取出来,交由后续流程进行执行,再将其它原有AWS系统的 操作交由原有的云管理器进行执行; 在策略解析子模块提取出SDN操作后,再判断相关的操作,操作类型可以是"创建虚拟 子网"或"创建虚拟防火墙ACL",也可以是其它新增的自定义的操作类型;对于每一种操 作,在线程池中开启一个新的线程来执行;在线程池中,有一个任务统一执行器对所有线程 进行管理,任务统一执行器中定义了一个统一的任务执行接口,不管是"创建虚拟子网",还 是"创建虚拟防火墙ACL",均实现这个接口;每个操作子模块通过实现任务统一执行器的 执行接口来实现系统的良好扩展性; 最后,各实际任务执行器再调用本地Java API,实现相关任务的最终执行。
【文档编号】H04L29/08GK104092565SQ201410286442
【公开日】2014年10月8日 申请日期:2014年6月24日 优先权日:2014年6月24日
【发明者】吕智慧, 陈实, 吴杰 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1