首页> 中国专利> 一种基于Linux流量控制的弹性带宽配置方法

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

摘要

本发明提供了一种基于Linux流量控制的弹性带宽配置方法,包括以下步骤:S1、获取租户所要共享的多个floating ip所在的路由器;S2、使用iptables命令将租户虚机发出的数据包打上用于识别租户的租户标记值,并将数据包的源地址替换为floating ip地址;S3、在外网网卡上创建HTB队列、默认分类;S4、在HTB队列中创建租户分类并设置相应带宽值;S5、根据租户标记值创建分类对应的过滤器。在本发明中,同一租户申请多个公网IP地址时实现了带宽弹性共享功能,解决了租户带宽资源的浪费,降低了租户的使用成本。

著录项

  • 公开/公告号CN105915470A

    专利类型发明专利

  • 公开/公告日2016-08-31

    原文格式PDF

  • 申请/专利权人 无锡华云数据技术服务有限公司;

    申请/专利号CN201610247105.6

  • 申请日2016-04-19

  • 分类号H04L12/911(20130101);

  • 代理机构北京商专永信知识产权代理事务所(普通合伙);

  • 代理人高之波;邬玥

  • 地址 214000 江苏省无锡市滨湖区慧泽西路科教软件园B区6号华云数据大厦

  • 入库时间 2023-06-19 00:23:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-21

    授权

    授权

  • 2016-09-28

    实质审查的生效 IPC(主分类):H04L12/911 申请日:20160419

    实质审查的生效

  • 2016-08-31

    公开

    公开

说明书

技术领域

本发明涉及云计算技术领域,尤其涉及一种基于Linux流量控制的弹性带宽配置方法。

背景技术

云计算提供了一种弹性的资源配置,可以按用户的等级、付费等情况,按需使用虚拟网络、虚拟存储以及虚拟计算资源。特别是公有云服务,对网络带宽的控制、监控和计费等有着较高的需求。目前各大知名云计算服务提供商都在售卖公网IP地址及其网络带宽,各种云计算开源产品也提供了带宽控制功能。

目前各大云计算服务提供商均只提供了单个floating ip的带宽限制,这种设计存在以下缺点:首先,用户不能高效地应用所申请的带宽资源,多个floating ip的带宽资源都是独立的,其带宽资源不能相互共享,这样就使得租户必须多次购买带宽资源;其次,当某些floating ip的流量较小,长时间达不到所购带宽的峰值,会造成了租户带宽资源的浪费;再次,Floating ip的带宽值常常是不能更改或者需要人工操作去更改,在floatingip流量激增或空闲时,不能做到带宽资源的弹性调整。

目前,开源的云平台中关于带宽限制的解决方案是限制公共网络和私有网络的带宽,这种方案对于公有云的租户网络带宽的意义不大,因为公有云中公共网络只有运营商才能管理和维护,而且对公共网络带宽的设置会影响云平台的所有用户。私有网络不涉及租户的成本,因为私有网络的带宽资源属于租户本身,公有云中很少有租户对自己私有网络带宽管理的需求。因此,这种方案更适合用于私有云。

发明内容

本发明的目的在于公开基于Linux流量控制的弹性带宽配置方法,用以实现同一用户的多个floating ip带宽资源的共享,减低租户带宽资源的浪费,降低租户的使用成本。

为实现上述目的,本发明提供了一种基于Linux流量控制的弹性带宽配置方法,包括以下步骤:

S1、获取租户所要共享的多个floating ip所在的路由器;

S2、使用iptables命令将租户虚机发出的数据包打上用于识别租户的租户标记值,并将数据包的源地址替换为floating ip地址;

S3、在外网网卡上创建HTB队列、默认分类;

S4、在HTB队列中创建租户分类并设置相应带宽值;

S5、根据租户标记值创建分类对应的过滤器。

作为本发明的进一步改进,步骤S1中的floating ip位于网络节点中租户路由器的公网出口上。

作为本发明的进一步改进,步骤S2还包括:在租户路由器内将所有发出的数据包打上租户标记值。

