一种云平台的虚拟机外网带宽限制方法

文档序号:9710792阅读:417来源:国知局
一种云平台的虚拟机外网带宽限制方法
【技术领域】
[0001 ]本发明涉及云计算技术领域,特别是一种云平台的虚拟机外网带宽限制方法。
【背景技术】
[0002] 带宽限制功能有很多都是针对大网络硬件去实现,但是对云平台环境上要从软件 层面去限制带宽,针对虚拟机外网访问以及外网访问虚拟机的限制。分析云平台实现外网 的带宽限制已有的方案有的是通过给虚拟机挂载外网网卡,然后限制外网网卡的带宽,很 少有提及针对虚拟路由上将内网通过NAT映射到外网IP的带宽限制方案,同时在一个虚拟 路由器上实现对多个外网IP的带宽限制,而提供方便的带宽限制接口。

【发明内容】

[0003] 本发明提供解决的技术问题在于提供一种云平台的虚拟机外网带宽限制方法。 [0004 ]本发明解决上述技术问题得技术方案是:
[0005] 所述的方法包括:
[0006] (1)通过提供Reset接口将限制的IP、带宽等参数信息保存至数据库中;
[0007] (2)通知带宽限制Agent获取最新带宽信息,带宽限制Agent获取到数据库中最新 的带宽信息;
[0008] (3)带宽限制Agent在虚拟路由器中,其外网IP所在的接口上建立带宽队列,添加 外网IP地址过滤规则到该队列上;
[0009] (4)虚拟机访问外网时,匹配规则起到外网带宽限制作用。
[0010] 所述的Reset接口由网络服务提供接口,支持参数JSON格式输入;
[0011] 所述的网络服务还提供数据库访问,将带宽、IP信息持久化到数据库中;
[0012]所述的网络服务端在更新完数据库后,将发送消息至带宽限制Agent,其消息通过 消息路由发送。
[0013] 所述的带宽限制Agent接受到带宽限制消息路由消息后,将通过消息路由的形式 从网络服务端获取最新的带宽信息,带宽限制信息包含虚拟路由i d、外网IP、带宽信息;
[0014] 所述的带宽限制Agent根据虚拟路由id,获取虚拟机路由所在网络命名空间上的 外网接口,在接口上完成带宽的更新;
[0015] 所述的带宽更新,首先要检查是否存在该外网IP带宽规则,如果存在,则更新规则 中匹配的带宽队列;否则,在外网接口上根据带宽大小建立新的带宽队列,然后根据外网IP 信息添加匹配规则,将匹配的IP数据包放到新添加的队列中,该队列根据带宽信息,调整发 送的数据包速率,最终起到虚拟机外网带宽限制的作用。
[0016] 所述的带宽规则支持优先级,其中一条规则只能匹配一个队列;
[0017 ]所述的外网接口上含有多个外网IP,支持为每个外网IP建立一个带宽队列。
[0018]本发明能够解决云平台中虚拟机在虚拟路由上通过NAT映射访问外网的带宽限 制,同时能够支持一个外网接口拥有多个外网IP且对多个外网IP的带宽限制,而且其带宽 限制比较精确和可靠。
【附图说明】
[0019] 下面结合附图对本发明进一步说明:
[0020] 图1为本发明的流程图。
【具体实施方式】
[0021 ]流程图如图1所示,具体实施过程如下:
[0022] 1、提供Reset接口设置带宽,并保存至数据库中
[0023] curl -i -X PUT http://20.251.36.21:9696/v2.0/floatingip_qoss/ {e2978449-635f-4f64-b240-79dd61fb0153} -H77Content-Typeapplication/json77-H77X-Auth-TokendTOKENIDn-c^r'floatingip-qos'r'max-rate'SOOO}}'
[0024] 其中 e2978449-635f-4f64-b240-79dd61fb0153 为浮动 IP 代表的 Id 信息,max_rate 为2000kbitps
[0025] 保存至数据库中的信息为:
[0026] src_ip : 20 · 251 · 36 · 104外网 IP地址,max_rate最大带宽速率为2000kbitps, router_id 为 b90a765b-d4ee-4ca9-aee8-79387537a3a7,浮动 IP 端口 信息为62978449-635f-4f64-b240-79dd61fb0153.
[0027]具体Server服务由python的WSGI程序提供,其连接的数据库为Mysql,使用 Sqlalchemy驱动连接
[0028] 2、发送消息给带宽限制Agent,带宽限制Agent获取带宽信息
[0029] 其中带宽信息的消息主要内容为:
[0032] 具体实现通过rabbit-mq消息中间件通信
[0033] 3、根据带宽信息在虚拟路由上建立带宽队列以及匹配规则
[0034] (1)获设路由使用的网络命名空间:
[0035] qrouter-388d58c3-dcd7-467c-a887-7531f9b35d7d
[0036] 浮动IP使用的网络命名空间上的网络接口 :qg-1444681f_45
[0037] ip netns exec qrouter-388d58c3-dcd7-467c-a887-7531f9b35d7d ip addr show
[0038] 29:qg-1444681f-45:<BR0ADCAST,MULTICAST ?UP ? L0ffER_UP>
[0039] mtu 1500 qdisc htb state UNKNOWN
[0040] .....................................................................................
[0041 ] inet 20.251.36.104/32 brd 20.251.36.104 scope global qg-1444681f-45
[0042] valid-Ift forever preferred-Ift forever
[0043] .................................
[0044] 如果首次执行带宽设置,则按照以下步骤执行。
[0045] (2)清除接口上的不可分类qdisc信息
[0046] ip netns exec qrouter-388d58c3-dcd7-467c-a887-7531f9b35d7d tc qdisc del dev qg_1444681f_45 root
[0047] (3)建立接口上的不可分类qdisc信息,基于htb算法(分层令牌桶算法),其子类可 以借用带宽
[0048] ip netns exec qrouter-388d58c3-dcd7-467c-a887-7531f9b35d7d tc qdisc add dev qg_1444681f_45 root handle I:htb
[0049] (4)建立根下的第一个root class类
[0050] ip netns exec qrouter-388d58c3-dcd7-467c-a887_7531f9b35d7d tc class add dev qg_1444681f_45 parent I: classic! 1:1 htb rate IOOmbit ceil IOOmbit
[0051] (5)建立子类以及子类的叶子节点,设置带宽限制
[0052] ip netns exec qrouter-388d58c3-dcd7-467c-a887-7531f9b35d7d tc class add dev parent 1:1 classic! 1:10 htb rate 2000kbit ceil 2000kbit
[0053] ip netns exec qrouter-388d58c3-dcd7-467c-a887_7531f9b35d7d tc qdisc add dev qg_1444681f_45 parent 1:10 sfq perturb 10
[0054] (6)添加流规则
[0055] ip netns exec qrouter-388d58c3-dcd7-467c-a887_7531f9b35d7d tc filter add dev qg_1444681f_45 protocol ip parent I:u32 match ip src 20.251.36.104 flowid 1:10
[0056] 4、虚拟机访问外网,完成带宽限制
[0057] 虚拟机访问外网是通过在路由上使用NAT映射完成,虚拟机的IP为12.12.12.14, 映射后的外网IP为20.251.36.104,如下(1)所示:
[0058] (1)虚拟机 IP
[0059] root@host-12-12-12_14~]#ip addr show
[0060] .................................
[0061] 2:ethO:〈BROADCAST,MULTICAST,UP,LOWER-UP>mtu 1500 qdisc pfifo-fast state UP qlen 1000
[0062] link/ether fa:16:3e:3c:02:c4 brd ff:ff:ff:ff:ff:ff
[0063] inet 12.12.12.14/24 brd 12.12.12.255 scope global dynamic ethO
[0064] ....................
[0065] (2)通过iperf测试其外网带宽
[0066] 通过丨口6『:[>工具来测试外网带宽(下行带宽),其中20.251.36.13为1口6『:[ >的361^6『 端,虚拟机为iperf的客户端,iperf客户端命令:iperf3-c 20.251.36.13,测试后下行带宽 为I.91Mbits/sec(1910kbits/sec)D
【主权项】
1. 一种云平台的虚拟机外网带宽限制方法,其特征在于,所述的方法包括: (1) 通过提供Reset接口将限制的IP、带宽等参数信息保存至数据库中; (2) 通知带宽限制Agent获取最新带宽信息,带宽限制Agent获取到数据库中最新的带 宽ig息; (3) 带宽限制Agent在虚拟路由器中,其外网IP所在的接口上建立带宽队列,添加外网 IP地址过滤规则到该队列上; (4) 虚拟机访问外网时,匹配规则起到外网带宽限制作用。2. 根据权利要求1所述的虚拟机外网带宽限制方法,其特征在于:所述的Reset接口由 网络服务提供接口,支持参数JSON格式输入; 所述的网络服务还提供数据库访问,将带宽、IP信息持久化到数据库中; 所述的网络服务端在更新完数据库后,将发送消息至带宽限制Agent,其消息通过消息 路由发送。3. 根据权利要求1或2所述的虚拟机外网带宽限制方法,其特征在于:所述的带宽限制 Agent接受到带宽限制消息路由消息后,将通过消息路由的形式从网络服务端获取最新的 带宽信息,带宽限制信息包含虚拟路由id、外网IP、带宽信息; 所述的带宽限制Agent根据虚拟路由id,获取虚拟机路由所在网络命名空间上的外网 接口,在接口上完成带宽的更新; 所述的带宽更新,首先要检查是否存在该外网IP带宽规则,如果存在,则更新规则中匹 配的带宽队列;否则,在外网接口上根据带宽大小建立新的带宽队列,然后根据外网IP信息 添加匹配规则,将匹配的IP数据包放到新添加的队列中,该队列根据带宽信息,调整发送的 数据包速率,最终起到虚拟机外网带宽限制的作用。4. 根据权利要求3所述的虚拟机外网带宽限制方法,其特征在于:所述的带宽规则支持 优先级,其中一条规则只能匹配一个队列; 所述的外网接口上含有多个外网IP,支持为每个外网IP建立一个带宽队列。
【专利摘要】本发明涉及云计算技术领域,特别是一种云平台的虚拟机外网带宽限制方法。本发明首先通过Reset接口将限制的IP、带宽等参数信息保存至数据库中;然后,通知带宽限制Agent获取最新带宽信息,带宽限制Agent获取到数据库中最新的带宽信息;接着,带宽限制Agent在虚拟路由器上外网IP所在的接口中建立带宽队列,添加外网IP地址过滤规则到该队列上;最终,虚拟机访问外网时,其带宽限制将起作用。本发明能够解决云平台中虚拟机在虚拟路由上通过NAT映射访问外网的带宽限制,同时能够支持一个外网接口拥有多个外网IP且对多个外网IP的带宽限制,而且其带宽限制比较精确和可靠;可以用于虚拟机外网带宽的限制。
【IPC分类】H04L29/08, H04L12/873
【公开号】CN105471765
【申请号】CN201510982130
【发明人】罗义兵, 杨松, 季统凯
【申请人】国云科技股份有限公司
【公开日】2016年4月6日
【申请日】2015年12月22日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1