一种基于Linux流量控制的弹性带宽配置方法

文档序号:10555529阅读:339来源:国知局
一种基于Linux流量控制的弹性带宽配置方法【专利摘要】本发明提供了一种基于Linux流量控制的弹性带宽配置方法,包括以下步骤:S1、获取租户所要共享的多个floatingip所在的路由器;S2、使用iptables命令将租户虚机发出的数据包打上用于识别租户的租户标记值,并将数据包的源地址替换为floatingip地址;S3、在外网网卡上创建HTB队列、默认分类;S4、在HTB队列中创建租户分类并设置相应带宽值;S5、根据租户标记值创建分类对应的过滤器。在本发明中,同一租户申请多个公网IP地址时实现了带宽弹性共享功能,解决了租户带宽资源的浪费,降低了租户的使用成本。【专利说明】一种基于Linux流量控制的弹性带宽配置方法
技术领域
[0001]本发明涉及云计算
技术领域
,尤其涉及一种基于Linux流量控制的弹性带宽配置方法。【
背景技术
】[0002]云计算提供了一种弹性的资源配置,可以按用户的等级、付费等情况,按需使用虚拟网络、虚拟存储以及虚拟计算资源。特别是公有云服务,对网络带宽的控制、监控和计费等有着较高的需求。目前各大知名云计算服务提供商都在售卖公网IP地址及其网络带宽,各种云计算开源产品也提供了带宽控制功能。[0003]目前各大云计算服务提供商均只提供了单个floatingip的带宽限制,这种设计存在以下缺点:首先,用户不能高效地应用所申请的带宽资源,多个floatingip的带宽资源都是独立的,其带宽资源不能相互共享,这样就使得租户必须多次购买带宽资源;其次,当某些floatingip的流量较小,长时间达不到所购带宽的峰值,会造成了租户带宽资源的浪费;再次,Floatingip的带宽值常常是不能更改或者需要人工操作去更改,在floatingip流量激增或空闲时,不能做到带宽资源的弹性调整。[0004]目前,开源的云平台中关于带宽限制的解决方案是限制公共网络和私有网络的带宽,这种方案对于公有云的租户网络带宽的意义不大,因为公有云中公共网络只有运营商才能管理和维护,而且对公共网络带宽的设置会影响云平台的所有用户。私有网络不涉及租户的成本,因为私有网络的带宽资源属于租户本身,公有云中很少有租户对自己私有网络带宽管理的需求。因此,这种方案更适合用于私有云。【
发明内容】[0005]本发明的目的在于公开基于Linux流量控制的弹性带宽配置方法,用以实现同一用户的多个floatingip带宽资源的共享,减低租户带宽资源的浪费,降低租户的使用成本。[0006]为实现上述目的,本发明提供了一种基于Linux流量控制的弹性带宽配置方法,包括以下步骤:[0007]S1、获取租户所要共享的多个floatingip所在的路由器;[0008]S2、使用iptables命令将租户虚机发出的数据包打上用于识别租户的租户标记值,并将数据包的源地址替换为floatingip地址;[0009]S3、在外网网卡上创建HTB队列、默认分类;[0010]S4、在HTB队列中创建租户分类并设置相应带宽值;[0011]S5、根据租户标记值创建分类对应的过滤器。[0012]作为本发明的进一步改进,步骤SI中的floatingip位于网络节点中租户路由器的公网出口上。[0013]作为本发明的进一步改进,步骤S2还包括:在租户路由器内将所有发出的数据包打上租户标记值。[0014]作为本发明的进一步改进,步骤S3中的“HTB队列”包括HTB根队列、HTB根类、HTB子类,所述HTB子类为在外网网卡上为租户所分配的带宽级别。[0015]作为本发明的进一步改进,步骤S4还包括将符合过滤器过滤条件的租户访问虚拟机所产生的数据包发送至对应的HTB子类。[0016]与现有技术相比,本发明的有益效果是:本发明在同一租户申请多个公网IP地址时实现了带宽弹性共享功能,解决了租户带宽资源的浪费,降低了租户的使用成本。【附图说明】[0017]图1为本发明一种基于Linux流量控制的弹性带宽配置方法运用于openstack架构云平台的网络拓扑图;[0018]图2为弹性带宽配置过程的实例;[0019]图3为弹性带宽配置过程中的数据包传递路径示意图。【具体实施方式】[0020]下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。[0021]在本说明书各实施方式中,云平台与云计算平台具有等同含义。除非特别指出,【具体实施方式】中的计算资源、存储资源、带宽资源均指虚拟计算资源、虚拟存储资源、虚拟带宽资源。[0022]在详细阐述本发明【具体实施方式】之前,首先对【具体实施方式】中的各专业术语作出说明。[0023]OpenStack:一种云计算管理平台系统;Neutron网络服务:OpenStack的一个服务组件;LinuxTC:Linux内核中的流量控制软件;Iptables:Linux系统用户空间的网络流量过滤软件;floatingip:弹性ip地址,通常指云平台中可以随意分配的公网地址资源,目前主要为IPV4地址格式,由32位2进制数组成。[0024]在本实施方式中,可在Openstack云计算平台(一种开源云平台)中实现了同租户所申请的多个floatingip带宽资源共享。其原理是基于LinuxTC中的HTB(HierarchyTokenBucket)分类队列技术。TC是Iinux中的流量控制模块,它可以在网络接口上建立数据包发送的队列,并定义队列中数据包的发送方式,从而实现对流量的控制。TC在流量控制中使用的队列分为两类:无类分类队列和有类分类队列。无类分类队列的特点是对进入网络设备(例如,内网网桥、外网网卡、交换机、路由器)的数据流不加区分统一对待,而有类分类队列则是根据不同的需求以分类的方式区分对待。因为我们需要对不同租户的流量设置不同的带宽值,在本实施方式中,选用有类分类队列,并具体为HTB队列。[0025]使用HTB队列,创建一个默认分类和多个指定了带宽值的分类,每个申请了公网带宽的租户对应一个分类,默认分类不限制带宽,用于非floatingip流量从此分类出队。为了使每个租户的数据包进入各自的分类出队,还需为每个租户创建相应的过滤器,过滤器会通过数据包在内核空间中的租户标记来区分该数据包属于哪个租户,并放置到相应的队列分类中。[0026]租户对应的标记值可以在Openstack数据库中维护,标记数据包是使用iptables命令来实现的。当租户发出的数据包经过租户路由器时,使用iptables将要发出的数据包在内核空间中打上该租户特有的标记,数据包经过外网桥到达外网网卡后,过滤器根据该标记将数据包发送到指定分类。[0027]本发明适用的场景具体为,网络节点操作Iinux系统内核3.10版本以上,启用Neutron组件的openstack平台,并且不启用DVR机制,即分布式路由,所有floatingip位于网络节点上。本发明在功能上主要分为两个部分:数据包标记部分和队列管理部分,图3描述了这两部分功能对数据包的处理方式,图3中的“router”即为图2中的租户路由器。[0028]结合图1所示,本发明一种基于Linux流量控制的弹性带宽配置方法,包括以下步骤:[0029]S1、获取租户所要共享的多个floatingip所在的路由器。具体的,该步骤SI中的floatingip位于网络节点中租户路由器的公网出口上。租户虚机向外发送的所有流量都要经过路由器(即图1中的:routerl、router2),因此要在路由器内标记floatingip的数据包。每个租户可创建多个路由器,此步骤需要获取到满足以下条件的路由器:(1)路由器下存在私有网络;(2)私有网络中存在虚拟机(vm);(3)虚拟机绑定了floatingip地址。[0030]S2、使用iptables命令将租户虚机发出的数据包打上用于识别租户的租户标记值,并将数据包的源地址替换为floatingip地址。该步骤S2还包括:在租户路由器内将所有发出的数据包打上租户标记值。标记值用于过滤器对租户数据包的识别,必须是唯一的,可以维护在数据库中,通过租户信息获取。[0031]虚机发送到外网的数据包会在路由器中将数据包的源地址由内网地址替换为floatingip地址。这个操作是在iptablesnat表的P0STR0UTING链上实现的。由Linux内核实现决定,该操作要在给数据包打上租户标记值之后。此时租户发出数据包的源地址仍然为虚拟机的内网地址,因此需要获取绑定floatingip的虚拟机内网地址。使用iptables命令标记源地址为floatingip的数据包。使用iptables命令,在mangle表的P0STR0UTING链上对源地址为指定内网地址的数据包打上对应租户的租户标记值。[0032]S3、在外网网卡(eth2)上创建HTB队列、默认分类。其中,默认分类用于过滤器过滤之后的流量通过,即不属于任何租户的分类,不限制带宽。[0033]S4、在HTB队列中创建租户分类并设置相应带宽值。具体的,“HTB队列”包括HTB根队列、HTB根类、HTB子类,所述HTB子类为在外网网卡上为租户所分配的带宽级别。在本实施方式中,该步骤S4还包括将符合过滤器过滤条件的租户访问虚拟机所产生的数据包发送至对应的HTB子类。[0034]S5、根据租户标记值创建分类对应的过滤器。[0035]接下来对本发明一种基于Linux流量控制的弹性带宽配置配方法在openstack云平台进行部署的整个过程详细说明。[0036]第一步:准备服务器。[0037]安装openstack(juno版本)。[0038]第二步:确认配置。[0039]外网网卡(eth2),0vs外网网桥(br_ex)。[0040]第三步:构建环境[0041]创建私有网络(private-netl、private_netl),[0042]在私有网络中创建虚拟机(private-netl—vml、private-net2—vm2),[0043]创建路由器(routerl、router2),[0044]将私有网络接入路由器(private-netl—routerl、private-net2—router2),[0045]创建外网(public-netl),[0046]给路由器设置外网网关,[0047]给虚拟机分配浮动IP(192.168.1.102—vml、192.168.I.103^vm2),[0048]经过前三步得到如图1所示的本发明一种基于Linux流量控制的弹性带宽配置方法运用于openstack架构云平台的网络拓扑图。[0049]第四步:使用ipnetns命令确认router对应的namespace名称(命名空间中的名称)。[0050]routerl对应的namespace:qrouter-9e9fa43c-ea75-49d4-969a-0644fd3ee3bc;[0051]router2对应的namespace:qrouter-242c7252-15c7-46ce-918d-02b423885fde;[0052]第五步:在router内标记floatingip相关的流量。[0053]在routerl中标记绑定floatingip:192.168.1.102的虚机(10.10.10.7)的流量:1pnetnsexecqrouter-9e9fa43c-ea75-49d4-969a-0644fd3ee3bciptables—tmangle—APOSTROUTING-s10.10.10.7-jMARK—set-markI。[0054]在router2中标记绑定floatingip:192.168.1.103的虚机(20.20.20.5)的流量:1pnetnsexecqrouter-242c7252-15c7-46ce-918d-02b423885fdeiptables-tmangle-APOSTROUTING-s20.20.20.5-jMARK—set-markI。[0055]第五步:在外网网卡上建立HTB队列。[0056]建立根队列:tcqdiscadddeveth2roothandle1:htbdefault255。[0057]建立根类:tcclassadddeveth2parent1:classid1:1htbrate100mbitceil100mbit0[0058]建立为租户分配带宽的子类:tcclassadddeveth2parent1:lclassid1:10htbrate2048kbpsceil2048kbpspr1I。[0059]建立流量过滤器:tcfilteradddeveth2parent1:protocolippr1100handleIfwclassid1:10。[0060]经过后两步完成了弹性带宽共享环境的搭建,实现了同一租户多个floatingip带宽弹性共享功能,其结构图如图2所示。[0061]属于同一租户的所有路由器均会将要共享带宽的floatingip打上相同的租户标记值。每个租户在外网网卡上有相应的过滤器(filter)和队列分类,过滤器会把打上本租户标记的包发送给相应的队列分类。租户的队列分类设置了该租户申请的总带宽。[0062]上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。[0063]此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。【主权项】1.一种基于Linux流量控制的弹性带宽配置方法,其特征在于,包括以下步骤:51、获取租户所要共享的多个floatingip所在的路由器;52、使用iptables命令将租户虚机发出的数据包打上用于识别租户的租户标记值,并将数据包的源地址替换为floatingip地址;53、在外网网卡上创建HTB队列、默认分类;54、在HTB队列中创建租户分类并设置相应带宽值;55、根据租户标记值创建分类对应的过滤器。2.根据权利要求1所述的弹性带宽配置方法,其特征在于,所述步骤SI中的floatingip位于网络节点中租户路由器的公网出口上。3.根据权利要求1所述的弹性带宽配置方法,其特征在于,所述步骤S2还包括:在租户路由器内将所有发出的数据包打上租户标记值。4.根据权利要求1所述的弹性带宽配置方法,其特征在于,所述步骤S3中的“HTB队列”包括HTB根队列、HTB根类、HTB子类,所述HTB子类为在外网网卡上为租户所分配的带宽级别。5.根据权利要求1所述的弹性带宽配置方法,其特征在于,所述步骤S4还包括将符合过滤器过滤条件的租户访问虚拟机所产生的数据包发送至对应的HTB子类。【文档编号】H04L12/911GK105915470SQ201610247105【公开日】2016年8月31日【申请日】2016年4月19日【发明人】许广彬,郑军,张银滨,刘晓欣,刘志坤,傅玮【申请人】无锡华云数据技术服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1