作为本发明的进一步改进,步骤S3中的“HTB队列”包括HTB根队列、HTB根类、HTB子类,所述HTB子类为在外网网卡上为租户所分配的带宽级别。

作为本发明的进一步改进,步骤S4还包括将符合过滤器过滤条件的租户访问虚拟机所产生的数据包发送至对应的HTB子类。

与现有技术相比,本发明的有益效果是:本发明在同一租户申请多个公网IP地址时实现了带宽弹性共享功能,解决了租户带宽资源的浪费,降低了租户的使用成本。

附图说明

图1为本发明一种基于Linux流量控制的弹性带宽配置方法运用于openstack架构云平台的网络拓扑图;

图2为弹性带宽配置过程的实例;

图3为弹性带宽配置过程中的数据包传递路径示意图。

具体实施方式

下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。

在本说明书各实施方式中,云平台与云计算平台具有等同含义。除非特别指出,具体实施方式中的计算资源、存储资源、带宽资源均指虚拟计算资源、虚拟存储资源、虚拟带宽资源。

在详细阐述本发明具体实施方式之前,首先对具体实施方式中的各专业术语作出说明。

OpenStack:一种云计算管理平台系统;Neutron网络服务:OpenStack的一个服务组件;Linux TC:Linux内核中的流量控制软件;Iptables:Linux系统用户空间的网络流量过滤软件;floating ip:弹性ip地址,通常指云平台中可以随意分配的公网地址资源,目前主要为IPV4地址格式,由32位2进制数组成。

在本实施方式中,可在Openstack云计算平台(一种开源云平台)中实现了同租户所申请的多个floating ip带宽资源共享。其原理是基于Linux TC中的HTB(Hierarchy Token Bucket)分类队列技术。TC是linux中的流量控制模块,它可以在网络接口上建立数据包发送的队列,并定义队列中数据包的发送方式,从而实现对流量的控制。TC在流量控制中使用的队列分为两类:无类分类队列和有类分类队列。无类分类队列的特点是对进入网络设备(例如,内网网桥、外网网卡、交换机、路由器)的数据流不加区分统一对待,而有类分类队列则是根据不同的需求以分类的方式区分对待。因为我们需要对不同租户的流量设置不同的带宽值,在本实施方式中,选用有类分类队列,并具体为HTB队列。

使用HTB队列,创建一个默认分类和多个指定了带宽值的分类,每个申请了公网带宽的租户对应一个分类,默认分类不限制带宽,用于非floating ip流量从此分类出队。为了使每个租户的数据包进入各自的分类出队,还需为每个租户创建相应的过滤器,过滤器会通过数据包在内核空间中的租户标记来区分该数据包属于哪个租户,并放置到相应的队列分类中。

租户对应的标记值可以在Openstack数据库中维护,标记数据包是使用iptables命令来实现的。当租户发出的数据包经过租户路由器时,使用iptables将要发出的数据包在内核空间中打上该租户特有的标记,数据包经过外网桥到达外网网卡后,过滤器根据该标记将数据包发送到指定分类。

本发明适用的场景具体为,网络节点操作linux系统内核3.10版本以上,启用Neutron组件的openstack平台,并且不启用DVR机制,即分布式路由,所有floating ip位于网络节点上。本发明在功能上主要分为两个部分:数据包标记部分和队列管理部分,图3描述了这两部分功能对数据包的处理方式,图3中的“router”即为图2中的租户路由器。

结合图1所示,本发明一种基于Linux流量控制的弹性带宽配置方法,包括以下步骤:

S1、获取租户所要共享的多个floating ip所在的路由器。具体的,该步骤S1中的floating ip位于网络节点中租户路由器的公网出口上。租户虚机向外发送的所有流量都要经过路由器(即图1中的router1、router2),因此要在路由器内标记floating ip的数据包。每个租户可创建多个路由器,此步骤需要获取到满足以下条件的路由器:(1)路由器下存在私有网络;(2)私有网络中存在虚拟机(vm);(3)虚拟机绑定了floating ip地址。

S2、使用iptables命令将租户虚机发出的数据包打上用于识别租户的租户标记值,并将数据包的源地址替换为floating ip地址。该步骤S2还包括: 在租户路由器内将所有发出的数据包打上租户标记值。标记值用于过滤器对租户数据包的识别,必须是唯一的,可以维护在数据库中,通过租户信息获取。

虚机发送到外网的数据包会在路由器中将数据包的源地址由内网地址替换为floating ip地址。这个操作是在iptables nat表的POSTROUTING链上实现的。由Linux内核实现决定,该操作要在给数据包打上租户标记值之后。此时租户发出数据包的源地址仍然为虚拟机的内网地址,因此需要获取绑定floating ip的虚拟机内网地址。使用iptables命令标记源地址为floating ip的数据包。使用iptables命令,在mangle表的POSTROUTING链上对源地址为指定内网地址的数据包打上对应租户的租户标记值。

S3、在外网网卡(eth2)上创建HTB队列、默认分类。其中,默认分类用于过滤器过滤之后的流量通过,即不属于任何租户的分类,不限制带宽。

S4、在HTB队列中创建租户分类并设置相应带宽值。具体的,“HTB队列”包括HTB根队列、HTB根类、HTB子类,所述HTB子类为在外网网卡上为租户所分配的带宽级别。在本实施方式中,该步骤S4还包括将符合过滤器过滤条件的租户访问虚拟机所产生的数据包发送至对应的HTB子类。

S5、根据租户标记值创建分类对应的过滤器。

接下来对本发明一种基于Linux流量控制的弹性带宽配置配方法在openstack云平台进行部署的整个过程详细说明。

第一步:准备服务器。

安装openstack(juno版本)。

第二步:确认配置。

外网网卡(eth2),Ovs外网网桥(br-ex)。

第三步:构建环境

创建私有网络(private-net1、private-net1),

在私有网络中创建虚拟机(private-net1→vm1、private-net2→vm2),

创建路由器(router1、router2),

将私有网络接入路由器(private-net1→router1、private-net2→router2),

创建外网(public-net1),

给路由器设置外网网关,

给虚拟机分配浮动IP(192.168.1.102→vm1、192.168.1.103→vm2),

经过前三步得到如图1所示的本发明一种基于Linux流量控制的弹性带宽配置方法运用于openstack架构云平台的网络拓扑图。

第四步:使用ip netns命令确认router对应的namespace名称(命名空间中的名称)。

router1对应的namespace:qrouter-9e9fa43c-ea75-49d4-969a-0644fd3ee3bc;

router2对应的namespace:qrouter-242c7252-15c7-46ce-918d-02b423885fde;

第五步:在router内标记floating ip相关的流量。

在router1中标记绑定floating ip:192.168.1.102的虚机(10.10.10.7)的流量:ip netns exec qrouter-9e9fa43c-ea75-49d4-969a-0644fd3ee3bc iptables-t mangle-A POSTROUTING-s 10.10.10.7-j MARK--set-mark 1。

在router2中标记绑定floating ip:192.168.1.103的虚机(20.20.20.5)的流量:ip netns exec qrouter-242c7252-15c7-46ce-918d-02b423885fde iptables-t mangle-A POSTROUTING-s 20.20.20.5-j MARK--set-mark 1。

第五步:在外网网卡上建立HTB队列。

建立根队列:tc qdisc add dev eth2 root handle 1:htb default 255。

建立根类:tc class add dev eth2 parent 1:classid 1:1htb rate 1000mbit ceil1000mbit。

建立为租户分配带宽的子类:tc class add dev eth2 parent 1:1classid 1:10htb rate 2048kbps ceil 2048kbps prio 1。

建立流量过滤器:tc filter add dev eth2 parent 1:protocol ip prio 100 handle1 fw classid 1:10。

经过后两步完成了弹性带宽共享环境的搭建,实现了同一租户多个floating ip带宽弹性共享功能,其结构图如图2所示。

属于同一租户的所有路由器均会将要共享带宽的floating ip打上相同的租户标记值。每个租户在外网网卡上有相应的过滤器(filter)和队列分类,过滤器会把打上本租户标记的包发送给相应的队列分类。租户的队列分类设置了该租户申请的总带宽。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号